forked from ungleich-public/cdist
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…
Reference in a new issue