diff --git a/neutron_lib/api/definitions/__init__.py b/neutron_lib/api/definitions/__init__.py index ab39e283c..144dab4aa 100644 --- a/neutron_lib/api/definitions/__init__.py +++ b/neutron_lib/api/definitions/__init__.py @@ -70,6 +70,7 @@ from neutron_lib.api.definitions import project_id from neutron_lib.api.definitions import provider_net from neutron_lib.api.definitions import qos from neutron_lib.api.definitions import qos_bw_limit_direction +from neutron_lib.api.definitions import qos_bw_minimum_ingress from neutron_lib.api.definitions import qos_default from neutron_lib.api.definitions import qos_rule_type_details from neutron_lib.api.definitions import revisionifmatch @@ -158,6 +159,7 @@ _ALL_API_DEFINITIONS = { provider_net, qos, qos_bw_limit_direction, + qos_bw_minimum_ingress, qos_default, qos_rule_type_details, revisionifmatch, diff --git a/neutron_lib/api/definitions/qos_bw_minimum_ingress.py b/neutron_lib/api/definitions/qos_bw_minimum_ingress.py new file mode 100644 index 000000000..f13809ccb --- /dev/null +++ b/neutron_lib/api/definitions/qos_bw_minimum_ingress.py @@ -0,0 +1,47 @@ +# Copyright (c) 2018 Ericsson +# +# 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 as qos_apidef +from neutron_lib import constants +from neutron_lib.services.qos import constants as qos_constants + + +ALIAS = 'qos-bw-minimum-ingress' +IS_SHIM_EXTENSION = False +IS_STANDARD_ATTR_EXTENSION = False +NAME = 'Ingress direction for QoS minimum bandwidth rule' +DESCRIPTION = ("Allow to configure QoS minumum bandwidth rule with ingress " + "direction.") +UPDATED_TIMESTAMP = '2018-07-09T10:00:00-00:00' +RESOURCE_ATTRIBUTE_MAP = {} +SUB_RESOURCE_ATTRIBUTE_MAP = { + qos_apidef.MIN_BANDWIDTH_RULES: { + 'parameters': { + qos_constants.DIRECTION: { + 'allow_post': True, 'allow_put': True, + 'is_visible': True, 'default': constants.EGRESS_DIRECTION, + 'is_filter': True, + 'is_sort_key': True, + 'validate': { + 'type:values': constants.VALID_DIRECTIONS + } + } + } + } +} + +ACTION_MAP = {} +REQUIRED_EXTENSIONS = [qos_apidef.ALIAS] +OPTIONAL_EXTENSIONS = [] +ACTION_STATUS = {} diff --git a/neutron_lib/tests/unit/api/definitions/test_qos_bw_minimum_ingress.py b/neutron_lib/tests/unit/api/definitions/test_qos_bw_minimum_ingress.py new file mode 100644 index 000000000..c5741de10 --- /dev/null +++ b/neutron_lib/tests/unit/api/definitions/test_qos_bw_minimum_ingress.py @@ -0,0 +1,24 @@ +# Copyright (c) 2018 Ericsson +# +# 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 +from neutron_lib.api.definitions import qos_bw_minimum_ingress +from neutron_lib.services.qos import constants as qos_constants +from neutron_lib.tests.unit.api.definitions import base + + +class QoSBwMinimumIngressDefinitionTestCase(base.DefinitionBaseTestCase): + extension_module = qos_bw_minimum_ingress + extension_subresources = (qos.MIN_BANDWIDTH_RULES,) + extension_attributes = (qos_constants.DIRECTION,) diff --git a/releasenotes/notes/qos-bw-minimum-ingress-cff397e598b6fa3a.yaml b/releasenotes/notes/qos-bw-minimum-ingress-cff397e598b6fa3a.yaml new file mode 100644 index 000000000..e798517fb --- /dev/null +++ b/releasenotes/notes/qos-bw-minimum-ingress-cff397e598b6fa3a.yaml @@ -0,0 +1,5 @@ +--- +features: + - New extension ``qos-bw-minimum-ingress`` for extending + ``qos_minimum_bandwidth_rule`` with ingress direction for placement + based enforcement.