forked from ungleich-public/cdist
		
	Merge branch 'feature/support-type-deprecation' into 'master'
Add type deprecation support. See merge request ungleich-public/cdist!783
This commit is contained in:
		
				commit
				
					
						1f7d76ae75
					
				
			
		
					 6 changed files with 58 additions and 0 deletions
				
			
		|  | @ -758,8 +758,19 @@ class Config(object): | ||||||
|                     ("The requirements of the following objects could not be " |                     ("The requirements of the following objects could not be " | ||||||
|                      "resolved:\n%s") % ("\n".join(info_string))) |                      "resolved:\n%s") % ("\n".join(info_string))) | ||||||
| 
 | 
 | ||||||
|  |     def _handle_deprecation(self, cdist_object): | ||||||
|  |         cdist_type = cdist_object.cdist_type | ||||||
|  |         deprecated = cdist_type.deprecated | ||||||
|  |         if deprecated is not None: | ||||||
|  |             if deprecated: | ||||||
|  |                 self.log.warning("Type %s is deprecated: %s", cdist_type.name, | ||||||
|  |                                  deprecated) | ||||||
|  |             else: | ||||||
|  |                 self.log.warning("Type %s is deprecated.", cdist_type.name) | ||||||
|  | 
 | ||||||
|     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""" | ||||||
|  |         self._handle_deprecation(cdist_object) | ||||||
|         self.log.verbose("Preparing object {}".format(cdist_object.name)) |         self.log.verbose("Preparing object {}".format(cdist_object.name)) | ||||||
|         self.log.verbose( |         self.log.verbose( | ||||||
|             "Running manifest and explorers for " + cdist_object.name) |             "Running manifest and explorers for " + cdist_object.name) | ||||||
|  |  | ||||||
|  | @ -133,6 +133,17 @@ class CdistType(object): | ||||||
|            cannot run in parallel.""" |            cannot run in parallel.""" | ||||||
|         return os.path.isfile(os.path.join(self.absolute_path, "nonparallel")) |         return os.path.isfile(os.path.join(self.absolute_path, "nonparallel")) | ||||||
| 
 | 
 | ||||||
|  |     @property | ||||||
|  |     def deprecated(self): | ||||||
|  |         """Get type deprecation message. If message is None then type | ||||||
|  |         is not deprecated.""" | ||||||
|  |         deprecated_path = os.path.join(self.absolute_path, "deprecated") | ||||||
|  |         try: | ||||||
|  |             with open(deprecated_path, 'r') as f: | ||||||
|  |                 return f.read() | ||||||
|  |         except FileNotFoundError: | ||||||
|  |             return None | ||||||
|  | 
 | ||||||
|     @property |     @property | ||||||
|     def explorers(self): |     def explorers(self): | ||||||
|         """Return a list of available explorers""" |         """Return a list of available explorers""" | ||||||
|  |  | ||||||
|  | @ -123,6 +123,16 @@ class TypeTestCase(test.CdistTestCase): | ||||||
|         cdist_type = core.CdistType(base_path, '__not_nonparallel') |         cdist_type = core.CdistType(base_path, '__not_nonparallel') | ||||||
|         self.assertFalse(cdist_type.is_nonparallel) |         self.assertFalse(cdist_type.is_nonparallel) | ||||||
| 
 | 
 | ||||||
|  |     def test_deprecated(self): | ||||||
|  |         base_path = fixtures | ||||||
|  |         cdist_type = core.CdistType(base_path, '__deprecated') | ||||||
|  |         self.assertIsNotNone(cdist_type.deprecated) | ||||||
|  | 
 | ||||||
|  |     def test_not_deprecated(self): | ||||||
|  |         base_path = fixtures | ||||||
|  |         cdist_type = core.CdistType(base_path, '__not_deprecated') | ||||||
|  |         self.assertIsNone(cdist_type.deprecated) | ||||||
|  | 
 | ||||||
|     def test_install_is_install(self): |     def test_install_is_install(self): | ||||||
|         base_path = fixtures |         base_path = fixtures | ||||||
|         cdist_type = core.CdistType(base_path, '__install') |         cdist_type = core.CdistType(base_path, '__install') | ||||||
|  |  | ||||||
							
								
								
									
										0
									
								
								cdist/test/cdist_type/fixtures/__deprecated/deprecated
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								cdist/test/cdist_type/fixtures/__deprecated/deprecated
									
										
									
									
									
										Normal file
									
								
							|  | @ -6,6 +6,7 @@ next: | ||||||
| 	* Type __consul: Add version 1.5.0 (Nico Schottelius) | 	* Type __consul: Add version 1.5.0 (Nico Schottelius) | ||||||
| 	* Type __consul_agent: Add alpine support (Nico Schottelius) | 	* Type __consul_agent: Add alpine support (Nico Schottelius) | ||||||
| 	* New helper script: cdist-new-type (Steven Armstrong, Darko Poljak) | 	* New helper script: cdist-new-type (Steven Armstrong, Darko Poljak) | ||||||
|  | 	* Core: Add support for deprecated type marker (Darko Poljak) | ||||||
| 
 | 
 | ||||||
| 5.0.2: 2019-05-17 | 5.0.2: 2019-05-17 | ||||||
| 	* Type __package_apk: Fix @repo handling in explorer (Nico Schottelius) | 	* Type __package_apk: Fix @repo handling in explorer (Nico Schottelius) | ||||||
|  |  | ||||||
|  | @ -71,6 +71,31 @@ when using -j option. Example of such a type is __package_dpkg type where dpkg i | ||||||
| prevents to be run in more than one instance. | prevents to be run in more than one instance. | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | Deprecated types | ||||||
|  | ----------------- | ||||||
|  | If a type is flagged with 'deprecated' marker then it is considered deprecated. | ||||||
|  | Upon it's usage cdist writes warning line. If 'deprecated' marker has content | ||||||
|  | then this content is printed as a deprecation messages, e.g.: | ||||||
|  | 
 | ||||||
|  | .. code-block:: sh | ||||||
|  | 
 | ||||||
|  |     $ ls -l deprecated  | ||||||
|  |     -rw-r--r--  1 darko  darko  71 May 20 18:30 deprecated | ||||||
|  |     $ cat deprecated  | ||||||
|  |     This type is deprecated. It will be removed in the next minor release. | ||||||
|  |     $ echo '__foo foo' | ./bin/cdist config -i - 185.203.112.26 | ||||||
|  |     WARNING: 185.203.112.26: Type __foo is deprecated: This type is deprecated. It will be removed in the next minor release. | ||||||
|  | 
 | ||||||
|  | If 'deprecated' marker has no content then general message is printed, e.g.: | ||||||
|  | 
 | ||||||
|  | .. code-block:: sh | ||||||
|  | 
 | ||||||
|  |     $ ls -l deprecated  | ||||||
|  |     -rw-r--r--  1 darko  darko  0 May 20 18:36 deprecated | ||||||
|  |     $ echo '__bar foo' | ./bin/cdist config -i - 185.203.112.26 | ||||||
|  |     WARNING: 185.203.112.26: Type __bar is deprecated. | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| How to write a new type | How to write a new type | ||||||
| ----------------------- | ----------------------- | ||||||
| A type consists of | A type consists of | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue