server delete etc fix

This commit is contained in:
TangBin
2019-02-13 17:04:06 +08:00
parent 7a447d31db
commit 632d1118db
2 changed files with 21 additions and 4 deletions
@@ -147,6 +147,12 @@ func (self *SManagedVirtualizedGuestDriver) RequestUndeployGuestOnHost(ctx conte
log.Errorf("host.GetIHost fail %s", err)
return nil, err
}
// 创建失败时external id为空。此时直接返回即可。不需要再调用公有云api
if len(guest.ExternalId) == 0 {
return nil, nil
}
ivm, err := ihost.GetIVMById(guest.ExternalId)
if err != nil {
if err == cloudprovider.ErrNotFound {
+15 -4
View File
@@ -189,6 +189,12 @@ func (self *SInstance) Refresh() error {
if err != nil {
return err
}
if new.Status == InstanceStatusTerminated {
log.Debugf("Instance already terminated.")
return cloudprovider.ErrNotFound
}
return jsonutils.Update(self, new)
}
@@ -418,6 +424,11 @@ func (self *SInstance) StopVM(ctx context.Context, isForce bool) error {
return nil
}
if self.Status == InstanceStatusTerminated {
log.Debugf("Instance already terminated.")
return nil
}
err := self.host.zone.region.StopVM(self.GetId(), isForce)
if err != nil {
return err
@@ -426,6 +437,10 @@ func (self *SInstance) StopVM(ctx context.Context, isForce bool) error {
}
func (self *SInstance) DeleteVM(ctx context.Context) error {
if self.Status == InstanceStatusTerminated {
return nil
}
for {
err := self.host.zone.region.DeleteVM(self.GetId())
if err != nil && self.Status != InstanceStatusTerminated {
@@ -828,10 +843,6 @@ func (self *SRegion) DeleteVM(instanceId string) error {
return err
}
if remoteStatus == InstanceStatusTerminated {
return nil
}
if remoteStatus != InstanceStatusStopped {
log.Errorf("DeleteVM vm status is %s expect %s", remoteStatus, InstanceStatusStopped)
return cloudprovider.ErrInvalidStatus