diff options
Diffstat (limited to 'contractor')
-rwxr-xr-x | contractor | 67 |
1 files changed, 55 insertions, 12 deletions
@@ -19,7 +19,7 @@ DEFAULT_CONFIGS = {os.path.expanduser("~/.config/contractor/config.yaml")} # The device in the manager VM for the workspace disk. -WS_DEV = "/dev/vdb" +WS_DEV = "workspace.img" # The worker VM image file on manager VM. @@ -257,6 +257,22 @@ class StartGuestNetworking(MayFail): return virsh("net-start", "default") +class CreateWS(RemoteExecution): + def msg(self): + return "creating workspace disk on manager" + + def argv(self): + return ["qemu-img", "create", "-f", "raw", WS_DEV, "20G"] + + +class MkfsWS(RemoteExecution): + def msg(self): + return "mkfs workspace disk on manager" + + def argv(self): + return ["sudo", "mkfs", "-t", "ext4", WS_DEV] + + class MountWS(RemoteExecution): def msg(self): return "mounting workspace on manager" @@ -576,16 +592,43 @@ def cmd_build(args): # while to boot and we can do other things while that # happens. with Timer(vrb, "start-worker"): - execs = [ - DestroyWorkerVM(), - UndefineWorkerVM(), - CopyWorkerImage(), - StartGuestNetworking(), - CreateWorkerVM(), - TryUnmountWS(), - MountWS(), - ChownWS(), - ] + execs = [DestroyWorkerVM()] + exec_quietly(manager, *execs) + + with Timer(vrb, "start-worker-2"): + execs = [UndefineWorkerVM()] + exec_quietly(manager, *execs) + + with Timer(vrb, "start-worker-3"): + execs = [CopyWorkerImage()] + exec_quietly(manager, *execs) + + with Timer(vrb, "start-worker-4"): + execs = [StartGuestNetworking()] + exec_quietly(manager, *execs) + + with Timer(vrb, "start-worker-5"): + execs = [CreateWorkerVM()] + exec_quietly(manager, *execs) + + with Timer(vrb, "start-worker-6"): + execs = [TryUnmountWS()] + exec_quietly(manager, *execs) + + with Timer(vrb, "start-worker-7"): + execs = [CreateWS()] + exec_quietly(manager, *execs) + + with Timer(vrb, "start-worker-8"): + execs = [MkfsWS()] + exec_quietly(manager, *execs) + + with Timer(vrb, "start-worker-9"): + execs = [MountWS()] + exec_quietly(manager, *execs) + + with Timer(vrb, "start-worker-10"): + execs = [ChownWS()] exec_quietly(manager, *execs) with Timer(vrb, "upload-saved-workspace"): @@ -606,7 +649,7 @@ def cmd_build(args): worker_ip = parse_worker_ip(er.stdout) with Timer(vrb, "prepare-workspace-worker"): - worker_dest = "worker@{}".format(worker_ip) + worker_dest = "debian@{}".format(worker_ip) vrb("worker is at {} (via manager)".format(worker_dest)) worker = OnWorker(dest, port, worker_dest, verbose=vrb) exec_quietly(worker, Mkdir("/workspace"), MountWSonWorker()) |