diff options
author | Lars Wirzenius <liw@liw.fi> | 2020-05-10 13:27:48 +0000 |
---|---|---|
committer | Lars Wirzenius <liw@liw.fi> | 2020-05-10 13:27:48 +0000 |
commit | 80bdbd066e78ac62749c2cb1fb316fbf53b3d768 (patch) | |
tree | 77b4d977d8f8ad75db8db932979cdd3250f01f58 | |
parent | 3b471b9338d424b2974456ea4c8ca556406ac449 (diff) | |
parent | 084fd973f40f161cfb1fdc7190b6c4ce0e9b5de3 (diff) | |
download | ick-contractor-80bdbd066e78ac62749c2cb1fb316fbf53b3d768.tar.gz |
Merge branch 'wsempty' into 'master'
fix: make worker ip extraction more reliable
See merge request larswirzenius/contractor!15
-rwxr-xr-x | contractor | 22 |
1 files changed, 18 insertions, 4 deletions
@@ -4,6 +4,7 @@ import argparse import json import logging import os +import re import shlex import sys import time @@ -54,6 +55,9 @@ def ssh(target, port, argv, quiet=False): logging.debug("EXEC: {!r} stdout={!r} stderr={!r}".format(argv, stdout, STDOUT)) p = subprocess.Popen(argv, stderr=STDOUT, stdout=stdout) out, err = p.communicate() + logging.debug("EXIT: {}".format(p.returncode)) + logging.debug("OUTPUT:\n{}".format(out)) + logging.debug("STDERR:\n{}".format(err)) return ExecResult(out, err, p.returncode) @@ -380,11 +384,19 @@ do break fi done -echo "$ip" +echo "worker-ip:: $ip ::" """, ] +def parse_worker_ip(output): + output = output.decode("UTF8") + m = re.search(r"worker-ip:: (?P<ip>\d+\.\d+\.\d+\.\d+) ::$", output) + if m: + return m.group("ip") + return None + + class Find(RemoteExecution): def __init__(self, dirname): self._dirname = dirname @@ -567,7 +579,9 @@ def cmd_build(args): with Timer(vrb, "upload-saved-workspace"): ws = bs.workspace() - if os.path.exists(ws): + if ws: + if not os.path.exists(ws): + os.makedirs(ws) sync_to_workspace(vrb, ws, dest, port, ".") with Timer(vrb, "upload-source"): @@ -578,7 +592,7 @@ def cmd_build(args): with Timer(vrb, "wait-for-worker-to-be-available"): execs = [UnmountWS(), WorkerIP(), AttachWS()] er = exec_quietly(manager, *execs) - worker_ip = er.stdout.decode("UTF8").strip() + worker_ip = parse_worker_ip(er.stdout) with Timer(vrb, "prepare-workspace-worker"): worker_dest = "worker@{}".format(worker_ip) @@ -624,7 +638,7 @@ def setup_logging(args): logger = logging.getLogger() logger.addHandler(handler) - logger.setLevel(logging.INFO) + logger.setLevel(logging.DEBUG) def main(): |