diff options
author | Lauren Perry <lauren.perry@codethink.co.uk> | 2015-04-02 17:23:07 +0100 |
---|---|---|
committer | Richard Ipsum <richardipsum@fastmail.co.uk> | 2015-04-29 16:10:58 +0000 |
commit | 84096556ea54d4af236f1fe5f7ccf61c1343016f (patch) | |
tree | 76b5aa72bf9c691fd8e154feade051c2ceba16ac /morphlib/plugins/build_plugin.py | |
parent | 4a1c2d118511da067fcadf2253fdc2a49d04e4fa (diff) | |
download | morph-84096556ea54d4af236f1fe5f7ccf61c1343016f.tar.gz |
distbuild: Add distbuild start and cancel functionality
Add command for distbuild-start to build_plugin in morphlib,
and create a boolean parameter to inform the initiator whether
to disconnect the controller and leave the build running remotely.
Add distbuild-cancel command to parse currently-running distbuild
build-request IDs and cancel the one matching the given argument
Change-Id: I458a5767bb768ceb2b4d8876adf1c86075d452bd
Diffstat (limited to 'morphlib/plugins/build_plugin.py')
-rw-r--r-- | morphlib/plugins/build_plugin.py | 31 |
1 files changed, 30 insertions, 1 deletions
diff --git a/morphlib/plugins/build_plugin.py b/morphlib/plugins/build_plugin.py index 12d69545..8da66358 100644 --- a/morphlib/plugins/build_plugin.py +++ b/morphlib/plugins/build_plugin.py @@ -46,10 +46,14 @@ class BuildPlugin(cliapp.Plugin): '[COMPONENT...]') self.app.add_subcommand('distbuild', self.distbuild, arg_synopsis='SYSTEM [COMPONENT...]') + self.app.add_subcommand('distbuild-start', self.distbuild_start, + arg_synopsis='SYSTEM [COMPONENT...]') self.use_distbuild = False + self.allow_detach = False def disable(self): self.use_distbuild = False + self.allow_detach = False def distbuild_morphology(self, args): '''Distbuild a system, outside of a system branch. @@ -97,6 +101,12 @@ class BuildPlugin(cliapp.Plugin): your system, the system artifact will be copied from your trove and cached locally. + Log information can be found in the current working directory, in + directories called build-xx. + + If you do not have a persistent connection to the server on which + the distbuild runs, consider using `morph distbuild-start` instead. + Example: morph distbuild devel-system-x86_64-generic.morph @@ -106,6 +116,25 @@ class BuildPlugin(cliapp.Plugin): self.use_distbuild = True self.build(args) + def distbuild_start(self, args): + '''Distbuild a system image without a lasting client-server connection. + + This command launches a distributed build, and disconnects from the + distbuild cluster once the build starts, leaving the build running + remotely. + + The command will return a build-ID which can be used to cancel the + distbuild via `morph distbuild-cancel`. Builds started in this manner + can be found via `morph distbuild-list-jobs` + + See `morph help distbuild` for more information and example usage. + + ''' + + self.use_distbuild = True + self.allow_detach = True + self.build(args) + def build_morphology(self, args): '''Build a system, outside of a system branch. @@ -211,7 +240,7 @@ class BuildPlugin(cliapp.Plugin): port = self.app.settings['controller-initiator-port'] build_command = morphlib.buildcommand.InitiatorBuildCommand( - self.app, addr, port) + self.app, addr, port, self.allow_detach) else: build_command = morphlib.buildcommand.BuildCommand(self.app) |