summaryrefslogtreecommitdiff
path: root/contractor
diff options
context:
space:
mode:
Diffstat (limited to 'contractor')
-rwxr-xr-xcontractor67
1 files changed, 55 insertions, 12 deletions
diff --git a/contractor b/contractor
index 4fe32a1..88cd63c 100755
--- a/contractor
+++ b/contractor
@@ -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())