forked from ungleich-public/cdist
Merge branch 'feature_multiple_arguments' of https://github.com/asteven/cdist
This commit is contained in:
commit
3c5aa53190
4 changed files with 64 additions and 7 deletions
|
@ -74,14 +74,19 @@ DEFINING PARAMETERS
|
||||||
-------------------
|
-------------------
|
||||||
Every type consists of required, optional and boolean parameters, which must
|
Every type consists of required, optional and boolean parameters, which must
|
||||||
be created in a newline seperated file in ***parameter/required***,
|
be created in a newline seperated file in ***parameter/required***,
|
||||||
***parameter/optional*** and ***parameter/boolean***. If either is missing,
|
***parameter/required_multiple***, ***parameter/optional***,
|
||||||
the type will have no required, no optional, no boolean or no parameters at
|
***parameter/optional_multiple*** and ***parameter/boolean***.
|
||||||
all.
|
Parameters which are allowed multiple times should be listed in
|
||||||
|
required_multiple or optional_multiple respectively. For all other parameters
|
||||||
|
the standard unix behaviour of the last given wins is applied.
|
||||||
|
If either is missing, the type will have no required, no optional, no boolean
|
||||||
|
or no parameters at all.
|
||||||
|
|
||||||
Example:
|
Example:
|
||||||
--------------------------------------------------------------------------------
|
--------------------------------------------------------------------------------
|
||||||
echo servername >> conf/type/__nginx_vhost/parameter/required
|
echo servername >> conf/type/__nginx_vhost/parameter/required
|
||||||
echo logdirectory >> conf/type/__nginx_vhost/parameter/optional
|
echo logdirectory >> conf/type/__nginx_vhost/parameter/optional
|
||||||
|
echo server_alias >> conf/type/__nginx_vhost/parameter/optional_multiple
|
||||||
echo use_ssl >> conf/type/__nginx_vhost/parameter/boolean
|
echo use_ssl >> conf/type/__nginx_vhost/parameter/boolean
|
||||||
--------------------------------------------------------------------------------
|
--------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
@ -108,6 +113,14 @@ if [ -f "$__object/parameter/use_ssl" ]; then
|
||||||
# file exists -> True
|
# file exists -> True
|
||||||
# do some fancy ssl stuff
|
# do some fancy ssl stuff
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# parameter with multiple values
|
||||||
|
if [ -f "$__object/parameter/server_alias" ]; then
|
||||||
|
for alias in $(cat "$__object/parameter/server_alias"); do
|
||||||
|
echo $alias > /some/where/usefull
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
|
||||||
--------------------------------------------------------------------------------
|
--------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -81,7 +81,9 @@ class CdistType(object):
|
||||||
|
|
||||||
self.__explorers = None
|
self.__explorers = None
|
||||||
self.__required_parameters = None
|
self.__required_parameters = None
|
||||||
|
self.__required_multiple_parameters = None
|
||||||
self.__optional_parameters = None
|
self.__optional_parameters = None
|
||||||
|
self.__optional_multiple_parameters = None
|
||||||
self.__boolean_parameters = None
|
self.__boolean_parameters = None
|
||||||
|
|
||||||
def __repr__(self):
|
def __repr__(self):
|
||||||
|
@ -130,6 +132,22 @@ class CdistType(object):
|
||||||
self.__required_parameters = parameters
|
self.__required_parameters = parameters
|
||||||
return self.__required_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
|
@property
|
||||||
def optional_parameters(self):
|
def optional_parameters(self):
|
||||||
"""Return a list of optional parameters"""
|
"""Return a list of optional parameters"""
|
||||||
|
@ -146,6 +164,22 @@ class CdistType(object):
|
||||||
self.__optional_parameters = parameters
|
self.__optional_parameters = parameters
|
||||||
return self.__optional_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
|
@property
|
||||||
def boolean_parameters(self):
|
def boolean_parameters(self):
|
||||||
"""Return a list of boolean parameters"""
|
"""Return a list of boolean parameters"""
|
||||||
|
|
|
@ -92,12 +92,18 @@ class Emulator(object):
|
||||||
|
|
||||||
parser = argparse.ArgumentParser(add_help=False, argument_default=argparse.SUPPRESS)
|
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:
|
for parameter in self.cdist_type.required_parameters:
|
||||||
argument = "--" + parameter
|
argument = "--" + parameter
|
||||||
parser.add_argument(argument, dest=parameter, action='store', required=True)
|
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:
|
for parameter in self.cdist_type.boolean_parameters:
|
||||||
argument = "--" + parameter
|
argument = "--" + parameter
|
||||||
parser.add_argument(argument, dest=parameter, action='store_const', const='')
|
parser.add_argument(argument, dest=parameter, action='store_const', const='')
|
||||||
|
|
|
@ -134,6 +134,10 @@ class DirectoryDict(collections.MutableMapping):
|
||||||
def __setitem__(self, key, value):
|
def __setitem__(self, key, value):
|
||||||
try:
|
try:
|
||||||
with open(os.path.join(self.path, key), "w") as fd:
|
with open(os.path.join(self.path, key), "w") as fd:
|
||||||
|
if type(value) == type([]):
|
||||||
|
for v in value:
|
||||||
|
fd.write(str(v) + '\n')
|
||||||
|
else:
|
||||||
fd.write(str(value))
|
fd.write(str(value))
|
||||||
except EnvironmentError as e:
|
except EnvironmentError as e:
|
||||||
raise cdist.Error(str(e))
|
raise cdist.Error(str(e))
|
||||||
|
|
Loading…
Reference in a new issue