Add option to skip setup during cluster start

This commit is contained in:
Michael Vines 2018-12-09 17:28:18 -08:00
parent ad05f64b13
commit b2ddac610c
3 changed files with 59 additions and 14 deletions

View File

@ -32,6 +32,8 @@ Operate a configured testnet
(vX.Y.Z) (vX.Y.Z)
-f [cargoFeatures] - List of |cargo --feaures=| to activate -f [cargoFeatures] - List of |cargo --feaures=| to activate
(ignored if -s or -S is specified) (ignored if -s or -S is specified)
-r - Reuse existing node/ledger configuration from a
previous |start| (ie, don't run ./mulitnode-demo/setup.sh).
Note: if RUST_LOG is set in the environment it will be propogated into the Note: if RUST_LOG is set in the environment it will be propogated into the
network nodes. network nodes.
@ -54,12 +56,13 @@ snapFilename=
deployMethod=local deployMethod=local
sanityExtraArgs= sanityExtraArgs=
cargoFeatures= cargoFeatures=
skipSetup=false
command=$1 command=$1
[[ -n $command ]] || usage [[ -n $command ]] || usage
shift shift
while getopts "h?S:s:T:t:o:f:" opt; do while getopts "h?S:s:T:t:o:f:r" opt; do
case $opt in case $opt in
h | \?) h | \?)
usage usage
@ -99,6 +102,9 @@ while getopts "h?S:s:T:t:o:f:" opt; do
f) f)
cargoFeatures=$OPTARG cargoFeatures=$OPTARG
;; ;;
r)
skipSetup=true
;;
o) o)
case $OPTARG in case $OPTARG in
noLedgerVerify|noValidatorSanity|rejectExtraNodes) noLedgerVerify|noValidatorSanity|rejectExtraNodes)
@ -190,6 +196,7 @@ startBootstrapLeader() {
$entrypointIp \ $entrypointIp \
${#fullnodeIpList[@]} \ ${#fullnodeIpList[@]} \
\"$RUST_LOG\" \ \"$RUST_LOG\" \
$skipSetup \
" "
) >> "$logFile" 2>&1 || { ) >> "$logFile" 2>&1 || {
cat "$logFile" cat "$logFile"
@ -215,6 +222,7 @@ startNode() {
$entrypointIp \ $entrypointIp \
${#fullnodeIpList[@]} \ ${#fullnodeIpList[@]} \
\"$RUST_LOG\" \ \"$RUST_LOG\" \
$skipSetup \
" "
) >> "$logFile" 2>&1 & ) >> "$logFile" 2>&1 &
declare pid=$! declare pid=$!
@ -403,7 +411,6 @@ stopNode() {
set -x set -x
if snap list solana; then if snap list solana; then
sudo snap set solana mode= sudo snap set solana mode=
sudo snap remove solana
fi fi
! tmux list-sessions || tmux kill-session ! tmux list-sessions || tmux kill-session
for pattern in solana- remote- oom-monitor net-stats; do for pattern in solana- remote- oom-monitor net-stats; do

View File

@ -10,6 +10,7 @@ publicNetwork="$3"
entrypointIp="$4" entrypointIp="$4"
numNodes="$5" numNodes="$5"
RUST_LOG="$6" RUST_LOG="$6"
skipSetup="$7"
set +x set +x
export RUST_LOG=${RUST_LOG:-solana=warn} # if RUST_LOG is unset, default to warn export RUST_LOG=${RUST_LOG:-solana=warn} # if RUST_LOG is unset, default to warn
@ -23,6 +24,7 @@ missing() {
[[ -n $publicNetwork ]] || missing publicNetwork [[ -n $publicNetwork ]] || missing publicNetwork
[[ -n $entrypointIp ]] || missing entrypointIp [[ -n $entrypointIp ]] || missing entrypointIp
[[ -n $numNodes ]] || missing numNodes [[ -n $numNodes ]] || missing numNodes
[[ -n $skipSetup ]] || missing skipSetup
cat > deployConfig <<EOF cat > deployConfig <<EOF
deployMethod="$deployMethod" deployMethod="$deployMethod"
@ -42,16 +44,45 @@ fi
case $deployMethod in case $deployMethod in
snap) snap)
SECONDS=0 SECONDS=0
if [[ $skipSetup = true ]]; then
for configDir in /var/snap/solana/current/config{,-local}; do
if [[ ! -d $configDir ]]; then
echo Error: not a directory: $configDir
exit 1
fi
done
(
set -x
sudo rm -rf /saved-node-config
sudo mkdir /saved-node-config
sudo mv /var/snap/solana/current/config{,-local} /saved-node-config
)
fi
[[ $nodeType = bootstrap-leader ]] || [[ $nodeType = bootstrap-leader ]] ||
net/scripts/rsync-retry.sh -vPrc "$entrypointIp:~/solana/solana.snap" . net/scripts/rsync-retry.sh -vPrc "$entrypointIp:~/solana/solana.snap" .
if snap list solana; then
sudo snap remove solana
fi
sudo snap install solana.snap --devmode --dangerous sudo snap install solana.snap --devmode --dangerous
if [[ $skipSetup = true ]]; then
(
set -x
sudo rm -rf /var/snap/solana/current/config{,-local}
sudo mv /saved-node-config/* /var/snap/solana/current/
sudo rm -rf /saved-node-config
)
fi
# shellcheck disable=SC2089 # shellcheck disable=SC2089
commonNodeConfig="\ commonNodeConfig="\
entrypoint-ip=\"$entrypointIp\" \ entrypoint-ip=\"$entrypointIp\" \
metrics-config=\"$SOLANA_METRICS_CONFIG\" \ metrics-config=\"$SOLANA_METRICS_CONFIG\" \
rust-log=\"$RUST_LOG\" \ rust-log=\"$RUST_LOG\" \
setup-args=\"$setupArgs\" \ setup-args=\"$setupArgs\" \
skip-setup=$skipSetup \
" "
if [[ -e /dev/nvidia0 ]]; then if [[ -e /dev/nvidia0 ]]; then
@ -90,11 +121,11 @@ local|tar)
export USE_INSTALL=1 export USE_INSTALL=1
export RUST_LOG export RUST_LOG
# Setup `/var/snap/solana/current/config` symlink so rsyncing the genesis # Setup `/var/snap/solana/current` symlink so rsyncing the genesis
# ledger works (reference: `net/scripts/install-rsync.sh`) # ledger works (reference: `net/scripts/install-rsync.sh`)
sudo rm -rf /var/snap/solana/current/config sudo rm -rf /var/snap/solana/current
sudo mkdir -p /var/snap/solana/current/ sudo mkdir -p /var/snap/solana
sudo ln -sT /home/solana/solana/config /var/snap/solana/current/config sudo ln -sT /home/solana/solana /var/snap/solana/current
./fetch-perf-libs.sh ./fetch-perf-libs.sh
# shellcheck source=/dev/null # shellcheck source=/dev/null
@ -109,7 +140,9 @@ local|tar)
echo Selecting solana-fullnode-cuda echo Selecting solana-fullnode-cuda
export SOLANA_CUDA=1 export SOLANA_CUDA=1
fi fi
./multinode-demo/setup.sh -t bootstrap-leader $setupArgs if [[ $skipSetup != true ]]; then
./multinode-demo/setup.sh -t bootstrap-leader $setupArgs
fi
./multinode-demo/drone.sh > drone.log 2>&1 & ./multinode-demo/drone.sh > drone.log 2>&1 &
./multinode-demo/bootstrap-leader.sh > bootstrap-leader.log 2>&1 & ./multinode-demo/bootstrap-leader.sh > bootstrap-leader.log 2>&1 &
ln -sTf bootstrap-leader.log fullnode.log ln -sTf bootstrap-leader.log fullnode.log
@ -122,7 +155,9 @@ local|tar)
export SOLANA_CUDA=1 export SOLANA_CUDA=1
fi fi
./multinode-demo/setup.sh -t fullnode $setupArgs if [[ $skipSetup != true ]]; then
./multinode-demo/setup.sh -t fullnode $setupArgs
fi
./multinode-demo/fullnode.sh "$entrypointIp":~/solana "$entrypointIp:8001" > fullnode.log 2>&1 & ./multinode-demo/fullnode.sh "$entrypointIp":~/solana "$entrypointIp:8001" > fullnode.log 2>&1 &
;; ;;
*) *)

15
snap/hooks/configure vendored
View File

@ -12,23 +12,26 @@ if [[ -z "$mode" ]]; then
exit 0 exit 0
fi fi
num_tokens="$(snapctl get num-tokens)" skipSetup="$(snapctl get skip-setup)"
num_tokens="${num_tokens:+-n $num_tokens}" if [[ "$skipSetup" != true ]]; then
numTokens="$(snapctl get num-tokens)"
numTokens="${numTokens:+-n $numTokens}"
setup_args="$(snapctl get setup-args)" setupArgs="$(snapctl get setup-args)"
"$SNAP"/multinode-demo/setup.sh $numTokens -p $setupArgs
else
echo Setup skipped
fi
case $mode in case $mode in
bootstrap-leader+drone) bootstrap-leader+drone)
"$SNAP"/multinode-demo/setup.sh -t bootstrap-leader $num_tokens -p $setup_args
snapctl start --enable solana.daemon-drone snapctl start --enable solana.daemon-drone
snapctl start --enable solana.daemon-bootstrap-leader snapctl start --enable solana.daemon-bootstrap-leader
;; ;;
bootstrap-leader) bootstrap-leader)
"$SNAP"/multinode-demo/setup.sh -t bootstrap-leader $num_tokens -p $setup_args
snapctl start --enable solana.daemon-bootstrap-leader snapctl start --enable solana.daemon-bootstrap-leader
;; ;;
fullnode) fullnode)
"$SNAP"/multinode-demo/setup.sh -t fullnode -p $setup_args
snapctl start --enable solana.daemon-fullnode snapctl start --enable solana.daemon-fullnode
;; ;;
*) *)