github.com/tenywen/fabric@v1.0.0-beta.0.20170620030522-a5b1ed380643/bddtests/regression/go/ote/json2yml.js (about) 1 // 2 // Copyright IBM Corp. All Rights Reserved. 3 // 4 // SPDX-License-Identifier: Apache-2.0 5 // 6 var fs = require('fs'); 7 8 var cfgFile = process.argv[2]; 9 //var cfgFile = __dirname + "/" + "network-cfg.json"; 10 var dFile = __dirname + "/" + "docker-compose.yml"; 11 fs.createWriteStream(dFile); 12 13 var CA=0; 14 var CDB=0; 15 var KAFKA=0; 16 17 // Orderer environment var 18 var ord_env_name=[]; 19 var ord_env_val=[]; 20 if ( process.env.CONFIGTX_ORDERER_BATCHSIZE_MAXMESSAGECOUNT != null ) { 21 console.log(' CONFIGTX_ORDERER_BATCHSIZE_MAXMESSAGECOUNT= ', process.env.CONFIGTX_ORDERER_BATCHSIZE_MAXMESSAGECOUNT); 22 ord_env_name.push('CONFIGTX_ORDERER_BATCHSIZE_MAXMESSAGECOUNT'); 23 ord_env_val.push(process.env.CONFIGTX_ORDERER_BATCHSIZE_MAXMESSAGECOUNT); 24 } 25 if ( process.env.CONFIGTX_ORDERER_ORDERERTYPE != null ) { 26 console.log(' CONFIGTX_ORDERER_ORDERERTYPE= ', process.env.CONFIGTX_ORDERER_ORDERERTYPE); 27 ord_env_name.push('CONFIGTX_ORDERER_ORDERERTYPE'); 28 ord_env_val.push(process.env.CONFIGTX_ORDERER_ORDERERTYPE); 29 if ( process.env.CONFIGTX_ORDERER_ORDERERTYPE == 'kafka' ) { 30 KAFKA=1; 31 } 32 } 33 if ( process.env.CONFIGTX_ORDERER_BATCHTIMEOUT != null ) { 34 console.log(' CONFIGTX_ORDERER_BATCHTIMEOUT= ', process.env.CONFIGTX_ORDERER_BATCHTIMEOUT); 35 ord_env_name.push('CONFIGTX_ORDERER_BATCHTIMEOUT'); 36 ord_env_val.push(process.env.CONFIGTX_ORDERER_BATCHTIMEOUT); 37 } 38 39 console.log('ord_env_name: ', ord_env_name.length, ord_env_name); 40 console.log('ord_env_val: ', ord_env_val.length, ord_env_val); 41 42 // Peer environment var 43 var peer_env_name=[]; 44 var peer_env_val=[]; 45 if ( process.env.CORE_LOGGING_LEVEL != null ) { 46 console.log(' CORE_LOGGING_LEVEL= ', process.env.CORE_LOGGING_LEVEL); 47 peer_env_name.push('CORE_LOGGING_LEVEL'); 48 peer_env_val.push(process.env.CORE_LOGGING_LEVEL); 49 } 50 if ( process.env.CORE_SECURITY_LEVEL != null ) { 51 console.log(' CORE_SECURITY_LEVEL= ', process.env.CORE_SECURITY_LEVEL); 52 peer_env_name.push('CORE_SECURITY_LEVEL'); 53 peer_env_val.push(process.env.CORE_SECURITY_LEVEL); 54 } 55 if ( process.env.CORE_SECURITY_HASHALGORITHM != null ) { 56 console.log(' CORE_SECURITY_HASHALGORITHM= ', process.env.CORE_SECURITY_HASHALGORITHM); 57 peer_env_name.push('CORE_SECURITY_HASHALGORITHM'); 58 peer_env_val.push(process.env.CORE_SECURITY_HASHALGORITHM); 59 } 60 61 console.log('peer_env_name: ', peer_env_name.length, peer_env_name); 62 console.log('peer_env_val: ', peer_env_val.length, peer_env_val); 63 64 //process.exit(); 65 console.log('network cfg: ', cfgFile); 66 console.log('docker composer: ', dFile); 67 68 var addVP = parseInt(process.argv[3]); 69 console.log('add peer: ', addVP); 70 71 var VPName = 'peer' + addVP; 72 73 var addOrderer = parseInt(process.argv[4]);; 74 console.log('add Orderer: ', addOrderer); 75 76 var addBroker = parseInt(process.argv[5]); 77 console.log('add Kafka Broker: ', addBroker); 78 79 //console.log(' input argv length', process.argv.length); 80 var dbType = 'none'; 81 if (process.argv.length == 7) { 82 dbType = process.argv[6]; 83 } 84 console.log('DB type: ', dbType); 85 86 var cfgContent = JSON.parse(fs.readFileSync(cfgFile, 'utf8')); 87 88 var top_key = Object.keys(cfgContent); 89 90 var lvl1_obj; 91 var lvl2_key; 92 var lvl2_obj; 93 var lvl3_key; 94 var tmp_name; 95 var tmp_port; 96 var ordererAddr; 97 var ordererPort; 98 var couchdbAddr; 99 var couchdbPort; 100 var vp0Addr; 101 var vp0Port; 102 var tmp; 103 var e; 104 105 if ( addBroker > 0 ) { 106 KAFKA=1; 107 } 108 109 if ( (dbType == 'couchdb') || (dbType == 'goleveldb') ){ 110 CDB=1; 111 } 112 113 //header 0 114 for ( i0=0; i0<top_key.length; i0++ ) { 115 var lvl0_obj = cfgContent[top_key[i0]]; 116 var lvl1_key = Object.keys(lvl0_obj); 117 if ( top_key[i0] == 'ordererAddress' ) { 118 ordererAddr = lvl0_obj; 119 console.log('orderer address:', ordererAddr); 120 } else if ( top_key[i0] == 'ordererPort' ) { 121 ordererPort = parseInt(lvl0_obj); 122 console.log('orderer Port:', ordererPort); 123 } else if ( top_key[i0] == 'couchdbAddress' ) { 124 couchdbAddr = lvl0_obj; 125 console.log('couchdb address:', couchdbAddr); 126 } else if ( top_key[i0] == 'couchdbPort' ) { 127 couchdbPort = parseInt(lvl0_obj); 128 console.log('couchdb Port:', couchdbPort); 129 } else if ( top_key[i0] == 'vp0Address' ) { 130 vp0Addr = lvl0_obj; 131 console.log('peer0 address:', vp0Addr); 132 } else if ( top_key[i0] == 'vp0Port' ) { 133 vp0Port = parseInt(lvl0_obj); 134 console.log('peer0 Port:', vp0Port); 135 } else if ( top_key[i0] == 'version' ) { 136 buff = top_key[i0] + ":" + " '" + lvl0_obj + "'" + "\n"; 137 fs.appendFileSync(dFile, buff); 138 } else if ( top_key[i0] == 'networks' ) { 139 buff = top_key[i0] + ":" + "\n"; 140 fs.appendFileSync(dFile, buff); 141 buff = ' bridge:' + '\n'; 142 fs.appendFileSync(dFile, buff); 143 } else if ( top_key[i0] == 'services' ) { 144 buff = '\n'; 145 fs.appendFileSync(dFile, buff); 146 buff = top_key[i0] + ':' + '\n'; 147 fs.appendFileSync(dFile, buff); 148 //header 1 149 for ( i=0; i<lvl1_key.length; i++ ) { 150 lvl1_obj = lvl0_obj[lvl1_key[i]]; 151 lvl2_key = Object.keys(lvl1_obj); 152 153 // header 2 154 if (lvl1_key[i] == 'couchdb' ) { 155 if (dbType == 'couchdb') { 156 for ( v = 0; v < addVP; v++ ) { 157 tmp_name = lvl1_key[i] + v; 158 tmp_port = couchdbPort + v; 159 buff = ' ' + tmp_name +':' + '\n'; 160 fs.appendFileSync(dFile, buff); 161 162 // header 3 163 for ( k=0; k<lvl2_key.length; k++ ) { 164 if ( lvl2_key[k] == 'environment' ) { 165 lvl2_obj = lvl1_obj[lvl2_key[k]]; 166 lvl3_key = Object.keys(lvl2_obj); 167 168 buff = ' ' + ' ' + lvl2_key[k] + ': ' + '\n'; 169 fs.appendFileSync(dFile, buff); 170 171 // header 4 172 for ( m=0; m< lvl3_key.length; m++ ) { 173 if ( lvl3_key[m] == 'CORE_PEER_ID' ) { 174 buff = ' ' + ' - ' + lvl3_key[m] + '=' + tmp_name + '\n'; 175 } else if ( lvl3_key[m] == 'CORE_PEER_ADDRESS' ) { 176 buff = ' ' + ' - ' + lvl3_key[m] + '=' + vp0Addr +':'+ tmp_port + '\n'; 177 } else if ( lvl3_key[m] == 'CORE_LEDGER_STATE_COUCHDBCONFIG_COUCHDBADDRESS' ) { 178 buff = ' ' + ' - ' + lvl3_key[m] + '=' + 'couchdb'+v +':'+ couchdbPort + '\n'; 179 } else { 180 buff = ' ' + ' - ' + lvl3_key[m] + '=' +lvl2_obj[lvl3_key[m]] + '\n'; 181 } 182 183 fs.appendFileSync(dFile, buff); 184 } 185 } else if ( ( lvl2_key[k] == 'image' ) || ( lvl2_key[k] == 'command' ) || ( lvl2_key[k] == 'working_dir' ) 186 || ( lvl2_key[k] == 'restart') ) { 187 buff = ' ' + ' ' + lvl2_key[k] + ': ' + lvl1_obj[lvl2_key[k]] + '\n'; 188 fs.appendFileSync(dFile, buff); 189 190 } else if ( lvl2_key[k] == 'container_name' ) { 191 buff = ' ' + ' ' + lvl2_key[k] + ': ' + tmp_name + '\n'; 192 fs.appendFileSync(dFile, buff); 193 194 } else if ( lvl2_key[k] == 'ports' ) { 195 buff = ' ' + ' ' + lvl2_key[k] + ': ' + '\n'; 196 fs.appendFileSync(dFile, buff); 197 198 // header 4 199 buff = ' ' + ' - ' + tmp_port + ':' + couchdbPort + '\n'; 200 fs.appendFileSync(dFile, buff); 201 202 } else if ( lvl2_key[k] == 'links' ) { 203 var lvl2_obj = lvl1_obj[lvl2_key[k]]; 204 //console.log('lvl2_obj: %d ', lvl2_obj.length, lvl2_obj); 205 206 buff = ' ' + ' ' + lvl2_key[k] + ': ' + '\n'; 207 fs.appendFileSync(dFile, buff); 208 buff = ' ' + ' - ' + 'orderer' + '\n'; 209 fs.appendFileSync(dFile, buff); 210 if ( CA == 1 ) { 211 buff = ' ' + ' - ' + 'ca' + '\n'; 212 fs.appendFileSync(dFile, buff); 213 } 214 // header 4 215 for ( m=0; m< v; m++ ) { 216 buff = ' ' + ' - ' +'peer'+m + '\n'; 217 fs.appendFileSync(dFile, buff); 218 } 219 220 } else if ( ( lvl2_key[k] == 'volumes' ) || ( lvl2_key[k] == 'depends_on' ) ){ 221 var lvl2_obj = lvl1_obj[lvl2_key[k]]; 222 //console.log('lvl2_obj: %d ', lvl2_obj.length, lvl2_obj); 223 224 buff = ' ' + ' ' + lvl2_key[k] + ': ' + '\n'; 225 fs.appendFileSync(dFile, buff); 226 227 // header 4 228 for ( m=0; m< lvl2_obj.length; m++ ) { 229 buff = ' ' + ' - ' +lvl2_obj[m] + '\n'; 230 fs.appendFileSync(dFile, buff); 231 232 } 233 234 } else { 235 buff = ' ' + ' ' + lvl2_key[k] + ': ' + '\n'; 236 fs.appendFileSync(dFile, buff); 237 238 buff = ' ' + ' - ' + lvl1_obj[lvl2_key[k]] + '\n'; 239 fs.appendFileSync(dFile, buff); 240 241 } 242 } 243 // add a blank line 244 buff = '\n'; 245 fs.appendFileSync(dFile, buff); 246 247 } 248 } 249 } else if (lvl1_key[i] == 'orderer' ) { 250 for ( v = 0; v < addOrderer; v++ ) { 251 tmp_name = lvl1_key[i] + v; 252 buff = ' ' + tmp_name +':' + '\n'; 253 fs.appendFileSync(dFile, buff); 254 255 // header 3 256 for ( k=0; k<lvl2_key.length; k++ ) { 257 if ( (lvl2_key[k] == 'environment') ) { 258 lvl2_obj = lvl1_obj[lvl2_key[k]]; 259 lvl3_key = Object.keys(lvl2_obj); 260 261 buff = ' ' + ' ' + lvl2_key[k] + ': ' + '\n'; 262 fs.appendFileSync(dFile, buff); 263 264 // header 4 265 for ( m=0; m< lvl3_key.length; m++ ) { 266 tmp = ord_env_name.indexOf( lvl3_key[m] ); 267 if ( tmp >= 0 ) { 268 buff = ' ' + ' - ' + lvl3_key[m] + '=' + ord_env_val[tmp] + '\n'; 269 fs.appendFileSync(dFile, buff); 270 } else if ( lvl3_key[m] == 'CONFIGTX_ORDERER_KAFKA_BROKERS' ) { 271 if ( addBroker > 0 ) { 272 buff = ' ' + ' - ' + lvl3_key[m] + '=['; 273 for (n=0; n<addBroker; n++) { 274 buff = buff + 'kafka' + n +':9092' ; 275 if ( n < (addBroker-1) ) { 276 buff = buff + ','; 277 } 278 } 279 buff = buff + ']' + '\n'; 280 fs.appendFileSync(dFile, buff); 281 } 282 } else if ( lvl3_key[m] == 'CONFIGTX_ORDERER_ORDERERTYPE' ) { 283 if ( addBroker > 0 ) { 284 buff = ' ' + ' - ' + lvl3_key[m] + '=' + 'kafka' + '\n'; 285 fs.appendFileSync(dFile, buff); 286 } else { 287 buff = ' ' + ' - ' + lvl3_key[m] + '=' + 'solo' + '\n'; 288 fs.appendFileSync(dFile, buff); 289 } 290 } else if ( lvl3_key[m] == 'ORDERER_GENERAL_LISTENPORT' ) { 291 buff = ' ' + ' - ' + lvl3_key[m] + '=' + ordererPort + '\n'; 292 fs.appendFileSync(dFile, buff); 293 } else if ( ( lvl3_key[m] == 'ORDERER_GENERAL_GENESISMETHOD' ) || ( lvl3_key[m] == 'ORDERER_GENERAL_GENESISFILE' ) ) { 294 if ( addBroker > 0 ) { 295 buff = ' ' + ' - ' + lvl3_key[m] + '=' + lvl2_obj[lvl3_key[m]] + '\n'; 296 fs.appendFileSync(dFile, buff); 297 } else { 298 //buff = ' ' + ' - ' + lvl3_key[m] + '=' + 'solo' + '\n'; 299 //fs.appendFileSync(dFile, buff); 300 } 301 } else { 302 buff = ' ' + ' - ' + lvl3_key[m] + '=' +lvl2_obj[lvl3_key[m]] + '\n'; 303 fs.appendFileSync(dFile, buff); 304 } 305 306 } 307 } else if ( ( lvl2_key[k] == 'image' ) || ( lvl2_key[k] == 'command' ) || ( lvl2_key[k] == 'working_dir' ) 308 || ( lvl2_key[k] == 'restart') ) { 309 buff = ' ' + ' ' + lvl2_key[k] + ': ' + lvl1_obj[lvl2_key[k]] + '\n'; 310 fs.appendFileSync(dFile, buff); 311 } else if ( lvl2_key[k] == 'container_name' ) { 312 buff = ' ' + ' ' + lvl2_key[k] + ': ' + tmp_name + '\n'; 313 fs.appendFileSync(dFile, buff); 314 } else if ( lvl2_key[k] == 'ports' ) { 315 lvl2_obj = lvl1_obj[lvl2_key[k]]; 316 lvl3_key = Object.keys(lvl2_obj); 317 318 buff = ' ' + ' ' + lvl2_key[k] + ': ' + '\n'; 319 fs.appendFileSync(dFile, buff); 320 tmp_port = ordererPort + v; 321 322 buff = ' ' + ' - ' + tmp_port +':' + ordererPort + '\n' ; 323 fs.appendFileSync(dFile, buff); 324 325 } else if ( (lvl2_key[k] == 'depends_on') ) { 326 if ( addBroker > 0 ) { 327 lvl2_obj = lvl1_obj[lvl2_key[k]]; 328 lvl3_key = Object.keys(lvl2_obj); 329 330 buff = ' ' + ' ' + lvl2_key[k] + ': ' + '\n'; 331 fs.appendFileSync(dFile, buff); 332 333 buff = ' ' + ' - ' + 'zookeeper' + '\n' ; 334 fs.appendFileSync(dFile, buff); 335 if ( KAFKA==1 ) { 336 for (n=0; n<addBroker; n++) { 337 buff = ' ' + ' - ' + 'kafka' + n + '\n' ; 338 fs.appendFileSync(dFile, buff); 339 } 340 } 341 } 342 } else { 343 buff = ' ' + ' ' + lvl2_key[k] + ': ' + '\n'; 344 fs.appendFileSync(dFile, buff); 345 346 buff = ' ' + ' - ' + lvl1_obj[lvl2_key[k]] + '\n'; 347 fs.appendFileSync(dFile, buff); 348 349 } 350 } 351 // add a blank line 352 buff = '\n'; 353 fs.appendFileSync(dFile, buff); 354 355 } 356 } else if (lvl1_key[i] == 'kafka' ) { 357 for ( v = 0; v < addBroker; v++ ) { 358 tmp_name = lvl1_key[i] + v; 359 tmp_port = vp0Port + v; 360 buff = ' ' + tmp_name +':' + '\n'; 361 fs.appendFileSync(dFile, buff); 362 363 // header 3 364 for ( k=0; k<lvl2_key.length; k++ ) { 365 if ( (lvl2_key[k] == 'environment') ) { 366 lvl2_obj = lvl1_obj[lvl2_key[k]]; 367 lvl3_key = Object.keys(lvl2_obj); 368 369 buff = ' ' + ' ' + lvl2_key[k] + ': ' + '\n'; 370 fs.appendFileSync(dFile, buff); 371 372 // header 4 373 for ( m=0; m< lvl3_key.length; m++ ) { 374 if ( lvl3_key[m] == 'KAFKA_BROKER_ID' ) { 375 buff = ' ' + ' - ' + lvl3_key[m] + '=' + v + '\n'; 376 fs.appendFileSync(dFile, buff); 377 } else if ( lvl3_key[m] == 'KAFKA_DEFAULT_REPLICATION_FACTOR' ) { 378 buff = ' ' + ' - ' + lvl3_key[m] + '=' + addBroker + '\n'; 379 fs.appendFileSync(dFile, buff); 380 } else { 381 buff = ' ' + ' - ' + lvl3_key[m] + '=' +lvl2_obj[lvl3_key[m]] + '\n'; 382 fs.appendFileSync(dFile, buff); 383 } 384 385 } 386 } else if ( ( lvl2_key[k] == 'image' ) || ( lvl2_key[k] == 'command' ) || ( lvl2_key[k] == 'working_dir' ) 387 || ( lvl2_key[k] == 'restart') ) { 388 buff = ' ' + ' ' + lvl2_key[k] + ': ' + lvl1_obj[lvl2_key[k]] + '\n'; 389 fs.appendFileSync(dFile, buff); 390 } else if ( lvl2_key[k] == 'container_name' ) { 391 buff = ' ' + ' ' + lvl2_key[k] + ': ' + tmp_name + '\n'; 392 fs.appendFileSync(dFile, buff); 393 394 } else { 395 buff = ' ' + ' ' + lvl2_key[k] + ': ' + '\n'; 396 fs.appendFileSync(dFile, buff); 397 398 buff = ' ' + ' - ' + lvl1_obj[lvl2_key[k]] + '\n'; 399 fs.appendFileSync(dFile, buff); 400 401 } 402 } 403 // add a blank line 404 buff = '\n'; 405 fs.appendFileSync(dFile, buff); 406 407 } 408 } else if (lvl1_key[i] == 'zookeeper' ) { 409 if ( KAFKA == 1 ) { 410 tmp_name = lvl1_key[i]; 411 buff = ' ' + tmp_name +':' + '\n'; 412 fs.appendFileSync(dFile, buff); 413 414 // header 3 415 for ( k=0; k<lvl2_key.length; k++ ) { 416 if ( (lvl2_key[k] == 'environment') ) { 417 lvl2_obj = lvl1_obj[lvl2_key[k]]; 418 lvl3_key = Object.keys(lvl2_obj); 419 420 buff = ' ' + ' ' + lvl2_key[k] + ': ' + '\n'; 421 fs.appendFileSync(dFile, buff); 422 423 // header 4 424 for ( m=0; m< lvl3_key.length; m++ ) { 425 buff = ' ' + ' - ' + lvl3_key[m] + '=' +lvl2_obj[lvl3_key[m]] + '\n'; 426 fs.appendFileSync(dFile, buff); 427 } 428 } else if ( ( lvl2_key[k] == 'image' ) || ( lvl2_key[k] == 'command' ) || ( lvl2_key[k] == 'working_dir' ) 429 || ( lvl2_key[k] == 'restart') ) { 430 buff = ' ' + ' ' + lvl2_key[k] + ': ' + lvl1_obj[lvl2_key[k]] + '\n'; 431 fs.appendFileSync(dFile, buff); 432 } else if ( lvl2_key[k] == 'container_name' ) { 433 buff = ' ' + ' ' + lvl2_key[k] + ': ' + tmp_name + '\n'; 434 fs.appendFileSync(dFile, buff); 435 436 } else { 437 buff = ' ' + ' ' + lvl2_key[k] + ': ' + '\n'; 438 fs.appendFileSync(dFile, buff); 439 440 buff = ' ' + ' - ' + lvl1_obj[lvl2_key[k]] + '\n'; 441 fs.appendFileSync(dFile, buff); 442 443 } 444 } 445 // add a blank line 446 buff = '\n'; 447 fs.appendFileSync(dFile, buff); 448 449 } 450 } else if (lvl1_key[i] == 'peer' ) { 451 for ( v = 0; v < addVP; v++ ) { 452 tmp_name = lvl1_key[i] + v; 453 tmp_port = vp0Port + v; 454 buff = ' ' + tmp_name +':' + '\n'; 455 fs.appendFileSync(dFile, buff); 456 457 // header 3 458 for ( k=0; k<lvl2_key.length; k++ ) { 459 if ( (lvl2_key[k] == 'environment') ) { 460 lvl2_obj = lvl1_obj[lvl2_key[k]]; 461 lvl3_key = Object.keys(lvl2_obj); 462 463 buff = ' ' + ' ' + lvl2_key[k] + ': ' + '\n'; 464 fs.appendFileSync(dFile, buff); 465 466 // header 4 467 for ( m=0; m< lvl3_key.length; m++ ) { 468 tmp = peer_env_name.indexOf( lvl3_key[m] ); 469 if ( tmp >= 0 ) { 470 buff = ' ' + ' - ' + lvl3_key[m] + '=' + peer_env_val[tmp] + '\n'; 471 fs.appendFileSync(dFile, buff); 472 } else if ( lvl3_key[m] == 'CORE_PEER_ID' ) { 473 buff = ' ' + ' - ' + lvl3_key[m] + '=' + tmp_name + '\n'; 474 fs.appendFileSync(dFile, buff); 475 } else if ( lvl3_key[m] == 'CORE_PEER_NETWORKID' ) { 476 buff = ' ' + ' - ' + lvl3_key[m] + '=' + tmp_name + '\n'; 477 fs.appendFileSync(dFile, buff); 478 } else if ( lvl3_key[m] == 'CORE_PEER_COMMITTER_LEDGER_ORDERER' ) { 479 buff = ' ' + ' - ' + lvl3_key[m] + '=' + 'orderer0' +':'+ ordererPort + '\n'; 480 fs.appendFileSync(dFile, buff); 481 } else if ( lvl3_key[m] == 'CORE_PEER_ADDRESS' ) { 482 buff = ' ' + ' - ' + lvl3_key[m] + '=' + vp0Addr +':'+ tmp_port + '\n'; 483 fs.appendFileSync(dFile, buff); 484 } else if ( lvl3_key[m] == 'CORE_PEER_DISCOVERY_ROOTNODE' ) { 485 if ( v != 0 ) { 486 buff = ' ' + ' - ' + lvl3_key[m] + '=' + vp0Addr +':'+ vp0Port + '\n'; 487 fs.appendFileSync(dFile, buff); 488 } 489 } else if ( lvl3_key[m] == 'CORE_LEDGER_STATE_STATEDATABASE' ) { 490 if (dbType == 'couchdb') { 491 buff = ' ' + ' - ' + lvl3_key[m] + '=' + 'CouchDB' + '\n'; 492 fs.appendFileSync(dFile, buff); 493 } else if (dbType == 'goleveldb') { 494 buff = ' ' + ' - ' + lvl3_key[m] + '=' + 'goleveldb' + '\n'; 495 fs.appendFileSync(dFile, buff); 496 } 497 } else if ( lvl3_key[m] == 'CORE_LEDGER_STATE_COUCHDBCONFIG_COUCHDBADDRESS' ) { 498 if (dbType == 'couchdb') { 499 tmp = couchdbPort+v; 500 buff = ' ' + ' - ' + lvl3_key[m] + '=' + 'couchdb'+v +':'+ tmp + '\n'; 501 fs.appendFileSync(dFile, buff); 502 } 503 } else { 504 buff = ' ' + ' - ' + lvl3_key[m] + '=' +lvl2_obj[lvl3_key[m]] + '\n'; 505 fs.appendFileSync(dFile, buff); 506 } 507 508 } 509 } else if ( ( lvl2_key[k] == 'image' ) || ( lvl2_key[k] == 'command' ) || ( lvl2_key[k] == 'working_dir' ) 510 || ( lvl2_key[k] == 'restart') ) { 511 buff = ' ' + ' ' + lvl2_key[k] + ': ' + lvl1_obj[lvl2_key[k]] + '\n'; 512 fs.appendFileSync(dFile, buff); 513 514 } else if ( lvl2_key[k] == 'container_name' ) { 515 buff = ' ' + ' ' + lvl2_key[k] + ': ' + tmp_name + '\n'; 516 fs.appendFileSync(dFile, buff); 517 518 } else if ( lvl2_key[k] == 'ports' ) { 519 buff = ' ' + ' ' + lvl2_key[k] + ': ' + '\n'; 520 fs.appendFileSync(dFile, buff); 521 522 // header 4 523 buff = ' ' + ' - ' + tmp_port + ':' + vp0Port + '\n'; 524 fs.appendFileSync(dFile, buff); 525 526 } else if ( lvl2_key[k] == 'links' ) { 527 var lvl2_obj = lvl1_obj[lvl2_key[k]]; 528 //console.log('lvl2_obj: %d ', lvl2_obj.length, lvl2_obj); 529 530 buff = ' ' + ' ' + lvl2_key[k] + ': ' + '\n'; 531 fs.appendFileSync(dFile, buff); 532 buff = ' ' + ' - ' + 'orderer0' + '\n'; 533 fs.appendFileSync(dFile, buff); 534 if (dbType == 'couchdb') { 535 buff = ' ' + ' - ' + 'couchdb'+v + '\n'; 536 fs.appendFileSync(dFile, buff); 537 } 538 if ( CA == 1 ) { 539 buff = ' ' + ' - ' + 'ca' + '\n'; 540 fs.appendFileSync(dFile, buff); 541 } 542 // header 4 543 for ( m=0; m< v; m++ ) { 544 buff = ' ' + ' - ' +'peer'+m + '\n'; 545 fs.appendFileSync(dFile, buff); 546 } 547 548 } else if ( lvl2_key[k] == 'volumes' ) { 549 var lvl2_obj = lvl1_obj[lvl2_key[k]]; 550 //console.log('lvl2_obj: %d ', lvl2_obj.length, lvl2_obj); 551 552 buff = ' ' + ' ' + lvl2_key[k] + ': ' + '\n'; 553 fs.appendFileSync(dFile, buff); 554 555 // header 4 556 for ( m=0; m< lvl2_obj.length; m++ ) { 557 buff = ' ' + ' - ' +lvl2_obj[m] + '\n'; 558 fs.appendFileSync(dFile, buff); 559 560 } 561 562 } else if ( lvl2_key[k] == 'depends_on' ){ 563 var lvl2_obj = lvl1_obj[lvl2_key[k]]; 564 565 buff = ' ' + ' ' + lvl2_key[k] + ': ' + '\n'; 566 fs.appendFileSync(dFile, buff); 567 568 // header 4 569 for ( m=0; m< lvl2_obj.length; m++ ) { 570 buff = ' ' + ' - ' +lvl2_obj[m] + '\n'; 571 fs.appendFileSync(dFile, buff); 572 } 573 574 } else { 575 buff = ' ' + ' ' + lvl2_key[k] + ': ' + '\n'; 576 fs.appendFileSync(dFile, buff); 577 578 buff = ' ' + ' - ' + lvl1_obj[lvl2_key[k]] + '\n'; 579 fs.appendFileSync(dFile, buff); 580 581 } 582 } 583 // add a blank line 584 buff = '\n'; 585 fs.appendFileSync(dFile, buff); 586 587 } 588 } else if (lvl1_key[i] == 'cli' ) { 589 buff = ' ' + lvl1_key[i] +':' + '\n'; 590 fs.appendFileSync(dFile, buff); 591 592 // header 3 593 for ( k=0; k<lvl2_key.length; k++ ) { 594 if ( lvl2_key[k] == 'environment' ) { 595 lvl2_obj = lvl1_obj[lvl2_key[k]]; 596 lvl3_key = Object.keys(lvl2_obj); 597 //console.log('lvl2_obj: ', lvl2_obj); 598 //console.log('lvl3_key: ', lvl3_key); 599 600 buff = ' ' + ' ' + lvl2_key[k] + ': ' + '\n'; 601 fs.appendFileSync(dFile, buff); 602 603 // header 4 604 for ( m=0; m< lvl3_key.length; m++ ) { 605 if ( lvl3_key[m] == 'CORE_PEER_COMMITTER_LEDGER_ORDERER' ) { 606 buff = ' ' + ' - ' + lvl3_key[m] + '=' + 'orderer0' +':'+ ordererPort + '\n'; 607 fs.appendFileSync(dFile, buff); 608 } else { 609 buff = ' ' + ' - ' + lvl3_key[m] + '=' +lvl2_obj[lvl3_key[m]] + '\n'; 610 fs.appendFileSync(dFile, buff); 611 } 612 613 } 614 } else if ( ( lvl2_key[k] == 'image' ) || ( lvl2_key[k] == 'command' ) || ( lvl2_key[k] == 'working_dir' ) 615 || ( lvl2_key[k] == 'restart') || ( lvl2_key[k] == 'container_name') || ( lvl2_key[k] == 'tty') ) { 616 buff = ' ' + ' ' + lvl2_key[k] + ': ' + lvl1_obj[lvl2_key[k]] + '\n'; 617 fs.appendFileSync(dFile, buff); 618 619 } else if ( lvl2_key[k] == 'links' ) { 620 var lvl2_obj = lvl1_obj[lvl2_key[k]]; 621 //console.log('lvl2_obj: %d ', lvl2_obj.length, lvl2_obj); 622 623 buff = ' ' + ' ' + lvl2_key[k] + ': ' + '\n'; 624 fs.appendFileSync(dFile, buff); 625 626 // header 4 627 buff = ' ' + ' - ' +'orderer0:orderer0' + '\n'; 628 fs.appendFileSync(dFile, buff); 629 buff = ' ' + ' - ' +'peer0:peer0' + '\n'; 630 fs.appendFileSync(dFile, buff); 631 632 } else if ( lvl2_key[k] == 'depends_on' ) { 633 var lvl2_obj = lvl1_obj[lvl2_key[k]]; 634 //console.log('lvl2_obj: %d ', lvl2_obj.length, lvl2_obj); 635 636 buff = ' ' + ' ' + lvl2_key[k] + ': ' + '\n'; 637 fs.appendFileSync(dFile, buff); 638 639 // header 4 640 buff = ' ' + ' - ' +'orderer0' + '\n'; 641 fs.appendFileSync(dFile, buff); 642 buff = ' ' + ' - ' +'peer0' + '\n'; 643 fs.appendFileSync(dFile, buff); 644 645 } else if ( ( lvl2_key[k] == 'ports' ) || ( lvl2_key[k] == 'volumes' ) ){ 646 var lvl2_obj = lvl1_obj[lvl2_key[k]]; 647 //console.log('lvl2_obj: %d ', lvl2_obj.length, lvl2_obj); 648 649 buff = ' ' + ' ' + lvl2_key[k] + ': ' + '\n'; 650 fs.appendFileSync(dFile, buff); 651 652 // header 4 653 for ( m=0; m< lvl2_obj.length; m++ ) { 654 buff = ' ' + ' - ' +lvl2_obj[m] + '\n'; 655 fs.appendFileSync(dFile, buff); 656 657 } 658 659 } else { 660 buff = ' ' + ' ' + lvl2_key[k] + ': ' + '\n'; 661 fs.appendFileSync(dFile, buff); 662 663 buff = ' ' + ' - ' + lvl1_obj[lvl2_key[k]] + '\n'; 664 fs.appendFileSync(dFile, buff); 665 666 } 667 } 668 // add a blank line 669 buff = '\n'; 670 fs.appendFileSync(dFile, buff); 671 672 } else { 673 if (lvl1_key[i] == 'ca' ) { 674 CA=1; 675 } 676 buff = ' ' + lvl1_key[i] +':' + '\n'; 677 fs.appendFileSync(dFile, buff); 678 679 // header 3 680 for ( k=0; k<lvl2_key.length; k++ ) { 681 if ( lvl2_key[k] == 'environment' ) { 682 lvl2_obj = lvl1_obj[lvl2_key[k]]; 683 lvl3_key = Object.keys(lvl2_obj); 684 //console.log('lvl2_obj: ', lvl2_obj); 685 //console.log('lvl3_key: ', lvl3_key); 686 687 buff = ' ' + ' ' + lvl2_key[k] + ': ' + '\n'; 688 fs.appendFileSync(dFile, buff); 689 690 // header 4 691 for ( m=0; m< lvl3_key.length; m++ ) { 692 buff = ' ' + ' - ' + lvl3_key[m] + '=' +lvl2_obj[lvl3_key[m]] + '\n'; 693 fs.appendFileSync(dFile, buff); 694 695 } 696 } else if ( ( lvl2_key[k] == 'image' ) || ( lvl2_key[k] == 'command' ) || ( lvl2_key[k] == 'working_dir' ) 697 || ( lvl2_key[k] == 'restart') || ( lvl2_key[k] == 'container_name') || ( lvl2_key[k] == 'tty') ) { 698 buff = ' ' + ' ' + lvl2_key[k] + ': ' + lvl1_obj[lvl2_key[k]] + '\n'; 699 fs.appendFileSync(dFile, buff); 700 701 } else if ( ( lvl2_key[k] == 'ports' ) || ( lvl2_key[k] == 'links' ) || ( lvl2_key[k] == 'volumes' ) 702 || ( lvl2_key[k] == 'depends_on' ) ){ 703 var lvl2_obj = lvl1_obj[lvl2_key[k]]; 704 //console.log('lvl2_obj: %d ', lvl2_obj.length, lvl2_obj); 705 706 buff = ' ' + ' ' + lvl2_key[k] + ': ' + '\n'; 707 fs.appendFileSync(dFile, buff); 708 709 // header 4 710 for ( m=0; m< lvl2_obj.length; m++ ) { 711 buff = ' ' + ' - ' +lvl2_obj[m] + '\n'; 712 fs.appendFileSync(dFile, buff); 713 714 } 715 716 } else { 717 buff = ' ' + ' ' + lvl2_key[k] + ': ' + '\n'; 718 fs.appendFileSync(dFile, buff); 719 720 buff = ' ' + ' - ' + lvl1_obj[lvl2_key[k]] + '\n'; 721 fs.appendFileSync(dFile, buff); 722 723 } 724 } 725 // add a blank line 726 buff = '\n'; 727 fs.appendFileSync(dFile, buff); 728 729 } 730 } 731 } 732 }