Amit Aviram has uploaded a new change for review.

Change subject: core: Requesting to consume quota while extending a disk fix.
......................................................................

core: Requesting to consume quota while extending a disk fix.

Until now when the user wanted to extend a disk, there was no
request generated for quota consumption. This fact let the user to
extend the disk's size as much as he likes when there are quota
limitations.

This patch adds a request for quota consumption when disks are
extended.

Change-Id: Ib31206b0a9172b35217845b01253951d93f380f1
Bug-Url: https://bugzilla.redhat.com/1203262
Signed-off-by: Amit Aviram <[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, 43 insertions(+), 8 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/30/39330/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 24f7ccd..1b72d76 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
@@ -614,15 +614,12 @@
 
             boolean emptyOldQuota = oldDiskImage.getQuotaId() == null || 
Guid.Empty.equals(oldDiskImage.getQuotaId());
             boolean differentNewQuota = !emptyOldQuota && 
!oldDiskImage.getQuotaId().equals(newDiskImage.getQuotaId());
+            long diskExtendingDiff = newDiskImage.getSizeInGigabytes() - 
oldDiskImage.getSizeInGigabytes();
 
-            if (emptyOldQuota || differentNewQuota) {
-                list.add(new QuotaStorageConsumptionParameter(
-                        newDiskImage.getQuotaId(),
-                        null,
-                        QuotaStorageConsumptionParameter.QuotaAction.CONSUME,
-                        //TODO: Shared Disk?
-                        newDiskImage.getStorageIds().get(0),
-                        (double)newDiskImage.getSizeInGigabytes()));
+            if (emptyOldQuota || differentNewQuota ) {
+                list.add(generateQuotaConsumeParameters(newDiskImage, 
newDiskImage.getSizeInGigabytes()));
+            } else if (diskExtendingDiff != 0) {
+                list.add(generateQuotaConsumeParameters(newDiskImage, 
diskExtendingDiff));
             }
 
             if (differentNewQuota) {
@@ -638,6 +635,16 @@
         return list;
     }
 
+    private QuotaConsumptionParameter generateQuotaConsumeParameters(DiskImage 
newDiskImage, long sizeInGigabytes) {
+        return new QuotaStorageConsumptionParameter(
+               newDiskImage.getQuotaId(),
+               null,
+               QuotaStorageConsumptionParameter.QuotaAction.CONSUME,
+               //TODO: Shared Disk?
+               newDiskImage.getStorageIds().get(0),
+               (double) sizeInGigabytes );
+    }
+
     private boolean resizeDiskImageRequested() {
         return getNewDisk().getDiskStorageType() == DiskStorageType.IMAGE &&
                vmDeviceForVm.getSnapshotId() == null && getNewDisk().getSize() 
!= getOldDisk().getSize();
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 0ab92f7..bb49d86 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
@@ -35,6 +35,7 @@
 import org.mockito.invocation.InvocationOnMock;
 import org.mockito.runners.MockitoJUnitRunner;
 import org.mockito.stubbing.Answer;
+import org.ovirt.engine.core.bll.quota.QuotaStorageConsumptionParameter;
 import org.ovirt.engine.core.bll.snapshots.SnapshotsValidator;
 import org.ovirt.engine.core.bll.validator.storage.DiskValidator;
 import org.ovirt.engine.core.bll.validator.storage.StorageDomainValidator;
@@ -677,6 +678,33 @@
                 any(SetVolumeDescriptionVDSCommandParameters.class));
     }
 
+    @Test
+    public void testExtendingDiskWithQuota() {
+        Guid quotaId = Guid.newGuid();
+
+        DiskImage oldDiskImage = createDiskImage();
+        oldDiskImage.setQuotaId(quotaId);
+        oldDiskImage.setSize(getBytesByGB(3));
+
+        DiskImage newDiskImage = createDiskImage();
+        newDiskImage.setQuotaId(quotaId);
+        newDiskImage.setSize(getBytesByGB(5));
+
+        UpdateVmDiskParameters parameters = new UpdateVmDiskParameters(vmId, 
diskImageGuid, newDiskImage);
+        long diskExtendingDiffInGB = newDiskImage.getSizeInGigabytes() - 
oldDiskImage.getSizeInGigabytes();
+
+        when(diskDao.get(diskImageGuid)).thenReturn(oldDiskImage);
+        initializeCommand(parameters);
+
+        QuotaStorageConsumptionParameter consumptionParameter =
+                (QuotaStorageConsumptionParameter) 
command.getQuotaStorageConsumptionParameters().get(0);
+        assertTrue(consumptionParameter.getRequestedStorageGB() == 
diskExtendingDiffInGB);
+    }
+
+    private long getBytesByGB(long sizeInGB) {
+        return sizeInGB*(1024*1024*1024);
+    }
+
     private void mockToUpdateDiskVm(List<VM> vms) {
         for (VM vm: vms) {
             if (vm.getId().equals(command.getParameters().getVmId())) {


-- 
To view, visit https://gerrit.ovirt.org/39330
To unsubscribe, visit https://gerrit.ovirt.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: Ib31206b0a9172b35217845b01253951d93f380f1
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Amit Aviram <[email protected]>
_______________________________________________
Engine-patches mailing list
[email protected]
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to