Exemplo n.º 1
0
 def vm_config(self, req, **kwargs):
     """
     simulate vm config
     """
     msg = json.loads(req.body)
     print msg
     re_id = msg["re_id"]
     enter = msg.get("cmd", "ENTER") == "ENTER"
     evt = fibcevt.EventFIBCVmConfig(pb.Hello(re_id=re_id), enter)
     self.app.send_event_to_observers(evt)
Exemplo n.º 2
0
    def finalize(self):
        """
        send vm-config(leave) event
        """
        cid = self.get_id()
        self.app.clients.pop(cid)
        _LOG.info("client(VM) %s unregistered.", cid)

        if cid != _RE_ID_ANY:
            evt = fibcevt.EventFIBCVmConfig(self.hello, False)
            self._send_evt(evt)
Exemplo n.º 3
0
    def on_connect(self, soc, addr):
        """
        Receive and process message from clinet.
        - addr: (ip, port)
        """
        _LOG.info("NewConnection %s", addr)

        hdr, data = fibcnet.read_fib_msg(soc)
        if hdr is None or hdr[0] != pb.HELLO:
            _LOG.error("Invalid message. %s", hdr)
            soc.close()
            return

        hello = fibcapi.parse_hello(data)
        if fibclog.dump_msg():
            _LOG.debug("%s", hello)

        if not self.clients.register(hello.re_id, soc, addr):
            _LOG.error("re_id:%s already exist", hello.re_id)
            soc.close()
            return

        vm_evt = fibcevt.EventFIBCVmConfig(hello, True)
        self.send_evt(vm_evt)

        while True:
            try:
                hdr, data = fibcnet.read_fib_msg(soc)
                if hdr is None:
                    _LOG.info("Disconnected %s", addr)
                    break

                self.dispatch(hdr, data)

            except Exception as ex:
                _LOG.exception("%s", ex)

        self.clients.unregister(hello.re_id)

        vm_evt = fibcevt.EventFIBCVmConfig(hello, False)
        self.send_evt(vm_evt)
Exemplo n.º 4
0
    def initialize(self):
        """
        send vm-config(ente) event
        """
        cid = self.get_id()
        if cid in self.app.clients:
            raise KeyError()

        self.app.clients[cid] = self
        _LOG.info("client(VM) %s registerd.", cid)

        if cid != _RE_ID_ANY:
            evt = fibcevt.EventFIBCVmConfig(self.hello, True)
            self._send_evt(evt)