use payloads for ROUTER_GATEWAY events

This patch switches the code over to the payload style of callbacks [1]
for ROUTER_GATEWAY events for those that are not using them yet.
The unit tests are also updated where needed to account for the
payload style callbacks and publish() method. Finally the patch
normalizes the passing of gateway IPs which are currently referred to
as 'gw_ips' and 'gateway_ips' depending on the event; now all events use
'gateway_ips'.

Depends-On: https://review.opendev.org/#/c/638274/

[1] https://docs.openstack.org/neutron-lib/latest/contributor/callbacks.html

Change-Id: I8f797f31b3413e4879400ad2832539314d6e9cfc
This commit is contained in:
Boden R 2019-02-21 13:38:40 -07:00
parent 7a2b807d69
commit 979b676e3a
1 changed files with 10 additions and 9 deletions

View File

@ -297,14 +297,14 @@ class BgpPlugin(service_base.ServicePluginBase,
speaker.id, speaker.id,
rl) rl)
def router_gateway_callback(self, resource, event, trigger, **kwargs): def router_gateway_callback(self, resource, event, trigger, payload=None):
if event == events.AFTER_CREATE: if event == events.AFTER_CREATE:
self._handle_router_gateway_after_create(**kwargs) self._handle_router_gateway_after_create(payload)
if event == events.AFTER_DELETE: if event == events.AFTER_DELETE:
gw_network = kwargs['network_id'] gw_network = payload.metadata.get('network_id')
router_id = kwargs['router_id'] router_id = payload.resource_id
next_hops = self._next_hops_from_gateway_ips( next_hops = self._next_hops_from_gateway_ips(
kwargs['gateway_ips']) payload.metadata.get('gateway_ips'))
ctx = context.get_admin_context() ctx = context.get_admin_context()
speakers = self._bgp_speakers_for_gateway_network(ctx, gw_network) speakers = self._bgp_speakers_for_gateway_network(ctx, gw_network)
for speaker in speakers: for speaker in speakers:
@ -318,14 +318,15 @@ class BgpPlugin(service_base.ServicePluginBase,
next_hop) next_hop)
self._handle_router_interface_after_delete(gw_network, routes) self._handle_router_interface_after_delete(gw_network, routes)
def _handle_router_gateway_after_create(self, **kwargs): def _handle_router_gateway_after_create(self, payload):
ctx = context.get_admin_context() ctx = context.get_admin_context()
gw_network = kwargs['network_id'] gw_network = payload.metadata.get('network_id')
router_id = kwargs['router_id'] router_id = payload.resource_id
with ctx.session.begin(subtransactions=True): with ctx.session.begin(subtransactions=True):
speakers = self._bgp_speakers_for_gateway_network(ctx, speakers = self._bgp_speakers_for_gateway_network(ctx,
gw_network) gw_network)
next_hops = self._next_hops_from_gateway_ips(kwargs['gw_ips']) next_hops = self._next_hops_from_gateway_ips(
payload.metadata.get('gateway_ips'))
for speaker in speakers: for speaker in speakers:
if speaker.ip_version in next_hops: if speaker.ip_version in next_hops: