summaryrefslogtreecommitdiff
path: root/contractor
diff options
context:
space:
mode:
authorLars Wirzenius <liw@liw.fi>2020-04-09 09:38:51 +0300
committerLars Wirzenius <liw@liw.fi>2020-04-09 09:38:51 +0300
commit677760a88fc4c7ce45cc614959c6c4121004dfa8 (patch)
tree6630f7c07c24f30f5e7002fa24a7b31bc2c4eaa9 /contractor
parentd5ab6165cdf0d9347adffb7d37b958cf79487e37 (diff)
downloadick-contractor-677760a88fc4c7ce45cc614959c6c4121004dfa8.tar.gz
Change: upload worker image
Diffstat (limited to 'contractor')
-rwxr-xr-xcontractor21
1 files changed, 14 insertions, 7 deletions
diff --git a/contractor b/contractor
index 145c7f4..cc02613 100755
--- a/contractor
+++ b/contractor
@@ -24,6 +24,12 @@ def ssh(target, argv, quiet=False):
return subprocess.call(argv, stderr=STDOUT, stdout=stdout)
+def rsync(filename, target):
+ argv = ['rsync', '-aHSs', '--', filename, target]
+ logging.info('RSYNC: {!r}'.format(argv))
+ return subprocess.call(argv, stderr=STDOUT, stdout=None)
+
+
class ContractorApplication(cliapp.Application):
def add_settings(self):
@@ -48,20 +54,18 @@ class ContractorApplication(cliapp.Application):
self.output.write('{}\n'.format(json.dumps(bs.as_dict(), indent=4)))
def cmd_build(self, args):
- self.verbose('Building using spec at {}'.format(args[0]))
+ self.verbose('building using spec at {}'.format(args[0]))
bs = self.load_build_spec(args[0])
m = self.manager()
self.verbose('stopping worker')
m.stop_worker()
-
- # self.cmd_worker_stop([])
- # image = os.path.expanduser(build['worker-image'])
- # self.cmd_worker_image([image])
- # self.cmd_worker_start([])
+ self.verbose(
+ 'uploading image to worker: {}'.format(bs.worker_image()))
+ m.upload_image(bs.worker_image())
- # pkgs = build.get('install', [])
+ # pkgs = build.get('install', [])
# if pkgs:
# self.verbose('Installing packages: {}'.format(', '.join(pkgs)))
# self.cmd_setup(
@@ -366,5 +370,8 @@ class Manager:
self.virsh(['destroy', 'worker'])
self.virsh(['undefine', 'worker'])
+ def upload_image(self, filename):
+ rsync(filename, '{}:worker.img'.format(self._target))
+
ContractorApplication().run()