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

Reply via email to