From 8e995d21ffa4d8384654a135cb2f047e28f0496a Mon Sep 17 00:00:00 2001 From: Yuriy Taraday Date: Thu, 20 Aug 2015 15:40:48 +0300 Subject: [PATCH] Add transfer_snapshots method Change-Id: Ib96f22ee69266b251701aeb194d4fe41ceb3c61d --- deploy/snapshot_fns | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/deploy/snapshot_fns b/deploy/snapshot_fns index fe7aa21e..8f4abc6e 100644 --- a/deploy/snapshot_fns +++ b/deploy/snapshot_fns @@ -113,3 +113,40 @@ discard_snapshots() { sudo rm -f "$STATE_PATH/$domain-$snapname" done } + +zfs_transfer() { + local volume=$1 snapname=$2 target=$3 + local dataset="vms/$volume-$snapname@$snapname" + sudo zfs send "$dataset" | pv -cN $domain -s "$(sudo zfs list -Hp "$dataset" | cut -f4)" | ssh $target sudo zfs recv -vd vms +} + +transfer_snapshots() { + local snapname=$1 target=$2 domain + shift; shift + if [ "$SNAP_METHOD" != "zfs" ]; then + echo "Can transfer only ZFS snapshots" + return 1 + fi + if ! type pv > /dev/null 2>&1; then + sudo apt-get install -y pv + fi + if ! ssh -o KbdInteractiveAuthentication=no $target true; then + echo "Please set up passwordless SSH to node $target" + return 1 + fi + if ! ssh $target sudo -nv 2> /dev/null; then + echo "Please set up passwordless sudo on node $target" + return 1 + fi + ssh $target sudo mkdir -p "$STATE_PATH" + for domain; do + ${SNAP_METHOD}_transfer $domain $snapname $target + case $domain in + compute-* ) + ${SNAP_METHOD}_transfer $domain-ceph $snapname $target + ;; + esac + local state_file="$STATE_PATH/$domain-$snapname" + sudo pv "$state_file" | ssh $target sudo "sh -c \"cat > \\\"$state_file\\\"\"" + done +}