self.root_helper = config.get_root_helper(self.conf)
self.router_info = {}
- if not self.conf.interface_driver:
- raise SystemExit(_('An interface driver must be specified'))
+ self._check_config_params()
+
try:
self.driver = importutils.import_object(
self.conf.interface_driver,
self.rpc_loop.start(interval=RPC_LOOP_INTERVAL)
super(L3NATAgent, self).__init__(conf=self.conf)
+ def _check_config_params(self):
+ """Check items in configuration files.
+
+ Check for required and invalid configuration items.
+ The actual values are not verified for correctness.
+ """
+ if not self.conf.interface_driver:
+ raise SystemExit(_('An interface driver must be specified'))
+
+ if not self.conf.use_namespaces and not self.conf.router_id:
+ msg = _('Router id is required if not using namespaces.')
+ LOG.error(msg)
+ raise SystemExit(msg)
+
def _destroy_router_namespaces(self, only_router_id=None):
"""Destroy router namespaces on the host to eliminate all stale
linux devices, iptables rules, and namespaces.
self.conf.register_opts(l3_agent.L3NATAgent.OPTS)
agent_config.register_root_helper(self.conf)
self.conf.register_opts(interface.OPTS)
+ self.conf.set_override('router_id', 'fake_id')
self.conf.set_override('interface_driver',
'neutron.agent.linux.interface.NullDriver')
self.conf.root_helper = 'sudo'
'-p tcp -m tcp --dport 80 -j REDIRECT --to-port 8775')
self.assertEqual([rules], agent.metadata_nat_rules())
+ def test_router_id_specified_in_conf(self):
+ self.conf.set_override('use_namespaces', False)
+ self.conf.set_override('router_id', '')
+ self.assertRaises(SystemExit, l3_agent.L3NATAgent,
+ HOSTNAME, self.conf)
+
+ self.conf.set_override('router_id', '1234')
+ agent = l3_agent.L3NATAgent(HOSTNAME, self.conf)
+ self.assertEqual(['1234'], agent._router_ids())
+
class TestL3AgentEventHandler(base.BaseTestCase):