forked from ungleich-public/cdist
implement multiple parameters based on https://github.com/telmich/cdist/pull/71 by Sébastien Gross
Signed-off-by: Steven Armstrong <steven@icarus.ethz.ch>
This commit is contained in:
parent
f087057c98
commit
36513997d9
4 changed files with 64 additions and 7 deletions
|
|
@ -81,7 +81,9 @@ class CdistType(object):
|
|||
|
||||
self.__explorers = None
|
||||
self.__required_parameters = None
|
||||
self.__required_multiple_parameters = None
|
||||
self.__optional_parameters = None
|
||||
self.__optional_multiple_parameters = None
|
||||
self.__boolean_parameters = None
|
||||
|
||||
def __repr__(self):
|
||||
|
|
@ -130,6 +132,22 @@ class CdistType(object):
|
|||
self.__required_parameters = parameters
|
||||
return self.__required_parameters
|
||||
|
||||
@property
|
||||
def required_multiple_parameters(self):
|
||||
"""Return a list of required multiple parameters"""
|
||||
if not self.__required_multiple_parameters:
|
||||
parameters = []
|
||||
try:
|
||||
with open(os.path.join(self.absolute_path, "parameter", "required_multiple")) as fd:
|
||||
for line in fd:
|
||||
parameters.append(line.strip())
|
||||
except EnvironmentError:
|
||||
# error ignored
|
||||
pass
|
||||
finally:
|
||||
self.__required_multiple_parameters = parameters
|
||||
return self.__required_multiple_parameters
|
||||
|
||||
@property
|
||||
def optional_parameters(self):
|
||||
"""Return a list of optional parameters"""
|
||||
|
|
@ -146,6 +164,22 @@ class CdistType(object):
|
|||
self.__optional_parameters = parameters
|
||||
return self.__optional_parameters
|
||||
|
||||
@property
|
||||
def optional_multiple_parameters(self):
|
||||
"""Return a list of optional multiple parameters"""
|
||||
if not self.__optional_multiple_parameters:
|
||||
parameters = []
|
||||
try:
|
||||
with open(os.path.join(self.absolute_path, "parameter", "optional_multiple")) as fd:
|
||||
for line in fd:
|
||||
parameters.append(line.strip())
|
||||
except EnvironmentError:
|
||||
# error ignored
|
||||
pass
|
||||
finally:
|
||||
self.__optional_multiple_parameters = parameters
|
||||
return self.__optional_multiple_parameters
|
||||
|
||||
@property
|
||||
def boolean_parameters(self):
|
||||
"""Return a list of boolean parameters"""
|
||||
|
|
|
|||
|
|
@ -89,12 +89,18 @@ class Emulator(object):
|
|||
|
||||
parser = argparse.ArgumentParser(add_help=False, argument_default=argparse.SUPPRESS)
|
||||
|
||||
for parameter in self.cdist_type.optional_parameters:
|
||||
argument = "--" + parameter
|
||||
parser.add_argument(argument, dest=parameter, action='store', required=False)
|
||||
for parameter in self.cdist_type.required_parameters:
|
||||
argument = "--" + parameter
|
||||
parser.add_argument(argument, dest=parameter, action='store', required=True)
|
||||
for parameter in self.cdist_type.required_multiple_parameters:
|
||||
argument = "--" + parameter
|
||||
parser.add_argument(argument, dest=parameter, action='append', required=True)
|
||||
for parameter in self.cdist_type.optional_parameters:
|
||||
argument = "--" + parameter
|
||||
parser.add_argument(argument, dest=parameter, action='store', required=False)
|
||||
for parameter in self.cdist_type.optional_multiple_parameters:
|
||||
argument = "--" + parameter
|
||||
parser.add_argument(argument, dest=parameter, action='append', required=False)
|
||||
for parameter in self.cdist_type.boolean_parameters:
|
||||
argument = "--" + parameter
|
||||
parser.add_argument(argument, dest=parameter, action='store_const', const='')
|
||||
|
|
|
|||
|
|
@ -134,7 +134,11 @@ class DirectoryDict(collections.MutableMapping):
|
|||
def __setitem__(self, key, value):
|
||||
try:
|
||||
with open(os.path.join(self.path, key), "w") as fd:
|
||||
fd.write(str(value))
|
||||
if type(value) == type([]):
|
||||
for v in value:
|
||||
fd.write(str(v) + '\n')
|
||||
else:
|
||||
fd.write(str(value))
|
||||
except EnvironmentError as e:
|
||||
raise cdist.Error(str(e))
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue