Ejegg has uploaded a new change for review. ( https://gerrit.wikimedia.org/r/368217 )
Change subject: WIP slow-start jobs ...................................................................... WIP slow-start jobs Add a config key 'slow-start' to define an alternate list of commands to be run when --slow-start option is given on command line TODO: doc, tests Bug: T171873 Change-Id: Ie0e433331d1984b943adeaefed989e1f215a08c1 --- M bin/run-job M processcontrol/job_spec.py M processcontrol/runner.py 3 files changed, 23 insertions(+), 5 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/wikimedia/fundraising/process-control refs/changes/17/368217/1 diff --git a/bin/run-job b/bin/run-job index 1d4d86a..ab6bb27 100755 --- a/bin/run-job +++ b/bin/run-job @@ -50,7 +50,14 @@ job_group.add_argument("job", nargs="?", help="Run a given job.", type=str) job_group.add_argument("-j", "--job", dest="job_name", help="Run a given job.", type=str) parser.add_argument("-l", "--list-jobs", help="Print a list of available jobs.", action='store_true') - parser.add_argument("-s", "--status", help="Print status of all jobs", action='store_true') + parser.add_argument("-s", "--status", help="Print status of all jobs.", action='store_true') + parser.add_argument( + "-w", + "--slow-start", + dest="slow_start", + help="Slow start a job, if a slow-start configuration has been supplied.", + action="store_true" + ) # TODO: --kill-job, --disable-group, --enable-group args = parser.parse_args() @@ -61,8 +68,10 @@ job_name = args.job if job_name is not None: job = job_spec.load(job_name) + if args.slow_start: + assert "slow_start_commands" in job, "Cannot slow start: job config missing slow-start key" runner = runner.JobRunner(job) - runner.run() + runner.run(args) if args.list_jobs: list_jobs(False) diff --git a/processcontrol/job_spec.py b/processcontrol/job_spec.py index 93f095c..2c96a40 100644 --- a/processcontrol/job_spec.py +++ b/processcontrol/job_spec.py @@ -60,6 +60,9 @@ self.commands = self.config.get_as_list("command") + if self.config.has("slow_start"): + self.slow_start_commands = self.config.get_as_list("slow_start") + if self.config.has("tag"): self.tags = self.config.get_as_list("tag") else: diff --git a/processcontrol/runner.py b/processcontrol/runner.py index c9e1cef..15b138d 100644 --- a/processcontrol/runner.py +++ b/processcontrol/runner.py @@ -22,7 +22,7 @@ self.killer_was_me = False self.failure_reason = None - def run(self): + def run(self, run_job_options): # Check that we are the service user. service_user = str(self.global_config.get("user")) if service_user.isdigit(): @@ -46,8 +46,14 @@ try: lock.begin(slug=self.job.slug) - config.log.info("Running job {name} ({slug})".format(name=self.job.name, slug=self.job.slug)) - for command_line in self.job.commands: + if run_job_options.slow_start: + commands = self.job.slow_start_commands + verb = "Slow starting" + else: + commands = self.job.commands + verb = "Running" + config.log.info("{verb} job {name} ({slug})".format(verb=verb, name=self.job.name, slug=self.job.slug)) + for command_line in commands: return_code = self.run_command(command_line) if return_code != 0: self.fail_exitcode(return_code) -- To view, visit https://gerrit.wikimedia.org/r/368217 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ie0e433331d1984b943adeaefed989e1f215a08c1 Gerrit-PatchSet: 1 Gerrit-Project: wikimedia/fundraising/process-control Gerrit-Branch: master Gerrit-Owner: Ejegg <ej...@ejegg.com> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits