Пример #1
0
 def _set_idmap(cmd, msg):
     if cmd == "add":
         fibcdbm.idmap().add(**msg)
     elif cmd == "delete":
         fibcdbm.idmap().delete_by_re_id(msg["re_id"])
     else:
         _LOG.error("invalid portmap command. %s", cmd)
Пример #2
0
 def get_idmap(req, **kwargs):
     """
     Get All datas.
     """
     sio = StringIO()
     fibcdbm.idmap().dump(sio)
     return Response(content_type='application/json', body=sio.getvalue())
Пример #3
0
 def _set_idmap(cmd, msg):
     """
     cmd: "add" or "delete"
     msg:
       re_id: <string>
       dp_id: <int>
     """
     if cmd == "add":
         fibcdbm.idmap().add(**msg)
     elif cmd == "delete":
         fibcdbm.idmap().delete_by_re_id(msg["re_id"])
     else:
         _LOG.error("invalid portmap command. %s", cmd)
Пример #4
0
    def _on_ff_l2addr_status(self, evt):
        """
        process ff_l2addr_status  message.
        """
        msg = evt.msg # pb.FFL2AddrStatus
        dpath = evt.datapath
        dp_id = evt.datapath.id

        _LOG.debug("FFL2AddrStatus: %s %s", dp_id, msg)

        try:
            re_id = fibcdbm.idmap().find_by_dp_id(dp_id)["re_id"]

        except Exception as ex:
            _LOG.exception(ex)

        new_addrs = []
        for addr in msg.addrs:
            try:
                port = fibcdbm.portmap().find_by_dp(dp_id, addr.port_id)
                vm_port = port["vm"]
                addr.ifname = port["name"].name
                addr.port_id = vm_port.port

                new_addrs.append(addr)

            except Exception as ex:
                _LOG.exception(ex)


        _LOG.debug("FFL2AddrStatus: %s %s", re_id, new_addrs)

        msg = fibcapi.new_l2addr_status(re_id, new_addrs)
        evt = fibcevt.EventFIBCL2AddrStatus(msg)
        self.send_event_to_observers(evt)
Пример #5
0
        def _get_entry():
            try:
                return fibcdbm.portmap().find_by_name(re_id=msg.re_id, name=msg.ifname)

            except KeyError as expt:
                if msg.dp_port != 0:
                    idmap = fibcdbm.idmap().find_by_re_id(msg.re_id)
                    entry = fibcdbm.FIBCPortEntry.new(
                        dp_id=idmap["dp_id"],
                        port=msg.dp_port,
                        re_id=msg.re_id,
                        link=msg.link,
                        name=msg.ifname,
                        no_vs=True,
                        dpenter=idmap["dp_status"],
                    )
                else:
                    entry = fibcdbm.FIBCPortEntry.new(
                        dp_id=0,
                        port=0,
                        re_id=msg.re_id,
                        link=msg.link,
                        name=msg.ifname,
                        no_vs=False,
                    )

                if not entry.is_config():
                    fibcdbm.portmap().add(entry)
                    return entry

                raise expt
Пример #6
0
    def on_dp_config(self, evt):
        """
        Process DpConfig event.
        evt,msg: None
        """
        _LOG.debug("DpConfig: dp_id:%d enter:%s", evt.dp_id, evt.enter)

        entry = fibcdbm.idmap().find_by_dp_id(evt.dp_id)
        if entry.update_dp_status(evt.enter):
            _LOG.debug("send DpStatus on DpConfig. %s %s", entry["re_id"], evt.enter)
            self._send_dp_status_event(entry["re_id"], evt.enter)
Пример #7
0
    def on_vm_config(self, evt):
        """
        Process VmConfig event.
        evt,msg: pb.Hello
        """
        msg = evt.msg

        _LOG.debug("VmConfig: re_id:%s enter:%s", msg.re_id, evt.enter)

        entry = fibcdbm.idmap().find_by_re_id(msg.re_id)
        if entry.update_vm_status(evt.enter):
            _LOG.debug("send DpStatus on VmConfig. %s %s", msg.re_id, evt.enter)
            self._send_dp_status_event(msg.re_id, evt.enter)
Пример #8
0
def _find_dp_by_re_id(re_id):
    dp_id = fibcdbm.idmap().find_by_re_id(re_id)["dp_id"]
    return fibcdbm.dps().find_by_id(dp_id)
Пример #9
0
def _find_dp_by_re_id(re_id):
    dp_id = fibcdbm.idmap().find_by_re_id(re_id)["dp_id"]
    return fibcdbm.dps().find_by_id(dp_id), fibcdbm.dps().get_mode(dp_id, "default")