diff options
author | Lauren Perry <lauren.perry@codethink.co.uk> | 2015-04-10 15:29:06 +0100 |
---|---|---|
committer | Richard Ipsum <richardipsum@fastmail.co.uk> | 2015-04-29 16:11:14 +0000 |
commit | 4941d1dd806d1751b1ac0f7a695ec2b6dce93ba0 (patch) | |
tree | 0f39b69358e9af9066b9d2dbc2ceffe4eebb7cf2 /morphlib | |
parent | 84096556ea54d4af236f1fe5f7ccf61c1343016f (diff) | |
download | morph-4941d1dd806d1751b1ac0f7a695ec2b6dce93ba0.tar.gz |
distbuild: Add distbuild status command
Adds a command to get the status of all recently ran distbuilds
for a given server (e.g. Running, Finished, Failed, Cancelled),
so as to tell if a build running via distbuild-start has finished
or otherwise exited without going through the server's log files
Change-Id: I5ce9fe54ae7b1bd8fe3e0d629f615042be8827ed
Diffstat (limited to 'morphlib')
-rw-r--r-- | morphlib/plugins/distbuild_plugin.py | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/morphlib/plugins/distbuild_plugin.py b/morphlib/plugins/distbuild_plugin.py index 68a80784..71d83dfe 100644 --- a/morphlib/plugins/distbuild_plugin.py +++ b/morphlib/plugins/distbuild_plugin.py @@ -82,6 +82,53 @@ class DistbuildCancel(cliapp.Plugin): loop.run() +class DistbuildStatusPlugin(cliapp.Plugin): + + RECONNECT_INTERVAL = 30 # seconds + MAX_RETRIES = 1 + + def enable(self): + self.app.add_subcommand('distbuild-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-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) != 1: + raise cliapp.AppException( + 'usage: morph distbuild-status <build-request id>') + + 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 |