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) |                 self.log.warning("Type %s is deprecated.", cdist_type.name) | ||||||
|         for param in cdist_object.parameters: |         for param in cdist_object.parameters: | ||||||
|             if param in cdist_type.deprecated_parameters: |             if param in cdist_type.deprecated_parameters: | ||||||
|                 self.log.warning(("%s parameter of type %s is deprecated, " |                 msg = cdist_type.deprecated_parameters[param] | ||||||
|                                   "see man page for details"), |                 if msg: | ||||||
|                                  param, cdist_type.name) |                     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): |     def object_prepare(self, cdist_object, transfer_type_explorers=True): | ||||||
|         """Prepare object: Run type explorer + manifest""" |         """Prepare object: Run type explorer + manifest""" | ||||||
|  |  | ||||||
|  | @ -279,20 +279,20 @@ class CdistType(object): | ||||||
| 
 | 
 | ||||||
|     @property |     @property | ||||||
|     def deprecated_parameters(self): |     def deprecated_parameters(self): | ||||||
|         """Return a list of deprecated parameters""" |  | ||||||
|         if not self.__deprecated_parameters: |         if not self.__deprecated_parameters: | ||||||
|             parameters = [] |             deprecated = {} | ||||||
|             try: |             try: | ||||||
|                 with open(os.path.join(self.absolute_path, |                 deprecated_dir = os.path.join(self.absolute_path, | ||||||
|                                               "parameter", |                                               "parameter", | ||||||
|                                        "deprecated")) as fd: |                                               "deprecated") | ||||||
|                     for line in fd: |                 for name in cdist.core.listdir(deprecated_dir): | ||||||
|                         line = line.strip() |                     try: | ||||||
|                         if line: |                         with open(os.path.join(deprecated_dir, name)) as fd: | ||||||
|                             parameters.append(line) |                             deprecated[name] = fd.read().strip() | ||||||
|                     except EnvironmentError: |                     except EnvironmentError: | ||||||
|                 # error ignored |                         pass  # Swallow errors raised by open() or read() | ||||||
|                 pass |             except EnvironmentError: | ||||||
|  |                 pass  # Swallow error raised by os.listdir() | ||||||
|             finally: |             finally: | ||||||
|                 self.__deprecated_parameters = parameters |                 self.__deprecated_parameters = deprecated | ||||||
|         return self.__deprecated_parameters |         return self.__deprecated_parameters | ||||||
|  |  | ||||||
|  | @ -205,10 +205,13 @@ class TypeTestCase(test.CdistTestCase): | ||||||
|         base_path = fixtures |         base_path = fixtures | ||||||
|         cdist_type = core.CdistType(base_path, |         cdist_type = core.CdistType(base_path, | ||||||
|                                     '__without_deprecated_parameters') |                                     '__without_deprecated_parameters') | ||||||
|         self.assertEqual(cdist_type.deprecated_parameters, []) |         self.assertEqual(cdist_type.deprecated_parameters, {}) | ||||||
| 
 | 
 | ||||||
|     def test_with_deprecated_parameters(self): |     def test_with_deprecated_parameters(self): | ||||||
|         base_path = fixtures |         base_path = fixtures | ||||||
|         cdist_type = core.CdistType(base_path, '__with_deprecated_parameters') |         cdist_type = core.CdistType(base_path, '__with_deprecated_parameters') | ||||||
|         self.assertEqual(cdist_type.deprecated_parameters, |         self.assertTrue('eggs' in cdist_type.deprecated_parameters) | ||||||
|                          ['eggs', 'spam']) |         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 | spam | ||||||
| eggs | eggs | ||||||
| sausage | sausage | ||||||
| spam |  | ||||||
|  |  | ||||||
|  | @ -188,24 +188,27 @@ Example: (e.g. in cdist/conf/type/__nginx_vhost/manifest) | ||||||
| 
 | 
 | ||||||
| Deprecated parameters | Deprecated parameters | ||||||
| --------------------- | --------------------- | ||||||
| To deprecate type parameters one can declare a newline separated file | To deprecate type parameters one can declare a file for each deprecated | ||||||
| **parameter/deprecated** where each line contains deprecated parameter. | parameter under **parameter/deprecated** directory. | ||||||
| When it is used cdist writes warning line, e.g.: | 
 | ||||||
|  | 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 | .. code-block:: sh | ||||||
| 
 | 
 | ||||||
|     $ cat parameter/optional_multiple |     $ ls parameter/deprecated/ | ||||||
|     foo |     eggs    spam | ||||||
|     spam |     $ cat parameter/deprecated/eggs | ||||||
|     eggs |     eggs parameter is deprecated, please use multiple egg parameter. | ||||||
|     $ cat parameter/deprecated |     $ cat parameter/deprecated/spam | ||||||
|     spam |     $ echo '__foo foo --foo foo --eggs eggs' | ./bin/cdist config -i - 185.203.112.26 | ||||||
|     eggs |     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 --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 |  | ||||||
|     $ echo '__foo foo --foo foo --eggs eggs --spam spam' | ./bin/cdist config -i - 185.203.112.26 |     $ 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: spam parameter of type __foo is deprecated. | ||||||
|     WARNING: 185.203.112.26: eggs parameter of type __foo is deprecated, see man page for details |     WARNING: 185.203.112.26: eggs parameter of type __foo is deprecated: eggs parameter is deprecated, please use multiple egg parameter. | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| Input from stdin | Input from stdin | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue