diff options
author | Yichen Wang <yicwang@cisco.com> | 2017-08-15 11:28:53 -0700 |
---|---|---|
committer | Yichen Wang <yicwang@cisco.com> | 2017-08-18 01:04:05 -0700 |
commit | 5d2becfd9d6398ce9dfd4c83618de42e272ec830 (patch) | |
tree | d9039260137b1d9ab57e25eba853220baa7ba9e3 /nfvbench | |
parent | 4c5e4ba753face81fd73aa3bae1fe3c012e48859 (diff) |
[NFVBENCH-7] Return errors when unknown options are passed
1. Return errors when unknown options are passed
2. Fix pep8 warnings
Change-Id: I1cbc86de93b4633bbf9bd66c1dc956ff8b3679a6
Signed-off-by: Yichen Wang <yicwang@cisco.com>
Diffstat (limited to 'nfvbench')
-rw-r--r-- | nfvbench/chain_clients.py | 3 | ||||
-rw-r--r-- | nfvbench/config.py | 14 | ||||
-rw-r--r-- | nfvbench/nfvbench.py | 16 | ||||
-rw-r--r-- | nfvbench/traffic_client.py | 3 |
4 files changed, 31 insertions, 5 deletions
diff --git a/nfvbench/chain_clients.py b/nfvbench/chain_clients.py index dfd6ff2..affccc8 100644 --- a/nfvbench/chain_clients.py +++ b/nfvbench/chain_clients.py @@ -78,7 +78,8 @@ class BasicStageClient(object): networks = self.neutron.list_networks(name=network_name) return networks['networks'][0] if networks['networks'] else None - def _create_net(self, name, subnet, cidr, network_type=None, segmentation_id=None, physical_network=None): + def _create_net(self, name, subnet, cidr, network_type=None, + segmentation_id=None, physical_network=None): network = self._lookup_network(name) if network: # a network of same name already exists, we need to verify it has the same diff --git a/nfvbench/config.py b/nfvbench/config.py index b2972dd..2a67b7e 100644 --- a/nfvbench/config.py +++ b/nfvbench/config.py @@ -48,6 +48,20 @@ def config_loads(cfg_text, from_cfg=None): return cfg +def get_err_config(subset, superset): + for k, v in subset.items(): + if k not in superset: + return {k: v} + if v is not None and superset[k] is not None: + if not isinstance(v, type(superset[k])): + return {k: v} + if isinstance(v, dict): + res = get_err_config(v, superset[k]) + if res: + return {k: res} + return None + + def test_config(): cfg = config_load('a1.yaml') cfg = config_load('a2.yaml', cfg) diff --git a/nfvbench/nfvbench.py b/nfvbench/nfvbench.py index a4f9ead..5b94ce7 100644 --- a/nfvbench/nfvbench.py +++ b/nfvbench/nfvbench.py @@ -21,6 +21,7 @@ from chain_runner import ChainRunner 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 @@ -404,10 +405,10 @@ def override_custom_traffic(config, frame_sizes, unidir): 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: @@ -455,6 +456,13 @@ def main(): 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) @@ -504,7 +512,9 @@ def main(): 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} diff --git a/nfvbench/traffic_client.py b/nfvbench/traffic_client.py index 319dc0b..7c8367a 100644 --- a/nfvbench/traffic_client.py +++ b/nfvbench/traffic_client.py @@ -609,7 +609,8 @@ class TrafficClient(object): indicating the rate to send on each interface right the right side of the range to search as a % of line rate indicating the rate to send on each interface - targets a dict of drop rates to search (0.1 = 0.1%), indexed by the DR name or "tag" ('ndr', 'pdr') + targets a dict of drop rates to search (0.1 = 0.1%), indexed by the DR name or "tag" + ('ndr', 'pdr') results a dict to store results ''' if len(targets) == 0: |