aboutsummaryrefslogtreecommitdiffstats
path: root/nfvbench/config.py
diff options
context:
space:
mode:
Diffstat (limited to 'nfvbench/config.py')
-rw-r--r--nfvbench/config.py16
1 files changed, 11 insertions, 5 deletions
diff --git a/nfvbench/config.py b/nfvbench/config.py
index 5feeda5..8e77127 100644
--- a/nfvbench/config.py
+++ b/nfvbench/config.py
@@ -16,19 +16,19 @@
from attrdict import AttrDict
import yaml
-from log import LOG
+from .log import LOG
def config_load(file_name, from_cfg=None, whitelist_keys=None):
"""Load a yaml file into a config dict, merge with from_cfg if not None
The config file content taking precedence in case of duplicate
"""
try:
- with open(file_name) as fileobj:
+ with open(file_name, encoding="utf-8") as fileobj:
cfg = AttrDict(yaml.safe_load(fileobj))
except IOError:
raise Exception("Configuration file at '{}' was not found. Please use correct path "
"and verify it is visible to container if you run nfvbench in container."
- .format(file_name))
+ .format(file_name)) from IOError
if from_cfg:
if not whitelist_keys:
@@ -43,10 +43,16 @@ def config_loads(cfg_text, from_cfg=None, whitelist_keys=None):
"""Same as config_load but load from a string
"""
try:
- cfg = AttrDict(yaml.load(cfg_text))
+ cfg = AttrDict(yaml.safe_load(cfg_text))
except TypeError:
# empty string
cfg = AttrDict()
+ except ValueError as e:
+ # In case of wrong path or file not readable or string not well formatted
+ LOG.error("String %s is not well formatted. Please verify your yaml/json string. "
+ "If string is a file path, file was not found. Please use correct path and "
+ "verify it is visible to container if you run nfvbench in container.", cfg_text)
+ raise Exception(e) from e
if from_cfg:
if not whitelist_keys:
whitelist_keys = []
@@ -58,7 +64,7 @@ def config_loads(cfg_text, from_cfg=None, whitelist_keys=None):
def _validate_config(subset, superset, whitelist_keys):
def get_err_config(subset, superset):
result = {}
- for k, v in subset.items():
+ for k, v in list(subset.items()):
if k not in whitelist_keys:
if k not in superset:
result.update({k: v})