From 96a015da88a3422c75a0576e3657a3ebff43e742 Mon Sep 17 00:00:00 2001 From: Kurt Seifried Date: Tue, 16 Mar 2021 19:55:32 -0600 Subject: [PATCH] ORG 5 and 6 scripts --- .../org4-scripts/updateChannelConfig.sh | 2 +- .../scripts/org5-scripts/joinChannel.sh | 71 +++++++++++++++++++ .../org5-scripts/updateChannelConfig.sh | 52 ++++++++++++++ .../scripts/org6-scripts/joinChannel.sh | 71 +++++++++++++++++++ .../org6-scripts/updateChannelConfig.sh | 52 ++++++++++++++ 5 files changed, 247 insertions(+), 1 deletion(-) create mode 100644 test-network/scripts/org5-scripts/joinChannel.sh create mode 100644 test-network/scripts/org5-scripts/updateChannelConfig.sh create mode 100644 test-network/scripts/org6-scripts/joinChannel.sh create mode 100644 test-network/scripts/org6-scripts/updateChannelConfig.sh diff --git a/test-network/scripts/org4-scripts/updateChannelConfig.sh b/test-network/scripts/org4-scripts/updateChannelConfig.sh index 381404a5..3c95550d 100755 --- a/test-network/scripts/org4-scripts/updateChannelConfig.sh +++ b/test-network/scripts/org4-scripts/updateChannelConfig.sh @@ -27,7 +27,7 @@ MAX_RETRY=5 . scripts/configUpdate.sh . scripts/utils.sh -infoln "Creating config transaction to add or4 to network" +infoln "Creating config transaction to add org4 to network" # Fetch the config for the channel, writing it to config.json fetchChannelConfig 1 ${CHANNEL_NAME} config.json diff --git a/test-network/scripts/org5-scripts/joinChannel.sh b/test-network/scripts/org5-scripts/joinChannel.sh new file mode 100644 index 00000000..1d1f5f42 --- /dev/null +++ b/test-network/scripts/org5-scripts/joinChannel.sh @@ -0,0 +1,71 @@ +#!/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 org5 peers to the +# channel previously setup in the BYFN tutorial and install the +# chaincode as version 2.0 on peer0.org5. +# + +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 +. scripts/envVar.sh + +# joinChannel ORG +joinChannel() { + ORG=$1 + 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 + scripts/setAnchorPeer.sh $ORG $CHANNEL_NAME +} + + +setGlobalsCLI 5 +BLOCKFILE="${CHANNEL_NAME}.block" + +echo "Fetching channel config block from orderer..." +set -x +peer channel fetch 0 $BLOCKFILE -o orderer.example.com: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 org5 peer to the channel..." +joinChannel 5 + +infoln "Setting anchor peer for org5..." +setAnchorPeer 5 + +successln "Channel '$CHANNEL_NAME' joined" +successln "Org5 peer successfully added to network" diff --git a/test-network/scripts/org5-scripts/updateChannelConfig.sh b/test-network/scripts/org5-scripts/updateChannelConfig.sh new file mode 100644 index 00000000..65da851b --- /dev/null +++ b/test-network/scripts/org5-scripts/updateChannelConfig.sh @@ -0,0 +1,52 @@ +#!/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 +# first step of the EYFN tutorial. It creates and submits a +# configuration transaction to add org5 to the test network +# + +CHANNEL_NAME="$1" +DELAY="$2" +TIMEOUT="$3" +VERBOSE="$4" +: ${CHANNEL_NAME:="mychannel"} +: ${DELAY:="3"} +: ${TIMEOUT:="10"} +: ${VERBOSE:="false"} +COUNTER=1 +MAX_RETRY=5 + + +# imports +. scripts/envVar.sh +. scripts/configUpdate.sh +. scripts/utils.sh + +infoln "Creating config transaction to add org4 to network" + +# Fetch the config for the channel, writing it to config.json +fetchChannelConfig 1 ${CHANNEL_NAME} config.json + +# Modify the configuration to append the new org +set -x +jq -s '.[0] * {"channel_group":{"groups":{"Application":{"groups": {"Org5MSP":.[1]}}}}}' config.json ./organizations/peerOrganizations/org5.example.com/org5.json > modified_config.json +{ set +x; } 2>/dev/null + +# Compute a config update, based on the differences between config.json and modified_config.json, write it as a transaction to org5_update_in_envelope.pb +createConfigUpdate ${CHANNEL_NAME} config.json modified_config.json org5_update_in_envelope.pb + +infoln "Signing config transaction" +signConfigtxAsPeerOrg 1 org5_update_in_envelope.pb + +infoln "Submitting transaction from a different peer (peer0.org2) which also signs it" +setGlobals 2 +set -x +peer channel update -f org5_update_in_envelope.pb -c ${CHANNEL_NAME} -o orderer.example.com:7050 --ordererTLSHostnameOverride orderer.example.com --tls --cafile "$ORDERER_CA" +{ set +x; } 2>/dev/null + +successln "Config transaction to add org5 to network submitted" diff --git a/test-network/scripts/org6-scripts/joinChannel.sh b/test-network/scripts/org6-scripts/joinChannel.sh new file mode 100644 index 00000000..49938174 --- /dev/null +++ b/test-network/scripts/org6-scripts/joinChannel.sh @@ -0,0 +1,71 @@ +#!/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 org6 peers to the +# channel previously setup in the BYFN tutorial and install the +# chaincode as version 2.0 on peer0.org6. +# + +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 +. scripts/envVar.sh + +# joinChannel ORG +joinChannel() { + ORG=$1 + 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 + scripts/setAnchorPeer.sh $ORG $CHANNEL_NAME +} + + +setGlobalsCLI 6 +BLOCKFILE="${CHANNEL_NAME}.block" + +echo "Fetching channel config block from orderer..." +set -x +peer channel fetch 0 $BLOCKFILE -o orderer.example.com: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 org6 peer to the channel..." +joinChannel 6 + +infoln "Setting anchor peer for org6..." +setAnchorPeer 6 + +successln "Channel '$CHANNEL_NAME' joined" +successln "Org6 peer successfully added to network" diff --git a/test-network/scripts/org6-scripts/updateChannelConfig.sh b/test-network/scripts/org6-scripts/updateChannelConfig.sh new file mode 100644 index 00000000..a6b4268a --- /dev/null +++ b/test-network/scripts/org6-scripts/updateChannelConfig.sh @@ -0,0 +1,52 @@ +#!/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 +# first step of the EYFN tutorial. It creates and submits a +# configuration transaction to add org6 to the test network +# + +CHANNEL_NAME="$1" +DELAY="$2" +TIMEOUT="$3" +VERBOSE="$4" +: ${CHANNEL_NAME:="mychannel"} +: ${DELAY:="3"} +: ${TIMEOUT:="10"} +: ${VERBOSE:="false"} +COUNTER=1 +MAX_RETRY=5 + + +# imports +. scripts/envVar.sh +. scripts/configUpdate.sh +. scripts/utils.sh + +infoln "Creating config transaction to add org6 to network" + +# Fetch the config for the channel, writing it to config.json +fetchChannelConfig 1 ${CHANNEL_NAME} config.json + +# Modify the configuration to append the new org +set -x +jq -s '.[0] * {"channel_group":{"groups":{"Application":{"groups": {"Org6MSP":.[1]}}}}}' config.json ./organizations/peerOrganizations/org6.example.com/org6.json > modified_config.json +{ set +x; } 2>/dev/null + +# Compute a config update, based on the differences between config.json and modified_config.json, write it as a transaction to org6_update_in_envelope.pb +createConfigUpdate ${CHANNEL_NAME} config.json modified_config.json org6_update_in_envelope.pb + +infoln "Signing config transaction" +signConfigtxAsPeerOrg 1 org6_update_in_envelope.pb + +infoln "Submitting transaction from a different peer (peer0.org2) which also signs it" +setGlobals 2 +set -x +peer channel update -f org6_update_in_envelope.pb -c ${CHANNEL_NAME} -o orderer.example.com:7050 --ordererTLSHostnameOverride orderer.example.com --tls --cafile "$ORDERER_CA" +{ set +x; } 2>/dev/null + +successln "Config transaction to add org6 to network submitted"