From 4aee3682978386cfa7e0235e9a9df22ba1cdcc96 Mon Sep 17 00:00:00 2001 From: Brandon King Date: Fri, 4 Jan 2008 23:09:58 +0000 Subject: [PATCH] Runner now reports status when user sends status request! * just send 'status' to the bot to get status information now. --- gaworkflow/runner.py | 46 +++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 43 insertions(+), 3 deletions(-) diff --git a/gaworkflow/runner.py b/gaworkflow/runner.py index c1d4ba7..72a9273 100644 --- a/gaworkflow/runner.py +++ b/gaworkflow/runner.py @@ -9,7 +9,7 @@ import threading from benderjab import rpc from gaworkflow.pipeline.configure_run import * -from gaworkflow.pipeline.monitors import startCmdLineStatusMonitor +from gaworkflow.pipeline.monitors import _percentCompleted #s_fc = re.compile('FC[0-9]+') s_fc = re.compile('_[0-9a-zA-Z]*$') @@ -69,8 +69,13 @@ class Runner(rpc.XmlRpcBot): help = u"I can send [start] a run, or report [status]" if re.match(u"help", msg): reply = help - elif re.match("status", msg): - reply = u"not implemented" + elif re.match("status", msg): + words = msg.split() + if len(words) == 2: + reply = self.getStatusReport(words[1]) + else: + reply = u"Status available for: %s" \ + % (', '.join([k for k in self.conf_info_dict.keys()])) elif re.match(u"start", msg): words = msg.split() if len(words) == 2: @@ -98,6 +103,41 @@ class Runner(rpc.XmlRpcBot): """ super(Runner, self).stop() + + def getStatusReport(self, fc_num): + """ + Returns text status report for flow cell number + """ + if fc_num not in self.conf_info_dict: + return "No record of a %s run." % (fc_num) + + status = self.conf_info_dict[fc_num].status + + if status is None: + return "No status information for %s yet." \ + " Probably still in configure step. Try again later." % (fc_num) + + fc,ft = status.statusFirecrest() + bc,bt = status.statusBustard() + gc,gt = status.statusGerald() + + tc,tt = status.statusTotal() + + fp = _percentCompleted(fc, ft) + bp = _percentCompleted(bc, bt) + gp = _percentCompleted(gc, gt) + tp = _percentCompleted(tc, tt) + + output = [] + + output.append(u'Firecrest: %s%% (%s/%s)' % (fp, fc, ft)) + output.append(u' Bustard: %s%% (%s/%s)' % (bp, bc, bt)) + output.append(u' Gerald: %s%% (%s/%s)' % (gp, gc, gt)) + output.append(u'-----------------------') + output.append(u' Total: %s%% (%s/%s)' % (tp, tc, tt)) + + return '\n'.join(output) + def sequencingFinished(self, run_dir): """ -- 2.30.2