Merge remote-tracking branch 'telmich/master'
This commit is contained in:
		
				commit
				
					
						3012afeb31
					
				
			
		
					 3 changed files with 49 additions and 37 deletions
				
			
		| 
						 | 
					@ -1,8 +1,25 @@
 | 
				
			||||||
Object:
 | 
					Object:
 | 
				
			||||||
   code_remote
 | 
					   code_remote
 | 
				
			||||||
   code_local
 | 
					   code
 | 
				
			||||||
   gencode_local
 | 
					   gencode_local
 | 
				
			||||||
   gencode_remote
 | 
					   gencode_remote
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   path_remote
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Type:
 | 
					Type:
 | 
				
			||||||
   explorer_path
 | 
					   explorer_dir
 | 
				
			||||||
 | 
					   remote_explorer_dir
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   explorer_remote_dir
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					GlobalExplorer:
 | 
				
			||||||
 | 
					   out_path: local path into which the output is written
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   cdist.core.GlobalExplorer.base_dir - local directory containing explorers
 | 
				
			||||||
 | 
					   cdist.core.GlobalExplorer.remote_base_dir - remote directory containing explorers
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   path: local path to explorer
 | 
				
			||||||
 | 
					   remote_path: remote path to explorer
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   See config_install: run_global_explorers()
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -37,9 +37,7 @@ CODE_HEADER = "#!/bin/sh -e\n"
 | 
				
			||||||
class ConfigInstall:
 | 
					class ConfigInstall:
 | 
				
			||||||
    """Cdist main class to hold arbitrary data"""
 | 
					    """Cdist main class to hold arbitrary data"""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def __init__(self, target_host, 
 | 
					    def __init__(self, target_host, initial_manifest=False,
 | 
				
			||||||
                    initial_manifest=False,
 | 
					 | 
				
			||||||
                    home=None,
 | 
					 | 
				
			||||||
                    exec_path=sys.argv[0],
 | 
					                    exec_path=sys.argv[0],
 | 
				
			||||||
                    debug=False):
 | 
					                    debug=False):
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -51,30 +49,11 @@ class ConfigInstall:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        self.path = cdist.path.Path(self.target_host, 
 | 
					        self.path = cdist.path.Path(self.target_host, 
 | 
				
			||||||
                        initial_manifest=initial_manifest,
 | 
					                        initial_manifest=initial_manifest,
 | 
				
			||||||
                        base_dir=home,
 | 
					 | 
				
			||||||
                        debug=debug)
 | 
					                        debug=debug)
 | 
				
			||||||
        
 | 
					        
 | 
				
			||||||
    def cleanup(self):
 | 
					    def cleanup(self):
 | 
				
			||||||
        self.path.cleanup()
 | 
					        self.path.cleanup()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def run_global_explorers(self):
 | 
					 | 
				
			||||||
        """Run global explorers"""
 | 
					 | 
				
			||||||
        log.info("Running global explorers")
 | 
					 | 
				
			||||||
        explorers = self.path.list_global_explorers()
 | 
					 | 
				
			||||||
        if(len(explorers) == 0):
 | 
					 | 
				
			||||||
            raise cdist.Error("No explorers found in " + self.path.global_explorer_dir)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        self.path.transfer_global_explorers()
 | 
					 | 
				
			||||||
        for explorer in explorers:
 | 
					 | 
				
			||||||
            output = self.path.global_explorer_output_path(explorer)
 | 
					 | 
				
			||||||
            output_fd = open(output, mode='w')
 | 
					 | 
				
			||||||
            cmd = []
 | 
					 | 
				
			||||||
            cmd.append("__explorer=" + cdist.path.REMOTE_GLOBAL_EXPLORER_DIR)
 | 
					 | 
				
			||||||
            cmd.append(self.path.remote_global_explorer_path(explorer))
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            cdist.exec.run_or_fail(cmd, stdout=output_fd, remote_prefix=True)
 | 
					 | 
				
			||||||
            output_fd.close()
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    def run_type_explorer(self, cdist_object):
 | 
					    def run_type_explorer(self, cdist_object):
 | 
				
			||||||
        """Run type specific explorers for objects"""
 | 
					        """Run type specific explorers for objects"""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -102,10 +81,7 @@ class ConfigInstall:
 | 
				
			||||||
            cdist.exec.run_or_fail(remote_cmd, stdout=output_fd, remote_prefix=True)
 | 
					            cdist.exec.run_or_fail(remote_cmd, stdout=output_fd, remote_prefix=True)
 | 
				
			||||||
            output_fd.close()
 | 
					            output_fd.close()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def link_emulator(self):
 | 
					
 | 
				
			||||||
        """Link emulator to types"""
 | 
					 | 
				
			||||||
        cdist.emulator.link(self.exec_path,
 | 
					 | 
				
			||||||
            self.path.bin_dir, self.path.list_types())
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def run_initial_manifest(self):
 | 
					    def run_initial_manifest(self):
 | 
				
			||||||
        """Run the initial manifest"""
 | 
					        """Run the initial manifest"""
 | 
				
			||||||
| 
						 | 
					@ -226,6 +202,34 @@ class ConfigInstall:
 | 
				
			||||||
                cdist.exec.run_or_fail([remote_remote_code], remote_prefix=True)
 | 
					                cdist.exec.run_or_fail([remote_remote_code], remote_prefix=True)
 | 
				
			||||||
                
 | 
					                
 | 
				
			||||||
    ### Cleaned / check functions: Round 1 :-) #################################
 | 
					    ### Cleaned / check functions: Round 1 :-) #################################
 | 
				
			||||||
 | 
					    def link_emulator(self):
 | 
				
			||||||
 | 
					        """Link emulator to types"""
 | 
				
			||||||
 | 
					        src = os.path.abspath(self.exec_path)
 | 
				
			||||||
 | 
					        for type in cdist.core.Type.list_types():
 | 
				
			||||||
 | 
					            log.debug("Linking emulator: %s to %s", source, destination)
 | 
				
			||||||
 | 
					            dst = os.path.join(self.context.bin_dir, type.name)
 | 
				
			||||||
 | 
					            # FIXME: handle exception / make it more beautiful
 | 
				
			||||||
 | 
					            os.symlink(src, dst)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def run_global_explorers(self):
 | 
				
			||||||
 | 
					        """Run global explorers"""
 | 
				
			||||||
 | 
					        log.info("Running global explorers")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        src = cdist.core.GlobalExplorer.base_dir
 | 
				
			||||||
 | 
					        dst = cdist.core.GlobalExplorer.remote_base_dir
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        self.context.transfer_dir(src, dst)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        for explorer in cdist.core.GlobalExplorer.list_explorers():
 | 
				
			||||||
 | 
					            output_fd = open(explorer.out_path, mode='w')
 | 
				
			||||||
 | 
					            cmd = []
 | 
				
			||||||
 | 
					            cmd.append("__explorer=" + cdist.core.GlobalExplorer.remote_base_dir)
 | 
				
			||||||
 | 
					            cmd.append(explorer.remote_path)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            cdist.exec.run_or_fail(cmd, stdout=output_fd, remote_prefix=True)
 | 
				
			||||||
 | 
					            output_fd.close()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def stage_run(self):
 | 
					    def stage_run(self):
 | 
				
			||||||
        """The final (and real) step of deployment"""
 | 
					        """The final (and real) step of deployment"""
 | 
				
			||||||
        log.info("Generating and executing code")
 | 
					        log.info("Generating and executing code")
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -142,12 +142,3 @@ def run(argv):
 | 
				
			||||||
    source_fd.close()
 | 
					    source_fd.close()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    log.debug("Finished " + type + "/" + object_id + repr(params))
 | 
					    log.debug("Finished " + type + "/" + object_id + repr(params))
 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
def link(exec_path, bin_dir, type_list):
 | 
					 | 
				
			||||||
    """Link type names to cdist-type-emulator"""
 | 
					 | 
				
			||||||
    source = os.path.abspath(exec_path)
 | 
					 | 
				
			||||||
    for type in type_list:
 | 
					 | 
				
			||||||
        destination = os.path.join(bin_dir, type)
 | 
					 | 
				
			||||||
        log.debug("Linking %s to %s", source, destination)
 | 
					 | 
				
			||||||
        os.symlink(source, destination)
 | 
					 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue