Return no active network if the agent has not been learnt yet
Sometimes the agent message to get the active networks is processed before the agent is learnt by Neutron. Neutron throws an error, but it should simply return no network Change-Id: I6da0ca578cfe1fe0885138a5e2da76278f791491 Closes-bug: #1302838
This commit is contained in:
parent
44b7d6c4d9
commit
522c445b8a
@ -23,6 +23,7 @@ from neutron.common import constants
|
||||
from neutron.common import utils
|
||||
from neutron.db import agents_db
|
||||
from neutron.db import model_base
|
||||
from neutron.extensions import agent as ext_agent
|
||||
from neutron.extensions import dhcpagentscheduler
|
||||
from neutron.openstack.common import log as logging
|
||||
|
||||
@ -184,8 +185,13 @@ class DhcpAgentSchedulerDbMixin(dhcpagentscheduler
|
||||
return {'networks': []}
|
||||
|
||||
def list_active_networks_on_active_dhcp_agent(self, context, host):
|
||||
agent = self._get_agent_by_type_and_host(
|
||||
context, constants.AGENT_TYPE_DHCP, host)
|
||||
try:
|
||||
agent = self._get_agent_by_type_and_host(
|
||||
context, constants.AGENT_TYPE_DHCP, host)
|
||||
except ext_agent.AgentNotFoundByTypeHost:
|
||||
LOG.debug("DHCP Agent not found on host %s", host)
|
||||
return []
|
||||
|
||||
if not agent.admin_state_up:
|
||||
return []
|
||||
query = context.session.query(NetworkDhcpAgentBinding.network_id)
|
||||
|
@ -576,6 +576,12 @@ class OvsAgentSchedulerTestCase(OvsAgentSchedulerTestCaseBase):
|
||||
self.assertEqual(1, num_before_remove)
|
||||
self.assertEqual(0, num_after_remove)
|
||||
|
||||
def test_list_active_networks_on_not_registered_yet_dhcp_agent(self):
|
||||
plugin = manager.NeutronManager.get_plugin()
|
||||
nets = plugin.list_active_networks_on_active_dhcp_agent(
|
||||
self.adminContext, host=DHCP_HOSTA)
|
||||
self.assertEqual([], nets)
|
||||
|
||||
def test_reserved_port_after_network_remove_from_dhcp_agent(self):
|
||||
dhcp_hosta = {
|
||||
'binary': 'neutron-dhcp-agent',
|
||||
|
Loading…
Reference in New Issue
Block a user