QoS 可用 QoS 规则的详细报告

https://bugs.launchpad.net/neutron/+bug/1686035

问题描述

在 [1] 中,不同的 QoS 规则可以被不同的后端驱动程序支持。驱动程序是否能够处理给定的规则类型,以及与规则传递的参数,仅在用户想要将规则应用于端口/网络时进行验证。随着 [2] 的合并,Neutron 返回一个由至少一个启用的后端支持的所有规则类型的列表。这还不够,因为用户无法发现后端针对每种规则类型支持哪些值

提议的变更

我们建议添加新的 API。此调用将用于获取每个可用规则类型的详细信息。

REST API

新的 REST API 调用是

GET /v2.0/qos/rule-types/{rule_type}

请求示例

GET /v2.0/qos/rule-types/bandwidth_limit

响应是一个字典,其中包含每个启用后端支持的规则类型的详细信息。

可以返回参数值

  • 如果驱动程序使用 neutron-lib 中的“type:values”验证器来验证此参数,则返回受支持的值列表

  • 如果驱动程序使用 neutron-lib 中的“type:range”验证器来验证此参数,则返回包含“start”和“end”值的字典。范围内的“start”和“end”值都包含在内。

QoS 规则类型当前仅使用“type:values”和“type:range”验证器,并且此规范仅支持这些验证器。

此调用应仅对具有管理员权限的用户可用,以避免向普通用户暴露有关云基础设施的详细信息。

响应示例

{
    "rule_type": {
        "type": "bandwidth_limit",
        "drivers": [
            {
                "name": "ovs",
                "supported_parameters": [
                    {
                        "parameter_name": "max_kbps",
                        "parameter_type": "range",
                        "parameter_values": {
                            "start": 0,
                            "end": 1000
                        }
                    },
                    {
                        "parameter_name": "max_burst_kbps",
                        "parameter_type": "range",
                        "parameter_values": {
                            "start": 0,
                            "end": 1000
                        }
                    },
                    {
                        "parameter_name": "direction",
                        "parameter_type": "choices",
                        "parameter_values": ["ingress", "egress"]
                    }
                ]
            },
            {
                "name": "linuxbridge",
                "supported_parameters": [
                    {
                        "parameter_name": "max_kbps",
                        "parameter_type": "range",
                        "parameter_values": {
                            "start": 0,
                            "end": 1000
                        }
                    },
                    {
                        "parameter_name": "max_burst_kbps",
                        "parameter_type": "range",
                        "parameter_values": {
                            "start": 0,
                            "end": 1000
                        }
                    },
                    {
                        "parameter_name": "direction",
                        "parameter_type": "choices",
                        "parameter_values": ["egress"]
                    }
                ]
            }
        ]
    }
}

参考资料

[1] QoS 改进的规则和端口类型验证机制 [2] https://review.openstack.org/#/c/461257