Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

multinode-demo: Automatically add rsync:// prefix to URLs that need it #466

Merged
merged 1 commit into from
Jun 27, 2018
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 5 additions & 3 deletions multinode-demo/client.sh
Original file line number Diff line number Diff line change
@@ -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")
Expand All @@ -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 \
Expand Down
19 changes: 19 additions & 0 deletions multinode-demo/common.sh
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Copy link
Contributor

@rob-solana rob-solana Jun 27, 2018

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I prefer declare over local, same meaning, can be used outside functions


if [[ "$url" =~ ^.*:.*$ ]]; then
Copy link
Contributor

@rob-solana rob-solana Jun 27, 2018

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

can do this more simply, if you like: ${url} != ${url%:*}

[rwalker@anodyne .ssh]$ hi=foothere
[rwalker@anodyne .ssh]$ [[ $hi != ${hi%:*} ]] && echo colon!
[rwalker@anodyne .ssh]$ hi=foo:there
[rwalker@anodyne .ssh]$ [[ $hi != ${hi%:*} ]] && echo colon!
colon!

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think I prefer the existing form so imma keep it as is

# 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"
}
9 changes: 5 additions & 4 deletions multinode-demo/drone.sh
Original file line number Diff line number Diff line change
@@ -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")
Expand All @@ -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 \
Expand Down
35 changes: 28 additions & 7 deletions multinode-demo/validator.sh
Original file line number Diff line number Diff line change
Expand Up @@ -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
}

Expand All @@ -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

Expand All @@ -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
Expand Down