forked from ungleich-public/cdist
		
	begin type explorer transfer
Signed-off-by: Nico Schottelius <nico@kr.ethz.ch>
This commit is contained in:
		
					parent
					
						
							
								03e2db83cd
							
						
					
				
			
			
				commit
				
					
						4d765a7024
					
				
			
		
					 1 changed files with 26 additions and 3 deletions
				
			
		
							
								
								
									
										29
									
								
								bin/cdist
									
										
									
									
									
								
							
							
						
						
									
										29
									
								
								bin/cdist
									
										
									
									
									
								
							| 
						 | 
				
			
			@ -38,7 +38,10 @@ TYPE_DIR                   = os.path.join(CONF_DIR, "type")
 | 
			
		|||
 | 
			
		||||
REMOTE_BASE_DIR            = "/var/lib/cdist"
 | 
			
		||||
REMOTE_CONF_DIR            = os.path.join(REMOTE_BASE_DIR, "conf")
 | 
			
		||||
REMOTE_TYPE_DIR            = os.path.join(REMOTE_CONF_DIR, "type")
 | 
			
		||||
REMOTE_GLOBAL_EXPLORER_DIR = os.path.join(REMOTE_CONF_DIR, "explorer")
 | 
			
		||||
 | 
			
		||||
DOT_CDIST                  = ".cdist"
 | 
			
		||||
VERSION                    = "2.0.0"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -93,6 +96,9 @@ class Cdist:
 | 
			
		|||
      os.mkdir(self.bin_dir)
 | 
			
		||||
      self.link_type_to_emulator()
 | 
			
		||||
 | 
			
		||||
      # List of type explorers transferred
 | 
			
		||||
      self.type_explorers_transferred = {}
 | 
			
		||||
 | 
			
		||||
      # Mostly static, but can be overwritten on user demand
 | 
			
		||||
      if initial_manifest:
 | 
			
		||||
         self.initial_manifest = initial_manifest
 | 
			
		||||
| 
						 | 
				
			
			@ -175,12 +181,15 @@ class Cdist:
 | 
			
		|||
            object_paths.extend(self.list_object_paths(starting_point = full_path))
 | 
			
		||||
 | 
			
		||||
         # Directory contains .cdist -> is an object
 | 
			
		||||
         if content == ".cdist":
 | 
			
		||||
         if content == DOT_CDIST:
 | 
			
		||||
            log.debug("Adding Object Path %s", starting_point)
 | 
			
		||||
            object_paths.append(starting_point)
 | 
			
		||||
 | 
			
		||||
      return object_paths
 | 
			
		||||
 | 
			
		||||
   def get_type_from_object(cdist_object):
 | 
			
		||||
      return cdist_object.split(os.sep)[0]
 | 
			
		||||
 | 
			
		||||
   def list_objects(self, starting_point = False):
 | 
			
		||||
      """Return list of existing objects"""
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -197,10 +206,20 @@ class Cdist:
 | 
			
		|||
 | 
			
		||||
      return objects
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
   def transfer_global_explorers(self):
 | 
			
		||||
      self.transfer_dir(GLOBAL_EXPLORER_DIR, REMOTE_GLOBAL_EXPLORER_DIR)
 | 
			
		||||
 | 
			
		||||
   def transfer_type_explorers(self, type):
 | 
			
		||||
      """Transfer explorers of a type, but only once"""
 | 
			
		||||
      if self.type_explorers_transferred[type] == 1
 | 
			
		||||
         return
 | 
			
		||||
      else
 | 
			
		||||
         self.type_explorers_transferred[type] = 1
 | 
			
		||||
 | 
			
		||||
      src = os.path.join(TYPE_DIR, type)
 | 
			
		||||
      dst = os.path.join(REMOTE_TYPE_DIR, type, "explorer")
 | 
			
		||||
      self.transfer_dir(src, dst)
 | 
			
		||||
 | 
			
		||||
   def link_type_to_emulator(self):
 | 
			
		||||
      """Link type names to cdist-type-emulator"""
 | 
			
		||||
      for type in list_types():
 | 
			
		||||
| 
						 | 
				
			
			@ -226,7 +245,11 @@ class Cdist:
 | 
			
		|||
         self.remote_run_or_fail(cmd, stdout=output_fd)
 | 
			
		||||
         output_fd.close()
 | 
			
		||||
 | 
			
		||||
   # def run_type_explorer(self):
 | 
			
		||||
   def run_type_explorer(self, object):
 | 
			
		||||
      """Run type specific explorers for objects"""
 | 
			
		||||
      # Based on bin/cdist-object-explorer-run
 | 
			
		||||
 | 
			
		||||
      # Transfering explorers for this type
 | 
			
		||||
 | 
			
		||||
   def init_deploy(self):
 | 
			
		||||
      log.info("Creating clean directory structure")
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue