diff --git a/pkg/compute/models/regiondrivers.go b/pkg/compute/models/regiondrivers.go index 752ccf72ef..e89797bf3b 100644 --- a/pkg/compute/models/regiondrivers.go +++ b/pkg/compute/models/regiondrivers.go @@ -157,7 +157,6 @@ type IElasticcacheDriver interface { RequestDeleteElasticcacheAccount(ctx context.Context, userCred mcclient.TokenCredential, ea *SElasticcacheAccount, task taskman.ITask) error RequestDeleteElasticcacheAcl(ctx context.Context, userCred mcclient.TokenCredential, ea *SElasticcacheAcl, task taskman.ITask) error RequestDeleteElasticcacheBackup(ctx context.Context, userCred mcclient.TokenCredential, eb *SElasticcacheBackup, task taskman.ITask) error - RequestChangeElasticcacheSpec(ctx context.Context, userCred mcclient.TokenCredential, elasticcache *SElasticcache, task taskman.ITask) error // 变更实例规格 RequestSetElasticcacheMaintainTime(ctx context.Context, userCred mcclient.TokenCredential, elasticcache *SElasticcache, task taskman.ITask) error RequestElasticcacheChangeSpec(ctx context.Context, userCred mcclient.TokenCredential, elasticcache *SElasticcache, task taskman.ITask) error RequestUpdateElasticcacheAuthMode(ctx context.Context, userCred mcclient.TokenCredential, elasticcache *SElasticcache, task taskman.ITask) error diff --git a/pkg/compute/regiondrivers/managedvirtual.go b/pkg/compute/regiondrivers/managedvirtual.go index f2d8bcac4f..77bad12646 100644 --- a/pkg/compute/regiondrivers/managedvirtual.go +++ b/pkg/compute/regiondrivers/managedvirtual.go @@ -1764,30 +1764,6 @@ func (self *SManagedVirtualizationRegionDriver) RequestDeleteElasticcache(ctx co return cloudprovider.WaitDeleted(iec, 10*time.Second, 300*time.Second) } -func (self *SManagedVirtualizationRegionDriver) RequestChangeElasticcacheSpec(ctx context.Context, userCred mcclient.TokenCredential, ec *models.SElasticcache, task taskman.ITask) error { - sku, err := task.GetParams().GetString("sku") - if err != nil { - return errors.Wrap(fmt.Errorf("missing parameter sku"), "managedVirtualizationRegionDriver.RequestChangeElasticcacheSpec") - } - - iregion, err := ec.GetIRegion() - if err != nil { - return errors.Wrap(err, "managedVirtualizationRegionDriver.RequestChangeElasticcacheSpec.GetIRegion") - } - - iec, err := iregion.GetIElasticcacheById(ec.ExternalId) - if err != nil { - return errors.Wrap(err, "managedVirtualizationRegionDriver.RequestChangeElasticcacheSpec.GetIElasticcacheById") - } - - err = iec.ChangeInstanceSpec(sku) - if err != nil { - return errors.Wrap(err, "managedVirtualizationRegionDriver.RequestChangeElasticcacheSpec.ChangeInstanceSpec") - } - - return cloudprovider.WaitStatusWithDelay(iec, api.ELASTIC_CACHE_STATUS_RUNNING, 10*time.Second, 10*time.Second, 300*time.Second) -} - func (self *SManagedVirtualizationRegionDriver) RequestSetElasticcacheMaintainTime(ctx context.Context, userCred mcclient.TokenCredential, ec *models.SElasticcache, task taskman.ITask) error { mStart, err := task.GetParams().GetString("maintain_start_time") if err != nil { diff --git a/pkg/multicloud/huawei/client/modules/mod_elasticcache.go b/pkg/multicloud/huawei/client/modules/mod_elasticcache.go index f91a5c5996..038740a3c4 100644 --- a/pkg/multicloud/huawei/client/modules/mod_elasticcache.go +++ b/pkg/multicloud/huawei/client/modules/mod_elasticcache.go @@ -95,9 +95,10 @@ func (self *SElasticcacheManager) RestoreInstance(instanceId string, backupId st } // https://support.huaweicloud.com/api-dcs/dcs-zh-api-180423024.html -func (self *SElasticcacheManager) ChangeInstanceSpec(instanceId string, newCapacity string) (jsonutils.JSONObject, error) { +func (self *SElasticcacheManager) ChangeInstanceSpec(instanceId string, specCode string, newCapacity int64) (jsonutils.JSONObject, error) { params := jsonutils.NewDict() - params.Set("new_capacity", jsonutils.NewString(newCapacity)) + params.Set("new_capacity", jsonutils.NewInt(newCapacity)) + params.Set("spec_code", jsonutils.NewString(specCode)) return self.CreateInContextWithSpec(nil, fmt.Sprintf("%s/extend", instanceId), params, "") } diff --git a/pkg/multicloud/huawei/elasticcache_instance.go b/pkg/multicloud/huawei/elasticcache_instance.go index b3af98814f..5f8dffa24c 100644 --- a/pkg/multicloud/huawei/elasticcache_instance.go +++ b/pkg/multicloud/huawei/elasticcache_instance.go @@ -16,6 +16,7 @@ package huawei import ( "fmt" + "strconv" "strings" "time" @@ -538,7 +539,12 @@ func (self *SElasticcache) ChangeInstanceSpec(spec string) error { } newCapacity := segs[1][1 : len(segs[1])-1] - _, err := self.region.ecsClient.Elasticcache.ChangeInstanceSpec(self.GetId(), newCapacity) + capacity, err := strconv.Atoi(newCapacity) + if err != nil { + return errors.Wrap(fmt.Errorf("invalid sku capacity %s", spec), "Elasticcache.ChangeInstanceSpec") + } + + _, err = self.region.ecsClient.Elasticcache.ChangeInstanceSpec(self.GetId(), segs[0], int64(capacity)) if err != nil { return errors.Wrap(err, "elasticcache.ChangeInstanceSpec") }