From 0307743add6fb296548f1745ef060a8456f33b5b Mon Sep 17 00:00:00 2001 From: Anoop Vijayan Maniankara Date: Sun, 9 Feb 2020 19:24:44 +0200 Subject: [PATCH] first-network/scripts/*: Make Chaincode name configurable 1. The idea is to use this generic functions for managing any chaincode lifecycle inside cli container. E.g. ''' source scripts/utils.sh packageChaincode 1 0 1 myapp installChaincode 0 1 myapp approveForMyOrg 1 0 1 myapp .... ''' Signed-off-by: Anoop Vijayan Maniankara --- first-network/scripts/script.sh | 39 +++++++++++++------------ first-network/scripts/step1org3.sh | 2 ++ first-network/scripts/step2org3.sh | 12 ++++---- first-network/scripts/testorg3.sh | 12 ++++---- first-network/scripts/upgrade_to_v14.sh | 8 +++-- first-network/scripts/utils.sh | 36 +++++++++++++++-------- 6 files changed, 66 insertions(+), 43 deletions(-) diff --git a/first-network/scripts/script.sh b/first-network/scripts/script.sh index b9b1b958..f72dbdb7 100755 --- a/first-network/scripts/script.sh +++ b/first-network/scripts/script.sh @@ -15,12 +15,14 @@ CC_SRC_LANGUAGE="$3" TIMEOUT="$4" VERBOSE="$5" NO_CHAINCODE="$6" +NAME="$7" : ${CHANNEL_NAME:="mychannel"} : ${DELAY:="3"} : ${CC_SRC_LANGUAGE:="go"} : ${TIMEOUT:="10"} : ${VERBOSE:="false"} : ${NO_CHAINCODE:="false"} +: ${NAME:="mycc"} CC_SRC_LANGUAGE=`echo "$CC_SRC_LANGUAGE" | tr [:upper:] [:lower:]` COUNTER=1 MAX_RETRY=20 @@ -43,6 +45,7 @@ fi echo "Channel name : "$CHANNEL_NAME +echo "Chaincode name : "$NAME # import utils . scripts/utils.sh @@ -95,62 +98,62 @@ updateAnchorPeers 0 2 if [ "${NO_CHAINCODE}" != "true" ]; then ## at first we package the chaincode - packageChaincode 1 0 1 + packageChaincode 1 0 1 $NAME ## Install chaincode on peer0.org1 and peer0.org2 echo "Installing chaincode on peer0.org1..." - installChaincode 0 1 + installChaincode 0 1 $NAME echo "Install chaincode on peer0.org2..." - installChaincode 0 2 + installChaincode 0 2 $NAME ## query whether the chaincode is installed queryInstalled 0 1 ## approve the definition for org1 - approveForMyOrg 1 0 1 + approveForMyOrg 1 0 1 $NAME ## check whether the chaincode definition is ready to be committed ## expect org1 to have approved and org2 not to - checkCommitReadiness 1 0 1 "\"Org1MSP\": true" "\"Org2MSP\": false" - checkCommitReadiness 1 0 2 "\"Org1MSP\": true" "\"Org2MSP\": false" + checkCommitReadiness 1 0 1 $NAME "\"Org1MSP\": true" "\"Org2MSP\": false" + checkCommitReadiness 1 0 2 $NAME "\"Org1MSP\": true" "\"Org2MSP\": false" ## now approve also for org2 - approveForMyOrg 1 0 2 + approveForMyOrg 1 0 2 $NAME ## check whether the chaincode definition is ready to be committed ## expect them both to have approved - checkCommitReadiness 1 0 1 "\"Org1MSP\": true" "\"Org2MSP\": true" - checkCommitReadiness 1 0 2 "\"Org1MSP\": true" "\"Org2MSP\": true" + checkCommitReadiness 1 0 1 $NAME "\"Org1MSP\": true" "\"Org2MSP\": true" + checkCommitReadiness 1 0 2 $NAME "\"Org1MSP\": true" "\"Org2MSP\": true" ## now that we know for sure both orgs have approved, commit the definition - commitChaincodeDefinition 1 0 1 0 2 + commitChaincodeDefinition 1 $NAME 0 1 0 2 ## query on both orgs to see that the definition committed successfully - queryCommitted 1 0 1 - queryCommitted 1 0 2 + queryCommitted 1 0 1 $NAME + queryCommitted 1 0 2 $NAME # invoke init - chaincodeInvoke 1 0 1 0 2 + chaincodeInvoke 1 $NAME 0 1 0 2 # Query chaincode on peer0.org1 echo "Querying chaincode on peer0.org1..." - chaincodeQuery 0 1 100 + chaincodeQuery 0 1 100 $NAME # Invoke chaincode on peer0.org1 and peer0.org2 echo "Sending invoke transaction on peer0.org1 peer0.org2..." - chaincodeInvoke 0 0 1 0 2 + chaincodeInvoke 0 $NAME 0 1 0 2 # Query chaincode on peer0.org1 echo "Querying chaincode on peer0.org1..." - chaincodeQuery 0 1 90 + chaincodeQuery 0 1 90 $NAME ## Install chaincode on peer1.org2 echo "Installing chaincode on peer1.org2..." - installChaincode 1 2 + installChaincode 1 2 $NAME # Query on chaincode on peer1.org2, check if the result is 90 echo "Querying chaincode on peer1.org2..." - chaincodeQuery 1 2 90 + chaincodeQuery 1 2 90 $NAME fi diff --git a/first-network/scripts/step1org3.sh b/first-network/scripts/step1org3.sh index 4329860c..d8be4e1f 100755 --- a/first-network/scripts/step1org3.sh +++ b/first-network/scripts/step1org3.sh @@ -16,11 +16,13 @@ DELAY="$2" CC_SRC_LANGUAGE="$3" TIMEOUT="$4" VERBOSE="$5" +NAME="$6" : ${CHANNEL_NAME:="mychannel"} : ${DELAY:="3"} : ${CC_SRC_LANGUAGE:="go"} : ${TIMEOUT:="10"} : ${VERBOSE:="false"} +: ${NAME:="mycc"} CC_SRC_LANGUAGE=`echo "$CC_SRC_LANGUAGE" | tr [:upper:] [:lower:]` COUNTER=1 MAX_RETRY=5 diff --git a/first-network/scripts/step2org3.sh b/first-network/scripts/step2org3.sh index fec4dcc4..ed288ad4 100755 --- a/first-network/scripts/step2org3.sh +++ b/first-network/scripts/step2org3.sh @@ -19,11 +19,13 @@ DELAY="$2" CC_SRC_LANGUAGE="$3" TIMEOUT="$4" VERBOSE="$5" +NAME="$6" : ${CHANNEL_NAME:="mychannel"} : ${DELAY:="3"} : ${CC_SRC_LANGUAGE:="go"} : ${TIMEOUT:="10"} : ${VERBOSE:="false"} +: ${NAME:="mycc"} CC_SRC_LANGUAGE=`echo "$CC_SRC_LANGUAGE" | tr [:upper:] [:lower:]` COUNTER=1 MAX_RETRY=5 @@ -61,23 +63,23 @@ joinChannelWithRetry 1 3 echo "===================== peer1.org3 joined channel '$CHANNEL_NAME' ===================== " ## at first we package the chaincode -packageChaincode 1 0 3 +packageChaincode 1 0 3 $NAME echo "Installing chaincode on peer0.org3..." -installChaincode 0 3 +installChaincode 0 3 $NAME ## query whether the chaincode is installed queryInstalled 0 3 ## sanity check: expect the chaincode to be already committed -queryCommitted 1 0 3 +queryCommitted 1 0 3 $NAME ## approve it for our org, so that our peers know what package to invoke -approveForMyOrg 1 0 3 +approveForMyOrg 1 0 3 $NAME # Query on chaincode on peer0.org3, check if the result is 90 echo "Querying chaincode on peer0.org3..." -chaincodeQuery 0 3 90 +chaincodeQuery 0 3 90 $NAME echo echo "========= Finished adding Org3 to your first network! ========= " diff --git a/first-network/scripts/testorg3.sh b/first-network/scripts/testorg3.sh index 04e23114..b21d31cf 100755 --- a/first-network/scripts/testorg3.sh +++ b/first-network/scripts/testorg3.sh @@ -25,10 +25,12 @@ DELAY="$2" CC_SRC_LANGUAGE="$3" TIMEOUT="$4" VERBOSE="$5" +NAME="$6" : ${CHANNEL_NAME:="mychannel"} : ${TIMEOUT:="10"} : ${CC_SRC_LANGUAGE:="go"} : ${VERBOSE:="false"} +: ${NAME:="mycc"} CC_SRC_LANGUAGE=`echo "$CC_SRC_LANGUAGE" | tr [:upper:] [:lower:]` COUNTER=1 MAX_RETRY=5 @@ -55,23 +57,23 @@ echo "Channel name : "$CHANNEL_NAME # Query chaincode on peer0.org3, check if the result is 90 echo "Querying chaincode on peer0.org3..." -chaincodeQuery 0 3 90 +chaincodeQuery 0 3 90 $NAME # Invoke chaincode on peer0.org1 and peer0.org3 echo "Sending invoke transaction on peer0.org1 peer0.org3..." -chaincodeInvoke 0 0 1 0 3 +chaincodeInvoke 0 $NAME 0 1 0 3 # Query on chaincode on peer0.org3, peer0.org2, peer0.org1 check if the result is 80 # We query a peer in each organization, to ensure peers from all organizations are in sync # and there is no state fork between organizations. echo "Querying chaincode on peer0.org3..." -chaincodeQuery 0 3 80 +chaincodeQuery 0 3 80 $NAME echo "Querying chaincode on peer0.org2..." -chaincodeQuery 0 2 80 +chaincodeQuery 0 2 80 $NAME echo "Querying chaincode on peer0.org1..." -chaincodeQuery 0 1 80 +chaincodeQuery 0 1 80 $NAME echo diff --git a/first-network/scripts/upgrade_to_v14.sh b/first-network/scripts/upgrade_to_v14.sh index 3fb4df68..cb1c59c4 100755 --- a/first-network/scripts/upgrade_to_v14.sh +++ b/first-network/scripts/upgrade_to_v14.sh @@ -14,11 +14,13 @@ DELAY="$2" CC_SRC_LANGUAGE="$3" TIMEOUT="$4" VERBOSE="$5" +NAME="$6" : ${CHANNEL_NAME:="mychannel"} : ${DELAY:="5"} : ${CC_SRC_LANGUAGE:="go"} : ${TIMEOUT:="10"} : ${VERBOSE:="false"} +: ${NAME:="mycc"} CC_SRC_LANGUAGE=$(echo "$CC_SRC_LANGUAGE" | tr [:upper:] [:lower:]) COUNTER=1 MAX_RETRY=5 @@ -47,19 +49,19 @@ sleep $DELAY #Query on chaincode on Peer0/Org1 echo "Querying chaincode on org1/peer0..." -chaincodeQuery 0 1 90 +chaincodeQuery 0 1 90 $NAME sleep $DELAY #Invoke on chaincode on Peer0/Org1 echo "Sending invoke transaction on org1/peer0..." -chaincodeInvoke 0 1 0 2 +chaincodeInvoke 0 $NAME 1 0 2 sleep $DELAY #Query on chaincode on Peer0/Org1 echo "Querying chaincode on org1/peer0..." -chaincodeQuery 0 1 80 +chaincodeQuery 0 1 80 $NAME echo echo "===================== All GOOD, End-2-End UPGRADE Scenario execution completed ===================== " diff --git a/first-network/scripts/utils.sh b/first-network/scripts/utils.sh index 88070118..b1221126 100755 --- a/first-network/scripts/utils.sh +++ b/first-network/scripts/utils.sh @@ -118,9 +118,10 @@ packageChaincode() { VERSION=$1 PEER=$2 ORG=$3 + NAME=$4 setGlobals $PEER $ORG set -x - peer lifecycle chaincode package mycc.tar.gz --path ${CC_SRC_PATH} --lang ${CC_RUNTIME_LANGUAGE} --label mycc_${VERSION} >&log.txt + peer lifecycle chaincode package $NAME.tar.gz --path ${CC_SRC_PATH} --lang ${CC_RUNTIME_LANGUAGE} --label $NAME_${VERSION} >&log.txt res=$? set +x cat log.txt @@ -133,9 +134,10 @@ packageChaincode() { installChaincode() { PEER=$1 ORG=$2 + NAME=$3 setGlobals $PEER $ORG set -x - peer lifecycle chaincode install mycc.tar.gz >&log.txt + peer lifecycle chaincode install $NAME.tar.gz >&log.txt res=$? set +x cat log.txt @@ -166,15 +168,18 @@ approveForMyOrg() { VERSION=$1 PEER=$2 ORG=$3 + NAME=$4 setGlobals $PEER $ORG if [ -z "$CORE_PEER_TLS_ENABLED" -o "$CORE_PEER_TLS_ENABLED" = "false" ]; then set -x - peer lifecycle chaincode approveformyorg --channelID $CHANNEL_NAME --name mycc --version ${VERSION} --init-required --package-id ${PACKAGE_ID} --sequence ${VERSION} --waitForEvent >&log.txt + peer lifecycle chaincode approveformyorg --channelID $CHANNEL_NAME --name $NAME --version ${VERSION} --init-required --package-id ${PACKAGE_ID} --sequence ${VERSION} --waitForEvent >&log.txt + res=$? set +x else set -x - peer lifecycle chaincode approveformyorg --tls $CORE_PEER_TLS_ENABLED --cafile $ORDERER_CA --channelID $CHANNEL_NAME --name mycc --version ${VERSION} --init-required --package-id ${PACKAGE_ID} --sequence ${VERSION} --waitForEvent >&log.txt + peer lifecycle chaincode approveformyorg --tls $CORE_PEER_TLS_ENABLED --cafile $ORDERER_CA --channelID $CHANNEL_NAME --name $NAME --version ${VERSION} --init-required --package-id ${PACKAGE_ID} --sequence ${VERSION} --waitForEvent >&log.txt + res=$? set +x fi cat log.txt @@ -187,6 +192,8 @@ approveForMyOrg() { commitChaincodeDefinition() { VERSION=$1 shift + NAME=$1 + shift parsePeerConnectionParameters $@ res=$? verifyResult $res "Invoke transaction failed on channel '$CHANNEL_NAME' due to uneven number of peer and org parameters " @@ -196,12 +203,12 @@ commitChaincodeDefinition() { # it using the "-o" option if [ -z "$CORE_PEER_TLS_ENABLED" -o "$CORE_PEER_TLS_ENABLED" = "false" ]; then set -x - peer lifecycle chaincode commit -o orderer.example.com:7050 --channelID $CHANNEL_NAME --name mycc $PEER_CONN_PARMS --version ${VERSION} --sequence ${VERSION} --init-required >&log.txt + peer lifecycle chaincode commit -o orderer.example.com:7050 --channelID $CHANNEL_NAME --name $NAME $PEER_CONN_PARMS --version ${VERSION} --sequence ${VERSION} --init-required >&log.txt res=$? set +x else set -x - peer lifecycle chaincode commit -o orderer.example.com:7050 --tls $CORE_PEER_TLS_ENABLED --cafile $ORDERER_CA --channelID $CHANNEL_NAME --name mycc $PEER_CONN_PARMS --version ${VERSION} --sequence ${VERSION} --init-required >&log.txt + peer lifecycle chaincode commit -o orderer.example.com:7050 --tls $CORE_PEER_TLS_ENABLED --cafile $ORDERER_CA --channelID $CHANNEL_NAME --name $NAME $PEER_CONN_PARMS --version ${VERSION} --sequence ${VERSION} --init-required >&log.txt res=$? set +x fi @@ -216,7 +223,8 @@ checkCommitReadiness() { VERSION=$1 PEER=$2 ORG=$3 - shift 3 + NAME=$4 + shift 4 setGlobals $PEER $ORG echo "===================== Checking the commit readiness of the chaincode definition on peer${PEER}.org${ORG} on channel '$CHANNEL_NAME'... ===================== " local rc=1 @@ -230,7 +238,7 @@ checkCommitReadiness() { sleep $DELAY echo "Attempting to check the commit readiness of the chaincode definition on peer${PEER}.org${ORG} ...$(($(date +%s) - starttime)) secs" set -x - peer lifecycle chaincode checkcommitreadiness --channelID $CHANNEL_NAME --name mycc $PEER_CONN_PARMS --version ${VERSION} --sequence ${VERSION} --output json --init-required >&log.txt + peer lifecycle chaincode checkcommitreadiness --channelID $CHANNEL_NAME --name $NAME $PEER_CONN_PARMS --version ${VERSION} --sequence ${VERSION} --output json --init-required >&log.txt res=$? set +x test $res -eq 0 || continue @@ -257,6 +265,7 @@ queryCommitted() { VERSION=$1 PEER=$2 ORG=$3 + NAME=$4 setGlobals $PEER $ORG EXPECTED_RESULT="Version: ${VERSION}, Sequence: ${VERSION}, Endorsement Plugin: escc, Validation Plugin: vscc" echo "===================== Querying chaincode definition on peer${PEER}.org${ORG} on channel '$CHANNEL_NAME'... ===================== " @@ -271,7 +280,7 @@ queryCommitted() { sleep $DELAY echo "Attempting to Query committed status on peer${PEER}.org${ORG} ...$(($(date +%s) - starttime)) secs" set -x - peer lifecycle chaincode querycommitted --channelID $CHANNEL_NAME --name mycc >&log.txt + peer lifecycle chaincode querycommitted --channelID $CHANNEL_NAME --name $NAME >&log.txt res=$? set +x test $res -eq 0 && VALUE=$(cat log.txt | grep -o '^Version: [0-9], Sequence: [0-9], Endorsement Plugin: escc, Validation Plugin: vscc') @@ -294,6 +303,7 @@ chaincodeQuery() { ORG=$2 setGlobals $PEER $ORG EXPECTED_RESULT=$3 + NAME=$4 echo "===================== Querying on peer${PEER}.org${ORG} on channel '$CHANNEL_NAME'... ===================== " local rc=1 local starttime=$(date +%s) @@ -306,7 +316,7 @@ chaincodeQuery() { sleep $DELAY echo "Attempting to Query peer${PEER}.org${ORG} ...$(($(date +%s) - starttime)) secs" set -x - peer chaincode query -C $CHANNEL_NAME -n mycc -c '{"Args":["query","a"]}' >&log.txt + peer chaincode query -C $CHANNEL_NAME -n $NAME -c '{"Args":["query","a"]}' >&log.txt res=$? set +x test $res -eq 0 && VALUE=$(cat log.txt | awk '/Query Result/ {print $NF}') @@ -418,6 +428,8 @@ parsePeerConnectionParameters() { chaincodeInvoke() { IS_INIT=$1 shift + NAME=$1 + shift parsePeerConnectionParameters $@ res=$? verifyResult $res "Invoke transaction failed on channel '$CHANNEL_NAME' due to uneven number of peer and org parameters " @@ -435,12 +447,12 @@ chaincodeInvoke() { # it using the "-o" option if [ -z "$CORE_PEER_TLS_ENABLED" -o "$CORE_PEER_TLS_ENABLED" = "false" ]; then set -x - peer chaincode invoke -o orderer.example.com:7050 -C $CHANNEL_NAME -n mycc $PEER_CONN_PARMS ${INIT_ARG} -c ${CCARGS} >&log.txt + peer chaincode invoke -o orderer.example.com:7050 -C $CHANNEL_NAME -n $NAME $PEER_CONN_PARMS ${INIT_ARG} -c ${CCARGS} >&log.txt res=$? set +x else set -x - peer chaincode invoke -o orderer.example.com:7050 --tls $CORE_PEER_TLS_ENABLED --cafile $ORDERER_CA -C $CHANNEL_NAME -n mycc $PEER_CONN_PARMS ${INIT_ARG} -c ${CCARGS} >&log.txt + peer chaincode invoke -o orderer.example.com:7050 --tls $CORE_PEER_TLS_ENABLED --cafile $ORDERER_CA -C $CHANNEL_NAME -n $NAME $PEER_CONN_PARMS ${INIT_ARG} -c ${CCARGS} >&log.txt res=$? set +x fi