)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":24245,"name":"Harald Jensås","email":"hjensas@redhat.com","username":"harald.jensas"},"change_message_id":"fdb3b8ca43f93a5fd62b1dbaa3355f0d30f39fea","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"86b33bdf_75bfb3a5","updated":"2026-03-12 18:13:38.000000000","message":"```\nMar 12 18:08:04 hs-devstack-nxsw-vxlan-no-zuul-devstack-fua4n725enqb devstack@neutron-api.service[93298]: DEBUG neutron.plugins.ml2.drivers.type_vlan [req-39f6d5a4-5bb8-447e-809f-c01765b1ec3b req-3186f25b-70d5-4a08-9d5c-3dd75c56365b admin admin] Releasing vlan 105 on physical network public to pool {{(pid\u003d93298) \nrelease_segment /opt/stack/neutron/neutron/plugins/ml2/drivers/type_vlan.py:302}}                                                                                                                                                                                                                                         \nMar 12 18:08:04 hs-devstack-nxsw-vxlan-no-zuul-devstack-fua4n725enqb devstack@neutron-api.service[93298]: ERROR neutron.plugins.ml2.managers [req-39f6d5a4-5bb8-447e-809f-c01765b1ec3b req-3186f25b-70d5-4a08-9d5c-3dd75c56365b admin admin] Mechanism driver \u0027genericswitch\u0027 failed in delete_port_postcommit: AttributeE\nrror: \u0027NoneType\u0027 object has no attribute \u0027get\u0027                                                                                                                                                                                                                                                                            Mar 12 18:08:04 hs-devstack-nxsw-vxlan-no-zuul-devstack-fua4n725enqb devstack@neutron-api.service[93298]: ERROR neutron.plugins.ml2.managers Traceback (most recent call last):\nMar 12 18:08:04 hs-devstack-nxsw-vxlan-no-zuul-devstack-fua4n725enqb devstack@neutron-api.service[93298]: ERROR neutron.plugins.ml2.managers   File \"/opt/stack/neutron/neutron/plugins/ml2/managers.py\", line 500, in _call_on_drivers                                                                                   Mar 12 18:08:04 hs-devstack-nxsw-vxlan-no-zuul-devstack-fua4n725enqb devstack@neutron-api.service[93298]: ERROR neutron.plugins.ml2.managers     getattr(driver.obj, method_name)(context)\nMar 12 18:08:04 hs-devstack-nxsw-vxlan-no-zuul-devstack-fua4n725enqb devstack@neutron-api.service[93298]: ERROR neutron.plugins.ml2.managers   File \"/opt/stack/networking-generic-switch/networking_generic_switch/generic_switch_mech.py\", line 463, in delete_port_postcommit                                          Mar 12 18:08:04 hs-devstack-nxsw-vxlan-no-zuul-devstack-fua4n725enqb devstack@neutron-api.service[93298]: ERROR neutron.plugins.ml2.managers     self._unplug_port_from_segment(\nMar 12 18:08:04 hs-devstack-nxsw-vxlan-no-zuul-devstack-fua4n725enqb devstack@neutron-api.service[93298]: ERROR neutron.plugins.ml2.managers   File \"/opt/stack/networking-generic-switch/networking_generic_switch/generic_switch_mech.py\", line 794, in _unplug_port_from_segment                                       Mar 12 18:08:04 hs-devstack-nxsw-vxlan-no-zuul-devstack-fua4n725enqb devstack@neutron-api.service[93298]: ERROR neutron.plugins.ml2.managers     segmentation_id \u003d segment.get(api.SEGMENTATION_ID) or 1\nMar 12 18:08:04 hs-devstack-nxsw-vxlan-no-zuul-devstack-fua4n725enqb devstack@neutron-api.service[93298]: ERROR neutron.plugins.ml2.managers                       ^^^^^^^^^^^                                                                                                                                            Mar 12 18:08:04 hs-devstack-nxsw-vxlan-no-zuul-devstack-fua4n725enqb devstack@neutron-api.service[93298]: ERROR neutron.plugins.ml2.managers AttributeError: \u0027NoneType\u0027 object has no attribute \u0027get\u0027\nMar 12 18:08:04 hs-devstack-nxsw-vxlan-no-zuul-devstack-fua4n725enqb devstack@neutron-api.service[93298]: ERROR neutron.plugins.ml2.managers\n```\n\nSeems even with original binding context there is a possibility that it does not have segment.","commit_id":"eced7ebd7d495c86f760e3be4cf35eafec3134ec"},{"author":{"_account_id":24245,"name":"Harald Jensås","email":"hjensas@redhat.com","username":"harald.jensas"},"change_message_id":"16f8904ea2f58aa186bed2f9e73e821090e7dee9","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"ac6ee350_12f1cd95","updated":"2026-03-15 21:50:02.000000000","message":"I proposed https://review.opendev.org/c/openstack/neutron/+/980637, I think we can abandon this change. If that is not accepted we probably need to be creative and add the vni to the binding_profile.","commit_id":"d56bf8d9b2f842a5d5623b7acc1b3ef398a1cb5e"},{"author":{"_account_id":24245,"name":"Harald Jensås","email":"hjensas@redhat.com","username":"harald.jensas"},"change_message_id":"0cb24c31677fdcc296c619bc97031f52bcd10c1e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"fa4e8434_2725d2b8","updated":"2026-03-15 19:23:35.000000000","message":"delete_port in plugin.py[1] does not set original_bound_segment:\n\n```\nmech_context \u003d driver_context.PortContext(\n    self, context, port, network, binding, levels)\n```\n\nSee PortContext[2], would have to set original_port.\n```\nclass PortContext(MechanismDriverContext, api.PortContext):\n\n    def __init__(self, plugin, plugin_context, port, network, binding,\n                 binding_levels, original_port\u003dNone):\n...\n        if original_port:\n            self._original_vif_type \u003d binding.vif_type\n            self._original_vif_details \u003d self._plugin._get_vif_details(binding)\n            self._original_binding_levels \u003d self._binding_levels\n        else:\n            self._original_vif_type \u003d None\n            self._original_vif_details \u003d None\n            self._original_binding_levels \u003d None\n\n...\n    @property\n    def original_top_bound_segment(self):\n        if self._original_binding_levels:\n            return self._expand_segment(\n                self._original_binding_levels[0].segment_id)\n\n...\n    @property\n    def original_bottom_bound_segment(self):\n        if self._original_binding_levels:\n            return self._expand_segment(\n                self._original_binding_levels[-1].segment_id)\n\n```\n\n\n\n[1] https://opendev.org/openstack/neutron/src/branch/master/neutron/plugins/ml2/plugin.py#L2221\n[2] https://opendev.org/openstack/neutron/src/branch/master/neutron/plugins/ml2/driver_context.py#L124-L127\n[3] https://opendev.org/openstack/neutron/src/branch/master/neutron/plugins/ml2/driver_context.py#L143-L150","commit_id":"d56bf8d9b2f842a5d5623b7acc1b3ef398a1cb5e"}]}
