Automatically add rsync:// prefix to URLs that need it

This commit is contained in:
Michael Vines 2018-06-26 16:46:17 -07:00 committed by Grimes
parent 5b5df49e6c
commit 5cd1fb486f
4 changed files with 57 additions and 14 deletions

View File

@ -1,6 +1,6 @@
#!/bin/bash
#
# usage: $0 <network path to solana repo on leader machine> <number of nodes in the network>"
# usage: $0 <rsync network path to solana repo on leader machine> <number of nodes in the network>"
#
here=$(dirname "$0")
@ -11,10 +11,12 @@ SOLANA_CONFIG_DIR=config-client-demo
leader=${1:-${here}/..} # Default to local solana repo
count=${2:-1}
rsync_leader_url=$(rsync_url "$leader")
set -ex
mkdir -p $SOLANA_CONFIG_DIR
rsync -vz "$leader"/config/leader.json $SOLANA_CONFIG_DIR/
rsync -vz "$leader"/config/mint-demo.json $SOLANA_CONFIG_DIR/
rsync -vPz "$rsync_leader_url"/config/leader.json $SOLANA_CONFIG_DIR/
rsync -vPz "$rsync_leader_url"/config/mint-demo.json $SOLANA_CONFIG_DIR/
# shellcheck disable=SC2086 # $solana_client_demo should not be quoted
exec $solana_client_demo \

View File

@ -47,3 +47,22 @@ export RUST_BACKTRACE=1
[[ $(uname) = Linux ]] && (set -x; sudo sysctl -w net.core.rmem_max=26214400 1>/dev/null 2>/dev/null)
SOLANA_CONFIG_DIR=${SNAP_DATA:-$PWD}/config
rsync_url() { # adds the 'rsync://` prefix to URLs that need it
local url="$1"
if [[ "$url" =~ ^.*:.*$ ]]; then
# assume remote-shell transport when colon is present, use $url unmodified
echo "$url"
return
fi
if [[ -d "$url" ]]; then
# assume local directory if $url is a valid directory, use $url unmodified
echo "$url"
return
fi
# Default to rsync:// URL
echo "rsync://$url"
}

View File

@ -1,6 +1,6 @@
#!/bin/bash
#
# usage: $0 <network path to solana repo on leader machine>
# usage: $0 <rsync network path to solana repo on leader machine>
#
here=$(dirname "$0")
@ -19,15 +19,16 @@ if [[ -d "$SNAP" ]]; then
# Assume drone is running on the same node as the leader by default
leader_address="localhost"
fi
leader=rsync://"$leader_address"
leader="$leader_address"
else
leader=${1:-${here}/..} # Default to local solana repo
fi
rsync_leader_url=$(rsync_url "$leader")
set -ex
mkdir -p $SOLANA_CONFIG_DIR
rsync -vz "$leader"/config/leader.json $SOLANA_CONFIG_DIR/
rsync -vz "$leader"/config/mint-demo.json $SOLANA_CONFIG_DIR/
rsync -vPz "$rsync_leader_url"/config/leader.json $SOLANA_CONFIG_DIR/
rsync -vPz "$rsync_leader_url"/config/mint-demo.json $SOLANA_CONFIG_DIR/
# shellcheck disable=SC2086 # $solana_drone should not be quoted
exec $solana_drone \

View File

@ -4,7 +4,11 @@ here=$(dirname "$0")
source "$here"/common.sh
usage() {
echo "usage: $0 [network path to solana repo on leader machine] [network ip address of leader]"
if [[ -n "$1" ]]; then
echo "$*"
echo
fi
echo "usage: $0 [rsync network path to solana repo on leader machine] [network ip address of leader]"
exit 1
}
@ -20,13 +24,28 @@ if [[ -d "$SNAP" ]]; then
# Select leader from the Snap configuration
leader_address="$(snapctl get leader-address)"
if [[ -z "$leader_address" ]]; then
# Assume drone is running on the same node as the leader by default
leader_address="localhost"
# Assume public testnet by default
leader_address=35.230.65.68 # testnet.solana.com
fi
leader=rsync://"$leader_address"
leader="$leader_address"
else
leader=${1:-${here}/..} # Default to local solana repo
leader_address=${2:-127.0.0.1} # Default to local leader
if [[ -n "$3" ]]; then
usage
fi
if [[ -z "$1" ]]; then
leader=${1:-${here}/..} # Default to local solana repo
leader_address=${2:-127.0.0.1} # Default to local leader
elif [[ -z "$2" ]]; then
leader="$1"
leader_address=$(dig +short "$1" | head -n1)
if [[ -z "$leader_address" ]]; then
usage "Error: unable to resolve IP address for $leader"
fi
else
leader="$1"
leader_address="$2"
fi
fi
leader_port=8001
@ -42,10 +61,12 @@ fi
exit 1
}
rsync_leader_url=$(rsync_url "$leader")
set -ex
SOLANA_LEADER_CONFIG_DIR="$SOLANA_CONFIG_DIR"/leader-config
rm -rf "$SOLANA_LEADER_CONFIG_DIR"
rsync -vPrz "${leader}"/config/ "$SOLANA_LEADER_CONFIG_DIR"
rsync -vPrz "$rsync_leader_url"/config/ "$SOLANA_LEADER_CONFIG_DIR"
ls -lh "$SOLANA_LEADER_CONFIG_DIR"
# shellcheck disable=SC2086 # $program should not be quoted