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