solana/multinode-demo/validator.sh

55 lines
1.5 KiB
Bash
Raw Normal View History

#!/bin/bash
2018-06-23 11:52:12 -07:00
here=$(dirname "$0")
2018-06-24 10:10:55 -07:00
# shellcheck source=multinode-demo/common.sh
source "$here"/common.sh
2018-06-23 11:52:12 -07:00
2018-06-24 10:10:55 -07:00
usage() {
echo "usage: $0 [network path to solana repo on leader machine] [network ip address of leader]"
2018-05-27 18:19:07 -07:00
exit 1
}
2018-05-27 18:19:07 -07:00
2018-06-24 10:10:55 -07:00
if [[ "$1" = "-h" || -n "$3" ]]; then
usage
fi
if [[ -d "$SNAP" ]]; then
# Exit if mode is not yet configured
# (typically the case after the Snap is first installed)
[[ -n "$(snapctl get mode)" ]] || exit 0
# 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"
fi
leader=rsync://"$leader_address"
else
leader=${1:-${here}/..} # Default to local solana repo
leader_address=${2:-127.0.0.1} # Default to local leader
fi
leader_port=8001
if [[ -n "$SOLANA_CUDA" ]]; then
program="$solana_fullnode_cuda"
else
program="$solana_fullnode"
fi
[[ -f "$SOLANA_CONFIG_DIR"/validator.json ]] || {
echo "$SOLANA_CONFIG_DIR/validator.json not found, run ${here}/setup.sh first"
exit 1
}
2018-05-27 18:19:07 -07:00
2018-06-24 10:10:55 -07:00
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"
ls -lh "$SOLANA_LEADER_CONFIG_DIR"
2018-06-24 10:10:55 -07:00
# shellcheck disable=SC2086 # $program should not be quoted
exec $program \
-l "$SOLANA_CONFIG_DIR"/validator.json -t "$leader_address:$leader_port" \
< "$SOLANA_LEADER_CONFIG_DIR"/genesis.log "$SOLANA_LEADER_CONFIG_DIR"/tx-*.log