fix: sync huawei bucket project info

This commit is contained in:
Qu Xuan
2020-10-13 20:47:08 +08:00
parent 243f4af95f
commit 4b1d914b83
3 changed files with 41 additions and 4 deletions
+8
View File
@@ -42,6 +42,14 @@ type SBucket struct {
}
func (b *SBucket) GetProjectId() string {
resp, err := b.region.HeadBucket(b.Name)
if err != nil {
return ""
}
epid, _ := resp.ResponseHeaders["epid"]
if len(epid) > 0 {
return epid[0]
}
return ""
}
+7 -4
View File
@@ -957,17 +957,20 @@ func (region *SRegion) DeleteIBucket(name string) error {
return nil
}
func (region *SRegion) IBucketExist(name string) (bool, error) {
func (region *SRegion) HeadBucket(name string) (*obs.BaseModel, error) {
obsClient, err := region.getOBSClient()
if err != nil {
return false, errors.Wrap(err, "region.getOBSClient")
return nil, errors.Wrap(err, "region.getOBSClient")
}
_, err = obsClient.HeadBucket(name)
return obsClient.HeadBucket(name)
}
func (region *SRegion) IBucketExist(name string) (bool, error) {
_, err := region.HeadBucket(name)
if err != nil {
if obsHttpCode(err) == 404 {
return false, nil
} else {
log.Debugf("%#v %s", err, err)
return false, errors.Wrap(err, "HeadBucket")
}
}
+26
View File
@@ -15,9 +15,35 @@
package shell
import (
"fmt"
"yunion.io/x/onecloud/pkg/multicloud/huawei"
"yunion.io/x/onecloud/pkg/multicloud/objectstore"
"yunion.io/x/onecloud/pkg/util/shellutils"
)
func init() {
objectstore.S3Shell()
type BucketNameOptions struct {
NAME string
}
shellutils.R(&BucketNameOptions{}, "bucket-head", "Head bucket", func(cli *huawei.SRegion, args *BucketNameOptions) error {
result, err := cli.HeadBucket(args.NAME)
if err != nil {
return err
}
printObject(result)
return nil
})
shellutils.R(&BucketNameOptions{}, "bucket-project", "Show bucket project", func(cli *huawei.SRegion, args *BucketNameOptions) error {
bucket, err := cli.GetIBucketByName(args.NAME)
if err != nil {
return err
}
fmt.Println("project: ", bucket.GetProjectId())
return nil
})
}