Merge "Add getting of QoS rule type details"

This commit is contained in:
Zuul 2017-09-29 19:13:31 +00:00 committed by Gerrit Code Review
commit e5feff613d
6 changed files with 74 additions and 3 deletions

View File

@ -167,6 +167,8 @@ QoS Operations
.. automethod:: openstack.network.v2._proxy.Proxy.get_qos_policy
.. automethod:: openstack.network.v2._proxy.Proxy.find_qos_policy
.. automethod:: openstack.network.v2._proxy.Proxy.qos_policies
.. automethod:: openstack.network.v2._proxy.Proxy.get_qos_rule_type
.. automethod:: openstack.network.v2._proxy.Proxy.find_qos_rule_type
.. automethod:: openstack.network.v2._proxy.Proxy.qos_rule_types
.. automethod:: openstack.network.v2._proxy.Proxy.create_qos_minimum_bandwidth_rule

View File

@ -1974,6 +1974,36 @@ class Proxy(proxy2.BaseProxy):
"""
return self._update(_qos_policy.QoSPolicy, qos_policy, **attrs)
def find_qos_rule_type(self, rule_type_name, ignore_missing=True):
"""Find a single QoS rule type details
:param rule_type_name: The name of a QoS rule type.
:param bool ignore_missing: When set to ``False``
:class:`~openstack.exceptions.ResourceNotFound` will be
raised when the resource does not exist.
When set to ``True``, None will be returned when
attempting to find a nonexistent resource.
:returns: One :class:`~openstack.network.v2.qos_rule_type.QoSRuleType`
or None
"""
return self._find(_qos_rule_type.QoSRuleType, rule_type_name,
ignore_missing=ignore_missing)
def get_qos_rule_type(self, qos_rule_type):
"""Get details about single QoS rule type
:param qos_rule_type: The value can be the name of a QoS policy
rule type or a
:class:`~openstack.network.v2.
qos_rule_type.QoSRuleType`
instance.
:returns: One :class:`~openstack.network.v2.qos_rule_type.QoSRuleType`
:raises: :class:`~openstack.exceptions.ResourceNotFound`
when no resource can be found.
"""
return self._get(_qos_rule_type.QoSRuleType, qos_rule_type)
def qos_rule_types(self, **query):
"""Return a generator of QoS rule types

View File

@ -22,13 +22,15 @@ class QoSRuleType(resource.Resource):
# capabilities
allow_create = False
allow_get = False
allow_get = True
allow_update = False
allow_delete = False
allow_list = True
_query_mapping = resource.QueryParameters('type')
_query_mapping = resource.QueryParameters('type', 'drivers')
# Properties
#: QoS rule type name.
type = resource.Body('type')
#: List of QoS backend drivers supporting this QoS rule type
drivers = resource.Body('drivers')

View File

@ -17,6 +17,18 @@ from openstack.tests.functional import base
class TestQoSRuleType(base.BaseFunctionalTest):
QOS_RULE_TYPE = "bandwidth_limit"
def test_find(self):
sot = self.conn.network.find_qos_rule_type(self.QOS_RULE_TYPE)
self.assertEqual(self.QOS_RULE_TYPE, sot.type)
self.assertIsInstance(sot.drivers, list)
def test_get(self):
sot = self.conn.network.get_qos_rule_type(self.QOS_RULE_TYPE)
self.assertEqual(self.QOS_RULE_TYPE, sot.type)
self.assertIsInstance(sot.drivers, list)
def test_list(self):
rule_types = list(self.conn.network.qos_rule_types())
self.assertGreater(len(rule_types), 0)

View File

@ -665,6 +665,14 @@ class TestNetworkProxy(test_proxy_base2.TestProxyBase):
def test_qos_policy_update(self):
self.verify_update(self.proxy.update_qos_policy, qos_policy.QoSPolicy)
def test_qos_rule_type_find(self):
self.verify_find(self.proxy.find_qos_rule_type,
qos_rule_type.QoSRuleType)
def test_qos_rule_type_get(self):
self.verify_get(self.proxy.get_qos_rule_type,
qos_rule_type.QoSRuleType)
def test_qos_rule_types(self):
self.verify_list(self.proxy.qos_rule_types, qos_rule_type.QoSRuleType,
paginated=False)

View File

@ -16,6 +16,22 @@ from openstack.network.v2 import qos_rule_type
EXAMPLE = {
'type': 'bandwidth_limit',
'drivers': [{
'name': 'openvswitch',
'supported_parameters': [{
'parameter_values': {'start': 0, 'end': 2147483647},
'parameter_type': 'range',
'parameter_name': 'max_kbps'
}, {
'parameter_values': ['ingress', 'egress'],
'parameter_type': 'choices',
'parameter_name': 'direction'
}, {
'parameter_values': {'start': 0, 'end': 2147483647},
'parameter_type': 'range',
'parameter_name': 'max_burst_kbps'
}]
}]
}
@ -28,7 +44,7 @@ class TestQoSRuleType(testtools.TestCase):
self.assertEqual('/qos/rule-types', sot.base_path)
self.assertEqual('network', sot.service.service_type)
self.assertFalse(sot.allow_create)
self.assertFalse(sot.allow_get)
self.assertTrue(sot.allow_get)
self.assertFalse(sot.allow_update)
self.assertFalse(sot.allow_delete)
self.assertTrue(sot.allow_list)
@ -36,3 +52,4 @@ class TestQoSRuleType(testtools.TestCase):
def test_make_it(self):
sot = qos_rule_type.QoSRuleType(**EXAMPLE)
self.assertEqual(EXAMPLE['type'], sot.type)
self.assertEqual(EXAMPLE['drivers'], sot.drivers)