fabric-samples/varion/scripts/deployCC.sh

124 lines
3.6 KiB
Bash
Executable file

#!/bin/bash
source scripts/utils.sh
CHANNEL_NAME=${1:-"mychannel"}
CC_NAME=${2}
CC_SRC_PATH=${3}
CC_SRC_LANGUAGE=${4}
CC_VERSION=${5:-"1.0"}
CC_SEQUENCE=${6:-"1"}
CC_INIT_FCN=${7:-"NA"}
CC_END_POLICY=${8:-"NA"}
CC_COLL_CONFIG=${9:-"NA"}
DELAY=${10:-"3"}
MAX_RETRY=${11:-"5"}
VERBOSE=${12:-"false"}
println "executing with the following"
println "- CHANNEL_NAME: ${C_GREEN}${CHANNEL_NAME}${C_RESET}"
println "- CC_NAME: ${C_GREEN}${CC_NAME}${C_RESET}"
println "- CC_SRC_PATH: ${C_GREEN}${CC_SRC_PATH}${C_RESET}"
println "- CC_SRC_LANGUAGE: ${C_GREEN}${CC_SRC_LANGUAGE}${C_RESET}"
println "- CC_VERSION: ${C_GREEN}${CC_VERSION}${C_RESET}"
println "- CC_SEQUENCE: ${C_GREEN}${CC_SEQUENCE}${C_RESET}"
println "- CC_END_POLICY: ${C_GREEN}${CC_END_POLICY}${C_RESET}"
println "- CC_COLL_CONFIG: ${C_GREEN}${CC_COLL_CONFIG}${C_RESET}"
println "- CC_INIT_FCN: ${C_GREEN}${CC_INIT_FCN}${C_RESET}"
println "- DELAY: ${C_GREEN}${DELAY}${C_RESET}"
println "- MAX_RETRY: ${C_GREEN}${MAX_RETRY}${C_RESET}"
println "- VERBOSE: ${C_GREEN}${VERBOSE}${C_RESET}"
INIT_REQUIRED="--init-required"
# check if the init fcn should be called
if [ "$CC_INIT_FCN" = "NA" ]; then
INIT_REQUIRED=""
fi
if [ "$CC_END_POLICY" = "NA" ]; then
CC_END_POLICY=""
else
CC_END_POLICY="--signature-policy $CC_END_POLICY"
fi
if [ "$CC_COLL_CONFIG" = "NA" ]; then
CC_COLL_CONFIG=""
else
CC_COLL_CONFIG="--collections-config $CC_COLL_CONFIG"
fi
FABRIC_CFG_PATH=$PWD/../config/
# import utils
. scripts/envVar.sh
. scripts/ccutils.sh
function checkPrereqs() {
jq --version > /dev/null 2>&1
if [[ $? -ne 0 ]]; then
errorln "jq command not found..."
errorln
errorln "Follow the instructions in the Fabric docs to install the prereqs"
errorln "https://hyperledger-fabric.readthedocs.io/en/latest/prereqs.html"
exit 1
fi
}
#check for prerequisites
checkPrereqs
## package the chaincode
./scripts/packageCC.sh $CC_NAME $CC_SRC_PATH $CC_SRC_LANGUAGE $CC_VERSION
PACKAGE_ID=$(peer lifecycle chaincode calculatepackageid ${CC_NAME}.tar.gz)
## Install chaincode on peer0.farmer, peer0.pulper, peer0.huller, and peer0.export
infoln "Install chaincode on peer0.farmer..."
installChaincode farmer
infoln "Install chaincode on peer0.pulper..."
installChaincode pulper
#infoln "Install chaincode on peer0.huller..."
#installChaincode huller
#infoln "Install chaincode on peer0.export..."
#installChaincode export
resolveSequence
## query whether the chaincode is installed
queryInstalled farmer
## approve the definition for org1
approveForMyOrg farmer
## check whether the chaincode definition is ready to be committed
## expect farmer to have approved and pulper not to
checkCommitReadiness farmer "\"FarmerMSP\": true" "\"PulperMSP\": false"
checkCommitReadiness pulper "\"FarmerMSP\": true" "\"PulperMSP\": false"
## now approve also for org2
approveForMyOrg pulper
## check whether the chaincode definition is ready to be committed
## expect them both to have approved
checkCommitReadiness farmer "\"FarmerMSP\": true" "\"PulperMSP\": true"
checkCommitReadiness pulper "\"FarmerMSP\": true" "\"PulperMSP\": true"
#approveForMyOrg huller
#approveForMyOrg export
## now that we know for sure both orgs have approved, commit the definition
commitChaincodeDefinition farmer pulper #huller #export
## query on both orgs to see that the definition committed successfully
queryCommitted farmer pulper #huller #export
## Invoke the chaincode - this does require that the chaincode have the 'initLedger'
## method defined
if [ "$CC_INIT_FCN" = "NA" ]; then
infoln "Chaincode initialization is not required"
else
chaincodeInvokeInit farmer pulper #huller #export
fi
exit 0