Arik Hadas has uploaded a new change for review. Change subject: core: canDoAction msg of locked disk being removed ......................................................................
core: canDoAction msg of locked disk being removed Change the can-do-action message which is attached to locks that are taken when removing disk in order to make it more informative than the default generic message that is being returned when those locks can't be acquired. This change of the can-do-action message allows us not to pass the locks from RemoveDiskCommand to RemoveImageCommand - as those locks can remain until the end of the execution of RemoveDiskCommand, there's no hurry to free them anymore. Change-Id: Ib20a2be29d01c04497473d168e7abbe7d1bf2db8 Signed-off-by: Arik Hadas <[email protected]> --- M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RemoveDiskCommand.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RemoveImageCommand.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, 25 insertions(+), 9 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/09/13009/1 diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RemoveDiskCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RemoveDiskCommand.java index 1e9208a..5c3df5e 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RemoveDiskCommand.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RemoveDiskCommand.java @@ -36,6 +36,7 @@ import org.ovirt.engine.core.common.businessentities.VmTemplate; import org.ovirt.engine.core.common.businessentities.VmTemplateStatus; import org.ovirt.engine.core.common.businessentities.storage_pool; +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.compat.TransactionScopeOption; @@ -60,6 +61,7 @@ private Map<String, Pair<String, String>> sharedLockMap; private List<PermissionSubject> permsList = null; private List<VM> listVms; + private String cachedDiskIsBeingRemovedLockMessage; public RemoveDiskCommand(T parameters) { super(parameters); @@ -154,12 +156,14 @@ if (!listVms.isEmpty()) { sharedLockMap = new HashMap<String, Pair<String, String>>(); for (VM vm : listVms) { - sharedLockMap.put(vm.getId().toString(), LockMessagesMatchUtil.VM); + sharedLockMap.put(vm.getId().toString(), + new Pair<String, String>(LockingGroup.VM.name(), getDiskIsBeingRemovedLockMessage())); } } } else if (getDisk().getVmEntityType() == VmEntityType.TEMPLATE) { setVmTemplateIdParameter(); - sharedLockMap = Collections.singletonMap(getVmTemplateId().toString(), LockMessagesMatchUtil.TEMPLATE); + sharedLockMap = Collections.singletonMap(getVmTemplateId().toString(), + new Pair<String, String>(LockingGroup.TEMPLATE.name(), getDiskIsBeingRemovedLockMessage())); } } @@ -289,9 +293,7 @@ VdcReturnValueBase vdcReturnValue = Backend.getInstance().runInternalAction(VdcActionType.RemoveImage, p, - ExecutionHandler.createDefaultContexForTasks(getExecutionContext(), getLock())); - // Setting lock to null because the lock is released in the child command (RemoveImage) - setLock(null); + ExecutionHandler.createDefaultContexForTasks(getExecutionContext())); if (vdcReturnValue.getSucceeded()) { getReturnValue().getTaskIdList().addAll(vdcReturnValue.getInternalTaskIdList()); setSucceeded(vdcReturnValue.getSucceeded()); @@ -363,7 +365,17 @@ @Override protected Map<String, Pair<String, String>> getExclusiveLocks() { - return Collections.singletonMap(getParameters().getEntityId().toString(), LockMessagesMatchUtil.DISK); + return Collections.singletonMap(getParameters().getEntityId().toString(), + new Pair<String, String>(LockingGroup.DISK.name(), getDiskIsBeingRemovedLockMessage())); + } + + private String getDiskIsBeingRemovedLockMessage() { + if (cachedDiskIsBeingRemovedLockMessage == null) { + cachedDiskIsBeingRemovedLockMessage = new StringBuilder(VdcBllMessages.ACTION_TYPE_FAILED_DISK_IS_BEING_REMOVED.name()) + .append(String.format("$DiskName %1$s", getDiskAlias())) + .toString(); + } + return cachedDiskIsBeingRemovedLockMessage; } @Override diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RemoveImageCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RemoveImageCommand.java index 34a7132..fc334ca 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RemoveImageCommand.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RemoveImageCommand.java @@ -293,9 +293,6 @@ getDiskImage().setImageStatus(ImageStatus.ILLEGAL); lockImageWithCompensation(); } - // Releasing the lock for cases it was set by the parent command. The lock can be released because the image - // status was already changed to lock. - freeLock(); VDSReturnValue returnValue = runVdsCommand(VDSCommandType.DeleteImageGroup, new DeleteImageGroupVDSCommandParameters(getDiskImage().getStoragePoolId().getValue(), getStorageDomainId().getValue(), getDiskImage().getId() 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 3139274..98b2f7b 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 @@ -531,6 +531,7 @@ CAN_DO_ACTION_DATABASE_CONNECTION_FAILURE, ACTION_TYPE_FAILED_OBJECT_LOCKED, ACTION_TYPE_FAILED_TEMPLATE_IS_USED_FOR_CREATE_VM, + ACTION_TYPE_FAILED_DISK_IS_BEING_REMOVED, 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 ff3396e..b3fe6b8 100644 --- a/backend/manager/modules/dal/src/main/resources/bundles/AppErrors.properties +++ b/backend/manager/modules/dal/src/main/resources/bundles/AppErrors.properties @@ -498,6 +498,7 @@ 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}. +ACTION_TYPE_FAILED_DISK_IS_BEING_REMOVED=Cannot ${action} ${type}. Disk ${DiskName} is being removed. 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 8a14264..b929987 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 @@ -1342,6 +1342,9 @@ @DefaultStringValue("Cannot ${action} ${type}. This template is currently in use to create VM ${VmName}.") String ACTION_TYPE_FAILED_TEMPLATE_IS_USED_FOR_CREATE_VM(); + @DefaultStringValue("Cannot ${action} ${type}. Disk ${DiskName} is being removed.") + String ACTION_TYPE_FAILED_DISK_IS_BEING_REMOVED(); + @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 94c2cb0..a9cc3ca 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 @@ -495,6 +495,7 @@ 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}. +ACTION_TYPE_FAILED_DISK_IS_BEING_REMOVED=Cannot ${action} ${type}. Disk ${DiskName} is being removed. 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 387a7f8..e4725ed 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 @@ -492,6 +492,7 @@ 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}. +ACTION_TYPE_FAILED_DISK_IS_BEING_REMOVED=Cannot ${action} ${type}. Disk ${DiskName} is being removed. 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/13009 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ib20a2be29d01c04497473d168e7abbe7d1bf2db8 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
