from oslo_log import log as logging
+from neutron.agent.l3 import dvr_fip_ns
from neutron.agent.l3 import dvr_snat_ns
from neutron.agent.l3 import namespaces
from neutron.agent.linux import external_process
agent restarts gracefully.
"""
+ ns_prefix_to_class_map = {
+ namespaces.NS_PREFIX: namespaces.RouterNamespace,
+ dvr_snat_ns.SNAT_NS_PREFIX: dvr_snat_ns.SnatNamespace,
+ dvr_fip_ns.FIP_NS_PREFIX: dvr_fip_ns.FipNamespace,
+ }
+
def __init__(self, agent_conf, driver, clean_stale, metadata_driver=None):
"""Initialize the NamespaceManager.
:returns: tuple with prefix and id or None if no prefix matches
"""
prefix = namespaces.get_prefix_from_ns_name(ns_name)
- if prefix in (namespaces.NS_PREFIX, dvr_snat_ns.SNAT_NS_PREFIX):
+ if prefix in self.ns_prefix_to_class_map:
identifier = namespaces.get_id_from_ns_name(ns_name)
return (prefix, identifier)
self._cleanup(ns_prefix, ns_id)
def _cleanup(self, ns_prefix, ns_id):
- if ns_prefix == namespaces.NS_PREFIX:
- ns_class = namespaces.RouterNamespace
- else:
- ns_class = dvr_snat_ns.SnatNamespace
+ ns_class = self.ns_prefix_to_class_map[ns_prefix]
ns = ns_class(ns_id, self.agent_conf, self.driver, use_ipv6=False)
try:
if self.metadata_driver:
import mock
from oslo_utils import uuidutils
+from neutron.agent.l3 import dvr_fip_ns
from neutron.agent.l3 import dvr_snat_ns
from neutron.agent.l3 import namespace_manager
from neutron.agent.l3 import namespaces
self.assertTrue(self.ns_manager.is_managed(router_ns_name))
router_ns_name = dvr_snat_ns.SNAT_NS_PREFIX + router_id
self.assertTrue(self.ns_manager.is_managed(router_ns_name))
+ router_ns_name = dvr_fip_ns.FIP_NS_PREFIX + router_id
+ self.assertTrue(self.ns_manager.is_managed(router_ns_name))
+
self.assertFalse(self.ns_manager.is_managed('dhcp-' + router_id))
def test_list_all(self):
ns_names = [namespaces.NS_PREFIX + _uuid(),
dvr_snat_ns.SNAT_NS_PREFIX + _uuid(),
+ dvr_fip_ns.FIP_NS_PREFIX + _uuid(),
'dhcp-' + _uuid(), ]
# Test the normal path
ns_names = [namespaces.NS_PREFIX + _uuid() for _ in range(5)]
ns_names += [dvr_snat_ns.SNAT_NS_PREFIX + _uuid() for _ in range(5)]
ns_names += [namespaces.NS_PREFIX + router_id,
- dvr_snat_ns.SNAT_NS_PREFIX + router_id]
+ dvr_snat_ns.SNAT_NS_PREFIX + router_id,
+ dvr_fip_ns.FIP_NS_PREFIX + router_id]
with mock.patch.object(ip_lib.IPWrapper, 'get_namespaces',
return_value=ns_names), \
mock.patch.object(self.ns_manager, '_cleanup') as mock_cleanup:
self.ns_manager.ensure_router_cleanup(router_id)
expected = [mock.call(namespaces.NS_PREFIX, router_id),
- mock.call(dvr_snat_ns.SNAT_NS_PREFIX, router_id)]
+ mock.call(dvr_snat_ns.SNAT_NS_PREFIX, router_id),
+ mock.call(dvr_fip_ns.FIP_NS_PREFIX, router_id)]
mock_cleanup.assert_has_calls(expected, any_order=True)
- self.assertEqual(2, mock_cleanup.call_count)
+ self.assertEqual(3, mock_cleanup.call_count)