Martin Betak has uploaded a new change for review.

Change subject: core: Fix NPE on ChangeCD with 'Down' VM
......................................................................

core: Fix NPE on ChangeCD with 'Down' VM

Moved invocation of ImagesHandler.cdPathWindowsToLinux after check that
assures vm is running and storage domain available.

Change-Id: Ie3bf10dbeb8dd645a515dc140bd9081dc1d1acab
Bug-Url: https://bugzilla.redhat.com/show_bug.cgi?id=1067407
Signed-off-by: Martin Betak <mbe...@redhat.com>
---
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ChangeDiskCommand.java
1 file changed, 19 insertions(+), 21 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/27/31927/1

diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ChangeDiskCommand.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ChangeDiskCommand.java
index 20ea766..6da4173 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ChangeDiskCommand.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ChangeDiskCommand.java
@@ -30,21 +30,17 @@
 
     @Override
     protected boolean canDoAction() {
-        boolean retValue = true;
         if (getVm() == null) {
-            
addCanDoActionMessage(VdcBllMessages.ACTION_TYPE_FAILED_VM_NOT_EXIST);
-            retValue = false;
+            return 
failCanDoAction(VdcBllMessages.ACTION_TYPE_FAILED_VM_NOT_EXIST);
         }
 
-        if (retValue && !canRunActionOnNonManagedVm()) {
-            retValue = false;
-        } else {
-            cdImagePath = 
ImagesHandler.cdPathWindowsToLinux(getParameters().getCdImagePath(), 
getVm().getStoragePoolId(), getVm().getRunOnVds());
+        if (!canRunActionOnNonManagedVm()) {
+            return false;
         }
 
-        if (retValue && !getVm().isRunningOrPaused()) {
-            setSucceeded(false);
-            retValue = false;
+        cdImagePath = getParameters().getCdImagePath();
+
+        if (!getVm().isRunningOrPaused()) {
             addCanDoActionMessage(VdcBllMessages.VAR__TYPE__VM);
 
             // An empty 'cdImagePath' means eject CD
@@ -53,24 +49,26 @@
             } else {
                 addCanDoActionMessage(VdcBllMessages.VAR__ACTION__EJECT_CD);
             }
-            
failCanDoAction(VdcBllMessages.ACTION_TYPE_FAILED_VM_STATUS_ILLEGAL, 
LocalizedVmStatus.from(getVm().getStatus()));
-        } else if 
((IsoDomainListSyncronizer.getInstance().findActiveISODomain(getVm().getStoragePoolId())
 == null)
+            return 
failCanDoAction(VdcBllMessages.ACTION_TYPE_FAILED_VM_STATUS_ILLEGAL, 
LocalizedVmStatus.from(getVm().getStatus()));
+        }
+
+        if 
((IsoDomainListSyncronizer.getInstance().findActiveISODomain(getVm().getStoragePoolId())
 == null)
                 && !StringUtils.isEmpty(cdImagePath)) {
             addCanDoActionMessage(VdcBllMessages.VAR__ACTION__CHANGE_CD);
-            
addCanDoActionMessage(VdcBllMessages.VM_CANNOT_WITHOUT_ACTIVE_STORAGE_DOMAIN_ISO);
-            setSucceeded(false);
-            retValue = false;
-        } else if (StringUtils.isNotEmpty(cdImagePath) && 
!cdImagePath.endsWith(ValidationUtils.ISO_SUFFIX)) {
-            addCanDoActionMessage(VdcBllMessages.VAR__ACTION__CHANGE_CD);
-            
addCanDoActionMessage(VdcBllMessages.ACTION_TYPE_FAILED_INVALID_CDROM_DISK_FORMAT);
-            setSucceeded(false);
-            retValue = false;
+            return 
failCanDoAction(VdcBllMessages.VM_CANNOT_WITHOUT_ACTIVE_STORAGE_DOMAIN_ISO);
         }
-        return retValue;
+
+        if (StringUtils.isNotEmpty(cdImagePath) && 
!cdImagePath.endsWith(ValidationUtils.ISO_SUFFIX)) {
+            addCanDoActionMessage(VdcBllMessages.VAR__ACTION__CHANGE_CD);
+            return 
failCanDoAction(VdcBllMessages.ACTION_TYPE_FAILED_INVALID_CDROM_DISK_FORMAT);
+        }
+
+        return true;
     }
 
     @Override
     protected void perform() {
+        cdImagePath = 
ImagesHandler.cdPathWindowsToLinux(getParameters().getCdImagePath(), 
getVm().getStoragePoolId(), getVm().getRunOnVds());
         setActionReturnValue(runVdsCommand(VDSCommandType.ChangeDisk,
                         new ChangeDiskVDSCommandParameters(getVdsId(), 
getVm().getId(), cdImagePath))
                 .getReturnValue());


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

Gerrit-MessageType: newchange
Gerrit-Change-Id: Ie3bf10dbeb8dd645a515dc140bd9081dc1d1acab
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: ovirt-engine-3.5
Gerrit-Owner: Martin Betak <mbe...@redhat.com>
_______________________________________________
Engine-patches mailing list
Engine-patches@ovirt.org
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to