diff options
-rw-r--r-- | heat/engine/resources/openstack/neutron/net.py | 7 | ||||
-rw-r--r-- | releasenotes/notes/os-neutron-net-segments-attribute-semi-predictable-b40a869317d053cc.yaml | 16 |
2 files changed, 22 insertions, 1 deletions
diff --git a/heat/engine/resources/openstack/neutron/net.py b/heat/engine/resources/openstack/neutron/net.py index 62a19e1ff..d0d2ebd8d 100644 --- a/heat/engine/resources/openstack/neutron/net.py +++ b/heat/engine/resources/openstack/neutron/net.py @@ -284,8 +284,13 @@ class Net(neutron.NeutronResource): if self.resource_id is None: return if name == self.SEGMENTS: - return [segment.to_dict() for segment in list(self.client( + segments = [segment.to_dict() for segment in list(self.client( 'openstack').network.segments(network_id=self.resource_id))] + # Sort segments without name attribute first. + # See bug: https://bugs.launchpad.net/tripleo/+bug/1894920 + segments.sort(key=lambda s: s['name'] is not None) + return segments + attributes = self._show_resource() return attributes[name] diff --git a/releasenotes/notes/os-neutron-net-segments-attribute-semi-predictable-b40a869317d053cc.yaml b/releasenotes/notes/os-neutron-net-segments-attribute-semi-predictable-b40a869317d053cc.yaml new file mode 100644 index 000000000..f398d8928 --- /dev/null +++ b/releasenotes/notes/os-neutron-net-segments-attribute-semi-predictable-b40a869317d053cc.yaml @@ -0,0 +1,16 @@ +--- +fixes: + - | + The ordering in the list of segments returned by ``OS::Neutron::Net`` + resources is not predictable. Stack updates changeing attributes + of the network can cause the list of segments to shift. + + The ordering is now slightly more predictable, segments with name=``None`` + are now placed first in the list. This doesn't guarantee the order, but + typically only the segment implicitly created by neutron has no name + attribute set. The template author should ensure other segments on the + network does have a name set, so that the implicit segment will always be + index 0. Resolving attributes of the implcitly created segment on the + network resource can then predictibly happen using index 0. See `bug: + 1894920 <https://bugs.launchpad.net/tripleo/+bug/1894920>`_. + |