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

Reply via email to