The port AFTER_UPDATE notifications from ML2 do not have the same content depending on where they come from:
- ml2/rpc.py: RPC does not have 'origin_port', but 'port' is always present
- ml2/plugin.py: RPC always has 'origin_port', but 'port' is present only if the host the port is bound to has changed
The bagpipe driver currently does not take this into account and breaks on a port update coming from plugin.py update_port in the case where the host the port is bound to has not changed, resulting in port being 'None'.
2015-11-27 16:39:42.024 ERROR neutron.callbacks.manager [req-7b2ded63-2fec-449a-a194-ae74a4dc1af3 admin 1b897130bd894641aa9ce8d949092720] Error during notification for networking_bgpvpn.neutron.services.service_drivers.bagpipe.bagpipe.BaGPipeBGPVPNDriver.registry_port_updated port, after_update
2015-11-27 16:39:42.024 TRACE neutron.callbacks.manager Traceback (most recent call last):
2015-11-27 16:39:42.024 TRACE neutron.callbacks.manager File "/opt/stack/neutron/neutron/callbacks/manager.py", line 141, in _notify_loop
2015-11-27 16:39:42.024 TRACE neutron.callbacks.manager callback(resource, event, trigger, **kwargs)
2015-11-27 16:39:42.024 TRACE neutron.callbacks.manager File "/opt/stack/networking-bgpvpn/networking_bgpvpn/neutron/services/service_drivers/bagpipe/bagpipe.py", line 318, in registry_port_updated
2015-11-27 16:39:42.024 TRACE neutron.callbacks.manager self.notify_port_updated(context, port_dict)
2015-11-27 16:39:42.024 TRACE neutron.callbacks.manager File "/opt/stack/networking-bgpvpn/networking_bgpvpn/neutron/services/service_drivers/bagpipe/bagpipe.py", line 267, in notify_port_updated
2015-11-27 16:39:42.024 TRACE neutron.callbacks.manager port['id'],
2015-11-27 16:39:42.024 TRACE neutron.callbacks.manager TypeError: 'NoneType' object has no attribute '__getitem__'
2015-11-27 16:39:42.024 TRACE neutron.callbacks.manager
Fix proposed to branch: master /review. openstack. org/251885
Review: https:/