ofri masad has uploaded a new change for review. Change subject: core: Fix quota not counted when run VM from pool ......................................................................
core: Fix quota not counted when run VM from pool When running VM from a VM-pool the quota (CPU, Memory) was not counted. The reason was that AttachUserToVmFromPoolAndRunCommand was not QuotaVdsDependant. AttachUserToVmFromPoolAndRunCommand was changed to implement QuotaVdsDependant. Change-Id: Iafcdf2462de9a2f8bb4132af9173f5ed4ead47cf Bug-Url: https://bugzilla.redhat.com/954158 Signed-off-by: Ofri Masad <oma...@redhat.com> --- M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AttachUserToVmFromPoolAndRunCommand.java M backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/VdcActionType.java 2 files changed, 34 insertions(+), 8 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/98/14098/1 diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AttachUserToVmFromPoolAndRunCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AttachUserToVmFromPoolAndRunCommand.java index 9c86cd5..4128770 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AttachUserToVmFromPoolAndRunCommand.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AttachUserToVmFromPoolAndRunCommand.java @@ -1,5 +1,6 @@ package org.ovirt.engine.core.bll; +import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.Map; @@ -7,6 +8,9 @@ import org.ovirt.engine.core.bll.context.CommandContext; import org.ovirt.engine.core.bll.job.ExecutionContext; import org.ovirt.engine.core.bll.job.ExecutionHandler; +import org.ovirt.engine.core.bll.quota.QuotaConsumptionParameter; +import org.ovirt.engine.core.bll.quota.QuotaVdsDependent; +import org.ovirt.engine.core.bll.quota.QuotaVdsGroupConsumptionParameter; import org.ovirt.engine.core.common.AuditLogType; import org.ovirt.engine.core.common.VdcObjectType; import org.ovirt.engine.core.common.action.PermissionsOperationsParametes; @@ -35,7 +39,9 @@ @LockIdNameAttribute public class AttachUserToVmFromPoolAndRunCommand<T extends VmPoolUserParameters> extends -VmPoolUserCommandBase<T> { +VmPoolUserCommandBase<T> implements QuotaVdsDependent { + private Guid vmToAttach = null; + protected AttachUserToVmFromPoolAndRunCommand(Guid commandId) { super(commandId); } @@ -81,13 +87,16 @@ return returnValue; } - private static Guid getVmToAttach(NGuid poolId) { - Guid vmGuid = Guid.Empty; - vmGuid = getPrestartedVmToAttach(poolId); - if (vmGuid == null || Guid.Empty.equals(vmGuid)) { - vmGuid = getNonPrestartedVmToAttach(poolId); + private Guid getVmToAttach(NGuid poolId) { + if (vmToAttach == null) { + Guid vmGuid = Guid.Empty; + vmGuid = getPrestartedVmToAttach(poolId); + if (vmGuid == null || Guid.Empty.equals(vmGuid)) { + vmGuid = getNonPrestartedVmToAttach(poolId); + } + vmToAttach = vmGuid; } - return vmGuid; + return vmToAttach; } private static Guid getPrestartedVmToAttach(NGuid vmPoolId) { @@ -304,4 +313,21 @@ return Collections.singletonMap(getAdUserId().toString(), LockMessagesMatchUtil.makeLockingPair(LockingGroup.USER_VM_POOL, VdcBllMessages.ACTION_TYPE_FAILED_OBJECT_LOCKED)); } + + @Override + public List<QuotaConsumptionParameter> getQuotaVdsConsumptionParameters() { + List<QuotaConsumptionParameter> list = new ArrayList<QuotaConsumptionParameter>(); + + VM vm = DbFacade.getInstance().getVmDao().get(getVmToAttach(getParameters().getVmPoolId())); + + setStoragePoolId(vm.getStoragePoolId()); + + list.add(new QuotaVdsGroupConsumptionParameter(vm.getQuotaId(), + null, + QuotaConsumptionParameter.QuotaAction.CONSUME, + vm.getVdsGroupId(), + vm.getCpuPerSocket() * vm.getNumOfSockets(), + vm.getMemSizeMb())); + return list; + } } diff --git a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/VdcActionType.java b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/VdcActionType.java index 09c05c0..e2d173e 100644 --- a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/VdcActionType.java +++ b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/VdcActionType.java @@ -118,7 +118,7 @@ DetachUserFromVmFromPool(312, QuotaDependency.NONE), AddVmToPool(313, QuotaDependency.NONE), RemoveVmFromPool(314, ActionGroup.EDIT_VM_POOL_CONFIGURATION, false, QuotaDependency.NONE), - AttachUserToVmFromPoolAndRun(318, ActionGroup.VM_POOL_BASIC_OPERATIONS, QuotaDependency.NONE), + AttachUserToVmFromPoolAndRun(318, ActionGroup.VM_POOL_BASIC_OPERATIONS, QuotaDependency.VDS_GROUP), // UserAndGroupsCommands LoginUser(406, ActionGroup.LOGIN, false, QuotaDependency.NONE), LogoutUser(408, false, QuotaDependency.NONE), -- To view, visit http://gerrit.ovirt.org/14098 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Iafcdf2462de9a2f8bb4132af9173f5ed4ead47cf Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: ofri masad <oma...@redhat.com> _______________________________________________ Engine-patches mailing list Engine-patches@ovirt.org http://lists.ovirt.org/mailman/listinfo/engine-patches