# seconds to start to sync routers' data after
# starting agent
# periodic_fuzzy_delay = 5
+
+# enable_metadata_proxy, which is true by default, can be set to False
+# if the Nova metadata server is not available
+# enable_metadata_proxy = True
\ No newline at end of file
cfg.StrOpt('gateway_external_network_id', default='',
help=_("UUID of external network for routers implemented "
"by the agents.")),
+ cfg.BoolOpt('enable_metadata_proxy', default=True,
+ help=_("Allow running metadata proxy.")),
]
def __init__(self, host, conf=None):
for c, r in self.metadata_nat_rules():
ri.iptables_manager.ipv4['nat'].add_rule(c, r)
ri.iptables_manager.apply()
- self._spawn_metadata_proxy(ri)
+ if self.conf.enable_metadata_proxy:
+ self._spawn_metadata_proxy(ri)
def _router_removed(self, router_id):
ri = self.router_info[router_id]
for c, r in self.metadata_nat_rules():
ri.iptables_manager.ipv4['nat'].remove_rule(c, r)
ri.iptables_manager.apply()
- self._destroy_metadata_proxy(ri)
+ if self.conf.enable_metadata_proxy:
+ self._destroy_metadata_proxy(ri)
del self.router_info[router_id]
self._destroy_router_namespace(ri.ns_name())
self.assertEqual(agent._destroy_router_namespace.call_count, 1)
+ def _configure_metadata_proxy(self, enableflag=True):
+ if not enableflag:
+ self.conf.set_override('enable_metadata_proxy', False)
+ agent = l3_agent.L3NATAgent(HOSTNAME, self.conf)
+ router_id = _uuid()
+ router = {'id': _uuid(),
+ 'external_gateway_info': {},
+ 'routes': []}
+ with mock.patch.object(
+ agent, '_destroy_metadata_proxy') as destroy_proxy:
+ with mock.patch.object(
+ agent, '_spawn_metadata_proxy') as spawn_proxy:
+ agent._router_added(router_id, router)
+ if enableflag:
+ spawn_proxy.assert_called_with(mock.ANY)
+ else:
+ self.assertFalse(spawn_proxy.call_count)
+ agent._router_removed(router_id)
+ if enableflag:
+ destroy_proxy.assert_called_with(mock.ANY)
+ else:
+ self.assertFalse(destroy_proxy.call_count)
+
+ def test_enable_metadata_proxy(self):
+ self._configure_metadata_proxy()
+
+ def test_disable_metadata_proxy_spawn(self):
+ self._configure_metadata_proxy(enableflag=False)
+
class TestL3AgentEventHandler(base.BaseTestCase):