From 4dbd616221490d7e11cddff561941057bd1e1273 Mon Sep 17 00:00:00 2001 From: Lars Wirzenius Date: Wed, 29 Nov 2017 20:53:59 +0100 Subject: Add: support for python steps in worker-manager --- worker_manager | 27 ++++++++++++++++++++------- 1 file changed, 20 insertions(+), 7 deletions(-) (limited to 'worker_manager') diff --git a/worker_manager b/worker_manager index a480558..15a6ef8 100755 --- a/worker_manager +++ b/worker_manager @@ -207,24 +207,37 @@ class WorkerManager(cliapp.Application): s[stream_name] = data self.post_snippet(snippet_url, s) - def run_shell(shell_cmd): + def run_with_interp(argv_prefix, cmd): exit_code, _, _ = cliapp.runcmd_unchecked( - ['bash', '-xeuc', shell_cmd], + argv_prefix + [cmd], stdout_callback=lambda data: post('stdout', data), stderr_callback=lambda data: post('stderr', data), cwd=workspace, ) - end_snippet = dict(snippet) - end_snippet['exit_code'] = exit_code - self.post_snippet(snippet_url, end_snippet) return exit_code + def run_shell(shell_cmd): + return run_with_interp(['bash', '-xeuc'], shell_cmd) + + def run_python(python_cmd): + return run_with_interp(['python3', '-c'], python_cmd) + + def run_cmd(step): + logging.info('Running step: %r', step) + if 'shell' in step: + run_shell(step['shell']) + elif 'python' in step: + run_python(step['python']) + exit_code = 0 if work.get('fresh_workspace'): + logging.info('Make an empty workspace') exit_code = run_shell('find . -delete') if exit_code == 0: - shell_cmd = work['step']['shell'] - run_shell(shell_cmd) + run_cmd(work['step']) + end_snippet = dict(snippet) + end_snippet['exit_code'] = exit_code + self.post_snippet(snippet_url, end_snippet) def now(self): return time.strftime('%Y-%m-%dT%H:%M:%S') -- cgit v1.2.1