From 5d2bafa56fae2d273579c5d73f4686ee9d404a26 Mon Sep 17 00:00:00 2001 From: Jyotsna Date: Fri, 13 Jun 2014 18:11:17 +0530 Subject: [PATCH] neutron port-list -f csv outputs poorly formatted JSON strings After the change, the attached subnets are displayed as a list of dictionaries in one line only for csv option. It does not modify the output for tabular format. Closes-Bug: #1263551 Change-Id: Ia34062562f0471bc926f9fc0bbed2d5dc4352dc0 --- neutronclient/neutron/v2_0/__init__.py | 8 ++++++++ neutronclient/neutron/v2_0/port.py | 8 ++++++++ 2 files changed, 16 insertions(+) diff --git a/neutronclient/neutron/v2_0/__init__.py b/neutronclient/neutron/v2_0/__init__.py index 538b48c59..2cda5d6be 100644 --- a/neutronclient/neutron/v2_0/__init__.py +++ b/neutronclient/neutron/v2_0/__init__.py @@ -663,6 +663,14 @@ class ListCommand(NeutronCommand, lister.Lister): return (_columns, (utils.get_item_properties( s, _columns, formatters=self._formatters, ) for s in info), ) + if parsed_args.formatter == 'csv': + return (_columns, (utils.get_item_properties( + s, _columns, formatters=self._formatters_csv) + for s in info),) + else: + return (_columns, (utils.get_item_properties( + s, _columns, formatters=self._formatters) + for s in info),) def get_data(self, parsed_args): self.log.debug('get_data(%s)', parsed_args) diff --git a/neutronclient/neutron/v2_0/port.py b/neutronclient/neutron/v2_0/port.py index 4d2d7fa30..bee12e105 100644 --- a/neutronclient/neutron/v2_0/port.py +++ b/neutronclient/neutron/v2_0/port.py @@ -31,11 +31,19 @@ def _format_fixed_ips(port): return '' +def _format_fixed_ips_csv(port): + try: + return [utils.dumps(ip) for ip in port['fixed_ips']] + except Exception: + return '' + + class ListPort(neutronV20.ListCommand): """List ports that belong to a given tenant.""" resource = 'port' _formatters = {'fixed_ips': _format_fixed_ips, } + _formatters_csv = {'fixed_ips': _format_fixed_ips_csv, } list_columns = ['id', 'name', 'mac_address', 'fixed_ips'] pagination_support = True sorting_support = True