def setup_single_job(self):
"Sets up a single job run with exit when done"
from .jobs import JobHandler
from . import config
def _run_job():
descriptors = dict((d.name, d) for d in config.get_jobs())
job = descriptors[self.options.onlyjob]
self._log_context = dict(job=job.name,
sysname=self.options.netbox.sysname)
job_handler = JobHandler(job.name, self.options.netbox.id,
plugins=job.plugins,
interval=job.interval)
deferred = maybeDeferred(job_handler.run)
deferred.addBoth(_log_job, job_handler, interval=job.interval)
deferred.addBoth(lambda x: reactor.stop())
def _log_job(result, handler, interval):
success = not isinstance(result, Failure)
schedule.log_job_externally(handler, success if result else None,
interval)
plugins.import_plugins()
self._logger.info("Running single %r job for %s",
self.options.onlyjob, self.options.netbox)
reactor.callWhenRunning(_run_job)
评论列表
文章目录