forked from ungleich-public/cdist
		
	commit broken code
Signed-off-by: Nico Schottelius <nico@kr.ethz.ch>
This commit is contained in:
		
					parent
					
						
							
								20aafe62f5
							
						
					
				
			
			
				commit
				
					
						f21ce6a0db
					
				
			
		
					 1 changed files with 31 additions and 8 deletions
				
			
		
							
								
								
									
										35
									
								
								bin/cdist
									
										
									
									
									
								
							
							
						
						
									
										35
									
								
								bin/cdist
									
										
									
									
									
								
							| 
						 | 
				
			
			@ -98,6 +98,7 @@ class Cdist:
 | 
			
		|||
 | 
			
		||||
   def __init__(self, target_host, initial_manifest=False):
 | 
			
		||||
      self.target_host = target_host
 | 
			
		||||
      self.remote_prefix = ["ssh", "root@" + self.target_host]
 | 
			
		||||
 | 
			
		||||
      # log.info("foobar")
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -139,26 +140,47 @@ class Cdist:
 | 
			
		|||
      log.error(*args)
 | 
			
		||||
      sys.exit(1)
 | 
			
		||||
 | 
			
		||||
   def remote_cat(filename):
 | 
			
		||||
      cmd = self.remote_prefix
 | 
			
		||||
      cmd.append("cat")
 | 
			
		||||
      cmd.append(filename)
 | 
			
		||||
      try:
 | 
			
		||||
         subprocess.call(cmd)
 | 
			
		||||
      except subprocess.CalledProcessError:
 | 
			
		||||
         log.error("Remote cat failed")
 | 
			
		||||
 | 
			
		||||
   def shell_run_or_debug_fail(self, script, *args, **kargs):
 | 
			
		||||
      # Manually execute /bin/sh, because sh -e does what we want
 | 
			
		||||
      # and sh -c -e does not exit if /bin/false called
 | 
			
		||||
      args[0].insert(0,"/bin/sh")
 | 
			
		||||
      args[0].insert(1,"-e")
 | 
			
		||||
      log.debug("Shell exec: " + " ".join(*args))
 | 
			
		||||
      args[0][:0] = [ "/bin/sh", "-e" ]
 | 
			
		||||
 | 
			
		||||
      if "remote" in kargs:
 | 
			
		||||
         log.debug("Remote found")
 | 
			
		||||
         if kargs["remote"]:
 | 
			
		||||
            args[0][:0] = self.remote_prefix
 | 
			
		||||
            remote = true
 | 
			
		||||
 | 
			
		||||
         del kargs["remote"]
 | 
			
		||||
 | 
			
		||||
      log.debug("Shell exec: " + " ".join(*args))
 | 
			
		||||
      try:
 | 
			
		||||
         subprocess.check_call(*args, **kargs)
 | 
			
		||||
      except subprocess.CalledProcessError:
 | 
			
		||||
         log.error("Code that raised the error:\n")
 | 
			
		||||
         if remote:
 | 
			
		||||
            remote_cat(script)
 | 
			
		||||
         else:
 | 
			
		||||
            script_fd = open(script)
 | 
			
		||||
         log.error("Code that raised the error:\n" + script_fd.read())
 | 
			
		||||
            print(script_fd.read())
 | 
			
		||||
            script_fd.close()
 | 
			
		||||
 | 
			
		||||
         self.exit_error("Non-Zero exit code exit of " + " ".join(*args))
 | 
			
		||||
 | 
			
		||||
   def run_or_fail(self, *args, **kargs):
 | 
			
		||||
      if "remote" in kargs:
 | 
			
		||||
         log.debug("Remote found")
 | 
			
		||||
         if kargs["remote"]:
 | 
			
		||||
            args[0][:0] = ["ssh", "root@" + self.target_host]
 | 
			
		||||
            args[0][:0] = self.remote_prefix
 | 
			
		||||
 | 
			
		||||
         del kargs["remote"]
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -166,7 +188,7 @@ class Cdist:
 | 
			
		|||
      try:
 | 
			
		||||
         subprocess.check_call(*args, **kargs)
 | 
			
		||||
      except subprocess.CalledProcessError:
 | 
			
		||||
         self.exit_error("Command failed: " + " ".join(*newargs))
 | 
			
		||||
         self.exit_error("Command failed: " + " ".join(*args))
 | 
			
		||||
 | 
			
		||||
   def remove_remote_dir(self, destination):
 | 
			
		||||
      self.run_or_fail(["rm", "-rf",  destination], remote=True)
 | 
			
		||||
| 
						 | 
				
			
			@ -322,6 +344,7 @@ class Cdist:
 | 
			
		|||
 | 
			
		||||
      explorers = self.list_type_explorers(type)
 | 
			
		||||
      for explorer in explorers:
 | 
			
		||||
         # THIS IS A BUG, because remote_cmd is NOT a copy
 | 
			
		||||
         remote_cmd = cmd
 | 
			
		||||
         remote_cmd.append(os.path.join(self.remote_type_explorer_dir(type), explorer))
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue