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