summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZuul <zuul@review.opendev.org>2021-04-14 10:09:40 +0000
committerGerrit Code Review <review@openstack.org>2021-04-14 10:09:40 +0000
commit09e7dae5d6a3b09877312fc4040519ae0e047c64 (patch)
treeea17dfb242da7380978713e59d77184891b00b02
parent2f6e1169ec949ddb39a47165ca4120b5f0039c95 (diff)
parenta30dc4d68873a1dbf6d5d3d90271a38481690297 (diff)
downloadheat-09e7dae5d6a3b09877312fc4040519ae0e047c64.tar.gz
Merge "Net attr: Sort segments without name attribute first" into stable/train
-rw-r--r--heat/engine/resources/openstack/neutron/net.py7
-rw-r--r--releasenotes/notes/os-neutron-net-segments-attribute-semi-predictable-b40a869317d053cc.yaml16
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>`_.
+