Solve unexpected NoneType returned by _get_routers_can_schedule.
Solve a problem with an unexpected NoneType returned by
_get_routers_can_schedule called from within
_schedule_ha_routers_to_additional_agent when using:
router_scheduler_driver =
neutron.scheduler.l3_agent_scheduler.AZLeastRoutersScheduler
This was leading to problems with starting neutron-l3-agent on network
nodes, causing HA routers to fail to start.
Closes-Bug: #1641879
Related-Bug: #1654128
Change-Id: I33c5a6214670f0ada9c2293b0eb2ff243f6f7b1b
(cherry picked from commit 62176a9b40
)
This commit is contained in:
parent
67e334b81c
commit
dd6fd62539
|
@ -411,7 +411,7 @@ class AZLeastRoutersScheduler(LeastRoutersScheduler):
|
|||
target_routers.append(r)
|
||||
|
||||
if not target_routers:
|
||||
return
|
||||
return []
|
||||
|
||||
return super(AZLeastRoutersScheduler, self)._get_routers_can_schedule(
|
||||
context, plugin, target_routers, l3_agent)
|
||||
|
|
|
@ -171,7 +171,7 @@ class L3SchedulerBaseTestCase(base.BaseTestCase):
|
|||
self.scheduler,
|
||||
'_get_routers_can_schedule') as mock_target_routers:
|
||||
mock_unscheduled_routers.return_value = mock.ANY
|
||||
mock_target_routers.return_value = None
|
||||
mock_target_routers.return_value = []
|
||||
result = self.scheduler.auto_schedule_routers(
|
||||
self.plugin, mock.ANY, mock.ANY, mock.ANY)
|
||||
self.assertTrue(self.plugin.get_enabled_agent_on_host.called)
|
||||
|
@ -1985,6 +1985,11 @@ class L3AgentAZLeastRoutersSchedulerTestCase(L3HATestCaseMixin):
|
|||
hosts = set([a['host'] for a in agents])
|
||||
self.assertEqual(expected_hosts, hosts)
|
||||
|
||||
def test__get_routers_can_schedule_with_no_target_routers(self):
|
||||
result = self.plugin.router_scheduler._get_routers_can_schedule(
|
||||
self.plugin, mock.ANY, [], mock.ANY)
|
||||
self.assertEqual([], result)
|
||||
|
||||
|
||||
class L3DVRHAPlugin(db_v2.NeutronDbPluginV2,
|
||||
l3_hamode_db.L3_HA_NAT_db_mixin,
|
||||
|
|
Loading…
Reference in New Issue