mirror of
https://github.com/yunionio/cloudpods.git
synced 2026-09-19 10:46:58 +08:00
fix(region): add kvm_delete_task (#23698)
This commit is contained in:
@@ -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
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user