Arik Hadas has uploaded a new change for review. Change subject: core: change shared-lock msg of AddVmFromTemplate ......................................................................
core: change shared-lock msg of AddVmFromTemplate This patch adds a custom error message for the scenario in which a command fails to run because of the shared-lock that AddVmFromTemplate command acquires on its given template. The new error message says that the command cannot be executed because the template is used for creation of VM, and shows the name of that VM. Change-Id: I9fcc4d70bd5ca28c87ca7834bf2b699da5140fc5 Signed-off-by: Arik Hadas <[email protected]> --- M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddVmFromTemplateCommand.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/CommandBase.java M backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dal/VdcBllMessages.java M backend/manager/modules/dal/src/main/resources/bundles/AppErrors.properties M frontend/webadmin/modules/frontend/src/main/java/org/ovirt/engine/ui/frontend/AppErrors.java M frontend/webadmin/modules/userportal-gwtp/src/main/resources/org/ovirt/engine/ui/frontend/AppErrors.properties M frontend/webadmin/modules/webadmin/src/main/resources/org/ovirt/engine/ui/frontend/AppErrors.properties 7 files changed, 39 insertions(+), 2 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/88/12488/1 diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddVmFromTemplateCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddVmFromTemplateCommand.java index 4897d14..2af2328 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddVmFromTemplateCommand.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddVmFromTemplateCommand.java @@ -14,8 +14,10 @@ import org.ovirt.engine.core.common.businessentities.VMStatus; import org.ovirt.engine.core.common.errors.VdcBLLException; import org.ovirt.engine.core.common.errors.VdcBllErrors; +import org.ovirt.engine.core.common.locks.LockingGroup; import org.ovirt.engine.core.common.utils.Pair; import org.ovirt.engine.core.compat.Guid; +import org.ovirt.engine.core.dal.VdcBllMessages; import org.ovirt.engine.core.dal.dbbroker.DbFacade; @LockIdNameAttribute(isReleaseAtEndOfExecute = false) @@ -42,10 +44,17 @@ if (parentLocks != null) { locks.putAll(parentLocks); } - locks.put(getVmTemplateId().toString(), LockMessagesMatchUtil.TEMPLATE); + locks.put(getVmTemplateId().toString(), + new Pair<String, String>(LockingGroup.TEMPLATE.name(), createTemplateSharedLockMessage())); return locks; } + private String createTemplateSharedLockMessage() { + return new StringBuilder(VdcBllMessages.ACTION_TYPE_FAILED_TEMPLATE_IS_USED_FOR_CREATE_VM.name()) + .append(String.format("$VmName %1$s", getVmName())) + .toString(); + } + @Override protected void executeVmCommand() { super.executeVmCommand(); diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/CommandBase.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/CommandBase.java index 4e59b72..832f5b5 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/CommandBase.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/CommandBase.java @@ -5,6 +5,7 @@ import java.util.Arrays; import java.util.Collection; import java.util.HashMap; +import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Set; @@ -1502,7 +1503,8 @@ commandLock = lock; } else { log.infoFormat("Failed to Acquire Lock to object {0}", lock); - getReturnValue().getCanDoActionMessages().addAll(lockAcquireResult.getSecond()); + getReturnValue().getCanDoActionMessages() + .addAll(extractVariableDeclarations(lockAcquireResult.getSecond())); return false; } } @@ -1510,6 +1512,25 @@ return true; } + /** + * This method gets iterable collection of strings that might contain + * variable declarations inside them, and return a new List in which + * every variable declaration is extracted to a separate string in + * order to conform the convention of the can-do-action messages. + * for example: + * "ACTION_TYPE_FAILED_TEMPLATE_IS_USED_FOR_CREATE_VM$VmName MyVm" + * will be splited to 2 strings: + * "ACTION_TYPE_FAILED_TEMPLATE_IS_USED_FOR_CREATE_VM" and "$VmName MyVm" + */ + protected List<String> extractVariableDeclarations(Iterable<String> coll) { + List<String> result = new ArrayList<String>(); + Iterator<String> iter = coll.iterator(); + while(iter.hasNext()) { + result.addAll(Arrays.asList(iter.next().split("(?=\\$)"))); + } + return result; + } + private EngineLock buildLock() { EngineLock lock = null; Map<String, Pair<String, String>> exclusiveLocks = getExclusiveLocks(); diff --git a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dal/VdcBllMessages.java b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dal/VdcBllMessages.java index e07f6b7..abbfbed 100644 --- a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dal/VdcBllMessages.java +++ b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dal/VdcBllMessages.java @@ -528,6 +528,7 @@ CAN_DO_ACTION_GENERAL_FAILURE, CAN_DO_ACTION_DATABASE_CONNECTION_FAILURE, ACTION_TYPE_FAILED_OBJECT_LOCKED, + ACTION_TYPE_FAILED_TEMPLATE_IS_USED_FOR_CREATE_VM, VM_OR_TEMPLATE_ILLEGAL_PRIORITY_VALUE, NETWORK_ADDR_IN_STATIC_IP_BAD_FORMAT, diff --git a/backend/manager/modules/dal/src/main/resources/bundles/AppErrors.properties b/backend/manager/modules/dal/src/main/resources/bundles/AppErrors.properties index daf2018..3d1c4f8 100644 --- a/backend/manager/modules/dal/src/main/resources/bundles/AppErrors.properties +++ b/backend/manager/modules/dal/src/main/resources/bundles/AppErrors.properties @@ -496,6 +496,7 @@ ACTION_TYPE_FAILED_DATA_CENTER_VERSION_DOESNT_SUPPORT_LIVE_SNAPSHOT=Cannot ${action} ${type}. Selected data center compatibility version does not support live snapshot. NETWORK_ADDR_MANDATORY_IN_STATIC_IP=Netwrok address must be specify when using static ip ACTION_TYPE_FAILED_OBJECT_LOCKED=Cannot ${action} ${type}. Related operation is currently in progress. Please try again later. +ACTION_TYPE_FAILED_TEMPLATE_IS_USED_FOR_CREATE_VM=Cannot ${action} ${type}. This template is currently in use to create VM ${VmName}. Please try again later. NETWORK_BOND_HAVE_ATTACHED_VLANS=Bond attached to vlan, remove bonds vlan first NETWORK_INTERFACE_CONNECT_TO_VLAN=Cannot attach non vlan network to vlan interface NETWORK_CANNOT_REMOVE_NETWORK_IN_USE_BY_VM=Cannot remove network '${NetworkName}', it's in use by a VM diff --git a/frontend/webadmin/modules/frontend/src/main/java/org/ovirt/engine/ui/frontend/AppErrors.java b/frontend/webadmin/modules/frontend/src/main/java/org/ovirt/engine/ui/frontend/AppErrors.java index cddb23d..b20cf1c 100644 --- a/frontend/webadmin/modules/frontend/src/main/java/org/ovirt/engine/ui/frontend/AppErrors.java +++ b/frontend/webadmin/modules/frontend/src/main/java/org/ovirt/engine/ui/frontend/AppErrors.java @@ -1336,6 +1336,9 @@ @DefaultStringValue("Cannot ${action} ${type}. Related operation is currently in progress. Please try again later.") String ACTION_TYPE_FAILED_OBJECT_LOCKED(); + @DefaultStringValue("Cannot ${action} ${type}. This template is currently in use to create VM ${VmName}. Please try again later.") + String ACTION_TYPE_FAILED_TEMPLATE_IS_USED_FOR_CREATE_VM(); + @DefaultStringValue("Bond attached to vlan, remove bonds vlan first") String NETWORK_BOND_HAVE_ATTACHED_VLANS(); diff --git a/frontend/webadmin/modules/userportal-gwtp/src/main/resources/org/ovirt/engine/ui/frontend/AppErrors.properties b/frontend/webadmin/modules/userportal-gwtp/src/main/resources/org/ovirt/engine/ui/frontend/AppErrors.properties index 663a1bf..3e0cbed 100644 --- a/frontend/webadmin/modules/userportal-gwtp/src/main/resources/org/ovirt/engine/ui/frontend/AppErrors.properties +++ b/frontend/webadmin/modules/userportal-gwtp/src/main/resources/org/ovirt/engine/ui/frontend/AppErrors.properties @@ -493,6 +493,7 @@ ACTION_TYPE_FAILED_DATA_CENTER_VERSION_DOESNT_SUPPORT_LIVE_SNAPSHOT=Cannot ${action} ${type}. Selected data center compatibility version does not support live snapshot. NETWORK_ADDR_MANDATORY_IN_STATIC_IP=Network address must be specified when using static ip ACTION_TYPE_FAILED_OBJECT_LOCKED=Cannot ${action} ${type}. Related operation is currently in progress. Please try again later. +ACTION_TYPE_FAILED_TEMPLATE_IS_USED_FOR_CREATE_VM=Cannot ${action} ${type}. This template is currently in use to create VM ${VmName}. Please try again later. NETWORK_BOND_HAVE_ATTACHED_VLANS=Bond attached to vlan, remove bonds vlan first NETWORK_INTERFACE_CONNECT_TO_VLAN=Cannot attach non vlan network to vlan interface NETWORK_CANNOT_REMOVE_NETWORK_IN_USE_BY_VM=Cannot remove network '${NetworkName}', it's in use by a VM diff --git a/frontend/webadmin/modules/webadmin/src/main/resources/org/ovirt/engine/ui/frontend/AppErrors.properties b/frontend/webadmin/modules/webadmin/src/main/resources/org/ovirt/engine/ui/frontend/AppErrors.properties index 37428ad..841b093 100644 --- a/frontend/webadmin/modules/webadmin/src/main/resources/org/ovirt/engine/ui/frontend/AppErrors.properties +++ b/frontend/webadmin/modules/webadmin/src/main/resources/org/ovirt/engine/ui/frontend/AppErrors.properties @@ -490,6 +490,7 @@ ACTION_TYPE_FAILED_DATA_CENTER_VERSION_DOESNT_SUPPORT_LIVE_SNAPSHOT=Cannot ${action} ${type}. Selected data center compatibility version does not support live snapshot. NETWORK_ADDR_MANDATORY_IN_STATIC_IP=Network address must be specified when using static ip ACTION_TYPE_FAILED_OBJECT_LOCKED=Cannot ${action} ${type}. Related operation is currently in progress. Please try again later. +ACTION_TYPE_FAILED_TEMPLATE_IS_USED_FOR_CREATE_VM=Cannot ${action} ${type}. This template is currently in use to create VM ${VmName}. Please try again later. NETWORK_BOND_HAVE_ATTACHED_VLANS=Bond attached to vlan, remove bonds vlan first NETWORK_INTERFACE_CONNECT_TO_VLAN=Cannot attach non vlan network to vlan interface NETWORK_CANNOT_REMOVE_NETWORK_IN_USE_BY_VM=Cannot remove network '${NetworkName}', it's in use by a VM -- To view, visit http://gerrit.ovirt.org/12488 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I9fcc4d70bd5ca28c87ca7834bf2b699da5140fc5 Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Arik Hadas <[email protected]> _______________________________________________ Engine-patches mailing list [email protected] http://lists.ovirt.org/mailman/listinfo/engine-patches
