Skip to content

Commit 0626f95

Browse files
committed
Allow port list to shown undefined attributes
At now, OSC command implementation extracts resource attributes based on a predefined column list, so if a user specifies an unknown attribute not defined in the column lists, such attribute will be ignored. In case of 'port list', the neutron port defines many attributes and it is not a good idea to show all attributes even in the long mode from the perspective of user experience. This commit consumes osc_lib.utils.calculate_headers_and_attrs() function to show undefined port attributes if requested in -c option. Closes-Bug: #1707848 Depends-On: I6c6bc3c6e3c769c96869fd76b9d9c1661280850e Change-Id: I130a6aed41d80603698b6cab0c9a1d1dc59df743
1 parent c47b1ff commit 0626f95

2 files changed

Lines changed: 14 additions & 2 deletions

File tree

openstackclient/network/v2/port.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -584,9 +584,11 @@ def take_action(self, parsed_args):
584584

585585
data = network_client.ports(**filters)
586586

587-
return (column_headers,
587+
headers, attrs = utils.calculate_header_and_attrs(
588+
column_headers, columns, parsed_args)
589+
return (headers,
588590
(utils.get_item_properties(
589-
s, columns,
591+
s, attrs,
590592
formatters=_formatters,
591593
) for s in data))
592594

openstackclient/tests/functional/network/v2/test_port.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -131,6 +131,16 @@ def test_port_list(self):
131131
self.assertNotIn(mac1, item_map.values())
132132
self.assertIn(mac2, item_map.values())
133133

134+
# Test list with unknown fields
135+
json_output = json.loads(self.openstack(
136+
'port list -f json -c ID -c Name -c device_id'
137+
))
138+
id_list = [p['ID'] for p in json_output]
139+
self.assertIn(id1, id_list)
140+
self.assertIn(id2, id_list)
141+
# Check an unknown field exists
142+
self.assertIn('device_id', json_output[0])
143+
134144
def test_port_set(self):
135145
"""Test create, set, show, delete"""
136146
name = uuid.uuid4().hex

0 commit comments

Comments
 (0)