Vered Volansky has uploaded a new change for review.

Change subject: core: Use correct validation for SD selection
......................................................................

core: Use correct validation for SD selection

When creating a snapshot, use new storage allocation validations for
the vm volumes when selecting a domain.

Change-Id: Iac901a638358b9b08bcc6992d783a42cbfcd9bfa
Bug-Url: https://bugzilla.redhat.com/1119022
Signed-off-by: Vered Volansky <vvola...@redhat.com>
---
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/CreateAllSnapshotsFromVmCommand.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/memory/LiveSnapshotMemoryImageBuilder.java
2 files changed, 21 insertions(+), 15 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/88/31488/1

diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/CreateAllSnapshotsFromVmCommand.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/CreateAllSnapshotsFromVmCommand.java
index dad2002..ebfc2fa 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/CreateAllSnapshotsFromVmCommand.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/CreateAllSnapshotsFromVmCommand.java
@@ -72,6 +72,7 @@
     private String cachedSnapshotIsBeingTakenMessage;
     private Guid newActiveSnapshotId = Guid.newGuid();
     private MemoryImageBuilder memoryBuilder;
+    private Guid memorySdId;
 
     protected CreateAllSnapshotsFromVmCommand(Guid commandId) {
         super(commandId);
@@ -145,8 +146,7 @@
         return toReturn;
     }
 
-    private boolean validateStorageDomains(List<DiskImage> vmDisksList) {
-        List<DiskImage> memoryDisksList = 
getMemoryImageBuilder().getDisksToBeCreated();
+    private boolean validateStorageDomains(List<DiskImage> vmDisksList, 
List<DiskImage> memoryDisksList) {
         List<DiskImage> disksList = getAllDisks(vmDisksList, memoryDisksList);
         MultipleStorageDomainsValidator sdValidator = 
createMultipleStorageDomainsValidator(disksList);
         return validate(sdValidator.allDomainsExistAndActive())
@@ -204,10 +204,9 @@
         setSucceeded(true);
     }
 
-    public Guid getStorageDomainIdForVmMemory() {
+    public Guid getStorageDomainIdForVmMemory(List<DiskImage> memoryDisksList) 
{
         if (cachedStorageDomainId.equals(Guid.Empty) && getVm() != null) {
-            long sizeNeeded = getVm().getTotalMemorySizeInBytes() / 
BYTES_IN_GB;
-            StorageDomain storageDomain = 
VmHandler.findStorageDomainForMemory(getVm().getStoragePoolId(), sizeNeeded);
+            StorageDomain storageDomain = 
VmHandler.findStorageDomainForMemory(getVm().getStoragePoolId(), 
memoryDisksList);
             if (storageDomain != null) {
                 cachedStorageDomainId = storageDomain.getId();
             }
@@ -225,7 +224,7 @@
         }
 
         if (getParameters().isSaveMemory() && isLiveSnapshotApplicable()) {
-            return new LiveSnapshotMemoryImageBuilder(getVm(), 
getStorageDomainIdForVmMemory(), getStoragePool(), this);
+            return new LiveSnapshotMemoryImageBuilder(getVm(), memorySdId, 
getStoragePool(), this);
         }
 
         return new NullableMemoryImageBuilder();
@@ -511,12 +510,14 @@
             }
         }
 
-        if (!validateStorageDomains(disksList)) {
-            return false;
+        List<DiskImage> memoryDisksList = 
getMemoryImageBuilder().getDisksToBeCreated();
+        memorySdId = getStorageDomainIdForVmMemory(memoryDisksList);
+        if (getParameters().isSaveMemory() && Guid.Empty.equals(memorySdId)) {
+            return 
failCanDoAction(VdcBllMessages.ACTION_TYPE_FAILED_NO_SUITABLE_DOMAIN_FOUND);
         }
 
-        if (getParameters().isSaveMemory() && 
Guid.Empty.equals(getStorageDomainIdForVmMemory())) {
-            return 
failCanDoAction(VdcBllMessages.ACTION_TYPE_FAILED_NO_SUITABLE_DOMAIN_FOUND);
+        if (!validateStorageDomains(disksList, memoryDisksList)) {
+            return false;
         }
 
         return true;
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/memory/LiveSnapshotMemoryImageBuilder.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/memory/LiveSnapshotMemoryImageBuilder.java
index 3b131a8..eaf30e22 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/memory/LiveSnapshotMemoryImageBuilder.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/memory/LiveSnapshotMemoryImageBuilder.java
@@ -1,8 +1,6 @@
 package org.ovirt.engine.core.bll.memory;
 
-import java.util.ArrayList;
 import java.util.Arrays;
-import java.util.Collections;
 import java.util.List;
 
 import org.ovirt.engine.core.bll.Backend;
@@ -144,16 +142,23 @@
 
     public List<DiskImage> getDisksToBeCreated() {
         DiskImage imageForMemory = new DiskImage();
-        imageForMemory.setStorageIds(new 
ArrayList<Guid>(Collections.singletonList(storageDomainId)));
+        imageForMemory.setDiskAlias("memory");
+        //imageForMemory.setStorageIds(new 
ArrayList<Guid>(Collections.singletonList(storageDomainId)));
         imageForMemory.setStoragePoolId(storagePool.getId());
         imageForMemory.setSize(vm.getTotalMemorySizeInBytes());
-        imageForMemory.setVolumeType(getVolumeTypeForDomain());
+        imageForMemory.setActualSizeInBytes(vm.getTotalMemorySizeInBytes());
+        //imageForMemory.setVolumeType(getVolumeTypeForDomain());
         imageForMemory.setvolumeFormat(VolumeFormat.RAW);
+        imageForMemory.getSnapshots().add(imageForMemory);
 
-        DiskImage imageForMetadata = DiskImage.copyOf(imageForMemory);
+        DiskImage imageForMetadata = new DiskImage();
+        imageForMetadata.setDiskAlias("metadata");
+        imageForMetadata.setStoragePoolId(storagePool.getId());
         imageForMetadata.setSize(HibernateVmCommand.META_DATA_SIZE_IN_BYTES);
+        
imageForMetadata.setActualSizeInBytes(HibernateVmCommand.META_DATA_SIZE_IN_BYTES);
         imageForMetadata.setVolumeType(VolumeType.Sparse);
         imageForMetadata.setvolumeFormat(VolumeFormat.COW);
+        imageForMetadata.getSnapshots().add(imageForMetadata);
         return Arrays.asList(imageForMemory, imageForMetadata);
     }
 }


-- 
To view, visit http://gerrit.ovirt.org/31488
To unsubscribe, visit http://gerrit.ovirt.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: Iac901a638358b9b08bcc6992d783a42cbfcd9bfa
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Vered Volansky <vvola...@redhat.com>
_______________________________________________
Engine-patches mailing list
Engine-patches@ovirt.org
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to