mirror of
https://github.com/yunionio/cloudpods.git
synced 2026-09-19 02:37:24 +08:00
fix(region): delete vm and disk when it was not found
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user