fix: delete servers that has been removed results in delete_failed

status
This commit is contained in:
Qiu Jian
2019-04-21 00:01:51 +08:00
parent e354e771b2
commit d6956095f8
3 changed files with 14 additions and 16 deletions
+4
View File
@@ -465,6 +465,10 @@ func (task *STask) ScheduleRun(data jsonutils.JSONObject) {
runTask(task.Id, data)
}
func (self *STask) IsSubtask() bool {
return self.HasParentTask()
}
func (self *STask) HasParentTask() bool {
parentTaskId, _ := self.Params.GetString(PARENT_TASK_ID_KEY)
if len(parentTaskId) > 0 {
+5 -9
View File
@@ -188,7 +188,7 @@ func (self *GuestDeleteTask) doStartDeleteGuest(ctx context.Context, obj db.ISta
func (self *GuestDeleteTask) StartPendingDeleteGuest(ctx context.Context, guest *models.SGuest) {
guest.DoPendingDelete(ctx, self.UserCred)
self.SetStage("on_pending_delete_complete", nil)
self.SetStage("OnPendingDeleteComplete", nil)
guest.StartSyncstatus(ctx, self.UserCred, self.GetTaskId())
}
@@ -197,18 +197,14 @@ func (self *GuestDeleteTask) OnPendingDeleteComplete(ctx context.Context, obj db
if !guest.IsSystem {
self.NotifyServerDeleted(ctx, guest)
}
self.SetStage("on_sync_guest_conf_complete", nil)
// self.SetStage("on_sync_guest_conf_complete", nil)
logclient.AddActionLogWithStartable(self, guest, logclient.ACT_PENDING_DELETE, nil, self.UserCred, true)
guest.StartSyncTask(ctx, self.UserCred, false, self.GetTaskId())
}
func (self *GuestDeleteTask) OnSyncGuestConfComplete(ctx context.Context, obj db.IStandaloneModel, data jsonutils.JSONObject) {
// guest.StartSyncTask(ctx, self.UserCred, false, self.GetTaskId())
self.SetStageComplete(ctx, nil)
}
func (self *GuestDeleteTask) OnSyncGuestConfCompleteFailed(ctx context.Context, obj db.IStandaloneModel, err jsonutils.JSONObject) {
guest := obj.(*models.SGuest)
self.OnFailed(ctx, guest, err)
func (self *GuestDeleteTask) OnPendingDeleteCompleteFailed(ctx context.Context, obj db.IStandaloneModel, data jsonutils.JSONObject) {
self.OnPendingDeleteComplete(ctx, obj, nil)
}
func (self *GuestDeleteTask) StartDeleteGuest(ctx context.Context, guest *models.SGuest) {
+5 -7
View File
@@ -41,17 +41,13 @@ func (self *GuestStopTask) OnInit(ctx context.Context, obj db.IStandaloneModel,
self.stopGuest(ctx, guest)
}
func (self *GuestStopTask) isSubtask() bool {
return jsonutils.QueryBoolean(self.Params, "subtask", false)
}
func (self *GuestStopTask) stopGuest(ctx context.Context, guest *models.SGuest) {
host := guest.GetHost()
if host == nil {
self.OnGuestStopTaskCompleteFailed(ctx, guest, jsonutils.NewString("no associated host"))
return
}
if !self.isSubtask() {
if !self.IsSubtask() {
guest.SetStatus(self.UserCred, api.VM_STOPPING, "")
}
self.SetStage("OnMasterStopTaskComplete", nil)
@@ -82,7 +78,7 @@ func (self *GuestStopTask) OnMasterStopTaskCompleteFailed(ctx context.Context, o
}
func (self *GuestStopTask) OnGuestStopTaskComplete(ctx context.Context, guest *models.SGuest, data jsonutils.JSONObject) {
if !self.isSubtask() {
if !self.IsSubtask() {
guest.SetStatus(self.UserCred, api.VM_READY, "")
}
db.OpsLog.LogEvent(guest, db.ACT_STOP, guest.GetShortDesc(ctx), self.UserCred)
@@ -95,7 +91,9 @@ func (self *GuestStopTask) OnGuestStopTaskComplete(ctx context.Context, guest *m
}
func (self *GuestStopTask) OnGuestStopTaskCompleteFailed(ctx context.Context, guest *models.SGuest, reason jsonutils.JSONObject) {
guest.SetStatus(self.UserCred, api.VM_STOP_FAILED, reason.String())
if !self.IsSubtask() {
guest.SetStatus(self.UserCred, api.VM_STOP_FAILED, reason.String())
}
db.OpsLog.LogEvent(guest, db.ACT_STOP_FAIL, reason.String(), self.UserCred)
self.SetStageFailed(ctx, reason.String())
logclient.AddActionLogWithStartable(self, guest, logclient.ACT_VM_STOP, reason.String(), self.UserCred, false)