[ ${ range( env( 'CONSUL_NODE_COUNT', Math.floor( ( Math.random() * env('CONSUL_NODE_MAX', 10) ) + parseInt(env('CONSUL_NODE_MIN', 1)) ) ) ).map( function(item, i) { const node = `node-${i}`; const service = location.pathname.slice(4); const ip = fake.internet.ip(); const proxy = service.indexOf('-proxy') const sidecar = service.indexOf('-sidecar-proxy') const id = (proxy !== -1 ? service.slice(0, -6) + '-with-id-proxy' : service + '-with-id'); let kind = ''; switch(true) { case service.endsWith('-mesh-gateway'): kind = 'mesh-gateway'; break; case service.endsWith('-terminating-gateway'): kind = 'terminating-gateway'; break; case service.endsWith('-ingress-gateway'): kind = 'ingress-gateway'; break; case service.endsWith('-proxy'): kind = 'connect-proxy'; break; } return ` { "Node":{ "ID":"7037e928-d9e8-3b58-4712-6f5ded209002", "Node":"${node}", "Address":"${ip}", "Datacenter":"dc1", "TaggedAddresses":{"lan":"${ip}","wan":"${ip}"}, "Meta":{"${service}-network-segment":""}, ${typeof location.search.peer !== 'undefined' ? ` "PeerName": "${location.search.peer}", ` : ``} "CreateIndex":5, "ModifyIndex":6 }, "Service":{ "ID": "${ i === 0 ? id : fake.helpers.randomize([service, service + '-ID'])}", ${typeof location.search.peer !== 'undefined' ? ` "PeerName": "${location.search.peer}", ` : ``} "Service":"${service}", ${typeof location.search.ns !== 'undefined' ? ` "Namespace": "${location.search.ns}", ` : ``} ${typeof location.search.partition !== 'undefined' ? ` "Partition": "${fake.helpers.randomize([env('CONSUL_PARTITION_EXPORTER', location.search.partition), location.search.partition])}", ` : ``} "Tags":[ ${ range( env( 'CONSUL_TAG_COUNT', Math.floor( ( Math.random() * env('CONSUL_TAG_MAX', 10) ) + parseInt(env('CONSUL_TAG_MIN', 1)) ) ) ).map( function(item, i) { return `"${fake.hacker.noun()}"`; } ) } ], "Weights": { "Passing": 1, "Warning": 1 }, ${ fake.random.number({min: 1, max: 10}) > 2 ? ` "Meta": { "consul-dashboard-url": "${fake.internet.protocol()}://${fake.internet.domainName()}/?id={{Service}}", "external-source": "${fake.helpers.randomize([ 'consul-api-gateway', 'vault', 'nomad', 'terraform', 'kubernetes', 'aws', 'lambda', '' ])}" }, ` : ` "Meta": null, ` } ${ false ? ` "Address":"${fake.internet.ip()}", "Port":${fake.random.number({min: 0, max: 65535})}, ` : ` "Address":"", "SocketPath": "/${fake.lorem.words(fake.random.number({min: 1, max: 5})).split(' ').join('/')}${fake.random.boolean() ? fake.system.fileName() : ''}", ` } "Connect": {}, ${kind !== '' ? ` "Kind": "${kind}", ` : `` } "Proxy": { ${proxy !== -1 && sidecar === -1 ? ` "DestinationServiceName": "${service.substr(0, proxy)}", ` : ` "Expose": {}, "MeshGateway": {}, "Mode": "", "TransparentProxy": "" `} ${sidecar !== -1 ? ` "DestinationServiceName": "${service.substr(0, sidecar)}", "DestinationServiceID": "${service.substr(0, sidecar)}-ID", "LocalServiceAddress": "${fake.internet.ip()}", "LocalServicePort": ${fake.random.number({min: 0, max: 65535})}, ` : ``} ${proxy !== -1 ? ` "Expose": { "Checks": true, "Paths": [ ${range(env('CONSUL_EXPOSED_COUNT', 3)).map((i) => ` { "Path": "/${fake.lorem.words(fake.random.number({min: 1, max: 5})).split(' ').join('/')}${fake.random.boolean() ? fake.system.fileName() : ''}", "Protocol": "${fake.helpers.randomize(['http', 'http2', 'grpc'])}", "LocalPathPort": ${fake.random.number({min: 0, max: 65535})}, "ListenerPort": ${fake.random.number({min: 0, max: 65535})} } `)} ] }, "Upstreams": [ ${range(env('CONSUL_UPSTREAM_COUNT', 10)).map((item, j) => ` { "Datacenter": "${fake.address.countryCode().toLowerCase()} ${ i % 2 ? "west" : "east"}-${j}", "DestinationName": "${fake.hacker.noun()}", "DestinationNamespace": "${fake.hacker.noun()}", "DestinationPartition": "${fake.hacker.noun()}", "DestinationType": "${fake.helpers.randomize(['service', 'prepared_query'])}", ${fake.random.number({min: 1, max: 10}) > 5 ? ` "LocalBindAddress": "${fake.internet.ip()}", "LocalBindPort": ${fake.random.number({min: 0, max: 65535})} ` : ` "LocalBindSocketMode": "0600", "LocalBindSocketPath": "/${fake.lorem.words(fake.random.number({min: 1, max: 5})).split(' ').join('/')}${fake.random.boolean() ? fake.system.fileName() : ''}" ` } } `)} ] ` : ``} }, "ProxyDestination": "", "EnableTagOverride":false, "CreateIndex":5, "ModifyIndex":5 }, "Checks":[ ${ range(env('CONSUL_CHECK_COUNT', 10)).map( function(item, j) { const passing = i > 7 || j > fake.random.number(4); const id = fake.helpers.randomize([service, '']); return ` { "Node":"${node}", "CheckID":"${fake.hacker.noun()}Health", "Name":"${fake.hacker.noun()} Status", "Type": "${j === 0 ? 'ttl' : (j === 1 ? 'http' : fake.helpers.randomize(['script', 'http', 'tcp', 'ttl', 'docker', 'grpc', 'alias']))}", "Status":"${j < 2 ? 'critical' : (passing ? "passing" : fake.helpers.randomize(['warning', 'critical']))}", "Notes":"${fake.lorem.paragraph()}", "Output":"${fake.internet.ipv6()} ${fake.internet.protocol()}://${fake.internet.userName()}:${fake.internet.password()}@${fake.internet.domainName()} ${fake.internet.userAgent()}", "ServiceID":"${j < 2 ? service : id}", "ServiceName":"", "ServiceTags":["Tag"], "Definition":{}, "CreateIndex":5, "ModifyIndex":5 } `; } ) } ] } `; } ) } ]