Sahina Bose has uploaded a new change for review. Change subject: tools: [WIP] Expose AutoRecoverySchedule as engine-config parameter ......................................................................
tools: [WIP] Expose AutoRecoverySchedule as engine-config parameter AutoRecoverySchedule parameter controls the frequency at which a non-responding host is tried to be auto recovered. This patch exposes this parameter in the engine-config tool Change-Id: Id85897bae3a5d373bf74aa73151bc481a1aef0e3 Bug-Url: https://bugzilla.redhat.com/975399 Signed-off-by: Sahina Bose <[email protected]> --- M backend/manager/modules/scheduler/src/main/java/org/ovirt/engine/core/utils/timer/SchedulerUtil.java M backend/manager/modules/scheduler/src/main/java/org/ovirt/engine/core/utils/timer/SchedulerUtilQuartzImpl.java M backend/manager/tools/pom.xml A backend/manager/tools/src/main/java/org/ovirt/engine/core/config/entity/helper/CronExpressionValueHelper.java M packaging/etc/engine-config/engine-config.properties 5 files changed, 69 insertions(+), 1 deletion(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/52/21452/1 diff --git a/backend/manager/modules/scheduler/src/main/java/org/ovirt/engine/core/utils/timer/SchedulerUtil.java b/backend/manager/modules/scheduler/src/main/java/org/ovirt/engine/core/utils/timer/SchedulerUtil.java index b56abf6..4911932 100644 --- a/backend/manager/modules/scheduler/src/main/java/org/ovirt/engine/core/utils/timer/SchedulerUtil.java +++ b/backend/manager/modules/scheduler/src/main/java/org/ovirt/engine/core/utils/timer/SchedulerUtil.java @@ -169,4 +169,6 @@ String configurableDelayKeyName, TimeUnit timeUnit); + Boolean isValidCronExpression(String cronExpression); + } diff --git a/backend/manager/modules/scheduler/src/main/java/org/ovirt/engine/core/utils/timer/SchedulerUtilQuartzImpl.java b/backend/manager/modules/scheduler/src/main/java/org/ovirt/engine/core/utils/timer/SchedulerUtilQuartzImpl.java index 82e5280..075d9ee 100644 --- a/backend/manager/modules/scheduler/src/main/java/org/ovirt/engine/core/utils/timer/SchedulerUtilQuartzImpl.java +++ b/backend/manager/modules/scheduler/src/main/java/org/ovirt/engine/core/utils/timer/SchedulerUtilQuartzImpl.java @@ -29,6 +29,7 @@ import org.ovirt.engine.core.utils.ejb.BeanProxyType; import org.ovirt.engine.core.utils.ejb.BeanType; import org.ovirt.engine.core.utils.ejb.EjbUtils; +import org.quartz.CronExpression; import org.quartz.JobDataMap; import org.quartz.JobDetail; import org.quartz.Scheduler; @@ -71,6 +72,7 @@ * This method is called upon the bean creation as part * of the management Service bean lifecycle. */ + @Override @PostConstruct public void create(){ setup(); @@ -326,6 +328,7 @@ * @param newTrigger * - the new Trigger to associate the job with */ + @Override public void rescheduleAJob(String oldTriggerName, String oldTriggerGroup, Trigger newTrigger) { try { sched.rescheduleJob(triggerKey(oldTriggerName, oldTriggerGroup), newTrigger); @@ -423,6 +426,7 @@ /** * @return the quartz scheduler wrapped by this SchedulerUtil */ + @Override public Scheduler getRawScheduler() { return sched; } @@ -447,4 +451,9 @@ return name; } + @Override + public Boolean isValidCronExpression(String cronExpression) { + return CronExpression.isValidExpression(cronExpression); + } + } diff --git a/backend/manager/tools/pom.xml b/backend/manager/tools/pom.xml index 0f8fe63..b197ddd 100644 --- a/backend/manager/tools/pom.xml +++ b/backend/manager/tools/pom.xml @@ -33,6 +33,12 @@ </dependency> <dependency> + <groupId>${engine.groupId}</groupId> + <artifactId>scheduler</artifactId> + <version>${engine.version}</version> + </dependency> + + <dependency> <groupId>commons-lang</groupId> <artifactId>commons-lang</artifactId> </dependency> diff --git a/backend/manager/tools/src/main/java/org/ovirt/engine/core/config/entity/helper/CronExpressionValueHelper.java b/backend/manager/tools/src/main/java/org/ovirt/engine/core/config/entity/helper/CronExpressionValueHelper.java new file mode 100644 index 0000000..8944431 --- /dev/null +++ b/backend/manager/tools/src/main/java/org/ovirt/engine/core/config/entity/helper/CronExpressionValueHelper.java @@ -0,0 +1,50 @@ +package org.ovirt.engine.core.config.entity.helper; + + +import org.ovirt.engine.core.config.EngineConfigCLIParser; +import org.ovirt.engine.core.config.entity.ConfigKey; +import org.ovirt.engine.core.utils.timer.SchedulerUtil; +import org.ovirt.engine.core.utils.timer.SchedulerUtilQuartzImpl; + +public class CronExpressionValueHelper extends BaseValueHelper { + + @Override + public String getValue(String value) { + return value; + } + + @Override + public String setValue(String value) { + return value; + } + + @Override + public ValidationResult validate(ConfigKey key, String value) { + boolean isValid = false; + if (key.getValidValues() != null) { + isValid = key.getValidValues().contains(value); + } else { + SchedulerUtil scheduler = SchedulerUtilQuartzImpl.getInstance(); + isValid = scheduler.isValidCronExpression(value); + } + + return new ValidationResult(isValid, getHelpNote(key)); + + } + + @Override + public void setParser(EngineConfigCLIParser parser) { + // NOP + } + + @Override + public String getHelpNote(ConfigKey key) { + return getHelpNoteByType(key, "cron expression") + .concat( + String.format("%n%n%n" + + "### Examples:%n" + + "### Every 5 minutes = 0 0/5 * * * ? %n" + + "### Every 10 seconds = 0/10 * * * * ? %n")); + } + +} diff --git a/packaging/etc/engine-config/engine-config.properties b/packaging/etc/engine-config/engine-config.properties index a41c51d..ecf6c5b 100644 --- a/packaging/etc/engine-config/engine-config.properties +++ b/packaging/etc/engine-config/engine-config.properties @@ -345,4 +345,5 @@ HostPreparingForMaintenanceIdleTime.description="Time to wait in seconds to determine if host is idling in status PreparingForMaintenace. When that interval is met it triggers another attempt to move the host to Maintenance" UseFqdnForRdpIfAvailable.type=Boolean UseFqdnForRdpIfAvailable.description="If this option is enabled, the RDP console will use the FQDN, which is reported by the Guest Agent, if it is available and use this to establish the RDP connection." - +AutoRecoverySchedule.type=CronExpression +AutoRecoverySchedule.description=The frequency at which autorecovery jobs are run for non-responsive hosts -- To view, visit http://gerrit.ovirt.org/21452 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Id85897bae3a5d373bf74aa73151bc481a1aef0e3 Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Sahina Bose <[email protected]> _______________________________________________ Engine-patches mailing list [email protected] http://lists.ovirt.org/mailman/listinfo/engine-patches
