1 ##############################################################################
2 # Copyright (c) 2015 Huawei Technologies Co.,Ltd and others.
4 # All rights reserved. This program and the accompanying materials
5 # are made available under the terms of the Apache License, Version 2.0
6 # which accompanies this distribution, and is available at
7 # http://www.apache.org/licenses/LICENSE-2.0
8 ##############################################################################
10 _DEFAULTS = "vstf check key defaults".encode()
13 def check(key, choices=[], defaults=_DEFAULTS):
15 def __deco(*args, **kwargs):
17 if defaults != _DEFAULTS:
18 kwargs[key] = defaults
21 "Error: '%s' is needed in %s" %
24 if choices and kwargs[key] not in choices:
25 raise Exception("Error: %s :%s" % (key, kwargs[key]))
26 ret = func(*args, **kwargs)
34 def dcheck(key, choices=[]):
43 if isinstance(values, dict):
46 "Error: '%s' is needed in %s" %
48 if choices and values[key] not in choices:
49 raise Exception("Error: %s :%s" % (key, values[key]))
58 def vstf_input(key, types=str, choices=[], default=None):
62 if not isinstance(ret, dict):
64 in_str = "----> %s : " % key
66 in_str = "---- %s\n" % (str(choices)) + in_str
68 if types == list or types == dict:
71 value = raw_input(in_str)
75 if not choices or value in choices:
77 ret.update({key: value})
87 def __deco(*args, **kwargs):
88 ret = func(*args, **kwargs)
89 nspace = kwargs.get("namespace", None)
91 ret = "ip netns exec %(namespace)s " % {
92 "namespace": nspace} + ret