Amit Aviram has uploaded a new change for review.

Change subject: core: Quota consumption for Vm's disk updating refactor.
......................................................................

core: Quota consumption for Vm's disk updating refactor.

Refactor have been made to the quota request part of the updating
a vm's disk command since its logic was cumbersome and hard to
understand.

Also, the patch prevents redundant quota request to null or empty
quotas.

Change-Id: I838973e9f1e71d36193fb2ea832b18b9308c7248
Signed-off-by: Amit Aviram <aavi...@redhat.com>
---
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/UpdateVmDiskCommand.java
1 file changed, 29 insertions(+), 18 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/98/39398/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 8c5fa30..75f41ba 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
@@ -686,39 +686,50 @@
             DiskImage oldDiskImage = (DiskImage) getOldDisk();
             DiskImage newDiskImage = (DiskImage) getNewDisk();
 
-            boolean emptyOldQuota = oldDiskImage.getQuotaId() == null || 
Guid.Empty.equals(oldDiskImage.getQuotaId());
-            boolean differentNewQuota = !emptyOldQuota && 
!oldDiskImage.getQuotaId().equals(newDiskImage.getQuotaId());
+            boolean doesNewDiskHaveQuota    = 
isDiskImageHasQuota(newDiskImage);
+            boolean doesOldDiskHadQuota     = 
isDiskImageHasQuota(oldDiskImage);
+            boolean isQuotaChanged          = 
!oldDiskImage.getQuotaId().equals(newDiskImage.getQuotaId());
             long diskExtendingDiff = newDiskImage.getSizeInGigabytes() - 
oldDiskImage.getSizeInGigabytes();
 
-            if (emptyOldQuota || differentNewQuota ) {
-                list.add(generateQuotaConsumeParameters(newDiskImage, 
newDiskImage.getSizeInGigabytes()));
-            } else if (diskExtendingDiff > 0L) {
-                list.add(generateQuotaConsumeParameters(newDiskImage, 
diskExtendingDiff));
+            // Generate a CONSUME request
+            if (doesNewDiskHaveQuota) {
+                if (isQuotaChanged) {
+                    list.add(generateQuotaRequestParameters(newDiskImage,
+                            QuotaConsumptionParameter.QuotaAction.CONSUME,
+                            newDiskImage.getSizeInGigabytes()));
+                } else if (diskExtendingDiff > 0L) {
+                    list.add(generateQuotaRequestParameters(newDiskImage,
+                            QuotaConsumptionParameter.QuotaAction.CONSUME,
+                            diskExtendingDiff));
+                }
             }
 
-            if (differentNewQuota) {
-                list.add(new QuotaStorageConsumptionParameter(
-                        oldDiskImage.getQuotaId(),
-                        null,
-                        QuotaStorageConsumptionParameter.QuotaAction.RELEASE,
-                        //TODO: Shared Disk?
-                        oldDiskImage.getStorageIds().get(0),
-                        (double)oldDiskImage.getSizeInGigabytes()));
+            // Generate a RELEASE request
+            if (doesOldDiskHadQuota && isQuotaChanged) {
+                list.add(generateQuotaRequestParameters(oldDiskImage,
+                        QuotaConsumptionParameter.QuotaAction.RELEASE,
+                        oldDiskImage.getSizeInGigabytes()));
             }
         }
         return list;
     }
 
-    private QuotaConsumptionParameter generateQuotaConsumeParameters(DiskImage 
newDiskImage, long sizeInGigabytes) {
+    private QuotaConsumptionParameter generateQuotaRequestParameters(DiskImage 
diskImage,
+            QuotaConsumptionParameter.QuotaAction action, long 
sizeInGigabytes) {
         return new QuotaStorageConsumptionParameter(
-               newDiskImage.getQuotaId(),
+               diskImage.getQuotaId(),
                null,
-               QuotaStorageConsumptionParameter.QuotaAction.CONSUME,
+                action,
                //TODO: Shared Disk?
-               newDiskImage.getStorageIds().get(0),
+               diskImage.getStorageIds().get(0),
                (double) sizeInGigabytes );
     }
 
+
+    private boolean isDiskImageHasQuota(DiskImage diskImage) {
+        return !(diskImage.getQuotaId() == null) && 
!Guid.Empty.equals(diskImage.getQuotaId());
+    }
+
     private boolean resizeDiskImageRequested() {
         boolean sizeChanged = getNewDisk().getSize() != getOldDisk().getSize();
         switch (getNewDisk().getDiskStorageType()) {


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

Gerrit-MessageType: newchange
Gerrit-Change-Id: I838973e9f1e71d36193fb2ea832b18b9308c7248
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Amit Aviram <aavi...@redhat.com>
_______________________________________________
Engine-patches mailing list
Engine-patches@ovirt.org
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to