From 44de25534daf244ea1d7eb8ef372e1ce3bd687a1 Mon Sep 17 00:00:00 2001 From: Przemyslaw Szczerbik Date: Fri, 22 Oct 2021 12:34:20 +0200 Subject: [PATCH] Add qos-pps-minimum-rule-alias api-def and api-ref Introduce a new API extension definition to enable GET, PUT and DELETE operations on QoS minimum packet rate rule without specifying policy ID. Partial-Bug: #1922237 See-Also: https://review.opendev.org/78523 Change-Id: I1a708cf2935cb10a09c9088abc94bab1a2248157 --- api-ref/source/v2/qos.inc | 35 +++++++++++ neutron_lib/api/definitions/__init__.py | 2 + neutron_lib/api/definitions/base.py | 2 + .../definitions/qos_pps_minimum_rule_alias.py | 63 +++++++++++++++++++ .../test_qos_pps_minimum_rule_alias.py | 24 +++++++ ...s-minimum-rule-alias-2d0e711bde2aa1e8.yaml | 6 ++ 6 files changed, 132 insertions(+) create mode 100644 neutron_lib/api/definitions/qos_pps_minimum_rule_alias.py create mode 100644 neutron_lib/tests/unit/api/definitions/test_qos_pps_minimum_rule_alias.py create mode 100644 releasenotes/notes/qos-pps-minimum-rule-alias-2d0e711bde2aa1e8.yaml diff --git a/api-ref/source/v2/qos.inc b/api-ref/source/v2/qos.inc index 6c72d7947..1185817c4 100644 --- a/api-ref/source/v2/qos.inc +++ b/api-ref/source/v2/qos.inc @@ -1476,3 +1476,38 @@ Delete minimum bandwidth rule alias Please refer to `Delete minimum bandwidth rule <#delete-minimum-bandwidth-rule>`__ for more information on the request, response and return codes. + +====================================================== +Quality of Service minimum packet rate rule alias API +====================================================== + +This API extension enables callers to execute the requests to delete, show and +update QoS minimum packet rate rule without specifying the corresponding +policy ID. + +Show minimum packet rate rule details alias +=========================================== + +.. rest_method:: GET /v2.0/qos/alias_minimum_packet_rate_rules/{rule_id} + +Please refer to +`Show minimum packet rate rule details <#show-minimum-packet-rate-rule-details>`__ +for more information on the request, response and return codes. + +Update minimum packet rate rule alias +===================================== + +.. rest_method:: PUT /v2.0/qos/alias_minimum_packet_rate_rules/{rule_id} + +Please refer to +`Update minimum packet rate rule <#update-minimum-packet-rate-rule>`__ +for more information on the request, response and return codes. + +Delete minimum packet rate rule alias +===================================== + +.. rest_method:: DELETE /v2.0/qos/alias_minimum_packet_rate_rules/{rule_id} + +Please refer to +`Delete minimum packet rate rule <#delete-minimum-packet-rate-rule>`__ +for more information on the request, response and return codes. diff --git a/neutron_lib/api/definitions/__init__.py b/neutron_lib/api/definitions/__init__.py index ac7ada3c3..63866896b 100644 --- a/neutron_lib/api/definitions/__init__.py +++ b/neutron_lib/api/definitions/__init__.py @@ -102,6 +102,7 @@ from neutron_lib.api.definitions import qos_default from neutron_lib.api.definitions import qos_gateway_ip from neutron_lib.api.definitions import qos_port_network_policy from neutron_lib.api.definitions import qos_pps_minimum_rule +from neutron_lib.api.definitions import qos_pps_minimum_rule_alias from neutron_lib.api.definitions import qos_pps_rule from neutron_lib.api.definitions import qos_rule_type_details from neutron_lib.api.definitions import qos_rules_alias @@ -239,6 +240,7 @@ _ALL_API_DEFINITIONS = { qos_gateway_ip, qos_port_network_policy, qos_pps_minimum_rule, + qos_pps_minimum_rule_alias, qos_pps_rule, qos_rule_type_details, qos_rules_alias, diff --git a/neutron_lib/api/definitions/base.py b/neutron_lib/api/definitions/base.py index 2a4f1b7e7..043702731 100644 --- a/neutron_lib/api/definitions/base.py +++ b/neutron_lib/api/definitions/base.py @@ -143,6 +143,8 @@ KNOWN_EXTENSIONS = ( 'qos-bw-limit-direction', 'qos-gateway-ip', 'qos-port-network-policy', + 'qos-pps-minimum', + 'qos-pps-minimum-rule-alias', 'qos-rules-alias', 'quotas', 'quota-check-limit', diff --git a/neutron_lib/api/definitions/qos_pps_minimum_rule_alias.py b/neutron_lib/api/definitions/qos_pps_minimum_rule_alias.py new file mode 100644 index 000000000..09aafff88 --- /dev/null +++ b/neutron_lib/api/definitions/qos_pps_minimum_rule_alias.py @@ -0,0 +1,63 @@ +# Copyright (c) 2021 Ericsson Software Technology +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. + +from neutron_lib.api import converters +from neutron_lib.api.definitions import qos +from neutron_lib.api.definitions import qos_pps_minimum_rule +from neutron_lib import constants +from neutron_lib.db import constants as db_const +from neutron_lib.services.qos import constants as qos_constants + + +MIN_PACKET_RATE_RULES_ALIAS = 'alias_minimum_packet_rate_rules' + +ALIAS = 'qos-pps-minimum-rule-alias' +IS_SHIM_EXTENSION = False +IS_STANDARD_ATTR_EXTENSION = False +NAME = 'QoS minimum packet rate rule alias' +API_PREFIX = '/' + qos.ALIAS +DESCRIPTION = ('API to enable GET, PUT and DELETE operations on QoS minimum ' + 'packet rate rule without specifying policy ID') +UPDATED_TIMESTAMP = '2021-10-22T10:00:00-00:00' +RESOURCE_ATTRIBUTE_MAP = { + MIN_PACKET_RATE_RULES_ALIAS: { + **qos._QOS_RULE_COMMON_FIELDS, + qos_constants.MIN_KPPS: { + 'allow_post': False, + 'allow_put': True, + 'convert_to': converters.convert_to_int, + 'is_visible': True, + 'is_filter': True, + 'is_sort_key': True, + 'validate': { + 'type:range': [0, db_const.DB_INTEGER_MAX_VALUE]} + }, + qos_constants.DIRECTION: { + 'allow_post': False, + 'allow_put': True, + 'is_visible': True, + 'default': constants.EGRESS_DIRECTION, + 'is_filter': True, + 'is_sort_key': True, + 'validate': { + 'type:values': constants.VALID_DIRECTIONS_AND_ANY, + } + } + } +} +SUB_RESOURCE_ATTRIBUTE_MAP = {} +ACTION_MAP = {} +REQUIRED_EXTENSIONS = [qos.ALIAS, qos_pps_minimum_rule.ALIAS] +OPTIONAL_EXTENSIONS = [] +ACTION_STATUS = {} diff --git a/neutron_lib/tests/unit/api/definitions/test_qos_pps_minimum_rule_alias.py b/neutron_lib/tests/unit/api/definitions/test_qos_pps_minimum_rule_alias.py new file mode 100644 index 000000000..c068521ef --- /dev/null +++ b/neutron_lib/tests/unit/api/definitions/test_qos_pps_minimum_rule_alias.py @@ -0,0 +1,24 @@ +# Copyright (c) 2021 Ericsson Software Technology +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. + +from neutron_lib.api.definitions import qos_pps_minimum_rule_alias as apidef +from neutron_lib.services.qos import constants as qos_constants +from neutron_lib.tests.unit.api.definitions import base + + +class QoSPPSMinimumRuleAliasDefinitionTestCase(base.DefinitionBaseTestCase): + extension_module = apidef + + extension_resources = (apidef.MIN_PACKET_RATE_RULES_ALIAS,) + extension_attributes = (qos_constants.MIN_KPPS, qos_constants.DIRECTION) diff --git a/releasenotes/notes/qos-pps-minimum-rule-alias-2d0e711bde2aa1e8.yaml b/releasenotes/notes/qos-pps-minimum-rule-alias-2d0e711bde2aa1e8.yaml new file mode 100644 index 000000000..5a5b42465 --- /dev/null +++ b/releasenotes/notes/qos-pps-minimum-rule-alias-2d0e711bde2aa1e8.yaml @@ -0,0 +1,6 @@ +--- +features: + - | + Added API definition for ``qos-pps-minimum-rule-alias`` extension that + enables GET, PUT and DELETE operations to be performed on QoS minimum + packet rate rule without specifying policy ID.