From 13a100fefe8f0df2f5e0467e0e55299a57ff11ad Mon Sep 17 00:00:00 2001 From: wanyaoqi <18528551+wanyaoqi@users.noreply.github.com> Date: Sun, 16 Jun 2024 23:01:35 +0800 Subject: [PATCH] fix(region): insert iso sync guest status (#20540) --- pkg/compute/tasks/storage_cache_image_task.go | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/pkg/compute/tasks/storage_cache_image_task.go b/pkg/compute/tasks/storage_cache_image_task.go index 2f6e28ea10..fba47f9b79 100644 --- a/pkg/compute/tasks/storage_cache_image_task.go +++ b/pkg/compute/tasks/storage_cache_image_task.go @@ -63,8 +63,6 @@ func (self *StorageCacheImageTask) OnRelinquishLeastUsedCachedImageComplete(ctx db.OpsLog.LogEvent(storageCache, db.ACT_CACHING_IMAGE, imageId, self.UserCred) - self.SetStage("OnImageCacheComplete", nil) - var host *models.SHost var err error serverId, _ := self.Params.GetString("server_id") @@ -76,6 +74,7 @@ func (self *StorageCacheImageTask) OnRelinquishLeastUsedCachedImageComplete(ctx return } server := guest.(*models.SGuest) + self.Params.Set("guest_old_status", jsonutils.NewString(server.Status)) server.SetStatus(ctx, self.GetUserCred(), api.VM_IMAGE_CACHING, "") host, _ = server.GetHost() } else { @@ -87,6 +86,7 @@ func (self *StorageCacheImageTask) OnRelinquishLeastUsedCachedImageComplete(ctx } } + self.SetStage("OnImageCacheComplete", nil) driver, err := host.GetHostDriver() if err != nil { self.OnImageCacheCompleteFailed(ctx, storageCache, jsonutils.NewString(errors.Wrapf(err, "GetHostDriver").Error())) @@ -139,6 +139,20 @@ func (self *StorageCacheImageTask) OnCacheSucc(ctx context.Context, cache *model if len(extImgId) > 0 && scimg.ExternalId != extImgId { scimg.SetExternalId(extImgId) } + + serverId, _ := self.Params.GetString("server_id") + if len(serverId) > 0 { + guest, err := models.GuestManager.FetchById(serverId) + if err != nil { + errData := taskman.Error2TaskData(err) + self.OnImageCacheCompleteFailed(ctx, cache, errData) + return + } + server := guest.(*models.SGuest) + oldStatus, _ := self.Params.GetString("guest_old_status") + server.SetStatus(ctx, self.GetUserCred(), oldStatus, "on cache succ") + } + models.CachedimageManager.ImageAddRefCount(imageId) db.OpsLog.LogEvent(cache, db.ACT_CACHED_IMAGE, imageId, self.UserCred) self.SetStageComplete(ctx, data)