Hello Eli Mesika, Omer Frenkel, Arik Hadas,

I'd like you to do a code review.  Please visit

    https://gerrit.ovirt.org/41041

to review the following change.

Change subject: core: Inject QuotaManager and make it a BackendService
......................................................................

core: Inject QuotaManager and make it a BackendService

Change-Id: I272f22c4fdbcb96d27e9d5c84a679af4b9f80801
Signed-off-by: Roy Golan <rgo...@redhat.com>
---
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/Backend.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/CommandBase.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GetQuotasConsumptionForCurrentUserQuery.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ProcessDownVmCommand.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RemoveQuotaCommand.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RemoveSnapshotCommand.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/SearchQuery.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/UpdateQuotaCommand.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/quota/QuotaManager.java
M 
backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/quota/QuotaManagerTest.java
10 files changed, 48 insertions(+), 23 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/41/41041/1

diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/Backend.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/Backend.java
index aa91d18..dc6a690 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/Backend.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/Backend.java
@@ -262,11 +262,8 @@
 
         loadService(VmPoolMonitor.class);
         loadService(AutoStartVmsRunner.class);
+        loadService(QuotaManager.class);
 
-        int quotaCacheIntervalInMinutes = 
Config.<Integer>getValue(ConfigValues.QuotaCacheIntervalInMinutes);
-        
SchedulerUtilQuartzImpl.getInstance().scheduleAFixedDelayJob(QuotaManager.getInstance(),
-                "updateQuotaCache", new Class[] {}, new Object[] {},
-                1, quotaCacheIntervalInMinutes, TimeUnit.MINUTES);
         //initializes attestation
         initAttestation();
         updatePredefinedIcons();
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 ba4ea73..4e1e0aa 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
@@ -13,6 +13,7 @@
 
 import javax.annotation.PostConstruct;
 import javax.ejb.TransactionRolledbackLocalException;
+import javax.inject.Inject;
 import javax.transaction.Status;
 import javax.transaction.SystemException;
 import javax.transaction.Transaction;
@@ -120,6 +121,8 @@
     private TransactionScopeOption scope;
     private TransactionScopeOption endActionScope;
     private List<QuotaConsumptionParameter> consumptionParameters;
+    @Inject
+    private QuotaManager quotaManager;
     /** Indicates whether the acquired locks should be released after the 
execute method or not */
     private boolean releaseLocksAtEndOfExecute = true;
     /** Object which is representing a lock that some commands will acquire */
@@ -2108,7 +2111,7 @@
     }
 
     protected QuotaManager getQuotaManager() {
-        return QuotaManager.getInstance();
+        return quotaManager;
     }
 
     protected List<SPMAsyncTaskHandler> getTaskHandlers() {
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GetQuotasConsumptionForCurrentUserQuery.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GetQuotasConsumptionForCurrentUserQuery.java
index 1eac907..f0b3fa9 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GetQuotasConsumptionForCurrentUserQuery.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GetQuotasConsumptionForCurrentUserQuery.java
@@ -4,9 +4,14 @@
 import org.ovirt.engine.core.common.businessentities.Quota;
 import org.ovirt.engine.core.common.queries.VdcQueryParametersBase;
 
+import javax.inject.Inject;
 import java.util.List;
 
 public class GetQuotasConsumptionForCurrentUserQuery<P extends 
VdcQueryParametersBase> extends QueriesCommandBase<P> {
+
+    @Inject
+    private QuotaManager quotaManager;
+
     public GetQuotasConsumptionForCurrentUserQuery(P parameters) {
         super(parameters);
     }
@@ -14,6 +19,6 @@
     @Override
     protected void executeQueryCommand() {
         List<Quota> quotaList = 
getDbFacade().getQuotaDao().getQuotaByAdElementId(getUser().getId(), null, 
true);
-        
getQueryReturnValue().setReturnValue(QuotaManager.getInstance().generatePerUserUsageReport(quotaList));
+        
getQueryReturnValue().setReturnValue(quotaManager.generatePerUserUsageReport(quotaList));
     }
 }
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ProcessDownVmCommand.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ProcessDownVmCommand.java
index 49ac60b..9efc519 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ProcessDownVmCommand.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ProcessDownVmCommand.java
@@ -10,7 +10,6 @@
 import org.ovirt.engine.core.bll.hostdev.HostDeviceManager;
 import org.ovirt.engine.core.bll.job.ExecutionHandler;
 import org.ovirt.engine.core.bll.network.host.HostNicVfsConfigHelper;
-import org.ovirt.engine.core.bll.quota.QuotaManager;
 import org.ovirt.engine.core.bll.snapshots.SnapshotsManager;
 import org.ovirt.engine.core.bll.utils.PermissionSubject;
 import org.ovirt.engine.core.common.action.ProcessDownVmParameters;
@@ -82,7 +81,7 @@
             removeVmStatelessImages();
         }
 
-        QuotaManager.getInstance().rollbackQuotaByVmId(getVmId());
+        getQuotaManager().rollbackQuotaByVmId(getVmId());
         removeStatelessVmUnmanagedDevices();
 
         boolean vmHasDirectPassthroughDevices = releaseUsedHostDevices();
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RemoveQuotaCommand.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RemoveQuotaCommand.java
index 4f25b03..0042e74 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RemoveQuotaCommand.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RemoveQuotaCommand.java
@@ -3,7 +3,6 @@
 import java.util.Collections;
 import java.util.List;
 
-import org.ovirt.engine.core.bll.quota.QuotaManager;
 import org.ovirt.engine.core.bll.utils.PermissionSubject;
 import org.ovirt.engine.core.common.AuditLogType;
 import org.ovirt.engine.core.common.VdcObjectType;
@@ -45,7 +44,7 @@
     @Override
     protected void executeCommand() {
         getQuotaDAO().remove(getParameters().getQuotaId());
-        
QuotaManager.getInstance().removeQuotaFromCache(getQuota().getStoragePoolId(), 
getParameters().getQuotaId());
+        getQuotaManager().removeQuotaFromCache(getQuota().getStoragePoolId(), 
getParameters().getQuotaId());
         getReturnValue().setSucceeded(true);
     }
 
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RemoveSnapshotCommand.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RemoveSnapshotCommand.java
index 8ce9671..a4fd8b6 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RemoveSnapshotCommand.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RemoveSnapshotCommand.java
@@ -8,7 +8,6 @@
 
 import org.apache.commons.lang.StringUtils;
 import org.ovirt.engine.core.bll.quota.QuotaConsumptionParameter;
-import org.ovirt.engine.core.bll.quota.QuotaManager;
 import org.ovirt.engine.core.bll.quota.QuotaStorageDependent;
 import org.ovirt.engine.core.bll.snapshots.SnapshotsValidator;
 import org.ovirt.engine.core.bll.tasks.CommandCoordinatorUtil;
@@ -200,7 +199,7 @@
             if (dest != null) {
                 quotasToRemoveFromCache.add(dest.getQuotaId());
             }
-            
QuotaManager.getInstance().removeQuotaFromCache(getStoragePoolId(), 
quotasToRemoveFromCache);
+            getQuotaManager().removeQuotaFromCache(getStoragePoolId(), 
quotasToRemoveFromCache);
         }
     }
 
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/SearchQuery.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/SearchQuery.java
index 66b0372..de3bba0 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/SearchQuery.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/SearchQuery.java
@@ -54,8 +54,12 @@
 import org.ovirt.engine.core.utils.linq.Function;
 import org.ovirt.engine.core.utils.linq.LinqUtils;
 
+import javax.inject.Inject;
+
 public class SearchQuery<P extends SearchParameters> extends 
QueriesCommandBase<P> {
     private static final HashMap<String, QueryData> mQueriesCache = new 
HashMap<String, QueryData>();
+    @Inject
+    private QuotaManager quotaManager;
 
     public SearchQuery(P parameters) {
         super(parameters);
@@ -296,7 +300,7 @@
 
     private List<Quota> searchQuota() {
         List<Quota> quotaList = genericSearch(getDbFacade().getQuotaDao(), 
true);
-        QuotaManager.getInstance().updateUsage(quotaList);
+        quotaManager.updateUsage(quotaList);
         return quotaList;
     }
 
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/UpdateQuotaCommand.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/UpdateQuotaCommand.java
index 69742b9..4b5c7b0 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/UpdateQuotaCommand.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/UpdateQuotaCommand.java
@@ -3,7 +3,6 @@
 import java.util.Collections;
 import java.util.List;
 
-import org.ovirt.engine.core.bll.quota.QuotaManager;
 import org.ovirt.engine.core.bll.utils.PermissionSubject;
 import org.ovirt.engine.core.common.AuditLogType;
 import org.ovirt.engine.core.common.VdcObjectType;
@@ -50,7 +49,7 @@
     }
 
     protected void removeQuotaFromCache() {
-        
QuotaManager.getInstance().removeQuotaFromCache(getQuota().getStoragePoolId(), 
getQuota().getId());
+        getQuotaManager().removeQuotaFromCache(getQuota().getStoragePoolId(), 
getQuota().getId());
     }
 
     @Override
@@ -94,7 +93,7 @@
 
     protected void afterUpdate() {
         boolean newSizeUnderCurrentConsumption =
-                
QuotaManager.getInstance().isStorageQuotaExceeded(getQuota().getId());
+                getQuotaManager().isStorageQuotaExceeded(getQuota().getId());
 
         if (newSizeUnderCurrentConsumption) {
             AuditLogableBase logable = new AuditLogableBase();
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/quota/QuotaManager.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/quota/QuotaManager.java
index 309a2e0..971bb81 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/quota/QuotaManager.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/quota/QuotaManager.java
@@ -5,9 +5,11 @@
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.concurrent.TimeUnit;
 import java.util.concurrent.locks.ReentrantReadWriteLock;
 
 import org.ovirt.engine.core.common.AuditLogType;
+import org.ovirt.engine.core.common.BackendService;
 import org.ovirt.engine.core.common.businessentities.Quota;
 import org.ovirt.engine.core.common.businessentities.QuotaEnforcementTypeEnum;
 import org.ovirt.engine.core.common.businessentities.QuotaStorage;
@@ -24,12 +26,18 @@
 import org.ovirt.engine.core.dal.dbbroker.DbFacade;
 import org.ovirt.engine.core.dal.dbbroker.auditloghandling.AuditLogableBase;
 import org.ovirt.engine.core.dao.QuotaDAO;
+import org.ovirt.engine.core.di.qualifier.InMemory;
 import org.ovirt.engine.core.utils.timer.OnTimerMethodAnnotation;
+import org.ovirt.engine.core.utils.timer.SchedulerUtil;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-public class QuotaManager {
-    private static final QuotaManager INSTANCE = new QuotaManager();
+import javax.annotation.PostConstruct;
+import javax.inject.Inject;
+import javax.inject.Singleton;
+
+@Singleton
+public class QuotaManager implements BackendService {
     private final ReentrantReadWriteLock lock = new ReentrantReadWriteLock();
     private final Logger log = LoggerFactory.getLogger(QuotaManager.class);
     private HashMap<Guid, Map<Guid, Quota>> storagePoolQuotaMap = new 
HashMap<Guid, Map<Guid, Quota>>();
@@ -37,13 +45,25 @@
     private final QuotaManagerAuditLogger quotaManagerAuditLogger = new 
QuotaManagerAuditLogger();
     private final List<QuotaConsumptionParameter> corruptedParameters = new 
ArrayList<QuotaConsumptionParameter>();
     private final List<Integer> nonCountableQutoaVmStatusesList = new 
ArrayList<Integer>();
+    @Inject @InMemory
+    private SchedulerUtil schedulerUtil;
 
-    // Forbid the creation of new instances outside this class
-    private QuotaManager() {
+    // constructor is exposed only for Java test. //TODO remove it when 
arquillian test used.
+    protected QuotaManager() {
     }
 
-    public static QuotaManager getInstance() {
-        return INSTANCE;
+    @PostConstruct
+    private void init() {
+        int quotaCacheIntervalInMinutes = 
Config.<Integer>getValue(ConfigValues.QuotaCacheIntervalInMinutes);
+        schedulerUtil.scheduleAFixedDelayJob(
+                this,
+                "updateQuotaCache",
+                new Class[] {},
+                new Object[] {},
+                1,
+                quotaCacheIntervalInMinutes,
+                TimeUnit.MINUTES
+        );
     }
 
     protected QuotaManagerAuditLogger getQuotaManagerAuditLogger() {
diff --git 
a/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/quota/QuotaManagerTest.java
 
b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/quota/QuotaManagerTest.java
index c5bb523..11a4d04 100644
--- 
a/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/quota/QuotaManagerTest.java
+++ 
b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/quota/QuotaManagerTest.java
@@ -81,7 +81,7 @@
     );
 
     @Spy
-    private QuotaManager quotaManager = QuotaManager.getInstance();
+    private QuotaManager quotaManager = new QuotaManager();
     @Spy
     private QuotaManagerAuditLogger quotaManagerAuditLogger = 
quotaManager.getQuotaManagerAuditLogger();
 


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

Gerrit-MessageType: newchange
Gerrit-Change-Id: I272f22c4fdbcb96d27e9d5c84a679af4b9f80801
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Roy Golan <rgo...@redhat.com>
Gerrit-Reviewer: Arik Hadas <aha...@redhat.com>
Gerrit-Reviewer: Eli Mesika <emes...@redhat.com>
Gerrit-Reviewer: Omer Frenkel <ofren...@redhat.com>
_______________________________________________
Engine-patches mailing list
Engine-patches@ovirt.org
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to