summaryrefslogtreecommitdiff
path: root/openstackclient
diff options
context:
space:
mode:
Diffstat (limited to 'openstackclient')
-rw-r--r--openstackclient/network/v2/network_qos_rule_type.py31
-rw-r--r--openstackclient/tests/functional/network/v2/test_network_qos_rule_type.py7
-rw-r--r--openstackclient/tests/unit/network/v2/test_network_qos_rule_type.py55
3 files changed, 93 insertions, 0 deletions
diff --git a/openstackclient/network/v2/network_qos_rule_type.py b/openstackclient/network/v2/network_qos_rule_type.py
index 52f8e235..7b92c8ad 100644
--- a/openstackclient/network/v2/network_qos_rule_type.py
+++ b/openstackclient/network/v2/network_qos_rule_type.py
@@ -17,6 +17,17 @@ from osc_lib.command import command
from osc_lib import utils
from openstackclient.i18n import _
+from openstackclient.network import sdk_utils
+
+
+def _get_columns(item):
+ column_map = {
+ "type": "rule_type_name",
+ "drivers": "drivers",
+ }
+ invisible_columns = ["id", "name"]
+ return sdk_utils.get_osc_show_columns_for_sdk_resource(
+ item, column_map, invisible_columns)
class ListNetworkQosRuleType(command.Lister):
@@ -36,3 +47,23 @@ class ListNetworkQosRuleType(command.Lister):
(utils.get_item_properties(
s, columns, formatters={},
) for s in data))
+
+
+class ShowNetworkQosRuleType(command.ShowOne):
+ _description = _("Show details about supported QoS rule type")
+
+ def get_parser(self, prog_name):
+ parser = super(ShowNetworkQosRuleType, self).get_parser(prog_name)
+ parser.add_argument(
+ 'rule_type',
+ metavar="<qos-rule-type-name>",
+ help=_("Name of QoS rule type")
+ )
+ return parser
+
+ def take_action(self, parsed_args):
+ client = self.app.client_manager.network
+ obj = client.get_qos_rule_type(parsed_args.rule_type)
+ display_columns, columns = _get_columns(obj)
+ data = utils.get_item_properties(obj, columns)
+ return display_columns, data
diff --git a/openstackclient/tests/functional/network/v2/test_network_qos_rule_type.py b/openstackclient/tests/functional/network/v2/test_network_qos_rule_type.py
index a6ee3e10..56cd8920 100644
--- a/openstackclient/tests/functional/network/v2/test_network_qos_rule_type.py
+++ b/openstackclient/tests/functional/network/v2/test_network_qos_rule_type.py
@@ -35,3 +35,10 @@ class NetworkQosRuleTypeTests(common.NetworkTests):
'network qos rule type list -f json'))
for rule_type in self.AVAILABLE_RULE_TYPES:
self.assertIn(rule_type, [x['Type'] for x in cmd_output])
+
+ def test_qos_rule_type_details(self):
+ for rule_type in self.AVAILABLE_RULE_TYPES:
+ cmd_output = json.loads(self.openstack(
+ 'network qos rule type show %s -f json' % rule_type))
+ self.assertEqual(rule_type, cmd_output['rule_type_name'])
+ self.assertIn("drivers", cmd_output.keys())
diff --git a/openstackclient/tests/unit/network/v2/test_network_qos_rule_type.py b/openstackclient/tests/unit/network/v2/test_network_qos_rule_type.py
index b93abe80..80c52bf7 100644
--- a/openstackclient/tests/unit/network/v2/test_network_qos_rule_type.py
+++ b/openstackclient/tests/unit/network/v2/test_network_qos_rule_type.py
@@ -17,6 +17,7 @@ import mock
from openstackclient.network.v2 import network_qos_rule_type as _qos_rule_type
from openstackclient.tests.unit.network.v2 import fakes as network_fakes
+from openstackclient.tests.unit import utils as tests_utils
class TestNetworkQosRuleType(network_fakes.TestNetworkV2):
@@ -27,6 +28,60 @@ class TestNetworkQosRuleType(network_fakes.TestNetworkV2):
self.network = self.app.client_manager.network
+class TestShowNetworkQosRuleType(TestNetworkQosRuleType):
+
+ attrs = {
+ 'drivers': [{
+ 'name': 'driver 1',
+ 'supported_parameters': []
+ }]
+ }
+ # The QoS policies to show.
+ qos_rule_type = (
+ network_fakes.FakeNetworkQosRuleType.create_one_qos_rule_type(attrs))
+ columns = (
+ 'drivers',
+ 'rule_type_name'
+ )
+ data = [
+ qos_rule_type.drivers,
+ qos_rule_type.type
+ ]
+
+ def setUp(self):
+ super(TestShowNetworkQosRuleType, self).setUp()
+ self.network.get_qos_rule_type = mock.Mock(
+ return_value=self.qos_rule_type)
+
+ # Get the command object to test
+ self.cmd = _qos_rule_type.ShowNetworkQosRuleType(self.app,
+ self.namespace)
+
+ def test_show_no_options(self):
+ arglist = []
+ verifylist = []
+
+ # Missing required args should bail here
+ self.assertRaises(tests_utils.ParserException, self.check_parser,
+ self.cmd, arglist, verifylist)
+
+ def test_show_all_options(self):
+ arglist = [
+ self.qos_rule_type.type,
+ ]
+ verifylist = [
+ ('rule_type', self.qos_rule_type.type),
+ ]
+
+ parsed_args = self.check_parser(self.cmd, arglist, verifylist)
+ columns, data = self.cmd.take_action(parsed_args)
+
+ self.network.get_qos_rule_type.assert_called_once_with(
+ self.qos_rule_type.type)
+ self.assertEqual(self.columns, columns)
+ self.assertEqual(list(self.data), list(data))
+
+
class TestListNetworkQosRuleType(TestNetworkQosRuleType):
# The QoS policies to list up.