Skip to content

Commit e5feff6

Browse files
Zuulopenstack-gerrit
Zuul
authored andcommitted
Merge "Add getting of QoS rule type details"
2 parents aae4528 + e2dc28f commit e5feff6

File tree

6 files changed

+74
-3
lines changed

6 files changed

+74
-3
lines changed

doc/source/users/proxies/network.rst

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -167,6 +167,8 @@ QoS Operations
167167
.. automethod:: openstack.network.v2._proxy.Proxy.get_qos_policy
168168
.. automethod:: openstack.network.v2._proxy.Proxy.find_qos_policy
169169
.. automethod:: openstack.network.v2._proxy.Proxy.qos_policies
170+
.. automethod:: openstack.network.v2._proxy.Proxy.get_qos_rule_type
171+
.. automethod:: openstack.network.v2._proxy.Proxy.find_qos_rule_type
170172
.. automethod:: openstack.network.v2._proxy.Proxy.qos_rule_types
171173

172174
.. automethod:: openstack.network.v2._proxy.Proxy.create_qos_minimum_bandwidth_rule

openstack/network/v2/_proxy.py

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1974,6 +1974,36 @@ def update_qos_policy(self, qos_policy, **attrs):
19741974
"""
19751975
return self._update(_qos_policy.QoSPolicy, qos_policy, **attrs)
19761976

1977+
def find_qos_rule_type(self, rule_type_name, ignore_missing=True):
1978+
"""Find a single QoS rule type details
1979+
1980+
:param rule_type_name: The name of a QoS rule type.
1981+
:param bool ignore_missing: When set to ``False``
1982+
:class:`~openstack.exceptions.ResourceNotFound` will be
1983+
raised when the resource does not exist.
1984+
When set to ``True``, None will be returned when
1985+
attempting to find a nonexistent resource.
1986+
:returns: One :class:`~openstack.network.v2.qos_rule_type.QoSRuleType`
1987+
or None
1988+
"""
1989+
return self._find(_qos_rule_type.QoSRuleType, rule_type_name,
1990+
ignore_missing=ignore_missing)
1991+
1992+
def get_qos_rule_type(self, qos_rule_type):
1993+
"""Get details about single QoS rule type
1994+
1995+
:param qos_rule_type: The value can be the name of a QoS policy
1996+
rule type or a
1997+
:class:`~openstack.network.v2.
1998+
qos_rule_type.QoSRuleType`
1999+
instance.
2000+
2001+
:returns: One :class:`~openstack.network.v2.qos_rule_type.QoSRuleType`
2002+
:raises: :class:`~openstack.exceptions.ResourceNotFound`
2003+
when no resource can be found.
2004+
"""
2005+
return self._get(_qos_rule_type.QoSRuleType, qos_rule_type)
2006+
19772007
def qos_rule_types(self, **query):
19782008
"""Return a generator of QoS rule types
19792009

openstack/network/v2/qos_rule_type.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,13 +22,15 @@ class QoSRuleType(resource.Resource):
2222

2323
# capabilities
2424
allow_create = False
25-
allow_get = False
25+
allow_get = True
2626
allow_update = False
2727
allow_delete = False
2828
allow_list = True
2929

30-
_query_mapping = resource.QueryParameters('type')
30+
_query_mapping = resource.QueryParameters('type', 'drivers')
3131

3232
# Properties
3333
#: QoS rule type name.
3434
type = resource.Body('type')
35+
#: List of QoS backend drivers supporting this QoS rule type
36+
drivers = resource.Body('drivers')

openstack/tests/functional/network/v2/test_qos_rule_type.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,18 @@
1717

1818
class TestQoSRuleType(base.BaseFunctionalTest):
1919

20+
QOS_RULE_TYPE = "bandwidth_limit"
21+
22+
def test_find(self):
23+
sot = self.conn.network.find_qos_rule_type(self.QOS_RULE_TYPE)
24+
self.assertEqual(self.QOS_RULE_TYPE, sot.type)
25+
self.assertIsInstance(sot.drivers, list)
26+
27+
def test_get(self):
28+
sot = self.conn.network.get_qos_rule_type(self.QOS_RULE_TYPE)
29+
self.assertEqual(self.QOS_RULE_TYPE, sot.type)
30+
self.assertIsInstance(sot.drivers, list)
31+
2032
def test_list(self):
2133
rule_types = list(self.conn.network.qos_rule_types())
2234
self.assertGreater(len(rule_types), 0)

openstack/tests/unit/network/v2/test_proxy.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -665,6 +665,14 @@ def test_qos_policies(self):
665665
def test_qos_policy_update(self):
666666
self.verify_update(self.proxy.update_qos_policy, qos_policy.QoSPolicy)
667667

668+
def test_qos_rule_type_find(self):
669+
self.verify_find(self.proxy.find_qos_rule_type,
670+
qos_rule_type.QoSRuleType)
671+
672+
def test_qos_rule_type_get(self):
673+
self.verify_get(self.proxy.get_qos_rule_type,
674+
qos_rule_type.QoSRuleType)
675+
668676
def test_qos_rule_types(self):
669677
self.verify_list(self.proxy.qos_rule_types, qos_rule_type.QoSRuleType,
670678
paginated=False)

openstack/tests/unit/network/v2/test_qos_rule_type.py

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,22 @@
1616

1717
EXAMPLE = {
1818
'type': 'bandwidth_limit',
19+
'drivers': [{
20+
'name': 'openvswitch',
21+
'supported_parameters': [{
22+
'parameter_values': {'start': 0, 'end': 2147483647},
23+
'parameter_type': 'range',
24+
'parameter_name': 'max_kbps'
25+
}, {
26+
'parameter_values': ['ingress', 'egress'],
27+
'parameter_type': 'choices',
28+
'parameter_name': 'direction'
29+
}, {
30+
'parameter_values': {'start': 0, 'end': 2147483647},
31+
'parameter_type': 'range',
32+
'parameter_name': 'max_burst_kbps'
33+
}]
34+
}]
1935
}
2036

2137

@@ -28,11 +44,12 @@ def test_basic(self):
2844
self.assertEqual('/qos/rule-types', sot.base_path)
2945
self.assertEqual('network', sot.service.service_type)
3046
self.assertFalse(sot.allow_create)
31-
self.assertFalse(sot.allow_get)
47+
self.assertTrue(sot.allow_get)
3248
self.assertFalse(sot.allow_update)
3349
self.assertFalse(sot.allow_delete)
3450
self.assertTrue(sot.allow_list)
3551

3652
def test_make_it(self):
3753
sot = qos_rule_type.QoSRuleType(**EXAMPLE)
3854
self.assertEqual(EXAMPLE['type'], sot.type)
55+
self.assertEqual(EXAMPLE['drivers'], sot.drivers)

0 commit comments

Comments
 (0)