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 <secgroup-id>";

Change-Id: Ic3f51b93af106c39de7eb3238f8bcffa3ea3cb95
Closes-Bug: #1300164
DocImpact: added new CLI command.
This commit is contained in:
Denis Makogon
2014-06-12 13:38:30 +03:00
parent 344a38a661
commit b8fa51d9d0
2 changed files with 17 additions and 3 deletions

View File

@@ -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.

View File

@@ -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='<security_group>',
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='<security_group>',
help='Security group name.')
help='Security group ID.')
@utils.arg('cidr', metavar='<cidr>', 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='<security_group>',
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='<security_group_rule>',
help='Name of security group rule.')
@utils.service_type('database')