Browse Source

Disallow in-place update of Port MAC address

While Neutron may technically allow updating the requested MAC address
of a port (for admin users only), in practice this only appears to work
when the port is not in use. Use Heat's replace-on-update flow, which is
designed to handle resources that are in use, to deal with changes to
the requested MAC.

Change-Id: I278584ecfe59a338d3135416527d9d3332808d2a
Depends-On: https://review.opendev.org/665692
Task: 31012
changes/35/665035/4
Zane Bitter 2 years ago
parent
commit
28975c7cd6
  1. 2
      heat/engine/resources/openstack/neutron/port.py
  2. 6
      releasenotes/notes/port-mac-address-update-b377d23434e7b48a.yaml

2
heat/engine/resources/openstack/neutron/port.py

@ -245,7 +245,6 @@ class Port(neutron.NeutronResource):
constraints=[
constraints.CustomConstraint('mac_addr')
],
update_allowed=True,
),
ALLOWED_ADDRESS_PAIRS: properties.Schema(
properties.Schema.LIST,
@ -543,7 +542,6 @@ class Port(neutron.NeutronResource):
result = super(Port, self).parse_live_resource_data(
resource_properties, resource_data)
result[self.QOS_POLICY] = resource_data.get('qos_policy_id')
result.pop(self.MAC_ADDRESS)
fixed_ips = resource_data.get(self.FIXED_IPS) or []
if fixed_ips:
result.update({self.FIXED_IPS: []})

6
releasenotes/notes/port-mac-address-update-b377d23434e7b48a.yaml

@ -0,0 +1,6 @@
---
fixes:
- |
``OS::Neutron::Port`` resources will now be replaced when the
``mac_address`` property is modified. Neutron is unable to update the MAC
address of a port once the port is in use.
Loading…
Cancel
Save