From e58656733ecd648b5ab81b62289fd546d84cb157 Mon Sep 17 00:00:00 2001 From: Lars Wirzenius Date: Fri, 24 Apr 2020 11:22:21 +0300 Subject: Change: attach disk to worker as part of waiting for worker --- contractor | 24 ++++++++++++++---------- 1 file 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 -- cgit v1.2.1