Allon Mureinik has uploaded a new change for review. Change subject: core: AddDisk preview validation ......................................................................
core: AddDisk preview validation In AddDiskCommand, moved the validation that the VM is not in preview from ImagesHandler to SnapshotValidator, which is a more logical place for it. This patch contains the following: * A new method in SnapshotValidator, vmNotInPreview(vmId) * Tests for the aforementioned method in SnapshotValidatorTest. * The usage of the aforementioned method in AddDiskCommand * Minor amendments to AddDiskToVmCommandTest's mocking in light of the previous change. Note: This patch is part of a series of patches aimed at removing the preview validation from ImagesHandler altogether. Change-Id: Ib282279a4b938d6fb3b08e9b2d127af4653bd51c Signed-off-by: Allon Mureinik <[email protected]> --- M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddDiskCommand.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/snapshots/SnapshotsValidator.java M backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/AddDiskToVmCommandTest.java M backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/snapshots/SnapshotsValidatorTest.java 4 files changed, 48 insertions(+), 6 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/79/11179/1 diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddDiskCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddDiskCommand.java index 7dc6005..32e65b8 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddDiskCommand.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddDiskCommand.java @@ -141,7 +141,8 @@ if (returnValue && vm != null) { returnValue = isStoragePoolMatching(vm) && performImagesChecks(vm) && - validate(getSnapshotValidator().vmNotDuringSnapshot(vm.getId())); + validate(getSnapshotValidator().vmNotDuringSnapshot(vm.getId())) && + validate(getSnapshotValidator().vmNotInPreview(vm.getId())); } return returnValue; @@ -205,7 +206,7 @@ true, false, false, - true, + false, false, true, Collections.<Disk> emptyList()); diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/snapshots/SnapshotsValidator.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/snapshots/SnapshotsValidator.java index 022148b..8c4219a 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/snapshots/SnapshotsValidator.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/snapshots/SnapshotsValidator.java @@ -21,8 +21,35 @@ * @return Is the VM during a snapshot operation or not. */ public ValidationResult vmNotDuringSnapshot(Guid vmId) { - if (getSnapshotDao().exists(vmId, SnapshotStatus.LOCKED)) { - return new ValidationResult(VdcBllMessages.ACTION_TYPE_FAILED_VM_IS_DURING_SNAPSHOT); + return vmNotInState(vmId, SnapshotStatus.LOCKED, VdcBllMessages.ACTION_TYPE_FAILED_VM_IS_DURING_SNAPSHOT); + } + + /** + * Return if the VM is in preview (running currently on a snapshot other than the active one). + * + * @param vmId + * The VM to check for. + * @return Is the VM during a snapshot operation or not. + */ + public ValidationResult vmNotInPreview(Guid vmId) { + return vmNotInState(vmId, SnapshotStatus.IN_PREVIEW, VdcBllMessages.ACTION_TYPE_FAILED_VM_IN_PREVIEW); + } + + /** + * Return if the VM has a snapshot in the given status. + * + * @param vmId + * The VM to check for. + * @param status + * The status of a snapshot to look for + * @param msg + * The validation error to return if the snapshot exists + * + * @return Is the VM during a snapshot operation or not. + */ + private ValidationResult vmNotInState(Guid vmId, SnapshotStatus status, VdcBllMessages msg) { + if (getSnapshotDao().exists(vmId, status)) { + return new ValidationResult(msg); } return ValidationResult.VALID; diff --git a/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/AddDiskToVmCommandTest.java b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/AddDiskToVmCommandTest.java index 92eef4f..cc764b9 100644 --- a/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/AddDiskToVmCommandTest.java +++ b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/AddDiskToVmCommandTest.java @@ -29,7 +29,9 @@ import org.ovirt.engine.core.common.businessentities.LUNs; import org.ovirt.engine.core.common.businessentities.LunDisk; import org.ovirt.engine.core.common.businessentities.StorageDomainStatus; +import org.ovirt.engine.core.common.businessentities.StoragePoolIsoMap; import org.ovirt.engine.core.common.businessentities.StoragePoolIsoMapId; +import org.ovirt.engine.core.common.businessentities.StorageServerConnections; import org.ovirt.engine.core.common.businessentities.StorageType; import org.ovirt.engine.core.common.businessentities.VM; import org.ovirt.engine.core.common.businessentities.VMStatus; @@ -37,8 +39,6 @@ import org.ovirt.engine.core.common.businessentities.VolumeType; import org.ovirt.engine.core.common.businessentities.storage_domains; import org.ovirt.engine.core.common.businessentities.storage_pool; -import org.ovirt.engine.core.common.businessentities.StoragePoolIsoMap; -import org.ovirt.engine.core.common.businessentities.StorageServerConnections; import org.ovirt.engine.core.common.config.ConfigValues; import org.ovirt.engine.core.compat.Guid; import org.ovirt.engine.core.compat.Version; @@ -410,6 +410,7 @@ private SnapshotsValidator mockSnapshotValidator() { SnapshotsValidator snapshotsValidator = mock(SnapshotsValidator.class); when(snapshotsValidator.vmNotDuringSnapshot(any(Guid.class))).thenReturn(ValidationResult.VALID); + when(snapshotsValidator.vmNotInPreview(any(Guid.class))).thenReturn(ValidationResult.VALID); return snapshotsValidator; } diff --git a/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/snapshots/SnapshotsValidatorTest.java b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/snapshots/SnapshotsValidatorTest.java index a690f0c..b933b2d 100644 --- a/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/snapshots/SnapshotsValidatorTest.java +++ b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/snapshots/SnapshotsValidatorTest.java @@ -52,6 +52,19 @@ } @Test + public void vmNotInPreviewReturnsInvalidResultWhenInSnapshot() throws Exception { + when(snapshotDao.exists(vmId, SnapshotStatus.IN_PREVIEW)).thenReturn(true); + validateInvalidResult(validator.vmNotInPreview(vmId), + VdcBllMessages.ACTION_TYPE_FAILED_VM_IN_PREVIEW); + } + + @Test + public void vmNotInPreviewReturnsValidForNoSnapshotInProgress() throws Exception { + when(snapshotDao.exists(vmId, SnapshotStatus.IN_PREVIEW)).thenReturn(false); + validateValidResult(validator.vmNotInPreview(vmId)); + } + + @Test public void snapshotExistsByGuidReturnsInvalidResultWhenNoSnapshot() throws Exception { when(snapshotDao.exists(vmId, snapshotId)).thenReturn(false); validateInvalidResult(validator.snapshotExists(vmId, snapshotId), -- To view, visit http://gerrit.ovirt.org/11179 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ib282279a4b938d6fb3b08e9b2d127af4653bd51c Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Allon Mureinik <[email protected]> _______________________________________________ Engine-patches mailing list [email protected] http://lists.ovirt.org/mailman/listinfo/engine-patches
