Merge remote-tracking branch 'steven/run-explorers-in-cdist.core.explorer'
This commit is contained in:
		
				commit
				
					
						80cd35fc3d
					
				
			
		
					 5 changed files with 45 additions and 32 deletions
				
			
		| 
						 | 
					@ -45,13 +45,6 @@ logging:
 | 
				
			||||||
   [2] http://blog.ooz.ie/2011/03/python-logging-extending-standard.html
 | 
					   [2] http://blog.ooz.ie/2011/03/python-logging-extending-standard.html
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
config_install:
 | 
					 | 
				
			||||||
   - move code for running global and type explorer run to cdist.core.explorer
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
tests:
 | 
					 | 
				
			||||||
   - aufraeumen
 | 
					 | 
				
			||||||
   - test suite
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
tests:
 | 
					tests:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -77,7 +77,7 @@ class ConfigInstall(object):
 | 
				
			||||||
    def stage_prepare(self):
 | 
					    def stage_prepare(self):
 | 
				
			||||||
        """Do everything for a deploy, minus the actual code stage"""
 | 
					        """Do everything for a deploy, minus the actual code stage"""
 | 
				
			||||||
        self.local.link_emulator(self.context.exec_path)
 | 
					        self.local.link_emulator(self.context.exec_path)
 | 
				
			||||||
        self.run_global_explorers()
 | 
					        self.explorer.run_global_explorers(self.local.global_explorer_out_path)
 | 
				
			||||||
        self.manifest.run_initial_manifest(self.context.initial_manifest)
 | 
					        self.manifest.run_initial_manifest(self.context.initial_manifest)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        self.log.info("Running object manifests and type explorers")
 | 
					        self.log.info("Running object manifests and type explorers")
 | 
				
			||||||
| 
						 | 
					@ -95,32 +95,10 @@ class ConfigInstall(object):
 | 
				
			||||||
                    self.object_prepare(cdist_object)
 | 
					                    self.object_prepare(cdist_object)
 | 
				
			||||||
                    new_objects_created = True
 | 
					                    new_objects_created = True
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def run_global_explorers(self):
 | 
					 | 
				
			||||||
        """Run global explorers and save output"""
 | 
					 | 
				
			||||||
        # FIXME: move to explorer, pass global_explorer_out_path as argument
 | 
					 | 
				
			||||||
        self.log.info("Running global explorers")
 | 
					 | 
				
			||||||
        self.explorer.transfer_global_explorers()
 | 
					 | 
				
			||||||
        for explorer in self.explorer.list_global_explorer_names():
 | 
					 | 
				
			||||||
            output = self.explorer.run_global_explorer(explorer)
 | 
					 | 
				
			||||||
            path = os.path.join(self.local.global_explorer_out_path, explorer)
 | 
					 | 
				
			||||||
            with open(path, 'w') as fd:
 | 
					 | 
				
			||||||
                fd.write(output)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    def run_type_explorers(self, cdist_object):
 | 
					 | 
				
			||||||
        """Run type explorers and save output in object."""
 | 
					 | 
				
			||||||
        self.log.debug("Transfering type explorers for type: %s", cdist_object.type)
 | 
					 | 
				
			||||||
        self.explorer.transfer_type_explorers(cdist_object.type)
 | 
					 | 
				
			||||||
        self.log.debug("Transfering object parameters for object: %s", cdist_object.name)
 | 
					 | 
				
			||||||
        self.explorer.transfer_object_parameters(cdist_object)
 | 
					 | 
				
			||||||
        for explorer in self.explorer.list_type_explorer_names(cdist_object.type):
 | 
					 | 
				
			||||||
            output = self.explorer.run_type_explorer(explorer, cdist_object)
 | 
					 | 
				
			||||||
            self.log.debug("Running type explorer '%s' for object '%s'", explorer, cdist_object.name)
 | 
					 | 
				
			||||||
            cdist_object.explorers[explorer] = output
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    def object_prepare(self, cdist_object):
 | 
					    def object_prepare(self, cdist_object):
 | 
				
			||||||
        """Prepare object: Run type explorer + manifest"""
 | 
					        """Prepare object: Run type explorer + manifest"""
 | 
				
			||||||
        self.log.info("Running manifest and explorers for " + cdist_object.name)
 | 
					        self.log.info("Running manifest and explorers for " + cdist_object.name)
 | 
				
			||||||
        self.run_type_explorers(cdist_object)
 | 
					        self.explorer.run_type_explorers(cdist_object)
 | 
				
			||||||
        self.manifest.run_type_manifest(cdist_object)
 | 
					        self.manifest.run_type_manifest(cdist_object)
 | 
				
			||||||
        cdist_object.state = core.Object.STATE_PREPARED
 | 
					        cdist_object.state = core.Object.STATE_PREPARED
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -83,6 +83,19 @@ class Explorer(object):
 | 
				
			||||||
        """Return a list of global explorer names."""
 | 
					        """Return a list of global explorer names."""
 | 
				
			||||||
        return os.listdir(self.local.global_explorer_path)
 | 
					        return os.listdir(self.local.global_explorer_path)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def run_global_explorers(self, out_path):
 | 
				
			||||||
 | 
					        """Run global explorers and save output to files in the given
 | 
				
			||||||
 | 
					        out_path directory.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        """
 | 
				
			||||||
 | 
					        self.log.info("Running global explorers")
 | 
				
			||||||
 | 
					        self.transfer_global_explorers()
 | 
				
			||||||
 | 
					        for explorer in self.list_global_explorer_names():
 | 
				
			||||||
 | 
					            output = self.run_global_explorer(explorer)
 | 
				
			||||||
 | 
					            path = os.path.join(out_path, explorer)
 | 
				
			||||||
 | 
					            with open(path, 'w') as fd:
 | 
				
			||||||
 | 
					                fd.write(output)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def transfer_global_explorers(self):
 | 
					    def transfer_global_explorers(self):
 | 
				
			||||||
        """Transfer the global explorers to the remote side."""
 | 
					        """Transfer the global explorers to the remote side."""
 | 
				
			||||||
        self.remote.mkdir(self.remote.global_explorer_path)
 | 
					        self.remote.mkdir(self.remote.global_explorer_path)
 | 
				
			||||||
| 
						 | 
					@ -103,6 +116,20 @@ class Explorer(object):
 | 
				
			||||||
        except EnvironmentError:
 | 
					        except EnvironmentError:
 | 
				
			||||||
            return []
 | 
					            return []
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def run_type_explorers(self, cdist_object):
 | 
				
			||||||
 | 
					        """Run the type explorers for the given object and save their output
 | 
				
			||||||
 | 
					        in the object.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        """
 | 
				
			||||||
 | 
					        self.log.debug("Transfering type explorers for type: %s", cdist_object.type)
 | 
				
			||||||
 | 
					        self.transfer_type_explorers(cdist_object.type)
 | 
				
			||||||
 | 
					        self.log.debug("Transfering object parameters for object: %s", cdist_object.name)
 | 
				
			||||||
 | 
					        self.transfer_object_parameters(cdist_object)
 | 
				
			||||||
 | 
					        for explorer in self.list_type_explorer_names(cdist_object.type):
 | 
				
			||||||
 | 
					            output = self.run_type_explorer(explorer, cdist_object)
 | 
				
			||||||
 | 
					            self.log.debug("Running type explorer '%s' for object '%s'", explorer, cdist_object.name)
 | 
				
			||||||
 | 
					            cdist_object.explorers[explorer] = output
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def transfer_type_explorers(self, cdist_type):
 | 
					    def transfer_type_explorers(self, cdist_type):
 | 
				
			||||||
        """Transfer the type explorers for the given type to the remote side."""
 | 
					        """Transfer the type explorers for the given type to the remote side."""
 | 
				
			||||||
        if cdist_type.explorers:
 | 
					        if cdist_type.explorers:
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -62,7 +62,7 @@ class ExplorerClassTestCase(test.CdistTestCase):
 | 
				
			||||||
        shutil.rmtree(self.remote_base_path)
 | 
					        shutil.rmtree(self.remote_base_path)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def test_list_global_explorer_names(self):
 | 
					    def test_list_global_explorer_names(self):
 | 
				
			||||||
        expected = ['global']
 | 
					        expected = ['foobar', 'global']
 | 
				
			||||||
        self.assertEqual(self.explorer.list_global_explorer_names(), expected)
 | 
					        self.assertEqual(self.explorer.list_global_explorer_names(), expected)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def test_transfer_global_explorers(self):
 | 
					    def test_transfer_global_explorers(self):
 | 
				
			||||||
| 
						 | 
					@ -76,6 +76,12 @@ class ExplorerClassTestCase(test.CdistTestCase):
 | 
				
			||||||
        output = self.explorer.run_global_explorer('global')
 | 
					        output = self.explorer.run_global_explorer('global')
 | 
				
			||||||
        self.assertEqual(output, 'global\n')
 | 
					        self.assertEqual(output, 'global\n')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def test_run_global_explorers(self):
 | 
				
			||||||
 | 
					        out_path = self.mkdtemp()
 | 
				
			||||||
 | 
					        self.explorer.run_global_explorers(out_path)
 | 
				
			||||||
 | 
					        self.assertEqual(os.listdir(out_path), ['foobar', 'global'])
 | 
				
			||||||
 | 
					        shutil.rmtree(out_path)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def test_list_type_explorer_names(self):
 | 
					    def test_list_type_explorer_names(self):
 | 
				
			||||||
        cdist_type = core.Type(self.local.type_path, '__test_type')
 | 
					        cdist_type = core.Type(self.local.type_path, '__test_type')
 | 
				
			||||||
        expected = cdist_type.explorers
 | 
					        expected = cdist_type.explorers
 | 
				
			||||||
| 
						 | 
					@ -118,3 +124,10 @@ class ExplorerClassTestCase(test.CdistTestCase):
 | 
				
			||||||
        self.explorer.transfer_type_explorers(cdist_type)
 | 
					        self.explorer.transfer_type_explorers(cdist_type)
 | 
				
			||||||
        output = self.explorer.run_type_explorer('world', cdist_object)
 | 
					        output = self.explorer.run_type_explorer('world', cdist_object)
 | 
				
			||||||
        self.assertEqual(output, 'hello\n')
 | 
					        self.assertEqual(output, 'hello\n')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def test_run_type_explorers(self):
 | 
				
			||||||
 | 
					        cdist_type = core.Type(self.local.type_path, '__test_type')
 | 
				
			||||||
 | 
					        cdist_object = core.Object(cdist_type, self.local.object_path, 'whatever')
 | 
				
			||||||
 | 
					        cdist_object.create()
 | 
				
			||||||
 | 
					        self.explorer.run_type_explorers(cdist_object)
 | 
				
			||||||
 | 
					        self.assertEqual(cdist_object.explorers, {'world': 'hello'})
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										2
									
								
								lib/cdist/test/explorer/fixtures/conf/explorer/foobar
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										2
									
								
								lib/cdist/test/explorer/fixtures/conf/explorer/foobar
									
										
									
									
									
										Executable file
									
								
							| 
						 | 
					@ -0,0 +1,2 @@
 | 
				
			||||||
 | 
					#!/bin/sh
 | 
				
			||||||
 | 
					echo foobar
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue