Allon Mureinik has uploaded a new change for review.

Change subject: core: Cleanup VmPoolCommandBase#isVmFree
......................................................................

core: Cleanup VmPoolCommandBase#isVmFree

Cleaned up VmPoolCommandBase's isVmFree method to make it more readable:
1. Adopted an early-return paradigm
2. Removed redundant null checks on messages. This method is only called
   from canAttachNonPrestartedVmToUser, which always passes a new
   ArrayList instance.

Change-Id: I2e59cd811d7c318674587df877d29a10d8ef220f
Signed-off-by: Allon Mureinik <amure...@redhat.com>
---
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VmPoolCommandBase.java
1 file changed, 59 insertions(+), 68 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/24/12124/1

diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VmPoolCommandBase.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VmPoolCommandBase.java
index 85d8c92..29b9ee3 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VmPoolCommandBase.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VmPoolCommandBase.java
@@ -15,11 +15,11 @@
 import org.ovirt.engine.core.common.businessentities.Snapshot.SnapshotType;
 import org.ovirt.engine.core.common.businessentities.VM;
 import org.ovirt.engine.core.common.businessentities.VMStatus;
+import org.ovirt.engine.core.common.businessentities.VmPool;
 import org.ovirt.engine.core.common.businessentities.VmPoolMap;
 import org.ovirt.engine.core.common.businessentities.VmType;
 import org.ovirt.engine.core.common.businessentities.storage_pool;
 import org.ovirt.engine.core.common.businessentities.tags;
-import org.ovirt.engine.core.common.businessentities.VmPool;
 import org.ovirt.engine.core.compat.Guid;
 import org.ovirt.engine.core.compat.NGuid;
 import org.ovirt.engine.core.dal.VdcBllMessages;
@@ -152,94 +152,85 @@
     }
 
     /**
-     * Check if specific vm free. Vm considered free if it not attached to 
user and not during trieng
+     * Check if a specific VM is free. A VM is considered free if it isn't 
attached to user and not during trieng
      * @param vmId
      *            The vm id.
      * @param messages
      *            The messages.
-     * @return <c>true</c> if [is vm free] [the specified vm id]; otherwise, 
<c>false</c>.
+     * @return <code>true</code> if [is vm free] [the specified vm id]; 
otherwise, <code>false</code>.
      */
     protected static boolean isVmFree(Guid vmId, ArrayList<String> messages) {
-        boolean returnValue = true;
-
         // check that there isn't another user already attached to this VM:
         if (vmAssignedToUser(vmId, messages)) {
-            returnValue = false;
+            return failVmFree(messages);
         }
 
         // check that vm can be run:
-        else if (!canRunPoolVm(vmId, messages)) {
-            returnValue = false;
+        if (!canRunPoolVm(vmId, messages)) {
+            return failVmFree(messages);
         }
 
         // check vm images:
-        else {
-            SnapshotsValidator snapshotsValidator = new SnapshotsValidator();
-            ValidationResult vmDuringSnapshotResult = 
snapshotsValidator.vmNotDuringSnapshot(vmId);
-            ValidationResult vmInPreviewResult = 
snapshotsValidator.vmNotInPreview(vmId);
-            if (!vmDuringSnapshotResult.isValid()) {
-                messages.add(vmDuringSnapshotResult.getMessage().name());
-                returnValue = false;
-            } else if (!vmInPreviewResult.isValid()) {
-                messages.add(vmInPreviewResult.getMessage().name());
-                returnValue = false;
-            } else {
-                List<Disk> disks = 
DbFacade.getInstance().getDiskDao().getAllForVm(vmId);
-                List<DiskImage> vmImages = 
ImagesHandler.filterImageDisks(disks, true, true);
-                Guid storageDomainId = vmImages.size() > 0 ? 
vmImages.get(0).getstorage_ids().get(0) : Guid.Empty;
-                VM vm = DbFacade.getInstance().getVmDao().get(vmId);
-                storage_pool sp = 
DbFacade.getInstance().getStoragePoolDao().get(vm.getStoragePoolId());
-
-                ValidationResult spUpResult = new 
StoragePoolValidator(sp).isUp();
-                if (!spUpResult.isValid()) {
-                    messages.add(spUpResult.getMessage().name());
-                    returnValue = false;
-                }
-
-                if (returnValue) {
-                    returnValue =
-                        ImagesHandler.PerformImagesChecks(
-                                messages,
-                                vm.getStoragePoolId(),
-                                storageDomainId,
-                                false,
-                                true,
-                                false,
-                                false,
-                                !Guid.Empty.equals(storageDomainId),
-                                true,
-                                disks);
-                }
-
-                if (returnValue) {
-                    ValidationResult vmNotLockResult = new 
VmValidator(vm).vmNotLocked();
-                    if (!vmNotLockResult.isValid()) {
-                        messages.add(vmNotLockResult.getMessage().name());
-                        returnValue = false;
-                    }
-                }
-            }
-
-            if (!returnValue) {
-                if (messages != null) {
-                    
messages.add(VdcBllMessages.VAR__TYPE__DESKTOP_POOL.toString());
-                    
messages.add(VdcBllMessages.VAR__ACTION__ATTACH_DESKTOP_TO.toString());
-                }
-            }
+        SnapshotsValidator snapshotsValidator = new SnapshotsValidator();
+        ValidationResult vmDuringSnapshotResult = 
snapshotsValidator.vmNotDuringSnapshot(vmId);
+        if (!vmDuringSnapshotResult.isValid()) {
+            return failVmFree(messages, 
vmDuringSnapshotResult.getMessage().name());
         }
 
-        return returnValue;
+        ValidationResult vmInPreviewResult = 
snapshotsValidator.vmNotInPreview(vmId);
+        if (!vmInPreviewResult.isValid()) {
+            return failVmFree(messages, vmInPreviewResult.getMessage().name());
+        }
+
+        List<Disk> disks = 
DbFacade.getInstance().getDiskDao().getAllForVm(vmId);
+        List<DiskImage> vmImages = ImagesHandler.filterImageDisks(disks, true, 
true);
+        Guid storageDomainId = vmImages.size() > 0 ? 
vmImages.get(0).getstorage_ids().get(0) : Guid.Empty;
+        VM vm = DbFacade.getInstance().getVmDao().get(vmId);
+        storage_pool sp = 
DbFacade.getInstance().getStoragePoolDao().get(vm.getStoragePoolId());
+
+        ValidationResult spUpResult = new StoragePoolValidator(sp).isUp();
+        if (!spUpResult.isValid()) {
+            return failVmFree(messages, spUpResult.getMessage().name());
+        }
+
+        if (!ImagesHandler.PerformImagesChecks(
+                            messages,
+                            vm.getStoragePoolId(),
+                            storageDomainId,
+                            false,
+                            true,
+                            false,
+                            false,
+                            !Guid.Empty.equals(storageDomainId),
+                            true,
+                            disks)) {
+            return failVmFree(messages);
+        }
+
+        ValidationResult vmNotLockResult = new VmValidator(vm).vmNotLocked();
+        if (!vmNotLockResult.isValid()) {
+            return failVmFree(messages, vmNotLockResult.getMessage().name());
+        }
+
+        return true;
+    }
+
+    private static boolean failVmFree(List<String> messages, String... 
messagesToAdd) {
+        for (String messageToAdd : messagesToAdd) {
+            messages.add(messageToAdd);
+        }
+
+        messages.add(VdcBllMessages.VAR__TYPE__DESKTOP_POOL.toString());
+        messages.add(VdcBllMessages.VAR__ACTION__ATTACH_DESKTOP_TO.toString());
+        return false;
     }
 
     private static boolean vmAssignedToUser(Guid vmId, ArrayList<String> 
messages) {
-        boolean vmAssignedToUser = false;
         if (DbFacade.getInstance().getDbUserDao().getAllForVm(vmId).size() > 
0) {
-            vmAssignedToUser = true;
-            if (messages != null) {
-                
messages.add(VdcBllMessages.VM_POOL_CANNOT_ADD_VM_WITH_USERS_ATTACHED_TO_POOL.toString());
-            }
+            
messages.add(VdcBllMessages.VM_POOL_CANNOT_ADD_VM_WITH_USERS_ATTACHED_TO_POOL.toString());
+            return true;
         }
-        return vmAssignedToUser;
+        return false;
     }
 
     protected static boolean canRunPoolVm(Guid vmId, ArrayList<String> 
messages) {


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

Gerrit-MessageType: newchange
Gerrit-Change-Id: I2e59cd811d7c318674587df877d29a10d8ef220f
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