Merge "Yardstick Preliminary Documentation"
[yardstick.git] / yardstick / common / utils.py
index 3c5895f..d2be800 100644 (file)
@@ -26,6 +26,7 @@ import sys
 from functools import reduce
 
 import yaml
+from six.moves import configparser
 from oslo_utils import importutils
 from oslo_serialization import jsonutils
 
@@ -133,7 +134,9 @@ def source_env(env_file):
 
 def read_json_from_file(path):
     with open(path, 'r') as f:
-        return jsonutils.load(f)
+        j = f.read()
+    # don't use jsonutils.load() it conflicts with already decoded input
+    return jsonutils.loads(j)
 
 
 def write_json_to_file(path, data, mode='w'):
@@ -144,3 +147,19 @@ def write_json_to_file(path, data, mode='w'):
 def write_file(path, data, mode='w'):
     with open(path, mode) as f:
         f.write(data)
+
+
+def parse_ini_file(path):
+    parser = configparser.ConfigParser()
+    parser.read(path)
+
+    try:
+        default = {k: v for k, v in parser.items('DEFAULT')}
+    except configparser.NoSectionError:
+        default = {}
+
+    config = dict(DEFAULT=default,
+                  **{s: {k: v for k, v in parser.items(
+                      s)} for s in parser.sections()})
+
+    return config