diff --git a/openstackclient/network/v2/port.py b/openstackclient/network/v2/port.py index 4b23b339c9..21f30c4160 100644 --- a/openstackclient/network/v2/port.py +++ b/openstackclient/network/v2/port.py @@ -584,9 +584,11 @@ class ListPort(command.Lister): data = network_client.ports(**filters) - return (column_headers, + headers, attrs = utils.calculate_header_and_attrs( + column_headers, columns, parsed_args) + return (headers, (utils.get_item_properties( - s, columns, + s, attrs, formatters=_formatters, ) for s in data)) diff --git a/openstackclient/tests/functional/network/v2/test_port.py b/openstackclient/tests/functional/network/v2/test_port.py index a705979028..7357c0ed54 100644 --- a/openstackclient/tests/functional/network/v2/test_port.py +++ b/openstackclient/tests/functional/network/v2/test_port.py @@ -131,6 +131,16 @@ class PortTests(common.NetworkTagTests): self.assertNotIn(mac1, item_map.values()) self.assertIn(mac2, item_map.values()) + # Test list with unknown fields + json_output = json.loads(self.openstack( + 'port list -f json -c ID -c Name -c device_id' + )) + id_list = [p['ID'] for p in json_output] + self.assertIn(id1, id_list) + self.assertIn(id2, id_list) + # Check an unknown field exists + self.assertIn('device_id', json_output[0]) + def test_port_set(self): """Test create, set, show, delete""" name = uuid.uuid4().hex