diff --git a/openstack/network/v2/port.py b/openstack/network/v2/port.py index 94dd80911..1f96f4329 100644 --- a/openstack/network/v2/port.py +++ b/openstack/network/v2/port.py @@ -105,6 +105,9 @@ class Port(resource.Resource, resource.TagMixin): #: Whether to propagate uplink status of the port. *Type: bool* propagate_uplink_status = resource.Body('propagate_uplink_status', type=bool) + #: Read-only. The ID of the QoS policy attached to the network where the + # port is bound. + qos_network_policy_id = resource.Body('qos_network_policy_id') #: The ID of the QoS policy attached to the port. qos_policy_id = resource.Body('qos_policy_id') #: Read-only. The port-resource-request exposes Placement resources diff --git a/openstack/tests/unit/network/v2/test_port.py b/openstack/tests/unit/network/v2/test_port.py index 7c78a2b7e..de9b4643f 100644 --- a/openstack/tests/unit/network/v2/test_port.py +++ b/openstack/tests/unit/network/v2/test_port.py @@ -38,6 +38,7 @@ EXAMPLE = { 'name': '17', 'network_id': '18', 'port_security_enabled': True, + 'qos_network_policy_id': '32', 'qos_policy_id': '21', 'propagate_uplink_status': False, 'resource_request': { @@ -127,6 +128,8 @@ class TestPort(base.TestCase): self.assertEqual(EXAMPLE['name'], sot.name) self.assertEqual(EXAMPLE['network_id'], sot.network_id) self.assertTrue(sot.is_port_security_enabled) + self.assertEqual(EXAMPLE['qos_network_policy_id'], + sot.qos_network_policy_id) self.assertEqual(EXAMPLE['qos_policy_id'], sot.qos_policy_id) self.assertEqual(EXAMPLE['propagate_uplink_status'], sot.propagate_uplink_status) diff --git a/releasenotes/notes/qos-port-network-policy-cab43faa0f8bc036.yaml b/releasenotes/notes/qos-port-network-policy-cab43faa0f8bc036.yaml new file mode 100644 index 000000000..e472ddf48 --- /dev/null +++ b/releasenotes/notes/qos-port-network-policy-cab43faa0f8bc036.yaml @@ -0,0 +1,5 @@ +--- +features: + - | + ``qos_network_policy_id`` attribute support has been added to the network + port resource