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