package org.ovirt.engine.core.bll.gluster;
import java.util.concurrent.TimeUnit;
import javax.annotation.PostConstruct;
import javax.enterprise.inject.Instance;
import javax.inject.Inject;
import javax.inject.Singleton;
import org.ovirt.engine.core.common.BackendService;
import org.ovirt.engine.core.common.config.Config;
import org.ovirt.engine.core.common.config.ConfigValues;
import org.ovirt.engine.core.common.mode.ApplicationMode;
import org.ovirt.engine.core.utils.timer.SchedulerUtilQuartzImpl;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@Singleton
public class GlusterJobsManager implements BackendService {
private static final Logger log = LoggerFactory.getLogger(GlusterJobsManager.class);
@Inject
private SchedulerUtilQuartzImpl scheduler;
@Inject
private Instance<GlusterJob> jobs;
@PostConstruct
public void init() {
if (!glusterModeSupported()) {
log.debug("Gluster mode not supported. Will not schedule jobs for refreshing Gluster data.");
return;
}
log.debug("Initializing Gluster Jobs Manager");
for (GlusterJob job : jobs) {
job.getSchedulingDetails().forEach(j -> scheduler.scheduleAFixedDelayJob(
job, j.getMethodName(), new Class[0], new Class[0], j.getDelay(), j.getDelay(), TimeUnit.SECONDS
));
}
}
private static boolean glusterModeSupported() {
Integer appMode = Config.<Integer> getValue(ConfigValues.ApplicationMode);
return (appMode & ApplicationMode.GlusterOnly.getValue()) > 0;
}
}