Beispiel #1
0
    def _sendUpdateAll(self):
        logging.debug("Sending update to the mulsticast group %s:%d" 
                        % (self.mg_ip, self.mg_port))

        msg = "%s\n" % gdata.CMD_UPDATE

        snt = self.m_sock.sendto(msg, (self.mg_ip, self.mg_port) )

        if snt == len(msg):
            self.sock.sendall( helper.getOkMessage('Update all sent') )
        else:
            self.sock.sendall( helper.getGenericError(
                                'Error sending to Multicast group'))
Beispiel #2
0
    def _sendUpdateAll(self):
        logging.debug("Sending update to the mulsticast group %s:%d" %
                      (self.mg_ip, self.mg_port))

        msg = "%s\n" % gdata.CMD_UPDATE

        snt = self.m_sock.sendto(msg, (self.mg_ip, self.mg_port))

        if snt == len(msg):
            self.sock.sendall(helper.getOkMessage('Update all sent'))
        else:
            self.sock.sendall(
                helper.getGenericError('Error sending to Multicast group'))
Beispiel #3
0
    def _sendUpdateToMonitor(self, ip, port):
        # Send Update to monitor and get response
        s = socket.create_connection((ip, port), self.timeout)
        s.sendall("%s\n" % gdata.CMD_UPDATE)

        ret = common.recvEnd(s, '\n').strip()
        code, sep, desc = ret.partition(' ')

        # Send result to client
        msg = None
        if code == gdata.K_OK:
            msg = helper.getOkMessage(desc)
        else:
            msg = helper.getGenericError("Received error: %s" % ret)

        self.sock.sendall(msg)
Beispiel #4
0
    def _sendUpdateToMonitor(self, ip, port):
        # Send Update to monitor and get response
        s = socket.create_connection( (ip, port), self.timeout )
        s.sendall("%s\n" % gdata.CMD_UPDATE)

        ret = common.recvEnd(s, '\n').strip()
        code, sep, desc = ret.partition(' ')

        # Send result to client
        msg = None
        if code == gdata.K_OK:
            msg = helper.getOkMessage(desc)
        else:
            msg = helper.getGenericError("Received error: %s" % ret)

        self.sock.sendall(msg)
Beispiel #5
0
class MonitorHandler(ThreadWithRegister):
    def __init__(self, sock, timeout):
        super(MonitorHandler, self).__init__()
        self.sock = sock
        self.timeout = timeout
        self.addr = sock.getpeername()  # Save socket address

    def run(self):
        """run() -> void

        Handles the communication events and errors with a resource monitor.

        """
        MonitorHandler._registerThread(MonitorHandler, self)
        sock = self.sock
        sock.settimeout(self.timeout)

        try:
            data = common.recvEnd(sock, gdata.ETX)

            if data:
                logging.debug("%s:%d Data:\n%s" %
                              (self.addr[0], self.addr[1], data))
                head, sep, body = data.partition(' ')
                head = head.strip()
                body = body.strip()

                if helper.isBEL(head):  # New monitor
                    self._newMonitor(body)
                elif helper.isSOH(head):  # Monitor data update
                    self._updateMonitor(body)
                else:  # Unknown data
                    logging.info("Unknown monitor message '%s' from %s:%d" %
                                 (data, self.addr[0], self.addr[1]))
                    sock.sendall(helper.getBadMessageError("Wrong message"))

        except socket.timeout:
            logging.debug("Socket TIMEOUT %s:%d" % self.addr)
            sock.sendall(
                helper.getTimeoutError("Reached timeout of %.1f seconds" %
                                       self.timeout))
        except AttributeError, e:
            sock.sendall(helper.getGenericError(str(e)))
        except ValueError, e:
            sock.sendall(helper.getGenericError(str(e)))
Beispiel #6
0
def _updateFromOther(sock, instruction, params, timeout):
    try:
        ip, port = params.strip().split(':')
        port = int(port)

        response = ''

        sock_to_other = socket.create_connection((ip, port), timeout)
        sock_to_other.sendall(instruction + '\n')

        msg = common.recvEnd(sock_to_other, '\n\n') + '\n\n'
        response_head, sep, rest = msg.partition(' ')

        if response_head != gdata.K_OK:
            msg = helper.getGenericError('Bad response')

    except ValueError:
        msg = helper.getUnknownCmdError('Bad formatted parameters')
    except socket.error, e:
        msg = helper.getMonitorUnreachableError('Connection failed')
Beispiel #7
0
def _updateFromOther(sock, instruction, params, timeout):
    try:
        ip, port = params.strip().split(':')
        port = int(port)

        response = ''

        sock_to_other = socket.create_connection((ip, port), timeout)
        sock_to_other.sendall(instruction + '\n')

        msg = common.recvEnd(sock_to_other, '\n\n') + '\n\n'
        response_head, sep, rest = msg.partition(' ')

        if response_head != gdata.K_OK:
            msg = helper.getGenericError('Bad response')

    except ValueError:
        msg = helper.getUnknownCmdError('Bad formatted parameters')
    except socket.error, e:
        msg = helper.getMonitorUnreachableError('Connection failed')
Beispiel #8
0
    def run(self):
        """run() -> void

        Handles the communication events and errors with a resource monitor.

        """
        MonitorHandler._registerThread(MonitorHandler, self)
        sock = self.sock
        sock.settimeout( self.timeout )

        try:
            data = common.recvEnd(sock, gdata.ETX)

            if data:
                logging.debug("%s:%d Data:\n%s" % (self.addr[0], self.addr[1],
                                                    data))
                head, sep, body = data.partition(' ')
                head = head.strip()
                body = body.strip()

                if helper.isBEL(head):      # New monitor
                    self._newMonitor(body)
                elif helper.isSOH(head):    # Monitor data update
                    self._updateMonitor(body)
                else:                       # Unknown data
                    logging.info("Unknown monitor message '%s' from %s:%d" %
                                    (data, self.addr[0], self.addr[1]) )
                    sock.sendall( helper.getBadMessageError("Wrong message") )

        except socket.timeout:
            logging.debug("Socket TIMEOUT %s:%d" % self.addr)
            sock.sendall( helper.getTimeoutError(
                            "Reached timeout of %.1f seconds" % self.timeout) 
                        )
        except AttributeError, e:
            sock.sendall( helper.getGenericError(str(e)) )