summaryrefslogtreecommitdiff
path: root/openstackclient/common/utils.py
diff options
context:
space:
mode:
Diffstat (limited to 'openstackclient/common/utils.py')
-rw-r--r--openstackclient/common/utils.py24
1 files changed, 24 insertions, 0 deletions
diff --git a/openstackclient/common/utils.py b/openstackclient/common/utils.py
index f72bb505..91a20895 100644
--- a/openstackclient/common/utils.py
+++ b/openstackclient/common/utils.py
@@ -115,6 +115,30 @@ def get_item_properties(item, fields, mixed_case_fields=[], formatters={}):
return tuple(row)
+def get_dict_properties(item, fields, mixed_case_fields=[], formatters={}):
+ """Return a tuple containing the item properties.
+
+ :param item: a single dict resource
+ :param fields: tuple of strings with the desired field names
+ :param mixed_case_fields: tuple of field names to preserve case
+ :param formatters: dictionary mapping field names to callables
+ to format the values
+ """
+ row = []
+
+ for field in fields:
+ if field in mixed_case_fields:
+ field_name = field.replace(' ', '_')
+ else:
+ field_name = field.lower().replace(' ', '_')
+ data = item[field_name] if field_name in item else ''
+ if field in formatters:
+ row.append(formatters[field](data))
+ else:
+ row.append(data)
+ return tuple(row)
+
+
def string_to_bool(arg):
return arg.strip().lower() in ('t', 'true', 'yes', '1')