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