forked from ungleich-public/cdist
		
	Merge remote branch 'remotes/upstream/master'
This commit is contained in:
		
				commit
				
					
						c1ca8f4932
					
				
			
		
					 6 changed files with 67 additions and 9 deletions
				
			
		|  | @ -4,11 +4,12 @@ Changelog | ||||||
| 	* Changes are always commented with their author in (braces) | 	* Changes are always commented with their author in (braces) | ||||||
| 	* Exception: No braces means author == Nico Schottelius | 	* Exception: No braces means author == Nico Schottelius | ||||||
| 
 | 
 | ||||||
| 2.0.13: | 2.0.13: 2012-06-05 | ||||||
| 	* Bugfix __ssh_authorized_key: Ensure it sets proper group (contradict) | 	* Bugfix __ssh_authorized_key: Ensure it sets proper group (contradict) | ||||||
| 	* Bugfix __addifnosuchline: Fixed quotes/interpolation bug ("a  b" became "a b") | 	* Bugfix __addifnosuchline: Fixed quotes/interpolation bug ("a  b" became "a b") | ||||||
| 	* New Explorer: interfaces (Sébastien Gross) | 	* New Explorer: interfaces (Sébastien Gross) | ||||||
| 	* Feature core: Support reading from stdin in types (Steven Armstrong) | 	* Feature core: Support reading from stdin in types (Steven Armstrong) | ||||||
|  | 	* Feature core: Support multiple parameters for types (Steven Armstrong) | ||||||
| 	* Feature __file: Support reading from stdin with - syntax (Steven Armstrong) | 	* Feature __file: Support reading from stdin with - syntax (Steven Armstrong) | ||||||
| 
 | 
 | ||||||
| 2.0.12: 2012-05-29 | 2.0.12: 2012-05-29 | ||||||
|  |  | ||||||
|  | @ -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 | ||||||
|  | 
 | ||||||
| -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -29,7 +29,7 @@ try: | ||||||
|                     'cd "%s" && git describe' % here, |                     'cd "%s" && git describe' % here, | ||||||
|                     stderr=devnull, shell=True).decode('utf-8') |                     stderr=devnull, shell=True).decode('utf-8') | ||||||
| except: | except: | ||||||
|     VERSION     = "2.0.12" |     VERSION     = "2.0.13" | ||||||
| 
 | 
 | ||||||
| BANNER = """ | BANNER = """ | ||||||
|              ..          .       .x+=:.        s |              ..          .       .x+=:.        s | ||||||
|  |  | ||||||
|  | @ -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…
	
	Add table
		Add a link
		
	
		Reference in a new issue