Esempio n. 1
0
    def send_and_receive(self, msg):
        """Sends an IPMI request message and waits for its response.

        `msg` is a IPMI Message containing both the request and response.
        """

        log().debug('IPMI Request [%s]', msg)

        retries = 0
        while retries < self.max_retries:
            try:
                rx_data = self._send_and_receive_raw(msg.target, msg.lun,
                        msg.netfn, chr(msg.cmdid) + encode_message(msg))
                break
            except TimeoutError:
                pass

            retries += 1

        else:
            raise TimeoutError()

        msg = create_message(msg.cmdid, msg.netfn + 1)
        decode_message(msg, rx_data[5:-1])

        log().debug('IPMI Response [%s])', msg)

        return msg
Esempio n. 2
0
    def send_and_receive(self, req):
        log().debug('IPMI Request [%s]', req)

        req_data = (chr(req.cmdid))
        req_data += encode_message(req)

        rsp_data = self.send_and_receive_raw(req.target, req.lun, req.netfn,
                req_data)

        rsp = create_message(req.cmdid, req.netfn + 1)
        decode_message(rsp, rsp_data.tostring())
        log().debug('IPMI Response [%s])', rsp)

        return rsp
Esempio n. 3
0
    def send_and_receive(self, msg):
        """Sends an IPMI request message and waits for its response.

        `msg` is a IPMI Message containing both the request and response.
        """

        log().debug('IPMI Request [%s]', msg)

        rx_data = self._send_and_receive(msg.target, msg.lun, msg.netfn,
                msg.cmdid, encode_message(msg))
        msg = create_message(msg.cmdid, msg.netfn + 1)
        decode_message(msg, rx_data)

        log().debug('IPMI Response [%s])', msg)

        return msg
Esempio n. 4
0
    def send_and_receive(self, msg):
        """Sends an IPMI request message and waits for its response.

        `msg` is a IPMI Message containing both the request and response.
        """

        log().debug('IPMI Request [%s]', msg)

        rx_data = self._send_and_receive_raw(msg.target, msg.lun,
                    msg.netfn, chr(msg.cmdid) + encode_message(msg))

        msg = create_message(msg.cmdid, msg.netfn + 1)
        decode_message(msg, rx_data[5:-1])

        log().debug('IPMI Response [%s])', msg)

        return msg
Esempio n. 5
0
def test_create_message():
    req = create_message(6, 1, None)
    eq_(type(req), pyipmi.msgs.bmc.GetDeviceIdReq)
    req = create_message(7, 1, None)
    eq_(type(req), pyipmi.msgs.bmc.GetDeviceIdRsp)