forked from ungleich-public/cdist
		
	Initial try for parallelization.
This commit is contained in:
		
					parent
					
						
							
								258a6c7f56
							
						
					
				
			
			
				commit
				
					
						1952d43073
					
				
			
		
					 1 changed files with 37 additions and 4 deletions
				
			
		| 
						 | 
				
			
			@ -267,11 +267,44 @@ class Config(object):
 | 
			
		|||
            else:
 | 
			
		||||
                yield cdist_object
 | 
			
		||||
 | 
			
		||||
    def iterate_once_parallel(self):
 | 
			
		||||
    def iterate_once(self):
 | 
			
		||||
        """
 | 
			
		||||
            Iterate over the objects once - helper method for
 | 
			
		||||
            iterate_until_finished
 | 
			
		||||
        """
 | 
			
		||||
        if self.jobs:
 | 
			
		||||
            objects_changed = self._iterate_once_parallel()
 | 
			
		||||
        else:
 | 
			
		||||
            objects_changed = self._iterate_once_sequential()
 | 
			
		||||
        return objects_changed
 | 
			
		||||
 | 
			
		||||
    def _iterate_once_sequential(self):
 | 
			
		||||
        objects_changed = False
 | 
			
		||||
 | 
			
		||||
        for cdist_object in self.object_list():
 | 
			
		||||
            if cdist_object.requirements_unfinished(cdist_object.requirements):
 | 
			
		||||
                """We cannot do anything for this poor object"""
 | 
			
		||||
                continue
 | 
			
		||||
 | 
			
		||||
            if cdist_object.state == core.CdistObject.STATE_UNDEF:
 | 
			
		||||
                """Prepare the virgin object"""
 | 
			
		||||
 | 
			
		||||
                self.object_prepare(cdist_object)
 | 
			
		||||
                objects_changed = True
 | 
			
		||||
 | 
			
		||||
            if cdist_object.requirements_unfinished(cdist_object.autorequire):
 | 
			
		||||
                """The previous step created objects we depend on -
 | 
			
		||||
                   wait for them
 | 
			
		||||
                """
 | 
			
		||||
                continue
 | 
			
		||||
 | 
			
		||||
            if cdist_object.state == core.CdistObject.STATE_PREPARED:
 | 
			
		||||
                self.object_run(cdist_object)
 | 
			
		||||
                objects_changed = True
 | 
			
		||||
 | 
			
		||||
        return objects_changed
 | 
			
		||||
 | 
			
		||||
    def _iterate_once_parallel(self):
 | 
			
		||||
        objects_changed = False
 | 
			
		||||
 | 
			
		||||
        cargo = []
 | 
			
		||||
| 
						 | 
				
			
			@ -300,7 +333,8 @@ class Config(object):
 | 
			
		|||
                continue
 | 
			
		||||
 | 
			
		||||
            if cdist_object.state == core.CdistObject.STATE_PREPARED:
 | 
			
		||||
                if cdist_object.requirements_unfinished(cdist_object.autorequire):
 | 
			
		||||
                if cdist_object.requirements_unfinished(
 | 
			
		||||
                        cdist_object.autorequire):
 | 
			
		||||
                    """The previous step created objects we depend on -
 | 
			
		||||
                    wait for them
 | 
			
		||||
                    """
 | 
			
		||||
| 
						 | 
				
			
			@ -327,8 +361,7 @@ class Config(object):
 | 
			
		|||
        objects_changed = True
 | 
			
		||||
 | 
			
		||||
        while objects_changed:
 | 
			
		||||
            if self.jobs:
 | 
			
		||||
                objects_changed = self.iterate_once_parallel()
 | 
			
		||||
            objects_changed = self.iterate_once()
 | 
			
		||||
 | 
			
		||||
        # Check whether all objects have been finished
 | 
			
		||||
        unfinished_objects = []
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue