diff --git a/pkg/compute/models/guest_actions.go b/pkg/compute/models/guest_actions.go index a5e3d9f84e..49bf14d57c 100644 --- a/pkg/compute/models/guest_actions.go +++ b/pkg/compute/models/guest_actions.go @@ -2545,7 +2545,15 @@ func (self *SGuest) PerformChangeConfig(ctx context.Context, userCred mcclient.T var diskIdx = 1 for i := range input.Disks { disk := input.Disks[i] - if len(disk.Backend) == 0 { + if len(disk.SnapshotId) > 0 { + snapObj, err := SnapshotManager.FetchById(disk.SnapshotId) + if err != nil { + return nil, httperrors.NewResourceNotFoundError("snapshot %s not found", disk.SnapshotId) + } + snap := snapObj.(*SSnapshot) + disk.Storage = snap.StorageId + } + if len(disk.Backend) == 0 && len(disk.Storage) == 0 { disk.Backend = self.getDefaultStorageType() } if disk.SizeMb > 0 {