Arik Hadas has uploaded a new change for review. Change subject: core: refactoring in UpdateVmVersionCommand ......................................................................
core: refactoring in UpdateVmVersionCommand - extract parameters initialization to separate method - rename removeVmFromPoolParas to removeVmFromPoolParams - prevent possible NPE on getExclusiveLocks Change-Id: Id9626104a21060dcef1a60beb1b83873037f779b Signed-off-by: Arik Hadas <aha...@redhat.com> --- M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/UpdateVmVersionCommand.java 1 file changed, 27 insertions(+), 11 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/68/34068/1 diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/UpdateVmVersionCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/UpdateVmVersionCommand.java index 3be2045..6dab663 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/UpdateVmVersionCommand.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/UpdateVmVersionCommand.java @@ -91,7 +91,7 @@ return failCanDoAction(VdcBllMessages.ACTION_TYPE_FAILED_TEMPLATE_DOES_NOT_EXIST); } - if (getVm().getVmtGuid().equals(getVmTemplate().getId())) { + if (getVmTemplateId().equals(getVm().getVmtGuid())) { return failCanDoAction(VdcBllMessages.ACTION_TYPE_FAILED_VM_ALREADY_IN_LATEST_VERSION); } @@ -115,11 +115,10 @@ if (getVm().getVmPoolId() != null) { getParameters().setVmPoolId(getVm().getVmPoolId()); - RemoveVmFromPoolParameters removeVmFromPoolParas = new RemoveVmFromPoolParameters(getVmId(), false); - removeVmFromPoolParas.setTransactionScopeOption(TransactionScopeOption.RequiresNew); + VdcReturnValueBase result = runInternalActionWithTasksContext( VdcActionType.RemoveVmFromPool, - removeVmFromPoolParas, + buildRemoveVmFromPoolParameters(), getLock()); if (!result.getSucceeded()) { log.errorFormat("Could not detach vm {0} ({1}) from vm-pool {2}.", @@ -130,11 +129,10 @@ } } - RemoveVmParameters removeParams = new RemoveVmParameters(getVmId(), false); - removeParams.setParentCommand(getActionType()); - removeParams.setParentParameters(getParameters()); - removeParams.setEntityInfo(getParameters().getEntityInfo()); - VdcReturnValueBase result = runInternalActionWithTasksContext(VdcActionType.RemoveVm, removeParams, getLock()); + VdcReturnValueBase result = runInternalActionWithTasksContext( + VdcActionType.RemoveVm, + buildRemoveVmParameters(), + getLock()); if (result.getSucceeded()) { if (result.getHasAsyncTasks()) { @@ -144,6 +142,20 @@ } setSucceeded(true); } + } + + private RemoveVmFromPoolParameters buildRemoveVmFromPoolParameters() { + RemoveVmFromPoolParameters parameters = new RemoveVmFromPoolParameters(getVmId(), false); + parameters.setTransactionScopeOption(TransactionScopeOption.RequiresNew); + return parameters; + } + + private RemoveVmParameters buildRemoveVmParameters() { + RemoveVmParameters parameters = new RemoveVmParameters(getVmId(), false); + parameters.setParentCommand(getActionType()); + parameters.setParentParameters(getParameters()); + parameters.setEntityInfo(getParameters().getEntityInfo()); + return parameters; } private void addUpdatedVm() { @@ -230,8 +242,12 @@ @Override protected Map<String, Pair<String, String>> getExclusiveLocks() { - return Collections.singletonMap(getVmId().toString(), - LockMessagesMatchUtil.makeLockingPair(LockingGroup.VM, VdcBllMessages.ACTION_TYPE_FAILED_OBJECT_LOCKED)); + if (getVmId() != null) { + return Collections.singletonMap(getVmId().toString(), + LockMessagesMatchUtil.makeLockingPair(LockingGroup.VM, VdcBllMessages.ACTION_TYPE_FAILED_OBJECT_LOCKED)); + } + + return null; } @Override -- To view, visit http://gerrit.ovirt.org/34068 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Id9626104a21060dcef1a60beb1b83873037f779b 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