From 5dff8c653031954a75f531c2459220abd2ec7d10 Mon Sep 17 00:00:00 2001 From: Kyle Mestery <kmestery@cisco.com> Date: Thu, 1 Nov 2012 15:53:14 +0000 Subject: [PATCH] Correct the verbose output formatting when creating routers. fixes bug 1070460 Change-Id: Id9157e7226f906ec608aa95766eeed1e62b5cc50 --- quantumclient/quantum/v2_0/__init__.py | 48 +++++++++++++--------------------- quantumclient/quantum/v2_0/router.py | 1 + 2 files changed, 19 insertions(+), 30 deletions(-) diff --git a/quantumclient/quantum/v2_0/__init__.py b/quantumclient/quantum/v2_0/__init__.py index c719d15..b067d32 100644 --- a/quantumclient/quantum/v2_0/__init__.py +++ b/quantumclient/quantum/v2_0/__init__.py @@ -200,6 +200,20 @@ class QuantumCommand(command.OpenStackCommand): return parser + def format_output_data(self, data): + # Modify data to make it more readable + if self.resource in data: + for k, v in data[self.resource].iteritems(): + if isinstance(v, list): + value = '\n'.join(utils.dumps(i) if isinstance(i, dict) + else str(i) for i in v) + data[self.resource][k] = value + elif isinstance(v, dict): + value = utils.dumps(v) + data[self.resource][k] = value + elif v is None: + data[self.resource][k] = '' + class CreateCommand(QuantumCommand, show.ShowOne): """Create a resource for a given tenant @@ -239,25 +253,13 @@ class CreateCommand(QuantumCommand, show.ShowOne): obj_creator = getattr(quantum_client, "create_%s" % self.resource) data = obj_creator(body) + self.format_output_data(data) # {u'network': {u'id': u'e9424a76-6db4-4c93-97b6-ec311cd51f19'}} info = self.resource in data and data[self.resource] or None if info: print >>self.app.stdout, _('Created a new %s:' % self.resource) else: info = {'': ''} - for k, v in info.iteritems(): - if isinstance(v, list): - value = "" - for _item in v: - if value: - value += "\n" - if isinstance(_item, dict): - value += utils.dumps(_item) - else: - value += str(_item) - info[k] = value - elif v is None: - info[k] = '' return zip(*sorted(info.iteritems())) @@ -435,23 +437,9 @@ class ShowCommand(QuantumCommand, show.ShowOne): obj_shower = getattr(quantum_client, "show_%s" % self.resource) data = obj_shower(_id, **params) + self.format_output_data(data) + resource = data[self.resource] if self.resource in data: - for k, v in data[self.resource].iteritems(): - if isinstance(v, list): - value = "" - for _item in v: - if value: - value += "\n" - if isinstance(_item, dict): - value += utils.dumps(_item) - else: - value += str(_item) - data[self.resource][k] = value - elif isinstance(v, dict): - value = utils.dumps(v) - data[self.resource][k] = value - elif v is None: - data[self.resource][k] = '' - return zip(*sorted(data[self.resource].iteritems())) + return zip(*sorted(resource.iteritems())) else: return None diff --git a/quantumclient/quantum/v2_0/router.py b/quantumclient/quantum/v2_0/router.py index 9d6787d..db85b80 100644 --- a/quantumclient/quantum/v2_0/router.py +++ b/quantumclient/quantum/v2_0/router.py @@ -56,6 +56,7 @@ class CreateRouter(CreateCommand): resource = 'router' log = logging.getLogger(__name__ + '.CreateRouter') + _formatters = {'external_gateway_info': _format_external_gateway_info, } def add_known_arguments(self, parser): parser.add_argument(