← Back to team overview

yahoo-eng-team team mailing list archive

[Bug 1698596] [NEW] Segments plugin with ML2 core plugin not storing in the DB the segmentation_id attribute when creating a segment

 

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


Follow ups