5 # see license for license details
6 _DEFAULTS = "vstf check key defaults".encode()
9 def check(key, choices=[], defaults=_DEFAULTS):
11 def __deco(*args, **kwargs):
13 if defaults != _DEFAULTS:
14 kwargs[key] = defaults
16 raise Exception("Error: '%s' is needed in %s" % (key, func))
18 if choices and kwargs[key] not in choices:
19 raise Exception("Error: %s :%s" % (key, kwargs[key]))
20 ret = func(*args, **kwargs)
28 def dcheck(key, choices=[]):
37 if isinstance(values, dict):
39 raise Exception("Error: '%s' is needed in %s" % (key, func))
40 if choices and values[key] not in choices:
41 raise Exception("Error: %s :%s" % (key, values[key]))
50 def vstf_input(key, types=str, choices=[], default=None):
54 if not isinstance(ret, dict):
56 in_str = "----> %s : " % key
58 in_str = "---- %s\n" % (str(choices)) + in_str
60 if types == list or types == dict:
63 value = raw_input(in_str)
67 if not choices or value in choices:
69 ret.update({key: value})
79 def __deco(*args, **kwargs):
80 ret = func(*args, **kwargs)
81 nspace = kwargs.get("namespace", None)
83 ret = "ip netns exec %(namespace)s " % {"namespace": nspace} + ret