Merge "Add get_osc_show_columns_for_sdk_resource function"
This commit is contained in:
commit
91690d0d40
@ -843,3 +843,48 @@ class TestAssertItemEqual(test_utils.TestCommand):
|
|||||||
format_columns.ListColumn(['x', 'y', 'z'])]
|
format_columns.ListColumn(['x', 'y', 'z'])]
|
||||||
]
|
]
|
||||||
self.assertListItemEqual(expected, actual)
|
self.assertListItemEqual(expected, actual)
|
||||||
|
|
||||||
|
|
||||||
|
class TestSDKUtils(test_utils.TestCase):
|
||||||
|
|
||||||
|
def setUp(self):
|
||||||
|
super(TestSDKUtils, self).setUp()
|
||||||
|
|
||||||
|
def _test_get_osc_show_columns_for_sdk_resource(
|
||||||
|
self, sdk_resource, column_map,
|
||||||
|
expected_display_columns, expected_attr_columns):
|
||||||
|
display_columns, attr_columns = \
|
||||||
|
utils.get_osc_show_columns_for_sdk_resource(
|
||||||
|
sdk_resource, column_map)
|
||||||
|
self.assertEqual(expected_display_columns, display_columns)
|
||||||
|
self.assertEqual(expected_attr_columns, attr_columns)
|
||||||
|
|
||||||
|
def test_get_osc_show_columns_for_sdk_resource_empty(self):
|
||||||
|
self._test_get_osc_show_columns_for_sdk_resource(
|
||||||
|
{}, {}, tuple(), tuple())
|
||||||
|
|
||||||
|
def test_get_osc_show_columns_for_sdk_resource_empty_map(self):
|
||||||
|
self._test_get_osc_show_columns_for_sdk_resource(
|
||||||
|
{'foo': 'foo1'}, {},
|
||||||
|
('foo',), ('foo',))
|
||||||
|
|
||||||
|
def test_get_osc_show_columns_for_sdk_resource_empty_data(self):
|
||||||
|
self._test_get_osc_show_columns_for_sdk_resource(
|
||||||
|
{}, {'foo': 'foo_map'},
|
||||||
|
('foo_map',), ('foo_map',))
|
||||||
|
|
||||||
|
def test_get_osc_show_columns_for_sdk_resource_map(self):
|
||||||
|
self._test_get_osc_show_columns_for_sdk_resource(
|
||||||
|
{'foo': 'foo1'}, {'foo': 'foo_map'},
|
||||||
|
('foo_map',), ('foo',))
|
||||||
|
|
||||||
|
def test_get_osc_show_columns_for_sdk_resource_map_dup(self):
|
||||||
|
self._test_get_osc_show_columns_for_sdk_resource(
|
||||||
|
{'foo': 'foo1', 'foo_map': 'foo1'}, {'foo': 'foo_map'},
|
||||||
|
('foo_map',), ('foo',))
|
||||||
|
|
||||||
|
def test_get_osc_show_columns_for_sdk_resource_map_full(self):
|
||||||
|
self._test_get_osc_show_columns_for_sdk_resource(
|
||||||
|
{'foo': 'foo1', 'bar': 'bar1'},
|
||||||
|
{'foo': 'foo_map', 'new': 'bar'},
|
||||||
|
('bar', 'foo_map'), ('bar', 'foo'))
|
||||||
|
@ -713,3 +713,50 @@ def wait_for_status(status_f,
|
|||||||
callback(progress)
|
callback(progress)
|
||||||
time.sleep(sleep_time)
|
time.sleep(sleep_time)
|
||||||
return retval
|
return retval
|
||||||
|
|
||||||
|
|
||||||
|
def get_osc_show_columns_for_sdk_resource(
|
||||||
|
sdk_resource,
|
||||||
|
osc_column_map,
|
||||||
|
invisible_columns=None
|
||||||
|
):
|
||||||
|
"""Get and filter the display and attribute columns for an SDK resource.
|
||||||
|
|
||||||
|
Common utility function for preparing the output of an OSC show command.
|
||||||
|
Some of the columns may need to get renamed, others made invisible.
|
||||||
|
|
||||||
|
:param sdk_resource: An SDK resource
|
||||||
|
:param osc_column_map: A hash of mappings for display column names
|
||||||
|
:param invisible_columns: A list of invisible column names
|
||||||
|
|
||||||
|
:returns: Two tuples containing the names of the display and attribute
|
||||||
|
columns
|
||||||
|
"""
|
||||||
|
|
||||||
|
if getattr(sdk_resource, 'allow_get', None) is not None:
|
||||||
|
resource_dict = sdk_resource.to_dict(
|
||||||
|
body=True, headers=False, ignore_none=False)
|
||||||
|
else:
|
||||||
|
resource_dict = sdk_resource
|
||||||
|
|
||||||
|
# Build the OSC column names to display for the SDK resource.
|
||||||
|
attr_map = {}
|
||||||
|
display_columns = list(resource_dict.keys())
|
||||||
|
invisible_columns = [] if invisible_columns is None else invisible_columns
|
||||||
|
for col_name in invisible_columns:
|
||||||
|
if col_name in display_columns:
|
||||||
|
display_columns.remove(col_name)
|
||||||
|
for sdk_attr, osc_attr in osc_column_map.items():
|
||||||
|
if sdk_attr in display_columns:
|
||||||
|
attr_map[osc_attr] = sdk_attr
|
||||||
|
display_columns.remove(sdk_attr)
|
||||||
|
if osc_attr not in display_columns:
|
||||||
|
display_columns.append(osc_attr)
|
||||||
|
sorted_display_columns = sorted(display_columns)
|
||||||
|
|
||||||
|
# Build the SDK attribute names for the OSC column names.
|
||||||
|
attr_columns = []
|
||||||
|
for column in sorted_display_columns:
|
||||||
|
new_column = attr_map[column] if column in attr_map else column
|
||||||
|
attr_columns.append(new_column)
|
||||||
|
return tuple(sorted_display_columns), tuple(attr_columns)
|
||||||
|
5
releasenotes/notes/add_sdk_utils-d0c338eba682f2c8.yaml
Normal file
5
releasenotes/notes/add_sdk_utils-d0c338eba682f2c8.yaml
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
---
|
||||||
|
features:
|
||||||
|
- |
|
||||||
|
Integrate get_osc_show_columns_for_sdk_resource function to ease showing
|
||||||
|
SDK resources.
|
Loading…
Reference in New Issue
Block a user