fix(region): apsara bucket acl (#14601)

This commit is contained in:
屈轩
2022-07-08 21:54:04 +08:00
committed by GitHub
parent 5b4dcf4486
commit 532922d98a
3 changed files with 24 additions and 23 deletions
+4
View File
@@ -202,6 +202,10 @@ func _jsonRequest(client *sdk.Client, domain string, version string, apiName str
id := ""
if params != nil {
for k, v := range params {
if strings.HasPrefix(k, "x-acs-") {
req.GetHeaders()[k] = v
continue
}
req.QueryParams[k] = v
if strings.ToLower(k) != "regionid" && strings.HasSuffix(k, "Id") {
id = v
+12 -9
View File
@@ -61,18 +61,21 @@ func (self *SBucket) GetOssClient() (*oss.Client, error) {
}
func (b *SBucket) GetAcl() cloudprovider.TBucketACLType {
acl := cloudprovider.ACLPrivate
osscli, err := b.GetOssClient()
if err != nil {
log.Errorf("b.region.GetOssClient fail %s", err)
return acl
acl := b.region.GetBucketAcl(b.Name)
return cloudprovider.TBucketACLType(acl)
}
func (self *SRegion) GetBucketAcl(bucket string) string {
params := map[string]string{
"AccountInfo": "aaa",
"x-acs-instanceid": bucket,
"Params": jsonutils.Marshal(map[string]string{"BucketName": bucket, "acl": "acl"}).String(),
}
aclResp, err := osscli.GetBucketACL(b.Name)
resp, err := self.ossRequest("GetBucketAcl", params)
if err != nil {
log.Errorf("osscli.GetBucketACL fail %s", err)
return acl
return ""
}
acl = cloudprovider.TBucketACLType(aclResp.ACL)
acl, _ := resp.GetString("Data", "AccessControlPolicy", "AccessControlList", "Grant")
return acl
}
+8 -14
View File
@@ -1046,23 +1046,17 @@ func (self *SRegion) DeleteIBucket(name string) error {
}
func (self *SRegion) GetBucket(name string) (*SBucket, error) {
cli, err := self.GetOssClient()
if err != nil {
return nil, err
params := map[string]string{
"AccountInfo": "aaa",
"x-acs-instanceid": name,
"Params": jsonutils.Marshal(map[string]string{"BucketName": name}).String(),
}
bucket, err := cli.GetBucketInfo(name)
resp, err := self.ossRequest("GetBucketInfo", params)
if err != nil {
return nil, err
return nil, errors.Wrapf(err, "GetBucketInfo")
}
bInfo := bucket.BucketInfo
return &SBucket{
region: self,
Name: bInfo.Name,
Location: bInfo.Location,
CreationDate: bInfo.CreationDate,
StorageClass: bInfo.StorageClass,
}, nil
bucket := &SBucket{region: self}
return bucket, resp.Unmarshal(bucket, "Data", "BucketInfo", "Bucket")
}
func (self *SRegion) IBucketExist(name string) (bool, error) {