summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLars Wirzenius <liw@liw.fi>2020-04-24 11:22:21 +0300
committerLars Wirzenius <liw@liw.fi>2020-04-24 11:22:21 +0300
commite58656733ecd648b5ab81b62289fd546d84cb157 (patch)
tree136b14936eb92e235c301619a37eff7b3b825528
parentf2bbf0cb4b3bcb58f4dfaced9864aa36b8361ac0 (diff)
downloadick-contractor-e58656733ecd648b5ab81b62289fd546d84cb157.tar.gz
Change: attach disk to worker as part of waiting for worker
-rwxr-xr-xcontractor24
1 files changed, 14 insertions, 10 deletions
diff --git a/contractor b/contractor
index cba9cf7..5e0c988 100755
--- a/contractor
+++ b/contractor
@@ -61,6 +61,7 @@ class ContractorApplication(cliapp.Application):
bs = self.load_build_spec(args[0])
dest = self.manager_destination()
manager = RemoteServer(dest, verbose=self.verbose)
+ self.verbose('manager is at {}'.format(dest))
with Timer(self.verbose, 'complete-run'):
with Timer(self.verbose, 'upload-worker-image'):
@@ -98,17 +99,18 @@ class ContractorApplication(cliapp.Application):
execs = [
UnmountWS(),
WorkerIP(),
+ AttachWS(),
]
er = self.exec_quietly(manager, *execs)
worker_ip = er.stdout.decode('UTF8').strip()
with Timer(self.verbose, 'prepare-workspace-worker'):
- self.exec_quietly(manager, AttachWS())
- self.verbose('attached')
-
- worker = OnWorker(
- dest, 'worker@{}'.format(worker_ip), verbose=self.verbose)
- self.exec_quietly(worker, Mkdir('/workspace'), MountWSonWorker())
+ worker_dest = 'worker@{}'.format(worker_ip)
+ self.verbose(
+ 'worker is at {} (via manager)'.format(worker_dest))
+ worker = OnWorker(dest, worker_dest, verbose=self.verbose)
+ self.exec_quietly(
+ worker, Mkdir('/workspace'), MountWSonWorker())
with Timer(self.verbose, 'prepare-worker-with-ansible'):
ansible = bs.ansible()
@@ -141,7 +143,7 @@ class ContractorApplication(cliapp.Application):
return BuildSpec(f.read())
def upload_worker_image(self, filename, dest):
- self.verbose('uploading image to worker: {}'.format(filename))
+ self.verbose('uploading worker to manager: {}'.format(filename))
target = '{}:{}'.format(dest, WORKER_IMG)
if rsync(filename, target).failed():
self.error('could not upload image to worker')
@@ -239,6 +241,7 @@ class RemoteServer:
def __init__(self, ssh_destination, verbose=None):
self._dest = ssh_destination
+ self._where = 'manager: {}'.format(ssh_destination)
self._verbose = verbose
def quietly(self, *execs):
@@ -249,7 +252,7 @@ class RemoteServer:
def _msg(self, execs):
if self._verbose is not None:
- self._verbose('Executing steps')
+ self._verbose('Executing steps on {}'.format(self._where))
for e in execs:
m = e.msg() or e.__class__.__name__
self._verbose(' - ' + m)
@@ -268,6 +271,7 @@ class OnWorker(RemoteServer):
def __init__(self, manager, worker, verbose=None):
self._dest = manager
+ self._where = 'worker: {}'.format(worker)
self._prefix = ['ssh', worker, '--']
self._verbose = verbose
@@ -508,7 +512,7 @@ class AttachWS(RemoteExecution):
return 'attach workspace disk to worker'
def argv(self):
- return virsh('attach-disk', 'worker', WS_DEV, 'vdb',
+ return virsh('--quiet', 'attach-disk', 'worker', WS_DEV, 'vdb',
'--targetbus', 'virtio', '--live')
@@ -604,7 +608,7 @@ class Timer:
now = time.time()
duration = now - self._prev
self._prev = now
- self._report('time: {:.1f} s {}'.format(duration, self._title))
+ self._report('time: {:.1f} s {}\n'.format(duration, self._title))
return False