Skip to content

Commit 30ca0f5

Browse files
authored
fix(baremetal): ensure the execution of the BaremetalServerDestroyTask (#23498)
1 parent 73880ee commit 30ca0f5

File tree

3 files changed

+32
-2
lines changed

3 files changed

+32
-2
lines changed

pkg/baremetal/manager.go

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1358,10 +1358,17 @@ func (b *SBaremetalInstance) GetTask() tasks.ITask {
13581358
}
13591359

13601360
func (b *SBaremetalInstance) SetTask(task tasks.ITask) {
1361+
// hack: clear exist tasks if task is server destroy task
1362+
if task.GetName() == tasks.BAREMETAL_SERVER_DESTROY_TASK {
1363+
log.Infof("clear tasks of baremetal %s before executing %s", b.GetName(), task.GetName())
1364+
b.taskQueue.ClearTasks()
1365+
}
13611366
b.taskQueue.AppendTask(task)
13621367
if reflect.DeepEqual(task, b.taskQueue.GetTask()) {
1363-
log.Infof("Set task equal, ExecuteTask %s", task.GetName())
1368+
log.Infof("Execute task %s of baremetal %s", task.GetName(), b.GetName())
13641369
tasks.ExecuteTask(task, nil)
1370+
} else {
1371+
log.Warningf("Append task %s of baremetal %s before executing %s", task.GetName(), b.GetName(), b.taskQueue.DebugString())
13651372
}
13661373
}
13671374

pkg/baremetal/tasks/base.go

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -180,6 +180,25 @@ func (q *TaskQueue) AppendTask(task ITask) *TaskQueue {
180180
return q
181181
}
182182

183+
func (q *TaskQueue) ClearTasks() {
184+
for {
185+
existTask := q.PopTask()
186+
if existTask != nil {
187+
log.Warningf("Clear task %s", existTask.GetName())
188+
} else {
189+
break
190+
}
191+
}
192+
}
193+
194+
func (q *TaskQueue) DebugString() string {
195+
str := ""
196+
for e := q.objList.Front(); e != nil; e = e.Next() {
197+
str += fmt.Sprintf("%s, ", e.Value.(ITask).GetName())
198+
}
199+
return str
200+
}
201+
183202
type TaskFactory func(userCred mcclient.TokenCredential, bm IBaremetal, taskId string, data jsonutils.JSONObject) ITask
184203

185204
type SBaremetalTaskBase struct {

pkg/baremetal/tasks/destroy.go

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,10 @@ import (
2626

2727
var _ IServerBaseDeployTask = new(SBaremetalServerDestroyTask)
2828

29+
const (
30+
BAREMETAL_SERVER_DESTROY_TASK = "BaremetalServerDestroyTask"
31+
)
32+
2933
type SBaremetalServerDestroyTask struct {
3034
SBaremetalServerBaseDeployTask
3135
}
@@ -45,7 +49,7 @@ func NewBaremetalServerDestroyTask(
4549
}
4650

4751
func (self *SBaremetalServerDestroyTask) GetName() string {
48-
return "BaremetalServerDestroyTask"
52+
return BAREMETAL_SERVER_DESTROY_TASK
4953
}
5054

5155
func (self *SBaremetalServerDestroyTask) RemoveEFIOSEntry() bool {

0 commit comments

Comments
 (0)