Asaf Shakarchi has uploaded a new change for review. Change subject: core: Forbid attaching a locked disk to a VM (#856137) ......................................................................
core: Forbid attaching a locked disk to a VM (#856137) - Forbid attaching a locked disk to a VM. - Replaced message key 'ACTION_TYPE_FAILED_VM_IMAGE_IS_LOCKED' which was intended for many disks to 'ACTION_TYPE_FAILED_VM_IMAGES_ARE_LOCKED as it's more appropriate. - Added a new messge key (ACTION_TYPE_FAILED_VM_IMAGES_ARE_LOCKED) for single disk. Change-Id: I109654547b68da245a5fdc2b2188feedd45c2ca7 Signed-off-by: Asaf Shakarchi <a...@redhat.com> --- M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddDiskCommand.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AttachDiskToVmCommand.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ImagesHandler.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/MoveOrCopyDiskCommand.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RunVmCommand.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 10 files changed, 25 insertions(+), 12 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/67/8167/1 diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddDiskCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddDiskCommand.java index 4242fd6..bf3488e 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddDiskCommand.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddDiskCommand.java @@ -81,7 +81,7 @@ VM vm = getVm(); if (returnValue && (vm != null && vm.getstatus() == VMStatus.ImageLocked)) { returnValue = false; - addCanDoActionMessage(VdcBllMessages.ACTION_TYPE_FAILED_VM_IMAGE_IS_LOCKED); + addCanDoActionMessage(VdcBllMessages.ACTION_TYPE_FAILED_VM_IMAGES_ARE_LOCKED); } else { // if user sent drive check that its not in use returnValue = returnValue && (vm == null || isDiskCanBeAddedToVm(getParameters().getDiskInfo())); diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AttachDiskToVmCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AttachDiskToVmCommand.java index b192090..bfa23cb 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AttachDiskToVmCommand.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AttachDiskToVmCommand.java @@ -6,9 +6,9 @@ import java.util.Map; import org.ovirt.engine.core.bll.snapshots.SnapshotsValidator; +import org.ovirt.engine.core.bll.utils.PermissionSubject; import org.ovirt.engine.core.bll.utils.VmDeviceUtils; import org.ovirt.engine.core.common.AuditLogType; -import org.ovirt.engine.core.bll.utils.PermissionSubject; import org.ovirt.engine.core.common.VdcObjectType; import org.ovirt.engine.core.common.action.AttachDettachVmDiskParameters; import org.ovirt.engine.core.common.businessentities.ActionGroup; @@ -61,6 +61,12 @@ addCanDoActionMessage(VdcBllMessages.ACTION_TYPE_FAILED_ILLEGAL_DISK_OPERATION); return false; } + if (isImageDisk && ((DiskImage) disk).getimageStatus() == ImageStatus.LOCKED) { + addCanDoActionMessage(VdcBllMessages.ACTION_TYPE_FAILED_VM_IMAGE_IS_LOCKED); + addCanDoActionMessage(String.format("$%1$s %2$s", "diskAlias", disk.getDiskAlias())); + return false; + } + retValue = acquireLockInternal() && isVmExist() && isVmUpOrDown() && isDiskCanBeAddedToVm(disk) && isDiskPassPciAndIdeLimit(disk); diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ImagesHandler.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ImagesHandler.java index 9e199b6..39b3607 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ImagesHandler.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ImagesHandler.java @@ -474,7 +474,7 @@ } } if (lockedDisksAliases.size() > 0) { - ListUtils.nullSafeAdd(messages, VdcBllMessages.ACTION_TYPE_FAILED_VM_IMAGE_IS_LOCKED.toString()); + ListUtils.nullSafeAdd(messages, VdcBllMessages.ACTION_TYPE_FAILED_VM_IMAGES_ARE_LOCKED.toString()); messages.add(String.format("$%1$s %2$s", "diskAliases", StringUtils.join(lockedDisksAliases, ", "))); } } diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/MoveOrCopyDiskCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/MoveOrCopyDiskCommand.java index 5082c71..e5acc8c 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/MoveOrCopyDiskCommand.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/MoveOrCopyDiskCommand.java @@ -10,11 +10,11 @@ import org.apache.commons.lang.StringUtils; import org.ovirt.engine.core.bll.command.utils.StorageDomainSpaceChecker; import org.ovirt.engine.core.bll.job.ExecutionHandler; +import org.ovirt.engine.core.bll.quota.Quotable; import org.ovirt.engine.core.bll.quota.StorageQuotaValidationParameter; +import org.ovirt.engine.core.bll.utils.PermissionSubject; import org.ovirt.engine.core.bll.validator.StorageDomainValidator; import org.ovirt.engine.core.common.AuditLogType; -import org.ovirt.engine.core.bll.utils.PermissionSubject; -import org.ovirt.engine.core.bll.quota.Quotable; import org.ovirt.engine.core.common.VdcObjectType; import org.ovirt.engine.core.common.action.MoveOrCopyImageGroupParameters; import org.ovirt.engine.core.common.action.VdcActionType; @@ -102,7 +102,7 @@ protected boolean isImageIsNotLocked() { if (getImage().getimageStatus() == ImageStatus.LOCKED) { if (getParameters().getOperation() == ImageOperation.Move) { - addCanDoActionMessage(VdcBllMessages.ACTION_TYPE_FAILED_VM_IMAGE_IS_LOCKED); + addCanDoActionMessage(VdcBllMessages.ACTION_TYPE_FAILED_VM_IMAGES_ARE_LOCKED); } else { addCanDoActionMessage(VdcBllMessages.VM_TEMPLATE_IMAGE_IS_LOCKED); } diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RunVmCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RunVmCommand.java index bab0165..0b47bab 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RunVmCommand.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RunVmCommand.java @@ -15,10 +15,10 @@ import org.ovirt.engine.core.bll.job.ExecutionContext; import org.ovirt.engine.core.bll.job.ExecutionHandler; import org.ovirt.engine.core.bll.job.JobRepositoryFactory; +import org.ovirt.engine.core.bll.quota.Quotable; +import org.ovirt.engine.core.bll.utils.PermissionSubject; import org.ovirt.engine.core.bll.utils.VmDeviceUtils; import org.ovirt.engine.core.common.AuditLogType; -import org.ovirt.engine.core.bll.utils.PermissionSubject; -import org.ovirt.engine.core.bll.quota.Quotable; import org.ovirt.engine.core.common.VdcObjectType; import org.ovirt.engine.core.common.action.CreateAllSnapshotsFromVmParameters; import org.ovirt.engine.core.common.action.RunVmParams; @@ -360,7 +360,7 @@ VmHandler.updateDisksFromDb(getVm()); } else { if (vdcReturnValue.getCanDoActionMessages().contains( - VdcBllMessages.ACTION_TYPE_FAILED_VM_IMAGE_IS_LOCKED.name())) { + VdcBllMessages.ACTION_TYPE_FAILED_VM_IMAGES_ARE_LOCKED.name())) { throw new VdcBLLException(VdcBllErrors.IRS_IMAGE_STATUS_ILLEGAL); } getReturnValue().setFault(vdcReturnValue.getFault()); 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 977048b..ef8c7a6 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 @@ -69,6 +69,7 @@ ACTION_LIST_CANNOT_BE_EMPTY, ACTION_TYPE_FAILED_VM_MAX_RESOURCE_EXEEDED, ACTION_TYPE_FAILED_VM_IN_PREVIEW, + ACTION_TYPE_FAILED_VM_IMAGES_ARE_LOCKED, ACTION_TYPE_FAILED_VM_IMAGE_IS_LOCKED, ACTION_TYPE_FAILED_VM_DURING_EXPORT, ACTION_TYPE_FAILED_VM_IMAGE_IS_ILLEGAL, 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 44ee232..61b635e 100644 --- a/backend/manager/modules/dal/src/main/resources/bundles/AppErrors.properties +++ b/backend/manager/modules/dal/src/main/resources/bundles/AppErrors.properties @@ -125,7 +125,8 @@ ACTION_TYPE_FAILED_MISSED_STORAGES_FOR_SOME_DISKS=Cannot ${action} ${type}. Provided destination storage domains don't match for provided disks. ACTION_TYPE_FAILED_STOARGE_DOMAIN_IS_WRONG=Cannot ${action} ${type}. Provided wrong storage domain, which is not related to disk. ACTION_TYPE_FAILED_VM_IN_PREVIEW=Cannot ${action} ${type}. VM is previewing a Snapshot. -ACTION_TYPE_FAILED_VM_IMAGE_IS_LOCKED=Cannot ${action} ${type}: The disks ${diskAliases} are locked. Please try again in a few minutes. +ACTION_TYPE_FAILED_VM_IMAGE_IS_LOCKED=Cannot ${action} ${type}: The disk ${diskAlias} is locked. Please try again in a few minutes. +ACTION_TYPE_FAILED_VM_IMAGES_ARE_LOCKED=Cannot ${action} ${type}: The disks ${diskAliases} are locked. Please try again in a few minutes. ACTION_TYPE_FAILED_VM_DURING_EXPORT=Cannot ${action} ${type}: VM is being exported now. Please try again in a few minutes. ACTION_TYPE_FAILED_VM_IMAGE_IS_ILLEGAL=Cannot ${action} ${type}. VM's Image might be corrupted. ACTION_TYPE_FAILED_VM_HAS_NO_DISKS=Cannot ${action} ${type}. VM has no disks. 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 89e9e6d..7a86f7c 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 @@ -311,6 +311,9 @@ String ACTION_TYPE_FAILED_VM_IN_PREVIEW(); @DefaultStringValue("Cannot ${action} ${type}: The disks ${diskAliases} are locked. Please try again in a few minutes.") + String ACTION_TYPE_FAILED_VM_IMAGES_ARE_LOCKED(); + + @DefaultStringValue("Cannot ${action} ${type}: The disk ${diskAlias} is locked. Please try again in a few minutes.") String ACTION_TYPE_FAILED_VM_IMAGE_IS_LOCKED(); @DefaultStringValue("Cannot ${action} ${type}: VM is being exported now. Please try again in a few minutes.") 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 4ca21b0..5357f65 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 @@ -123,7 +123,8 @@ DIRECTORY_COMPUTER_WITH_THE_SAME_NAME_ALREADY_EXITS=A Computer with the same name already exists. VM_NOT_FOUND=VM not found ACTION_TYPE_FAILED_VM_IN_PREVIEW=Cannot ${action} ${type}. VM is previewing a Snapshot. -ACTION_TYPE_FAILED_VM_IMAGE_IS_LOCKED=Cannot ${action} ${type}: The disks ${diskAliases} are locked. Please try again in a few minutes. +ACTION_TYPE_FAILED_VM_IMAGE_IS_LOCKED=Cannot ${action} ${type}: The disk ${diskAlias} is locked. Please try again in a few minutes. +ACTION_TYPE_FAILED_VM_IMAGES_ARE_LOCKED=Cannot ${action} ${type}: The disks ${diskAliases} are locked. Please try again in a few minutes. ACTION_TYPE_FAILED_VM_DURING_EXPORT=Cannot ${action} ${type}: VM is being exported now. Please try again in a few minutes. ACTION_TYPE_FAILED_VM_IMAGE_IS_ILLEGAL=Cannot ${action} ${type}. VM's Image might be corrupted. ACTION_TYPE_FAILED_VM_HAS_NO_DISKS=Cannot ${action} ${type}. VM has no disks. 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 0c13aea..f9909cb 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 @@ -122,7 +122,8 @@ DIRECTORY_COMPUTER_WITH_THE_SAME_NAME_ALREADY_EXITS=A Computer with the same name already exists. VM_NOT_FOUND=VM not found ACTION_TYPE_FAILED_VM_IN_PREVIEW=Cannot ${action} ${type}. VM is previewing a Snapshot. -ACTION_TYPE_FAILED_VM_IMAGE_IS_LOCKED=Cannot ${action} ${type}: The disks ${diskAliases} are locked. Please try again in a few minutes. +ACTION_TYPE_FAILED_VM_IMAGE_IS_LOCKED=Cannot ${action} ${type}: The disk ${diskAlias} is locked. Please try again in a few minutes. +ACTION_TYPE_FAILED_VM_IMAGES_ARE_LOCKED=Cannot ${action} ${type}: The disks ${diskAliases} are locked. Please try again in a few minutes. ACTION_TYPE_FAILED_VM_DURING_EXPORT=Cannot ${action} ${type}: VM is being exported now. Please try again in a few minutes. ACTION_TYPE_FAILED_VM_IMAGE_IS_ILLEGAL=Cannot ${action} ${type}. VM's Image might be corrupted. ACTION_TYPE_FAILED_VM_HAS_NO_DISKS=Cannot ${action} ${type}. VM has no disks. -- To view, visit http://gerrit.ovirt.org/8167 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I109654547b68da245a5fdc2b2188feedd45c2ca7 Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Asaf Shakarchi <a...@redhat.com> _______________________________________________ Engine-patches mailing list Engine-patches@ovirt.org http://lists.ovirt.org/mailman/listinfo/engine-patches