From 9a7ca01d585b5f94655864af6608a3b95dca4f3b Mon Sep 17 00:00:00 2001 From: Lars Wirzenius Date: Sun, 31 Dec 2017 21:01:35 +0200 Subject: Add: SystreePopulator --- worker_manager | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) (limited to 'worker_manager') diff --git a/worker_manager b/worker_manager index 47e285e..4fb04ed 100755 --- a/worker_manager +++ b/worker_manager @@ -440,5 +440,48 @@ class WorkspaceArchiver(WorkerBase): assert False +class SystreePopulator(WorkerBase): + + systree_dir = '/var/lib/ick/systree' + + def do(self, work): + params = work.get('parameters', {}) + systree_name = params.get('systree_name') + if not systree_name: + self.report(b'No systree_name parameter, no systree population') + return 0 + + self.make_directory_empty(self.systree_dir) + tarball = self._api.download_blob(systree_name) + self.unpack_systree(tarball, self.systree_dir) + + self.report(b'Systree has been populated') + return 0 + + def make_directory_empty(self, dirname): + return self.execute_argv(['sudo', 'find', '-delete'], cwd=dirname) + + def unpack_systree(self, tarball, dirname): + return self.execute_argv( + ['sudo', 'tar', '-zxvf', '-', '-C', dirname], + feed_stdin=tarball, + ) + + def execute_argv(self, argv, **kwargs): + exit_code, _, _ = cliapp.runcmd_unchecked( + argv, + stdout_callback=self.report, + stderr_callback=self.report, + **kwargs, + ) + return exit_code + + def report(self, data): + self._post('stdout', data.decode('UTF-8')) + + def get_argv(self, work, params_text): + assert False + + if __name__ == '__main__': WorkerManager(version=ick2.__version__).run() -- cgit v1.2.1