Arik Hadas has uploaded a new change for review.

Change subject: core: [WIP] cleanup CreateVmVDSCommand
......................................................................

core: [WIP] cleanup CreateVmVDSCommand

- Refactor CreateVmVDSCommand#ExecuteVdsIdCommand method to be with less
  nested levels and to have more readable structure
- Reduce duplicate code at CreateVmVDSCommand#ExecuteVdsIdCommand by
  extracting the variability to external method: initCreateVDSCommand
- Rename private methods names in this class to start with lowercase

Change-Id: Id1a36e03cbc0280c5927889c8dd1ff9c497241e4
Signed-off-by: Arik Hadas <aha...@redhat.com>
---
M 
backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/CreateVmVDSCommand.java
1 file changed, 55 insertions(+), 63 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/18/15118/1

diff --git 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/CreateVmVDSCommand.java
 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/CreateVmVDSCommand.java
index 84ce73e..ecba262 100644
--- 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/CreateVmVDSCommand.java
+++ 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/CreateVmVDSCommand.java
@@ -28,71 +28,63 @@
 
     @Override
     protected void ExecuteVdsIdCommand() {
+        if (_vdsManager == null) {
+            getVDSReturnValue().setSucceeded(false);
+            return;
+        }
 
-        CreateVDSCommand<?> command = null;
-        try {
-            if (_vdsManager != null) {
-                final VM vm = getParameters().getVm();
-                if (CanExecute()) {
-                    boolean canExecute = 
ResourceManager.getInstance().AddAsyncRunningVm(
-                                vm.getId());
-                    if (canExecute) {
-                        if (isSysprepUsed(vm)) {
-                            // use answer file to run after sysprep.
-                            CreateVmFromSysPrepVDSCommandParameters 
createVmFromSysPrepParam =
-                                    new 
CreateVmFromSysPrepVDSCommandParameters(
-                                            getVdsId(),
-                                            vm,
-                                            vm.getName(),
-                                            vm.getVmDomain());
-                            
createVmFromSysPrepParam.setSysPrepParams(getParameters().getSysPrepParams());
-                            command =
-                                    new 
CreateVmFromSysPrepVDSCommand<CreateVmFromSysPrepVDSCommandParameters>(createVmFromSysPrepParam);
-                            command.execute();
-                            if (command.getVDSReturnValue().getSucceeded()) {
-                                vm.setInitialized(true);
-                                saveSetInitializedToDb(vm.getId());
-                            } else {
-                                HandleCommandResult(command);
+        final VM vm = getParameters().getVm();
+        if (canExecute() && 
ResourceManager.getInstance().AddAsyncRunningVm(vm.getId())) {
+            CreateVDSCommand<?> command = initCreateVDSCommand(vm);
+            try {
+                command.execute();
+                if (command.getVDSReturnValue().getSucceeded()) {
+                    vm.setInitialized(true);
+                    saveSetInitializedToDb(vm.getId());
+
+                    
TransactionSupport.executeInScope(TransactionScopeOption.Required,
+                            new TransactionMethod<Object>() {
+                        @Override
+                        public Object runInTransaction() {
+                            handleVdsInformation();
+                            vm.setRunOnVds(getVdsId());
+                            if (getParameters().isClearHibernationVolumes()) {
+                                vm.setHibernationVolHandle(StringUtils.EMPTY);
                             }
-                        } else {
-                            // normal run.
-                            command = new 
CreateVDSCommand<CreateVmVDSCommandParameters>(getParameters());
-                            command.execute();
-                            HandleCommandResult(command);
-                            vm.setInitialized(true);
-                            saveSetInitializedToDb(vm.getId());
+                            
DbFacade.getInstance().getVmDynamicDao().update(vm.getDynamicData());
+                            return null;
                         }
-
-                        if (command.getVDSReturnValue().getSucceeded()) {
-                            
TransactionSupport.executeInScope(TransactionScopeOption.Required,
-                                    new TransactionMethod<Object>() {
-                                        @Override
-                                        public Object runInTransaction() {
-                                            HandleVdsInformation();
-                                            vm.setRunOnVds(getVdsId());
-                                            if 
(getParameters().isClearHibernationVolumes()) {
-                                                
vm.setHibernationVolHandle(StringUtils.EMPTY);
-                                            }
-                                            
DbFacade.getInstance().getVmDynamicDao().update(vm.getDynamicData());
-                                            return null;
-                                        }
-                                    });
-                        } else {
-                            
ResourceManager.getInstance().RemoveAsyncRunningVm(getParameters().getVmId());
-                        }
-                    }
+                    });
+                } else {
+                    handleCommandResult(command);
+                    
ResourceManager.getInstance().RemoveAsyncRunningVm(getParameters().getVmId());
                 }
-                getVDSReturnValue().setReturnValue(vm.getStatus());
-            } else {
-                getVDSReturnValue().setSucceeded(false);
+            } catch (java.lang.Exception e) {
+                log.error("Error in excuting CreateVmVDSCommand", e);
+                if (!command.getVDSReturnValue().getSucceeded()) {
+                    
ResourceManager.getInstance().RemoveAsyncRunningVm(getParameters().getVmId());
+                }
+                throw new RuntimeException(e);
             }
-        } catch (java.lang.Exception e) {
-            log.error("Error in excuting CreateVmVDSCommand", e);
-            if (command == null || 
!command.getVDSReturnValue().getSucceeded()) {
-                
ResourceManager.getInstance().RemoveAsyncRunningVm(getParameters().getVmId());
-            }
-            throw new RuntimeException(e);
+        }
+        getVDSReturnValue().setReturnValue(vm.getStatus());
+    }
+
+    private CreateVDSCommand<?> initCreateVDSCommand(VM vm) {
+        if (isSysprepUsed(vm)) {
+            // use answer file to run after sysprep.
+            CreateVmFromSysPrepVDSCommandParameters createVmFromSysPrepParam =
+                    new CreateVmFromSysPrepVDSCommandParameters(
+                            getVdsId(),
+                            vm,
+                            vm.getName(),
+                            vm.getVmDomain());
+            
createVmFromSysPrepParam.setSysPrepParams(getParameters().getSysPrepParams());
+            return new 
CreateVmFromSysPrepVDSCommand<CreateVmFromSysPrepVDSCommandParameters>(createVmFromSysPrepParam);
+        }
+        else {
+            // normal run.
+            return new 
CreateVDSCommand<CreateVmVDSCommandParameters>(getParameters());
         }
     }
 
@@ -105,7 +97,7 @@
                 && StringUtils.isEmpty(vm.getFloppyPath());
     }
 
-    private void HandleVdsInformation() {
+    private void handleVdsInformation() {
         DbFacade.getInstance()
                 .getVdsDynamicDao()
                 .updatePartialVdsDynamicCalc(getVds().getId(),
@@ -117,7 +109,7 @@
 
     }
 
-    private boolean CanExecute() {
+    private boolean canExecute() {
 
         Guid guid = getParameters().getVm().getId();
         String vmName = getParameters().getVm().getName();
@@ -149,7 +141,7 @@
         return true;
     }
 
-    private void HandleCommandResult(CreateVDSCommand<?> command) {
+    private void handleCommandResult(CreateVDSCommand<?> command) {
         if (!command.getVDSReturnValue().getSucceeded() && 
command.getVDSReturnValue().getExceptionObject() != null) {
             if (command.getVDSReturnValue().getExceptionObject() instanceof 
VDSGenericException) {
                 log.errorFormat("VDS::create Failed creating vm '{0}' in vds = 
{1} : {2} error = {3}",


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

Gerrit-MessageType: newchange
Gerrit-Change-Id: Id1a36e03cbc0280c5927889c8dd1ff9c497241e4
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Arik Hadas <aha...@redhat.com>
_______________________________________________
Engine-patches mailing list
Engine-patches@ovirt.org
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to