ofri masad has uploaded a new change for review.

Change subject: core: Quota refactor - parameters
......................................................................

core: Quota refactor - parameters

First step to Quota refactor.

Adding Objects for Quota consumption parameters
Adding InvalidQuotaParametersException

Change-Id: Iebfc85569ba1aa8bd840f7239f83b7f921a4bd8e
Signed-off-by: Ofri Masad <oma...@redhat.com>
---
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/CommandBase.java
A 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/quota/InvalidQuotaParametersException.java
A 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/quota/QuotaConsumptionParameter.java
A 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/quota/QuotaConsumptionParameters.java
A 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/quota/QuotaConsumptionParametersMetaData.java
A 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/quota/QuotaStorageConsumptionParameter.java
A 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/quota/QuotaStorageDependent.java
A 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/quota/QuotaVdsConsumptionParameter.java
A 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/quota/QuotaVdsDependent.java
M 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/VdcActionType.java
10 files changed, 517 insertions(+), 10 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/75/8775/1

diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/CommandBase.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/CommandBase.java
index fcffeed..e397a70 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/CommandBase.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/CommandBase.java
@@ -22,7 +22,12 @@
 import org.ovirt.engine.core.bll.interfaces.BackendInternal;
 import org.ovirt.engine.core.bll.job.ExecutionContext;
 import org.ovirt.engine.core.bll.job.ExecutionHandler;
-import org.ovirt.engine.core.bll.quota.QuotaManager;
+import org.ovirt.engine.core.bll.quota.QuotaConsumptionParameter;
+import org.ovirt.engine.core.bll.quota.QuotaVdsConsumptionParameter;
+import org.ovirt.engine.core.bll.quota.QuotaStorageDependent;
+import org.ovirt.engine.core.bll.quota.QuotaVdsDependent;
+import org.ovirt.engine.core.bll.quota.QuotaConsumptionParameters;
+import org.ovirt.engine.core.bll.quota.QuotaStorageConsumptionParameter;
 import org.ovirt.engine.core.bll.quota.Quotable;
 import org.ovirt.engine.core.bll.session.SessionDataContainer;
 import org.ovirt.engine.core.bll.tasks.AsyncTaskUtils;
@@ -509,7 +514,7 @@
             try {
                 returnValue =
                         isUserAuthorizedToRunAction() && 
isBackwardsCompatible() && validateInputs() && acquireLock()
-                                && canDoAction();
+                                && internalValidateAndSetQuota() && 
canDoAction();
                 if (returnValue && this instanceof Quotable) {
                     returnValue &= ((Quotable) this).validateAndSetQuota();
                 }
@@ -534,6 +539,67 @@
         return returnValue;
     }
 
+    private boolean internalValidateAndSetQuota() {
+        if (isInternalExecution()) {
+            return true;
+        }
+
+        VdcActionType.QuotaDependency quotaDependency = 
this.getActionType().getQuotaDependency();
+        List<QuotaConsumptionParameter> consumptionParameters = new 
ArrayList<QuotaConsumptionParameter>();
+        QuotaConsumptionParameters quotaConsumptionParameters = new 
QuotaConsumptionParameters(
+                this.getStoragePool(), this.getStoragePool().getId(),
+                this.getReturnValue().getCanDoActionMessages(), this);
+
+        try {
+            switch (quotaDependency) {
+            case NONE:
+                return true;
+            case STORAGE:
+                getInternalStorageParameters(consumptionParameters);
+                break;
+            case VDS:
+                getInternalVdsParameters(consumptionParameters);
+                break;
+            case BOTH:
+                getInternalStorageParameters(consumptionParameters);
+                getInternalStorageParameters(consumptionParameters);
+                break;
+            }
+        } catch (ClassCastException e) {
+            log.error("Command: " + this.getClass().getName()
+                    + ". Quota handling was expected - class does not 
implement the expected interface");
+        }
+
+        if (!consumptionParameters.isEmpty()) {
+            // TODO - implemented in next patch - return 
QuotaManager.getInstance().consume(quotaConsumptionParameters);
+            return true;
+        } else {
+            return true;
+        }
+    }
+
+    private void getInternalVdsParameters(List<QuotaConsumptionParameter> 
consumptionParameters) {
+        List<QuotaVdsConsumptionParameter> vdsParameters;
+        vdsParameters = ((QuotaVdsDependent) 
this).getQuotaVdsConsumptionParameters();
+        if (null == vdsParameters || vdsParameters.isEmpty()) {
+            log.error("Command: " + this.getClass().getName()
+                    + ". Quota handling was expected - returned empty 
parameters");
+        } else {
+            consumptionParameters.addAll(vdsParameters);
+        }
+    }
+
+    private void getInternalStorageParameters(List<QuotaConsumptionParameter> 
consumptionParameters) {
+        List<QuotaStorageConsumptionParameter> storageParameters;
+        storageParameters = ((QuotaStorageDependent) 
this).getQuotaStorageConsumptionParameters();
+        if (null == storageParameters || storageParameters.isEmpty()) {
+            log.error("Command: " + this.getClass().getName()
+                    + ". Quota handling was expected - returned empty 
parameters");
+        } else {
+            consumptionParameters.addAll(storageParameters);
+        }
+    }
+
     /**
      * @return true if all parameters class and its inner members passed
      *         validation
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/quota/InvalidQuotaParametersException.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/quota/InvalidQuotaParametersException.java
new file mode 100644
index 0000000..1a6a4bf
--- /dev/null
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/quota/InvalidQuotaParametersException.java
@@ -0,0 +1,18 @@
+package org.ovirt.engine.core.bll.quota;
+
+import org.ovirt.engine.core.compat.ApplicationException;
+
+public class InvalidQuotaParametersException extends ApplicationException 
implements java.io.Serializable {
+    private static final long serialVersionUID = -1759699263394287888L;
+
+    public InvalidQuotaParametersException() {
+    }
+
+    public InvalidQuotaParametersException(String errorStr){
+        super(errorStr);
+    }
+
+    public InvalidQuotaParametersException(String errorStr, Throwable cause) {
+        super("InvalidQuotaParametersException: " + errorStr, cause);
+    }
+}
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/quota/QuotaConsumptionParameter.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/quota/QuotaConsumptionParameter.java
new file mode 100644
index 0000000..abb079b
--- /dev/null
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/quota/QuotaConsumptionParameter.java
@@ -0,0 +1,53 @@
+package org.ovirt.engine.core.bll.quota;
+
+import org.ovirt.engine.core.common.businessentities.Quota;
+import org.ovirt.engine.core.compat.Guid;
+
+public abstract class QuotaConsumptionParameter {
+    protected Guid quotaGuid;
+    protected Quota quota;
+    protected Action action = Action.CONSUME;
+    protected boolean approved;
+
+    public Guid getQuotaGuid() {
+        return quotaGuid;
+    }
+
+    public void setQuotaGuid(Guid quotaGuid) {
+        this.quotaGuid = quotaGuid;
+    }
+
+    public Quota getQuota() {
+        return quota;
+    }
+
+    public void setQuota(Quota quota) {
+        this.quota = quota;
+    }
+
+    public Action getAction() {
+        return this.action;
+    }
+
+    public void setAction(Action action) {
+        this.action = action;
+    }
+
+    public abstract QuotaConsumptionParameter clone();
+
+    public void revert() {
+        this.action = Action.CONSUME.equals(action) ? Action.RELEASE : 
Action.CONSUME;
+    }
+
+    public enum Action {
+        CONSUME, RELEASE
+    }
+
+    public boolean isApproved() {
+        return this.approved;
+    }
+
+    public void setApproved(boolean approved) {
+        this.approved = approved;
+    }
+}
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/quota/QuotaConsumptionParameters.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/quota/QuotaConsumptionParameters.java
new file mode 100644
index 0000000..b3bbb76
--- /dev/null
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/quota/QuotaConsumptionParameters.java
@@ -0,0 +1,118 @@
+package org.ovirt.engine.core.bll.quota;
+
+import org.ovirt.engine.core.common.businessentities.storage_pool;
+import org.ovirt.engine.core.compat.Guid;
+import org.ovirt.engine.core.dal.dbbroker.auditloghandling.AuditLogableBase;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class QuotaConsumptionParameters {
+
+    private List<QuotaConsumptionParameter> parameters;
+
+    private QuotaConsumptionParametersMetaData metaData;
+
+    public QuotaConsumptionParameters(storage_pool storage_pool,
+            Guid storagePoolGuid,
+            ArrayList<String> canDoActionMessages,
+            AuditLogableBase auditLogable) {
+        this.metaData.setStorage_pool(storage_pool);
+        this.metaData.setStoragePoolGuid(storagePoolGuid);
+        this.metaData.setCanDoActionMessages(canDoActionMessages);
+        this.metaData.setAuditLogable(auditLogable);
+    }
+
+    public storage_pool getStorage_pool() {
+        return metaData.getStorage_pool();
+    }
+
+    public void setStorage_pool(storage_pool storage_pool) {
+        this.metaData.setStorage_pool(storage_pool);
+    }
+
+    public Guid getStoragePoolGuid() {
+        return metaData.getStoragePoolGuid();
+    }
+
+    public List<QuotaConsumptionParameter> getParameters() {
+        return parameters;
+    }
+
+    public void setParameters(List<QuotaConsumptionParameter> parameters) {
+        this.parameters = parameters;
+    }
+
+    public List<QuotaStorageConsumptionParameter> 
getQuotaStorageConsumptionParameters() {
+        List<QuotaStorageConsumptionParameter> list = new 
ArrayList<QuotaStorageConsumptionParameter>();
+        for (QuotaConsumptionParameter parameter : getParameters()){
+            if (parameter instanceof QuotaStorageConsumptionParameter) {
+                list.add((QuotaStorageConsumptionParameter) parameter);
+            }
+        }
+        return list;
+    }
+
+    public List<QuotaVdsConsumptionParameter> 
getQuotaVdsConsumptionParameters() {
+        List<QuotaVdsConsumptionParameter> list = new 
ArrayList<QuotaVdsConsumptionParameter>();
+        for (QuotaConsumptionParameter parameter : getParameters()){
+            if (parameter instanceof QuotaVdsConsumptionParameter) {
+                list.add((QuotaVdsConsumptionParameter) parameter);
+            }
+        }
+        return list;
+    }
+
+    public ArrayList<String> getCanDoActionMessages() {
+        return metaData.getCanDoActionMessages();
+    }
+
+    public void setCanDoActionMessages(ArrayList<String> canDoActionMessages) {
+        this.metaData.setCanDoActionMessages(canDoActionMessages);
+    }
+
+    public AuditLogableBase getAuditLogable() {
+        return metaData.getAuditLogable();
+    }
+
+    public void setAuditLogable(AuditLogableBase auditLogable) {
+        this.metaData.setAuditLogable(auditLogable);
+    }
+
+    public QuotaConsumptionParameters clone() {
+        QuotaConsumptionParameters clone = new QuotaConsumptionParameters(
+                this.getStorage_pool(),
+                this.getStoragePoolGuid(),
+                this.getCanDoActionMessages(),
+                this.getAuditLogable());
+        clone.setParameters(new ArrayList<QuotaConsumptionParameter>());
+
+        for (QuotaConsumptionParameter parameter : this.getParameters()) {
+            clone.getParameters().add(parameter.clone());
+        }
+
+        return clone;
+    }
+
+    /**
+     * Revert the numbers of all requested cpu, memory and storage
+     */
+    public void revert() {
+        for (QuotaConsumptionParameter parameter : this.getParameters()) {
+            parameter.revert();
+        }
+    }
+
+    public QuotaConsumptionParametersMetaData getMetaData() {
+        return metaData;
+    }
+
+    public void setMetaData(QuotaConsumptionParametersMetaData metaData) {
+        this.metaData = metaData;
+    }
+
+    public Guid getTransactionId() {
+        return this.metaData.getTransactionID();
+    }
+
+}
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/quota/QuotaConsumptionParametersMetaData.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/quota/QuotaConsumptionParametersMetaData.java
new file mode 100644
index 0000000..b0109ed
--- /dev/null
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/quota/QuotaConsumptionParametersMetaData.java
@@ -0,0 +1,69 @@
+package org.ovirt.engine.core.bll.quota;
+
+import org.ovirt.engine.core.common.businessentities.storage_pool;
+import org.ovirt.engine.core.compat.Guid;
+import org.ovirt.engine.core.dal.dbbroker.auditloghandling.AuditLogableBase;
+
+import java.util.ArrayList;
+
+public class QuotaConsumptionParametersMetaData {
+    private org.ovirt.engine.core.common.businessentities.storage_pool 
storage_pool;
+    private Guid storagePoolGuid;
+    private ArrayList<String> canDoActionMessages;
+    private AuditLogableBase auditLogable;
+    private Guid transactionID = Guid.NewGuid();
+
+    public QuotaConsumptionParametersMetaData(storage_pool storage_pool,
+            Guid storagePoolGuid,
+            ArrayList<String> canDoActionMessages,
+            AuditLogableBase auditLogable) {
+        this.storage_pool = storage_pool;
+        this.storagePoolGuid = storagePoolGuid;
+        this.canDoActionMessages = canDoActionMessages;
+        this.auditLogable = auditLogable;
+    }
+
+    public storage_pool getStorage_pool() {
+        return storage_pool;
+    }
+
+    public void setStorage_pool(storage_pool storage_pool) {
+        this.storage_pool = storage_pool;
+    }
+
+    public Guid getStoragePoolGuid() {
+        return storagePoolGuid;
+    }
+
+    public void setStoragePoolGuid(Guid storagePoolGuid) {
+        this.storagePoolGuid = storagePoolGuid;
+    }
+
+    public ArrayList<String> getCanDoActionMessages() {
+        return canDoActionMessages;
+    }
+
+    public void setCanDoActionMessages(ArrayList<String> canDoActionMessages) {
+        this.canDoActionMessages = canDoActionMessages;
+    }
+
+    public AuditLogableBase getAuditLogable() {
+        return auditLogable;
+    }
+
+    public void setAuditLogable(AuditLogableBase auditLogable) {
+        this.auditLogable = auditLogable;
+    }
+
+    public QuotaConsumptionParametersMetaData clone() {
+        return new QuotaConsumptionParametersMetaData(
+                this.storage_pool,
+                this.storagePoolGuid,
+                this.canDoActionMessages,
+                this.auditLogable);
+    }
+
+    public Guid getTransactionID() {
+        return transactionID;
+    }
+}
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/quota/QuotaStorageConsumptionParameter.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/quota/QuotaStorageConsumptionParameter.java
new file mode 100644
index 0000000..66de6ac
--- /dev/null
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/quota/QuotaStorageConsumptionParameter.java
@@ -0,0 +1,49 @@
+package org.ovirt.engine.core.bll.quota;
+
+import org.ovirt.engine.core.common.businessentities.Quota;
+import org.ovirt.engine.core.compat.Guid;
+
+public class QuotaStorageConsumptionParameter extends 
QuotaConsumptionParameter {
+
+    private Guid storageDomainId;
+    private long requestedStorageGB;
+
+    public QuotaStorageConsumptionParameter(Guid quotaGuid,
+            Quota quota,
+            Action action,
+            Guid storageDomainId,
+            long requestedStorageGB) {
+        this.quotaGuid = quotaGuid;
+        this.quota = quota;
+        this.action = action;
+        this.storageDomainId = storageDomainId;
+        this.requestedStorageGB = requestedStorageGB;
+    }
+
+    public Guid getStorageDomainId() {
+        return storageDomainId;
+    }
+
+    public void setStorageDomainId(Guid storageDomainId) {
+        this.storageDomainId = storageDomainId;
+    }
+
+    public long getRequestedStorageGB() {
+        return requestedStorageGB;
+    }
+
+    public void setRequestedStorageGB(long requestedStorageGB) {
+        this.requestedStorageGB = requestedStorageGB;
+    }
+
+    @Override
+    public QuotaStorageConsumptionParameter clone() {
+        return new QuotaStorageConsumptionParameter(
+                this.quotaGuid,
+                this.quota,
+                this.action,
+                this.storageDomainId,
+                this.requestedStorageGB);
+    }
+
+}
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/quota/QuotaStorageDependent.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/quota/QuotaStorageDependent.java
new file mode 100644
index 0000000..f172623
--- /dev/null
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/quota/QuotaStorageDependent.java
@@ -0,0 +1,24 @@
+package org.ovirt.engine.core.bll.quota;
+
+
+import java.util.List;
+
+/**
+ * Implement the QuotaStorageDependent interface to identify your command as 
one that dependent on
+ * Storage Quota calculation in order to run. If a Command handles disks, 
images, snapshots and so on -
+ * it should be QuotaStorageDependent.
+ */
+public interface QuotaStorageDependent {
+
+    /**
+     * Get a list of the storage consumption parameters.
+     * Override this method in order to set the storage consumption parameters 
for the quota check.
+     * This method is called by CommandBase during the canDoAction check in 
order to make sure the
+     * command has sufficient quota resources in order to run.
+     *
+     * return null if the command does consume any storage resources.
+     *
+     * @return - list of storage consumption parameters. null if no 
consumption.
+     */
+    public List<QuotaStorageConsumptionParameter> 
getQuotaStorageConsumptionParameters();
+}
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/quota/QuotaVdsConsumptionParameter.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/quota/QuotaVdsConsumptionParameter.java
new file mode 100644
index 0000000..e4dafe4
--- /dev/null
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/quota/QuotaVdsConsumptionParameter.java
@@ -0,0 +1,61 @@
+package org.ovirt.engine.core.bll.quota;
+
+import org.ovirt.engine.core.common.businessentities.Quota;
+import org.ovirt.engine.core.compat.Guid;
+
+public class QuotaVdsConsumptionParameter extends QuotaConsumptionParameter {
+
+    private Guid vdsGroupId;
+    private int requestedCpu;
+    private long requestedMemory;
+
+    public QuotaVdsConsumptionParameter(Guid quotaGuid,
+            Quota quota,
+            Action action,
+            Guid vdsGroupId,
+            int requestedCpu,
+            long requestedMemory) {
+        this.quotaGuid = quotaGuid;
+        this.quota = quota;
+        this.action = action;
+        this.vdsGroupId = vdsGroupId;
+        this.requestedCpu = requestedCpu;
+        this.requestedMemory = requestedMemory;
+    }
+
+    public Guid getVdsGroupId() {
+        return vdsGroupId;
+    }
+
+    public void setVdsGroupId(Guid vdsGroupId) {
+        this.vdsGroupId = vdsGroupId;
+    }
+
+    public int getRequestedCpu() {
+        return requestedCpu;
+    }
+
+    public void setRequestedCpu(int requestedCpu) {
+        this.requestedCpu = requestedCpu;
+    }
+
+    public long getRequestedMemory() {
+        return requestedMemory;
+    }
+
+    public void setRequestedMemory(long requestedMemory) {
+        this.requestedMemory = requestedMemory;
+    }
+
+    @Override
+    public QuotaVdsConsumptionParameter clone() {
+        return new QuotaVdsConsumptionParameter(
+                this.quotaGuid,
+                this.quota,
+                this.action,
+                this.vdsGroupId,
+                this.requestedCpu,
+                this.requestedMemory);
+    }
+
+}
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/quota/QuotaVdsDependent.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/quota/QuotaVdsDependent.java
new file mode 100644
index 0000000..d878b66
--- /dev/null
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/quota/QuotaVdsDependent.java
@@ -0,0 +1,24 @@
+package org.ovirt.engine.core.bll.quota;
+
+
+import java.util.List;
+
+/**
+ * Implement the QuotaVdsDependent interface to identify your command as one 
that dependent on
+ * Vds(vcpu and/or memory) Quota calculation in order to run. If a Command 
handles vcpus and memory -
+ * it should be QuotaVdsDependent.
+ */
+public interface QuotaVdsDependent {
+
+    /**
+     * Get a list of the vds consumption parameters.
+     * Override this method in order to set the vds consumption parameters for 
the quota check.
+     * This method is called by CommandBase during the canDoAction check in 
order to make sure the
+     * command has sufficient quota resources in order to run.
+     *
+     * return null if the command does consume any vds resources.
+     *
+     * @return - list of vds consumption parameters. null if no consumption.
+     */
+    public List<QuotaVdsConsumptionParameter> 
getQuotaVdsConsumptionParameters();
+}
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 aea2376..c685c1d 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
@@ -262,6 +262,7 @@
     private ActionGroup actionGroup;
     private boolean isActionMonitored = true;
     private static java.util.HashMap<Integer, VdcActionType> mappings = new 
HashMap<Integer, VdcActionType>();
+    private QuotaDependency quotaDependency;
 
     static {
         for (VdcActionType action : values()) {
@@ -270,24 +271,41 @@
     }
 
     private VdcActionType(int value) {
-        this(value, null);
+        this(value, (ActionGroup) null);
+    }
+
+    private VdcActionType(int value , QuotaDependency quotaDependency) {
+        this(value, null, quotaDependency);
     }
 
     private VdcActionType(int value, boolean isActionMonitored) {
-        this(value, null);
-        this.isActionMonitored = isActionMonitored;
+        this(value, null, isActionMonitored);
+    }
+
+    private VdcActionType(int value, boolean isActionMonitored, 
QuotaDependency quotaDependency) {
+        this(value, null, isActionMonitored, quotaDependency);
     }
 
     private VdcActionType(int value, ActionGroup actionGroupValue) {
-        intValue = value;
-        actionGroup = actionGroupValue;
+        this(value, actionGroupValue, true);
+    }
+
+    private VdcActionType(int value, ActionGroup actionGroupValue, 
QuotaDependency quotaDependency) {
+        this(value, actionGroupValue, true, quotaDependency);
     }
 
     private VdcActionType(int value, ActionGroup actionGroupValue, boolean 
isActionMonitored) {
-        intValue = value;
-        actionGroup = actionGroupValue;
-        this.isActionMonitored = isActionMonitored;
+        this(value, actionGroupValue, isActionMonitored, QuotaDependency.BOTH);
     }
+
+    private VdcActionType(int value, ActionGroup actionGroupValue, boolean 
isActionMonitored, QuotaDependency quotaDependency) {
+        this.intValue = value;
+        this.actionGroup = actionGroupValue;
+        this.isActionMonitored = isActionMonitored;
+        this.quotaDependency = quotaDependency;
+    }
+
+
 
     public int getValue() {
         return intValue;
@@ -305,4 +323,11 @@
         return mappings.get(value);
     }
 
+    public QuotaDependency getQuotaDependency() {
+        return this.quotaDependency;
+    }
+
+    public enum QuotaDependency {
+        NONE, STORAGE, VDS, BOTH
+    }
 }


--
To view, visit http://gerrit.ovirt.org/8775
To unsubscribe, visit http://gerrit.ovirt.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: Iebfc85569ba1aa8bd840f7239f83b7f921a4bd8e
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