Exemple #1
0
    def setup_rpc(self, physical_interfaces):
        if physical_interfaces:
            mac = utils.get_interface_mac(physical_interfaces[0])
        else:
            devices = ip_lib.IPWrapper(self.root_helper).get_devices(True)
            if devices:
                mac = utils.get_interface_mac(devices[0].name)
            else:
                LOG.error(_("Unable to obtain MAC address for unique ID. "
                          "Agent terminated!"))
                exit(1)
        self.agent_id = '%s%s' % ('lb', (mac.replace(":", "")))
        LOG.info(_("RPC agent_id: %s"), self.agent_id)

        self.topic = topics.AGENT
        self.plugin_rpc = LinuxBridgePluginApi(topics.PLUGIN)
        self.state_rpc = agent_rpc.PluginReportStateAPI(topics.PLUGIN)
        # RPC network init
        self.context = context.get_admin_context_without_session()
        # Handle updates from service
        self.callbacks = LinuxBridgeRpcCallbacks(self.context,
                                                 self)
        self.dispatcher = self.callbacks.create_rpc_dispatcher()
        # Define the listening consumers for the agent
        consumers = [[topics.PORT, topics.UPDATE],
                     [topics.NETWORK, topics.DELETE],
                     [topics.SECURITY_GROUP, topics.UPDATE]]
        self.connection = agent_rpc.create_consumers(self.dispatcher,
                                                     self.topic,
                                                     consumers)
        report_interval = cfg.CONF.AGENT.report_interval
        if report_interval:
            heartbeat = loopingcall.LoopingCall(self._report_state)
            heartbeat.start(interval=report_interval)
Exemple #2
0
    def setup_rpc(self):
        self.host = socket.gethostname()
        self.agent_id = 'nec-q-agent.%s' % self.host
        LOG.info(_("RPC agent_id: %s"), self.agent_id)

        self.topic = topics.AGENT
        self.context = q_context.get_admin_context_without_session()

        self.plugin_rpc = NECPluginApi(topics.PLUGIN)
        self.state_rpc = agent_rpc.PluginReportStateAPI(topics.PLUGIN)
        self.sg_agent = SecurityGroupAgentRpc(self.context)

        # RPC network init
        # Handle updates from service
        self.callback_nec = NECAgentRpcCallback(self.context, self,
                                                self.sg_agent)
        self.callback_sg = SecurityGroupAgentRpcCallback(
            self.context, self.sg_agent)
        self.dispatcher = dispatcher.RpcDispatcher(
            [self.callback_nec, self.callback_sg])
        # Define the listening consumer for the agent
        consumers = [[topics.PORT, topics.UPDATE],
                     [topics.SECURITY_GROUP, topics.UPDATE]]
        self.connection = agent_rpc.create_consumers(self.dispatcher,
                                                     self.topic, consumers)

        report_interval = config.CONF.AGENT.report_interval
        if report_interval:
            heartbeat = loopingcall.FixedIntervalLoopingCall(
                self._report_state)
            heartbeat.start(interval=report_interval)
Exemple #3
0
 def test_plugin_report_state(self):
     topic = 'test'
     reportStateAPI = rpc.PluginReportStateAPI(topic)
     expected_agent_state = {'agent': 'test'}
     with mock.patch.object(reportStateAPI, 'call') as call:
         ctxt = context.RequestContext('fake_user', 'fake_project')
         reportStateAPI.report_state(ctxt, expected_agent_state)
         self.assertEqual(call.call_args[0][0], ctxt)
         self.assertEqual(call.call_args[0][1]['method'], 'report_state')
         self.assertEqual(call.call_args[0][1]['args']['agent_state'],
                          {'agent_state': expected_agent_state})
         self.assertIsInstance(call.call_args[0][1]['args']['time'], str)
         self.assertEqual(call.call_args[1]['topic'], topic)
Exemple #4
0
 def __init__(self, host=None):
     super(DhcpAgentWithStateReport, self).__init__(host=host)
     self.state_rpc = agent_rpc.PluginReportStateAPI(topics.PLUGIN)
     self.agent_state = {
         'binary': 'quantum-dhcp-agent',
         'host': host,
         'topic': topics.DHCP_AGENT,
         'configurations': {
             'dhcp_driver': cfg.CONF.dhcp_driver,
             'use_namespaces': cfg.CONF.use_namespaces,
             'dhcp_lease_time': cfg.CONF.dhcp_lease_time},
         'start_flag': True,
         'agent_type': constants.AGENT_TYPE_DHCP}
     report_interval = cfg.CONF.AGENT.report_interval
     if report_interval:
         self.heartbeat = loopingcall.FixedIntervalLoopingCall(
             self._report_state)
         self.heartbeat.start(interval=report_interval)
    def _setup_rpc(self):
        self.agent_id = 'mlnx-agent.%s' % socket.gethostname()
        self.topic = topics.AGENT
        self.plugin_rpc = agent_rpc.PluginApi(topics.PLUGIN)
        self.state_rpc = agent_rpc.PluginReportStateAPI(topics.PLUGIN)
        # RPC network init
        self.context = context.get_admin_context_without_session()
        # Handle updates from service
        self.callbacks = MlnxEswitchRpcCallbacks(self.context, self.eswitch)
        self.dispatcher = self.callbacks.create_rpc_dispatcher()
        # Define the listening consumers for the agent
        consumers = [[topics.PORT, topics.UPDATE],
                     [topics.NETWORK, topics.DELETE]]
        self.connection = agent_rpc.create_consumers(self.dispatcher,
                                                     self.topic, consumers)

        report_interval = cfg.CONF.AGENT.report_interval
        if report_interval:
            heartbeat = loopingcall.LoopingCall(self._report_state)
            heartbeat.start(interval=report_interval)
Exemple #6
0
    def setup_rpc(self, integ_br):
        mac = utils.get_interface_mac(integ_br)
        self.agent_id = '%s%s' % ('ovs', (mac.replace(":", "")))
        self.topic = topics.AGENT
        self.plugin_rpc = OVSPluginApi(topics.PLUGIN)
        self.state_rpc = agent_rpc.PluginReportStateAPI(topics.PLUGIN)

        # RPC network init
        self.context = context.get_admin_context_without_session()
        # Handle updates from service
        self.dispatcher = self.create_rpc_dispatcher()
        # Define the listening consumers for the agent
        consumers = [[topics.PORT, topics.UPDATE],
                     [topics.NETWORK, topics.DELETE],
                     [constants.TUNNEL, topics.UPDATE],
                     [topics.SECURITY_GROUP, topics.UPDATE]]
        self.connection = agent_rpc.create_consumers(self.dispatcher,
                                                     self.topic, consumers)
        report_interval = cfg.CONF.AGENT.report_interval
        if report_interval:
            heartbeat = loopingcall.FixedIntervalLoopingCall(
                self._report_state)
            heartbeat.start(interval=report_interval)
Exemple #7
0
 def __init__(self, host, conf=None):
     super(L3NATAgentWithStateReport, self).__init__(host=host, conf=conf)
     self.state_rpc = agent_rpc.PluginReportStateAPI(topics.PLUGIN)
     self.agent_state = {
         'binary': 'quantum-l3-agent',
         'host': host,
         'topic': topics.L3_AGENT,
         'configurations': {
             'use_namespaces': self.conf.use_namespaces,
             'router_id': self.conf.router_id,
             'handle_internal_only_routers':
             self.conf.handle_internal_only_routers,
             'gateway_external_network_id':
             self.conf.gateway_external_network_id,
             'interface_driver': self.conf.interface_driver
         },
         'start_flag': True,
         'agent_type': l3_constants.AGENT_TYPE_L3
     }
     report_interval = cfg.CONF.AGENT.report_interval
     if report_interval:
         self.heartbeat = loopingcall.LoopingCall(self._report_state)
         self.heartbeat.start(interval=report_interval)