Roy Golan has uploaded a new change for review.

Change subject: core: Load BackendService instances instead
......................................................................

core: Load BackendService instances instead

- Use CDI programatic API to fetch instances, which initializes them if
  not exist.
- use internal loadService method to get a concise, clean and constant
  manner of service loading
- TODO every service maintainer/creator must follow the same loading
  manner unless special handling needed.

Change-Id: I542278b8511def02fa1b93bdfb0703c7ff2dd462
Signed-off-by: Roy Golan <rgo...@redhat.com>
---
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/EngineBackupAwarenessManager.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/InitBackendServicesOnStartupBean.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/hostdev/HostDeviceManager.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/pm/PmHealthCheckManager.java
M 
backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/ResourceManager.java
5 files changed, 35 insertions(+), 25 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/37/41037/1

diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/EngineBackupAwarenessManager.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/EngineBackupAwarenessManager.java
index 14a4f2d..17170a0 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/EngineBackupAwarenessManager.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/EngineBackupAwarenessManager.java
@@ -4,10 +4,12 @@
 import java.util.Date;
 import java.util.concurrent.TimeUnit;
 
+import javax.annotation.PostConstruct;
 import javax.inject.Inject;
 import javax.inject.Singleton;
 
 import org.ovirt.engine.core.common.AuditLogType;
+import org.ovirt.engine.core.common.BackendService;
 import org.ovirt.engine.core.common.businessentities.EngineBackupLog;
 import org.ovirt.engine.core.common.config.Config;
 import org.ovirt.engine.core.common.config.ConfigValues;
@@ -24,7 +26,7 @@
  * raise alerts for no backup or too old backup.
  */
 @Singleton
-public class EngineBackupAwarenessManager {
+public class EngineBackupAwarenessManager implements BackendService {
 
     private enum BackupScope {
         DB("db"),
@@ -51,7 +53,8 @@
     /**
      * Initializes the backup h Check Manager
      */
-    public void initialize() {
+    @PostConstruct
+    private void initialize() {
         log.info("Start initializing {}", getClass().getSimpleName());
         Integer backupCheckPeriodInHours = 
Config.<Integer>getValue(ConfigValues.BackupCheckPeriodInHours);
         // disable feature if value is negative
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/InitBackendServicesOnStartupBean.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/InitBackendServicesOnStartupBean.java
index 0ee566e..cdd5472 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/InitBackendServicesOnStartupBean.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/InitBackendServicesOnStartupBean.java
@@ -7,6 +7,7 @@
 import javax.ejb.DependsOn;
 import javax.ejb.Singleton;
 import javax.ejb.Startup;
+import javax.enterprise.inject.Instance;
 import javax.inject.Inject;
 
 import org.ovirt.engine.core.bll.aaa.SessionDataContainer;
@@ -20,6 +21,7 @@
 import org.ovirt.engine.core.bll.scheduling.SchedulingManager;
 import org.ovirt.engine.core.bll.storage.StoragePoolStatusHandler;
 import org.ovirt.engine.core.bll.tasks.CommandCoordinatorUtil;
+import org.ovirt.engine.core.common.BackendService;
 import org.ovirt.engine.core.common.action.MigrateVmParameters;
 import org.ovirt.engine.core.common.action.VdcActionType;
 import org.ovirt.engine.core.common.businessentities.VDS;
@@ -46,11 +48,7 @@
     private static final Logger log = 
LoggerFactory.getLogger(InitBackendServicesOnStartupBean.class);
 
     @Inject
-    private PmHealthCheckManager pmHealthCheckManager;
-
-    @Inject
-    private EngineBackupAwarenessManager engineBackupAwarenessManager;
-
+    private Instance<BackendService> services;
     @Inject
     private HostDeviceManager hostDeviceManager;
 
@@ -64,15 +62,10 @@
 
         try {
             // This must be done before starting to sample the hosts status 
from VDSM since the sampling will turn such host from Reboot to NonResponsive
-            List<VDS> hosts = DbFacade.getInstance().getVdsDao().getAll();
-            // Initialize Power Management Health Check
-            pmHealthCheckManager.initialize();
-            // recover from engine failure
-            pmHealthCheckManager.recover(hosts);
-            // Initialize backup awareness manager
-            engineBackupAwarenessManager.initialize();
+            loadService(PmHealthCheckManager.class);
+            loadService(EngineBackupAwarenessManager.class);
             CommandCoordinatorUtil.initAsyncTaskManager();
-            Injector.get(ResourceManager.class);
+            loadService(ResourceManager.class);
             OvfDataUpdater.getInstance().initOvfDataUpdater();
             SchedulingManager.getInstance().setMigrationHandler(new 
MigrationHandler() {
 
@@ -114,7 +107,7 @@
 
             
SessionDataContainer.getInstance().cleanupEngineSessionsOnStartup();
 
-            hostDeviceManager.init();
+            loadService(HostDeviceManager.class);
 
             new DwhHeartBeat().init();
 
@@ -124,5 +117,7 @@
         }
     }
 
-
+    private void loadService(Class<? extends BackendService> service) {
+        log.info("Start {} ", services.select(service).get());
+    }
 }
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/hostdev/HostDeviceManager.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/hostdev/HostDeviceManager.java
index 3319dd1..d291262 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/hostdev/HostDeviceManager.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/hostdev/HostDeviceManager.java
@@ -6,11 +6,13 @@
 import java.util.List;
 import java.util.Map;
 
+import javax.annotation.PostConstruct;
 import javax.enterprise.context.ApplicationScoped;
 import javax.inject.Inject;
 
 import org.ovirt.engine.core.bll.LockMessagesMatchUtil;
 import org.ovirt.engine.core.bll.interfaces.BackendInternal;
+import org.ovirt.engine.core.common.BackendService;
 import org.ovirt.engine.core.common.FeatureSupported;
 import org.ovirt.engine.core.common.action.VdcActionParametersBase;
 import org.ovirt.engine.core.common.action.VdcActionType;
@@ -31,7 +33,7 @@
 import org.ovirt.engine.core.utils.lock.LockManager;
 
 @ApplicationScoped
-public class HostDeviceManager {
+public class HostDeviceManager implements BackendService {
 
     @Inject
     private VdsDynamicDAO hostDynamicDao;
@@ -48,7 +50,8 @@
     @Inject
     private BackendInternal backend;
 
-    public void init() {
+    @PostConstruct
+    private void init() {
         ArrayList<VdcActionParametersBase> parameters = new ArrayList<>();
         // It is sufficient to refresh only the devices of 'UP' hosts since 
other hosts
         // will have their devices refreshed in InitVdsOnUpCommand
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/pm/PmHealthCheckManager.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/pm/PmHealthCheckManager.java
index 0b38e08..cc62922 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/pm/PmHealthCheckManager.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/pm/PmHealthCheckManager.java
@@ -7,6 +7,7 @@
 import java.util.Map.Entry;
 import java.util.concurrent.TimeUnit;
 
+import javax.annotation.PostConstruct;
 import javax.inject.Inject;
 import javax.inject.Singleton;
 
@@ -14,6 +15,7 @@
 import org.ovirt.engine.core.bll.job.ExecutionHandler;
 import org.ovirt.engine.core.bll.pm.PowerManagementHelper.AgentsIterator;
 import org.ovirt.engine.core.common.AuditLogType;
+import org.ovirt.engine.core.common.BackendService;
 import org.ovirt.engine.core.common.action.FenceVdsActionParameters;
 import org.ovirt.engine.core.common.action.VdcActionType;
 import org.ovirt.engine.core.common.action.VdcReturnValueBase;
@@ -27,6 +29,7 @@
 import org.ovirt.engine.core.dal.dbbroker.DbFacade;
 import org.ovirt.engine.core.dal.dbbroker.auditloghandling.AlertDirector;
 import org.ovirt.engine.core.dal.dbbroker.auditloghandling.AuditLogDirector;
+import org.ovirt.engine.core.dao.VdsDAO;
 import org.ovirt.engine.core.utils.ThreadUtils;
 import org.ovirt.engine.core.utils.linq.LinqUtils;
 import org.ovirt.engine.core.utils.linq.Predicate;
@@ -41,30 +44,35 @@
  * raise alerts for failed operations.
  */
 @Singleton
-public class PmHealthCheckManager {
+public class PmHealthCheckManager implements BackendService {
 
     private static final Logger log = 
LoggerFactory.getLogger(PmHealthCheckManager.class);
     private boolean active = false;
 
     @Inject
     private AuditLogDirector auditLogDirector;
+    @Inject
+    private VdsDAO vdsDAO;
 
     /**
      * Initializes the PM Health Check Manager
      */
-    public void initialize() {
+    @PostConstruct
+    private void initialize() {
         if(Config.<Boolean>getValue(ConfigValues.PMHealthCheckEnabled)) {
             log.info("Start initializing {}", getClass().getSimpleName());
             Integer pmHealthCheckInterval = Config.<Integer> 
getValue(ConfigValues.PMHealthCheckIntervalInSec);
             SchedulerUtilQuartzImpl.getInstance().scheduleAFixedDelayJob(this,
                     "pmHealthCheck",
-                    new Class[]{},
-                    new Object[]{},
+                    new Class[] {},
+                    new Object[] {},
                     pmHealthCheckInterval,
                     pmHealthCheckInterval,
                     TimeUnit.SECONDS);
-            log.info("Finished initializing {}", getClass().getSimpleName());
         }
+        // recover from engine failure
+        recover(vdsDAO.getAll());
+        log.info("Finished initializing {}", getClass().getSimpleName());
     }
 
     @OnTimerMethodAnnotation("pmHealthCheck")
diff --git 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/ResourceManager.java
 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/ResourceManager.java
index 942e8ca..31028e0 100644
--- 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/ResourceManager.java
+++ 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/ResourceManager.java
@@ -20,6 +20,7 @@
 
 import org.apache.commons.lang.StringUtils;
 import org.ovirt.engine.core.common.AuditLogType;
+import org.ovirt.engine.core.common.BackendService;
 import org.ovirt.engine.core.common.businessentities.IVdsEventListener;
 import org.ovirt.engine.core.common.businessentities.VDS;
 import org.ovirt.engine.core.common.businessentities.VDSStatus;
@@ -58,7 +59,7 @@
 import org.slf4j.LoggerFactory;
 
 @Singleton
-public class ResourceManager {
+public class ResourceManager implements BackendService {
 
     @Inject
     private BeanManager beanManager;


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

Gerrit-MessageType: newchange
Gerrit-Change-Id: I542278b8511def02fa1b93bdfb0703c7ff2dd462
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Roy Golan <rgo...@redhat.com>
_______________________________________________
Engine-patches mailing list
Engine-patches@ovirt.org
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to