From 389d64d92b955ef04d29abe56086cd323a0334fc Mon Sep 17 00:00:00 2001 From: wanyaoqi Date: Fri, 15 Mar 2019 15:37:54 +0800 Subject: [PATCH] guest do not sync status on guest delete --- pkg/compute/models/guest_actions.go | 11 +++++++++++ pkg/compute/tasks/guest_delete_task.go | 2 +- pkg/compute/tasks/guest_sync_task.go | 2 +- 3 files changed, 13 insertions(+), 2 deletions(-) diff --git a/pkg/compute/models/guest_actions.go b/pkg/compute/models/guest_actions.go index 98bf93451d..f1eb14035d 100644 --- a/pkg/compute/models/guest_actions.go +++ b/pkg/compute/models/guest_actions.go @@ -450,6 +450,17 @@ func (self *SGuest) StartSyncTask(ctx context.Context, userCred mcclient.TokenCr log.Errorf(err.Error()) return err } + return self.doSyncTask(ctx, data, userCred, parentTaskId) +} + +func (self *SGuest) StartSyncTaskWithoutSyncstatus(ctx context.Context, userCred mcclient.TokenCredential, fwOnly bool, parentTaskId string) error { + data := jsonutils.NewDict() + data.Set("without_sync_status", jsonutils.JSONTrue) + data.Set("fw_only", jsonutils.NewBool(fwOnly)) + return self.doSyncTask(ctx, data, userCred, parentTaskId) +} + +func (self *SGuest) doSyncTask(ctx context.Context, data *jsonutils.JSONDict, userCred mcclient.TokenCredential, parentTaskId string) error { if task, err := taskman.TaskManager.NewTask(ctx, "GuestSyncConfTask", self, userCred, data, parentTaskId, "", nil); err != nil { log.Errorf(err.Error()) return err diff --git a/pkg/compute/tasks/guest_delete_task.go b/pkg/compute/tasks/guest_delete_task.go index 049095f109..afee797de0 100644 --- a/pkg/compute/tasks/guest_delete_task.go +++ b/pkg/compute/tasks/guest_delete_task.go @@ -126,7 +126,7 @@ func (self *GuestDeleteTask) doClearSecurityGroupComplete(ctx context.Context, g guest.RevokeAllSecgroups(ctx, self.UserCred) // sync revoked secgroups to remote cloud self.SetStage("OnSyncConfigComplete", nil) - guest.StartSyncTask(ctx, self.UserCred, false, self.GetTaskId()) + guest.StartSyncTaskWithoutSyncstatus(ctx, self.UserCred, false, self.GetTaskId()) } func (self *GuestDeleteTask) OnSyncConfigComplete(ctx context.Context, obj db.IStandaloneModel, data jsonutils.JSONObject) { diff --git a/pkg/compute/tasks/guest_sync_task.go b/pkg/compute/tasks/guest_sync_task.go index b2cbdfe090..710abfe646 100644 --- a/pkg/compute/tasks/guest_sync_task.go +++ b/pkg/compute/tasks/guest_sync_task.go @@ -47,7 +47,7 @@ func (self *GuestSyncConfTask) OnSyncComplete(ctx context.Context, obj db.IStand } func (self *GuestSyncConfTask) OnDiskSyncComplete(ctx context.Context, guest *models.SGuest, data jsonutils.JSONObject) { - if self.HasParentTask() { + if jsonutils.QueryBoolean(self.Params, "without_sync_status", false) { self.OnSyncStatusComplete(ctx, guest, nil) } else { self.SetStage("on_sync_status_complete", nil)