diff --git a/bin/cdist-exec-transfer b/bin/cdist-exec-transfer new file mode 100755 index 00000000..bf738355 --- /dev/null +++ b/bin/cdist-exec-transfer @@ -0,0 +1,91 @@ +#!/bin/sh +# +# 2010-2011 Nico Schottelius (nico-cdist at schottelius.org) +# +# This file is part of cdist. +# +# cdist is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# cdist is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with cdist. If not, see . +# +# +# FIXME: This script is ugly, should be either seperated into smaller ones, +# but definitely be cleaned up - PROOF OF CONCEPT CODE +# + +. cdist-config + +if [ $# -ne 2 ]; then + __cdist_usage " " +fi + +export __cdist_target_host="$1"; shift +export __cdist_output_dir="$1"; shift + +set -e + +# create basedir +ssh root@${__cdist_target_host} "mkdir -p \"${__cdist_remote_base_dir}\" \ + \"${__cdist_remote_cache_dir}\" \"${__cdist_remote_cache_bin}\" \ + \"${__cdist_remote_cache_explorer}\"" + +# Transfer all explorers to the target dir - must be one level above, so +# coyping it multiple times works: a -> remote:/base/ = remote:/base/a vs. +# a -> remote:/base/a = remote:/base/a/a (second copy) + +# FIXME: enable -q as soon as the code is cleaned up +scp -r "${__cdist_explorer_dir}" \ + "root@${__cdist_target_host}:${__cdist_remote_base_dir}" + +# Transfer cdist binaries - FIXME: should transfer all (needed?) of them! +scp "$(which cdist-explorer-coordinator)" "$(which cdist-config)" \ + "root@${__cdist_target_host}:${__cdist_remote_cache_bin}" + +# Execute explorer coordinator, which will save results on target +ssh root@${__cdist_target_host} \ + "PATH=\"${__cdist_remote_cache_bin}:\$PATH\" + \"${__cdist_remote_cache_bin}/cdist-explorer-coordinator\" \ + \"${__cdist_remote_explorer_dir}\" \"${__cdist_remote_cache_explorer}\"" + +# Ensure local destination directory exists +mkdir -p "$__cdist_output_dir" + +# FIXME: enable -q as soon as the code is cleaned up +# Transfer back all results - FIXME: Add 2 level cache, so old version is kept until success +scp -r "root@${__cdist_target_host}:${__cdist_remote_cache_explorer}/*" \ + "$__cdist_output_dir" + + +exit 0 + +# -------------------------------------------------------------------------------- +# old idea with shell scripts (also sexy) +# Keep until above version successfully works + + +cd "${__cdist_explorer_dir}" +ls > "${__cdist_tmp_file}" + +# first load all functions +while read funcfull; do + cat "${funcfull}" +done < "${__cdist_tmp_file}" + +# then execute functions +while read funcfull; do + sh="${funcfull##*/}" + func="${sh%.sh}" + var="__$func" + + echo "$var=\"\$($func)\"" + echo "echo $var=\\\"\$$var\\\"" +done < "${CDIST_TMP}"