Allon Mureinik has uploaded a new change for review. Change subject: core: Streamline RestoreAllSnapshots.canDoAction ......................................................................
core: Streamline RestoreAllSnapshots.canDoAction Refactored RestoreAllSnapshostsCommand's canDoAction() to use validators and the setActionMessageParameters() to be more readable. Change-Id: Ic06cd91e90cbe8ec10ad3e50b98c04796222e813 Signed-off-by: Allon Mureinik <amure...@redhat.com> --- M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RestoreAllSnapshotsCommand.java M backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/RestoreAllSnapshotCommandTest.java 2 files changed, 38 insertions(+), 23 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/46/11446/1 diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RestoreAllSnapshotsCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RestoreAllSnapshotsCommand.java index d101948..cdbf1bf 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RestoreAllSnapshotsCommand.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RestoreAllSnapshotsCommand.java @@ -12,8 +12,10 @@ import org.ovirt.engine.core.bll.quota.QuotaStorageConsumptionParameter; import org.ovirt.engine.core.bll.quota.QuotaStorageDependent; import org.ovirt.engine.core.bll.snapshots.SnapshotsManager; +import org.ovirt.engine.core.bll.snapshots.SnapshotsValidator; import org.ovirt.engine.core.bll.storage.StoragePoolValidator; import org.ovirt.engine.core.bll.utils.PermissionSubject; +import org.ovirt.engine.core.bll.validator.VmValidator; import org.ovirt.engine.core.common.AuditLogType; import org.ovirt.engine.core.common.VdcObjectType; import org.ovirt.engine.core.common.action.ImagesContainterParametersBase; @@ -27,7 +29,6 @@ import org.ovirt.engine.core.common.businessentities.Snapshot; import org.ovirt.engine.core.common.businessentities.Snapshot.SnapshotStatus; import org.ovirt.engine.core.common.businessentities.Snapshot.SnapshotType; -import org.ovirt.engine.core.common.businessentities.VMStatus; import org.ovirt.engine.core.common.errors.VdcBLLException; import org.ovirt.engine.core.common.errors.VdcBllErrors; import org.ovirt.engine.core.common.locks.LockingGroup; @@ -298,31 +299,32 @@ @Override protected boolean canDoAction() { - boolean result = false; - if (!getSnapshotDao().exists(getVmId(), getParameters().getDstSnapshotId())) { - addCanDoActionMessage(VdcBllMessages.ACTION_TYPE_FAILED_VM_SNAPSHOT_DOES_NOT_EXIST); - } else { - result = validate(new StoragePoolValidator(getStoragePool()).isUp()) && performImagesChecks(); - if (result && (getVm().getStatus() != VMStatus.Down)) { - result = false; - addCanDoActionMessage(VdcBllMessages.ACTION_TYPE_FAILED_VM_IS_NOT_DOWN); - } + SnapshotsValidator snapshotValidator = createSnapshotValidator(); + VmValidator vmValidator = new VmValidator(getVm()); + if (!validate(snapshotValidator.snapshotExists(getVmId(), getParameters().getDstSnapshotId())) || + !validate(new StoragePoolValidator(getStoragePool()).isUp()) || + !performImagesChecks() || + !validate(vmValidator.vmDown())) { + return false; } - if (result) { - Snapshot snapshot = getSnapshotDao().get(getParameters().getDstSnapshotId()); - if (snapshot.getType() == SnapshotType.REGULAR - && snapshot.getStatus() != SnapshotStatus.IN_PREVIEW) { - result = false; - addCanDoActionMessage(VdcBllMessages.ACTION_TYPE_FAILED_VM_SNAPSHOT_NOT_IN_PREVIEW); - } + Snapshot snapshot = getSnapshotDao().get(getParameters().getDstSnapshotId()); + if (snapshot.getType() == SnapshotType.REGULAR + && snapshot.getStatus() != SnapshotStatus.IN_PREVIEW) { + return failCanDoAction(VdcBllMessages.ACTION_TYPE_FAILED_VM_SNAPSHOT_NOT_IN_PREVIEW); } - if (!result) { - addCanDoActionMessage(VdcBllMessages.VAR__ACTION__REVERT_TO); - addCanDoActionMessage(VdcBllMessages.VAR__TYPE__SNAPSHOT); - } - return result; + return true; + } + + @Override + protected void setActionMessageParameters() { + addCanDoActionMessage(VdcBllMessages.VAR__ACTION__REVERT_TO); + addCanDoActionMessage(VdcBllMessages.VAR__TYPE__SNAPSHOT); + } + + protected SnapshotsValidator createSnapshotValidator() { + return new SnapshotsValidator(); } protected boolean performImagesChecks() { diff --git a/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/RestoreAllSnapshotCommandTest.java b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/RestoreAllSnapshotCommandTest.java index 9a2fa02..40911e0 100644 --- a/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/RestoreAllSnapshotCommandTest.java +++ b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/RestoreAllSnapshotCommandTest.java @@ -19,6 +19,7 @@ import org.mockito.Mock; import org.mockito.runners.MockitoJUnitRunner; import org.ovirt.engine.core.bll.interfaces.BackendInternal; +import org.ovirt.engine.core.bll.snapshots.SnapshotsValidator; import org.ovirt.engine.core.common.action.RestoreAllSnapshotsParameters; import org.ovirt.engine.core.common.businessentities.Disk; import org.ovirt.engine.core.common.businessentities.DiskImage; @@ -77,7 +78,7 @@ private StoragePoolDAO storagePoolDAO; @Mock - private SnapshotDao snapshotDao; + protected SnapshotDao snapshotDao; @Mock private VmNetworkInterfaceDao vmNetworkInterfaceDAO; @@ -96,6 +97,7 @@ initSpyCommand(); mockBackend(); mockDaos(); + mockSnapshotValidator(); mockVm(); } @@ -199,6 +201,17 @@ doReturn(storagePoolDAO).when(spyCommand).getStoragePoolDAO(); } + private void mockSnapshotValidator() { + SnapshotsValidator validator = new SnapshotsValidator() { + @Override + protected SnapshotDao getSnapshotDao() { + return snapshotDao; + } + + }; + doReturn(validator).when(spyCommand).createSnapshotValidator(); + } + /** * Mock a VM. */ -- To view, visit http://gerrit.ovirt.org/11446 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ic06cd91e90cbe8ec10ad3e50b98c04796222e813 Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Allon Mureinik <amure...@redhat.com> _______________________________________________ Engine-patches mailing list Engine-patches@ovirt.org http://lists.ovirt.org/mailman/listinfo/engine-patches