Ejemplo n.º 1
0
    def ev_timer(self, timer):
        """perform gateway traffic grooming"""
        if not self.worker:
            return
        logger = self.logger

        # check for grooming opportunities for stdout/stderr
        for msg_elem, nodes in self.worker.iter_errors():
            logger.debug("iter(stderr): %s: %d bytes", nodes,
                         len(msg_elem.message()))
            self.gwchan.send(
                StdErrMessage(nodes, msg_elem.message(), self.srcwkr))
        for msg_elem, nodes in self.worker.iter_buffers():
            logger.debug("iter(stdout): %s: %d bytes", nodes,
                         len(msg_elem.message()))
            self.gwchan.send(
                StdOutMessage(nodes, msg_elem.message(), self.srcwkr))
        # empty internal MsgTree buffers
        self.worker.flush_buffers()
        self.worker.flush_errors()

        # specifically manage retcodes to periodically return latest
        # retcodes to parent node, instead of doing it at ev_hup (no msg
        # aggregation) or at ev_close (no parent node live updates)
        for rc, nodes in self.retcodes.items():
            self.logger.debug("iter(rc): %s: rc=%d", nodes, rc)
            self.gwchan.send(RetcodeMessage(nodes, rc, self.srcwkr))
        self.retcodes.clear()
Ejemplo n.º 2
0
 def ev_hup(self, worker, node, rc):
     """Received end of command from one node"""
     if self.timer is None:
         self.gwchan.send(RetcodeMessage(node, rc, self.srcwkr))
     else:
         # retcode grooming
         if rc in self.retcodes:
             self.retcodes[rc].add(node)
         else:
             self.retcodes[rc] = NodeSet(node)
Ejemplo n.º 3
0
 def ev_hup(self, worker):
     """Received end of command from one node"""
     if self.timer is None:
         self.gwchan.send(
             RetcodeMessage(worker.current_node, worker.current_rc,
                            self.srcwkr))
     else:
         # retcode grooming
         if worker.current_rc in self.retcodes:
             self.retcodes[worker.current_rc].add(worker.current_node)
         else:
             self.retcodes[worker.current_rc] = NodeSet(worker.current_node)