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
This commit is contained in:
parent
28dd8117ba
commit
28975c7cd6
@ -245,7 +245,6 @@ class Port(neutron.NeutronResource):
|
|||||||
constraints=[
|
constraints=[
|
||||||
constraints.CustomConstraint('mac_addr')
|
constraints.CustomConstraint('mac_addr')
|
||||||
],
|
],
|
||||||
update_allowed=True,
|
|
||||||
),
|
),
|
||||||
ALLOWED_ADDRESS_PAIRS: properties.Schema(
|
ALLOWED_ADDRESS_PAIRS: properties.Schema(
|
||||||
properties.Schema.LIST,
|
properties.Schema.LIST,
|
||||||
@ -543,7 +542,6 @@ class Port(neutron.NeutronResource):
|
|||||||
result = super(Port, self).parse_live_resource_data(
|
result = super(Port, self).parse_live_resource_data(
|
||||||
resource_properties, resource_data)
|
resource_properties, resource_data)
|
||||||
result[self.QOS_POLICY] = resource_data.get('qos_policy_id')
|
result[self.QOS_POLICY] = resource_data.get('qos_policy_id')
|
||||||
result.pop(self.MAC_ADDRESS)
|
|
||||||
fixed_ips = resource_data.get(self.FIXED_IPS) or []
|
fixed_ips = resource_data.get(self.FIXED_IPS) or []
|
||||||
if fixed_ips:
|
if fixed_ips:
|
||||||
result.update({self.FIXED_IPS: []})
|
result.update({self.FIXED_IPS: []})
|
||||||
|
@ -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…
Reference in New Issue
Block a user