rebuild the command string
Signed-off-by: Nico Schottelius <nico@brief.schottelius.org>
This commit is contained in:
		
					parent
					
						
							
								ab48a72ce1
							
						
					
				
			
			
				commit
				
					
						f031a40746
					
				
			
		
					 1 changed files with 19 additions and 30 deletions
				
			
		| 
						 | 
				
			
			@ -28,17 +28,6 @@ import logging
 | 
			
		|||
 | 
			
		||||
import cdist
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class RemoteScriptError(cdist.Error):
 | 
			
		||||
    def __init__(self, script, command, script_content):
 | 
			
		||||
        self.script = script
 | 
			
		||||
        self.command = command
 | 
			
		||||
        self.script_content = script_content
 | 
			
		||||
 | 
			
		||||
    def __str__(self):
 | 
			
		||||
        plain_command = " ".join(self.command)
 | 
			
		||||
        return "Remote script execution failed: %s" % plain_command
 | 
			
		||||
 | 
			
		||||
class DecodeError(cdist.Error):
 | 
			
		||||
    def __init__(self, command):
 | 
			
		||||
        self.command = command
 | 
			
		||||
| 
						 | 
				
			
			@ -91,6 +80,17 @@ class Remote(object):
 | 
			
		|||
        command.extend(["-r", source, self.target_host + ":" + destination])
 | 
			
		||||
        self._run_command(command)
 | 
			
		||||
 | 
			
		||||
    def run_script(self, script, env=None, return_output=False):
 | 
			
		||||
        """Run the given script with the given environment on the remote side.
 | 
			
		||||
        Return the output as a string.
 | 
			
		||||
 | 
			
		||||
        """
 | 
			
		||||
 | 
			
		||||
        command = ["/bin/sh", "-e"]
 | 
			
		||||
        command.append(script)
 | 
			
		||||
 | 
			
		||||
        return self.run(command, env, return_output)
 | 
			
		||||
 | 
			
		||||
    def run(self, command, env=None, return_output=False):
 | 
			
		||||
        """Run the given command with the given environment on the remote side.
 | 
			
		||||
        Return the output as a string.
 | 
			
		||||
| 
						 | 
				
			
			@ -99,7 +99,15 @@ class Remote(object):
 | 
			
		|||
        # prefix given command with remote_exec
 | 
			
		||||
        cmd = self._exec.split()
 | 
			
		||||
        cmd.append(self.target_host)
 | 
			
		||||
 | 
			
		||||
        # can't pass environment to remote side, so prepend command with
 | 
			
		||||
        # variable declarations
 | 
			
		||||
        if env:
 | 
			
		||||
            remote_env = ["%s=%s" % item for item in env.items()]
 | 
			
		||||
            cmd.append(remote_env)
 | 
			
		||||
 | 
			
		||||
        cmd.extend(command)
 | 
			
		||||
 | 
			
		||||
        return self._run_command(cmd, env=env, return_output=return_output)
 | 
			
		||||
 | 
			
		||||
    def _run_command(self, command, env=None, return_output=False):
 | 
			
		||||
| 
						 | 
				
			
			@ -113,14 +121,6 @@ class Remote(object):
 | 
			
		|||
        os_environ = os.environ.copy()
 | 
			
		||||
        os_environ['__target_host'] = self.target_host
 | 
			
		||||
 | 
			
		||||
        # can't pass environment to remote side, so prepend command with
 | 
			
		||||
        # variable declarations
 | 
			
		||||
        if env:
 | 
			
		||||
            cmd = ["%s=%s" % item for item in env.items()]
 | 
			
		||||
            cmd.extend(command)
 | 
			
		||||
        else:
 | 
			
		||||
            cmd = command
 | 
			
		||||
 | 
			
		||||
        self.log.debug("Remote run: %s", command)
 | 
			
		||||
        try:
 | 
			
		||||
            if return_output:
 | 
			
		||||
| 
						 | 
				
			
			@ -133,14 +133,3 @@ class Remote(object):
 | 
			
		|||
            raise cdist.Error(" ".join(*args) + ": " + error.args[1])
 | 
			
		||||
        except UnicodeDecodeError:
 | 
			
		||||
            raise DecodeError(command)
 | 
			
		||||
 | 
			
		||||
    def run_script(self, script, env=None, return_output=False):
 | 
			
		||||
        """Run the given script with the given environment on the remote side.
 | 
			
		||||
        Return the output as a string.
 | 
			
		||||
 | 
			
		||||
        """
 | 
			
		||||
 | 
			
		||||
        command = ["/bin/sh", "-e"]
 | 
			
		||||
        command.append(script)
 | 
			
		||||
 | 
			
		||||
        return self.run(command, env, return_output)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue