diff options
author | Sam Thursfield <sam.thursfield@codethink.co.uk> | 2015-04-21 20:54:07 +0100 |
---|---|---|
committer | Sam Thursfield <sam.thursfield@codethink.co.uk> | 2015-04-21 20:54:07 +0100 |
commit | 7477ddf869711df158e5828c300bfe93a427b0f6 (patch) | |
tree | bb7b43d2601d9c8166724f5832f8c15757a0fba8 /morphlib/plugins/distbuild_plugin.py | |
parent | 9fd7ef6fe83282139f7f636a955bcf069e8fb79c (diff) | |
parent | 208d1a46887b76daada82c4b9d79086b1ad871a4 (diff) | |
download | morph-7477ddf869711df158e5828c300bfe93a427b0f6.tar.gz |
Merge branch 'review/lauren_perry/lauren/distbuild-status' into sam/distbuild-megamixsam/distbuild-megamix
Change-Id: I321bfd8422acbddfee2ab5a506294c2f531d4adb
Diffstat (limited to 'morphlib/plugins/distbuild_plugin.py')
-rw-r--r-- | morphlib/plugins/distbuild_plugin.py | 89 |
1 files changed, 89 insertions, 0 deletions
diff --git a/morphlib/plugins/distbuild_plugin.py b/morphlib/plugins/distbuild_plugin.py index 09669988..69e815e9 100644 --- a/morphlib/plugins/distbuild_plugin.py +++ b/morphlib/plugins/distbuild_plugin.py @@ -40,6 +40,95 @@ class DistbuildOptionsPlugin(cliapp.Plugin): pass +class DistbuildCancel(cliapp.Plugin): + + RECONNECT_INTERVAL = 30 # seconds + MAX_RETRIES = 1 + + def enable(self): + self.app.add_subcommand('distbuild-cancel', self.distbuild_cancel, + arg_synopsis='ID') + + def disable(self): + pass + + def distbuild_cancel(self, args): + '''Cancels a currently-running distbuild + + Command line arguments: + + `ID` of the running process that you wish to cancel + (this can be found via distbuild-list-jobs) + + Example: + + * morph distbuild-cancel InitiatorConnection-1 + + ''' + + if len(args) == 0: + raise cliapp.AppException( + 'This command requires a build-request ID to run.') + + addr = self.app.settings['controller-initiator-address'] + port = self.app.settings['controller-initiator-port'] + icm = distbuild.InitiatorConnectionMachine(self.app, addr, port, + distbuild.InitiatorCancel, + [self.app] + args, + self.RECONNECT_INTERVAL, + self.MAX_RETRIES) + loop = distbuild.MainLoop() + loop.add_state_machine(icm) + loop.run() + + +class DistbuildStatusPlugin(cliapp.Plugin): + + RECONNECT_INTERVAL = 30 # seconds + MAX_RETRIES = 1 + + def enable(self): + self.app.add_subcommand('distbuild-get-status', self.distbuild_status, + arg_synopsis='ID') + + def disable(self): + pass + + def distbuild_status(self, args): + '''Displays build status of recent distbuild requests. + + Lists last known build status for all distbuilds (e.g. Building, + Failed, Finished, Cancelled) on a given distbuild server as set in + /etc/morph.conf + + Example: + + morph distbuild-get-status InitiatorConnection-1 + + Example output: + + Build request ID: InitiatorConnection-1 + System build: systems/devel-system-x86_64-generic.morph + Build status: Building stage1-binutils-misc + + ''' + + if len(args) == 0: + raise cliapp.AppException( + 'This command requires a build-request ID to run.') + + addr = self.app.settings['controller-initiator-address'] + port = self.app.settings['controller-initiator-port'] + icm = distbuild.InitiatorConnectionMachine(self.app, addr, port, + distbuild.InitiatorStatus, + [self.app] + args, + self.RECONNECT_INTERVAL, + self.MAX_RETRIES) + loop = distbuild.MainLoop() + loop.add_state_machine(icm) + loop.run() + + class DistbuildListJobsPlugin(cliapp.Plugin): RECONNECT_INTERVAL = 30 # seconds |