def get_port_id_by_mac(self, port_mac): for network_id, data in self.network_map.iteritems(): for port in data['ports']: if port['port_mac'] == port_mac: return port['port_id'] err_msg = _("Agent cache inconsistency - port id " "is not stored for %s") % port_mac LOG.error(err_msg) raise exceptions.MlnxException(err_msg)
def parse_response_msg(self, recv_msg): msg = jsonutils.loads(recv_msg) if msg['status'] == 'OK': if 'response' in msg: return msg.get('response') return elif msg['status'] == 'FAIL': msg_dict = dict(action=msg['action'], reason=msg['reason']) error_msg = _("Action %(action)s failed: %(reason)s") % msg_dict else: error_msg = _("Unknown operation status %s") % msg['status'] LOG.error(error_msg) raise exceptions.MlnxException(error_msg)
def send_msg(self, msg): self._conn.send(msg) socks = dict(self.poller.poll(self.timeout)) if socks.get(self._conn) == zmq.POLLIN: recv_msg = self._conn.recv() response = self.parse_response_msg(recv_msg) return response else: self._conn.setsockopt(zmq.LINGER, 0) self._conn.close() self.poller.unregister(self._conn) self.__conn = None raise exceptions.MlnxException(_("eSwitchD: Request timeout"))