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 e0f35ad4..6c613d94 100644
--- a/openstackclient/common/utils.py
+++ b/openstackclient/common/utils.py
@@ -53,6 +53,30 @@ def find_resource(manager, name_or_id):
raise exceptions.CommandError(msg)
+def get_item_properties(item, fields, mixed_case_fields=[], formatters={}):
+ """Return a tuple containing the item properties.
+
+ :param item: a single item resource (e.g. Server, Tenant, etc)
+ :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 formatters:
+ row.append(formatters[field](item))
+ else:
+ if field in mixed_case_fields:
+ field_name = field.replace(' ', '_')
+ else:
+ field_name = field.lower().replace(' ', '_')
+ data = getattr(item, field_name, '')
+ row.append(data)
+ return tuple(row)
+
+
def string_to_bool(arg):
return arg.strip().lower() in ('t', 'true', 'yes', '1')