mirror of
https://github.com/hyperledger/fabric-samples.git
synced 2026-06-18 07:55:10 +00:00
[FAB-14711] update byfn with new lifecycle
Change-Id: I24dd3e85f6dedab52b05ce3103ee06435f01f9a3 Signed-off-by: Alessandro Sorniotti <ale.linux@sopit.net>
This commit is contained in:
parent
aec3389792
commit
27774297ec
7 changed files with 168 additions and 100 deletions
|
|
@ -157,9 +157,13 @@ Capabilities:
|
|||
# used with prior release orderers.
|
||||
# Set the value of the capability to true to require it.
|
||||
Application: &ApplicationCapabilities
|
||||
# V2.0 for Application enables the new non-backwards compatible
|
||||
# features and fixes of fabric v2.0.
|
||||
V2_0: true
|
||||
# V1.3 for Application enables the new non-backwards compatible
|
||||
# features and fixes of fabric v1.3.
|
||||
V1_3: true
|
||||
# features and fixes of fabric v1.3 (note, this need not be set if
|
||||
# later version capabilities are set)
|
||||
V1_3: false
|
||||
# V1.2 for Application enables the new non-backwards compatible
|
||||
# features and fixes of fabric v1.2 (note, this need not be set if
|
||||
# later version capabilities are set)
|
||||
|
|
|
|||
|
|
@ -117,15 +117,6 @@ function networkUp () {
|
|||
echo "ERROR !!!! Unable to have Org3 peers join network"
|
||||
exit 1
|
||||
fi
|
||||
echo
|
||||
echo "###############################################################"
|
||||
echo "##### Upgrade chaincode to have Org3 peers on the network #####"
|
||||
echo "###############################################################"
|
||||
docker exec cli ./scripts/step3org3.sh $CHANNEL_NAME $CLI_DELAY $LANGUAGE $CLI_TIMEOUT $VERBOSE
|
||||
if [ $? -ne 0 ]; then
|
||||
echo "ERROR !!!! Unable to add Org3 peers on network"
|
||||
exit 1
|
||||
fi
|
||||
# finish by running the test
|
||||
docker exec Org3cli ./scripts/testorg3.sh $CHANNEL_NAME $CLI_DELAY $LANGUAGE $CLI_TIMEOUT $VERBOSE
|
||||
if [ $? -ne 0 ]; then
|
||||
|
|
|
|||
|
|
@ -22,6 +22,7 @@ VERBOSE="$5"
|
|||
LANGUAGE=`echo "$LANGUAGE" | tr [:upper:] [:lower:]`
|
||||
COUNTER=1
|
||||
MAX_RETRY=10
|
||||
PACKAGE_ID=""
|
||||
|
||||
if [ "$LANGUAGE" = "node" ]; then
|
||||
CC_SRC_PATH="/opt/gopath/src/github.com/hyperledger/fabric-samples/chaincode/abstore/node/"
|
||||
|
|
@ -81,15 +82,31 @@ updateAnchorPeers 0 1
|
|||
echo "Updating anchor peers for org2..."
|
||||
updateAnchorPeers 0 2
|
||||
|
||||
## at first we package the chaincode
|
||||
packageChaincode 1 0 1
|
||||
|
||||
## Install chaincode on peer0.org1 and peer0.org2
|
||||
echo "Installing chaincode on peer0.org1..."
|
||||
installChaincode 0 1
|
||||
echo "Install chaincode on peer0.org2..."
|
||||
installChaincode 0 2
|
||||
|
||||
# Instantiate chaincode on peer0.org2
|
||||
echo "Instantiating chaincode on peer0.org2..."
|
||||
instantiateChaincode 0 2
|
||||
## query whether the chaincode is installed
|
||||
queryInstalled 0 1
|
||||
|
||||
## approve the definition for both orgs
|
||||
approveForMyOrg 1 0 1
|
||||
approveForMyOrg 1 0 2
|
||||
|
||||
## commit the definition
|
||||
commitChaincodeDefinition 1 0 1 0 2
|
||||
|
||||
## query on both orgs to see that the definition committed ok
|
||||
queryCommitted 1 0 1
|
||||
queryCommitted 1 0 2
|
||||
|
||||
# invoke init
|
||||
chaincodeInvoke 1 0 1 0 2
|
||||
|
||||
# Query chaincode on peer0.org1
|
||||
echo "Querying chaincode on peer0.org1..."
|
||||
|
|
@ -97,7 +114,11 @@ chaincodeQuery 0 1 100
|
|||
|
||||
# Invoke chaincode on peer0.org1 and peer0.org2
|
||||
echo "Sending invoke transaction on peer0.org1 peer0.org2..."
|
||||
chaincodeInvoke 0 1 0 2
|
||||
chaincodeInvoke 0 0 1 0 2
|
||||
|
||||
# Query chaincode on peer0.org1
|
||||
echo "Querying chaincode on peer0.org1..."
|
||||
chaincodeQuery 0 1 90
|
||||
|
||||
## Install chaincode on peer1.org2
|
||||
echo "Installing chaincode on peer1.org2..."
|
||||
|
|
|
|||
|
|
@ -27,6 +27,7 @@ VERBOSE="$5"
|
|||
LANGUAGE=`echo "$LANGUAGE" | tr [:upper:] [:lower:]`
|
||||
COUNTER=1
|
||||
MAX_RETRY=5
|
||||
PACKAGE_ID=""
|
||||
|
||||
if [ "$LANGUAGE" = "node" ]; then
|
||||
CC_SRC_PATH="/opt/gopath/src/github.com/hyperledger/fabric-samples/chaincode/abstore/node/"
|
||||
|
|
@ -51,11 +52,28 @@ joinChannelWithRetry 0 3
|
|||
echo "===================== peer0.org3 joined channel '$CHANNEL_NAME' ===================== "
|
||||
joinChannelWithRetry 1 3
|
||||
echo "===================== peer1.org3 joined channel '$CHANNEL_NAME' ===================== "
|
||||
echo "Installing chaincode 2.0 on peer0.org3..."
|
||||
installChaincode 0 3 2.0
|
||||
|
||||
## at first we package the chaincode
|
||||
packageChaincode 1 0 3
|
||||
|
||||
echo "Installing chaincode on peer0.org3..."
|
||||
installChaincode 0 3
|
||||
|
||||
## query whether the chaincode is installed
|
||||
queryInstalled 0 3
|
||||
|
||||
## sanity check: expect the chaincode to be already committed
|
||||
queryCommitted 1 0 3
|
||||
|
||||
## approve it for our org, so that our peers know what package to invoke
|
||||
approveForMyOrg 1 0 3
|
||||
|
||||
# Query on chaincode on peer0.org3, check if the result is 90
|
||||
echo "Querying chaincode on peer0.org3..."
|
||||
chaincodeQuery 0 3 90
|
||||
|
||||
echo
|
||||
echo "========= Org3 is now halfway onto your first network ========= "
|
||||
echo "========= Finished adding Org3 to your first network! ========= "
|
||||
echo
|
||||
|
||||
exit 0
|
||||
|
|
|
|||
|
|
@ -1,55 +0,0 @@
|
|||
#!/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 third
|
||||
# step of the EYFN tutorial. It installs the chaincode as version 2.0
|
||||
# on peer0.org1 and peer0.org2, and uprage the chaincode on the
|
||||
# channel to version 2.0, thus completing the addition of org3 to the
|
||||
# network previously setup in the BYFN tutorial.
|
||||
#
|
||||
|
||||
echo
|
||||
echo "========= Finish adding Org3 to your first network ========= "
|
||||
echo
|
||||
CHANNEL_NAME="$1"
|
||||
DELAY="$2"
|
||||
LANGUAGE="$3"
|
||||
TIMEOUT="$4"
|
||||
VERBOSE="$5"
|
||||
: ${CHANNEL_NAME:="mychannel"}
|
||||
: ${DELAY:="3"}
|
||||
: ${LANGUAGE:="golang"}
|
||||
: ${TIMEOUT:="10"}
|
||||
: ${VERBOSE:="false"}
|
||||
LANGUAGE=`echo "$LANGUAGE" | tr [:upper:] [:lower:]`
|
||||
COUNTER=1
|
||||
MAX_RETRY=5
|
||||
|
||||
if [ "$LANGUAGE" = "node" ]; then
|
||||
CC_SRC_PATH="/opt/gopath/src/github.com/hyperledger/fabric-samples/chaincode/abstore/node/"
|
||||
elif [ "$LANGUAGE" = "java" ]; then
|
||||
CC_SRC_PATH="/opt/gopath/src/github.com/hyperledger/fabric-samples/chaincode/abstore/java/"
|
||||
else
|
||||
CC_SRC_PATH="github.com/hyperledger/fabric-samples/chaincode/abstore/go/"
|
||||
fi
|
||||
|
||||
# import utils
|
||||
. scripts/utils.sh
|
||||
|
||||
echo "===================== Installing chaincode 2.0 on peer0.org1 ===================== "
|
||||
installChaincode 0 1 2.0
|
||||
echo "===================== Installing chaincode 2.0 on peer0.org2 ===================== "
|
||||
installChaincode 0 2 2.0
|
||||
|
||||
echo "===================== Upgrading chaincode on peer0.org1 ===================== "
|
||||
upgradeChaincode 0 1
|
||||
|
||||
echo
|
||||
echo "========= Finished adding Org3 to your first network! ========= "
|
||||
echo
|
||||
|
||||
exit 0
|
||||
|
|
@ -50,9 +50,9 @@ echo "Channel name : "$CHANNEL_NAME
|
|||
echo "Querying chaincode on peer0.org3..."
|
||||
chaincodeQuery 0 3 90
|
||||
|
||||
# Invoke chaincode on peer0.org1, peer0.org2, and peer0.org3
|
||||
echo "Sending invoke transaction on peer0.org1 peer0.org2 peer0.org3..."
|
||||
chaincodeInvoke 0 1 0 2 0 3
|
||||
# Invoke chaincode on peer0.org1 and peer0.org3
|
||||
echo "Sending invoke transaction on peer0.org1 peer0.org3..."
|
||||
chaincodeInvoke 0 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
|
||||
|
|
|
|||
|
|
@ -113,13 +113,29 @@ joinChannelWithRetry() {
|
|||
verifyResult $res "After $MAX_RETRY attempts, peer${PEER}.org${ORG} has failed to join channel '$CHANNEL_NAME' "
|
||||
}
|
||||
|
||||
# packageChaincode VERSION PEER ORG
|
||||
packageChaincode() {
|
||||
VERSION=$1
|
||||
PEER=$2
|
||||
ORG=$3
|
||||
setGlobals $PEER $ORG
|
||||
set -x
|
||||
peer lifecycle chaincode package mycc.tar.gz --path ${CC_SRC_PATH} --lang ${LANGUAGE} --label mycc_${VERSION} >&log.txt
|
||||
res=$?
|
||||
set +x
|
||||
cat log.txt
|
||||
verifyResult $res "Chaincode packaging on peer${PEER}.org${ORG} has failed"
|
||||
echo "===================== Chaincode is packaged on peer${PEER}.org${ORG} ===================== "
|
||||
echo
|
||||
}
|
||||
|
||||
# installChaincode PEER ORG
|
||||
installChaincode() {
|
||||
PEER=$1
|
||||
ORG=$2
|
||||
setGlobals $PEER $ORG
|
||||
VERSION=${3:-1.0}
|
||||
set -x
|
||||
peer chaincode install -n mycc -v ${VERSION} -l ${LANGUAGE} -p ${CC_SRC_PATH} >&log.txt
|
||||
peer lifecycle chaincode install mycc.tar.gz >&log.txt
|
||||
res=$?
|
||||
set +x
|
||||
cat log.txt
|
||||
|
|
@ -128,45 +144,108 @@ installChaincode() {
|
|||
echo
|
||||
}
|
||||
|
||||
instantiateChaincode() {
|
||||
# queryInstalled PEER ORG
|
||||
queryInstalled() {
|
||||
PEER=$1
|
||||
ORG=$2
|
||||
setGlobals $PEER $ORG
|
||||
VERSION=${3:-1.0}
|
||||
set -x
|
||||
peer lifecycle chaincode queryinstalled >&log.txt
|
||||
res=$?
|
||||
set +x
|
||||
cat log.txt
|
||||
PACKAGE_ID=`sed -n '/Package/{s/^Package ID: //; s/, Label:.*$//; p;}' log.txt`
|
||||
verifyResult $res "Query installed on peer${PEER}.org${ORG} has failed"
|
||||
echo PackageID is ${PACKAGE_ID}
|
||||
echo "===================== Query installed successful on peer${PEER}.org${ORG} on channel ===================== "
|
||||
echo
|
||||
}
|
||||
|
||||
# approveForMyOrg VERSION PEER ORG
|
||||
approveForMyOrg() {
|
||||
VERSION=$1
|
||||
PEER=$2
|
||||
ORG=$3
|
||||
setGlobals $PEER $ORG
|
||||
|
||||
# while 'peer chaincode' command can get the orderer endpoint from the peer
|
||||
# (if join was successful), let's supply it directly as we know it using
|
||||
# the "-o" option
|
||||
if [ -z "$CORE_PEER_TLS_ENABLED" -o "$CORE_PEER_TLS_ENABLED" = "false" ]; then
|
||||
set -x
|
||||
peer chaincode instantiate -o orderer.example.com:7050 -C $CHANNEL_NAME -n mycc -l ${LANGUAGE} -v ${VERSION} -c '{"Args":["init","a","100","b","200"]}' -P "AND ('Org1MSP.peer','Org2MSP.peer')" >&log.txt
|
||||
peer lifecycle chaincode approveformyorg --channelID $CHANNEL_NAME --name mycc --version ${VERSION} --init-required --package-id ${PACKAGE_ID} --sequence 1 --waitForEvent >&log.txt
|
||||
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 1 --waitForEvent >&log.txt
|
||||
set +x
|
||||
fi
|
||||
cat log.txt
|
||||
verifyResult $res "Chaincode definition approved on peer${PEER}.org${ORG} on channel '$CHANNEL_NAME' failed"
|
||||
echo "===================== Chaincode definition approved on peer${PEER}.org${ORG} on channel '$CHANNEL_NAME' ===================== "
|
||||
echo
|
||||
}
|
||||
|
||||
# commitChaincodeDefinition VERSION PEER ORG (PEER ORG)...
|
||||
commitChaincodeDefinition() {
|
||||
VERSION=$1
|
||||
shift
|
||||
parsePeerConnectionParameters $@
|
||||
res=$?
|
||||
verifyResult $res "Invoke transaction failed on channel '$CHANNEL_NAME' due to uneven number of peer and org parameters "
|
||||
|
||||
# while 'peer chaincode' command can get the orderer endpoint from the
|
||||
# peer (if join was successful), let's supply it directly as we know
|
||||
# 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 1 --init-required >&log.txt
|
||||
res=$?
|
||||
set +x
|
||||
else
|
||||
set -x
|
||||
peer chaincode instantiate -o orderer.example.com:7050 --tls $CORE_PEER_TLS_ENABLED --cafile $ORDERER_CA -C $CHANNEL_NAME -n mycc -l ${LANGUAGE} -v 1.0 -c '{"Args":["init","a","100","b","200"]}' -P "AND ('Org1MSP.peer','Org2MSP.peer')" >&log.txt
|
||||
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 1 --init-required >&log.txt
|
||||
res=$?
|
||||
set +x
|
||||
fi
|
||||
cat log.txt
|
||||
verifyResult $res "Chaincode instantiation on peer${PEER}.org${ORG} on channel '$CHANNEL_NAME' failed"
|
||||
echo "===================== Chaincode is instantiated on peer${PEER}.org${ORG} on channel '$CHANNEL_NAME' ===================== "
|
||||
verifyResult $res "Chaincode definition commit failed on peer${PEER}.org${ORG} on channel '$CHANNEL_NAME' failed"
|
||||
echo "===================== Chaincode definition committed on channel '$CHANNEL_NAME' ===================== "
|
||||
echo
|
||||
}
|
||||
|
||||
upgradeChaincode() {
|
||||
PEER=$1
|
||||
ORG=$2
|
||||
# queryCommitted VERSION PEER ORG
|
||||
queryCommitted() {
|
||||
VERSION=$1
|
||||
PEER=$2
|
||||
ORG=$3
|
||||
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'... ===================== "
|
||||
local rc=1
|
||||
local starttime=$(date +%s)
|
||||
|
||||
set -x
|
||||
peer chaincode upgrade -o orderer.example.com:7050 --tls $CORE_PEER_TLS_ENABLED --cafile $ORDERER_CA -C $CHANNEL_NAME -n mycc -v 2.0 -c '{"Args":["init","a","90","b","210"]}' -P "AND ('Org1MSP.peer','Org2MSP.peer','Org3MSP.peer')"
|
||||
res=$?
|
||||
set +x
|
||||
cat log.txt
|
||||
verifyResult $res "Chaincode upgrade on peer${PEER}.org${ORG} has failed"
|
||||
echo "===================== Chaincode is upgraded on peer${PEER}.org${ORG} on channel '$CHANNEL_NAME' ===================== "
|
||||
# continue to poll
|
||||
# we either get a successful response, or reach TIMEOUT
|
||||
while
|
||||
test "$(($(date +%s) - starttime))" -lt "$TIMEOUT" -a $rc -ne 0
|
||||
do
|
||||
sleep $DELAY
|
||||
echo "Attempting to Query peer${PEER}.org${ORG} ...$(($(date +%s) - starttime)) secs"
|
||||
set -x
|
||||
peer lifecycle chaincode querycommitted --channelID $CHANNEL_NAME --name mycc >&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')
|
||||
test "$VALUE" = "$EXPECTED_RESULT" && let rc=0
|
||||
done
|
||||
echo
|
||||
cat log.txt
|
||||
if test $rc -eq 0; then
|
||||
echo "===================== Query chaincode definition successful on peer${PEER}.org${ORG} on channel '$CHANNEL_NAME' ===================== "
|
||||
else
|
||||
echo "!!!!!!!!!!!!!!! Query chaincode definition result on peer${PEER}.org${ORG} is INVALID !!!!!!!!!!!!!!!!"
|
||||
echo "================== ERROR !!! FAILED to execute End-2-End Scenario =================="
|
||||
echo
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
chaincodeQuery() {
|
||||
|
|
@ -293,24 +372,34 @@ parsePeerConnectionParameters() {
|
|||
PEERS="$(echo -e "$PEERS" | sed -e 's/^[[:space:]]*//')"
|
||||
}
|
||||
|
||||
# chaincodeInvoke <peer> <org> ...
|
||||
# chaincodeInvoke IS_INIT PEER ORG (PEER ORG) ...
|
||||
# Accepts as many peer/org pairs as desired and requests endorsement from each
|
||||
chaincodeInvoke() {
|
||||
IS_INIT=$1
|
||||
shift
|
||||
parsePeerConnectionParameters $@
|
||||
res=$?
|
||||
verifyResult $res "Invoke transaction failed on channel '$CHANNEL_NAME' due to uneven number of peer and org parameters "
|
||||
|
||||
if [ "${IS_INIT}" -eq "1" ]; then
|
||||
CCARGS='{"Args":["Init","a","100","b","100"]}'
|
||||
INIT_ARG="--isInit"
|
||||
else
|
||||
CCARGS='{"Args":["invoke","a","b","10"]}'
|
||||
INIT_ARG=""
|
||||
fi
|
||||
|
||||
# while 'peer chaincode' command can get the orderer endpoint from the
|
||||
# peer (if join was successful), let's supply it directly as we know
|
||||
# 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 -c '{"Args":["invoke","a","b","10"]}' >&log.txt
|
||||
peer chaincode invoke -o orderer.example.com:7050 -C $CHANNEL_NAME -n mycc $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 -c '{"Args":["invoke","a","b","10"]}' >&log.txt
|
||||
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
|
||||
res=$?
|
||||
set +x
|
||||
fi
|
||||
|
|
|
|||
Loading…
Reference in a new issue