Public bug reported: With ML2 as the core plugin, the segmentation_id of a newly created segment is assigned by a type manager that is executed by a callback subscribed to this PRECOMMIT_CREATE notification: https://github.com/openstack/neutron/blob/master/neutron/services/segments/db.py#L114. Since the new_segment.create() OVO call is one line above the notification, the segmentation_id attribute doesn't get stored in the DB.
This can have various undesired results. As an example, with segment type VLAN and under Python 2.7, such a segment might never be released when not used anymore. This is because the VLAN type code will determine here https://github.com/openstack/neutron/blob/master/neutron/plugins/ml2/drivers/type_vlan.py#L221 that the is outside the configured tenant vlan ranges and the corresponding DB row will never be updated as not allocated. This same example under Python 3.5 generates the following exception in the Neutron server: http://paste.openstack.org/show/612964/ ** Affects: neutron Importance: High Assignee: Miguel Lavalle (minsel) Status: New ** Changed in: neutron Assignee: (unassigned) => Miguel Lavalle (minsel) ** Changed in: neutron Importance: Undecided => High -- You received this bug notification because you are a member of Yahoo! Engineering Team, which is subscribed to neutron. https://bugs.launchpad.net/bugs/1698596 Title: Segments plugin with ML2 core plugin not storing in the DB the segmentation_id attribute when creating a segment Status in neutron: New Bug description: With ML2 as the core plugin, the segmentation_id of a newly created segment is assigned by a type manager that is executed by a callback subscribed to this PRECOMMIT_CREATE notification: https://github.com/openstack/neutron/blob/master/neutron/services/segments/db.py#L114. Since the new_segment.create() OVO call is one line above the notification, the segmentation_id attribute doesn't get stored in the DB. This can have various undesired results. As an example, with segment type VLAN and under Python 2.7, such a segment might never be released when not used anymore. This is because the VLAN type code will determine here https://github.com/openstack/neutron/blob/master/neutron/plugins/ml2/drivers/type_vlan.py#L221 that the is outside the configured tenant vlan ranges and the corresponding DB row will never be updated as not allocated. This same example under Python 3.5 generates the following exception in the Neutron server: http://paste.openstack.org/show/612964/ To manage notifications about this bug go to: https://bugs.launchpad.net/neutron/+bug/1698596/+subscriptions -- Mailing list: https://launchpad.net/~yahoo-eng-team Post to : [email protected] Unsubscribe : https://launchpad.net/~yahoo-eng-team More help : https://help.launchpad.net/ListHelp

