Browse Source

no special case for rsync in core. handle implementation specific details in remote-copy script instead

Signed-off-by: Steven Armstrong <steven@icarus.ethz.ch>
2.0
Steven Armstrong 11 years ago
parent
commit
5edf39f111
  1. 7
      lib/cdist/exec/remote.py
  2. 19
      other/examples/remote/rsync/copy

7
lib/cdist/exec/remote.py vendored

@ -77,12 +77,7 @@ class Remote(object):
self.log.debug("Remote transfer: %s -> %s", source, destination)
self.rmdir(destination)
command = self._copy.split()
# support rsync by appending a "/" to the source if it's a directory
if os.path.isdir(source):
command.extend(["-r", source + "/", self.target_host + ":" + destination])
else:
command.extend(["-r", source, self.target_host + ":" + destination])
command.extend(["-r", source, self.target_host + ":" + destination])
self._run_command(command)
def run_script(self, script, env=None, return_output=False):

19
other/examples/remote/rsync/copy

@ -24,7 +24,24 @@
# at /etc/passwd~cdist.
#
# Usage:
# __remote_copy="/path/to/this/script" cdist config target_host
# cdist config --remote-copy /path/to/this/script target_host
#
# second last argument is the source
source_index=$(($#-1))
index=0
for arg in $@; do
if [ $index -eq 0 ]; then
# reset $@
set --
fi
index=$((index+=1))
if [ $index -eq $source_index -a -d "$arg" ]; then
echo "directory: $arg" | logger
# if the source is a directory, it has to end with "/" for rsync to do the right thing
arg="${arg%/}/"
fi
set -- "$@" "$arg"
done
rsync --backup --suffix=~cdist -e 'ssh -o User=root' $@

Loading…
Cancel
Save