summaryrefslogtreecommitdiff
path: root/ceilometerclient/common
diff options
context:
space:
mode:
Diffstat (limited to 'ceilometerclient/common')
-rw-r--r--ceilometerclient/common/utils.py21
1 files changed, 21 insertions, 0 deletions
diff --git a/ceilometerclient/common/utils.py b/ceilometerclient/common/utils.py
index 2628ca0..db7b042 100644
--- a/ceilometerclient/common/utils.py
+++ b/ceilometerclient/common/utils.py
@@ -154,6 +154,27 @@ def args_array_to_dict(kwargs, key_to_convert):
return kwargs
+def args_array_to_list_of_dicts(kwargs, key_to_convert):
+ """Converts ['a=1;b=2','c=3;d=4'] to [{a:1,b:2},{c:3,d:4}]
+ """
+ values_to_convert = kwargs.get(key_to_convert)
+ if values_to_convert:
+ try:
+ kwargs[key_to_convert] = []
+ for lst in values_to_convert:
+ pairs = lst.split(";")
+ dct = dict()
+ for pair in pairs:
+ kv = pair.split("=", 1)
+ dct[kv[0]] = kv[1].strip(" \"'") # strip spaces and quotes
+ kwargs[key_to_convert].append(dct)
+ except Exception:
+ raise exc.CommandError(
+ '%s must be a list of key1=value1;key2=value2;... not "%s"' % (
+ key_to_convert, values_to_convert))
+ return kwargs
+
+
def key_with_slash_to_nested_dict(kwargs):
nested_kwargs = {}
for k in list(kwargs):