diff --git a/e2e-network/docker/test-02-v2-raft-2orgs.sh b/e2e-network/docker/test-02-v2-raft-2orgs.sh index 666ee5d1..c513923c 100755 --- a/e2e-network/docker/test-02-v2-raft-2orgs.sh +++ b/e2e-network/docker/test-02-v2-raft-2orgs.sh @@ -69,6 +69,8 @@ waitForContainer "orderer1.group1.orderer1.com" "Starting Raft node channel=my-c waitForContainer "orderer2.group1.orderer1.com" "Starting Raft node channel=my-channel1" waitForContainer "orderer2.group1.orderer1.com" "Starting Raft node channel=my-channel2" +waitForContainer "orderer0.group1.orderer1.com" "Created and started new channel my-channel1" +waitForContainer "orderer0.group1.orderer1.com" "Created and started new channel my-channel2" waitForContainer "orderer0.group2.orderer2.com" "Created and started new channel my-channel3" # check if org1 is ready @@ -99,8 +101,8 @@ waitForContainer "peer1.org2.example.com" "Membership view has changed. peers we # check if chaincodes are instantiated on peers waitForChaincode "peer0.org1.example.com" "my-channel1" "chaincode1" "0.0.1" waitForChaincode "peer0.org2.example.com" "my-channel1" "chaincode1" "0.0.1" -waitForChaincode "peer1.org1.example.com" "my-channel2" "chaincode2" "0.0.1" -waitForChaincode "peer1.org2.example.com" "my-channel2" "chaincode2" "0.0.1" +waitForChaincode "peer0.org1.example.com" "my-channel3" "chaincode2" "0.0.1" +waitForChaincode "peer1.org2.example.com" "my-channel3" "chaincode2" "0.0.1" fablo_rest_org1="localhost:8802" @@ -113,10 +115,10 @@ expectInvokeCli "peer0.org2.example.com" "my-channel1" "chaincode1" \ '{\"success\":\"Jack Sparrow\"}' # invoke Java chaincode -expectInvokeRest "$fablo_rest_org1" "my-channel2" "chaincode2" \ +expectInvokeRest "$fablo_rest_org1" "my-channel3" "chaincode2" \ "PokeballContract:createPokeball" '["id1", "Pokeball 1"]' \ '{"response":""}' -expectInvokeCli "peer1.org2.example.com" "my-channel2" "chaincode2" \ +expectInvokeCli "peer1.org2.example.com" "my-channel3" "chaincode2" \ '{"Args":["PokeballContract:readPokeball", "id1"]}' \ '{\"value\":\"Pokeball 1\"}' diff --git a/e2e/__snapshots__/extendConfig.test.ts.snap b/e2e/__snapshots__/extendConfig.test.ts.snap index f8dc751e..ab86228c 100644 --- a/e2e/__snapshots__/extendConfig.test.ts.snap +++ b/e2e/__snapshots__/extendConfig.test.ts.snap @@ -3979,7 +3979,6 @@ exports[`extend config samples/fablo-config-hlf2-2orgs-2chaincodes-raft.yaml 1`] "fabricCaName": "ca.org1.example.com", "fabricCaUrl": "https://ca.org1.example.com:7054", "logging": { - "debug": "console", "error": "console", "info": "console", "warn": "console", @@ -4153,7 +4152,6 @@ exports[`extend config samples/fablo-config-hlf2-2orgs-2chaincodes-raft.yaml 1`] "fabricCaName": "ca.org1.example.com", "fabricCaUrl": "https://ca.org1.example.com:7054", "logging": { - "debug": "console", "error": "console", "info": "console", "warn": "console", @@ -4327,7 +4325,6 @@ exports[`extend config samples/fablo-config-hlf2-2orgs-2chaincodes-raft.yaml 1`] "fabricCaName": "ca.org1.example.com", "fabricCaUrl": "https://ca.org1.example.com:7054", "logging": { - "debug": "console", "error": "console", "info": "console", "warn": "console", @@ -4390,21 +4387,33 @@ exports[`extend config samples/fablo-config-hlf2-2orgs-2chaincodes-raft.yaml 1`] "cryptoConfigFileName": "crypto-config-org1", "domain": "org1.example.com", "headPeer": { - "address": "peer1.org1.example.com", - "couchDbExposePort": 5121, + "address": "peer0.org1.example.com", + "couchDbExposePort": 5120, "db": { "type": "LevelDb", }, - "fullAddress": "peer1.org1.example.com:7062", + "fullAddress": "peer0.org1.example.com:7061", "gatewayEnabled": true, "isAnchorPeer": true, - "name": "peer1", - "port": 7062, + "name": "peer0", + "port": 7061, }, "mspName": "Org1MSP", "name": "Org1", "ordererGroups": [], "peers": [ + { + "address": "peer0.org1.example.com", + "couchDbExposePort": 5120, + "db": { + "type": "LevelDb", + }, + "fullAddress": "peer0.org1.example.com:7061", + "gatewayEnabled": true, + "isAnchorPeer": true, + "name": "peer0", + "port": 7061, + }, { "address": "peer1.org1.example.com", "couchDbExposePort": 5121, @@ -4428,7 +4437,6 @@ exports[`extend config samples/fablo-config-hlf2-2orgs-2chaincodes-raft.yaml 1`] "fabricCaName": "ca.org1.example.com", "fabricCaUrl": "https://ca.org1.example.com:7054", "logging": { - "debug": "console", "error": "console", "info": "console", "warn": "console", @@ -4438,86 +4446,64 @@ exports[`extend config samples/fablo-config-hlf2-2orgs-2chaincodes-raft.yaml 1`] }, }, }, - "name": "my-channel2", + "name": "my-channel3", "ordererGroup": { - "configtxOrdererDefaults": "Group1Defaults", - "consensus": "etcdraft", - "genesisBlockName": "Group1Genesis.block", + "configtxOrdererDefaults": "Group2Defaults", + "consensus": "solo", + "genesisBlockName": "Group2Genesis.block", "hostingOrgs": [ - "Orderer1", + "Orderer2", ], - "name": "group1", + "name": "group2", "ordererHead": { - "address": "orderer0.group1.orderer1.com", + "address": "orderer0.group2.orderer2.com", "adminPort": 7053, - "consensus": "etcdraft", - "domain": "orderer1.com", - "fullAddress": "orderer0.group1.orderer1.com:7030", - "name": "orderer0.group1", - "orgMspName": "Orderer1MSP", - "orgName": "Orderer1", - "port": 7030, + "consensus": "solo", + "domain": "orderer2.com", + "fullAddress": "orderer0.group2.orderer2.com:7050", + "name": "orderer0.group2", + "orgMspName": "Orderer2MSP", + "orgName": "Orderer2", + "port": 7050, }, "ordererHeads": [ { - "address": "orderer0.group1.orderer1.com", + "address": "orderer0.group2.orderer2.com", "adminPort": 7053, - "consensus": "etcdraft", - "domain": "orderer1.com", - "fullAddress": "orderer0.group1.orderer1.com:7030", - "name": "orderer0.group1", - "orgMspName": "Orderer1MSP", - "orgName": "Orderer1", - "port": 7030, + "consensus": "solo", + "domain": "orderer2.com", + "fullAddress": "orderer0.group2.orderer2.com:7050", + "name": "orderer0.group2", + "orgMspName": "Orderer2MSP", + "orgName": "Orderer2", + "port": 7050, }, ], "orderers": [ { - "address": "orderer0.group1.orderer1.com", - "adminPort": 7053, - "consensus": "etcdraft", - "domain": "orderer1.com", - "fullAddress": "orderer0.group1.orderer1.com:7030", - "name": "orderer0.group1", - "orgMspName": "Orderer1MSP", - "orgName": "Orderer1", - "port": 7030, - }, - { - "address": "orderer1.group1.orderer1.com", - "adminPort": 7053, - "consensus": "etcdraft", - "domain": "orderer1.com", - "fullAddress": "orderer1.group1.orderer1.com:7031", - "name": "orderer1.group1", - "orgMspName": "Orderer1MSP", - "orgName": "Orderer1", - "port": 7031, - }, - { - "address": "orderer2.group1.orderer1.com", + "address": "orderer0.group2.orderer2.com", "adminPort": 7053, - "consensus": "etcdraft", - "domain": "orderer1.com", - "fullAddress": "orderer2.group1.orderer1.com:7032", - "name": "orderer2.group1", - "orgMspName": "Orderer1MSP", - "orgName": "Orderer1", - "port": 7032, + "consensus": "solo", + "domain": "orderer2.com", + "fullAddress": "orderer0.group2.orderer2.com:7050", + "name": "orderer0.group2", + "orgMspName": "Orderer2MSP", + "orgName": "Orderer2", + "port": 7050, }, ], - "profileName": "Group1Genesis", + "profileName": "Group2Genesis", }, "ordererHead": { - "address": "orderer0.group1.orderer1.com", + "address": "orderer0.group2.orderer2.com", "adminPort": 7053, - "consensus": "etcdraft", - "domain": "orderer1.com", - "fullAddress": "orderer0.group1.orderer1.com:7030", - "name": "orderer0.group1", - "orgMspName": "Orderer1MSP", - "orgName": "Orderer1", - "port": 7030, + "consensus": "solo", + "domain": "orderer2.com", + "fullAddress": "orderer0.group2.orderer2.com:7050", + "name": "orderer0.group2", + "orgMspName": "Orderer2MSP", + "orgName": "Orderer2", + "port": 7050, }, "orgs": [ { @@ -4564,21 +4550,33 @@ exports[`extend config samples/fablo-config-hlf2-2orgs-2chaincodes-raft.yaml 1`] "cryptoConfigFileName": "crypto-config-org1", "domain": "org1.example.com", "headPeer": { - "address": "peer1.org1.example.com", - "couchDbExposePort": 5121, + "address": "peer0.org1.example.com", + "couchDbExposePort": 5120, "db": { "type": "LevelDb", }, - "fullAddress": "peer1.org1.example.com:7062", + "fullAddress": "peer0.org1.example.com:7061", "gatewayEnabled": true, "isAnchorPeer": true, - "name": "peer1", - "port": 7062, + "name": "peer0", + "port": 7061, }, "mspName": "Org1MSP", "name": "Org1", "ordererGroups": [], "peers": [ + { + "address": "peer0.org1.example.com", + "couchDbExposePort": 5120, + "db": { + "type": "LevelDb", + }, + "fullAddress": "peer0.org1.example.com:7061", + "gatewayEnabled": true, + "isAnchorPeer": true, + "name": "peer0", + "port": 7061, + }, { "address": "peer1.org1.example.com", "couchDbExposePort": 5121, @@ -4602,7 +4600,6 @@ exports[`extend config samples/fablo-config-hlf2-2orgs-2chaincodes-raft.yaml 1`] "fabricCaName": "ca.org1.example.com", "fabricCaUrl": "https://ca.org1.example.com:7054", "logging": { - "debug": "console", "error": "console", "info": "console", "warn": "console", @@ -4656,21 +4653,33 @@ exports[`extend config samples/fablo-config-hlf2-2orgs-2chaincodes-raft.yaml 1`] "cryptoConfigFileName": "crypto-config-org2", "domain": "org2.example.com", "headPeer": { - "address": "peer1.org2.example.com", - "couchDbExposePort": 5141, + "address": "peer0.org2.example.com", + "couchDbExposePort": 5140, "db": { "type": "LevelDb", }, - "fullAddress": "peer1.org2.example.com:7082", + "fullAddress": "peer0.org2.example.com:7081", "gatewayEnabled": true, "isAnchorPeer": true, - "name": "peer1", - "port": 7082, + "name": "peer0", + "port": 7081, }, "mspName": "Org2MSP", "name": "Org2", "ordererGroups": [], "peers": [ + { + "address": "peer0.org2.example.com", + "couchDbExposePort": 5140, + "db": { + "type": "LevelDb", + }, + "fullAddress": "peer0.org2.example.com:7081", + "gatewayEnabled": true, + "isAnchorPeer": true, + "name": "peer0", + "port": 7081, + }, { "address": "peer1.org2.example.com", "couchDbExposePort": 5141, @@ -4688,7 +4697,7 @@ exports[`extend config samples/fablo-config-hlf2-2orgs-2chaincodes-raft.yaml 1`] "tools": {}, }, ], - "profileName": "MyChannel2", + "profileName": "MyChannel3", }, "directory": "./chaincodes/chaincode-java-simple", "endorsement": "OR ('Org1MSP.member', 'Org2MSP.member')", @@ -4738,21 +4747,33 @@ exports[`extend config samples/fablo-config-hlf2-2orgs-2chaincodes-raft.yaml 1`] "cryptoConfigFileName": "crypto-config-org1", "domain": "org1.example.com", "headPeer": { - "address": "peer1.org1.example.com", - "couchDbExposePort": 5121, + "address": "peer0.org1.example.com", + "couchDbExposePort": 5120, "db": { "type": "LevelDb", }, - "fullAddress": "peer1.org1.example.com:7062", + "fullAddress": "peer0.org1.example.com:7061", "gatewayEnabled": true, "isAnchorPeer": true, - "name": "peer1", - "port": 7062, + "name": "peer0", + "port": 7061, }, "mspName": "Org1MSP", "name": "Org1", "ordererGroups": [], "peers": [ + { + "address": "peer0.org1.example.com", + "couchDbExposePort": 5120, + "db": { + "type": "LevelDb", + }, + "fullAddress": "peer0.org1.example.com:7061", + "gatewayEnabled": true, + "isAnchorPeer": true, + "name": "peer0", + "port": 7061, + }, { "address": "peer1.org1.example.com", "couchDbExposePort": 5121, @@ -4776,7 +4797,6 @@ exports[`extend config samples/fablo-config-hlf2-2orgs-2chaincodes-raft.yaml 1`] "fabricCaName": "ca.org1.example.com", "fabricCaUrl": "https://ca.org1.example.com:7054", "logging": { - "debug": "console", "error": "console", "info": "console", "warn": "console", @@ -4878,7 +4898,6 @@ exports[`extend config samples/fablo-config-hlf2-2orgs-2chaincodes-raft.yaml 1`] "fabricCaName": "ca.org1.example.com", "fabricCaUrl": "https://ca.org1.example.com:7054", "logging": { - "debug": "console", "error": "console", "info": "console", "warn": "console", @@ -5052,7 +5071,6 @@ exports[`extend config samples/fablo-config-hlf2-2orgs-2chaincodes-raft.yaml 1`] "fabricCaName": "ca.org1.example.com", "fabricCaUrl": "https://ca.org1.example.com:7054", "logging": { - "debug": "console", "error": "console", "info": "console", "warn": "console", @@ -5223,7 +5241,6 @@ exports[`extend config samples/fablo-config-hlf2-2orgs-2chaincodes-raft.yaml 1`] "fabricCaName": "ca.org1.example.com", "fabricCaUrl": "https://ca.org1.example.com:7054", "logging": { - "debug": "console", "error": "console", "info": "console", "warn": "console", @@ -5397,7 +5414,6 @@ exports[`extend config samples/fablo-config-hlf2-2orgs-2chaincodes-raft.yaml 1`] "fabricCaName": "ca.org1.example.com", "fabricCaUrl": "https://ca.org1.example.com:7054", "logging": { - "debug": "console", "error": "console", "info": "console", "warn": "console", @@ -5580,7 +5596,6 @@ exports[`extend config samples/fablo-config-hlf2-2orgs-2chaincodes-raft.yaml 1`] "fabricCaName": "ca.org1.example.com", "fabricCaUrl": "https://ca.org1.example.com:7054", "logging": { - "debug": "console", "error": "console", "info": "console", "warn": "console", @@ -5744,7 +5759,6 @@ exports[`extend config samples/fablo-config-hlf2-2orgs-2chaincodes-raft.yaml 1`] "fabricCaName": "ca.org1.example.com", "fabricCaUrl": "https://ca.org1.example.com:7054", "logging": { - "debug": "console", "error": "console", "info": "console", "warn": "console", @@ -5863,7 +5877,7 @@ exports[`extend config samples/fablo-config-hlf2-2orgs-2chaincodes-raft.yaml 1`] "fabricToolsVersion": "2.5.12", "fabricVersion": "2.5.12", "monitoring": { - "loglevel": "debug", + "loglevel": "info", }, "paths": { "chaincodesBaseDir": "", @@ -6265,7 +6279,6 @@ exports[`extend config samples/fablo-config-hlf2-2orgs-2chaincodes-raft.yaml 1`] "fabricCaName": "ca.org1.example.com", "fabricCaUrl": "https://ca.org1.example.com:7054", "logging": { - "debug": "console", "error": "console", "info": "console", "warn": "console", diff --git a/e2e/__snapshots__/fablo-config-hlf2-1org-2chaincode-raft-ccaas.json.test.ts.snap b/e2e/__snapshots__/fablo-config-hlf2-1org-2chaincode-raft-ccaas.json.test.ts.snap index 2db0156a..de8d2574 100644 --- a/e2e/__snapshots__/fablo-config-hlf2-1org-2chaincode-raft-ccaas.json.test.ts.snap +++ b/e2e/__snapshots__/fablo-config-hlf2-1org-2chaincode-raft-ccaas.json.test.ts.snap @@ -1678,12 +1678,21 @@ chaincodeInvoke() { peer_certs="$1" peer_certs="\${peer_certs//peer0.org1.example.com/crypto/peers/peer0.org1.example.com/tls/ca.crt}" + # Initialize ca_cert to prevent using an uninitialized variable if the channel isn't found + local ca_cert="" + if [ "$2" = "my-channel1" ]; then ca_cert="crypto-orderer/tlsca.orderer.example.com-cert.pem" fi if [ "$2" = "my-channel2" ]; then ca_cert="crypto-orderer/tlsca.orderer.example.com-cert.pem" fi + + if [ -z "$ca_cert" ]; then + echo "Error: Channel '$2' not found or is not associated with an orderer group." + exit 1 + fi + peerChaincodeInvokeTls "$cli" "$peer_addresses" "$2" "$3" "$4" "$5" "$peer_certs" "$ca_cert" } @@ -1725,14 +1734,20 @@ chaincodeQuery() { exit 1 fi - if [ "$channel_name" = "my-channel1" ]; then + # Initialize ca_cert to prevent using an uninitialized variable if the channel isn't found + local ca_cert="" + + if [ "$2" = "my-channel1" ]; then ca_cert="crypto-orderer/tlsca.orderer.example.com-cert.pem" fi - - if [ "$channel_name" = "my-channel2" ]; then + if [ "$2" = "my-channel2" ]; then ca_cert="crypto-orderer/tlsca.orderer.example.com-cert.pem" fi + if [ -z "$ca_cert" ]; then + echo "Error: Channel '$2' not found or is not associated with an orderer group." + exit 1 + fi peerChaincodeQueryTls "$cli" "$peer_address" "$channel_name" "$chaincode_name" "$command" "$transient" "$peer_cert" "$ca_cert" } diff --git a/e2e/__snapshots__/fablo-config-hlf2-2orgs-2chaincodes-raft.yaml.test.ts.snap b/e2e/__snapshots__/fablo-config-hlf2-2orgs-2chaincodes-raft.yaml.test.ts.snap index 730e7261..d918e687 100644 --- a/e2e/__snapshots__/fablo-config-hlf2-2orgs-2chaincodes-raft.yaml.test.ts.snap +++ b/e2e/__snapshots__/fablo-config-hlf2-2orgs-2chaincodes-raft.yaml.test.ts.snap @@ -8,8 +8,6 @@ global: tls: true tools: explorer: true - monitoring: - loglevel: debug orgs: - organization: name: Orderer1 @@ -42,6 +40,7 @@ orgs: peer: *defaultPeerConfig channels: - name: my-channel1 + ordererGroup: group1 orgs: - name: Org1 peers: @@ -50,6 +49,7 @@ channels: peers: - peer0 - name: my-channel2 + ordererGroup: group1 orgs: - name: Org1 peers: @@ -76,7 +76,7 @@ chaincodes: - name: chaincode2 version: 0.0.1 lang: java - channel: my-channel2 + channel: my-channel3 endorsement: OR ('Org1MSP.member', 'Org2MSP.member') directory: "./chaincodes/chaincode-java-simple" hooks: @@ -3580,7 +3580,7 @@ FABLO_CONFIG= CHAINCODES_BASE_DIR= COMPOSE_PROJECT_NAME= -LOGGING_LEVEL=debug +LOGGING_LEVEL=info FABRIC_VERSION=2.5.12 FABRIC_TOOLS_VERSION=2.5.12 @@ -3687,6 +3687,9 @@ chaincodeInvoke() { peer_certs="\${peer_certs//peer0.org2.example.com/crypto/peers/peer0.org2.example.com/tls/ca.crt}" peer_certs="\${peer_certs//peer1.org2.example.com/crypto/peers/peer1.org2.example.com/tls/ca.crt}" + # Initialize ca_cert to prevent using an uninitialized variable if the channel isn't found + local ca_cert="" + if [ "$2" = "my-channel1" ]; then ca_cert="crypto-orderer/tlsca.orderer1.com-cert.pem" fi @@ -3694,8 +3697,14 @@ chaincodeInvoke() { ca_cert="crypto-orderer/tlsca.orderer1.com-cert.pem" fi if [ "$2" = "my-channel3" ]; then - ca_cert="crypto-orderer/tlsca.orderer1.com-cert.pem" + ca_cert="crypto-orderer/tlsca.orderer2.com-cert.pem" + fi + + if [ -z "$ca_cert" ]; then + echo "Error: Channel '$2' not found or is not associated with an orderer group." + exit 1 fi + peerChaincodeInvokeTls "$cli" "$peer_addresses" "$2" "$3" "$4" "$5" "$peer_certs" "$ca_cert" } @@ -3758,18 +3767,23 @@ chaincodeQuery() { exit 1 fi - if [ "$channel_name" = "my-channel1" ]; then - ca_cert="crypto-orderer/tlsca.orderer1.com-cert.pem" - fi + # Initialize ca_cert to prevent using an uninitialized variable if the channel isn't found + local ca_cert="" - if [ "$channel_name" = "my-channel2" ]; then + if [ "$2" = "my-channel1" ]; then ca_cert="crypto-orderer/tlsca.orderer1.com-cert.pem" fi - - if [ "$channel_name" = "my-channel3" ]; then + if [ "$2" = "my-channel2" ]; then ca_cert="crypto-orderer/tlsca.orderer1.com-cert.pem" fi + if [ "$2" = "my-channel3" ]; then + ca_cert="crypto-orderer/tlsca.orderer2.com-cert.pem" + fi + if [ -z "$ca_cert" ]; then + echo "Error: Channel '$2' not found or is not associated with an orderer group." + exit 1 + fi peerChaincodeQueryTls "$cli" "$peer_address" "$channel_name" "$chaincode_name" "$command" "$transient" "$peer_cert" "$ca_cert" } @@ -4150,15 +4164,17 @@ installChaincodes() { local version="0.0.1" printHeadline "Packaging chaincode 'chaincode2'" "U1F60E" chaincodeBuild "chaincode2" "java" "$CHAINCODES_BASE_DIR/./chaincodes/chaincode-java-simple" "16" - chaincodePackage "cli.org1.example.com" "peer1.org1.example.com:7062" "chaincode2" "$version" "java" "my-channel2" + chaincodePackage "cli.org1.example.com" "peer0.org1.example.com:7061" "chaincode2" "$version" "java" "my-channel3" printHeadline "Installing 'chaincode2' for Org1" "U1F60E" - chaincodeInstall "cli.org1.example.com" "peer1.org1.example.com:7062" "chaincode2" "$version" "my-channel2" "crypto-orderer/tlsca.orderer1.com-cert.pem" - chaincodeApprove "cli.org1.example.com" "peer1.org1.example.com:7062" "my-channel2" "chaincode2" "$version" "orderer0.group1.orderer1.com:7030" "OR ('Org1MSP.member', 'Org2MSP.member')" "false" "crypto-orderer/tlsca.orderer1.com-cert.pem" "" "java" "" + chaincodeInstall "cli.org1.example.com" "peer0.org1.example.com:7061" "chaincode2" "$version" "my-channel3" "crypto-orderer/tlsca.orderer2.com-cert.pem" + chaincodeInstall "cli.org1.example.com" "peer1.org1.example.com:7062" "chaincode2" "$version" "my-channel3" "crypto-orderer/tlsca.orderer2.com-cert.pem" + chaincodeApprove "cli.org1.example.com" "peer0.org1.example.com:7061" "my-channel3" "chaincode2" "$version" "orderer0.group2.orderer2.com:7050" "OR ('Org1MSP.member', 'Org2MSP.member')" "false" "crypto-orderer/tlsca.orderer2.com-cert.pem" "" "java" "" printHeadline "Installing 'chaincode2' for Org2" "U1F60E" - chaincodeInstall "cli.org2.example.com" "peer1.org2.example.com:7082" "chaincode2" "$version" "my-channel2" "crypto-orderer/tlsca.orderer1.com-cert.pem" - chaincodeApprove "cli.org2.example.com" "peer1.org2.example.com:7082" "my-channel2" "chaincode2" "$version" "orderer0.group1.orderer1.com:7030" "OR ('Org1MSP.member', 'Org2MSP.member')" "false" "crypto-orderer/tlsca.orderer1.com-cert.pem" "" "java" "" - printItalics "Committing chaincode 'chaincode2' on channel 'my-channel2' as 'Org1'" "U1F618" - chaincodeCommit "cli.org1.example.com" "peer1.org1.example.com:7062" "my-channel2" "chaincode2" "$version" "orderer0.group1.orderer1.com:7030" "OR ('Org1MSP.member', 'Org2MSP.member')" "false" "crypto-orderer/tlsca.orderer1.com-cert.pem" "peer1.org1.example.com:7062,peer1.org2.example.com:7082" "crypto-peer/peer1.org1.example.com/tls/ca.crt,crypto-peer/peer1.org2.example.com/tls/ca.crt" "" + chaincodeInstall "cli.org2.example.com" "peer0.org2.example.com:7081" "chaincode2" "$version" "my-channel3" "crypto-orderer/tlsca.orderer2.com-cert.pem" + chaincodeInstall "cli.org2.example.com" "peer1.org2.example.com:7082" "chaincode2" "$version" "my-channel3" "crypto-orderer/tlsca.orderer2.com-cert.pem" + chaincodeApprove "cli.org2.example.com" "peer0.org2.example.com:7081" "my-channel3" "chaincode2" "$version" "orderer0.group2.orderer2.com:7050" "OR ('Org1MSP.member', 'Org2MSP.member')" "false" "crypto-orderer/tlsca.orderer2.com-cert.pem" "" "java" "" + printItalics "Committing chaincode 'chaincode2' on channel 'my-channel3' as 'Org1'" "U1F618" + chaincodeCommit "cli.org1.example.com" "peer0.org1.example.com:7061" "my-channel3" "chaincode2" "$version" "orderer0.group2.orderer2.com:7050" "OR ('Org1MSP.member', 'Org2MSP.member')" "false" "crypto-orderer/tlsca.orderer2.com-cert.pem" "peer0.org1.example.com:7061,peer0.org2.example.com:7081" "crypto-peer/peer0.org1.example.com/tls/ca.crt,crypto-peer/peer0.org2.example.com/tls/ca.crt" "" else echo "Warning! Skipping chaincode 'chaincode2' installation. Chaincode directory is empty." echo "Looked in dir: '$CHAINCODES_BASE_DIR/./chaincodes/chaincode-java-simple'" @@ -4202,15 +4218,17 @@ installChaincode() { if [ -n "$(ls "$CHAINCODES_BASE_DIR/./chaincodes/chaincode-java-simple")" ]; then printHeadline "Packaging chaincode 'chaincode2'" "U1F60E" chaincodeBuild "chaincode2" "java" "$CHAINCODES_BASE_DIR/./chaincodes/chaincode-java-simple" "16" - chaincodePackage "cli.org1.example.com" "peer1.org1.example.com:7062" "chaincode2" "$version" "java" "my-channel2" + chaincodePackage "cli.org1.example.com" "peer0.org1.example.com:7061" "chaincode2" "$version" "java" "my-channel3" printHeadline "Installing 'chaincode2' for Org1" "U1F60E" - chaincodeInstall "cli.org1.example.com" "peer1.org1.example.com:7062" "chaincode2" "$version" "my-channel2" "crypto-orderer/tlsca.orderer1.com-cert.pem" - chaincodeApprove "cli.org1.example.com" "peer1.org1.example.com:7062" "my-channel2" "chaincode2" "$version" "orderer0.group1.orderer1.com:7030" "OR ('Org1MSP.member', 'Org2MSP.member')" "false" "crypto-orderer/tlsca.orderer1.com-cert.pem" "" "java" "" + chaincodeInstall "cli.org1.example.com" "peer0.org1.example.com:7061" "chaincode2" "$version" "my-channel3" "crypto-orderer/tlsca.orderer2.com-cert.pem" + chaincodeInstall "cli.org1.example.com" "peer1.org1.example.com:7062" "chaincode2" "$version" "my-channel3" "crypto-orderer/tlsca.orderer2.com-cert.pem" + chaincodeApprove "cli.org1.example.com" "peer0.org1.example.com:7061" "my-channel3" "chaincode2" "$version" "orderer0.group2.orderer2.com:7050" "OR ('Org1MSP.member', 'Org2MSP.member')" "false" "crypto-orderer/tlsca.orderer2.com-cert.pem" "" "java" "" printHeadline "Installing 'chaincode2' for Org2" "U1F60E" - chaincodeInstall "cli.org2.example.com" "peer1.org2.example.com:7082" "chaincode2" "$version" "my-channel2" "crypto-orderer/tlsca.orderer1.com-cert.pem" - chaincodeApprove "cli.org2.example.com" "peer1.org2.example.com:7082" "my-channel2" "chaincode2" "$version" "orderer0.group1.orderer1.com:7030" "OR ('Org1MSP.member', 'Org2MSP.member')" "false" "crypto-orderer/tlsca.orderer1.com-cert.pem" "" "java" "" - printItalics "Committing chaincode 'chaincode2' on channel 'my-channel2' as 'Org1'" "U1F618" - chaincodeCommit "cli.org1.example.com" "peer1.org1.example.com:7062" "my-channel2" "chaincode2" "$version" "orderer0.group1.orderer1.com:7030" "OR ('Org1MSP.member', 'Org2MSP.member')" "false" "crypto-orderer/tlsca.orderer1.com-cert.pem" "peer1.org1.example.com:7062,peer1.org2.example.com:7082" "crypto-peer/peer1.org1.example.com/tls/ca.crt,crypto-peer/peer1.org2.example.com/tls/ca.crt" "" + chaincodeInstall "cli.org2.example.com" "peer0.org2.example.com:7081" "chaincode2" "$version" "my-channel3" "crypto-orderer/tlsca.orderer2.com-cert.pem" + chaincodeInstall "cli.org2.example.com" "peer1.org2.example.com:7082" "chaincode2" "$version" "my-channel3" "crypto-orderer/tlsca.orderer2.com-cert.pem" + chaincodeApprove "cli.org2.example.com" "peer0.org2.example.com:7081" "my-channel3" "chaincode2" "$version" "orderer0.group2.orderer2.com:7050" "OR ('Org1MSP.member', 'Org2MSP.member')" "false" "crypto-orderer/tlsca.orderer2.com-cert.pem" "" "java" "" + printItalics "Committing chaincode 'chaincode2' on channel 'my-channel3' as 'Org1'" "U1F618" + chaincodeCommit "cli.org1.example.com" "peer0.org1.example.com:7061" "my-channel3" "chaincode2" "$version" "orderer0.group2.orderer2.com:7050" "OR ('Org1MSP.member', 'Org2MSP.member')" "false" "crypto-orderer/tlsca.orderer2.com-cert.pem" "peer0.org1.example.com:7061,peer0.org2.example.com:7081" "crypto-peer/peer0.org1.example.com/tls/ca.crt,crypto-peer/peer0.org2.example.com/tls/ca.crt" "" else echo "Warning! Skipping chaincode 'chaincode2' install. Chaincode directory is empty." @@ -4239,11 +4257,11 @@ runDevModeChaincode() { if [ "$chaincodeName" = "chaincode2" ]; then local version="0.0.1" printHeadline "Approving 'chaincode2' for Org1 (dev mode)" "U1F60E" - chaincodeApprove "cli.org1.example.com" "peer1.org1.example.com:7062" "my-channel2" "chaincode2" "0.0.1" "orderer0.group1.orderer1.com:7030" "OR ('Org1MSP.member', 'Org2MSP.member')" "false" "" "" "" "" + chaincodeApprove "cli.org1.example.com" "peer0.org1.example.com:7061" "my-channel3" "chaincode2" "0.0.1" "orderer0.group2.orderer2.com:7050" "OR ('Org1MSP.member', 'Org2MSP.member')" "false" "" "" "" "" printHeadline "Approving 'chaincode2' for Org2 (dev mode)" "U1F60E" - chaincodeApprove "cli.org2.example.com" "peer1.org2.example.com:7082" "my-channel2" "chaincode2" "0.0.1" "orderer0.group1.orderer1.com:7030" "OR ('Org1MSP.member', 'Org2MSP.member')" "false" "" "" "" "" - printItalics "Committing chaincode 'chaincode2' on channel 'my-channel2' as 'Org1' (dev mode)" "U1F618" - chaincodeCommit "cli.org1.example.com" "peer1.org1.example.com:7062" "my-channel2" "chaincode2" "0.0.1" "orderer0.group1.orderer1.com:7030" "OR ('Org1MSP.member', 'Org2MSP.member')" "false" "" "peer1.org1.example.com:7062,peer1.org2.example.com:7082" "" "" + chaincodeApprove "cli.org2.example.com" "peer0.org2.example.com:7081" "my-channel3" "chaincode2" "0.0.1" "orderer0.group2.orderer2.com:7050" "OR ('Org1MSP.member', 'Org2MSP.member')" "false" "" "" "" "" + printItalics "Committing chaincode 'chaincode2' on channel 'my-channel3' as 'Org1' (dev mode)" "U1F618" + chaincodeCommit "cli.org1.example.com" "peer0.org1.example.com:7061" "my-channel3" "chaincode2" "0.0.1" "orderer0.group2.orderer2.com:7050" "OR ('Org1MSP.member', 'Org2MSP.member')" "false" "" "peer0.org1.example.com:7061,peer0.org2.example.com:7081" "" "" fi } @@ -4284,15 +4302,17 @@ upgradeChaincode() { if [ -n "$(ls "$CHAINCODES_BASE_DIR/./chaincodes/chaincode-java-simple")" ]; then printHeadline "Packaging chaincode 'chaincode2'" "U1F60E" chaincodeBuild "chaincode2" "java" "$CHAINCODES_BASE_DIR/./chaincodes/chaincode-java-simple" "16" - chaincodePackage "cli.org1.example.com" "peer1.org1.example.com:7062" "chaincode2" "$version" "java" "my-channel2" + chaincodePackage "cli.org1.example.com" "peer0.org1.example.com:7061" "chaincode2" "$version" "java" "my-channel3" printHeadline "Installing 'chaincode2' for Org1" "U1F60E" - chaincodeInstall "cli.org1.example.com" "peer1.org1.example.com:7062" "chaincode2" "$version" "my-channel2" "crypto-orderer/tlsca.orderer1.com-cert.pem" - chaincodeApprove "cli.org1.example.com" "peer1.org1.example.com:7062" "my-channel2" "chaincode2" "$version" "orderer0.group1.orderer1.com:7030" "OR ('Org1MSP.member', 'Org2MSP.member')" "false" "crypto-orderer/tlsca.orderer1.com-cert.pem" "" "java" "" + chaincodeInstall "cli.org1.example.com" "peer0.org1.example.com:7061" "chaincode2" "$version" "my-channel3" "crypto-orderer/tlsca.orderer2.com-cert.pem" + chaincodeInstall "cli.org1.example.com" "peer1.org1.example.com:7062" "chaincode2" "$version" "my-channel3" "crypto-orderer/tlsca.orderer2.com-cert.pem" + chaincodeApprove "cli.org1.example.com" "peer0.org1.example.com:7061" "my-channel3" "chaincode2" "$version" "orderer0.group2.orderer2.com:7050" "OR ('Org1MSP.member', 'Org2MSP.member')" "false" "crypto-orderer/tlsca.orderer2.com-cert.pem" "" "java" "" printHeadline "Installing 'chaincode2' for Org2" "U1F60E" - chaincodeInstall "cli.org2.example.com" "peer1.org2.example.com:7082" "chaincode2" "$version" "my-channel2" "crypto-orderer/tlsca.orderer1.com-cert.pem" - chaincodeApprove "cli.org2.example.com" "peer1.org2.example.com:7082" "my-channel2" "chaincode2" "$version" "orderer0.group1.orderer1.com:7030" "OR ('Org1MSP.member', 'Org2MSP.member')" "false" "crypto-orderer/tlsca.orderer1.com-cert.pem" "" "java" "" - printItalics "Committing chaincode 'chaincode2' on channel 'my-channel2' as 'Org1'" "U1F618" - chaincodeCommit "cli.org1.example.com" "peer1.org1.example.com:7062" "my-channel2" "chaincode2" "$version" "orderer0.group1.orderer1.com:7030" "OR ('Org1MSP.member', 'Org2MSP.member')" "false" "crypto-orderer/tlsca.orderer1.com-cert.pem" "peer1.org1.example.com:7062,peer1.org2.example.com:7082" "crypto-peer/peer1.org1.example.com/tls/ca.crt,crypto-peer/peer1.org2.example.com/tls/ca.crt" "" + chaincodeInstall "cli.org2.example.com" "peer0.org2.example.com:7081" "chaincode2" "$version" "my-channel3" "crypto-orderer/tlsca.orderer2.com-cert.pem" + chaincodeInstall "cli.org2.example.com" "peer1.org2.example.com:7082" "chaincode2" "$version" "my-channel3" "crypto-orderer/tlsca.orderer2.com-cert.pem" + chaincodeApprove "cli.org2.example.com" "peer0.org2.example.com:7081" "my-channel3" "chaincode2" "$version" "orderer0.group2.orderer2.com:7050" "OR ('Org1MSP.member', 'Org2MSP.member')" "false" "crypto-orderer/tlsca.orderer2.com-cert.pem" "" "java" "" + printItalics "Committing chaincode 'chaincode2' on channel 'my-channel3' as 'Org1'" "U1F618" + chaincodeCommit "cli.org1.example.com" "peer0.org1.example.com:7061" "my-channel3" "chaincode2" "$version" "orderer0.group2.orderer2.com:7050" "OR ('Org1MSP.member', 'Org2MSP.member')" "false" "crypto-orderer/tlsca.orderer2.com-cert.pem" "peer0.org1.example.com:7061,peer0.org2.example.com:7081" "crypto-peer/peer0.org1.example.com/tls/ca.crt,crypto-peer/peer0.org2.example.com/tls/ca.crt" "" else echo "Warning! Skipping chaincode 'chaincode2' upgrade. Chaincode directory is empty." @@ -4357,6 +4377,14 @@ networkDown() { echo "Removing image $image..." docker rmi "$image" || echo "docker rmi of $image failed. Check if all fabric dockers properly was deleted" done + for container in $(docker ps -a | grep "peer0.org1.example.com-chaincode2" | awk '{print $1}'); do + echo "Removing container $container..." + docker rm -f "$container" || echo "docker rm of $container failed. Check if all fabric dockers properly was deleted" + done + for image in $(docker images "peer0.org1.example.com-chaincode2*" -q); do + echo "Removing image $image..." + docker rmi "$image" || echo "docker rmi of $image failed. Check if all fabric dockers properly was deleted" + done for container in $(docker ps -a | grep "peer1.org1.example.com-chaincode2" | awk '{print $1}'); do echo "Removing container $container..." docker rm -f "$container" || echo "docker rm of $container failed. Check if all fabric dockers properly was deleted" @@ -4365,6 +4393,14 @@ networkDown() { echo "Removing image $image..." docker rmi "$image" || echo "docker rmi of $image failed. Check if all fabric dockers properly was deleted" done + for container in $(docker ps -a | grep "peer0.org2.example.com-chaincode2" | awk '{print $1}'); do + echo "Removing container $container..." + docker rm -f "$container" || echo "docker rm of $container failed. Check if all fabric dockers properly was deleted" + done + for image in $(docker images "peer0.org2.example.com-chaincode2*" -q); do + echo "Removing image $image..." + docker rmi "$image" || echo "docker rmi of $image failed. Check if all fabric dockers properly was deleted" + done for container in $(docker ps -a | grep "peer1.org2.example.com-chaincode2" | awk '{print $1}'); do echo "Removing container $container..." docker rm -f "$container" || echo "docker rm of $container failed. Check if all fabric dockers properly was deleted" @@ -4724,7 +4760,7 @@ services: - DISCOVERY_URLS=grpcs://peer0.org1.example.com:7061,grpcs://peer1.org1.example.com:7062,grpcs://peer0.org2.example.com:7081,grpcs://peer1.org2.example.com:7082 - DISCOVERY_SSL_TARGET_NAME_OVERRIDES= - DISCOVERY_TLS_CA_CERT_FILES=/crypto/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt,/crypto/org1.example.com/peers/peer1.org1.example.com/tls/ca.crt,/crypto/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt,/crypto/org2.example.com/peers/peer1.org2.example.com/tls/ca.crt - - HFC_LOGGING={"error":"console","warn":"console","info":"console","debug":"console"} + - HFC_LOGGING={"error":"console","warn":"console","info":"console"} volumes: # note: fablo needs access to all anchor peer certs - ../fabric-config/crypto-config/peerOrganizations:/crypto:ro @@ -6483,10 +6519,10 @@ exports[`samples/fablo-config-hlf2-2orgs-2chaincodes-raft.yaml should create pro end subgraph Channel_my_channel2 [Channel: my-channel2] - Chaincode_chaincode2[Chaincode: chaincode2] end subgraph Channel_my_channel3 [Channel: my-channel3] + Chaincode_chaincode2[Chaincode: chaincode2] end %% Connections diff --git a/e2e/__snapshots__/fablo-config-hlf2-3orgs-1chaincode-raft-explorer.json.test.ts.snap b/e2e/__snapshots__/fablo-config-hlf2-3orgs-1chaincode-raft-explorer.json.test.ts.snap index d5ba1ab9..fa81ed21 100644 --- a/e2e/__snapshots__/fablo-config-hlf2-3orgs-1chaincode-raft-explorer.json.test.ts.snap +++ b/e2e/__snapshots__/fablo-config-hlf2-3orgs-1chaincode-raft-explorer.json.test.ts.snap @@ -4141,6 +4141,9 @@ chaincodeInvoke() { peer_certs="\${peer_certs//peer0.org3.example.com/crypto/peers/peer0.org3.example.com/tls/ca.crt}" peer_certs="\${peer_certs//peer1.org3.example.com/crypto/peers/peer1.org3.example.com/tls/ca.crt}" + # Initialize ca_cert to prevent using an uninitialized variable if the channel isn't found + local ca_cert="" + if [ "$2" = "my-channel1" ]; then ca_cert="crypto-orderer/tlsca.orderer.example.com-cert.pem" fi @@ -4150,6 +4153,12 @@ chaincodeInvoke() { if [ "$2" = "my-channel3" ]; then ca_cert="crypto-orderer/tlsca.orderer.example.com-cert.pem" fi + + if [ -z "$ca_cert" ]; then + echo "Error: Channel '$2' not found or is not associated with an orderer group." + exit 1 + fi + peerChaincodeInvokeTls "$cli" "$peer_addresses" "$2" "$3" "$4" "$5" "$peer_certs" "$ca_cert" } @@ -4226,18 +4235,23 @@ chaincodeQuery() { exit 1 fi - if [ "$channel_name" = "my-channel1" ]; then + # Initialize ca_cert to prevent using an uninitialized variable if the channel isn't found + local ca_cert="" + + if [ "$2" = "my-channel1" ]; then ca_cert="crypto-orderer/tlsca.orderer.example.com-cert.pem" fi - - if [ "$channel_name" = "my-channel2" ]; then + if [ "$2" = "my-channel2" ]; then ca_cert="crypto-orderer/tlsca.orderer.example.com-cert.pem" fi - - if [ "$channel_name" = "my-channel3" ]; then + if [ "$2" = "my-channel3" ]; then ca_cert="crypto-orderer/tlsca.orderer.example.com-cert.pem" fi + if [ -z "$ca_cert" ]; then + echo "Error: Channel '$2' not found or is not associated with an orderer group." + exit 1 + fi peerChaincodeQueryTls "$cli" "$peer_address" "$channel_name" "$chaincode_name" "$command" "$transient" "$peer_cert" "$ca_cert" } diff --git a/e2e/__snapshots__/fablo-config-hlf3-1orgs-1chaincode.json.test.ts.snap b/e2e/__snapshots__/fablo-config-hlf3-1orgs-1chaincode.json.test.ts.snap index 9ae42ddb..b54c1b3a 100644 --- a/e2e/__snapshots__/fablo-config-hlf3-1orgs-1chaincode.json.test.ts.snap +++ b/e2e/__snapshots__/fablo-config-hlf3-1orgs-1chaincode.json.test.ts.snap @@ -1808,9 +1808,18 @@ chaincodeInvoke() { peer_certs="\${peer_certs//peer0.org1.example.com/crypto/peers/peer0.org1.example.com/tls/ca.crt}" peer_certs="\${peer_certs//peer1.org1.example.com/crypto/peers/peer1.org1.example.com/tls/ca.crt}" + # Initialize ca_cert to prevent using an uninitialized variable if the channel isn't found + local ca_cert="" + if [ "$2" = "my-channel1" ]; then ca_cert="crypto-orderer/tlsca.orderer.example.com-cert.pem" fi + + if [ -z "$ca_cert" ]; then + echo "Error: Channel '$2' not found or is not associated with an orderer group." + exit 1 + fi + peerChaincodeInvokeTls "$cli" "$peer_addresses" "$2" "$3" "$4" "$5" "$peer_certs" "$ca_cert" } @@ -1859,10 +1868,17 @@ chaincodeQuery() { exit 1 fi - if [ "$channel_name" = "my-channel1" ]; then + # Initialize ca_cert to prevent using an uninitialized variable if the channel isn't found + local ca_cert="" + + if [ "$2" = "my-channel1" ]; then ca_cert="crypto-orderer/tlsca.orderer.example.com-cert.pem" fi + if [ -z "$ca_cert" ]; then + echo "Error: Channel '$2' not found or is not associated with an orderer group." + exit 1 + fi peerChaincodeQueryTls "$cli" "$peer_address" "$channel_name" "$chaincode_name" "$command" "$transient" "$peer_cert" "$ca_cert" } diff --git a/e2e/__snapshots__/fablo-config-hlf3-bft-1orgs-1chaincode.json.test.ts.snap b/e2e/__snapshots__/fablo-config-hlf3-bft-1orgs-1chaincode.json.test.ts.snap index 81ae9a00..738214e5 100644 --- a/e2e/__snapshots__/fablo-config-hlf3-bft-1orgs-1chaincode.json.test.ts.snap +++ b/e2e/__snapshots__/fablo-config-hlf3-bft-1orgs-1chaincode.json.test.ts.snap @@ -1834,9 +1834,18 @@ chaincodeInvoke() { peer_certs="\${peer_certs//peer0.org1.example.com/crypto/peers/peer0.org1.example.com/tls/ca.crt}" peer_certs="\${peer_certs//peer1.org1.example.com/crypto/peers/peer1.org1.example.com/tls/ca.crt}" + # Initialize ca_cert to prevent using an uninitialized variable if the channel isn't found + local ca_cert="" + if [ "$2" = "my-channel1" ]; then ca_cert="crypto-orderer/tlsca.orderer.example.com-cert.pem" fi + + if [ -z "$ca_cert" ]; then + echo "Error: Channel '$2' not found or is not associated with an orderer group." + exit 1 + fi + peerChaincodeInvokeTls "$cli" "$peer_addresses" "$2" "$3" "$4" "$5" "$peer_certs" "$ca_cert" } @@ -1885,10 +1894,17 @@ chaincodeQuery() { exit 1 fi - if [ "$channel_name" = "my-channel1" ]; then + # Initialize ca_cert to prevent using an uninitialized variable if the channel isn't found + local ca_cert="" + + if [ "$2" = "my-channel1" ]; then ca_cert="crypto-orderer/tlsca.orderer.example.com-cert.pem" fi + if [ -z "$ca_cert" ]; then + echo "Error: Channel '$2' not found or is not associated with an orderer group." + exit 1 + fi peerChaincodeQueryTls "$cli" "$peer_address" "$channel_name" "$chaincode_name" "$command" "$transient" "$peer_cert" "$ca_cert" } diff --git a/e2e/__snapshots__/fabloCommands.test.ts.snap b/e2e/__snapshots__/fabloCommands.test.ts.snap index 3003761c..941ac095 100644 --- a/e2e/__snapshots__/fabloCommands.test.ts.snap +++ b/e2e/__snapshots__/fabloCommands.test.ts.snap @@ -14,9 +14,6 @@ Validation warnings count: 0 "port": 7010 } }, - "monitoring": { - "loglevel": "debug" - }, "fabricToolsVersion": "2.5.12", "fabricCaVersion": "1.5.5", "fabricCcenvVersion": "2.5.12", @@ -29,6 +26,9 @@ Validation warnings count: 0 "fabloConfig": "", "chaincodesBaseDir": "" }, + "monitoring": { + "loglevel": "info" + }, "capabilities": { "channel": "V2_0", "orderer": "V2_0", @@ -424,8 +424,7 @@ Validation warnings count: 0 "logging": { "error": "console", "warn": "console", - "info": "console", - "debug": "console" + "info": "console" } } } @@ -609,8 +608,7 @@ Validation warnings count: 0 "logging": { "error": "console", "warn": "console", - "info": "console", - "debug": "console" + "info": "console" } } } @@ -857,8 +855,7 @@ Validation warnings count: 0 "logging": { "error": "console", "warn": "console", - "info": "console", - "debug": "console" + "info": "console" } } } @@ -954,8 +951,7 @@ Validation warnings count: 0 "logging": { "error": "console", "warn": "console", - "info": "console", - "debug": "console" + "info": "console" } } } @@ -1202,8 +1198,7 @@ Validation warnings count: 0 "logging": { "error": "console", "warn": "console", - "info": "console", - "debug": "console" + "info": "console" } } } @@ -1311,8 +1306,7 @@ Validation warnings count: 0 "logging": { "error": "console", "warn": "console", - "info": "console", - "debug": "console" + "info": "console" } } } @@ -1561,8 +1555,7 @@ Validation warnings count: 0 "logging": { "error": "console", "warn": "console", - "info": "console", - "debug": "console" + "info": "console" } } } @@ -1665,8 +1658,7 @@ Validation warnings count: 0 "logging": { "error": "console", "warn": "console", - "info": "console", - "debug": "console" + "info": "console" } } } @@ -1913,8 +1905,7 @@ Validation warnings count: 0 "logging": { "error": "console", "warn": "console", - "info": "console", - "debug": "console" + "info": "console" } } } @@ -2008,8 +1999,7 @@ Validation warnings count: 0 "logging": { "error": "console", "warn": "console", - "info": "console", - "debug": "console" + "info": "console" } } } @@ -2023,8 +2013,8 @@ Validation warnings count: 0 "version": "0.0.1", "lang": "java", "channel": { - "name": "my-channel2", - "profileName": "MyChannel2", + "name": "my-channel3", + "profileName": "MyChannel3", "orgs": [ { "name": "Org1", @@ -2033,6 +2023,18 @@ Validation warnings count: 0 "cryptoConfigFileName": "crypto-config-org1", "peersCount": 2, "peers": [ + { + "name": "peer0", + "address": "peer0.org1.example.com", + "db": { + "type": "LevelDb" + }, + "isAnchorPeer": true, + "port": 7061, + "fullAddress": "peer0.org1.example.com:7061", + "couchDbExposePort": 5120, + "gatewayEnabled": true + }, { "name": "peer1", "address": "peer1.org1.example.com", @@ -2087,15 +2089,15 @@ Validation warnings count: 0 "address": "cli.org1.example.com" }, "headPeer": { - "name": "peer1", - "address": "peer1.org1.example.com", + "name": "peer0", + "address": "peer0.org1.example.com", "db": { "type": "LevelDb" }, "isAnchorPeer": true, - "port": 7062, - "fullAddress": "peer1.org1.example.com:7062", - "couchDbExposePort": 5121, + "port": 7061, + "fullAddress": "peer0.org1.example.com:7061", + "couchDbExposePort": 5120, "gatewayEnabled": true }, "ordererGroups": [], @@ -2112,8 +2114,7 @@ Validation warnings count: 0 "logging": { "error": "console", "warn": "console", - "info": "console", - "debug": "console" + "info": "console" } } } @@ -2125,6 +2126,18 @@ Validation warnings count: 0 "cryptoConfigFileName": "crypto-config-org2", "peersCount": 2, "peers": [ + { + "name": "peer0", + "address": "peer0.org2.example.com", + "db": { + "type": "LevelDb" + }, + "isAnchorPeer": true, + "port": 7081, + "fullAddress": "peer0.org2.example.com:7081", + "couchDbExposePort": 5140, + "gatewayEnabled": true + }, { "name": "peer1", "address": "peer1.org2.example.com", @@ -2179,15 +2192,15 @@ Validation warnings count: 0 "address": "cli.org2.example.com" }, "headPeer": { - "name": "peer1", - "address": "peer1.org2.example.com", + "name": "peer0", + "address": "peer0.org2.example.com", "db": { "type": "LevelDb" }, "isAnchorPeer": true, - "port": 7082, - "fullAddress": "peer1.org2.example.com:7082", - "couchDbExposePort": 5141, + "port": 7081, + "fullAddress": "peer0.org2.example.com:7081", + "couchDbExposePort": 5140, "gatewayEnabled": true }, "ordererGroups": [], @@ -2195,84 +2208,62 @@ Validation warnings count: 0 } ], "ordererGroup": { - "name": "group1", - "consensus": "etcdraft", - "configtxOrdererDefaults": "Group1Defaults", - "profileName": "Group1Genesis", - "genesisBlockName": "Group1Genesis.block", + "name": "group2", + "consensus": "solo", + "configtxOrdererDefaults": "Group2Defaults", + "profileName": "Group2Genesis", + "genesisBlockName": "Group2Genesis.block", "hostingOrgs": [ - "Orderer1" + "Orderer2" ], "orderers": [ { - "name": "orderer0.group1", - "address": "orderer0.group1.orderer1.com", - "orgName": "Orderer1", - "orgMspName": "Orderer1MSP", - "domain": "orderer1.com", - "consensus": "etcdraft", - "adminPort": 7053, - "port": 7030, - "fullAddress": "orderer0.group1.orderer1.com:7030" - }, - { - "name": "orderer1.group1", - "address": "orderer1.group1.orderer1.com", - "orgName": "Orderer1", - "orgMspName": "Orderer1MSP", - "domain": "orderer1.com", - "consensus": "etcdraft", - "adminPort": 7053, - "port": 7031, - "fullAddress": "orderer1.group1.orderer1.com:7031" - }, - { - "name": "orderer2.group1", - "address": "orderer2.group1.orderer1.com", - "orgName": "Orderer1", - "orgMspName": "Orderer1MSP", - "domain": "orderer1.com", - "consensus": "etcdraft", + "name": "orderer0.group2", + "address": "orderer0.group2.orderer2.com", + "orgName": "Orderer2", + "orgMspName": "Orderer2MSP", + "domain": "orderer2.com", + "consensus": "solo", "adminPort": 7053, - "port": 7032, - "fullAddress": "orderer2.group1.orderer1.com:7032" + "port": 7050, + "fullAddress": "orderer0.group2.orderer2.com:7050" } ], "ordererHeads": [ { - "name": "orderer0.group1", - "address": "orderer0.group1.orderer1.com", - "orgName": "Orderer1", - "orgMspName": "Orderer1MSP", - "domain": "orderer1.com", - "consensus": "etcdraft", + "name": "orderer0.group2", + "address": "orderer0.group2.orderer2.com", + "orgName": "Orderer2", + "orgMspName": "Orderer2MSP", + "domain": "orderer2.com", + "consensus": "solo", "adminPort": 7053, - "port": 7030, - "fullAddress": "orderer0.group1.orderer1.com:7030" + "port": 7050, + "fullAddress": "orderer0.group2.orderer2.com:7050" } ], "ordererHead": { - "name": "orderer0.group1", - "address": "orderer0.group1.orderer1.com", - "orgName": "Orderer1", - "orgMspName": "Orderer1MSP", - "domain": "orderer1.com", - "consensus": "etcdraft", + "name": "orderer0.group2", + "address": "orderer0.group2.orderer2.com", + "orgName": "Orderer2", + "orgMspName": "Orderer2MSP", + "domain": "orderer2.com", + "consensus": "solo", "adminPort": 7053, - "port": 7030, - "fullAddress": "orderer0.group1.orderer1.com:7030" + "port": 7050, + "fullAddress": "orderer0.group2.orderer2.com:7050" } }, "ordererHead": { - "name": "orderer0.group1", - "address": "orderer0.group1.orderer1.com", - "orgName": "Orderer1", - "orgMspName": "Orderer1MSP", - "domain": "orderer1.com", - "consensus": "etcdraft", + "name": "orderer0.group2", + "address": "orderer0.group2.orderer2.com", + "orgName": "Orderer2", + "orgMspName": "Orderer2MSP", + "domain": "orderer2.com", + "consensus": "solo", "adminPort": 7053, - "port": 7030, - "fullAddress": "orderer0.group1.orderer1.com:7030" + "port": 7050, + "fullAddress": "orderer0.group2.orderer2.com:7050" }, "instantiatingOrg": { "name": "Org1", @@ -2281,6 +2272,18 @@ Validation warnings count: 0 "cryptoConfigFileName": "crypto-config-org1", "peersCount": 2, "peers": [ + { + "name": "peer0", + "address": "peer0.org1.example.com", + "db": { + "type": "LevelDb" + }, + "isAnchorPeer": true, + "port": 7061, + "fullAddress": "peer0.org1.example.com:7061", + "couchDbExposePort": 5120, + "gatewayEnabled": true + }, { "name": "peer1", "address": "peer1.org1.example.com", @@ -2335,15 +2338,15 @@ Validation warnings count: 0 "address": "cli.org1.example.com" }, "headPeer": { - "name": "peer1", - "address": "peer1.org1.example.com", + "name": "peer0", + "address": "peer0.org1.example.com", "db": { "type": "LevelDb" }, "isAnchorPeer": true, - "port": 7062, - "fullAddress": "peer1.org1.example.com:7062", - "couchDbExposePort": 5121, + "port": 7061, + "fullAddress": "peer0.org1.example.com:7061", + "couchDbExposePort": 5120, "gatewayEnabled": true }, "ordererGroups": [], @@ -2360,8 +2363,7 @@ Validation warnings count: 0 "logging": { "error": "console", "warn": "console", - "info": "console", - "debug": "console" + "info": "console" } } } @@ -2376,6 +2378,18 @@ Validation warnings count: 0 "cryptoConfigFileName": "crypto-config-org1", "peersCount": 2, "peers": [ + { + "name": "peer0", + "address": "peer0.org1.example.com", + "db": { + "type": "LevelDb" + }, + "isAnchorPeer": true, + "port": 7061, + "fullAddress": "peer0.org1.example.com:7061", + "couchDbExposePort": 5120, + "gatewayEnabled": true + }, { "name": "peer1", "address": "peer1.org1.example.com", @@ -2430,15 +2444,15 @@ Validation warnings count: 0 "address": "cli.org1.example.com" }, "headPeer": { - "name": "peer1", - "address": "peer1.org1.example.com", + "name": "peer0", + "address": "peer0.org1.example.com", "db": { "type": "LevelDb" }, "isAnchorPeer": true, - "port": 7062, - "fullAddress": "peer1.org1.example.com:7062", - "couchDbExposePort": 5121, + "port": 7061, + "fullAddress": "peer0.org1.example.com:7061", + "couchDbExposePort": 5120, "gatewayEnabled": true }, "ordererGroups": [], @@ -2455,8 +2469,7 @@ Validation warnings count: 0 "logging": { "error": "console", "warn": "console", - "info": "console", - "debug": "console" + "info": "console" } } } diff --git a/samples/fablo-config-hlf2-2orgs-2chaincodes-raft.yaml b/samples/fablo-config-hlf2-2orgs-2chaincodes-raft.yaml index cfb3ca74..3d238d1f 100644 --- a/samples/fablo-config-hlf2-2orgs-2chaincodes-raft.yaml +++ b/samples/fablo-config-hlf2-2orgs-2chaincodes-raft.yaml @@ -5,8 +5,6 @@ global: tls: true tools: explorer: true - monitoring: - loglevel: debug orgs: - organization: name: Orderer1 @@ -39,6 +37,7 @@ orgs: peer: *defaultPeerConfig channels: - name: my-channel1 + ordererGroup: group1 orgs: - name: Org1 peers: @@ -47,6 +46,7 @@ channels: peers: - peer0 - name: my-channel2 + ordererGroup: group1 orgs: - name: Org1 peers: @@ -73,7 +73,7 @@ chaincodes: - name: chaincode2 version: 0.0.1 lang: java - channel: my-channel2 + channel: my-channel3 endorsement: OR ('Org1MSP.member', 'Org2MSP.member') directory: "./chaincodes/chaincode-java-simple" hooks: diff --git a/src/setup-docker/templates/fabric-docker/chaincode-scripts.sh b/src/setup-docker/templates/fabric-docker/chaincode-scripts.sh index ca381239..e6691486 100755 --- a/src/setup-docker/templates/fabric-docker/chaincode-scripts.sh +++ b/src/setup-docker/templates/fabric-docker/chaincode-scripts.sh @@ -60,11 +60,20 @@ chaincodeInvoke() { <% if(!global.tls) { -%> peerChaincodeInvoke "$cli" "$peer_addresses" "$2" "$3" "$4" "$5" <% } else { -%> + # Initialize ca_cert to prevent using an uninitialized variable if the channel isn't found + local ca_cert="" + <% channels.forEach((channel) => { -%> if [ "$2" = "<%= channel.name %>" ]; then - ca_cert="crypto-orderer/tlsca.<%= ordererGroups[0].ordererHeads[0].domain %>-cert.pem" + ca_cert="crypto-orderer/tlsca.<%= channel.ordererGroup.ordererHeads[0].domain %>-cert.pem" fi <% }) -%> + + if [ -z "$ca_cert" ]; then + echo "Error: Channel '$2' not found or is not associated with an orderer group." + exit 1 + fi + peerChaincodeInvokeTls "$cli" "$peer_addresses" "$2" "$3" "$4" "$5" "$peer_certs" "$ca_cert" <% } -%> } @@ -115,11 +124,19 @@ chaincodeQuery() { <% if(!global.tls) { %> peerChaincodeQuery "$cli" "$peer_address" "$channel_name" "$chaincode_name" "$command" "$transient" <% } else { %> - <% channels.forEach((channel) => { %> - if [ "$channel_name" = "<%= channel.name %>" ]; then - ca_cert="crypto-orderer/tlsca.<%= ordererGroups[0].ordererHeads[0].domain %>-cert.pem" + # Initialize ca_cert to prevent using an uninitialized variable if the channel isn't found + local ca_cert="" + + <% channels.forEach((channel) => { -%> + if [ "$2" = "<%= channel.name %>" ]; then + ca_cert="crypto-orderer/tlsca.<%= channel.ordererGroup.ordererHeads[0].domain %>-cert.pem" fi - <% }) %> + <% }) -%> + + if [ -z "$ca_cert" ]; then + echo "Error: Channel '$2' not found or is not associated with an orderer group." + exit 1 + fi peerChaincodeQueryTls "$cli" "$peer_address" "$channel_name" "$chaincode_name" "$command" "$transient" "$peer_cert" "$ca_cert" <% } %> -} +} \ No newline at end of file