Skip to content

Commit e8a87e1

Browse files
Zuulopenstack-gerrit
authored andcommitted
Merge "Display Network QoS rule type details"
2 parents c393472 + 07f0c7a commit e8a87e1

6 files changed

Lines changed: 113 additions & 0 deletions

File tree

doc/source/cli/command-objects/network-qos-rule-type.rst

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,3 +16,18 @@ List Network QoS rule types
1616
.. code:: bash
1717
1818
openstack network qos rule type list
19+
20+
network qos rule type show
21+
--------------------------
22+
23+
Display Network QoS rule type details
24+
25+
.. program:: network qos rule type show
26+
.. code:: bash
27+
28+
openstack network qos rule type show
29+
<rule-type-name>
30+
31+
.. describe:: <rule-type-name>
32+
33+
Name of QoS rule type (minimum-bandwidth, dscp-marking, bandwidth-limit)

openstackclient/network/v2/network_qos_rule_type.py

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,17 @@
1717
from osc_lib import utils
1818

1919
from openstackclient.i18n import _
20+
from openstackclient.network import sdk_utils
21+
22+
23+
def _get_columns(item):
24+
column_map = {
25+
"type": "rule_type_name",
26+
"drivers": "drivers",
27+
}
28+
invisible_columns = ["id", "name"]
29+
return sdk_utils.get_osc_show_columns_for_sdk_resource(
30+
item, column_map, invisible_columns)
2031

2132

2233
class ListNetworkQosRuleType(command.Lister):
@@ -36,3 +47,23 @@ def take_action(self, parsed_args):
3647
(utils.get_item_properties(
3748
s, columns, formatters={},
3849
) for s in data))
50+
51+
52+
class ShowNetworkQosRuleType(command.ShowOne):
53+
_description = _("Show details about supported QoS rule type")
54+
55+
def get_parser(self, prog_name):
56+
parser = super(ShowNetworkQosRuleType, self).get_parser(prog_name)
57+
parser.add_argument(
58+
'rule_type',
59+
metavar="<qos-rule-type-name>",
60+
help=_("Name of QoS rule type")
61+
)
62+
return parser
63+
64+
def take_action(self, parsed_args):
65+
client = self.app.client_manager.network
66+
obj = client.get_qos_rule_type(parsed_args.rule_type)
67+
display_columns, columns = _get_columns(obj)
68+
data = utils.get_item_properties(obj, columns)
69+
return display_columns, data

openstackclient/tests/functional/network/v2/test_network_qos_rule_type.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,3 +35,10 @@ def test_qos_rule_type_list(self):
3535
'network qos rule type list -f json'))
3636
for rule_type in self.AVAILABLE_RULE_TYPES:
3737
self.assertIn(rule_type, [x['Type'] for x in cmd_output])
38+
39+
def test_qos_rule_type_details(self):
40+
for rule_type in self.AVAILABLE_RULE_TYPES:
41+
cmd_output = json.loads(self.openstack(
42+
'network qos rule type show %s -f json' % rule_type))
43+
self.assertEqual(rule_type, cmd_output['rule_type_name'])
44+
self.assertIn("drivers", cmd_output.keys())

openstackclient/tests/unit/network/v2/test_network_qos_rule_type.py

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

1818
from openstackclient.network.v2 import network_qos_rule_type as _qos_rule_type
1919
from openstackclient.tests.unit.network.v2 import fakes as network_fakes
20+
from openstackclient.tests.unit import utils as tests_utils
2021

2122

2223
class TestNetworkQosRuleType(network_fakes.TestNetworkV2):
@@ -27,6 +28,60 @@ def setUp(self):
2728
self.network = self.app.client_manager.network
2829

2930

31+
class TestShowNetworkQosRuleType(TestNetworkQosRuleType):
32+
33+
attrs = {
34+
'drivers': [{
35+
'name': 'driver 1',
36+
'supported_parameters': []
37+
}]
38+
}
39+
# The QoS policies to show.
40+
qos_rule_type = (
41+
network_fakes.FakeNetworkQosRuleType.create_one_qos_rule_type(attrs))
42+
columns = (
43+
'drivers',
44+
'rule_type_name'
45+
)
46+
data = [
47+
qos_rule_type.drivers,
48+
qos_rule_type.type
49+
]
50+
51+
def setUp(self):
52+
super(TestShowNetworkQosRuleType, self).setUp()
53+
self.network.get_qos_rule_type = mock.Mock(
54+
return_value=self.qos_rule_type)
55+
56+
# Get the command object to test
57+
self.cmd = _qos_rule_type.ShowNetworkQosRuleType(self.app,
58+
self.namespace)
59+
60+
def test_show_no_options(self):
61+
arglist = []
62+
verifylist = []
63+
64+
# Missing required args should bail here
65+
self.assertRaises(tests_utils.ParserException, self.check_parser,
66+
self.cmd, arglist, verifylist)
67+
68+
def test_show_all_options(self):
69+
arglist = [
70+
self.qos_rule_type.type,
71+
]
72+
verifylist = [
73+
('rule_type', self.qos_rule_type.type),
74+
]
75+
76+
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
77+
columns, data = self.cmd.take_action(parsed_args)
78+
79+
self.network.get_qos_rule_type.assert_called_once_with(
80+
self.qos_rule_type.type)
81+
self.assertEqual(self.columns, columns)
82+
self.assertEqual(list(self.data), list(data))
83+
84+
3085
class TestListNetworkQosRuleType(TestNetworkQosRuleType):
3186

3287
# The QoS policies to list up.
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
---
2+
features:
3+
- |
4+
Add ``network qos rule type show`` command.

setup.cfg

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -425,6 +425,7 @@ openstack.network.v2 =
425425
network_qos_rule_show = openstackclient.network.v2.network_qos_rule:ShowNetworkQosRule
426426

427427
network_qos_rule_type_list = openstackclient.network.v2.network_qos_rule_type:ListNetworkQosRuleType
428+
network_qos_rule_type_show = openstackclient.network.v2.network_qos_rule_type:ShowNetworkQosRuleType
428429

429430
network_rbac_create = openstackclient.network.v2.network_rbac:CreateNetworkRBAC
430431
network_rbac_delete = openstackclient.network.v2.network_rbac:DeleteNetworkRBAC

0 commit comments

Comments
 (0)