From 7a37f47d2d502da4b0768741588ecec6722438c3 Mon Sep 17 00:00:00 2001 From: Harshit Kandpal Date: Wed, 1 Jul 2026 12:39:43 +0530 Subject: [PATCH 1/4] (fix) Improve error handling and output Signed-off-by: Harshit Kandpal --- src/commands/validate/index.ts | 2 +- src/config.ts | 20 ++++++++++--------- src/setup-docker/templates/fabric-docker.sh | 13 ++++++------ .../fabric-docker/chaincode-scripts.sh | 2 +- src/utils/parseFabloConfig.test.ts | 7 +++++++ src/utils/parseFabloConfig.ts | 6 +++++- 6 files changed, 32 insertions(+), 18 deletions(-) diff --git a/src/commands/validate/index.ts b/src/commands/validate/index.ts index 51edad0b0..6ecba4e72 100644 --- a/src/commands/validate/index.ts +++ b/src/commands/validate/index.ts @@ -322,7 +322,7 @@ export default class Validate extends Command { if (!config.versionsSupportingRaft(global.fabricVersion)) { const objectToEmit = { category: validationCategories.ORDERER, - message: `Fabric's ${global.fabricVersion} does not support Raft consensus type. Supporting versions are: ${config.versionsSupportingRaft}`, + message: `Fabric's ${global.fabricVersion} does not support Raft consensus type. Raft is supported from Fabric ${config.minFabricVersionRaft} and above.`, }; this.emit(validationErrorType.ERROR, objectToEmit); } diff --git a/src/config.ts b/src/config.ts index 74233221c..7fbd85c76 100644 --- a/src/config.ts +++ b/src/config.ts @@ -12,19 +12,21 @@ const schema: Schema = schemaJson as Schema; const supportedVersionPrefix = `${fabloVersion.split(".").slice(0, 2).join(".")}.`; const getVersionFromSchemaUrl = (url?: string): string => { - const matches = (url || "").match(/\d+\.\d+\.\d+/g); - return matches?.length ? matches[0] : fabloVersion; + const matches = (url || "").match(/\d+\.\d+\.\d+/g); + return matches?.length ? matches[0] : fabloVersion; }; const isFabloVersionSupported = (versionName: string): boolean => versionName.startsWith(supportedVersionPrefix); -const versionsSupportingRaft = (v: string): boolean => version(v).isGreaterOrEqual("1.4.3"); +const minFabricVersionRaft = "1.4.3"; +const versionsSupportingRaft = (v: string): boolean => version(v).isGreaterOrEqual(minFabricVersionRaft); export { - schema, - fabloVersion, - versionsSupportingRaft, - getVersionFromSchemaUrl, - isFabloVersionSupported, - supportedVersionPrefix, + schema, + fabloVersion, + minFabricVersionRaft, + versionsSupportingRaft, + getVersionFromSchemaUrl, + isFabloVersionSupported, + supportedVersionPrefix, }; diff --git a/src/setup-docker/templates/fabric-docker.sh b/src/setup-docker/templates/fabric-docker.sh index 0369a66a3..ba2b55acf 100755 --- a/src/setup-docker/templates/fabric-docker.sh +++ b/src/setup-docker/templates/fabric-docker.sh @@ -38,17 +38,17 @@ elif [ "$1" = "stop" ]; then elif [ "$1" = "chaincodes" ] && [ "$2" = "install" ]; then installChaincodes elif [ "$1" = "chaincode" ] && [ "$2" = "install" ]; then - installChaincode "$3" "$4" + installChaincode "${@:3}" elif [ "$1" = "chaincode" ] && [ "$2" = "upgrade" ]; then - upgradeChaincode "$3" "$4" + upgradeChaincode "${@:3}" elif [ "$1" = "chaincode" ] && [ "$2" = "dev" ]; then - runDevModeChaincode "$3" "$4" + runDevModeChaincode "${@:3}" elif [ "$1" = "chaincode" ] && [ "$2" = "invoke" ]; then - chaincodeInvoke "$3" "$4" "$5" "$6" "$7" + chaincodeInvoke "${@:3}" elif [ "$1" = "chaincode" ] && [ "$2" = "query" ]; then - chaincodeQuery "$3" "$4" "$5" "$6" "$7" + chaincodeQuery "${@:3}" elif [ "$1" = "chaincodes" ] && [ "$2" = "list" ]; then - chaincodeList "$3" "$4" + chaincodeList "${@:3}" elif [ "$1" = "channel" ]; then channelQuery "${@:2}" elif [ "$1" = "snapshot" ]; then @@ -65,4 +65,5 @@ else echo "To list channel query helper commands type: 'fablo channel --help'" echo "Also check: 'chaincode install'" echo "Use 'help' or '--help' for more information" + exit 1 fi \ No newline at end of file diff --git a/src/setup-docker/templates/fabric-docker/chaincode-scripts.sh b/src/setup-docker/templates/fabric-docker/chaincode-scripts.sh index e66914869..407e1a70e 100755 --- a/src/setup-docker/templates/fabric-docker/chaincode-scripts.sh +++ b/src/setup-docker/templates/fabric-docker/chaincode-scripts.sh @@ -27,7 +27,7 @@ chaincodeList() { # 5. transient data (optional) chaincodeInvoke() { if [ "$#" -ne 4 ] && [ "$#" -ne 5 ]; then - echo "Expected 4 or 5 parameters for chaincode list, but got: $*" + echo "Expected 4 or 5 parameters for chaincode invoke, but got: $*" echo "Usage: fablo chaincode invoke [transient]" exit 1 fi diff --git a/src/utils/parseFabloConfig.test.ts b/src/utils/parseFabloConfig.test.ts index eba214878..343d130f7 100644 --- a/src/utils/parseFabloConfig.test.ts +++ b/src/utils/parseFabloConfig.test.ts @@ -146,4 +146,11 @@ describe("parseFabloConfig", () => { const result = parseFabloConfig(emptyConfig); expect(result).toEqual({}); }); + + it("should fail parsing with detailed JSON and YAML errors", () => { + const invalidConfig = `{ invalid: [ }`; + expect(() => parseFabloConfig(invalidConfig)).toThrow( + /Cannot parse config file\.\n\s+JSON error:.*\n\s+YAML error:.*/, + ); + }); }); diff --git a/src/utils/parseFabloConfig.ts b/src/utils/parseFabloConfig.ts index 1334f8637..aa389d15f 100644 --- a/src/utils/parseFabloConfig.ts +++ b/src/utils/parseFabloConfig.ts @@ -9,7 +9,11 @@ const parseFabloConfig = (str: string): FabloConfigJson => { const yamlContent = yaml.load(str); return JSON.parse(JSON.stringify(yamlContent)); } catch (e2) { - throw new Error("Cannot parse file neither as JSON nor YAML file."); + const jsonError = e instanceof Error ? e.message : String(e); + const yamlError = e2 instanceof Error ? e2.message : String(e2); + throw new Error( + `Cannot parse config file.\n JSON error: ${jsonError}\n YAML error: ${yamlError}`, + ); } } }; From 98fa7af225af0b069820fc3b621b5bd8fcd68441 Mon Sep 17 00:00:00 2001 From: Harshit Kandpal Date: Fri, 3 Jul 2026 17:13:52 +0530 Subject: [PATCH 2/4] style: revert indentation in config.ts and update snapshots for error message improvements Signed-off-by: Harshit Kandpal --- e2e/__snapshots__/extendConfig.test.ts.snap | 702 ++++++++++++++++++ ...1chaincode-peer-dev-mode.json.test.ts.snap | 15 +- ...fig-hlf2-1org-1chaincode.json.test.ts.snap | 15 +- ...rg-2chaincode-raft-ccaas.json.test.ts.snap | 15 +- ...2chaincodes-private-data.yaml.test.ts.snap | 15 +- ...2-2orgs-2chaincodes-raft.yaml.test.ts.snap | 15 +- ...1chaincode-raft-explorer.json.test.ts.snap | 15 +- ...g-hlf3-1orgs-2chaincodes.json.test.ts.snap | 15 +- ...3-2orgs-1chaincode-raft-ccaas.test.ts.snap | 15 +- ...lf3-bft-1orgs-1chaincode.json.test.ts.snap | 15 +- src/config.ts | 18 +- 11 files changed, 783 insertions(+), 72 deletions(-) diff --git a/e2e/__snapshots__/extendConfig.test.ts.snap b/e2e/__snapshots__/extendConfig.test.ts.snap index 6c55461cf..86a46a069 100644 --- a/e2e/__snapshots__/extendConfig.test.ts.snap +++ b/e2e/__snapshots__/extendConfig.test.ts.snap @@ -837,6 +837,708 @@ exports[`extend config samples/fablo-config-hlf2-1org-1chaincode.json 1`] = ` } `; +exports[`extend config samples/fablo-config-hlf2-1org-1chaincode-ccaas-tls.json 1`] = ` +{ + "chaincodes": [ + { + "chaincodeMountPath": undefined, + "chaincodeStartCommand": undefined, + "channel": { + "instantiatingOrg": { + "anchorPeers": [ + { + "address": "peer0.org1.example.com", + "couchDbExposePort": 5100, + "db": { + "type": "LevelDb", + }, + "fullAddress": "peer0.org1.example.com:7041", + "gatewayEnabled": true, + "isAnchorPeer": true, + "name": "peer0", + "port": 7041, + }, + ], + "bootstrapPeers": "peer0.org1.example.com:7041", + "ca": { + "address": "ca.org1.example.com", + "caAdminNameVar": "ORG1_CA_ADMIN_NAME", + "caAdminPassVar": "ORG1_CA_ADMIN_PASSWORD", + "db": "sqlite", + "exposePort": 7040, + "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": "peer0.org1.example.com", + "couchDbExposePort": 5100, + "db": { + "type": "LevelDb", + }, + "fullAddress": "peer0.org1.example.com:7041", + "gatewayEnabled": true, + "isAnchorPeer": true, + "name": "peer0", + "port": 7041, + }, + "mspName": "Org1MSP", + "name": "Org1", + "ordererGroups": [], + "peers": [ + { + "address": "peer0.org1.example.com", + "couchDbExposePort": 5100, + "db": { + "type": "LevelDb", + }, + "fullAddress": "peer0.org1.example.com:7041", + "gatewayEnabled": true, + "isAnchorPeer": true, + "name": "peer0", + "port": 7041, + }, + ], + "peersCount": 1, + "tools": {}, + }, + "name": "my-channel1", + "ordererGroup": { + "configtxOrdererDefaults": "Group1Defaults", + "consensus": "solo", + "genesisBlockName": "Group1Genesis.block", + "hostingOrgs": [ + "Orderer", + ], + "name": "group1", + "ordererHead": { + "address": "orderer0.group1.orderer.example.com", + "adminPort": 7053, + "consensus": "solo", + "domain": "orderer.example.com", + "fullAddress": "orderer0.group1.orderer.example.com:7030", + "name": "orderer0.group1", + "orgMspName": "OrdererMSP", + "orgName": "Orderer", + "port": 7030, + }, + "ordererHeads": [ + { + "address": "orderer0.group1.orderer.example.com", + "adminPort": 7053, + "consensus": "solo", + "domain": "orderer.example.com", + "fullAddress": "orderer0.group1.orderer.example.com:7030", + "name": "orderer0.group1", + "orgMspName": "OrdererMSP", + "orgName": "Orderer", + "port": 7030, + }, + ], + "orderers": [ + { + "address": "orderer0.group1.orderer.example.com", + "adminPort": 7053, + "consensus": "solo", + "domain": "orderer.example.com", + "fullAddress": "orderer0.group1.orderer.example.com:7030", + "name": "orderer0.group1", + "orgMspName": "OrdererMSP", + "orgName": "Orderer", + "port": 7030, + }, + ], + "profileName": "Group1Genesis", + }, + "ordererHead": { + "address": "orderer0.group1.orderer.example.com", + "adminPort": 7053, + "consensus": "solo", + "domain": "orderer.example.com", + "fullAddress": "orderer0.group1.orderer.example.com:7030", + "name": "orderer0.group1", + "orgMspName": "OrdererMSP", + "orgName": "Orderer", + "port": 7030, + }, + "orgs": [ + { + "anchorPeers": [ + { + "address": "peer0.org1.example.com", + "couchDbExposePort": 5100, + "db": { + "type": "LevelDb", + }, + "fullAddress": "peer0.org1.example.com:7041", + "gatewayEnabled": true, + "isAnchorPeer": true, + "name": "peer0", + "port": 7041, + }, + ], + "bootstrapPeers": "peer0.org1.example.com:7041", + "ca": { + "address": "ca.org1.example.com", + "caAdminNameVar": "ORG1_CA_ADMIN_NAME", + "caAdminPassVar": "ORG1_CA_ADMIN_PASSWORD", + "db": "sqlite", + "exposePort": 7040, + "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": "peer0.org1.example.com", + "couchDbExposePort": 5100, + "db": { + "type": "LevelDb", + }, + "fullAddress": "peer0.org1.example.com:7041", + "gatewayEnabled": true, + "isAnchorPeer": true, + "name": "peer0", + "port": 7041, + }, + "mspName": "Org1MSP", + "name": "Org1", + "ordererGroups": [], + "peers": [ + { + "address": "peer0.org1.example.com", + "couchDbExposePort": 5100, + "db": { + "type": "LevelDb", + }, + "fullAddress": "peer0.org1.example.com:7041", + "gatewayEnabled": true, + "isAnchorPeer": true, + "name": "peer0", + "port": 7041, + }, + ], + "peersCount": 1, + "tools": {}, + }, + ], + "profileName": "MyChannel1", + }, + "directory": undefined, + "endorsement": undefined, + "image": "ghcr.io/fablo-io/fablo-sample-kv-node-chaincode:2.2.0", + "initRequired": false, + "instantiatingOrg": { + "anchorPeers": [ + { + "address": "peer0.org1.example.com", + "couchDbExposePort": 5100, + "db": { + "type": "LevelDb", + }, + "fullAddress": "peer0.org1.example.com:7041", + "gatewayEnabled": true, + "isAnchorPeer": true, + "name": "peer0", + "port": 7041, + }, + ], + "bootstrapPeers": "peer0.org1.example.com:7041", + "ca": { + "address": "ca.org1.example.com", + "caAdminNameVar": "ORG1_CA_ADMIN_NAME", + "caAdminPassVar": "ORG1_CA_ADMIN_PASSWORD", + "db": "sqlite", + "exposePort": 7040, + "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": "peer0.org1.example.com", + "couchDbExposePort": 5100, + "db": { + "type": "LevelDb", + }, + "fullAddress": "peer0.org1.example.com:7041", + "gatewayEnabled": true, + "isAnchorPeer": true, + "name": "peer0", + "port": 7041, + }, + "mspName": "Org1MSP", + "name": "Org1", + "ordererGroups": [], + "peers": [ + { + "address": "peer0.org1.example.com", + "couchDbExposePort": 5100, + "db": { + "type": "LevelDb", + }, + "fullAddress": "peer0.org1.example.com:7041", + "gatewayEnabled": true, + "isAnchorPeer": true, + "name": "peer0", + "port": 7041, + }, + ], + "peersCount": 1, + "tools": {}, + }, + "lang": "ccaas", + "name": "chaincode1", + "peerChaincodeInstances": [ + { + "containerName": "ccaas_peer0.org1.example.com_my-channel1_chaincode1_0.0.1", + "orgDomain": "org1.example.com", + "peerAddress": "peer0.org1.example.com", + "port": 17041, + }, + ], + "privateData": [], + "privateDataConfigFile": undefined, + "version": "0.0.1", + }, + ], + "channels": [ + { + "instantiatingOrg": { + "anchorPeers": [ + { + "address": "peer0.org1.example.com", + "couchDbExposePort": 5100, + "db": { + "type": "LevelDb", + }, + "fullAddress": "peer0.org1.example.com:7041", + "gatewayEnabled": true, + "isAnchorPeer": true, + "name": "peer0", + "port": 7041, + }, + ], + "bootstrapPeers": "peer0.org1.example.com:7041", + "ca": { + "address": "ca.org1.example.com", + "caAdminNameVar": "ORG1_CA_ADMIN_NAME", + "caAdminPassVar": "ORG1_CA_ADMIN_PASSWORD", + "db": "sqlite", + "exposePort": 7040, + "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": "peer0.org1.example.com", + "couchDbExposePort": 5100, + "db": { + "type": "LevelDb", + }, + "fullAddress": "peer0.org1.example.com:7041", + "gatewayEnabled": true, + "isAnchorPeer": true, + "name": "peer0", + "port": 7041, + }, + "mspName": "Org1MSP", + "name": "Org1", + "ordererGroups": [], + "peers": [ + { + "address": "peer0.org1.example.com", + "couchDbExposePort": 5100, + "db": { + "type": "LevelDb", + }, + "fullAddress": "peer0.org1.example.com:7041", + "gatewayEnabled": true, + "isAnchorPeer": true, + "name": "peer0", + "port": 7041, + }, + ], + "peersCount": 1, + "tools": {}, + }, + "name": "my-channel1", + "ordererGroup": { + "configtxOrdererDefaults": "Group1Defaults", + "consensus": "solo", + "genesisBlockName": "Group1Genesis.block", + "hostingOrgs": [ + "Orderer", + ], + "name": "group1", + "ordererHead": { + "address": "orderer0.group1.orderer.example.com", + "adminPort": 7053, + "consensus": "solo", + "domain": "orderer.example.com", + "fullAddress": "orderer0.group1.orderer.example.com:7030", + "name": "orderer0.group1", + "orgMspName": "OrdererMSP", + "orgName": "Orderer", + "port": 7030, + }, + "ordererHeads": [ + { + "address": "orderer0.group1.orderer.example.com", + "adminPort": 7053, + "consensus": "solo", + "domain": "orderer.example.com", + "fullAddress": "orderer0.group1.orderer.example.com:7030", + "name": "orderer0.group1", + "orgMspName": "OrdererMSP", + "orgName": "Orderer", + "port": 7030, + }, + ], + "orderers": [ + { + "address": "orderer0.group1.orderer.example.com", + "adminPort": 7053, + "consensus": "solo", + "domain": "orderer.example.com", + "fullAddress": "orderer0.group1.orderer.example.com:7030", + "name": "orderer0.group1", + "orgMspName": "OrdererMSP", + "orgName": "Orderer", + "port": 7030, + }, + ], + "profileName": "Group1Genesis", + }, + "ordererHead": { + "address": "orderer0.group1.orderer.example.com", + "adminPort": 7053, + "consensus": "solo", + "domain": "orderer.example.com", + "fullAddress": "orderer0.group1.orderer.example.com:7030", + "name": "orderer0.group1", + "orgMspName": "OrdererMSP", + "orgName": "Orderer", + "port": 7030, + }, + "orgs": [ + { + "anchorPeers": [ + { + "address": "peer0.org1.example.com", + "couchDbExposePort": 5100, + "db": { + "type": "LevelDb", + }, + "fullAddress": "peer0.org1.example.com:7041", + "gatewayEnabled": true, + "isAnchorPeer": true, + "name": "peer0", + "port": 7041, + }, + ], + "bootstrapPeers": "peer0.org1.example.com:7041", + "ca": { + "address": "ca.org1.example.com", + "caAdminNameVar": "ORG1_CA_ADMIN_NAME", + "caAdminPassVar": "ORG1_CA_ADMIN_PASSWORD", + "db": "sqlite", + "exposePort": 7040, + "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": "peer0.org1.example.com", + "couchDbExposePort": 5100, + "db": { + "type": "LevelDb", + }, + "fullAddress": "peer0.org1.example.com:7041", + "gatewayEnabled": true, + "isAnchorPeer": true, + "name": "peer0", + "port": 7041, + }, + "mspName": "Org1MSP", + "name": "Org1", + "ordererGroups": [], + "peers": [ + { + "address": "peer0.org1.example.com", + "couchDbExposePort": 5100, + "db": { + "type": "LevelDb", + }, + "fullAddress": "peer0.org1.example.com:7041", + "gatewayEnabled": true, + "isAnchorPeer": true, + "name": "peer0", + "port": 7041, + }, + ], + "peersCount": 1, + "tools": {}, + }, + ], + "profileName": "MyChannel1", + }, + ], + "global": { + "baseosImage": "hyperledger/fabric-baseos:2.5.9", + "caImage": "hyperledger/fabric-ca:1.5.16", + "capabilities": { + "application": "V2_5", + "channel": "V2_0", + "isV2": true, + "isV3": false, + "orderer": "V2_0", + }, + "ccenvImage": "hyperledger/fabric-ccenv:2.5.9", + "engine": "docker", + "fabricBaseosVersion": "2.5.9", + "fabricCaVersion": "1.5.16", + "fabricCcenvVersion": "2.5.9", + "fabricJavaenvVersion": "2.5", + "fabricNodeenvVersion": "2.5", + "fabricRecommendedNodeVersion": "16", + "fabricToolsVersion": "2.5.9", + "fabricVersion": "2.5.9", + "javaenvImage": "hyperledger/fabric-javaenv:2.5", + "monitoring": { + "loglevel": "info", + }, + "nodeenvImage": "hyperledger/fabric-nodeenv:2.5", + "ordererImage": "hyperledger/fabric-orderer:2.5.9", + "paths": { + "chaincodesBaseDir": "", + "fabloConfig": "", + }, + "peerImage": "hyperledger/fabric-peer:2.5.9", + "tls": true, + "tools": {}, + "toolsImage": "hyperledger/fabric-tools:2.5.9", + }, + "hooks": { + "postGenerate": "", + "postStart": "", + }, + "orderedHeadsDistinct": [ + { + "address": "orderer0.group1.orderer.example.com", + "adminPort": 7053, + "consensus": "solo", + "domain": "orderer.example.com", + "fullAddress": "orderer0.group1.orderer.example.com:7030", + "name": "orderer0.group1", + "orgMspName": "OrdererMSP", + "orgName": "Orderer", + "port": 7030, + }, + ], + "ordererGroups": [ + { + "configtxOrdererDefaults": "Group1Defaults", + "consensus": "solo", + "genesisBlockName": "Group1Genesis.block", + "hostingOrgs": [ + "Orderer", + ], + "name": "group1", + "ordererHead": { + "address": "orderer0.group1.orderer.example.com", + "adminPort": 7053, + "consensus": "solo", + "domain": "orderer.example.com", + "fullAddress": "orderer0.group1.orderer.example.com:7030", + "name": "orderer0.group1", + "orgMspName": "OrdererMSP", + "orgName": "Orderer", + "port": 7030, + }, + "ordererHeads": [ + { + "address": "orderer0.group1.orderer.example.com", + "adminPort": 7053, + "consensus": "solo", + "domain": "orderer.example.com", + "fullAddress": "orderer0.group1.orderer.example.com:7030", + "name": "orderer0.group1", + "orgMspName": "OrdererMSP", + "orgName": "Orderer", + "port": 7030, + }, + ], + "orderers": [ + { + "address": "orderer0.group1.orderer.example.com", + "adminPort": 7053, + "consensus": "solo", + "domain": "orderer.example.com", + "fullAddress": "orderer0.group1.orderer.example.com:7030", + "name": "orderer0.group1", + "orgMspName": "OrdererMSP", + "orgName": "Orderer", + "port": 7030, + }, + ], + "profileName": "Group1Genesis", + }, + ], + "orgs": [ + { + "anchorPeers": [], + "bootstrapPeers": """", + "ca": { + "address": "ca.orderer.example.com", + "caAdminNameVar": "ORDERER_CA_ADMIN_NAME", + "caAdminPassVar": "ORDERER_CA_ADMIN_PASSWORD", + "db": "sqlite", + "exposePort": 7020, + "fullAddress": "ca.orderer.example.com:7054", + "port": 7054, + "prefix": "ca", + }, + "cli": { + "address": "cli.orderer.example.com", + }, + "cryptoConfigFileName": "crypto-config-orderer", + "domain": "orderer.example.com", + "headPeer": undefined, + "mspName": "OrdererMSP", + "name": "Orderer", + "ordererGroups": [ + { + "configtxOrdererDefaults": "Group1Defaults", + "consensus": "solo", + "genesisBlockName": "Group1Genesis.block", + "hostingOrgs": [ + "Orderer", + ], + "name": "group1", + "ordererHeads": [ + { + "address": "orderer0.group1.orderer.example.com", + "adminPort": 7053, + "consensus": "solo", + "domain": "orderer.example.com", + "fullAddress": "orderer0.group1.orderer.example.com:7030", + "name": "orderer0.group1", + "orgMspName": "OrdererMSP", + "orgName": "Orderer", + "port": 7030, + }, + ], + "orderers": [ + { + "address": "orderer0.group1.orderer.example.com", + "adminPort": 7053, + "consensus": "solo", + "domain": "orderer.example.com", + "fullAddress": "orderer0.group1.orderer.example.com:7030", + "name": "orderer0.group1", + "orgMspName": "OrdererMSP", + "orgName": "Orderer", + "port": 7030, + }, + ], + "profileName": "Group1Genesis", + }, + ], + "peers": [], + "peersCount": 0, + "tools": {}, + }, + { + "anchorPeers": [ + { + "address": "peer0.org1.example.com", + "couchDbExposePort": 5100, + "db": { + "type": "LevelDb", + }, + "fullAddress": "peer0.org1.example.com:7041", + "gatewayEnabled": true, + "isAnchorPeer": true, + "name": "peer0", + "port": 7041, + }, + ], + "bootstrapPeers": "peer0.org1.example.com:7041", + "ca": { + "address": "ca.org1.example.com", + "caAdminNameVar": "ORG1_CA_ADMIN_NAME", + "caAdminPassVar": "ORG1_CA_ADMIN_PASSWORD", + "db": "sqlite", + "exposePort": 7040, + "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": "peer0.org1.example.com", + "couchDbExposePort": 5100, + "db": { + "type": "LevelDb", + }, + "fullAddress": "peer0.org1.example.com:7041", + "gatewayEnabled": true, + "isAnchorPeer": true, + "name": "peer0", + "port": 7041, + }, + "mspName": "Org1MSP", + "name": "Org1", + "ordererGroups": [], + "peers": [ + { + "address": "peer0.org1.example.com", + "couchDbExposePort": 5100, + "db": { + "type": "LevelDb", + }, + "fullAddress": "peer0.org1.example.com:7041", + "gatewayEnabled": true, + "isAnchorPeer": true, + "name": "peer0", + "port": 7041, + }, + ], + "peersCount": 1, + "tools": {}, + }, + ], +} +`; + exports[`extend config samples/fablo-config-hlf2-1org-1chaincode-k8s.json 1`] = ` { "chaincodes": [ 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 7b93b95bf..3e69006e9 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 @@ -1481,17 +1481,17 @@ elif [ "$1" = "stop" ]; then elif [ "$1" = "chaincodes" ] && [ "$2" = "install" ]; then installChaincodes elif [ "$1" = "chaincode" ] && [ "$2" = "install" ]; then - installChaincode "$3" "$4" + installChaincode "\${@:3}" elif [ "$1" = "chaincode" ] && [ "$2" = "upgrade" ]; then - upgradeChaincode "$3" "$4" + upgradeChaincode "\${@:3}" elif [ "$1" = "chaincode" ] && [ "$2" = "dev" ]; then - runDevModeChaincode "$3" "$4" + runDevModeChaincode "\${@:3}" elif [ "$1" = "chaincode" ] && [ "$2" = "invoke" ]; then - chaincodeInvoke "$3" "$4" "$5" "$6" "$7" + chaincodeInvoke "\${@:3}" elif [ "$1" = "chaincode" ] && [ "$2" = "query" ]; then - chaincodeQuery "$3" "$4" "$5" "$6" "$7" + chaincodeQuery "\${@:3}" elif [ "$1" = "chaincodes" ] && [ "$2" = "list" ]; then - chaincodeList "$3" "$4" + chaincodeList "\${@:3}" elif [ "$1" = "channel" ]; then channelQuery "\${@:2}" elif [ "$1" = "snapshot" ]; then @@ -1508,6 +1508,7 @@ else echo "To list channel query helper commands type: 'fablo channel --help'" echo "Also check: 'chaincode install'" echo "Use 'help' or '--help' for more information" + exit 1 fi " `; @@ -1584,7 +1585,7 @@ chaincodeList() { # 5. transient data (optional) chaincodeInvoke() { if [ "$#" -ne 4 ] && [ "$#" -ne 5 ]; then - echo "Expected 4 or 5 parameters for chaincode list, but got: $*" + echo "Expected 4 or 5 parameters for chaincode invoke, but got: $*" echo "Usage: fablo chaincode invoke [transient]" exit 1 fi 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 aac3ede86..f2e26b860 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 @@ -1488,17 +1488,17 @@ elif [ "$1" = "stop" ]; then elif [ "$1" = "chaincodes" ] && [ "$2" = "install" ]; then installChaincodes elif [ "$1" = "chaincode" ] && [ "$2" = "install" ]; then - installChaincode "$3" "$4" + installChaincode "\${@:3}" elif [ "$1" = "chaincode" ] && [ "$2" = "upgrade" ]; then - upgradeChaincode "$3" "$4" + upgradeChaincode "\${@:3}" elif [ "$1" = "chaincode" ] && [ "$2" = "dev" ]; then - runDevModeChaincode "$3" "$4" + runDevModeChaincode "\${@:3}" elif [ "$1" = "chaincode" ] && [ "$2" = "invoke" ]; then - chaincodeInvoke "$3" "$4" "$5" "$6" "$7" + chaincodeInvoke "\${@:3}" elif [ "$1" = "chaincode" ] && [ "$2" = "query" ]; then - chaincodeQuery "$3" "$4" "$5" "$6" "$7" + chaincodeQuery "\${@:3}" elif [ "$1" = "chaincodes" ] && [ "$2" = "list" ]; then - chaincodeList "$3" "$4" + chaincodeList "\${@:3}" elif [ "$1" = "channel" ]; then channelQuery "\${@:2}" elif [ "$1" = "snapshot" ]; then @@ -1515,6 +1515,7 @@ else echo "To list channel query helper commands type: 'fablo channel --help'" echo "Also check: 'chaincode install'" echo "Use 'help' or '--help' for more information" + exit 1 fi " `; @@ -1595,7 +1596,7 @@ chaincodeList() { # 5. transient data (optional) chaincodeInvoke() { if [ "$#" -ne 4 ] && [ "$#" -ne 5 ]; then - echo "Expected 4 or 5 parameters for chaincode list, but got: $*" + echo "Expected 4 or 5 parameters for chaincode invoke, but got: $*" echo "Usage: fablo chaincode invoke [transient]" exit 1 fi 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 f06aaafd9..7d7db0e2a 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 @@ -1564,17 +1564,17 @@ elif [ "$1" = "stop" ]; then elif [ "$1" = "chaincodes" ] && [ "$2" = "install" ]; then installChaincodes elif [ "$1" = "chaincode" ] && [ "$2" = "install" ]; then - installChaincode "$3" "$4" + installChaincode "\${@:3}" elif [ "$1" = "chaincode" ] && [ "$2" = "upgrade" ]; then - upgradeChaincode "$3" "$4" + upgradeChaincode "\${@:3}" elif [ "$1" = "chaincode" ] && [ "$2" = "dev" ]; then - runDevModeChaincode "$3" "$4" + runDevModeChaincode "\${@:3}" elif [ "$1" = "chaincode" ] && [ "$2" = "invoke" ]; then - chaincodeInvoke "$3" "$4" "$5" "$6" "$7" + chaincodeInvoke "\${@:3}" elif [ "$1" = "chaincode" ] && [ "$2" = "query" ]; then - chaincodeQuery "$3" "$4" "$5" "$6" "$7" + chaincodeQuery "\${@:3}" elif [ "$1" = "chaincodes" ] && [ "$2" = "list" ]; then - chaincodeList "$3" "$4" + chaincodeList "\${@:3}" elif [ "$1" = "channel" ]; then channelQuery "\${@:2}" elif [ "$1" = "snapshot" ]; then @@ -1591,6 +1591,7 @@ else echo "To list channel query helper commands type: 'fablo channel --help'" echo "Also check: 'chaincode install'" echo "Use 'help' or '--help' for more information" + exit 1 fi " `; @@ -1667,7 +1668,7 @@ chaincodeList() { # 5. transient data (optional) chaincodeInvoke() { if [ "$#" -ne 4 ] && [ "$#" -ne 5 ]; then - echo "Expected 4 or 5 parameters for chaincode list, but got: $*" + echo "Expected 4 or 5 parameters for chaincode invoke, but got: $*" echo "Usage: fablo chaincode invoke [transient]" exit 1 fi 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 4121c9e41..965920636 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 @@ -2170,17 +2170,17 @@ elif [ "$1" = "stop" ]; then elif [ "$1" = "chaincodes" ] && [ "$2" = "install" ]; then installChaincodes elif [ "$1" = "chaincode" ] && [ "$2" = "install" ]; then - installChaincode "$3" "$4" + installChaincode "\${@:3}" elif [ "$1" = "chaincode" ] && [ "$2" = "upgrade" ]; then - upgradeChaincode "$3" "$4" + upgradeChaincode "\${@:3}" elif [ "$1" = "chaincode" ] && [ "$2" = "dev" ]; then - runDevModeChaincode "$3" "$4" + runDevModeChaincode "\${@:3}" elif [ "$1" = "chaincode" ] && [ "$2" = "invoke" ]; then - chaincodeInvoke "$3" "$4" "$5" "$6" "$7" + chaincodeInvoke "\${@:3}" elif [ "$1" = "chaincode" ] && [ "$2" = "query" ]; then - chaincodeQuery "$3" "$4" "$5" "$6" "$7" + chaincodeQuery "\${@:3}" elif [ "$1" = "chaincodes" ] && [ "$2" = "list" ]; then - chaincodeList "$3" "$4" + chaincodeList "\${@:3}" elif [ "$1" = "channel" ]; then channelQuery "\${@:2}" elif [ "$1" = "snapshot" ]; then @@ -2197,6 +2197,7 @@ else echo "To list channel query helper commands type: 'fablo channel --help'" echo "Also check: 'chaincode install'" echo "Use 'help' or '--help' for more information" + exit 1 fi " `; @@ -2284,7 +2285,7 @@ chaincodeList() { # 5. transient data (optional) chaincodeInvoke() { if [ "$#" -ne 4 ] && [ "$#" -ne 5 ]; then - echo "Expected 4 or 5 parameters for chaincode list, but got: $*" + echo "Expected 4 or 5 parameters for chaincode invoke, but got: $*" echo "Usage: fablo chaincode invoke [transient]" exit 1 fi 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 c629195ee..e684ac02f 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 @@ -3539,17 +3539,17 @@ elif [ "$1" = "stop" ]; then elif [ "$1" = "chaincodes" ] && [ "$2" = "install" ]; then installChaincodes elif [ "$1" = "chaincode" ] && [ "$2" = "install" ]; then - installChaincode "$3" "$4" + installChaincode "\${@:3}" elif [ "$1" = "chaincode" ] && [ "$2" = "upgrade" ]; then - upgradeChaincode "$3" "$4" + upgradeChaincode "\${@:3}" elif [ "$1" = "chaincode" ] && [ "$2" = "dev" ]; then - runDevModeChaincode "$3" "$4" + runDevModeChaincode "\${@:3}" elif [ "$1" = "chaincode" ] && [ "$2" = "invoke" ]; then - chaincodeInvoke "$3" "$4" "$5" "$6" "$7" + chaincodeInvoke "\${@:3}" elif [ "$1" = "chaincode" ] && [ "$2" = "query" ]; then - chaincodeQuery "$3" "$4" "$5" "$6" "$7" + chaincodeQuery "\${@:3}" elif [ "$1" = "chaincodes" ] && [ "$2" = "list" ]; then - chaincodeList "$3" "$4" + chaincodeList "\${@:3}" elif [ "$1" = "channel" ]; then channelQuery "\${@:2}" elif [ "$1" = "snapshot" ]; then @@ -3566,6 +3566,7 @@ else echo "To list channel query helper commands type: 'fablo channel --help'" echo "Also check: 'chaincode install'" echo "Use 'help' or '--help' for more information" + exit 1 fi " `; @@ -3660,7 +3661,7 @@ chaincodeList() { # 5. transient data (optional) chaincodeInvoke() { if [ "$#" -ne 4 ] && [ "$#" -ne 5 ]; then - echo "Expected 4 or 5 parameters for chaincode list, but got: $*" + echo "Expected 4 or 5 parameters for chaincode invoke, but got: $*" echo "Usage: fablo chaincode invoke [transient]" exit 1 fi 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 76ec7d11b..2daef4bf4 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 @@ -3968,17 +3968,17 @@ elif [ "$1" = "stop" ]; then elif [ "$1" = "chaincodes" ] && [ "$2" = "install" ]; then installChaincodes elif [ "$1" = "chaincode" ] && [ "$2" = "install" ]; then - installChaincode "$3" "$4" + installChaincode "\${@:3}" elif [ "$1" = "chaincode" ] && [ "$2" = "upgrade" ]; then - upgradeChaincode "$3" "$4" + upgradeChaincode "\${@:3}" elif [ "$1" = "chaincode" ] && [ "$2" = "dev" ]; then - runDevModeChaincode "$3" "$4" + runDevModeChaincode "\${@:3}" elif [ "$1" = "chaincode" ] && [ "$2" = "invoke" ]; then - chaincodeInvoke "$3" "$4" "$5" "$6" "$7" + chaincodeInvoke "\${@:3}" elif [ "$1" = "chaincode" ] && [ "$2" = "query" ]; then - chaincodeQuery "$3" "$4" "$5" "$6" "$7" + chaincodeQuery "\${@:3}" elif [ "$1" = "chaincodes" ] && [ "$2" = "list" ]; then - chaincodeList "$3" "$4" + chaincodeList "\${@:3}" elif [ "$1" = "channel" ]; then channelQuery "\${@:2}" elif [ "$1" = "snapshot" ]; then @@ -3995,6 +3995,7 @@ else echo "To list channel query helper commands type: 'fablo channel --help'" echo "Also check: 'chaincode install'" echo "Use 'help' or '--help' for more information" + exit 1 fi " `; @@ -4097,7 +4098,7 @@ chaincodeList() { # 5. transient data (optional) chaincodeInvoke() { if [ "$#" -ne 4 ] && [ "$#" -ne 5 ]; then - echo "Expected 4 or 5 parameters for chaincode list, but got: $*" + echo "Expected 4 or 5 parameters for chaincode invoke, but got: $*" echo "Usage: fablo chaincode invoke [transient]" exit 1 fi diff --git a/e2e/__snapshots__/fablo-config-hlf3-1orgs-2chaincodes.json.test.ts.snap b/e2e/__snapshots__/fablo-config-hlf3-1orgs-2chaincodes.json.test.ts.snap index 1b067e5bf..23e9435eb 100644 --- a/e2e/__snapshots__/fablo-config-hlf3-1orgs-2chaincodes.json.test.ts.snap +++ b/e2e/__snapshots__/fablo-config-hlf3-1orgs-2chaincodes.json.test.ts.snap @@ -1690,17 +1690,17 @@ elif [ "$1" = "stop" ]; then elif [ "$1" = "chaincodes" ] && [ "$2" = "install" ]; then installChaincodes elif [ "$1" = "chaincode" ] && [ "$2" = "install" ]; then - installChaincode "$3" "$4" + installChaincode "\${@:3}" elif [ "$1" = "chaincode" ] && [ "$2" = "upgrade" ]; then - upgradeChaincode "$3" "$4" + upgradeChaincode "\${@:3}" elif [ "$1" = "chaincode" ] && [ "$2" = "dev" ]; then - runDevModeChaincode "$3" "$4" + runDevModeChaincode "\${@:3}" elif [ "$1" = "chaincode" ] && [ "$2" = "invoke" ]; then - chaincodeInvoke "$3" "$4" "$5" "$6" "$7" + chaincodeInvoke "\${@:3}" elif [ "$1" = "chaincode" ] && [ "$2" = "query" ]; then - chaincodeQuery "$3" "$4" "$5" "$6" "$7" + chaincodeQuery "\${@:3}" elif [ "$1" = "chaincodes" ] && [ "$2" = "list" ]; then - chaincodeList "$3" "$4" + chaincodeList "\${@:3}" elif [ "$1" = "channel" ]; then channelQuery "\${@:2}" elif [ "$1" = "snapshot" ]; then @@ -1717,6 +1717,7 @@ else echo "To list channel query helper commands type: 'fablo channel --help'" echo "Also check: 'chaincode install'" echo "Use 'help' or '--help' for more information" + exit 1 fi " `; @@ -1797,7 +1798,7 @@ chaincodeList() { # 5. transient data (optional) chaincodeInvoke() { if [ "$#" -ne 4 ] && [ "$#" -ne 5 ]; then - echo "Expected 4 or 5 parameters for chaincode list, but got: $*" + echo "Expected 4 or 5 parameters for chaincode invoke, but got: $*" echo "Usage: fablo chaincode invoke [transient]" exit 1 fi diff --git a/e2e/__snapshots__/fablo-config-hlf3-2orgs-1chaincode-raft-ccaas.test.ts.snap b/e2e/__snapshots__/fablo-config-hlf3-2orgs-1chaincode-raft-ccaas.test.ts.snap index f19e2066f..aeca89e43 100644 --- a/e2e/__snapshots__/fablo-config-hlf3-2orgs-1chaincode-raft-ccaas.test.ts.snap +++ b/e2e/__snapshots__/fablo-config-hlf3-2orgs-1chaincode-raft-ccaas.test.ts.snap @@ -2253,17 +2253,17 @@ elif [ "$1" = "stop" ]; then elif [ "$1" = "chaincodes" ] && [ "$2" = "install" ]; then installChaincodes elif [ "$1" = "chaincode" ] && [ "$2" = "install" ]; then - installChaincode "$3" "$4" + installChaincode "\${@:3}" elif [ "$1" = "chaincode" ] && [ "$2" = "upgrade" ]; then - upgradeChaincode "$3" "$4" + upgradeChaincode "\${@:3}" elif [ "$1" = "chaincode" ] && [ "$2" = "dev" ]; then - runDevModeChaincode "$3" "$4" + runDevModeChaincode "\${@:3}" elif [ "$1" = "chaincode" ] && [ "$2" = "invoke" ]; then - chaincodeInvoke "$3" "$4" "$5" "$6" "$7" + chaincodeInvoke "\${@:3}" elif [ "$1" = "chaincode" ] && [ "$2" = "query" ]; then - chaincodeQuery "$3" "$4" "$5" "$6" "$7" + chaincodeQuery "\${@:3}" elif [ "$1" = "chaincodes" ] && [ "$2" = "list" ]; then - chaincodeList "$3" "$4" + chaincodeList "\${@:3}" elif [ "$1" = "channel" ]; then channelQuery "\${@:2}" elif [ "$1" = "snapshot" ]; then @@ -2280,6 +2280,7 @@ else echo "To list channel query helper commands type: 'fablo channel --help'" echo "Also check: 'chaincode install'" echo "Use 'help' or '--help' for more information" + exit 1 fi " `; @@ -2363,7 +2364,7 @@ chaincodeList() { # 5. transient data (optional) chaincodeInvoke() { if [ "$#" -ne 4 ] && [ "$#" -ne 5 ]; then - echo "Expected 4 or 5 parameters for chaincode list, but got: $*" + echo "Expected 4 or 5 parameters for chaincode invoke, but got: $*" echo "Usage: fablo chaincode invoke [transient]" exit 1 fi 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 048f41579..e9af4a4f7 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 @@ -1710,17 +1710,17 @@ elif [ "$1" = "stop" ]; then elif [ "$1" = "chaincodes" ] && [ "$2" = "install" ]; then installChaincodes elif [ "$1" = "chaincode" ] && [ "$2" = "install" ]; then - installChaincode "$3" "$4" + installChaincode "\${@:3}" elif [ "$1" = "chaincode" ] && [ "$2" = "upgrade" ]; then - upgradeChaincode "$3" "$4" + upgradeChaincode "\${@:3}" elif [ "$1" = "chaincode" ] && [ "$2" = "dev" ]; then - runDevModeChaincode "$3" "$4" + runDevModeChaincode "\${@:3}" elif [ "$1" = "chaincode" ] && [ "$2" = "invoke" ]; then - chaincodeInvoke "$3" "$4" "$5" "$6" "$7" + chaincodeInvoke "\${@:3}" elif [ "$1" = "chaincode" ] && [ "$2" = "query" ]; then - chaincodeQuery "$3" "$4" "$5" "$6" "$7" + chaincodeQuery "\${@:3}" elif [ "$1" = "chaincodes" ] && [ "$2" = "list" ]; then - chaincodeList "$3" "$4" + chaincodeList "\${@:3}" elif [ "$1" = "channel" ]; then channelQuery "\${@:2}" elif [ "$1" = "snapshot" ]; then @@ -1737,6 +1737,7 @@ else echo "To list channel query helper commands type: 'fablo channel --help'" echo "Also check: 'chaincode install'" echo "Use 'help' or '--help' for more information" + exit 1 fi " `; @@ -1817,7 +1818,7 @@ chaincodeList() { # 5. transient data (optional) chaincodeInvoke() { if [ "$#" -ne 4 ] && [ "$#" -ne 5 ]; then - echo "Expected 4 or 5 parameters for chaincode list, but got: $*" + echo "Expected 4 or 5 parameters for chaincode invoke, but got: $*" echo "Usage: fablo chaincode invoke [transient]" exit 1 fi diff --git a/src/config.ts b/src/config.ts index 7fbd85c76..3e2492d4a 100644 --- a/src/config.ts +++ b/src/config.ts @@ -12,8 +12,8 @@ const schema: Schema = schemaJson as Schema; const supportedVersionPrefix = `${fabloVersion.split(".").slice(0, 2).join(".")}.`; const getVersionFromSchemaUrl = (url?: string): string => { - const matches = (url || "").match(/\d+\.\d+\.\d+/g); - return matches?.length ? matches[0] : fabloVersion; + const matches = (url || "").match(/\d+\.\d+\.\d+/g); + return matches?.length ? matches[0] : fabloVersion; }; const isFabloVersionSupported = (versionName: string): boolean => versionName.startsWith(supportedVersionPrefix); @@ -22,11 +22,11 @@ const minFabricVersionRaft = "1.4.3"; const versionsSupportingRaft = (v: string): boolean => version(v).isGreaterOrEqual(minFabricVersionRaft); export { - schema, - fabloVersion, - minFabricVersionRaft, - versionsSupportingRaft, - getVersionFromSchemaUrl, - isFabloVersionSupported, - supportedVersionPrefix, + schema, + fabloVersion, + minFabricVersionRaft, + versionsSupportingRaft, + getVersionFromSchemaUrl, + isFabloVersionSupported, + supportedVersionPrefix, }; From dd59ff67a6dbc986f7b9c7d3cc9d9bec678c7901 Mon Sep 17 00:00:00 2001 From: Harshit Kandpal Date: Wed, 8 Jul 2026 15:55:04 +0530 Subject: [PATCH 3/4] fix(cli): resolve command argument forwarding issue in executeFabloCommand Signed-off-by: Harshit Kandpal --- docs/fablo.sh | 6 +++--- fablo.sh | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/docs/fablo.sh b/docs/fablo.sh index 0b30250ff..4bedd1324 100755 --- a/docs/fablo.sh +++ b/docs/fablo.sh @@ -327,10 +327,10 @@ executeFabloCommand() { if [ -f "$FABLO_TARGET/fabric-docker.sh" ]; then echo "Executing Fablo Docker command: $1" chmod +x "$FABLO_TARGET/fabric-docker.sh" || true - "$FABLO_TARGET/fabric-docker.sh" "$1" "$2" "$3" "$4" "$5" "$6" "$7" "$8" + "$FABLO_TARGET/fabric-docker.sh" "$@" elif [ -f "$FABLO_TARGET/fabric-k8s.sh" ]; then echo "Executing Fablo Kubernetes command: $1" - "$FABLO_TARGET/fabric-k8s.sh" "$1" "$2" "$3" "$4" "$5" "$6" "$7" "$8" + "$FABLO_TARGET/fabric-k8s.sh" "$@" else echo "Error: Corrupted Fablo target directory ($FABLO_TARGET)" echo "Cannot execute command $1" @@ -421,5 +421,5 @@ elif [ "$COMMAND" = "restore" ]; then restoreSnapshot "$2" "${3:-""}" else - executeFabloCommand "$COMMAND" "$2" "$3" "$4" "$5" "$6" "$7" "$8" + executeFabloCommand "$COMMAND" "${@:2}" fi diff --git a/fablo.sh b/fablo.sh index 0b30250ff..4bedd1324 100755 --- a/fablo.sh +++ b/fablo.sh @@ -327,10 +327,10 @@ executeFabloCommand() { if [ -f "$FABLO_TARGET/fabric-docker.sh" ]; then echo "Executing Fablo Docker command: $1" chmod +x "$FABLO_TARGET/fabric-docker.sh" || true - "$FABLO_TARGET/fabric-docker.sh" "$1" "$2" "$3" "$4" "$5" "$6" "$7" "$8" + "$FABLO_TARGET/fabric-docker.sh" "$@" elif [ -f "$FABLO_TARGET/fabric-k8s.sh" ]; then echo "Executing Fablo Kubernetes command: $1" - "$FABLO_TARGET/fabric-k8s.sh" "$1" "$2" "$3" "$4" "$5" "$6" "$7" "$8" + "$FABLO_TARGET/fabric-k8s.sh" "$@" else echo "Error: Corrupted Fablo target directory ($FABLO_TARGET)" echo "Cannot execute command $1" @@ -421,5 +421,5 @@ elif [ "$COMMAND" = "restore" ]; then restoreSnapshot "$2" "${3:-""}" else - executeFabloCommand "$COMMAND" "$2" "$3" "$4" "$5" "$6" "$7" "$8" + executeFabloCommand "$COMMAND" "${@:2}" fi From 3e22fd2adf286532317cd2e93cd434d1a307a574 Mon Sep 17 00:00:00 2001 From: Harshit Kandpal Date: Wed, 8 Jul 2026 16:31:12 +0530 Subject: [PATCH 4/4] test: clean up obsolete snapshot for ccaas-tls sample Signed-off-by: Harshit Kandpal --- e2e/__snapshots__/extendConfig.test.ts.snap | 702 -------------------- 1 file changed, 702 deletions(-) diff --git a/e2e/__snapshots__/extendConfig.test.ts.snap b/e2e/__snapshots__/extendConfig.test.ts.snap index 86a46a069..6c55461cf 100644 --- a/e2e/__snapshots__/extendConfig.test.ts.snap +++ b/e2e/__snapshots__/extendConfig.test.ts.snap @@ -837,708 +837,6 @@ exports[`extend config samples/fablo-config-hlf2-1org-1chaincode.json 1`] = ` } `; -exports[`extend config samples/fablo-config-hlf2-1org-1chaincode-ccaas-tls.json 1`] = ` -{ - "chaincodes": [ - { - "chaincodeMountPath": undefined, - "chaincodeStartCommand": undefined, - "channel": { - "instantiatingOrg": { - "anchorPeers": [ - { - "address": "peer0.org1.example.com", - "couchDbExposePort": 5100, - "db": { - "type": "LevelDb", - }, - "fullAddress": "peer0.org1.example.com:7041", - "gatewayEnabled": true, - "isAnchorPeer": true, - "name": "peer0", - "port": 7041, - }, - ], - "bootstrapPeers": "peer0.org1.example.com:7041", - "ca": { - "address": "ca.org1.example.com", - "caAdminNameVar": "ORG1_CA_ADMIN_NAME", - "caAdminPassVar": "ORG1_CA_ADMIN_PASSWORD", - "db": "sqlite", - "exposePort": 7040, - "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": "peer0.org1.example.com", - "couchDbExposePort": 5100, - "db": { - "type": "LevelDb", - }, - "fullAddress": "peer0.org1.example.com:7041", - "gatewayEnabled": true, - "isAnchorPeer": true, - "name": "peer0", - "port": 7041, - }, - "mspName": "Org1MSP", - "name": "Org1", - "ordererGroups": [], - "peers": [ - { - "address": "peer0.org1.example.com", - "couchDbExposePort": 5100, - "db": { - "type": "LevelDb", - }, - "fullAddress": "peer0.org1.example.com:7041", - "gatewayEnabled": true, - "isAnchorPeer": true, - "name": "peer0", - "port": 7041, - }, - ], - "peersCount": 1, - "tools": {}, - }, - "name": "my-channel1", - "ordererGroup": { - "configtxOrdererDefaults": "Group1Defaults", - "consensus": "solo", - "genesisBlockName": "Group1Genesis.block", - "hostingOrgs": [ - "Orderer", - ], - "name": "group1", - "ordererHead": { - "address": "orderer0.group1.orderer.example.com", - "adminPort": 7053, - "consensus": "solo", - "domain": "orderer.example.com", - "fullAddress": "orderer0.group1.orderer.example.com:7030", - "name": "orderer0.group1", - "orgMspName": "OrdererMSP", - "orgName": "Orderer", - "port": 7030, - }, - "ordererHeads": [ - { - "address": "orderer0.group1.orderer.example.com", - "adminPort": 7053, - "consensus": "solo", - "domain": "orderer.example.com", - "fullAddress": "orderer0.group1.orderer.example.com:7030", - "name": "orderer0.group1", - "orgMspName": "OrdererMSP", - "orgName": "Orderer", - "port": 7030, - }, - ], - "orderers": [ - { - "address": "orderer0.group1.orderer.example.com", - "adminPort": 7053, - "consensus": "solo", - "domain": "orderer.example.com", - "fullAddress": "orderer0.group1.orderer.example.com:7030", - "name": "orderer0.group1", - "orgMspName": "OrdererMSP", - "orgName": "Orderer", - "port": 7030, - }, - ], - "profileName": "Group1Genesis", - }, - "ordererHead": { - "address": "orderer0.group1.orderer.example.com", - "adminPort": 7053, - "consensus": "solo", - "domain": "orderer.example.com", - "fullAddress": "orderer0.group1.orderer.example.com:7030", - "name": "orderer0.group1", - "orgMspName": "OrdererMSP", - "orgName": "Orderer", - "port": 7030, - }, - "orgs": [ - { - "anchorPeers": [ - { - "address": "peer0.org1.example.com", - "couchDbExposePort": 5100, - "db": { - "type": "LevelDb", - }, - "fullAddress": "peer0.org1.example.com:7041", - "gatewayEnabled": true, - "isAnchorPeer": true, - "name": "peer0", - "port": 7041, - }, - ], - "bootstrapPeers": "peer0.org1.example.com:7041", - "ca": { - "address": "ca.org1.example.com", - "caAdminNameVar": "ORG1_CA_ADMIN_NAME", - "caAdminPassVar": "ORG1_CA_ADMIN_PASSWORD", - "db": "sqlite", - "exposePort": 7040, - "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": "peer0.org1.example.com", - "couchDbExposePort": 5100, - "db": { - "type": "LevelDb", - }, - "fullAddress": "peer0.org1.example.com:7041", - "gatewayEnabled": true, - "isAnchorPeer": true, - "name": "peer0", - "port": 7041, - }, - "mspName": "Org1MSP", - "name": "Org1", - "ordererGroups": [], - "peers": [ - { - "address": "peer0.org1.example.com", - "couchDbExposePort": 5100, - "db": { - "type": "LevelDb", - }, - "fullAddress": "peer0.org1.example.com:7041", - "gatewayEnabled": true, - "isAnchorPeer": true, - "name": "peer0", - "port": 7041, - }, - ], - "peersCount": 1, - "tools": {}, - }, - ], - "profileName": "MyChannel1", - }, - "directory": undefined, - "endorsement": undefined, - "image": "ghcr.io/fablo-io/fablo-sample-kv-node-chaincode:2.2.0", - "initRequired": false, - "instantiatingOrg": { - "anchorPeers": [ - { - "address": "peer0.org1.example.com", - "couchDbExposePort": 5100, - "db": { - "type": "LevelDb", - }, - "fullAddress": "peer0.org1.example.com:7041", - "gatewayEnabled": true, - "isAnchorPeer": true, - "name": "peer0", - "port": 7041, - }, - ], - "bootstrapPeers": "peer0.org1.example.com:7041", - "ca": { - "address": "ca.org1.example.com", - "caAdminNameVar": "ORG1_CA_ADMIN_NAME", - "caAdminPassVar": "ORG1_CA_ADMIN_PASSWORD", - "db": "sqlite", - "exposePort": 7040, - "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": "peer0.org1.example.com", - "couchDbExposePort": 5100, - "db": { - "type": "LevelDb", - }, - "fullAddress": "peer0.org1.example.com:7041", - "gatewayEnabled": true, - "isAnchorPeer": true, - "name": "peer0", - "port": 7041, - }, - "mspName": "Org1MSP", - "name": "Org1", - "ordererGroups": [], - "peers": [ - { - "address": "peer0.org1.example.com", - "couchDbExposePort": 5100, - "db": { - "type": "LevelDb", - }, - "fullAddress": "peer0.org1.example.com:7041", - "gatewayEnabled": true, - "isAnchorPeer": true, - "name": "peer0", - "port": 7041, - }, - ], - "peersCount": 1, - "tools": {}, - }, - "lang": "ccaas", - "name": "chaincode1", - "peerChaincodeInstances": [ - { - "containerName": "ccaas_peer0.org1.example.com_my-channel1_chaincode1_0.0.1", - "orgDomain": "org1.example.com", - "peerAddress": "peer0.org1.example.com", - "port": 17041, - }, - ], - "privateData": [], - "privateDataConfigFile": undefined, - "version": "0.0.1", - }, - ], - "channels": [ - { - "instantiatingOrg": { - "anchorPeers": [ - { - "address": "peer0.org1.example.com", - "couchDbExposePort": 5100, - "db": { - "type": "LevelDb", - }, - "fullAddress": "peer0.org1.example.com:7041", - "gatewayEnabled": true, - "isAnchorPeer": true, - "name": "peer0", - "port": 7041, - }, - ], - "bootstrapPeers": "peer0.org1.example.com:7041", - "ca": { - "address": "ca.org1.example.com", - "caAdminNameVar": "ORG1_CA_ADMIN_NAME", - "caAdminPassVar": "ORG1_CA_ADMIN_PASSWORD", - "db": "sqlite", - "exposePort": 7040, - "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": "peer0.org1.example.com", - "couchDbExposePort": 5100, - "db": { - "type": "LevelDb", - }, - "fullAddress": "peer0.org1.example.com:7041", - "gatewayEnabled": true, - "isAnchorPeer": true, - "name": "peer0", - "port": 7041, - }, - "mspName": "Org1MSP", - "name": "Org1", - "ordererGroups": [], - "peers": [ - { - "address": "peer0.org1.example.com", - "couchDbExposePort": 5100, - "db": { - "type": "LevelDb", - }, - "fullAddress": "peer0.org1.example.com:7041", - "gatewayEnabled": true, - "isAnchorPeer": true, - "name": "peer0", - "port": 7041, - }, - ], - "peersCount": 1, - "tools": {}, - }, - "name": "my-channel1", - "ordererGroup": { - "configtxOrdererDefaults": "Group1Defaults", - "consensus": "solo", - "genesisBlockName": "Group1Genesis.block", - "hostingOrgs": [ - "Orderer", - ], - "name": "group1", - "ordererHead": { - "address": "orderer0.group1.orderer.example.com", - "adminPort": 7053, - "consensus": "solo", - "domain": "orderer.example.com", - "fullAddress": "orderer0.group1.orderer.example.com:7030", - "name": "orderer0.group1", - "orgMspName": "OrdererMSP", - "orgName": "Orderer", - "port": 7030, - }, - "ordererHeads": [ - { - "address": "orderer0.group1.orderer.example.com", - "adminPort": 7053, - "consensus": "solo", - "domain": "orderer.example.com", - "fullAddress": "orderer0.group1.orderer.example.com:7030", - "name": "orderer0.group1", - "orgMspName": "OrdererMSP", - "orgName": "Orderer", - "port": 7030, - }, - ], - "orderers": [ - { - "address": "orderer0.group1.orderer.example.com", - "adminPort": 7053, - "consensus": "solo", - "domain": "orderer.example.com", - "fullAddress": "orderer0.group1.orderer.example.com:7030", - "name": "orderer0.group1", - "orgMspName": "OrdererMSP", - "orgName": "Orderer", - "port": 7030, - }, - ], - "profileName": "Group1Genesis", - }, - "ordererHead": { - "address": "orderer0.group1.orderer.example.com", - "adminPort": 7053, - "consensus": "solo", - "domain": "orderer.example.com", - "fullAddress": "orderer0.group1.orderer.example.com:7030", - "name": "orderer0.group1", - "orgMspName": "OrdererMSP", - "orgName": "Orderer", - "port": 7030, - }, - "orgs": [ - { - "anchorPeers": [ - { - "address": "peer0.org1.example.com", - "couchDbExposePort": 5100, - "db": { - "type": "LevelDb", - }, - "fullAddress": "peer0.org1.example.com:7041", - "gatewayEnabled": true, - "isAnchorPeer": true, - "name": "peer0", - "port": 7041, - }, - ], - "bootstrapPeers": "peer0.org1.example.com:7041", - "ca": { - "address": "ca.org1.example.com", - "caAdminNameVar": "ORG1_CA_ADMIN_NAME", - "caAdminPassVar": "ORG1_CA_ADMIN_PASSWORD", - "db": "sqlite", - "exposePort": 7040, - "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": "peer0.org1.example.com", - "couchDbExposePort": 5100, - "db": { - "type": "LevelDb", - }, - "fullAddress": "peer0.org1.example.com:7041", - "gatewayEnabled": true, - "isAnchorPeer": true, - "name": "peer0", - "port": 7041, - }, - "mspName": "Org1MSP", - "name": "Org1", - "ordererGroups": [], - "peers": [ - { - "address": "peer0.org1.example.com", - "couchDbExposePort": 5100, - "db": { - "type": "LevelDb", - }, - "fullAddress": "peer0.org1.example.com:7041", - "gatewayEnabled": true, - "isAnchorPeer": true, - "name": "peer0", - "port": 7041, - }, - ], - "peersCount": 1, - "tools": {}, - }, - ], - "profileName": "MyChannel1", - }, - ], - "global": { - "baseosImage": "hyperledger/fabric-baseos:2.5.9", - "caImage": "hyperledger/fabric-ca:1.5.16", - "capabilities": { - "application": "V2_5", - "channel": "V2_0", - "isV2": true, - "isV3": false, - "orderer": "V2_0", - }, - "ccenvImage": "hyperledger/fabric-ccenv:2.5.9", - "engine": "docker", - "fabricBaseosVersion": "2.5.9", - "fabricCaVersion": "1.5.16", - "fabricCcenvVersion": "2.5.9", - "fabricJavaenvVersion": "2.5", - "fabricNodeenvVersion": "2.5", - "fabricRecommendedNodeVersion": "16", - "fabricToolsVersion": "2.5.9", - "fabricVersion": "2.5.9", - "javaenvImage": "hyperledger/fabric-javaenv:2.5", - "monitoring": { - "loglevel": "info", - }, - "nodeenvImage": "hyperledger/fabric-nodeenv:2.5", - "ordererImage": "hyperledger/fabric-orderer:2.5.9", - "paths": { - "chaincodesBaseDir": "", - "fabloConfig": "", - }, - "peerImage": "hyperledger/fabric-peer:2.5.9", - "tls": true, - "tools": {}, - "toolsImage": "hyperledger/fabric-tools:2.5.9", - }, - "hooks": { - "postGenerate": "", - "postStart": "", - }, - "orderedHeadsDistinct": [ - { - "address": "orderer0.group1.orderer.example.com", - "adminPort": 7053, - "consensus": "solo", - "domain": "orderer.example.com", - "fullAddress": "orderer0.group1.orderer.example.com:7030", - "name": "orderer0.group1", - "orgMspName": "OrdererMSP", - "orgName": "Orderer", - "port": 7030, - }, - ], - "ordererGroups": [ - { - "configtxOrdererDefaults": "Group1Defaults", - "consensus": "solo", - "genesisBlockName": "Group1Genesis.block", - "hostingOrgs": [ - "Orderer", - ], - "name": "group1", - "ordererHead": { - "address": "orderer0.group1.orderer.example.com", - "adminPort": 7053, - "consensus": "solo", - "domain": "orderer.example.com", - "fullAddress": "orderer0.group1.orderer.example.com:7030", - "name": "orderer0.group1", - "orgMspName": "OrdererMSP", - "orgName": "Orderer", - "port": 7030, - }, - "ordererHeads": [ - { - "address": "orderer0.group1.orderer.example.com", - "adminPort": 7053, - "consensus": "solo", - "domain": "orderer.example.com", - "fullAddress": "orderer0.group1.orderer.example.com:7030", - "name": "orderer0.group1", - "orgMspName": "OrdererMSP", - "orgName": "Orderer", - "port": 7030, - }, - ], - "orderers": [ - { - "address": "orderer0.group1.orderer.example.com", - "adminPort": 7053, - "consensus": "solo", - "domain": "orderer.example.com", - "fullAddress": "orderer0.group1.orderer.example.com:7030", - "name": "orderer0.group1", - "orgMspName": "OrdererMSP", - "orgName": "Orderer", - "port": 7030, - }, - ], - "profileName": "Group1Genesis", - }, - ], - "orgs": [ - { - "anchorPeers": [], - "bootstrapPeers": """", - "ca": { - "address": "ca.orderer.example.com", - "caAdminNameVar": "ORDERER_CA_ADMIN_NAME", - "caAdminPassVar": "ORDERER_CA_ADMIN_PASSWORD", - "db": "sqlite", - "exposePort": 7020, - "fullAddress": "ca.orderer.example.com:7054", - "port": 7054, - "prefix": "ca", - }, - "cli": { - "address": "cli.orderer.example.com", - }, - "cryptoConfigFileName": "crypto-config-orderer", - "domain": "orderer.example.com", - "headPeer": undefined, - "mspName": "OrdererMSP", - "name": "Orderer", - "ordererGroups": [ - { - "configtxOrdererDefaults": "Group1Defaults", - "consensus": "solo", - "genesisBlockName": "Group1Genesis.block", - "hostingOrgs": [ - "Orderer", - ], - "name": "group1", - "ordererHeads": [ - { - "address": "orderer0.group1.orderer.example.com", - "adminPort": 7053, - "consensus": "solo", - "domain": "orderer.example.com", - "fullAddress": "orderer0.group1.orderer.example.com:7030", - "name": "orderer0.group1", - "orgMspName": "OrdererMSP", - "orgName": "Orderer", - "port": 7030, - }, - ], - "orderers": [ - { - "address": "orderer0.group1.orderer.example.com", - "adminPort": 7053, - "consensus": "solo", - "domain": "orderer.example.com", - "fullAddress": "orderer0.group1.orderer.example.com:7030", - "name": "orderer0.group1", - "orgMspName": "OrdererMSP", - "orgName": "Orderer", - "port": 7030, - }, - ], - "profileName": "Group1Genesis", - }, - ], - "peers": [], - "peersCount": 0, - "tools": {}, - }, - { - "anchorPeers": [ - { - "address": "peer0.org1.example.com", - "couchDbExposePort": 5100, - "db": { - "type": "LevelDb", - }, - "fullAddress": "peer0.org1.example.com:7041", - "gatewayEnabled": true, - "isAnchorPeer": true, - "name": "peer0", - "port": 7041, - }, - ], - "bootstrapPeers": "peer0.org1.example.com:7041", - "ca": { - "address": "ca.org1.example.com", - "caAdminNameVar": "ORG1_CA_ADMIN_NAME", - "caAdminPassVar": "ORG1_CA_ADMIN_PASSWORD", - "db": "sqlite", - "exposePort": 7040, - "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": "peer0.org1.example.com", - "couchDbExposePort": 5100, - "db": { - "type": "LevelDb", - }, - "fullAddress": "peer0.org1.example.com:7041", - "gatewayEnabled": true, - "isAnchorPeer": true, - "name": "peer0", - "port": 7041, - }, - "mspName": "Org1MSP", - "name": "Org1", - "ordererGroups": [], - "peers": [ - { - "address": "peer0.org1.example.com", - "couchDbExposePort": 5100, - "db": { - "type": "LevelDb", - }, - "fullAddress": "peer0.org1.example.com:7041", - "gatewayEnabled": true, - "isAnchorPeer": true, - "name": "peer0", - "port": 7041, - }, - ], - "peersCount": 1, - "tools": {}, - }, - ], -} -`; - exports[`extend config samples/fablo-config-hlf2-1org-1chaincode-k8s.json 1`] = ` { "chaincodes": [