[project @ send messages to notify_runner not self.runner]
[htsworkflow.git] / gaworkflow / copier.py
index 265e7802c7e0f31aafc9d14dbd07d1f20ee93c0a..9420208e4a285e6cbf2e21e1603f899c4fd5efaa 100644 (file)
@@ -136,7 +136,7 @@ class CopierBot(rpc.XmlRpcBot):
         self.notify_runner = None
         
         self.register_function(self.startCopy)
-        self.register_function(self.runFinished)
+        self.register_function(self.sequencingFinished)
         self.eventTasks.append(self.update)
         
     def read_config(self, section=None, configfile=None):
@@ -151,7 +151,14 @@ class CopierBot(rpc.XmlRpcBot):
         self.rsync = rsync(source, destination, password)
         
         self.notify_users = self._parse_user_list(self.cfg['notify_users'])
-        self.notify_runner = self._parse_user_list(self.cfg['notify_runner'])
+        try:
+          self.notify_runner = \
+             self._parse_user_list(self.cfg['notify_runner'],
+                                   require_resource=True)
+        except bot.JIDMissingResource:
+            msg = 'need a full jabber ID + resource for xml-rpc destinations'
+            logging.FATAL(msg)
+            raise bot.JIDMissingResource(msg)
 
     def startCopy(self, *args):
         """
@@ -162,7 +169,7 @@ class CopierBot(rpc.XmlRpcBot):
         logging.info("copying:" + " ".join(started)+".")
         return started
         
-    def runFinished(self, runDir, *args):
+    def sequencingFinished(self, runDir, *args):
         """
         The run was finished, if we're done copying, pass the message on        
         """
@@ -174,12 +181,12 @@ class CopierBot(rpc.XmlRpcBot):
             if runDir in self.rsync.keys():
                 # still copying
                 self.pending.append(runDir)
-                logging.info("%s finished, but still copying" % (runDir))
+                logging.info("finished sequencing, but still copying" % (runDir))
                 return "PENDING"
             else:
                 # we're done
-                self.reportRunFinished(runDir)
-                logging.info("%s finished" % (runDir))
+                self.reportSequencingFinished(runDir)
+                logging.info("finished sequencing %s" % (runDir))
                 return "DONE"
         else:
             errmsg = "received bad runfolder name (%s)" % (runDir)
@@ -187,17 +194,17 @@ class CopierBot(rpc.XmlRpcBot):
             # maybe I should use a different error message
             raise RuntimeError(errmsg)
     
-    def reportRunFinished(self, runDir):
+    def reportSequencingFinished(self, runDir):
         """
-        Send the runFinished message to the interested parties
+        Send the sequencingFinished message to the interested parties
         """
         if self.notify_users is not None:
             for u in self.notify_users:
-                self.send(u, 'run %s finished' % (runDir))
+                self.send(u, 'Sequencing run %s finished' % (runDir))
         if self.notify_runner is not None:
             for r in self.notify_runner:
-                rpc.send(self.cl, self.runner, (runDir,), 'runFinished')
-        logging.info("forwarding runFinshed message for %s" % (runDir))
+                self.rpc_send(r, (runDir,), 'sequencingFinished')
+        logging.info("forwarding sequencingFinshed message for %s" % (runDir))
         
     def update(self, *args):
         """
@@ -207,7 +214,7 @@ class CopierBot(rpc.XmlRpcBot):
         self.rsync.poll()
         for p in self.pending:
             if p not in self.rsync.keys():
-                self.reportRunFinished(p)
+                self.reportSequencingFinished(p)
                 self.pending.remove(p)
         
     def _parser(self, msg, who):
@@ -226,7 +233,7 @@ class CopierBot(rpc.XmlRpcBot):
               msg.append(u"  " + d)
             reply = os.linesep.join(msg)
         else:
-            reply = u"I didn't understand '%s'"+os.linesep+help % (unicode(msg))
+            reply = u"I didn't understand '%s'" % (unicode(msg))
         return reply
 
 def main(args=None):