#!/bin/bash # # Copyright IBM Corp. All Rights Reserved. # # SPDX-License-Identifier: Apache-2.0 # # This script is designed to be run in the cli container as the # second step of the EYFN tutorial. It joins the org3 peers to the # channel previously setup in the BYFN tutorial and install the # chaincode as version 2.0 on peer0.org3. # CHANNEL_NAME="$1" DELAY="$2" TIMEOUT="$3" VERBOSE="$4" : ${CHANNEL_NAME:="mychannel"} : ${DELAY:="3"} : ${TIMEOUT:="10"} : ${VERBOSE:="false"} COUNTER=1 MAX_RETRY=5 # import environment variables # test network home var targets to test network folder # the reason we use a var here is considering with org3 specific folder # when invoking this for org3 as test-network/scripts/org3-scripts # the value is changed from default as $PWD(test-network) # to .. as relative path to make the import works export test_network_home=.. . ${test_network_home}/scripts/envVar.sh # joinChannel ORG joinChannel() { ORG=$1 setGlobals $ORG local rc=1 local COUNTER=1 ## Sometimes Join takes time, hence retry while [ $rc -ne 0 -a $COUNTER -lt $MAX_RETRY ] ; do sleep $DELAY set -x peer channel join -b $BLOCKFILE >&log.txt res=$? { set +x; } 2>/dev/null let rc=$res COUNTER=$(expr $COUNTER + 1) done cat log.txt verifyResult $res "After $MAX_RETRY attempts, peer0.org${ORG} has failed to join channel '$CHANNEL_NAME' " } setAnchorPeer() { ORG=$1 ${test_network_home}/scripts/setAnchorPeer.sh $ORG $CHANNEL_NAME } setGlobalsCLI 3 BLOCKFILE="${CHANNEL_NAME}.block" echo "Fetching channel config block from orderer..." set -x peer channel fetch 0 $BLOCKFILE -o localhost:7050 --ordererTLSHostnameOverride orderer.example.com -c $CHANNEL_NAME --tls --cafile "$ORDERER_CA" >&log.txt res=$? { set +x; } 2>/dev/null cat log.txt verifyResult $res "Fetching config block from orderer has failed" infoln "Joining org3 peer to the channel..." joinChannel 3 infoln "Setting anchor peer for org3..." setAnchorPeer 3 successln "Channel '$CHANNEL_NAME' joined" successln "Org3 peer successfully added to network"