Remove the deprecated config 'router_id'
It was deprecated at [1]. Remove the deprecated config 'router_id' and its related tests. [1] https://review.openstack.org/#/c/248498 DocImpact: All references of 'router_id' configuration option and its description should be removed from the docs. UpgradeImpact: Remove 'router_id' configuration option from the l3_agent.ini. Change-Id: Ic9420191e8c1a333e4dcc0b70411591b8573ec7c Closes-Bug: #1594711
This commit is contained in:
parent
d320df540d
commit
448bc8e522
@ -401,9 +401,6 @@ class L3NATAgent(ha.AgentMixin,
|
|||||||
self.conf.external_network_bridge)
|
self.conf.external_network_bridge)
|
||||||
return
|
return
|
||||||
|
|
||||||
if self.conf.router_id and router['id'] != self.conf.router_id:
|
|
||||||
raise n_exc.RouterNotCompatibleWithAgent(router_id=router['id'])
|
|
||||||
|
|
||||||
# Either ex_net_id or handle_internal_only_routers must be set
|
# Either ex_net_id or handle_internal_only_routers must be set
|
||||||
ex_net_id = (router['external_gateway_info'] or {}).get('network_id')
|
ex_net_id = (router['external_gateway_info'] or {}).get('network_id')
|
||||||
if not ex_net_id and not self.conf.handle_internal_only_routers:
|
if not ex_net_id and not self.conf.handle_internal_only_routers:
|
||||||
@ -535,8 +532,7 @@ class L3NATAgent(ha.AgentMixin,
|
|||||||
timestamp = timeutils.utcnow()
|
timestamp = timeutils.utcnow()
|
||||||
|
|
||||||
try:
|
try:
|
||||||
router_ids = ([self.conf.router_id] if self.conf.router_id else
|
router_ids = self.plugin_rpc.get_router_ids(context)
|
||||||
self.plugin_rpc.get_router_ids(context))
|
|
||||||
# fetch routers by chunks to reduce the load on server and to
|
# fetch routers by chunks to reduce the load on server and to
|
||||||
# start router processing earlier
|
# start router processing earlier
|
||||||
for i in range(0, len(router_ids), self.sync_routers_chunk_size):
|
for i in range(0, len(router_ids), self.sync_routers_chunk_size):
|
||||||
@ -624,7 +620,6 @@ class L3NATAgentWithStateReport(L3NATAgent):
|
|||||||
'topic': topics.L3_AGENT,
|
'topic': topics.L3_AGENT,
|
||||||
'configurations': {
|
'configurations': {
|
||||||
'agent_mode': self.conf.agent_mode,
|
'agent_mode': self.conf.agent_mode,
|
||||||
'router_id': self.conf.router_id,
|
|
||||||
'handle_internal_only_routers':
|
'handle_internal_only_routers':
|
||||||
self.conf.handle_internal_only_routers,
|
self.conf.handle_internal_only_routers,
|
||||||
'external_network_bridge': self.conf.external_network_bridge,
|
'external_network_bridge': self.conf.external_network_bridge,
|
||||||
|
@ -45,10 +45,6 @@ OPTS = [
|
|||||||
default=3,
|
default=3,
|
||||||
help=_("Send this many gratuitous ARPs for HA setup, if "
|
help=_("Send this many gratuitous ARPs for HA setup, if "
|
||||||
"less than or equal to 0, the feature is disabled")),
|
"less than or equal to 0, the feature is disabled")),
|
||||||
cfg.StrOpt('router_id', default='',
|
|
||||||
deprecated_for_removal=True,
|
|
||||||
help=_("If non-empty, the l3 agent can only configure a router "
|
|
||||||
"that has the matching router ID.")),
|
|
||||||
cfg.BoolOpt('handle_internal_only_routers',
|
cfg.BoolOpt('handle_internal_only_routers',
|
||||||
default=True,
|
default=True,
|
||||||
help=_("Indicates that this L3 agent should also handle "
|
help=_("Indicates that this L3 agent should also handle "
|
||||||
|
@ -55,7 +55,7 @@ class FakePlugin(common_db_mixin.CommonDbMixin,
|
|||||||
|
|
||||||
|
|
||||||
def _get_l3_agent_dict(host, agent_mode, internal_only=True,
|
def _get_l3_agent_dict(host, agent_mode, internal_only=True,
|
||||||
ext_net_id='', ext_bridge='', router_id=None,
|
ext_net_id='', ext_bridge='',
|
||||||
az=DEFAULT_AZ):
|
az=DEFAULT_AZ):
|
||||||
return {
|
return {
|
||||||
'agent_type': constants.AGENT_TYPE_L3,
|
'agent_type': constants.AGENT_TYPE_L3,
|
||||||
@ -66,8 +66,7 @@ def _get_l3_agent_dict(host, agent_mode, internal_only=True,
|
|||||||
'configurations': {'agent_mode': agent_mode,
|
'configurations': {'agent_mode': agent_mode,
|
||||||
'handle_internal_only_routers': internal_only,
|
'handle_internal_only_routers': internal_only,
|
||||||
'external_network_bridge': ext_bridge,
|
'external_network_bridge': ext_bridge,
|
||||||
'gateway_external_network_id': ext_net_id,
|
'gateway_external_network_id': ext_net_id}}
|
||||||
'router_id': router_id}}
|
|
||||||
|
|
||||||
|
|
||||||
def _register_agent(agent, plugin=None):
|
def _register_agent(agent, plugin=None):
|
||||||
@ -81,9 +80,9 @@ def _register_agent(agent, plugin=None):
|
|||||||
|
|
||||||
def register_l3_agent(host=HOST, agent_mode=n_const.L3_AGENT_MODE_LEGACY,
|
def register_l3_agent(host=HOST, agent_mode=n_const.L3_AGENT_MODE_LEGACY,
|
||||||
internal_only=True, ext_net_id='', ext_bridge='',
|
internal_only=True, ext_net_id='', ext_bridge='',
|
||||||
router_id=None, az=DEFAULT_AZ):
|
az=DEFAULT_AZ):
|
||||||
agent = _get_l3_agent_dict(host, agent_mode, internal_only, ext_net_id,
|
agent = _get_l3_agent_dict(host, agent_mode, internal_only, ext_net_id,
|
||||||
ext_bridge, router_id, az)
|
ext_bridge, az)
|
||||||
return _register_agent(agent)
|
return _register_agent(agent)
|
||||||
|
|
||||||
|
|
||||||
|
@ -1999,10 +1999,6 @@ class TestBasicRouterOperations(BasicRouterOperationsFramework):
|
|||||||
def test_disable_metadata_proxy_spawn(self):
|
def test_disable_metadata_proxy_spawn(self):
|
||||||
self._configure_metadata_proxy(enableflag=False)
|
self._configure_metadata_proxy(enableflag=False)
|
||||||
|
|
||||||
def test_router_id_specified_in_conf(self):
|
|
||||||
self.conf.set_override('router_id', '1234')
|
|
||||||
self._configure_metadata_proxy()
|
|
||||||
|
|
||||||
def _test_process_routers_update_rpc_timeout(self, ext_net_call=False,
|
def _test_process_routers_update_rpc_timeout(self, ext_net_call=False,
|
||||||
ext_net_call_failed=False):
|
ext_net_call_failed=False):
|
||||||
agent = l3_agent.L3NATAgent(HOSTNAME, self.conf)
|
agent = l3_agent.L3NATAgent(HOSTNAME, self.conf)
|
||||||
@ -2222,7 +2218,6 @@ class TestBasicRouterOperations(BasicRouterOperationsFramework):
|
|||||||
self.assertFalse(agent.namespaces_manager._clean_stale)
|
self.assertFalse(agent.namespaces_manager._clean_stale)
|
||||||
|
|
||||||
def test_cleanup_namespace(self):
|
def test_cleanup_namespace(self):
|
||||||
self.conf.set_override('router_id', None)
|
|
||||||
stale_namespaces = [namespaces.NS_PREFIX + 'foo',
|
stale_namespaces = [namespaces.NS_PREFIX + 'foo',
|
||||||
namespaces.NS_PREFIX + 'bar',
|
namespaces.NS_PREFIX + 'bar',
|
||||||
dvr_snat_ns.SNAT_NS_PREFIX + 'foo']
|
dvr_snat_ns.SNAT_NS_PREFIX + 'foo']
|
||||||
@ -2233,7 +2228,6 @@ class TestBasicRouterOperations(BasicRouterOperationsFramework):
|
|||||||
other_namespaces)
|
other_namespaces)
|
||||||
|
|
||||||
def test_cleanup_namespace_with_registered_router_ids(self):
|
def test_cleanup_namespace_with_registered_router_ids(self):
|
||||||
self.conf.set_override('router_id', None)
|
|
||||||
stale_namespaces = [namespaces.NS_PREFIX + 'cccc',
|
stale_namespaces = [namespaces.NS_PREFIX + 'cccc',
|
||||||
namespaces.NS_PREFIX + 'eeeee',
|
namespaces.NS_PREFIX + 'eeeee',
|
||||||
dvr_snat_ns.SNAT_NS_PREFIX + 'fffff']
|
dvr_snat_ns.SNAT_NS_PREFIX + 'fffff']
|
||||||
@ -2245,19 +2239,6 @@ class TestBasicRouterOperations(BasicRouterOperationsFramework):
|
|||||||
router_list,
|
router_list,
|
||||||
other_namespaces)
|
other_namespaces)
|
||||||
|
|
||||||
def test_cleanup_namespace_with_conf_router_id(self):
|
|
||||||
self.conf.set_override('router_id', 'bbbbb')
|
|
||||||
stale_namespaces = [namespaces.NS_PREFIX + 'cccc',
|
|
||||||
namespaces.NS_PREFIX + 'eeeee',
|
|
||||||
namespaces.NS_PREFIX + self.conf.router_id]
|
|
||||||
router_list = [{'id': 'foo', 'distributed': False},
|
|
||||||
{'id': 'aaaa', 'distributed': False}]
|
|
||||||
other_namespaces = ['qdhcp-aabbcc', 'unknown']
|
|
||||||
|
|
||||||
self._cleanup_namespace_test(stale_namespaces,
|
|
||||||
router_list,
|
|
||||||
other_namespaces)
|
|
||||||
|
|
||||||
def test_create_dvr_gateway(self):
|
def test_create_dvr_gateway(self):
|
||||||
agent = l3_agent.L3NATAgent(HOSTNAME, self.conf)
|
agent = l3_agent.L3NATAgent(HOSTNAME, self.conf)
|
||||||
router = l3_test_common.prepare_router_data()
|
router = l3_test_common.prepare_router_data()
|
||||||
|
@ -55,7 +55,6 @@ class TestDvrRouterOperations(base.BaseTestCase):
|
|||||||
agent_config.register_process_monitor_opts(self.conf)
|
agent_config.register_process_monitor_opts(self.conf)
|
||||||
self.conf.register_opts(interface.OPTS)
|
self.conf.register_opts(interface.OPTS)
|
||||||
self.conf.register_opts(external_process.OPTS)
|
self.conf.register_opts(external_process.OPTS)
|
||||||
self.conf.set_override('router_id', 'fake_id')
|
|
||||||
self.conf.set_override('interface_driver',
|
self.conf.set_override('interface_driver',
|
||||||
'neutron.agent.linux.interface.NullDriver')
|
'neutron.agent.linux.interface.NullDriver')
|
||||||
self.conf.set_override('send_arp_for_ha', 1)
|
self.conf.set_override('send_arp_for_ha', 1)
|
||||||
|
@ -927,23 +927,6 @@ class OvsAgentSchedulerTestCase(OvsAgentSchedulerTestCaseBase):
|
|||||||
self.assertEqual(2, num_hostb_routers)
|
self.assertEqual(2, num_hostb_routers)
|
||||||
self.assertEqual(0, num_hosta_routers)
|
self.assertEqual(0, num_hosta_routers)
|
||||||
|
|
||||||
def test_router_auto_schedule_with_candidates(self):
|
|
||||||
with self.router() as router1, self.router() as router2:
|
|
||||||
l3_rpc_cb = l3_rpc.L3RpcCallback()
|
|
||||||
agent = helpers.register_l3_agent(
|
|
||||||
host=L3_HOSTA, router_id=router1['router']['id'])
|
|
||||||
l3_rpc_cb.get_router_ids(self.adminContext, host=L3_HOSTA)
|
|
||||||
hosta_routers = self._list_routers_hosted_by_l3_agent(agent.id)
|
|
||||||
num_hosta_routers = len(hosta_routers['routers'])
|
|
||||||
l3_agents_1 = self._list_l3_agents_hosting_router(
|
|
||||||
router1['router']['id'])
|
|
||||||
l3_agents_2 = self._list_l3_agents_hosting_router(
|
|
||||||
router2['router']['id'])
|
|
||||||
# L3 agent will host only the compatible router.
|
|
||||||
self.assertEqual(1, num_hosta_routers)
|
|
||||||
self.assertEqual(1, len(l3_agents_1['agents']))
|
|
||||||
self.assertEqual(0, len(l3_agents_2['agents']))
|
|
||||||
|
|
||||||
def test_rpc_sync_routers(self):
|
def test_rpc_sync_routers(self):
|
||||||
l3_rpc_cb = l3_rpc.L3RpcCallback()
|
l3_rpc_cb = l3_rpc.L3RpcCallback()
|
||||||
self._register_agent_states()
|
self._register_agent_states()
|
||||||
@ -1017,42 +1000,6 @@ class OvsAgentSchedulerTestCase(OvsAgentSchedulerTestCaseBase):
|
|||||||
# Sync all routers (router3 is scheduled)
|
# Sync all routers (router3 is scheduled)
|
||||||
_sync_router_with_ids(router_ids, 4, 4, hosta_id)
|
_sync_router_with_ids(router_ids, 4, 4, hosta_id)
|
||||||
|
|
||||||
def test_router_schedule_with_candidates(self):
|
|
||||||
with self.router() as router1,\
|
|
||||||
self.router() as router2,\
|
|
||||||
self.subnet() as subnet1,\
|
|
||||||
self.subnet(cidr='10.0.3.0/24') as subnet2:
|
|
||||||
agent = helpers.register_l3_agent(
|
|
||||||
host=L3_HOSTA, router_id=router1['router']['id'])
|
|
||||||
self._router_interface_action('add',
|
|
||||||
router1['router']['id'],
|
|
||||||
subnet1['subnet']['id'],
|
|
||||||
None)
|
|
||||||
self._router_interface_action('add',
|
|
||||||
router2['router']['id'],
|
|
||||||
subnet2['subnet']['id'],
|
|
||||||
None)
|
|
||||||
hosta_routers = self._list_routers_hosted_by_l3_agent(agent.id)
|
|
||||||
num_hosta_routers = len(hosta_routers['routers'])
|
|
||||||
l3_agents_1 = self._list_l3_agents_hosting_router(
|
|
||||||
router1['router']['id'])
|
|
||||||
l3_agents_2 = self._list_l3_agents_hosting_router(
|
|
||||||
router2['router']['id'])
|
|
||||||
# safe cleanup
|
|
||||||
self._router_interface_action('remove',
|
|
||||||
router1['router']['id'],
|
|
||||||
subnet1['subnet']['id'],
|
|
||||||
None)
|
|
||||||
self._router_interface_action('remove',
|
|
||||||
router2['router']['id'],
|
|
||||||
subnet2['subnet']['id'],
|
|
||||||
None)
|
|
||||||
|
|
||||||
# L3 agent will host only the compatible router.
|
|
||||||
self.assertEqual(1, num_hosta_routers)
|
|
||||||
self.assertEqual(1, len(l3_agents_1['agents']))
|
|
||||||
self.assertEqual(0, len(l3_agents_2['agents']))
|
|
||||||
|
|
||||||
def test_router_without_l3_agents(self):
|
def test_router_without_l3_agents(self):
|
||||||
with self.subnet() as s:
|
with self.subnet() as s:
|
||||||
self._set_net_external(s['subnet']['network_id'])
|
self._set_net_external(s['subnet']['network_id'])
|
||||||
|
10
releasenotes/notes/remove-router_id-b3732089f8f1faa1.yaml
Normal file
10
releasenotes/notes/remove-router_id-b3732089f8f1faa1.yaml
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
---
|
||||||
|
prelude: >
|
||||||
|
Remove 'router_id' configuration option from the
|
||||||
|
l3_agent.ini file. 'router_id' option has been defined
|
||||||
|
in order to associate an l3-agent to a specific router
|
||||||
|
when use_namespaces=False. It was deprecated after
|
||||||
|
use_namespaces was removed in Mitaka release.
|
||||||
|
upgrade:
|
||||||
|
- Remove 'router_id' configuration option from the
|
||||||
|
l3_agent.ini file.
|
Loading…
Reference in New Issue
Block a user