Merge pull request #909 in YUNIONIO/onecloud from ~QIUJIAN/onecloud:hotfix/qj-fix-vm-renew-not-effective to release/2.5.0

* commit 'a14fad1b9cd1b7fcd3ede71ad35d2e120155fef1':
  修正:清理到期包年包月主机需要把删除保护去掉
  minor fixes
  修正对包年包月主机续费后没有效果的问题
This commit is contained in:
邱剑
2019-01-09 18:31:54 +08:00
6 changed files with 32 additions and 3 deletions
+1 -1
View File
@@ -29,7 +29,7 @@ type BaseOptions struct {
Debug bool `help:"Show debug information"`
Version bool `help:"Show version"`
Timeout int `default:"600" help:"Number of seconds to wait for a response"`
Insecure bool `default:"false" help:"Allow skip server cert verification if URL is https" short-token:"k"`
Insecure bool `default:"$YUNION_INSECURE|false" help:"Allow skip server cert verification if URL is https" short-token:"k"`
CertFile string `default:"$YUNION_CERT_FILE" help:"certificate file"`
KeyFile string `default:"$YUNION_KEY_FILE" help:"private key file"`
@@ -580,5 +580,9 @@ func (self *SManagedVirtualizedGuestDriver) RequestRenewInstance(guest *models.S
if err != nil {
return time.Time{}, err
}
err = iVM.Refresh()
if err != nil {
return time.Time{}, err
}
return iVM.GetExpiredAt(), nil
}
+1
View File
@@ -3430,6 +3430,7 @@ func (manager *SGuestManager) DeleteExpiredPrepaidServers(ctx context.Context, u
}
for i := 0; i < len(guests); i += 1 {
// fake delete expired prepaid servers
guests[i].SetDisableDelete(false)
guests[i].StartDeleteGuestTask(ctx, userCred, "", false, false)
}
}
+8
View File
@@ -726,3 +726,11 @@ func (self *SHost) DoSaveRenewInfo(ctx context.Context, userCred mcclient.TokenC
db.OpsLog.LogEvent(self, db.ACT_RENEW, self.GetShortDesc(ctx), userCred)
return nil
}
func (self *SHost) SyncWithRealPrepaidVM(ctx context.Context, userCred mcclient.TokenCredential, iVM cloudprovider.ICloudVM) error {
exp := iVM.GetExpiredAt()
if self.ExpiredAt != exp {
return self.DoSaveRenewInfo(ctx, userCred, nil, &exp)
}
return nil
}
+4
View File
@@ -1637,6 +1637,10 @@ func (self *SHost) SyncHostVMs(ctx context.Context, userCred mcclient.TokenCrede
vhost := HostManager.GetHostByRealExternalId(added[i].GetGlobalId())
if vhost != nil {
// this recycle vm is not build yet, skip synchronize
err = vhost.SyncWithRealPrepaidVM(ctx, userCred, added[i])
if err != nil {
syncResult.AddError(err)
}
continue
}
}
+14 -2
View File
@@ -2,11 +2,11 @@ package tasks
import (
"context"
"fmt"
"yunion.io/x/jsonutils"
"fmt"
"yunion.io/x/log"
"yunion.io/x/onecloud/pkg/cloudcommon/db"
"yunion.io/x/onecloud/pkg/cloudcommon/db/taskman"
"yunion.io/x/onecloud/pkg/compute/models"
@@ -73,6 +73,8 @@ func (self *PrepaidRecycleHostRenewTask) OnInit(ctx context.Context, obj db.ISta
return
}
log.Debugf("expire before %s", iVM.GetExpiredAt())
err = iVM.Renew(bc)
if err != nil {
msg := fmt.Sprintf("iVM.Renew fail %s", err)
@@ -81,6 +83,16 @@ func (self *PrepaidRecycleHostRenewTask) OnInit(ctx context.Context, obj db.ISta
return
}
err = iVM.Refresh()
if err != nil {
msg := fmt.Sprintf("refresh after renew fail %s", err)
log.Errorf(msg)
self.SetStageFailed(ctx, msg)
return
}
log.Debugf("expire after %s", iVM.GetExpiredAt())
exp := iVM.GetExpiredAt()
err = host.DoSaveRenewInfo(ctx, self.UserCred, &bc, &exp)