Awight has uploaded a new change for review. ( https://gerrit.wikimedia.org/r/345062 )
Change subject: --kill-job ...................................................................... --kill-job Change-Id: Ia181aa495eabf34242293cb60904594ee3766b5c --- M bin/run-job M processcontrol/job_wrapper.py M processcontrol/lock.py 3 files changed, 31 insertions(+), 7 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/wikimedia/fundraising/process-control refs/changes/62/345062/1 diff --git a/bin/run-job b/bin/run-job index 2ea0512..974c4f2 100755 --- a/bin/run-job +++ b/bin/run-job @@ -1,15 +1,40 @@ #!/usr/bin/python +from __future__ import print_function import argparse +import subprocess import sys from processcontrol import job_wrapper + + +def list_jobs(): + for job_name in job_wrapper.list(): + job = job_wrapper.load(job_name) + print("{job} - {human_name}".format(job=job_name, human_name=job.name)) + status = job.status() + if status is not None: + print(status) + + +def kill_job(job_name): + job = job_wrapper.load(job_name) + status = job.status() + if status is None: + print("Nothing to kill.") + else: + pid = status["pid"] + print("Killing job {name}, pid {pid}".format(name=job_name, pid=pid)) + exit_code = subprocess.call(["kill", str(pid)]) + if exit_code != 0: + print("Failed to kill!", file=sys.stderr) if __name__ == "__main__": parser = argparse.ArgumentParser(description="Run and maintain process-control jobs.") parser.add_argument("-j", "--job", help="Run a given job.", type=str) parser.add_argument("--list-jobs", help="Print a summary of available jobs.", action='store_true') + parser.add_argument("--kill-job", help="Kill a job by name", type=str) args = parser.parse_args() if args.job: @@ -17,9 +42,7 @@ job.run() if args.list_jobs: - for job_name in job_wrapper.list(): - job = job_wrapper.load(job_name) - print("{job} - {human_name}".format(job=job_name, human_name=job.name)) - status = job.status() - if status is not None: - print(status) + list_jobs() + + if args.kill_job: + kill_job(args.kill_job) diff --git a/processcontrol/job_wrapper.py b/processcontrol/job_wrapper.py index c99fcaf..d84b83e 100644 --- a/processcontrol/job_wrapper.py +++ b/processcontrol/job_wrapper.py @@ -144,7 +144,7 @@ lock_path = "/tmp/{name}.lock".format(name=self.slug) if os.path.exists(lock_path): with open(lock_path, "r") as f: - pid = f.read().strip() + pid = int(f.read().strip()) # TODO: encapsulate return {"status": "running", "pid": pid} diff --git a/processcontrol/lock.py b/processcontrol/lock.py index 6c91863..bbca472 100644 --- a/processcontrol/lock.py +++ b/processcontrol/lock.py @@ -39,6 +39,7 @@ f = open(filename, "w") f.write(str(os.getpid())) + os.chmod(filename, 0o644) f.close() global lockfile -- To view, visit https://gerrit.wikimedia.org/r/345062 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ia181aa495eabf34242293cb60904594ee3766b5c Gerrit-PatchSet: 1 Gerrit-Project: wikimedia/fundraising/process-control Gerrit-Branch: master Gerrit-Owner: Awight <awi...@wikimedia.org> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits