from neutron.api.v2 import resource
from neutron.common import constants
from neutron.common import exceptions
+from neutron.common import rpc as n_rpc
from neutron.extensions import agent
from neutron import manager
from neutron import policy
policy.enforce(request.context,
"create_%s" % DHCP_NET,
{})
- return plugin.add_network_to_dhcp_agent(
- request.context, kwargs['agent_id'], body['network_id'])
+ agent_id = kwargs['agent_id']
+ network_id = body['network_id']
+ result = plugin.add_network_to_dhcp_agent(request.context, agent_id,
+ network_id)
+ notify(request.context, 'dhcp_agent.network.add', network_id, agent_id)
+ return result
def delete(self, request, id, **kwargs):
plugin = manager.NeutronManager.get_plugin()
policy.enforce(request.context,
"delete_%s" % DHCP_NET,
{})
- return plugin.remove_network_from_dhcp_agent(
- request.context, kwargs['agent_id'], id)
+ agent_id = kwargs['agent_id']
+ result = plugin.remove_network_from_dhcp_agent(request.context,
+ agent_id, id)
+ notify(request.context, 'dhcp_agent.network.remove', id, agent_id)
+ return result
class DhcpAgentsHostingNetworkController(wsgi.Controller):
@abc.abstractmethod
def list_dhcp_agents_hosting_network(self, context, network_id):
pass
+
+
+def notify(context, action, network_id, agent_id):
+ info = {'id': agent_id, 'network_id': network_id}
+ notifier = n_rpc.get_notifier('network')
+ notifier.info(context, action, {'agent': info})
self.l3agentscheduler_dbMinxin = (
manager.NeutronManager.get_service_plugins().get(
service_constants.L3_ROUTER_NAT))
- self.notify_p = mock.patch(
+ self.l3_notify_p = mock.patch(
'neutron.extensions.l3agentscheduler.notify')
- self.patched_notify = self.notify_p.start()
+ self.patched_l3_notify = self.l3_notify_p.start()
+ self.dhcp_notify_p = mock.patch(
+ 'neutron.extensions.dhcpagentscheduler.notify')
+ self.patched_dhcp_notify = self.dhcp_notify_p.start()
def restore_attribute_map(self):
# Restore the original RESOURCE_ATTRIBUTE_MAP
attributes.RESOURCE_ATTRIBUTE_MAP.update(
agent.RESOURCE_ATTRIBUTE_MAP)
self.addCleanup(self.restore_attribute_map)
+ fake_notifier.reset()
def restore_attribute_map(self):
# Restore the original RESOURCE_ATTRIBUTE_MAP
'network_create_end',
payload={'network': {'id': network_id}}),
topic='dhcp_agent.' + DHCP_HOSTA)
+ notifications = fake_notifier.NOTIFICATIONS
+ expected_event_type = 'dhcp_agent.network.add'
+ self._assert_notify(notifications, expected_event_type)
def test_network_remove_from_dhcp_agent_notification(self):
with self.network(do_delete=False) as net1:
'network_delete_end',
payload={'network_id': network_id}),
topic='dhcp_agent.' + DHCP_HOSTA)
+ notifications = fake_notifier.NOTIFICATIONS
+ expected_event_type = 'dhcp_agent.network.remove'
+ self._assert_notify(notifications, expected_event_type)
def test_agent_updated_dhcp_agent_notification(self):
self._register_agent_states()