From b8fa51d9d04f56a593498afd06c4954d2ba99fb0 Mon Sep 17 00:00:00 2001 From: Denis Makogon Date: Thu, 12 Jun 2014 13:38:30 +0300 Subject: [PATCH] Fix shell view for secgroup-* commands Reasons: - currect code writes list of dict as they are, without any formatting, actually _print_ method calls str() on each attribute, this issue spoils human-readable form of the shell output. Changes: - updated "secgroup-list" (`rules` attributes was ignored); - updated "secgroup-show" (`rules` attribute was ripped off); - proposed new call "secgroup-list-rules "; Change-Id: Ic3f51b93af106c39de7eb3238f8bcffa3ea3cb95 Closes-Bug: #1300164 DocImpact: added new CLI command. --- README.rst | 1 + troveclient/v1/shell.py | 19 ++++++++++++++++--- 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/README.rst b/README.rst index 1646f580..1353c933 100644 --- a/README.rst +++ b/README.rst @@ -125,6 +125,7 @@ You'll find complete documentation on the shell by running secgroup-add-rule Creates a security group rule. secgroup-delete-rule Deletes a security group rule. + secgroup-list-rules Lists all rules for a security group. secgroup-list Lists all security groups. secgroup-show Shows details of a security group. show Shows details of an instance. diff --git a/troveclient/v1/shell.py b/troveclient/v1/shell.py index 3c25d105..10849752 100644 --- a/troveclient/v1/shell.py +++ b/troveclient/v1/shell.py @@ -594,20 +594,21 @@ def do_secgroup_list(cs, args): wrapper = cs.security_groups.list() sec_grps += wrapper.items - utils.print_list(sec_grps, ['id', 'name', 'rules', 'instance_id']) + utils.print_list(sec_grps, ['id', 'name', 'instance_id']) @utils.arg('security_group', metavar='', - help='ID of the security group.') + help='Security group ID') @utils.service_type('database') def do_secgroup_show(cs, args): """Shows details of a security group.""" sec_grp = cs.security_groups.get(args.security_group) + del sec_grp._info['rules'] _print_instance(sec_grp) @utils.arg('security_group', metavar='', - help='Security group name.') + help='Security group ID.') @utils.arg('cidr', metavar='', help='CIDR address.') @utils.service_type('database') def do_secgroup_add_rule(cs, args): @@ -620,6 +621,18 @@ def do_secgroup_add_rule(cs, args): 'from_port', 'to_port', 'cidr', 'created'], obj_is_dict=True) +@utils.arg('security_group', metavar='', + help='Security group ID.') +@utils.service_type('database') +def do_secgroup_list_rules(cs, args): + """Lists all rules for a security group.""" + sec_grp = cs.security_groups.get(args.security_group) + rules = sec_grp._info['rules'] + utils.print_list( + rules, ['id', 'protocol', 'from_port', 'to_port', 'cidr'], + obj_is_dict=True) + + @utils.arg('security_group_rule', metavar='', help='Name of security group rule.') @utils.service_type('database')