diff --git a/pkg/compute/tasks/guest_live_migrate_task.go b/pkg/compute/tasks/guest_live_migrate_task.go index 288d29027b..343189f2be 100644 --- a/pkg/compute/tasks/guest_live_migrate_task.go +++ b/pkg/compute/tasks/guest_live_migrate_task.go @@ -149,12 +149,19 @@ func (task *GuestMigrateTask) SaveScheduleResult(ctx context.Context, obj ISched // prepare disk for migration if len(disk.TemplateId) > 0 && isLocalStorage { templates := []string{} - guestdisks, _ := guest.GetDisks() - for i := range guestdisks { - if guestdisks[i].TemplateId != "" { - templates = append(templates, guestdisks[i].TemplateId) + if sourceGuestId := guest.GetMetadata(ctx, api.SERVER_META_CONVERT_FROM_ESXI, task.UserCred); len(sourceGuestId) > 0 { + // skip cache images + } else if sourceGuestId := guest.GetMetadata(ctx, api.SERVER_META_CONVERT_FROM_CLOUDPODS, task.UserCred); len(sourceGuestId) > 0 { + // skip cache images + } else { + guestdisks, _ := guest.GetDisks() + for i := range guestdisks { + if guestdisks[i].TemplateId != "" { + templates = append(templates, guestdisks[i].TemplateId) + } } } + if len(templates) > 0 { body.Set("cache_templates", jsonutils.NewStringArray(templates)) } diff --git a/pkg/hostman/storageman/storage_local.go b/pkg/hostman/storageman/storage_local.go index 8d7b5a219f..bbaf49ab41 100644 --- a/pkg/hostman/storageman/storage_local.go +++ b/pkg/hostman/storageman/storage_local.go @@ -835,7 +835,7 @@ func (s *SLocalStorage) DestinationPrepareMigrate( return errors.Wrap(err, "CreateFromUrl") } } - if rebaseDisks && len(templateId) > 0 && len(baseImagePath) == 0 { + if rebaseDisks && len(templateId) > 0 && len(baseImagePath) == 0 && sysDiskHasTemplate { templatePath := path.Join(storageManager.LocalStorageImagecacheManager.GetPath(), templateId) // check if template is encrypted img, err := qemuimg.NewQemuImage(templatePath)