From 9bf75f4f34be32051aa78d8ff3c8f79188d7763f Mon Sep 17 00:00:00 2001 From: Osama Rabea Date: Fri, 25 Jul 2025 02:30:41 +0300 Subject: [PATCH 01/13] Test multiple orderer groups by assigning different orderer groups to separate channels (v2) Signed-off-by: Osama Rabea --- e2e-network/docker/test-02-v2-raft-2orgs.sh | 2 ++ samples/fablo-config-hlf2-2orgs-2chaincodes-raft.yaml | 2 ++ 2 files changed, 4 insertions(+) diff --git a/e2e-network/docker/test-02-v2-raft-2orgs.sh b/e2e-network/docker/test-02-v2-raft-2orgs.sh index 66b9b2019..1c8799497 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 diff --git a/samples/fablo-config-hlf2-2orgs-2chaincodes-raft.yaml b/samples/fablo-config-hlf2-2orgs-2chaincodes-raft.yaml index 9f4c6a515..914db23f9 100644 --- a/samples/fablo-config-hlf2-2orgs-2chaincodes-raft.yaml +++ b/samples/fablo-config-hlf2-2orgs-2chaincodes-raft.yaml @@ -37,6 +37,7 @@ orgs: peer: *defaultPeerConfig channels: - name: my-channel1 + ordererGroup: group1 orgs: - name: Org1 peers: @@ -45,6 +46,7 @@ channels: peers: - peer0 - name: my-channel2 + ordererGroup: group1 orgs: - name: Org1 peers: From 300ba90c76f49d74f822f4c9b3d7a275057fc7a9 Mon Sep 17 00:00:00 2001 From: Osama Rabea Date: Fri, 25 Jul 2025 03:07:12 +0300 Subject: [PATCH 02/13] Test muliple orderer group (v3) Signed-off-by: Osama Rabea --- e2e-network/docker/test-05-v3.sh | 10 +++--- .../fablo-config-hlf3-1orgs-1chaincode.json | 32 +++++++++++++++++-- 2 files changed, 34 insertions(+), 8 deletions(-) diff --git a/e2e-network/docker/test-05-v3.sh b/e2e-network/docker/test-05-v3.sh index 5f08f5cf8..7a905fd78 100755 --- a/e2e-network/docker/test-05-v3.sh +++ b/e2e-network/docker/test-05-v3.sh @@ -51,15 +51,15 @@ trap 'networkDown ; echo "Test failed" ; exit 1' ERR SIGINT # start the network networkUp -waitForContainer "orderer0.group1.orderer.example.com" "Starting raft node as part of a new channel channel=my-channel1" +waitForContainer "orderer0.group1.orderer1.example.com" "Starting raft node as part of a new channel channel=my-channel1" +waitForContainer "orderer0.group2.orderer2.example.com" "Starting raft node as part of a new channel channel=my-channel2" waitForContainer "ca.org1.example.com" "Listening on https://0.0.0.0:7054" waitForContainer "peer0.org1.example.com" "Joining gossip network of channel my-channel1 with 1 organizations" -waitForContainer "peer1.org1.example.com" "Joining gossip network of channel my-channel1 with 1 organizations" +waitForContainer "peer1.org1.example.com" "Joining gossip network of channel my-channel2 with 1 organizations" waitForContainer "peer0.org1.example.com" "Learning about the configured anchor peers of Org1MSP for channel my-channel1" waitForContainer "peer0.org1.example.com" "Anchor peer.*with same endpoint, skipping connecting to myself" -waitForContainer "peer0.org1.example.com" "Membership view has changed. peers went online:.*peer1.org1.example.com:7042" -waitForContainer "peer1.org1.example.com" "Learning about the configured anchor peers of Org1MSP for channel my-channel1" -waitForContainer "peer1.org1.example.com" "Membership view has changed. peers went online:.*peer0.org1.example.com:7041" +waitForContainer "peer1.org1.example.com" "Learning about the configured anchor peers of Org1MSP for channel my-channel2" +waitForContainer "peer1.org1.example.com" "Anchor peer.*with same endpoint, skipping connecting to myself" # Test simple chaincode expectInvoke "peer0.org1.example.com" "my-channel1" "chaincode1" \ diff --git a/samples/fablo-config-hlf3-1orgs-1chaincode.json b/samples/fablo-config-hlf3-1orgs-1chaincode.json index 5c726ec6e..cfa22680e 100644 --- a/samples/fablo-config-hlf3-1orgs-1chaincode.json +++ b/samples/fablo-config-hlf3-1orgs-1chaincode.json @@ -10,14 +10,27 @@ "orgs": [ { "organization": { - "name": "Orderer", - "domain": "orderer.example.com" + "name": "Orderer1", + "domain": "orderer1.example.com" }, "orderers": [ { "groupName": "group1", "type": "raft", - "instances": 4 + "instances": 3 + } + ] + }, + { + "organization": { + "name": "Orderer2", + "domain": "orderer2.example.com" + }, + "orderers": [ + { + "groupName": "group2", + "type": "raft", + "instances": 1 } ] }, @@ -35,6 +48,7 @@ "channels": [ { "name": "my-channel1", + "ordererGroup": "group1", "orgs": [ { "name": "Org1", @@ -44,6 +58,18 @@ ] } ] + }, + { + "name": "my-channel2", + "ordererGroup": "group2", + "orgs": [ + { + "name": "Org1", + "peers": [ + "peer1" + ] + } + ] } ], "chaincodes": [ From 4778f94538773b85529b37e594ec6c298457417a Mon Sep 17 00:00:00 2001 From: Osama Rabea Date: Fri, 25 Jul 2025 03:22:27 +0300 Subject: [PATCH 03/13] Update Snapshots Signed-off-by: Osama Rabea --- e2e/__snapshots__/extendConfig.test.ts.snap | 817 ++++++--- ...ig-hlf3-1orgs-1chaincode.json.test.ts.snap | 1464 +++++++++++++---- 2 files changed, 1687 insertions(+), 594 deletions(-) diff --git a/e2e/__snapshots__/extendConfig.test.ts.snap b/e2e/__snapshots__/extendConfig.test.ts.snap index 6fd3d4722..6ad880e97 100644 --- a/e2e/__snapshots__/extendConfig.test.ts.snap +++ b/e2e/__snapshots__/extendConfig.test.ts.snap @@ -9161,36 +9161,36 @@ exports[`extend config samples/fablo-config-hlf3-1orgs-1chaincode.json 1`] = ` "anchorPeers": [ { "address": "peer0.org1.example.com", - "couchDbExposePort": 5100, + "couchDbExposePort": 5120, "db": { "type": "LevelDb", }, - "fullAddress": "peer0.org1.example.com:7041", + "fullAddress": "peer0.org1.example.com:7061", "gatewayEnabled": true, "isAnchorPeer": true, "name": "peer0", - "port": 7041, + "port": 7061, }, { "address": "peer1.org1.example.com", - "couchDbExposePort": 5101, + "couchDbExposePort": 5121, "db": { "type": "LevelDb", }, - "fullAddress": "peer1.org1.example.com:7042", + "fullAddress": "peer1.org1.example.com:7062", "gatewayEnabled": true, "isAnchorPeer": true, "name": "peer1", - "port": 7042, + "port": 7062, }, ], - "bootstrapPeers": ""peer0.org1.example.com:7041 peer1.org1.example.com:7042"", + "bootstrapPeers": ""peer0.org1.example.com:7061 peer1.org1.example.com:7062"", "ca": { "address": "ca.org1.example.com", "caAdminNameVar": "ORG1_CA_ADMIN_NAME", "caAdminPassVar": "ORG1_CA_ADMIN_PASSWORD", "db": "sqlite", - "exposePort": 7040, + "exposePort": 7060, "fullAddress": "ca.org1.example.com:7054", "port": 7054, "prefix": "ca", @@ -9202,15 +9202,15 @@ exports[`extend config samples/fablo-config-hlf3-1orgs-1chaincode.json 1`] = ` "domain": "org1.example.com", "headPeer": { "address": "peer0.org1.example.com", - "couchDbExposePort": 5100, + "couchDbExposePort": 5120, "db": { "type": "LevelDb", }, - "fullAddress": "peer0.org1.example.com:7041", + "fullAddress": "peer0.org1.example.com:7061", "gatewayEnabled": true, "isAnchorPeer": true, "name": "peer0", - "port": 7041, + "port": 7061, }, "mspName": "Org1MSP", "name": "Org1", @@ -9218,27 +9218,27 @@ exports[`extend config samples/fablo-config-hlf3-1orgs-1chaincode.json 1`] = ` "peers": [ { "address": "peer0.org1.example.com", - "couchDbExposePort": 5100, + "couchDbExposePort": 5120, "db": { "type": "LevelDb", }, - "fullAddress": "peer0.org1.example.com:7041", + "fullAddress": "peer0.org1.example.com:7061", "gatewayEnabled": true, "isAnchorPeer": true, "name": "peer0", - "port": 7041, + "port": 7061, }, { "address": "peer1.org1.example.com", - "couchDbExposePort": 5101, + "couchDbExposePort": 5121, "db": { "type": "LevelDb", }, - "fullAddress": "peer1.org1.example.com:7042", + "fullAddress": "peer1.org1.example.com:7062", "gatewayEnabled": true, "isAnchorPeer": true, "name": "peer1", - "port": 7042, + "port": 7062, }, ], "peersCount": 2, @@ -9250,90 +9250,79 @@ exports[`extend config samples/fablo-config-hlf3-1orgs-1chaincode.json 1`] = ` "consensus": "etcdraft", "genesisBlockName": "Group1Genesis.block", "hostingOrgs": [ - "Orderer", + "Orderer1", ], "name": "group1", "ordererHead": { - "address": "orderer0.group1.orderer.example.com", + "address": "orderer0.group1.orderer1.example.com", "adminPort": 7053, "consensus": "etcdraft", - "domain": "orderer.example.com", - "fullAddress": "orderer0.group1.orderer.example.com:7030", + "domain": "orderer1.example.com", + "fullAddress": "orderer0.group1.orderer1.example.com:7030", "name": "orderer0.group1", - "orgMspName": "OrdererMSP", - "orgName": "Orderer", + "orgMspName": "Orderer1MSP", + "orgName": "Orderer1", "port": 7030, }, "ordererHeads": [ { - "address": "orderer0.group1.orderer.example.com", + "address": "orderer0.group1.orderer1.example.com", "adminPort": 7053, "consensus": "etcdraft", - "domain": "orderer.example.com", - "fullAddress": "orderer0.group1.orderer.example.com:7030", + "domain": "orderer1.example.com", + "fullAddress": "orderer0.group1.orderer1.example.com:7030", "name": "orderer0.group1", - "orgMspName": "OrdererMSP", - "orgName": "Orderer", + "orgMspName": "Orderer1MSP", + "orgName": "Orderer1", "port": 7030, }, ], "orderers": [ { - "address": "orderer0.group1.orderer.example.com", + "address": "orderer0.group1.orderer1.example.com", "adminPort": 7053, "consensus": "etcdraft", - "domain": "orderer.example.com", - "fullAddress": "orderer0.group1.orderer.example.com:7030", + "domain": "orderer1.example.com", + "fullAddress": "orderer0.group1.orderer1.example.com:7030", "name": "orderer0.group1", - "orgMspName": "OrdererMSP", - "orgName": "Orderer", + "orgMspName": "Orderer1MSP", + "orgName": "Orderer1", "port": 7030, }, { - "address": "orderer1.group1.orderer.example.com", + "address": "orderer1.group1.orderer1.example.com", "adminPort": 7053, "consensus": "etcdraft", - "domain": "orderer.example.com", - "fullAddress": "orderer1.group1.orderer.example.com:7031", + "domain": "orderer1.example.com", + "fullAddress": "orderer1.group1.orderer1.example.com:7031", "name": "orderer1.group1", - "orgMspName": "OrdererMSP", - "orgName": "Orderer", + "orgMspName": "Orderer1MSP", + "orgName": "Orderer1", "port": 7031, }, { - "address": "orderer2.group1.orderer.example.com", + "address": "orderer2.group1.orderer1.example.com", "adminPort": 7053, "consensus": "etcdraft", - "domain": "orderer.example.com", - "fullAddress": "orderer2.group1.orderer.example.com:7032", + "domain": "orderer1.example.com", + "fullAddress": "orderer2.group1.orderer1.example.com:7032", "name": "orderer2.group1", - "orgMspName": "OrdererMSP", - "orgName": "Orderer", + "orgMspName": "Orderer1MSP", + "orgName": "Orderer1", "port": 7032, }, - { - "address": "orderer3.group1.orderer.example.com", - "adminPort": 7053, - "consensus": "etcdraft", - "domain": "orderer.example.com", - "fullAddress": "orderer3.group1.orderer.example.com:7033", - "name": "orderer3.group1", - "orgMspName": "OrdererMSP", - "orgName": "Orderer", - "port": 7033, - }, ], "profileName": "Group1Genesis", }, "ordererHead": { - "address": "orderer0.group1.orderer.example.com", + "address": "orderer0.group1.orderer1.example.com", "adminPort": 7053, "consensus": "etcdraft", - "domain": "orderer.example.com", - "fullAddress": "orderer0.group1.orderer.example.com:7030", + "domain": "orderer1.example.com", + "fullAddress": "orderer0.group1.orderer1.example.com:7030", "name": "orderer0.group1", - "orgMspName": "OrdererMSP", - "orgName": "Orderer", + "orgMspName": "Orderer1MSP", + "orgName": "Orderer1", "port": 7030, }, "orgs": [ @@ -9341,36 +9330,36 @@ exports[`extend config samples/fablo-config-hlf3-1orgs-1chaincode.json 1`] = ` "anchorPeers": [ { "address": "peer0.org1.example.com", - "couchDbExposePort": 5100, + "couchDbExposePort": 5120, "db": { "type": "LevelDb", }, - "fullAddress": "peer0.org1.example.com:7041", + "fullAddress": "peer0.org1.example.com:7061", "gatewayEnabled": true, "isAnchorPeer": true, "name": "peer0", - "port": 7041, + "port": 7061, }, { "address": "peer1.org1.example.com", - "couchDbExposePort": 5101, + "couchDbExposePort": 5121, "db": { "type": "LevelDb", }, - "fullAddress": "peer1.org1.example.com:7042", + "fullAddress": "peer1.org1.example.com:7062", "gatewayEnabled": true, "isAnchorPeer": true, "name": "peer1", - "port": 7042, + "port": 7062, }, ], - "bootstrapPeers": ""peer0.org1.example.com:7041 peer1.org1.example.com:7042"", + "bootstrapPeers": ""peer0.org1.example.com:7061 peer1.org1.example.com:7062"", "ca": { "address": "ca.org1.example.com", "caAdminNameVar": "ORG1_CA_ADMIN_NAME", "caAdminPassVar": "ORG1_CA_ADMIN_PASSWORD", "db": "sqlite", - "exposePort": 7040, + "exposePort": 7060, "fullAddress": "ca.org1.example.com:7054", "port": 7054, "prefix": "ca", @@ -9382,15 +9371,15 @@ exports[`extend config samples/fablo-config-hlf3-1orgs-1chaincode.json 1`] = ` "domain": "org1.example.com", "headPeer": { "address": "peer0.org1.example.com", - "couchDbExposePort": 5100, + "couchDbExposePort": 5120, "db": { "type": "LevelDb", }, - "fullAddress": "peer0.org1.example.com:7041", + "fullAddress": "peer0.org1.example.com:7061", "gatewayEnabled": true, "isAnchorPeer": true, "name": "peer0", - "port": 7041, + "port": 7061, }, "mspName": "Org1MSP", "name": "Org1", @@ -9398,27 +9387,27 @@ exports[`extend config samples/fablo-config-hlf3-1orgs-1chaincode.json 1`] = ` "peers": [ { "address": "peer0.org1.example.com", - "couchDbExposePort": 5100, + "couchDbExposePort": 5120, "db": { "type": "LevelDb", }, - "fullAddress": "peer0.org1.example.com:7041", + "fullAddress": "peer0.org1.example.com:7061", "gatewayEnabled": true, "isAnchorPeer": true, "name": "peer0", - "port": 7041, + "port": 7061, }, { "address": "peer1.org1.example.com", - "couchDbExposePort": 5101, + "couchDbExposePort": 5121, "db": { "type": "LevelDb", }, - "fullAddress": "peer1.org1.example.com:7042", + "fullAddress": "peer1.org1.example.com:7062", "gatewayEnabled": true, "isAnchorPeer": true, "name": "peer1", - "port": 7042, + "port": 7062, }, ], "peersCount": 2, @@ -9434,36 +9423,36 @@ exports[`extend config samples/fablo-config-hlf3-1orgs-1chaincode.json 1`] = ` "anchorPeers": [ { "address": "peer0.org1.example.com", - "couchDbExposePort": 5100, + "couchDbExposePort": 5120, "db": { "type": "LevelDb", }, - "fullAddress": "peer0.org1.example.com:7041", + "fullAddress": "peer0.org1.example.com:7061", "gatewayEnabled": true, "isAnchorPeer": true, "name": "peer0", - "port": 7041, + "port": 7061, }, { "address": "peer1.org1.example.com", - "couchDbExposePort": 5101, + "couchDbExposePort": 5121, "db": { "type": "LevelDb", }, - "fullAddress": "peer1.org1.example.com:7042", + "fullAddress": "peer1.org1.example.com:7062", "gatewayEnabled": true, "isAnchorPeer": true, "name": "peer1", - "port": 7042, + "port": 7062, }, ], - "bootstrapPeers": ""peer0.org1.example.com:7041 peer1.org1.example.com:7042"", + "bootstrapPeers": ""peer0.org1.example.com:7061 peer1.org1.example.com:7062"", "ca": { "address": "ca.org1.example.com", "caAdminNameVar": "ORG1_CA_ADMIN_NAME", "caAdminPassVar": "ORG1_CA_ADMIN_PASSWORD", "db": "sqlite", - "exposePort": 7040, + "exposePort": 7060, "fullAddress": "ca.org1.example.com:7054", "port": 7054, "prefix": "ca", @@ -9475,15 +9464,15 @@ exports[`extend config samples/fablo-config-hlf3-1orgs-1chaincode.json 1`] = ` "domain": "org1.example.com", "headPeer": { "address": "peer0.org1.example.com", - "couchDbExposePort": 5100, + "couchDbExposePort": 5120, "db": { "type": "LevelDb", }, - "fullAddress": "peer0.org1.example.com:7041", + "fullAddress": "peer0.org1.example.com:7061", "gatewayEnabled": true, "isAnchorPeer": true, "name": "peer0", - "port": 7041, + "port": 7061, }, "mspName": "Org1MSP", "name": "Org1", @@ -9491,27 +9480,27 @@ exports[`extend config samples/fablo-config-hlf3-1orgs-1chaincode.json 1`] = ` "peers": [ { "address": "peer0.org1.example.com", - "couchDbExposePort": 5100, + "couchDbExposePort": 5120, "db": { "type": "LevelDb", }, - "fullAddress": "peer0.org1.example.com:7041", + "fullAddress": "peer0.org1.example.com:7061", "gatewayEnabled": true, "isAnchorPeer": true, "name": "peer0", - "port": 7041, + "port": 7061, }, { "address": "peer1.org1.example.com", - "couchDbExposePort": 5101, + "couchDbExposePort": 5121, "db": { "type": "LevelDb", }, - "fullAddress": "peer1.org1.example.com:7042", + "fullAddress": "peer1.org1.example.com:7062", "gatewayEnabled": true, "isAnchorPeer": true, "name": "peer1", - "port": 7042, + "port": 7062, }, ], "peersCount": 2, @@ -9530,36 +9519,36 @@ exports[`extend config samples/fablo-config-hlf3-1orgs-1chaincode.json 1`] = ` "anchorPeers": [ { "address": "peer0.org1.example.com", - "couchDbExposePort": 5100, + "couchDbExposePort": 5120, "db": { "type": "LevelDb", }, - "fullAddress": "peer0.org1.example.com:7041", + "fullAddress": "peer0.org1.example.com:7061", "gatewayEnabled": true, "isAnchorPeer": true, "name": "peer0", - "port": 7041, + "port": 7061, }, { "address": "peer1.org1.example.com", - "couchDbExposePort": 5101, + "couchDbExposePort": 5121, "db": { "type": "LevelDb", }, - "fullAddress": "peer1.org1.example.com:7042", + "fullAddress": "peer1.org1.example.com:7062", "gatewayEnabled": true, "isAnchorPeer": true, "name": "peer1", - "port": 7042, + "port": 7062, }, ], - "bootstrapPeers": ""peer0.org1.example.com:7041 peer1.org1.example.com:7042"", + "bootstrapPeers": ""peer0.org1.example.com:7061 peer1.org1.example.com:7062"", "ca": { "address": "ca.org1.example.com", "caAdminNameVar": "ORG1_CA_ADMIN_NAME", "caAdminPassVar": "ORG1_CA_ADMIN_PASSWORD", "db": "sqlite", - "exposePort": 7040, + "exposePort": 7060, "fullAddress": "ca.org1.example.com:7054", "port": 7054, "prefix": "ca", @@ -9571,15 +9560,15 @@ exports[`extend config samples/fablo-config-hlf3-1orgs-1chaincode.json 1`] = ` "domain": "org1.example.com", "headPeer": { "address": "peer0.org1.example.com", - "couchDbExposePort": 5100, + "couchDbExposePort": 5120, "db": { "type": "LevelDb", }, - "fullAddress": "peer0.org1.example.com:7041", + "fullAddress": "peer0.org1.example.com:7061", "gatewayEnabled": true, "isAnchorPeer": true, "name": "peer0", - "port": 7041, + "port": 7061, }, "mspName": "Org1MSP", "name": "Org1", @@ -9587,27 +9576,27 @@ exports[`extend config samples/fablo-config-hlf3-1orgs-1chaincode.json 1`] = ` "peers": [ { "address": "peer0.org1.example.com", - "couchDbExposePort": 5100, + "couchDbExposePort": 5120, "db": { "type": "LevelDb", }, - "fullAddress": "peer0.org1.example.com:7041", + "fullAddress": "peer0.org1.example.com:7061", "gatewayEnabled": true, "isAnchorPeer": true, "name": "peer0", - "port": 7041, + "port": 7061, }, { "address": "peer1.org1.example.com", - "couchDbExposePort": 5101, + "couchDbExposePort": 5121, "db": { "type": "LevelDb", }, - "fullAddress": "peer1.org1.example.com:7042", + "fullAddress": "peer1.org1.example.com:7062", "gatewayEnabled": true, "isAnchorPeer": true, "name": "peer1", - "port": 7042, + "port": 7062, }, ], "peersCount": 2, @@ -9619,90 +9608,79 @@ exports[`extend config samples/fablo-config-hlf3-1orgs-1chaincode.json 1`] = ` "consensus": "etcdraft", "genesisBlockName": "Group1Genesis.block", "hostingOrgs": [ - "Orderer", + "Orderer1", ], "name": "group1", "ordererHead": { - "address": "orderer0.group1.orderer.example.com", + "address": "orderer0.group1.orderer1.example.com", "adminPort": 7053, "consensus": "etcdraft", - "domain": "orderer.example.com", - "fullAddress": "orderer0.group1.orderer.example.com:7030", + "domain": "orderer1.example.com", + "fullAddress": "orderer0.group1.orderer1.example.com:7030", "name": "orderer0.group1", - "orgMspName": "OrdererMSP", - "orgName": "Orderer", + "orgMspName": "Orderer1MSP", + "orgName": "Orderer1", "port": 7030, }, "ordererHeads": [ { - "address": "orderer0.group1.orderer.example.com", + "address": "orderer0.group1.orderer1.example.com", "adminPort": 7053, "consensus": "etcdraft", - "domain": "orderer.example.com", - "fullAddress": "orderer0.group1.orderer.example.com:7030", + "domain": "orderer1.example.com", + "fullAddress": "orderer0.group1.orderer1.example.com:7030", "name": "orderer0.group1", - "orgMspName": "OrdererMSP", - "orgName": "Orderer", + "orgMspName": "Orderer1MSP", + "orgName": "Orderer1", "port": 7030, }, ], "orderers": [ { - "address": "orderer0.group1.orderer.example.com", + "address": "orderer0.group1.orderer1.example.com", "adminPort": 7053, "consensus": "etcdraft", - "domain": "orderer.example.com", - "fullAddress": "orderer0.group1.orderer.example.com:7030", + "domain": "orderer1.example.com", + "fullAddress": "orderer0.group1.orderer1.example.com:7030", "name": "orderer0.group1", - "orgMspName": "OrdererMSP", - "orgName": "Orderer", + "orgMspName": "Orderer1MSP", + "orgName": "Orderer1", "port": 7030, }, { - "address": "orderer1.group1.orderer.example.com", + "address": "orderer1.group1.orderer1.example.com", "adminPort": 7053, "consensus": "etcdraft", - "domain": "orderer.example.com", - "fullAddress": "orderer1.group1.orderer.example.com:7031", + "domain": "orderer1.example.com", + "fullAddress": "orderer1.group1.orderer1.example.com:7031", "name": "orderer1.group1", - "orgMspName": "OrdererMSP", - "orgName": "Orderer", + "orgMspName": "Orderer1MSP", + "orgName": "Orderer1", "port": 7031, }, { - "address": "orderer2.group1.orderer.example.com", + "address": "orderer2.group1.orderer1.example.com", "adminPort": 7053, "consensus": "etcdraft", - "domain": "orderer.example.com", - "fullAddress": "orderer2.group1.orderer.example.com:7032", + "domain": "orderer1.example.com", + "fullAddress": "orderer2.group1.orderer1.example.com:7032", "name": "orderer2.group1", - "orgMspName": "OrdererMSP", - "orgName": "Orderer", + "orgMspName": "Orderer1MSP", + "orgName": "Orderer1", "port": 7032, }, - { - "address": "orderer3.group1.orderer.example.com", - "adminPort": 7053, - "consensus": "etcdraft", - "domain": "orderer.example.com", - "fullAddress": "orderer3.group1.orderer.example.com:7033", - "name": "orderer3.group1", - "orgMspName": "OrdererMSP", - "orgName": "Orderer", - "port": 7033, - }, ], "profileName": "Group1Genesis", }, "ordererHead": { - "address": "orderer0.group1.orderer.example.com", + "address": "orderer0.group1.orderer1.example.com", "adminPort": 7053, "consensus": "etcdraft", - "domain": "orderer.example.com", - "fullAddress": "orderer0.group1.orderer.example.com:7030", + "domain": "orderer1.example.com", + "fullAddress": "orderer0.group1.orderer1.example.com:7030", "name": "orderer0.group1", - "orgMspName": "OrdererMSP", - "orgName": "Orderer", + "orgMspName": "Orderer1MSP", + "orgName": "Orderer1", "port": 7030, }, "orgs": [ @@ -9710,36 +9688,36 @@ exports[`extend config samples/fablo-config-hlf3-1orgs-1chaincode.json 1`] = ` "anchorPeers": [ { "address": "peer0.org1.example.com", - "couchDbExposePort": 5100, + "couchDbExposePort": 5120, "db": { "type": "LevelDb", }, - "fullAddress": "peer0.org1.example.com:7041", + "fullAddress": "peer0.org1.example.com:7061", "gatewayEnabled": true, "isAnchorPeer": true, "name": "peer0", - "port": 7041, + "port": 7061, }, { "address": "peer1.org1.example.com", - "couchDbExposePort": 5101, + "couchDbExposePort": 5121, "db": { "type": "LevelDb", }, - "fullAddress": "peer1.org1.example.com:7042", + "fullAddress": "peer1.org1.example.com:7062", "gatewayEnabled": true, "isAnchorPeer": true, "name": "peer1", - "port": 7042, + "port": 7062, }, ], - "bootstrapPeers": ""peer0.org1.example.com:7041 peer1.org1.example.com:7042"", + "bootstrapPeers": ""peer0.org1.example.com:7061 peer1.org1.example.com:7062"", "ca": { "address": "ca.org1.example.com", "caAdminNameVar": "ORG1_CA_ADMIN_NAME", "caAdminPassVar": "ORG1_CA_ADMIN_PASSWORD", "db": "sqlite", - "exposePort": 7040, + "exposePort": 7060, "fullAddress": "ca.org1.example.com:7054", "port": 7054, "prefix": "ca", @@ -9751,15 +9729,15 @@ exports[`extend config samples/fablo-config-hlf3-1orgs-1chaincode.json 1`] = ` "domain": "org1.example.com", "headPeer": { "address": "peer0.org1.example.com", - "couchDbExposePort": 5100, + "couchDbExposePort": 5120, "db": { "type": "LevelDb", }, - "fullAddress": "peer0.org1.example.com:7041", + "fullAddress": "peer0.org1.example.com:7061", "gatewayEnabled": true, "isAnchorPeer": true, "name": "peer0", - "port": 7041, + "port": 7061, }, "mspName": "Org1MSP", "name": "Org1", @@ -9767,27 +9745,27 @@ exports[`extend config samples/fablo-config-hlf3-1orgs-1chaincode.json 1`] = ` "peers": [ { "address": "peer0.org1.example.com", - "couchDbExposePort": 5100, + "couchDbExposePort": 5120, "db": { "type": "LevelDb", }, - "fullAddress": "peer0.org1.example.com:7041", + "fullAddress": "peer0.org1.example.com:7061", "gatewayEnabled": true, "isAnchorPeer": true, "name": "peer0", - "port": 7041, + "port": 7061, }, { "address": "peer1.org1.example.com", - "couchDbExposePort": 5101, + "couchDbExposePort": 5121, "db": { "type": "LevelDb", }, - "fullAddress": "peer1.org1.example.com:7042", + "fullAddress": "peer1.org1.example.com:7062", "gatewayEnabled": true, "isAnchorPeer": true, "name": "peer1", - "port": 7042, + "port": 7062, }, ], "peersCount": 2, @@ -9796,6 +9774,220 @@ exports[`extend config samples/fablo-config-hlf3-1orgs-1chaincode.json 1`] = ` ], "profileName": "MyChannel1", }, + { + "instantiatingOrg": { + "anchorPeers": [ + { + "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, + "db": { + "type": "LevelDb", + }, + "fullAddress": "peer1.org1.example.com:7062", + "gatewayEnabled": true, + "isAnchorPeer": true, + "name": "peer1", + "port": 7062, + }, + ], + "bootstrapPeers": ""peer0.org1.example.com:7061 peer1.org1.example.com:7062"", + "ca": { + "address": "ca.org1.example.com", + "caAdminNameVar": "ORG1_CA_ADMIN_NAME", + "caAdminPassVar": "ORG1_CA_ADMIN_PASSWORD", + "db": "sqlite", + "exposePort": 7060, + "fullAddress": "ca.org1.example.com:7054", + "port": 7054, + "prefix": "ca", + }, + "cli": { + "address": "cli.org1.example.com", + }, + "cryptoConfigFileName": "crypto-config-org1", + "domain": "org1.example.com", + "headPeer": { + "address": "peer1.org1.example.com", + "couchDbExposePort": 5121, + "db": { + "type": "LevelDb", + }, + "fullAddress": "peer1.org1.example.com:7062", + "gatewayEnabled": true, + "isAnchorPeer": true, + "name": "peer1", + "port": 7062, + }, + "mspName": "Org1MSP", + "name": "Org1", + "ordererGroups": [], + "peers": [ + { + "address": "peer1.org1.example.com", + "couchDbExposePort": 5121, + "db": { + "type": "LevelDb", + }, + "fullAddress": "peer1.org1.example.com:7062", + "gatewayEnabled": true, + "isAnchorPeer": true, + "name": "peer1", + "port": 7062, + }, + ], + "peersCount": 2, + "tools": {}, + }, + "name": "my-channel2", + "ordererGroup": { + "configtxOrdererDefaults": "Group2Defaults", + "consensus": "etcdraft", + "genesisBlockName": "Group2Genesis.block", + "hostingOrgs": [ + "Orderer2", + ], + "name": "group2", + "ordererHead": { + "address": "orderer0.group2.orderer2.example.com", + "adminPort": 7053, + "consensus": "etcdraft", + "domain": "orderer2.example.com", + "fullAddress": "orderer0.group2.orderer2.example.com:7050", + "name": "orderer0.group2", + "orgMspName": "Orderer2MSP", + "orgName": "Orderer2", + "port": 7050, + }, + "ordererHeads": [ + { + "address": "orderer0.group2.orderer2.example.com", + "adminPort": 7053, + "consensus": "etcdraft", + "domain": "orderer2.example.com", + "fullAddress": "orderer0.group2.orderer2.example.com:7050", + "name": "orderer0.group2", + "orgMspName": "Orderer2MSP", + "orgName": "Orderer2", + "port": 7050, + }, + ], + "orderers": [ + { + "address": "orderer0.group2.orderer2.example.com", + "adminPort": 7053, + "consensus": "etcdraft", + "domain": "orderer2.example.com", + "fullAddress": "orderer0.group2.orderer2.example.com:7050", + "name": "orderer0.group2", + "orgMspName": "Orderer2MSP", + "orgName": "Orderer2", + "port": 7050, + }, + ], + "profileName": "Group2Genesis", + }, + "ordererHead": { + "address": "orderer0.group2.orderer2.example.com", + "adminPort": 7053, + "consensus": "etcdraft", + "domain": "orderer2.example.com", + "fullAddress": "orderer0.group2.orderer2.example.com:7050", + "name": "orderer0.group2", + "orgMspName": "Orderer2MSP", + "orgName": "Orderer2", + "port": 7050, + }, + "orgs": [ + { + "anchorPeers": [ + { + "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, + "db": { + "type": "LevelDb", + }, + "fullAddress": "peer1.org1.example.com:7062", + "gatewayEnabled": true, + "isAnchorPeer": true, + "name": "peer1", + "port": 7062, + }, + ], + "bootstrapPeers": ""peer0.org1.example.com:7061 peer1.org1.example.com:7062"", + "ca": { + "address": "ca.org1.example.com", + "caAdminNameVar": "ORG1_CA_ADMIN_NAME", + "caAdminPassVar": "ORG1_CA_ADMIN_PASSWORD", + "db": "sqlite", + "exposePort": 7060, + "fullAddress": "ca.org1.example.com:7054", + "port": 7054, + "prefix": "ca", + }, + "cli": { + "address": "cli.org1.example.com", + }, + "cryptoConfigFileName": "crypto-config-org1", + "domain": "org1.example.com", + "headPeer": { + "address": "peer1.org1.example.com", + "couchDbExposePort": 5121, + "db": { + "type": "LevelDb", + }, + "fullAddress": "peer1.org1.example.com:7062", + "gatewayEnabled": true, + "isAnchorPeer": true, + "name": "peer1", + "port": 7062, + }, + "mspName": "Org1MSP", + "name": "Org1", + "ordererGroups": [], + "peers": [ + { + "address": "peer1.org1.example.com", + "couchDbExposePort": 5121, + "db": { + "type": "LevelDb", + }, + "fullAddress": "peer1.org1.example.com:7062", + "gatewayEnabled": true, + "isAnchorPeer": true, + "name": "peer1", + "port": 7062, + }, + ], + "peersCount": 2, + "tools": {}, + }, + ], + "profileName": "MyChannel2", + }, ], "global": { "capabilities": { @@ -9829,16 +10021,27 @@ exports[`extend config samples/fablo-config-hlf3-1orgs-1chaincode.json 1`] = ` }, "orderedHeadsDistinct": [ { - "address": "orderer0.group1.orderer.example.com", + "address": "orderer0.group1.orderer1.example.com", "adminPort": 7053, "consensus": "etcdraft", - "domain": "orderer.example.com", - "fullAddress": "orderer0.group1.orderer.example.com:7030", + "domain": "orderer1.example.com", + "fullAddress": "orderer0.group1.orderer1.example.com:7030", "name": "orderer0.group1", - "orgMspName": "OrdererMSP", - "orgName": "Orderer", + "orgMspName": "Orderer1MSP", + "orgName": "Orderer1", "port": 7030, }, + { + "address": "orderer0.group2.orderer2.example.com", + "adminPort": 7053, + "consensus": "etcdraft", + "domain": "orderer2.example.com", + "fullAddress": "orderer0.group2.orderer2.example.com:7050", + "name": "orderer0.group2", + "orgMspName": "Orderer2MSP", + "orgName": "Orderer2", + "port": 7050, + }, ], "ordererGroups": [ { @@ -9846,80 +10049,116 @@ exports[`extend config samples/fablo-config-hlf3-1orgs-1chaincode.json 1`] = ` "consensus": "etcdraft", "genesisBlockName": "Group1Genesis.block", "hostingOrgs": [ - "Orderer", + "Orderer1", ], "name": "group1", "ordererHead": { - "address": "orderer0.group1.orderer.example.com", + "address": "orderer0.group1.orderer1.example.com", "adminPort": 7053, "consensus": "etcdraft", - "domain": "orderer.example.com", - "fullAddress": "orderer0.group1.orderer.example.com:7030", + "domain": "orderer1.example.com", + "fullAddress": "orderer0.group1.orderer1.example.com:7030", "name": "orderer0.group1", - "orgMspName": "OrdererMSP", - "orgName": "Orderer", + "orgMspName": "Orderer1MSP", + "orgName": "Orderer1", "port": 7030, }, "ordererHeads": [ { - "address": "orderer0.group1.orderer.example.com", + "address": "orderer0.group1.orderer1.example.com", "adminPort": 7053, "consensus": "etcdraft", - "domain": "orderer.example.com", - "fullAddress": "orderer0.group1.orderer.example.com:7030", + "domain": "orderer1.example.com", + "fullAddress": "orderer0.group1.orderer1.example.com:7030", "name": "orderer0.group1", - "orgMspName": "OrdererMSP", - "orgName": "Orderer", + "orgMspName": "Orderer1MSP", + "orgName": "Orderer1", "port": 7030, }, ], "orderers": [ { - "address": "orderer0.group1.orderer.example.com", + "address": "orderer0.group1.orderer1.example.com", "adminPort": 7053, "consensus": "etcdraft", - "domain": "orderer.example.com", - "fullAddress": "orderer0.group1.orderer.example.com:7030", + "domain": "orderer1.example.com", + "fullAddress": "orderer0.group1.orderer1.example.com:7030", "name": "orderer0.group1", - "orgMspName": "OrdererMSP", - "orgName": "Orderer", + "orgMspName": "Orderer1MSP", + "orgName": "Orderer1", "port": 7030, }, { - "address": "orderer1.group1.orderer.example.com", + "address": "orderer1.group1.orderer1.example.com", "adminPort": 7053, "consensus": "etcdraft", - "domain": "orderer.example.com", - "fullAddress": "orderer1.group1.orderer.example.com:7031", + "domain": "orderer1.example.com", + "fullAddress": "orderer1.group1.orderer1.example.com:7031", "name": "orderer1.group1", - "orgMspName": "OrdererMSP", - "orgName": "Orderer", + "orgMspName": "Orderer1MSP", + "orgName": "Orderer1", "port": 7031, }, { - "address": "orderer2.group1.orderer.example.com", + "address": "orderer2.group1.orderer1.example.com", "adminPort": 7053, "consensus": "etcdraft", - "domain": "orderer.example.com", - "fullAddress": "orderer2.group1.orderer.example.com:7032", + "domain": "orderer1.example.com", + "fullAddress": "orderer2.group1.orderer1.example.com:7032", "name": "orderer2.group1", - "orgMspName": "OrdererMSP", - "orgName": "Orderer", + "orgMspName": "Orderer1MSP", + "orgName": "Orderer1", "port": 7032, }, + ], + "profileName": "Group1Genesis", + }, + { + "configtxOrdererDefaults": "Group2Defaults", + "consensus": "etcdraft", + "genesisBlockName": "Group2Genesis.block", + "hostingOrgs": [ + "Orderer2", + ], + "name": "group2", + "ordererHead": { + "address": "orderer0.group2.orderer2.example.com", + "adminPort": 7053, + "consensus": "etcdraft", + "domain": "orderer2.example.com", + "fullAddress": "orderer0.group2.orderer2.example.com:7050", + "name": "orderer0.group2", + "orgMspName": "Orderer2MSP", + "orgName": "Orderer2", + "port": 7050, + }, + "ordererHeads": [ + { + "address": "orderer0.group2.orderer2.example.com", + "adminPort": 7053, + "consensus": "etcdraft", + "domain": "orderer2.example.com", + "fullAddress": "orderer0.group2.orderer2.example.com:7050", + "name": "orderer0.group2", + "orgMspName": "Orderer2MSP", + "orgName": "Orderer2", + "port": 7050, + }, + ], + "orderers": [ { - "address": "orderer3.group1.orderer.example.com", + "address": "orderer0.group2.orderer2.example.com", "adminPort": 7053, "consensus": "etcdraft", - "domain": "orderer.example.com", - "fullAddress": "orderer3.group1.orderer.example.com:7033", - "name": "orderer3.group1", - "orgMspName": "OrdererMSP", - "orgName": "Orderer", - "port": 7033, + "domain": "orderer2.example.com", + "fullAddress": "orderer0.group2.orderer2.example.com:7050", + "name": "orderer0.group2", + "orgMspName": "Orderer2MSP", + "orgName": "Orderer2", + "port": 7050, }, ], - "profileName": "Group1Genesis", + "profileName": "Group2Genesis", }, ], "orgs": [ @@ -9927,92 +10166,144 @@ exports[`extend config samples/fablo-config-hlf3-1orgs-1chaincode.json 1`] = ` "anchorPeers": [], "bootstrapPeers": """", "ca": { - "address": "ca.orderer.example.com", - "caAdminNameVar": "ORDERER_CA_ADMIN_NAME", - "caAdminPassVar": "ORDERER_CA_ADMIN_PASSWORD", + "address": "ca.orderer1.example.com", + "caAdminNameVar": "ORDERER1_CA_ADMIN_NAME", + "caAdminPassVar": "ORDERER1_CA_ADMIN_PASSWORD", "db": "sqlite", "exposePort": 7020, - "fullAddress": "ca.orderer.example.com:7054", + "fullAddress": "ca.orderer1.example.com:7054", "port": 7054, "prefix": "ca", }, "cli": { - "address": "cli.orderer.example.com", + "address": "cli.orderer1.example.com", }, - "cryptoConfigFileName": "crypto-config-orderer", - "domain": "orderer.example.com", + "cryptoConfigFileName": "crypto-config-orderer1", + "domain": "orderer1.example.com", "headPeer": undefined, - "mspName": "OrdererMSP", - "name": "Orderer", + "mspName": "Orderer1MSP", + "name": "Orderer1", "ordererGroups": [ { "configtxOrdererDefaults": "Group1Defaults", "consensus": "etcdraft", "genesisBlockName": "Group1Genesis.block", "hostingOrgs": [ - "Orderer", + "Orderer1", ], "name": "group1", "ordererHeads": [ { - "address": "orderer0.group1.orderer.example.com", + "address": "orderer0.group1.orderer1.example.com", "adminPort": 7053, "consensus": "etcdraft", - "domain": "orderer.example.com", - "fullAddress": "orderer0.group1.orderer.example.com:7030", + "domain": "orderer1.example.com", + "fullAddress": "orderer0.group1.orderer1.example.com:7030", "name": "orderer0.group1", - "orgMspName": "OrdererMSP", - "orgName": "Orderer", + "orgMspName": "Orderer1MSP", + "orgName": "Orderer1", "port": 7030, }, ], "orderers": [ { - "address": "orderer0.group1.orderer.example.com", + "address": "orderer0.group1.orderer1.example.com", "adminPort": 7053, "consensus": "etcdraft", - "domain": "orderer.example.com", - "fullAddress": "orderer0.group1.orderer.example.com:7030", + "domain": "orderer1.example.com", + "fullAddress": "orderer0.group1.orderer1.example.com:7030", "name": "orderer0.group1", - "orgMspName": "OrdererMSP", - "orgName": "Orderer", + "orgMspName": "Orderer1MSP", + "orgName": "Orderer1", "port": 7030, }, { - "address": "orderer1.group1.orderer.example.com", + "address": "orderer1.group1.orderer1.example.com", "adminPort": 7053, "consensus": "etcdraft", - "domain": "orderer.example.com", - "fullAddress": "orderer1.group1.orderer.example.com:7031", + "domain": "orderer1.example.com", + "fullAddress": "orderer1.group1.orderer1.example.com:7031", "name": "orderer1.group1", - "orgMspName": "OrdererMSP", - "orgName": "Orderer", + "orgMspName": "Orderer1MSP", + "orgName": "Orderer1", "port": 7031, }, { - "address": "orderer2.group1.orderer.example.com", + "address": "orderer2.group1.orderer1.example.com", "adminPort": 7053, "consensus": "etcdraft", - "domain": "orderer.example.com", - "fullAddress": "orderer2.group1.orderer.example.com:7032", + "domain": "orderer1.example.com", + "fullAddress": "orderer2.group1.orderer1.example.com:7032", "name": "orderer2.group1", - "orgMspName": "OrdererMSP", - "orgName": "Orderer", + "orgMspName": "Orderer1MSP", + "orgName": "Orderer1", "port": 7032, }, + ], + "profileName": "Group1Genesis", + }, + ], + "peers": [], + "peersCount": 0, + "tools": {}, + }, + { + "anchorPeers": [], + "bootstrapPeers": """", + "ca": { + "address": "ca.orderer2.example.com", + "caAdminNameVar": "ORDERER2_CA_ADMIN_NAME", + "caAdminPassVar": "ORDERER2_CA_ADMIN_PASSWORD", + "db": "sqlite", + "exposePort": 7040, + "fullAddress": "ca.orderer2.example.com:7054", + "port": 7054, + "prefix": "ca", + }, + "cli": { + "address": "cli.orderer2.example.com", + }, + "cryptoConfigFileName": "crypto-config-orderer2", + "domain": "orderer2.example.com", + "headPeer": undefined, + "mspName": "Orderer2MSP", + "name": "Orderer2", + "ordererGroups": [ + { + "configtxOrdererDefaults": "Group2Defaults", + "consensus": "etcdraft", + "genesisBlockName": "Group2Genesis.block", + "hostingOrgs": [ + "Orderer2", + ], + "name": "group2", + "ordererHeads": [ + { + "address": "orderer0.group2.orderer2.example.com", + "adminPort": 7053, + "consensus": "etcdraft", + "domain": "orderer2.example.com", + "fullAddress": "orderer0.group2.orderer2.example.com:7050", + "name": "orderer0.group2", + "orgMspName": "Orderer2MSP", + "orgName": "Orderer2", + "port": 7050, + }, + ], + "orderers": [ { - "address": "orderer3.group1.orderer.example.com", + "address": "orderer0.group2.orderer2.example.com", "adminPort": 7053, "consensus": "etcdraft", - "domain": "orderer.example.com", - "fullAddress": "orderer3.group1.orderer.example.com:7033", - "name": "orderer3.group1", - "orgMspName": "OrdererMSP", - "orgName": "Orderer", - "port": 7033, + "domain": "orderer2.example.com", + "fullAddress": "orderer0.group2.orderer2.example.com:7050", + "name": "orderer0.group2", + "orgMspName": "Orderer2MSP", + "orgName": "Orderer2", + "port": 7050, }, ], - "profileName": "Group1Genesis", + "profileName": "Group2Genesis", }, ], "peers": [], @@ -10023,36 +10314,36 @@ exports[`extend config samples/fablo-config-hlf3-1orgs-1chaincode.json 1`] = ` "anchorPeers": [ { "address": "peer0.org1.example.com", - "couchDbExposePort": 5100, + "couchDbExposePort": 5120, "db": { "type": "LevelDb", }, - "fullAddress": "peer0.org1.example.com:7041", + "fullAddress": "peer0.org1.example.com:7061", "gatewayEnabled": true, "isAnchorPeer": true, "name": "peer0", - "port": 7041, + "port": 7061, }, { "address": "peer1.org1.example.com", - "couchDbExposePort": 5101, + "couchDbExposePort": 5121, "db": { "type": "LevelDb", }, - "fullAddress": "peer1.org1.example.com:7042", + "fullAddress": "peer1.org1.example.com:7062", "gatewayEnabled": true, "isAnchorPeer": true, "name": "peer1", - "port": 7042, + "port": 7062, }, ], - "bootstrapPeers": ""peer0.org1.example.com:7041 peer1.org1.example.com:7042"", + "bootstrapPeers": ""peer0.org1.example.com:7061 peer1.org1.example.com:7062"", "ca": { "address": "ca.org1.example.com", "caAdminNameVar": "ORG1_CA_ADMIN_NAME", "caAdminPassVar": "ORG1_CA_ADMIN_PASSWORD", "db": "sqlite", - "exposePort": 7040, + "exposePort": 7060, "fullAddress": "ca.org1.example.com:7054", "port": 7054, "prefix": "ca", @@ -10064,15 +10355,15 @@ exports[`extend config samples/fablo-config-hlf3-1orgs-1chaincode.json 1`] = ` "domain": "org1.example.com", "headPeer": { "address": "peer0.org1.example.com", - "couchDbExposePort": 5100, + "couchDbExposePort": 5120, "db": { "type": "LevelDb", }, - "fullAddress": "peer0.org1.example.com:7041", + "fullAddress": "peer0.org1.example.com:7061", "gatewayEnabled": true, "isAnchorPeer": true, "name": "peer0", - "port": 7041, + "port": 7061, }, "mspName": "Org1MSP", "name": "Org1", @@ -10080,27 +10371,27 @@ exports[`extend config samples/fablo-config-hlf3-1orgs-1chaincode.json 1`] = ` "peers": [ { "address": "peer0.org1.example.com", - "couchDbExposePort": 5100, + "couchDbExposePort": 5120, "db": { "type": "LevelDb", }, - "fullAddress": "peer0.org1.example.com:7041", + "fullAddress": "peer0.org1.example.com:7061", "gatewayEnabled": true, "isAnchorPeer": true, "name": "peer0", - "port": 7041, + "port": 7061, }, { "address": "peer1.org1.example.com", - "couchDbExposePort": 5101, + "couchDbExposePort": 5121, "db": { "type": "LevelDb", }, - "fullAddress": "peer1.org1.example.com:7042", + "fullAddress": "peer1.org1.example.com:7062", "gatewayEnabled": true, "isAnchorPeer": true, "name": "peer1", - "port": 7042, + "port": 7062, }, ], "peersCount": 2, 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 da334dbdb..bea919af3 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 @@ -39,28 +39,51 @@ Channel: &ChannelDefaults # Section: Organizations ################################################################################ Organizations: - - &Orderer - Name: OrdererMSP - ID: OrdererMSP - MSPDir: crypto-config/peerOrganizations/orderer.example.com/msp + - &Orderer1 + Name: Orderer1MSP + ID: Orderer1MSP + MSPDir: crypto-config/peerOrganizations/orderer1.example.com/msp OrdererEndpoints: - - orderer0.group1.orderer.example.com:7030 - - orderer1.group1.orderer.example.com:7031 - - orderer2.group1.orderer.example.com:7032 - - orderer3.group1.orderer.example.com:7033 + - orderer0.group1.orderer1.example.com:7030 + - orderer1.group1.orderer1.example.com:7031 + - orderer2.group1.orderer1.example.com:7032 Policies: Readers: Type: Signature - Rule: "OR('OrdererMSP.member')" + Rule: "OR('Orderer1MSP.member')" Writers: Type: Signature - Rule: "OR('OrdererMSP.member')" + Rule: "OR('Orderer1MSP.member')" Admins: Type: Signature - Rule: "OR('OrdererMSP.admin')" + Rule: "OR('Orderer1MSP.admin')" Endorsement: Type: Signature - Rule: "OR('OrdererMSP.member')" + Rule: "OR('Orderer1MSP.member')" + + AnchorPeers: + + - &Orderer2 + Name: Orderer2MSP + ID: Orderer2MSP + MSPDir: crypto-config/peerOrganizations/orderer2.example.com/msp + OrdererEndpoints: + - orderer0.group1.orderer1.example.com:7030 + - orderer1.group1.orderer1.example.com:7031 + - orderer2.group1.orderer1.example.com:7032 + Policies: + Readers: + Type: Signature + Rule: "OR('Orderer2MSP.member')" + Writers: + Type: Signature + Rule: "OR('Orderer2MSP.member')" + Admins: + Type: Signature + Rule: "OR('Orderer2MSP.admin')" + Endorsement: + Type: Signature + Rule: "OR('Orderer2MSP.member')" AnchorPeers: @@ -69,10 +92,9 @@ Organizations: ID: Org1MSP MSPDir: crypto-config/peerOrganizations/org1.example.com/msp OrdererEndpoints: - - orderer0.group1.orderer.example.com:7030 - - orderer1.group1.orderer.example.com:7031 - - orderer2.group1.orderer.example.com:7032 - - orderer3.group1.orderer.example.com:7033 + - orderer0.group1.orderer1.example.com:7030 + - orderer1.group1.orderer1.example.com:7031 + - orderer2.group1.orderer1.example.com:7032 Policies: Readers: Type: Signature @@ -89,10 +111,10 @@ Organizations: AnchorPeers: - Host: peer0.org1.example.com - Port: 7041 + Port: 7061 - Host: peer1.org1.example.com - Port: 7042 + Port: 7062 ################################################################################ # SECTION: Application @@ -126,25 +148,57 @@ Orderer: &Group1Defaults EtcdRaft: Consenters: - - Host: orderer0.group1.orderer.example.com + - Host: orderer0.group1.orderer1.example.com Port: 7030 - ClientTLSCert: crypto-config/peerOrganizations/orderer.example.com/peers/orderer0.group1.orderer.example.com/tls/server.crt - ServerTLSCert: crypto-config/peerOrganizations/orderer.example.com/peers/orderer0.group1.orderer.example.com/tls/server.crt + ClientTLSCert: crypto-config/peerOrganizations/orderer1.example.com/peers/orderer0.group1.orderer1.example.com/tls/server.crt + ServerTLSCert: crypto-config/peerOrganizations/orderer1.example.com/peers/orderer0.group1.orderer1.example.com/tls/server.crt - - Host: orderer1.group1.orderer.example.com + - Host: orderer1.group1.orderer1.example.com Port: 7031 - ClientTLSCert: crypto-config/peerOrganizations/orderer.example.com/peers/orderer1.group1.orderer.example.com/tls/server.crt - ServerTLSCert: crypto-config/peerOrganizations/orderer.example.com/peers/orderer1.group1.orderer.example.com/tls/server.crt + ClientTLSCert: crypto-config/peerOrganizations/orderer1.example.com/peers/orderer1.group1.orderer1.example.com/tls/server.crt + ServerTLSCert: crypto-config/peerOrganizations/orderer1.example.com/peers/orderer1.group1.orderer1.example.com/tls/server.crt - - Host: orderer2.group1.orderer.example.com + - Host: orderer2.group1.orderer1.example.com Port: 7032 - ClientTLSCert: crypto-config/peerOrganizations/orderer.example.com/peers/orderer2.group1.orderer.example.com/tls/server.crt - ServerTLSCert: crypto-config/peerOrganizations/orderer.example.com/peers/orderer2.group1.orderer.example.com/tls/server.crt + ClientTLSCert: crypto-config/peerOrganizations/orderer1.example.com/peers/orderer2.group1.orderer1.example.com/tls/server.crt + ServerTLSCert: crypto-config/peerOrganizations/orderer1.example.com/peers/orderer2.group1.orderer1.example.com/tls/server.crt + + BatchTimeout: 2s + BatchSize: + MaxMessageCount: 10 + AbsoluteMaxBytes: 99 MB + PreferredMaxBytes: 512 KB + Organizations: + # Policies defines the set of policies at this level of the config tree + # For Orderer policies, their canonical path is + # /Channel/Orderer/ + Policies: + Readers: + Type: ImplicitMeta + Rule: "ANY Readers" + Writers: + Type: ImplicitMeta + Rule: "ANY Writers" + Admins: + Type: ImplicitMeta + Rule: "MAJORITY Admins" + # BlockValidation specifies what signatures must be included in the block + # from the orderer for the peer to validate it. + BlockValidation: + Type: ImplicitMeta + Rule: "ANY Writers" + Capabilities: + <<: *OrdererCapabilities - - Host: orderer3.group1.orderer.example.com - Port: 7033 - ClientTLSCert: crypto-config/peerOrganizations/orderer.example.com/peers/orderer3.group1.orderer.example.com/tls/server.crt - ServerTLSCert: crypto-config/peerOrganizations/orderer.example.com/peers/orderer3.group1.orderer.example.com/tls/server.crt +Orderer: &Group2Defaults + OrdererType: etcdraft + + EtcdRaft: + Consenters: + - Host: orderer0.group2.orderer2.example.com + Port: 7050 + ClientTLSCert: crypto-config/peerOrganizations/orderer2.example.com/peers/orderer0.group2.orderer2.example.com/tls/server.crt + ServerTLSCert: crypto-config/peerOrganizations/orderer2.example.com/peers/orderer0.group2.orderer2.example.com/tls/server.crt BatchTimeout: 2s BatchSize: @@ -185,7 +239,16 @@ Profiles: Orderer: <<: *Group1Defaults Organizations: - - *Orderer + - *Orderer1 + Capabilities: + <<: *OrdererCapabilities + # Profile used to create Genesis block for group group2 # + Group2Genesis: + <<: *ChannelDefaults + Orderer: + <<: *Group2Defaults + Organizations: + - *Orderer2 Capabilities: <<: *OrdererCapabilities @@ -195,7 +258,19 @@ Profiles: Orderer: <<: *Group1Defaults Organizations: - - *Orderer + - *Orderer1 + Consortium: SampleConsortium + Application: + <<: *ApplicationDefaults + Organizations: + - *Org1 + # Profile used to create channeltx for my-channel2 # + MyChannel2: + <<: *ChannelDefaults + Orderer: + <<: *Group2Defaults + Organizations: + - *Orderer2 Consortium: SampleConsortium Application: <<: *ApplicationDefaults @@ -204,29 +279,29 @@ Profiles: " `; -exports[`samples/fablo-config-hlf3-1orgs-1chaincode.json should create proper e2e/__tmp__/samples/fablo-config-hlf3-1orgs-1chaincode.json.tmpdir/fablo-target/fabric-config/connection-profiles/connection-profile-orderer.json from samples/fablo-config-hlf3-1orgs-1chaincode.json 1`] = ` +exports[`samples/fablo-config-hlf3-1orgs-1chaincode.json should create proper e2e/__tmp__/samples/fablo-config-hlf3-1orgs-1chaincode.json.tmpdir/fablo-target/fabric-config/connection-profiles/connection-profile-orderer1.json from samples/fablo-config-hlf3-1orgs-1chaincode.json 1`] = ` "{ - "name": "fablo-test-network-orderer", - "description": "Connection profile for Orderer in Fablo network", + "name": "fablo-test-network-orderer1", + "description": "Connection profile for Orderer1 in Fablo network", "version": "1.0.0", "client": { - "organization": "Orderer" + "organization": "Orderer1" }, "organizations": { - "Orderer": { - "mspid": "OrdererMSP", + "Orderer1": { + "mspid": "Orderer1MSP", "peers": [ "peer0.org1.example.com", "peer1.org1.example.com" ], "certificateAuthorities": [ - "ca.orderer.example.com" + "ca.orderer1.example.com" ] } }, "peers": { "peer0.org1.example.com": { - "url": "grpcs://localhost:7041", + "url": "grpcs://localhost:7061", "tlsCACerts": { "path": "/samples/fablo-target/fabric-config/crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt" }, @@ -235,7 +310,7 @@ exports[`samples/fablo-config-hlf3-1orgs-1chaincode.json should create proper e2 } }, "peer1.org1.example.com": { - "url": "grpcs://localhost:7042", + "url": "grpcs://localhost:7062", "tlsCACerts": { "path": "/samples/fablo-target/fabric-config/crypto-config/peerOrganizations/org1.example.com/peers/peer1.org1.example.com/tls/ca.crt" }, @@ -245,11 +320,205 @@ exports[`samples/fablo-config-hlf3-1orgs-1chaincode.json should create proper e2 } }, "certificateAuthorities": { - "ca.orderer.example.com": { + "ca.orderer1.example.com": { "url": "https://localhost:7020", - "caName": "ca.orderer.example.com", + "caName": "ca.orderer1.example.com", + "tlsCACerts": { + "path": "/samples/fablo-target/fabric-config/crypto-config/peerOrganizations/orderer1.example.com/ca/ca.orderer1.example.com-cert.pem" + }, + "httpOptions": { + "verify": false + } + } + } +} +" +`; + +exports[`samples/fablo-config-hlf3-1orgs-1chaincode.json should create proper e2e/__tmp__/samples/fablo-config-hlf3-1orgs-1chaincode.json.tmpdir/fablo-target/fabric-config/connection-profiles/connection-profile-orderer1.yaml from samples/fablo-config-hlf3-1orgs-1chaincode.json 1`] = ` +"name: fablo-test-network-orderer1 +description: Connection profile for Orderer1 in Fablo network +version: 1.0.0 +client: + organization: Orderer1 +organizations: + Orderer1: + mspid: Orderer1MSP + peers: + - peer0.org1.example.com + - peer1.org1.example.com + certificateAuthorities: + - ca.orderer1.example.com +peers: + peer0.org1.example.com: + url: grpcs://localhost:7061 + tlsCACerts: + path: >- + /samples/fablo-target/fabric-config/crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt + grpcOptions: + ssl-target-name-override: peer0.org1.example.com + peer1.org1.example.com: + url: grpcs://localhost:7062 + tlsCACerts: + path: >- + /samples/fablo-target/fabric-config/crypto-config/peerOrganizations/org1.example.com/peers/peer1.org1.example.com/tls/ca.crt + grpcOptions: + ssl-target-name-override: peer1.org1.example.com +certificateAuthorities: + ca.orderer1.example.com: + url: https://localhost:7020 + caName: ca.orderer1.example.com + tlsCACerts: + path: >- + /samples/fablo-target/fabric-config/crypto-config/peerOrganizations/orderer1.example.com/ca/ca.orderer1.example.com-cert.pem + httpOptions: + verify: false +" +`; + +exports[`samples/fablo-config-hlf3-1orgs-1chaincode.json should create proper e2e/__tmp__/samples/fablo-config-hlf3-1orgs-1chaincode.json.tmpdir/fablo-target/fabric-config/connection-profiles/connection-profile-orderer2.json from samples/fablo-config-hlf3-1orgs-1chaincode.json 1`] = ` +"{ + "name": "fablo-test-network-orderer2", + "description": "Connection profile for Orderer2 in Fablo network", + "version": "1.0.0", + "client": { + "organization": "Orderer2" + }, + "organizations": { + "Orderer2": { + "mspid": "Orderer2MSP", + "peers": [ + "peer0.org1.example.com", + "peer1.org1.example.com" + ], + "certificateAuthorities": [ + "ca.orderer2.example.com" + ] + } + }, + "peers": { + "peer0.org1.example.com": { + "url": "grpcs://localhost:7061", + "tlsCACerts": { + "path": "/samples/fablo-target/fabric-config/crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt" + }, + "grpcOptions": { + "ssl-target-name-override": "peer0.org1.example.com" + } + }, + "peer1.org1.example.com": { + "url": "grpcs://localhost:7062", + "tlsCACerts": { + "path": "/samples/fablo-target/fabric-config/crypto-config/peerOrganizations/org1.example.com/peers/peer1.org1.example.com/tls/ca.crt" + }, + "grpcOptions": { + "ssl-target-name-override": "peer1.org1.example.com" + } + } + }, + "certificateAuthorities": { + "ca.orderer2.example.com": { + "url": "https://localhost:7040", + "caName": "ca.orderer2.example.com", + "tlsCACerts": { + "path": "/samples/fablo-target/fabric-config/crypto-config/peerOrganizations/orderer2.example.com/ca/ca.orderer2.example.com-cert.pem" + }, + "httpOptions": { + "verify": false + } + } + } +} +" +`; + +exports[`samples/fablo-config-hlf3-1orgs-1chaincode.json should create proper e2e/__tmp__/samples/fablo-config-hlf3-1orgs-1chaincode.json.tmpdir/fablo-target/fabric-config/connection-profiles/connection-profile-orderer2.yaml from samples/fablo-config-hlf3-1orgs-1chaincode.json 1`] = ` +"name: fablo-test-network-orderer2 +description: Connection profile for Orderer2 in Fablo network +version: 1.0.0 +client: + organization: Orderer2 +organizations: + Orderer2: + mspid: Orderer2MSP + peers: + - peer0.org1.example.com + - peer1.org1.example.com + certificateAuthorities: + - ca.orderer2.example.com +peers: + peer0.org1.example.com: + url: grpcs://localhost:7061 + tlsCACerts: + path: >- + /samples/fablo-target/fabric-config/crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt + grpcOptions: + ssl-target-name-override: peer0.org1.example.com + peer1.org1.example.com: + url: grpcs://localhost:7062 + tlsCACerts: + path: >- + /samples/fablo-target/fabric-config/crypto-config/peerOrganizations/org1.example.com/peers/peer1.org1.example.com/tls/ca.crt + grpcOptions: + ssl-target-name-override: peer1.org1.example.com +certificateAuthorities: + ca.orderer2.example.com: + url: https://localhost:7040 + caName: ca.orderer2.example.com + tlsCACerts: + path: >- + /samples/fablo-target/fabric-config/crypto-config/peerOrganizations/orderer2.example.com/ca/ca.orderer2.example.com-cert.pem + httpOptions: + verify: false +" +`; + +exports[`samples/fablo-config-hlf3-1orgs-1chaincode.json should create proper e2e/__tmp__/samples/fablo-config-hlf3-1orgs-1chaincode.json.tmpdir/fablo-target/fabric-config/connection-profiles/connection-profile-org1.json from samples/fablo-config-hlf3-1orgs-1chaincode.json 1`] = ` +"{ + "name": "fablo-test-network-org1", + "description": "Connection profile for Org1 in Fablo network", + "version": "1.0.0", + "client": { + "organization": "Org1" + }, + "organizations": { + "Org1": { + "mspid": "Org1MSP", + "peers": [ + "peer0.org1.example.com", + "peer1.org1.example.com" + ], + "certificateAuthorities": [ + "ca.org1.example.com" + ] + } + }, + "peers": { + "peer0.org1.example.com": { + "url": "grpcs://localhost:7061", "tlsCACerts": { - "path": "/samples/fablo-target/fabric-config/crypto-config/peerOrganizations/orderer.example.com/ca/ca.orderer.example.com-cert.pem" + "path": "/samples/fablo-target/fabric-config/crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt" + }, + "grpcOptions": { + "ssl-target-name-override": "peer0.org1.example.com" + } + }, + "peer1.org1.example.com": { + "url": "grpcs://localhost:7062", + "tlsCACerts": { + "path": "/samples/fablo-target/fabric-config/crypto-config/peerOrganizations/org1.example.com/peers/peer1.org1.example.com/tls/ca.crt" + }, + "grpcOptions": { + "ssl-target-name-override": "peer1.org1.example.com" + } + } + }, + "certificateAuthorities": { + "ca.org1.example.com": { + "url": "https://localhost:7060", + "caName": "ca.org1.example.com", + "tlsCACerts": { + "path": "/samples/fablo-target/fabric-config/crypto-config/peerOrganizations/org1.example.com/ca/ca.org1.example.com-cert.pem" }, "httpOptions": { "verify": false @@ -260,186 +529,602 @@ exports[`samples/fablo-config-hlf3-1orgs-1chaincode.json should create proper e2 " `; -exports[`samples/fablo-config-hlf3-1orgs-1chaincode.json should create proper e2e/__tmp__/samples/fablo-config-hlf3-1orgs-1chaincode.json.tmpdir/fablo-target/fabric-config/connection-profiles/connection-profile-orderer.yaml from samples/fablo-config-hlf3-1orgs-1chaincode.json 1`] = ` -"name: fablo-test-network-orderer -description: Connection profile for Orderer in Fablo network -version: 1.0.0 -client: - organization: Orderer -organizations: - Orderer: - mspid: OrdererMSP - peers: - - peer0.org1.example.com - - peer1.org1.example.com - certificateAuthorities: - - ca.orderer.example.com -peers: - peer0.org1.example.com: - url: grpcs://localhost:7041 - tlsCACerts: - path: >- - /samples/fablo-target/fabric-config/crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt - grpcOptions: - ssl-target-name-override: peer0.org1.example.com - peer1.org1.example.com: - url: grpcs://localhost:7042 - tlsCACerts: - path: >- - /samples/fablo-target/fabric-config/crypto-config/peerOrganizations/org1.example.com/peers/peer1.org1.example.com/tls/ca.crt - grpcOptions: - ssl-target-name-override: peer1.org1.example.com -certificateAuthorities: - ca.orderer.example.com: - url: https://localhost:7020 - caName: ca.orderer.example.com - tlsCACerts: - path: >- - /samples/fablo-target/fabric-config/crypto-config/peerOrganizations/orderer.example.com/ca/ca.orderer.example.com-cert.pem - httpOptions: - verify: false -" -`; +exports[`samples/fablo-config-hlf3-1orgs-1chaincode.json should create proper e2e/__tmp__/samples/fablo-config-hlf3-1orgs-1chaincode.json.tmpdir/fablo-target/fabric-config/connection-profiles/connection-profile-org1.yaml from samples/fablo-config-hlf3-1orgs-1chaincode.json 1`] = ` +"name: fablo-test-network-org1 +description: Connection profile for Org1 in Fablo network +version: 1.0.0 +client: + organization: Org1 +organizations: + Org1: + mspid: Org1MSP + peers: + - peer0.org1.example.com + - peer1.org1.example.com + certificateAuthorities: + - ca.org1.example.com +peers: + peer0.org1.example.com: + url: grpcs://localhost:7061 + tlsCACerts: + path: >- + /samples/fablo-target/fabric-config/crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt + grpcOptions: + ssl-target-name-override: peer0.org1.example.com + peer1.org1.example.com: + url: grpcs://localhost:7062 + tlsCACerts: + path: >- + /samples/fablo-target/fabric-config/crypto-config/peerOrganizations/org1.example.com/peers/peer1.org1.example.com/tls/ca.crt + grpcOptions: + ssl-target-name-override: peer1.org1.example.com +certificateAuthorities: + ca.org1.example.com: + url: https://localhost:7060 + caName: ca.org1.example.com + tlsCACerts: + path: >- + /samples/fablo-target/fabric-config/crypto-config/peerOrganizations/org1.example.com/ca/ca.org1.example.com-cert.pem + httpOptions: + verify: false +" +`; + +exports[`samples/fablo-config-hlf3-1orgs-1chaincode.json should create proper e2e/__tmp__/samples/fablo-config-hlf3-1orgs-1chaincode.json.tmpdir/fablo-target/fabric-config/crypto-config-orderer1.yaml from samples/fablo-config-hlf3-1orgs-1chaincode.json 1`] = ` +"PeerOrgs: + - Name: Orderer1 + Domain: orderer1.example.com + Specs: + - Hostname: orderer0.group1 + - Hostname: orderer1.group1 + - Hostname: orderer2.group1 + Template: + Count: 0 + Users: + Count: 1 +" +`; + +exports[`samples/fablo-config-hlf3-1orgs-1chaincode.json should create proper e2e/__tmp__/samples/fablo-config-hlf3-1orgs-1chaincode.json.tmpdir/fablo-target/fabric-config/crypto-config-orderer2.yaml from samples/fablo-config-hlf3-1orgs-1chaincode.json 1`] = ` +"PeerOrgs: + - Name: Orderer2 + Domain: orderer2.example.com + Specs: + - Hostname: orderer0.group2 + Template: + Count: 0 + Users: + Count: 1 +" +`; + +exports[`samples/fablo-config-hlf3-1orgs-1chaincode.json should create proper e2e/__tmp__/samples/fablo-config-hlf3-1orgs-1chaincode.json.tmpdir/fablo-target/fabric-config/crypto-config-org1.yaml from samples/fablo-config-hlf3-1orgs-1chaincode.json 1`] = ` +"PeerOrgs: + - Name: Org1 + Domain: org1.example.com + Specs: + Template: + Count: 2 + Users: + Count: 1 +" +`; + +exports[`samples/fablo-config-hlf3-1orgs-1chaincode.json should create proper e2e/__tmp__/samples/fablo-config-hlf3-1orgs-1chaincode.json.tmpdir/fablo-target/fabric-config/explorer/config-global.json from samples/fablo-config-hlf3-1orgs-1chaincode.json 1`] = ` +"{ + "network-configs": { + "network-org1": { + "name": "Network of Org1", + "profile": "/opt/explorer/app/platform/fabric/connection-profile/connection-profile-org1.json" + } + }, + "license": "Apache-2.0" +} +" +`; + +exports[`samples/fablo-config-hlf3-1orgs-1chaincode.json should create proper e2e/__tmp__/samples/fablo-config-hlf3-1orgs-1chaincode.json.tmpdir/fablo-target/fabric-config/fabric-ca-server-config/orderer1.example.com/fabric-ca-server-config.yaml from samples/fablo-config-hlf3-1orgs-1chaincode.json 1`] = ` +"############################################################################# +# This is a configuration file for the fabric-ca-server command. +# +# COMMAND LINE ARGUMENTS AND ENVIRONMENT VARIABLES +# ------------------------------------------------ +# Each configuration element can be overridden via command line +# arguments or environment variables. The precedence for determining +# the value of each element is as follows: +# 1) command line argument +# Examples: +# a) --port 443 +# To set the listening port +# b) --ca.keyfile ../mykey.pem +# To set the "keyfile" element in the "ca" section below; +# note the '.' separator character. +# 2) environment variable +# Examples: +# a) FABRIC_CA_SERVER_PORT=443 +# To set the listening port +# b) FABRIC_CA_SERVER_CA_KEYFILE="../mykey.pem" +# To set the "keyfile" element in the "ca" section below; +# note the '_' separator character. +# 3) configuration file +# 4) default value (if there is one) +# All default values are shown beside each element below. +# +# FILE NAME ELEMENTS +# ------------------ +# The value of all fields whose name ends with "file" or "files" are +# name or names of other files. +# For example, see "tls.certfile" and "tls.clientauth.certfiles". +# The value of each of these fields can be a simple filename, a +# relative path, or an absolute path. If the value is not an +# absolute path, it is interpreted as being relative to the location +# of this configuration file. +# +############################################################################# + +# Version of config file +version: 1.5.5 + +# Server's listening port (default: 7054) +port: 7054 + +# Cross-Origin Resource Sharing (CORS) +cors: + enabled: false + origins: + - "*" + +# Enables debug logging (default: false) +debug: false + +# Size limit of an acceptable CRL in bytes (default: 512000) +crlsizelimit: 512000 + +############################################################################# +# TLS section for the server's listening port +# +# The following types are supported for client authentication: NoClientCert, +# RequestClientCert, RequireAnyClientCert, VerifyClientCertIfGiven, +# and RequireAndVerifyClientCert. +# +# Certfiles is a list of root certificate authorities that the server uses +# when verifying client certificates. +############################################################################# +tls: + # Enable TLS (default: false) + enabled: false + # TLS for the server's listening port + certfile: + keyfile: + clientauth: + type: noclientcert + certfiles: + +############################################################################# +# The CA section contains information related to the Certificate Authority +# including the name of the CA, which should be unique for all members +# of a blockchain network. It also includes the key and certificate files +# used when issuing enrollment certificates (ECerts). +# The chainfile (if it exists) contains the certificate chain which +# should be trusted for this CA, where the 1st in the chain is always the +# root CA certificate. +############################################################################# +ca: + # Name of this CA + name: + # Key file (is only used to import a private key into BCCSP) + keyfile: + # Certificate file (default: ca-cert.pem) + certfile: + # Chain file + chainfile: + +############################################################################# +# The gencrl REST endpoint is used to generate a CRL that contains revoked +# certificates. This section contains configuration options that are used +# during gencrl request processing. +############################################################################# +crl: + # Specifies expiration for the generated CRL. The number of hours + # specified by this property is added to the UTC time, the resulting time + # is used to set the 'Next Update' date of the CRL. + expiry: 24h + +############################################################################# +# The registry section controls how the fabric-ca-server does two things: +# 1) authenticates enrollment requests which contain a username and password +# (also known as an enrollment ID and secret). +# 2) once authenticated, retrieves the identity's attribute names and values. +# These attributes are useful for making access control decisions in +# chaincode. +# There are two main configuration options: +# 1) The fabric-ca-server is the registry. +# This is true if "ldap.enabled" in the ldap section below is false. +# 2) An LDAP server is the registry, in which case the fabric-ca-server +# calls the LDAP server to perform these tasks. +# This is true if "ldap.enabled" in the ldap section below is true, +# which means this "registry" section is ignored. +############################################################################# +registry: + # Maximum number of times a password/secret can be reused for enrollment + # (default: -1, which means there is no limit) + maxenrollments: -1 + + # Contains identity information which is used when LDAP is disabled + identities: + - name: admin + pass: adminpw + type: client + affiliation: "" + attrs: + hf.Registrar.Roles: "*" + hf.Registrar.DelegateRoles: "*" + hf.Revoker: true + hf.IntermediateCA: true + hf.GenCRL: true + hf.Registrar.Attributes: "*" + hf.AffiliationMgr: true + +############################################################################# +# Database section +# Supported types are: "sqlite3", "postgres", and "mysql". +# The datasource value depends on the type. +# If the type is "sqlite3", the datasource value is a file name to use +# as the database store. Since "sqlite3" is an embedded database, it +# may not be used if you want to run the fabric-ca-server in a cluster. +# To run the fabric-ca-server in a cluster, you must choose "postgres" +# or "mysql". +############################################################################# +db: + type: sqlite3 + datasource: fabric-ca-server.db + tls: + enabled: false + certfiles: + client: + certfile: + keyfile: + +############################################################################# +# LDAP section +# If LDAP is enabled, the fabric-ca-server calls LDAP to: +# 1) authenticate enrollment ID and secret (i.e. username and password) +# for enrollment requests; +# 2) To retrieve identity attributes +############################################################################# +ldap: + # Enables or disables the LDAP client (default: false) + # If this is set to true, the "registry" section is ignored. + enabled: false + # The URL of the LDAP server + url: ldap://:@:/ + # TLS configuration for the client connection to the LDAP server + tls: + certfiles: + client: + certfile: + keyfile: + # Attribute related configuration for mapping from LDAP entries to Fabric CA attributes + attribute: + # 'names' is an array of strings containing the LDAP attribute names which are + # requested from the LDAP server for an LDAP identity's entry + names: ['uid', 'member'] + # The 'converters' section is used to convert an LDAP entry to the value of + # a fabric CA attribute. + # For example, the following converts an LDAP 'uid' attribute + # whose value begins with 'revoker' to a fabric CA attribute + # named "hf.Revoker" with a value of "true" (because the boolean expression + # evaluates to true). + # converters: + # - name: hf.Revoker + # value: attr("uid") =~ "revoker*" + converters: + - name: + value: + # The 'maps' section contains named maps which may be referenced by the 'map' + # function in the 'converters' section to map LDAP responses to arbitrary values. + # For example, assume a user has an LDAP attribute named 'member' which has multiple + # values which are each a distinguished name (i.e. a DN). For simplicity, assume the + # values of the 'member' attribute are 'dn1', 'dn2', and 'dn3'. + # Further assume the following configuration. + # converters: + # - name: hf.Registrar.Roles + # value: map(attr("member"),"groups") + # maps: + # groups: + # - name: dn1 + # value: peer + # - name: dn2 + # value: client + # The value of the user's 'hf.Registrar.Roles' attribute is then computed to be + # "peer,client,dn3". This is because the value of 'attr("member")' is + # "dn1,dn2,dn3", and the call to 'map' with a 2nd argument of + # "group" replaces "dn1" with "peer" and "dn2" with "client". + maps: + groups: + - name: + value: + +############################################################################# +# Affiliations section. Fabric CA server can be bootstrapped with the +# affiliations specified in this section. Affiliations are specified as maps. +# For example: +# businessunit1: +# department1: +# - team1 +# businessunit2: +# - department2 +# - department3 +# +# Affiliations are hierarchical in nature. In the above example, +# department1 (used as businessunit1.department1) is the child of businessunit1. +# team1 (used as businessunit1.department1.team1) is the child of department1. +# department2 (used as businessunit2.department2) and department3 (businessunit2.department3) +# are children of businessunit2. +# Note: Affiliations are case sensitive except for the non-leaf affiliations +# (like businessunit1, department1, businessunit2) that are specified in the configuration file, +# which are always stored in lower case. +############################################################################# +affiliations: + orderer1: + +############################################################################# +# Signing section +# +# The "default" subsection is used to sign enrollment certificates; +# the default expiration ("expiry" field) is "8760h", which is 1 year in hours. +# +# The "ca" profile subsection is used to sign intermediate CA certificates; +# the default expiration ("expiry" field) is "43800h" which is 5 years in hours. +# Note that "isca" is true, meaning that it issues a CA certificate. +# A maxpathlen of 0 means that the intermediate CA cannot issue other +# intermediate CA certificates, though it can still issue end entity certificates. +# (See RFC 5280, section 4.2.1.9) +# +# The "tls" profile subsection is used to sign TLS certificate requests; +# the default expiration ("expiry" field) is "8760h", which is 1 year in hours. +############################################################################# +signing: + default: + usage: + - digital signature + expiry: 8760h + profiles: + ca: + usage: + - cert sign + - crl sign + expiry: 43800h + caconstraint: + isca: true + maxpathlen: 0 + tls: + usage: + - signing + - key encipherment + - server auth + - client auth + - key agreement + expiry: 8760h + +########################################################################### +# Certificate Signing Request (CSR) section. +# This controls the creation of the root CA certificate. +# The expiration for the root CA certificate is configured with the +# "ca.expiry" field below, whose default value is "131400h" which is +# 15 years in hours. +# The pathlength field is used to limit CA certificate hierarchy as described +# in section 4.2.1.9 of RFC 5280. +# Examples: +# 1) No pathlength value means no limit is requested. +# 2) pathlength == 1 means a limit of 1 is requested which is the default for +# a root CA. This means the root CA can issue intermediate CA certificates, +# but these intermediate CAs may not in turn issue other CA certificates +# though they can still issue end entity certificates. +# 3) pathlength == 0 means a limit of 0 is requested; +# this is the default for an intermediate CA, which means it can not issue +# CA certificates though it can still issue end entity certificates. +########################################################################### +csr: + cn: fabric-ca-server + keyrequest: + algo: ecdsa + size: 256 + names: + - C: US + ST: "North Carolina" + L: + O: Hyperledger + OU: Fabric + hosts: + - 483cccf16a98 + - localhost + ca: + expiry: 131400h + pathlength: 1 + +########################################################################### +# Each CA can issue both X509 enrollment certificate as well as Idemix +# Credential. This section specifies configuration for the issuer component +# that is responsible for issuing Idemix credentials. +########################################################################### +idemix: + # Specifies pool size for revocation handles. A revocation handle is an unique identifier of an + # Idemix credential. The issuer will create a pool revocation handles of this specified size. When + # a credential is requested, issuer will get handle from the pool and assign it to the credential. + # Issuer will repopulate the pool with new handles when the last handle in the pool is used. + # A revocation handle and credential revocation information (CRI) are used to create non revocation proof + # by the prover to prove to the verifier that her credential is not revoked. + rhpoolsize: 1000 + + # The Idemix credential issuance is a two step process. First step is to get a nonce from the issuer + # and second step is send credential request that is constructed using the nonce to the isuser to + # request a credential. This configuration property specifies expiration for the nonces. By default is + # nonces expire after 15 seconds. The value is expressed in the time.Duration format (see https://golang.org/pkg/time/#ParseDuration). + nonceexpiration: 15s + + # Specifies interval at which expired nonces are removed from datastore. Default value is 15 minutes. + # The value is expressed in the time.Duration format (see https://golang.org/pkg/time/#ParseDuration) + noncesweepinterval: 15m + +############################################################################# +# BCCSP (BlockChain Crypto Service Provider) section is used to select which +# crypto library implementation to use +############################################################################# +bccsp: + default: SW + sw: + hash: SHA2 + security: 256 + filekeystore: + # The directory used for the software file-based keystore + keystore: msp/keystore + +############################################################################# +# Multi CA section +# +# Each Fabric CA server contains one CA by default. This section is used +# to configure multiple CAs in a single server. +# +# 1) --cacount +# Automatically generate non-default CAs. The names of these +# additional CAs are "ca1", "ca2", ... "caN", where "N" is +# This is particularly useful in a development environment to quickly set up +# multiple CAs. Note that, this config option is not applicable to intermediate CA server +# i.e., Fabric CA server that is started with intermediate.parentserver.url config +# option (-u command line option) +# +# 2) --cafiles +# For each CA config file in the list, generate a separate signing CA. Each CA +# config file in this list MAY contain all of the same elements as are found in +# the server config file except port, debug, and tls sections. +# +# Examples: +# fabric-ca-server start -b admin:adminpw --cacount 2 +# +# fabric-ca-server start -b admin:adminpw --cafiles ca/ca1/fabric-ca-server-config.yaml +# --cafiles ca/ca2/fabric-ca-server-config.yaml +# +############################################################################# + +cacount: + +cafiles: + +############################################################################# +# Intermediate CA section +# +# The relationship between servers and CAs is as follows: +# 1) A single server process may contain or function as one or more CAs. +# This is configured by the "Multi CA section" above. +# 2) Each CA is either a root CA or an intermediate CA. +# 3) Each intermediate CA has a parent CA which is either a root CA or another intermediate CA. +# +# This section pertains to configuration of #2 and #3. +# If the "intermediate.parentserver.url" property is set, +# then this is an intermediate CA with the specified parent +# CA. +# +# parentserver section +# url - The URL of the parent server +# caname - Name of the CA to enroll within the server +# +# enrollment section used to enroll intermediate CA with parent CA +# profile - Name of the signing profile to use in issuing the certificate +# label - Label to use in HSM operations +# +# tls section for secure socket connection +# certfiles - PEM-encoded list of trusted root certificate files +# client: +# certfile - PEM-encoded certificate file for when client authentication +# is enabled on server +# keyfile - PEM-encoded key file for when client authentication +# is enabled on server +############################################################################# +intermediate: + parentserver: + url: + caname: + + enrollment: + hosts: + profile: + label: + + tls: + certfiles: + client: + certfile: + keyfile: + +############################################################################# +# CA configuration section +# +# Configure the number of incorrect password attempts are allowed for +# identities. By default, the value of 'passwordattempts' is 10, which +# means that 10 incorrect password attempts can be made before an identity get +# locked out. +############################################################################# +cfg: + identities: + passwordattempts: 10 + +############################################################################### +# +# Operations section +# +############################################################################### +operations: + # host and port for the operations server + listenAddress: 127.0.0.1:9443 + + # TLS configuration for the operations endpoint + tls: + # TLS enabled + enabled: false -exports[`samples/fablo-config-hlf3-1orgs-1chaincode.json should create proper e2e/__tmp__/samples/fablo-config-hlf3-1orgs-1chaincode.json.tmpdir/fablo-target/fabric-config/connection-profiles/connection-profile-org1.json from samples/fablo-config-hlf3-1orgs-1chaincode.json 1`] = ` -"{ - "name": "fablo-test-network-org1", - "description": "Connection profile for Org1 in Fablo network", - "version": "1.0.0", - "client": { - "organization": "Org1" - }, - "organizations": { - "Org1": { - "mspid": "Org1MSP", - "peers": [ - "peer0.org1.example.com", - "peer1.org1.example.com" - ], - "certificateAuthorities": [ - "ca.org1.example.com" - ] - } - }, - "peers": { - "peer0.org1.example.com": { - "url": "grpcs://localhost:7041", - "tlsCACerts": { - "path": "/samples/fablo-target/fabric-config/crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt" - }, - "grpcOptions": { - "ssl-target-name-override": "peer0.org1.example.com" - } - }, - "peer1.org1.example.com": { - "url": "grpcs://localhost:7042", - "tlsCACerts": { - "path": "/samples/fablo-target/fabric-config/crypto-config/peerOrganizations/org1.example.com/peers/peer1.org1.example.com/tls/ca.crt" - }, - "grpcOptions": { - "ssl-target-name-override": "peer1.org1.example.com" - } - } - }, - "certificateAuthorities": { - "ca.org1.example.com": { - "url": "https://localhost:7040", - "caName": "ca.org1.example.com", - "tlsCACerts": { - "path": "/samples/fablo-target/fabric-config/crypto-config/peerOrganizations/org1.example.com/ca/ca.org1.example.com-cert.pem" - }, - "httpOptions": { - "verify": false - } - } - } -} -" -`; + # path to PEM encoded server certificate for the operations server + cert: + file: -exports[`samples/fablo-config-hlf3-1orgs-1chaincode.json should create proper e2e/__tmp__/samples/fablo-config-hlf3-1orgs-1chaincode.json.tmpdir/fablo-target/fabric-config/connection-profiles/connection-profile-org1.yaml from samples/fablo-config-hlf3-1orgs-1chaincode.json 1`] = ` -"name: fablo-test-network-org1 -description: Connection profile for Org1 in Fablo network -version: 1.0.0 -client: - organization: Org1 -organizations: - Org1: - mspid: Org1MSP - peers: - - peer0.org1.example.com - - peer1.org1.example.com - certificateAuthorities: - - ca.org1.example.com -peers: - peer0.org1.example.com: - url: grpcs://localhost:7041 - tlsCACerts: - path: >- - /samples/fablo-target/fabric-config/crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt - grpcOptions: - ssl-target-name-override: peer0.org1.example.com - peer1.org1.example.com: - url: grpcs://localhost:7042 - tlsCACerts: - path: >- - /samples/fablo-target/fabric-config/crypto-config/peerOrganizations/org1.example.com/peers/peer1.org1.example.com/tls/ca.crt - grpcOptions: - ssl-target-name-override: peer1.org1.example.com -certificateAuthorities: - ca.org1.example.com: - url: https://localhost:7040 - caName: ca.org1.example.com - tlsCACerts: - path: >- - /samples/fablo-target/fabric-config/crypto-config/peerOrganizations/org1.example.com/ca/ca.org1.example.com-cert.pem - httpOptions: - verify: false -" -`; + # path to PEM encoded server key for the operations server + key: + file: -exports[`samples/fablo-config-hlf3-1orgs-1chaincode.json should create proper e2e/__tmp__/samples/fablo-config-hlf3-1orgs-1chaincode.json.tmpdir/fablo-target/fabric-config/crypto-config-orderer.yaml from samples/fablo-config-hlf3-1orgs-1chaincode.json 1`] = ` -"PeerOrgs: - - Name: Orderer - Domain: orderer.example.com - Specs: - - Hostname: orderer0.group1 - - Hostname: orderer1.group1 - - Hostname: orderer2.group1 - - Hostname: orderer3.group1 - Template: - Count: 0 - Users: - Count: 1 -" -`; + # require client certificate authentication to access all resources + clientAuthRequired: false -exports[`samples/fablo-config-hlf3-1orgs-1chaincode.json should create proper e2e/__tmp__/samples/fablo-config-hlf3-1orgs-1chaincode.json.tmpdir/fablo-target/fabric-config/crypto-config-org1.yaml from samples/fablo-config-hlf3-1orgs-1chaincode.json 1`] = ` -"PeerOrgs: - - Name: Org1 - Domain: org1.example.com - Specs: - Template: - Count: 2 - Users: - Count: 1 -" -`; + # paths to PEM encoded ca certificates to trust for client authentication + clientRootCAs: + files: [] -exports[`samples/fablo-config-hlf3-1orgs-1chaincode.json should create proper e2e/__tmp__/samples/fablo-config-hlf3-1orgs-1chaincode.json.tmpdir/fablo-target/fabric-config/explorer/config-global.json from samples/fablo-config-hlf3-1orgs-1chaincode.json 1`] = ` -"{ - "network-configs": { - "network-org1": { - "name": "Network of Org1", - "profile": "/opt/explorer/app/platform/fabric/connection-profile/connection-profile-org1.json" - } - }, - "license": "Apache-2.0" -} +############################################################################### +# +# Metrics section +# +############################################################################### +metrics: + # statsd, prometheus, or disabled + provider: disabled + + # statsd configuration + statsd: + # network type: tcp or udp + network: udp + + # statsd server address + address: 127.0.0.1:8125 + + # the interval at which locally cached counters and gauges are pushed + # to statsd; timings are pushed immediately + writeInterval: 10s + + # prefix is prepended to all emitted statsd metrics + prefix: server " `; -exports[`samples/fablo-config-hlf3-1orgs-1chaincode.json should create proper e2e/__tmp__/samples/fablo-config-hlf3-1orgs-1chaincode.json.tmpdir/fablo-target/fabric-config/fabric-ca-server-config/orderer.example.com/fabric-ca-server-config.yaml from samples/fablo-config-hlf3-1orgs-1chaincode.json 1`] = ` +exports[`samples/fablo-config-hlf3-1orgs-1chaincode.json should create proper e2e/__tmp__/samples/fablo-config-hlf3-1orgs-1chaincode.json.tmpdir/fablo-target/fabric-config/fabric-ca-server-config/orderer2.example.com/fabric-ca-server-config.yaml from samples/fablo-config-hlf3-1orgs-1chaincode.json 1`] = ` "############################################################################# # This is a configuration file for the fabric-ca-server command. # @@ -682,7 +1367,7 @@ ldap: # which are always stored in lower case. ############################################################################# affiliations: - orderer: + orderer2: ############################################################################# # Signing section @@ -1538,8 +2223,11 @@ RECOMMENDED_NODE_VERSION=16 ROOT_CA_ADMIN_NAME=admin ROOT_CA_ADMIN_PASSWORD=adminpw -ORDERER_CA_ADMIN_NAME=admin -ORDERER_CA_ADMIN_PASSWORD=adminpw +ORDERER1_CA_ADMIN_NAME=admin +ORDERER1_CA_ADMIN_PASSWORD=adminpw + +ORDERER2_CA_ADMIN_NAME=admin +ORDERER2_CA_ADMIN_PASSWORD=adminpw ORG1_CA_ADMIN_NAME=admin ORG1_CA_ADMIN_PASSWORD=adminpw @@ -1557,13 +2245,13 @@ chaincodeList() { elif [ "$1" = "peer0.org1.example.com" ]; then - peerChaincodeListTls "cli.org1.example.com" "peer0.org1.example.com:7041" "$2" "crypto-orderer/tlsca.orderer.example.com-cert.pem" # Third argument is channel name + peerChaincodeListTls "cli.org1.example.com" "peer0.org1.example.com:7061" "$2" "crypto-orderer/tlsca.orderer1.example.com-cert.pem" # Third argument is channel name elif [ "$1" = "peer1.org1.example.com" ] then - peerChaincodeListTls "cli.org1.example.com" "peer1.org1.example.com:7042" "$2" "crypto-orderer/tlsca.orderer.example.com-cert.pem" # Third argument is channel name + peerChaincodeListTls "cli.org1.example.com" "peer1.org1.example.com:7062" "$2" "crypto-orderer/tlsca.orderer1.example.com-cert.pem" # Third argument is channel name else @@ -1595,15 +2283,18 @@ chaincodeInvoke() { fi peer_addresses="$1" - peer_addresses="\${peer_addresses//peer0.org1.example.com/peer0.org1.example.com:7041}" - peer_addresses="\${peer_addresses//peer1.org1.example.com/peer1.org1.example.com:7042}" + peer_addresses="\${peer_addresses//peer0.org1.example.com/peer0.org1.example.com:7061}" + peer_addresses="\${peer_addresses//peer1.org1.example.com/peer1.org1.example.com:7062}" peer_certs="$1" 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}" if [ "$2" = "my-channel1" ]; then - ca_cert="crypto-orderer/tlsca.orderer.example.com-cert.pem" + ca_cert="crypto-orderer/tlsca.orderer1.example.com-cert.pem" + fi + if [ "$2" = "my-channel2" ]; then + ca_cert="crypto-orderer/tlsca.orderer1.example.com-cert.pem" fi peerChaincodeInvokeTls "$cli" "$peer_addresses" "$2" "$3" "$4" "$5" "$peer_certs" "$ca_cert" } @@ -1623,48 +2314,65 @@ channelQuery() { elif [ "$1" = "list" ] && [ "$2" = "org1" ] && [ "$3" = "peer0" ]; then - peerChannelListTls "cli.org1.example.com" "peer0.org1.example.com:7041" "crypto-orderer/tlsca.orderer.example.com-cert.pem" + peerChannelListTls "cli.org1.example.com" "peer0.org1.example.com:7061" "crypto-orderer/tlsca.orderer1.example.com-cert.pem" elif [ "$1" = "list" ] && [ "$2" = "org1" ] && [ "$3" = "peer1" ] then - peerChannelListTls "cli.org1.example.com" "peer1.org1.example.com:7042" "crypto-orderer/tlsca.orderer.example.com-cert.pem" + peerChannelListTls "cli.org1.example.com" "peer1.org1.example.com:7062" "crypto-orderer/tlsca.orderer1.example.com-cert.pem" elif [ "$1" = "getinfo" ] && [ "$2" = "my-channel1" ] && [ "$3" = "org1" ] && [ "$4" = "peer0" ] then - peerChannelGetInfoTls "my-channel1" "cli.org1.example.com" "peer0.org1.example.com:7041" "crypto-orderer/tlsca.orderer.example.com-cert.pem" + peerChannelGetInfoTls "my-channel1" "cli.org1.example.com" "peer0.org1.example.com:7061" "crypto-orderer/tlsca.orderer1.example.com-cert.pem" elif [ "$1" = "fetch" ] && [ "$2" = "config" ] && [ "$3" = "my-channel1" ] && [ "$4" = "org1" ] && [ "$5" = "peer0" ]; then TARGET_FILE=\${6:-"$channel-config.json"} - peerChannelFetchConfigTls "my-channel1" "cli.org1.example.com" "$TARGET_FILE" "peer0.org1.example.com:7041" "crypto-orderer/tlsca.orderer.example.com-cert.pem" + peerChannelFetchConfigTls "my-channel1" "cli.org1.example.com" "$TARGET_FILE" "peer0.org1.example.com:7061" "crypto-orderer/tlsca.orderer1.example.com-cert.pem" elif [ "$1" = "fetch" ] && [ "$3" = "my-channel1" ] && [ "$4" = "org1" ] && [ "$5" = "peer0" ]; then BLOCK_NAME=$2 TARGET_FILE=\${6:-"$BLOCK_NAME.block"} - peerChannelFetchBlockTls "my-channel1" "cli.org1.example.com" "\${BLOCK_NAME}" "peer0.org1.example.com:7041" "crypto-orderer/tlsca.orderer.example.com-cert.pem" "$TARGET_FILE" + peerChannelFetchBlockTls "my-channel1" "cli.org1.example.com" "\${BLOCK_NAME}" "peer0.org1.example.com:7061" "crypto-orderer/tlsca.orderer1.example.com-cert.pem" "$TARGET_FILE" elif [ "$1" = "getinfo" ] && [ "$2" = "my-channel1" ] && [ "$3" = "org1" ] && [ "$4" = "peer1" ] then - peerChannelGetInfoTls "my-channel1" "cli.org1.example.com" "peer1.org1.example.com:7042" "crypto-orderer/tlsca.orderer.example.com-cert.pem" + peerChannelGetInfoTls "my-channel1" "cli.org1.example.com" "peer1.org1.example.com:7062" "crypto-orderer/tlsca.orderer1.example.com-cert.pem" elif [ "$1" = "fetch" ] && [ "$2" = "config" ] && [ "$3" = "my-channel1" ] && [ "$4" = "org1" ] && [ "$5" = "peer1" ]; then TARGET_FILE=\${6:-"$channel-config.json"} - peerChannelFetchConfigTls "my-channel1" "cli.org1.example.com" "$TARGET_FILE" "peer1.org1.example.com:7042" "crypto-orderer/tlsca.orderer.example.com-cert.pem" + peerChannelFetchConfigTls "my-channel1" "cli.org1.example.com" "$TARGET_FILE" "peer1.org1.example.com:7062" "crypto-orderer/tlsca.orderer1.example.com-cert.pem" elif [ "$1" = "fetch" ] && [ "$3" = "my-channel1" ] && [ "$4" = "org1" ] && [ "$5" = "peer1" ]; then BLOCK_NAME=$2 TARGET_FILE=\${6:-"$BLOCK_NAME.block"} - peerChannelFetchBlockTls "my-channel1" "cli.org1.example.com" "\${BLOCK_NAME}" "peer1.org1.example.com:7042" "crypto-orderer/tlsca.orderer.example.com-cert.pem" "$TARGET_FILE" + peerChannelFetchBlockTls "my-channel1" "cli.org1.example.com" "\${BLOCK_NAME}" "peer1.org1.example.com:7062" "crypto-orderer/tlsca.orderer1.example.com-cert.pem" "$TARGET_FILE" + + elif + [ "$1" = "getinfo" ] && [ "$2" = "my-channel2" ] && [ "$3" = "org1" ] && [ "$4" = "peer1" ] + then + + peerChannelGetInfoTls "my-channel2" "cli.org1.example.com" "peer1.org1.example.com:7062" "crypto-orderer/tlsca.orderer2.example.com-cert.pem" + + elif [ "$1" = "fetch" ] && [ "$2" = "config" ] && [ "$3" = "my-channel2" ] && [ "$4" = "org1" ] && [ "$5" = "peer1" ]; then + TARGET_FILE=\${6:-"$channel-config.json"} + + peerChannelFetchConfigTls "my-channel2" "cli.org1.example.com" "$TARGET_FILE" "peer1.org1.example.com:7062" "crypto-orderer/tlsca.orderer2.example.com-cert.pem" + + elif [ "$1" = "fetch" ] && [ "$3" = "my-channel2" ] && [ "$4" = "org1" ] && [ "$5" = "peer1" ]; then + BLOCK_NAME=$2 + TARGET_FILE=\${6:-"$BLOCK_NAME.block"} + + peerChannelFetchBlockTls "my-channel2" "cli.org1.example.com" "\${BLOCK_NAME}" "peer1.org1.example.com:7062" "crypto-orderer/tlsca.orderer2.example.com-cert.pem" "$TARGET_FILE" else @@ -1707,6 +2415,16 @@ printChannelsHelp() { echo -e "\\t Fetch a block with given number and save it. Uses first peer 'peer1' of 'Org1'". echo "" + echo "fablo channel getinfo my-channel2 org1 peer1" + echo -e "\\t Get channel info on 'peer1' of 'Org1'". + echo "" + echo "fablo channel fetch config my-channel2 org1 peer1 [file-name.json]" + echo -e "\\t Download latest config block and save it. Uses first peer 'peer1' of 'Org1'". + echo "" + echo "fablo channel fetch my-channel2 org1 peer1 [file name]" + echo -e "\\t Fetch a block with given number and save it. Uses first peer 'peer1' of 'Org1'". + echo "" + } " `; @@ -1717,8 +2435,11 @@ exports[`samples/fablo-config-hlf3-1orgs-1chaincode.json should create proper e2 generateArtifacts() { printHeadline "Generating basic configs" "U1F913" - printItalics "Generating crypto material for Orderer" "U1F512" - certsGenerate "$FABLO_NETWORK_ROOT/fabric-config" "crypto-config-orderer.yaml" "peerOrganizations/orderer.example.com" "$FABLO_NETWORK_ROOT/fabric-config/crypto-config/" + printItalics "Generating crypto material for Orderer1" "U1F512" + certsGenerate "$FABLO_NETWORK_ROOT/fabric-config" "crypto-config-orderer1.yaml" "peerOrganizations/orderer1.example.com" "$FABLO_NETWORK_ROOT/fabric-config/crypto-config/" + + printItalics "Generating crypto material for Orderer2" "U1F512" + certsGenerate "$FABLO_NETWORK_ROOT/fabric-config" "crypto-config-orderer2.yaml" "peerOrganizations/orderer2.example.com" "$FABLO_NETWORK_ROOT/fabric-config/crypto-config/" printItalics "Generating crypto material for Org1" "U1F512" certsGenerate "$FABLO_NETWORK_ROOT/fabric-config" "crypto-config-org1.yaml" "peerOrganizations/org1.example.com" "$FABLO_NETWORK_ROOT/fabric-config/crypto-config/" @@ -1737,19 +2458,25 @@ startNetwork() { generateChannelsArtifacts() { printHeadline "Generating config for 'my-channel1'" "U1F913" createChannelTx "my-channel1" "$FABLO_NETWORK_ROOT/fabric-config" "MyChannel1" "$FABLO_NETWORK_ROOT/fabric-config/config" + printHeadline "Generating config for 'my-channel2'" "U1F913" + createChannelTx "my-channel2" "$FABLO_NETWORK_ROOT/fabric-config" "MyChannel2" "$FABLO_NETWORK_ROOT/fabric-config/config" } installChannels() { - docker exec -i cli.orderer.example.com bash -c "source scripts/channel_fns.sh; createChannelAndJoinTls 'my-channel1' 'OrdererMSP' 'orderer0.group1.orderer.example.com:7053' 'crypto/users/Admin@orderer.example.com/tls/client.crt' 'crypto/users/Admin@orderer.example.com/tls/client.key' 'crypto-orderer/tlsca.orderer.example.com-cert.pem';" - docker exec -i cli.orderer.example.com bash -c "source scripts/channel_fns.sh; createChannelAndJoinTls 'my-channel1' 'OrdererMSP' 'orderer1.group1.orderer.example.com:7053' 'crypto/users/Admin@orderer.example.com/tls/client.crt' 'crypto/users/Admin@orderer.example.com/tls/client.key' 'crypto-orderer/tlsca.orderer.example.com-cert.pem';" - docker exec -i cli.orderer.example.com bash -c "source scripts/channel_fns.sh; createChannelAndJoinTls 'my-channel1' 'OrdererMSP' 'orderer2.group1.orderer.example.com:7053' 'crypto/users/Admin@orderer.example.com/tls/client.crt' 'crypto/users/Admin@orderer.example.com/tls/client.key' 'crypto-orderer/tlsca.orderer.example.com-cert.pem';" - docker exec -i cli.orderer.example.com bash -c "source scripts/channel_fns.sh; createChannelAndJoinTls 'my-channel1' 'OrdererMSP' 'orderer3.group1.orderer.example.com:7053' 'crypto/users/Admin@orderer.example.com/tls/client.crt' 'crypto/users/Admin@orderer.example.com/tls/client.key' 'crypto-orderer/tlsca.orderer.example.com-cert.pem';" + docker exec -i cli.orderer1.example.com bash -c "source scripts/channel_fns.sh; createChannelAndJoinTls 'my-channel1' 'Orderer1MSP' 'orderer0.group1.orderer1.example.com:7053' 'crypto/users/Admin@orderer1.example.com/tls/client.crt' 'crypto/users/Admin@orderer1.example.com/tls/client.key' 'crypto-orderer/tlsca.orderer1.example.com-cert.pem';" + docker exec -i cli.orderer1.example.com bash -c "source scripts/channel_fns.sh; createChannelAndJoinTls 'my-channel1' 'Orderer1MSP' 'orderer1.group1.orderer1.example.com:7053' 'crypto/users/Admin@orderer1.example.com/tls/client.crt' 'crypto/users/Admin@orderer1.example.com/tls/client.key' 'crypto-orderer/tlsca.orderer1.example.com-cert.pem';" + docker exec -i cli.orderer1.example.com bash -c "source scripts/channel_fns.sh; createChannelAndJoinTls 'my-channel1' 'Orderer1MSP' 'orderer2.group1.orderer1.example.com:7053' 'crypto/users/Admin@orderer1.example.com/tls/client.crt' 'crypto/users/Admin@orderer1.example.com/tls/client.key' 'crypto-orderer/tlsca.orderer1.example.com-cert.pem';" sleep 4 # Wait for Raft cluster to establish consensus printHeadline "Creating 'my-channel1' on Org1/peer0" "U1F63B" - docker exec -i cli.org1.example.com bash -c "source scripts/channel_fns.sh; fetchChannelAndJoinTls 'my-channel1' 'Org1MSP' 'peer0.org1.example.com:7041' 'crypto/users/Admin@org1.example.com/msp' 'crypto/users/Admin@org1.example.com/tls' 'crypto-orderer/tlsca.orderer.example.com-cert.pem' 'orderer0.group1.orderer.example.com:7030';" + docker exec -i cli.org1.example.com bash -c "source scripts/channel_fns.sh; fetchChannelAndJoinTls 'my-channel1' 'Org1MSP' 'peer0.org1.example.com:7061' 'crypto/users/Admin@org1.example.com/msp' 'crypto/users/Admin@org1.example.com/tls' 'crypto-orderer/tlsca.orderer1.example.com-cert.pem' 'orderer0.group1.orderer1.example.com:7030';" printItalics "Joining 'my-channel1' on Org1/peer1" "U1F638" - docker exec -i cli.org1.example.com bash -c "source scripts/channel_fns.sh; fetchChannelAndJoinTls 'my-channel1' 'Org1MSP' 'peer1.org1.example.com:7042' 'crypto/users/Admin@org1.example.com/msp' 'crypto/users/Admin@org1.example.com/tls' 'crypto-orderer/tlsca.orderer.example.com-cert.pem' 'orderer0.group1.orderer.example.com:7030';" + docker exec -i cli.org1.example.com bash -c "source scripts/channel_fns.sh; fetchChannelAndJoinTls 'my-channel1' 'Org1MSP' 'peer1.org1.example.com:7062' 'crypto/users/Admin@org1.example.com/msp' 'crypto/users/Admin@org1.example.com/tls' 'crypto-orderer/tlsca.orderer1.example.com-cert.pem' 'orderer0.group1.orderer1.example.com:7030';" + docker exec -i cli.orderer2.example.com bash -c "source scripts/channel_fns.sh; createChannelAndJoinTls 'my-channel2' 'Orderer2MSP' 'orderer0.group2.orderer2.example.com:7053' 'crypto/users/Admin@orderer2.example.com/tls/client.crt' 'crypto/users/Admin@orderer2.example.com/tls/client.key' 'crypto-orderer/tlsca.orderer2.example.com-cert.pem';" + sleep 4 # Wait for Raft cluster to establish consensus + printHeadline "Creating 'my-channel2' on Org1/peer1" "U1F63B" + docker exec -i cli.org1.example.com bash -c "source scripts/channel_fns.sh; fetchChannelAndJoinTls 'my-channel2' 'Org1MSP' 'peer1.org1.example.com:7062' 'crypto/users/Admin@org1.example.com/msp' 'crypto/users/Admin@org1.example.com/tls' 'crypto-orderer/tlsca.orderer2.example.com-cert.pem' 'orderer0.group2.orderer2.example.com:7050';" + } installChaincodes() { @@ -1757,12 +2484,12 @@ installChaincodes() { local version="0.0.1" printHeadline "Packaging chaincode 'chaincode1'" "U1F60E" chaincodeBuild "chaincode1" "node" "$CHAINCODES_BASE_DIR/./chaincodes/chaincode-kv-node" "16" - chaincodePackage "cli.org1.example.com" "peer0.org1.example.com:7041" "chaincode1" "$version" "node" printHeadline "Installing 'chaincode1' for Org1" "U1F60E" - chaincodeInstall "cli.org1.example.com" "peer0.org1.example.com:7041" "chaincode1" "$version" "crypto-orderer/tlsca.orderer.example.com-cert.pem" - chaincodeInstall "cli.org1.example.com" "peer1.org1.example.com:7042" "chaincode1" "$version" "crypto-orderer/tlsca.orderer.example.com-cert.pem" - chaincodeApprove "cli.org1.example.com" "peer0.org1.example.com:7041" "my-channel1" "chaincode1" "$version" "orderer0.group1.orderer.example.com:7030" "AND ('Org1MSP.member')" "undefined" "crypto-orderer/tlsca.orderer.example.com-cert.pem" "" + chaincodePackage "cli.org1.example.com" "peer0.org1.example.com:7061" "chaincode1" "$version" "node" printHeadline "Installing 'chaincode1' for Org1" "U1F60E" + chaincodeInstall "cli.org1.example.com" "peer0.org1.example.com:7061" "chaincode1" "$version" "crypto-orderer/tlsca.orderer1.example.com-cert.pem" + chaincodeInstall "cli.org1.example.com" "peer1.org1.example.com:7062" "chaincode1" "$version" "crypto-orderer/tlsca.orderer1.example.com-cert.pem" + chaincodeApprove "cli.org1.example.com" "peer0.org1.example.com:7061" "my-channel1" "chaincode1" "$version" "orderer0.group1.orderer1.example.com:7030" "AND ('Org1MSP.member')" "undefined" "crypto-orderer/tlsca.orderer1.example.com-cert.pem" "" printItalics "Committing chaincode 'chaincode1' on channel 'my-channel1' as 'Org1'" "U1F618" - chaincodeCommit "cli.org1.example.com" "peer0.org1.example.com:7041" "my-channel1" "chaincode1" "$version" "orderer0.group1.orderer.example.com:7030" "AND ('Org1MSP.member')" "undefined" "crypto-orderer/tlsca.orderer.example.com-cert.pem" "peer0.org1.example.com:7041" "crypto-peer/peer0.org1.example.com/tls/ca.crt" "" + chaincodeCommit "cli.org1.example.com" "peer0.org1.example.com:7061" "my-channel1" "chaincode1" "$version" "orderer0.group1.orderer1.example.com:7030" "AND ('Org1MSP.member')" "undefined" "crypto-orderer/tlsca.orderer1.example.com-cert.pem" "peer0.org1.example.com:7061" "crypto-peer/peer0.org1.example.com/tls/ca.crt" "" else echo "Warning! Skipping chaincode 'chaincode1' installation. Chaincode directory is empty." echo "Looked in dir: '$CHAINCODES_BASE_DIR/./chaincodes/chaincode-kv-node'" @@ -1787,12 +2514,12 @@ installChaincode() { if [ -n "$(ls "$CHAINCODES_BASE_DIR/./chaincodes/chaincode-kv-node")" ]; then printHeadline "Packaging chaincode 'chaincode1'" "U1F60E" chaincodeBuild "chaincode1" "node" "$CHAINCODES_BASE_DIR/./chaincodes/chaincode-kv-node" "16" - chaincodePackage "cli.org1.example.com" "peer0.org1.example.com:7041" "chaincode1" "$version" "node" printHeadline "Installing 'chaincode1' for Org1" "U1F60E" - chaincodeInstall "cli.org1.example.com" "peer0.org1.example.com:7041" "chaincode1" "$version" "crypto-orderer/tlsca.orderer.example.com-cert.pem" - chaincodeInstall "cli.org1.example.com" "peer1.org1.example.com:7042" "chaincode1" "$version" "crypto-orderer/tlsca.orderer.example.com-cert.pem" - chaincodeApprove "cli.org1.example.com" "peer0.org1.example.com:7041" "my-channel1" "chaincode1" "$version" "orderer0.group1.orderer.example.com:7030" "AND ('Org1MSP.member')" "undefined" "crypto-orderer/tlsca.orderer.example.com-cert.pem" "" + chaincodePackage "cli.org1.example.com" "peer0.org1.example.com:7061" "chaincode1" "$version" "node" printHeadline "Installing 'chaincode1' for Org1" "U1F60E" + chaincodeInstall "cli.org1.example.com" "peer0.org1.example.com:7061" "chaincode1" "$version" "crypto-orderer/tlsca.orderer1.example.com-cert.pem" + chaincodeInstall "cli.org1.example.com" "peer1.org1.example.com:7062" "chaincode1" "$version" "crypto-orderer/tlsca.orderer1.example.com-cert.pem" + chaincodeApprove "cli.org1.example.com" "peer0.org1.example.com:7061" "my-channel1" "chaincode1" "$version" "orderer0.group1.orderer1.example.com:7030" "AND ('Org1MSP.member')" "undefined" "crypto-orderer/tlsca.orderer1.example.com-cert.pem" "" printItalics "Committing chaincode 'chaincode1' on channel 'my-channel1' as 'Org1'" "U1F618" - chaincodeCommit "cli.org1.example.com" "peer0.org1.example.com:7041" "my-channel1" "chaincode1" "$version" "orderer0.group1.orderer.example.com:7030" "AND ('Org1MSP.member')" "undefined" "crypto-orderer/tlsca.orderer.example.com-cert.pem" "peer0.org1.example.com:7041" "crypto-peer/peer0.org1.example.com/tls/ca.crt" "" + chaincodeCommit "cli.org1.example.com" "peer0.org1.example.com:7061" "my-channel1" "chaincode1" "$version" "orderer0.group1.orderer1.example.com:7030" "AND ('Org1MSP.member')" "undefined" "crypto-orderer/tlsca.orderer1.example.com-cert.pem" "peer0.org1.example.com:7061" "crypto-peer/peer0.org1.example.com/tls/ca.crt" "" else echo "Warning! Skipping chaincode 'chaincode1' install. Chaincode directory is empty." @@ -1823,12 +2550,12 @@ upgradeChaincode() { if [ -n "$(ls "$CHAINCODES_BASE_DIR/./chaincodes/chaincode-kv-node")" ]; then printHeadline "Packaging chaincode 'chaincode1'" "U1F60E" chaincodeBuild "chaincode1" "node" "$CHAINCODES_BASE_DIR/./chaincodes/chaincode-kv-node" "16" - chaincodePackage "cli.org1.example.com" "peer0.org1.example.com:7041" "chaincode1" "$version" "node" printHeadline "Installing 'chaincode1' for Org1" "U1F60E" - chaincodeInstall "cli.org1.example.com" "peer0.org1.example.com:7041" "chaincode1" "$version" "crypto-orderer/tlsca.orderer.example.com-cert.pem" - chaincodeInstall "cli.org1.example.com" "peer1.org1.example.com:7042" "chaincode1" "$version" "crypto-orderer/tlsca.orderer.example.com-cert.pem" - chaincodeApprove "cli.org1.example.com" "peer0.org1.example.com:7041" "my-channel1" "chaincode1" "$version" "orderer0.group1.orderer.example.com:7030" "AND ('Org1MSP.member')" "undefined" "crypto-orderer/tlsca.orderer.example.com-cert.pem" "" + chaincodePackage "cli.org1.example.com" "peer0.org1.example.com:7061" "chaincode1" "$version" "node" printHeadline "Installing 'chaincode1' for Org1" "U1F60E" + chaincodeInstall "cli.org1.example.com" "peer0.org1.example.com:7061" "chaincode1" "$version" "crypto-orderer/tlsca.orderer1.example.com-cert.pem" + chaincodeInstall "cli.org1.example.com" "peer1.org1.example.com:7062" "chaincode1" "$version" "crypto-orderer/tlsca.orderer1.example.com-cert.pem" + chaincodeApprove "cli.org1.example.com" "peer0.org1.example.com:7061" "my-channel1" "chaincode1" "$version" "orderer0.group1.orderer1.example.com:7030" "AND ('Org1MSP.member')" "undefined" "crypto-orderer/tlsca.orderer1.example.com-cert.pem" "" printItalics "Committing chaincode 'chaincode1' on channel 'my-channel1' as 'Org1'" "U1F618" - chaincodeCommit "cli.org1.example.com" "peer0.org1.example.com:7041" "my-channel1" "chaincode1" "$version" "orderer0.group1.orderer.example.com:7030" "AND ('Org1MSP.member')" "undefined" "crypto-orderer/tlsca.orderer.example.com-cert.pem" "peer0.org1.example.com:7041" "crypto-peer/peer0.org1.example.com/tls/ca.crt" "" + chaincodeCommit "cli.org1.example.com" "peer0.org1.example.com:7061" "my-channel1" "chaincode1" "$version" "orderer0.group1.orderer1.example.com:7030" "AND ('Org1MSP.member')" "undefined" "crypto-orderer/tlsca.orderer1.example.com-cert.pem" "peer0.org1.example.com:7061" "crypto-peer/peer0.org1.example.com/tls/ca.crt" "" else echo "Warning! Skipping chaincode 'chaincode1' upgrade. Chaincode directory is empty." @@ -1891,53 +2618,54 @@ exports[`samples/fablo-config-hlf3-1orgs-1chaincode.json should create proper e2 services: - ca.orderer.example.com: - container_name: ca.orderer.example.com + ca.orderer1.example.com: + container_name: ca.orderer1.example.com image: hyperledger/fabric-ca:\${FABRIC_CA_VERSION} environment: - FABRIC_CA_HOME=/etc/hyperledger/fabric-ca-server - - FABRIC_CA_SERVER_CA_NAME=ca.orderer.example.com - - FABRIC_CA_SERVER_CA_CERTFILE=/etc/hyperledger/fabric-ca-server/crypto/ca.orderer.example.com-cert.pem + - FABRIC_CA_SERVER_CA_NAME=ca.orderer1.example.com + - FABRIC_CA_SERVER_CA_CERTFILE=/etc/hyperledger/fabric-ca-server/crypto/ca.orderer1.example.com-cert.pem - FABRIC_CA_SERVER_CA_KEYFILE=/etc/hyperledger/fabric-ca-server/crypto/priv-key.pem - FABRIC_LOGGING_SPEC=\${LOGGING_LEVEL} - FABRIC_CA_SERVER_TLS_ENABLED=true ports: - 7020:7054 working_dir: /etc/hyperledger/fabric-ca-server - command: sh -c 'fabric-ca-server start -b \${ORDERER_CA_ADMIN_NAME}:\${ORDERER_CA_ADMIN_PASSWORD} -d' + command: sh -c 'fabric-ca-server start -b \${ORDERER1_CA_ADMIN_NAME}:\${ORDERER1_CA_ADMIN_PASSWORD} -d' volumes: - - ../fabric-config/crypto-config/peerOrganizations/orderer.example.com/ca/:/etc/hyperledger/fabric-ca-server/crypto - - ../fabric-config/fabric-ca-server-config/orderer.example.com/fabric-ca-server-config.yaml:/etc/hyperledger/fabric-ca-server/fabric-ca-server-config.yaml + - ../fabric-config/crypto-config/peerOrganizations/orderer1.example.com/ca/:/etc/hyperledger/fabric-ca-server/crypto + - ../fabric-config/fabric-ca-server-config/orderer1.example.com/fabric-ca-server-config.yaml:/etc/hyperledger/fabric-ca-server/fabric-ca-server-config.yaml networks: - basic - cli.orderer.example.com: - container_name: cli.orderer.example.com + cli.orderer1.example.com: + container_name: cli.orderer1.example.com image: ghcr.io/fablo-io/fabric-tools:\${FABRIC_TOOLS_VERSION} tty: true environment: - GOPATH=/opt/gopath - CORE_VM_ENDPOINT=unix:///host/var/run/docker.sock - FABRIC_LOGGING_SPEC=\${LOGGING_LEVEL} - - CORE_PEER_ID=cli.orderer.example.com + - CORE_PEER_ID=cli.orderer1.example.com - CORE_CHAINCODE_KEEPALIVE=10 # - - CORE_PEER_LOCALMSPID=OrdererMSP - - CORE_PEER_MSPCONFIGPATH=/var/hyperledger/cli/crypto/users/Admin@orderer.example.com/msp + - CORE_PEER_LOCALMSPID=Orderer1MSP + - CORE_PEER_MSPCONFIGPATH=/var/hyperledger/cli/crypto/users/Admin@orderer1.example.com/msp # enabled TLS - CORE_PEER_TLS_ENABLED=true - - CORE_PEER_TLS_CERT_FILE=/var/hyperledger/cli/crypto/users/Admin@orderer.example.com/tls/client.crt - - CORE_PEER_TLS_KEY_FILE=/var/hyperledger/cli/crypto/users/Admin@orderer.example.com/tls/client.key - - CORE_PEER_TLS_ROOTCERT_FILE=/var/hyperledger/cli/crypto/users/Admin@orderer.example.com/tls/ca.crt - - TLS_CA_CERT_PATH=/var/hyperledger/cli/crypto-orderer/tlsca.orderer.example.com-cert.pem + - CORE_PEER_TLS_CERT_FILE=/var/hyperledger/cli/crypto/users/Admin@orderer1.example.com/tls/client.crt + - CORE_PEER_TLS_KEY_FILE=/var/hyperledger/cli/crypto/users/Admin@orderer1.example.com/tls/client.key + - CORE_PEER_TLS_ROOTCERT_FILE=/var/hyperledger/cli/crypto/users/Admin@orderer1.example.com/tls/ca.crt + - TLS_CA_CERT_PATH=/var/hyperledger/cli/crypto-orderer/tlsca.orderer1.example.com-cert.pem working_dir: /var/hyperledger/cli/ command: /bin/bash volumes: - /var/run/docker.sock:/host/var/run/docker.sock - ../fabric-docker/scripts/cli:/var/hyperledger/cli/scripts/ - ../fabric-config/config:/var/hyperledger/cli/config/ # genesis.block and channel.tx's - - ../fabric-config/crypto-config/peerOrganizations/orderer.example.com:/var/hyperledger/cli/crypto/ - - ../fabric-config/crypto-config/peerOrganizations/orderer.example.com/peers/orderer0.group1.orderer.example.com/msp/tlscacerts/tlsca.orderer.example.com-cert.pem:/var/hyperledger/cli/crypto-orderer/tlsca.orderer.example.com-cert.pem:ro + - ../fabric-config/crypto-config/peerOrganizations/orderer1.example.com:/var/hyperledger/cli/crypto/ + - ../fabric-config/crypto-config/peerOrganizations/orderer1.example.com/peers/orderer0.group1.orderer1.example.com/msp/tlscacerts/tlsca.orderer1.example.com-cert.pem:/var/hyperledger/cli/crypto-orderer/tlsca.orderer1.example.com-cert.pem:ro + - ../fabric-config/crypto-config/peerOrganizations/orderer2.example.com/peers/orderer0.group2.orderer2.example.com/msp/tlscacerts/tlsca.orderer2.example.com-cert.pem:/var/hyperledger/cli/crypto-orderer/tlsca.orderer2.example.com-cert.pem:ro - ../fabric-config/crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt:/var/hyperledger/cli/crypto-peer/peer0.org1.example.com/tls/ca.crt:ro - ../fabric-config/crypto-config/peerOrganizations/org1.example.com/peers/peer1.org1.example.com/tls/ca.crt:/var/hyperledger/cli/crypto-peer/peer1.org1.example.com/tls/ca.crt:ro - ../fabric-config/chaincode-packages:/var/hyperledger/cli/chaincode-packages/ @@ -1945,14 +2673,14 @@ services: networks: - basic - orderer0.group1.orderer.example.com: - container_name: orderer0.group1.orderer.example.com + orderer0.group1.orderer1.example.com: + container_name: orderer0.group1.orderer1.example.com image: hyperledger/fabric-orderer:\${FABRIC_VERSION} environment: - FABRIC_LOGGING_SPEC=\${LOGGING_LEVEL} - ORDERER_GENERAL_LISTENADDRESS=0.0.0.0 - ORDERER_GENERAL_LISTENPORT=7030 - - ORDERER_GENERAL_LOCALMSPID=OrdererMSP + - ORDERER_GENERAL_LOCALMSPID=Orderer1MSP - ORDERER_GENERAL_LOCALMSPDIR=/var/hyperledger/orderer/msp # TLS Configuration - ORDERER_GENERAL_TLS_ENABLED=true @@ -1974,7 +2702,7 @@ services: - ORDERER_ADMIN_TLS_CLIENTROOTCAS=[/var/hyperledger/orderer/tls/ca.crt] - ORDERER_ADMIN_LISTENADDRESS=0.0.0.0:7053 # Metrics configuration - - ORDERER_OPERATIONS_LISTENADDRESS=orderer0.group1.orderer.example.com:9443 + - ORDERER_OPERATIONS_LISTENADDRESS=orderer0.group1.orderer1.example.com:9443 - ORDERER_METRICS_PROVIDER=prometheus working_dir: /var/hyperledger/orderer command: orderer @@ -1983,19 +2711,19 @@ services: - 8030:9440 volumes: - ../fabric-config/config/:/var/hyperledger/config - - ../fabric-config/crypto-config/peerOrganizations/orderer.example.com/peers/orderer0.group1.orderer.example.com/msp/:/var/hyperledger/orderer/msp - - ../fabric-config/crypto-config/peerOrganizations/orderer.example.com/peers/orderer0.group1.orderer.example.com/tls/:/var/hyperledger/orderer/tls + - ../fabric-config/crypto-config/peerOrganizations/orderer1.example.com/peers/orderer0.group1.orderer1.example.com/msp/:/var/hyperledger/orderer/msp + - ../fabric-config/crypto-config/peerOrganizations/orderer1.example.com/peers/orderer0.group1.orderer1.example.com/tls/:/var/hyperledger/orderer/tls networks: - basic - orderer1.group1.orderer.example.com: - container_name: orderer1.group1.orderer.example.com + orderer1.group1.orderer1.example.com: + container_name: orderer1.group1.orderer1.example.com image: hyperledger/fabric-orderer:\${FABRIC_VERSION} environment: - FABRIC_LOGGING_SPEC=\${LOGGING_LEVEL} - ORDERER_GENERAL_LISTENADDRESS=0.0.0.0 - ORDERER_GENERAL_LISTENPORT=7031 - - ORDERER_GENERAL_LOCALMSPID=OrdererMSP + - ORDERER_GENERAL_LOCALMSPID=Orderer1MSP - ORDERER_GENERAL_LOCALMSPDIR=/var/hyperledger/orderer/msp # TLS Configuration - ORDERER_GENERAL_TLS_ENABLED=true @@ -2017,7 +2745,7 @@ services: - ORDERER_ADMIN_TLS_CLIENTROOTCAS=[/var/hyperledger/orderer/tls/ca.crt] - ORDERER_ADMIN_LISTENADDRESS=0.0.0.0:7053 # Metrics configuration - - ORDERER_OPERATIONS_LISTENADDRESS=orderer1.group1.orderer.example.com:9443 + - ORDERER_OPERATIONS_LISTENADDRESS=orderer1.group1.orderer1.example.com:9443 - ORDERER_METRICS_PROVIDER=prometheus working_dir: /var/hyperledger/orderer command: orderer @@ -2026,19 +2754,19 @@ services: - 8031:9440 volumes: - ../fabric-config/config/:/var/hyperledger/config - - ../fabric-config/crypto-config/peerOrganizations/orderer.example.com/peers/orderer1.group1.orderer.example.com/msp/:/var/hyperledger/orderer/msp - - ../fabric-config/crypto-config/peerOrganizations/orderer.example.com/peers/orderer1.group1.orderer.example.com/tls/:/var/hyperledger/orderer/tls + - ../fabric-config/crypto-config/peerOrganizations/orderer1.example.com/peers/orderer1.group1.orderer1.example.com/msp/:/var/hyperledger/orderer/msp + - ../fabric-config/crypto-config/peerOrganizations/orderer1.example.com/peers/orderer1.group1.orderer1.example.com/tls/:/var/hyperledger/orderer/tls networks: - basic - orderer2.group1.orderer.example.com: - container_name: orderer2.group1.orderer.example.com + orderer2.group1.orderer1.example.com: + container_name: orderer2.group1.orderer1.example.com image: hyperledger/fabric-orderer:\${FABRIC_VERSION} environment: - FABRIC_LOGGING_SPEC=\${LOGGING_LEVEL} - ORDERER_GENERAL_LISTENADDRESS=0.0.0.0 - ORDERER_GENERAL_LISTENPORT=7032 - - ORDERER_GENERAL_LOCALMSPID=OrdererMSP + - ORDERER_GENERAL_LOCALMSPID=Orderer1MSP - ORDERER_GENERAL_LOCALMSPDIR=/var/hyperledger/orderer/msp # TLS Configuration - ORDERER_GENERAL_TLS_ENABLED=true @@ -2060,7 +2788,7 @@ services: - ORDERER_ADMIN_TLS_CLIENTROOTCAS=[/var/hyperledger/orderer/tls/ca.crt] - ORDERER_ADMIN_LISTENADDRESS=0.0.0.0:7053 # Metrics configuration - - ORDERER_OPERATIONS_LISTENADDRESS=orderer2.group1.orderer.example.com:9443 + - ORDERER_OPERATIONS_LISTENADDRESS=orderer2.group1.orderer1.example.com:9443 - ORDERER_METRICS_PROVIDER=prometheus working_dir: /var/hyperledger/orderer command: orderer @@ -2069,19 +2797,74 @@ services: - 8032:9440 volumes: - ../fabric-config/config/:/var/hyperledger/config - - ../fabric-config/crypto-config/peerOrganizations/orderer.example.com/peers/orderer2.group1.orderer.example.com/msp/:/var/hyperledger/orderer/msp - - ../fabric-config/crypto-config/peerOrganizations/orderer.example.com/peers/orderer2.group1.orderer.example.com/tls/:/var/hyperledger/orderer/tls + - ../fabric-config/crypto-config/peerOrganizations/orderer1.example.com/peers/orderer2.group1.orderer1.example.com/msp/:/var/hyperledger/orderer/msp + - ../fabric-config/crypto-config/peerOrganizations/orderer1.example.com/peers/orderer2.group1.orderer1.example.com/tls/:/var/hyperledger/orderer/tls + networks: + - basic + + ca.orderer2.example.com: + container_name: ca.orderer2.example.com + image: hyperledger/fabric-ca:\${FABRIC_CA_VERSION} + environment: + - FABRIC_CA_HOME=/etc/hyperledger/fabric-ca-server + - FABRIC_CA_SERVER_CA_NAME=ca.orderer2.example.com + - FABRIC_CA_SERVER_CA_CERTFILE=/etc/hyperledger/fabric-ca-server/crypto/ca.orderer2.example.com-cert.pem + - FABRIC_CA_SERVER_CA_KEYFILE=/etc/hyperledger/fabric-ca-server/crypto/priv-key.pem + - FABRIC_LOGGING_SPEC=\${LOGGING_LEVEL} + - FABRIC_CA_SERVER_TLS_ENABLED=true + ports: + - 7040:7054 + working_dir: /etc/hyperledger/fabric-ca-server + command: sh -c 'fabric-ca-server start -b \${ORDERER2_CA_ADMIN_NAME}:\${ORDERER2_CA_ADMIN_PASSWORD} -d' + volumes: + - ../fabric-config/crypto-config/peerOrganizations/orderer2.example.com/ca/:/etc/hyperledger/fabric-ca-server/crypto + - ../fabric-config/fabric-ca-server-config/orderer2.example.com/fabric-ca-server-config.yaml:/etc/hyperledger/fabric-ca-server/fabric-ca-server-config.yaml + networks: + - basic + + cli.orderer2.example.com: + container_name: cli.orderer2.example.com + image: ghcr.io/fablo-io/fabric-tools:\${FABRIC_TOOLS_VERSION} + tty: true + environment: + - GOPATH=/opt/gopath + - CORE_VM_ENDPOINT=unix:///host/var/run/docker.sock + - FABRIC_LOGGING_SPEC=\${LOGGING_LEVEL} + - CORE_PEER_ID=cli.orderer2.example.com + - CORE_CHAINCODE_KEEPALIVE=10 + # + - CORE_PEER_LOCALMSPID=Orderer2MSP + - CORE_PEER_MSPCONFIGPATH=/var/hyperledger/cli/crypto/users/Admin@orderer2.example.com/msp + # enabled TLS + - CORE_PEER_TLS_ENABLED=true + - CORE_PEER_TLS_CERT_FILE=/var/hyperledger/cli/crypto/users/Admin@orderer2.example.com/tls/client.crt + - CORE_PEER_TLS_KEY_FILE=/var/hyperledger/cli/crypto/users/Admin@orderer2.example.com/tls/client.key + - CORE_PEER_TLS_ROOTCERT_FILE=/var/hyperledger/cli/crypto/users/Admin@orderer2.example.com/tls/ca.crt + - TLS_CA_CERT_PATH=/var/hyperledger/cli/crypto-orderer/tlsca.orderer1.example.com-cert.pem + working_dir: /var/hyperledger/cli/ + command: /bin/bash + volumes: + - /var/run/docker.sock:/host/var/run/docker.sock + - ../fabric-docker/scripts/cli:/var/hyperledger/cli/scripts/ + - ../fabric-config/config:/var/hyperledger/cli/config/ # genesis.block and channel.tx's + - ../fabric-config/crypto-config/peerOrganizations/orderer2.example.com:/var/hyperledger/cli/crypto/ + - ../fabric-config/crypto-config/peerOrganizations/orderer1.example.com/peers/orderer0.group1.orderer1.example.com/msp/tlscacerts/tlsca.orderer1.example.com-cert.pem:/var/hyperledger/cli/crypto-orderer/tlsca.orderer1.example.com-cert.pem:ro + - ../fabric-config/crypto-config/peerOrganizations/orderer2.example.com/peers/orderer0.group2.orderer2.example.com/msp/tlscacerts/tlsca.orderer2.example.com-cert.pem:/var/hyperledger/cli/crypto-orderer/tlsca.orderer2.example.com-cert.pem:ro + - ../fabric-config/crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt:/var/hyperledger/cli/crypto-peer/peer0.org1.example.com/tls/ca.crt:ro + - ../fabric-config/crypto-config/peerOrganizations/org1.example.com/peers/peer1.org1.example.com/tls/ca.crt:/var/hyperledger/cli/crypto-peer/peer1.org1.example.com/tls/ca.crt:ro + - ../fabric-config/chaincode-packages:/var/hyperledger/cli/chaincode-packages/ + - "$CHAINCODES_BASE_DIR/./chaincodes/chaincode-kv-node/:/var/hyperledger/cli/chaincode1/" networks: - basic - orderer3.group1.orderer.example.com: - container_name: orderer3.group1.orderer.example.com + orderer0.group2.orderer2.example.com: + container_name: orderer0.group2.orderer2.example.com image: hyperledger/fabric-orderer:\${FABRIC_VERSION} environment: - FABRIC_LOGGING_SPEC=\${LOGGING_LEVEL} - ORDERER_GENERAL_LISTENADDRESS=0.0.0.0 - - ORDERER_GENERAL_LISTENPORT=7033 - - ORDERER_GENERAL_LOCALMSPID=OrdererMSP + - ORDERER_GENERAL_LISTENPORT=7050 + - ORDERER_GENERAL_LOCALMSPID=Orderer2MSP - ORDERER_GENERAL_LOCALMSPDIR=/var/hyperledger/orderer/msp # TLS Configuration - ORDERER_GENERAL_TLS_ENABLED=true @@ -2103,17 +2886,17 @@ services: - ORDERER_ADMIN_TLS_CLIENTROOTCAS=[/var/hyperledger/orderer/tls/ca.crt] - ORDERER_ADMIN_LISTENADDRESS=0.0.0.0:7053 # Metrics configuration - - ORDERER_OPERATIONS_LISTENADDRESS=orderer3.group1.orderer.example.com:9443 + - ORDERER_OPERATIONS_LISTENADDRESS=orderer0.group2.orderer2.example.com:9443 - ORDERER_METRICS_PROVIDER=prometheus working_dir: /var/hyperledger/orderer command: orderer ports: - - 7033:7033 - - 8033:9440 + - 7050:7050 + - 8050:9440 volumes: - ../fabric-config/config/:/var/hyperledger/config - - ../fabric-config/crypto-config/peerOrganizations/orderer.example.com/peers/orderer3.group1.orderer.example.com/msp/:/var/hyperledger/orderer/msp - - ../fabric-config/crypto-config/peerOrganizations/orderer.example.com/peers/orderer3.group1.orderer.example.com/tls/:/var/hyperledger/orderer/tls + - ../fabric-config/crypto-config/peerOrganizations/orderer2.example.com/peers/orderer0.group2.orderer2.example.com/msp/:/var/hyperledger/orderer/msp + - ../fabric-config/crypto-config/peerOrganizations/orderer2.example.com/peers/orderer0.group2.orderer2.example.com/tls/:/var/hyperledger/orderer/tls networks: - basic @@ -2128,7 +2911,7 @@ services: - FABRIC_LOGGING_SPEC=\${LOGGING_LEVEL} - FABRIC_CA_SERVER_TLS_ENABLED=true ports: - - 7040:7054 + - 7060:7054 working_dir: /etc/hyperledger/fabric-ca-server command: sh -c 'fabric-ca-server start -b \${ORG1_CA_ADMIN_NAME}:\${ORG1_CA_ADMIN_PASSWORD} -d' volumes: @@ -2150,13 +2933,13 @@ services: # - CORE_PEER_LOCALMSPID=Org1MSP - CORE_PEER_MSPCONFIGPATH=/var/hyperledger/cli/crypto/users/Admin@org1.example.com/msp - - CORE_PEER_ADDRESS=peer0.org1.example.com:7041 + - CORE_PEER_ADDRESS=peer0.org1.example.com:7061 # enabled TLS - CORE_PEER_TLS_ENABLED=true - CORE_PEER_TLS_CERT_FILE=/var/hyperledger/cli/crypto/users/Admin@org1.example.com/tls/client.crt - CORE_PEER_TLS_KEY_FILE=/var/hyperledger/cli/crypto/users/Admin@org1.example.com/tls/client.key - CORE_PEER_TLS_ROOTCERT_FILE=/var/hyperledger/cli/crypto/users/Admin@org1.example.com/tls/ca.crt - - TLS_CA_CERT_PATH=/var/hyperledger/cli/crypto-orderer/tlsca.orderer.example.com-cert.pem + - TLS_CA_CERT_PATH=/var/hyperledger/cli/crypto-orderer/tlsca.orderer1.example.com-cert.pem working_dir: /var/hyperledger/cli/ command: /bin/bash volumes: @@ -2164,7 +2947,8 @@ services: - ../fabric-docker/scripts/cli:/var/hyperledger/cli/scripts/ - ../fabric-config/config:/var/hyperledger/cli/config/ # genesis.block and channel.tx's - ../fabric-config/crypto-config/peerOrganizations/org1.example.com:/var/hyperledger/cli/crypto/ - - ../fabric-config/crypto-config/peerOrganizations/orderer.example.com/peers/orderer0.group1.orderer.example.com/msp/tlscacerts/tlsca.orderer.example.com-cert.pem:/var/hyperledger/cli/crypto-orderer/tlsca.orderer.example.com-cert.pem:ro + - ../fabric-config/crypto-config/peerOrganizations/orderer1.example.com/peers/orderer0.group1.orderer1.example.com/msp/tlscacerts/tlsca.orderer1.example.com-cert.pem:/var/hyperledger/cli/crypto-orderer/tlsca.orderer1.example.com-cert.pem:ro + - ../fabric-config/crypto-config/peerOrganizations/orderer2.example.com/peers/orderer0.group2.orderer2.example.com/msp/tlscacerts/tlsca.orderer2.example.com-cert.pem:/var/hyperledger/cli/crypto-orderer/tlsca.orderer2.example.com-cert.pem:ro - ../fabric-config/crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt:/var/hyperledger/cli/crypto-peer/peer0.org1.example.com/tls/ca.crt:ro - ../fabric-config/crypto-config/peerOrganizations/org1.example.com/peers/peer1.org1.example.com/tls/ca.crt:/var/hyperledger/cli/crypto-peer/peer1.org1.example.com/tls/ca.crt:ro - ../fabric-config/chaincode-packages:/var/hyperledger/cli/chaincode-packages/ @@ -2178,11 +2962,11 @@ services: environment: - CORE_PEER_LOCALMSPID=Org1MSP - CORE_PEER_ID=peer0.org1.example.com - - CORE_PEER_ADDRESS=peer0.org1.example.com:7041 - - CORE_PEER_LISTENADDRESS=peer0.org1.example.com:7041 - - CORE_PEER_GOSSIP_ENDPOINT=peer0.org1.example.com:7041 - - CORE_PEER_GOSSIP_EXTERNALENDPOINT=peer0.org1.example.com:7041 - - CORE_PEER_GOSSIP_BOOTSTRAP="peer0.org1.example.com:7041 peer1.org1.example.com:7042" + - CORE_PEER_ADDRESS=peer0.org1.example.com:7061 + - CORE_PEER_LISTENADDRESS=peer0.org1.example.com:7061 + - CORE_PEER_GOSSIP_ENDPOINT=peer0.org1.example.com:7061 + - CORE_PEER_GOSSIP_EXTERNALENDPOINT=peer0.org1.example.com:7061 + - CORE_PEER_GOSSIP_BOOTSTRAP="peer0.org1.example.com:7061 peer1.org1.example.com:7062" - CORE_PEER_CHAINCODELISTENADDRESS=peer0.org1.example.com:7050 - CORE_PEER_MSPCONFIGPATH=/etc/hyperledger/fabric/peer/msp - CORE_CHAINCODE_BUILDER=hyperledger/fabric-ccenv:\${FABRIC_CCENV_VERSION} @@ -2211,8 +2995,8 @@ services: working_dir: /etc/hyperledger/fabric/peer/ command: peer node start ports: - - 8041:9440 - - 7041:7041 + - 8061:9440 + - 7061:7061 volumes: - /var/run/docker.sock:/host/var/run/docker.sock - ../fabric-config/crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/msp:/etc/hyperledger/fabric/peer/msp @@ -2227,11 +3011,11 @@ services: environment: - CORE_PEER_LOCALMSPID=Org1MSP - CORE_PEER_ID=peer1.org1.example.com - - CORE_PEER_ADDRESS=peer1.org1.example.com:7042 - - CORE_PEER_LISTENADDRESS=peer1.org1.example.com:7042 - - CORE_PEER_GOSSIP_ENDPOINT=peer1.org1.example.com:7042 - - CORE_PEER_GOSSIP_EXTERNALENDPOINT=peer1.org1.example.com:7042 - - CORE_PEER_GOSSIP_BOOTSTRAP="peer0.org1.example.com:7041 peer1.org1.example.com:7042" + - CORE_PEER_ADDRESS=peer1.org1.example.com:7062 + - CORE_PEER_LISTENADDRESS=peer1.org1.example.com:7062 + - CORE_PEER_GOSSIP_ENDPOINT=peer1.org1.example.com:7062 + - CORE_PEER_GOSSIP_EXTERNALENDPOINT=peer1.org1.example.com:7062 + - CORE_PEER_GOSSIP_BOOTSTRAP="peer0.org1.example.com:7061 peer1.org1.example.com:7062" - CORE_PEER_CHAINCODELISTENADDRESS=peer1.org1.example.com:7050 - CORE_PEER_MSPCONFIGPATH=/etc/hyperledger/fabric/peer/msp - CORE_CHAINCODE_BUILDER=hyperledger/fabric-ccenv:\${FABRIC_CCENV_VERSION} @@ -2260,8 +3044,8 @@ services: working_dir: /etc/hyperledger/fabric/peer/ command: peer node start ports: - - 8042:9440 - - 7042:7042 + - 8062:9440 + - 7062:7062 volumes: - /var/run/docker.sock:/host/var/run/docker.sock - ../fabric-config/crypto-config/peerOrganizations/org1.example.com/peers/peer1.org1.example.com/msp:/etc/hyperledger/fabric/peer/msp @@ -3280,10 +4064,10 @@ exports[`samples/fablo-config-hlf3-1orgs-1chaincode.json should create proper e2 __getOrdererAndPeerNodes() { echo " - orderer0.group1.orderer.example.com - orderer1.group1.orderer.example.com - orderer2.group1.orderer.example.com - orderer3.group1.orderer.example.com + orderer0.group1.orderer1.example.com + orderer1.group1.orderer1.example.com + orderer2.group1.orderer1.example.com + orderer0.group2.orderer2.example.com peer0.org1.example.com peer1.org1.example.com " @@ -3291,7 +4075,8 @@ __getOrdererAndPeerNodes() { __getCASQLiteNodes() { echo " - ca.orderer.example.com + ca.orderer1.example.com + ca.orderer2.example.com ca.org1.example.com " } @@ -3399,8 +4184,12 @@ echo "Executing post-generate hook" exports[`samples/fablo-config-hlf3-1orgs-1chaincode.json should create proper e2e/__tmp__/samples/fablo-config-hlf3-1orgs-1chaincode.json.tmpdir/fablo-target/network-topology.mmd from samples/fablo-config-hlf3-1orgs-1chaincode.json 1`] = ` "graph TD - subgraph Org_Orderer [Org: Orderer] - CA_ca_Orderer[CA: ca_Orderer - sqlite] + subgraph Org_Orderer1 [Org: Orderer1] + CA_ca_Orderer1[CA: ca_Orderer1 - sqlite] + end + + subgraph Org_Orderer2 [Org: Orderer2] + CA_ca_Orderer2[CA: ca_Orderer2 - sqlite] end subgraph Org_Org1 [Org: Org1] @@ -3413,11 +4202,20 @@ exports[`samples/fablo-config-hlf3-1orgs-1chaincode.json should create proper e2 Chaincode_chaincode1[Chaincode: chaincode1] end + subgraph Channel_my_channel2 [Channel: my-channel2] + end + %% Connections - Org_Orderer --> Channel_my_channel1 + Org_Orderer1 --> Channel_my_channel1 + Org_Orderer1 --> Channel_my_channel2 + Org_Orderer2 --> Channel_my_channel1 + Org_Orderer2 --> Channel_my_channel2 Org_Org1 -.-> Channel_my_channel1 Org1_peer0 --> Channel_my_channel1 Org1_peer1 --> Channel_my_channel1 + Org_Org1 -.-> Channel_my_channel2 + Org1_peer0 --> Channel_my_channel2 + Org1_peer1 --> Channel_my_channel2 " `; @@ -3425,14 +4223,18 @@ exports[`samples/fablo-config-hlf3-1orgs-1chaincode.json should create proper fi [ "e2e/__tmp__/samples/fablo-config-hlf3-1orgs-1chaincode.json.tmpdir/fablo-target/fabric-config/.gitignore", "e2e/__tmp__/samples/fablo-config-hlf3-1orgs-1chaincode.json.tmpdir/fablo-target/fabric-config/configtx.yaml", - "e2e/__tmp__/samples/fablo-config-hlf3-1orgs-1chaincode.json.tmpdir/fablo-target/fabric-config/connection-profiles/connection-profile-orderer.json", - "e2e/__tmp__/samples/fablo-config-hlf3-1orgs-1chaincode.json.tmpdir/fablo-target/fabric-config/connection-profiles/connection-profile-orderer.yaml", + "e2e/__tmp__/samples/fablo-config-hlf3-1orgs-1chaincode.json.tmpdir/fablo-target/fabric-config/connection-profiles/connection-profile-orderer1.json", + "e2e/__tmp__/samples/fablo-config-hlf3-1orgs-1chaincode.json.tmpdir/fablo-target/fabric-config/connection-profiles/connection-profile-orderer1.yaml", + "e2e/__tmp__/samples/fablo-config-hlf3-1orgs-1chaincode.json.tmpdir/fablo-target/fabric-config/connection-profiles/connection-profile-orderer2.json", + "e2e/__tmp__/samples/fablo-config-hlf3-1orgs-1chaincode.json.tmpdir/fablo-target/fabric-config/connection-profiles/connection-profile-orderer2.yaml", "e2e/__tmp__/samples/fablo-config-hlf3-1orgs-1chaincode.json.tmpdir/fablo-target/fabric-config/connection-profiles/connection-profile-org1.json", "e2e/__tmp__/samples/fablo-config-hlf3-1orgs-1chaincode.json.tmpdir/fablo-target/fabric-config/connection-profiles/connection-profile-org1.yaml", - "e2e/__tmp__/samples/fablo-config-hlf3-1orgs-1chaincode.json.tmpdir/fablo-target/fabric-config/crypto-config-orderer.yaml", + "e2e/__tmp__/samples/fablo-config-hlf3-1orgs-1chaincode.json.tmpdir/fablo-target/fabric-config/crypto-config-orderer1.yaml", + "e2e/__tmp__/samples/fablo-config-hlf3-1orgs-1chaincode.json.tmpdir/fablo-target/fabric-config/crypto-config-orderer2.yaml", "e2e/__tmp__/samples/fablo-config-hlf3-1orgs-1chaincode.json.tmpdir/fablo-target/fabric-config/crypto-config-org1.yaml", "e2e/__tmp__/samples/fablo-config-hlf3-1orgs-1chaincode.json.tmpdir/fablo-target/fabric-config/explorer/config-global.json", - "e2e/__tmp__/samples/fablo-config-hlf3-1orgs-1chaincode.json.tmpdir/fablo-target/fabric-config/fabric-ca-server-config/orderer.example.com/fabric-ca-server-config.yaml", + "e2e/__tmp__/samples/fablo-config-hlf3-1orgs-1chaincode.json.tmpdir/fablo-target/fabric-config/fabric-ca-server-config/orderer1.example.com/fabric-ca-server-config.yaml", + "e2e/__tmp__/samples/fablo-config-hlf3-1orgs-1chaincode.json.tmpdir/fablo-target/fabric-config/fabric-ca-server-config/orderer2.example.com/fabric-ca-server-config.yaml", "e2e/__tmp__/samples/fablo-config-hlf3-1orgs-1chaincode.json.tmpdir/fablo-target/fabric-config/fabric-ca-server-config/org1.example.com/fabric-ca-server-config.yaml", "e2e/__tmp__/samples/fablo-config-hlf3-1orgs-1chaincode.json.tmpdir/fablo-target/fabric-docker.sh", "e2e/__tmp__/samples/fablo-config-hlf3-1orgs-1chaincode.json.tmpdir/fablo-target/fabric-docker/.env", From 8aa73e1c9a82d2824e482d9acb90608a1bb46dce Mon Sep 17 00:00:00 2001 From: Pereowei Daniel Date: Fri, 10 Oct 2025 12:24:24 +0200 Subject: [PATCH 04/13] fix-multi-orderer group test Signed-off-by: Pereowei Daniel --- e2e-network/docker/test-02-v2-raft-2orgs.sh | 8 ++++---- .../fablo-config-hlf2-2orgs-2chaincodes-raft.yaml | 8 ++++---- .../templates/fabric-docker/chaincode-scripts.sh | 13 +++++++++++-- 3 files changed, 19 insertions(+), 10 deletions(-) diff --git a/e2e-network/docker/test-02-v2-raft-2orgs.sh b/e2e-network/docker/test-02-v2-raft-2orgs.sh index 1c8799497..50a2cd21d 100755 --- a/e2e-network/docker/test-02-v2-raft-2orgs.sh +++ b/e2e-network/docker/test-02-v2-raft-2orgs.sh @@ -97,8 +97,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" @@ -111,10 +111,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/samples/fablo-config-hlf2-2orgs-2chaincodes-raft.yaml b/samples/fablo-config-hlf2-2orgs-2chaincodes-raft.yaml index 914db23f9..b32fd5c96 100644 --- a/samples/fablo-config-hlf2-2orgs-2chaincodes-raft.yaml +++ b/samples/fablo-config-hlf2-2orgs-2chaincodes-raft.yaml @@ -1,10 +1,10 @@ --- "$schema": https://github.com/hyperledger-labs/fablo/releases/download/2.2.0/schema.json global: - fabricVersion: 2.4.3 + fabricVersion: 2.5.12 tls: true - monitoring: - loglevel: debug + # monitoring: + # loglevel: debug orgs: - organization: name: Orderer1 @@ -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 3607d49cc..22acc8889 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" <% } -%> -} +} \ No newline at end of file From e0d88555c95b6ba2a3e7600804fc9da4a1fe575b Mon Sep 17 00:00:00 2001 From: Pereowei Daniel Date: Fri, 10 Oct 2025 13:35:07 +0200 Subject: [PATCH 05/13] fix-update snapshots Signed-off-by: Pereowei Daniel --- e2e/__snapshots__/extendConfig.test.ts.snap | 219 +++++++-------- ...1chaincode-raft-explorer.json.test.ts.snap | 9 + ...2-2orgs-2chaincodes-raft.yaml.test.ts.snap | 103 +++++--- ...1chaincode-raft-explorer.json.test.ts.snap | 9 + ...ig-hlf3-1orgs-1chaincode.json.test.ts.snap | 11 +- ...lf3-bft-1orgs-1chaincode.json.test.ts.snap | 9 + e2e/__snapshots__/fabloCommands.test.ts.snap | 249 +++++++++--------- 7 files changed, 351 insertions(+), 258 deletions(-) diff --git a/e2e/__snapshots__/extendConfig.test.ts.snap b/e2e/__snapshots__/extendConfig.test.ts.snap index 6ad880e97..7d31ba2eb 100644 --- a/e2e/__snapshots__/extendConfig.test.ts.snap +++ b/e2e/__snapshots__/extendConfig.test.ts.snap @@ -3973,7 +3973,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", @@ -4147,7 +4146,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", @@ -4320,7 +4318,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", @@ -4382,21 +4379,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, @@ -4420,7 +4429,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", @@ -4430,86 +4438,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": [ { @@ -4556,21 +4542,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, @@ -4594,7 +4592,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", @@ -4648,21 +4645,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, @@ -4680,7 +4689,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')", @@ -4729,21 +4738,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, @@ -4767,7 +4788,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", @@ -4868,7 +4888,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", @@ -5042,7 +5061,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", @@ -5213,7 +5231,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", @@ -5387,7 +5404,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", @@ -5570,7 +5586,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", @@ -5734,7 +5749,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", @@ -5837,23 +5851,23 @@ exports[`extend config samples/fablo-config-hlf2-2orgs-2chaincodes-raft.yaml 1`] ], "global": { "capabilities": { - "application": "V2_0", + "application": "V2_5", "channel": "V2_0", "isV2": true, "isV3": false, "orderer": "V2_0", }, "engine": "docker", - "fabricBaseosVersion": "2.4.3", + "fabricBaseosVersion": "2.5.12", "fabricCaVersion": "1.5.5", - "fabricCcenvVersion": "2.4.3", - "fabricJavaenvVersion": "2.4", - "fabricNodeenvVersion": "2.4", + "fabricCcenvVersion": "2.5.12", + "fabricJavaenvVersion": "2.5", + "fabricNodeenvVersion": "2.5", "fabricRecommendedNodeVersion": "16", - "fabricToolsVersion": "2.4.3", - "fabricVersion": "2.4.3", + "fabricToolsVersion": "2.5.12", + "fabricVersion": "2.5.12", "monitoring": { - "loglevel": "debug", + "loglevel": "info", }, "paths": { "chaincodesBaseDir": "", @@ -6250,7 +6264,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-1chaincode-raft-explorer.json.test.ts.snap b/e2e/__snapshots__/fablo-config-hlf2-1org-1chaincode-raft-explorer.json.test.ts.snap index 7fbef83d6..9a5155609 100644 --- a/e2e/__snapshots__/fablo-config-hlf2-1org-1chaincode-raft-explorer.json.test.ts.snap +++ b/e2e/__snapshots__/fablo-config-hlf2-1org-1chaincode-raft-explorer.json.test.ts.snap @@ -1604,9 +1604,18 @@ 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 [ -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" } " 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 a5855968c..00c0c2b84 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 @@ -16,7 +16,7 @@ Capabilities: Orderer: &OrdererCapabilities V2_0: true Application: &ApplicationCapabilities - V2_0: true + V2_5: true ################################################################################ # CHANNEL Defaults @@ -3031,16 +3031,16 @@ FABLO_CONFIG= CHAINCODES_BASE_DIR= COMPOSE_PROJECT_NAME= -LOGGING_LEVEL=debug +LOGGING_LEVEL=info -FABRIC_VERSION=2.4.3 -FABRIC_TOOLS_VERSION=2.4.3 +FABRIC_VERSION=2.5.12 +FABRIC_TOOLS_VERSION=2.5.12 FABRIC_CA_VERSION=1.5.5 FABRIC_CA_POSTGRES_VERSION=14 -FABRIC_CCENV_VERSION=2.4.3 -FABRIC_BASEOS_VERSION=2.4.3 -FABRIC_JAVAENV_VERSION=2.4 -FABRIC_NODEENV_VERSION=2.4 +FABRIC_CCENV_VERSION=2.5.12 +FABRIC_BASEOS_VERSION=2.5.12 +FABRIC_JAVAENV_VERSION=2.5 +FABRIC_NODEENV_VERSION=2.5 RECOMMENDED_NODE_VERSION=16 ROOT_CA_ADMIN_NAME=admin @@ -3138,6 +3138,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 @@ -3145,8 +3148,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" } " @@ -3522,14 +3531,16 @@ 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" printHeadline "Installing 'chaincode2' for Org1" "U1F60E" - chaincodeInstall "cli.org1.example.com" "peer1.org1.example.com:7062" "chaincode2" "$version" "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" "" + chaincodePackage "cli.org1.example.com" "peer0.org1.example.com:7061" "chaincode2" "$version" "java" printHeadline "Installing 'chaincode2' for Org1" "U1F60E" + chaincodeInstall "cli.org1.example.com" "peer0.org1.example.com:7061" "chaincode2" "$version" "crypto-orderer/tlsca.orderer2.com-cert.pem" + chaincodeInstall "cli.org1.example.com" "peer1.org1.example.com:7062" "chaincode2" "$version" "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" "" printHeadline "Installing 'chaincode2' for Org2" "U1F60E" - chaincodeInstall "cli.org2.example.com" "peer1.org2.example.com:7082" "chaincode2" "$version" "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" "" - 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" "crypto-orderer/tlsca.orderer2.com-cert.pem" + chaincodeInstall "cli.org2.example.com" "peer1.org2.example.com:7082" "chaincode2" "$version" "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" "" + 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'" @@ -3572,14 +3583,16 @@ 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" printHeadline "Installing 'chaincode2' for Org1" "U1F60E" - chaincodeInstall "cli.org1.example.com" "peer1.org1.example.com:7062" "chaincode2" "$version" "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" "" + chaincodePackage "cli.org1.example.com" "peer0.org1.example.com:7061" "chaincode2" "$version" "java" printHeadline "Installing 'chaincode2' for Org1" "U1F60E" + chaincodeInstall "cli.org1.example.com" "peer0.org1.example.com:7061" "chaincode2" "$version" "crypto-orderer/tlsca.orderer2.com-cert.pem" + chaincodeInstall "cli.org1.example.com" "peer1.org1.example.com:7062" "chaincode2" "$version" "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" "" printHeadline "Installing 'chaincode2' for Org2" "U1F60E" - chaincodeInstall "cli.org2.example.com" "peer1.org2.example.com:7082" "chaincode2" "$version" "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" "" - 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" "crypto-orderer/tlsca.orderer2.com-cert.pem" + chaincodeInstall "cli.org2.example.com" "peer1.org2.example.com:7082" "chaincode2" "$version" "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" "" + 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." @@ -3608,11 +3621,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 } @@ -3652,14 +3665,16 @@ 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" printHeadline "Installing 'chaincode2' for Org1" "U1F60E" - chaincodeInstall "cli.org1.example.com" "peer1.org1.example.com:7062" "chaincode2" "$version" "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" "" + chaincodePackage "cli.org1.example.com" "peer0.org1.example.com:7061" "chaincode2" "$version" "java" printHeadline "Installing 'chaincode2' for Org1" "U1F60E" + chaincodeInstall "cli.org1.example.com" "peer0.org1.example.com:7061" "chaincode2" "$version" "crypto-orderer/tlsca.orderer2.com-cert.pem" + chaincodeInstall "cli.org1.example.com" "peer1.org1.example.com:7062" "chaincode2" "$version" "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" "" printHeadline "Installing 'chaincode2' for Org2" "U1F60E" - chaincodeInstall "cli.org2.example.com" "peer1.org2.example.com:7082" "chaincode2" "$version" "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" "" - 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" "crypto-orderer/tlsca.orderer2.com-cert.pem" + chaincodeInstall "cli.org2.example.com" "peer1.org2.example.com:7082" "chaincode2" "$version" "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" "" + 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." @@ -3727,6 +3742,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 "dev-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 "dev-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 "dev-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" @@ -3735,6 +3758,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 "dev-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 "dev-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 "dev-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" @@ -4091,7 +4122,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 @@ -5510,10 +5541,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 85ff1963e..ce6c4da94 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 @@ -3455,6 +3455,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 @@ -3464,6 +3467,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" } " 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 bea919af3..45bf87a1a 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 @@ -2290,12 +2290,21 @@ 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.orderer1.example.com-cert.pem" fi if [ "$2" = "my-channel2" ]; then - ca_cert="crypto-orderer/tlsca.orderer1.example.com-cert.pem" + ca_cert="crypto-orderer/tlsca.orderer2.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" } " 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 b17714cd7..89e483e1c 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 @@ -1627,9 +1627,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" } " diff --git a/e2e/__snapshots__/fabloCommands.test.ts.snap b/e2e/__snapshots__/fabloCommands.test.ts.snap index d6f843437..42a3e6d64 100644 --- a/e2e/__snapshots__/fabloCommands.test.ts.snap +++ b/e2e/__snapshots__/fabloCommands.test.ts.snap @@ -6,27 +6,27 @@ Validation warnings count: 0 =========================================================== { "global": { - "fabricVersion": "2.4.3", + "fabricVersion": "2.5.12", "tls": true, - "monitoring": { - "loglevel": "debug" - }, - "fabricToolsVersion": "2.4.3", + "fabricToolsVersion": "2.5.12", "fabricCaVersion": "1.5.5", - "fabricCcenvVersion": "2.4.3", - "fabricBaseosVersion": "2.4.3", - "fabricJavaenvVersion": "2.4", - "fabricNodeenvVersion": "2.4", + "fabricCcenvVersion": "2.5.12", + "fabricBaseosVersion": "2.5.12", + "fabricJavaenvVersion": "2.5", + "fabricNodeenvVersion": "2.5", "fabricRecommendedNodeVersion": "16", "engine": "docker", "paths": { "fabloConfig": "", "chaincodesBaseDir": "" }, + "monitoring": { + "loglevel": "info" + }, "capabilities": { "channel": "V2_0", "orderer": "V2_0", - "application": "V2_0", + "application": "V2_5", "isV2": true, "isV3": false }, @@ -419,8 +419,7 @@ Validation warnings count: 0 "logging": { "error": "console", "warn": "console", - "info": "console", - "debug": "console" + "info": "console" } } } @@ -604,8 +603,7 @@ Validation warnings count: 0 "logging": { "error": "console", "warn": "console", - "info": "console", - "debug": "console" + "info": "console" } } } @@ -852,8 +850,7 @@ Validation warnings count: 0 "logging": { "error": "console", "warn": "console", - "info": "console", - "debug": "console" + "info": "console" } } } @@ -949,8 +946,7 @@ Validation warnings count: 0 "logging": { "error": "console", "warn": "console", - "info": "console", - "debug": "console" + "info": "console" } } } @@ -1197,8 +1193,7 @@ Validation warnings count: 0 "logging": { "error": "console", "warn": "console", - "info": "console", - "debug": "console" + "info": "console" } } } @@ -1306,8 +1301,7 @@ Validation warnings count: 0 "logging": { "error": "console", "warn": "console", - "info": "console", - "debug": "console" + "info": "console" } } } @@ -1556,8 +1550,7 @@ Validation warnings count: 0 "logging": { "error": "console", "warn": "console", - "info": "console", - "debug": "console" + "info": "console" } } } @@ -1660,8 +1653,7 @@ Validation warnings count: 0 "logging": { "error": "console", "warn": "console", - "info": "console", - "debug": "console" + "info": "console" } } } @@ -1908,8 +1900,7 @@ Validation warnings count: 0 "logging": { "error": "console", "warn": "console", - "info": "console", - "debug": "console" + "info": "console" } } } @@ -2003,8 +1994,7 @@ Validation warnings count: 0 "logging": { "error": "console", "warn": "console", - "info": "console", - "debug": "console" + "info": "console" } } } @@ -2017,8 +2007,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", @@ -2027,6 +2017,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", @@ -2081,15 +2083,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": [], @@ -2106,8 +2108,7 @@ Validation warnings count: 0 "logging": { "error": "console", "warn": "console", - "info": "console", - "debug": "console" + "info": "console" } } } @@ -2119,6 +2120,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", @@ -2173,15 +2186,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": [], @@ -2189,84 +2202,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", @@ -2275,6 +2266,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", @@ -2329,15 +2332,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": [], @@ -2354,8 +2357,7 @@ Validation warnings count: 0 "logging": { "error": "console", "warn": "console", - "info": "console", - "debug": "console" + "info": "console" } } } @@ -2370,6 +2372,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", @@ -2424,15 +2438,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": [], @@ -2449,8 +2463,7 @@ Validation warnings count: 0 "logging": { "error": "console", "warn": "console", - "info": "console", - "debug": "console" + "info": "console" } } } From d2cf27ec5ede0fdb10a15a9ac39e6a91939a0c93 Mon Sep 17 00:00:00 2001 From: Pereowei Daniel Date: Fri, 10 Oct 2025 16:09:21 +0200 Subject: [PATCH 06/13] fix-update snapshots Signed-off-by: Pereowei Daniel --- samples/fablo-config-hlf2-2orgs-2chaincodes-raft.yaml | 2 -- 1 file changed, 2 deletions(-) diff --git a/samples/fablo-config-hlf2-2orgs-2chaincodes-raft.yaml b/samples/fablo-config-hlf2-2orgs-2chaincodes-raft.yaml index b32fd5c96..551a44188 100644 --- a/samples/fablo-config-hlf2-2orgs-2chaincodes-raft.yaml +++ b/samples/fablo-config-hlf2-2orgs-2chaincodes-raft.yaml @@ -3,8 +3,6 @@ global: fabricVersion: 2.5.12 tls: true - # monitoring: - # loglevel: debug orgs: - organization: name: Orderer1 From 6267cc9ed60647c8976010dcf780c4899bba5c3d Mon Sep 17 00:00:00 2001 From: Pereowei Daniel Date: Fri, 10 Oct 2025 16:32:47 +0200 Subject: [PATCH 07/13] fix-update snapshots Signed-off-by: Pereowei Daniel --- e2e/__snapshots__/extendConfig.test.ts.snap | 7 +- ...1chaincode-peer-dev-mode.json.test.ts.snap | 54 --- ...fig-hlf2-1org-1chaincode.json.test.ts.snap | 43 -- ...rg-2chaincode-raft-ccaas.json.test.ts.snap | 53 +-- ...2chaincodes-private-data.yaml.test.ts.snap | 48 -- ...2-2orgs-2chaincodes-raft.yaml.test.ts.snap | 434 ++---------------- ...1chaincode-raft-explorer.json.test.ts.snap | 89 ---- ...ig-hlf3-1orgs-1chaincode.json.test.ts.snap | 318 ++++++------- ...lf3-bft-1orgs-1chaincode.json.test.ts.snap | 53 --- e2e/__snapshots__/fabloCommands.test.ts.snap | 15 +- 10 files changed, 191 insertions(+), 923 deletions(-) diff --git a/e2e/__snapshots__/extendConfig.test.ts.snap b/e2e/__snapshots__/extendConfig.test.ts.snap index 0a6b1e249..b0a816fe5 100644 --- a/e2e/__snapshots__/extendConfig.test.ts.snap +++ b/e2e/__snapshots__/extendConfig.test.ts.snap @@ -5884,12 +5884,7 @@ exports[`extend config samples/fablo-config-hlf2-2orgs-2chaincodes-raft.yaml 1`] "fabloConfig": "", }, "tls": true, - "tools": { - "explorer": { - "address": "explorer.example.com", - "port": 7010, - }, - }, + "tools": {}, }, "hooks": { "postGenerate": "perl -i -pe 's/MaxMessageCount: 10/MaxMessageCount: 1/g' "./fablo-target/fabric-config/configtx.yaml"", diff --git a/e2e/__snapshots__/fablo-config-hlf2-1org-1chaincode-peer-dev-mode.json.test.ts.snap b/e2e/__snapshots__/fablo-config-hlf2-1org-1chaincode-peer-dev-mode.json.test.ts.snap index 928724eb1..e2f307269 100644 --- a/e2e/__snapshots__/fablo-config-hlf2-1org-1chaincode-peer-dev-mode.json.test.ts.snap +++ b/e2e/__snapshots__/fablo-config-hlf2-1org-1chaincode-peer-dev-mode.json.test.ts.snap @@ -1523,60 +1523,6 @@ chaincodeInvoke() { peerChaincodeInvoke "$cli" "$peer_addresses" "$2" "$3" "$4" "$5" } - -<<<<<<< HEAD:e2e/__snapshots__/fablo-config-hlf2-1org-1chaincode-raft-explorer.json.test.ts.snap - # 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" -======= -# Function to perform chaincode query for single peer -# Accepts 4-5 parameters: -# 1. single peer domain -# 2. channel name -# 3. chaincode name -# 4. chaincode command -# 5. transient data (optional) -chaincodeQuery() { - if [ "$#" -ne 4 ] && [ "$#" -ne 5 ]; then - echo "Expected 4 or 5 parameters for chaincode query, but got: $*" - echo "Usage: fablo chaincode query [transient]" - exit 1 - fi - - peer_domain="$1" - channel_name="$2" - chaincode_name="$3" - command="$4" - transient="$5" - - cli="" - peer_address="" - - if [ "$peer_domain" = "peer0.org1.example.com" ]; then - cli="cli.org1.example.com" - peer_address="peer0.org1.example.com:7041" - - fi - - if [ -z "$peer_address" ]; then - echo "Unknown peer: $peer_domain" - exit 1 - fi - - peerChaincodeQuery "$cli" "$peer_address" "$channel_name" "$chaincode_name" "$command" "$transient" - ->>>>>>> f55628b4d8d4eab339832c3d22bd1085f7c59329:e2e/__snapshots__/fablo-config-hlf2-1org-1chaincode-peer-dev-mode.json.test.ts.snap -} " `; diff --git a/e2e/__snapshots__/fablo-config-hlf2-1org-1chaincode.json.test.ts.snap b/e2e/__snapshots__/fablo-config-hlf2-1org-1chaincode.json.test.ts.snap index d4a297263..587e3399d 100644 --- a/e2e/__snapshots__/fablo-config-hlf2-1org-1chaincode.json.test.ts.snap +++ b/e2e/__snapshots__/fablo-config-hlf2-1org-1chaincode.json.test.ts.snap @@ -1550,49 +1550,6 @@ chaincodeInvoke() { peerChaincodeInvoke "$cli" "$peer_addresses" "$2" "$3" "$4" "$5" } - -# Function to perform chaincode query for single peer -# Accepts 4-5 parameters: -# 1. single peer domain -# 2. channel name -# 3. chaincode name -# 4. chaincode command -# 5. transient data (optional) -chaincodeQuery() { - if [ "$#" -ne 4 ] && [ "$#" -ne 5 ]; then - echo "Expected 4 or 5 parameters for chaincode query, but got: $*" - echo "Usage: fablo chaincode query [transient]" - exit 1 - fi - - peer_domain="$1" - channel_name="$2" - chaincode_name="$3" - command="$4" - transient="$5" - - cli="" - peer_address="" - - if [ "$peer_domain" = "peer0.org1.example.com" ]; then - cli="cli.org1.example.com" - peer_address="peer0.org1.example.com:7041" - - fi - if [ "$peer_domain" = "peer1.org1.example.com" ]; then - cli="cli.org1.example.com" - peer_address="peer1.org1.example.com:7042" - - fi - - if [ -z "$peer_address" ]; then - echo "Unknown peer: $peer_domain" - exit 1 - fi - - peerChaincodeQuery "$cli" "$peer_address" "$channel_name" "$chaincode_name" "$command" "$transient" - -} " `; 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 25dc83f2e..1692a9ab1 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 @@ -1593,63 +1593,22 @@ 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 - peerChaincodeInvokeTls "$cli" "$peer_addresses" "$2" "$3" "$4" "$5" "$peer_certs" "$ca_cert" -} -# Function to perform chaincode query for single peer -# Accepts 4-5 parameters: -# 1. single peer domain -# 2. channel name -# 3. chaincode name -# 4. chaincode command -# 5. transient data (optional) -chaincodeQuery() { - if [ "$#" -ne 4 ] && [ "$#" -ne 5 ]; then - echo "Expected 4 or 5 parameters for chaincode query, but got: $*" - echo "Usage: fablo chaincode query [transient]" + if [ -z "$ca_cert" ]; then + echo "Error: Channel '$2' not found or is not associated with an orderer group." exit 1 fi - peer_domain="$1" - channel_name="$2" - chaincode_name="$3" - command="$4" - transient="$5" - - cli="" - peer_address="" - - peer_cert="" - - if [ "$peer_domain" = "peer0.org1.example.com" ]; then - cli="cli.org1.example.com" - peer_address="peer0.org1.example.com:7041" - - peer_cert="crypto/peers/peer0.org1.example.com/tls/ca.crt" - - fi - - if [ -z "$peer_address" ]; then - echo "Unknown peer: $peer_domain" - exit 1 - fi - - if [ "$channel_name" = "my-channel1" ]; then - ca_cert="crypto-orderer/tlsca.orderer.example.com-cert.pem" - fi - - if [ "$channel_name" = "my-channel2" ]; then - ca_cert="crypto-orderer/tlsca.orderer.example.com-cert.pem" - fi - - peerChaincodeQueryTls "$cli" "$peer_address" "$channel_name" "$chaincode_name" "$command" "$transient" "$peer_cert" "$ca_cert" - + peerChaincodeInvokeTls "$cli" "$peer_addresses" "$2" "$3" "$4" "$5" "$peer_certs" "$ca_cert" } " `; diff --git a/e2e/__snapshots__/fablo-config-hlf2-2orgs-2chaincodes-private-data.yaml.test.ts.snap b/e2e/__snapshots__/fablo-config-hlf2-2orgs-2chaincodes-private-data.yaml.test.ts.snap index 947bd00e8..ab9be4c9a 100644 --- a/e2e/__snapshots__/fablo-config-hlf2-2orgs-2chaincodes-private-data.yaml.test.ts.snap +++ b/e2e/__snapshots__/fablo-config-hlf2-2orgs-2chaincodes-private-data.yaml.test.ts.snap @@ -2240,54 +2240,6 @@ chaincodeInvoke() { peerChaincodeInvoke "$cli" "$peer_addresses" "$2" "$3" "$4" "$5" } - -# Function to perform chaincode query for single peer -# Accepts 4-5 parameters: -# 1. single peer domain -# 2. channel name -# 3. chaincode name -# 4. chaincode command -# 5. transient data (optional) -chaincodeQuery() { - if [ "$#" -ne 4 ] && [ "$#" -ne 5 ]; then - echo "Expected 4 or 5 parameters for chaincode query, but got: $*" - echo "Usage: fablo chaincode query [transient]" - exit 1 - fi - - peer_domain="$1" - channel_name="$2" - chaincode_name="$3" - command="$4" - transient="$5" - - cli="" - peer_address="" - - if [ "$peer_domain" = "peer0.org1.example.com" ]; then - cli="cli.org1.example.com" - peer_address="peer0.org1.example.com:7041" - - fi - if [ "$peer_domain" = "peer1.org1.example.com" ]; then - cli="cli.org1.example.com" - peer_address="peer1.org1.example.com:7042" - - fi - if [ "$peer_domain" = "peer0.org2.example.com" ]; then - cli="cli.org2.example.com" - peer_address="peer0.org2.example.com:7061" - - fi - - if [ -z "$peer_address" ]; then - echo "Unknown peer: $peer_domain" - exit 1 - fi - - peerChaincodeQuery "$cli" "$peer_address" "$channel_name" "$chaincode_name" "$command" "$transient" - -} " `; 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 1bec816ca..5dcd16cfe 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 @@ -1249,164 +1249,6 @@ exports[`samples/fablo-config-hlf2-2orgs-2chaincodes-raft.yaml should create pro " `; -exports[`samples/fablo-config-hlf2-2orgs-2chaincodes-raft.yaml should create proper e2e/__tmp__/samples/fablo-config-hlf2-2orgs-2chaincodes-raft.yaml.tmpdir/fablo-target/fabric-config/explorer/config-org1.json from samples/fablo-config-hlf2-2orgs-2chaincodes-raft.yaml 1`] = ` -"{ - "network-configs": { - "network-org1": { - "name": "Network of Org1", - "profile": "/opt/explorer/app/platform/fabric/connection-profile/connection-profile-org1.json" - } - }, - "license": "Apache-2.0" -} -" -`; - -exports[`samples/fablo-config-hlf2-2orgs-2chaincodes-raft.yaml should create proper e2e/__tmp__/samples/fablo-config-hlf2-2orgs-2chaincodes-raft.yaml.tmpdir/fablo-target/fabric-config/explorer/config-org2.json from samples/fablo-config-hlf2-2orgs-2chaincodes-raft.yaml 1`] = ` -"{ - "network-configs": { - "network-org2": { - "name": "Network of Org2", - "profile": "/opt/explorer/app/platform/fabric/connection-profile/connection-profile-org2.json" - } - }, - "license": "Apache-2.0" -} -" -`; - -exports[`samples/fablo-config-hlf2-2orgs-2chaincodes-raft.yaml should create proper e2e/__tmp__/samples/fablo-config-hlf2-2orgs-2chaincodes-raft.yaml.tmpdir/fablo-target/fabric-config/explorer/connection-profile-org1.json from samples/fablo-config-hlf2-2orgs-2chaincodes-raft.yaml 1`] = ` -"{ - "name": "fablo-test-network-org1", - "description": "Connection profile for Hyperledger Explorer in Fablo network", - "version": "1.0.0", - "client": { - "organization": "Org1", - "tlsEnable": true, - "enableAuthentication": true, - "adminCredential": { - "id": "admin", - "password": "adminpw" - }, - "connection": { - "timeout": { - "peer": { - "endorser": "300" - }, - "orderer": "300" - } - } - }, - "organizations": { - "Org1": { - "mspid": "Org1MSP", - "adminPrivateKey": { - "path": "/tmp/crypto/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp/keystore/priv-key.pem" - }, - "peers": [ - "peer0.org1.example.com", - "peer1.org1.example.com" - ], - "signedCert": { - "path": "/tmp/crypto/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp/signcerts/Admin@org1.example.com-cert.pem" - } - } - }, - "peers": { - "peer0.org1.example.com": { - "url": "grpcs://peer0.org1.example.com:7061", - "tlsCACerts": { - "path": "/tmp/crypto/peerOrganizations/org1.example.com/msp/tlscacerts/tlsca.org1.example.com-cert.pem" - } - }, - "peer1.org1.example.com": { - "url": "grpcs://peer1.org1.example.com:7062", - "tlsCACerts": { - "path": "/tmp/crypto/peerOrganizations/org1.example.com/msp/tlscacerts/tlsca.org1.example.com-cert.pem" - } - } - }, - "channels": { - "my-channel1": { - "peers": {} - }, - "my-channel2": { - "peers": {} - }, - "my-channel3": { - "peers": {} - } - } -} -" -`; - -exports[`samples/fablo-config-hlf2-2orgs-2chaincodes-raft.yaml should create proper e2e/__tmp__/samples/fablo-config-hlf2-2orgs-2chaincodes-raft.yaml.tmpdir/fablo-target/fabric-config/explorer/connection-profile-org2.json from samples/fablo-config-hlf2-2orgs-2chaincodes-raft.yaml 1`] = ` -"{ - "name": "fablo-test-network-org2", - "description": "Connection profile for Hyperledger Explorer in Fablo network", - "version": "1.0.0", - "client": { - "organization": "Org2", - "tlsEnable": true, - "enableAuthentication": true, - "adminCredential": { - "id": "admin", - "password": "adminpw" - }, - "connection": { - "timeout": { - "peer": { - "endorser": "300" - }, - "orderer": "300" - } - } - }, - "organizations": { - "Org2": { - "mspid": "Org2MSP", - "adminPrivateKey": { - "path": "/tmp/crypto/peerOrganizations/org2.example.com/users/Admin@org2.example.com/msp/keystore/priv-key.pem" - }, - "peers": [ - "peer0.org2.example.com", - "peer1.org2.example.com" - ], - "signedCert": { - "path": "/tmp/crypto/peerOrganizations/org2.example.com/users/Admin@org2.example.com/msp/signcerts/Admin@org2.example.com-cert.pem" - } - } - }, - "peers": { - "peer0.org2.example.com": { - "url": "grpcs://peer0.org2.example.com:7081", - "tlsCACerts": { - "path": "/tmp/crypto/peerOrganizations/org2.example.com/msp/tlscacerts/tlsca.org2.example.com-cert.pem" - } - }, - "peer1.org2.example.com": { - "url": "grpcs://peer1.org2.example.com:7082", - "tlsCACerts": { - "path": "/tmp/crypto/peerOrganizations/org2.example.com/msp/tlscacerts/tlsca.org2.example.com-cert.pem" - } - } - }, - "channels": { - "my-channel1": { - "peers": {} - }, - "my-channel2": { - "peers": {} - }, - "my-channel3": { - "peers": {} - } - } -} -" -`; - exports[`samples/fablo-config-hlf2-2orgs-2chaincodes-raft.yaml should create proper e2e/__tmp__/samples/fablo-config-hlf2-2orgs-2chaincodes-raft.yaml.tmpdir/fablo-target/fabric-config/fabric-ca-server-config/orderer1.com/fabric-ca-server-config.yaml from samples/fablo-config-hlf2-2orgs-2chaincodes-raft.yaml 1`] = ` "############################################################################# # This is a configuration file for the fabric-ca-server command. @@ -3622,81 +3464,6 @@ chaincodeInvoke() { peerChaincodeInvokeTls "$cli" "$peer_addresses" "$2" "$3" "$4" "$5" "$peer_certs" "$ca_cert" } - -# Function to perform chaincode query for single peer -# Accepts 4-5 parameters: -# 1. single peer domain -# 2. channel name -# 3. chaincode name -# 4. chaincode command -# 5. transient data (optional) -chaincodeQuery() { - if [ "$#" -ne 4 ] && [ "$#" -ne 5 ]; then - echo "Expected 4 or 5 parameters for chaincode query, but got: $*" - echo "Usage: fablo chaincode query [transient]" - exit 1 - fi - - peer_domain="$1" - channel_name="$2" - chaincode_name="$3" - command="$4" - transient="$5" - - cli="" - peer_address="" - - peer_cert="" - - if [ "$peer_domain" = "peer0.org1.example.com" ]; then - cli="cli.org1.example.com" - peer_address="peer0.org1.example.com:7061" - - peer_cert="crypto/peers/peer0.org1.example.com/tls/ca.crt" - - fi - if [ "$peer_domain" = "peer1.org1.example.com" ]; then - cli="cli.org1.example.com" - peer_address="peer1.org1.example.com:7062" - - peer_cert="crypto/peers/peer1.org1.example.com/tls/ca.crt" - - fi - if [ "$peer_domain" = "peer0.org2.example.com" ]; then - cli="cli.org2.example.com" - peer_address="peer0.org2.example.com:7081" - - peer_cert="crypto/peers/peer0.org2.example.com/tls/ca.crt" - - fi - if [ "$peer_domain" = "peer1.org2.example.com" ]; then - cli="cli.org2.example.com" - peer_address="peer1.org2.example.com:7082" - - peer_cert="crypto/peers/peer1.org2.example.com/tls/ca.crt" - - fi - - if [ -z "$peer_address" ]; then - echo "Unknown peer: $peer_domain" - exit 1 - fi - - if [ "$channel_name" = "my-channel1" ]; then - ca_cert="crypto-orderer/tlsca.orderer1.com-cert.pem" - fi - - if [ "$channel_name" = "my-channel2" ]; then - ca_cert="crypto-orderer/tlsca.orderer1.com-cert.pem" - fi - - if [ "$channel_name" = "my-channel3" ]; then - ca_cert="crypto-orderer/tlsca.orderer1.com-cert.pem" - fi - - peerChaincodeQueryTls "$cli" "$peer_address" "$channel_name" "$chaincode_name" "$command" "$transient" "$peer_cert" "$ca_cert" - -} " `; @@ -4048,8 +3815,6 @@ installChannels() { printItalics "Joining 'my-channel3' on Org2/peer1" "U1F638" docker exec -i cli.org2.example.com bash -c "source scripts/channel_fns.sh; fetchChannelAndJoinTls 'my-channel3' 'Org2MSP' 'peer1.org2.example.com:7082' 'crypto/users/Admin@org2.example.com/msp' 'crypto/users/Admin@org2.example.com/tls' 'crypto-orderer/tlsca.orderer2.com-cert.pem' 'orderer0.group2.orderer2.com:7050';" - echo "Restarting global Explorer: explorer.example.com" - docker restart explorer.example.com || true } installChaincodes() { @@ -4074,28 +3839,17 @@ installChaincodes() { local version="0.0.1" printHeadline "Packaging chaincode 'chaincode2'" "U1F60E" chaincodeBuild "chaincode2" "java" "$CHAINCODES_BASE_DIR/./chaincodes/chaincode-java-simple" "16" -<<<<<<< HEAD - chaincodePackage "cli.org1.example.com" "peer0.org1.example.com:7061" "chaincode2" "$version" "java" printHeadline "Installing 'chaincode2' for Org1" "U1F60E" - chaincodeInstall "cli.org1.example.com" "peer0.org1.example.com:7061" "chaincode2" "$version" "crypto-orderer/tlsca.orderer2.com-cert.pem" - chaincodeInstall "cli.org1.example.com" "peer1.org1.example.com:7062" "chaincode2" "$version" "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" "" + 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" "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" "peer0.org2.example.com:7081" "chaincode2" "$version" "crypto-orderer/tlsca.orderer2.com-cert.pem" - chaincodeInstall "cli.org2.example.com" "peer1.org2.example.com:7082" "chaincode2" "$version" "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" "" + 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" "" -======= - chaincodePackage "cli.org1.example.com" "peer1.org1.example.com:7062" "chaincode2" "$version" "java" "my-channel2" - 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" "" - 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" "" ->>>>>>> f55628b4d8d4eab339832c3d22bd1085f7c59329 else echo "Warning! Skipping chaincode 'chaincode2' installation. Chaincode directory is empty." echo "Looked in dir: '$CHAINCODES_BASE_DIR/./chaincodes/chaincode-java-simple'" @@ -4139,28 +3893,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" -<<<<<<< HEAD - chaincodePackage "cli.org1.example.com" "peer0.org1.example.com:7061" "chaincode2" "$version" "java" printHeadline "Installing 'chaincode2' for Org1" "U1F60E" - chaincodeInstall "cli.org1.example.com" "peer0.org1.example.com:7061" "chaincode2" "$version" "crypto-orderer/tlsca.orderer2.com-cert.pem" - chaincodeInstall "cli.org1.example.com" "peer1.org1.example.com:7062" "chaincode2" "$version" "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" "" + 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" "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" "peer0.org2.example.com:7081" "chaincode2" "$version" "crypto-orderer/tlsca.orderer2.com-cert.pem" - chaincodeInstall "cli.org2.example.com" "peer1.org2.example.com:7082" "chaincode2" "$version" "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" "" + 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" "" -======= - chaincodePackage "cli.org1.example.com" "peer1.org1.example.com:7062" "chaincode2" "$version" "java" "my-channel2" - 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" "" - 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" "" ->>>>>>> f55628b4d8d4eab339832c3d22bd1085f7c59329 else echo "Warning! Skipping chaincode 'chaincode2' install. Chaincode directory is empty." @@ -4189,19 +3932,11 @@ runDevModeChaincode() { if [ "$chaincodeName" = "chaincode2" ]; then local version="0.0.1" printHeadline "Approving 'chaincode2' for Org1 (dev mode)" "U1F60E" -<<<<<<< HEAD - 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" "" "" + 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" "peer0.org2.example.com:7081" "my-channel3" "chaincode2" "0.0.1" "orderer0.group2.orderer2.com:7050" "OR ('Org1MSP.member', 'Org2MSP.member')" "false" "" "" + 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" "" "" -======= - 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" "" "" "" "" - 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" "" "" ->>>>>>> f55628b4d8d4eab339832c3d22bd1085f7c59329 fi } @@ -4242,28 +3977,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" -<<<<<<< HEAD - chaincodePackage "cli.org1.example.com" "peer0.org1.example.com:7061" "chaincode2" "$version" "java" printHeadline "Installing 'chaincode2' for Org1" "U1F60E" - chaincodeInstall "cli.org1.example.com" "peer0.org1.example.com:7061" "chaincode2" "$version" "crypto-orderer/tlsca.orderer2.com-cert.pem" - chaincodeInstall "cli.org1.example.com" "peer1.org1.example.com:7062" "chaincode2" "$version" "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" "" + 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" "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" "peer0.org2.example.com:7081" "chaincode2" "$version" "crypto-orderer/tlsca.orderer2.com-cert.pem" - chaincodeInstall "cli.org2.example.com" "peer1.org2.example.com:7082" "chaincode2" "$version" "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" "" + 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" "" -======= - chaincodePackage "cli.org1.example.com" "peer1.org1.example.com:7062" "chaincode2" "$version" "java" "my-channel2" - 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" "" - 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" "" ->>>>>>> f55628b4d8d4eab339832c3d22bd1085f7c59329 else echo "Warning! Skipping chaincode 'chaincode2' upgrade. Chaincode directory is empty." @@ -4328,79 +4052,42 @@ 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 "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" - done - for image in $(docker images "peer1.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.org2.example.com-chaincode2" | awk '{print $1}'); do + 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 "peer1.org2.example.com-chaincode2*" -q); do + 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 - - printHeadline "Destroying network" "U1F916" - (cd "$FABLO_NETWORK_ROOT"/fabric-docker && docker compose down) - -<<<<<<< HEAD - printf "Removing chaincode containers & images... \\U1F5D1 \\n" - for container in $(docker ps -a | grep "dev-peer0.org1.example.com-chaincode1" | 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 "dev-peer0.org1.example.com-chaincode1*" -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 "dev-peer0.org2.example.com-chaincode1" | 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 "dev-peer0.org2.example.com-chaincode1*" -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 "dev-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 "dev-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 "dev-peer1.org1.example.com-chaincode2" | awk '{print $1}'); do + 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" done - for image in $(docker images "dev-peer1.org1.example.com-chaincode2*" -q); do + for image in $(docker images "peer1.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 "dev-peer0.org2.example.com-chaincode2" | awk '{print $1}'); do + 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 "dev-peer0.org2.example.com-chaincode2*" -q); do + 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 "dev-peer1.org2.example.com-chaincode2" | awk '{print $1}'); do + 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" done - for image in $(docker images "dev-peer1.org2.example.com-chaincode2*" -q); do + for image in $(docker images "peer1.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 -======= ->>>>>>> f55628b4d8d4eab339832c3d22bd1085f7c59329 + printHeadline "Destroying network" "U1F916" + (cd "$FABLO_NETWORK_ROOT"/fabric-docker && docker compose down) + printf "Removing generated configs... \\U1F5D1 \\n" rm -rf "$FABLO_NETWORK_ROOT/fabric-config/config" rm -rf "$FABLO_NETWORK_ROOT/fabric-config/crypto-config" @@ -5021,49 +4708,6 @@ services: - ../fabric-config/config:/etc/hyperledger/fabric/config networks: - basic - - db.explorer.example.com: - image: ghcr.io/hyperledger-labs/explorer-db:\${HYPERLEDGER_EXPLORER_VERSION} - container_name: db.explorer.example.com - environment: - - DATABASE_DATABASE=fabricexplorer - - DATABASE_USERNAME=hppoc - - DATABASE_PASSWORD=password - healthcheck: - test: "pg_isready -h localhost -p 5432 -q -U hppoc -d fabricexplorer" - interval: 5s - timeout: 10s - retries: 7 - volumes: - - /var/lib/postgresql/data - networks: - - basic - - explorer.example.com: - image: ghcr.io/hyperledger-labs/explorer:\${HYPERLEDGER_EXPLORER_VERSION} - restart: on-failure:8 - container_name: explorer.example.com - environment: - - DATABASE_HOST=db.explorer.example.com - - DATABASE_DATABASE=fabricexplorer - - DATABASE_USERNAME=hppoc - - DATABASE_PASSWD=password - - LOG_LEVEL_APP=debug - - LOG_LEVEL_DB=debug - - LOG_LEVEL_CONSOLE=info - - LOG_CONSOLE_STDOUT=true - - DISCOVERY_AS_LOCALHOST=false - volumes: - - ../fabric-config/explorer/config-global.json:/opt/explorer/app/platform/fabric/config.json - - ../fabric-config/explorer:/opt/explorer/app/platform/fabric/connection-profile - - ../fabric-config/crypto-config:/tmp/crypto - ports: - - "7010:8080" - depends_on: - db.explorer.example.com: - condition: service_healthy - networks: - - basic " `; @@ -6558,10 +6202,6 @@ exports[`samples/fablo-config-hlf2-2orgs-2chaincodes-raft.yaml should create pro "e2e/__tmp__/samples/fablo-config-hlf2-2orgs-2chaincodes-raft.yaml.tmpdir/fablo-target/fabric-config/crypto-config-org1.yaml", "e2e/__tmp__/samples/fablo-config-hlf2-2orgs-2chaincodes-raft.yaml.tmpdir/fablo-target/fabric-config/crypto-config-org2.yaml", "e2e/__tmp__/samples/fablo-config-hlf2-2orgs-2chaincodes-raft.yaml.tmpdir/fablo-target/fabric-config/explorer/config-global.json", - "e2e/__tmp__/samples/fablo-config-hlf2-2orgs-2chaincodes-raft.yaml.tmpdir/fablo-target/fabric-config/explorer/config-org1.json", - "e2e/__tmp__/samples/fablo-config-hlf2-2orgs-2chaincodes-raft.yaml.tmpdir/fablo-target/fabric-config/explorer/config-org2.json", - "e2e/__tmp__/samples/fablo-config-hlf2-2orgs-2chaincodes-raft.yaml.tmpdir/fablo-target/fabric-config/explorer/connection-profile-org1.json", - "e2e/__tmp__/samples/fablo-config-hlf2-2orgs-2chaincodes-raft.yaml.tmpdir/fablo-target/fabric-config/explorer/connection-profile-org2.json", "e2e/__tmp__/samples/fablo-config-hlf2-2orgs-2chaincodes-raft.yaml.tmpdir/fablo-target/fabric-config/fabric-ca-server-config/orderer1.com/fabric-ca-server-config.yaml", "e2e/__tmp__/samples/fablo-config-hlf2-2orgs-2chaincodes-raft.yaml.tmpdir/fablo-target/fabric-config/fabric-ca-server-config/orderer2.com/fabric-ca-server-config.yaml", "e2e/__tmp__/samples/fablo-config-hlf2-2orgs-2chaincodes-raft.yaml.tmpdir/fablo-target/fabric-config/fabric-ca-server-config/org1.example.com/fabric-ca-server-config.yaml", 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 7e9fbcff5..ddfb5832d 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 @@ -4027,95 +4027,6 @@ chaincodeInvoke() { peerChaincodeInvokeTls "$cli" "$peer_addresses" "$2" "$3" "$4" "$5" "$peer_certs" "$ca_cert" } - -# Function to perform chaincode query for single peer -# Accepts 4-5 parameters: -# 1. single peer domain -# 2. channel name -# 3. chaincode name -# 4. chaincode command -# 5. transient data (optional) -chaincodeQuery() { - if [ "$#" -ne 4 ] && [ "$#" -ne 5 ]; then - echo "Expected 4 or 5 parameters for chaincode query, but got: $*" - echo "Usage: fablo chaincode query [transient]" - exit 1 - fi - - peer_domain="$1" - channel_name="$2" - chaincode_name="$3" - command="$4" - transient="$5" - - cli="" - peer_address="" - - peer_cert="" - - if [ "$peer_domain" = "peer0.org1.example.com" ]; then - cli="cli.org1.example.com" - peer_address="peer0.org1.example.com:7041" - - peer_cert="crypto/peers/peer0.org1.example.com/tls/ca.crt" - - fi - if [ "$peer_domain" = "peer1.org1.example.com" ]; then - cli="cli.org1.example.com" - peer_address="peer1.org1.example.com:7042" - - peer_cert="crypto/peers/peer1.org1.example.com/tls/ca.crt" - - fi - if [ "$peer_domain" = "peer0.org2.example.com" ]; then - cli="cli.org2.example.com" - peer_address="peer0.org2.example.com:7061" - - peer_cert="crypto/peers/peer0.org2.example.com/tls/ca.crt" - - fi - if [ "$peer_domain" = "peer1.org2.example.com" ]; then - cli="cli.org2.example.com" - peer_address="peer1.org2.example.com:7062" - - peer_cert="crypto/peers/peer1.org2.example.com/tls/ca.crt" - - fi - if [ "$peer_domain" = "peer0.org3.example.com" ]; then - cli="cli.org3.example.com" - peer_address="peer0.org3.example.com:7081" - - peer_cert="crypto/peers/peer0.org3.example.com/tls/ca.crt" - - fi - if [ "$peer_domain" = "peer1.org3.example.com" ]; then - cli="cli.org3.example.com" - peer_address="peer1.org3.example.com:7082" - - peer_cert="crypto/peers/peer1.org3.example.com/tls/ca.crt" - - fi - - if [ -z "$peer_address" ]; then - echo "Unknown peer: $peer_domain" - exit 1 - fi - - if [ "$channel_name" = "my-channel1" ]; then - ca_cert="crypto-orderer/tlsca.orderer.example.com-cert.pem" - fi - - if [ "$channel_name" = "my-channel2" ]; then - ca_cert="crypto-orderer/tlsca.orderer.example.com-cert.pem" - fi - - if [ "$channel_name" = "my-channel3" ]; then - ca_cert="crypto-orderer/tlsca.orderer.example.com-cert.pem" - 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 ed37643d5..19232fa75 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 @@ -322,57 +322,50 @@ exports[`samples/fablo-config-hlf3-1orgs-1chaincode.json should create proper e2 "certificateAuthorities": { "ca.orderer1.example.com": { "url": "https://localhost:7020", -<<<<<<< HEAD "caName": "ca.orderer1.example.com", - "tlsCACerts": { - "path": "/samples/fablo-target/fabric-config/crypto-config/peerOrganizations/orderer1.example.com/ca/ca.orderer1.example.com-cert.pem" - }, -======= - "caName": "ca.orderer.example.com", ->>>>>>> f55628b4d8d4eab339832c3d22bd1085f7c59329 "httpOptions": { "verify": false }, "tlsCACerts": { - "path": "/samples/fablo-target/fabric-config/crypto-config/peerOrganizations/orderer.example.com/ca/ca.orderer.example.com-cert.pem" + "path": "/samples/fablo-target/fabric-config/crypto-config/peerOrganizations/orderer1.example.com/ca/ca.orderer1.example.com-cert.pem" } } }, "orderers": { - "orderer0.group1.orderer.example.com": { + "orderer0.group1.orderer1.example.com": { "url": "grpcs://localhost:7030", "tlsCACerts": { - "path": "/samples/fablo-target/fabric-config/crypto-config/ordererOrganizations/orderer.example.com/orderers/orderer0.group1.orderer.example.com/tls/ca.crt" + "path": "/samples/fablo-target/fabric-config/crypto-config/ordererOrganizations/orderer1.example.com/orderers/orderer0.group1.orderer1.example.com/tls/ca.crt" }, "grpcOptions": { - "ssl-target-name-override": "orderer0.group1.orderer.example.com" + "ssl-target-name-override": "orderer0.group1.orderer1.example.com" } }, - "orderer1.group1.orderer.example.com": { + "orderer1.group1.orderer1.example.com": { "url": "grpcs://localhost:7031", "tlsCACerts": { - "path": "/samples/fablo-target/fabric-config/crypto-config/ordererOrganizations/orderer.example.com/orderers/orderer1.group1.orderer.example.com/tls/ca.crt" + "path": "/samples/fablo-target/fabric-config/crypto-config/ordererOrganizations/orderer1.example.com/orderers/orderer1.group1.orderer1.example.com/tls/ca.crt" }, "grpcOptions": { - "ssl-target-name-override": "orderer1.group1.orderer.example.com" + "ssl-target-name-override": "orderer1.group1.orderer1.example.com" } }, - "orderer2.group1.orderer.example.com": { + "orderer2.group1.orderer1.example.com": { "url": "grpcs://localhost:7032", "tlsCACerts": { - "path": "/samples/fablo-target/fabric-config/crypto-config/ordererOrganizations/orderer.example.com/orderers/orderer2.group1.orderer.example.com/tls/ca.crt" + "path": "/samples/fablo-target/fabric-config/crypto-config/ordererOrganizations/orderer1.example.com/orderers/orderer2.group1.orderer1.example.com/tls/ca.crt" }, "grpcOptions": { - "ssl-target-name-override": "orderer2.group1.orderer.example.com" + "ssl-target-name-override": "orderer2.group1.orderer1.example.com" } }, - "orderer3.group1.orderer.example.com": { - "url": "grpcs://localhost:7033", + "orderer0.group2.orderer2.example.com": { + "url": "grpcs://localhost:7050", "tlsCACerts": { - "path": "/samples/fablo-target/fabric-config/crypto-config/ordererOrganizations/orderer.example.com/orderers/orderer3.group1.orderer.example.com/tls/ca.crt" + "path": "/samples/fablo-target/fabric-config/crypto-config/ordererOrganizations/orderer2.example.com/orderers/orderer0.group2.orderer2.example.com/tls/ca.crt" }, "grpcOptions": { - "ssl-target-name-override": "orderer3.group1.orderer.example.com" + "ssl-target-name-override": "orderer0.group2.orderer2.example.com" } } } @@ -412,13 +405,41 @@ peers: certificateAuthorities: ca.orderer1.example.com: url: https://localhost:7020 -<<<<<<< HEAD caName: ca.orderer1.example.com + httpOptions: + verify: false tlsCACerts: path: >- /samples/fablo-target/fabric-config/crypto-config/peerOrganizations/orderer1.example.com/ca/ca.orderer1.example.com-cert.pem - httpOptions: - verify: false +orderers: + orderer0.group1.orderer1.example.com: + url: grpcs://localhost:7030 + tlsCACerts: + path: >- + /samples/fablo-target/fabric-config/crypto-config/ordererOrganizations/orderer1.example.com/orderers/orderer0.group1.orderer1.example.com/tls/ca.crt + grpcOptions: + ssl-target-name-override: orderer0.group1.orderer1.example.com + orderer1.group1.orderer1.example.com: + url: grpcs://localhost:7031 + tlsCACerts: + path: >- + /samples/fablo-target/fabric-config/crypto-config/ordererOrganizations/orderer1.example.com/orderers/orderer1.group1.orderer1.example.com/tls/ca.crt + grpcOptions: + ssl-target-name-override: orderer1.group1.orderer1.example.com + orderer2.group1.orderer1.example.com: + url: grpcs://localhost:7032 + tlsCACerts: + path: >- + /samples/fablo-target/fabric-config/crypto-config/ordererOrganizations/orderer1.example.com/orderers/orderer2.group1.orderer1.example.com/tls/ca.crt + grpcOptions: + ssl-target-name-override: orderer2.group1.orderer1.example.com + orderer0.group2.orderer2.example.com: + url: grpcs://localhost:7050 + tlsCACerts: + path: >- + /samples/fablo-target/fabric-config/crypto-config/ordererOrganizations/orderer2.example.com/orderers/orderer0.group2.orderer2.example.com/tls/ca.crt + grpcOptions: + ssl-target-name-override: orderer0.group2.orderer2.example.com " `; @@ -466,11 +487,49 @@ exports[`samples/fablo-config-hlf3-1orgs-1chaincode.json should create proper e2 "ca.orderer2.example.com": { "url": "https://localhost:7040", "caName": "ca.orderer2.example.com", + "httpOptions": { + "verify": false + }, "tlsCACerts": { "path": "/samples/fablo-target/fabric-config/crypto-config/peerOrganizations/orderer2.example.com/ca/ca.orderer2.example.com-cert.pem" + } + } + }, + "orderers": { + "orderer0.group1.orderer1.example.com": { + "url": "grpcs://localhost:7030", + "tlsCACerts": { + "path": "/samples/fablo-target/fabric-config/crypto-config/ordererOrganizations/orderer1.example.com/orderers/orderer0.group1.orderer1.example.com/tls/ca.crt" }, - "httpOptions": { - "verify": false + "grpcOptions": { + "ssl-target-name-override": "orderer0.group1.orderer1.example.com" + } + }, + "orderer1.group1.orderer1.example.com": { + "url": "grpcs://localhost:7031", + "tlsCACerts": { + "path": "/samples/fablo-target/fabric-config/crypto-config/ordererOrganizations/orderer1.example.com/orderers/orderer1.group1.orderer1.example.com/tls/ca.crt" + }, + "grpcOptions": { + "ssl-target-name-override": "orderer1.group1.orderer1.example.com" + } + }, + "orderer2.group1.orderer1.example.com": { + "url": "grpcs://localhost:7032", + "tlsCACerts": { + "path": "/samples/fablo-target/fabric-config/crypto-config/ordererOrganizations/orderer1.example.com/orderers/orderer2.group1.orderer1.example.com/tls/ca.crt" + }, + "grpcOptions": { + "ssl-target-name-override": "orderer2.group1.orderer1.example.com" + } + }, + "orderer0.group2.orderer2.example.com": { + "url": "grpcs://localhost:7050", + "tlsCACerts": { + "path": "/samples/fablo-target/fabric-config/crypto-config/ordererOrganizations/orderer2.example.com/orderers/orderer0.group2.orderer2.example.com/tls/ca.crt" + }, + "grpcOptions": { + "ssl-target-name-override": "orderer0.group2.orderer2.example.com" } } } @@ -511,48 +570,40 @@ certificateAuthorities: ca.orderer2.example.com: url: https://localhost:7040 caName: ca.orderer2.example.com - tlsCACerts: - path: >- - /samples/fablo-target/fabric-config/crypto-config/peerOrganizations/orderer2.example.com/ca/ca.orderer2.example.com-cert.pem - httpOptions: - verify: false -======= - caName: ca.orderer.example.com httpOptions: verify: false tlsCACerts: path: >- - /samples/fablo-target/fabric-config/crypto-config/peerOrganizations/orderer.example.com/ca/ca.orderer.example.com-cert.pem + /samples/fablo-target/fabric-config/crypto-config/peerOrganizations/orderer2.example.com/ca/ca.orderer2.example.com-cert.pem orderers: - orderer0.group1.orderer.example.com: + orderer0.group1.orderer1.example.com: url: grpcs://localhost:7030 tlsCACerts: path: >- - /samples/fablo-target/fabric-config/crypto-config/ordererOrganizations/orderer.example.com/orderers/orderer0.group1.orderer.example.com/tls/ca.crt + /samples/fablo-target/fabric-config/crypto-config/ordererOrganizations/orderer1.example.com/orderers/orderer0.group1.orderer1.example.com/tls/ca.crt grpcOptions: - ssl-target-name-override: orderer0.group1.orderer.example.com - orderer1.group1.orderer.example.com: + ssl-target-name-override: orderer0.group1.orderer1.example.com + orderer1.group1.orderer1.example.com: url: grpcs://localhost:7031 tlsCACerts: path: >- - /samples/fablo-target/fabric-config/crypto-config/ordererOrganizations/orderer.example.com/orderers/orderer1.group1.orderer.example.com/tls/ca.crt + /samples/fablo-target/fabric-config/crypto-config/ordererOrganizations/orderer1.example.com/orderers/orderer1.group1.orderer1.example.com/tls/ca.crt grpcOptions: - ssl-target-name-override: orderer1.group1.orderer.example.com - orderer2.group1.orderer.example.com: + ssl-target-name-override: orderer1.group1.orderer1.example.com + orderer2.group1.orderer1.example.com: url: grpcs://localhost:7032 tlsCACerts: path: >- - /samples/fablo-target/fabric-config/crypto-config/ordererOrganizations/orderer.example.com/orderers/orderer2.group1.orderer.example.com/tls/ca.crt + /samples/fablo-target/fabric-config/crypto-config/ordererOrganizations/orderer1.example.com/orderers/orderer2.group1.orderer1.example.com/tls/ca.crt grpcOptions: - ssl-target-name-override: orderer2.group1.orderer.example.com - orderer3.group1.orderer.example.com: - url: grpcs://localhost:7033 + ssl-target-name-override: orderer2.group1.orderer1.example.com + orderer0.group2.orderer2.example.com: + url: grpcs://localhost:7050 tlsCACerts: path: >- - /samples/fablo-target/fabric-config/crypto-config/ordererOrganizations/orderer.example.com/orderers/orderer3.group1.orderer.example.com/tls/ca.crt + /samples/fablo-target/fabric-config/crypto-config/ordererOrganizations/orderer2.example.com/orderers/orderer0.group2.orderer2.example.com/tls/ca.crt grpcOptions: - ssl-target-name-override: orderer3.group1.orderer.example.com ->>>>>>> f55628b4d8d4eab339832c3d22bd1085f7c59329 + ssl-target-name-override: orderer0.group2.orderer2.example.com " `; @@ -609,46 +660,49 @@ exports[`samples/fablo-config-hlf3-1orgs-1chaincode.json should create proper e2 } }, "orderers": { - "orderer0.group1.orderer.example.com": { + "orderer0.group1.orderer1.example.com": { "url": "grpcs://localhost:7030", "tlsCACerts": { - "path": "/samples/fablo-target/fabric-config/crypto-config/ordererOrganizations/orderer.example.com/orderers/orderer0.group1.orderer.example.com/tls/ca.crt" + "path": "/samples/fablo-target/fabric-config/crypto-config/ordererOrganizations/orderer1.example.com/orderers/orderer0.group1.orderer1.example.com/tls/ca.crt" }, "grpcOptions": { - "ssl-target-name-override": "orderer0.group1.orderer.example.com" + "ssl-target-name-override": "orderer0.group1.orderer1.example.com" } }, - "orderer1.group1.orderer.example.com": { + "orderer1.group1.orderer1.example.com": { "url": "grpcs://localhost:7031", "tlsCACerts": { - "path": "/samples/fablo-target/fabric-config/crypto-config/ordererOrganizations/orderer.example.com/orderers/orderer1.group1.orderer.example.com/tls/ca.crt" + "path": "/samples/fablo-target/fabric-config/crypto-config/ordererOrganizations/orderer1.example.com/orderers/orderer1.group1.orderer1.example.com/tls/ca.crt" }, "grpcOptions": { - "ssl-target-name-override": "orderer1.group1.orderer.example.com" + "ssl-target-name-override": "orderer1.group1.orderer1.example.com" } }, - "orderer2.group1.orderer.example.com": { + "orderer2.group1.orderer1.example.com": { "url": "grpcs://localhost:7032", "tlsCACerts": { - "path": "/samples/fablo-target/fabric-config/crypto-config/ordererOrganizations/orderer.example.com/orderers/orderer2.group1.orderer.example.com/tls/ca.crt" + "path": "/samples/fablo-target/fabric-config/crypto-config/ordererOrganizations/orderer1.example.com/orderers/orderer2.group1.orderer1.example.com/tls/ca.crt" }, "grpcOptions": { - "ssl-target-name-override": "orderer2.group1.orderer.example.com" + "ssl-target-name-override": "orderer2.group1.orderer1.example.com" } }, - "orderer3.group1.orderer.example.com": { - "url": "grpcs://localhost:7033", + "orderer0.group2.orderer2.example.com": { + "url": "grpcs://localhost:7050", "tlsCACerts": { - "path": "/samples/fablo-target/fabric-config/crypto-config/ordererOrganizations/orderer.example.com/orderers/orderer3.group1.orderer.example.com/tls/ca.crt" + "path": "/samples/fablo-target/fabric-config/crypto-config/ordererOrganizations/orderer2.example.com/orderers/orderer0.group2.orderer2.example.com/tls/ca.crt" }, "grpcOptions": { - "ssl-target-name-override": "orderer3.group1.orderer.example.com" + "ssl-target-name-override": "orderer0.group2.orderer2.example.com" } } }, "channels": { "my-channel1": { "peers": {} + }, + "my-channel2": { + "peers": {} } } } @@ -694,37 +748,39 @@ certificateAuthorities: path: >- /samples/fablo-target/fabric-config/crypto-config/peerOrganizations/org1.example.com/ca/ca.org1.example.com-cert.pem orderers: - orderer0.group1.orderer.example.com: + orderer0.group1.orderer1.example.com: url: grpcs://localhost:7030 tlsCACerts: path: >- - /samples/fablo-target/fabric-config/crypto-config/ordererOrganizations/orderer.example.com/orderers/orderer0.group1.orderer.example.com/tls/ca.crt + /samples/fablo-target/fabric-config/crypto-config/ordererOrganizations/orderer1.example.com/orderers/orderer0.group1.orderer1.example.com/tls/ca.crt grpcOptions: - ssl-target-name-override: orderer0.group1.orderer.example.com - orderer1.group1.orderer.example.com: + ssl-target-name-override: orderer0.group1.orderer1.example.com + orderer1.group1.orderer1.example.com: url: grpcs://localhost:7031 tlsCACerts: path: >- - /samples/fablo-target/fabric-config/crypto-config/ordererOrganizations/orderer.example.com/orderers/orderer1.group1.orderer.example.com/tls/ca.crt + /samples/fablo-target/fabric-config/crypto-config/ordererOrganizations/orderer1.example.com/orderers/orderer1.group1.orderer1.example.com/tls/ca.crt grpcOptions: - ssl-target-name-override: orderer1.group1.orderer.example.com - orderer2.group1.orderer.example.com: + ssl-target-name-override: orderer1.group1.orderer1.example.com + orderer2.group1.orderer1.example.com: url: grpcs://localhost:7032 tlsCACerts: path: >- - /samples/fablo-target/fabric-config/crypto-config/ordererOrganizations/orderer.example.com/orderers/orderer2.group1.orderer.example.com/tls/ca.crt + /samples/fablo-target/fabric-config/crypto-config/ordererOrganizations/orderer1.example.com/orderers/orderer2.group1.orderer1.example.com/tls/ca.crt grpcOptions: - ssl-target-name-override: orderer2.group1.orderer.example.com - orderer3.group1.orderer.example.com: - url: grpcs://localhost:7033 + ssl-target-name-override: orderer2.group1.orderer1.example.com + orderer0.group2.orderer2.example.com: + url: grpcs://localhost:7050 tlsCACerts: path: >- - /samples/fablo-target/fabric-config/crypto-config/ordererOrganizations/orderer.example.com/orderers/orderer3.group1.orderer.example.com/tls/ca.crt + /samples/fablo-target/fabric-config/crypto-config/ordererOrganizations/orderer2.example.com/orderers/orderer0.group2.orderer2.example.com/tls/ca.crt grpcOptions: - ssl-target-name-override: orderer3.group1.orderer.example.com + ssl-target-name-override: orderer0.group2.orderer2.example.com channels: my-channel1: peers: {} + my-channel2: + peers: {} " `; @@ -2467,59 +2523,6 @@ chaincodeInvoke() { peerChaincodeInvokeTls "$cli" "$peer_addresses" "$2" "$3" "$4" "$5" "$peer_certs" "$ca_cert" } - -# Function to perform chaincode query for single peer -# Accepts 4-5 parameters: -# 1. single peer domain -# 2. channel name -# 3. chaincode name -# 4. chaincode command -# 5. transient data (optional) -chaincodeQuery() { - if [ "$#" -ne 4 ] && [ "$#" -ne 5 ]; then - echo "Expected 4 or 5 parameters for chaincode query, but got: $*" - echo "Usage: fablo chaincode query [transient]" - exit 1 - fi - - peer_domain="$1" - channel_name="$2" - chaincode_name="$3" - command="$4" - transient="$5" - - cli="" - peer_address="" - - peer_cert="" - - if [ "$peer_domain" = "peer0.org1.example.com" ]; then - cli="cli.org1.example.com" - peer_address="peer0.org1.example.com:7041" - - peer_cert="crypto/peers/peer0.org1.example.com/tls/ca.crt" - - fi - if [ "$peer_domain" = "peer1.org1.example.com" ]; then - cli="cli.org1.example.com" - peer_address="peer1.org1.example.com:7042" - - peer_cert="crypto/peers/peer1.org1.example.com/tls/ca.crt" - - fi - - if [ -z "$peer_address" ]; then - echo "Unknown peer: $peer_domain" - exit 1 - fi - - if [ "$channel_name" = "my-channel1" ]; then - ca_cert="crypto-orderer/tlsca.orderer.example.com-cert.pem" - fi - - peerChaincodeQueryTls "$cli" "$peer_address" "$channel_name" "$chaincode_name" "$command" "$transient" "$peer_cert" "$ca_cert" - -} " `; @@ -2693,15 +2696,11 @@ installChannels() { docker exec -i cli.org1.example.com bash -c "source scripts/channel_fns.sh; fetchChannelAndJoinTls 'my-channel1' 'Org1MSP' 'peer0.org1.example.com:7061' 'crypto/users/Admin@org1.example.com/msp' 'crypto/users/Admin@org1.example.com/tls' 'crypto-orderer/tlsca.orderer1.example.com-cert.pem' 'orderer0.group1.orderer1.example.com:7030';" printItalics "Joining 'my-channel1' on Org1/peer1" "U1F638" -<<<<<<< HEAD docker exec -i cli.org1.example.com bash -c "source scripts/channel_fns.sh; fetchChannelAndJoinTls 'my-channel1' 'Org1MSP' 'peer1.org1.example.com:7062' 'crypto/users/Admin@org1.example.com/msp' 'crypto/users/Admin@org1.example.com/tls' 'crypto-orderer/tlsca.orderer1.example.com-cert.pem' 'orderer0.group1.orderer1.example.com:7030';" docker exec -i cli.orderer2.example.com bash -c "source scripts/channel_fns.sh; createChannelAndJoinTls 'my-channel2' 'Orderer2MSP' 'orderer0.group2.orderer2.example.com:7053' 'crypto/users/Admin@orderer2.example.com/tls/client.crt' 'crypto/users/Admin@orderer2.example.com/tls/client.key' 'crypto-orderer/tlsca.orderer2.example.com-cert.pem';" sleep 4 # Wait for Raft cluster to establish consensus printHeadline "Creating 'my-channel2' on Org1/peer1" "U1F63B" docker exec -i cli.org1.example.com bash -c "source scripts/channel_fns.sh; fetchChannelAndJoinTls 'my-channel2' 'Org1MSP' 'peer1.org1.example.com:7062' 'crypto/users/Admin@org1.example.com/msp' 'crypto/users/Admin@org1.example.com/tls' 'crypto-orderer/tlsca.orderer2.example.com-cert.pem' 'orderer0.group2.orderer2.example.com:7050';" -======= - docker exec -i cli.org1.example.com bash -c "source scripts/channel_fns.sh; fetchChannelAndJoinTls 'my-channel1' 'Org1MSP' 'peer1.org1.example.com:7042' 'crypto/users/Admin@org1.example.com/msp' 'crypto/users/Admin@org1.example.com/tls' 'crypto-orderer/tlsca.orderer.example.com-cert.pem' 'orderer0.group1.orderer.example.com:7030';" ->>>>>>> 76a4c8c66a0582473fa51ac5f7036719c5bd1a86 } @@ -2710,22 +2709,13 @@ installChaincodes() { local version="0.0.1" printHeadline "Packaging chaincode 'chaincode1'" "U1F60E" chaincodeBuild "chaincode1" "node" "$CHAINCODES_BASE_DIR/./chaincodes/chaincode-kv-node" "16" -<<<<<<< HEAD - chaincodePackage "cli.org1.example.com" "peer0.org1.example.com:7061" "chaincode1" "$version" "node" printHeadline "Installing 'chaincode1' for Org1" "U1F60E" - chaincodeInstall "cli.org1.example.com" "peer0.org1.example.com:7061" "chaincode1" "$version" "crypto-orderer/tlsca.orderer1.example.com-cert.pem" - chaincodeInstall "cli.org1.example.com" "peer1.org1.example.com:7062" "chaincode1" "$version" "crypto-orderer/tlsca.orderer1.example.com-cert.pem" - chaincodeApprove "cli.org1.example.com" "peer0.org1.example.com:7061" "my-channel1" "chaincode1" "$version" "orderer0.group1.orderer1.example.com:7030" "AND ('Org1MSP.member')" "undefined" "crypto-orderer/tlsca.orderer1.example.com-cert.pem" "" - printItalics "Committing chaincode 'chaincode1' on channel 'my-channel1' as 'Org1'" "U1F618" - chaincodeCommit "cli.org1.example.com" "peer0.org1.example.com:7061" "my-channel1" "chaincode1" "$version" "orderer0.group1.orderer1.example.com:7030" "AND ('Org1MSP.member')" "undefined" "crypto-orderer/tlsca.orderer1.example.com-cert.pem" "peer0.org1.example.com:7061" "crypto-peer/peer0.org1.example.com/tls/ca.crt" "" -======= - chaincodePackage "cli.org1.example.com" "peer0.org1.example.com:7041" "chaincode1" "$version" "node" "my-channel1" + chaincodePackage "cli.org1.example.com" "peer0.org1.example.com:7061" "chaincode1" "$version" "node" "my-channel1" printHeadline "Installing 'chaincode1' for Org1" "U1F60E" - chaincodeInstall "cli.org1.example.com" "peer0.org1.example.com:7041" "chaincode1" "$version" "my-channel1" "crypto-orderer/tlsca.orderer.example.com-cert.pem" - chaincodeInstall "cli.org1.example.com" "peer1.org1.example.com:7042" "chaincode1" "$version" "my-channel1" "crypto-orderer/tlsca.orderer.example.com-cert.pem" - chaincodeApprove "cli.org1.example.com" "peer0.org1.example.com:7041" "my-channel1" "chaincode1" "$version" "orderer0.group1.orderer.example.com:7030" "AND ('Org1MSP.member')" "" "crypto-orderer/tlsca.orderer.example.com-cert.pem" "" "node" "" + chaincodeInstall "cli.org1.example.com" "peer0.org1.example.com:7061" "chaincode1" "$version" "my-channel1" "crypto-orderer/tlsca.orderer1.example.com-cert.pem" + chaincodeInstall "cli.org1.example.com" "peer1.org1.example.com:7062" "chaincode1" "$version" "my-channel1" "crypto-orderer/tlsca.orderer1.example.com-cert.pem" + chaincodeApprove "cli.org1.example.com" "peer0.org1.example.com:7061" "my-channel1" "chaincode1" "$version" "orderer0.group1.orderer1.example.com:7030" "AND ('Org1MSP.member')" "" "crypto-orderer/tlsca.orderer1.example.com-cert.pem" "" "node" "" printItalics "Committing chaincode 'chaincode1' on channel 'my-channel1' as 'Org1'" "U1F618" - chaincodeCommit "cli.org1.example.com" "peer0.org1.example.com:7041" "my-channel1" "chaincode1" "$version" "orderer0.group1.orderer.example.com:7030" "AND ('Org1MSP.member')" "" "crypto-orderer/tlsca.orderer.example.com-cert.pem" "peer0.org1.example.com:7041" "crypto-peer/peer0.org1.example.com/tls/ca.crt" "" ->>>>>>> f55628b4d8d4eab339832c3d22bd1085f7c59329 + chaincodeCommit "cli.org1.example.com" "peer0.org1.example.com:7061" "my-channel1" "chaincode1" "$version" "orderer0.group1.orderer1.example.com:7030" "AND ('Org1MSP.member')" "" "crypto-orderer/tlsca.orderer1.example.com-cert.pem" "peer0.org1.example.com:7061" "crypto-peer/peer0.org1.example.com/tls/ca.crt" "" else echo "Warning! Skipping chaincode 'chaincode1' installation. Chaincode directory is empty." echo "Looked in dir: '$CHAINCODES_BASE_DIR/./chaincodes/chaincode-kv-node'" @@ -2750,22 +2740,13 @@ installChaincode() { if [ -n "$(ls "$CHAINCODES_BASE_DIR/./chaincodes/chaincode-kv-node")" ]; then printHeadline "Packaging chaincode 'chaincode1'" "U1F60E" chaincodeBuild "chaincode1" "node" "$CHAINCODES_BASE_DIR/./chaincodes/chaincode-kv-node" "16" -<<<<<<< HEAD - chaincodePackage "cli.org1.example.com" "peer0.org1.example.com:7061" "chaincode1" "$version" "node" printHeadline "Installing 'chaincode1' for Org1" "U1F60E" - chaincodeInstall "cli.org1.example.com" "peer0.org1.example.com:7061" "chaincode1" "$version" "crypto-orderer/tlsca.orderer1.example.com-cert.pem" - chaincodeInstall "cli.org1.example.com" "peer1.org1.example.com:7062" "chaincode1" "$version" "crypto-orderer/tlsca.orderer1.example.com-cert.pem" - chaincodeApprove "cli.org1.example.com" "peer0.org1.example.com:7061" "my-channel1" "chaincode1" "$version" "orderer0.group1.orderer1.example.com:7030" "AND ('Org1MSP.member')" "undefined" "crypto-orderer/tlsca.orderer1.example.com-cert.pem" "" - printItalics "Committing chaincode 'chaincode1' on channel 'my-channel1' as 'Org1'" "U1F618" - chaincodeCommit "cli.org1.example.com" "peer0.org1.example.com:7061" "my-channel1" "chaincode1" "$version" "orderer0.group1.orderer1.example.com:7030" "AND ('Org1MSP.member')" "undefined" "crypto-orderer/tlsca.orderer1.example.com-cert.pem" "peer0.org1.example.com:7061" "crypto-peer/peer0.org1.example.com/tls/ca.crt" "" -======= - chaincodePackage "cli.org1.example.com" "peer0.org1.example.com:7041" "chaincode1" "$version" "node" "my-channel1" + chaincodePackage "cli.org1.example.com" "peer0.org1.example.com:7061" "chaincode1" "$version" "node" "my-channel1" printHeadline "Installing 'chaincode1' for Org1" "U1F60E" - chaincodeInstall "cli.org1.example.com" "peer0.org1.example.com:7041" "chaincode1" "$version" "my-channel1" "crypto-orderer/tlsca.orderer.example.com-cert.pem" - chaincodeInstall "cli.org1.example.com" "peer1.org1.example.com:7042" "chaincode1" "$version" "my-channel1" "crypto-orderer/tlsca.orderer.example.com-cert.pem" - chaincodeApprove "cli.org1.example.com" "peer0.org1.example.com:7041" "my-channel1" "chaincode1" "$version" "orderer0.group1.orderer.example.com:7030" "AND ('Org1MSP.member')" "" "crypto-orderer/tlsca.orderer.example.com-cert.pem" "" "node" "" + chaincodeInstall "cli.org1.example.com" "peer0.org1.example.com:7061" "chaincode1" "$version" "my-channel1" "crypto-orderer/tlsca.orderer1.example.com-cert.pem" + chaincodeInstall "cli.org1.example.com" "peer1.org1.example.com:7062" "chaincode1" "$version" "my-channel1" "crypto-orderer/tlsca.orderer1.example.com-cert.pem" + chaincodeApprove "cli.org1.example.com" "peer0.org1.example.com:7061" "my-channel1" "chaincode1" "$version" "orderer0.group1.orderer1.example.com:7030" "AND ('Org1MSP.member')" "" "crypto-orderer/tlsca.orderer1.example.com-cert.pem" "" "node" "" printItalics "Committing chaincode 'chaincode1' on channel 'my-channel1' as 'Org1'" "U1F618" - chaincodeCommit "cli.org1.example.com" "peer0.org1.example.com:7041" "my-channel1" "chaincode1" "$version" "orderer0.group1.orderer.example.com:7030" "AND ('Org1MSP.member')" "" "crypto-orderer/tlsca.orderer.example.com-cert.pem" "peer0.org1.example.com:7041" "crypto-peer/peer0.org1.example.com/tls/ca.crt" "" ->>>>>>> f55628b4d8d4eab339832c3d22bd1085f7c59329 + chaincodeCommit "cli.org1.example.com" "peer0.org1.example.com:7061" "my-channel1" "chaincode1" "$version" "orderer0.group1.orderer1.example.com:7030" "AND ('Org1MSP.member')" "" "crypto-orderer/tlsca.orderer1.example.com-cert.pem" "peer0.org1.example.com:7061" "crypto-peer/peer0.org1.example.com/tls/ca.crt" "" else echo "Warning! Skipping chaincode 'chaincode1' install. Chaincode directory is empty." @@ -2796,22 +2777,13 @@ upgradeChaincode() { if [ -n "$(ls "$CHAINCODES_BASE_DIR/./chaincodes/chaincode-kv-node")" ]; then printHeadline "Packaging chaincode 'chaincode1'" "U1F60E" chaincodeBuild "chaincode1" "node" "$CHAINCODES_BASE_DIR/./chaincodes/chaincode-kv-node" "16" -<<<<<<< HEAD - chaincodePackage "cli.org1.example.com" "peer0.org1.example.com:7061" "chaincode1" "$version" "node" printHeadline "Installing 'chaincode1' for Org1" "U1F60E" - chaincodeInstall "cli.org1.example.com" "peer0.org1.example.com:7061" "chaincode1" "$version" "crypto-orderer/tlsca.orderer1.example.com-cert.pem" - chaincodeInstall "cli.org1.example.com" "peer1.org1.example.com:7062" "chaincode1" "$version" "crypto-orderer/tlsca.orderer1.example.com-cert.pem" - chaincodeApprove "cli.org1.example.com" "peer0.org1.example.com:7061" "my-channel1" "chaincode1" "$version" "orderer0.group1.orderer1.example.com:7030" "AND ('Org1MSP.member')" "undefined" "crypto-orderer/tlsca.orderer1.example.com-cert.pem" "" - printItalics "Committing chaincode 'chaincode1' on channel 'my-channel1' as 'Org1'" "U1F618" - chaincodeCommit "cli.org1.example.com" "peer0.org1.example.com:7061" "my-channel1" "chaincode1" "$version" "orderer0.group1.orderer1.example.com:7030" "AND ('Org1MSP.member')" "undefined" "crypto-orderer/tlsca.orderer1.example.com-cert.pem" "peer0.org1.example.com:7061" "crypto-peer/peer0.org1.example.com/tls/ca.crt" "" -======= - chaincodePackage "cli.org1.example.com" "peer0.org1.example.com:7041" "chaincode1" "$version" "node" "my-channel1" + chaincodePackage "cli.org1.example.com" "peer0.org1.example.com:7061" "chaincode1" "$version" "node" "my-channel1" printHeadline "Installing 'chaincode1' for Org1" "U1F60E" - chaincodeInstall "cli.org1.example.com" "peer0.org1.example.com:7041" "chaincode1" "$version" "my-channel1" "crypto-orderer/tlsca.orderer.example.com-cert.pem" - chaincodeInstall "cli.org1.example.com" "peer1.org1.example.com:7042" "chaincode1" "$version" "my-channel1" "crypto-orderer/tlsca.orderer.example.com-cert.pem" - chaincodeApprove "cli.org1.example.com" "peer0.org1.example.com:7041" "my-channel1" "chaincode1" "$version" "orderer0.group1.orderer.example.com:7030" "AND ('Org1MSP.member')" "" "crypto-orderer/tlsca.orderer.example.com-cert.pem" "" "node" "" + chaincodeInstall "cli.org1.example.com" "peer0.org1.example.com:7061" "chaincode1" "$version" "my-channel1" "crypto-orderer/tlsca.orderer1.example.com-cert.pem" + chaincodeInstall "cli.org1.example.com" "peer1.org1.example.com:7062" "chaincode1" "$version" "my-channel1" "crypto-orderer/tlsca.orderer1.example.com-cert.pem" + chaincodeApprove "cli.org1.example.com" "peer0.org1.example.com:7061" "my-channel1" "chaincode1" "$version" "orderer0.group1.orderer1.example.com:7030" "AND ('Org1MSP.member')" "" "crypto-orderer/tlsca.orderer1.example.com-cert.pem" "" "node" "" printItalics "Committing chaincode 'chaincode1' on channel 'my-channel1' as 'Org1'" "U1F618" - chaincodeCommit "cli.org1.example.com" "peer0.org1.example.com:7041" "my-channel1" "chaincode1" "$version" "orderer0.group1.orderer.example.com:7030" "AND ('Org1MSP.member')" "" "crypto-orderer/tlsca.orderer.example.com-cert.pem" "peer0.org1.example.com:7041" "crypto-peer/peer0.org1.example.com/tls/ca.crt" "" ->>>>>>> f55628b4d8d4eab339832c3d22bd1085f7c59329 + chaincodeCommit "cli.org1.example.com" "peer0.org1.example.com:7061" "my-channel1" "chaincode1" "$version" "orderer0.group1.orderer1.example.com:7030" "AND ('Org1MSP.member')" "" "crypto-orderer/tlsca.orderer1.example.com-cert.pem" "peer0.org1.example.com:7061" "crypto-peer/peer0.org1.example.com/tls/ca.crt" "" else echo "Warning! Skipping chaincode 'chaincode1' upgrade. Chaincode directory is empty." 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 f36ab505d..29a87ace3 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 @@ -1785,59 +1785,6 @@ chaincodeInvoke() { peerChaincodeInvokeTls "$cli" "$peer_addresses" "$2" "$3" "$4" "$5" "$peer_certs" "$ca_cert" } - -# Function to perform chaincode query for single peer -# Accepts 4-5 parameters: -# 1. single peer domain -# 2. channel name -# 3. chaincode name -# 4. chaincode command -# 5. transient data (optional) -chaincodeQuery() { - if [ "$#" -ne 4 ] && [ "$#" -ne 5 ]; then - echo "Expected 4 or 5 parameters for chaincode query, but got: $*" - echo "Usage: fablo chaincode query [transient]" - exit 1 - fi - - peer_domain="$1" - channel_name="$2" - chaincode_name="$3" - command="$4" - transient="$5" - - cli="" - peer_address="" - - peer_cert="" - - if [ "$peer_domain" = "peer0.org1.example.com" ]; then - cli="cli.org1.example.com" - peer_address="peer0.org1.example.com:7041" - - peer_cert="crypto/peers/peer0.org1.example.com/tls/ca.crt" - - fi - if [ "$peer_domain" = "peer1.org1.example.com" ]; then - cli="cli.org1.example.com" - peer_address="peer1.org1.example.com:7042" - - peer_cert="crypto/peers/peer1.org1.example.com/tls/ca.crt" - - fi - - if [ -z "$peer_address" ]; then - echo "Unknown peer: $peer_domain" - exit 1 - fi - - if [ "$channel_name" = "my-channel1" ]; then - ca_cert="crypto-orderer/tlsca.orderer.example.com-cert.pem" - 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 1ebba6a80..39e17c250 100644 --- a/e2e/__snapshots__/fabloCommands.test.ts.snap +++ b/e2e/__snapshots__/fabloCommands.test.ts.snap @@ -8,18 +8,6 @@ Validation warnings count: 0 "global": { "fabricVersion": "2.5.12", "tls": true, -<<<<<<< HEAD -======= - "tools": { - "explorer": { - "address": "explorer.example.com", - "port": 7010 - } - }, - "monitoring": { - "loglevel": "debug" - }, ->>>>>>> f55628b4d8d4eab339832c3d22bd1085f7c59329 "fabricToolsVersion": "2.5.12", "fabricCaVersion": "1.5.5", "fabricCcenvVersion": "2.5.12", @@ -41,7 +29,8 @@ Validation warnings count: 0 "application": "V2_5", "isV2": true, "isV3": false - } + }, + "tools": {} }, "ordererGroups": [ { From 9dba750cdd45940b408283d53b217afac887833a Mon Sep 17 00:00:00 2001 From: Pereowei Daniel Date: Fri, 10 Oct 2025 16:36:11 +0200 Subject: [PATCH 08/13] fix-update snapshots Signed-off-by: Pereowei Daniel --- e2e-network/docker/test-02-v2-raft-2orgs.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/e2e-network/docker/test-02-v2-raft-2orgs.sh b/e2e-network/docker/test-02-v2-raft-2orgs.sh index c513923c5..e85a72ed7 100755 --- a/e2e-network/docker/test-02-v2-raft-2orgs.sh +++ b/e2e-network/docker/test-02-v2-raft-2orgs.sh @@ -85,7 +85,7 @@ waitForContainer "peer1.org1.example.com" "Membership view has changed. peers we waitForContainer "db.explorer.example.com" "database system is ready to accept connections" "200" # // the next check is not working because explorer needs needs to be restarted first # // see the issue: https://github.com/hyperledger-labs/fablo/issues/604 -waitForContainer "explorer.example.com" "Successfully created channel event hub for \[my-channel1\]" "200" +# waitForContainer "explorer.example.com" "Successfully created channel event hub for \[my-channel1\]" "200" # check if org2 is ready waitForContainer "ca.org2.example.com" "Listening on https://0.0.0.0:7054" From 3692f5534a63fe91795cfd9763806776e168d233 Mon Sep 17 00:00:00 2001 From: Pereowei Daniel Date: Fri, 10 Oct 2025 16:44:05 +0200 Subject: [PATCH 09/13] fix-update snapshots Signed-off-by: Pereowei Daniel --- e2e/__snapshots__/extendConfig.test.ts.snap | 7 +- ...2-2orgs-2chaincodes-raft.yaml.test.ts.snap | 207 ++++++++++++++++++ e2e/__snapshots__/fabloCommands.test.ts.snap | 9 +- ...lo-config-hlf2-2orgs-2chaincodes-raft.yaml | 2 + 4 files changed, 222 insertions(+), 3 deletions(-) diff --git a/e2e/__snapshots__/extendConfig.test.ts.snap b/e2e/__snapshots__/extendConfig.test.ts.snap index b0a816fe5..0a6b1e249 100644 --- a/e2e/__snapshots__/extendConfig.test.ts.snap +++ b/e2e/__snapshots__/extendConfig.test.ts.snap @@ -5884,7 +5884,12 @@ exports[`extend config samples/fablo-config-hlf2-2orgs-2chaincodes-raft.yaml 1`] "fabloConfig": "", }, "tls": true, - "tools": {}, + "tools": { + "explorer": { + "address": "explorer.example.com", + "port": 7010, + }, + }, }, "hooks": { "postGenerate": "perl -i -pe 's/MaxMessageCount: 10/MaxMessageCount: 1/g' "./fablo-target/fabric-config/configtx.yaml"", 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 5dcd16cfe..1ec6bba1f 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 @@ -1249,6 +1249,164 @@ exports[`samples/fablo-config-hlf2-2orgs-2chaincodes-raft.yaml should create pro " `; +exports[`samples/fablo-config-hlf2-2orgs-2chaincodes-raft.yaml should create proper e2e/__tmp__/samples/fablo-config-hlf2-2orgs-2chaincodes-raft.yaml.tmpdir/fablo-target/fabric-config/explorer/config-org1.json from samples/fablo-config-hlf2-2orgs-2chaincodes-raft.yaml 1`] = ` +"{ + "network-configs": { + "network-org1": { + "name": "Network of Org1", + "profile": "/opt/explorer/app/platform/fabric/connection-profile/connection-profile-org1.json" + } + }, + "license": "Apache-2.0" +} +" +`; + +exports[`samples/fablo-config-hlf2-2orgs-2chaincodes-raft.yaml should create proper e2e/__tmp__/samples/fablo-config-hlf2-2orgs-2chaincodes-raft.yaml.tmpdir/fablo-target/fabric-config/explorer/config-org2.json from samples/fablo-config-hlf2-2orgs-2chaincodes-raft.yaml 1`] = ` +"{ + "network-configs": { + "network-org2": { + "name": "Network of Org2", + "profile": "/opt/explorer/app/platform/fabric/connection-profile/connection-profile-org2.json" + } + }, + "license": "Apache-2.0" +} +" +`; + +exports[`samples/fablo-config-hlf2-2orgs-2chaincodes-raft.yaml should create proper e2e/__tmp__/samples/fablo-config-hlf2-2orgs-2chaincodes-raft.yaml.tmpdir/fablo-target/fabric-config/explorer/connection-profile-org1.json from samples/fablo-config-hlf2-2orgs-2chaincodes-raft.yaml 1`] = ` +"{ + "name": "fablo-test-network-org1", + "description": "Connection profile for Hyperledger Explorer in Fablo network", + "version": "1.0.0", + "client": { + "organization": "Org1", + "tlsEnable": true, + "enableAuthentication": true, + "adminCredential": { + "id": "admin", + "password": "adminpw" + }, + "connection": { + "timeout": { + "peer": { + "endorser": "300" + }, + "orderer": "300" + } + } + }, + "organizations": { + "Org1": { + "mspid": "Org1MSP", + "adminPrivateKey": { + "path": "/tmp/crypto/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp/keystore/priv-key.pem" + }, + "peers": [ + "peer0.org1.example.com", + "peer1.org1.example.com" + ], + "signedCert": { + "path": "/tmp/crypto/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp/signcerts/Admin@org1.example.com-cert.pem" + } + } + }, + "peers": { + "peer0.org1.example.com": { + "url": "grpcs://peer0.org1.example.com:7061", + "tlsCACerts": { + "path": "/tmp/crypto/peerOrganizations/org1.example.com/msp/tlscacerts/tlsca.org1.example.com-cert.pem" + } + }, + "peer1.org1.example.com": { + "url": "grpcs://peer1.org1.example.com:7062", + "tlsCACerts": { + "path": "/tmp/crypto/peerOrganizations/org1.example.com/msp/tlscacerts/tlsca.org1.example.com-cert.pem" + } + } + }, + "channels": { + "my-channel1": { + "peers": {} + }, + "my-channel2": { + "peers": {} + }, + "my-channel3": { + "peers": {} + } + } +} +" +`; + +exports[`samples/fablo-config-hlf2-2orgs-2chaincodes-raft.yaml should create proper e2e/__tmp__/samples/fablo-config-hlf2-2orgs-2chaincodes-raft.yaml.tmpdir/fablo-target/fabric-config/explorer/connection-profile-org2.json from samples/fablo-config-hlf2-2orgs-2chaincodes-raft.yaml 1`] = ` +"{ + "name": "fablo-test-network-org2", + "description": "Connection profile for Hyperledger Explorer in Fablo network", + "version": "1.0.0", + "client": { + "organization": "Org2", + "tlsEnable": true, + "enableAuthentication": true, + "adminCredential": { + "id": "admin", + "password": "adminpw" + }, + "connection": { + "timeout": { + "peer": { + "endorser": "300" + }, + "orderer": "300" + } + } + }, + "organizations": { + "Org2": { + "mspid": "Org2MSP", + "adminPrivateKey": { + "path": "/tmp/crypto/peerOrganizations/org2.example.com/users/Admin@org2.example.com/msp/keystore/priv-key.pem" + }, + "peers": [ + "peer0.org2.example.com", + "peer1.org2.example.com" + ], + "signedCert": { + "path": "/tmp/crypto/peerOrganizations/org2.example.com/users/Admin@org2.example.com/msp/signcerts/Admin@org2.example.com-cert.pem" + } + } + }, + "peers": { + "peer0.org2.example.com": { + "url": "grpcs://peer0.org2.example.com:7081", + "tlsCACerts": { + "path": "/tmp/crypto/peerOrganizations/org2.example.com/msp/tlscacerts/tlsca.org2.example.com-cert.pem" + } + }, + "peer1.org2.example.com": { + "url": "grpcs://peer1.org2.example.com:7082", + "tlsCACerts": { + "path": "/tmp/crypto/peerOrganizations/org2.example.com/msp/tlscacerts/tlsca.org2.example.com-cert.pem" + } + } + }, + "channels": { + "my-channel1": { + "peers": {} + }, + "my-channel2": { + "peers": {} + }, + "my-channel3": { + "peers": {} + } + } +} +" +`; + exports[`samples/fablo-config-hlf2-2orgs-2chaincodes-raft.yaml should create proper e2e/__tmp__/samples/fablo-config-hlf2-2orgs-2chaincodes-raft.yaml.tmpdir/fablo-target/fabric-config/fabric-ca-server-config/orderer1.com/fabric-ca-server-config.yaml from samples/fablo-config-hlf2-2orgs-2chaincodes-raft.yaml 1`] = ` "############################################################################# # This is a configuration file for the fabric-ca-server command. @@ -3815,6 +3973,8 @@ installChannels() { printItalics "Joining 'my-channel3' on Org2/peer1" "U1F638" docker exec -i cli.org2.example.com bash -c "source scripts/channel_fns.sh; fetchChannelAndJoinTls 'my-channel3' 'Org2MSP' 'peer1.org2.example.com:7082' 'crypto/users/Admin@org2.example.com/msp' 'crypto/users/Admin@org2.example.com/tls' 'crypto-orderer/tlsca.orderer2.com-cert.pem' 'orderer0.group2.orderer2.com:7050';" + echo "Restarting global Explorer: explorer.example.com" + docker restart explorer.example.com || true } installChaincodes() { @@ -4708,6 +4868,49 @@ services: - ../fabric-config/config:/etc/hyperledger/fabric/config networks: - basic + + db.explorer.example.com: + image: ghcr.io/hyperledger-labs/explorer-db:\${HYPERLEDGER_EXPLORER_VERSION} + container_name: db.explorer.example.com + environment: + - DATABASE_DATABASE=fabricexplorer + - DATABASE_USERNAME=hppoc + - DATABASE_PASSWORD=password + healthcheck: + test: "pg_isready -h localhost -p 5432 -q -U hppoc -d fabricexplorer" + interval: 5s + timeout: 10s + retries: 7 + volumes: + - /var/lib/postgresql/data + networks: + - basic + + explorer.example.com: + image: ghcr.io/hyperledger-labs/explorer:\${HYPERLEDGER_EXPLORER_VERSION} + restart: on-failure:8 + container_name: explorer.example.com + environment: + - DATABASE_HOST=db.explorer.example.com + - DATABASE_DATABASE=fabricexplorer + - DATABASE_USERNAME=hppoc + - DATABASE_PASSWD=password + - LOG_LEVEL_APP=debug + - LOG_LEVEL_DB=debug + - LOG_LEVEL_CONSOLE=info + - LOG_CONSOLE_STDOUT=true + - DISCOVERY_AS_LOCALHOST=false + volumes: + - ../fabric-config/explorer/config-global.json:/opt/explorer/app/platform/fabric/config.json + - ../fabric-config/explorer:/opt/explorer/app/platform/fabric/connection-profile + - ../fabric-config/crypto-config:/tmp/crypto + ports: + - "7010:8080" + depends_on: + db.explorer.example.com: + condition: service_healthy + networks: + - basic " `; @@ -6202,6 +6405,10 @@ exports[`samples/fablo-config-hlf2-2orgs-2chaincodes-raft.yaml should create pro "e2e/__tmp__/samples/fablo-config-hlf2-2orgs-2chaincodes-raft.yaml.tmpdir/fablo-target/fabric-config/crypto-config-org1.yaml", "e2e/__tmp__/samples/fablo-config-hlf2-2orgs-2chaincodes-raft.yaml.tmpdir/fablo-target/fabric-config/crypto-config-org2.yaml", "e2e/__tmp__/samples/fablo-config-hlf2-2orgs-2chaincodes-raft.yaml.tmpdir/fablo-target/fabric-config/explorer/config-global.json", + "e2e/__tmp__/samples/fablo-config-hlf2-2orgs-2chaincodes-raft.yaml.tmpdir/fablo-target/fabric-config/explorer/config-org1.json", + "e2e/__tmp__/samples/fablo-config-hlf2-2orgs-2chaincodes-raft.yaml.tmpdir/fablo-target/fabric-config/explorer/config-org2.json", + "e2e/__tmp__/samples/fablo-config-hlf2-2orgs-2chaincodes-raft.yaml.tmpdir/fablo-target/fabric-config/explorer/connection-profile-org1.json", + "e2e/__tmp__/samples/fablo-config-hlf2-2orgs-2chaincodes-raft.yaml.tmpdir/fablo-target/fabric-config/explorer/connection-profile-org2.json", "e2e/__tmp__/samples/fablo-config-hlf2-2orgs-2chaincodes-raft.yaml.tmpdir/fablo-target/fabric-config/fabric-ca-server-config/orderer1.com/fabric-ca-server-config.yaml", "e2e/__tmp__/samples/fablo-config-hlf2-2orgs-2chaincodes-raft.yaml.tmpdir/fablo-target/fabric-config/fabric-ca-server-config/orderer2.com/fabric-ca-server-config.yaml", "e2e/__tmp__/samples/fablo-config-hlf2-2orgs-2chaincodes-raft.yaml.tmpdir/fablo-target/fabric-config/fabric-ca-server-config/org1.example.com/fabric-ca-server-config.yaml", diff --git a/e2e/__snapshots__/fabloCommands.test.ts.snap b/e2e/__snapshots__/fabloCommands.test.ts.snap index 39e17c250..941ac095d 100644 --- a/e2e/__snapshots__/fabloCommands.test.ts.snap +++ b/e2e/__snapshots__/fabloCommands.test.ts.snap @@ -8,6 +8,12 @@ Validation warnings count: 0 "global": { "fabricVersion": "2.5.12", "tls": true, + "tools": { + "explorer": { + "address": "explorer.example.com", + "port": 7010 + } + }, "fabricToolsVersion": "2.5.12", "fabricCaVersion": "1.5.5", "fabricCcenvVersion": "2.5.12", @@ -29,8 +35,7 @@ Validation warnings count: 0 "application": "V2_5", "isV2": true, "isV3": false - }, - "tools": {} + } }, "ordererGroups": [ { diff --git a/samples/fablo-config-hlf2-2orgs-2chaincodes-raft.yaml b/samples/fablo-config-hlf2-2orgs-2chaincodes-raft.yaml index 8e7eceedb..3d238d1fe 100644 --- a/samples/fablo-config-hlf2-2orgs-2chaincodes-raft.yaml +++ b/samples/fablo-config-hlf2-2orgs-2chaincodes-raft.yaml @@ -3,6 +3,8 @@ global: fabricVersion: 2.5.12 tls: true + tools: + explorer: true orgs: - organization: name: Orderer1 From 6f9acd5010774692af12afb4c79fa19c7a855af1 Mon Sep 17 00:00:00 2001 From: Pereowei Daniel Date: Fri, 10 Oct 2025 17:16:48 +0200 Subject: [PATCH 10/13] fix-query function Signed-off-by: Pereowei Daniel --- ...1chaincode-peer-dev-mode.json.test.ts.snap | 38 ++++++++ ...fig-hlf2-1org-1chaincode.json.test.ts.snap | 43 +++++++++ ...rg-2chaincode-raft-ccaas.json.test.ts.snap | 56 +++++++++++ ...2chaincodes-private-data.yaml.test.ts.snap | 48 ++++++++++ ...2-2orgs-2chaincodes-raft.yaml.test.ts.snap | 80 ++++++++++++++++ ...1chaincode-raft-explorer.json.test.ts.snap | 94 +++++++++++++++++++ ...ig-hlf3-1orgs-1chaincode.json.test.ts.snap | 63 +++++++++++++ ...lf3-bft-1orgs-1chaincode.json.test.ts.snap | 60 ++++++++++++ .../fabric-docker/chaincode-scripts.sh | 63 +++++++++++++ 9 files changed, 545 insertions(+) diff --git a/e2e/__snapshots__/fablo-config-hlf2-1org-1chaincode-peer-dev-mode.json.test.ts.snap b/e2e/__snapshots__/fablo-config-hlf2-1org-1chaincode-peer-dev-mode.json.test.ts.snap index e2f307269..549ebe203 100644 --- a/e2e/__snapshots__/fablo-config-hlf2-1org-1chaincode-peer-dev-mode.json.test.ts.snap +++ b/e2e/__snapshots__/fablo-config-hlf2-1org-1chaincode-peer-dev-mode.json.test.ts.snap @@ -1523,6 +1523,44 @@ chaincodeInvoke() { peerChaincodeInvoke "$cli" "$peer_addresses" "$2" "$3" "$4" "$5" } + +# Function to perform chaincode query for single peer +# Accepts 4-5 parameters: +# 1. single peer domain +# 2. channel name +# 3. chaincode name +# 4. chaincode command +# 5. transient data (optional) +chaincodeQuery() { + if [ "$#" -ne 4 ] && [ "$#" -ne 5 ]; then + echo "Expected 4 or 5 parameters for chaincode query, but got: $*" + echo "Usage: fablo chaincode query [transient]" + exit 1 + fi + + peer_domain="$1" + channel_name="$2" + chaincode_name="$3" + command="$4" + transient="$5" + + cli="" + peer_address="" + + if [ "$peer_domain" = "peer0.org1.example.com" ]; then + cli="cli.org1.example.com" + peer_address="peer0.org1.example.com:7041" + + fi + + if [ -z "$peer_address" ]; then + echo "Unknown peer: $peer_domain" + exit 1 + fi + + peerChaincodeQuery "$cli" "$peer_address" "$channel_name" "$chaincode_name" "$command" "$transient" + +} " `; diff --git a/e2e/__snapshots__/fablo-config-hlf2-1org-1chaincode.json.test.ts.snap b/e2e/__snapshots__/fablo-config-hlf2-1org-1chaincode.json.test.ts.snap index 587e3399d..d4a297263 100644 --- a/e2e/__snapshots__/fablo-config-hlf2-1org-1chaincode.json.test.ts.snap +++ b/e2e/__snapshots__/fablo-config-hlf2-1org-1chaincode.json.test.ts.snap @@ -1550,6 +1550,49 @@ chaincodeInvoke() { peerChaincodeInvoke "$cli" "$peer_addresses" "$2" "$3" "$4" "$5" } + +# Function to perform chaincode query for single peer +# Accepts 4-5 parameters: +# 1. single peer domain +# 2. channel name +# 3. chaincode name +# 4. chaincode command +# 5. transient data (optional) +chaincodeQuery() { + if [ "$#" -ne 4 ] && [ "$#" -ne 5 ]; then + echo "Expected 4 or 5 parameters for chaincode query, but got: $*" + echo "Usage: fablo chaincode query [transient]" + exit 1 + fi + + peer_domain="$1" + channel_name="$2" + chaincode_name="$3" + command="$4" + transient="$5" + + cli="" + peer_address="" + + if [ "$peer_domain" = "peer0.org1.example.com" ]; then + cli="cli.org1.example.com" + peer_address="peer0.org1.example.com:7041" + + fi + if [ "$peer_domain" = "peer1.org1.example.com" ]; then + cli="cli.org1.example.com" + peer_address="peer1.org1.example.com:7042" + + fi + + if [ -z "$peer_address" ]; then + echo "Unknown peer: $peer_domain" + exit 1 + fi + + peerChaincodeQuery "$cli" "$peer_address" "$channel_name" "$chaincode_name" "$command" "$transient" + +} " `; 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 1692a9ab1..2ed9cacdd 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 @@ -1610,6 +1610,62 @@ chaincodeInvoke() { peerChaincodeInvokeTls "$cli" "$peer_addresses" "$2" "$3" "$4" "$5" "$peer_certs" "$ca_cert" } + +# Function to perform chaincode query for single peer +# Accepts 4-5 parameters: +# 1. single peer domain +# 2. channel name +# 3. chaincode name +# 4. chaincode command +# 5. transient data (optional) +chaincodeQuery() { + if [ "$#" -ne 4 ] && [ "$#" -ne 5 ]; then + echo "Expected 4 or 5 parameters for chaincode query, but got: $*" + echo "Usage: fablo chaincode query [transient]" + exit 1 + fi + + peer_domain="$1" + channel_name="$2" + chaincode_name="$3" + command="$4" + transient="$5" + + cli="" + peer_address="" + + peer_cert="" + + if [ "$peer_domain" = "peer0.org1.example.com" ]; then + cli="cli.org1.example.com" + peer_address="peer0.org1.example.com:7041" + + peer_cert="crypto/peers/peer0.org1.example.com/tls/ca.crt" + + fi + + if [ -z "$peer_address" ]; then + echo "Unknown peer: $peer_domain" + exit 1 + fi + + # 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 + peerChaincodeQueryTls "$cli" "$peer_address" "$channel_name" "$chaincode_name" "$command" "$transient" "$peer_cert" "$ca_cert" + +} " `; diff --git a/e2e/__snapshots__/fablo-config-hlf2-2orgs-2chaincodes-private-data.yaml.test.ts.snap b/e2e/__snapshots__/fablo-config-hlf2-2orgs-2chaincodes-private-data.yaml.test.ts.snap index ab9be4c9a..947bd00e8 100644 --- a/e2e/__snapshots__/fablo-config-hlf2-2orgs-2chaincodes-private-data.yaml.test.ts.snap +++ b/e2e/__snapshots__/fablo-config-hlf2-2orgs-2chaincodes-private-data.yaml.test.ts.snap @@ -2240,6 +2240,54 @@ chaincodeInvoke() { peerChaincodeInvoke "$cli" "$peer_addresses" "$2" "$3" "$4" "$5" } + +# Function to perform chaincode query for single peer +# Accepts 4-5 parameters: +# 1. single peer domain +# 2. channel name +# 3. chaincode name +# 4. chaincode command +# 5. transient data (optional) +chaincodeQuery() { + if [ "$#" -ne 4 ] && [ "$#" -ne 5 ]; then + echo "Expected 4 or 5 parameters for chaincode query, but got: $*" + echo "Usage: fablo chaincode query [transient]" + exit 1 + fi + + peer_domain="$1" + channel_name="$2" + chaincode_name="$3" + command="$4" + transient="$5" + + cli="" + peer_address="" + + if [ "$peer_domain" = "peer0.org1.example.com" ]; then + cli="cli.org1.example.com" + peer_address="peer0.org1.example.com:7041" + + fi + if [ "$peer_domain" = "peer1.org1.example.com" ]; then + cli="cli.org1.example.com" + peer_address="peer1.org1.example.com:7042" + + fi + if [ "$peer_domain" = "peer0.org2.example.com" ]; then + cli="cli.org2.example.com" + peer_address="peer0.org2.example.com:7061" + + fi + + if [ -z "$peer_address" ]; then + echo "Unknown peer: $peer_domain" + exit 1 + fi + + peerChaincodeQuery "$cli" "$peer_address" "$channel_name" "$chaincode_name" "$command" "$transient" + +} " `; 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 1ec6bba1f..903ce8842 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 @@ -3622,6 +3622,86 @@ chaincodeInvoke() { peerChaincodeInvokeTls "$cli" "$peer_addresses" "$2" "$3" "$4" "$5" "$peer_certs" "$ca_cert" } + +# Function to perform chaincode query for single peer +# Accepts 4-5 parameters: +# 1. single peer domain +# 2. channel name +# 3. chaincode name +# 4. chaincode command +# 5. transient data (optional) +chaincodeQuery() { + if [ "$#" -ne 4 ] && [ "$#" -ne 5 ]; then + echo "Expected 4 or 5 parameters for chaincode query, but got: $*" + echo "Usage: fablo chaincode query [transient]" + exit 1 + fi + + peer_domain="$1" + channel_name="$2" + chaincode_name="$3" + command="$4" + transient="$5" + + cli="" + peer_address="" + + peer_cert="" + + if [ "$peer_domain" = "peer0.org1.example.com" ]; then + cli="cli.org1.example.com" + peer_address="peer0.org1.example.com:7061" + + peer_cert="crypto/peers/peer0.org1.example.com/tls/ca.crt" + + fi + if [ "$peer_domain" = "peer1.org1.example.com" ]; then + cli="cli.org1.example.com" + peer_address="peer1.org1.example.com:7062" + + peer_cert="crypto/peers/peer1.org1.example.com/tls/ca.crt" + + fi + if [ "$peer_domain" = "peer0.org2.example.com" ]; then + cli="cli.org2.example.com" + peer_address="peer0.org2.example.com:7081" + + peer_cert="crypto/peers/peer0.org2.example.com/tls/ca.crt" + + fi + if [ "$peer_domain" = "peer1.org2.example.com" ]; then + cli="cli.org2.example.com" + peer_address="peer1.org2.example.com:7082" + + peer_cert="crypto/peers/peer1.org2.example.com/tls/ca.crt" + + fi + + if [ -z "$peer_address" ]; then + echo "Unknown peer: $peer_domain" + exit 1 + fi + + # 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 + 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" + +} " `; 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 ddfb5832d..b6b95a79e 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 @@ -4027,6 +4027,100 @@ chaincodeInvoke() { peerChaincodeInvokeTls "$cli" "$peer_addresses" "$2" "$3" "$4" "$5" "$peer_certs" "$ca_cert" } + +# Function to perform chaincode query for single peer +# Accepts 4-5 parameters: +# 1. single peer domain +# 2. channel name +# 3. chaincode name +# 4. chaincode command +# 5. transient data (optional) +chaincodeQuery() { + if [ "$#" -ne 4 ] && [ "$#" -ne 5 ]; then + echo "Expected 4 or 5 parameters for chaincode query, but got: $*" + echo "Usage: fablo chaincode query [transient]" + exit 1 + fi + + peer_domain="$1" + channel_name="$2" + chaincode_name="$3" + command="$4" + transient="$5" + + cli="" + peer_address="" + + peer_cert="" + + if [ "$peer_domain" = "peer0.org1.example.com" ]; then + cli="cli.org1.example.com" + peer_address="peer0.org1.example.com:7041" + + peer_cert="crypto/peers/peer0.org1.example.com/tls/ca.crt" + + fi + if [ "$peer_domain" = "peer1.org1.example.com" ]; then + cli="cli.org1.example.com" + peer_address="peer1.org1.example.com:7042" + + peer_cert="crypto/peers/peer1.org1.example.com/tls/ca.crt" + + fi + if [ "$peer_domain" = "peer0.org2.example.com" ]; then + cli="cli.org2.example.com" + peer_address="peer0.org2.example.com:7061" + + peer_cert="crypto/peers/peer0.org2.example.com/tls/ca.crt" + + fi + if [ "$peer_domain" = "peer1.org2.example.com" ]; then + cli="cli.org2.example.com" + peer_address="peer1.org2.example.com:7062" + + peer_cert="crypto/peers/peer1.org2.example.com/tls/ca.crt" + + fi + if [ "$peer_domain" = "peer0.org3.example.com" ]; then + cli="cli.org3.example.com" + peer_address="peer0.org3.example.com:7081" + + peer_cert="crypto/peers/peer0.org3.example.com/tls/ca.crt" + + fi + if [ "$peer_domain" = "peer1.org3.example.com" ]; then + cli="cli.org3.example.com" + peer_address="peer1.org3.example.com:7082" + + peer_cert="crypto/peers/peer1.org3.example.com/tls/ca.crt" + + fi + + if [ -z "$peer_address" ]; then + echo "Unknown peer: $peer_domain" + exit 1 + fi + + # 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 [ "$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 19232fa75..ec7441810 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 @@ -2523,6 +2523,69 @@ chaincodeInvoke() { peerChaincodeInvokeTls "$cli" "$peer_addresses" "$2" "$3" "$4" "$5" "$peer_certs" "$ca_cert" } + +# Function to perform chaincode query for single peer +# Accepts 4-5 parameters: +# 1. single peer domain +# 2. channel name +# 3. chaincode name +# 4. chaincode command +# 5. transient data (optional) +chaincodeQuery() { + if [ "$#" -ne 4 ] && [ "$#" -ne 5 ]; then + echo "Expected 4 or 5 parameters for chaincode query, but got: $*" + echo "Usage: fablo chaincode query [transient]" + exit 1 + fi + + peer_domain="$1" + channel_name="$2" + chaincode_name="$3" + command="$4" + transient="$5" + + cli="" + peer_address="" + + peer_cert="" + + if [ "$peer_domain" = "peer0.org1.example.com" ]; then + cli="cli.org1.example.com" + peer_address="peer0.org1.example.com:7061" + + peer_cert="crypto/peers/peer0.org1.example.com/tls/ca.crt" + + fi + if [ "$peer_domain" = "peer1.org1.example.com" ]; then + cli="cli.org1.example.com" + peer_address="peer1.org1.example.com:7062" + + peer_cert="crypto/peers/peer1.org1.example.com/tls/ca.crt" + + fi + + if [ -z "$peer_address" ]; then + echo "Unknown peer: $peer_domain" + exit 1 + fi + + # 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.example.com-cert.pem" + fi + if [ "$2" = "my-channel2" ]; then + ca_cert="crypto-orderer/tlsca.orderer2.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 29a87ace3..789689f78 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 @@ -1785,6 +1785,66 @@ chaincodeInvoke() { peerChaincodeInvokeTls "$cli" "$peer_addresses" "$2" "$3" "$4" "$5" "$peer_certs" "$ca_cert" } + +# Function to perform chaincode query for single peer +# Accepts 4-5 parameters: +# 1. single peer domain +# 2. channel name +# 3. chaincode name +# 4. chaincode command +# 5. transient data (optional) +chaincodeQuery() { + if [ "$#" -ne 4 ] && [ "$#" -ne 5 ]; then + echo "Expected 4 or 5 parameters for chaincode query, but got: $*" + echo "Usage: fablo chaincode query [transient]" + exit 1 + fi + + peer_domain="$1" + channel_name="$2" + chaincode_name="$3" + command="$4" + transient="$5" + + cli="" + peer_address="" + + peer_cert="" + + if [ "$peer_domain" = "peer0.org1.example.com" ]; then + cli="cli.org1.example.com" + peer_address="peer0.org1.example.com:7041" + + peer_cert="crypto/peers/peer0.org1.example.com/tls/ca.crt" + + fi + if [ "$peer_domain" = "peer1.org1.example.com" ]; then + cli="cli.org1.example.com" + peer_address="peer1.org1.example.com:7042" + + peer_cert="crypto/peers/peer1.org1.example.com/tls/ca.crt" + + fi + + if [ -z "$peer_address" ]; then + echo "Unknown peer: $peer_domain" + exit 1 + fi + + # 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/src/setup-docker/templates/fabric-docker/chaincode-scripts.sh b/src/setup-docker/templates/fabric-docker/chaincode-scripts.sh index 22acc8889..e66914869 100755 --- a/src/setup-docker/templates/fabric-docker/chaincode-scripts.sh +++ b/src/setup-docker/templates/fabric-docker/chaincode-scripts.sh @@ -76,4 +76,67 @@ chaincodeInvoke() { peerChaincodeInvokeTls "$cli" "$peer_addresses" "$2" "$3" "$4" "$5" "$peer_certs" "$ca_cert" <% } -%> +} + +# Function to perform chaincode query for single peer +# Accepts 4-5 parameters: +# 1. single peer domain +# 2. channel name +# 3. chaincode name +# 4. chaincode command +# 5. transient data (optional) +chaincodeQuery() { + if [ "$#" -ne 4 ] && [ "$#" -ne 5 ]; then + echo "Expected 4 or 5 parameters for chaincode query, but got: $*" + echo "Usage: fablo chaincode query [transient]" + exit 1 + fi + + peer_domain="$1" + channel_name="$2" + chaincode_name="$3" + command="$4" + transient="$5" + + cli="" + peer_address="" + <% if (global.tls) { %> + peer_cert="" + <% } %> + + <% orgs.forEach((org) => { -%> + <% org.peers.forEach((peer) => { -%> + if [ "$peer_domain" = "<%= peer.address %>" ]; then + cli="<%= org.cli.address %>" + peer_address="<%= peer.fullAddress %>" + <% if(global.tls) { %> + peer_cert="crypto/peers/<%= peer.address %>/tls/ca.crt" + <% } %> + fi + <% }) -%> + <% }) -%> + + if [ -z "$peer_address" ]; then + echo "Unknown peer: $peer_domain" + exit 1 + fi + + <% if(!global.tls) { %> + peerChaincodeQuery "$cli" "$peer_address" "$channel_name" "$chaincode_name" "$command" "$transient" + <% } 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.<%= 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 From f404e95f3e0536e95e3d58b2a98d95c252da5024 Mon Sep 17 00:00:00 2001 From: Pereowei Daniel Date: Fri, 10 Oct 2025 19:49:16 +0200 Subject: [PATCH 11/13] fix-gateway runner Signed-off-by: Pereowei Daniel --- e2e-network/docker/test-05-v3.sh | 10 +- e2e/__snapshots__/extendConfig.test.ts.snap | 817 +++----- ...ig-hlf3-1orgs-1chaincode.json.test.ts.snap | 1692 ++++------------- .../fablo-config-hlf3-1orgs-1chaincode.json | 32 +- 4 files changed, 679 insertions(+), 1872 deletions(-) diff --git a/e2e-network/docker/test-05-v3.sh b/e2e-network/docker/test-05-v3.sh index 16460f815..4aece4c7d 100755 --- a/e2e-network/docker/test-05-v3.sh +++ b/e2e-network/docker/test-05-v3.sh @@ -55,15 +55,15 @@ trap 'networkDown ; echo "Test failed" ; exit 1' ERR SIGINT # start the network networkUp -waitForContainer "orderer0.group1.orderer1.example.com" "Starting raft node as part of a new channel channel=my-channel1" -waitForContainer "orderer0.group2.orderer2.example.com" "Starting raft node as part of a new channel channel=my-channel2" +waitForContainer "orderer0.group1.orderer.example.com" "Starting raft node as part of a new channel channel=my-channel1" waitForContainer "ca.org1.example.com" "Listening on https://0.0.0.0:7054" waitForContainer "peer0.org1.example.com" "Joining gossip network of channel my-channel1 with 1 organizations" -waitForContainer "peer1.org1.example.com" "Joining gossip network of channel my-channel2 with 1 organizations" +waitForContainer "peer1.org1.example.com" "Joining gossip network of channel my-channel1 with 1 organizations" waitForContainer "peer0.org1.example.com" "Learning about the configured anchor peers of Org1MSP for channel my-channel1" waitForContainer "peer0.org1.example.com" "Anchor peer.*with same endpoint, skipping connecting to myself" -waitForContainer "peer1.org1.example.com" "Learning about the configured anchor peers of Org1MSP for channel my-channel2" -waitForContainer "peer1.org1.example.com" "Anchor peer.*with same endpoint, skipping connecting to myself" +waitForContainer "peer0.org1.example.com" "Membership view has changed. peers went online:.*peer1.org1.example.com:7042" +waitForContainer "peer1.org1.example.com" "Learning about the configured anchor peers of Org1MSP for channel my-channel1" +waitForContainer "peer1.org1.example.com" "Membership view has changed. peers went online:.*peer0.org1.example.com:7041" # Gateway client test GATEWAY_CLIENT_DIR="$FABLO_HOME/samples/gateway/node" diff --git a/e2e/__snapshots__/extendConfig.test.ts.snap b/e2e/__snapshots__/extendConfig.test.ts.snap index 0a6b1e249..ab86228cb 100644 --- a/e2e/__snapshots__/extendConfig.test.ts.snap +++ b/e2e/__snapshots__/extendConfig.test.ts.snap @@ -10553,36 +10553,36 @@ exports[`extend config samples/fablo-config-hlf3-1orgs-1chaincode.json 1`] = ` "anchorPeers": [ { "address": "peer0.org1.example.com", - "couchDbExposePort": 5120, + "couchDbExposePort": 5100, "db": { "type": "LevelDb", }, - "fullAddress": "peer0.org1.example.com:7061", + "fullAddress": "peer0.org1.example.com:7041", "gatewayEnabled": true, "isAnchorPeer": true, "name": "peer0", - "port": 7061, + "port": 7041, }, { "address": "peer1.org1.example.com", - "couchDbExposePort": 5121, + "couchDbExposePort": 5101, "db": { "type": "LevelDb", }, - "fullAddress": "peer1.org1.example.com:7062", + "fullAddress": "peer1.org1.example.com:7042", "gatewayEnabled": true, "isAnchorPeer": true, "name": "peer1", - "port": 7062, + "port": 7042, }, ], - "bootstrapPeers": ""peer0.org1.example.com:7061 peer1.org1.example.com:7062"", + "bootstrapPeers": ""peer0.org1.example.com:7041 peer1.org1.example.com:7042"", "ca": { "address": "ca.org1.example.com", "caAdminNameVar": "ORG1_CA_ADMIN_NAME", "caAdminPassVar": "ORG1_CA_ADMIN_PASSWORD", "db": "sqlite", - "exposePort": 7060, + "exposePort": 7040, "fullAddress": "ca.org1.example.com:7054", "port": 7054, "prefix": "ca", @@ -10594,15 +10594,15 @@ exports[`extend config samples/fablo-config-hlf3-1orgs-1chaincode.json 1`] = ` "domain": "org1.example.com", "headPeer": { "address": "peer0.org1.example.com", - "couchDbExposePort": 5120, + "couchDbExposePort": 5100, "db": { "type": "LevelDb", }, - "fullAddress": "peer0.org1.example.com:7061", + "fullAddress": "peer0.org1.example.com:7041", "gatewayEnabled": true, "isAnchorPeer": true, "name": "peer0", - "port": 7061, + "port": 7041, }, "mspName": "Org1MSP", "name": "Org1", @@ -10610,27 +10610,27 @@ exports[`extend config samples/fablo-config-hlf3-1orgs-1chaincode.json 1`] = ` "peers": [ { "address": "peer0.org1.example.com", - "couchDbExposePort": 5120, + "couchDbExposePort": 5100, "db": { "type": "LevelDb", }, - "fullAddress": "peer0.org1.example.com:7061", + "fullAddress": "peer0.org1.example.com:7041", "gatewayEnabled": true, "isAnchorPeer": true, "name": "peer0", - "port": 7061, + "port": 7041, }, { "address": "peer1.org1.example.com", - "couchDbExposePort": 5121, + "couchDbExposePort": 5101, "db": { "type": "LevelDb", }, - "fullAddress": "peer1.org1.example.com:7062", + "fullAddress": "peer1.org1.example.com:7042", "gatewayEnabled": true, "isAnchorPeer": true, "name": "peer1", - "port": 7062, + "port": 7042, }, ], "peersCount": 2, @@ -10642,79 +10642,90 @@ exports[`extend config samples/fablo-config-hlf3-1orgs-1chaincode.json 1`] = ` "consensus": "etcdraft", "genesisBlockName": "Group1Genesis.block", "hostingOrgs": [ - "Orderer1", + "Orderer", ], "name": "group1", "ordererHead": { - "address": "orderer0.group1.orderer1.example.com", + "address": "orderer0.group1.orderer.example.com", "adminPort": 7053, "consensus": "etcdraft", - "domain": "orderer1.example.com", - "fullAddress": "orderer0.group1.orderer1.example.com:7030", + "domain": "orderer.example.com", + "fullAddress": "orderer0.group1.orderer.example.com:7030", "name": "orderer0.group1", - "orgMspName": "Orderer1MSP", - "orgName": "Orderer1", + "orgMspName": "OrdererMSP", + "orgName": "Orderer", "port": 7030, }, "ordererHeads": [ { - "address": "orderer0.group1.orderer1.example.com", + "address": "orderer0.group1.orderer.example.com", "adminPort": 7053, "consensus": "etcdraft", - "domain": "orderer1.example.com", - "fullAddress": "orderer0.group1.orderer1.example.com:7030", + "domain": "orderer.example.com", + "fullAddress": "orderer0.group1.orderer.example.com:7030", "name": "orderer0.group1", - "orgMspName": "Orderer1MSP", - "orgName": "Orderer1", + "orgMspName": "OrdererMSP", + "orgName": "Orderer", "port": 7030, }, ], "orderers": [ { - "address": "orderer0.group1.orderer1.example.com", + "address": "orderer0.group1.orderer.example.com", "adminPort": 7053, "consensus": "etcdraft", - "domain": "orderer1.example.com", - "fullAddress": "orderer0.group1.orderer1.example.com:7030", + "domain": "orderer.example.com", + "fullAddress": "orderer0.group1.orderer.example.com:7030", "name": "orderer0.group1", - "orgMspName": "Orderer1MSP", - "orgName": "Orderer1", + "orgMspName": "OrdererMSP", + "orgName": "Orderer", "port": 7030, }, { - "address": "orderer1.group1.orderer1.example.com", + "address": "orderer1.group1.orderer.example.com", "adminPort": 7053, "consensus": "etcdraft", - "domain": "orderer1.example.com", - "fullAddress": "orderer1.group1.orderer1.example.com:7031", + "domain": "orderer.example.com", + "fullAddress": "orderer1.group1.orderer.example.com:7031", "name": "orderer1.group1", - "orgMspName": "Orderer1MSP", - "orgName": "Orderer1", + "orgMspName": "OrdererMSP", + "orgName": "Orderer", "port": 7031, }, { - "address": "orderer2.group1.orderer1.example.com", + "address": "orderer2.group1.orderer.example.com", "adminPort": 7053, "consensus": "etcdraft", - "domain": "orderer1.example.com", - "fullAddress": "orderer2.group1.orderer1.example.com:7032", + "domain": "orderer.example.com", + "fullAddress": "orderer2.group1.orderer.example.com:7032", "name": "orderer2.group1", - "orgMspName": "Orderer1MSP", - "orgName": "Orderer1", + "orgMspName": "OrdererMSP", + "orgName": "Orderer", "port": 7032, }, + { + "address": "orderer3.group1.orderer.example.com", + "adminPort": 7053, + "consensus": "etcdraft", + "domain": "orderer.example.com", + "fullAddress": "orderer3.group1.orderer.example.com:7033", + "name": "orderer3.group1", + "orgMspName": "OrdererMSP", + "orgName": "Orderer", + "port": 7033, + }, ], "profileName": "Group1Genesis", }, "ordererHead": { - "address": "orderer0.group1.orderer1.example.com", + "address": "orderer0.group1.orderer.example.com", "adminPort": 7053, "consensus": "etcdraft", - "domain": "orderer1.example.com", - "fullAddress": "orderer0.group1.orderer1.example.com:7030", + "domain": "orderer.example.com", + "fullAddress": "orderer0.group1.orderer.example.com:7030", "name": "orderer0.group1", - "orgMspName": "Orderer1MSP", - "orgName": "Orderer1", + "orgMspName": "OrdererMSP", + "orgName": "Orderer", "port": 7030, }, "orgs": [ @@ -10722,36 +10733,36 @@ exports[`extend config samples/fablo-config-hlf3-1orgs-1chaincode.json 1`] = ` "anchorPeers": [ { "address": "peer0.org1.example.com", - "couchDbExposePort": 5120, + "couchDbExposePort": 5100, "db": { "type": "LevelDb", }, - "fullAddress": "peer0.org1.example.com:7061", + "fullAddress": "peer0.org1.example.com:7041", "gatewayEnabled": true, "isAnchorPeer": true, "name": "peer0", - "port": 7061, + "port": 7041, }, { "address": "peer1.org1.example.com", - "couchDbExposePort": 5121, + "couchDbExposePort": 5101, "db": { "type": "LevelDb", }, - "fullAddress": "peer1.org1.example.com:7062", + "fullAddress": "peer1.org1.example.com:7042", "gatewayEnabled": true, "isAnchorPeer": true, "name": "peer1", - "port": 7062, + "port": 7042, }, ], - "bootstrapPeers": ""peer0.org1.example.com:7061 peer1.org1.example.com:7062"", + "bootstrapPeers": ""peer0.org1.example.com:7041 peer1.org1.example.com:7042"", "ca": { "address": "ca.org1.example.com", "caAdminNameVar": "ORG1_CA_ADMIN_NAME", "caAdminPassVar": "ORG1_CA_ADMIN_PASSWORD", "db": "sqlite", - "exposePort": 7060, + "exposePort": 7040, "fullAddress": "ca.org1.example.com:7054", "port": 7054, "prefix": "ca", @@ -10763,15 +10774,15 @@ exports[`extend config samples/fablo-config-hlf3-1orgs-1chaincode.json 1`] = ` "domain": "org1.example.com", "headPeer": { "address": "peer0.org1.example.com", - "couchDbExposePort": 5120, + "couchDbExposePort": 5100, "db": { "type": "LevelDb", }, - "fullAddress": "peer0.org1.example.com:7061", + "fullAddress": "peer0.org1.example.com:7041", "gatewayEnabled": true, "isAnchorPeer": true, "name": "peer0", - "port": 7061, + "port": 7041, }, "mspName": "Org1MSP", "name": "Org1", @@ -10779,27 +10790,27 @@ exports[`extend config samples/fablo-config-hlf3-1orgs-1chaincode.json 1`] = ` "peers": [ { "address": "peer0.org1.example.com", - "couchDbExposePort": 5120, + "couchDbExposePort": 5100, "db": { "type": "LevelDb", }, - "fullAddress": "peer0.org1.example.com:7061", + "fullAddress": "peer0.org1.example.com:7041", "gatewayEnabled": true, "isAnchorPeer": true, "name": "peer0", - "port": 7061, + "port": 7041, }, { "address": "peer1.org1.example.com", - "couchDbExposePort": 5121, + "couchDbExposePort": 5101, "db": { "type": "LevelDb", }, - "fullAddress": "peer1.org1.example.com:7062", + "fullAddress": "peer1.org1.example.com:7042", "gatewayEnabled": true, "isAnchorPeer": true, "name": "peer1", - "port": 7062, + "port": 7042, }, ], "peersCount": 2, @@ -10816,36 +10827,36 @@ exports[`extend config samples/fablo-config-hlf3-1orgs-1chaincode.json 1`] = ` "anchorPeers": [ { "address": "peer0.org1.example.com", - "couchDbExposePort": 5120, + "couchDbExposePort": 5100, "db": { "type": "LevelDb", }, - "fullAddress": "peer0.org1.example.com:7061", + "fullAddress": "peer0.org1.example.com:7041", "gatewayEnabled": true, "isAnchorPeer": true, "name": "peer0", - "port": 7061, + "port": 7041, }, { "address": "peer1.org1.example.com", - "couchDbExposePort": 5121, + "couchDbExposePort": 5101, "db": { "type": "LevelDb", }, - "fullAddress": "peer1.org1.example.com:7062", + "fullAddress": "peer1.org1.example.com:7042", "gatewayEnabled": true, "isAnchorPeer": true, "name": "peer1", - "port": 7062, + "port": 7042, }, ], - "bootstrapPeers": ""peer0.org1.example.com:7061 peer1.org1.example.com:7062"", + "bootstrapPeers": ""peer0.org1.example.com:7041 peer1.org1.example.com:7042"", "ca": { "address": "ca.org1.example.com", "caAdminNameVar": "ORG1_CA_ADMIN_NAME", "caAdminPassVar": "ORG1_CA_ADMIN_PASSWORD", "db": "sqlite", - "exposePort": 7060, + "exposePort": 7040, "fullAddress": "ca.org1.example.com:7054", "port": 7054, "prefix": "ca", @@ -10857,15 +10868,15 @@ exports[`extend config samples/fablo-config-hlf3-1orgs-1chaincode.json 1`] = ` "domain": "org1.example.com", "headPeer": { "address": "peer0.org1.example.com", - "couchDbExposePort": 5120, + "couchDbExposePort": 5100, "db": { "type": "LevelDb", }, - "fullAddress": "peer0.org1.example.com:7061", + "fullAddress": "peer0.org1.example.com:7041", "gatewayEnabled": true, "isAnchorPeer": true, "name": "peer0", - "port": 7061, + "port": 7041, }, "mspName": "Org1MSP", "name": "Org1", @@ -10873,27 +10884,27 @@ exports[`extend config samples/fablo-config-hlf3-1orgs-1chaincode.json 1`] = ` "peers": [ { "address": "peer0.org1.example.com", - "couchDbExposePort": 5120, + "couchDbExposePort": 5100, "db": { "type": "LevelDb", }, - "fullAddress": "peer0.org1.example.com:7061", + "fullAddress": "peer0.org1.example.com:7041", "gatewayEnabled": true, "isAnchorPeer": true, "name": "peer0", - "port": 7061, + "port": 7041, }, { "address": "peer1.org1.example.com", - "couchDbExposePort": 5121, + "couchDbExposePort": 5101, "db": { "type": "LevelDb", }, - "fullAddress": "peer1.org1.example.com:7062", + "fullAddress": "peer1.org1.example.com:7042", "gatewayEnabled": true, "isAnchorPeer": true, "name": "peer1", - "port": 7062, + "port": 7042, }, ], "peersCount": 2, @@ -10913,36 +10924,36 @@ exports[`extend config samples/fablo-config-hlf3-1orgs-1chaincode.json 1`] = ` "anchorPeers": [ { "address": "peer0.org1.example.com", - "couchDbExposePort": 5120, + "couchDbExposePort": 5100, "db": { "type": "LevelDb", }, - "fullAddress": "peer0.org1.example.com:7061", + "fullAddress": "peer0.org1.example.com:7041", "gatewayEnabled": true, "isAnchorPeer": true, "name": "peer0", - "port": 7061, + "port": 7041, }, { "address": "peer1.org1.example.com", - "couchDbExposePort": 5121, + "couchDbExposePort": 5101, "db": { "type": "LevelDb", }, - "fullAddress": "peer1.org1.example.com:7062", + "fullAddress": "peer1.org1.example.com:7042", "gatewayEnabled": true, "isAnchorPeer": true, "name": "peer1", - "port": 7062, + "port": 7042, }, ], - "bootstrapPeers": ""peer0.org1.example.com:7061 peer1.org1.example.com:7062"", + "bootstrapPeers": ""peer0.org1.example.com:7041 peer1.org1.example.com:7042"", "ca": { "address": "ca.org1.example.com", "caAdminNameVar": "ORG1_CA_ADMIN_NAME", "caAdminPassVar": "ORG1_CA_ADMIN_PASSWORD", "db": "sqlite", - "exposePort": 7060, + "exposePort": 7040, "fullAddress": "ca.org1.example.com:7054", "port": 7054, "prefix": "ca", @@ -10954,15 +10965,15 @@ exports[`extend config samples/fablo-config-hlf3-1orgs-1chaincode.json 1`] = ` "domain": "org1.example.com", "headPeer": { "address": "peer0.org1.example.com", - "couchDbExposePort": 5120, + "couchDbExposePort": 5100, "db": { "type": "LevelDb", }, - "fullAddress": "peer0.org1.example.com:7061", + "fullAddress": "peer0.org1.example.com:7041", "gatewayEnabled": true, "isAnchorPeer": true, "name": "peer0", - "port": 7061, + "port": 7041, }, "mspName": "Org1MSP", "name": "Org1", @@ -10970,27 +10981,27 @@ exports[`extend config samples/fablo-config-hlf3-1orgs-1chaincode.json 1`] = ` "peers": [ { "address": "peer0.org1.example.com", - "couchDbExposePort": 5120, + "couchDbExposePort": 5100, "db": { "type": "LevelDb", }, - "fullAddress": "peer0.org1.example.com:7061", + "fullAddress": "peer0.org1.example.com:7041", "gatewayEnabled": true, "isAnchorPeer": true, "name": "peer0", - "port": 7061, + "port": 7041, }, { "address": "peer1.org1.example.com", - "couchDbExposePort": 5121, + "couchDbExposePort": 5101, "db": { "type": "LevelDb", }, - "fullAddress": "peer1.org1.example.com:7062", + "fullAddress": "peer1.org1.example.com:7042", "gatewayEnabled": true, "isAnchorPeer": true, "name": "peer1", - "port": 7062, + "port": 7042, }, ], "peersCount": 2, @@ -11002,79 +11013,90 @@ exports[`extend config samples/fablo-config-hlf3-1orgs-1chaincode.json 1`] = ` "consensus": "etcdraft", "genesisBlockName": "Group1Genesis.block", "hostingOrgs": [ - "Orderer1", + "Orderer", ], "name": "group1", "ordererHead": { - "address": "orderer0.group1.orderer1.example.com", + "address": "orderer0.group1.orderer.example.com", "adminPort": 7053, "consensus": "etcdraft", - "domain": "orderer1.example.com", - "fullAddress": "orderer0.group1.orderer1.example.com:7030", + "domain": "orderer.example.com", + "fullAddress": "orderer0.group1.orderer.example.com:7030", "name": "orderer0.group1", - "orgMspName": "Orderer1MSP", - "orgName": "Orderer1", + "orgMspName": "OrdererMSP", + "orgName": "Orderer", "port": 7030, }, "ordererHeads": [ { - "address": "orderer0.group1.orderer1.example.com", + "address": "orderer0.group1.orderer.example.com", "adminPort": 7053, "consensus": "etcdraft", - "domain": "orderer1.example.com", - "fullAddress": "orderer0.group1.orderer1.example.com:7030", + "domain": "orderer.example.com", + "fullAddress": "orderer0.group1.orderer.example.com:7030", "name": "orderer0.group1", - "orgMspName": "Orderer1MSP", - "orgName": "Orderer1", + "orgMspName": "OrdererMSP", + "orgName": "Orderer", "port": 7030, }, ], "orderers": [ { - "address": "orderer0.group1.orderer1.example.com", + "address": "orderer0.group1.orderer.example.com", "adminPort": 7053, "consensus": "etcdraft", - "domain": "orderer1.example.com", - "fullAddress": "orderer0.group1.orderer1.example.com:7030", + "domain": "orderer.example.com", + "fullAddress": "orderer0.group1.orderer.example.com:7030", "name": "orderer0.group1", - "orgMspName": "Orderer1MSP", - "orgName": "Orderer1", + "orgMspName": "OrdererMSP", + "orgName": "Orderer", "port": 7030, }, { - "address": "orderer1.group1.orderer1.example.com", + "address": "orderer1.group1.orderer.example.com", "adminPort": 7053, "consensus": "etcdraft", - "domain": "orderer1.example.com", - "fullAddress": "orderer1.group1.orderer1.example.com:7031", + "domain": "orderer.example.com", + "fullAddress": "orderer1.group1.orderer.example.com:7031", "name": "orderer1.group1", - "orgMspName": "Orderer1MSP", - "orgName": "Orderer1", + "orgMspName": "OrdererMSP", + "orgName": "Orderer", "port": 7031, }, { - "address": "orderer2.group1.orderer1.example.com", + "address": "orderer2.group1.orderer.example.com", "adminPort": 7053, "consensus": "etcdraft", - "domain": "orderer1.example.com", - "fullAddress": "orderer2.group1.orderer1.example.com:7032", + "domain": "orderer.example.com", + "fullAddress": "orderer2.group1.orderer.example.com:7032", "name": "orderer2.group1", - "orgMspName": "Orderer1MSP", - "orgName": "Orderer1", + "orgMspName": "OrdererMSP", + "orgName": "Orderer", "port": 7032, }, + { + "address": "orderer3.group1.orderer.example.com", + "adminPort": 7053, + "consensus": "etcdraft", + "domain": "orderer.example.com", + "fullAddress": "orderer3.group1.orderer.example.com:7033", + "name": "orderer3.group1", + "orgMspName": "OrdererMSP", + "orgName": "Orderer", + "port": 7033, + }, ], "profileName": "Group1Genesis", }, "ordererHead": { - "address": "orderer0.group1.orderer1.example.com", + "address": "orderer0.group1.orderer.example.com", "adminPort": 7053, "consensus": "etcdraft", - "domain": "orderer1.example.com", - "fullAddress": "orderer0.group1.orderer1.example.com:7030", + "domain": "orderer.example.com", + "fullAddress": "orderer0.group1.orderer.example.com:7030", "name": "orderer0.group1", - "orgMspName": "Orderer1MSP", - "orgName": "Orderer1", + "orgMspName": "OrdererMSP", + "orgName": "Orderer", "port": 7030, }, "orgs": [ @@ -11082,36 +11104,36 @@ exports[`extend config samples/fablo-config-hlf3-1orgs-1chaincode.json 1`] = ` "anchorPeers": [ { "address": "peer0.org1.example.com", - "couchDbExposePort": 5120, + "couchDbExposePort": 5100, "db": { "type": "LevelDb", }, - "fullAddress": "peer0.org1.example.com:7061", + "fullAddress": "peer0.org1.example.com:7041", "gatewayEnabled": true, "isAnchorPeer": true, "name": "peer0", - "port": 7061, + "port": 7041, }, { "address": "peer1.org1.example.com", - "couchDbExposePort": 5121, + "couchDbExposePort": 5101, "db": { "type": "LevelDb", }, - "fullAddress": "peer1.org1.example.com:7062", + "fullAddress": "peer1.org1.example.com:7042", "gatewayEnabled": true, "isAnchorPeer": true, "name": "peer1", - "port": 7062, + "port": 7042, }, ], - "bootstrapPeers": ""peer0.org1.example.com:7061 peer1.org1.example.com:7062"", + "bootstrapPeers": ""peer0.org1.example.com:7041 peer1.org1.example.com:7042"", "ca": { "address": "ca.org1.example.com", "caAdminNameVar": "ORG1_CA_ADMIN_NAME", "caAdminPassVar": "ORG1_CA_ADMIN_PASSWORD", "db": "sqlite", - "exposePort": 7060, + "exposePort": 7040, "fullAddress": "ca.org1.example.com:7054", "port": 7054, "prefix": "ca", @@ -11123,15 +11145,15 @@ exports[`extend config samples/fablo-config-hlf3-1orgs-1chaincode.json 1`] = ` "domain": "org1.example.com", "headPeer": { "address": "peer0.org1.example.com", - "couchDbExposePort": 5120, + "couchDbExposePort": 5100, "db": { "type": "LevelDb", }, - "fullAddress": "peer0.org1.example.com:7061", + "fullAddress": "peer0.org1.example.com:7041", "gatewayEnabled": true, "isAnchorPeer": true, "name": "peer0", - "port": 7061, + "port": 7041, }, "mspName": "Org1MSP", "name": "Org1", @@ -11139,27 +11161,27 @@ exports[`extend config samples/fablo-config-hlf3-1orgs-1chaincode.json 1`] = ` "peers": [ { "address": "peer0.org1.example.com", - "couchDbExposePort": 5120, + "couchDbExposePort": 5100, "db": { "type": "LevelDb", }, - "fullAddress": "peer0.org1.example.com:7061", + "fullAddress": "peer0.org1.example.com:7041", "gatewayEnabled": true, "isAnchorPeer": true, "name": "peer0", - "port": 7061, + "port": 7041, }, { "address": "peer1.org1.example.com", - "couchDbExposePort": 5121, + "couchDbExposePort": 5101, "db": { "type": "LevelDb", }, - "fullAddress": "peer1.org1.example.com:7062", + "fullAddress": "peer1.org1.example.com:7042", "gatewayEnabled": true, "isAnchorPeer": true, "name": "peer1", - "port": 7062, + "port": 7042, }, ], "peersCount": 2, @@ -11168,220 +11190,6 @@ exports[`extend config samples/fablo-config-hlf3-1orgs-1chaincode.json 1`] = ` ], "profileName": "MyChannel1", }, - { - "instantiatingOrg": { - "anchorPeers": [ - { - "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, - "db": { - "type": "LevelDb", - }, - "fullAddress": "peer1.org1.example.com:7062", - "gatewayEnabled": true, - "isAnchorPeer": true, - "name": "peer1", - "port": 7062, - }, - ], - "bootstrapPeers": ""peer0.org1.example.com:7061 peer1.org1.example.com:7062"", - "ca": { - "address": "ca.org1.example.com", - "caAdminNameVar": "ORG1_CA_ADMIN_NAME", - "caAdminPassVar": "ORG1_CA_ADMIN_PASSWORD", - "db": "sqlite", - "exposePort": 7060, - "fullAddress": "ca.org1.example.com:7054", - "port": 7054, - "prefix": "ca", - }, - "cli": { - "address": "cli.org1.example.com", - }, - "cryptoConfigFileName": "crypto-config-org1", - "domain": "org1.example.com", - "headPeer": { - "address": "peer1.org1.example.com", - "couchDbExposePort": 5121, - "db": { - "type": "LevelDb", - }, - "fullAddress": "peer1.org1.example.com:7062", - "gatewayEnabled": true, - "isAnchorPeer": true, - "name": "peer1", - "port": 7062, - }, - "mspName": "Org1MSP", - "name": "Org1", - "ordererGroups": [], - "peers": [ - { - "address": "peer1.org1.example.com", - "couchDbExposePort": 5121, - "db": { - "type": "LevelDb", - }, - "fullAddress": "peer1.org1.example.com:7062", - "gatewayEnabled": true, - "isAnchorPeer": true, - "name": "peer1", - "port": 7062, - }, - ], - "peersCount": 2, - "tools": {}, - }, - "name": "my-channel2", - "ordererGroup": { - "configtxOrdererDefaults": "Group2Defaults", - "consensus": "etcdraft", - "genesisBlockName": "Group2Genesis.block", - "hostingOrgs": [ - "Orderer2", - ], - "name": "group2", - "ordererHead": { - "address": "orderer0.group2.orderer2.example.com", - "adminPort": 7053, - "consensus": "etcdraft", - "domain": "orderer2.example.com", - "fullAddress": "orderer0.group2.orderer2.example.com:7050", - "name": "orderer0.group2", - "orgMspName": "Orderer2MSP", - "orgName": "Orderer2", - "port": 7050, - }, - "ordererHeads": [ - { - "address": "orderer0.group2.orderer2.example.com", - "adminPort": 7053, - "consensus": "etcdraft", - "domain": "orderer2.example.com", - "fullAddress": "orderer0.group2.orderer2.example.com:7050", - "name": "orderer0.group2", - "orgMspName": "Orderer2MSP", - "orgName": "Orderer2", - "port": 7050, - }, - ], - "orderers": [ - { - "address": "orderer0.group2.orderer2.example.com", - "adminPort": 7053, - "consensus": "etcdraft", - "domain": "orderer2.example.com", - "fullAddress": "orderer0.group2.orderer2.example.com:7050", - "name": "orderer0.group2", - "orgMspName": "Orderer2MSP", - "orgName": "Orderer2", - "port": 7050, - }, - ], - "profileName": "Group2Genesis", - }, - "ordererHead": { - "address": "orderer0.group2.orderer2.example.com", - "adminPort": 7053, - "consensus": "etcdraft", - "domain": "orderer2.example.com", - "fullAddress": "orderer0.group2.orderer2.example.com:7050", - "name": "orderer0.group2", - "orgMspName": "Orderer2MSP", - "orgName": "Orderer2", - "port": 7050, - }, - "orgs": [ - { - "anchorPeers": [ - { - "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, - "db": { - "type": "LevelDb", - }, - "fullAddress": "peer1.org1.example.com:7062", - "gatewayEnabled": true, - "isAnchorPeer": true, - "name": "peer1", - "port": 7062, - }, - ], - "bootstrapPeers": ""peer0.org1.example.com:7061 peer1.org1.example.com:7062"", - "ca": { - "address": "ca.org1.example.com", - "caAdminNameVar": "ORG1_CA_ADMIN_NAME", - "caAdminPassVar": "ORG1_CA_ADMIN_PASSWORD", - "db": "sqlite", - "exposePort": 7060, - "fullAddress": "ca.org1.example.com:7054", - "port": 7054, - "prefix": "ca", - }, - "cli": { - "address": "cli.org1.example.com", - }, - "cryptoConfigFileName": "crypto-config-org1", - "domain": "org1.example.com", - "headPeer": { - "address": "peer1.org1.example.com", - "couchDbExposePort": 5121, - "db": { - "type": "LevelDb", - }, - "fullAddress": "peer1.org1.example.com:7062", - "gatewayEnabled": true, - "isAnchorPeer": true, - "name": "peer1", - "port": 7062, - }, - "mspName": "Org1MSP", - "name": "Org1", - "ordererGroups": [], - "peers": [ - { - "address": "peer1.org1.example.com", - "couchDbExposePort": 5121, - "db": { - "type": "LevelDb", - }, - "fullAddress": "peer1.org1.example.com:7062", - "gatewayEnabled": true, - "isAnchorPeer": true, - "name": "peer1", - "port": 7062, - }, - ], - "peersCount": 2, - "tools": {}, - }, - ], - "profileName": "MyChannel2", - }, ], "global": { "capabilities": { @@ -11415,27 +11223,16 @@ exports[`extend config samples/fablo-config-hlf3-1orgs-1chaincode.json 1`] = ` }, "orderedHeadsDistinct": [ { - "address": "orderer0.group1.orderer1.example.com", + "address": "orderer0.group1.orderer.example.com", "adminPort": 7053, "consensus": "etcdraft", - "domain": "orderer1.example.com", - "fullAddress": "orderer0.group1.orderer1.example.com:7030", + "domain": "orderer.example.com", + "fullAddress": "orderer0.group1.orderer.example.com:7030", "name": "orderer0.group1", - "orgMspName": "Orderer1MSP", - "orgName": "Orderer1", + "orgMspName": "OrdererMSP", + "orgName": "Orderer", "port": 7030, }, - { - "address": "orderer0.group2.orderer2.example.com", - "adminPort": 7053, - "consensus": "etcdraft", - "domain": "orderer2.example.com", - "fullAddress": "orderer0.group2.orderer2.example.com:7050", - "name": "orderer0.group2", - "orgMspName": "Orderer2MSP", - "orgName": "Orderer2", - "port": 7050, - }, ], "ordererGroups": [ { @@ -11443,116 +11240,80 @@ exports[`extend config samples/fablo-config-hlf3-1orgs-1chaincode.json 1`] = ` "consensus": "etcdraft", "genesisBlockName": "Group1Genesis.block", "hostingOrgs": [ - "Orderer1", + "Orderer", ], "name": "group1", "ordererHead": { - "address": "orderer0.group1.orderer1.example.com", + "address": "orderer0.group1.orderer.example.com", "adminPort": 7053, "consensus": "etcdraft", - "domain": "orderer1.example.com", - "fullAddress": "orderer0.group1.orderer1.example.com:7030", + "domain": "orderer.example.com", + "fullAddress": "orderer0.group1.orderer.example.com:7030", "name": "orderer0.group1", - "orgMspName": "Orderer1MSP", - "orgName": "Orderer1", + "orgMspName": "OrdererMSP", + "orgName": "Orderer", "port": 7030, }, "ordererHeads": [ { - "address": "orderer0.group1.orderer1.example.com", + "address": "orderer0.group1.orderer.example.com", "adminPort": 7053, "consensus": "etcdraft", - "domain": "orderer1.example.com", - "fullAddress": "orderer0.group1.orderer1.example.com:7030", + "domain": "orderer.example.com", + "fullAddress": "orderer0.group1.orderer.example.com:7030", "name": "orderer0.group1", - "orgMspName": "Orderer1MSP", - "orgName": "Orderer1", + "orgMspName": "OrdererMSP", + "orgName": "Orderer", "port": 7030, }, ], "orderers": [ { - "address": "orderer0.group1.orderer1.example.com", + "address": "orderer0.group1.orderer.example.com", "adminPort": 7053, "consensus": "etcdraft", - "domain": "orderer1.example.com", - "fullAddress": "orderer0.group1.orderer1.example.com:7030", + "domain": "orderer.example.com", + "fullAddress": "orderer0.group1.orderer.example.com:7030", "name": "orderer0.group1", - "orgMspName": "Orderer1MSP", - "orgName": "Orderer1", + "orgMspName": "OrdererMSP", + "orgName": "Orderer", "port": 7030, }, { - "address": "orderer1.group1.orderer1.example.com", + "address": "orderer1.group1.orderer.example.com", "adminPort": 7053, "consensus": "etcdraft", - "domain": "orderer1.example.com", - "fullAddress": "orderer1.group1.orderer1.example.com:7031", + "domain": "orderer.example.com", + "fullAddress": "orderer1.group1.orderer.example.com:7031", "name": "orderer1.group1", - "orgMspName": "Orderer1MSP", - "orgName": "Orderer1", + "orgMspName": "OrdererMSP", + "orgName": "Orderer", "port": 7031, }, { - "address": "orderer2.group1.orderer1.example.com", + "address": "orderer2.group1.orderer.example.com", "adminPort": 7053, "consensus": "etcdraft", - "domain": "orderer1.example.com", - "fullAddress": "orderer2.group1.orderer1.example.com:7032", + "domain": "orderer.example.com", + "fullAddress": "orderer2.group1.orderer.example.com:7032", "name": "orderer2.group1", - "orgMspName": "Orderer1MSP", - "orgName": "Orderer1", + "orgMspName": "OrdererMSP", + "orgName": "Orderer", "port": 7032, }, - ], - "profileName": "Group1Genesis", - }, - { - "configtxOrdererDefaults": "Group2Defaults", - "consensus": "etcdraft", - "genesisBlockName": "Group2Genesis.block", - "hostingOrgs": [ - "Orderer2", - ], - "name": "group2", - "ordererHead": { - "address": "orderer0.group2.orderer2.example.com", - "adminPort": 7053, - "consensus": "etcdraft", - "domain": "orderer2.example.com", - "fullAddress": "orderer0.group2.orderer2.example.com:7050", - "name": "orderer0.group2", - "orgMspName": "Orderer2MSP", - "orgName": "Orderer2", - "port": 7050, - }, - "ordererHeads": [ - { - "address": "orderer0.group2.orderer2.example.com", - "adminPort": 7053, - "consensus": "etcdraft", - "domain": "orderer2.example.com", - "fullAddress": "orderer0.group2.orderer2.example.com:7050", - "name": "orderer0.group2", - "orgMspName": "Orderer2MSP", - "orgName": "Orderer2", - "port": 7050, - }, - ], - "orderers": [ { - "address": "orderer0.group2.orderer2.example.com", + "address": "orderer3.group1.orderer.example.com", "adminPort": 7053, "consensus": "etcdraft", - "domain": "orderer2.example.com", - "fullAddress": "orderer0.group2.orderer2.example.com:7050", - "name": "orderer0.group2", - "orgMspName": "Orderer2MSP", - "orgName": "Orderer2", - "port": 7050, + "domain": "orderer.example.com", + "fullAddress": "orderer3.group1.orderer.example.com:7033", + "name": "orderer3.group1", + "orgMspName": "OrdererMSP", + "orgName": "Orderer", + "port": 7033, }, ], - "profileName": "Group2Genesis", + "profileName": "Group1Genesis", }, ], "orgs": [ @@ -11560,144 +11321,92 @@ exports[`extend config samples/fablo-config-hlf3-1orgs-1chaincode.json 1`] = ` "anchorPeers": [], "bootstrapPeers": """", "ca": { - "address": "ca.orderer1.example.com", - "caAdminNameVar": "ORDERER1_CA_ADMIN_NAME", - "caAdminPassVar": "ORDERER1_CA_ADMIN_PASSWORD", + "address": "ca.orderer.example.com", + "caAdminNameVar": "ORDERER_CA_ADMIN_NAME", + "caAdminPassVar": "ORDERER_CA_ADMIN_PASSWORD", "db": "sqlite", "exposePort": 7020, - "fullAddress": "ca.orderer1.example.com:7054", + "fullAddress": "ca.orderer.example.com:7054", "port": 7054, "prefix": "ca", }, "cli": { - "address": "cli.orderer1.example.com", + "address": "cli.orderer.example.com", }, - "cryptoConfigFileName": "crypto-config-orderer1", - "domain": "orderer1.example.com", + "cryptoConfigFileName": "crypto-config-orderer", + "domain": "orderer.example.com", "headPeer": undefined, - "mspName": "Orderer1MSP", - "name": "Orderer1", + "mspName": "OrdererMSP", + "name": "Orderer", "ordererGroups": [ { "configtxOrdererDefaults": "Group1Defaults", "consensus": "etcdraft", "genesisBlockName": "Group1Genesis.block", "hostingOrgs": [ - "Orderer1", + "Orderer", ], "name": "group1", "ordererHeads": [ { - "address": "orderer0.group1.orderer1.example.com", + "address": "orderer0.group1.orderer.example.com", "adminPort": 7053, "consensus": "etcdraft", - "domain": "orderer1.example.com", - "fullAddress": "orderer0.group1.orderer1.example.com:7030", + "domain": "orderer.example.com", + "fullAddress": "orderer0.group1.orderer.example.com:7030", "name": "orderer0.group1", - "orgMspName": "Orderer1MSP", - "orgName": "Orderer1", + "orgMspName": "OrdererMSP", + "orgName": "Orderer", "port": 7030, }, ], "orderers": [ { - "address": "orderer0.group1.orderer1.example.com", + "address": "orderer0.group1.orderer.example.com", "adminPort": 7053, "consensus": "etcdraft", - "domain": "orderer1.example.com", - "fullAddress": "orderer0.group1.orderer1.example.com:7030", + "domain": "orderer.example.com", + "fullAddress": "orderer0.group1.orderer.example.com:7030", "name": "orderer0.group1", - "orgMspName": "Orderer1MSP", - "orgName": "Orderer1", + "orgMspName": "OrdererMSP", + "orgName": "Orderer", "port": 7030, }, { - "address": "orderer1.group1.orderer1.example.com", + "address": "orderer1.group1.orderer.example.com", "adminPort": 7053, "consensus": "etcdraft", - "domain": "orderer1.example.com", - "fullAddress": "orderer1.group1.orderer1.example.com:7031", + "domain": "orderer.example.com", + "fullAddress": "orderer1.group1.orderer.example.com:7031", "name": "orderer1.group1", - "orgMspName": "Orderer1MSP", - "orgName": "Orderer1", + "orgMspName": "OrdererMSP", + "orgName": "Orderer", "port": 7031, }, { - "address": "orderer2.group1.orderer1.example.com", + "address": "orderer2.group1.orderer.example.com", "adminPort": 7053, "consensus": "etcdraft", - "domain": "orderer1.example.com", - "fullAddress": "orderer2.group1.orderer1.example.com:7032", + "domain": "orderer.example.com", + "fullAddress": "orderer2.group1.orderer.example.com:7032", "name": "orderer2.group1", - "orgMspName": "Orderer1MSP", - "orgName": "Orderer1", + "orgMspName": "OrdererMSP", + "orgName": "Orderer", "port": 7032, }, - ], - "profileName": "Group1Genesis", - }, - ], - "peers": [], - "peersCount": 0, - "tools": {}, - }, - { - "anchorPeers": [], - "bootstrapPeers": """", - "ca": { - "address": "ca.orderer2.example.com", - "caAdminNameVar": "ORDERER2_CA_ADMIN_NAME", - "caAdminPassVar": "ORDERER2_CA_ADMIN_PASSWORD", - "db": "sqlite", - "exposePort": 7040, - "fullAddress": "ca.orderer2.example.com:7054", - "port": 7054, - "prefix": "ca", - }, - "cli": { - "address": "cli.orderer2.example.com", - }, - "cryptoConfigFileName": "crypto-config-orderer2", - "domain": "orderer2.example.com", - "headPeer": undefined, - "mspName": "Orderer2MSP", - "name": "Orderer2", - "ordererGroups": [ - { - "configtxOrdererDefaults": "Group2Defaults", - "consensus": "etcdraft", - "genesisBlockName": "Group2Genesis.block", - "hostingOrgs": [ - "Orderer2", - ], - "name": "group2", - "ordererHeads": [ - { - "address": "orderer0.group2.orderer2.example.com", - "adminPort": 7053, - "consensus": "etcdraft", - "domain": "orderer2.example.com", - "fullAddress": "orderer0.group2.orderer2.example.com:7050", - "name": "orderer0.group2", - "orgMspName": "Orderer2MSP", - "orgName": "Orderer2", - "port": 7050, - }, - ], - "orderers": [ { - "address": "orderer0.group2.orderer2.example.com", + "address": "orderer3.group1.orderer.example.com", "adminPort": 7053, "consensus": "etcdraft", - "domain": "orderer2.example.com", - "fullAddress": "orderer0.group2.orderer2.example.com:7050", - "name": "orderer0.group2", - "orgMspName": "Orderer2MSP", - "orgName": "Orderer2", - "port": 7050, + "domain": "orderer.example.com", + "fullAddress": "orderer3.group1.orderer.example.com:7033", + "name": "orderer3.group1", + "orgMspName": "OrdererMSP", + "orgName": "Orderer", + "port": 7033, }, ], - "profileName": "Group2Genesis", + "profileName": "Group1Genesis", }, ], "peers": [], @@ -11708,36 +11417,36 @@ exports[`extend config samples/fablo-config-hlf3-1orgs-1chaincode.json 1`] = ` "anchorPeers": [ { "address": "peer0.org1.example.com", - "couchDbExposePort": 5120, + "couchDbExposePort": 5100, "db": { "type": "LevelDb", }, - "fullAddress": "peer0.org1.example.com:7061", + "fullAddress": "peer0.org1.example.com:7041", "gatewayEnabled": true, "isAnchorPeer": true, "name": "peer0", - "port": 7061, + "port": 7041, }, { "address": "peer1.org1.example.com", - "couchDbExposePort": 5121, + "couchDbExposePort": 5101, "db": { "type": "LevelDb", }, - "fullAddress": "peer1.org1.example.com:7062", + "fullAddress": "peer1.org1.example.com:7042", "gatewayEnabled": true, "isAnchorPeer": true, "name": "peer1", - "port": 7062, + "port": 7042, }, ], - "bootstrapPeers": ""peer0.org1.example.com:7061 peer1.org1.example.com:7062"", + "bootstrapPeers": ""peer0.org1.example.com:7041 peer1.org1.example.com:7042"", "ca": { "address": "ca.org1.example.com", "caAdminNameVar": "ORG1_CA_ADMIN_NAME", "caAdminPassVar": "ORG1_CA_ADMIN_PASSWORD", "db": "sqlite", - "exposePort": 7060, + "exposePort": 7040, "fullAddress": "ca.org1.example.com:7054", "port": 7054, "prefix": "ca", @@ -11749,15 +11458,15 @@ exports[`extend config samples/fablo-config-hlf3-1orgs-1chaincode.json 1`] = ` "domain": "org1.example.com", "headPeer": { "address": "peer0.org1.example.com", - "couchDbExposePort": 5120, + "couchDbExposePort": 5100, "db": { "type": "LevelDb", }, - "fullAddress": "peer0.org1.example.com:7061", + "fullAddress": "peer0.org1.example.com:7041", "gatewayEnabled": true, "isAnchorPeer": true, "name": "peer0", - "port": 7061, + "port": 7041, }, "mspName": "Org1MSP", "name": "Org1", @@ -11765,27 +11474,27 @@ exports[`extend config samples/fablo-config-hlf3-1orgs-1chaincode.json 1`] = ` "peers": [ { "address": "peer0.org1.example.com", - "couchDbExposePort": 5120, + "couchDbExposePort": 5100, "db": { "type": "LevelDb", }, - "fullAddress": "peer0.org1.example.com:7061", + "fullAddress": "peer0.org1.example.com:7041", "gatewayEnabled": true, "isAnchorPeer": true, "name": "peer0", - "port": 7061, + "port": 7041, }, { "address": "peer1.org1.example.com", - "couchDbExposePort": 5121, + "couchDbExposePort": 5101, "db": { "type": "LevelDb", }, - "fullAddress": "peer1.org1.example.com:7062", + "fullAddress": "peer1.org1.example.com:7042", "gatewayEnabled": true, "isAnchorPeer": true, "name": "peer1", - "port": 7062, + "port": 7042, }, ], "peersCount": 2, 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 ec7441810..57f63990e 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 @@ -39,51 +39,28 @@ Channel: &ChannelDefaults # Section: Organizations ################################################################################ Organizations: - - &Orderer1 - Name: Orderer1MSP - ID: Orderer1MSP - MSPDir: crypto-config/peerOrganizations/orderer1.example.com/msp + - &Orderer + Name: OrdererMSP + ID: OrdererMSP + MSPDir: crypto-config/peerOrganizations/orderer.example.com/msp OrdererEndpoints: - - orderer0.group1.orderer1.example.com:7030 - - orderer1.group1.orderer1.example.com:7031 - - orderer2.group1.orderer1.example.com:7032 + - orderer0.group1.orderer.example.com:7030 + - orderer1.group1.orderer.example.com:7031 + - orderer2.group1.orderer.example.com:7032 + - orderer3.group1.orderer.example.com:7033 Policies: Readers: Type: Signature - Rule: "OR('Orderer1MSP.member')" + Rule: "OR('OrdererMSP.member')" Writers: Type: Signature - Rule: "OR('Orderer1MSP.member')" + Rule: "OR('OrdererMSP.member')" Admins: Type: Signature - Rule: "OR('Orderer1MSP.admin')" + Rule: "OR('OrdererMSP.admin')" Endorsement: Type: Signature - Rule: "OR('Orderer1MSP.member')" - - AnchorPeers: - - - &Orderer2 - Name: Orderer2MSP - ID: Orderer2MSP - MSPDir: crypto-config/peerOrganizations/orderer2.example.com/msp - OrdererEndpoints: - - orderer0.group1.orderer1.example.com:7030 - - orderer1.group1.orderer1.example.com:7031 - - orderer2.group1.orderer1.example.com:7032 - Policies: - Readers: - Type: Signature - Rule: "OR('Orderer2MSP.member')" - Writers: - Type: Signature - Rule: "OR('Orderer2MSP.member')" - Admins: - Type: Signature - Rule: "OR('Orderer2MSP.admin')" - Endorsement: - Type: Signature - Rule: "OR('Orderer2MSP.member')" + Rule: "OR('OrdererMSP.member')" AnchorPeers: @@ -92,9 +69,10 @@ Organizations: ID: Org1MSP MSPDir: crypto-config/peerOrganizations/org1.example.com/msp OrdererEndpoints: - - orderer0.group1.orderer1.example.com:7030 - - orderer1.group1.orderer1.example.com:7031 - - orderer2.group1.orderer1.example.com:7032 + - orderer0.group1.orderer.example.com:7030 + - orderer1.group1.orderer.example.com:7031 + - orderer2.group1.orderer.example.com:7032 + - orderer3.group1.orderer.example.com:7033 Policies: Readers: Type: Signature @@ -111,10 +89,10 @@ Organizations: AnchorPeers: - Host: peer0.org1.example.com - Port: 7061 + Port: 7041 - Host: peer1.org1.example.com - Port: 7062 + Port: 7042 ################################################################################ # SECTION: Application @@ -148,57 +126,25 @@ Orderer: &Group1Defaults EtcdRaft: Consenters: - - Host: orderer0.group1.orderer1.example.com + - Host: orderer0.group1.orderer.example.com Port: 7030 - ClientTLSCert: crypto-config/peerOrganizations/orderer1.example.com/peers/orderer0.group1.orderer1.example.com/tls/server.crt - ServerTLSCert: crypto-config/peerOrganizations/orderer1.example.com/peers/orderer0.group1.orderer1.example.com/tls/server.crt + ClientTLSCert: crypto-config/peerOrganizations/orderer.example.com/peers/orderer0.group1.orderer.example.com/tls/server.crt + ServerTLSCert: crypto-config/peerOrganizations/orderer.example.com/peers/orderer0.group1.orderer.example.com/tls/server.crt - - Host: orderer1.group1.orderer1.example.com + - Host: orderer1.group1.orderer.example.com Port: 7031 - ClientTLSCert: crypto-config/peerOrganizations/orderer1.example.com/peers/orderer1.group1.orderer1.example.com/tls/server.crt - ServerTLSCert: crypto-config/peerOrganizations/orderer1.example.com/peers/orderer1.group1.orderer1.example.com/tls/server.crt + ClientTLSCert: crypto-config/peerOrganizations/orderer.example.com/peers/orderer1.group1.orderer.example.com/tls/server.crt + ServerTLSCert: crypto-config/peerOrganizations/orderer.example.com/peers/orderer1.group1.orderer.example.com/tls/server.crt - - Host: orderer2.group1.orderer1.example.com + - Host: orderer2.group1.orderer.example.com Port: 7032 - ClientTLSCert: crypto-config/peerOrganizations/orderer1.example.com/peers/orderer2.group1.orderer1.example.com/tls/server.crt - ServerTLSCert: crypto-config/peerOrganizations/orderer1.example.com/peers/orderer2.group1.orderer1.example.com/tls/server.crt - - BatchTimeout: 2s - BatchSize: - MaxMessageCount: 10 - AbsoluteMaxBytes: 99 MB - PreferredMaxBytes: 512 KB - Organizations: - # Policies defines the set of policies at this level of the config tree - # For Orderer policies, their canonical path is - # /Channel/Orderer/ - Policies: - Readers: - Type: ImplicitMeta - Rule: "ANY Readers" - Writers: - Type: ImplicitMeta - Rule: "ANY Writers" - Admins: - Type: ImplicitMeta - Rule: "MAJORITY Admins" - # BlockValidation specifies what signatures must be included in the block - # from the orderer for the peer to validate it. - BlockValidation: - Type: ImplicitMeta - Rule: "ANY Writers" - Capabilities: - <<: *OrdererCapabilities + ClientTLSCert: crypto-config/peerOrganizations/orderer.example.com/peers/orderer2.group1.orderer.example.com/tls/server.crt + ServerTLSCert: crypto-config/peerOrganizations/orderer.example.com/peers/orderer2.group1.orderer.example.com/tls/server.crt -Orderer: &Group2Defaults - OrdererType: etcdraft - - EtcdRaft: - Consenters: - - Host: orderer0.group2.orderer2.example.com - Port: 7050 - ClientTLSCert: crypto-config/peerOrganizations/orderer2.example.com/peers/orderer0.group2.orderer2.example.com/tls/server.crt - ServerTLSCert: crypto-config/peerOrganizations/orderer2.example.com/peers/orderer0.group2.orderer2.example.com/tls/server.crt + - Host: orderer3.group1.orderer.example.com + Port: 7033 + ClientTLSCert: crypto-config/peerOrganizations/orderer.example.com/peers/orderer3.group1.orderer.example.com/tls/server.crt + ServerTLSCert: crypto-config/peerOrganizations/orderer.example.com/peers/orderer3.group1.orderer.example.com/tls/server.crt BatchTimeout: 2s BatchSize: @@ -239,16 +185,7 @@ Profiles: Orderer: <<: *Group1Defaults Organizations: - - *Orderer1 - Capabilities: - <<: *OrdererCapabilities - # Profile used to create Genesis block for group group2 # - Group2Genesis: - <<: *ChannelDefaults - Orderer: - <<: *Group2Defaults - Organizations: - - *Orderer2 + - *Orderer Capabilities: <<: *OrdererCapabilities @@ -258,19 +195,7 @@ Profiles: Orderer: <<: *Group1Defaults Organizations: - - *Orderer1 - Consortium: SampleConsortium - Application: - <<: *ApplicationDefaults - Organizations: - - *Org1 - # Profile used to create channeltx for my-channel2 # - MyChannel2: - <<: *ChannelDefaults - Orderer: - <<: *Group2Defaults - Organizations: - - *Orderer2 + - *Orderer Consortium: SampleConsortium Application: <<: *ApplicationDefaults @@ -279,29 +204,29 @@ Profiles: " `; -exports[`samples/fablo-config-hlf3-1orgs-1chaincode.json should create proper e2e/__tmp__/samples/fablo-config-hlf3-1orgs-1chaincode.json.tmpdir/fablo-target/fabric-config/connection-profiles/connection-profile-orderer1.json from samples/fablo-config-hlf3-1orgs-1chaincode.json 1`] = ` +exports[`samples/fablo-config-hlf3-1orgs-1chaincode.json should create proper e2e/__tmp__/samples/fablo-config-hlf3-1orgs-1chaincode.json.tmpdir/fablo-target/fabric-config/connection-profiles/connection-profile-orderer.json from samples/fablo-config-hlf3-1orgs-1chaincode.json 1`] = ` "{ - "name": "fablo-test-network-orderer1", - "description": "Connection profile for Orderer1 in Fablo network", + "name": "fablo-test-network-orderer", + "description": "Connection profile for Orderer in Fablo network", "version": "1.0.0", "client": { - "organization": "Orderer1" + "organization": "Orderer" }, "organizations": { - "Orderer1": { - "mspid": "Orderer1MSP", + "Orderer": { + "mspid": "OrdererMSP", "peers": [ "peer0.org1.example.com", "peer1.org1.example.com" ], "certificateAuthorities": [ - "ca.orderer1.example.com" + "ca.orderer.example.com" ] } }, "peers": { "peer0.org1.example.com": { - "url": "grpcs://localhost:7061", + "url": "grpcs://localhost:7041", "tlsCACerts": { "path": "/samples/fablo-target/fabric-config/crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt" }, @@ -310,7 +235,7 @@ exports[`samples/fablo-config-hlf3-1orgs-1chaincode.json should create proper e2 } }, "peer1.org1.example.com": { - "url": "grpcs://localhost:7062", + "url": "grpcs://localhost:7042", "tlsCACerts": { "path": "/samples/fablo-target/fabric-config/crypto-config/peerOrganizations/org1.example.com/peers/peer1.org1.example.com/tls/ca.crt" }, @@ -320,52 +245,52 @@ exports[`samples/fablo-config-hlf3-1orgs-1chaincode.json should create proper e2 } }, "certificateAuthorities": { - "ca.orderer1.example.com": { + "ca.orderer.example.com": { "url": "https://localhost:7020", - "caName": "ca.orderer1.example.com", + "caName": "ca.orderer.example.com", "httpOptions": { "verify": false }, "tlsCACerts": { - "path": "/samples/fablo-target/fabric-config/crypto-config/peerOrganizations/orderer1.example.com/ca/ca.orderer1.example.com-cert.pem" + "path": "/samples/fablo-target/fabric-config/crypto-config/peerOrganizations/orderer.example.com/ca/ca.orderer.example.com-cert.pem" } } }, "orderers": { - "orderer0.group1.orderer1.example.com": { + "orderer0.group1.orderer.example.com": { "url": "grpcs://localhost:7030", "tlsCACerts": { - "path": "/samples/fablo-target/fabric-config/crypto-config/ordererOrganizations/orderer1.example.com/orderers/orderer0.group1.orderer1.example.com/tls/ca.crt" + "path": "/samples/fablo-target/fabric-config/crypto-config/ordererOrganizations/orderer.example.com/orderers/orderer0.group1.orderer.example.com/tls/ca.crt" }, "grpcOptions": { - "ssl-target-name-override": "orderer0.group1.orderer1.example.com" + "ssl-target-name-override": "orderer0.group1.orderer.example.com" } }, - "orderer1.group1.orderer1.example.com": { + "orderer1.group1.orderer.example.com": { "url": "grpcs://localhost:7031", "tlsCACerts": { - "path": "/samples/fablo-target/fabric-config/crypto-config/ordererOrganizations/orderer1.example.com/orderers/orderer1.group1.orderer1.example.com/tls/ca.crt" + "path": "/samples/fablo-target/fabric-config/crypto-config/ordererOrganizations/orderer.example.com/orderers/orderer1.group1.orderer.example.com/tls/ca.crt" }, "grpcOptions": { - "ssl-target-name-override": "orderer1.group1.orderer1.example.com" + "ssl-target-name-override": "orderer1.group1.orderer.example.com" } }, - "orderer2.group1.orderer1.example.com": { + "orderer2.group1.orderer.example.com": { "url": "grpcs://localhost:7032", "tlsCACerts": { - "path": "/samples/fablo-target/fabric-config/crypto-config/ordererOrganizations/orderer1.example.com/orderers/orderer2.group1.orderer1.example.com/tls/ca.crt" + "path": "/samples/fablo-target/fabric-config/crypto-config/ordererOrganizations/orderer.example.com/orderers/orderer2.group1.orderer.example.com/tls/ca.crt" }, "grpcOptions": { - "ssl-target-name-override": "orderer2.group1.orderer1.example.com" + "ssl-target-name-override": "orderer2.group1.orderer.example.com" } }, - "orderer0.group2.orderer2.example.com": { - "url": "grpcs://localhost:7050", + "orderer3.group1.orderer.example.com": { + "url": "grpcs://localhost:7033", "tlsCACerts": { - "path": "/samples/fablo-target/fabric-config/crypto-config/ordererOrganizations/orderer2.example.com/orderers/orderer0.group2.orderer2.example.com/tls/ca.crt" + "path": "/samples/fablo-target/fabric-config/crypto-config/ordererOrganizations/orderer.example.com/orderers/orderer3.group1.orderer.example.com/tls/ca.crt" }, "grpcOptions": { - "ssl-target-name-override": "orderer0.group2.orderer2.example.com" + "ssl-target-name-override": "orderer3.group1.orderer.example.com" } } } @@ -373,972 +298,290 @@ exports[`samples/fablo-config-hlf3-1orgs-1chaincode.json should create proper e2 " `; -exports[`samples/fablo-config-hlf3-1orgs-1chaincode.json should create proper e2e/__tmp__/samples/fablo-config-hlf3-1orgs-1chaincode.json.tmpdir/fablo-target/fabric-config/connection-profiles/connection-profile-orderer1.yaml from samples/fablo-config-hlf3-1orgs-1chaincode.json 1`] = ` -"name: fablo-test-network-orderer1 -description: Connection profile for Orderer1 in Fablo network +exports[`samples/fablo-config-hlf3-1orgs-1chaincode.json should create proper e2e/__tmp__/samples/fablo-config-hlf3-1orgs-1chaincode.json.tmpdir/fablo-target/fabric-config/connection-profiles/connection-profile-orderer.yaml from samples/fablo-config-hlf3-1orgs-1chaincode.json 1`] = ` +"name: fablo-test-network-orderer +description: Connection profile for Orderer in Fablo network version: 1.0.0 client: - organization: Orderer1 + organization: Orderer organizations: - Orderer1: - mspid: Orderer1MSP + Orderer: + mspid: OrdererMSP peers: - peer0.org1.example.com - peer1.org1.example.com certificateAuthorities: - - ca.orderer1.example.com + - ca.orderer.example.com peers: peer0.org1.example.com: - url: grpcs://localhost:7061 + url: grpcs://localhost:7041 tlsCACerts: path: >- /samples/fablo-target/fabric-config/crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt grpcOptions: ssl-target-name-override: peer0.org1.example.com peer1.org1.example.com: - url: grpcs://localhost:7062 + url: grpcs://localhost:7042 tlsCACerts: path: >- /samples/fablo-target/fabric-config/crypto-config/peerOrganizations/org1.example.com/peers/peer1.org1.example.com/tls/ca.crt grpcOptions: ssl-target-name-override: peer1.org1.example.com certificateAuthorities: - ca.orderer1.example.com: + ca.orderer.example.com: url: https://localhost:7020 - caName: ca.orderer1.example.com - httpOptions: - verify: false - tlsCACerts: - path: >- - /samples/fablo-target/fabric-config/crypto-config/peerOrganizations/orderer1.example.com/ca/ca.orderer1.example.com-cert.pem -orderers: - orderer0.group1.orderer1.example.com: - url: grpcs://localhost:7030 - tlsCACerts: - path: >- - /samples/fablo-target/fabric-config/crypto-config/ordererOrganizations/orderer1.example.com/orderers/orderer0.group1.orderer1.example.com/tls/ca.crt - grpcOptions: - ssl-target-name-override: orderer0.group1.orderer1.example.com - orderer1.group1.orderer1.example.com: - url: grpcs://localhost:7031 - tlsCACerts: - path: >- - /samples/fablo-target/fabric-config/crypto-config/ordererOrganizations/orderer1.example.com/orderers/orderer1.group1.orderer1.example.com/tls/ca.crt - grpcOptions: - ssl-target-name-override: orderer1.group1.orderer1.example.com - orderer2.group1.orderer1.example.com: - url: grpcs://localhost:7032 - tlsCACerts: - path: >- - /samples/fablo-target/fabric-config/crypto-config/ordererOrganizations/orderer1.example.com/orderers/orderer2.group1.orderer1.example.com/tls/ca.crt - grpcOptions: - ssl-target-name-override: orderer2.group1.orderer1.example.com - orderer0.group2.orderer2.example.com: - url: grpcs://localhost:7050 - tlsCACerts: - path: >- - /samples/fablo-target/fabric-config/crypto-config/ordererOrganizations/orderer2.example.com/orderers/orderer0.group2.orderer2.example.com/tls/ca.crt - grpcOptions: - ssl-target-name-override: orderer0.group2.orderer2.example.com -" -`; - -exports[`samples/fablo-config-hlf3-1orgs-1chaincode.json should create proper e2e/__tmp__/samples/fablo-config-hlf3-1orgs-1chaincode.json.tmpdir/fablo-target/fabric-config/connection-profiles/connection-profile-orderer2.json from samples/fablo-config-hlf3-1orgs-1chaincode.json 1`] = ` -"{ - "name": "fablo-test-network-orderer2", - "description": "Connection profile for Orderer2 in Fablo network", - "version": "1.0.0", - "client": { - "organization": "Orderer2" - }, - "organizations": { - "Orderer2": { - "mspid": "Orderer2MSP", - "peers": [ - "peer0.org1.example.com", - "peer1.org1.example.com" - ], - "certificateAuthorities": [ - "ca.orderer2.example.com" - ] - } - }, - "peers": { - "peer0.org1.example.com": { - "url": "grpcs://localhost:7061", - "tlsCACerts": { - "path": "/samples/fablo-target/fabric-config/crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt" - }, - "grpcOptions": { - "ssl-target-name-override": "peer0.org1.example.com" - } - }, - "peer1.org1.example.com": { - "url": "grpcs://localhost:7062", - "tlsCACerts": { - "path": "/samples/fablo-target/fabric-config/crypto-config/peerOrganizations/org1.example.com/peers/peer1.org1.example.com/tls/ca.crt" - }, - "grpcOptions": { - "ssl-target-name-override": "peer1.org1.example.com" - } - } - }, - "certificateAuthorities": { - "ca.orderer2.example.com": { - "url": "https://localhost:7040", - "caName": "ca.orderer2.example.com", - "httpOptions": { - "verify": false - }, - "tlsCACerts": { - "path": "/samples/fablo-target/fabric-config/crypto-config/peerOrganizations/orderer2.example.com/ca/ca.orderer2.example.com-cert.pem" - } - } - }, - "orderers": { - "orderer0.group1.orderer1.example.com": { - "url": "grpcs://localhost:7030", - "tlsCACerts": { - "path": "/samples/fablo-target/fabric-config/crypto-config/ordererOrganizations/orderer1.example.com/orderers/orderer0.group1.orderer1.example.com/tls/ca.crt" - }, - "grpcOptions": { - "ssl-target-name-override": "orderer0.group1.orderer1.example.com" - } - }, - "orderer1.group1.orderer1.example.com": { - "url": "grpcs://localhost:7031", - "tlsCACerts": { - "path": "/samples/fablo-target/fabric-config/crypto-config/ordererOrganizations/orderer1.example.com/orderers/orderer1.group1.orderer1.example.com/tls/ca.crt" - }, - "grpcOptions": { - "ssl-target-name-override": "orderer1.group1.orderer1.example.com" - } - }, - "orderer2.group1.orderer1.example.com": { - "url": "grpcs://localhost:7032", - "tlsCACerts": { - "path": "/samples/fablo-target/fabric-config/crypto-config/ordererOrganizations/orderer1.example.com/orderers/orderer2.group1.orderer1.example.com/tls/ca.crt" - }, - "grpcOptions": { - "ssl-target-name-override": "orderer2.group1.orderer1.example.com" - } - }, - "orderer0.group2.orderer2.example.com": { - "url": "grpcs://localhost:7050", - "tlsCACerts": { - "path": "/samples/fablo-target/fabric-config/crypto-config/ordererOrganizations/orderer2.example.com/orderers/orderer0.group2.orderer2.example.com/tls/ca.crt" - }, - "grpcOptions": { - "ssl-target-name-override": "orderer0.group2.orderer2.example.com" - } - } - } -} -" -`; - -exports[`samples/fablo-config-hlf3-1orgs-1chaincode.json should create proper e2e/__tmp__/samples/fablo-config-hlf3-1orgs-1chaincode.json.tmpdir/fablo-target/fabric-config/connection-profiles/connection-profile-orderer2.yaml from samples/fablo-config-hlf3-1orgs-1chaincode.json 1`] = ` -"name: fablo-test-network-orderer2 -description: Connection profile for Orderer2 in Fablo network -version: 1.0.0 -client: - organization: Orderer2 -organizations: - Orderer2: - mspid: Orderer2MSP - peers: - - peer0.org1.example.com - - peer1.org1.example.com - certificateAuthorities: - - ca.orderer2.example.com -peers: - peer0.org1.example.com: - url: grpcs://localhost:7061 - tlsCACerts: - path: >- - /samples/fablo-target/fabric-config/crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt - grpcOptions: - ssl-target-name-override: peer0.org1.example.com - peer1.org1.example.com: - url: grpcs://localhost:7062 - tlsCACerts: - path: >- - /samples/fablo-target/fabric-config/crypto-config/peerOrganizations/org1.example.com/peers/peer1.org1.example.com/tls/ca.crt - grpcOptions: - ssl-target-name-override: peer1.org1.example.com -certificateAuthorities: - ca.orderer2.example.com: - url: https://localhost:7040 - caName: ca.orderer2.example.com + caName: ca.orderer.example.com httpOptions: verify: false tlsCACerts: path: >- - /samples/fablo-target/fabric-config/crypto-config/peerOrganizations/orderer2.example.com/ca/ca.orderer2.example.com-cert.pem + /samples/fablo-target/fabric-config/crypto-config/peerOrganizations/orderer.example.com/ca/ca.orderer.example.com-cert.pem orderers: - orderer0.group1.orderer1.example.com: + orderer0.group1.orderer.example.com: url: grpcs://localhost:7030 tlsCACerts: path: >- - /samples/fablo-target/fabric-config/crypto-config/ordererOrganizations/orderer1.example.com/orderers/orderer0.group1.orderer1.example.com/tls/ca.crt + /samples/fablo-target/fabric-config/crypto-config/ordererOrganizations/orderer.example.com/orderers/orderer0.group1.orderer.example.com/tls/ca.crt grpcOptions: - ssl-target-name-override: orderer0.group1.orderer1.example.com - orderer1.group1.orderer1.example.com: + ssl-target-name-override: orderer0.group1.orderer.example.com + orderer1.group1.orderer.example.com: url: grpcs://localhost:7031 tlsCACerts: path: >- - /samples/fablo-target/fabric-config/crypto-config/ordererOrganizations/orderer1.example.com/orderers/orderer1.group1.orderer1.example.com/tls/ca.crt + /samples/fablo-target/fabric-config/crypto-config/ordererOrganizations/orderer.example.com/orderers/orderer1.group1.orderer.example.com/tls/ca.crt grpcOptions: - ssl-target-name-override: orderer1.group1.orderer1.example.com - orderer2.group1.orderer1.example.com: + ssl-target-name-override: orderer1.group1.orderer.example.com + orderer2.group1.orderer.example.com: url: grpcs://localhost:7032 tlsCACerts: path: >- - /samples/fablo-target/fabric-config/crypto-config/ordererOrganizations/orderer1.example.com/orderers/orderer2.group1.orderer1.example.com/tls/ca.crt + /samples/fablo-target/fabric-config/crypto-config/ordererOrganizations/orderer.example.com/orderers/orderer2.group1.orderer.example.com/tls/ca.crt grpcOptions: - ssl-target-name-override: orderer2.group1.orderer1.example.com - orderer0.group2.orderer2.example.com: - url: grpcs://localhost:7050 + ssl-target-name-override: orderer2.group1.orderer.example.com + orderer3.group1.orderer.example.com: + url: grpcs://localhost:7033 tlsCACerts: path: >- - /samples/fablo-target/fabric-config/crypto-config/ordererOrganizations/orderer2.example.com/orderers/orderer0.group2.orderer2.example.com/tls/ca.crt + /samples/fablo-target/fabric-config/crypto-config/ordererOrganizations/orderer.example.com/orderers/orderer3.group1.orderer.example.com/tls/ca.crt grpcOptions: - ssl-target-name-override: orderer0.group2.orderer2.example.com -" -`; - -exports[`samples/fablo-config-hlf3-1orgs-1chaincode.json should create proper e2e/__tmp__/samples/fablo-config-hlf3-1orgs-1chaincode.json.tmpdir/fablo-target/fabric-config/connection-profiles/connection-profile-org1.json from samples/fablo-config-hlf3-1orgs-1chaincode.json 1`] = ` -"{ - "name": "fablo-test-network-org1", - "description": "Connection profile for Org1 in Fablo network", - "version": "1.0.0", - "client": { - "organization": "Org1" - }, - "organizations": { - "Org1": { - "mspid": "Org1MSP", - "peers": [ - "peer0.org1.example.com", - "peer1.org1.example.com" - ], - "certificateAuthorities": [ - "ca.org1.example.com" - ] - } - }, - "peers": { - "peer0.org1.example.com": { - "url": "grpcs://localhost:7061", - "tlsCACerts": { - "path": "/samples/fablo-target/fabric-config/crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt" - }, - "grpcOptions": { - "ssl-target-name-override": "peer0.org1.example.com" - } - }, - "peer1.org1.example.com": { - "url": "grpcs://localhost:7062", - "tlsCACerts": { - "path": "/samples/fablo-target/fabric-config/crypto-config/peerOrganizations/org1.example.com/peers/peer1.org1.example.com/tls/ca.crt" - }, - "grpcOptions": { - "ssl-target-name-override": "peer1.org1.example.com" - } - } - }, - "certificateAuthorities": { - "ca.org1.example.com": { - "url": "https://localhost:7060", - "caName": "ca.org1.example.com", - "httpOptions": { - "verify": false - }, - "tlsCACerts": { - "path": "/samples/fablo-target/fabric-config/crypto-config/peerOrganizations/org1.example.com/ca/ca.org1.example.com-cert.pem" - } - } - }, - "orderers": { - "orderer0.group1.orderer1.example.com": { - "url": "grpcs://localhost:7030", - "tlsCACerts": { - "path": "/samples/fablo-target/fabric-config/crypto-config/ordererOrganizations/orderer1.example.com/orderers/orderer0.group1.orderer1.example.com/tls/ca.crt" - }, - "grpcOptions": { - "ssl-target-name-override": "orderer0.group1.orderer1.example.com" - } - }, - "orderer1.group1.orderer1.example.com": { - "url": "grpcs://localhost:7031", - "tlsCACerts": { - "path": "/samples/fablo-target/fabric-config/crypto-config/ordererOrganizations/orderer1.example.com/orderers/orderer1.group1.orderer1.example.com/tls/ca.crt" - }, - "grpcOptions": { - "ssl-target-name-override": "orderer1.group1.orderer1.example.com" - } - }, - "orderer2.group1.orderer1.example.com": { - "url": "grpcs://localhost:7032", - "tlsCACerts": { - "path": "/samples/fablo-target/fabric-config/crypto-config/ordererOrganizations/orderer1.example.com/orderers/orderer2.group1.orderer1.example.com/tls/ca.crt" - }, - "grpcOptions": { - "ssl-target-name-override": "orderer2.group1.orderer1.example.com" - } - }, - "orderer0.group2.orderer2.example.com": { - "url": "grpcs://localhost:7050", - "tlsCACerts": { - "path": "/samples/fablo-target/fabric-config/crypto-config/ordererOrganizations/orderer2.example.com/orderers/orderer0.group2.orderer2.example.com/tls/ca.crt" - }, - "grpcOptions": { - "ssl-target-name-override": "orderer0.group2.orderer2.example.com" - } - } - }, - "channels": { - "my-channel1": { - "peers": {} - }, - "my-channel2": { - "peers": {} - } - } -} + ssl-target-name-override: orderer3.group1.orderer.example.com " -`; - -exports[`samples/fablo-config-hlf3-1orgs-1chaincode.json should create proper e2e/__tmp__/samples/fablo-config-hlf3-1orgs-1chaincode.json.tmpdir/fablo-target/fabric-config/connection-profiles/connection-profile-org1.yaml from samples/fablo-config-hlf3-1orgs-1chaincode.json 1`] = ` -"name: fablo-test-network-org1 -description: Connection profile for Org1 in Fablo network -version: 1.0.0 -client: - organization: Org1 -organizations: - Org1: - mspid: Org1MSP - peers: - - peer0.org1.example.com - - peer1.org1.example.com - certificateAuthorities: - - ca.org1.example.com -peers: - peer0.org1.example.com: - url: grpcs://localhost:7061 - tlsCACerts: - path: >- - /samples/fablo-target/fabric-config/crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt - grpcOptions: - ssl-target-name-override: peer0.org1.example.com - peer1.org1.example.com: - url: grpcs://localhost:7062 - tlsCACerts: - path: >- - /samples/fablo-target/fabric-config/crypto-config/peerOrganizations/org1.example.com/peers/peer1.org1.example.com/tls/ca.crt - grpcOptions: - ssl-target-name-override: peer1.org1.example.com -certificateAuthorities: - ca.org1.example.com: - url: https://localhost:7060 - caName: ca.org1.example.com - httpOptions: - verify: false - tlsCACerts: - path: >- - /samples/fablo-target/fabric-config/crypto-config/peerOrganizations/org1.example.com/ca/ca.org1.example.com-cert.pem -orderers: - orderer0.group1.orderer1.example.com: - url: grpcs://localhost:7030 - tlsCACerts: - path: >- - /samples/fablo-target/fabric-config/crypto-config/ordererOrganizations/orderer1.example.com/orderers/orderer0.group1.orderer1.example.com/tls/ca.crt - grpcOptions: - ssl-target-name-override: orderer0.group1.orderer1.example.com - orderer1.group1.orderer1.example.com: - url: grpcs://localhost:7031 - tlsCACerts: - path: >- - /samples/fablo-target/fabric-config/crypto-config/ordererOrganizations/orderer1.example.com/orderers/orderer1.group1.orderer1.example.com/tls/ca.crt - grpcOptions: - ssl-target-name-override: orderer1.group1.orderer1.example.com - orderer2.group1.orderer1.example.com: - url: grpcs://localhost:7032 - tlsCACerts: - path: >- - /samples/fablo-target/fabric-config/crypto-config/ordererOrganizations/orderer1.example.com/orderers/orderer2.group1.orderer1.example.com/tls/ca.crt - grpcOptions: - ssl-target-name-override: orderer2.group1.orderer1.example.com - orderer0.group2.orderer2.example.com: - url: grpcs://localhost:7050 - tlsCACerts: - path: >- - /samples/fablo-target/fabric-config/crypto-config/ordererOrganizations/orderer2.example.com/orderers/orderer0.group2.orderer2.example.com/tls/ca.crt - grpcOptions: - ssl-target-name-override: orderer0.group2.orderer2.example.com -channels: - my-channel1: - peers: {} - my-channel2: - peers: {} -" -`; - -exports[`samples/fablo-config-hlf3-1orgs-1chaincode.json should create proper e2e/__tmp__/samples/fablo-config-hlf3-1orgs-1chaincode.json.tmpdir/fablo-target/fabric-config/crypto-config-orderer1.yaml from samples/fablo-config-hlf3-1orgs-1chaincode.json 1`] = ` -"PeerOrgs: - - Name: Orderer1 - Domain: orderer1.example.com - Specs: - - Hostname: orderer0.group1 - - Hostname: orderer1.group1 - - Hostname: orderer2.group1 - Template: - Count: 0 - Users: - Count: 1 -" -`; - -exports[`samples/fablo-config-hlf3-1orgs-1chaincode.json should create proper e2e/__tmp__/samples/fablo-config-hlf3-1orgs-1chaincode.json.tmpdir/fablo-target/fabric-config/crypto-config-orderer2.yaml from samples/fablo-config-hlf3-1orgs-1chaincode.json 1`] = ` -"PeerOrgs: - - Name: Orderer2 - Domain: orderer2.example.com - Specs: - - Hostname: orderer0.group2 - Template: - Count: 0 - Users: - Count: 1 -" -`; - -exports[`samples/fablo-config-hlf3-1orgs-1chaincode.json should create proper e2e/__tmp__/samples/fablo-config-hlf3-1orgs-1chaincode.json.tmpdir/fablo-target/fabric-config/crypto-config-org1.yaml from samples/fablo-config-hlf3-1orgs-1chaincode.json 1`] = ` -"PeerOrgs: - - Name: Org1 - Domain: org1.example.com - Specs: - Template: - Count: 2 - Users: - Count: 1 -" -`; - -exports[`samples/fablo-config-hlf3-1orgs-1chaincode.json should create proper e2e/__tmp__/samples/fablo-config-hlf3-1orgs-1chaincode.json.tmpdir/fablo-target/fabric-config/explorer/config-global.json from samples/fablo-config-hlf3-1orgs-1chaincode.json 1`] = ` -"{ - "network-configs": { - "network-org1": { - "name": "Network of Org1", - "profile": "/opt/explorer/app/platform/fabric/connection-profile/connection-profile-org1.json" - } - }, - "license": "Apache-2.0" -} -" -`; - -exports[`samples/fablo-config-hlf3-1orgs-1chaincode.json should create proper e2e/__tmp__/samples/fablo-config-hlf3-1orgs-1chaincode.json.tmpdir/fablo-target/fabric-config/fabric-ca-server-config/orderer1.example.com/fabric-ca-server-config.yaml from samples/fablo-config-hlf3-1orgs-1chaincode.json 1`] = ` -"############################################################################# -# This is a configuration file for the fabric-ca-server command. -# -# COMMAND LINE ARGUMENTS AND ENVIRONMENT VARIABLES -# ------------------------------------------------ -# Each configuration element can be overridden via command line -# arguments or environment variables. The precedence for determining -# the value of each element is as follows: -# 1) command line argument -# Examples: -# a) --port 443 -# To set the listening port -# b) --ca.keyfile ../mykey.pem -# To set the "keyfile" element in the "ca" section below; -# note the '.' separator character. -# 2) environment variable -# Examples: -# a) FABRIC_CA_SERVER_PORT=443 -# To set the listening port -# b) FABRIC_CA_SERVER_CA_KEYFILE="../mykey.pem" -# To set the "keyfile" element in the "ca" section below; -# note the '_' separator character. -# 3) configuration file -# 4) default value (if there is one) -# All default values are shown beside each element below. -# -# FILE NAME ELEMENTS -# ------------------ -# The value of all fields whose name ends with "file" or "files" are -# name or names of other files. -# For example, see "tls.certfile" and "tls.clientauth.certfiles". -# The value of each of these fields can be a simple filename, a -# relative path, or an absolute path. If the value is not an -# absolute path, it is interpreted as being relative to the location -# of this configuration file. -# -############################################################################# - -# Version of config file -version: 1.5.5 - -# Server's listening port (default: 7054) -port: 7054 - -# Cross-Origin Resource Sharing (CORS) -cors: - enabled: false - origins: - - "*" - -# Enables debug logging (default: false) -debug: false - -# Size limit of an acceptable CRL in bytes (default: 512000) -crlsizelimit: 512000 - -############################################################################# -# TLS section for the server's listening port -# -# The following types are supported for client authentication: NoClientCert, -# RequestClientCert, RequireAnyClientCert, VerifyClientCertIfGiven, -# and RequireAndVerifyClientCert. -# -# Certfiles is a list of root certificate authorities that the server uses -# when verifying client certificates. -############################################################################# -tls: - # Enable TLS (default: false) - enabled: false - # TLS for the server's listening port - certfile: - keyfile: - clientauth: - type: noclientcert - certfiles: - -############################################################################# -# The CA section contains information related to the Certificate Authority -# including the name of the CA, which should be unique for all members -# of a blockchain network. It also includes the key and certificate files -# used when issuing enrollment certificates (ECerts). -# The chainfile (if it exists) contains the certificate chain which -# should be trusted for this CA, where the 1st in the chain is always the -# root CA certificate. -############################################################################# -ca: - # Name of this CA - name: - # Key file (is only used to import a private key into BCCSP) - keyfile: - # Certificate file (default: ca-cert.pem) - certfile: - # Chain file - chainfile: - -############################################################################# -# The gencrl REST endpoint is used to generate a CRL that contains revoked -# certificates. This section contains configuration options that are used -# during gencrl request processing. -############################################################################# -crl: - # Specifies expiration for the generated CRL. The number of hours - # specified by this property is added to the UTC time, the resulting time - # is used to set the 'Next Update' date of the CRL. - expiry: 24h - -############################################################################# -# The registry section controls how the fabric-ca-server does two things: -# 1) authenticates enrollment requests which contain a username and password -# (also known as an enrollment ID and secret). -# 2) once authenticated, retrieves the identity's attribute names and values. -# These attributes are useful for making access control decisions in -# chaincode. -# There are two main configuration options: -# 1) The fabric-ca-server is the registry. -# This is true if "ldap.enabled" in the ldap section below is false. -# 2) An LDAP server is the registry, in which case the fabric-ca-server -# calls the LDAP server to perform these tasks. -# This is true if "ldap.enabled" in the ldap section below is true, -# which means this "registry" section is ignored. -############################################################################# -registry: - # Maximum number of times a password/secret can be reused for enrollment - # (default: -1, which means there is no limit) - maxenrollments: -1 - - # Contains identity information which is used when LDAP is disabled - identities: - - name: admin - pass: adminpw - type: client - affiliation: "" - attrs: - hf.Registrar.Roles: "*" - hf.Registrar.DelegateRoles: "*" - hf.Revoker: true - hf.IntermediateCA: true - hf.GenCRL: true - hf.Registrar.Attributes: "*" - hf.AffiliationMgr: true - -############################################################################# -# Database section -# Supported types are: "sqlite3", "postgres", and "mysql". -# The datasource value depends on the type. -# If the type is "sqlite3", the datasource value is a file name to use -# as the database store. Since "sqlite3" is an embedded database, it -# may not be used if you want to run the fabric-ca-server in a cluster. -# To run the fabric-ca-server in a cluster, you must choose "postgres" -# or "mysql". -############################################################################# -db: - type: sqlite3 - datasource: fabric-ca-server.db - tls: - enabled: false - certfiles: - client: - certfile: - keyfile: - -############################################################################# -# LDAP section -# If LDAP is enabled, the fabric-ca-server calls LDAP to: -# 1) authenticate enrollment ID and secret (i.e. username and password) -# for enrollment requests; -# 2) To retrieve identity attributes -############################################################################# -ldap: - # Enables or disables the LDAP client (default: false) - # If this is set to true, the "registry" section is ignored. - enabled: false - # The URL of the LDAP server - url: ldap://:@:/ - # TLS configuration for the client connection to the LDAP server - tls: - certfiles: - client: - certfile: - keyfile: - # Attribute related configuration for mapping from LDAP entries to Fabric CA attributes - attribute: - # 'names' is an array of strings containing the LDAP attribute names which are - # requested from the LDAP server for an LDAP identity's entry - names: ['uid', 'member'] - # The 'converters' section is used to convert an LDAP entry to the value of - # a fabric CA attribute. - # For example, the following converts an LDAP 'uid' attribute - # whose value begins with 'revoker' to a fabric CA attribute - # named "hf.Revoker" with a value of "true" (because the boolean expression - # evaluates to true). - # converters: - # - name: hf.Revoker - # value: attr("uid") =~ "revoker*" - converters: - - name: - value: - # The 'maps' section contains named maps which may be referenced by the 'map' - # function in the 'converters' section to map LDAP responses to arbitrary values. - # For example, assume a user has an LDAP attribute named 'member' which has multiple - # values which are each a distinguished name (i.e. a DN). For simplicity, assume the - # values of the 'member' attribute are 'dn1', 'dn2', and 'dn3'. - # Further assume the following configuration. - # converters: - # - name: hf.Registrar.Roles - # value: map(attr("member"),"groups") - # maps: - # groups: - # - name: dn1 - # value: peer - # - name: dn2 - # value: client - # The value of the user's 'hf.Registrar.Roles' attribute is then computed to be - # "peer,client,dn3". This is because the value of 'attr("member")' is - # "dn1,dn2,dn3", and the call to 'map' with a 2nd argument of - # "group" replaces "dn1" with "peer" and "dn2" with "client". - maps: - groups: - - name: - value: - -############################################################################# -# Affiliations section. Fabric CA server can be bootstrapped with the -# affiliations specified in this section. Affiliations are specified as maps. -# For example: -# businessunit1: -# department1: -# - team1 -# businessunit2: -# - department2 -# - department3 -# -# Affiliations are hierarchical in nature. In the above example, -# department1 (used as businessunit1.department1) is the child of businessunit1. -# team1 (used as businessunit1.department1.team1) is the child of department1. -# department2 (used as businessunit2.department2) and department3 (businessunit2.department3) -# are children of businessunit2. -# Note: Affiliations are case sensitive except for the non-leaf affiliations -# (like businessunit1, department1, businessunit2) that are specified in the configuration file, -# which are always stored in lower case. -############################################################################# -affiliations: - orderer1: - -############################################################################# -# Signing section -# -# The "default" subsection is used to sign enrollment certificates; -# the default expiration ("expiry" field) is "8760h", which is 1 year in hours. -# -# The "ca" profile subsection is used to sign intermediate CA certificates; -# the default expiration ("expiry" field) is "43800h" which is 5 years in hours. -# Note that "isca" is true, meaning that it issues a CA certificate. -# A maxpathlen of 0 means that the intermediate CA cannot issue other -# intermediate CA certificates, though it can still issue end entity certificates. -# (See RFC 5280, section 4.2.1.9) -# -# The "tls" profile subsection is used to sign TLS certificate requests; -# the default expiration ("expiry" field) is "8760h", which is 1 year in hours. -############################################################################# -signing: - default: - usage: - - digital signature - expiry: 8760h - profiles: - ca: - usage: - - cert sign - - crl sign - expiry: 43800h - caconstraint: - isca: true - maxpathlen: 0 - tls: - usage: - - signing - - key encipherment - - server auth - - client auth - - key agreement - expiry: 8760h - -########################################################################### -# Certificate Signing Request (CSR) section. -# This controls the creation of the root CA certificate. -# The expiration for the root CA certificate is configured with the -# "ca.expiry" field below, whose default value is "131400h" which is -# 15 years in hours. -# The pathlength field is used to limit CA certificate hierarchy as described -# in section 4.2.1.9 of RFC 5280. -# Examples: -# 1) No pathlength value means no limit is requested. -# 2) pathlength == 1 means a limit of 1 is requested which is the default for -# a root CA. This means the root CA can issue intermediate CA certificates, -# but these intermediate CAs may not in turn issue other CA certificates -# though they can still issue end entity certificates. -# 3) pathlength == 0 means a limit of 0 is requested; -# this is the default for an intermediate CA, which means it can not issue -# CA certificates though it can still issue end entity certificates. -########################################################################### -csr: - cn: fabric-ca-server - keyrequest: - algo: ecdsa - size: 256 - names: - - C: US - ST: "North Carolina" - L: - O: Hyperledger - OU: Fabric - hosts: - - 483cccf16a98 - - localhost - ca: - expiry: 131400h - pathlength: 1 - -########################################################################### -# Each CA can issue both X509 enrollment certificate as well as Idemix -# Credential. This section specifies configuration for the issuer component -# that is responsible for issuing Idemix credentials. -########################################################################### -idemix: - # Specifies pool size for revocation handles. A revocation handle is an unique identifier of an - # Idemix credential. The issuer will create a pool revocation handles of this specified size. When - # a credential is requested, issuer will get handle from the pool and assign it to the credential. - # Issuer will repopulate the pool with new handles when the last handle in the pool is used. - # A revocation handle and credential revocation information (CRI) are used to create non revocation proof - # by the prover to prove to the verifier that her credential is not revoked. - rhpoolsize: 1000 - - # The Idemix credential issuance is a two step process. First step is to get a nonce from the issuer - # and second step is send credential request that is constructed using the nonce to the isuser to - # request a credential. This configuration property specifies expiration for the nonces. By default is - # nonces expire after 15 seconds. The value is expressed in the time.Duration format (see https://golang.org/pkg/time/#ParseDuration). - nonceexpiration: 15s - - # Specifies interval at which expired nonces are removed from datastore. Default value is 15 minutes. - # The value is expressed in the time.Duration format (see https://golang.org/pkg/time/#ParseDuration) - noncesweepinterval: 15m - -############################################################################# -# BCCSP (BlockChain Crypto Service Provider) section is used to select which -# crypto library implementation to use -############################################################################# -bccsp: - default: SW - sw: - hash: SHA2 - security: 256 - filekeystore: - # The directory used for the software file-based keystore - keystore: msp/keystore - -############################################################################# -# Multi CA section -# -# Each Fabric CA server contains one CA by default. This section is used -# to configure multiple CAs in a single server. -# -# 1) --cacount -# Automatically generate non-default CAs. The names of these -# additional CAs are "ca1", "ca2", ... "caN", where "N" is -# This is particularly useful in a development environment to quickly set up -# multiple CAs. Note that, this config option is not applicable to intermediate CA server -# i.e., Fabric CA server that is started with intermediate.parentserver.url config -# option (-u command line option) -# -# 2) --cafiles -# For each CA config file in the list, generate a separate signing CA. Each CA -# config file in this list MAY contain all of the same elements as are found in -# the server config file except port, debug, and tls sections. -# -# Examples: -# fabric-ca-server start -b admin:adminpw --cacount 2 -# -# fabric-ca-server start -b admin:adminpw --cafiles ca/ca1/fabric-ca-server-config.yaml -# --cafiles ca/ca2/fabric-ca-server-config.yaml -# -############################################################################# - -cacount: - -cafiles: - -############################################################################# -# Intermediate CA section -# -# The relationship between servers and CAs is as follows: -# 1) A single server process may contain or function as one or more CAs. -# This is configured by the "Multi CA section" above. -# 2) Each CA is either a root CA or an intermediate CA. -# 3) Each intermediate CA has a parent CA which is either a root CA or another intermediate CA. -# -# This section pertains to configuration of #2 and #3. -# If the "intermediate.parentserver.url" property is set, -# then this is an intermediate CA with the specified parent -# CA. -# -# parentserver section -# url - The URL of the parent server -# caname - Name of the CA to enroll within the server -# -# enrollment section used to enroll intermediate CA with parent CA -# profile - Name of the signing profile to use in issuing the certificate -# label - Label to use in HSM operations -# -# tls section for secure socket connection -# certfiles - PEM-encoded list of trusted root certificate files -# client: -# certfile - PEM-encoded certificate file for when client authentication -# is enabled on server -# keyfile - PEM-encoded key file for when client authentication -# is enabled on server -############################################################################# -intermediate: - parentserver: - url: - caname: - - enrollment: - hosts: - profile: - label: - - tls: - certfiles: - client: - certfile: - keyfile: - -############################################################################# -# CA configuration section -# -# Configure the number of incorrect password attempts are allowed for -# identities. By default, the value of 'passwordattempts' is 10, which -# means that 10 incorrect password attempts can be made before an identity get -# locked out. -############################################################################# -cfg: - identities: - passwordattempts: 10 - -############################################################################### -# -# Operations section -# -############################################################################### -operations: - # host and port for the operations server - listenAddress: 127.0.0.1:9443 - - # TLS configuration for the operations endpoint - tls: - # TLS enabled - enabled: false - - # path to PEM encoded server certificate for the operations server - cert: - file: - - # path to PEM encoded server key for the operations server - key: - file: - - # require client certificate authentication to access all resources - clientAuthRequired: false - - # paths to PEM encoded ca certificates to trust for client authentication - clientRootCAs: - files: [] +`; -############################################################################### -# -# Metrics section -# -############################################################################### -metrics: - # statsd, prometheus, or disabled - provider: disabled +exports[`samples/fablo-config-hlf3-1orgs-1chaincode.json should create proper e2e/__tmp__/samples/fablo-config-hlf3-1orgs-1chaincode.json.tmpdir/fablo-target/fabric-config/connection-profiles/connection-profile-org1.json from samples/fablo-config-hlf3-1orgs-1chaincode.json 1`] = ` +"{ + "name": "fablo-test-network-org1", + "description": "Connection profile for Org1 in Fablo network", + "version": "1.0.0", + "client": { + "organization": "Org1" + }, + "organizations": { + "Org1": { + "mspid": "Org1MSP", + "peers": [ + "peer0.org1.example.com", + "peer1.org1.example.com" + ], + "certificateAuthorities": [ + "ca.org1.example.com" + ] + } + }, + "peers": { + "peer0.org1.example.com": { + "url": "grpcs://localhost:7041", + "tlsCACerts": { + "path": "/samples/fablo-target/fabric-config/crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt" + }, + "grpcOptions": { + "ssl-target-name-override": "peer0.org1.example.com" + } + }, + "peer1.org1.example.com": { + "url": "grpcs://localhost:7042", + "tlsCACerts": { + "path": "/samples/fablo-target/fabric-config/crypto-config/peerOrganizations/org1.example.com/peers/peer1.org1.example.com/tls/ca.crt" + }, + "grpcOptions": { + "ssl-target-name-override": "peer1.org1.example.com" + } + } + }, + "certificateAuthorities": { + "ca.org1.example.com": { + "url": "https://localhost:7040", + "caName": "ca.org1.example.com", + "httpOptions": { + "verify": false + }, + "tlsCACerts": { + "path": "/samples/fablo-target/fabric-config/crypto-config/peerOrganizations/org1.example.com/ca/ca.org1.example.com-cert.pem" + } + } + }, + "orderers": { + "orderer0.group1.orderer.example.com": { + "url": "grpcs://localhost:7030", + "tlsCACerts": { + "path": "/samples/fablo-target/fabric-config/crypto-config/ordererOrganizations/orderer.example.com/orderers/orderer0.group1.orderer.example.com/tls/ca.crt" + }, + "grpcOptions": { + "ssl-target-name-override": "orderer0.group1.orderer.example.com" + } + }, + "orderer1.group1.orderer.example.com": { + "url": "grpcs://localhost:7031", + "tlsCACerts": { + "path": "/samples/fablo-target/fabric-config/crypto-config/ordererOrganizations/orderer.example.com/orderers/orderer1.group1.orderer.example.com/tls/ca.crt" + }, + "grpcOptions": { + "ssl-target-name-override": "orderer1.group1.orderer.example.com" + } + }, + "orderer2.group1.orderer.example.com": { + "url": "grpcs://localhost:7032", + "tlsCACerts": { + "path": "/samples/fablo-target/fabric-config/crypto-config/ordererOrganizations/orderer.example.com/orderers/orderer2.group1.orderer.example.com/tls/ca.crt" + }, + "grpcOptions": { + "ssl-target-name-override": "orderer2.group1.orderer.example.com" + } + }, + "orderer3.group1.orderer.example.com": { + "url": "grpcs://localhost:7033", + "tlsCACerts": { + "path": "/samples/fablo-target/fabric-config/crypto-config/ordererOrganizations/orderer.example.com/orderers/orderer3.group1.orderer.example.com/tls/ca.crt" + }, + "grpcOptions": { + "ssl-target-name-override": "orderer3.group1.orderer.example.com" + } + } + }, + "channels": { + "my-channel1": { + "peers": {} + } + } +} +" +`; - # statsd configuration - statsd: - # network type: tcp or udp - network: udp +exports[`samples/fablo-config-hlf3-1orgs-1chaincode.json should create proper e2e/__tmp__/samples/fablo-config-hlf3-1orgs-1chaincode.json.tmpdir/fablo-target/fabric-config/connection-profiles/connection-profile-org1.yaml from samples/fablo-config-hlf3-1orgs-1chaincode.json 1`] = ` +"name: fablo-test-network-org1 +description: Connection profile for Org1 in Fablo network +version: 1.0.0 +client: + organization: Org1 +organizations: + Org1: + mspid: Org1MSP + peers: + - peer0.org1.example.com + - peer1.org1.example.com + certificateAuthorities: + - ca.org1.example.com +peers: + peer0.org1.example.com: + url: grpcs://localhost:7041 + tlsCACerts: + path: >- + /samples/fablo-target/fabric-config/crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt + grpcOptions: + ssl-target-name-override: peer0.org1.example.com + peer1.org1.example.com: + url: grpcs://localhost:7042 + tlsCACerts: + path: >- + /samples/fablo-target/fabric-config/crypto-config/peerOrganizations/org1.example.com/peers/peer1.org1.example.com/tls/ca.crt + grpcOptions: + ssl-target-name-override: peer1.org1.example.com +certificateAuthorities: + ca.org1.example.com: + url: https://localhost:7040 + caName: ca.org1.example.com + httpOptions: + verify: false + tlsCACerts: + path: >- + /samples/fablo-target/fabric-config/crypto-config/peerOrganizations/org1.example.com/ca/ca.org1.example.com-cert.pem +orderers: + orderer0.group1.orderer.example.com: + url: grpcs://localhost:7030 + tlsCACerts: + path: >- + /samples/fablo-target/fabric-config/crypto-config/ordererOrganizations/orderer.example.com/orderers/orderer0.group1.orderer.example.com/tls/ca.crt + grpcOptions: + ssl-target-name-override: orderer0.group1.orderer.example.com + orderer1.group1.orderer.example.com: + url: grpcs://localhost:7031 + tlsCACerts: + path: >- + /samples/fablo-target/fabric-config/crypto-config/ordererOrganizations/orderer.example.com/orderers/orderer1.group1.orderer.example.com/tls/ca.crt + grpcOptions: + ssl-target-name-override: orderer1.group1.orderer.example.com + orderer2.group1.orderer.example.com: + url: grpcs://localhost:7032 + tlsCACerts: + path: >- + /samples/fablo-target/fabric-config/crypto-config/ordererOrganizations/orderer.example.com/orderers/orderer2.group1.orderer.example.com/tls/ca.crt + grpcOptions: + ssl-target-name-override: orderer2.group1.orderer.example.com + orderer3.group1.orderer.example.com: + url: grpcs://localhost:7033 + tlsCACerts: + path: >- + /samples/fablo-target/fabric-config/crypto-config/ordererOrganizations/orderer.example.com/orderers/orderer3.group1.orderer.example.com/tls/ca.crt + grpcOptions: + ssl-target-name-override: orderer3.group1.orderer.example.com +channels: + my-channel1: + peers: {} +" +`; - # statsd server address - address: 127.0.0.1:8125 +exports[`samples/fablo-config-hlf3-1orgs-1chaincode.json should create proper e2e/__tmp__/samples/fablo-config-hlf3-1orgs-1chaincode.json.tmpdir/fablo-target/fabric-config/crypto-config-orderer.yaml from samples/fablo-config-hlf3-1orgs-1chaincode.json 1`] = ` +"PeerOrgs: + - Name: Orderer + Domain: orderer.example.com + Specs: + - Hostname: orderer0.group1 + - Hostname: orderer1.group1 + - Hostname: orderer2.group1 + - Hostname: orderer3.group1 + Template: + Count: 0 + Users: + Count: 1 +" +`; - # the interval at which locally cached counters and gauges are pushed - # to statsd; timings are pushed immediately - writeInterval: 10s +exports[`samples/fablo-config-hlf3-1orgs-1chaincode.json should create proper e2e/__tmp__/samples/fablo-config-hlf3-1orgs-1chaincode.json.tmpdir/fablo-target/fabric-config/crypto-config-org1.yaml from samples/fablo-config-hlf3-1orgs-1chaincode.json 1`] = ` +"PeerOrgs: + - Name: Org1 + Domain: org1.example.com + Specs: + Template: + Count: 2 + Users: + Count: 1 +" +`; - # prefix is prepended to all emitted statsd metrics - prefix: server +exports[`samples/fablo-config-hlf3-1orgs-1chaincode.json should create proper e2e/__tmp__/samples/fablo-config-hlf3-1orgs-1chaincode.json.tmpdir/fablo-target/fabric-config/explorer/config-global.json from samples/fablo-config-hlf3-1orgs-1chaincode.json 1`] = ` +"{ + "network-configs": { + "network-org1": { + "name": "Network of Org1", + "profile": "/opt/explorer/app/platform/fabric/connection-profile/connection-profile-org1.json" + } + }, + "license": "Apache-2.0" +} " `; -exports[`samples/fablo-config-hlf3-1orgs-1chaincode.json should create proper e2e/__tmp__/samples/fablo-config-hlf3-1orgs-1chaincode.json.tmpdir/fablo-target/fabric-config/fabric-ca-server-config/orderer2.example.com/fabric-ca-server-config.yaml from samples/fablo-config-hlf3-1orgs-1chaincode.json 1`] = ` +exports[`samples/fablo-config-hlf3-1orgs-1chaincode.json should create proper e2e/__tmp__/samples/fablo-config-hlf3-1orgs-1chaincode.json.tmpdir/fablo-target/fabric-config/fabric-ca-server-config/orderer.example.com/fabric-ca-server-config.yaml from samples/fablo-config-hlf3-1orgs-1chaincode.json 1`] = ` "############################################################################# # This is a configuration file for the fabric-ca-server command. # @@ -1581,7 +824,7 @@ ldap: # which are always stored in lower case. ############################################################################# affiliations: - orderer2: + orderer: ############################################################################# # Signing section @@ -2439,11 +1682,8 @@ RECOMMENDED_NODE_VERSION=16 ROOT_CA_ADMIN_NAME=admin ROOT_CA_ADMIN_PASSWORD=adminpw -ORDERER1_CA_ADMIN_NAME=admin -ORDERER1_CA_ADMIN_PASSWORD=adminpw - -ORDERER2_CA_ADMIN_NAME=admin -ORDERER2_CA_ADMIN_PASSWORD=adminpw +ORDERER_CA_ADMIN_NAME=admin +ORDERER_CA_ADMIN_PASSWORD=adminpw ORG1_CA_ADMIN_NAME=admin ORG1_CA_ADMIN_PASSWORD=adminpw @@ -2461,13 +1701,13 @@ chaincodeList() { elif [ "$1" = "peer0.org1.example.com" ]; then - peerChaincodeListTls "cli.org1.example.com" "peer0.org1.example.com:7061" "$2" "crypto-orderer/tlsca.orderer1.example.com-cert.pem" # Third argument is channel name + peerChaincodeListTls "cli.org1.example.com" "peer0.org1.example.com:7041" "$2" "crypto-orderer/tlsca.orderer.example.com-cert.pem" # Third argument is channel name elif [ "$1" = "peer1.org1.example.com" ] then - peerChaincodeListTls "cli.org1.example.com" "peer1.org1.example.com:7062" "$2" "crypto-orderer/tlsca.orderer1.example.com-cert.pem" # Third argument is channel name + peerChaincodeListTls "cli.org1.example.com" "peer1.org1.example.com:7042" "$2" "crypto-orderer/tlsca.orderer.example.com-cert.pem" # Third argument is channel name else @@ -2499,8 +1739,8 @@ chaincodeInvoke() { fi peer_addresses="$1" - peer_addresses="\${peer_addresses//peer0.org1.example.com/peer0.org1.example.com:7061}" - peer_addresses="\${peer_addresses//peer1.org1.example.com/peer1.org1.example.com:7062}" + peer_addresses="\${peer_addresses//peer0.org1.example.com/peer0.org1.example.com:7041}" + peer_addresses="\${peer_addresses//peer1.org1.example.com/peer1.org1.example.com:7042}" peer_certs="$1" peer_certs="\${peer_certs//peer0.org1.example.com/crypto/peers/peer0.org1.example.com/tls/ca.crt}" @@ -2510,10 +1750,7 @@ chaincodeInvoke() { local ca_cert="" if [ "$2" = "my-channel1" ]; then - ca_cert="crypto-orderer/tlsca.orderer1.example.com-cert.pem" - fi - if [ "$2" = "my-channel2" ]; then - ca_cert="crypto-orderer/tlsca.orderer2.example.com-cert.pem" + ca_cert="crypto-orderer/tlsca.orderer.example.com-cert.pem" fi if [ -z "$ca_cert" ]; then @@ -2551,14 +1788,14 @@ chaincodeQuery() { if [ "$peer_domain" = "peer0.org1.example.com" ]; then cli="cli.org1.example.com" - peer_address="peer0.org1.example.com:7061" + peer_address="peer0.org1.example.com:7041" peer_cert="crypto/peers/peer0.org1.example.com/tls/ca.crt" fi if [ "$peer_domain" = "peer1.org1.example.com" ]; then cli="cli.org1.example.com" - peer_address="peer1.org1.example.com:7062" + peer_address="peer1.org1.example.com:7042" peer_cert="crypto/peers/peer1.org1.example.com/tls/ca.crt" @@ -2573,10 +1810,7 @@ chaincodeQuery() { local ca_cert="" if [ "$2" = "my-channel1" ]; then - ca_cert="crypto-orderer/tlsca.orderer1.example.com-cert.pem" - fi - if [ "$2" = "my-channel2" ]; then - ca_cert="crypto-orderer/tlsca.orderer2.example.com-cert.pem" + ca_cert="crypto-orderer/tlsca.orderer.example.com-cert.pem" fi if [ -z "$ca_cert" ]; then @@ -2602,65 +1836,48 @@ channelQuery() { elif [ "$1" = "list" ] && [ "$2" = "org1" ] && [ "$3" = "peer0" ]; then - peerChannelListTls "cli.org1.example.com" "peer0.org1.example.com:7061" "crypto-orderer/tlsca.orderer1.example.com-cert.pem" + peerChannelListTls "cli.org1.example.com" "peer0.org1.example.com:7041" "crypto-orderer/tlsca.orderer.example.com-cert.pem" elif [ "$1" = "list" ] && [ "$2" = "org1" ] && [ "$3" = "peer1" ] then - peerChannelListTls "cli.org1.example.com" "peer1.org1.example.com:7062" "crypto-orderer/tlsca.orderer1.example.com-cert.pem" + peerChannelListTls "cli.org1.example.com" "peer1.org1.example.com:7042" "crypto-orderer/tlsca.orderer.example.com-cert.pem" elif [ "$1" = "getinfo" ] && [ "$2" = "my-channel1" ] && [ "$3" = "org1" ] && [ "$4" = "peer0" ] then - peerChannelGetInfoTls "my-channel1" "cli.org1.example.com" "peer0.org1.example.com:7061" "crypto-orderer/tlsca.orderer1.example.com-cert.pem" + peerChannelGetInfoTls "my-channel1" "cli.org1.example.com" "peer0.org1.example.com:7041" "crypto-orderer/tlsca.orderer.example.com-cert.pem" elif [ "$1" = "fetch" ] && [ "$2" = "config" ] && [ "$3" = "my-channel1" ] && [ "$4" = "org1" ] && [ "$5" = "peer0" ]; then TARGET_FILE=\${6:-"$channel-config.json"} - peerChannelFetchConfigTls "my-channel1" "cli.org1.example.com" "$TARGET_FILE" "peer0.org1.example.com:7061" "crypto-orderer/tlsca.orderer1.example.com-cert.pem" + peerChannelFetchConfigTls "my-channel1" "cli.org1.example.com" "$TARGET_FILE" "peer0.org1.example.com:7041" "crypto-orderer/tlsca.orderer.example.com-cert.pem" elif [ "$1" = "fetch" ] && [ "$3" = "my-channel1" ] && [ "$4" = "org1" ] && [ "$5" = "peer0" ]; then BLOCK_NAME=$2 TARGET_FILE=\${6:-"$BLOCK_NAME.block"} - peerChannelFetchBlockTls "my-channel1" "cli.org1.example.com" "\${BLOCK_NAME}" "peer0.org1.example.com:7061" "crypto-orderer/tlsca.orderer1.example.com-cert.pem" "$TARGET_FILE" + peerChannelFetchBlockTls "my-channel1" "cli.org1.example.com" "\${BLOCK_NAME}" "peer0.org1.example.com:7041" "crypto-orderer/tlsca.orderer.example.com-cert.pem" "$TARGET_FILE" elif [ "$1" = "getinfo" ] && [ "$2" = "my-channel1" ] && [ "$3" = "org1" ] && [ "$4" = "peer1" ] then - peerChannelGetInfoTls "my-channel1" "cli.org1.example.com" "peer1.org1.example.com:7062" "crypto-orderer/tlsca.orderer1.example.com-cert.pem" + peerChannelGetInfoTls "my-channel1" "cli.org1.example.com" "peer1.org1.example.com:7042" "crypto-orderer/tlsca.orderer.example.com-cert.pem" elif [ "$1" = "fetch" ] && [ "$2" = "config" ] && [ "$3" = "my-channel1" ] && [ "$4" = "org1" ] && [ "$5" = "peer1" ]; then TARGET_FILE=\${6:-"$channel-config.json"} - peerChannelFetchConfigTls "my-channel1" "cli.org1.example.com" "$TARGET_FILE" "peer1.org1.example.com:7062" "crypto-orderer/tlsca.orderer1.example.com-cert.pem" + peerChannelFetchConfigTls "my-channel1" "cli.org1.example.com" "$TARGET_FILE" "peer1.org1.example.com:7042" "crypto-orderer/tlsca.orderer.example.com-cert.pem" elif [ "$1" = "fetch" ] && [ "$3" = "my-channel1" ] && [ "$4" = "org1" ] && [ "$5" = "peer1" ]; then BLOCK_NAME=$2 TARGET_FILE=\${6:-"$BLOCK_NAME.block"} - peerChannelFetchBlockTls "my-channel1" "cli.org1.example.com" "\${BLOCK_NAME}" "peer1.org1.example.com:7062" "crypto-orderer/tlsca.orderer1.example.com-cert.pem" "$TARGET_FILE" - - elif - [ "$1" = "getinfo" ] && [ "$2" = "my-channel2" ] && [ "$3" = "org1" ] && [ "$4" = "peer1" ] - then - - peerChannelGetInfoTls "my-channel2" "cli.org1.example.com" "peer1.org1.example.com:7062" "crypto-orderer/tlsca.orderer2.example.com-cert.pem" - - elif [ "$1" = "fetch" ] && [ "$2" = "config" ] && [ "$3" = "my-channel2" ] && [ "$4" = "org1" ] && [ "$5" = "peer1" ]; then - TARGET_FILE=\${6:-"$channel-config.json"} - - peerChannelFetchConfigTls "my-channel2" "cli.org1.example.com" "$TARGET_FILE" "peer1.org1.example.com:7062" "crypto-orderer/tlsca.orderer2.example.com-cert.pem" - - elif [ "$1" = "fetch" ] && [ "$3" = "my-channel2" ] && [ "$4" = "org1" ] && [ "$5" = "peer1" ]; then - BLOCK_NAME=$2 - TARGET_FILE=\${6:-"$BLOCK_NAME.block"} - - peerChannelFetchBlockTls "my-channel2" "cli.org1.example.com" "\${BLOCK_NAME}" "peer1.org1.example.com:7062" "crypto-orderer/tlsca.orderer2.example.com-cert.pem" "$TARGET_FILE" + peerChannelFetchBlockTls "my-channel1" "cli.org1.example.com" "\${BLOCK_NAME}" "peer1.org1.example.com:7042" "crypto-orderer/tlsca.orderer.example.com-cert.pem" "$TARGET_FILE" else @@ -2703,16 +1920,6 @@ printChannelsHelp() { echo -e "\\t Fetch a block with given number and save it. Uses first peer 'peer1' of 'Org1'". echo "" - echo "fablo channel getinfo my-channel2 org1 peer1" - echo -e "\\t Get channel info on 'peer1' of 'Org1'". - echo "" - echo "fablo channel fetch config my-channel2 org1 peer1 [file-name.json]" - echo -e "\\t Download latest config block and save it. Uses first peer 'peer1' of 'Org1'". - echo "" - echo "fablo channel fetch my-channel2 org1 peer1 [file name]" - echo -e "\\t Fetch a block with given number and save it. Uses first peer 'peer1' of 'Org1'". - echo "" - } " `; @@ -2723,11 +1930,8 @@ exports[`samples/fablo-config-hlf3-1orgs-1chaincode.json should create proper e2 generateArtifacts() { printHeadline "Generating basic configs" "U1F913" - printItalics "Generating crypto material for Orderer1" "U1F512" - certsGenerate "$FABLO_NETWORK_ROOT/fabric-config" "crypto-config-orderer1.yaml" "peerOrganizations/orderer1.example.com" "$FABLO_NETWORK_ROOT/fabric-config/crypto-config/" - - printItalics "Generating crypto material for Orderer2" "U1F512" - certsGenerate "$FABLO_NETWORK_ROOT/fabric-config" "crypto-config-orderer2.yaml" "peerOrganizations/orderer2.example.com" "$FABLO_NETWORK_ROOT/fabric-config/crypto-config/" + printItalics "Generating crypto material for Orderer" "U1F512" + certsGenerate "$FABLO_NETWORK_ROOT/fabric-config" "crypto-config-orderer.yaml" "peerOrganizations/orderer.example.com" "$FABLO_NETWORK_ROOT/fabric-config/crypto-config/" printItalics "Generating crypto material for Org1" "U1F512" certsGenerate "$FABLO_NETWORK_ROOT/fabric-config" "crypto-config-org1.yaml" "peerOrganizations/org1.example.com" "$FABLO_NETWORK_ROOT/fabric-config/crypto-config/" @@ -2746,24 +1950,19 @@ startNetwork() { generateChannelsArtifacts() { printHeadline "Generating config for 'my-channel1'" "U1F913" createChannelTx "my-channel1" "$FABLO_NETWORK_ROOT/fabric-config" "MyChannel1" "$FABLO_NETWORK_ROOT/fabric-config/config" - printHeadline "Generating config for 'my-channel2'" "U1F913" - createChannelTx "my-channel2" "$FABLO_NETWORK_ROOT/fabric-config" "MyChannel2" "$FABLO_NETWORK_ROOT/fabric-config/config" } installChannels() { - docker exec -i cli.orderer1.example.com bash -c "source scripts/channel_fns.sh; createChannelAndJoinTls 'my-channel1' 'Orderer1MSP' 'orderer0.group1.orderer1.example.com:7053' 'crypto/users/Admin@orderer1.example.com/tls/client.crt' 'crypto/users/Admin@orderer1.example.com/tls/client.key' 'crypto-orderer/tlsca.orderer1.example.com-cert.pem';" - docker exec -i cli.orderer1.example.com bash -c "source scripts/channel_fns.sh; createChannelAndJoinTls 'my-channel1' 'Orderer1MSP' 'orderer1.group1.orderer1.example.com:7053' 'crypto/users/Admin@orderer1.example.com/tls/client.crt' 'crypto/users/Admin@orderer1.example.com/tls/client.key' 'crypto-orderer/tlsca.orderer1.example.com-cert.pem';" - docker exec -i cli.orderer1.example.com bash -c "source scripts/channel_fns.sh; createChannelAndJoinTls 'my-channel1' 'Orderer1MSP' 'orderer2.group1.orderer1.example.com:7053' 'crypto/users/Admin@orderer1.example.com/tls/client.crt' 'crypto/users/Admin@orderer1.example.com/tls/client.key' 'crypto-orderer/tlsca.orderer1.example.com-cert.pem';" + docker exec -i cli.orderer.example.com bash -c "source scripts/channel_fns.sh; createChannelAndJoinTls 'my-channel1' 'OrdererMSP' 'orderer0.group1.orderer.example.com:7053' 'crypto/users/Admin@orderer.example.com/tls/client.crt' 'crypto/users/Admin@orderer.example.com/tls/client.key' 'crypto-orderer/tlsca.orderer.example.com-cert.pem';" + docker exec -i cli.orderer.example.com bash -c "source scripts/channel_fns.sh; createChannelAndJoinTls 'my-channel1' 'OrdererMSP' 'orderer1.group1.orderer.example.com:7053' 'crypto/users/Admin@orderer.example.com/tls/client.crt' 'crypto/users/Admin@orderer.example.com/tls/client.key' 'crypto-orderer/tlsca.orderer.example.com-cert.pem';" + docker exec -i cli.orderer.example.com bash -c "source scripts/channel_fns.sh; createChannelAndJoinTls 'my-channel1' 'OrdererMSP' 'orderer2.group1.orderer.example.com:7053' 'crypto/users/Admin@orderer.example.com/tls/client.crt' 'crypto/users/Admin@orderer.example.com/tls/client.key' 'crypto-orderer/tlsca.orderer.example.com-cert.pem';" + docker exec -i cli.orderer.example.com bash -c "source scripts/channel_fns.sh; createChannelAndJoinTls 'my-channel1' 'OrdererMSP' 'orderer3.group1.orderer.example.com:7053' 'crypto/users/Admin@orderer.example.com/tls/client.crt' 'crypto/users/Admin@orderer.example.com/tls/client.key' 'crypto-orderer/tlsca.orderer.example.com-cert.pem';" sleep 4 # Wait for Raft cluster to establish consensus printHeadline "Creating 'my-channel1' on Org1/peer0" "U1F63B" - docker exec -i cli.org1.example.com bash -c "source scripts/channel_fns.sh; fetchChannelAndJoinTls 'my-channel1' 'Org1MSP' 'peer0.org1.example.com:7061' 'crypto/users/Admin@org1.example.com/msp' 'crypto/users/Admin@org1.example.com/tls' 'crypto-orderer/tlsca.orderer1.example.com-cert.pem' 'orderer0.group1.orderer1.example.com:7030';" + docker exec -i cli.org1.example.com bash -c "source scripts/channel_fns.sh; fetchChannelAndJoinTls 'my-channel1' 'Org1MSP' 'peer0.org1.example.com:7041' 'crypto/users/Admin@org1.example.com/msp' 'crypto/users/Admin@org1.example.com/tls' 'crypto-orderer/tlsca.orderer.example.com-cert.pem' 'orderer0.group1.orderer.example.com:7030';" printItalics "Joining 'my-channel1' on Org1/peer1" "U1F638" - docker exec -i cli.org1.example.com bash -c "source scripts/channel_fns.sh; fetchChannelAndJoinTls 'my-channel1' 'Org1MSP' 'peer1.org1.example.com:7062' 'crypto/users/Admin@org1.example.com/msp' 'crypto/users/Admin@org1.example.com/tls' 'crypto-orderer/tlsca.orderer1.example.com-cert.pem' 'orderer0.group1.orderer1.example.com:7030';" - docker exec -i cli.orderer2.example.com bash -c "source scripts/channel_fns.sh; createChannelAndJoinTls 'my-channel2' 'Orderer2MSP' 'orderer0.group2.orderer2.example.com:7053' 'crypto/users/Admin@orderer2.example.com/tls/client.crt' 'crypto/users/Admin@orderer2.example.com/tls/client.key' 'crypto-orderer/tlsca.orderer2.example.com-cert.pem';" - sleep 4 # Wait for Raft cluster to establish consensus - printHeadline "Creating 'my-channel2' on Org1/peer1" "U1F63B" - docker exec -i cli.org1.example.com bash -c "source scripts/channel_fns.sh; fetchChannelAndJoinTls 'my-channel2' 'Org1MSP' 'peer1.org1.example.com:7062' 'crypto/users/Admin@org1.example.com/msp' 'crypto/users/Admin@org1.example.com/tls' 'crypto-orderer/tlsca.orderer2.example.com-cert.pem' 'orderer0.group2.orderer2.example.com:7050';" + docker exec -i cli.org1.example.com bash -c "source scripts/channel_fns.sh; fetchChannelAndJoinTls 'my-channel1' 'Org1MSP' 'peer1.org1.example.com:7042' 'crypto/users/Admin@org1.example.com/msp' 'crypto/users/Admin@org1.example.com/tls' 'crypto-orderer/tlsca.orderer.example.com-cert.pem' 'orderer0.group1.orderer.example.com:7030';" } @@ -2772,13 +1971,13 @@ installChaincodes() { local version="0.0.1" printHeadline "Packaging chaincode 'chaincode1'" "U1F60E" chaincodeBuild "chaincode1" "node" "$CHAINCODES_BASE_DIR/./chaincodes/chaincode-kv-node" "16" - chaincodePackage "cli.org1.example.com" "peer0.org1.example.com:7061" "chaincode1" "$version" "node" "my-channel1" + chaincodePackage "cli.org1.example.com" "peer0.org1.example.com:7041" "chaincode1" "$version" "node" "my-channel1" printHeadline "Installing 'chaincode1' for Org1" "U1F60E" - chaincodeInstall "cli.org1.example.com" "peer0.org1.example.com:7061" "chaincode1" "$version" "my-channel1" "crypto-orderer/tlsca.orderer1.example.com-cert.pem" - chaincodeInstall "cli.org1.example.com" "peer1.org1.example.com:7062" "chaincode1" "$version" "my-channel1" "crypto-orderer/tlsca.orderer1.example.com-cert.pem" - chaincodeApprove "cli.org1.example.com" "peer0.org1.example.com:7061" "my-channel1" "chaincode1" "$version" "orderer0.group1.orderer1.example.com:7030" "AND ('Org1MSP.member')" "" "crypto-orderer/tlsca.orderer1.example.com-cert.pem" "" "node" "" + chaincodeInstall "cli.org1.example.com" "peer0.org1.example.com:7041" "chaincode1" "$version" "my-channel1" "crypto-orderer/tlsca.orderer.example.com-cert.pem" + chaincodeInstall "cli.org1.example.com" "peer1.org1.example.com:7042" "chaincode1" "$version" "my-channel1" "crypto-orderer/tlsca.orderer.example.com-cert.pem" + chaincodeApprove "cli.org1.example.com" "peer0.org1.example.com:7041" "my-channel1" "chaincode1" "$version" "orderer0.group1.orderer.example.com:7030" "AND ('Org1MSP.member')" "" "crypto-orderer/tlsca.orderer.example.com-cert.pem" "" "node" "" printItalics "Committing chaincode 'chaincode1' on channel 'my-channel1' as 'Org1'" "U1F618" - chaincodeCommit "cli.org1.example.com" "peer0.org1.example.com:7061" "my-channel1" "chaincode1" "$version" "orderer0.group1.orderer1.example.com:7030" "AND ('Org1MSP.member')" "" "crypto-orderer/tlsca.orderer1.example.com-cert.pem" "peer0.org1.example.com:7061" "crypto-peer/peer0.org1.example.com/tls/ca.crt" "" + chaincodeCommit "cli.org1.example.com" "peer0.org1.example.com:7041" "my-channel1" "chaincode1" "$version" "orderer0.group1.orderer.example.com:7030" "AND ('Org1MSP.member')" "" "crypto-orderer/tlsca.orderer.example.com-cert.pem" "peer0.org1.example.com:7041" "crypto-peer/peer0.org1.example.com/tls/ca.crt" "" else echo "Warning! Skipping chaincode 'chaincode1' installation. Chaincode directory is empty." echo "Looked in dir: '$CHAINCODES_BASE_DIR/./chaincodes/chaincode-kv-node'" @@ -2803,13 +2002,13 @@ installChaincode() { if [ -n "$(ls "$CHAINCODES_BASE_DIR/./chaincodes/chaincode-kv-node")" ]; then printHeadline "Packaging chaincode 'chaincode1'" "U1F60E" chaincodeBuild "chaincode1" "node" "$CHAINCODES_BASE_DIR/./chaincodes/chaincode-kv-node" "16" - chaincodePackage "cli.org1.example.com" "peer0.org1.example.com:7061" "chaincode1" "$version" "node" "my-channel1" + chaincodePackage "cli.org1.example.com" "peer0.org1.example.com:7041" "chaincode1" "$version" "node" "my-channel1" printHeadline "Installing 'chaincode1' for Org1" "U1F60E" - chaincodeInstall "cli.org1.example.com" "peer0.org1.example.com:7061" "chaincode1" "$version" "my-channel1" "crypto-orderer/tlsca.orderer1.example.com-cert.pem" - chaincodeInstall "cli.org1.example.com" "peer1.org1.example.com:7062" "chaincode1" "$version" "my-channel1" "crypto-orderer/tlsca.orderer1.example.com-cert.pem" - chaincodeApprove "cli.org1.example.com" "peer0.org1.example.com:7061" "my-channel1" "chaincode1" "$version" "orderer0.group1.orderer1.example.com:7030" "AND ('Org1MSP.member')" "" "crypto-orderer/tlsca.orderer1.example.com-cert.pem" "" "node" "" + chaincodeInstall "cli.org1.example.com" "peer0.org1.example.com:7041" "chaincode1" "$version" "my-channel1" "crypto-orderer/tlsca.orderer.example.com-cert.pem" + chaincodeInstall "cli.org1.example.com" "peer1.org1.example.com:7042" "chaincode1" "$version" "my-channel1" "crypto-orderer/tlsca.orderer.example.com-cert.pem" + chaincodeApprove "cli.org1.example.com" "peer0.org1.example.com:7041" "my-channel1" "chaincode1" "$version" "orderer0.group1.orderer.example.com:7030" "AND ('Org1MSP.member')" "" "crypto-orderer/tlsca.orderer.example.com-cert.pem" "" "node" "" printItalics "Committing chaincode 'chaincode1' on channel 'my-channel1' as 'Org1'" "U1F618" - chaincodeCommit "cli.org1.example.com" "peer0.org1.example.com:7061" "my-channel1" "chaincode1" "$version" "orderer0.group1.orderer1.example.com:7030" "AND ('Org1MSP.member')" "" "crypto-orderer/tlsca.orderer1.example.com-cert.pem" "peer0.org1.example.com:7061" "crypto-peer/peer0.org1.example.com/tls/ca.crt" "" + chaincodeCommit "cli.org1.example.com" "peer0.org1.example.com:7041" "my-channel1" "chaincode1" "$version" "orderer0.group1.orderer.example.com:7030" "AND ('Org1MSP.member')" "" "crypto-orderer/tlsca.orderer.example.com-cert.pem" "peer0.org1.example.com:7041" "crypto-peer/peer0.org1.example.com/tls/ca.crt" "" else echo "Warning! Skipping chaincode 'chaincode1' install. Chaincode directory is empty." @@ -2840,13 +2039,13 @@ upgradeChaincode() { if [ -n "$(ls "$CHAINCODES_BASE_DIR/./chaincodes/chaincode-kv-node")" ]; then printHeadline "Packaging chaincode 'chaincode1'" "U1F60E" chaincodeBuild "chaincode1" "node" "$CHAINCODES_BASE_DIR/./chaincodes/chaincode-kv-node" "16" - chaincodePackage "cli.org1.example.com" "peer0.org1.example.com:7061" "chaincode1" "$version" "node" "my-channel1" + chaincodePackage "cli.org1.example.com" "peer0.org1.example.com:7041" "chaincode1" "$version" "node" "my-channel1" printHeadline "Installing 'chaincode1' for Org1" "U1F60E" - chaincodeInstall "cli.org1.example.com" "peer0.org1.example.com:7061" "chaincode1" "$version" "my-channel1" "crypto-orderer/tlsca.orderer1.example.com-cert.pem" - chaincodeInstall "cli.org1.example.com" "peer1.org1.example.com:7062" "chaincode1" "$version" "my-channel1" "crypto-orderer/tlsca.orderer1.example.com-cert.pem" - chaincodeApprove "cli.org1.example.com" "peer0.org1.example.com:7061" "my-channel1" "chaincode1" "$version" "orderer0.group1.orderer1.example.com:7030" "AND ('Org1MSP.member')" "" "crypto-orderer/tlsca.orderer1.example.com-cert.pem" "" "node" "" + chaincodeInstall "cli.org1.example.com" "peer0.org1.example.com:7041" "chaincode1" "$version" "my-channel1" "crypto-orderer/tlsca.orderer.example.com-cert.pem" + chaincodeInstall "cli.org1.example.com" "peer1.org1.example.com:7042" "chaincode1" "$version" "my-channel1" "crypto-orderer/tlsca.orderer.example.com-cert.pem" + chaincodeApprove "cli.org1.example.com" "peer0.org1.example.com:7041" "my-channel1" "chaincode1" "$version" "orderer0.group1.orderer.example.com:7030" "AND ('Org1MSP.member')" "" "crypto-orderer/tlsca.orderer.example.com-cert.pem" "" "node" "" printItalics "Committing chaincode 'chaincode1' on channel 'my-channel1' as 'Org1'" "U1F618" - chaincodeCommit "cli.org1.example.com" "peer0.org1.example.com:7061" "my-channel1" "chaincode1" "$version" "orderer0.group1.orderer1.example.com:7030" "AND ('Org1MSP.member')" "" "crypto-orderer/tlsca.orderer1.example.com-cert.pem" "peer0.org1.example.com:7061" "crypto-peer/peer0.org1.example.com/tls/ca.crt" "" + chaincodeCommit "cli.org1.example.com" "peer0.org1.example.com:7041" "my-channel1" "chaincode1" "$version" "orderer0.group1.orderer.example.com:7030" "AND ('Org1MSP.member')" "" "crypto-orderer/tlsca.orderer.example.com-cert.pem" "peer0.org1.example.com:7041" "crypto-peer/peer0.org1.example.com/tls/ca.crt" "" else echo "Warning! Skipping chaincode 'chaincode1' upgrade. Chaincode directory is empty." @@ -2909,54 +2108,53 @@ exports[`samples/fablo-config-hlf3-1orgs-1chaincode.json should create proper e2 services: - ca.orderer1.example.com: - container_name: ca.orderer1.example.com + ca.orderer.example.com: + container_name: ca.orderer.example.com image: hyperledger/fabric-ca:\${FABRIC_CA_VERSION} environment: - FABRIC_CA_HOME=/etc/hyperledger/fabric-ca-server - - FABRIC_CA_SERVER_CA_NAME=ca.orderer1.example.com - - FABRIC_CA_SERVER_CA_CERTFILE=/etc/hyperledger/fabric-ca-server/crypto/ca.orderer1.example.com-cert.pem + - FABRIC_CA_SERVER_CA_NAME=ca.orderer.example.com + - FABRIC_CA_SERVER_CA_CERTFILE=/etc/hyperledger/fabric-ca-server/crypto/ca.orderer.example.com-cert.pem - FABRIC_CA_SERVER_CA_KEYFILE=/etc/hyperledger/fabric-ca-server/crypto/priv-key.pem - FABRIC_LOGGING_SPEC=\${LOGGING_LEVEL} - FABRIC_CA_SERVER_TLS_ENABLED=true ports: - 7020:7054 working_dir: /etc/hyperledger/fabric-ca-server - command: sh -c 'fabric-ca-server start -b \${ORDERER1_CA_ADMIN_NAME}:\${ORDERER1_CA_ADMIN_PASSWORD} -d' + command: sh -c 'fabric-ca-server start -b \${ORDERER_CA_ADMIN_NAME}:\${ORDERER_CA_ADMIN_PASSWORD} -d' volumes: - - ../fabric-config/crypto-config/peerOrganizations/orderer1.example.com/ca/:/etc/hyperledger/fabric-ca-server/crypto - - ../fabric-config/fabric-ca-server-config/orderer1.example.com/fabric-ca-server-config.yaml:/etc/hyperledger/fabric-ca-server/fabric-ca-server-config.yaml + - ../fabric-config/crypto-config/peerOrganizations/orderer.example.com/ca/:/etc/hyperledger/fabric-ca-server/crypto + - ../fabric-config/fabric-ca-server-config/orderer.example.com/fabric-ca-server-config.yaml:/etc/hyperledger/fabric-ca-server/fabric-ca-server-config.yaml networks: - basic - cli.orderer1.example.com: - container_name: cli.orderer1.example.com + cli.orderer.example.com: + container_name: cli.orderer.example.com image: ghcr.io/fablo-io/fabric-tools:\${FABRIC_TOOLS_VERSION} tty: true environment: - GOPATH=/opt/gopath - CORE_VM_ENDPOINT=unix:///host/var/run/docker.sock - FABRIC_LOGGING_SPEC=\${LOGGING_LEVEL} - - CORE_PEER_ID=cli.orderer1.example.com + - CORE_PEER_ID=cli.orderer.example.com - CORE_CHAINCODE_KEEPALIVE=10 # - - CORE_PEER_LOCALMSPID=Orderer1MSP - - CORE_PEER_MSPCONFIGPATH=/var/hyperledger/cli/crypto/users/Admin@orderer1.example.com/msp + - CORE_PEER_LOCALMSPID=OrdererMSP + - CORE_PEER_MSPCONFIGPATH=/var/hyperledger/cli/crypto/users/Admin@orderer.example.com/msp # enabled TLS - CORE_PEER_TLS_ENABLED=true - - CORE_PEER_TLS_CERT_FILE=/var/hyperledger/cli/crypto/users/Admin@orderer1.example.com/tls/client.crt - - CORE_PEER_TLS_KEY_FILE=/var/hyperledger/cli/crypto/users/Admin@orderer1.example.com/tls/client.key - - CORE_PEER_TLS_ROOTCERT_FILE=/var/hyperledger/cli/crypto/users/Admin@orderer1.example.com/tls/ca.crt - - TLS_CA_CERT_PATH=/var/hyperledger/cli/crypto-orderer/tlsca.orderer1.example.com-cert.pem + - CORE_PEER_TLS_CERT_FILE=/var/hyperledger/cli/crypto/users/Admin@orderer.example.com/tls/client.crt + - CORE_PEER_TLS_KEY_FILE=/var/hyperledger/cli/crypto/users/Admin@orderer.example.com/tls/client.key + - CORE_PEER_TLS_ROOTCERT_FILE=/var/hyperledger/cli/crypto/users/Admin@orderer.example.com/tls/ca.crt + - TLS_CA_CERT_PATH=/var/hyperledger/cli/crypto-orderer/tlsca.orderer.example.com-cert.pem working_dir: /var/hyperledger/cli/ command: /bin/bash volumes: - /var/run/docker.sock:/host/var/run/docker.sock - ../fabric-docker/scripts/cli:/var/hyperledger/cli/scripts/ - ../fabric-config/config:/var/hyperledger/cli/config/ # genesis.block and channel.tx's - - ../fabric-config/crypto-config/peerOrganizations/orderer1.example.com:/var/hyperledger/cli/crypto/ - - ../fabric-config/crypto-config/peerOrganizations/orderer1.example.com/peers/orderer0.group1.orderer1.example.com/msp/tlscacerts/tlsca.orderer1.example.com-cert.pem:/var/hyperledger/cli/crypto-orderer/tlsca.orderer1.example.com-cert.pem:ro - - ../fabric-config/crypto-config/peerOrganizations/orderer2.example.com/peers/orderer0.group2.orderer2.example.com/msp/tlscacerts/tlsca.orderer2.example.com-cert.pem:/var/hyperledger/cli/crypto-orderer/tlsca.orderer2.example.com-cert.pem:ro + - ../fabric-config/crypto-config/peerOrganizations/orderer.example.com:/var/hyperledger/cli/crypto/ + - ../fabric-config/crypto-config/peerOrganizations/orderer.example.com/peers/orderer0.group1.orderer.example.com/msp/tlscacerts/tlsca.orderer.example.com-cert.pem:/var/hyperledger/cli/crypto-orderer/tlsca.orderer.example.com-cert.pem:ro - ../fabric-config/crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt:/var/hyperledger/cli/crypto-peer/peer0.org1.example.com/tls/ca.crt:ro - ../fabric-config/crypto-config/peerOrganizations/org1.example.com/peers/peer1.org1.example.com/tls/ca.crt:/var/hyperledger/cli/crypto-peer/peer1.org1.example.com/tls/ca.crt:ro - ../fabric-config/chaincode-packages:/var/hyperledger/cli/chaincode-packages/ @@ -2964,14 +2162,14 @@ services: networks: - basic - orderer0.group1.orderer1.example.com: - container_name: orderer0.group1.orderer1.example.com + orderer0.group1.orderer.example.com: + container_name: orderer0.group1.orderer.example.com image: hyperledger/fabric-orderer:\${FABRIC_VERSION} environment: - FABRIC_LOGGING_SPEC=\${LOGGING_LEVEL} - ORDERER_GENERAL_LISTENADDRESS=0.0.0.0 - ORDERER_GENERAL_LISTENPORT=7030 - - ORDERER_GENERAL_LOCALMSPID=Orderer1MSP + - ORDERER_GENERAL_LOCALMSPID=OrdererMSP - ORDERER_GENERAL_LOCALMSPDIR=/var/hyperledger/orderer/msp # TLS Configuration - ORDERER_GENERAL_TLS_ENABLED=true @@ -2993,7 +2191,7 @@ services: - ORDERER_ADMIN_TLS_CLIENTROOTCAS=[/var/hyperledger/orderer/tls/ca.crt] - ORDERER_ADMIN_LISTENADDRESS=0.0.0.0:7053 # Metrics configuration - - ORDERER_OPERATIONS_LISTENADDRESS=orderer0.group1.orderer1.example.com:9443 + - ORDERER_OPERATIONS_LISTENADDRESS=orderer0.group1.orderer.example.com:9443 - ORDERER_METRICS_PROVIDER=prometheus working_dir: /var/hyperledger/orderer command: orderer @@ -3002,19 +2200,19 @@ services: - 8030:9440 volumes: - ../fabric-config/config/:/var/hyperledger/config - - ../fabric-config/crypto-config/peerOrganizations/orderer1.example.com/peers/orderer0.group1.orderer1.example.com/msp/:/var/hyperledger/orderer/msp - - ../fabric-config/crypto-config/peerOrganizations/orderer1.example.com/peers/orderer0.group1.orderer1.example.com/tls/:/var/hyperledger/orderer/tls + - ../fabric-config/crypto-config/peerOrganizations/orderer.example.com/peers/orderer0.group1.orderer.example.com/msp/:/var/hyperledger/orderer/msp + - ../fabric-config/crypto-config/peerOrganizations/orderer.example.com/peers/orderer0.group1.orderer.example.com/tls/:/var/hyperledger/orderer/tls networks: - basic - orderer1.group1.orderer1.example.com: - container_name: orderer1.group1.orderer1.example.com + orderer1.group1.orderer.example.com: + container_name: orderer1.group1.orderer.example.com image: hyperledger/fabric-orderer:\${FABRIC_VERSION} environment: - FABRIC_LOGGING_SPEC=\${LOGGING_LEVEL} - ORDERER_GENERAL_LISTENADDRESS=0.0.0.0 - ORDERER_GENERAL_LISTENPORT=7031 - - ORDERER_GENERAL_LOCALMSPID=Orderer1MSP + - ORDERER_GENERAL_LOCALMSPID=OrdererMSP - ORDERER_GENERAL_LOCALMSPDIR=/var/hyperledger/orderer/msp # TLS Configuration - ORDERER_GENERAL_TLS_ENABLED=true @@ -3036,7 +2234,7 @@ services: - ORDERER_ADMIN_TLS_CLIENTROOTCAS=[/var/hyperledger/orderer/tls/ca.crt] - ORDERER_ADMIN_LISTENADDRESS=0.0.0.0:7053 # Metrics configuration - - ORDERER_OPERATIONS_LISTENADDRESS=orderer1.group1.orderer1.example.com:9443 + - ORDERER_OPERATIONS_LISTENADDRESS=orderer1.group1.orderer.example.com:9443 - ORDERER_METRICS_PROVIDER=prometheus working_dir: /var/hyperledger/orderer command: orderer @@ -3045,19 +2243,19 @@ services: - 8031:9440 volumes: - ../fabric-config/config/:/var/hyperledger/config - - ../fabric-config/crypto-config/peerOrganizations/orderer1.example.com/peers/orderer1.group1.orderer1.example.com/msp/:/var/hyperledger/orderer/msp - - ../fabric-config/crypto-config/peerOrganizations/orderer1.example.com/peers/orderer1.group1.orderer1.example.com/tls/:/var/hyperledger/orderer/tls + - ../fabric-config/crypto-config/peerOrganizations/orderer.example.com/peers/orderer1.group1.orderer.example.com/msp/:/var/hyperledger/orderer/msp + - ../fabric-config/crypto-config/peerOrganizations/orderer.example.com/peers/orderer1.group1.orderer.example.com/tls/:/var/hyperledger/orderer/tls networks: - basic - orderer2.group1.orderer1.example.com: - container_name: orderer2.group1.orderer1.example.com + orderer2.group1.orderer.example.com: + container_name: orderer2.group1.orderer.example.com image: hyperledger/fabric-orderer:\${FABRIC_VERSION} environment: - FABRIC_LOGGING_SPEC=\${LOGGING_LEVEL} - ORDERER_GENERAL_LISTENADDRESS=0.0.0.0 - ORDERER_GENERAL_LISTENPORT=7032 - - ORDERER_GENERAL_LOCALMSPID=Orderer1MSP + - ORDERER_GENERAL_LOCALMSPID=OrdererMSP - ORDERER_GENERAL_LOCALMSPDIR=/var/hyperledger/orderer/msp # TLS Configuration - ORDERER_GENERAL_TLS_ENABLED=true @@ -3079,7 +2277,7 @@ services: - ORDERER_ADMIN_TLS_CLIENTROOTCAS=[/var/hyperledger/orderer/tls/ca.crt] - ORDERER_ADMIN_LISTENADDRESS=0.0.0.0:7053 # Metrics configuration - - ORDERER_OPERATIONS_LISTENADDRESS=orderer2.group1.orderer1.example.com:9443 + - ORDERER_OPERATIONS_LISTENADDRESS=orderer2.group1.orderer.example.com:9443 - ORDERER_METRICS_PROVIDER=prometheus working_dir: /var/hyperledger/orderer command: orderer @@ -3088,74 +2286,19 @@ services: - 8032:9440 volumes: - ../fabric-config/config/:/var/hyperledger/config - - ../fabric-config/crypto-config/peerOrganizations/orderer1.example.com/peers/orderer2.group1.orderer1.example.com/msp/:/var/hyperledger/orderer/msp - - ../fabric-config/crypto-config/peerOrganizations/orderer1.example.com/peers/orderer2.group1.orderer1.example.com/tls/:/var/hyperledger/orderer/tls - networks: - - basic - - ca.orderer2.example.com: - container_name: ca.orderer2.example.com - image: hyperledger/fabric-ca:\${FABRIC_CA_VERSION} - environment: - - FABRIC_CA_HOME=/etc/hyperledger/fabric-ca-server - - FABRIC_CA_SERVER_CA_NAME=ca.orderer2.example.com - - FABRIC_CA_SERVER_CA_CERTFILE=/etc/hyperledger/fabric-ca-server/crypto/ca.orderer2.example.com-cert.pem - - FABRIC_CA_SERVER_CA_KEYFILE=/etc/hyperledger/fabric-ca-server/crypto/priv-key.pem - - FABRIC_LOGGING_SPEC=\${LOGGING_LEVEL} - - FABRIC_CA_SERVER_TLS_ENABLED=true - ports: - - 7040:7054 - working_dir: /etc/hyperledger/fabric-ca-server - command: sh -c 'fabric-ca-server start -b \${ORDERER2_CA_ADMIN_NAME}:\${ORDERER2_CA_ADMIN_PASSWORD} -d' - volumes: - - ../fabric-config/crypto-config/peerOrganizations/orderer2.example.com/ca/:/etc/hyperledger/fabric-ca-server/crypto - - ../fabric-config/fabric-ca-server-config/orderer2.example.com/fabric-ca-server-config.yaml:/etc/hyperledger/fabric-ca-server/fabric-ca-server-config.yaml - networks: - - basic - - cli.orderer2.example.com: - container_name: cli.orderer2.example.com - image: ghcr.io/fablo-io/fabric-tools:\${FABRIC_TOOLS_VERSION} - tty: true - environment: - - GOPATH=/opt/gopath - - CORE_VM_ENDPOINT=unix:///host/var/run/docker.sock - - FABRIC_LOGGING_SPEC=\${LOGGING_LEVEL} - - CORE_PEER_ID=cli.orderer2.example.com - - CORE_CHAINCODE_KEEPALIVE=10 - # - - CORE_PEER_LOCALMSPID=Orderer2MSP - - CORE_PEER_MSPCONFIGPATH=/var/hyperledger/cli/crypto/users/Admin@orderer2.example.com/msp - # enabled TLS - - CORE_PEER_TLS_ENABLED=true - - CORE_PEER_TLS_CERT_FILE=/var/hyperledger/cli/crypto/users/Admin@orderer2.example.com/tls/client.crt - - CORE_PEER_TLS_KEY_FILE=/var/hyperledger/cli/crypto/users/Admin@orderer2.example.com/tls/client.key - - CORE_PEER_TLS_ROOTCERT_FILE=/var/hyperledger/cli/crypto/users/Admin@orderer2.example.com/tls/ca.crt - - TLS_CA_CERT_PATH=/var/hyperledger/cli/crypto-orderer/tlsca.orderer1.example.com-cert.pem - working_dir: /var/hyperledger/cli/ - command: /bin/bash - volumes: - - /var/run/docker.sock:/host/var/run/docker.sock - - ../fabric-docker/scripts/cli:/var/hyperledger/cli/scripts/ - - ../fabric-config/config:/var/hyperledger/cli/config/ # genesis.block and channel.tx's - - ../fabric-config/crypto-config/peerOrganizations/orderer2.example.com:/var/hyperledger/cli/crypto/ - - ../fabric-config/crypto-config/peerOrganizations/orderer1.example.com/peers/orderer0.group1.orderer1.example.com/msp/tlscacerts/tlsca.orderer1.example.com-cert.pem:/var/hyperledger/cli/crypto-orderer/tlsca.orderer1.example.com-cert.pem:ro - - ../fabric-config/crypto-config/peerOrganizations/orderer2.example.com/peers/orderer0.group2.orderer2.example.com/msp/tlscacerts/tlsca.orderer2.example.com-cert.pem:/var/hyperledger/cli/crypto-orderer/tlsca.orderer2.example.com-cert.pem:ro - - ../fabric-config/crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt:/var/hyperledger/cli/crypto-peer/peer0.org1.example.com/tls/ca.crt:ro - - ../fabric-config/crypto-config/peerOrganizations/org1.example.com/peers/peer1.org1.example.com/tls/ca.crt:/var/hyperledger/cli/crypto-peer/peer1.org1.example.com/tls/ca.crt:ro - - ../fabric-config/chaincode-packages:/var/hyperledger/cli/chaincode-packages/ - - "$CHAINCODES_BASE_DIR/./chaincodes/chaincode-kv-node/:/var/hyperledger/cli/chaincode1/" + - ../fabric-config/crypto-config/peerOrganizations/orderer.example.com/peers/orderer2.group1.orderer.example.com/msp/:/var/hyperledger/orderer/msp + - ../fabric-config/crypto-config/peerOrganizations/orderer.example.com/peers/orderer2.group1.orderer.example.com/tls/:/var/hyperledger/orderer/tls networks: - basic - orderer0.group2.orderer2.example.com: - container_name: orderer0.group2.orderer2.example.com + orderer3.group1.orderer.example.com: + container_name: orderer3.group1.orderer.example.com image: hyperledger/fabric-orderer:\${FABRIC_VERSION} environment: - FABRIC_LOGGING_SPEC=\${LOGGING_LEVEL} - ORDERER_GENERAL_LISTENADDRESS=0.0.0.0 - - ORDERER_GENERAL_LISTENPORT=7050 - - ORDERER_GENERAL_LOCALMSPID=Orderer2MSP + - ORDERER_GENERAL_LISTENPORT=7033 + - ORDERER_GENERAL_LOCALMSPID=OrdererMSP - ORDERER_GENERAL_LOCALMSPDIR=/var/hyperledger/orderer/msp # TLS Configuration - ORDERER_GENERAL_TLS_ENABLED=true @@ -3177,17 +2320,17 @@ services: - ORDERER_ADMIN_TLS_CLIENTROOTCAS=[/var/hyperledger/orderer/tls/ca.crt] - ORDERER_ADMIN_LISTENADDRESS=0.0.0.0:7053 # Metrics configuration - - ORDERER_OPERATIONS_LISTENADDRESS=orderer0.group2.orderer2.example.com:9443 + - ORDERER_OPERATIONS_LISTENADDRESS=orderer3.group1.orderer.example.com:9443 - ORDERER_METRICS_PROVIDER=prometheus working_dir: /var/hyperledger/orderer command: orderer ports: - - 7050:7050 - - 8050:9440 + - 7033:7033 + - 8033:9440 volumes: - ../fabric-config/config/:/var/hyperledger/config - - ../fabric-config/crypto-config/peerOrganizations/orderer2.example.com/peers/orderer0.group2.orderer2.example.com/msp/:/var/hyperledger/orderer/msp - - ../fabric-config/crypto-config/peerOrganizations/orderer2.example.com/peers/orderer0.group2.orderer2.example.com/tls/:/var/hyperledger/orderer/tls + - ../fabric-config/crypto-config/peerOrganizations/orderer.example.com/peers/orderer3.group1.orderer.example.com/msp/:/var/hyperledger/orderer/msp + - ../fabric-config/crypto-config/peerOrganizations/orderer.example.com/peers/orderer3.group1.orderer.example.com/tls/:/var/hyperledger/orderer/tls networks: - basic @@ -3202,7 +2345,7 @@ services: - FABRIC_LOGGING_SPEC=\${LOGGING_LEVEL} - FABRIC_CA_SERVER_TLS_ENABLED=true ports: - - 7060:7054 + - 7040:7054 working_dir: /etc/hyperledger/fabric-ca-server command: sh -c 'fabric-ca-server start -b \${ORG1_CA_ADMIN_NAME}:\${ORG1_CA_ADMIN_PASSWORD} -d' volumes: @@ -3224,13 +2367,13 @@ services: # - CORE_PEER_LOCALMSPID=Org1MSP - CORE_PEER_MSPCONFIGPATH=/var/hyperledger/cli/crypto/users/Admin@org1.example.com/msp - - CORE_PEER_ADDRESS=peer0.org1.example.com:7061 + - CORE_PEER_ADDRESS=peer0.org1.example.com:7041 # enabled TLS - CORE_PEER_TLS_ENABLED=true - CORE_PEER_TLS_CERT_FILE=/var/hyperledger/cli/crypto/users/Admin@org1.example.com/tls/client.crt - CORE_PEER_TLS_KEY_FILE=/var/hyperledger/cli/crypto/users/Admin@org1.example.com/tls/client.key - CORE_PEER_TLS_ROOTCERT_FILE=/var/hyperledger/cli/crypto/users/Admin@org1.example.com/tls/ca.crt - - TLS_CA_CERT_PATH=/var/hyperledger/cli/crypto-orderer/tlsca.orderer1.example.com-cert.pem + - TLS_CA_CERT_PATH=/var/hyperledger/cli/crypto-orderer/tlsca.orderer.example.com-cert.pem working_dir: /var/hyperledger/cli/ command: /bin/bash volumes: @@ -3238,8 +2381,7 @@ services: - ../fabric-docker/scripts/cli:/var/hyperledger/cli/scripts/ - ../fabric-config/config:/var/hyperledger/cli/config/ # genesis.block and channel.tx's - ../fabric-config/crypto-config/peerOrganizations/org1.example.com:/var/hyperledger/cli/crypto/ - - ../fabric-config/crypto-config/peerOrganizations/orderer1.example.com/peers/orderer0.group1.orderer1.example.com/msp/tlscacerts/tlsca.orderer1.example.com-cert.pem:/var/hyperledger/cli/crypto-orderer/tlsca.orderer1.example.com-cert.pem:ro - - ../fabric-config/crypto-config/peerOrganizations/orderer2.example.com/peers/orderer0.group2.orderer2.example.com/msp/tlscacerts/tlsca.orderer2.example.com-cert.pem:/var/hyperledger/cli/crypto-orderer/tlsca.orderer2.example.com-cert.pem:ro + - ../fabric-config/crypto-config/peerOrganizations/orderer.example.com/peers/orderer0.group1.orderer.example.com/msp/tlscacerts/tlsca.orderer.example.com-cert.pem:/var/hyperledger/cli/crypto-orderer/tlsca.orderer.example.com-cert.pem:ro - ../fabric-config/crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt:/var/hyperledger/cli/crypto-peer/peer0.org1.example.com/tls/ca.crt:ro - ../fabric-config/crypto-config/peerOrganizations/org1.example.com/peers/peer1.org1.example.com/tls/ca.crt:/var/hyperledger/cli/crypto-peer/peer1.org1.example.com/tls/ca.crt:ro - ../fabric-config/chaincode-packages:/var/hyperledger/cli/chaincode-packages/ @@ -3253,11 +2395,11 @@ services: environment: - CORE_PEER_LOCALMSPID=Org1MSP - CORE_PEER_ID=peer0.org1.example.com - - CORE_PEER_ADDRESS=peer0.org1.example.com:7061 - - CORE_PEER_LISTENADDRESS=peer0.org1.example.com:7061 - - CORE_PEER_GOSSIP_ENDPOINT=peer0.org1.example.com:7061 - - CORE_PEER_GOSSIP_EXTERNALENDPOINT=peer0.org1.example.com:7061 - - CORE_PEER_GOSSIP_BOOTSTRAP="peer0.org1.example.com:7061 peer1.org1.example.com:7062" + - CORE_PEER_ADDRESS=peer0.org1.example.com:7041 + - CORE_PEER_LISTENADDRESS=peer0.org1.example.com:7041 + - CORE_PEER_GOSSIP_ENDPOINT=peer0.org1.example.com:7041 + - CORE_PEER_GOSSIP_EXTERNALENDPOINT=peer0.org1.example.com:7041 + - CORE_PEER_GOSSIP_BOOTSTRAP="peer0.org1.example.com:7041 peer1.org1.example.com:7042" - CORE_PEER_CHAINCODELISTENADDRESS=peer0.org1.example.com:7050 - CORE_PEER_MSPCONFIGPATH=/etc/hyperledger/fabric/peer/msp - CORE_CHAINCODE_BUILDER=hyperledger/fabric-ccenv:\${FABRIC_CCENV_VERSION} @@ -3288,8 +2430,8 @@ services: working_dir: /etc/hyperledger/fabric/peer/ command: peer node start ports: - - 8061:9440 - - 7061:7061 + - 8041:9440 + - 7041:7041 volumes: - /var/run/docker.sock:/host/var/run/docker.sock - ../fabric-config/crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/msp:/etc/hyperledger/fabric/peer/msp @@ -3304,11 +2446,11 @@ services: environment: - CORE_PEER_LOCALMSPID=Org1MSP - CORE_PEER_ID=peer1.org1.example.com - - CORE_PEER_ADDRESS=peer1.org1.example.com:7062 - - CORE_PEER_LISTENADDRESS=peer1.org1.example.com:7062 - - CORE_PEER_GOSSIP_ENDPOINT=peer1.org1.example.com:7062 - - CORE_PEER_GOSSIP_EXTERNALENDPOINT=peer1.org1.example.com:7062 - - CORE_PEER_GOSSIP_BOOTSTRAP="peer0.org1.example.com:7061 peer1.org1.example.com:7062" + - CORE_PEER_ADDRESS=peer1.org1.example.com:7042 + - CORE_PEER_LISTENADDRESS=peer1.org1.example.com:7042 + - CORE_PEER_GOSSIP_ENDPOINT=peer1.org1.example.com:7042 + - CORE_PEER_GOSSIP_EXTERNALENDPOINT=peer1.org1.example.com:7042 + - CORE_PEER_GOSSIP_BOOTSTRAP="peer0.org1.example.com:7041 peer1.org1.example.com:7042" - CORE_PEER_CHAINCODELISTENADDRESS=peer1.org1.example.com:7050 - CORE_PEER_MSPCONFIGPATH=/etc/hyperledger/fabric/peer/msp - CORE_CHAINCODE_BUILDER=hyperledger/fabric-ccenv:\${FABRIC_CCENV_VERSION} @@ -3339,8 +2481,8 @@ services: working_dir: /etc/hyperledger/fabric/peer/ command: peer node start ports: - - 8062:9440 - - 7062:7062 + - 8042:9440 + - 7042:7042 volumes: - /var/run/docker.sock:/host/var/run/docker.sock - ../fabric-config/crypto-config/peerOrganizations/org1.example.com/peers/peer1.org1.example.com/msp:/etc/hyperledger/fabric/peer/msp @@ -4648,10 +3790,10 @@ exports[`samples/fablo-config-hlf3-1orgs-1chaincode.json should create proper e2 __getOrdererAndPeerNodes() { echo " - orderer0.group1.orderer1.example.com - orderer1.group1.orderer1.example.com - orderer2.group1.orderer1.example.com - orderer0.group2.orderer2.example.com + orderer0.group1.orderer.example.com + orderer1.group1.orderer.example.com + orderer2.group1.orderer.example.com + orderer3.group1.orderer.example.com peer0.org1.example.com peer1.org1.example.com " @@ -4659,8 +3801,7 @@ __getOrdererAndPeerNodes() { __getCASQLiteNodes() { echo " - ca.orderer1.example.com - ca.orderer2.example.com + ca.orderer.example.com ca.org1.example.com " } @@ -4768,12 +3909,8 @@ echo "Executing post-generate hook" exports[`samples/fablo-config-hlf3-1orgs-1chaincode.json should create proper e2e/__tmp__/samples/fablo-config-hlf3-1orgs-1chaincode.json.tmpdir/fablo-target/network-topology.mmd from samples/fablo-config-hlf3-1orgs-1chaincode.json 1`] = ` "graph TD - subgraph Org_Orderer1 [Org: Orderer1] - CA_ca_Orderer1[CA: ca_Orderer1 - sqlite] - end - - subgraph Org_Orderer2 [Org: Orderer2] - CA_ca_Orderer2[CA: ca_Orderer2 - sqlite] + subgraph Org_Orderer [Org: Orderer] + CA_ca_Orderer[CA: ca_Orderer - sqlite] end subgraph Org_Org1 [Org: Org1] @@ -4786,20 +3923,11 @@ exports[`samples/fablo-config-hlf3-1orgs-1chaincode.json should create proper e2 Chaincode_chaincode1[Chaincode: chaincode1] end - subgraph Channel_my_channel2 [Channel: my-channel2] - end - %% Connections - Org_Orderer1 --> Channel_my_channel1 - Org_Orderer1 --> Channel_my_channel2 - Org_Orderer2 --> Channel_my_channel1 - Org_Orderer2 --> Channel_my_channel2 + Org_Orderer --> Channel_my_channel1 Org_Org1 -.-> Channel_my_channel1 Org1_peer0 --> Channel_my_channel1 Org1_peer1 --> Channel_my_channel1 - Org_Org1 -.-> Channel_my_channel2 - Org1_peer0 --> Channel_my_channel2 - Org1_peer1 --> Channel_my_channel2 " `; @@ -4807,18 +3935,14 @@ exports[`samples/fablo-config-hlf3-1orgs-1chaincode.json should create proper fi [ "e2e/__tmp__/samples/fablo-config-hlf3-1orgs-1chaincode.json.tmpdir/fablo-target/fabric-config/.gitignore", "e2e/__tmp__/samples/fablo-config-hlf3-1orgs-1chaincode.json.tmpdir/fablo-target/fabric-config/configtx.yaml", - "e2e/__tmp__/samples/fablo-config-hlf3-1orgs-1chaincode.json.tmpdir/fablo-target/fabric-config/connection-profiles/connection-profile-orderer1.json", - "e2e/__tmp__/samples/fablo-config-hlf3-1orgs-1chaincode.json.tmpdir/fablo-target/fabric-config/connection-profiles/connection-profile-orderer1.yaml", - "e2e/__tmp__/samples/fablo-config-hlf3-1orgs-1chaincode.json.tmpdir/fablo-target/fabric-config/connection-profiles/connection-profile-orderer2.json", - "e2e/__tmp__/samples/fablo-config-hlf3-1orgs-1chaincode.json.tmpdir/fablo-target/fabric-config/connection-profiles/connection-profile-orderer2.yaml", + "e2e/__tmp__/samples/fablo-config-hlf3-1orgs-1chaincode.json.tmpdir/fablo-target/fabric-config/connection-profiles/connection-profile-orderer.json", + "e2e/__tmp__/samples/fablo-config-hlf3-1orgs-1chaincode.json.tmpdir/fablo-target/fabric-config/connection-profiles/connection-profile-orderer.yaml", "e2e/__tmp__/samples/fablo-config-hlf3-1orgs-1chaincode.json.tmpdir/fablo-target/fabric-config/connection-profiles/connection-profile-org1.json", "e2e/__tmp__/samples/fablo-config-hlf3-1orgs-1chaincode.json.tmpdir/fablo-target/fabric-config/connection-profiles/connection-profile-org1.yaml", - "e2e/__tmp__/samples/fablo-config-hlf3-1orgs-1chaincode.json.tmpdir/fablo-target/fabric-config/crypto-config-orderer1.yaml", - "e2e/__tmp__/samples/fablo-config-hlf3-1orgs-1chaincode.json.tmpdir/fablo-target/fabric-config/crypto-config-orderer2.yaml", + "e2e/__tmp__/samples/fablo-config-hlf3-1orgs-1chaincode.json.tmpdir/fablo-target/fabric-config/crypto-config-orderer.yaml", "e2e/__tmp__/samples/fablo-config-hlf3-1orgs-1chaincode.json.tmpdir/fablo-target/fabric-config/crypto-config-org1.yaml", "e2e/__tmp__/samples/fablo-config-hlf3-1orgs-1chaincode.json.tmpdir/fablo-target/fabric-config/explorer/config-global.json", - "e2e/__tmp__/samples/fablo-config-hlf3-1orgs-1chaincode.json.tmpdir/fablo-target/fabric-config/fabric-ca-server-config/orderer1.example.com/fabric-ca-server-config.yaml", - "e2e/__tmp__/samples/fablo-config-hlf3-1orgs-1chaincode.json.tmpdir/fablo-target/fabric-config/fabric-ca-server-config/orderer2.example.com/fabric-ca-server-config.yaml", + "e2e/__tmp__/samples/fablo-config-hlf3-1orgs-1chaincode.json.tmpdir/fablo-target/fabric-config/fabric-ca-server-config/orderer.example.com/fabric-ca-server-config.yaml", "e2e/__tmp__/samples/fablo-config-hlf3-1orgs-1chaincode.json.tmpdir/fablo-target/fabric-config/fabric-ca-server-config/org1.example.com/fabric-ca-server-config.yaml", "e2e/__tmp__/samples/fablo-config-hlf3-1orgs-1chaincode.json.tmpdir/fablo-target/fabric-docker.sh", "e2e/__tmp__/samples/fablo-config-hlf3-1orgs-1chaincode.json.tmpdir/fablo-target/fabric-docker/.env", diff --git a/samples/fablo-config-hlf3-1orgs-1chaincode.json b/samples/fablo-config-hlf3-1orgs-1chaincode.json index 5f290af81..a7c4239e3 100644 --- a/samples/fablo-config-hlf3-1orgs-1chaincode.json +++ b/samples/fablo-config-hlf3-1orgs-1chaincode.json @@ -10,27 +10,14 @@ "orgs": [ { "organization": { - "name": "Orderer1", - "domain": "orderer1.example.com" + "name": "Orderer", + "domain": "orderer.example.com" }, "orderers": [ { "groupName": "group1", "type": "raft", - "instances": 3 - } - ] - }, - { - "organization": { - "name": "Orderer2", - "domain": "orderer2.example.com" - }, - "orderers": [ - { - "groupName": "group2", - "type": "raft", - "instances": 1 + "instances": 4 } ] }, @@ -48,7 +35,6 @@ "channels": [ { "name": "my-channel1", - "ordererGroup": "group1", "orgs": [ { "name": "Org1", @@ -58,18 +44,6 @@ ] } ] - }, - { - "name": "my-channel2", - "ordererGroup": "group2", - "orgs": [ - { - "name": "Org1", - "peers": [ - "peer1" - ] - } - ] } ], "chaincodes": [ From 6977f9080a1b23668799631e5e84041ef1aa7e4d Mon Sep 17 00:00:00 2001 From: Pereowei Daniel <82245725+dpereowei@users.noreply.github.com> Date: Mon, 13 Oct 2025 09:58:37 +0200 Subject: [PATCH 12/13] Update e2e-network/docker/test-02-v2-raft-2orgs.sh Co-authored-by: Jakub Dzikowski Signed-off-by: Pereowei Daniel <82245725+dpereowei@users.noreply.github.com> --- e2e-network/docker/test-02-v2-raft-2orgs.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/e2e-network/docker/test-02-v2-raft-2orgs.sh b/e2e-network/docker/test-02-v2-raft-2orgs.sh index e85a72ed7..c513923c5 100755 --- a/e2e-network/docker/test-02-v2-raft-2orgs.sh +++ b/e2e-network/docker/test-02-v2-raft-2orgs.sh @@ -85,7 +85,7 @@ waitForContainer "peer1.org1.example.com" "Membership view has changed. peers we waitForContainer "db.explorer.example.com" "database system is ready to accept connections" "200" # // the next check is not working because explorer needs needs to be restarted first # // see the issue: https://github.com/hyperledger-labs/fablo/issues/604 -# waitForContainer "explorer.example.com" "Successfully created channel event hub for \[my-channel1\]" "200" +waitForContainer "explorer.example.com" "Successfully created channel event hub for \[my-channel1\]" "200" # check if org2 is ready waitForContainer "ca.org2.example.com" "Listening on https://0.0.0.0:7054" From 1e5edecb425eca38e68cd7ef6c47fab9b0043a6f Mon Sep 17 00:00:00 2001 From: Pereowei Daniel Date: Mon, 13 Oct 2025 10:13:25 +0200 Subject: [PATCH 13/13] update snapshots Signed-off-by: Pereowei Daniel --- ...blo-config-hlf2-2orgs-2chaincodes-raft.yaml.test.ts.snap | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) 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 ed97055d6..d918e687a 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: