diff --git a/openstackclient/compute/v2/security_group.py b/openstackclient/compute/v2/security_group.py index 95e3a1c168..6395e102b9 100644 --- a/openstackclient/compute/v2/security_group.py +++ b/openstackclient/compute/v2/security_group.py @@ -62,6 +62,23 @@ def _xform_security_group_rule(sgroup): return info +def _xform_and_trim_security_group_rule(sgroup): + info = _xform_security_group_rule(sgroup) + # Trim parent security group ID since caller has this information. + info.pop('parent_group_id', None) + # Trim keys with empty string values. + keys_to_trim = [ + 'ip_protocol', + 'ip_range', + 'port_range', + 'remote_security_group', + ] + for key in keys_to_trim: + if key in info and not info[key]: + info.pop(key) + return info + + class CreateSecurityGroup(show.ShowOne): """Create a new security group""" @@ -396,7 +413,8 @@ class ShowSecurityGroup(show.ShowOne): )._info) rules = [] for r in info['rules']: - rules.append(utils.format_dict(_xform_security_group_rule(r))) + formatted_rule = _xform_and_trim_security_group_rule(r) + rules.append(utils.format_dict(formatted_rule)) # Format rules into a list of strings info.update(