From daa732d3d8bbe62ecb72b0191d99187eb7f7538a Mon Sep 17 00:00:00 2001 From: Brett Logan Date: Mon, 20 Jul 2020 12:55:39 -0400 Subject: [PATCH] Revert "WIP (#253)" This reverts commit d5ce443bee34c54ac43a8aeabb8a38dc23f744e3. Signed-off-by: Brett Logan --- test-network/addOrg3/addOrg3.sh | 26 ++- .../addOrg3/fabric-ca/registerEnroll.sh | 40 ++-- test-network/network.sh | 93 +++++---- .../organizations/fabric-ca/registerEnroll.sh | 187 ++++++++++++------ test-network/scripts/createChannel.sh | 83 ++++---- test-network/scripts/deployCC.sh | 123 ++++++------ test-network/scripts/envVar.sh | 6 +- .../scripts/org3-scripts/step1org3.sh | 42 ++-- .../scripts/org3-scripts/step2org3.sh | 16 +- 9 files changed, 376 insertions(+), 240 deletions(-) diff --git a/test-network/addOrg3/addOrg3.sh b/test-network/addOrg3/addOrg3.sh index ba7b600f..62d4b946 100755 --- a/test-network/addOrg3/addOrg3.sh +++ b/test-network/addOrg3/addOrg3.sh @@ -15,12 +15,6 @@ export PATH=${PWD}/../../bin:${PWD}:$PATH export FABRIC_CFG_PATH=${PWD} export VERBOSE=false -# execute - Prints and executes the command -function execute() { - echo -e "\033[0;32mCommand\033[0m: ${*}" - "${@}" -} - # Print the usage message function printHelp () { echo "Usage: " @@ -76,8 +70,10 @@ function generateOrg3() { echo "############ Create Org1 Identities ######################" echo "##########################################################" - execute cryptogen generate --config=org3-crypto.yaml --output="../organizations" + set -x + cryptogen generate --config=org3-crypto.yaml --output="../organizations" res=$? + set +x if [ $res -ne 0 ]; then echo "Failed to generate certificates..." exit 1 @@ -131,13 +127,15 @@ function generateOrg3Definition() { echo "##########################################################" echo "####### Generating Org3 organization definition #########" echo "##########################################################" - export FABRIC_CFG_PATH=$PWD - execute configtxgen -printOrg Org3MSP > ../organizations/peerOrganizations/org3.example.com/org3.json - res=$? - if [ $res -ne 0 ]; then - echo "Failed to generate Org3 config material..." - exit 1 - fi + export FABRIC_CFG_PATH=$PWD + set -x + configtxgen -printOrg Org3MSP > ../organizations/peerOrganizations/org3.example.com/org3.json + res=$? + set +x + if [ $res -ne 0 ]; then + echo "Failed to generate Org3 config material..." + exit 1 + fi echo } diff --git a/test-network/addOrg3/fabric-ca/registerEnroll.sh b/test-network/addOrg3/fabric-ca/registerEnroll.sh index 988847aa..86cc1209 100644 --- a/test-network/addOrg3/fabric-ca/registerEnroll.sh +++ b/test-network/addOrg3/fabric-ca/registerEnroll.sh @@ -1,10 +1,7 @@ -# execute - Prints and executes the command -function execute() { - echo -e "\033[0;32mCommand\033[0m: ${*}" - "${@}" -} + function createOrg3 { + echo echo "Enroll the CA admin" echo @@ -14,7 +11,9 @@ function createOrg3 { # rm -rf $FABRIC_CA_CLIENT_HOME/fabric-ca-client-config.yaml # rm -rf $FABRIC_CA_CLIENT_HOME/msp - execute fabric-ca-client enroll -u https://admin:adminpw@localhost:11054 --caname ca-org3 --tls.certfiles ${PWD}/fabric-ca/org3/tls-cert.pem + set -x + fabric-ca-client enroll -u https://admin:adminpw@localhost:11054 --caname ca-org3 --tls.certfiles ${PWD}/fabric-ca/org3/tls-cert.pem + set +x echo 'NodeOUs: Enable: true @@ -34,17 +33,23 @@ function createOrg3 { echo echo "Register peer0" echo - execute fabric-ca-client register --caname ca-org3 --id.name peer0 --id.secret peer0pw --id.type peer --tls.certfiles ${PWD}/fabric-ca/org3/tls-cert.pem + set -x + fabric-ca-client register --caname ca-org3 --id.name peer0 --id.secret peer0pw --id.type peer --tls.certfiles ${PWD}/fabric-ca/org3/tls-cert.pem + set +x echo echo "Register user" echo - execute fabric-ca-client register --caname ca-org3 --id.name user1 --id.secret user1pw --id.type client --tls.certfiles ${PWD}/fabric-ca/org3/tls-cert.pem + set -x + fabric-ca-client register --caname ca-org3 --id.name user1 --id.secret user1pw --id.type client --tls.certfiles ${PWD}/fabric-ca/org3/tls-cert.pem + set +x echo echo "Register the org admin" echo - execute fabric-ca-client register --caname ca-org3 --id.name org3admin --id.secret org3adminpw --id.type admin --tls.certfiles ${PWD}/fabric-ca/org3/tls-cert.pem + set -x + fabric-ca-client register --caname ca-org3 --id.name org3admin --id.secret org3adminpw --id.type admin --tls.certfiles ${PWD}/fabric-ca/org3/tls-cert.pem + set +x mkdir -p ../organizations/peerOrganizations/org3.example.com/peers mkdir -p ../organizations/peerOrganizations/org3.example.com/peers/peer0.org3.example.com @@ -52,14 +57,18 @@ function createOrg3 { echo echo "## Generate the peer0 msp" echo - execute fabric-ca-client enroll -u https://peer0:peer0pw@localhost:11054 --caname ca-org3 -M ${PWD}/../organizations/peerOrganizations/org3.example.com/peers/peer0.org3.example.com/msp --csr.hosts peer0.org3.example.com --tls.certfiles ${PWD}/fabric-ca/org3/tls-cert.pem + set -x + fabric-ca-client enroll -u https://peer0:peer0pw@localhost:11054 --caname ca-org3 -M ${PWD}/../organizations/peerOrganizations/org3.example.com/peers/peer0.org3.example.com/msp --csr.hosts peer0.org3.example.com --tls.certfiles ${PWD}/fabric-ca/org3/tls-cert.pem + set +x cp ${PWD}/../organizations/peerOrganizations/org3.example.com/msp/config.yaml ${PWD}/../organizations/peerOrganizations/org3.example.com/peers/peer0.org3.example.com/msp/config.yaml echo echo "## Generate the peer0-tls certificates" echo - execute fabric-ca-client enroll -u https://peer0:peer0pw@localhost:11054 --caname ca-org3 -M ${PWD}/../organizations/peerOrganizations/org3.example.com/peers/peer0.org3.example.com/tls --enrollment.profile tls --csr.hosts peer0.org3.example.com --csr.hosts localhost --tls.certfiles ${PWD}/fabric-ca/org3/tls-cert.pem + set -x + fabric-ca-client enroll -u https://peer0:peer0pw@localhost:11054 --caname ca-org3 -M ${PWD}/../organizations/peerOrganizations/org3.example.com/peers/peer0.org3.example.com/tls --enrollment.profile tls --csr.hosts peer0.org3.example.com --csr.hosts localhost --tls.certfiles ${PWD}/fabric-ca/org3/tls-cert.pem + set +x cp ${PWD}/../organizations/peerOrganizations/org3.example.com/peers/peer0.org3.example.com/tls/tlscacerts/* ${PWD}/../organizations/peerOrganizations/org3.example.com/peers/peer0.org3.example.com/tls/ca.crt @@ -81,7 +90,9 @@ function createOrg3 { echo echo "## Generate the user msp" echo - execute fabric-ca-client enroll -u https://user1:user1pw@localhost:11054 --caname ca-org3 -M ${PWD}/../organizations/peerOrganizations/org3.example.com/users/User1@org3.example.com/msp --tls.certfiles ${PWD}/fabric-ca/org3/tls-cert.pem + set -x + fabric-ca-client enroll -u https://user1:user1pw@localhost:11054 --caname ca-org3 -M ${PWD}/../organizations/peerOrganizations/org3.example.com/users/User1@org3.example.com/msp --tls.certfiles ${PWD}/fabric-ca/org3/tls-cert.pem + set +x cp ${PWD}/../organizations/peerOrganizations/org3.example.com/msp/config.yaml ${PWD}/../organizations/peerOrganizations/org3.example.com/users/User1@org3.example.com/msp/config.yaml @@ -90,7 +101,10 @@ function createOrg3 { echo echo "## Generate the org admin msp" echo - execute fabric-ca-client enroll -u https://org3admin:org3adminpw@localhost:11054 --caname ca-org3 -M ${PWD}/../organizations/peerOrganizations/org3.example.com/users/Admin@org3.example.com/msp --tls.certfiles ${PWD}/fabric-ca/org3/tls-cert.pem + set -x + fabric-ca-client enroll -u https://org3admin:org3adminpw@localhost:11054 --caname ca-org3 -M ${PWD}/../organizations/peerOrganizations/org3.example.com/users/Admin@org3.example.com/msp --tls.certfiles ${PWD}/fabric-ca/org3/tls-cert.pem + set +x cp ${PWD}/../organizations/peerOrganizations/org3.example.com/msp/config.yaml ${PWD}/../organizations/peerOrganizations/org3.example.com/users/Admin@org3.example.com/msp/config.yaml + } diff --git a/test-network/network.sh b/test-network/network.sh index 87def2d6..6a3eb33b 100755 --- a/test-network/network.sh +++ b/test-network/network.sh @@ -67,17 +67,6 @@ function printHelp() { echo " network.sh deployCC -ccn mychaincode -ccp ./user/mychaincode -ccv 1 -ccl javascript" } -# execute - Prints and executes the command -function execute() { - echo -e "\033[0;32mCommand\033[0m: ${*}" - echo -e "\033[0;32mOutput\033[0m:" - "${@}" -} - -function info() { - echo -e "\033[0;33mINFO\033[0m: ${1}" -} - # Obtain CONTAINER_IDS and remove them # TODO Might want to make this optional - could clear other containers # This function is called when you bring a network down @@ -200,6 +189,7 @@ function checkPrereqs() { # Create Organziation crypto material using cryptogen or CAs function createOrgs() { + if [ -d "organizations/peerOrganizations" ]; then rm -Rf organizations/peerOrganizations && rm -Rf organizations/ordererOrganizations fi @@ -212,63 +202,89 @@ function createOrgs() { exit 1 fi echo - info "Generate certificates using cryptogen tool" - info "Create Org1 Identities" + echo "##########################################################" + echo "##### Generate certificates using cryptogen tool #########" + echo "##########################################################" + echo - execute cryptogen generate --config=./organizations/cryptogen/crypto-config-org1.yaml --output="organizations" + echo "##########################################################" + echo "############ Create Org1 Identities ######################" + echo "##########################################################" + + set -x + cryptogen generate --config=./organizations/cryptogen/crypto-config-org1.yaml --output="organizations" res=$? + set +x if [ $res -ne 0 ]; then echo $'\e[1;32m'"Failed to generate certificates..."$'\e[0m' exit 1 fi - echo - info "Create Org2 Identities" + echo "##########################################################" + echo "############ Create Org2 Identities ######################" + echo "##########################################################" - execute cryptogen generate --config=./organizations/cryptogen/crypto-config-org2.yaml --output="organizations" + set -x + cryptogen generate --config=./organizations/cryptogen/crypto-config-org2.yaml --output="organizations" res=$? + set +x if [ $res -ne 0 ]; then echo $'\e[1;32m'"Failed to generate certificates..."$'\e[0m' exit 1 fi - echo - info "Create Orderer Org Identities" + echo "##########################################################" + echo "############ Create Orderer Org Identities ###############" + echo "##########################################################" - execute cryptogen generate --config=./organizations/cryptogen/crypto-config-orderer.yaml --output="organizations" + set -x + cryptogen generate --config=./organizations/cryptogen/crypto-config-orderer.yaml --output="organizations" res=$? + set +x if [ $res -ne 0 ]; then echo $'\e[1;32m'"Failed to generate certificates..."$'\e[0m' exit 1 fi - echo + fi # Create crypto material using Fabric CAs if [ "$CRYPTO" == "Certificate Authorities" ]; then + echo - info "Creating Fabric CA's" - IMAGE_TAG=${CA_IMAGETAG} docker-compose -f "$COMPOSE_FILE_CA" up -d 2>&1 + echo "##########################################################" + echo "##### Generate certificates using Fabric CA's ############" + echo "##########################################################" + + IMAGE_TAG=${CA_IMAGETAG} docker-compose -f $COMPOSE_FILE_CA up -d 2>&1 + . organizations/fabric-ca/registerEnroll.sh sleep 10 - echo - info "Generate certificates using Fabric CA's" + echo "##########################################################" + echo "############ Create Org1 Identities ######################" + echo "##########################################################" - info "Create Org1 Identities" createOrg1 - info "Create Org2 Identities" + echo "##########################################################" + echo "############ Create Org2 Identities ######################" + echo "##########################################################" + createOrg2 - info "Create Orderer Org Identities" + echo "##########################################################" + echo "############ Create Orderer Org Identities ###############" + echo "##########################################################" + createOrderer + fi - info "Generate CCP files for Org1 and Org2" - ./organizations/ccp-generate.sh echo + echo "Generate CCP files for Org1 and Org2" + ./organizations/ccp-generate.sh } # Once you create the organization crypto material, you need to create the @@ -299,23 +315,25 @@ function createOrgs() { # Generate orderer system channel genesis block. function createConsortium() { + which configtxgen if [ "$?" -ne 0 ]; then echo "configtxgen tool not found. exiting" exit 1 fi - info "Generating Orderer Genesis block" + echo "######### Generating Orderer Genesis block ##############" # Note: For some unknown reason (at least for now) the block file can't be # named orderer.genesis.block or the orderer will fail to launch! - execute configtxgen -profile TwoOrgsOrdererGenesis -channelID system-channel -outputBlock ./system-genesis-block/genesis.block + set -x + configtxgen -profile TwoOrgsOrdererGenesis -channelID system-channel -outputBlock ./system-genesis-block/genesis.block res=$? + set +x if [ $res -ne 0 ]; then echo $'\e[1;32m'"Failed to generate orderer genesis block..."$'\e[0m' exit 1 fi - echo } # After we create the org crypto material and the system channel genesis block, @@ -326,6 +344,7 @@ function createConsortium() { # Bring up the peer and orderer nodes using docker compose. function networkUp() { + checkPrereqs # generate artifacts if they don't exist if [ ! -d "organizations/peerOrganizations" ]; then @@ -350,7 +369,9 @@ function networkUp() { ## call the script to join create the channel and join the peers of org1 and org2 function createChannel() { + ## Bring up the network if it is not arleady up. + if [ ! -d "organizations/peerOrganizations" ]; then echo "Bringing up network" networkUp @@ -365,17 +386,21 @@ function createChannel() { echo "Error !!! Create channel failed" exit 1 fi - echo + } ## Call the script to isntall and instantiate a chaincode on the channel function deployCC() { + scripts/deployCC.sh $CHANNEL_NAME $CC_NAME $CC_SRC_PATH $CC_SRC_LANGUAGE $CC_VERSION $CC_SEQUENCE $CC_INIT_FCN $CC_END_POLICY $CC_COLL_CONFIG $CLI_DELAY $MAX_RETRY $VERBOSE + if [ $? -ne 0 ]; then echo "ERROR !!! Deploying chaincode failed" exit 1 fi + + exit 0 } diff --git a/test-network/organizations/fabric-ca/registerEnroll.sh b/test-network/organizations/fabric-ca/registerEnroll.sh index 0671ea2c..b5bf0828 100755 --- a/test-network/organizations/fabric-ca/registerEnroll.sh +++ b/test-network/organizations/fabric-ca/registerEnroll.sh @@ -1,21 +1,19 @@ -# execute - Prints and executes the command -function execute() { - echo -e "\033[0;32mCommand\033[0m: ${*}" - "${@}" -} -function info() { - echo -e "\033[0;33mINFO\033[0m: ${1}" -} function createOrg1 { - info "Enroll the CA admin" + + echo + echo "Enroll the CA admin" + echo mkdir -p organizations/peerOrganizations/org1.example.com/ export FABRIC_CA_CLIENT_HOME=${PWD}/organizations/peerOrganizations/org1.example.com/ +# rm -rf $FABRIC_CA_CLIENT_HOME/fabric-ca-client-config.yaml +# rm -rf $FABRIC_CA_CLIENT_HOME/msp - execute fabric-ca-client enroll -u https://admin:adminpw@localhost:7054 --caname ca-org1 --tls.certfiles ${PWD}/organizations/fabric-ca/org1/tls-cert.pem - echo + set -x + fabric-ca-client enroll -u https://admin:adminpw@localhost:7054 --caname ca-org1 --tls.certfiles ${PWD}/organizations/fabric-ca/org1/tls-cert.pem + set +x echo 'NodeOUs: Enable: true @@ -32,30 +30,46 @@ function createOrg1 { Certificate: cacerts/localhost-7054-ca-org1.pem OrganizationalUnitIdentifier: orderer' > ${PWD}/organizations/peerOrganizations/org1.example.com/msp/config.yaml - info "Register peer0" - execute fabric-ca-client register --caname ca-org1 --id.name peer0 --id.secret peer0pw --id.type peer --tls.certfiles ${PWD}/organizations/fabric-ca/org1/tls-cert.pem echo + echo "Register peer0" + echo + set -x + fabric-ca-client register --caname ca-org1 --id.name peer0 --id.secret peer0pw --id.type peer --tls.certfiles ${PWD}/organizations/fabric-ca/org1/tls-cert.pem + set +x - info "Register user" - execute fabric-ca-client register --caname ca-org1 --id.name user1 --id.secret user1pw --id.type client --tls.certfiles ${PWD}/organizations/fabric-ca/org1/tls-cert.pem echo + echo "Register user" + echo + set -x + fabric-ca-client register --caname ca-org1 --id.name user1 --id.secret user1pw --id.type client --tls.certfiles ${PWD}/organizations/fabric-ca/org1/tls-cert.pem + set +x - info "Register the org admin" - execute fabric-ca-client register --caname ca-org1 --id.name org1admin --id.secret org1adminpw --id.type admin --tls.certfiles ${PWD}/organizations/fabric-ca/org1/tls-cert.pem echo + echo "Register the org admin" + echo + set -x + fabric-ca-client register --caname ca-org1 --id.name org1admin --id.secret org1adminpw --id.type admin --tls.certfiles ${PWD}/organizations/fabric-ca/org1/tls-cert.pem + set +x mkdir -p organizations/peerOrganizations/org1.example.com/peers mkdir -p organizations/peerOrganizations/org1.example.com/peers/peer0.org1.example.com - info "Generate the peer0 msp" - execute fabric-ca-client enroll -u https://peer0:peer0pw@localhost:7054 --caname ca-org1 -M ${PWD}/organizations/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/msp --csr.hosts peer0.org1.example.com --tls.certfiles ${PWD}/organizations/fabric-ca/org1/tls-cert.pem echo + echo "## Generate the peer0 msp" + echo + set -x + fabric-ca-client enroll -u https://peer0:peer0pw@localhost:7054 --caname ca-org1 -M ${PWD}/organizations/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/msp --csr.hosts peer0.org1.example.com --tls.certfiles ${PWD}/organizations/fabric-ca/org1/tls-cert.pem + set +x cp ${PWD}/organizations/peerOrganizations/org1.example.com/msp/config.yaml ${PWD}/organizations/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/msp/config.yaml - info "Generate the peer0-tls certificates" - execute fabric-ca-client enroll -u https://peer0:peer0pw@localhost:7054 --caname ca-org1 -M ${PWD}/organizations/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls --enrollment.profile tls --csr.hosts peer0.org1.example.com --csr.hosts localhost --tls.certfiles ${PWD}/organizations/fabric-ca/org1/tls-cert.pem echo + echo "## Generate the peer0-tls certificates" + echo + set -x + fabric-ca-client enroll -u https://peer0:peer0pw@localhost:7054 --caname ca-org1 -M ${PWD}/organizations/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls --enrollment.profile tls --csr.hosts peer0.org1.example.com --csr.hosts localhost --tls.certfiles ${PWD}/organizations/fabric-ca/org1/tls-cert.pem + set +x + cp ${PWD}/organizations/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/tlscacerts/* ${PWD}/organizations/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt cp ${PWD}/organizations/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/signcerts/* ${PWD}/organizations/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/server.crt @@ -73,30 +87,43 @@ function createOrg1 { mkdir -p organizations/peerOrganizations/org1.example.com/users mkdir -p organizations/peerOrganizations/org1.example.com/users/User1@org1.example.com - info "Generate the user msp" - execute fabric-ca-client enroll -u https://user1:user1pw@localhost:7054 --caname ca-org1 -M ${PWD}/organizations/peerOrganizations/org1.example.com/users/User1@org1.example.com/msp --tls.certfiles ${PWD}/organizations/fabric-ca/org1/tls-cert.pem echo + echo "## Generate the user msp" + echo + set -x + fabric-ca-client enroll -u https://user1:user1pw@localhost:7054 --caname ca-org1 -M ${PWD}/organizations/peerOrganizations/org1.example.com/users/User1@org1.example.com/msp --tls.certfiles ${PWD}/organizations/fabric-ca/org1/tls-cert.pem + set +x cp ${PWD}/organizations/peerOrganizations/org1.example.com/msp/config.yaml ${PWD}/organizations/peerOrganizations/org1.example.com/users/User1@org1.example.com/msp/config.yaml mkdir -p organizations/peerOrganizations/org1.example.com/users/Admin@org1.example.com - info "Generate the org admin msp" - execute fabric-ca-client enroll -u https://org1admin:org1adminpw@localhost:7054 --caname ca-org1 -M ${PWD}/organizations/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp --tls.certfiles ${PWD}/organizations/fabric-ca/org1/tls-cert.pem echo + echo "## Generate the org admin msp" + echo + set -x + fabric-ca-client enroll -u https://org1admin:org1adminpw@localhost:7054 --caname ca-org1 -M ${PWD}/organizations/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp --tls.certfiles ${PWD}/organizations/fabric-ca/org1/tls-cert.pem + set +x cp ${PWD}/organizations/peerOrganizations/org1.example.com/msp/config.yaml ${PWD}/organizations/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp/config.yaml + } function createOrg2 { - info "Enroll the CA admin" + + echo + echo "Enroll the CA admin" + echo mkdir -p organizations/peerOrganizations/org2.example.com/ export FABRIC_CA_CLIENT_HOME=${PWD}/organizations/peerOrganizations/org2.example.com/ +# rm -rf $FABRIC_CA_CLIENT_HOME/fabric-ca-client-config.yaml +# rm -rf $FABRIC_CA_CLIENT_HOME/msp - execute fabric-ca-client enroll -u https://admin:adminpw@localhost:8054 --caname ca-org2 --tls.certfiles ${PWD}/organizations/fabric-ca/org2/tls-cert.pem - echo + set -x + fabric-ca-client enroll -u https://admin:adminpw@localhost:8054 --caname ca-org2 --tls.certfiles ${PWD}/organizations/fabric-ca/org2/tls-cert.pem + set +x echo 'NodeOUs: Enable: true @@ -113,30 +140,46 @@ function createOrg2 { Certificate: cacerts/localhost-8054-ca-org2.pem OrganizationalUnitIdentifier: orderer' > ${PWD}/organizations/peerOrganizations/org2.example.com/msp/config.yaml - info "Register peer0" - execute fabric-ca-client register --caname ca-org2 --id.name peer0 --id.secret peer0pw --id.type peer --tls.certfiles ${PWD}/organizations/fabric-ca/org2/tls-cert.pem echo + echo "Register peer0" + echo + set -x + fabric-ca-client register --caname ca-org2 --id.name peer0 --id.secret peer0pw --id.type peer --tls.certfiles ${PWD}/organizations/fabric-ca/org2/tls-cert.pem + set +x - info "Register user" - execute fabric-ca-client register --caname ca-org2 --id.name user1 --id.secret user1pw --id.type client --tls.certfiles ${PWD}/organizations/fabric-ca/org2/tls-cert.pem echo + echo "Register user" + echo + set -x + fabric-ca-client register --caname ca-org2 --id.name user1 --id.secret user1pw --id.type client --tls.certfiles ${PWD}/organizations/fabric-ca/org2/tls-cert.pem + set +x - info "Register the org admin" - execute fabric-ca-client register --caname ca-org2 --id.name org2admin --id.secret org2adminpw --id.type admin --tls.certfiles ${PWD}/organizations/fabric-ca/org2/tls-cert.pem echo + echo "Register the org admin" + echo + set -x + fabric-ca-client register --caname ca-org2 --id.name org2admin --id.secret org2adminpw --id.type admin --tls.certfiles ${PWD}/organizations/fabric-ca/org2/tls-cert.pem + set +x mkdir -p organizations/peerOrganizations/org2.example.com/peers mkdir -p organizations/peerOrganizations/org2.example.com/peers/peer0.org2.example.com - info "Generate the peer0 msp" - execute fabric-ca-client enroll -u https://peer0:peer0pw@localhost:8054 --caname ca-org2 -M ${PWD}/organizations/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/msp --csr.hosts peer0.org2.example.com --tls.certfiles ${PWD}/organizations/fabric-ca/org2/tls-cert.pem echo + echo "## Generate the peer0 msp" + echo + set -x + fabric-ca-client enroll -u https://peer0:peer0pw@localhost:8054 --caname ca-org2 -M ${PWD}/organizations/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/msp --csr.hosts peer0.org2.example.com --tls.certfiles ${PWD}/organizations/fabric-ca/org2/tls-cert.pem + set +x cp ${PWD}/organizations/peerOrganizations/org2.example.com/msp/config.yaml ${PWD}/organizations/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/msp/config.yaml - info "Generate the peer0-tls certificates" - execute fabric-ca-client enroll -u https://peer0:peer0pw@localhost:8054 --caname ca-org2 -M ${PWD}/organizations/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls --enrollment.profile tls --csr.hosts peer0.org2.example.com --csr.hosts localhost --tls.certfiles ${PWD}/organizations/fabric-ca/org2/tls-cert.pem echo + echo "## Generate the peer0-tls certificates" + echo + set -x + fabric-ca-client enroll -u https://peer0:peer0pw@localhost:8054 --caname ca-org2 -M ${PWD}/organizations/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls --enrollment.profile tls --csr.hosts peer0.org2.example.com --csr.hosts localhost --tls.certfiles ${PWD}/organizations/fabric-ca/org2/tls-cert.pem + set +x + cp ${PWD}/organizations/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/tlscacerts/* ${PWD}/organizations/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt cp ${PWD}/organizations/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/signcerts/* ${PWD}/organizations/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/server.crt @@ -154,29 +197,42 @@ function createOrg2 { mkdir -p organizations/peerOrganizations/org2.example.com/users mkdir -p organizations/peerOrganizations/org2.example.com/users/User1@org2.example.com - info "Generate the user msp" - execute fabric-ca-client enroll -u https://user1:user1pw@localhost:8054 --caname ca-org2 -M ${PWD}/organizations/peerOrganizations/org2.example.com/users/User1@org2.example.com/msp --tls.certfiles ${PWD}/organizations/fabric-ca/org2/tls-cert.pem echo + echo "## Generate the user msp" + echo + set -x + fabric-ca-client enroll -u https://user1:user1pw@localhost:8054 --caname ca-org2 -M ${PWD}/organizations/peerOrganizations/org2.example.com/users/User1@org2.example.com/msp --tls.certfiles ${PWD}/organizations/fabric-ca/org2/tls-cert.pem + set +x cp ${PWD}/organizations/peerOrganizations/org2.example.com/msp/config.yaml ${PWD}/organizations/peerOrganizations/org2.example.com/users/User1@org2.example.com/msp/config.yaml mkdir -p organizations/peerOrganizations/org2.example.com/users/Admin@org2.example.com - info "Generate the org admin msp" - execute fabric-ca-client enroll -u https://org2admin:org2adminpw@localhost:8054 --caname ca-org2 -M ${PWD}/organizations/peerOrganizations/org2.example.com/users/Admin@org2.example.com/msp --tls.certfiles ${PWD}/organizations/fabric-ca/org2/tls-cert.pem echo + echo "## Generate the org admin msp" + echo + set -x + fabric-ca-client enroll -u https://org2admin:org2adminpw@localhost:8054 --caname ca-org2 -M ${PWD}/organizations/peerOrganizations/org2.example.com/users/Admin@org2.example.com/msp --tls.certfiles ${PWD}/organizations/fabric-ca/org2/tls-cert.pem + set +x cp ${PWD}/organizations/peerOrganizations/org2.example.com/msp/config.yaml ${PWD}/organizations/peerOrganizations/org2.example.com/users/Admin@org2.example.com/msp/config.yaml + } function createOrderer { - info "Enroll the CA admin" + + echo + echo "Enroll the CA admin" + echo mkdir -p organizations/ordererOrganizations/example.com export FABRIC_CA_CLIENT_HOME=${PWD}/organizations/ordererOrganizations/example.com +# rm -rf $FABRIC_CA_CLIENT_HOME/fabric-ca-client-config.yaml +# rm -rf $FABRIC_CA_CLIENT_HOME/msp - execute fabric-ca-client enroll -u https://admin:adminpw@localhost:9054 --caname ca-orderer --tls.certfiles ${PWD}/organizations/fabric-ca/ordererOrg/tls-cert.pem - echo + set -x + fabric-ca-client enroll -u https://admin:adminpw@localhost:9054 --caname ca-orderer --tls.certfiles ${PWD}/organizations/fabric-ca/ordererOrg/tls-cert.pem + set +x echo 'NodeOUs: Enable: true @@ -193,27 +249,41 @@ function createOrderer { Certificate: cacerts/localhost-9054-ca-orderer.pem OrganizationalUnitIdentifier: orderer' > ${PWD}/organizations/ordererOrganizations/example.com/msp/config.yaml - info "Register orderer" - execute fabric-ca-client register --caname ca-orderer --id.name orderer --id.secret ordererpw --id.type orderer --tls.certfiles ${PWD}/organizations/fabric-ca/ordererOrg/tls-cert.pem - echo - info "Register the orderer admin" - execute fabric-ca-client register --caname ca-orderer --id.name ordererAdmin --id.secret ordererAdminpw --id.type admin --tls.certfiles ${PWD}/organizations/fabric-ca/ordererOrg/tls-cert.pem echo + echo "Register orderer" + echo + set -x + fabric-ca-client register --caname ca-orderer --id.name orderer --id.secret ordererpw --id.type orderer --tls.certfiles ${PWD}/organizations/fabric-ca/ordererOrg/tls-cert.pem + set +x + + echo + echo "Register the orderer admin" + echo + set -x + fabric-ca-client register --caname ca-orderer --id.name ordererAdmin --id.secret ordererAdminpw --id.type admin --tls.certfiles ${PWD}/organizations/fabric-ca/ordererOrg/tls-cert.pem + set +x mkdir -p organizations/ordererOrganizations/example.com/orderers mkdir -p organizations/ordererOrganizations/example.com/orderers/example.com + mkdir -p organizations/ordererOrganizations/example.com/orderers/orderer.example.com - info "Generate the orderer msp" - execute fabric-ca-client enroll -u https://orderer:ordererpw@localhost:9054 --caname ca-orderer -M ${PWD}/organizations/ordererOrganizations/example.com/orderers/orderer.example.com/msp --csr.hosts orderer.example.com --csr.hosts localhost --tls.certfiles ${PWD}/organizations/fabric-ca/ordererOrg/tls-cert.pem echo + echo "## Generate the orderer msp" + echo + set -x + fabric-ca-client enroll -u https://orderer:ordererpw@localhost:9054 --caname ca-orderer -M ${PWD}/organizations/ordererOrganizations/example.com/orderers/orderer.example.com/msp --csr.hosts orderer.example.com --csr.hosts localhost --tls.certfiles ${PWD}/organizations/fabric-ca/ordererOrg/tls-cert.pem + set +x cp ${PWD}/organizations/ordererOrganizations/example.com/msp/config.yaml ${PWD}/organizations/ordererOrganizations/example.com/orderers/orderer.example.com/msp/config.yaml - info "Generate the orderer-tls certificates" - execute fabric-ca-client enroll -u https://orderer:ordererpw@localhost:9054 --caname ca-orderer -M ${PWD}/organizations/ordererOrganizations/example.com/orderers/orderer.example.com/tls --enrollment.profile tls --csr.hosts orderer.example.com --csr.hosts localhost --tls.certfiles ${PWD}/organizations/fabric-ca/ordererOrg/tls-cert.pem echo + echo "## Generate the orderer-tls certificates" + echo + set -x + fabric-ca-client enroll -u https://orderer:ordererpw@localhost:9054 --caname ca-orderer -M ${PWD}/organizations/ordererOrganizations/example.com/orderers/orderer.example.com/tls --enrollment.profile tls --csr.hosts orderer.example.com --csr.hosts localhost --tls.certfiles ${PWD}/organizations/fabric-ca/ordererOrg/tls-cert.pem + set +x cp ${PWD}/organizations/ordererOrganizations/example.com/orderers/orderer.example.com/tls/tlscacerts/* ${PWD}/organizations/ordererOrganizations/example.com/orderers/orderer.example.com/tls/ca.crt cp ${PWD}/organizations/ordererOrganizations/example.com/orderers/orderer.example.com/tls/signcerts/* ${PWD}/organizations/ordererOrganizations/example.com/orderers/orderer.example.com/tls/server.crt @@ -228,9 +298,14 @@ function createOrderer { mkdir -p organizations/ordererOrganizations/example.com/users mkdir -p organizations/ordererOrganizations/example.com/users/Admin@example.com - info "Generate the admin msp" - execute fabric-ca-client enroll -u https://ordererAdmin:ordererAdminpw@localhost:9054 --caname ca-orderer -M ${PWD}/organizations/ordererOrganizations/example.com/users/Admin@example.com/msp --tls.certfiles ${PWD}/organizations/fabric-ca/ordererOrg/tls-cert.pem echo + echo "## Generate the admin msp" + echo + set -x + fabric-ca-client enroll -u https://ordererAdmin:ordererAdminpw@localhost:9054 --caname ca-orderer -M ${PWD}/organizations/ordererOrganizations/example.com/users/Admin@example.com/msp --tls.certfiles ${PWD}/organizations/fabric-ca/ordererOrg/tls-cert.pem + set +x cp ${PWD}/organizations/ordererOrganizations/example.com/msp/config.yaml ${PWD}/organizations/ordererOrganizations/example.com/users/Admin@example.com/msp/config.yaml + + } diff --git a/test-network/scripts/createChannel.sh b/test-network/scripts/createChannel.sh index a8e6e211..1bf050ae 100755 --- a/test-network/scripts/createChannel.sh +++ b/test-network/scripts/createChannel.sh @@ -13,41 +13,38 @@ VERBOSE="$4" # import utils . scripts/envVar.sh -# execute - Prints and executes the command -function execute() { - echo -e "\033[0;32mCommand\033[0m: ${*}" - echo -e "\033[0;32mOutput\033[0m:" - "${@}" -} - -function info() { - echo -e "\033[0;33mINFO\033[0m: ${1}" -} - if [ ! -d "channel-artifacts" ]; then mkdir channel-artifacts fi createChannelTx() { - execute configtxgen -profile TwoOrgsChannel -outputCreateChannelTx ./channel-artifacts/${CHANNEL_NAME}.tx -channelID $CHANNEL_NAME + + set -x + configtxgen -profile TwoOrgsChannel -outputCreateChannelTx ./channel-artifacts/${CHANNEL_NAME}.tx -channelID $CHANNEL_NAME res=$? + set +x if [ $res -ne 0 ]; then echo "Failed to generate channel configuration transaction..." exit 1 fi echo + } createAncorPeerTx() { + for orgmsp in Org1MSP Org2MSP; do - info "Generating anchor peer update transaction for ${orgmsp}" - execute configtxgen -profile TwoOrgsChannel -outputAnchorPeersUpdate ./channel-artifacts/${orgmsp}anchors.tx -channelID $CHANNEL_NAME -asOrg ${orgmsp} - res=$? - if [ $res -ne 0 ]; then - echo "Failed to generate anchor peer update transaction for ${orgmsp}..." - exit 1 - fi - echo + + echo "####### Generating anchor peer update transaction for ${orgmsp} ##########" + set -x + configtxgen -profile TwoOrgsChannel -outputAnchorPeersUpdate ./channel-artifacts/${orgmsp}anchors.tx -channelID $CHANNEL_NAME -asOrg ${orgmsp} + res=$? + set +x + if [ $res -ne 0 ]; then + echo "Failed to generate anchor peer update transaction for ${orgmsp}..." + exit 1 + fi + echo done } @@ -58,14 +55,17 @@ createChannel() { local COUNTER=1 while [ $rc -ne 0 -a $COUNTER -lt $MAX_RETRY ] ; do sleep $DELAY - execute peer channel create -o localhost:7050 -c $CHANNEL_NAME --ordererTLSHostnameOverride orderer.example.com -f ./channel-artifacts/${CHANNEL_NAME}.tx --outputBlock ./channel-artifacts/${CHANNEL_NAME}.block --tls --cafile $ORDERER_CA >&log.txt + set -x + peer channel create -o localhost:7050 -c $CHANNEL_NAME --ordererTLSHostnameOverride orderer.example.com -f ./channel-artifacts/${CHANNEL_NAME}.tx --outputBlock ./channel-artifacts/${CHANNEL_NAME}.block --tls --cafile $ORDERER_CA >&log.txt res=$? + set +x let rc=$res COUNTER=$(expr $COUNTER + 1) done cat log.txt verifyResult $res "Channel creation failed" - info "Channel ${CHANNEL_NAME} created" + echo + echo "===================== Channel '$CHANNEL_NAME' created ===================== " echo } @@ -76,16 +76,18 @@ joinChannel() { local rc=1 local COUNTER=1 ## Sometimes Join takes time, hence retry - while [ $rc -ne 0 ] && [ $COUNTER -lt $MAX_RETRY ] ; do + while [ $rc -ne 0 -a $COUNTER -lt $MAX_RETRY ] ; do sleep $DELAY - execute peer channel join -b ./channel-artifacts/$CHANNEL_NAME.block >&log.txt + set -x + peer channel join -b ./channel-artifacts/$CHANNEL_NAME.block >&log.txt res=$? + set +x let rc=$res - COUNTER=$((COUNTER + 1)) + COUNTER=$(expr $COUNTER + 1) done cat log.txt - verifyResult $res "After $MAX_RETRY attempts, peer0.org${ORG} has failed to join channel '$CHANNEL_NAME' " echo + verifyResult $res "After $MAX_RETRY attempts, peer0.org${ORG} has failed to join channel '$CHANNEL_NAME' " } updateAnchorPeers() { @@ -96,21 +98,23 @@ updateAnchorPeers() { ## Sometimes Join takes time, hence retry while [ $rc -ne 0 -a $COUNTER -lt $MAX_RETRY ] ; do sleep $DELAY - execute peer channel update -o localhost:7050 --ordererTLSHostnameOverride orderer.example.com -c $CHANNEL_NAME -f ./channel-artifacts/${CORE_PEER_LOCALMSPID}anchors.tx --tls --cafile $ORDERER_CA >&log.txt + set -x + peer channel update -o localhost:7050 --ordererTLSHostnameOverride orderer.example.com -c $CHANNEL_NAME -f ./channel-artifacts/${CORE_PEER_LOCALMSPID}anchors.tx --tls --cafile $ORDERER_CA >&log.txt res=$? + set +x let rc=$res COUNTER=$(expr $COUNTER + 1) done cat log.txt verifyResult $res "Anchor peer update failed" - info "Anchor peers updated for org ${CORE_PEER_LOCALMSPID} on channel ${CHANNEL_NAME}" + echo "===================== Anchor peers updated for org '$CORE_PEER_LOCALMSPID' on channel '$CHANNEL_NAME' ===================== " sleep $DELAY echo } verifyResult() { if [ $1 -ne 0 ]; then - echo "!!!!!!!!!!!!!!! ${2} !!!!!!!!!!!!!!!!" + echo "!!!!!!!!!!!!!!! "$2" !!!!!!!!!!!!!!!!" echo exit 1 fi @@ -119,30 +123,33 @@ verifyResult() { FABRIC_CFG_PATH=${PWD}/configtx ## Create channeltx -echo -info "Generating channel create transaction ${CHANNEL_NAME}.tx" +echo "### Generating channel create transaction '${CHANNEL_NAME}.tx' ###" createChannelTx ## Create anchorpeertx -info "Generating anchor peer update transactions" +echo "### Generating anchor peer update transactions ###" createAncorPeerTx FABRIC_CFG_PATH=$PWD/../config/ ## Create channel -info "Creating channel ${CHANNEL_NAME}" +echo "Creating channel "$CHANNEL_NAME createChannel ## Join all the peers to the channel -info "Join Org1 peers to the channel" +echo "Join Org1 peers to the channel..." joinChannel 1 -info "Join Org2 peers to the channel" +echo "Join Org2 peers to the channel..." joinChannel 2 ## Set the anchor peers for each org in the channel -info "Updating anchor peers for org1" +echo "Updating anchor peers for org1..." updateAnchorPeers 1 -info "Updating anchor peers for org2" +echo "Updating anchor peers for org2..." updateAnchorPeers 2 -info "Channel successfully joined" +echo +echo "========= Channel successfully joined =========== " +echo + +exit 0 diff --git a/test-network/scripts/deployCC.sh b/test-network/scripts/deployCC.sh index eb9cbd92..daa434c6 100755 --- a/test-network/scripts/deployCC.sh +++ b/test-network/scripts/deployCC.sh @@ -29,22 +29,12 @@ CC_SRC_LANGUAGE=`echo "$CC_SRC_LANGUAGE" | tr [:upper:] [:lower:]` FABRIC_CFG_PATH=$PWD/../config/ -# execute - Prints and executes the command -function execute() { - echo -e "\033[0;32mCommand\033[0m: ${*}" - echo -e "\033[0;32mOutput\033[0m:" - "${@}" -} -function info() { - echo -e "\033[0;33mINFO\033[0m: ${1}" -} # User has not provided a path, therefore the CC_NAME must # be the short name of a known chaincode sample -echo if [ "$CC_SRC_PATH" = "NA" ]; then - info "Determining the path to the chaincode" + echo Determining the path to the chaincode # first see which chaincode we have. This will be based on the # short name of the known chaincode sample if [ "$CC_NAME" = "basic" ]; then @@ -87,26 +77,25 @@ elif [ ! -d "$CC_SRC_PATH" ]; then echo Path to chaincode does not exist. Please provide different path exit 1 fi -echo # do some language specific preparation to the chaincode before packaging if [ "$CC_SRC_LANGUAGE" = "go" ]; then CC_RUNTIME_LANGUAGE=golang - info "Vendoring Go dependencies at ${CC_SRC_PATH}" + echo Vendoring Go dependencies at $CC_SRC_PATH pushd $CC_SRC_PATH GO111MODULE=on go mod vendor popd - info "Finished vendoring Go dependencies" + echo Finished vendoring Go dependencies elif [ "$CC_SRC_LANGUAGE" = "java" ]; then CC_RUNTIME_LANGUAGE=java - info "Compiling Java code" + echo Compiling Java code ... pushd $CC_SRC_PATH ./gradlew installDist popd - info "Finished compiling Java code" + echo Finished compiling Java code CC_SRC_PATH=$CC_SRC_PATH/build/install/$CC_NAME elif [ "$CC_SRC_LANGUAGE" = "javascript" ]; then @@ -115,12 +104,12 @@ elif [ "$CC_SRC_LANGUAGE" = "javascript" ]; then elif [ "$CC_SRC_LANGUAGE" = "typescript" ]; then CC_RUNTIME_LANGUAGE=node - info "Compiling TypeScript code into JavaScript" + echo Compiling TypeScript code into JavaScript ... pushd $CC_SRC_PATH npm install npm run build popd - info "Finished compiling TypeScript code into JavaScript" + echo Finished compiling TypeScript code into JavaScript else echo The chaincode language ${CC_SRC_LANGUAGE} is not supported by this script @@ -146,6 +135,11 @@ else CC_COLL_CONFIG="--collections-config $CC_COLL_CONFIG" fi + +#if [ "$CC_INIT_FCN" = "NA" ]; then +# INIT_REQUIRED="" +#fi + # import utils . scripts/envVar.sh @@ -153,11 +147,13 @@ fi packageChaincode() { ORG=$1 setGlobals $ORG - execute peer lifecycle chaincode package ${CC_NAME}.tar.gz --path ${CC_SRC_PATH} --lang ${CC_RUNTIME_LANGUAGE} --label ${CC_NAME}_${CC_VERSION} >&log.txt + set -x + peer lifecycle chaincode package ${CC_NAME}.tar.gz --path ${CC_SRC_PATH} --lang ${CC_RUNTIME_LANGUAGE} --label ${CC_NAME}_${CC_VERSION} >&log.txt res=$? + set +x cat log.txt verifyResult $res "Chaincode packaging on peer0.org${ORG} has failed" - info " Chaincode is packaged on peer0.org${ORG}" + echo "===================== Chaincode is packaged on peer0.org${ORG} ===================== " echo } @@ -165,11 +161,13 @@ packageChaincode() { installChaincode() { ORG=$1 setGlobals $ORG - execute peer lifecycle chaincode install ${CC_NAME}.tar.gz >&log.txt + set -x + peer lifecycle chaincode install ${CC_NAME}.tar.gz >&log.txt res=$? + set +x cat log.txt verifyResult $res "Chaincode installation on peer0.org${ORG} has failed" - info "Chaincode is installed on peer0.org${ORG}" + echo "===================== Chaincode is installed on peer0.org${ORG} ===================== " echo } @@ -177,12 +175,14 @@ installChaincode() { queryInstalled() { ORG=$1 setGlobals $ORG - execute peer lifecycle chaincode queryinstalled >&log.txt + set -x + peer lifecycle chaincode queryinstalled >&log.txt res=$? + set +x cat log.txt PACKAGE_ID=$(sed -n "/${CC_NAME}_${CC_VERSION}/{s/^Package ID: //; s/, Label:.*$//; p;}" log.txt) verifyResult $res "Query installed on peer0.org${ORG} has failed" - info "Query installed successful on peer0.org${ORG} on channel" + echo "===================== Query installed successful on peer0.org${ORG} on channel ===================== " echo } @@ -190,10 +190,12 @@ queryInstalled() { approveForMyOrg() { ORG=$1 setGlobals $ORG - execute peer lifecycle chaincode approveformyorg -o localhost:7050 --ordererTLSHostnameOverride orderer.example.com --tls --cafile $ORDERER_CA --channelID $CHANNEL_NAME --name ${CC_NAME} --version ${CC_VERSION} --package-id ${PACKAGE_ID} --sequence ${CC_SEQUENCE} ${INIT_REQUIRED} ${CC_END_POLICY} ${CC_COLL_CONFIG} >&log.txt + set -x + peer lifecycle chaincode approveformyorg -o localhost:7050 --ordererTLSHostnameOverride orderer.example.com --tls --cafile $ORDERER_CA --channelID $CHANNEL_NAME --name ${CC_NAME} --version ${CC_VERSION} --package-id ${PACKAGE_ID} --sequence ${CC_SEQUENCE} ${INIT_REQUIRED} ${CC_END_POLICY} ${CC_COLL_CONFIG} >&log.txt + set +x cat log.txt verifyResult $res "Chaincode definition approved on peer0.org${ORG} on channel '$CHANNEL_NAME' failed" - info "Chaincode definition approved on peer0.org${ORG} on channel ${CHANNEL_NAME}" + echo "===================== Chaincode definition approved on peer0.org${ORG} on channel '$CHANNEL_NAME' ===================== " echo } @@ -202,16 +204,18 @@ checkCommitReadiness() { ORG=$1 shift 1 setGlobals $ORG - info "Checking the commit readiness of the chaincode definition on peer0.org${ORG} on channel ${CHANNEL_NAME}" + echo "===================== Checking the commit readiness of the chaincode definition on peer0.org${ORG} on channel '$CHANNEL_NAME'... ===================== " local rc=1 local COUNTER=1 # continue to poll # we either get a successful response, or reach MAX RETRY - while [ $rc -ne 0 ] && [ $COUNTER -lt $MAX_RETRY ]; do + while [ $rc -ne 0 -a $COUNTER -lt $MAX_RETRY ]; do sleep $DELAY - info "Checking the commit readiness of the chaincode definition on peer0.org${ORG}, Retry after ${DELAY} seconds" - execute peer lifecycle chaincode checkcommitreadiness --channelID $CHANNEL_NAME --name ${CC_NAME} --version ${CC_VERSION} --sequence ${CC_SEQUENCE} ${INIT_REQUIRED} ${CC_END_POLICY} ${CC_COLL_CONFIG} --output json >&log.txt + echo "Attempting to check the commit readiness of the chaincode definition on peer0.org${ORG}, Retry after $DELAY seconds." + set -x + peer lifecycle chaincode checkcommitreadiness --channelID $CHANNEL_NAME --name ${CC_NAME} --version ${CC_VERSION} --sequence ${CC_SEQUENCE} ${INIT_REQUIRED} ${CC_END_POLICY} ${CC_COLL_CONFIG} --output json >&log.txt res=$? + set +x let rc=0 for var in "$@"; do grep "$var" log.txt &>/dev/null || let rc=1 @@ -220,30 +224,31 @@ checkCommitReadiness() { done cat log.txt if test $rc -eq 0; then - info "Checking the commit readiness of the chaincode definition successful on peer0.org${ORG} on channel ${CHANNEL_NAME}" + echo "===================== Checking the commit readiness of the chaincode definition successful on peer0.org${ORG} on channel '$CHANNEL_NAME' ===================== " else echo echo $'\e[1;31m'"!!!!!!!!!!!!!!! After $MAX_RETRY attempts, Check commit readiness result on peer0.org${ORG} is INVALID !!!!!!!!!!!!!!!!"$'\e[0m' echo exit 1 fi - echo } # commitChaincodeDefinition VERSION PEER ORG (PEER ORG)... commitChaincodeDefinition() { - parsePeerConnectionParameters "$@" + 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 - execute peer lifecycle chaincode commit -o localhost:7050 --ordererTLSHostnameOverride orderer.example.com --tls --cafile $ORDERER_CA --channelID $CHANNEL_NAME --name ${CC_NAME} $PEER_CONN_PARMS --version ${CC_VERSION} --sequence ${CC_SEQUENCE} ${INIT_REQUIRED} ${CC_END_POLICY} ${CC_COLL_CONFIG} >&log.txt + set -x + peer lifecycle chaincode commit -o localhost:7050 --ordererTLSHostnameOverride orderer.example.com --tls --cafile $ORDERER_CA --channelID $CHANNEL_NAME --name ${CC_NAME} $PEER_CONN_PARMS --version ${CC_VERSION} --sequence ${CC_SEQUENCE} ${INIT_REQUIRED} ${CC_END_POLICY} ${CC_COLL_CONFIG} >&log.txt res=$? + set +x cat log.txt verifyResult $res "Chaincode definition commit failed on peer0.org${ORG} on channel '$CHANNEL_NAME' failed" - info "Chaincode definition committed on channel '${CHANNEL_NAME}" + echo "===================== Chaincode definition committed on channel '$CHANNEL_NAME' ===================== " echo } @@ -252,16 +257,18 @@ queryCommitted() { ORG=$1 setGlobals $ORG EXPECTED_RESULT="Version: ${CC_VERSION}, Sequence: ${CC_SEQUENCE}, Endorsement Plugin: escc, Validation Plugin: vscc" - info "Querying chaincode definition on peer0.org${ORG} on channel ${CHANNEL_NAME}" + echo "===================== Querying chaincode definition on peer0.org${ORG} on channel '$CHANNEL_NAME'... ===================== " local rc=1 local COUNTER=1 # continue to poll # we either get a successful response, or reach MAX RETRY - while [ $rc -ne 0 ] && [ $COUNTER -lt $MAX_RETRY ]; do + while [ $rc -ne 0 -a $COUNTER -lt $MAX_RETRY ]; do sleep $DELAY - info "Attempting to Query committed status on peer0.org${ORG}, Retry after ${DELAY} seconds." - execute peer lifecycle chaincode querycommitted --channelID $CHANNEL_NAME --name ${CC_NAME} >&log.txt + echo "Attempting to Query committed status on peer0.org${ORG}, Retry after $DELAY seconds." + set -x + peer lifecycle chaincode querycommitted --channelID $CHANNEL_NAME --name ${CC_NAME} >&log.txt res=$? + set +x test $res -eq 0 && VALUE=$(cat log.txt | grep -o '^Version: '$CC_VERSION', Sequence: [0-9], Endorsement Plugin: escc, Validation Plugin: vscc') test "$VALUE" = "$EXPECTED_RESULT" && let rc=0 COUNTER=$(expr $COUNTER + 1) @@ -269,70 +276,74 @@ queryCommitted() { echo cat log.txt if test $rc -eq 0; then - info "Query chaincode definition successful on peer0.org${ORG} on channel ${CHANNEL_NAME}" + echo "===================== Query chaincode definition successful on peer0.org${ORG} on channel '$CHANNEL_NAME' ===================== " + echo else echo echo $'\e[1;31m'"!!!!!!!!!!!!!!! After $MAX_RETRY attempts, Query chaincode definition result on peer0.org${ORG} is INVALID !!!!!!!!!!!!!!!!"$'\e[0m' echo exit 1 fi - echo } chaincodeInvokeInit() { - parsePeerConnectionParameters "$@" + 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 + set -x fcn_call='{"function":"'${CC_INIT_FCN}'","Args":[]}' - info "invoke fcn call:${fcn_call}" - execute peer chaincode invoke -o localhost:7050 --ordererTLSHostnameOverride orderer.example.com --tls --cafile $ORDERER_CA -C $CHANNEL_NAME -n ${CC_NAME} $PEER_CONN_PARMS --isInit -c ${fcn_call} >&log.txt + echo invoke fcn call:${fcn_call} + peer chaincode invoke -o localhost:7050 --ordererTLSHostnameOverride orderer.example.com --tls --cafile $ORDERER_CA -C $CHANNEL_NAME -n ${CC_NAME} $PEER_CONN_PARMS --isInit -c ${fcn_call} >&log.txt res=$? + set +x cat log.txt verifyResult $res "Invoke execution on $PEERS failed " - info "Invoke transaction successful on $PEERS on channel ${CHANNEL_NAME}" + echo "===================== Invoke transaction successful on $PEERS on channel '$CHANNEL_NAME' ===================== " echo } chaincodeQuery() { ORG=$1 setGlobals $ORG - info "Querying on peer0.org${ORG} on channel ${CHANNEL_NAME}" + echo "===================== Querying on peer0.org${ORG} on channel '$CHANNEL_NAME'... ===================== " local rc=1 local COUNTER=1 # continue to poll # we either get a successful response, or reach MAX RETRY - while [ $rc -ne 0 ] && [ $COUNTER -lt $MAX_RETRY ]; do + while [ $rc -ne 0 -a $COUNTER -lt $MAX_RETRY ]; do sleep $DELAY - info "Attempting to Query peer0.org${ORG}, Retry after ${DELAY} seconds." - execute peer chaincode query -C $CHANNEL_NAME -n ${CC_NAME} -c '{"Args":["queryAllCars"]}' >&log.txt + echo "Attempting to Query peer0.org${ORG}, Retry after $DELAY seconds." + set -x + peer chaincode query -C $CHANNEL_NAME -n ${CC_NAME} -c '{"Args":["queryAllCars"]}' >&log.txt res=$? + set +x let rc=$res - COUNTER=$((COUNTER + 1)) + COUNTER=$(expr $COUNTER + 1) done echo cat log.txt if test $rc -eq 0; then - info "Query successful on peer0.org${ORG} on channel ${CHANNEL_NAME}" + echo "===================== Query successful on peer0.org${ORG} on channel '$CHANNEL_NAME' ===================== " + echo else echo echo $'\e[1;31m'"!!!!!!!!!!!!!!! After $MAX_RETRY attempts, Query result on peer0.org${ORG} is INVALID !!!!!!!!!!!!!!!!"$'\e[0m' echo exit 1 fi - echo } ## package the chaincode packageChaincode 1 ## Install chaincode on peer0.org1 and peer0.org2 -info "Installing chaincode on peer0.org1" +echo "Installing chaincode on peer0.org1..." installChaincode 1 -info "Install chaincode on peer0.org2" +echo "Install chaincode on peer0.org2..." installChaincode 2 ## query whether the chaincode is installed @@ -364,8 +375,10 @@ queryCommitted 2 ## Invoke the chaincode - this does require that the chaincode have the 'initLedger' ## method defined if [ "$CC_INIT_FCN" = "NA" ]; then - info "Chaincode initialization is not required" + echo "===================== Chaincode initialization is not required ===================== " echo else chaincodeInvokeInit 1 2 fi + +exit 0 diff --git a/test-network/scripts/envVar.sh b/test-network/scripts/envVar.sh index 77c716bd..6ab0aaa0 100755 --- a/test-network/scripts/envVar.sh +++ b/test-network/scripts/envVar.sh @@ -12,10 +12,6 @@ export PEER0_ORG1_CA=${PWD}/organizations/peerOrganizations/org1.example.com/pee export PEER0_ORG2_CA=${PWD}/organizations/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt export PEER0_ORG3_CA=${PWD}/organizations/peerOrganizations/org3.example.com/peers/peer0.org3.example.com/tls/ca.crt -function info() { - echo -e "\033[0;33mINFO\033[0m: ${1}" -} - # Set OrdererOrg.Admin globals setOrdererGlobals() { export CORE_PEER_LOCALMSPID="OrdererMSP" @@ -31,7 +27,7 @@ setGlobals() { else USING_ORG="${OVERRIDE_ORG}" fi - info "Using organization ${USING_ORG}" + echo "Using organization ${USING_ORG}" if [ $USING_ORG -eq 1 ]; then export CORE_PEER_LOCALMSPID="Org1MSP" export CORE_PEER_TLS_ROOTCERT_FILE=$PEER0_ORG1_CA diff --git a/test-network/scripts/org3-scripts/step1org3.sh b/test-network/scripts/org3-scripts/step1org3.sh index bdb9b0d6..2e0dc0ea 100755 --- a/test-network/scripts/org3-scripts/step1org3.sh +++ b/test-network/scripts/org3-scripts/step1org3.sh @@ -25,11 +25,6 @@ MAX_RETRY=5 # import environment variables . scripts/org3-scripts/envVarCLI.sh -# execute - Prints and executes the command -function execute() { - echo -e "\033[0;32mCommand\033[0m: ${*}" - "${@}" -} # fetchChannelConfig # Writes the current channel config for a given channel to a JSON file @@ -43,10 +38,14 @@ fetchChannelConfig() { setGlobals $ORG echo "Fetching the most recent configuration block for the channel" - execute peer channel fetch config config_block.pb -o orderer.example.com:7050 --ordererTLSHostnameOverride orderer.example.com -c $CHANNEL --tls --cafile $ORDERER_CA + set -x + peer channel fetch config config_block.pb -o orderer.example.com:7050 --ordererTLSHostnameOverride orderer.example.com -c $CHANNEL --tls --cafile $ORDERER_CA + set +x echo "Decoding config block to JSON and isolating config to ${OUTPUT}" - execute configtxlator proto_decode --input config_block.pb --type common.Block | jq .data.data[0].payload.data.config >"${OUTPUT}" + set -x + configtxlator proto_decode --input config_block.pb --type common.Block | jq .data.data[0].payload.data.config >"${OUTPUT}" + set +x } # createConfigUpdate @@ -58,13 +57,14 @@ createConfigUpdate() { MODIFIED=$3 OUTPUT=$4 - execute configtxlator proto_encode --input "${ORIGINAL}" --type common.Config >original_config.pb - execute configtxlator proto_encode --input "${MODIFIED}" --type common.Config >modified_config.pb - execute configtxlator compute_update --channel_id "${CHANNEL}" --original original_config.pb --updated modified_config.pb >config_update.pb - execute configtxlator proto_decode --input config_update.pb --type common.ConfigUpdate >config_update.json - # TODO - execute echo '{"payload":{"header":{"channel_header":{"channel_id":"'$CHANNEL'", "type":2}},"data":{"config_update":'$(cat config_update.json)'}}}' | jq . >config_update_in_envelope.json - execute configtxlator proto_encode --input config_update_in_envelope.json --type common.Envelope >"${OUTPUT}" + set -x + configtxlator proto_encode --input "${ORIGINAL}" --type common.Config >original_config.pb + configtxlator proto_encode --input "${MODIFIED}" --type common.Config >modified_config.pb + configtxlator compute_update --channel_id "${CHANNEL}" --original original_config.pb --updated modified_config.pb >config_update.pb + configtxlator proto_decode --input config_update.pb --type common.ConfigUpdate >config_update.json + echo '{"payload":{"header":{"channel_header":{"channel_id":"'$CHANNEL'", "type":2}},"data":{"config_update":'$(cat config_update.json)'}}}' | jq . >config_update_in_envelope.json + configtxlator proto_encode --input config_update_in_envelope.json --type common.Envelope >"${OUTPUT}" + set +x } # signConfigtxAsPeerOrg @@ -73,7 +73,9 @@ signConfigtxAsPeerOrg() { PEERORG=$1 TX=$2 setGlobals $PEERORG - execute peer channel signconfigtx -f "${TX}" + set -x + peer channel signconfigtx -f "${TX}" + set +x } echo @@ -84,7 +86,9 @@ echo fetchChannelConfig 1 ${CHANNEL_NAME} config.json # Modify the configuration to append the new org -execute jq -s '.[0] * {"channel_group":{"groups":{"Application":{"groups": {"Org3MSP":.[1]}}}}}' config.json ./organizations/peerOrganizations/org3.example.com/org3.json > modified_config.json +set -x +jq -s '.[0] * {"channel_group":{"groups":{"Application":{"groups": {"Org3MSP":.[1]}}}}}' config.json ./organizations/peerOrganizations/org3.example.com/org3.json > modified_config.json +set +x # Compute a config update, based on the differences between config.json and modified_config.json, write it as a transaction to org3_update_in_envelope.pb createConfigUpdate ${CHANNEL_NAME} config.json modified_config.json org3_update_in_envelope.pb @@ -101,8 +105,12 @@ echo echo "========= Submitting transaction from a different peer (peer0.org2) which also signs it ========= " echo setGlobals 2 -execute peer channel update -f org3_update_in_envelope.pb -c ${CHANNEL_NAME} -o orderer.example.com:7050 --ordererTLSHostnameOverride orderer.example.com --tls --cafile ${ORDERER_CA} +set -x +peer channel update -f org3_update_in_envelope.pb -c ${CHANNEL_NAME} -o orderer.example.com:7050 --ordererTLSHostnameOverride orderer.example.com --tls --cafile ${ORDERER_CA} +set +x echo echo "========= Config transaction to add org3 to network submitted! =========== " echo + +exit 0 diff --git a/test-network/scripts/org3-scripts/step2org3.sh b/test-network/scripts/org3-scripts/step2org3.sh index a13bc789..ade5f3f2 100755 --- a/test-network/scripts/org3-scripts/step2org3.sh +++ b/test-network/scripts/org3-scripts/step2org3.sh @@ -28,19 +28,15 @@ MAX_RETRY=5 # import environment variables . scripts/org3-scripts/envVarCLI.sh -# execute - Prints and executes the command -function execute() { - echo -e "\033[0;32mCommand\033[0m: ${*}" - "${@}" -} - ## Sometimes Join takes time hence RETRY at least 5 times joinChannelWithRetry() { ORG=$1 setGlobals $ORG - execute peer channel join -b $CHANNEL_NAME.block >&log.txt + set -x + peer channel join -b $CHANNEL_NAME.block >&log.txt res=$? + set +x cat log.txt if [ $res -ne 0 -a $COUNTER -lt $MAX_RETRY ]; then COUNTER=$(expr $COUNTER + 1) @@ -55,8 +51,10 @@ joinChannelWithRetry() { echo "Fetching channel config block from orderer..." -execute peer channel fetch 0 $CHANNEL_NAME.block -o orderer.example.com:7050 --ordererTLSHostnameOverride orderer.example.com -c $CHANNEL_NAME --tls --cafile $ORDERER_CA >&log.txt +set -x +peer channel fetch 0 $CHANNEL_NAME.block -o orderer.example.com:7050 --ordererTLSHostnameOverride orderer.example.com -c $CHANNEL_NAME --tls --cafile $ORDERER_CA >&log.txt res=$? +set +x cat log.txt verifyResult $res "Fetching config block from orderer has Failed" @@ -66,3 +64,5 @@ echo "===================== peer0.org3 joined channel '$CHANNEL_NAME' ========== echo echo "========= Finished adding Org3 to your test network! ========= " echo + +exit 0