Merge pull request #1234 in YUNIONIO/onecloud from ~TANGBIN/onecloud:bugfix/tb-huawei-renew-instance to release/2.6.0

* commit '5624a294daf9b9fb85d76c5523b7fed939accfbf':
  optimize huawei renew
  wait huawei instance renew sucess
  huawei instance renew bugfix
This commit is contained in:
周有松
2019-03-14 17:45:25 +08:00
+32 -2
View File
@@ -1120,6 +1120,14 @@ 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))
@@ -1139,8 +1147,30 @@ func (self *SRegion) RenewInstance(instanceId string, bc billing.SBillingCycle)
return fmt.Errorf("invalid renew period %s month,must be 1~11 month or 1~3 year", month)
}
_, err := self.ecsClient.Orders.RenewPeriodResource(params)
return err
domainId, err := self.getDomianId()
if err != nil {
return err
}
err = self.ecsClient.Orders.SetDomainId(domainId)
if err != nil {
return err
}
_, 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
})
}
// https://support.huaweicloud.com/api-ecs/zh-cn_topic_0065817702.html