Vered Volansky has uploaded a new change for review. Change subject: core: Fix UpdateVmDiskCommand resize validation ......................................................................
core: Fix UpdateVmDiskCommand resize validation validateCanResizeDisk() is called from UpdateVmDiskCommand CDA and is faulty. In it the first two verifications were called whether there was an attempt to resize the image or not. These two verifications now take place only if there is indeed an attempt to resize the image. Need to add a mock in the test. Change-Id: I760bb3b72d872a1ba5c7af2a9607c7249583652a Bug-Url: https://bugzilla.redhat.com/1092087 Bug-Url: https://bugzilla.redhat.com/1092371 Signed-off-by: Vered Volansky <[email protected]> --- M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/UpdateVmDiskCommand.java M backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/UpdateVmDiskCommandTest.java 2 files changed, 18 insertions(+), 16 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/71/27271/1 diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/UpdateVmDiskCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/UpdateVmDiskCommand.java index d219e03..d92ed50 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/UpdateVmDiskCommand.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/UpdateVmDiskCommand.java @@ -266,20 +266,19 @@ protected boolean validateCanResizeDisk() { DiskImage newDiskImage = (DiskImage) getNewDisk(); + DiskImage oldDiskImage = (DiskImage) getOldDisk(); - if (Boolean.TRUE.equals(getVmDeviceForVm().getIsReadOnly())) { - return failCanDoAction(VdcBllMessages.ACTION_TYPE_FAILED_CANNOT_RESIZE_READ_ONLY_DISK); - } - - if (vmDeviceForVm.getSnapshotId() != null) { - DiskImage snapshotDisk = getDiskImageDao().getDiskSnapshotForVmSnapshot(getParameters().getDiskId(), vmDeviceForVm.getSnapshotId()); - if (snapshotDisk.getSize() != newDiskImage.getSize()) { - return failCanDoAction(VdcBllMessages.ACTION_TYPE_FAILED_CANNOT_RESIZE_DISK_SNAPSHOT); + if (newDiskImage.getSize() != oldDiskImage.getSize()) { + if (Boolean.TRUE.equals(getVmDeviceForVm().getIsReadOnly())) { + return failCanDoAction(VdcBllMessages.ACTION_TYPE_FAILED_CANNOT_RESIZE_READ_ONLY_DISK); } - } - if (getNewDisk().getSize() != getOldDisk().getSize()) { - DiskImage oldDiskImage = (DiskImage) getOldDisk(); + if (vmDeviceForVm.getSnapshotId() != null) { + DiskImage snapshotDisk = getDiskImageDao().getDiskSnapshotForVmSnapshot(getParameters().getDiskId(), vmDeviceForVm.getSnapshotId()); + if (snapshotDisk.getSize() != newDiskImage.getSize()) { + return failCanDoAction(VdcBllMessages.ACTION_TYPE_FAILED_CANNOT_RESIZE_DISK_SNAPSHOT); + } + } if (oldDiskImage.getSize() > newDiskImage.getSize()) { return failCanDoAction(VdcBllMessages.ACTION_TYPE_FAILED_REQUESTED_DISK_SIZE_IS_TOO_SMALL); @@ -588,21 +587,21 @@ } } - private Disk getOldDisk() { + protected Disk getOldDisk() { if (oldDisk == null) { oldDisk = getDiskDao().get(getParameters().getDiskId()); } return oldDisk; } - protected VmDevice getVmDeviceForVm() { - return vmDeviceForVm; - } - private Disk getNewDisk() { return getParameters().getDiskInfo(); } + protected VmDevice getVmDeviceForVm() { + return vmDeviceForVm; + } + private List<VM> getVmsDiskPluggedTo() { return vmsDiskPluggedTo; } diff --git a/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/UpdateVmDiskCommandTest.java b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/UpdateVmDiskCommandTest.java index bf0d88b..13acce8 100644 --- a/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/UpdateVmDiskCommandTest.java +++ b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/UpdateVmDiskCommandTest.java @@ -472,6 +472,9 @@ ((DiskImage) parameters.getDiskInfo()).setSize(parameters.getDiskInfo().getSize() * 2); initializeCommand(parameters); + DiskImage oldDisk = createDiskImage(); + doReturn(oldDisk).when(command).getOldDisk(); + VmDevice device = createVmDevice(diskImageGuid, vmId); device.setIsReadOnly(true); doReturn(device).when(command).getVmDeviceForVm(); -- To view, visit http://gerrit.ovirt.org/27271 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I760bb3b72d872a1ba5c7af2a9607c7249583652a Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: ovirt-engine-3.4 Gerrit-Owner: Vered Volansky <[email protected]> _______________________________________________ Engine-patches mailing list [email protected] http://lists.ovirt.org/mailman/listinfo/engine-patches
