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

Reply via email to