From 1096edad612593f626b979cfabb5a3304a724eda Mon Sep 17 00:00:00 2001 From: TangBin Date: Fri, 6 Mar 2020 16:20:22 +0800 Subject: [PATCH 1/2] huawei reset password bugfix --- pkg/multicloud/huawei/elasticcache_account.go | 12 +++++++++++- pkg/multicloud/huawei/utils.go | 5 +++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/pkg/multicloud/huawei/elasticcache_account.go b/pkg/multicloud/huawei/elasticcache_account.go index d9e59a36a6..219c3543e2 100644 --- a/pkg/multicloud/huawei/elasticcache_account.go +++ b/pkg/multicloud/huawei/elasticcache_account.go @@ -69,14 +69,24 @@ func (self *SElasticcacheAccount) ResetPassword(input cloudprovider.SCloudElasti return fmt.Errorf("elasticcacheAccount.ResetPassword.input OldPassword should not be empty") } + type ResetPasswordResult struct { + Result string `json:"result"` + Message string `json:"message"` + } + + result := ResetPasswordResult{} params := jsonutils.NewDict() params.Set("old_password", jsonutils.NewString(*input.OldPassword)) params.Set("new_password", jsonutils.NewString(input.NewPassword)) - err := DoUpdateWithSpec(self.cacheDB.region.ecsClient.Elasticcache.UpdateInContextWithSpec, self.cacheDB.GetId(), "password", params) + err := DoUpdateWithSpec2(self.cacheDB.region.ecsClient.Elasticcache.UpdateInContextWithSpec, self.cacheDB.GetId(), "password", params, &result) if err != nil { return errors.Wrap(err, "elasticcacheAccount.ResetPassword") } + if result.Result != "success" { + return errors.Wrap(fmt.Errorf(result.Message), "elasticcacheAccount.ResetPassword") + } + return nil } diff --git a/pkg/multicloud/huawei/utils.go b/pkg/multicloud/huawei/utils.go index cbaf58dee7..09a5923c9f 100644 --- a/pkg/multicloud/huawei/utils.go +++ b/pkg/multicloud/huawei/utils.go @@ -218,6 +218,11 @@ func DoUpdateWithSpec(updateFunc updateFunc2, id string, spec string, params jso return err } +func DoUpdateWithSpec2(updateFunc updateFunc2, id string, spec string, params jsonutils.JSONObject, result interface{}) error { + ret, err := updateFunc(nil, id, spec, params, "") + return unmarshalResult(ret, err, result, "PUT") +} + func DoDelete(deleteFunc deleteFunc, id string, params jsonutils.JSONObject, result interface{}) error { if len(id) == 0 { return fmt.Errorf(" id should not be empty") From b7b2807fbd28ee29ffad3091dc7847bedf1d04ee Mon Sep 17 00:00:00 2001 From: TangBin Date: Fri, 6 Mar 2020 16:46:03 +0800 Subject: [PATCH 2/2] ctyun region name fix --- pkg/multicloud/ctyun/ctyun.go | 1 + pkg/multicloud/ctyun/region.go | 3 ++- pkg/multicloud/ctyun/zone.go | 2 +- 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/pkg/multicloud/ctyun/ctyun.go b/pkg/multicloud/ctyun/ctyun.go index 4b06f0c6df..ce120904c6 100644 --- a/pkg/multicloud/ctyun/ctyun.go +++ b/pkg/multicloud/ctyun/ctyun.go @@ -103,6 +103,7 @@ func (client *SCtyunClient) fetchRegions() error { Description: zone.ZoneName, ID: zone.RegionID, ParentRegionID: zone.RegionID, + RegionName: zone.ZoneName, izones: []cloudprovider.ICloudZone{&zone}, } diff --git a/pkg/multicloud/ctyun/region.go b/pkg/multicloud/ctyun/region.go index a119051a8e..d00fb8f3b9 100644 --- a/pkg/multicloud/ctyun/region.go +++ b/pkg/multicloud/ctyun/region.go @@ -35,6 +35,7 @@ type SRegion struct { client *SCtyunClient storageCache *SStoragecache + RegionName string Description string `json:"description"` ID string `json:"id"` ParentRegionID string `json:"parent_region_id"` @@ -162,7 +163,7 @@ func (self *SRegion) GetId() string { } func (self *SRegion) GetName() string { - return self.ID + return fmt.Sprintf("%s %s", CLOUD_PROVIDER_CTYUN_CN, self.RegionName) } func (self *SRegion) GetGlobalId() string { diff --git a/pkg/multicloud/ctyun/zone.go b/pkg/multicloud/ctyun/zone.go index e7276d4ff7..3202c54fe2 100644 --- a/pkg/multicloud/ctyun/zone.go +++ b/pkg/multicloud/ctyun/zone.go @@ -53,7 +53,7 @@ func (self *SZone) GetId() string { } func (self *SZone) GetName() string { - return self.ZoneName + return fmt.Sprintf("%s %s", CLOUD_PROVIDER_CTYUN_CN, self.ZoneID) } func (self *SZone) GetGlobalId() string {