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

Reply via email to