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