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 <[email protected]>
---
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 <[email protected]>
Gerrit-Reviewer: Arik Hadas <[email protected]>
Gerrit-Reviewer: Eli Mesika <[email protected]>
Gerrit-Reviewer: Omer Frenkel <[email protected]>
_______________________________________________
Engine-patches mailing list
[email protected]
http://lists.ovirt.org/mailman/listinfo/engine-patches