fabric-samples/test-network-nano-bash/network.sh
James Taylor 0db64487e5 Update nano test network
Fix regression in network.sh and update peer scripts to allow
chaincodeListenAddress and chaincodeAddress to be overridden if
required

Also updates the nano test network readme to describe the new
environment variables for the k8s builder

Fixes #1198

Signed-off-by: James Taylor <jamest@uk.ibm.com>
2024-04-29 10:42:41 -04:00

167 lines
3.5 KiB
Bash
Executable file

#!/usr/bin/env sh
#
# SPDX-License-Identifier: Apache-2.0
#
set -eu
# Print the usage message
printHelp() {
USAGE="${1:-}"
if [ "$USAGE" = "start" ]; then
echo "Usage: "
echo " network.sh start [Flags]"
echo
echo " Starts the test network"
echo
echo " Flags:"
echo " -d <delay> - CLI delays for a certain number of seconds (defaults to 3)"
echo " -h - Print this message"
elif [ "$USAGE" = "clean" ]; then
echo "Usage: "
echo " network.sh clean [Flags]"
echo
echo " Cleans the test network configuration and data files"
echo
echo " Flags:"
echo " -h - Print this message"
else
echo "Usage: "
echo " network.sh <Mode> [Flags]"
echo " Modes:"
echo " start - Starts the test network"
echo " clean - Cleans the test network configuration and data files"
echo
echo " Flags:"
echo " -h - Print this message"
echo
echo " Examples:"
echo " network.sh start"
fi
}
networkStop() {
echo "Stopping Fabric network..."
trap " " 0 1 2 3 15 && kill -- -$$
wait
echo "Fabric network stopped."
}
networkStart() {
: "${CLI_DELAY:=5}"
# shellcheck disable=SC2064
trap networkStop 0 1 2 3 15
if [ -d "${PWD}"/channel-artifacts ] && [ -d "${PWD}"/crypto-config ]; then
echo "Using existing artifacts..."
CREATE_CHANNEL=false
else
echo "Generating artifacts..."
./generate_artifacts.sh "${ORDERER_TYPE}"
CREATE_CHANNEL=true
fi
echo "Creating logs directory..."
mkdir -p "${PWD}"/logs
echo "Starting orderers..."
./orderer1.sh "${ORDERER_TYPE}" > ./logs/orderer1.log 2>&1 &
./orderer2.sh "${ORDERER_TYPE}" > ./logs/orderer2.log 2>&1 &
./orderer3.sh "${ORDERER_TYPE}" > ./logs/orderer3.log 2>&1 &
#start one additional orderer for BFT consensus
if [ "$ORDERER_TYPE" = "BFT" ]; then
./orderer4.sh "${ORDERER_TYPE}" > ./logs/orderer4.log 2>&1 &
fi
echo "Waiting ${CLI_DELAY}s..."
sleep ${CLI_DELAY}
echo "Starting peers..."
./peer1.sh > ./logs/peer1.log 2>&1 &
./peer2.sh > ./logs/peer2.log 2>&1 &
./peer3.sh > ./logs/peer3.log 2>&1 &
./peer4.sh > ./logs/peer4.log 2>&1 &
echo "Waiting ${CLI_DELAY}s..."
sleep ${CLI_DELAY}
if [ "${CREATE_CHANNEL}" = "true" ]; then
echo "Joining orderers to channel..."
if [ "$ORDERER_TYPE" = "BFT" ]; then
./join_orderers.sh BFT
else
./join_orderers.sh
fi
echo "Creating channel (peer1)..."
. ./peer1admin.sh && ./join_channel.sh
echo "Joining channel (peer2)..."
. ./peer2admin.sh && ./join_channel.sh
echo "Joining channel (peer3)..."
. ./peer3admin.sh && ./join_channel.sh
echo "Joining channel (peer4)..."
. ./peer4admin.sh && ./join_channel.sh
fi
echo "Fabric network running. Use Ctrl-C to stop."
wait
}
networkClean() {
echo "Removing directories: channel-artifacts crypto-config data logs"
rm -r "${PWD}"/channel-artifacts || true
rm -r "${PWD}"/crypto-config || true
rm -r "${PWD}"/data || true
rm -r "${PWD}"/logs || true
}
# Parse commandline args
## Parse mode
if [ $# -lt 1 ] ; then
printHelp
exit 0
else
MODE=$1
shift
fi
ORDERER_TYPE="etcdraft"
# parse flags
while [ $# -ge 1 ] ; do
key="$1"
case $key in
-d )
CLI_DELAY="$2"
shift
;;
-o )
ORDERER_TYPE="$2"
shift
;;
-h )
printHelp "$MODE"
exit 0
;;
* )
echo "Unknown flag: $key"
printHelp
exit 1
;;
esac
shift
done
if [ "$MODE" = "start" ]; then
networkStart
elif [ "$MODE" = "clean" ]; then
networkClean
else
printHelp
exit 1
fi