fix(region): add kvm_delete_task (#23698)

This commit is contained in:
cwz_eikoh
2025-11-11 16:32:33 +08:00
committed by GitHub
parent fcb72e304b
commit 8d4595be87
4 changed files with 67 additions and 8 deletions
+1 -1
View File
@@ -99,7 +99,7 @@ func (drv *SBaseGuestDriver) OnGuestCreateTaskComplete(ctx context.Context, gues
}
func (drv *SBaseGuestDriver) StartDeleteGuestTask(ctx context.Context, userCred mcclient.TokenCredential, guest *models.SGuest, params *jsonutils.JSONDict, parentTaskId string) error {
task, err := taskman.TaskManager.NewTask(ctx, "GuestDeleteTask", guest, userCred, params, parentTaskId, "", nil)
task, err := taskman.TaskManager.NewTask(ctx, "KvmDeleteTask", guest, userCred, params, parentTaskId, "", nil)
if err != nil {
return err
}
+7 -7
View File
@@ -359,14 +359,14 @@ func (self *GuestDeleteTask) OnGuestDeleteComplete(ctx context.Context, obj db.I
}
func (self *GuestDeleteTask) DeleteGuest(ctx context.Context, guest *models.SGuest) {
guest.RealDelete(ctx, self.UserCred)
// guest.RealDelete(ctx, self.UserCred)
// guest.RemoveAllMetadata(ctx, self.UserCred)
db.OpsLog.LogEvent(guest, db.ACT_DELOCATE, guest.GetShortDesc(ctx), self.UserCred)
logclient.AddActionLogWithStartable(self, guest, logclient.ACT_DELOCATE, nil, self.UserCred, true)
if !guest.IsSystem {
guest.EventNotify(ctx, self.UserCred, notifyclient.ActionDelete)
}
models.HostManager.ClearSchedDescCache(guest.HostId)
// db.OpsLog.LogEvent(guest, db.ACT_DELOCATE, guest.GetShortDesc(ctx), self.UserCred)
// logclient.AddActionLogWithStartable(self, guest, logclient.ACT_DELOCATE, nil, self.UserCred, true)
// if !guest.IsSystem {
// guest.EventNotify(ctx, self.UserCred, notifyclient.ActionDelete)
// }
// models.HostManager.ClearSchedDescCache(guest.HostId)
self.SetStageComplete(ctx, nil)
}
@@ -0,0 +1,50 @@
package guest
import (
"context"
"yunion.io/x/jsonutils"
"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/compute/models"
"yunion.io/x/onecloud/pkg/util/logclient"
)
type KvmDeleteTask struct {
SGuestBaseTask
}
func init() {
taskman.RegisterTask(KvmDeleteTask{})
}
func (t *KvmDeleteTask) OnInit(ctx context.Context, obj db.IStandaloneModel, body jsonutils.JSONObject) {
t.startDeleteKvm(ctx, obj.(*models.SGuest))
}
func (t *KvmDeleteTask) startDeleteKvm(ctx context.Context, kvm *models.SGuest) {
t.SetStage("OnKvmDeleted", nil)
task, err := taskman.TaskManager.NewTask(ctx, "GuestDeleteTask", kvm, t.GetUserCred(), t.GetParams(), t.GetTaskId(), "", nil)
if err != nil {
t.OnKvmDeleted(ctx, kvm, jsonutils.NewString(err.Error()))
return
}
task.ScheduleRun(nil)
}
func (t *KvmDeleteTask) OnKvmDeleted(ctx context.Context, kvm *models.SGuest, data jsonutils.JSONObject) {
kvm.RealDelete(ctx, t.GetUserCred())
db.OpsLog.LogEvent(kvm, db.ACT_DELOCATE, kvm.GetShortDesc(ctx), t.UserCred)
logclient.AddActionLogWithStartable(t, kvm, logclient.ACT_DELOCATE, nil, t.UserCred, true)
if !kvm.IsSystem {
kvm.EventNotify(ctx, t.UserCred, notifyclient.ActionDelete)
}
models.HostManager.ClearSchedDescCache(kvm.HostId)
t.SetStageComplete(ctx, nil)
}
func (t *KvmDeleteTask) OnKvmDeletedFailed(ctx context.Context, kvm *models.SGuest, reason jsonutils.JSONObject) {
t.SetStageFailed(ctx, reason)
}
@@ -24,7 +24,9 @@ import (
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/compute/models"
"yunion.io/x/onecloud/pkg/util/logclient"
)
type PodDeleteTask struct {
@@ -119,6 +121,13 @@ func (t *PodDeleteTask) OnPodStoppedFailed(ctx context.Context, pod *models.SGue
}*/
func (t *PodDeleteTask) OnPodDeleted(ctx context.Context, pod *models.SGuest, data jsonutils.JSONObject) {
pod.RealDelete(ctx, t.GetUserCred())
db.OpsLog.LogEvent(pod, db.ACT_DELOCATE, pod.GetShortDesc(ctx), t.UserCred)
logclient.AddActionLogWithStartable(t, pod, logclient.ACT_DELOCATE, nil, t.UserCred, true)
if !pod.IsSystem {
pod.EventNotify(ctx, t.UserCred, notifyclient.ActionDelete)
}
models.HostManager.ClearSchedDescCache(pod.HostId)
t.SetStageComplete(ctx, nil)
}