Awight has uploaded a new change for review. ( https://gerrit.wikimedia.org/r/343921 )
Change subject: Merge branch 'debian-packaging' of github.com:adamwight/process-control into debian-packaging ...................................................................... Merge branch 'debian-packaging' of github.com:adamwight/process-control into debian-packaging Change-Id: Ifb70d4530512ba454a2c4450f6269c9ac788917f --- M bin/cron-generate M bin/run-job M processcontrol/job_wrapper.py M setup.py 4 files changed, 0 insertions(+), 99 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/wikimedia/fundraising/process-control refs/changes/21/343921/1 diff --git a/bin/cron-generate b/bin/cron-generate index 469035a..52655aa 100755 --- a/bin/cron-generate +++ b/bin/cron-generate @@ -3,7 +3,6 @@ import sys import processcontrol.crontab -<<<<<<< HEAD (2a6dbe Debian packaging) def usage(): @@ -20,22 +19,3 @@ config_dir = sys.argv[1] print(processcontrol.crontab.make_cron(config_dir)) -======= -import processcontrol.job_wrapper - - -def usage(): - print("Must give a job description directory as the only argument.") - - -if __name__ == "__main__": - # TODO: Parse CLI args. - - if len(sys.argv) != 2: - usage() - sys.exit(-1) - - config_dir = sys.argv[1] - - print(crontab.make_cron(config_dir)) ->>>>>>> BRANCH (469870 House modules under a package) diff --git a/bin/run-job b/bin/run-job index 95852da..8a35f6c 100755 --- a/bin/run-job +++ b/bin/run-job @@ -18,9 +18,5 @@ conf_file = sys.argv[1] -<<<<<<< HEAD (2a6dbe Debian packaging) wrapper = processcontrol.job_wrapper.JobWrapper(config_path=conf_file) -======= - wrapper = job_wrapper.JobWrapper(config_path=conf_file) ->>>>>>> BRANCH (469870 House modules under a package) wrapper.run() diff --git a/processcontrol/job_wrapper.py b/processcontrol/job_wrapper.py index 3d8e307..4c3cae6 100644 --- a/processcontrol/job_wrapper.py +++ b/processcontrol/job_wrapper.py @@ -7,7 +7,6 @@ import yaml import lock -<<<<<<< HEAD (2a6dbe Debian packaging) import mailer # TODO: Global config. @@ -80,72 +79,6 @@ message = "Job {name} timed out after {timeout} seconds".format(name=self.name, timeout=self.timeout) print(message, file=sys.stderr) self.mailer.fail_mail(message) -======= - - -# TODO: Global config. -DEFAULT_TIMEOUT = 600 - - -class JobWrapper(object): - def __init__(self, config_path=None): - self.config_path = config_path - self.config = yaml.safe_load(open(config_path, "r")) - self.validate_config() - - self.name = self.config["name"] - self.start_time = datetime.datetime.utcnow().isoformat() - - if "timeout" in self.config: - self.timeout = self.config["timeout"] - else: - self.timeout = DEFAULT_TIMEOUT - - if "disabled" in self.config and self.config["disabled"] is True: - self.enabled = False - else: - self.enabled = True - - if "schedule" not in self.config: - self.enabled = False - - def run(self): - lock.begin(job_tag=self.name) - - command = shlex.split(self.config["command"]) - - self.process = subprocess.Popen(command, stdout=subprocess.PIPE, stderr=subprocess.PIPE) - timer = threading.Timer(self.timeout, self.fail_timeout) - timer.start() - - try: - # FIXME: This doesn't stream, so large output will be buffered in memory. - (stdout_data, stderr_data) = self.process.communicate() - - self.store_job_output(stdout_data) - - if len(stderr_data) > 0: - self.fail_has_stderr(stderr_data) - finally: - timer.cancel() - lock.end() - - return_code = self.process.returncode - if return_code != 0: - self.fail_exitcode(return_code) - - def fail_exitcode(self, return_code): - print("Job {name} failed with code {code}".format(name=self.name, code=return_code), file=sys.stderr) - # TODO: Prevent future jobs according to config. - - def fail_has_stderr(self, stderr_data): - print("Job {name} printed things to stderr:".format(name=self.name), file=sys.stderr) - print(stderr_data.decode("utf-8"), file=sys.stderr) - - def fail_timeout(self): - self.process.kill() - print("Job {name} timed out after {timeout} seconds".format(name=self.name, timeout=self.timeout), file=sys.stderr) ->>>>>>> BRANCH (469870 House modules under a package) # FIXME: Job will return SIGKILL now, fail_exitcode should ignore that signal now? def store_job_output(self, stdout_data): diff --git a/setup.py b/setup.py index 3b2df76..306aeea 100755 --- a/setup.py +++ b/setup.py @@ -8,15 +8,7 @@ author='Adam Roses Wight', author_email='awi...@wikimedia.org', url='https://github.com/adamwight/process-control', -<<<<<<< HEAD (2a6dbe Debian packaging) - py_modules=[ - 'crontab', - 'job_wrapper', - 'lock', - ], -======= packages=['processcontrol'], ->>>>>>> BRANCH (469870 House modules under a package) scripts=[ 'bin/cron-generate', 'bin/run-job', -- To view, visit https://gerrit.wikimedia.org/r/343921 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ifb70d4530512ba454a2c4450f6269c9ac788917f 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