forked from ungleich-public/cdist
		
	Allow custom message for each deprecated parameter
This commit is contained in:
		
					parent
					
						
							
								55ba49efac
							
						
					
				
			
			
				commit
				
					
						3cb4e76175
					
				
			
		
					 8 changed files with 44 additions and 35 deletions
				
			
		|  | @ -769,9 +769,14 @@ class Config(object): | |||
|                 self.log.warning("Type %s is deprecated.", cdist_type.name) | ||||
|         for param in cdist_object.parameters: | ||||
|             if param in cdist_type.deprecated_parameters: | ||||
|                 self.log.warning(("%s parameter of type %s is deprecated, " | ||||
|                                   "see man page for details"), | ||||
|                                  param, cdist_type.name) | ||||
|                 msg = cdist_type.deprecated_parameters[param] | ||||
|                 if msg: | ||||
|                     format = "%s parameter of type %s is deprecated: %s" | ||||
|                     args = [param, cdist_type.name, msg] | ||||
|                 else: | ||||
|                     format = "%s parameter of type %s is deprecated." | ||||
|                     args = [param, cdist_type.name] | ||||
|                 self.log.warning(format, *args) | ||||
| 
 | ||||
|     def object_prepare(self, cdist_object, transfer_type_explorers=True): | ||||
|         """Prepare object: Run type explorer + manifest""" | ||||
|  |  | |||
|  | @ -279,20 +279,20 @@ class CdistType(object): | |||
| 
 | ||||
|     @property | ||||
|     def deprecated_parameters(self): | ||||
|         """Return a list of deprecated parameters""" | ||||
|         if not self.__deprecated_parameters: | ||||
|             parameters = [] | ||||
|             deprecated = {} | ||||
|             try: | ||||
|                 with open(os.path.join(self.absolute_path, | ||||
|                                        "parameter", | ||||
|                                        "deprecated")) as fd: | ||||
|                     for line in fd: | ||||
|                         line = line.strip() | ||||
|                         if line: | ||||
|                             parameters.append(line) | ||||
|                 deprecated_dir = os.path.join(self.absolute_path, | ||||
|                                               "parameter", | ||||
|                                               "deprecated") | ||||
|                 for name in cdist.core.listdir(deprecated_dir): | ||||
|                     try: | ||||
|                         with open(os.path.join(deprecated_dir, name)) as fd: | ||||
|                             deprecated[name] = fd.read().strip() | ||||
|                     except EnvironmentError: | ||||
|                         pass  # Swallow errors raised by open() or read() | ||||
|             except EnvironmentError: | ||||
|                 # error ignored | ||||
|                 pass | ||||
|                 pass  # Swallow error raised by os.listdir() | ||||
|             finally: | ||||
|                 self.__deprecated_parameters = parameters | ||||
|                 self.__deprecated_parameters = deprecated | ||||
|         return self.__deprecated_parameters | ||||
|  |  | |||
|  | @ -205,10 +205,13 @@ class TypeTestCase(test.CdistTestCase): | |||
|         base_path = fixtures | ||||
|         cdist_type = core.CdistType(base_path, | ||||
|                                     '__without_deprecated_parameters') | ||||
|         self.assertEqual(cdist_type.deprecated_parameters, []) | ||||
|         self.assertEqual(cdist_type.deprecated_parameters, {}) | ||||
| 
 | ||||
|     def test_with_deprecated_parameters(self): | ||||
|         base_path = fixtures | ||||
|         cdist_type = core.CdistType(base_path, '__with_deprecated_parameters') | ||||
|         self.assertEqual(cdist_type.deprecated_parameters, | ||||
|                          ['eggs', 'spam']) | ||||
|         self.assertTrue('eggs' in cdist_type.deprecated_parameters) | ||||
|         self.assertTrue('spam' in cdist_type.deprecated_parameters) | ||||
|         self.assertEqual(cdist_type.deprecated_parameters['eggs'], | ||||
|                          'Deprecated') | ||||
|         self.assertEqual(cdist_type.deprecated_parameters['spam'], '') | ||||
|  |  | |||
|  | @ -1,2 +0,0 @@ | |||
| eggs | ||||
| spam | ||||
|  | @ -0,0 +1 @@ | |||
| Deprecated | ||||
|  | @ -1,4 +1,3 @@ | |||
| spam | ||||
| eggs | ||||
| sausage | ||||
| spam | ||||
|  |  | |||
|  | @ -188,24 +188,27 @@ Example: (e.g. in cdist/conf/type/__nginx_vhost/manifest) | |||
| 
 | ||||
| Deprecated parameters | ||||
| --------------------- | ||||
| To deprecate type parameters one can declare a newline separated file | ||||
| **parameter/deprecated** where each line contains deprecated parameter. | ||||
| When it is used cdist writes warning line, e.g.: | ||||
| To deprecate type parameters one can declare a file for each deprecated | ||||
| parameter under **parameter/deprecated** directory. | ||||
| 
 | ||||
| When such parameter is used cdist writes warning line with deprecation message. | ||||
| If such file has content then this content is printed as deprecation message. | ||||
| If there is no content then generic parameter deprecation message is printed. | ||||
| 
 | ||||
| Example: | ||||
| 
 | ||||
| .. code-block:: sh | ||||
| 
 | ||||
|     $ cat parameter/optional_multiple | ||||
|     foo | ||||
|     spam | ||||
|     eggs | ||||
|     $ cat parameter/deprecated | ||||
|     spam | ||||
|     eggs | ||||
|     $ echo '__foo foo --foo foo --spam spam' | ./bin/cdist config -i - 185.203.112.26 | ||||
|     WARNING: 185.203.112.26: spam parameter of type __foo is deprecated, see man page for details | ||||
|     $ ls parameter/deprecated/ | ||||
|     eggs    spam | ||||
|     $ cat parameter/deprecated/eggs | ||||
|     eggs parameter is deprecated, please use multiple egg parameter. | ||||
|     $ cat parameter/deprecated/spam | ||||
|     $ echo '__foo foo --foo foo --eggs eggs' | ./bin/cdist config -i - 185.203.112.26 | ||||
|     WARNING: 185.203.112.26: eggs parameter of type __foo is deprecated: eggs parameter is deprecated, please use multiple egg parameter. | ||||
|     $ echo '__foo foo --foo foo --eggs eggs --spam spam' | ./bin/cdist config -i - 185.203.112.26 | ||||
|     WARNING: 185.203.112.26: spam parameter of type __foo is deprecated, see man page for details | ||||
|     WARNING: 185.203.112.26: eggs parameter of type __foo is deprecated, see man page for details | ||||
|     WARNING: 185.203.112.26: spam parameter of type __foo is deprecated. | ||||
|     WARNING: 185.203.112.26: eggs parameter of type __foo is deprecated: eggs parameter is deprecated, please use multiple egg parameter. | ||||
| 
 | ||||
| 
 | ||||
| Input from stdin | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue