new special value require="CDIST_HONOR_MANIFEST_ORDER"
which tells cdist to execute types in the manifest order
This commit is contained in:
		
					parent
					
						
							
								f23999c8d3
							
						
					
				
			
			
				commit
				
					
						824381e6ca
					
				
			
		
					 2 changed files with 32 additions and 0 deletions
				
			
		| 
						 | 
				
			
			@ -71,6 +71,7 @@ class Emulator(object):
 | 
			
		|||
            raise MissingRequiredEnvironmentVariableError(e.args[0])
 | 
			
		||||
 | 
			
		||||
        self.object_base_path = os.path.join(self.global_path, "object")
 | 
			
		||||
        self.typeorder_path = os.path.join(self.global_path, "typeorder")
 | 
			
		||||
 | 
			
		||||
        self.type_name      = os.path.basename(argv[0])
 | 
			
		||||
        self.cdist_type     = core.CdistType(self.type_base_path, self.type_name)
 | 
			
		||||
| 
						 | 
				
			
			@ -152,6 +153,9 @@ class Emulator(object):
 | 
			
		|||
        else:
 | 
			
		||||
            self.cdist_object.create()
 | 
			
		||||
            self.cdist_object.parameters = self.parameters
 | 
			
		||||
            # record the created object in typeorder file
 | 
			
		||||
            with open(self.typeorder_path, 'a') as tofd:
 | 
			
		||||
                tofd.write(self.cdist_object.name + os.linesep)
 | 
			
		||||
 | 
			
		||||
        # Record / Append source
 | 
			
		||||
        self.cdist_object.source.append(self.object_source)
 | 
			
		||||
| 
						 | 
				
			
			@ -188,6 +192,18 @@ class Emulator(object):
 | 
			
		|||
                # Ignore empty fields - probably the only field anyway
 | 
			
		||||
                if len(requirement) == 0: continue
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
                if requirement == "CDIST_HONOR_MANIFEST_ORDER":
 | 
			
		||||
                    # load object name created bevor this one from typeorder file ...
 | 
			
		||||
                    with open(self.typeorder_path, 'r') as tofd:
 | 
			
		||||
                        lines = tofd.readlines()
 | 
			
		||||
                        # replace the placeholder with the last created object
 | 
			
		||||
                        try:
 | 
			
		||||
                            requirement = lines[-2].strip()
 | 
			
		||||
                        except IndexError:
 | 
			
		||||
                            # if no second last line, we are on the first object, so do not set a requirement
 | 
			
		||||
                            continue
 | 
			
		||||
 | 
			
		||||
                # Raises an error, if object cannot be created
 | 
			
		||||
                try:
 | 
			
		||||
                    cdist_object = self.cdist_object.object_from_name(requirement)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -128,6 +128,22 @@ All objects that are created in a type manifest are automatically required
 | 
			
		|||
from the type that is calling them. This is called "autorequirement" in
 | 
			
		||||
cdist jargon.
 | 
			
		||||
 | 
			
		||||
You can tell cdist to execute all types in the order in which they are created 
 | 
			
		||||
in the manifest by setting require to the special value of 
 | 
			
		||||
"CDIST_HONOR_MANIFEST_ORDER".
 | 
			
		||||
 | 
			
		||||
--------------------------------------------------------------------------------
 | 
			
		||||
 | 
			
		||||
# Tells cdist to execute all types in the order in which they are created ...
 | 
			
		||||
export require="CDIST_HONOR_MANIFEST_ORDER"
 | 
			
		||||
__sample_type 1
 | 
			
		||||
__sample_type 2
 | 
			
		||||
__example_type 23
 | 
			
		||||
# Now this types are executed in the creation order
 | 
			
		||||
--------------------------------------------------------------------------------
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
EXAMPLES
 | 
			
		||||
--------
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue