Currently Neutron has API call "qos-available-rule-types" which will return subset of qos rules supported by all loaded drivers (openvswitch, linuxbridge, etc.)
After https://bugs.launchpad.net/neutron/+bug/1586056 was closed it can be not enough sometimes.
I would suggest to add new API call to report details about supported rules. It should returns something like
+--------+---------------------+----------------------------+
| Driver | Supported rule | Supported parameters |
+--------+---------------------+----------------------------+
| ovs |bandwidth_limit_rule | direction: egress |
| | | max_kbps: ANY VALUE |
+--------+---------------------+----------------------------+
| LB |bandwidth_limit_rule | direction: egress, ingress |
| | | max_kbps: ANY VALUE |
+--------+---------------------+----------------------------+
Thanks to that API call operator will be able to discover exactly which rules and with what values can be applied to ports bound with specific driver.
As such call can leak used driver names to the users it should be available only for admins.
It seems like you attempt to implement API discovery, just for QoS. There was an attempt to standardize on a single approach for all openstack services: https:/ /review. openstack. org/#/c/ 386555/ 7/guidelines/ capabilities. rst though it seems abandoned. What can we make out of it? Would it make sense to look at this problem more widely than just for qos?