From 3e44497d1503e2666a75859feadbd5b509d05ff6 Mon Sep 17 00:00:00 2001 From: Miguel Lavalle Date: Mon, 15 Oct 2018 11:27:48 -0500 Subject: [PATCH] Use QoS constants definitions Some of the QoS API extensions definitions were using literal string constants when defining attributes, instead of commonly predefined constants. This patch fixes that situation. In addition, modules related to the metering extension are also updated to re-use the DIRECTION constant. Change-Id: Ib1c272f6ce11864bd461bb8c29ee8cad0e91945d --- neutron_lib/api/definitions/metering.py | 5 +++-- neutron_lib/api/definitions/qos.py | 10 +++++----- .../api/definitions/qos_bw_limit_direction.py | 5 ++--- neutron_lib/api/definitions/qos_rules_alias.py | 4 ++-- .../tests/unit/api/definitions/test_metering.py | 3 ++- neutron_lib/tests/unit/api/definitions/test_qos.py | 7 ++++--- .../api/definitions/test_qos_bw_limit_direction.py | 3 ++- .../unit/api/definitions/test_qos_rules_alias.py | 3 +-- neutron_lib/tests/unit/services/qos/test_base.py | 13 +++++++++---- 9 files changed, 30 insertions(+), 23 deletions(-) diff --git a/neutron_lib/api/definitions/metering.py b/neutron_lib/api/definitions/metering.py index ab1caac70..336303a4c 100644 --- a/neutron_lib/api/definitions/metering.py +++ b/neutron_lib/api/definitions/metering.py @@ -15,6 +15,7 @@ from neutron_lib.api import converters from neutron_lib import constants from neutron_lib.db import constants as db_const +from neutron_lib.services.qos import constants as qos_consts METERING_LABELS = 'metering_labels' @@ -76,11 +77,11 @@ RESOURCE_ATTRIBUTE_MAP = { 'is_filter': True, 'is_sort_key': True, 'is_visible': True, 'required_by_policy': True }, - 'direction': { + qos_consts.DIRECTION: { 'allow_post': True, 'allow_put': False, 'is_visible': True, 'is_filter': True, 'is_sort_key': True, - 'validate': {'type:values': ['ingress', 'egress']} + 'validate': {'type:values': constants.VALID_DIRECTIONS} }, 'excluded': { 'allow_post': True, 'allow_put': False, diff --git a/neutron_lib/api/definitions/qos.py b/neutron_lib/api/definitions/qos.py index d8862042a..2b76990ba 100644 --- a/neutron_lib/api/definitions/qos.py +++ b/neutron_lib/api/definitions/qos.py @@ -116,7 +116,7 @@ SUB_RESOURCE_ATTRIBUTE_MAP = { 'parent': _PARENT, 'parameters': dict( _QOS_RULE_COMMON_FIELDS, - **{'max_kbps': { + **{qos_const.MAX_KBPS: { 'allow_post': True, 'allow_put': True, 'convert_to': converters.convert_to_int, 'is_visible': True, @@ -125,7 +125,7 @@ SUB_RESOURCE_ATTRIBUTE_MAP = { 'validate': { 'type:range': [0, db_const.DB_INTEGER_MAX_VALUE]} }, - 'max_burst_kbps': { + qos_const.MAX_BURST: { 'allow_post': True, 'allow_put': True, 'is_visible': True, 'default': 0, 'is_filter': True, @@ -138,7 +138,7 @@ SUB_RESOURCE_ATTRIBUTE_MAP = { 'parent': _PARENT, 'parameters': dict( _QOS_RULE_COMMON_FIELDS, - **{'dscp_mark': { + **{qos_const.DSCP_MARK: { 'allow_post': True, 'allow_put': True, 'convert_to': converters.convert_to_int, 'is_visible': True, @@ -151,7 +151,7 @@ SUB_RESOURCE_ATTRIBUTE_MAP = { 'parent': _PARENT, 'parameters': dict( _QOS_RULE_COMMON_FIELDS, - **{'min_kbps': { + **{qos_const.MIN_KBPS: { 'allow_post': True, 'allow_put': True, 'is_visible': True, 'is_filter': True, @@ -159,7 +159,7 @@ SUB_RESOURCE_ATTRIBUTE_MAP = { 'convert_to': converters.convert_to_int, 'validate': { 'type:range': [0, db_const.DB_INTEGER_MAX_VALUE]}}, - 'direction': { + qos_const.DIRECTION: { 'allow_post': True, 'allow_put': True, 'is_visible': True, 'default': constants.EGRESS_DIRECTION, 'is_filter': True, diff --git a/neutron_lib/api/definitions/qos_bw_limit_direction.py b/neutron_lib/api/definitions/qos_bw_limit_direction.py index ab99b6cc7..0b9bb393e 100644 --- a/neutron_lib/api/definitions/qos_bw_limit_direction.py +++ b/neutron_lib/api/definitions/qos_bw_limit_direction.py @@ -15,10 +15,9 @@ from neutron_lib.api.definitions import qos as qos_apidef from neutron_lib import constants +from neutron_lib.services.qos import constants as qos_const -DIRECTION = 'direction' - ALIAS = 'qos-bw-limit-direction' LABEL = '' IS_SHIM_EXTENSION = False @@ -34,7 +33,7 @@ SUB_RESOURCE_ATTRIBUTE_MAP = { # sub-resource extension itself qos_apidef.BANDWIDTH_LIMIT_RULES: { 'parameters': { - DIRECTION: { + qos_const.DIRECTION: { 'allow_post': True, 'allow_put': True, 'is_visible': True, diff --git a/neutron_lib/api/definitions/qos_rules_alias.py b/neutron_lib/api/definitions/qos_rules_alias.py index 2a868a6c4..5e23413c1 100644 --- a/neutron_lib/api/definitions/qos_rules_alias.py +++ b/neutron_lib/api/definitions/qos_rules_alias.py @@ -55,7 +55,7 @@ RESOURCE_ATTRIBUTE_MAP = { 'type:range': [0, db_const.DB_INTEGER_MAX_VALUE] } }, - qos_bw_limit_direction.DIRECTION: { + q_const.DIRECTION: { 'allow_post': False, 'allow_put': True, 'is_visible': True, @@ -100,7 +100,7 @@ RESOURCE_ATTRIBUTE_MAP = { 'type:range': [0, db_const.DB_INTEGER_MAX_VALUE] } }, - qos_bw_limit_direction.DIRECTION: { + q_const.DIRECTION: { 'allow_post': False, 'allow_put': True, 'is_visible': True, 'default': constants.EGRESS_DIRECTION, 'is_filter': True, diff --git a/neutron_lib/tests/unit/api/definitions/test_metering.py b/neutron_lib/tests/unit/api/definitions/test_metering.py index 93f488d5e..c959c54ae 100644 --- a/neutron_lib/tests/unit/api/definitions/test_metering.py +++ b/neutron_lib/tests/unit/api/definitions/test_metering.py @@ -11,6 +11,7 @@ # under the License. from neutron_lib.api.definitions import metering +from neutron_lib.services.qos import constants as qos_consts from neutron_lib.tests.unit.api.definitions import base @@ -21,4 +22,4 @@ class MeteringDefinitionTestCase(base.DefinitionBaseTestCase): extension_attributes = ('remote_ip_prefix', 'excluded', 'metering_label_id', - 'direction') + qos_consts.DIRECTION) diff --git a/neutron_lib/tests/unit/api/definitions/test_qos.py b/neutron_lib/tests/unit/api/definitions/test_qos.py index 6009672ce..eec5675bb 100644 --- a/neutron_lib/tests/unit/api/definitions/test_qos.py +++ b/neutron_lib/tests/unit/api/definitions/test_qos.py @@ -11,6 +11,7 @@ # under the License. from neutron_lib.api.definitions import qos +from neutron_lib.services.qos import constants as q_const from neutron_lib.tests.unit.api.definitions import base @@ -20,6 +21,6 @@ class QoSDefinitionTestCase(base.DefinitionBaseTestCase): extension_subresources = (qos.BANDWIDTH_LIMIT_RULES, qos.DSCP_MARKING_RULES, qos.MIN_BANDWIDTH_RULES) - extension_attributes = ('direction', 'max_burst_kbps', 'type', - 'dscp_mark', 'min_kbps', 'rules', 'max_kbps', - 'qos_policy_id') + extension_attributes = (q_const.DIRECTION, q_const.MAX_BURST, 'type', + q_const.DSCP_MARK, q_const.MIN_KBPS, 'rules', + q_const.MAX_KBPS, q_const.QOS_POLICY_ID) diff --git a/neutron_lib/tests/unit/api/definitions/test_qos_bw_limit_direction.py b/neutron_lib/tests/unit/api/definitions/test_qos_bw_limit_direction.py index 15a6a4bdd..4caa6f29b 100644 --- a/neutron_lib/tests/unit/api/definitions/test_qos_bw_limit_direction.py +++ b/neutron_lib/tests/unit/api/definitions/test_qos_bw_limit_direction.py @@ -15,10 +15,11 @@ from neutron_lib.api.definitions import qos from neutron_lib.api.definitions import qos_bw_limit_direction +from neutron_lib.services.qos import constants as qos_const from neutron_lib.tests.unit.api.definitions import base class QoSBwLimitDirectionDefinitionTestCase(base.DefinitionBaseTestCase): extension_module = qos_bw_limit_direction extension_subresources = (qos.BANDWIDTH_LIMIT_RULES,) - extension_attributes = (qos_bw_limit_direction.DIRECTION,) + extension_attributes = (qos_const.DIRECTION,) diff --git a/neutron_lib/tests/unit/api/definitions/test_qos_rules_alias.py b/neutron_lib/tests/unit/api/definitions/test_qos_rules_alias.py index f7fcb3145..9fac32b34 100644 --- a/neutron_lib/tests/unit/api/definitions/test_qos_rules_alias.py +++ b/neutron_lib/tests/unit/api/definitions/test_qos_rules_alias.py @@ -11,7 +11,6 @@ # under the License. from neutron_lib.api.definitions import qos -from neutron_lib.api.definitions import qos_bw_limit_direction from neutron_lib.api.definitions import qos_rules_alias from neutron_lib.services.qos import constants as q_const from neutron_lib.tests.unit.api.definitions import base @@ -22,7 +21,7 @@ class QoSRulesAliasDefinitionTestCase(base.DefinitionBaseTestCase): extension_resources = (qos.BANDWIDTH_LIMIT_RULES, qos.DSCP_MARKING_RULES, qos.MIN_BANDWIDTH_RULES) - extension_attributes = (qos_bw_limit_direction.DIRECTION, + extension_attributes = (q_const.DIRECTION, q_const.MAX_BURST, q_const.DSCP_MARK, q_const.MIN_KBPS, diff --git a/neutron_lib/tests/unit/services/qos/test_base.py b/neutron_lib/tests/unit/services/qos/test_base.py index 82e9e5cb9..d4aee1e0b 100644 --- a/neutron_lib/tests/unit/services/qos/test_base.py +++ b/neutron_lib/tests/unit/services/qos/test_base.py @@ -15,6 +15,7 @@ import mock from neutron_lib.api.definitions import portbindings +from neutron_lib import constants from neutron_lib.services.qos import base as qos_base from neutron_lib.services.qos import constants as qos_consts from neutron_lib.tests import _base @@ -22,8 +23,8 @@ from neutron_lib.tests import _base SUPPORTED_RULES = { qos_consts.RULE_TYPE_MINIMUM_BANDWIDTH: { - "min_kbps": {'type:values': None}, - 'direction': {'type:values': ['egress']} + qos_consts.MIN_KBPS: {'type:values': None}, + qos_consts.DIRECTION: {'type:values': ['egress']} } } @@ -73,9 +74,13 @@ class TestDriverBase(_base.BaseTestCase): _make_driver().is_rule_supported( _make_rule( rule_type=qos_consts.RULE_TYPE_MINIMUM_BANDWIDTH, - params={'min_kbps': None, 'direction': 'egress'}))) + params={qos_consts.MIN_KBPS: None, + qos_consts.DIRECTION: + constants.EGRESS_DIRECTION}))) self.assertFalse( _make_driver().is_rule_supported( _make_rule( rule_type=qos_consts.RULE_TYPE_MINIMUM_BANDWIDTH, - params={'min_kbps': None, 'direction': 'ingress'}))) + params={qos_consts.MIN_KBPS: None, + qos_consts.DIRECTION: + constants.INGRESS_DIRECTION})))