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