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