From d1065ad97e1ec3d6a614ca1f518ce8bbc8245649 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B1=88=E8=BD=A9?= Date: Tue, 26 Mar 2019 16:29:39 +0800 Subject: [PATCH] =?UTF-8?q?=E9=81=BF=E5=85=8D=E9=83=A8=E5=88=86=E5=85=AC?= =?UTF-8?q?=E6=9C=89=E4=BA=91=E7=BB=AD=E8=B4=B9=E5=90=8E=E8=BF=87=E6=9C=9F?= =?UTF-8?q?=E6=97=B6=E9=97=B4=E6=9B=B4=E6=96=B0=E6=85=A2=E9=97=AE=E9=A2=98?= =?UTF-8?q?=E5=AF=BC=E8=87=B4=E5=B9=B3=E5=8F=B0=E6=9C=AA=E8=83=BD=E8=AE=BE?= =?UTF-8?q?=E7=BD=AE=E6=AD=A3=E5=B8=B8=E7=9A=84=E8=BF=87=E6=9C=9F=E6=97=B6?= =?UTF-8?q?=E9=97=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pkg/compute/guestdrivers/managedvirtual.go | 13 ++++++++---- pkg/util/huawei/instance.go | 24 ++-------------------- 2 files changed, 11 insertions(+), 26 deletions(-) diff --git a/pkg/compute/guestdrivers/managedvirtual.go b/pkg/compute/guestdrivers/managedvirtual.go index 7c5f86a6cc..64c044de9f 100644 --- a/pkg/compute/guestdrivers/managedvirtual.go +++ b/pkg/compute/guestdrivers/managedvirtual.go @@ -516,14 +516,19 @@ func (self *SManagedVirtualizedGuestDriver) RequestRenewInstance(guest *models.S if err != nil { return time.Time{}, err } + oldExpired := iVM.GetExpiredAt() err = iVM.Renew(bc) if err != nil { return time.Time{}, err } - err = iVM.Refresh() - if err != nil { - return time.Time{}, err - } + //避免有些云续费后过期时间刷新比较慢问题 + cloudprovider.WaitCreated(15*time.Second, 5*time.Minute, func() bool { + newExipred := iVM.GetExpiredAt() + if newExipred.After(oldExpired) { + return true + } + return false + }) return iVM.GetExpiredAt(), nil } diff --git a/pkg/util/huawei/instance.go b/pkg/util/huawei/instance.go index 8f9db68fe4..fcc26d8b3f 100644 --- a/pkg/util/huawei/instance.go +++ b/pkg/util/huawei/instance.go @@ -1120,14 +1120,6 @@ func (self *SRegion) DetachDisk(instanceId string, diskId string) error { // 只支持传入主资源ID, 根据“查询客户包周期资源列表”接口响应参数中的“is_main_resource”来标识。 // expire_mode 0:进入宽限期 1:转按需 2:自动退订 3:自动续订(当前只支持ECS、EVS和VPC) func (self *SRegion) RenewInstance(instanceId string, bc billing.SBillingCycle) error { - // 记录未续费前的过期时间 - ins, err := self.GetInstanceByID(instanceId) - if err != nil { - return err - } - - oldExpired := ins.GetExpiredAt() - params := jsonutils.NewDict() res := jsonutils.NewArray() res.Add(jsonutils.NewString(instanceId)) @@ -1144,7 +1136,7 @@ func (self *SRegion) RenewInstance(instanceId string, bc billing.SBillingCycle) params.Add(jsonutils.NewInt(PERIOD_TYPE_YEAR), "period_type") params.Add(jsonutils.NewInt(year), "period_num") } else { - return fmt.Errorf("invalid renew period %s month,must be 1~11 month or 1~3 year", month) + return fmt.Errorf("invalid renew period %d month,must be 1~11 month or 1~3 year", month) } domainId, err := self.getDomianId() @@ -1158,19 +1150,7 @@ func (self *SRegion) RenewInstance(instanceId string, bc billing.SBillingCycle) } _, err = self.ecsClient.Orders.RenewPeriodResource(params) - if err != nil { - return err - } - - // 这里等待更新实例过期时间 - return cloudprovider.WaitCreated(15*time.Second, 180*time.Second, func() bool { - newExipred := ins.GetExpiredAt() - if newExipred.After(oldExpired) { - return true - } - - return false - }) + return err } // https://support.huaweicloud.com/api-ecs/zh-cn_topic_0065817702.html