From 3a449855579f1308fca226c4f3f271b8d38680d7 Mon Sep 17 00:00:00 2001 From: TangBin Date: Mon, 9 Nov 2020 19:31:03 +0800 Subject: [PATCH 1/2] redis prepaid create autorenew bugfix --- pkg/apis/compute/elasticcache.go | 4 ++++ pkg/compute/models/elasticcache_instances.go | 3 +++ pkg/multicloud/huawei/elasticcache_instance.go | 2 +- 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/pkg/apis/compute/elasticcache.go b/pkg/apis/compute/elasticcache.go index f40ea541f0..bddf7ab1a8 100644 --- a/pkg/apis/compute/elasticcache.go +++ b/pkg/apis/compute/elasticcache.go @@ -200,6 +200,10 @@ type ElasticcacheCreateInput struct { // 包年包月时间周期 Duration string `json:"duration"` + // 是否自动续费(仅包年包月时生效) + // default: false + AutoRenew bool `json:"auto_renew"` + // swagger:ignore ExpiredAt time.Time `json:"expired_at"` diff --git a/pkg/compute/models/elasticcache_instances.go b/pkg/compute/models/elasticcache_instances.go index c978cd3084..a7688eb6a4 100644 --- a/pkg/compute/models/elasticcache_instances.go +++ b/pkg/compute/models/elasticcache_instances.go @@ -865,6 +865,7 @@ func (self *SElasticcache) GetCreateAliyunElasticcacheParams(data *jsonutils.JSO if err != nil { return nil, errors.Wrap(err, "elasticcache.GetCreateAliyunElasticcacheParams.BillingCycle") } + billingCycle.AutoRenew = self.AutoRenew input.BC = &billingCycle default: input.ChargeType = "PostPaid" @@ -956,6 +957,7 @@ func (self *SElasticcache) GetCreateHuaweiElasticcacheParams(data *jsonutils.JSO if err != nil { return nil, errors.Wrap(err, "elasticcache.GetCreateHuaweiElasticcacheParams.BillingCycle") } + billingCycle.AutoRenew = self.AutoRenew input.BC = &billingCycle default: input.ChargeType = "PostPaid" @@ -1043,6 +1045,7 @@ func (self *SElasticcache) GetCreateQCloudElasticcacheParams(data *jsonutils.JSO if err != nil { return nil, errors.Wrap(err, "elasticcache.GetCreateHuaweiElasticcacheParams.BillingCycle") } + billingCycle.AutoRenew = self.AutoRenew input.BC = &billingCycle default: input.ChargeType = "PostPaid" diff --git a/pkg/multicloud/huawei/elasticcache_instance.go b/pkg/multicloud/huawei/elasticcache_instance.go index 4987ad39a5..4565255c40 100644 --- a/pkg/multicloud/huawei/elasticcache_instance.go +++ b/pkg/multicloud/huawei/elasticcache_instance.go @@ -488,7 +488,7 @@ func (self *SRegion) CreateIElasticcaches(ec *cloudprovider.SCloudElasticCacheIn bssParam := jsonutils.NewDict() bssParam.Set("charging_mode", jsonutils.NewString("prePaid")) bssParam.Set("is_auto_pay", jsonutils.NewString("true")) - bssParam.Set("is_auto_renew", jsonutils.NewString("false")) + bssParam.Set("is_auto_renew", jsonutils.NewString(fmt.Sprintf("%v", ec.BC.AutoRenew))) if ec.BC.GetMonths() >= 1 && ec.BC.GetMonths() >= 9 { bssParam.Set("period_type", jsonutils.NewString("month")) bssParam.Set("period_num", jsonutils.NewInt(int64(ec.BC.GetMonths()))) From dd2eb4b4468e50a5b4d085bcc63f890692e7a252 Mon Sep 17 00:00:00 2001 From: TangBin Date: Tue, 10 Nov 2020 10:56:36 +0800 Subject: [PATCH 2/2] redis create bugfix --- pkg/compute/regiondrivers/qcloud.go | 1 + pkg/compute/tasks/elasticcache_create_task.go | 7 ++++--- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/pkg/compute/regiondrivers/qcloud.go b/pkg/compute/regiondrivers/qcloud.go index 5ec2d90791..a1836dedc1 100644 --- a/pkg/compute/regiondrivers/qcloud.go +++ b/pkg/compute/regiondrivers/qcloud.go @@ -1496,6 +1496,7 @@ func (self *SQcloudRegionDriver) ValidateCreateElasticcacheData(ctx context.Cont err := data.Unmarshal(&secgroups, "secgroup_ids") if err != nil { log.Debugf("Unmarshal.security_groups %s", err) + data.Set("secgroup_ids", jsonutils.NewArray(jsonutils.NewString(api.SECGROUP_DEFAULT_ID))) secgroups = []string{api.SECGROUP_DEFAULT_ID} } diff --git a/pkg/compute/tasks/elasticcache_create_task.go b/pkg/compute/tasks/elasticcache_create_task.go index 2e1d02588d..8bb26967a9 100644 --- a/pkg/compute/tasks/elasticcache_create_task.go +++ b/pkg/compute/tasks/elasticcache_create_task.go @@ -19,7 +19,6 @@ import ( "fmt" "yunion.io/x/jsonutils" - "yunion.io/x/pkg/errors" api "yunion.io/x/onecloud/pkg/apis/compute" "yunion.io/x/onecloud/pkg/cloudcommon/db" @@ -59,13 +58,15 @@ func (self *ElasticcacheCreateTask) OnInit(ctx context.Context, obj db.IStandalo secgroups := []string{} err := self.GetParams().Unmarshal(&secgroups, "secgroup_ids") if err != nil { - self.taskFail(ctx, elasticcache, jsonutils.Marshal(errors.Wrap(err, "Unmarshal.secgroup_ids"))) + notes := fmt.Sprintf("Unmarshal.secgroup_ids %s", err) + self.taskFail(ctx, elasticcache, jsonutils.NewString(notes)) return } secgroupInput := api.ElasticcacheSecgroupsInput{SecgroupIds: secgroups} _, err = elasticcache.ProcessElasticcacheSecgroupsInput(ctx, self.UserCred, "set", &secgroupInput) if err != nil { - self.taskFail(ctx, elasticcache, jsonutils.Marshal(errors.Wrap(err, "ProcessElasticcacheSecgroupsInput"))) + notes := fmt.Sprintf("ProcessElasticcacheSecgroupsInput %s", err) + self.taskFail(ctx, elasticcache, jsonutils.NewString(notes)) return }