from collections import defaultdict
from config import config_load
from config import config_loads
+from config import get_err_config
import copy
import credentials
import datetime
raise Exception('Please provide existing path for storing results in JSON file. '
'Path used: {path}'.format(path=self.config.std_json_path))
- self.config_plugin.validate_config(self.config)
+ self.config_plugin.validate_config(self.config, self.specs.openstack)
def parse_opts_from_cli():
def check_physnet(name, netattrs):
if not netattrs.physical_network:
raise Exception("SRIOV requires physical_network to be specified for the {n} network"
- .format(n=name))
+ .format(n=name))
if not netattrs.segmentation_id:
raise Exception("SRIOV requires segmentation_id to be specified for the {n} network"
- .format(n=name))
+ .format(n=name))
def main():
try:
LOG.info('Loading configuration string: ' + opts.config)
config = config_loads(opts.config, config)
+ # Making sure no unknown option is given
+ err_config = get_err_config(config, default_cfg)
+ if err_config:
+ err_msg = 'Unknown options found in config file/string: ' + err_config
+ LOG.error(err_msg)
+ raise Exception(err_msg)
+
# traffic profile override options
override_custom_traffic(config, opts.frame_sizes, opts.unidir)
else:
with utils.RunLock():
if unknown_opts:
- LOG.warning('Unknown options: ' + ' '.join(unknown_opts))
+ err_msg = 'Unknown options: ' + ' '.join(unknown_opts)
+ LOG.error(err_msg)
+ raise Exception(err_msg)
# remove unfilled values
opts = {k: v for k, v in vars(opts).iteritems() if v is not None}