summaryrefslogtreecommitdiff
path: root/morphlib
diff options
context:
space:
mode:
authorLauren Perry <lauren.perry@codethink.co.uk>2015-04-10 15:29:06 +0100
committerRichard Ipsum <richardipsum@fastmail.co.uk>2015-04-29 16:11:14 +0000
commit4941d1dd806d1751b1ac0f7a695ec2b6dce93ba0 (patch)
tree0f39b69358e9af9066b9d2dbc2ceffe4eebb7cf2 /morphlib
parent84096556ea54d4af236f1fe5f7ccf61c1343016f (diff)
downloadmorph-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.py47
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