summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLars Wirzenius <liw@liw.fi>2020-05-10 13:27:48 +0000
committerLars Wirzenius <liw@liw.fi>2020-05-10 13:27:48 +0000
commit80bdbd066e78ac62749c2cb1fb316fbf53b3d768 (patch)
tree77b4d977d8f8ad75db8db932979cdd3250f01f58
parent3b471b9338d424b2974456ea4c8ca556406ac449 (diff)
parent084fd973f40f161cfb1fdc7190b6c4ce0e9b5de3 (diff)
downloadick-contractor-80bdbd066e78ac62749c2cb1fb316fbf53b3d768.tar.gz
Merge branch 'wsempty' into 'master'
fix: make worker ip extraction more reliable See merge request larswirzenius/contractor!15
-rwxr-xr-xcontractor22
1 files changed, 18 insertions, 4 deletions
diff --git a/contractor b/contractor
index 8fe1e37..179f3bf 100755
--- a/contractor
+++ b/contractor
@@ -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():