def _create_heart_beat_reporter(self, host):
     listener = core.Listener(
         id=host,
         ppid=os.getppid(),
     )
     self.nb_api.register_listener_callback(self.notify_neutron_server,
                                            listener.topic)
     LOG.info("Register listener %s", listener.id)
     self.heart_beat_reporter = HeartBeatReporter(self.nb_api, listener)
     self.heart_beat_reporter.daemonize()
 def create_heart_beat_reporter(self, host):
     listener = self.nb_api.get(core.Listener(id=host))
     if listener is None:
         self._create_heart_beat_reporter(host)
     else:
         ppid = listener.ppid
         my_ppid = os.getppid()
         LOG.info("Listener %(l)s exists, my ppid is %(ppid)s",
                  {'l': listener, 'ppid': my_ppid})
         # FIXME(wangjian): if api_worker is 1, the old ppid could be
         # equal to my_ppid. I tried to set api_worker=1, still multiple
         # neutron-server processes were created.
         if ppid != my_ppid:
             self.nb_api.delete(listener)
             self._create_heart_beat_reporter(host)
    def test_notify_neutron_server(self):
        listener = core.Listener(id="1")
        self.notifier.nb_api = mock.MagicMock()
        self.notifier.nb_api.get_all.return_value = [listener]
        with mock.patch("dragonflow.db.db_common.DbUpdate"):
            self._nofity_neutron_server_call_with_correct_args(
                "fake_table",
                "fake_port",
                "update",
                "up")

            self._nofity_neutron_server_call_with_correct_args(
                "fake_table1",
                "fake_port1",
                "create",
                "down")
예제 #4
0
 def test_valid_heart_beat_reporter_exists(self):
     listener = core.Listener(id='fake_host', ppid=1)
     self.notifier.nb_api.get.return_value = listener
     self.notifier.create_heart_beat_reporter('fake_host')
     self.notifier.nb_api.register_listener_callback.assert_not_called()
예제 #5
0
 def test_replace_heart_beat_reporter(self):
     listener = core.Listener(id='fake_host', ppid=6)
     self.notifier.nb_api.get.return_value = listener
     self.notifier.create_heart_beat_reporter('fake_host')
     self.notifier.nb_api.register_listener_callback.assert_called_once()