diff --git a/pkg/compute/options/options.go b/pkg/compute/options/options.go index 915f5a6396..575bf8632b 100644 --- a/pkg/compute/options/options.go +++ b/pkg/compute/options/options.go @@ -105,8 +105,9 @@ type ComputeOptions struct { SystemAdminQuotaCheck bool `help:"Enable quota check for system admin, default False" default:"false"` CloudaccountHealthStatusCheck bool `help:"Enable cloudaccount health status check, default True" default:"true"` - BaremetalPreparePackageUrl string `help:"Baremetal online register package"` - BaremetalPrepareServerFakeDelete bool `help:"Baremetal registed server fake delete" default:"false"` + BaremetalPreparePackageUrl string `help:"Baremetal online register package"` + BaremetalPrepareServerFakeDelete bool `help:"Baremetal registed server fake delete" default:"false"` + BaremetalPrepareServerFakeDeleteKeepRunning bool `help:"Baremetal registed server fake delete keep guest running" default:"true"` // snapshot options AutoSnapshotDay int `default:"1" help:"Days auto snapshot disks, default 1 day"` diff --git a/pkg/compute/tasks/guest/guest_delete_task.go b/pkg/compute/tasks/guest/guest_delete_task.go index 3166cfbe6e..ac8f423941 100644 --- a/pkg/compute/tasks/guest/guest_delete_task.go +++ b/pkg/compute/tasks/guest/guest_delete_task.go @@ -58,6 +58,12 @@ func (deleteTask *BaseGuestDeleteTask) OnInit(ctx context.Context, obj db.IStand deleteTask.OnGuestStopComplete(ctx, guest, data) return } + purgeBmImportServerFakeDelete := host.IsImport && options.Options.BaremetalPrepareServerFakeDelete + if purgeBmImportServerFakeDelete && options.Options.BaremetalPrepareServerFakeDeleteKeepRunning { + deleteTask.OnGuestStopComplete(ctx, guest, data) + return + } + if len(guest.BackupHostId) > 0 { deleteTask.SetStage("OnMasterHostStopGuestComplete", nil) if err := drv.RequestStopGuestForDelete(ctx, guest, nil, deleteTask); err != nil {