From d5ce443bee34c54ac43a8aeabb8a38dc23f744e3 Mon Sep 17 00:00:00 2001 From: Brett Logan Date: Mon, 20 Jul 2020 12:49:16 -0400 Subject: [PATCH] WIP (#253) * WIP Signed-off-by: Brett Logan * WIP 2 Signed-off-by: Brett Logan --- test-network/addOrg3/addOrg3.sh | 26 +-- .../addOrg3/fabric-ca/registerEnroll.sh | 40 ++-- test-network/network.sh | 103 ++++------ .../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, 245 insertions(+), 381 deletions(-) diff --git a/test-network/addOrg3/addOrg3.sh b/test-network/addOrg3/addOrg3.sh index 62d4b946..ba7b600f 100755 --- a/test-network/addOrg3/addOrg3.sh +++ b/test-network/addOrg3/addOrg3.sh @@ -15,6 +15,12 @@ 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: " @@ -70,10 +76,8 @@ function generateOrg3() { echo "############ Create Org1 Identities ######################" echo "##########################################################" - set -x - cryptogen generate --config=org3-crypto.yaml --output="../organizations" + execute cryptogen generate --config=org3-crypto.yaml --output="../organizations" res=$? - set +x if [ $res -ne 0 ]; then echo "Failed to generate certificates..." exit 1 @@ -127,15 +131,13 @@ function generateOrg3Definition() { echo "##########################################################" echo "####### Generating Org3 organization definition #########" echo "##########################################################" - 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 + 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 echo } diff --git a/test-network/addOrg3/fabric-ca/registerEnroll.sh b/test-network/addOrg3/fabric-ca/registerEnroll.sh index 86cc1209..988847aa 100644 --- a/test-network/addOrg3/fabric-ca/registerEnroll.sh +++ b/test-network/addOrg3/fabric-ca/registerEnroll.sh @@ -1,7 +1,10 @@ - +# execute - Prints and executes the command +function execute() { + echo -e "\033[0;32mCommand\033[0m: ${*}" + "${@}" +} function createOrg3 { - echo echo "Enroll the CA admin" echo @@ -11,9 +14,7 @@ function createOrg3 { # rm -rf $FABRIC_CA_CLIENT_HOME/fabric-ca-client-config.yaml # rm -rf $FABRIC_CA_CLIENT_HOME/msp - 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 + execute fabric-ca-client enroll -u https://admin:adminpw@localhost:11054 --caname ca-org3 --tls.certfiles ${PWD}/fabric-ca/org3/tls-cert.pem echo 'NodeOUs: Enable: true @@ -33,23 +34,17 @@ function createOrg3 { echo echo "Register peer0" echo - 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 + 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 echo echo "Register user" echo - 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 + 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 echo echo "Register the org admin" echo - 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 + 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 mkdir -p ../organizations/peerOrganizations/org3.example.com/peers mkdir -p ../organizations/peerOrganizations/org3.example.com/peers/peer0.org3.example.com @@ -57,18 +52,14 @@ function createOrg3 { echo echo "## Generate the peer0 msp" echo - 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 + 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 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 - 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 + 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 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 @@ -90,9 +81,7 @@ function createOrg3 { echo echo "## Generate the user msp" echo - 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 + 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 cp ${PWD}/../organizations/peerOrganizations/org3.example.com/msp/config.yaml ${PWD}/../organizations/peerOrganizations/org3.example.com/users/User1@org3.example.com/msp/config.yaml @@ -101,10 +90,7 @@ function createOrg3 { echo echo "## Generate the org admin msp" echo - 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 + 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 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 6a3eb33b..87def2d6 100755 --- a/test-network/network.sh +++ b/test-network/network.sh @@ -67,6 +67,17 @@ 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 @@ -189,7 +200,6 @@ 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 @@ -202,89 +212,63 @@ function createOrgs() { exit 1 fi echo - echo "##########################################################" - echo "##### Generate certificates using cryptogen tool #########" - echo "##########################################################" + info "Generate certificates using cryptogen tool" + info "Create Org1 Identities" + + execute cryptogen generate --config=./organizations/cryptogen/crypto-config-org1.yaml --output="organizations" + res=$? + if [ $res -ne 0 ]; then + echo $'\e[1;32m'"Failed to generate certificates..."$'\e[0m' + exit 1 + fi echo - echo "##########################################################" - echo "############ Create Org1 Identities ######################" - echo "##########################################################" + info "Create Org2 Identities" - set -x - cryptogen generate --config=./organizations/cryptogen/crypto-config-org1.yaml --output="organizations" + execute 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 - echo "##########################################################" - echo "############ Create Org2 Identities ######################" - echo "##########################################################" + info "Create Orderer Org Identities" - set -x - cryptogen generate --config=./organizations/cryptogen/crypto-config-org2.yaml --output="organizations" + execute 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 "##########################################################" - echo "############ Create Orderer Org Identities ###############" - echo "##########################################################" - - 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 - echo "##########################################################" - echo "##### Generate certificates using Fabric CA's ############" - echo "##########################################################" - - IMAGE_TAG=${CA_IMAGETAG} docker-compose -f $COMPOSE_FILE_CA up -d 2>&1 - + info "Creating Fabric CA's" + IMAGE_TAG=${CA_IMAGETAG} docker-compose -f "$COMPOSE_FILE_CA" up -d 2>&1 . organizations/fabric-ca/registerEnroll.sh sleep 10 - echo "##########################################################" - echo "############ Create Org1 Identities ######################" - echo "##########################################################" + echo + info "Generate certificates using Fabric CA's" + info "Create Org1 Identities" createOrg1 - echo "##########################################################" - echo "############ Create Org2 Identities ######################" - echo "##########################################################" - + info "Create Org2 Identities" createOrg2 - echo "##########################################################" - echo "############ Create Orderer Org Identities ###############" - echo "##########################################################" - + info "Create Orderer Org Identities" createOrderer - fi - echo - echo "Generate CCP files for Org1 and Org2" + info "Generate CCP files for Org1 and Org2" ./organizations/ccp-generate.sh + echo } # Once you create the organization crypto material, you need to create the @@ -315,25 +299,23 @@ 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 - echo "######### Generating Orderer Genesis block ##############" + info "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! - set -x - configtxgen -profile TwoOrgsOrdererGenesis -channelID system-channel -outputBlock ./system-genesis-block/genesis.block + execute 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, @@ -344,7 +326,6 @@ 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 @@ -369,9 +350,7 @@ 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 @@ -386,21 +365,17 @@ 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 b5bf0828..0671ea2c 100755 --- a/test-network/organizations/fabric-ca/registerEnroll.sh +++ b/test-network/organizations/fabric-ca/registerEnroll.sh @@ -1,19 +1,21 @@ +# 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 { - - echo - echo "Enroll the CA admin" - echo + info "Enroll the CA admin" 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 - 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 + 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 echo 'NodeOUs: Enable: true @@ -30,46 +32,30 @@ 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 @@ -87,43 +73,30 @@ 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 { - - echo - echo "Enroll the CA admin" - echo + info "Enroll the CA admin" 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 - 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 + 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 echo 'NodeOUs: Enable: true @@ -140,46 +113,30 @@ 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 @@ -197,42 +154,29 @@ 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 { - - echo - echo "Enroll the CA admin" - echo + info "Enroll the CA admin" 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 - 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 + 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 echo 'NodeOUs: Enable: true @@ -249,41 +193,27 @@ 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 @@ -298,14 +228,9 @@ 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 1bf050ae..a8e6e211 100755 --- a/test-network/scripts/createChannel.sh +++ b/test-network/scripts/createChannel.sh @@ -13,38 +13,41 @@ 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() { - - set -x - configtxgen -profile TwoOrgsChannel -outputCreateChannelTx ./channel-artifacts/${CHANNEL_NAME}.tx -channelID $CHANNEL_NAME + execute 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 - - 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 + 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 done } @@ -55,17 +58,14 @@ createChannel() { local COUNTER=1 while [ $rc -ne 0 -a $COUNTER -lt $MAX_RETRY ] ; do sleep $DELAY - 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 + 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 res=$? - set +x let rc=$res COUNTER=$(expr $COUNTER + 1) done cat log.txt verifyResult $res "Channel creation failed" - echo - echo "===================== Channel '$CHANNEL_NAME' created ===================== " + info "Channel ${CHANNEL_NAME} created" echo } @@ -76,18 +76,16 @@ joinChannel() { local rc=1 local COUNTER=1 ## Sometimes Join takes time, hence retry - while [ $rc -ne 0 -a $COUNTER -lt $MAX_RETRY ] ; do + while [ $rc -ne 0 ] && [ $COUNTER -lt $MAX_RETRY ] ; do sleep $DELAY - set -x - peer channel join -b ./channel-artifacts/$CHANNEL_NAME.block >&log.txt + execute peer channel join -b ./channel-artifacts/$CHANNEL_NAME.block >&log.txt res=$? - set +x let rc=$res - COUNTER=$(expr $COUNTER + 1) + COUNTER=$((COUNTER + 1)) done cat log.txt - echo verifyResult $res "After $MAX_RETRY attempts, peer0.org${ORG} has failed to join channel '$CHANNEL_NAME' " + echo } updateAnchorPeers() { @@ -98,23 +96,21 @@ updateAnchorPeers() { ## Sometimes Join takes time, hence retry while [ $rc -ne 0 -a $COUNTER -lt $MAX_RETRY ] ; do sleep $DELAY - 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 + 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 res=$? - set +x let rc=$res COUNTER=$(expr $COUNTER + 1) done cat log.txt verifyResult $res "Anchor peer update failed" - echo "===================== Anchor peers updated for org '$CORE_PEER_LOCALMSPID' on channel '$CHANNEL_NAME' ===================== " + info "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 @@ -123,33 +119,30 @@ verifyResult() { FABRIC_CFG_PATH=${PWD}/configtx ## Create channeltx -echo "### Generating channel create transaction '${CHANNEL_NAME}.tx' ###" +echo +info "Generating channel create transaction ${CHANNEL_NAME}.tx" createChannelTx ## Create anchorpeertx -echo "### Generating anchor peer update transactions ###" +info "Generating anchor peer update transactions" createAncorPeerTx FABRIC_CFG_PATH=$PWD/../config/ ## Create channel -echo "Creating channel "$CHANNEL_NAME +info "Creating channel ${CHANNEL_NAME}" createChannel ## Join all the peers to the channel -echo "Join Org1 peers to the channel..." +info "Join Org1 peers to the channel" joinChannel 1 -echo "Join Org2 peers to the channel..." +info "Join Org2 peers to the channel" joinChannel 2 ## Set the anchor peers for each org in the channel -echo "Updating anchor peers for org1..." +info "Updating anchor peers for org1" updateAnchorPeers 1 -echo "Updating anchor peers for org2..." +info "Updating anchor peers for org2" updateAnchorPeers 2 -echo -echo "========= Channel successfully joined =========== " -echo - -exit 0 +info "Channel successfully joined" diff --git a/test-network/scripts/deployCC.sh b/test-network/scripts/deployCC.sh index daa434c6..eb9cbd92 100755 --- a/test-network/scripts/deployCC.sh +++ b/test-network/scripts/deployCC.sh @@ -29,12 +29,22 @@ 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 - echo Determining the path to the chaincode + info "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 @@ -77,25 +87,26 @@ 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 - echo Vendoring Go dependencies at $CC_SRC_PATH + info "Vendoring Go dependencies at ${CC_SRC_PATH}" pushd $CC_SRC_PATH GO111MODULE=on go mod vendor popd - echo Finished vendoring Go dependencies + info "Finished vendoring Go dependencies" elif [ "$CC_SRC_LANGUAGE" = "java" ]; then CC_RUNTIME_LANGUAGE=java - echo Compiling Java code ... + info "Compiling Java code" pushd $CC_SRC_PATH ./gradlew installDist popd - echo Finished compiling Java code + info "Finished compiling Java code" CC_SRC_PATH=$CC_SRC_PATH/build/install/$CC_NAME elif [ "$CC_SRC_LANGUAGE" = "javascript" ]; then @@ -104,12 +115,12 @@ elif [ "$CC_SRC_LANGUAGE" = "javascript" ]; then elif [ "$CC_SRC_LANGUAGE" = "typescript" ]; then CC_RUNTIME_LANGUAGE=node - echo Compiling TypeScript code into JavaScript ... + info "Compiling TypeScript code into JavaScript" pushd $CC_SRC_PATH npm install npm run build popd - echo Finished compiling TypeScript code into JavaScript + info "Finished compiling TypeScript code into JavaScript" else echo The chaincode language ${CC_SRC_LANGUAGE} is not supported by this script @@ -135,11 +146,6 @@ else CC_COLL_CONFIG="--collections-config $CC_COLL_CONFIG" fi - -#if [ "$CC_INIT_FCN" = "NA" ]; then -# INIT_REQUIRED="" -#fi - # import utils . scripts/envVar.sh @@ -147,13 +153,11 @@ fi packageChaincode() { ORG=$1 setGlobals $ORG - 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 + execute 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" - echo "===================== Chaincode is packaged on peer0.org${ORG} ===================== " + info " Chaincode is packaged on peer0.org${ORG}" echo } @@ -161,13 +165,11 @@ packageChaincode() { installChaincode() { ORG=$1 setGlobals $ORG - set -x - peer lifecycle chaincode install ${CC_NAME}.tar.gz >&log.txt + execute 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" - echo "===================== Chaincode is installed on peer0.org${ORG} ===================== " + info "Chaincode is installed on peer0.org${ORG}" echo } @@ -175,14 +177,12 @@ installChaincode() { queryInstalled() { ORG=$1 setGlobals $ORG - set -x - peer lifecycle chaincode queryinstalled >&log.txt + execute 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" - echo "===================== Query installed successful on peer0.org${ORG} on channel ===================== " + info "Query installed successful on peer0.org${ORG} on channel" echo } @@ -190,12 +190,10 @@ queryInstalled() { approveForMyOrg() { ORG=$1 setGlobals $ORG - 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 + 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 cat log.txt verifyResult $res "Chaincode definition approved on peer0.org${ORG} on channel '$CHANNEL_NAME' failed" - echo "===================== Chaincode definition approved on peer0.org${ORG} on channel '$CHANNEL_NAME' ===================== " + info "Chaincode definition approved on peer0.org${ORG} on channel ${CHANNEL_NAME}" echo } @@ -204,18 +202,16 @@ checkCommitReadiness() { ORG=$1 shift 1 setGlobals $ORG - echo "===================== Checking the commit readiness of the chaincode definition on peer0.org${ORG} on channel '$CHANNEL_NAME'... ===================== " + info "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 -a $COUNTER -lt $MAX_RETRY ]; do + while [ $rc -ne 0 ] && [ $COUNTER -lt $MAX_RETRY ]; do sleep $DELAY - 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 + 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 res=$? - set +x let rc=0 for var in "$@"; do grep "$var" log.txt &>/dev/null || let rc=1 @@ -224,31 +220,30 @@ checkCommitReadiness() { done cat log.txt if test $rc -eq 0; then - echo "===================== Checking the commit readiness of the chaincode definition successful on peer0.org${ORG} on channel '$CHANNEL_NAME' ===================== " + info "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 - 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 + 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 res=$? - set +x cat log.txt verifyResult $res "Chaincode definition commit failed on peer0.org${ORG} on channel '$CHANNEL_NAME' failed" - echo "===================== Chaincode definition committed on channel '$CHANNEL_NAME' ===================== " + info "Chaincode definition committed on channel '${CHANNEL_NAME}" echo } @@ -257,18 +252,16 @@ queryCommitted() { ORG=$1 setGlobals $ORG EXPECTED_RESULT="Version: ${CC_VERSION}, Sequence: ${CC_SEQUENCE}, Endorsement Plugin: escc, Validation Plugin: vscc" - echo "===================== Querying chaincode definition on peer0.org${ORG} on channel '$CHANNEL_NAME'... ===================== " + info "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 -a $COUNTER -lt $MAX_RETRY ]; do + while [ $rc -ne 0 ] && [ $COUNTER -lt $MAX_RETRY ]; do sleep $DELAY - 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 + 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 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) @@ -276,74 +269,70 @@ queryCommitted() { echo cat log.txt if test $rc -eq 0; then - echo "===================== Query chaincode definition successful on peer0.org${ORG} on channel '$CHANNEL_NAME' ===================== " - echo + info "Query chaincode definition successful on peer0.org${ORG} on channel ${CHANNEL_NAME}" 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":[]}' - 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 + 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 res=$? - set +x cat log.txt verifyResult $res "Invoke execution on $PEERS failed " - echo "===================== Invoke transaction successful on $PEERS on channel '$CHANNEL_NAME' ===================== " + info "Invoke transaction successful on $PEERS on channel ${CHANNEL_NAME}" echo } chaincodeQuery() { ORG=$1 setGlobals $ORG - echo "===================== Querying on peer0.org${ORG} on channel '$CHANNEL_NAME'... ===================== " + info "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 -a $COUNTER -lt $MAX_RETRY ]; do + while [ $rc -ne 0 ] && [ $COUNTER -lt $MAX_RETRY ]; do sleep $DELAY - 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 + 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 res=$? - set +x let rc=$res - COUNTER=$(expr $COUNTER + 1) + COUNTER=$((COUNTER + 1)) done echo cat log.txt if test $rc -eq 0; then - echo "===================== Query successful on peer0.org${ORG} on channel '$CHANNEL_NAME' ===================== " - echo + info "Query successful on peer0.org${ORG} on channel ${CHANNEL_NAME}" 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 -echo "Installing chaincode on peer0.org1..." +info "Installing chaincode on peer0.org1" installChaincode 1 -echo "Install chaincode on peer0.org2..." +info "Install chaincode on peer0.org2" installChaincode 2 ## query whether the chaincode is installed @@ -375,10 +364,8 @@ queryCommitted 2 ## Invoke the chaincode - this does require that the chaincode have the 'initLedger' ## method defined if [ "$CC_INIT_FCN" = "NA" ]; then - echo "===================== Chaincode initialization is not required ===================== " + info "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 6ab0aaa0..77c716bd 100755 --- a/test-network/scripts/envVar.sh +++ b/test-network/scripts/envVar.sh @@ -12,6 +12,10 @@ 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" @@ -27,7 +31,7 @@ setGlobals() { else USING_ORG="${OVERRIDE_ORG}" fi - echo "Using organization ${USING_ORG}" + info "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 2e0dc0ea..bdb9b0d6 100755 --- a/test-network/scripts/org3-scripts/step1org3.sh +++ b/test-network/scripts/org3-scripts/step1org3.sh @@ -25,6 +25,11 @@ 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 @@ -38,14 +43,10 @@ fetchChannelConfig() { setGlobals $ORG echo "Fetching the most recent configuration block for the channel" - 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 + execute peer channel fetch config config_block.pb -o orderer.example.com:7050 --ordererTLSHostnameOverride orderer.example.com -c $CHANNEL --tls --cafile $ORDERER_CA echo "Decoding config block to JSON and isolating config to ${OUTPUT}" - set -x - configtxlator proto_decode --input config_block.pb --type common.Block | jq .data.data[0].payload.data.config >"${OUTPUT}" - set +x + execute configtxlator proto_decode --input config_block.pb --type common.Block | jq .data.data[0].payload.data.config >"${OUTPUT}" } # createConfigUpdate @@ -57,14 +58,13 @@ createConfigUpdate() { MODIFIED=$3 OUTPUT=$4 - 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 + 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}" } # signConfigtxAsPeerOrg @@ -73,9 +73,7 @@ signConfigtxAsPeerOrg() { PEERORG=$1 TX=$2 setGlobals $PEERORG - set -x - peer channel signconfigtx -f "${TX}" - set +x + execute peer channel signconfigtx -f "${TX}" } echo @@ -86,9 +84,7 @@ echo fetchChannelConfig 1 ${CHANNEL_NAME} config.json # Modify the configuration to append the new org -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 +execute jq -s '.[0] * {"channel_group":{"groups":{"Application":{"groups": {"Org3MSP":.[1]}}}}}' config.json ./organizations/peerOrganizations/org3.example.com/org3.json > modified_config.json # 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 @@ -105,12 +101,8 @@ echo echo "========= Submitting transaction from a different peer (peer0.org2) which also signs it ========= " echo setGlobals 2 -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 +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} 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 ade5f3f2..a13bc789 100755 --- a/test-network/scripts/org3-scripts/step2org3.sh +++ b/test-network/scripts/org3-scripts/step2org3.sh @@ -28,15 +28,19 @@ 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 - set -x - peer channel join -b $CHANNEL_NAME.block >&log.txt + execute 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) @@ -51,10 +55,8 @@ joinChannelWithRetry() { echo "Fetching channel config block from orderer..." -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 +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 res=$? -set +x cat log.txt verifyResult $res "Fetching config block from orderer has Failed" @@ -64,5 +66,3 @@ echo "===================== peer0.org3 joined channel '$CHANNEL_NAME' ========== echo echo "========= Finished adding Org3 to your test network! ========= " echo - -exit 0