mirror of
https://github.com/yunionio/cloudpods.git
synced 2026-09-24 16:03:43 +08:00
fix(baremetal): ensure the execution of the BaremetalServerDestroyTask (#23495)
This commit is contained in:
@@ -1311,10 +1311,17 @@ func (b *SBaremetalInstance) GetTask() tasks.ITask {
|
||||
}
|
||||
|
||||
func (b *SBaremetalInstance) SetTask(task tasks.ITask) {
|
||||
// hack: clear exist tasks if task is server destroy task
|
||||
if task.GetName() == tasks.BAREMETAL_SERVER_DESTROY_TASK {
|
||||
log.Infof("clear tasks of baremetal %s before executing %s", b.GetName(), task.GetName())
|
||||
b.taskQueue.ClearTasks()
|
||||
}
|
||||
b.taskQueue.AppendTask(task)
|
||||
if reflect.DeepEqual(task, b.taskQueue.GetTask()) {
|
||||
log.Infof("Set task equal, ExecuteTask %s", task.GetName())
|
||||
log.Infof("Execute task %s of baremetal %s", task.GetName(), b.GetName())
|
||||
tasks.ExecuteTask(task, nil)
|
||||
} else {
|
||||
log.Warningf("Append task %s of baremetal %s before executing %s", task.GetName(), b.GetName(), b.taskQueue.DebugString())
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -180,6 +180,25 @@ func (q *TaskQueue) AppendTask(task ITask) *TaskQueue {
|
||||
return q
|
||||
}
|
||||
|
||||
func (q *TaskQueue) ClearTasks() {
|
||||
for {
|
||||
existTask := q.PopTask()
|
||||
if existTask != nil {
|
||||
log.Warningf("Clear task %s", existTask.GetName())
|
||||
} else {
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func (q *TaskQueue) DebugString() string {
|
||||
str := ""
|
||||
for e := q.objList.Front(); e != nil; e = e.Next() {
|
||||
str += fmt.Sprintf("%s, ", e.Value.(ITask).GetName())
|
||||
}
|
||||
return str
|
||||
}
|
||||
|
||||
type TaskFactory func(userCred mcclient.TokenCredential, bm IBaremetal, taskId string, data jsonutils.JSONObject) ITask
|
||||
|
||||
type SBaremetalTaskBase struct {
|
||||
|
||||
@@ -26,6 +26,10 @@ import (
|
||||
|
||||
var _ IServerBaseDeployTask = new(SBaremetalServerDestroyTask)
|
||||
|
||||
const (
|
||||
BAREMETAL_SERVER_DESTROY_TASK = "BaremetalServerDestroyTask"
|
||||
)
|
||||
|
||||
type SBaremetalServerDestroyTask struct {
|
||||
SBaremetalServerBaseDeployTask
|
||||
}
|
||||
@@ -45,7 +49,7 @@ func NewBaremetalServerDestroyTask(
|
||||
}
|
||||
|
||||
func (self *SBaremetalServerDestroyTask) GetName() string {
|
||||
return "BaremetalServerDestroyTask"
|
||||
return BAREMETAL_SERVER_DESTROY_TASK
|
||||
}
|
||||
|
||||
func (self *SBaremetalServerDestroyTask) RemoveEFIOSEntry() bool {
|
||||
|
||||
Reference in New Issue
Block a user