Hello Eli Mesika, Omer Frenkel, Arik Hadas, I'd like you to do a code review. Please visit
https://gerrit.ovirt.org/41039 to review the following change. Change subject: core: Make VmpoolMonitor a BackendService and a CDI bean ...................................................................... core: Make VmpoolMonitor a BackendService and a CDI bean Change-Id: Icaadcc92ae352e8a775dee321b70db0d3dab11f3 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/UpdateVmPoolWithVmsCommand.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VmPoolMonitor.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/interfaces/BackendCommandObjectsHandler.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/interfaces/BackendInternal.java 5 files changed, 38 insertions(+), 25 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/39/41039/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 c39ef25..a58ac91 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 @@ -104,7 +104,6 @@ private ErrorTranslator _vdsErrorsTranslator; private DateTime _startedAt; private static boolean firstInitialization = true; - private String poolMonitoringJobId; @Inject Injector injector; @Inject @@ -200,14 +199,10 @@ } // initialize CDI services loadService(CacheManager.class); - // initialize configuration utils to use DB Config.setConfigUtils(new DBConfigUtils()); // we need to initialize os-info before the compensations take place because of VmPoolCommandBase#osRepository initOsRepository(); - - //TODO temporal solution DbFacade in Utils - SimpleDependecyInjector.getInstance().bind(dbFacade); // When getting a proxy to this bean using JBoss embedded, the initialize method is called for each method // invocation on the proxy, as it is called by setup method which is @PostConstruct - the initialized flag @@ -265,12 +260,7 @@ // Set start-up time _startedAt = DateTime.getNow(); - int vmPoolMonitorIntervalInMinutes = Config.<Integer>getValue(ConfigValues.VmPoolMonitorIntervalInMinutes); - poolMonitoringJobId = - SchedulerUtilQuartzImpl.getInstance().scheduleAFixedDelayJob(new VmPoolMonitor(), - "managePrestartedVmsInAllVmPools", new Class[] {}, new Object[] {}, - vmPoolMonitorIntervalInMinutes, - vmPoolMonitorIntervalInMinutes, TimeUnit.MINUTES); + loadService(VmPoolMonitor.class); int autoStartVmsRunnerIntervalInSeconds = Config.<Integer>getValue(ConfigValues.AutoStartVmsRunnerIntervalInSeconds); @@ -691,12 +681,6 @@ protected QueriesCommandBase<?> createQueryCommand(VdcQueryType actionType, VdcQueryParametersBase parameters, EngineContext engineContext) { return CommandsFactory.createQueryCommand(actionType, parameters, engineContext); - } - - @Override - @ExcludeClassInterceptors - public void triggerPoolMonitoringJob() { - SchedulerUtilQuartzImpl.getInstance().triggerJob(poolMonitoringJobId); } private void initVmPropertiesUtils() { diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/UpdateVmPoolWithVmsCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/UpdateVmPoolWithVmsCommand.java index cc1c8d4..e46cc71 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/UpdateVmPoolWithVmsCommand.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/UpdateVmPoolWithVmsCommand.java @@ -11,11 +11,15 @@ import org.ovirt.engine.core.compat.Guid; import org.ovirt.engine.core.dal.dbbroker.auditloghandling.AuditLogableBase; +import javax.inject.Inject; + @DisableInPrepareMode @NonTransactiveCommandAttribute(forceCompensation = true) public class UpdateVmPoolWithVmsCommand<T extends AddVmPoolWithVmsParameters> extends CommonVmPoolWithVmsCommand<T> implements RenamedEntityInfoProvider{ private VmPool oldPool; + @Inject + private VmPoolMonitor vmPoolMonitor; /** * Constructor for command creation when compensation is applied on startup @@ -67,7 +71,7 @@ @Override protected void executeCommand() { super.executeCommand(); - Backend.getInstance().triggerPoolMonitoringJob(); + vmPoolMonitor.triggerPoolMonitoringJob(); } @Override diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VmPoolMonitor.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VmPoolMonitor.java index dfb59ba..e65b24b 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VmPoolMonitor.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VmPoolMonitor.java @@ -1,9 +1,11 @@ package org.ovirt.engine.core.bll; import java.util.List; +import java.util.concurrent.TimeUnit; import org.ovirt.engine.core.bll.job.ExecutionHandler; import org.ovirt.engine.core.common.AuditLogType; +import org.ovirt.engine.core.common.BackendService; import org.ovirt.engine.core.common.VdcObjectType; import org.ovirt.engine.core.common.action.RunVmParams; import org.ovirt.engine.core.common.action.VdcActionType; @@ -19,12 +21,36 @@ import org.ovirt.engine.core.dal.dbbroker.DbFacade; import org.ovirt.engine.core.dal.dbbroker.auditloghandling.AuditLogDirector; import org.ovirt.engine.core.dal.dbbroker.auditloghandling.AuditLogableBase; +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 VmPoolMonitor { +import javax.annotation.PostConstruct; +import javax.inject.Inject; +import javax.inject.Singleton; + +@Singleton +public class VmPoolMonitor implements BackendService { private static final Logger log = LoggerFactory.getLogger(VmPoolMonitor.class); + + private String poolMonitoringJobId; + @Inject @InMemory + private SchedulerUtil schedulerUtil; + @PostConstruct + private void init() { + int vmPoolMonitorIntervalInMinutes = Config.<Integer>getValue(ConfigValues.VmPoolMonitorIntervalInMinutes); + poolMonitoringJobId = + schedulerUtil.scheduleAFixedDelayJob( + this, + "managePrestartedVmsInAllVmPools", + new Class[] {}, + new Object[] {}, + vmPoolMonitorIntervalInMinutes, + vmPoolMonitorIntervalInMinutes, + TimeUnit.MINUTES); + } /** * Goes over each Vmpool, and makes sure there are at least as much prestarted Vms as defined in the prestarted_vms @@ -38,6 +64,10 @@ } } + public void triggerPoolMonitoringJob() { + schedulerUtil.triggerJob(poolMonitoringJobId); + } + /** * Checks how many prestarted vms are missing in the pool, and attempts to prestart either that amount or BATCH_SIZE * (the minimum between the two). diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/interfaces/BackendCommandObjectsHandler.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/interfaces/BackendCommandObjectsHandler.java index 6770fae..b7fc080 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/interfaces/BackendCommandObjectsHandler.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/interfaces/BackendCommandObjectsHandler.java @@ -12,7 +12,7 @@ * is desired that in case a command should be created it should be still done by {@link CommandsFactory} at the * {@link Backend} bean code. */ -public interface BackendCommandObjectsHandler { +public interface BackendCommandObjectsHandler { /** * Creates an instance of the action. This should be used by {@code CommandBase} to insert place holders for tasks diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/interfaces/BackendInternal.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/interfaces/BackendInternal.java index a34511d..5b82bcf 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/interfaces/BackendInternal.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/interfaces/BackendInternal.java @@ -80,11 +80,6 @@ DateTime getStartedAt(); - /** - * Execute the pool monitoring job immediately - */ - void triggerPoolMonitoringJob(); - VdcQueryReturnValue runInternalQuery(VdcQueryType queryType, VdcQueryParametersBase queryParameters); } -- To view, visit https://gerrit.ovirt.org/41039 To unsubscribe, visit https://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Icaadcc92ae352e8a775dee321b70db0d3dab11f3 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