fix(region): delete vm and disk when it was not found

This commit is contained in:
ioito
2021-11-29 16:40:03 +08:00
committed by ioito
parent a607840763
commit e015e06072
2 changed files with 16 additions and 0 deletions
+8
View File
@@ -20,10 +20,12 @@ import (
"yunion.io/x/jsonutils"
"yunion.io/x/log"
"yunion.io/x/pkg/errors"
api "yunion.io/x/onecloud/pkg/apis/compute"
"yunion.io/x/onecloud/pkg/cloudcommon/db"
"yunion.io/x/onecloud/pkg/cloudcommon/db/taskman"
"yunion.io/x/onecloud/pkg/cloudprovider"
"yunion.io/x/onecloud/pkg/compute/models"
"yunion.io/x/onecloud/pkg/compute/options"
"yunion.io/x/onecloud/pkg/util/logclient"
@@ -65,6 +67,12 @@ func (self *DiskDeleteTask) OnInit(ctx context.Context, obj db.IStandaloneModel,
func (self *DiskDeleteTask) OnDeleteSnapshots(ctx context.Context, disk *models.SDisk) {
isPurge := jsonutils.QueryBoolean(self.Params, "purge", false)
overridePendingDelete := jsonutils.QueryBoolean(self.Params, "override_pending_delete", false)
if len(disk.ExternalId) > 0 {
_, err := disk.GetIDisk()
if errors.Cause(err) == cloudprovider.ErrNotFound {
overridePendingDelete = true
}
}
if options.Options.EnablePendingDelete && !isPurge && !overridePendingDelete {
if disk.PendingDeleted {
self.SetStageComplete(ctx, nil)
+8
View File
@@ -20,12 +20,14 @@ import (
"yunion.io/x/jsonutils"
"yunion.io/x/log"
"yunion.io/x/pkg/errors"
"yunion.io/x/pkg/utils"
api "yunion.io/x/onecloud/pkg/apis/compute"
"yunion.io/x/onecloud/pkg/cloudcommon/db"
"yunion.io/x/onecloud/pkg/cloudcommon/db/taskman"
"yunion.io/x/onecloud/pkg/cloudcommon/notifyclient"
"yunion.io/x/onecloud/pkg/cloudprovider"
"yunion.io/x/onecloud/pkg/compute/models"
"yunion.io/x/onecloud/pkg/compute/options"
"yunion.io/x/onecloud/pkg/mcclient/modules/notify"
@@ -95,6 +97,12 @@ func (self *GuestDeleteTask) OnGuestStopComplete(ctx context.Context, guest *mod
}
func (self *GuestDeleteTask) OnGuestStopCompleteFailed(ctx context.Context, guest *models.SGuest, err jsonutils.JSONObject) {
if len(guest.ExternalId) > 0 {
_, e := guest.GetIVM()
if errors.Cause(e) == cloudprovider.ErrNotFound {
self.Params.Set("override_pending_delete", jsonutils.JSONTrue)
}
}
self.OnGuestStopComplete(ctx, guest, err) // ignore stop error
}