diff --git a/.gitignore b/.gitignore index 18b659878..35366c80f 100644 --- a/.gitignore +++ b/.gitignore @@ -35,3 +35,12 @@ pprof/* # Nohup Files - https://man7.org/linux/man-pages/man1/nohup.1p.html nohup.* + +# Cypress tests +cypress.env.json +*/cypress/downloads +*/cypress/fixtures +*/cypress/plugins +*/cypress/screenshots +*/cypress/videos +*/cypress/support diff --git a/Dockerfile b/Dockerfile index 51a42eae9..5f831ed1b 100644 --- a/Dockerfile +++ b/Dockerfile @@ -41,16 +41,10 @@ RUN go build -ldflags="-s -w \ -X 'mizuserver/pkg/version.BuildTimestamp=${BUILD_TIMESTAMP}' \ -X 'mizuserver/pkg/version.SemVer=${SEM_VER}'" -o mizuagent . -# Download Basenine executable, verify the sha1sum and move it to a directory in $PATH -ADD https://github.com/up9inc/basenine/releases/download/v0.2.19/basenine_linux_amd64 ./basenine_linux_amd64 -ADD https://github.com/up9inc/basenine/releases/download/v0.2.19/basenine_linux_amd64.sha256 ./basenine_linux_amd64.sha256 -RUN shasum -a 256 -c basenine_linux_amd64.sha256 -RUN chmod +x ./basenine_linux_amd64 - COPY devops/build_extensions.sh .. RUN cd .. && /bin/bash build_extensions.sh -FROM alpine:3.14 +FROM alpine:3.15 RUN apk add bash libpcap-dev @@ -58,7 +52,6 @@ WORKDIR /app # Copy binary and config files from /build to root folder of scratch container. COPY --from=builder ["/app/agent-build/mizuagent", "."] -COPY --from=builder ["/app/agent-build/basenine_linux_amd64", "/usr/local/bin/basenine"] COPY --from=builder ["/app/agent/build/extensions", "extensions"] COPY --from=site-build ["/app/ui-build/build", "site"] RUN mkdir /app/data/ diff --git a/Makefile b/Makefile index 65834551c..99fc714a5 100644 --- a/Makefile +++ b/Makefile @@ -8,7 +8,7 @@ SHELL=/bin/bash # HELP # This will output the help for each task # thanks to https://marmelab.com/blog/2016/02/29/auto-documented-makefile.html -.PHONY: help ui agent cli tap docker +.PHONY: help ui extensions extensions-debug agent agent-debug cli tap docker help: ## This help. @awk 'BEGIN {FS = ":.*?## "} /^[a-zA-Z_-]+:.*?## / {printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}' $(MAKEFILE_LIST) @@ -28,6 +28,9 @@ ui: ## Build UI. cli: ## Build CLI. @echo "building cli"; cd cli && $(MAKE) build +cli-debug: ## Build CLI. + @echo "building cli"; cd cli && $(MAKE) build-debug + build-cli-ci: ## Build CLI for CI. @echo "building cli for ci"; cd cli && $(MAKE) build GIT_BRANCH=ci SUFFIX=ci @@ -37,6 +40,12 @@ agent: ## Build agent. ${MAKE} extensions @ls -l agent/build +agent-debug: ## Build agent for debug. + @(echo "building mizu agent for debug.." ) + @(cd agent; go build -gcflags="all=-N -l" -o build/mizuagent main.go) + ${MAKE} extensions-debug + @ls -l agent/build + docker: ## Build and publish agent docker image. $(MAKE) push-docker @@ -62,7 +71,7 @@ push-cli: ## Build and publish CLI. gsutil cp -r ./cli/bin/* gs://${BUCKET_PATH}/ gsutil setmeta -r -h "Cache-Control:public, max-age=30" gs://${BUCKET_PATH}/\* -clean: clean-ui clean-agent clean-cli clean-docker ## Clean all build artifacts. +clean: clean-ui clean-agent clean-cli clean-docker clean-extensions ## Clean all build artifacts. clean-ui: ## Clean UI. @(rm -rf ui/build ; echo "UI cleanup done" ) @@ -73,9 +82,15 @@ clean-agent: ## Clean agent. clean-cli: ## Clean CLI. @(cd cli; make clean ; echo "CLI cleanup done" ) +clean-extensions: ## Clean extensions + @(rm -rf tap/extensions/*.so ; echo "Extensions cleanup done" ) + clean-docker: @(echo "DOCKER cleanup - NOT IMPLEMENTED YET " ) +extensions-debug: + devops/build_extensions_debug.sh + extensions: devops/build_extensions.sh diff --git a/README.md b/README.md index 56d537899..aa50a5bbb 100644 --- a/README.md +++ b/README.md @@ -52,8 +52,8 @@ Pick one from the [Releases](https://github.com/up9inc/mizu/releases) page ## How to Run 1. Find pods you'd like to tap to in your Kubernetes cluster -2. Run `mizu tap` or `mizu tap PODNAME` -3. Open browser on `http://localhost:8899/mizu` **or** as instructed in the CLI +2. Run `mizu tap` or `mizu tap PODNAME` +3. Open browser on `http://localhost:8899` **or** as instructed in the CLI 4. Watch the API traffic flowing 5. Type ^C to stop @@ -172,16 +172,14 @@ Please see [CONTRACT MONITORING](docs/CONTRACT_MONITORING.md) page for more deta ### Configure proxy host -By default, mizu will be accessible via local host: 'http://localhost:8899/mizu/', it is possible to change the host, -for instance, to '0.0.0.0' which can grant access via machine IP address. -This setting can be changed via command line flag `--set tap.proxy-host=` or via config file: -tap - proxy-host: 0.0.0.0 -and when changed it will support accessing by IP +By default, mizu will be accessible via local host: 'http://localhost:8899', it is possible to change the host, for +instance, to '0.0.0.0' which can grant access via machine IP address. This setting can be changed via command line +flag `--set tap.proxy-host=` or via config file: +tap proxy-host: 0.0.0.0 and when changed it will support accessing by IP -### Run in daemon mode +### Install Mizu standalone -Mizu can be run detached from the cli using the daemon flag: `mizu tap --daemon`. This type of mizu instance will run +Mizu can be run detached from the cli using the install command: `mizu install`. This type of mizu instance will run indefinitely in the cluster. -For more information please refer to [DAEMON MODE](docs/DAEMON_MODE.md) +For more information please refer to [INSTALL STANDALONE](docs/INSTALL_STANDALONE.md) diff --git a/acceptanceTests/cypress.json b/acceptanceTests/cypress.json new file mode 100644 index 000000000..44ae98c89 --- /dev/null +++ b/acceptanceTests/cypress.json @@ -0,0 +1,17 @@ +{ + "watchForFileChanges":false, + "viewportWidth": 1920, + "viewportHeight": 1080, + "video": false, + "screenshotOnRunFailure": false, + + "testFiles": + ["tests/GuiPort.js", + "tests/MultipleNamespaces.js", + "tests/RedactTests.js", + "tests/Regex.js"], + + "env": { + "testUrl": "http://localhost:8899/" + } +} diff --git a/acceptanceTests/cypress/integration/page_objects/StatusBar.js b/acceptanceTests/cypress/integration/page_objects/StatusBar.js new file mode 100644 index 000000000..7f3ab13db --- /dev/null +++ b/acceptanceTests/cypress/integration/page_objects/StatusBar.js @@ -0,0 +1,46 @@ +const columns = {podName : 1, namespace : 2, tapping : 3}; +const greenStatusImageSrc = '/static/media/success.662997eb.svg'; + +function getDomPathInStatusBar(line, column) { + return `.expandedStatusBar > :nth-child(2) > > :nth-child(2) > :nth-child(${line}) > :nth-child(${column})`; +} + +export function checkLine(line, expectedValues) { + cy.get(getDomPathInStatusBar(line, columns.podName)).invoke('text').then(podValue => { + const podName = getOnlyPodName(podValue); + expect(podName).to.equal(expectedValues.podName); + + cy.get(getDomPathInStatusBar(line, columns.namespace)).invoke('text').then(namespaceValue => { + expect(namespaceValue).to.equal(expectedValues.namespace); + cy.get(getDomPathInStatusBar(line, columns.tapping)).children().should('have.attr', 'src', greenStatusImageSrc); + }); + }); +} + +export function findLineAndCheck(expectedValues) { + cy.get('.expandedStatusBar > :nth-child(2) > > :nth-child(2) > > :nth-child(1)').then(pods => { + cy.get('.expandedStatusBar > :nth-child(2) > > :nth-child(2) > > :nth-child(2)').then(namespaces => { + // organizing namespaces array + const podObjectsArray = Object.values(pods ?? {}); + const namespacesObjectsArray = Object.values(namespaces ?? {}); + let lineNumber = -1; + namespacesObjectsArray.forEach((namespaceObj, index) => { + const currentLine = index + 1; + lineNumber = (namespaceObj.getAttribute && namespaceObj.innerHTML === expectedValues.namespace && (getOnlyPodName(podObjectsArray[index].innerHTML)) === expectedValues.podName) ? currentLine : lineNumber; + }); + lineNumber === -1 ? throwError(expectedValues) : checkLine(lineNumber, expectedValues); + }); + }); +} + +function throwError(expectedValues) { + throw new Error(`The pod named ${expectedValues.podName} doesn't match any namespace named ${expectedValues.namespace}`); +} + +export function getExpectedDetailsDict(podName, namespace) { + return {podName : podName, namespace : namespace}; +} + +function getOnlyPodName(podElementFullStr) { + return podElementFullStr.substring(0, podElementFullStr.indexOf('-')); +} diff --git a/acceptanceTests/cypress/integration/tests/GuiPort.js b/acceptanceTests/cypress/integration/tests/GuiPort.js new file mode 100644 index 000000000..b96cf1b40 --- /dev/null +++ b/acceptanceTests/cypress/integration/tests/GuiPort.js @@ -0,0 +1,8 @@ +it('check', function () { + cy.visit(`http://localhost:${Cypress.env('port')}/`); + + cy.get('.header').should('be.visible'); + cy.get('.TrafficPageHeader').should('be.visible'); + cy.get('.TrafficPage-ListContainer').should('be.visible'); + cy.get('.TrafficPage-Container').should('be.visible'); +}); diff --git a/acceptanceTests/cypress/integration/tests/MultipleNamespaces.js b/acceptanceTests/cypress/integration/tests/MultipleNamespaces.js new file mode 100644 index 000000000..110f9d13f --- /dev/null +++ b/acceptanceTests/cypress/integration/tests/MultipleNamespaces.js @@ -0,0 +1,18 @@ +import {findLineAndCheck, getExpectedDetailsDict} from '../page_objects/StatusBar'; + +it('opening', function () { + cy.visit(Cypress.env('testUrl')); + cy.get('.podsCount').trigger('mouseover'); +}); + +[1, 2, 3].map(doItFunc); + +function doItFunc(number) { + const podName = Cypress.env(`name${number}`); + const namespace = Cypress.env(`namespace${number}`); + + it(`verifying the pod (${podName}, ${namespace})`, function () { + findLineAndCheck(getExpectedDetailsDict(podName, namespace)); + }); +} + diff --git a/acceptanceTests/cypress/integration/tests/RedactTests.js b/acceptanceTests/cypress/integration/tests/RedactTests.js new file mode 100644 index 000000000..7005eeebf --- /dev/null +++ b/acceptanceTests/cypress/integration/tests/RedactTests.js @@ -0,0 +1,23 @@ +const inHeader = 'User-Header[REDACTED]'; +const inBody = '{ "User": "[REDACTED]" }'; +const shouldExist = Cypress.env('shouldExist'); + +it('Loading Mizu', function () { + cy.visit(Cypress.env('testUrl')); +}) + +it(`should ${shouldExist ? '' : 'not'} include ${inHeader}`, function () { + cy.get('.CollapsibleContainer', { timeout : 15 * 1000}).first().next().then(headerElements => { //TODO change the path and refactor the body and head functions + const allText = headerElements.text(); + if (allText.includes(inHeader) !== shouldExist) + throw new Error(`The headers panel doesnt include ${inHeader}`); + }); +}); + +it(`should ${shouldExist ? '' : 'not'} include ${inBody}`, function () { + cy.get('.hljs').then(bodyElement => { + const line = bodyElement.text(); + if (line.includes(inBody) !== shouldExist) + throw new Error(`The body panel doesnt include ${inBody}`); + }); +}); diff --git a/acceptanceTests/cypress/integration/tests/Regex.js b/acceptanceTests/cypress/integration/tests/Regex.js new file mode 100644 index 000000000..b11ef2e58 --- /dev/null +++ b/acceptanceTests/cypress/integration/tests/Regex.js @@ -0,0 +1,11 @@ +import {getExpectedDetailsDict, checkLine} from '../page_objects/StatusBar'; + + +it('opening', function () { + cy.visit(Cypress.env('testUrl')); + cy.get('.podsCount').trigger('mouseover'); + + cy.get('.expandedStatusBar > :nth-child(2) > > :nth-child(2) >').should('have.length', 1); // one line + + checkLine(1, getExpectedDetailsDict(Cypress.env('name'), Cypress.env('namespace'))); +}); diff --git a/acceptanceTests/go.sum b/acceptanceTests/go.sum index 808c5bc66..825dbcd0f 100644 --- a/acceptanceTests/go.sum +++ b/acceptanceTests/go.sum @@ -75,6 +75,7 @@ github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsr github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/creack/pty v1.1.11/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/daviddengcn/go-colortext v0.0.0-20160507010035-511bcaf42ccd/go.mod h1:dv4zxwHi5C/8AeI+4gX4dCWOIvNi7I6JCSX0HvlKPgE= github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= @@ -110,6 +111,7 @@ github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9 github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= github.com/go-logr/logr v0.1.0/go.mod h1:ixOQHD9gLJUVQQ2ZOR7zLEifBX6tGkNJF4QyIY7sIas= github.com/go-logr/logr v0.2.0/go.mod h1:z6/tIYblkpsD+a4lm/fGIIU9mZ+XfAiaFtq7xTgseGU= +github.com/go-logr/logr v0.4.0 h1:K7/B1jt6fIBQVd4Owv2MqGQClcgf0R266+7C/QjRcLc= github.com/go-logr/logr v0.4.0/go.mod h1:z6/tIYblkpsD+a4lm/fGIIU9mZ+XfAiaFtq7xTgseGU= github.com/go-openapi/analysis v0.0.0-20180825180245-b006789cd277/go.mod h1:k70tL6pCuVxPJOHXQ+wIac1FUrvNkHolPie/cLEU6hI= github.com/go-openapi/analysis v0.17.0/go.mod h1:IowGgpVeD0vNm45So8nr+IcQ3pxVtpRoBWb8PVZO0ik= @@ -156,6 +158,7 @@ github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/me github.com/gobuffalo/here v0.6.0/go.mod h1:wAG085dHOYqUpf+Ap+WOdrPTp5IYcDAs/x7PLa8Y5fM= github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= +github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= github.com/golang-jwt/jwt/v4 v4.1.0 h1:XUgk2Ex5veyVFVeLm0xhusUTQybEbexJXrvPNOKkSY0= github.com/golang-jwt/jwt/v4 v4.1.0/go.mod h1:/xlHOz8bRuivTWchD4jCa+NbatV+wEUSzwAxVc6locg= @@ -191,10 +194,11 @@ github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMyw github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.4 h1:L8R9j+yAqZuZjsqh/z+F1NCffTKKLShY6zXTItVIZ8M= github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/google/gofuzz v1.1.0 h1:Hsa8mG0dQ46ij8Sl2AYJDUv1oA9/d6Vk+3LG99Oe02g= github.com/google/gofuzz v1.1.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= -github.com/google/martian v2.1.0+incompatible h1:/CP5g8u/VJHijgedC/Legn3BAbAaWPgecwXBIDzw5no= github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= @@ -243,6 +247,7 @@ github.com/imdario/mergo v0.3.5/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJ github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= +github.com/json-iterator/go v1.1.10 h1:Kz6Cvnvv2wGdaG/V8yMvfkmNiXq9Ya2KUv4rouJJr68= github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= @@ -288,8 +293,10 @@ github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh github.com/moby/spdystream v0.2.0/go.mod h1:f7i0iNDQJ059oMTcWxx8MA/zKFIuD/lY+0GqbN2Wy8c= github.com/moby/term v0.0.0-20201216013528-df9cb8a40635/go.mod h1:FBS0z0QWA44HXygs7VXDUOGoN/1TV3RuWkLO04am3wc= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= +github.com/modern-go/reflect2 v1.0.1 h1:9f412s+6RmYXLWZSEzVVgPGK7C2PphHj5RJrvfx9AWI= github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/monochromegane/go-gitignore v0.0.0-20200626010858-205db1a8cc00/go.mod h1:Pm3mSP3c5uWn86xMLZ5Sa7JB9GsEZySvHYXCTK4E9q4= github.com/munnerz/goautoneg v0.0.0-20120707110453-a547fc61f48d/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= @@ -314,6 +321,7 @@ github.com/peterbourgon/diskv v2.0.1+incompatible/go.mod h1:uqqh8zWWbv1HBMNONnaR github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI= github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= @@ -357,6 +365,7 @@ github.com/spf13/cobra v1.1.1/go.mod h1:WnodtKOvamDL/PwE2M4iKs8aMDBZ5Q5klgD3qfVJ github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= github.com/spf13/pflag v0.0.0-20170130214245-9ff6c6923cff/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= +github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/spf13/viper v1.4.0/go.mod h1:PTJ7Z/lr49W6bUbkmS1V3by4uWynFiR9p7+dSq/yZzE= github.com/spf13/viper v1.7.0/go.mod h1:8WkrPz2fc9jxqZNCJI/76HCieCp4Q8HaLFoCha5qpdg= @@ -366,6 +375,7 @@ github.com/stretchr/objx v0.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoH github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= +github.com/stretchr/testify v1.6.1 h1:hDPOHmpOpP40lSULcqw7IrRb/u7w6RpDC9399XyoNd0= github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= github.com/tidwall/pretty v1.0.0/go.mod h1:XNkn88O1ChpSDQmQeStsy+sBenx6DDtFZJxhVysOjyk= @@ -462,6 +472,7 @@ golang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLL golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20210224082022-3d97a244fca7 h1:OgUuv8lsRpBibGNbSizVwKWlysjaNzmC9gYMhPVfqFM= golang.org/x/net v0.0.0-20210224082022-3d97a244fca7/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -521,6 +532,7 @@ golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.4 h1:0YWbFKbhXG/wIiuHDSKpS0Iy7FSA+u45VtBMfQcFTTc= golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= @@ -570,6 +582,7 @@ golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M= @@ -630,6 +643,7 @@ gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f h1:BLraFXnmrev5lT+xlilqcH8X gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= +gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc= gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= gopkg.in/ini.v1 v1.51.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= @@ -641,6 +655,7 @@ gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.5/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.7/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b h1:h8qDotaEPuJATrMmW04NCwg7v22aHH28wwpauUhK9Oo= @@ -653,7 +668,9 @@ honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWh honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= +k8s.io/api v0.21.2 h1:vz7DqmRsXTCSa6pNxXwQ1IYeAZgdIsua+DZU+o+SX3Y= k8s.io/api v0.21.2/go.mod h1:Lv6UGJZ1rlMI1qusN8ruAp9PUBFyBwpEHAdG24vIsiU= +k8s.io/apimachinery v0.21.2 h1:vezUc/BHqWlQDnZ+XkrpXSmnANSLbpnlpwo0Lhk0gpc= k8s.io/apimachinery v0.21.2/go.mod h1:CdTY8fU/BlvAbJ2z/8kBwimGki5Zp8/fbVuLY8gJumM= k8s.io/cli-runtime v0.21.2/go.mod h1:8u/jFcM0QpoI28f6sfrAAIslLCXUYKD5SsPPMWiHYrI= k8s.io/client-go v0.21.2/go.mod h1:HdJ9iknWpbl3vMGtib6T2PyI/VYxiZfq936WNVHBRrA= @@ -664,6 +681,7 @@ k8s.io/gengo v0.0.0-20200413195148-3a45101e95ac/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8 k8s.io/gengo v0.0.0-20201214224949-b6c5ce23f027/go.mod h1:FiNAH4ZV3gBg2Kwh89tzAEV2be7d5xI0vBa/VySYy3E= k8s.io/klog/v2 v2.0.0/go.mod h1:PBfzABfn139FHAV07az/IF9Wp1bkk3vpT2XSJ76fSDE= k8s.io/klog/v2 v2.2.0/go.mod h1:Od+F08eJP+W3HUb4pSrPpgp9DGU4GzlpG/TmITuYh/Y= +k8s.io/klog/v2 v2.8.0 h1:Q3gmuM9hKEjefWFFYF0Mat+YyFJvsUyYuwyNNJ5C9Ts= k8s.io/klog/v2 v2.8.0/go.mod h1:hy9LJ/NvuK+iVyP4Ehqva4HxZG/oXyIS3n3Jmire4Ec= k8s.io/kube-openapi v0.0.0-20210305001622-591a79e4bda7/go.mod h1:wXW5VT87nVfh/iLV8FpR2uDvrFyomxbtb1KivDbvPTE= k8s.io/kubectl v0.21.2/go.mod h1:PgeUclpG8VVmmQIl8zpLar3IQEpFc9mrmvlwY3CK1xo= @@ -677,5 +695,7 @@ sigs.k8s.io/kustomize/cmd/config v0.9.10/go.mod h1:Mrby0WnRH7hA6OwOYnYpfpiY0WJIM sigs.k8s.io/kustomize/kustomize/v4 v4.1.2/go.mod h1:PxBvo4WGYlCLeRPL+ziT64wBXqbgfcalOS/SXa/tcyo= sigs.k8s.io/kustomize/kyaml v0.10.17/go.mod h1:mlQFagmkm1P+W4lZJbJ/yaxMd8PqMRSC4cPcfUVt5Hg= sigs.k8s.io/structured-merge-diff/v4 v4.0.2/go.mod h1:bJZC9H9iH24zzfZ/41RGcq60oK1F7G282QMXDPYydCw= +sigs.k8s.io/structured-merge-diff/v4 v4.1.0 h1:C4r9BgJ98vrKnnVCjwCSXcWjWe0NKcUQkmzDXZXGwH8= sigs.k8s.io/structured-merge-diff/v4 v4.1.0/go.mod h1:bJZC9H9iH24zzfZ/41RGcq60oK1F7G282QMXDPYydCw= +sigs.k8s.io/yaml v1.2.0 h1:kr/MCeFWJWTwyaHoR9c8EjH9OumOmoF9YGiZd7lFm/Q= sigs.k8s.io/yaml v1.2.0/go.mod h1:yfXDCHCao9+ENCvLSE62v9VSji2MKu5jeNfTrofGhJc= diff --git a/acceptanceTests/logs_test.go b/acceptanceTests/logs_test.go index 5508fdb11..d2808da97 100644 --- a/acceptanceTests/logs_test.go +++ b/acceptanceTests/logs_test.go @@ -81,11 +81,16 @@ func TestLogs(t *testing.T) { logsFileNames = append(logsFileNames, file.Name) } - if !Contains(logsFileNames, "mizu.mizu-api-server.log") { + if !Contains(logsFileNames, "mizu.mizu-api-server.mizu-api-server.log") { t.Errorf("api server logs not found") return } + if !Contains(logsFileNames, "mizu.mizu-api-server.basenine.log") { + t.Errorf("basenine logs not found") + return + } + if !Contains(logsFileNames, "mizu_cli.log") { t.Errorf("cli logs not found") return @@ -174,11 +179,16 @@ func TestLogsPath(t *testing.T) { logsFileNames = append(logsFileNames, file.Name) } - if !Contains(logsFileNames, "mizu.mizu-api-server.log") { + if !Contains(logsFileNames, "mizu.mizu-api-server.mizu-api-server.log") { t.Errorf("api server logs not found") return } + if !Contains(logsFileNames, "mizu.mizu-api-server.basenine.log") { + t.Errorf("basenine logs not found") + return + } + if !Contains(logsFileNames, "mizu_cli.log") { t.Errorf("cli logs not found") return diff --git a/acceptanceTests/tap_test.go b/acceptanceTests/tap_test.go index 51b57a4ea..381c5ed0f 100644 --- a/acceptanceTests/tap_test.go +++ b/acceptanceTests/tap_test.go @@ -3,7 +3,6 @@ package acceptanceTests import ( "archive/zip" "bytes" - "encoding/json" "fmt" "io/ioutil" "net/http" @@ -138,6 +137,8 @@ func TestTapGuiPort(t *testing.T) { t.Errorf("failed to start tap pods on time, err: %v", err) return } + + runCypressTests(t, fmt.Sprintf("npx cypress run --spec \"cypress/integration/tests/GuiPort.js\" --env port=%d", guiPort)) }) } } @@ -149,6 +150,7 @@ func TestTapAllNamespaces(t *testing.T) { expectedPods := []PodDescriptor{ {Name: "httpbin", Namespace: "mizu-tests"}, + {Name: "httpbin2", Namespace: "mizu-tests"}, {Name: "httpbin", Namespace: "mizu-tests2"}, } @@ -182,25 +184,8 @@ func TestTapAllNamespaces(t *testing.T) { return } - podsUrl := fmt.Sprintf("%v/status/tap", apiServerUrl) - requestResult, requestErr := executeHttpGetRequest(podsUrl) - if requestErr != nil { - t.Errorf("failed to get tap status, err: %v", requestErr) - return - } - - pods, err := getPods(requestResult) - if err != nil { - t.Errorf("failed to get pods, err: %v", err) - return - } - - for _, expectedPod := range expectedPods { - if !isPodDescriptorInPodArray(pods, expectedPod) { - t.Errorf("unexpected result - expected pod not found, pod namespace: %v, pod name: %v", expectedPod.Namespace, expectedPod.Name) - return - } - } + runCypressTests(t, fmt.Sprintf("npx cypress run --spec \"cypress/integration/tests/MultipleNamespaces.js\" --env name1=%v,name2=%v,name3=%v,namespace1=%v,namespace2=%v,namespace3=%v", + expectedPods[0].Name, expectedPods[1].Name, expectedPods[2].Name, expectedPods[0].Namespace, expectedPods[1].Namespace, expectedPods[2].Namespace)) } func TestTapMultipleNamespaces(t *testing.T) { @@ -248,30 +233,8 @@ func TestTapMultipleNamespaces(t *testing.T) { return } - podsUrl := fmt.Sprintf("%v/status/tap", apiServerUrl) - requestResult, requestErr := executeHttpGetRequest(podsUrl) - if requestErr != nil { - t.Errorf("failed to get tap status, err: %v", requestErr) - return - } - - pods, err := getPods(requestResult) - if err != nil { - t.Errorf("failed to get pods, err: %v", err) - return - } - - if len(expectedPods) != len(pods) { - t.Errorf("unexpected result - expected pods length: %v, actual pods length: %v", len(expectedPods), len(pods)) - return - } - - for _, expectedPod := range expectedPods { - if !isPodDescriptorInPodArray(pods, expectedPod) { - t.Errorf("unexpected result - expected pod not found, pod namespace: %v, pod name: %v", expectedPod.Namespace, expectedPod.Name) - return - } - } + runCypressTests(t, fmt.Sprintf("npx cypress run --spec \"cypress/integration/tests/MultipleNamespaces.js\" --env name1=%v,name2=%v,name3=%v,namespace1=%v,namespace2=%v,namespace3=%v", + expectedPods[0].Name, expectedPods[1].Name, expectedPods[2].Name, expectedPods[0].Namespace, expectedPods[1].Namespace, expectedPods[2].Namespace)) } func TestTapRegex(t *testing.T) { @@ -316,30 +279,8 @@ func TestTapRegex(t *testing.T) { return } - podsUrl := fmt.Sprintf("%v/status/tap", apiServerUrl) - requestResult, requestErr := executeHttpGetRequest(podsUrl) - if requestErr != nil { - t.Errorf("failed to get tap status, err: %v", requestErr) - return - } - - pods, err := getPods(requestResult) - if err != nil { - t.Errorf("failed to get pods, err: %v", err) - return - } - - if len(expectedPods) != len(pods) { - t.Errorf("unexpected result - expected pods length: %v, actual pods length: %v", len(expectedPods), len(pods)) - return - } - - for _, expectedPod := range expectedPods { - if !isPodDescriptorInPodArray(pods, expectedPod) { - t.Errorf("unexpected result - expected pod not found, pod namespace: %v, pod name: %v", expectedPod.Namespace, expectedPod.Name) - return - } - } + runCypressTests(t, fmt.Sprintf("npx cypress run --spec \"cypress/integration/tests/Regex.js\" --env name=%v,namespace=%v", + expectedPods[0].Name, expectedPods[0].Namespace)) } func TestTapDryRun(t *testing.T) { @@ -436,59 +377,7 @@ func TestTapRedact(t *testing.T) { } } - redactCheckFunc := func() error { - timestamp := time.Now().UnixNano() / int64(time.Millisecond) - - entries, err := getDBEntries(timestamp, defaultEntriesCount, 1*time.Second) - if err != nil { - return err - } - err = checkEntriesAtLeast(entries, 1) - if err != nil { - return err - } - firstEntry := entries[0] - - entryUrl := fmt.Sprintf("%v/entries/%v", apiServerUrl, firstEntry["id"]) - requestResult, requestErr := executeHttpGetRequest(entryUrl) - if requestErr != nil { - return fmt.Errorf("failed to get entry, err: %v", requestErr) - } - - entry := requestResult.(map[string]interface{})["data"].(map[string]interface{}) - request := entry["request"].(map[string]interface{}) - - headers := request["_headers"].([]interface{}) - for _, headerInterface := range headers { - header := headerInterface.(map[string]interface{}) - if header["name"].(string) != "User-Header" { - continue - } - - userHeader := header["value"].(string) - if userHeader != "[REDACTED]" { - return fmt.Errorf("unexpected result - user agent is not redacted") - } - } - - postData := request["postData"].(map[string]interface{}) - textDataStr := postData["text"].(string) - - var textData map[string]string - if parseErr := json.Unmarshal([]byte(textDataStr), &textData); parseErr != nil { - return fmt.Errorf("failed to parse text data, err: %v", parseErr) - } - - if textData["User"] != "[REDACTED]" { - return fmt.Errorf("unexpected result - user in body is not redacted") - } - - return nil - } - if err := retriesExecute(shortRetriesCount, redactCheckFunc); err != nil { - t.Errorf("%v", err) - return - } + runCypressTests(t, fmt.Sprintf("npx cypress run --spec \"cypress/integration/tests/RedactTests.js\" --env shouldExist=true")) } func TestTapNoRedact(t *testing.T) { @@ -540,59 +429,7 @@ func TestTapNoRedact(t *testing.T) { } } - redactCheckFunc := func() error { - timestamp := time.Now().UnixNano() / int64(time.Millisecond) - - entries, err := getDBEntries(timestamp, defaultEntriesCount, 1*time.Second) - if err != nil { - return err - } - err = checkEntriesAtLeast(entries, 1) - if err != nil { - return err - } - firstEntry := entries[0] - - entryUrl := fmt.Sprintf("%v/entries/%v", apiServerUrl, firstEntry["id"]) - requestResult, requestErr := executeHttpGetRequest(entryUrl) - if requestErr != nil { - return fmt.Errorf("failed to get entry, err: %v", requestErr) - } - - entry := requestResult.(map[string]interface{})["data"].(map[string]interface{}) - request := entry["request"].(map[string]interface{}) - - headers := request["_headers"].([]interface{}) - for _, headerInterface := range headers { - header := headerInterface.(map[string]interface{}) - if header["name"].(string) != "User-Header" { - continue - } - - userHeader := header["value"].(string) - if userHeader == "[REDACTED]" { - return fmt.Errorf("unexpected result - user agent is redacted") - } - } - - postData := request["postData"].(map[string]interface{}) - textDataStr := postData["text"].(string) - - var textData map[string]string - if parseErr := json.Unmarshal([]byte(textDataStr), &textData); parseErr != nil { - return fmt.Errorf("failed to parse text data, err: %v", parseErr) - } - - if textData["User"] == "[REDACTED]" { - return fmt.Errorf("unexpected result - user in body is redacted") - } - - return nil - } - if err := retriesExecute(shortRetriesCount, redactCheckFunc); err != nil { - t.Errorf("%v", err) - return - } + runCypressTests(t, "npx cypress run --spec \"cypress/integration/tests/RedactTests.js\" --env shouldExist=false") } func TestTapRegexMasking(t *testing.T) { @@ -860,11 +697,16 @@ func TestTapDumpLogs(t *testing.T) { logsFileNames = append(logsFileNames, file.Name) } - if !Contains(logsFileNames, "mizu.mizu-api-server.log") { + if !Contains(logsFileNames, "mizu.mizu-api-server.mizu-api-server.log") { t.Errorf("api server logs not found") return } + if !Contains(logsFileNames, "mizu.mizu-api-server.basenine.log") { + t.Errorf("basenine logs not found") + return + } + if !Contains(logsFileNames, "mizu_cli.log") { t.Errorf("cli logs not found") return @@ -880,251 +722,3 @@ func TestTapDumpLogs(t *testing.T) { return } } - -func TestDaemonSeeTraffic(t *testing.T) { - if testing.Short() { - t.Skip("ignored acceptance test") - } - - tests := []int{50} - - for _, entriesCount := range tests { - t.Run(fmt.Sprintf("%d", entriesCount), func(t *testing.T) { - cliPath, cliPathErr := getCliPath() - if cliPathErr != nil { - t.Errorf("failed to get cli path, err: %v", cliPathErr) - return - } - - tapDaemonCmdArgs := getDefaultTapCommandArgsWithDaemonMode() - - tapNamespace := getDefaultTapNamespace() - tapDaemonCmdArgs = append(tapDaemonCmdArgs, tapNamespace...) - - tapCmd := exec.Command(cliPath, tapDaemonCmdArgs...) - - viewCmd := exec.Command(cliPath, getDefaultViewCommandArgs()...) - - t.Cleanup(func() { - daemonCleanup(t, viewCmd) - }) - - t.Logf("running command: %v", tapCmd.String()) - if err := tapCmd.Run(); err != nil { - t.Errorf("error occured while running the tap command, err: %v", err) - return - } - - t.Logf("running command: %v", viewCmd.String()) - if err := viewCmd.Start(); err != nil { - t.Errorf("error occured while running the view command, err: %v", err) - return - } - - apiServerUrl := getApiServerUrl(defaultApiServerPort) - if err := waitTapPodsReady(apiServerUrl); err != nil { - t.Errorf("failed to start tap pods on time, err: %v", err) - return - } - - proxyUrl := getProxyUrl(defaultNamespaceName, defaultServiceName) - for i := 0; i < entriesCount; i++ { - if _, requestErr := executeHttpGetRequest(fmt.Sprintf("%v/get", proxyUrl)); requestErr != nil { - t.Errorf("failed to send proxy request, err: %v", requestErr) - return - } - } - - entriesCheckFunc := func() error { - timestamp := time.Now().UnixNano() / int64(time.Millisecond) - - entries, err := getDBEntries(timestamp, entriesCount, 1*time.Second) - if err != nil { - return err - } - err = checkEntriesAtLeast(entries, 1) - if err != nil { - return err - } - entry := entries[0] - - entryUrl := fmt.Sprintf("%v/entries/%v", apiServerUrl, entry["id"]) - requestResult, requestErr := executeHttpGetRequest(entryUrl) - if requestErr != nil { - return fmt.Errorf("failed to get entry, err: %v", requestErr) - } - - if requestResult == nil { - return fmt.Errorf("unexpected nil entry result") - } - - return nil - } - if err := retriesExecute(shortRetriesCount, entriesCheckFunc); err != nil { - t.Errorf("%v", err) - return - } - }) - } -} - -func TestDaemonMultipleNamespacesSeePods(t *testing.T) { - if testing.Short() { - t.Skip("ignored acceptance test") - } - - expectedPods := []PodDescriptor{ - {Name: "httpbin", Namespace: "mizu-tests"}, - {Name: "httpbin2", Namespace: "mizu-tests"}, - {Name: "httpbin", Namespace: "mizu-tests2"}, - } - - cliPath, cliPathErr := getCliPath() - if cliPathErr != nil { - t.Errorf("failed to get cli path, err: %v", cliPathErr) - return - } - - tapCmdArgs := getDefaultTapCommandArgsWithDaemonMode() - var namespacesCmd []string - for _, expectedPod := range expectedPods { - namespacesCmd = append(namespacesCmd, "-n", expectedPod.Namespace) - } - tapCmdArgs = append(tapCmdArgs, namespacesCmd...) - - tapCmd := exec.Command(cliPath, tapCmdArgs...) - - viewCmd := exec.Command(cliPath, getDefaultViewCommandArgs()...) - - t.Cleanup(func() { - daemonCleanup(t, viewCmd) - }) - - t.Logf("running command: %v", tapCmd.String()) - if err := tapCmd.Run(); err != nil { - t.Errorf("failed to start tap command, err: %v", err) - return - } - - t.Logf("running command: %v", viewCmd.String()) - if err := viewCmd.Start(); err != nil { - t.Errorf("error occured while running the view command, err: %v", err) - return - } - - apiServerUrl := getApiServerUrl(defaultApiServerPort) - if err := waitTapPodsReady(apiServerUrl); err != nil { - t.Errorf("failed to start tap pods on time, err: %v", err) - return - } - - podsUrl := fmt.Sprintf("%v/status/tap", apiServerUrl) - requestResult, requestErr := executeHttpGetRequest(podsUrl) - if requestErr != nil { - t.Errorf("failed to get tap status, err: %v", requestErr) - return - } - - pods, err := getPods(requestResult) - if err != nil { - t.Errorf("failed to get pods, err: %v", err) - return - } - - if len(expectedPods) != len(pods) { - t.Errorf("unexpected result - expected pods length: %v, actual pods length: %v", len(expectedPods), len(pods)) - return - } - - for _, expectedPod := range expectedPods { - if !isPodDescriptorInPodArray(pods, expectedPod) { - t.Errorf("unexpected result - expected pod not found, pod namespace: %v, pod name: %v", expectedPod.Namespace, expectedPod.Name) - return - } - } -} - -func TestDaemonSingleNamespaceSeePods(t *testing.T) { - if testing.Short() { - t.Skip("ignored acceptance test") - } - - expectedPods := []PodDescriptor{ - {Name: "httpbin", Namespace: "mizu-tests"}, - {Name: "httpbin2", Namespace: "mizu-tests"}, - } - unexpectedPods := []PodDescriptor{ - {Name: "httpbin", Namespace: "mizu-tests2"}, - } - - cliPath, cliPathErr := getCliPath() - if cliPathErr != nil { - t.Errorf("failed to get cli path, err: %v", cliPathErr) - return - } - - tapCmdArgs := getDefaultTapCommandArgsWithDaemonMode() - var namespacesCmd []string - for _, expectedPod := range expectedPods { - namespacesCmd = append(namespacesCmd, "-n", expectedPod.Namespace) - } - tapCmdArgs = append(tapCmdArgs, namespacesCmd...) - - tapCmd := exec.Command(cliPath, tapCmdArgs...) - - viewCmd := exec.Command(cliPath, getDefaultViewCommandArgs()...) - - t.Cleanup(func() { - daemonCleanup(t, viewCmd) - }) - - t.Logf("running command: %v", tapCmd.String()) - if err := tapCmd.Run(); err != nil { - t.Errorf("failed to start tap command, err: %v", err) - return - } - - t.Logf("running command: %v", viewCmd.String()) - if err := viewCmd.Start(); err != nil { - t.Errorf("error occured while running the view command, err: %v", err) - return - } - - apiServerUrl := getApiServerUrl(defaultApiServerPort) - if err := waitTapPodsReady(apiServerUrl); err != nil { - t.Errorf("failed to start tap pods on time, err: %v", err) - return - } - - podsUrl := fmt.Sprintf("%v/status/tap", apiServerUrl) - requestResult, requestErr := executeHttpGetRequest(podsUrl) - if requestErr != nil { - t.Errorf("failed to get tap status, err: %v", requestErr) - return - } - - pods, err := getPods(requestResult) - if err != nil { - t.Errorf("failed to get pods, err: %v", err) - return - } - - for _, unexpectedPod := range unexpectedPods { - if isPodDescriptorInPodArray(pods, unexpectedPod) { - t.Errorf("unexpected result - unexpected pod found, pod namespace: %v, pod name: %v", unexpectedPod.Namespace, unexpectedPod.Name) - return - } - } - - if len(expectedPods) != len(pods) { - t.Errorf("unexpected result - expected pods length: %v, actual pods length: %v", len(expectedPods), len(pods)) - return - } - - for _, expectedPod := range expectedPods { - if !isPodDescriptorInPodArray(pods, expectedPod) { - t.Errorf("unexpected result - expected pod not found, pod namespace: %v, pod name: %v", expectedPod.Namespace, expectedPod.Name) - return - } - } -} diff --git a/acceptanceTests/testsUtils.go b/acceptanceTests/testsUtils.go index 715df51d7..2ec7adc48 100644 --- a/acceptanceTests/testsUtils.go +++ b/acceptanceTests/testsUtils.go @@ -92,7 +92,7 @@ func getDefaultCommandArgs() []string { setFlag := "--set" telemetry := "telemetry=false" agentImage := "agent-image=gcr.io/up9-docker-hub/mizu/ci:0.0.0" - imagePullPolicy := "image-pull-policy=Never" + imagePullPolicy := "image-pull-policy=IfNotPresent" headless := "headless=true" return []string{setFlag, telemetry, setFlag, agentImage, setFlag, imagePullPolicy, setFlag, headless} @@ -105,10 +105,6 @@ func getDefaultTapCommandArgs() []string { return append([]string{tapCommand}, defaultCmdArgs...) } -func getDefaultTapCommandArgsWithDaemonMode() []string { - return append(getDefaultTapCommandArgs(), "--daemon") -} - func getDefaultTapCommandArgsWithRegex(regex string) []string { tapCommand := "tap" defaultCmdArgs := getDefaultCommandArgs() @@ -148,6 +144,17 @@ func getDefaultViewCommandArgs() []string { return append([]string{viewCommand}, defaultCmdArgs...) } +func runCypressTests(t *testing.T, cypressRunCmd string) { + cypressCmd := exec.Command("bash", "-c", cypressRunCmd) + t.Logf("running command: %v", cypressCmd.String()) + out, err := cypressCmd.Output() + if err != nil { + t.Errorf("%s", out) + return + } + t.Logf("%s", out) +} + func retriesExecute(retriesCount int, executeFunc func() error) error { var lastError interface{} @@ -176,16 +183,16 @@ func tryExecuteFunc(executeFunc func() error) (err interface{}) { } func waitTapPodsReady(apiServerUrl string) error { - resolvingUrl := fmt.Sprintf("%v/status/tappersCount", apiServerUrl) + resolvingUrl := fmt.Sprintf("%v/status/connectedTappersCount", apiServerUrl) tapPodsReadyFunc := func() error { requestResult, requestErr := executeHttpGetRequest(resolvingUrl) if requestErr != nil { return requestErr } - tappersCount := requestResult.(float64) - if tappersCount == 0 { - return fmt.Errorf("no tappers running") + connectedTappersCount := requestResult.(float64) + if connectedTappersCount == 0 { + return fmt.Errorf("no connected tappers running") } time.Sleep(waitAfterTapPodsReady) return nil @@ -324,16 +331,6 @@ func getLogsPath() (string, error) { return logsPath, nil } -func daemonCleanup(t *testing.T, viewCmd *exec.Cmd) { - if err := runMizuClean(); err != nil { - t.Logf("error running mizu clean: %v", err) - } - - if err := cleanupCommand(viewCmd); err != nil { - t.Logf("failed to cleanup view command, err: %v", err) - } -} - // waitTimeout waits for the waitgroup for the specified max timeout. // Returns true if waiting timed out. func waitTimeout(wg *sync.WaitGroup, timeout time.Duration) bool { diff --git a/agent/go.mod b/agent/go.mod index a4ccbb693..6bb42a3f7 100644 --- a/agent/go.mod +++ b/agent/go.mod @@ -4,6 +4,7 @@ go 1.16 require ( github.com/antelman107/net-wait-go v0.0.0-20210623112055-cf684aebda7b + github.com/chanced/openapi v0.0.6 github.com/djherbis/atime v1.0.0 github.com/getkin/kin-openapi v0.76.0 github.com/gin-contrib/static v0.0.1 @@ -12,11 +13,13 @@ require ( github.com/go-playground/universal-translator v0.17.0 github.com/go-playground/validator/v10 v10.5.0 github.com/google/martian v2.1.0+incompatible + github.com/google/uuid v1.1.2 github.com/gorilla/websocket v1.4.2 github.com/op/go-logging v0.0.0-20160315200505-970db520ece7 github.com/orcaman/concurrent-map v0.0.0-20210106121528-16402b402231 + github.com/ory/kratos-client-go v0.8.2-alpha.1 github.com/patrickmn/go-cache v2.1.0+incompatible - github.com/up9inc/basenine/client/go v0.0.0-20211215185650-10083bb9a1b3 + github.com/up9inc/basenine/client/go v0.0.0-20220110083745-04fbc6c2068d github.com/up9inc/mizu/shared v0.0.0 github.com/up9inc/mizu/tap v0.0.0 github.com/up9inc/mizu/tap/api v0.0.0 diff --git a/agent/go.sum b/agent/go.sum index ed288cfc1..8a910acd8 100644 --- a/agent/go.sum +++ b/agent/go.sum @@ -8,20 +8,30 @@ cloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg cloud.google.com/go v0.50.0/go.mod h1:r9sluTvynVuxRIOHXQEHMFffphuXHOMZMycpNR5e6To= cloud.google.com/go v0.52.0/go.mod h1:pXajvRH/6o3+F9jDHZWQ5PbGhn+o8w9qiu/CffaVdO4= cloud.google.com/go v0.53.0/go.mod h1:fp/UouUEsRkN6ryDKNW/Upv/JBKnv6WDthjR6+vze6M= -cloud.google.com/go v0.54.0 h1:3ithwDMr7/3vpAMXiH+ZQnYbuIsh+OPhUPMFC9enmn0= cloud.google.com/go v0.54.0/go.mod h1:1rq2OEkV3YMf6n/9ZvGWI3GWw0VoqH/1x2nd8Is/bPc= +cloud.google.com/go v0.56.0/go.mod h1:jr7tqZxxKOVYizybht9+26Z/gUq7tiRzu+ACVAMbKVk= +cloud.google.com/go v0.57.0/go.mod h1:oXiQ6Rzq3RAkkY7N6t3TcE6jE+CIBBbA36lwQ1JyzZs= +cloud.google.com/go v0.62.0/go.mod h1:jmCYTdRCQuc1PHIIJ/maLInMho30T/Y0M4hTdTShOYc= +cloud.google.com/go v0.65.0 h1:Dg9iHVQfrhq82rUNu9ZxUDrJLaxFUe/HlCVaLyRruq8= +cloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHObY= cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE= cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc= +cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg= +cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc= +cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ= cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk= cloud.google.com/go/firestore v1.1.0/go.mod h1:ulACoGHTpvq5r8rxGJ4ddJZBZqakUQqClKRT5SZwBmk= cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw= cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA= +cloud.google.com/go/pubsub v1.3.1/go.mod h1:i+ucay31+CNRpDW4Lu78I4xXG+O1r/MAHgjpRVR+TSU= cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw= cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos= cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk= +cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs= +cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= github.com/Azure/go-ansiterm v0.0.0-20170929234023-d6e3b3328b78/go.mod h1:LmzpDX56iTiv29bbRTIsUNlaFfuhWRQBWjQdVyAevI8= github.com/Azure/go-autorest v14.2.0+incompatible h1:V5VMDjClD3GiElqLWO7mz2MxNAK/vTfRHdAubSIPRgs= @@ -72,10 +82,17 @@ github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/chai2010/gettext-go v0.0.0-20160711120539-c6fed771bfd5/go.mod h1:/iP1qXHoty45bqomnu2LM+VVyAEdWN+vtSHGlQgyxbw= +github.com/chanced/cmpjson v0.0.0-20210415035445-da9262c1f20a h1:zG6t+4krPXcCKtLbjFvAh+fKN1d0qfD+RaCj+680OU8= +github.com/chanced/cmpjson v0.0.0-20210415035445-da9262c1f20a/go.mod h1:yhcmlFk1hxuZ+5XZbupzT/cEm/eE4ZvWbmsW1+Q/aZE= +github.com/chanced/dynamic v0.0.0-20210502140838-c010b5fc3e44 h1:4NOJMtvZaOA6cI2gkIuXk/2b5KTOvm/R4zyPy/yLCM4= +github.com/chanced/dynamic v0.0.0-20210502140838-c010b5fc3e44/go.mod h1:XVNfXN5kgZST4PQ0W/oBAHJku2OteCeHxjAbvfd0ARM= +github.com/chanced/openapi v0.0.6 h1:2giGS47+T8/7MN2hfRHSIUPx86Qksk+J/ciIWcAM7hY= +github.com/chanced/openapi v0.0.6/go.mod h1:SxE2VMLPw+T7Vq8nwbVVhDF2PigvRF4n5XyqsVpRJGU= github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= +github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= github.com/coreos/bbolt v1.3.2/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk= github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= github.com/coreos/etcd v3.3.13+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= @@ -101,11 +118,15 @@ github.com/docopt/docopt-go v0.0.0-20180111231733-ee0de3bc6815/go.mod h1:WwZ+bS3 github.com/elazarl/goproxy v0.0.0-20180725130230-947c36da3153/go.mod h1:/Zj4wYkgs4iZTTu3o/KG3Itv/qCCa8VVMlb3i9OVuzc= github.com/emicklei/go-restful v0.0.0-20170410110728-ff4f55a20633/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs= github.com/emicklei/go-restful v2.9.5+incompatible/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs= +github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= +github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/evanphx/json-patch v4.5.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= github.com/evanphx/json-patch v4.9.0+incompatible h1:kLcOMZeuLAJvL2BPWLMIj5oaZQobrkAqrL+WFZwQses= github.com/evanphx/json-patch v4.9.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= +github.com/evanphx/json-patch/v5 v5.6.0 h1:b91NhWfaz02IuVxO9faSllyAtNXHMPkC5J8sJCLunww= +github.com/evanphx/json-patch/v5 v5.6.0/go.mod h1:G79N1coSVB93tBe7j6PhzjmR3/2VvlbKOFpnXhI9Bw4= github.com/exponent-io/jsonpath v0.0.0-20151013193312-d6023ce2651d/go.mod h1:ZZMPRZwes7CROmyNKgQzC3XPs6L/G2EJLHddWejkmf4= github.com/fatih/camelcase v1.0.0/go.mod h1:yN2Sb0lFhZJUdVvtELVWefmrXpuZESvPmqwoZc+/fpc= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= @@ -123,14 +144,11 @@ github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm github.com/gin-contrib/static v0.0.1 h1:JVxuvHPuUfkoul12N7dtQw7KRn/pSMq7Ue1Va9Swm1U= github.com/gin-contrib/static v0.0.1/go.mod h1:CSxeF+wep05e0kCOsqWdAWbSszmc31zTIbD8TvWl7Hs= github.com/gin-gonic/gin v1.6.3/go.mod h1:75u5sXoLsGZoRN5Sgbi1eraJ4GU3++wFwWzhwvtwp4M= -github.com/gin-gonic/gin v1.7.2 h1:Tg03T9yM2xa8j6I3Z3oqLaQRSmKvxPd6g/2HJ6zICFA= -github.com/gin-gonic/gin v1.7.2/go.mod h1:jD2toBW3GZUr5UMcdrwQA10I7RuaFOl/SGeDjXkfUtY= github.com/gin-gonic/gin v1.7.7 h1:3DoBmSbJbZAWqXJC3SLjAPfutPJJRN1U5pALB7EeTTs= github.com/gin-gonic/gin v1.7.7/go.mod h1:axIBovoeJpVj8S3BwE0uPMTeReE4+AfFtqpqaZ1qq1U= github.com/globalsign/mgo v0.0.0-20180905125535-1ca0a4f7cbcb/go.mod h1:xkRDCp4j0OGD1HRkm4kmhM+pmpv3AKq5SU7GMg4oO/Q= github.com/globalsign/mgo v0.0.0-20181015135952-eeefdecb41b8/go.mod h1:xkRDCp4j0OGD1HRkm4kmhM+pmpv3AKq5SU7GMg4oO/Q= github.com/go-errors/errors v1.0.1/go.mod h1:f4zRHt4oKfwPJE5k8C9vpYG+aDHdBFUsgrm6/TyX73Q= -github.com/go-errors/errors v1.4.1/go.mod h1:sIVyrIiJhuEF+Pj9Ebtd6P/rEYROXFi3BopGUQ5a5Og= github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= @@ -215,11 +233,14 @@ github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfb github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y= github.com/golang/mock v1.4.0/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= github.com/golang/mock v1.4.1/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= +github.com/golang/mock v1.4.3/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= +github.com/golang/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71h+4= github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= github.com/golang/protobuf v1.3.4/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= +github.com/golang/protobuf v1.3.5/go.mod h1:6O5/vntMXwX2lRkT1hjjk0nAC1IDOTvTlVgjlRvqsdk= github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= @@ -236,10 +257,14 @@ github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5a github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.4.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.4 h1:L8R9j+yAqZuZjsqh/z+F1NCffTKKLShY6zXTItVIZ8M= github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.6 h1:BKbKCqvP6I+rmFHt06ZmyQtvB8xAkWdhFyr0ZUNZcxQ= +github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/gofuzz v1.1.0 h1:Hsa8mG0dQ46ij8Sl2AYJDUv1oA9/d6Vk+3LG99Oe02g= github.com/google/gofuzz v1.1.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= @@ -247,11 +272,14 @@ github.com/google/gopacket v1.1.19 h1:ves8RnFZPGiFnTS0uPQStjwru6uO6h+nlr9j6fL7kF github.com/google/gopacket v1.1.19/go.mod h1:iJ8V8n6KS+z2U1A8pUwu8bW5SyEMkXJB8Yo/Vo+TKTo= github.com/google/martian v2.1.0+incompatible h1:/CP5g8u/VJHijgedC/Legn3BAbAaWPgecwXBIDzw5no= github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= +github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= github.com/google/pprof v0.0.0-20191218002539-d4f498aebedc/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= github.com/google/pprof v0.0.0-20200212024743-f11f1df84d12/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= github.com/google/pprof v0.0.0-20200229191704-1ebb73c60ed3/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20200430221834-fc25d7d30c6d/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510/go.mod h1:pupxD2MaaD3pAXIBCelhxNneeOaAeabZDe5s4K6zSpQ= github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= @@ -298,6 +326,7 @@ github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1: github.com/imdario/mergo v0.3.5 h1:JboBksRwiiAJWvIYJVo46AfV+IAIKZpfrSzVKj42R4Q= github.com/imdario/mergo v0.3.5/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= +github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= @@ -376,6 +405,8 @@ github.com/op/go-logging v0.0.0-20160315200505-970db520ece7/go.mod h1:HzydrMdWEr github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM= github.com/orcaman/concurrent-map v0.0.0-20210106121528-16402b402231 h1:fa50YL1pzKW+1SsBnJDOHppJN9stOEwS+CRWyUtyYGU= github.com/orcaman/concurrent-map v0.0.0-20210106121528-16402b402231/go.mod h1:Lu3tH6HLW3feq74c2GC+jIMS/K2CFcDWnWD9XkenwhI= +github.com/ory/kratos-client-go v0.8.2-alpha.1 h1:YlKhGOSZjounlB9iY4xSWlqHbyLYkeLzlLk8ZL7/nEM= +github.com/ory/kratos-client-go v0.8.2-alpha.1/go.mod h1:dOQIsar76K07wMPJD/6aMhrWyY+sFGEagLDLso1CpsA= github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= github.com/patrickmn/go-cache v2.1.0+incompatible h1:HRMgzkcYKYpi3C8ajMPV8OFXaaRUnok+kx1WdO15EQc= github.com/patrickmn/go-cache v2.1.0+incompatible/go.mod h1:3Qf8kWWT7OJRJbdiICTKqZju1ZixQ/KpMGzzAfe6+WQ= @@ -412,6 +443,8 @@ github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFR github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= +github.com/santhosh-tekuri/jsonschema/v5 v5.0.0 h1:TToq11gyfNlrMFZiYujSekIsPd9AmsA2Bj/iv+s4JHE= +github.com/santhosh-tekuri/jsonschema/v5 v5.0.0/go.mod h1:FKdcjfQW6rpZSnxxUvEA5H/cDPdvJ/SZJQLWWXWGrZ0= github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo= github.com/sergi/go-diff v1.1.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM= @@ -445,24 +478,37 @@ github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/ github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= +github.com/tidwall/gjson v1.10.2/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= +github.com/tidwall/gjson v1.12.0 h1:61wEp/qfvFnqKH/WCI3M8HuRut+mHT6Mr82QrFmM2SY= +github.com/tidwall/gjson v1.12.0/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= +github.com/tidwall/match v1.1.1 h1:+Ho715JplO36QYgwN9PGYNhgZvoUSc9X2c80KVTi+GA= +github.com/tidwall/match v1.1.1/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM= github.com/tidwall/pretty v1.0.0/go.mod h1:XNkn88O1ChpSDQmQeStsy+sBenx6DDtFZJxhVysOjyk= +github.com/tidwall/pretty v1.2.0 h1:RWIZEg2iJ8/g6fDDYzMpobmaoGh5OLl4AXtGUGPcqCs= +github.com/tidwall/pretty v1.2.0/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU= +github.com/tidwall/sjson v1.2.3 h1:5+deguEhHSEjmuICXZ21uSSsXotWMA0orU783+Z7Cp8= +github.com/tidwall/sjson v1.2.3/go.mod h1:5WdjKx3AQMvCJ4RG6/2UYT7dLrGvJUV1x4jdTAyGvZs= github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGrc= github.com/ugorji/go v1.1.7 h1:/68gy2h+1mWMrwZFeD1kQialdSzAb432dtpeJ42ovdo= github.com/ugorji/go v1.1.7/go.mod h1:kZn38zHttfInRq0xu/PH0az30d+z6vm202qpg1oXVMw= github.com/ugorji/go/codec v1.1.7 h1:2SvQaVZ1ouYrrKKwoSk2pzd4A9evlKJb9oTL+OaLUSs= github.com/ugorji/go/codec v1.1.7/go.mod h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLYF3GoBXY= -github.com/up9inc/basenine/client/go v0.0.0-20211215185650-10083bb9a1b3 h1:FeDCVOBFVpZA5/O5hfPdGTn0rdR2jTEYo3iB2htELI4= -github.com/up9inc/basenine/client/go v0.0.0-20211215185650-10083bb9a1b3/go.mod h1:SvJGPoa/6erhUQV7kvHBwM/0x5LyO6XaG2lUaCaKiUI= +github.com/up9inc/basenine/client/go v0.0.0-20220110083745-04fbc6c2068d h1:WTz53dcfqCIWZpZLQoHbIcNc21s0ZHEZH7EqMPp99qQ= +github.com/up9inc/basenine/client/go v0.0.0-20220110083745-04fbc6c2068d/go.mod h1:SvJGPoa/6erhUQV7kvHBwM/0x5LyO6XaG2lUaCaKiUI= github.com/vektah/gqlparser v1.1.2/go.mod h1:1ycwN7Ij5njmMkPPAOaRFY4rET2Enx7IkVv3vaXspKw= github.com/vishvananda/netns v0.0.0-20210104183010-2eb08e3e575f h1:p4VB7kIXpOQvVn1ZaTIVp+3vuYAXFe3OJEvjbUYJLaA= github.com/vishvananda/netns v0.0.0-20210104183010-2eb08e3e575f/go.mod h1:DD4vA1DwXk04H54A1oHXtwZmA0grkVMdPxx/VGLCah0= +github.com/wI2L/jsondiff v0.1.1 h1:r2TkoEet7E4JMO5+s1RCY2R0LrNPNHY6hbDeow2hRHw= +github.com/wI2L/jsondiff v0.1.1/go.mod h1:bAbJSAJXZtfOCZ5y3v7Mfb6UQa3DGdGFjQj1cNv8EcM= github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= github.com/xlab/treeprint v0.0.0-20181112141820-a009c3971eca/go.mod h1:ce1O1j6UtZfjr22oyGxGLbauSBp2YVXpARAosm7dHBg= github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= github.com/yalp/jsonpath v0.0.0-20180802001716-5cc68e5049a0 h1:6fRhSjgLCkTD3JnJxvaJ4Sj+TYblw757bqYgZaOq5ZY= github.com/yalp/jsonpath v0.0.0-20180802001716-5cc68e5049a0/go.mod h1:/LWChgwKmvncFJFHJ7Gvn9wZArjbV5/FppcK2fKk/tI= +github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= go.mongodb.org/mongo-driver v1.0.3/go.mod h1:u7ryQJ+DOzQmeO7zB6MHyr8jkEQvC8vH7qLUO4lqsUM= @@ -472,6 +518,7 @@ go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= +go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.starlark.net v0.0.0-20200306205701-8dd3e2ee1dd5/go.mod h1:nmDLcffg48OtT/PSW0Hg7FvpRQsQh5OSqIylirxKC7o= go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= @@ -539,6 +586,7 @@ golang.org/x/net v0.0.0-20190522155817-f3200d17e092/go.mod h1:HSz+uSET+XFnRR8LxR golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190827160401-ba9fcec4b297/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= @@ -548,6 +596,13 @@ golang.org/x/net v0.0.0-20200222125558-5a598a2470a0/go.mod h1:z5CRVTTTmAJ677TzLL golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200501053045-e0ff5e5a1de5/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200506145744-7e3656a0809f/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200513185701-a91f0712d120/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20210224082022-3d97a244fca7 h1:OgUuv8lsRpBibGNbSizVwKWlysjaNzmC9gYMhPVfqFM= @@ -556,14 +611,17 @@ golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAG golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d h1:TzXSXBo42m9gQenoE3b9BGiEpg5IG2JkU5FkPIawgtw= golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20210323180902-22b0adad7558 h1:D7nTwh4J0i+5mW4Zjzn5omvlr6YBcWywE6KOcatyNxY= +golang.org/x/oauth2 v0.0.0-20210323180902-22b0adad7558/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -599,7 +657,13 @@ golang.org/x/sys v0.0.0-20200217220822-9197077df867/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200331124033-c3d80250170d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200501052902-10377860bb8e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200511232937-7e40ca221e25/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200615200032-f1bc736245b1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200831180312-196b9ba8737a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -659,9 +723,19 @@ golang.org/x/tools v0.0.0-20200204074204-1cc6d1ef6c74/go.mod h1:TB2adYChydJhpapK golang.org/x/tools v0.0.0-20200207183749-b753a1ba74fa/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200212150539-ea181f53ac56/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200224181240-023911ca70b2/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200227222343-706bc42d1f0d/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200304193943-95d2e580d8eb/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= +golang.org/x/tools v0.0.0-20200312045724-11d5b4c81c7d/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= +golang.org/x/tools v0.0.0-20200331025713-a30bf2db82d4/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= +golang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200505023115-26f46d2f7ef8/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200512131952-2bc93b1c0c88/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200515010526-7d3b6ebf133d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= +golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= +golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -678,13 +752,20 @@ google.golang.org/api v0.14.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsb google.golang.org/api v0.15.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= google.golang.org/api v0.17.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= google.golang.org/api v0.18.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.19.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= google.golang.org/api v0.20.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.22.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.24.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= +google.golang.org/api v0.28.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= +google.golang.org/api v0.29.0/go.mod h1:Lcubydp8VUV7KeIHD9z2Bys/sm/vGKnG1UHuDBSrHWM= +google.golang.org/api v0.30.0/go.mod h1:QGmEvQ87FHZNiUVJkT14jQNYJ4ZJjdRF23ZXz5138Fc= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0= -google.golang.org/appengine v1.6.5 h1:tycE03LOZYQNhDpS27tcQdAzLCVMaj7QT2SXxebnpCM= google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= +google.golang.org/appengine v1.6.6 h1:lMO5rYAqUxkmaj76jAkRUvt5JZgFymx/+Q5Mzfivuhc= +google.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= @@ -702,16 +783,31 @@ google.golang.org/genproto v0.0.0-20200122232147-0452cf42e150/go.mod h1:n3cpQtvx google.golang.org/genproto v0.0.0-20200204135345-fa8e72b47b90/go.mod h1:GmwEX6Z4W5gMy59cAlVYjN9JhxgbQH6Gn+gFDQe2lzA= google.golang.org/genproto v0.0.0-20200212174721-66ed5ce911ce/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200224152610-e50cd9704f63/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200228133532-8c2c7df3a383/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200305110556-506484158171/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200312145019-da6875a35672/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200331122359-1ee6d9798940/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200430143042-b979b6f78d84/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200511104702-f5ebc3bea380/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200515170657-fc4c6c6a6587/go.mod h1:YsZOwe1myG/8QRHRsmBRE1LrgQY60beZKjly0O1fX9U= google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= +google.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA= +google.golang.org/genproto v0.0.0-20200729003335-053ba62fc06f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= google.golang.org/grpc v1.21.0/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= +google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= google.golang.org/grpc v1.27.1/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/grpc v1.28.0/go.mod h1:rpkK4SK4GF4Ach/+MFLZUBavHOvF2JJB5uozKKal+60= +google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= +google.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= +google.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= @@ -720,6 +816,7 @@ google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzi google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4= google.golang.org/protobuf v1.25.0 h1:Ejskq+SyPohKW+1uil0JJMtmHCgJPJ/qWTxr8qp+R4c= google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= @@ -756,6 +853,7 @@ honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWh honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= +honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= k8s.io/api v0.21.2 h1:vz7DqmRsXTCSa6pNxXwQ1IYeAZgdIsua+DZU+o+SX3Y= k8s.io/api v0.21.2/go.mod h1:Lv6UGJZ1rlMI1qusN8ruAp9PUBFyBwpEHAdG24vIsiU= k8s.io/apimachinery v0.21.2 h1:vezUc/BHqWlQDnZ+XkrpXSmnANSLbpnlpwo0Lhk0gpc= @@ -789,5 +887,6 @@ sigs.k8s.io/kustomize/kyaml v0.10.17/go.mod h1:mlQFagmkm1P+W4lZJbJ/yaxMd8PqMRSC4 sigs.k8s.io/structured-merge-diff/v4 v4.0.2/go.mod h1:bJZC9H9iH24zzfZ/41RGcq60oK1F7G282QMXDPYydCw= sigs.k8s.io/structured-merge-diff/v4 v4.1.0 h1:C4r9BgJ98vrKnnVCjwCSXcWjWe0NKcUQkmzDXZXGwH8= sigs.k8s.io/structured-merge-diff/v4 v4.1.0/go.mod h1:bJZC9H9iH24zzfZ/41RGcq60oK1F7G282QMXDPYydCw= -sigs.k8s.io/yaml v1.2.0 h1:kr/MCeFWJWTwyaHoR9c8EjH9OumOmoF9YGiZd7lFm/Q= sigs.k8s.io/yaml v1.2.0/go.mod h1:yfXDCHCao9+ENCvLSE62v9VSji2MKu5jeNfTrofGhJc= +sigs.k8s.io/yaml v1.3.0 h1:a2VclLzOGrwOHDiV8EfBGhvjHvP46CtW5j6POvhYGGo= +sigs.k8s.io/yaml v1.3.0/go.mod h1:GeOyir5tyXNByN85N/dRIT9es5UQNerPYEKK56eTBm8= diff --git a/agent/kratos/Dockerfile b/agent/kratos/Dockerfile new file mode 100644 index 000000000..31dbf628d --- /dev/null +++ b/agent/kratos/Dockerfile @@ -0,0 +1,14 @@ +FROM gcr.io/up9-docker-hub/mizu-kratos-base/simple-password-policy:latest + +USER root + +RUN apk add sqlite + +RUN mkdir -p /etc/config/kratos + +COPY ./kratos.yml /etc/config/kratos/kratos.yml +COPY ./identity.schema.json /etc/config/kratos/identity.schema.json +COPY ./start.sh /opt/start.sh +RUN chmod +x /opt/start.sh + +ENTRYPOINT ["/opt/start.sh"] diff --git a/agent/kratos/build-push-featurebranch.sh b/agent/kratos/build-push-featurebranch.sh new file mode 100755 index 000000000..069114c23 --- /dev/null +++ b/agent/kratos/build-push-featurebranch.sh @@ -0,0 +1,28 @@ +#!/bin/bash +set -e + +GCP_PROJECT=up9-docker-hub +REPOSITORY=gcr.io/$GCP_PROJECT +SERVER_NAME=mizu-kratos +GIT_BRANCH=$(git branch | grep \* | cut -d ' ' -f2 | tr '[:upper:]' '[:lower:]') + +DOCKER_REPO=$REPOSITORY/$SERVER_NAME/$GIT_BRANCH +SEM_VER=${SEM_VER=0.0.0} + +DOCKER_TAGGED_BUILDS=("$DOCKER_REPO:latest" "$DOCKER_REPO:$SEM_VER") + +if [ "$GIT_BRANCH" = 'develop' -o "$GIT_BRANCH" = 'master' -o "$GIT_BRANCH" = 'main' ] +then + echo "Pushing to $GIT_BRANCH is allowed only via CI" + exit 1 +fi + +echo "building ${DOCKER_TAGGED_BUILDS[@]}" +DOCKER_TAGS_ARGS=$(echo ${DOCKER_TAGGED_BUILDS[@]/#/-t }) # "-t FIRST_TAG -t SECOND_TAG ..." +docker build $DOCKER_TAGS_ARGS --build-arg SEM_VER=${SEM_VER} --build-arg BUILD_TIMESTAMP=${BUILD_TIMESTAMP} --build-arg GIT_BRANCH=${GIT_BRANCH} --build-arg COMMIT_HASH=${COMMIT_HASH} . + +for DOCKER_TAG in "${DOCKER_TAGGED_BUILDS[@]}" +do + echo pushing "$DOCKER_TAG" + docker push "$DOCKER_TAG" +done diff --git a/agent/kratos/identity.schema.json b/agent/kratos/identity.schema.json new file mode 100644 index 000000000..318322299 --- /dev/null +++ b/agent/kratos/identity.schema.json @@ -0,0 +1,43 @@ +{ + "$id": "https://schemas.ory.sh/presets/kratos/quickstart/email-password/identity.schema.json", + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Person", + "type": "object", + "properties": { + "traits": { + "type": "object", + "properties": { + "username": { + "type": "string", + "format": "username", + "title": "Username", + "minLength": 3, + "ory.sh/kratos": { + "credentials": { + "password": { + "identifier": true + } + } + } + }, + "name": { + "type": "object", + "properties": { + "first": { + "title": "First Name", + "type": "string" + }, + "last": { + "title": "Last Name", + "type": "string" + } + } + } + }, + "required": [ + "username" + ], + "additionalProperties": false + } + } +} diff --git a/agent/kratos/kratos.yml b/agent/kratos/kratos.yml new file mode 100755 index 000000000..a2362c24a --- /dev/null +++ b/agent/kratos/kratos.yml @@ -0,0 +1,84 @@ +version: v0.8.2-alpha.1 + +dsn: sqlite:///app/data/kratos.sqlite?_fk=true + +serve: + public: + base_url: http://127.0.0.1:4433/ + cors: + enabled: true + admin: + base_url: http://kratos:4434/ + +selfservice: + default_browser_return_url: http://127.0.0.1:4455/ + whitelisted_return_urls: + - http://127.0.0.1:4455 + + methods: + password: + enabled: true + + flows: + error: + ui_url: http://127.0.0.1:4455/error + + settings: + ui_url: http://127.0.0.1:4455/settings + privileged_session_max_age: 15m + + recovery: + enabled: true + ui_url: http://127.0.0.1:4455/recovery + + verification: + enabled: false + ui_url: http://127.0.0.1:4455/verification + after: + default_browser_return_url: http://127.0.0.1:4455/ + + logout: + after: + default_browser_return_url: http://127.0.0.1:4455/login + + login: + ui_url: http://127.0.0.1:4455/login + lifespan: 10m + + registration: + lifespan: 10m + ui_url: http://127.0.0.1:4455/registration + after: + password: + hooks: + - + hook: session + +log: + level: info + format: text + leak_sensitive_values: true + +secrets: + cookie: + - PLEASE-CHANGE-ME-I-AM-VERY-INSECURE + cipher: + - 32-LONG-SECRET-NOT-SECURE-AT-ALL + +ciphers: + algorithm: xchacha20-poly1305 + +hashers: + argon2: + parallelism: 1 + memory: 128MB + iterations: 2 + salt_length: 16 + key_length: 16 + +identity: + default_schema_url: file:///etc/config/kratos/identity.schema.json + +courier: + smtp: + connection_uri: smtps://test:test@mailslurper:1025/?skip_ssl_verify=true diff --git a/agent/kratos/start.sh b/agent/kratos/start.sh new file mode 100755 index 000000000..d81af188e --- /dev/null +++ b/agent/kratos/start.sh @@ -0,0 +1,4 @@ +#!/bin/sh + +kratos migrate sql sqlite:///app/data/kratos.sqlite?_fk=true --yes # this initializes the db +kratos serve -c /etc/config/kratos/kratos.yml --watch-courier # start kratos diff --git a/agent/main.go b/agent/main.go index f90dc0f96..33e7eaa27 100644 --- a/agent/main.go +++ b/agent/main.go @@ -1,7 +1,6 @@ package main import ( - "context" "encoding/json" "errors" "flag" @@ -10,23 +9,24 @@ import ( "mizuserver/pkg/api" "mizuserver/pkg/config" "mizuserver/pkg/controllers" + "mizuserver/pkg/middlewares" "mizuserver/pkg/models" - "mizuserver/pkg/providers" + "mizuserver/pkg/oas" "mizuserver/pkg/routes" "mizuserver/pkg/up9" "mizuserver/pkg/utils" "net/http" "os" - "os/exec" "os/signal" "path" "path/filepath" "plugin" "sort" + "strconv" + "strings" "syscall" "time" - "github.com/up9inc/mizu/shared/kubernetes" v1 "k8s.io/api/core/v1" "github.com/antelman107/net-wait-go/wait" @@ -55,9 +55,10 @@ var extensionsMap map[string]*tapApi.Extension // global var startTime int64 const ( - socketConnectionRetries = 10 + socketConnectionRetries = 30 socketConnectionRetryDelay = time.Second * 2 socketHandshakeTimeout = time.Second * 2 + uiIndexPath = "./site/index.html" ) func main() { @@ -114,20 +115,20 @@ func main() { go pipeTapChannelToSocket(socketConnection, filteredOutputItemsChannel) } else if *apiServerMode { - startBasenineServer(shared.BasenineHost, shared.BaseninePort) + configureBasenineServer(shared.BasenineHost, shared.BaseninePort) startTime = time.Now().UnixNano() / int64(time.Millisecond) api.StartResolving(*namespace) outputItemsChannel := make(chan *tapApi.OutputChannelItem) filteredOutputItemsChannel := make(chan *tapApi.OutputChannelItem) - + enableExpFeatureIfNeeded() go filterItems(outputItemsChannel, filteredOutputItemsChannel) go api.StartReadingEntries(filteredOutputItemsChannel, nil, extensionsMap) syncEntriesConfig := getSyncEntriesConfig() if syncEntriesConfig != nil { if err := up9.SyncEntries(syncEntriesConfig); err != nil { - panic(fmt.Sprintf("Error syncing entries, err: %v", err)) + logger.Log.Error("Error syncing entries, err: %v", err) } } @@ -148,16 +149,13 @@ func main() { logger.Log.Info("Exiting") } -func startBasenineServer(host string, port string) { - cmd := exec.Command("basenine", "-addr", host, "-port", port, "-persistent") - cmd.Dir = config.Config.AgentDatabasePath - cmd.Stdout = os.Stdout - cmd.Stderr = os.Stderr - err := cmd.Start() - if err != nil { - logger.Log.Panicf("Failed starting Basenine: %v", err) +func enableExpFeatureIfNeeded() { + if config.Config.OAS { + oas.GetOasGeneratorInstance().Start() } +} +func configureBasenineServer(host string, port string) { if !wait.New( wait.WithProto("tcp"), wait.WithWait(200*time.Millisecond), @@ -165,25 +163,16 @@ func startBasenineServer(host string, port string) { wait.WithDeadline(5*time.Second), wait.WithDebug(true), ).Do([]string{fmt.Sprintf("%s:%s", host, port)}) { - logger.Log.Panicf("Basenine is not available: %v", err) + logger.Log.Panicf("Basenine is not available!") } - // Make a channel to gracefully exit Basenine. - channel := make(chan os.Signal) - signal.Notify(channel, os.Interrupt, syscall.SIGTERM) - - // Handle the channel. - go func() { - <-channel - cmd.Process.Signal(syscall.SIGTERM) - }() - // Limit the database size to default 200MB - err = basenine.Limit(host, port, config.Config.MaxDBSizeBytes) + err := basenine.Limit(host, port, config.Config.MaxDBSizeBytes) if err != nil { logger.Log.Panicf("Error while limiting database size: %v", err) } + // Define the macros for _, extension := range extensions { macros := extension.Dissector.Macros() for macro, expanded := range macros { @@ -250,30 +239,31 @@ func hostApi(socketHarOutputChannel chan<- *tapApi.OutputChannelItem) { } app.Use(DisableRootStaticCache()) + + if err := setUIFlags(); err != nil { + logger.Log.Errorf("Error setting ui mode, err: %v", err) + } app.Use(static.ServeRoot("/", "./site")) - app.Use(CORSMiddleware()) // This has to be called after the static middleware, does not work if its called before + + app.Use(middlewares.CORSMiddleware()) // This has to be called after the static middleware, does not work if its called before api.WebSocketRoutes(app, &eventHandlers, startTime) + + if config.Config.StandaloneMode { + routes.ConfigRoutes(app) + routes.UserRoutes(app) + routes.InstallRoutes(app) + } + + if config.Config.OAS { + routes.OASRoutes(app) + } + routes.QueryRoutes(app) routes.EntriesRoutes(app) routes.MetadataRoutes(app) routes.StatusRoutes(app) routes.NotFoundRoute(app) - - if config.Config.DaemonMode { - ctx, cancel := context.WithCancel(context.Background()) - defer cancel() - - kubernetesProvider, err := kubernetes.NewProviderInCluster() - if err != nil { - logger.Log.Fatalf("error creating k8s provider: %+v", err) - } - - if _, err := startMizuTapperSyncer(ctx, kubernetesProvider); err != nil { - logger.Log.Fatalf("error initializing tapper syncer: %+v", err) - } - } - utils.StartServer(app) } @@ -288,20 +278,21 @@ func DisableRootStaticCache() gin.HandlerFunc { } } -func CORSMiddleware() gin.HandlerFunc { - return func(c *gin.Context) { - c.Writer.Header().Set("Access-Control-Allow-Origin", "*") - c.Writer.Header().Set("Access-Control-Allow-Credentials", "true") - c.Writer.Header().Set("Access-Control-Allow-Headers", "Content-Type, Content-Length, Accept-Encoding, X-CSRF-Token, Authorization, accept, origin, Cache-Control, X-Requested-With") - c.Writer.Header().Set("Access-Control-Allow-Methods", "POST, OPTIONS, GET, PUT") - - if c.Request.Method == "OPTIONS" { - c.AbortWithStatus(204) - return - } - - c.Next() +func setUIFlags() error { + read, err := ioutil.ReadFile(uiIndexPath) + if err != nil { + return err } + + replacedContent := strings.Replace(string(read), "__IS_STANDALONE__", strconv.FormatBool(config.Config.StandaloneMode), 1) + replacedContent = strings.Replace(replacedContent, "__IS_OAS_ENABLED__", strconv.FormatBool(config.Config.OAS), 1) + + err = ioutil.WriteFile(uiIndexPath, []byte(replacedContent), 0) + if err != nil { + return err + } + + return nil } func parseEnvVar(env string) map[string][]v1.Pod { @@ -425,72 +416,38 @@ func dialSocketWithRetry(socketAddress string, retryAmount int, retryDelay time. time.Sleep(retryDelay) } } else { + go handleIncomingMessageAsTapper(socketConnection) return socketConnection, nil } } return nil, lastErr } -func startMizuTapperSyncer(ctx context.Context, provider *kubernetes.Provider) (*kubernetes.MizuTapperSyncer, error) { - tapperSyncer, err := kubernetes.CreateAndStartMizuTapperSyncer(ctx, provider, kubernetes.TapperSyncerConfig{ - TargetNamespaces: config.Config.TargetNamespaces, - PodFilterRegex: config.Config.TapTargetRegex.Regexp, - MizuResourcesNamespace: config.Config.MizuResourcesNamespace, - AgentImage: config.Config.AgentImage, - TapperResources: config.Config.TapperResources, - ImagePullPolicy: v1.PullPolicy(config.Config.PullPolicy), - LogLevel: config.Config.LogLevel, - IgnoredUserAgents: config.Config.IgnoredUserAgents, - MizuApiFilteringOptions: config.Config.MizuApiFilteringOptions, - MizuServiceAccountExists: true, //assume service account exists since daemon mode will not function without it anyway - Istio: config.Config.Istio, - }, time.Now()) - - if err != nil { - return nil, err - } - - // handle tapperSyncer events (pod changes and errors) - go func() { - for { - select { - case syncerErr, ok := <-tapperSyncer.ErrorOut: - if !ok { - logger.Log.Debug("mizuTapperSyncer err channel closed, ending listener loop") - return - } - logger.Log.Fatalf("fatal tap syncer error: %v", syncerErr) - case tapPodChangeEvent, ok := <-tapperSyncer.TapPodChangesOut: - if !ok { - logger.Log.Debug("mizuTapperSyncer pod changes channel closed, ending listener loop") - return - } - providers.TapStatus = shared.TapStatus{Pods: kubernetes.GetPodInfosForPods(tapperSyncer.CurrentlyTappedPods)} - - tappedPodsStatus := utils.GetTappedPodsStatus() - - serializedTapStatus, err := json.Marshal(shared.CreateWebSocketStatusMessage(tappedPodsStatus)) - if err != nil { - logger.Log.Fatalf("error serializing tap status: %v", err) - } - api.BroadcastToBrowserClients(serializedTapStatus) - providers.ExpectedTapperAmount = tapPodChangeEvent.ExpectedTapperAmount - case tapperStatus, ok := <-tapperSyncer.TapperStatusChangedOut: - if !ok { - logger.Log.Debug("mizuTapperSyncer tapper status changed channel closed, ending listener loop") - return - } - if providers.TappersStatus == nil { - providers.TappersStatus = make(map[string]shared.TapperStatus) - } - providers.TappersStatus[tapperStatus.NodeName] = tapperStatus - - case <-ctx.Done(): - logger.Log.Debug("mizuTapperSyncer event listener loop exiting due to context done") +func handleIncomingMessageAsTapper(socketConnection *websocket.Conn) { + for { + if _, message, err := socketConnection.ReadMessage(); err != nil { + logger.Log.Errorf("error reading message from socket connection, err: %s, (%v,%+v)", err, err, err) + if errors.Is(err, syscall.EPIPE) { + // socket has disconnected, we can safely stop this goroutine return } + } else { + var socketMessageBase shared.WebSocketMessageMetadata + if err := json.Unmarshal(message, &socketMessageBase); err != nil { + logger.Log.Errorf("Could not unmarshal websocket message %v", err) + } else { + switch socketMessageBase.MessageType { + case shared.WebSocketMessageTypeTapConfig: + var tapConfigMessage *shared.WebSocketTapConfigMessage + if err := json.Unmarshal(message, &tapConfigMessage); err != nil { + logger.Log.Errorf("received unknown message from socket connection: %s, err: %s, (%v,%+v)", string(message), err, err, err) + } else { + tap.UpdateTapTargets(tapConfigMessage.TapTargets) + } + default: + logger.Log.Warningf("Received socket message of type %s for which no handlers are defined", socketMessageBase.MessageType) + } + } } - }() - - return tapperSyncer, nil + } } diff --git a/agent/pkg/api/main.go b/agent/pkg/api/main.go index 42f86817a..12e972390 100644 --- a/agent/pkg/api/main.go +++ b/agent/pkg/api/main.go @@ -19,6 +19,7 @@ import ( tapApi "github.com/up9inc/mizu/tap/api" "mizuserver/pkg/models" + "mizuserver/pkg/oas" "mizuserver/pkg/resolver" "mizuserver/pkg/utils" @@ -119,15 +120,12 @@ func startReadingChannel(outputItems <-chan *tapApi.OutputChannelItem, extension extension := extensionsMap[item.Protocol.Name] resolvedSource, resolvedDestionation := resolveIP(item.ConnectionInfo) mizuEntry := extension.Dissector.Analyze(item, resolvedSource, resolvedDestionation) - baseEntry := extension.Dissector.Summarize(mizuEntry) - mizuEntry.Base = baseEntry if extension.Protocol.Name == "http" { if !disableOASValidation { var httpPair tapApi.HTTPRequestResponsePair json.Unmarshal([]byte(mizuEntry.HTTPPair), &httpPair) contract := handleOAS(ctx, doc, router, httpPair.Request.Payload.RawRequest, httpPair.Response.Payload.RawResponse, contractContent) - baseEntry.ContractStatus = contract.Status mizuEntry.ContractStatus = contract.Status mizuEntry.ContractRequestReason = contract.RequestReason mizuEntry.ContractResponseReason = contract.ResponseReason @@ -137,8 +135,10 @@ func startReadingChannel(outputItems <-chan *tapApi.OutputChannelItem, extension harEntry, err := utils.NewEntry(mizuEntry.Request, mizuEntry.Response, mizuEntry.StartTime, mizuEntry.ElapsedTime) if err == nil { rules, _, _ := models.RunValidationRulesState(*harEntry, mizuEntry.Destination.Name) - baseEntry.Rules = rules + mizuEntry.Rules = rules } + + oas.GetOasGeneratorInstance().PushEntry(harEntry) } data, err := json.Marshal(mizuEntry) diff --git a/agent/pkg/api/socket_routes.go b/agent/pkg/api/socket_routes.go index a96bb11ff..3118e8696 100644 --- a/agent/pkg/api/socket_routes.go +++ b/agent/pkg/api/socket_routes.go @@ -4,6 +4,7 @@ import ( "encoding/json" "errors" "fmt" + "mizuserver/pkg/middlewares" "mizuserver/pkg/models" "net/http" "sync" @@ -15,6 +16,7 @@ import ( "github.com/up9inc/mizu/shared" "github.com/up9inc/mizu/shared/debounce" "github.com/up9inc/mizu/shared/logger" + tapApi "github.com/up9inc/mizu/tap/api" ) type EventHandlers interface { @@ -47,8 +49,9 @@ func init() { func WebSocketRoutes(app *gin.Engine, eventHandlers EventHandlers, startTime int64) { app.GET("/ws", func(c *gin.Context) { websocketHandler(c.Writer, c.Request, eventHandlers, false, startTime) - }) - app.GET("/wsTapper", func(c *gin.Context) { + }, middlewares.RequiresAuth()) + + app.GET("/wsTapper", func(c *gin.Context) { // TODO: add m2m authentication to this route websocketHandler(c.Writer, c.Request, eventHandlers, true, startTime) }) } @@ -83,10 +86,10 @@ func websocketHandler(w http.ResponseWriter, r *http.Request, eventHandlers Even meta := make(chan []byte) defer func() { + socketCleanup(socketId, connectedWebsockets[socketId]) data <- []byte(basenine.CloseChannel) meta <- []byte(basenine.CloseChannel) connection.Close() - socketCleanup(socketId, connectedWebsockets[socketId]) }() eventHandlers.WebSocketConnect(socketId, isTapper) @@ -97,7 +100,12 @@ func websocketHandler(w http.ResponseWriter, r *http.Request, eventHandlers Even for { _, msg, err := ws.ReadMessage() if err != nil { - logger.Log.Errorf("Error reading message, socket id: %d, error: %v", socketId, err) + if _, ok := err.(*websocket.CloseError); ok { + logger.Log.Debugf("Received websocket close message, socket id: %d", socketId) + } else { + logger.Log.Errorf("Error reading message, socket id: %d, error: %v", socketId, err) + } + break } @@ -124,18 +132,10 @@ func websocketHandler(w http.ResponseWriter, r *http.Request, eventHandlers Even return } - var dataMap map[string]interface{} - err = json.Unmarshal(bytes, &dataMap) + var entry *tapApi.Entry + err = json.Unmarshal(bytes, &entry) - var base map[string]interface{} - switch dataMap["base"].(type) { - case map[string]interface{}: - base = dataMap["base"].(map[string]interface{}) - base["id"] = uint(dataMap["id"].(float64)) - default: - logger.Log.Debugf("Base field has an unrecognized type: %+v", dataMap) - continue - } + base := tapApi.Summarize(entry) baseEntryBytes, _ := models.CreateBaseEntryWebSocketMessage(base) SendToSocket(socketId, baseEntryBytes) diff --git a/agent/pkg/api/socket_server_handlers.go b/agent/pkg/api/socket_server_handlers.go index a02aaa82b..b40f66ecd 100644 --- a/agent/pkg/api/socket_server_handlers.go +++ b/agent/pkg/api/socket_server_handlers.go @@ -5,6 +5,7 @@ import ( "fmt" "mizuserver/pkg/models" "mizuserver/pkg/providers" + "mizuserver/pkg/providers/tappers" "mizuserver/pkg/up9" "sync" @@ -29,7 +30,7 @@ func init() { func (h *RoutesEventHandlers) WebSocketConnect(socketId int, isTapper bool) { if isTapper { logger.Log.Infof("Websocket event - Tapper connected, socket ID: %d", socketId) - providers.TapperAdded() + tappers.Connected() } else { logger.Log.Infof("Websocket event - Browser socket connected, socket ID: %d", socketId) socketListLock.Lock() @@ -41,7 +42,7 @@ func (h *RoutesEventHandlers) WebSocketConnect(socketId int, isTapper bool) { func (h *RoutesEventHandlers) WebSocketDisconnect(socketId int, isTapper bool) { if isTapper { logger.Log.Infof("Websocket event - Tapper disconnected, socket ID: %d", socketId) - providers.TapperRemoved() + tappers.Disconnected() } else { logger.Log.Infof("Websocket event - Browser socket disconnected, socket ID: %d", socketId) socketListLock.Lock() diff --git a/agent/pkg/config/config.go b/agent/pkg/config/config.go index ac002e0c0..6a38e61e9 100644 --- a/agent/pkg/config/config.go +++ b/agent/pkg/config/config.go @@ -4,7 +4,6 @@ import ( "encoding/json" "fmt" "github.com/up9inc/mizu/shared" - "github.com/up9inc/mizu/tap/api" "io/ioutil" "os" ) @@ -12,7 +11,6 @@ import ( // these values are used when the config.json file is not present const ( defaultMaxDatabaseSizeBytes int64 = 200 * 1000 * 1000 - defaultRegexTarget string = ".*" DefaultDatabasePath string = "./entries" ) @@ -48,14 +46,8 @@ func applyDefaultConfig() error { } func getDefaultConfig() (*shared.MizuAgentConfig, error) { - regex, err := api.CompileRegexToSerializableRegexp(defaultRegexTarget) - if err != nil { - return nil, err - } return &shared.MizuAgentConfig{ - TapTargetRegex: *regex, MaxDBSizeBytes: defaultMaxDatabaseSizeBytes, AgentDatabasePath: DefaultDatabasePath, - DaemonMode: false, }, nil } diff --git a/agent/pkg/controllers/config_controller.go b/agent/pkg/controllers/config_controller.go new file mode 100644 index 000000000..44927581f --- /dev/null +++ b/agent/pkg/controllers/config_controller.go @@ -0,0 +1,154 @@ +package controllers + +import ( + "context" + "github.com/gin-gonic/gin" + "github.com/up9inc/mizu/shared" + "github.com/up9inc/mizu/shared/kubernetes" + "github.com/up9inc/mizu/shared/logger" + tapApi "github.com/up9inc/mizu/tap/api" + v1 "k8s.io/api/core/v1" + "mizuserver/pkg/config" + "mizuserver/pkg/models" + "mizuserver/pkg/providers" + "mizuserver/pkg/providers/tapConfig" + "mizuserver/pkg/providers/tappedPods" + "mizuserver/pkg/providers/tappers" + "net/http" + "regexp" + "time" +) + +var cancelTapperSyncer context.CancelFunc + +func PostTapConfig(c *gin.Context) { + requestTapConfig := &models.TapConfig{} + + if err := c.Bind(requestTapConfig); err != nil { + c.JSON(http.StatusBadRequest, err) + return + } + + if cancelTapperSyncer != nil { + cancelTapperSyncer() + + tappedPods.Set([]*shared.PodInfo{}) + tappers.ResetStatus() + + broadcastTappedPodsStatus() + } + + var tappedNamespaces []string + for namespace, tapped := range requestTapConfig.TappedNamespaces { + if tapped { + tappedNamespaces = append(tappedNamespaces, namespace) + } + } + + podRegex, _ := regexp.Compile(".*") + + kubernetesProvider, err := providers.GetKubernetesProvider() + if err != nil { + c.JSON(http.StatusInternalServerError, err) + return + } + + ctx, cancel := context.WithCancel(context.Background()) + + if _, err := startMizuTapperSyncer(ctx, kubernetesProvider, tappedNamespaces, *podRegex, []string{}, tapApi.TrafficFilteringOptions{}, false); err != nil { + c.JSON(http.StatusInternalServerError, err) + cancel() + return + } + + cancelTapperSyncer = cancel + tapConfig.Save(requestTapConfig) + + c.JSON(http.StatusOK, "OK") +} + +func GetTapConfig(c *gin.Context) { + kubernetesProvider, err := providers.GetKubernetesProvider() + if err != nil { + c.JSON(http.StatusInternalServerError, err) + return + } + + ctx, cancel := context.WithCancel(context.Background()) + defer cancel() + + namespaces, err := kubernetesProvider.ListAllNamespaces(ctx) + if err != nil { + c.JSON(http.StatusInternalServerError, err) + return + } + + savedTapConfig := tapConfig.Get() + + tappedNamespaces := make(map[string]bool) + for _, namespace := range namespaces { + if namespace.Name == config.Config.MizuResourcesNamespace { + continue + } + + tappedNamespaces[namespace.Name] = savedTapConfig.TappedNamespaces[namespace.Name] + } + + tapConfigToReturn := models.TapConfig{TappedNamespaces: tappedNamespaces} + c.JSON(http.StatusOK, tapConfigToReturn) +} + +func startMizuTapperSyncer(ctx context.Context, provider *kubernetes.Provider, targetNamespaces []string, podFilterRegex regexp.Regexp, ignoredUserAgents []string, mizuApiFilteringOptions tapApi.TrafficFilteringOptions, serviceMesh bool) (*kubernetes.MizuTapperSyncer, error) { + tapperSyncer, err := kubernetes.CreateAndStartMizuTapperSyncer(ctx, provider, kubernetes.TapperSyncerConfig{ + TargetNamespaces: targetNamespaces, + PodFilterRegex: podFilterRegex, + MizuResourcesNamespace: config.Config.MizuResourcesNamespace, + AgentImage: config.Config.AgentImage, + TapperResources: config.Config.TapperResources, + ImagePullPolicy: v1.PullPolicy(config.Config.PullPolicy), + LogLevel: config.Config.LogLevel, + IgnoredUserAgents: ignoredUserAgents, + MizuApiFilteringOptions: mizuApiFilteringOptions, + MizuServiceAccountExists: true, //assume service account exists since install mode will not function without it anyway + ServiceMesh: serviceMesh, + }, time.Now()) + + if err != nil { + return nil, err + } + + // handle tapperSyncer events (pod changes and errors) + go func() { + for { + select { + case syncerErr, ok := <-tapperSyncer.ErrorOut: + if !ok { + logger.Log.Debug("mizuTapperSyncer err channel closed, ending listener loop") + return + } + logger.Log.Fatalf("fatal tap syncer error: %v", syncerErr) + case _, ok := <-tapperSyncer.TapPodChangesOut: + if !ok { + logger.Log.Debug("mizuTapperSyncer pod changes channel closed, ending listener loop") + return + } + + tappedPods.Set(kubernetes.GetPodInfosForPods(tapperSyncer.CurrentlyTappedPods)) + broadcastTappedPodsStatus() + case tapperStatus, ok := <-tapperSyncer.TapperStatusChangedOut: + if !ok { + logger.Log.Debug("mizuTapperSyncer tapper status changed channel closed, ending listener loop") + return + } + + tappers.SetStatus(&tapperStatus) + broadcastTappedPodsStatus() + case <-ctx.Done(): + logger.Log.Debug("mizuTapperSyncer event listener loop exiting due to context done") + return + } + } + }() + + return tapperSyncer, nil +} diff --git a/agent/pkg/controllers/entries_controller.go b/agent/pkg/controllers/entries_controller.go index 0b2f0724a..61a2b2301 100644 --- a/agent/pkg/controllers/entries_controller.go +++ b/agent/pkg/controllers/entries_controller.go @@ -64,8 +64,8 @@ func GetEntries(c *gin.Context) { var dataSlice []interface{} for _, row := range data { - var dataMap map[string]interface{} - err = json.Unmarshal(row, &dataMap) + var entry *tapApi.Entry + err = json.Unmarshal(row, &entry) if err != nil { c.JSON(http.StatusBadRequest, gin.H{ "error": true, @@ -76,8 +76,7 @@ func GetEntries(c *gin.Context) { return // exit } - base := dataMap["base"].(map[string]interface{}) - base["id"] = uint(dataMap["id"].(float64)) + base := tapApi.Summarize(entry) dataSlice = append(dataSlice, base) } @@ -95,9 +94,19 @@ func GetEntries(c *gin.Context) { } func GetEntry(c *gin.Context) { + singleEntryRequest := &models.SingleEntryRequest{} + + if err := c.BindQuery(singleEntryRequest); err != nil { + c.JSON(http.StatusBadRequest, err) + } + validationError := validation.Validate(singleEntryRequest) + if validationError != nil { + c.JSON(http.StatusBadRequest, validationError) + } + id, _ := strconv.Atoi(c.Param("id")) - var entry tapApi.MizuEntry - bytes, err := basenine.Single(shared.BasenineHost, shared.BaseninePort, id) + var entry *tapApi.Entry + bytes, err := basenine.Single(shared.BasenineHost, shared.BaseninePort, id, singleEntryRequest.Query) if Error(c, err) { return // exit } @@ -125,7 +134,7 @@ func GetEntry(c *gin.Context) { json.Unmarshal(inrec, &rules) } - c.JSON(http.StatusOK, tapApi.MizuEntryWrapper{ + c.JSON(http.StatusOK, tapApi.EntryWrapper{ Protocol: entry.Protocol, Representation: string(representation), BodySize: bodySize, diff --git a/agent/pkg/controllers/install_controller.go b/agent/pkg/controllers/install_controller.go new file mode 100644 index 000000000..843546bd4 --- /dev/null +++ b/agent/pkg/controllers/install_controller.go @@ -0,0 +1,18 @@ +package controllers + +import ( + "mizuserver/pkg/providers" + "net/http" + + "github.com/gin-gonic/gin" + "github.com/up9inc/mizu/shared/logger" +) + +func IsSetupNecessary(c *gin.Context) { + if IsInstallNeeded, err := providers.IsInstallNeeded(); err != nil { + logger.Log.Errorf("unknown internal while checking if install is needed %s", err) + c.AbortWithStatusJSON(500, gin.H{"error": "internal error occured while checking if install is needed"}) + } else { + c.JSON(http.StatusOK, IsInstallNeeded) + } +} diff --git a/agent/pkg/controllers/oas_controller.go b/agent/pkg/controllers/oas_controller.go new file mode 100644 index 000000000..2311f53c1 --- /dev/null +++ b/agent/pkg/controllers/oas_controller.go @@ -0,0 +1,62 @@ +package controllers + +import ( + "github.com/chanced/openapi" + "github.com/gin-gonic/gin" + "github.com/up9inc/mizu/shared/logger" + "mizuserver/pkg/oas" + "net/http" +) + +func GetOASServers(c *gin.Context) { + m := make([]string, 0) + oas.GetOasGeneratorInstance().ServiceSpecs.Range(func(key, value interface{}) bool { + m = append(m, key.(string)) + return true + }) + + c.JSON(http.StatusOK, m) +} + +func GetOASSpec(c *gin.Context) { + res, ok := oas.GetOasGeneratorInstance().ServiceSpecs.Load(c.Param("id")) + if !ok { + c.JSON(http.StatusNotFound, gin.H{ + "error": true, + "type": "error", + "autoClose": "5000", + "msg": "Service not found among specs", + }) + return // exit + } + + gen := res.(*oas.SpecGen) + spec, err := gen.GetSpec() + if err != nil { + c.JSON(http.StatusInternalServerError, gin.H{ + "error": true, + "type": "error", + "autoClose": "5000", + "msg": err, + }) + return // exit + } + + c.JSON(http.StatusOK, spec) +} + +func GetOASAllSpecs(c *gin.Context) { + res := map[string]*openapi.OpenAPI{} + oas.GetOasGeneratorInstance().ServiceSpecs.Range(func(key, value interface{}) bool { + svc := key.(string) + gen := value.(*oas.SpecGen) + spec, err := gen.GetSpec() + if err != nil { + logger.Log.Warningf("Failed to obtain spec for service %s: %s", svc, err) + return true + } + res[svc] = spec + return true + }) + c.JSON(http.StatusOK, res) +} diff --git a/agent/pkg/controllers/oas_controller_test.go b/agent/pkg/controllers/oas_controller_test.go new file mode 100644 index 000000000..b36bbdf96 --- /dev/null +++ b/agent/pkg/controllers/oas_controller_test.go @@ -0,0 +1,43 @@ +package controllers + +import ( + "github.com/gin-gonic/gin" + "mizuserver/pkg/oas" + "net/http/httptest" + "testing" +) + +func TestGetOASServers(t *testing.T) { + recorder := httptest.NewRecorder() + c, _ := gin.CreateTestContext(recorder) + oas.GetOasGeneratorInstance().Start() + oas.GetOasGeneratorInstance().ServiceSpecs.Store("some", oas.NewGen("some")) + + GetOASServers(c) + t.Logf("Written body: %s", recorder.Body.String()) + return +} + +func TestGetOASAllSpecs(t *testing.T) { + recorder := httptest.NewRecorder() + c, _ := gin.CreateTestContext(recorder) + oas.GetOasGeneratorInstance().Start() + oas.GetOasGeneratorInstance().ServiceSpecs.Store("some", oas.NewGen("some")) + + GetOASAllSpecs(c) + t.Logf("Written body: %s", recorder.Body.String()) + return +} + +func TestGetOASSpec(t *testing.T) { + recorder := httptest.NewRecorder() + c, _ := gin.CreateTestContext(recorder) + oas.GetOasGeneratorInstance().Start() + oas.GetOasGeneratorInstance().ServiceSpecs.Store("some", oas.NewGen("some")) + + c.Params = []gin.Param{{Key: "id", Value: "some"}} + + GetOASSpec(c) + t.Logf("Written body: %s", recorder.Body.String()) + return +} diff --git a/agent/pkg/controllers/status_controller.go b/agent/pkg/controllers/status_controller.go index 0987ddc16..fce273cc6 100644 --- a/agent/pkg/controllers/status_controller.go +++ b/agent/pkg/controllers/status_controller.go @@ -2,58 +2,47 @@ package controllers import ( "encoding/json" - "fmt" "github.com/gin-gonic/gin" "github.com/up9inc/mizu/shared" "github.com/up9inc/mizu/shared/logger" "mizuserver/pkg/api" - "mizuserver/pkg/config" "mizuserver/pkg/holder" "mizuserver/pkg/providers" + "mizuserver/pkg/providers/tappedPods" + "mizuserver/pkg/providers/tappers" "mizuserver/pkg/up9" - "mizuserver/pkg/utils" "mizuserver/pkg/validation" "net/http" ) func HealthCheck(c *gin.Context) { - if config.Config.DaemonMode { - if providers.ExpectedTapperAmount != providers.TappersCount { - c.JSON(http.StatusInternalServerError, fmt.Sprintf("expecting more tappers than are actually connected (%d expected, %d connected)", providers.ExpectedTapperAmount, providers.TappersCount)) - return - } - } - - tappers := make([]shared.TapperStatus, 0) - for _, value := range providers.TappersStatus { - tappers = append(tappers, value) + tappersStatus := make([]*shared.TapperStatus, 0) + for _, value := range tappers.GetStatus() { + tappersStatus = append(tappersStatus, value) } response := shared.HealthResponse{ - TapStatus: providers.TapStatus, - TappersCount: providers.TappersCount, - TappersStatus: tappers, + TappedPods: tappedPods.Get(), + ConnectedTappersCount: tappers.GetConnectedCount(), + TappersStatus: tappersStatus, } c.JSON(http.StatusOK, response) } func PostTappedPods(c *gin.Context) { - tapStatus := &shared.TapStatus{} - if err := c.Bind(tapStatus); err != nil { + var requestTappedPods []*shared.PodInfo + if err := c.Bind(&requestTappedPods); err != nil { c.JSON(http.StatusBadRequest, err) return } - if err := validation.Validate(tapStatus); err != nil { - c.JSON(http.StatusBadRequest, err) - return - } - logger.Log.Infof("[Status] POST request: %d tapped pods", len(tapStatus.Pods)) - providers.TapStatus.Pods = tapStatus.Pods + + logger.Log.Infof("[Status] POST request: %d tapped pods", len(requestTappedPods)) + tappedPods.Set(requestTappedPods) broadcastTappedPodsStatus() } func broadcastTappedPodsStatus() { - tappedPodsStatus := utils.GetTappedPodsStatus() + tappedPodsStatus := tappedPods.GetTappedPodsStatus() message := shared.CreateWebSocketStatusMessage(tappedPodsStatus) if jsonBytes, err := json.Marshal(message); err != nil { @@ -69,20 +58,19 @@ func PostTapperStatus(c *gin.Context) { c.JSON(http.StatusBadRequest, err) return } + if err := validation.Validate(tapperStatus); err != nil { c.JSON(http.StatusBadRequest, err) return } + logger.Log.Infof("[Status] POST request, tapper status: %v", tapperStatus) - if providers.TappersStatus == nil { - providers.TappersStatus = make(map[string]shared.TapperStatus) - } - providers.TappersStatus[tapperStatus.NodeName] = *tapperStatus + tappers.SetStatus(tapperStatus) broadcastTappedPodsStatus() } -func GetTappersCount(c *gin.Context) { - c.JSON(http.StatusOK, providers.TappersCount) +func GetConnectedTappersCount(c *gin.Context) { + c.JSON(http.StatusOK, tappers.GetConnectedCount()) } func GetAuthStatus(c *gin.Context) { @@ -96,7 +84,7 @@ func GetAuthStatus(c *gin.Context) { } func GetTappingStatus(c *gin.Context) { - tappedPodsStatus := utils.GetTappedPodsStatus() + tappedPodsStatus := tappedPods.GetTappedPodsStatus() c.JSON(http.StatusOK, tappedPodsStatus) } diff --git a/agent/pkg/controllers/user_controller.go b/agent/pkg/controllers/user_controller.go new file mode 100644 index 000000000..80453d5be --- /dev/null +++ b/agent/pkg/controllers/user_controller.go @@ -0,0 +1,39 @@ +package controllers + +import ( + "mizuserver/pkg/providers" + + "github.com/gin-gonic/gin" + "github.com/up9inc/mizu/shared/logger" +) + +func Login(c *gin.Context) { + if token, err := providers.PerformLogin(c.PostForm("username"), c.PostForm("password"), c.Request.Context()); err != nil { + c.AbortWithStatusJSON(401, gin.H{"error": "bad login"}) + } else { + c.JSON(200, gin.H{"token": token}) + } +} + +func Logout(c *gin.Context) { + token := c.GetHeader("x-session-token") + if err := providers.Logout(token, c.Request.Context()); err != nil { + c.AbortWithStatusJSON(500, gin.H{"error": "error occured while logging out, the session might still be valid"}) + } else { + c.JSON(200, "") + } +} + +func Register(c *gin.Context) { + if token, _, err, formErrorMessages := providers.RegisterUser(c.PostForm("username"), c.PostForm("password"), c.Request.Context()); err != nil { + if formErrorMessages != nil { + logger.Log.Infof("user attempted to register but had form errors %v %v", formErrorMessages, err) + c.AbortWithStatusJSON(400, formErrorMessages) + } else { + logger.Log.Errorf("unknown internal error registering user %s", err) + c.AbortWithStatusJSON(500, gin.H{"error": "internal error occured while registering"}) + } + } else { + c.JSON(200, gin.H{"token": token}) + } +} diff --git a/agent/pkg/middlewares/cors.go b/agent/pkg/middlewares/cors.go new file mode 100644 index 000000000..04afb297a --- /dev/null +++ b/agent/pkg/middlewares/cors.go @@ -0,0 +1,19 @@ +package middlewares + +import "github.com/gin-gonic/gin" + +func CORSMiddleware() gin.HandlerFunc { + return func(c *gin.Context) { + c.Writer.Header().Set("Access-Control-Allow-Origin", "*") + c.Writer.Header().Set("Access-Control-Allow-Credentials", "true") + c.Writer.Header().Set("Access-Control-Allow-Headers", "Content-Type, Content-Length, Accept-Encoding, X-CSRF-Token, Authorization, accept, origin, Cache-Control, X-Requested-With, x-session-token") + c.Writer.Header().Set("Access-Control-Allow-Methods", "POST, OPTIONS, GET, PUT") + + if c.Request.Method == "OPTIONS" { + c.AbortWithStatus(204) + return + } + + c.Next() + } +} diff --git a/agent/pkg/middlewares/requiresAuth.go b/agent/pkg/middlewares/requiresAuth.go new file mode 100644 index 000000000..08c5079b4 --- /dev/null +++ b/agent/pkg/middlewares/requiresAuth.go @@ -0,0 +1,49 @@ +package middlewares + +import ( + "mizuserver/pkg/config" + "mizuserver/pkg/providers" + "time" + + "github.com/gin-gonic/gin" + "github.com/patrickmn/go-cache" + "github.com/up9inc/mizu/shared/logger" +) + +const cachedValidTokensRetainmentTime = time.Minute * 1 + +var cachedValidTokens = cache.New(cachedValidTokensRetainmentTime, cachedValidTokensRetainmentTime) + +func RequiresAuth() gin.HandlerFunc { + return func(c *gin.Context) { + // auth is irrelevant for ephermeral mizu + if !config.Config.StandaloneMode { + c.Next() + return + } + + token := c.GetHeader("x-session-token") + if token == "" { + c.AbortWithStatusJSON(401, gin.H{"error": "token header is empty"}) + return + } + + if _, isTokenCached := cachedValidTokens.Get(token); isTokenCached { + c.Next() + return + } + + if isTokenValid, err := providers.VerifyToken(token, c.Request.Context()); err != nil { + logger.Log.Errorf("error verifying token %s", err) + c.AbortWithStatusJSON(401, gin.H{"error": "unknown auth error occured"}) + return + } else if !isTokenValid { + c.AbortWithStatusJSON(401, gin.H{"error": "invalid token"}) + return + } + + cachedValidTokens.Set(token, true, cachedValidTokensRetainmentTime) + + c.Next() + } +} diff --git a/agent/pkg/models/models.go b/agent/pkg/models/models.go index 84f8e9842..7f9ee101b 100644 --- a/agent/pkg/models/models.go +++ b/agent/pkg/models/models.go @@ -12,10 +12,14 @@ import ( "github.com/up9inc/mizu/tap" ) -func GetEntry(r *tapApi.MizuEntry, v tapApi.DataUnmarshaler) error { +func GetEntry(r *tapApi.Entry, v tapApi.DataUnmarshaler) error { return v.UnmarshalData(r) } +type TapConfig struct { + TappedNamespaces map[string]bool `json:"tappedNamespaces"` +} + type EntriesRequest struct { LeftOff int `form:"leftOff" validate:"required,min=-1"` Direction int `form:"direction" validate:"required,oneof='1' '-1'"` @@ -24,6 +28,10 @@ type EntriesRequest struct { TimeoutMs int `form:"timeoutMs" validate:"min=1"` } +type SingleEntryRequest struct { + Query string `form:"query"` +} + type EntriesResponse struct { Data []interface{} `json:"data"` Meta *basenine.Metadata `json:"meta"` @@ -31,7 +39,7 @@ type EntriesResponse struct { type WebSocketEntryMessage struct { *shared.WebSocketMessageMetadata - Data map[string]interface{} `json:"data,omitempty"` + Data *tapApi.BaseEntry `json:"data,omitempty"` } type WebSocketTappedEntryMessage struct { @@ -70,7 +78,7 @@ type WebSocketStartTimeMessage struct { Data int64 `json:"data"` } -func CreateBaseEntryWebSocketMessage(base map[string]interface{}) ([]byte, error) { +func CreateBaseEntryWebSocketMessage(base *tapApi.BaseEntry) ([]byte, error) { message := &WebSocketEntryMessage{ WebSocketMessageMetadata: &shared.WebSocketMessageMetadata{ MessageType: shared.WebSocketMessageTypeEntry, @@ -155,3 +163,7 @@ func RunValidationRulesState(harEntry har.Entry, service string) (tapApi.Applica statusPolicyToSend, latency, numberOfRules := rules.PassedValidationRules(resultPolicyToSend) return tapApi.ApplicableRules{Status: statusPolicyToSend, Latency: latency, NumberOfRules: numberOfRules}, resultPolicyToSend, isEnabled } + +type InstallState struct { + Completed bool `json:"completed"` +} diff --git a/agent/pkg/oas/feeder_test.go b/agent/pkg/oas/feeder_test.go new file mode 100644 index 000000000..fa4828708 --- /dev/null +++ b/agent/pkg/oas/feeder_test.go @@ -0,0 +1,158 @@ +package oas + +import ( + "bufio" + "encoding/json" + "errors" + "github.com/google/martian/har" + "github.com/up9inc/mizu/shared/logger" + "io" + "io/ioutil" + "os" + "path/filepath" + "sort" + "strings" + "testing" +) + +func getFiles(baseDir string) (result []string, err error) { + result = make([]string, 0, 0) + logger.Log.Infof("Reading files from tree: %s", baseDir) + + // https://yourbasic.org/golang/list-files-in-directory/ + err = filepath.Walk(baseDir, + func(path string, info os.FileInfo, err error) error { + if err != nil { + return err + } + + ext := strings.ToLower(filepath.Ext(path)) + if !info.IsDir() && (ext == ".har" || ext == ".ldjson") { + result = append(result, path) + } + + return nil + }) + + sort.SliceStable(result, func(i, j int) bool { + return fileSize(result[i]) < fileSize(result[j]) + }) + + logger.Log.Infof("Got files: %d", len(result)) + return result, err +} + +func fileSize(fname string) int64 { + fi, err := os.Stat(fname) + if err != nil { + panic(err) + } + + return fi.Size() +} + +func feedEntries(fromFiles []string) (err error) { + for _, file := range fromFiles { + logger.Log.Info("Processing file: " + file) + ext := strings.ToLower(filepath.Ext(file)) + switch ext { + case ".har": + err = feedFromHAR(file) + if err != nil { + logger.Log.Warning("Failed processing file: " + err.Error()) + continue + } + case ".ldjson": + err = feedFromLDJSON(file) + if err != nil { + logger.Log.Warning("Failed processing file: " + err.Error()) + continue + } + default: + return errors.New("Unsupported file extension: " + ext) + } + } + + return nil +} + +func feedFromHAR(file string) error { + fd, err := os.Open(file) + if err != nil { + panic(err) + } + + defer fd.Close() + + data, err := ioutil.ReadAll(fd) + if err != nil { + return err + } + + var harDoc har.HAR + err = json.Unmarshal(data, &harDoc) + if err != nil { + return err + } + + for _, entry := range harDoc.Log.Entries { + GetOasGeneratorInstance().PushEntry(entry) + } + + return nil +} + +func feedFromLDJSON(file string) error { + fd, err := os.Open(file) + if err != nil { + panic(err) + } + + defer fd.Close() + + reader := bufio.NewReader(fd) + + var meta map[string]interface{} + + buf := strings.Builder{} + for { + substr, isPrefix, err := reader.ReadLine() + if err == io.EOF { + break + } + + buf.WriteString(string(substr)) + if isPrefix { + continue + } + + line := buf.String() + buf.Reset() + + if meta == nil { + err := json.Unmarshal([]byte(line), &meta) + if err != nil { + return err + } + } else { + var entry har.Entry + err := json.Unmarshal([]byte(line), &entry) + if err != nil { + logger.Log.Warningf("Failed decoding entry: %s", line) + } + GetOasGeneratorInstance().PushEntry(&entry) + } + } + + return nil +} + +func TestFilesList(t *testing.T) { + res, err := getFiles("./test_artifacts/") + t.Log(len(res)) + t.Log(res) + if err != nil || len(res) != 2 { + t.Logf("Should return 2 files but returned %d", len(res)) + t.FailNow() + } +} diff --git a/agent/pkg/oas/gibberish.go b/agent/pkg/oas/gibberish.go new file mode 100644 index 000000000..12eb64f1f --- /dev/null +++ b/agent/pkg/oas/gibberish.go @@ -0,0 +1,108 @@ +package oas + +import ( + "regexp" + "strings" + "unicode" +) + +var ( + patBase64 = regexp.MustCompile(`^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$`) + patUuid4 = regexp.MustCompile(`(?i)[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}`) + patEmail = regexp.MustCompile(`^\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$`) + patHexLower = regexp.MustCompile(`(0x)?[0-9a-f]{6,}`) + patHexUpper = regexp.MustCompile(`(0x)?[0-9A-F]{6,}`) +) + +func IsGibberish(str string) bool { + if patBase64.MatchString(str) && len(str) > 32 { + return true + } + + if patUuid4.MatchString(str) { + return true + } + + if patEmail.MatchString(str) { + return true + } + + if patHexLower.MatchString(str) || patHexUpper.MatchString(str) { + return true + } + + noise := noiseLevel(str) + if noise >= 0.2 { + return true + } + + return false +} + +func noiseLevel(str string) (score float64) { + // opinionated algo of certain char pairs marking the non-human strings + prev := *new(rune) + cnt := 0.0 + for _, char := range str { + cnt += 1 + if prev > 0 { + switch { + // continued class of upper/lower/digit adds no noise + case unicode.IsUpper(prev) && unicode.IsUpper(char): + case unicode.IsLower(prev) && unicode.IsLower(char): + case unicode.IsDigit(prev) && unicode.IsDigit(char): + + // upper => + case unicode.IsUpper(prev) && unicode.IsLower(char): + score += 0.25 + case unicode.IsUpper(prev) && unicode.IsDigit(char): + score += 0.25 + + // lower => + case unicode.IsLower(prev) && unicode.IsUpper(char): + score += 0.75 + case unicode.IsLower(prev) && unicode.IsDigit(char): + score += 0.25 + + // digit => + case unicode.IsDigit(prev) && unicode.IsUpper(char): + score += 0.75 + case unicode.IsDigit(prev) && unicode.IsLower(char): + score += 0.75 + + // the rest is 100% noise + default: + score += 1 + } + } + prev = char + } + + score /= cnt // weigh it + + return score +} + +func IsVersionString(component string) bool { + if component == "" { + return false + } + + hasV := false + if strings.HasPrefix(component, "v") { + component = component[1:] + hasV = true + } + + for _, c := range component { + if string(c) != "." && !unicode.IsDigit(c) { + return false + } + } + + if !hasV && strings.Contains(component, ".") { + return false + } + + return true +} diff --git a/agent/pkg/oas/gibberish_test.go b/agent/pkg/oas/gibberish_test.go new file mode 100644 index 000000000..6cd306f8c --- /dev/null +++ b/agent/pkg/oas/gibberish_test.go @@ -0,0 +1,71 @@ +package oas + +import "testing" + +func TestNegative(t *testing.T) { + cases := []string{ + "", + "b", // can be valid hexadecimal + "GetUniversalVariableUser", + "callback", + "runs", + "tcfv2", + "StartUpCheckout", + "GetCart", + } + + for _, str := range cases { + if IsGibberish(str) { + t.Errorf("Mistakenly true: %s", str) + } + } +} + +func TestPositive(t *testing.T) { + cases := []string{ + "e21f7112-3d3b-4632-9da3-a4af2e0e9166", + "952bea17-3776-11ea-9341-42010a84012a", + "456795af-b48f-4a8d-9b37-3e932622c2f0", + "0a0d0174-b338-4520-a1c3-24f7e3d5ec50.html", + "6120c057c7a97b03f6986f1b", + "610bc3fd5a77a7fa25033fb0", + "610bd0315a77a7fa25034368", + "610bd0315a77a7fa25034368zh", + "710a462e", + "1554507871", + "qwerqwerasdfqwer@protonmai.com", + "john.dow.1981@protonmail.com", + "ci12NC01YzkyNTEzYzllMDRhLTAtYy5tb25pdG9yaW5nLmpzb24=", // long base64 + "11ca096cbc224a67360493d44a9903", + "c738338322370b47a79251f7510dd", // prefixed hex + "QgAAAC6zw0qH2DJtnXe8Z7rUJP0FgAFKkOhcHdFWzL1ZYggtwBgiB3LSoele9o3ZqFh7iCBhHbVLAnMuJ0HF8hEw7UKecE6wd-MBXgeRMdubGydhAMZSmuUjRpqplML40bmrb8VjJKNZswD1Cg", + "QgAAAC6zw0qH2DJtnXe8Z7rUJP0rG4sjLa_KVLlww5WEDJ__30J15en-K_6Y68jb_rU93e2TFY6fb0MYiQ1UrLNMQufqODHZUl39Lo6cXAOVOThjAMZSmuVH7n85JOYSCgzpvowMAVueGG0Xxg", + "203ef0f713abcebd8d62c35c0e3f12f87d71e5e4", + "MDEyOk9yZ2FuaXphdGlvbjU3MzI0Nzk1", + "730970532670-compute@developer.gserviceaccount.com", + "arn-aws-ecs-eu-west-2-396248696294-cluster-london-01-ECSCluster-27iuIYva8nO4", // ? + "AAAA028295945", + "sp_ANQXRpqH_urn$3Auri$3Abase64$3A6698b0a3-97ad-52ce-8fc3-17d99e37a726", + "n63nd45qsj", + "n9z9QGNiz", + "proxy.3d2100fd7107262ecb55ce6847f01fa5.html", + "r-ext-5579e00a95c90", + "r-ext-5579e8b12f11e", + "r-v4-5c92513c9e04a", + "r-v4-5c92513c9e04a-0-c.monitoring.json", + "segments-1563566437171.639994", + "t_52d94268-8810-4a7e-ba87-ffd657a6752f", + "timeouts-1563566437171.639994", + + // TODO + // "fb6cjraf9cejut2a", + // "Fxvd1timk", // questionable + // "JEHJW4BKVFDRTMTUQLHKK5WVAU", + } + + for _, str := range cases { + if !IsGibberish(str) { + t.Errorf("Mistakenly false: %s", str) + } + } +} diff --git a/agent/pkg/oas/ignores.go b/agent/pkg/oas/ignores.go new file mode 100644 index 000000000..f5da0227f --- /dev/null +++ b/agent/pkg/oas/ignores.go @@ -0,0 +1,75 @@ +package oas + +import "strings" + +var ignoredExtensions = []string{"gif", "svg", "css", "png", "ico", "js", "woff2", "woff", "jpg", "jpeg", "swf", "ttf", "map", "webp", "otf", "mp3"} + +var ignoredCtypePrefixes = []string{"image/", "font/", "video/", "audio/", "text/javascript"} +var ignoredCtypes = []string{"application/javascript", "application/x-javascript", "text/css", "application/font-woff2", "application/font-woff", "application/x-font-woff"} + +var ignoredHeaders = []string{ + "a-im", "accept", + "authorization", "cache-control", "connection", "content-encoding", "content-length", "content-type", "cookie", + "date", "dnt", "expect", "forwarded", "from", "front-end-https", "host", "http2-settings", + "max-forwards", "origin", "pragma", "proxy-authorization", "proxy-connection", "range", "referer", + "save-data", "te", "trailer", "transfer-encoding", "upgrade", "upgrade-insecure-requests", + "server", "user-agent", "via", "warning", "strict-transport-security", + "x-att-deviceid", "x-correlation-id", "correlation-id", "x-client-data", + "x-http-method-override", "x-real-ip", "x-request-id", "x-request-start", "x-requested-with", "x-uidh", + "x-same-domain", "x-content-type-options", "x-frame-options", "x-xss-protection", + "x-wap-profile", "x-scheme", + "newrelic", "x-cloud-trace-context", "sentry-trace", + "expires", "set-cookie", "p3p", "location", "content-security-policy", "content-security-policy-report-only", + "last-modified", "content-language", + "keep-alive", "etag", "alt-svc", "x-csrf-token", "x-ua-compatible", "vary", "x-powered-by", + "age", "allow", "www-authenticate", +} + +var ignoredHeaderPrefixes = []string{ + ":", "accept-", "access-control-", "if-", "sec-", "grpc-", + "x-forwarded-", "x-original-", + "x-up9-", "x-envoy-", "x-hasura-", "x-b3-", "x-datadog-", "x-envoy-", "x-amz-", "x-newrelic-", "x-prometheus-", + "x-akamai-", "x-spotim-", "x-amzn-", "x-ratelimit-", +} + +func isCtypeIgnored(ctype string) bool { + for _, prefix := range ignoredCtypePrefixes { + if strings.HasPrefix(ctype, prefix) { + return true + } + } + + for _, toIgnore := range ignoredCtypes { + if ctype == toIgnore { + return true + } + } + return false +} + +func isExtIgnored(path string) bool { + for _, extIgn := range ignoredExtensions { + if strings.HasSuffix(path, "."+extIgn) { + return true + } + } + return false +} + +func isHeaderIgnored(name string) bool { + name = strings.ToLower(name) + + for _, ignore := range ignoredHeaders { + if name == ignore { + return true + } + } + + for _, prefix := range ignoredHeaderPrefixes { + if strings.HasPrefix(name, prefix) { + return true + } + } + + return false +} diff --git a/agent/pkg/oas/oas_generator.go b/agent/pkg/oas/oas_generator.go new file mode 100644 index 000000000..7fc7858f8 --- /dev/null +++ b/agent/pkg/oas/oas_generator.go @@ -0,0 +1,107 @@ +package oas + +import ( + "context" + "encoding/json" + "github.com/google/martian/har" + "github.com/up9inc/mizu/shared/logger" + "net/url" + "sync" +) + +var ( + syncOnce sync.Once + instance *oasGenerator +) + +func GetOasGeneratorInstance() *oasGenerator { + syncOnce.Do(func() { + instance = newOasGenerator() + logger.Log.Debug("Oas Generator Initialized") + }) + return instance +} + +func (g *oasGenerator) Start() { + if g.started { + return + } + ctx, cancel := context.WithCancel(context.Background()) + g.cancel = cancel + g.ctx = ctx + g.entriesChan = make(chan har.Entry, 100) // buffer up to 100 entries for OAS processing + g.ServiceSpecs = &sync.Map{} + g.started = true + go instance.runGeneretor() +} + +func (g *oasGenerator) runGeneretor() { + for { + select { + case <-g.ctx.Done(): + logger.Log.Infof("OAS Generator was canceled") + return + + case entry, ok := <-g.entriesChan: + if !ok { + logger.Log.Infof("OAS Generator - entries channel closed") + break + } + u, err := url.Parse(entry.Request.URL) + if err != nil { + logger.Log.Errorf("Failed to parse entry URL: %v, err: %v", entry.Request.URL, err) + } + + val, found := g.ServiceSpecs.Load(u.Host) + var gen *SpecGen + if !found { + gen = NewGen(u.Scheme + "://" + u.Host) + g.ServiceSpecs.Store(u.Host, gen) + } else { + gen = val.(*SpecGen) + } + + opId, err := gen.feedEntry(entry) + if err != nil { + txt, suberr := json.Marshal(entry) + if suberr == nil { + logger.Log.Debugf("Problematic entry: %s", txt) + } + + logger.Log.Warningf("Failed processing entry: %s", err) + continue + } + + logger.Log.Debugf("Handled entry %s as opId: %s", entry.Request.URL, opId) // TODO: set opId back to entry? + } + } +} + +func (g *oasGenerator) PushEntry(entry *har.Entry) { + if !g.started { + return + } + select { + case g.entriesChan <- *entry: + default: + logger.Log.Warningf("OAS Generator - entry wasn't sent to channel because the channel has no buffer or there is no receiver") + } +} + +func newOasGenerator() *oasGenerator { + return &oasGenerator{ + started: false, + ctx: nil, + cancel: nil, + ServiceSpecs: nil, + entriesChan: nil, + } +} + +type oasGenerator struct { + started bool + ctx context.Context + cancel context.CancelFunc + ServiceSpecs *sync.Map + entriesChan chan har.Entry +} diff --git a/agent/pkg/oas/specgen.go b/agent/pkg/oas/specgen.go new file mode 100644 index 000000000..b412d4555 --- /dev/null +++ b/agent/pkg/oas/specgen.go @@ -0,0 +1,497 @@ +package oas + +import ( + "encoding/base64" + "encoding/json" + "errors" + "github.com/chanced/openapi" + "github.com/google/martian/har" + "github.com/google/uuid" + "github.com/up9inc/mizu/shared/logger" + "mime" + "net/url" + "strconv" + "strings" + "sync" +) + +type reqResp struct { // hello, generics in Go + Req *har.Request + Resp *har.Response +} + +type SpecGen struct { + oas *openapi.OpenAPI + tree *Node + lock sync.Mutex +} + +func NewGen(server string) *SpecGen { + spec := new(openapi.OpenAPI) + spec.Version = "3.1.0" + + info := openapi.Info{Title: server} + info.Version = "0.0" + spec.Info = &info + spec.Paths = &openapi.Paths{Items: map[openapi.PathValue]*openapi.PathObj{}} + + spec.Servers = make([]*openapi.Server, 0) + spec.Servers = append(spec.Servers, &openapi.Server{URL: server}) + + gen := SpecGen{oas: spec, tree: new(Node)} + return &gen +} + +func (g *SpecGen) StartFromSpec(oas *openapi.OpenAPI) { + g.oas = oas + for pathStr, pathObj := range oas.Paths.Items { + pathSplit := strings.Split(string(pathStr), "/") + g.tree.getOrSet(pathSplit, pathObj) + } +} + +func (g *SpecGen) feedEntry(entry har.Entry) (string, error) { + g.lock.Lock() + defer g.lock.Unlock() + + opId, err := g.handlePathObj(&entry) + if err != nil { + return "", err + } + + // NOTE: opId can be empty for some failed entries + return opId, err +} + +func (g *SpecGen) GetSpec() (*openapi.OpenAPI, error) { + g.lock.Lock() + defer g.lock.Unlock() + + g.tree.compact() + + for _, pathop := range g.tree.listOps() { + if pathop.op.Summary == "" { + pathop.op.Summary = pathop.path + } + } + + // put paths back from tree into OAS + g.oas.Paths = g.tree.listPaths() + + suggestTags(g.oas) + + // to make a deep copy, no better idea than marshal+unmarshal + specText, err := json.MarshalIndent(g.oas, "", "\t") + if err != nil { + return nil, err + } + + spec := new(openapi.OpenAPI) + err = json.Unmarshal(specText, spec) + if err != nil { + return nil, err + } + + return spec, err +} + +func suggestTags(oas *openapi.OpenAPI) { + paths := getPathsKeys(oas.Paths.Items) + for len(paths) > 0 { + group := make([]string, 0) + group = append(group, paths[0]) + paths = paths[1:] + + pathsClone := append(paths[:0:0], paths...) + for _, path := range pathsClone { + if getSimilarPrefix([]string{group[0], path}) != "" { + group = append(group, path) + paths = deleteFromSlice(paths, path) + } + } + + common := getSimilarPrefix(group) + + if len(group) > 1 { + for _, path := range group { + pathObj := oas.Paths.Items[openapi.PathValue(path)] + for _, op := range getOps(pathObj) { + if op.Tags == nil { + op.Tags = make([]string, 0) + } + // only add tags if not present + if len(op.Tags) == 0 { + op.Tags = append(op.Tags, common) + } + } + } + } + + //groups[common] = group + } +} + +func getSimilarPrefix(strs []string) string { + chunked := make([][]string, 0) + for _, item := range strs { + chunked = append(chunked, strings.Split(item, "/")) + } + + cmn := longestCommonXfix(chunked, true) + res := make([]string, 0) + for _, chunk := range cmn { + if chunk != "api" && !IsVersionString(chunk) && !strings.HasPrefix(chunk, "{") { + res = append(res, chunk) + } + } + return strings.Join(res[1:], ".") +} + +func deleteFromSlice(s []string, val string) []string { + temp := s[:0] + for _, x := range s { + if x != val { + temp = append(temp, x) + } + } + return temp +} + +func getPathsKeys(mymap map[openapi.PathValue]*openapi.PathObj) []string { + keys := make([]string, len(mymap)) + + i := 0 + for k := range mymap { + keys[i] = string(k) + i++ + } + return keys +} + +func (g *SpecGen) handlePathObj(entry *har.Entry) (string, error) { + urlParsed, err := url.Parse(entry.Request.URL) + if err != nil { + return "", err + } + + if isExtIgnored(urlParsed.Path) { + logger.Log.Debugf("Dropped traffic entry due to ignored extension: %s", urlParsed.Path) + } + + ctype := getRespCtype(entry.Response) + if isCtypeIgnored(ctype) { + logger.Log.Debugf("Dropped traffic entry due to ignored response ctype: %s", ctype) + } + + if entry.Response.Status < 100 { + logger.Log.Debugf("Dropped traffic entry due to status<100: %s", entry.StartedDateTime) + return "", nil + } + + if entry.Response.Status == 301 || entry.Response.Status == 308 { + logger.Log.Debugf("Dropped traffic entry due to permanent redirect status: %s", entry.StartedDateTime) + return "", nil + } + + split := strings.Split(urlParsed.Path, "/") + node := g.tree.getOrSet(split, new(openapi.PathObj)) + opObj, err := handleOpObj(entry, node.ops) + + if opObj != nil { + return opObj.OperationID, err + } + + return "", err +} + +func handleOpObj(entry *har.Entry, pathObj *openapi.PathObj) (*openapi.Operation, error) { + isSuccess := 100 <= entry.Response.Status && entry.Response.Status < 400 + opObj, wasMissing, err := getOpObj(pathObj, entry.Request.Method, isSuccess) + if err != nil { + return nil, err + } + + if !isSuccess && wasMissing { + logger.Log.Debugf("Dropped traffic entry due to failed status and no known endpoint at: %s", entry.StartedDateTime) + return nil, nil + } + + err = handleRequest(entry.Request, opObj, isSuccess) + if err != nil { + return nil, err + } + + err = handleResponse(entry.Response, opObj, isSuccess) + if err != nil { + return nil, err + } + + return opObj, nil +} + +func handleRequest(req *har.Request, opObj *openapi.Operation, isSuccess bool) error { + // TODO: we don't handle the situation when header/qstr param can be defined on pathObj level. Also the path param defined on opObj + + qstrGW := nvParams{ + In: openapi.InQuery, + Pairs: func() []NVPair { + return qstrToNVP(req.QueryString) + }, + IsIgnored: func(name string) bool { return false }, + GeneralizeName: func(name string) string { return name }, + } + handleNameVals(qstrGW, &opObj.Parameters) + + hdrGW := nvParams{ + In: openapi.InHeader, + Pairs: func() []NVPair { + return hdrToNVP(req.Headers) + }, + IsIgnored: isHeaderIgnored, + GeneralizeName: strings.ToLower, + } + handleNameVals(hdrGW, &opObj.Parameters) + + if req.PostData != nil && req.PostData.Text != "" && isSuccess { + reqBody, err := getRequestBody(req, opObj, isSuccess) + if err != nil { + return err + } + + if reqBody != nil { + reqCtype := getReqCtype(req) + reqMedia, err := fillContent(reqResp{Req: req}, reqBody.Content, reqCtype, err) + if err != nil { + return err + } + + _ = reqMedia + } + } + return nil +} + +func handleResponse(resp *har.Response, opObj *openapi.Operation, isSuccess bool) error { + // TODO: we don't support "default" response + respObj, err := getResponseObj(resp, opObj, isSuccess) + if err != nil { + return err + } + + handleRespHeaders(resp.Headers, respObj) + + respCtype := getRespCtype(resp) + respContent := respObj.Content + respMedia, err := fillContent(reqResp{Resp: resp}, respContent, respCtype, err) + if err != nil { + return err + } + _ = respMedia + return nil +} + +func handleRespHeaders(reqHeaders []har.Header, respObj *openapi.ResponseObj) { + visited := map[string]*openapi.HeaderObj{} + for _, pair := range reqHeaders { + if isHeaderIgnored(pair.Name) { + continue + } + + nameGeneral := strings.ToLower(pair.Name) + + initHeaders(respObj) + objHeaders := respObj.Headers + param := findHeaderByName(&respObj.Headers, pair.Name) + if param == nil { + param = createHeader(openapi.TypeString) + objHeaders[nameGeneral] = param + } + exmp := ¶m.Examples + err := fillParamExample(&exmp, pair.Value) + if err != nil { + logger.Log.Warningf("Failed to add example to a parameter: %s", err) + } + visited[nameGeneral] = param + } + + // maintain "required" flag + if respObj.Headers != nil { + for name, param := range respObj.Headers { + paramObj, err := param.ResolveHeader(headerResolver) + if err != nil { + logger.Log.Warningf("Failed to resolve param: %s", err) + continue + } + + _, ok := visited[strings.ToLower(name)] + if !ok { + flag := false + paramObj.Required = &flag + } + } + } + + return +} + +func fillContent(reqResp reqResp, respContent openapi.Content, ctype string, err error) (*openapi.MediaType, error) { + content, found := respContent[ctype] + if !found { + respContent[ctype] = &openapi.MediaType{} + content = respContent[ctype] + } + + var text string + if reqResp.Req != nil { + text = reqResp.Req.PostData.Text + } else { + text = decRespText(reqResp.Resp.Content) + } + + var exampleMsg []byte + // try treating it as json + any, isJSON := anyJSON(text) + if isJSON { + // re-marshal with forced indent + exampleMsg, err = json.MarshalIndent(any, "", "\t") + if err != nil { + panic("Failed to re-marshal value, super-strange") + } + } else { + exampleMsg, err = json.Marshal(text) + if err != nil { + return nil, err + } + } + + content.Example = exampleMsg + return respContent[ctype], nil +} + +func decRespText(content *har.Content) (res string) { + res = string(content.Text) + if content.Encoding == "base64" { + data, err := base64.StdEncoding.DecodeString(res) + if err != nil { + logger.Log.Warningf("error decoding response text as base64: %s", err) + } else { + res = string(data) + } + } + return +} + +func getRespCtype(resp *har.Response) string { + var ctype string + ctype = resp.Content.MimeType + for _, hdr := range resp.Headers { + if strings.ToLower(hdr.Name) == "content-type" { + ctype = hdr.Value + } + } + + mediaType, _, err := mime.ParseMediaType(ctype) + if err != nil { + return "" + } + return mediaType +} + +func getReqCtype(req *har.Request) string { + var ctype string + ctype = req.PostData.MimeType + for _, hdr := range req.Headers { + if strings.ToLower(hdr.Name) == "content-type" { + ctype = hdr.Value + } + } + + mediaType, _, err := mime.ParseMediaType(ctype) + if err != nil { + return "" + } + return mediaType +} + +func getResponseObj(resp *har.Response, opObj *openapi.Operation, isSuccess bool) (*openapi.ResponseObj, error) { + statusStr := strconv.Itoa(resp.Status) + + var response openapi.Response + response, found := opObj.Responses[statusStr] + if !found { + if opObj.Responses == nil { + opObj.Responses = map[string]openapi.Response{} + } + + opObj.Responses[statusStr] = &openapi.ResponseObj{Content: map[string]*openapi.MediaType{}} + response = opObj.Responses[statusStr] + } + + resResponse, err := response.ResolveResponse(responseResolver) + if err != nil { + return nil, err + } + + if isSuccess { + resResponse.Description = "Successful call with status " + statusStr + } else { + resResponse.Description = "Failed call with status " + statusStr + } + return resResponse, nil +} + +func getRequestBody(req *har.Request, opObj *openapi.Operation, isSuccess bool) (*openapi.RequestBodyObj, error) { + if opObj.RequestBody == nil { + opObj.RequestBody = &openapi.RequestBodyObj{Description: "Generic request body", Required: true, Content: map[string]*openapi.MediaType{}} + } + + reqBody, err := opObj.RequestBody.ResolveRequestBody(reqBodyResolver) + if err != nil { + return nil, err + } + + // TODO: maintain required flag for it, but only consider successful responses + //reqBody.Content[] + + return reqBody, nil +} + +func getOpObj(pathObj *openapi.PathObj, method string, createIfNone bool) (*openapi.Operation, bool, error) { + method = strings.ToLower(method) + var op **openapi.Operation + + switch method { + case "get": + op = &pathObj.Get + case "put": + op = &pathObj.Put + case "post": + op = &pathObj.Post + case "delete": + op = &pathObj.Delete + case "options": + op = &pathObj.Options + case "head": + op = &pathObj.Head + case "patch": + op = &pathObj.Patch + case "trace": + op = &pathObj.Trace + default: + return nil, false, errors.New("unsupported HTTP method: " + method) + } + + isMissing := false + if *op == nil { + isMissing = true + if createIfNone { + *op = &openapi.Operation{Responses: map[string]openapi.Response{}} + newUUID := uuid.New().String() + (**op).OperationID = newUUID + } else { + return nil, isMissing, nil + } + } + + return *op, isMissing, nil +} diff --git a/agent/pkg/oas/specgen_test.go b/agent/pkg/oas/specgen_test.go new file mode 100644 index 000000000..282c6ff4b --- /dev/null +++ b/agent/pkg/oas/specgen_test.go @@ -0,0 +1,197 @@ +package oas + +import ( + "encoding/json" + "github.com/chanced/openapi" + "github.com/google/martian/har" + "github.com/up9inc/mizu/shared/logger" + "io/ioutil" + "os" + "strings" + "testing" +) + +// if started via env, write file into subdir +func writeFiles(label string, spec *openapi.OpenAPI) { + if os.Getenv("MIZU_OAS_WRITE_FILES") != "" { + path := "./oas-samples" + err := os.MkdirAll(path, 0o755) + if err != nil { + panic(err) + } + content, err := json.MarshalIndent(spec, "", "\t") + if err != nil { + panic(err) + } + err = ioutil.WriteFile(path+"/"+label+".json", content, 0644) + if err != nil { + panic(err) + } + } +} + +func TestEntries(t *testing.T) { + files, err := getFiles("./test_artifacts/") + // files, err = getFiles("/media/bigdisk/UP9") + if err != nil { + t.Log(err) + t.FailNow() + } + GetOasGeneratorInstance().Start() + + if err := feedEntries(files); err != nil { + t.Log(err) + t.Fail() + } + + loadStartingOAS() + + svcs := strings.Builder{} + GetOasGeneratorInstance().ServiceSpecs.Range(func(key, val interface{}) bool { + gen := val.(*SpecGen) + svc := key.(string) + svcs.WriteString(svc + ",") + spec, err := gen.GetSpec() + if err != nil { + t.Log(err) + t.FailNow() + return false + } + + err = spec.Validate() + if err != nil { + specText, _ := json.MarshalIndent(spec, "", "\t") + t.Log(string(specText)) + t.Log(err) + t.FailNow() + } + + return true + }) + + GetOasGeneratorInstance().ServiceSpecs.Range(func(key, val interface{}) bool { + svc := key.(string) + gen := val.(*SpecGen) + spec, err := gen.GetSpec() + if err != nil { + t.Log(err) + t.FailNow() + } + + specText, _ := json.MarshalIndent(spec, "", "\t") + t.Logf("%s", string(specText)) + + err = spec.Validate() + if err != nil { + t.Log(err) + t.FailNow() + } + writeFiles(svc, spec) + + return true + }) + +} + +func TestFileLDJSON(t *testing.T) { + GetOasGeneratorInstance().Start() + file := "test_artifacts/output_rdwtyeoyrj.har.ldjson" + err := feedFromLDJSON(file) + if err != nil { + logger.Log.Warning("Failed processing file: " + err.Error()) + t.Fail() + } + + loadStartingOAS() + + GetOasGeneratorInstance().ServiceSpecs.Range(func(_, val interface{}) bool { + gen := val.(*SpecGen) + spec, err := gen.GetSpec() + if err != nil { + t.Log(err) + t.FailNow() + } + + specText, _ := json.MarshalIndent(spec, "", "\t") + t.Logf("%s", string(specText)) + + err = spec.Validate() + if err != nil { + t.Log(err) + t.FailNow() + } + + return true + }) +} + +func loadStartingOAS() { + file := "test_artifacts/catalogue.json" + fd, err := os.Open(file) + if err != nil { + panic(err) + } + + defer fd.Close() + + data, err := ioutil.ReadAll(fd) + if err != nil { + panic(err) + } + + var doc *openapi.OpenAPI + err = json.Unmarshal(data, &doc) + if err != nil { + panic(err) + } + + gen := NewGen("catalogue") + gen.StartFromSpec(doc) + + GetOasGeneratorInstance().ServiceSpecs.Store("catalogue", gen) + + return +} + +func TestEntriesNegative(t *testing.T) { + files := []string{"invalid"} + err := feedEntries(files) + if err == nil { + t.Logf("Should have failed") + t.Fail() + } +} + +func TestLoadValidHAR(t *testing.T) { + inp := `{"startedDateTime": "2021-02-03T07:48:12.959000+00:00", "time": 1, "request": {"method": "GET", "url": "http://unresolved_target/1.0.0/health", "httpVersion": "HTTP/1.1", "cookies": [], "headers": [], "queryString": [], "headersSize": -1, "bodySize": -1}, "response": {"status": 200, "statusText": "OK", "httpVersion": "HTTP/1.1", "cookies": [], "headers": [], "content": {"size": 2, "mimeType": "", "text": "OK"}, "redirectURL": "", "headersSize": -1, "bodySize": 2}, "cache": {}, "timings": {"send": -1, "wait": -1, "receive": 1}}` + var entry *har.Entry + var err = json.Unmarshal([]byte(inp), &entry) + if err != nil { + t.Logf("Failed to decode entry: %s", err) + // t.FailNow() demonstrates the problem of library + } +} + +func TestLoadValid3_1(t *testing.T) { + fd, err := os.Open("test_artifacts/catalogue.json") + if err != nil { + t.Log(err) + t.FailNow() + } + + defer fd.Close() + + data, err := ioutil.ReadAll(fd) + if err != nil { + t.Log(err) + t.FailNow() + } + + var oas openapi.OpenAPI + err = json.Unmarshal(data, &oas) + if err != nil { + t.Log(err) + t.FailNow() + } + return +} diff --git a/agent/pkg/oas/test_artifacts/catalogue.json b/agent/pkg/oas/test_artifacts/catalogue.json new file mode 100644 index 000000000..b72dbe39b --- /dev/null +++ b/agent/pkg/oas/test_artifacts/catalogue.json @@ -0,0 +1,51 @@ +{ + "openapi": "3.1.0", + "info": { + "title": "Preloaded", + "version": "0.1", + "description": "Test file for loading pre-existing OAS" + }, + "paths": { + "/catalogue/{id}": { + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "style": "simple", + "schema": { + "type": "string" + }, + "example": "some-uuid-maybe" + } + ], + "get": { + "parameters": [ { + "name": "non-required-header", + "in": "header", + "required": true, + "style": "simple", + "schema": { + "type": "string" + }, + "example": "some-uuid-maybe" + } + ] + } + }, + "/catalogue/{id}/details": { + "parameters": [ + { + "name": "id", + "in": "path", + "style": "simple", + "required": true, + "schema": { + "type": "string" + }, + "example": "some-uuid-maybe" + } + ] + } + } +} \ No newline at end of file diff --git a/agent/pkg/oas/test_artifacts/output_rdwtyeoyrj.har.ldjson b/agent/pkg/oas/test_artifacts/output_rdwtyeoyrj.har.ldjson new file mode 100644 index 000000000..629658a1d --- /dev/null +++ b/agent/pkg/oas/test_artifacts/output_rdwtyeoyrj.har.ldjson @@ -0,0 +1,13 @@ +{"messageType": "http", "_source": null, "firstMessageTime": 1627298057.784151, "lastMessageTime": 1627298065.729303, "messageCount": 12} +{"_id": "", "startedDateTime": "2021-07-26T11:14:17.78415179Z", "time": 13, "request": {"method": "GET", "url": "http://catalogue/catalogue/size?tags=", "httpVersion": "HTTP/1.1", "cookies": [], "headers": [{"name": "x-some", "value": "demo val"},{"name": "Host", "value": "catalogue"}, {"name": "Connection", "value": "close"}], "queryString": [{"name": "tags", "value": ""}], "headersSize": -1, "bodySize": 0}, "response": {"status": 200, "statusText": "OK", "httpVersion": "HTTP/1.1", "cookies": [], "headers": [{"name": "Content-Type", "value": "application/json; charset=utf-8"}, {"name": "Date", "value": "Mon, 26 Jul 2021 11:14:17 GMT"}, {"name": "Content-Length", "value": "22"}], "content": {"size": 22, "mimeType": "application/json; charset=utf-8", "text": "eyJlcnIiOm51bGwsInNpemUiOjl9", "encoding": "base64"}, "redirectURL": "", "headersSize": -1, "bodySize": 22}, "cache": {}, "timings": {"send": -1, "wait": -1, "receive": 13}} +{"_id": "", "startedDateTime": "2021-07-26T11:14:17.784918698Z", "time": 19, "request": {"method": "GET", "url": "http://catalogue/catalogue?page=1&size=6&tags=", "httpVersion": "HTTP/1.1", "cookies": [], "headers": [{"name": "Connection", "value": "close"}, {"name": "Host", "value": "catalogue"}], "queryString": [{"name": "page", "value": "1"}, {"name": "size", "value": "6"}, {"name": "tags", "value": ""}], "headersSize": -1, "bodySize": 0}, "response": {"status": 200, "statusText": "OK", "httpVersion": "HTTP/1.1", "cookies": [], "headers": [{"name": "Content-Type", "value": "application/json; charset=utf-8"}, {"name": "Date", "value": "Mon, 26 Jul 2021 11:14:17 GMT"}, {"name": "Content-Length", "value": "1927"}], "content": {"size": 1927, "mimeType": "application/json; charset=utf-8", "text": "W3siaWQiOiIwM2ZlZjZhYy0xODk2LTRjZTgtYmQ2OS1iNzk4Zjg1YzZlMGIiLCJuYW1lIjoiSG9seSIsImRlc2NyaXB0aW9uIjoiU29ja3MgZml0IGZvciBhIE1lc3NpYWguIFlvdSB0b28gY2FuIGV4cGVyaWVuY2Ugd2Fsa2luZyBpbiB3YXRlciB3aXRoIHRoZXNlIHNwZWNpYWwgZWRpdGlvbiBiZWF1dGllcy4gRWFjaCBob2xlIGlzIGxvdmluZ2x5IHByb2dnbGVkIHRvIGxlYXZlIHNtb290aCBlZGdlcy4gVGhlIG9ubHkgc29jayBhcHByb3ZlZCBieSBhIGhpZ2hlciBwb3dlci4iLCJpbWFnZVVybCI6WyIvY2F0YWxvZ3VlL2ltYWdlcy9ob2x5XzEuanBlZyIsIi9jYXRhbG9ndWUvaW1hZ2VzL2hvbHlfMi5qcGVnIl0sInByaWNlIjo5OS45OSwiY291bnQiOjEsInRhZyI6WyJhY3Rpb24iLCJtYWdpYyJdfSx7ImlkIjoiMzM5NWE0M2UtMmQ4OC00MGRlLWI5NWYtZTAwZTE1MDIwODViIiwibmFtZSI6IkNvbG91cmZ1bCIsImRlc2NyaXB0aW9uIjoicHJvaWRlbnQgb2NjYWVjYXQgaXJ1cmUgZXQgZXhjZXB0ZXVyIGxhYm9yZSBtaW5pbSBuaXNpIGFtZXQgaXJ1cmUiLCJpbWFnZVVybCI6WyIvY2F0YWxvZ3VlL2ltYWdlcy9jb2xvdXJmdWxfc29ja3MuanBnIiwiL2NhdGFsb2d1ZS9pbWFnZXMvY29sb3VyZnVsX3NvY2tzLmpwZyJdLCJwcmljZSI6MTgsImNvdW50Ijo0MzgsInRhZyI6WyJicm93biIsImJsdWUiXX0seyJpZCI6IjUxMGEwZDdlLThlODMtNDE5My1iNDgzLWUyN2UwOWRkYzM0ZCIsIm5hbWUiOiJTdXBlclNwb3J0IFhMIiwiZGVzY3JpcHRpb24iOiJSZWFkeSBmb3IgYWN0aW9uLiBFbmdpbmVlcnM6IGJlIHJlYWR5IHRvIHNtYXNoIHRoYXQgbmV4dCBidWchIEJlIHJlYWR5LCB3aXRoIHRoZXNlIHN1cGVyLWFjdGlvbi1zcG9ydC1tYXN0ZXJwaWVjZXMuIFRoaXMgcGFydGljdWxhciBlbmdpbmVlciB3YXMgY2hhc2VkIGF3YXkgZnJvbSB0aGUgb2ZmaWNlIHdpdGggYSBzdGljay4iLCJpbWFnZVVybCI6WyIvY2F0YWxvZ3VlL2ltYWdlcy9wdW1hXzEuanBlZyIsIi9jYXRhbG9ndWUvaW1hZ2VzL3B1bWFfMi5qcGVnIl0sInByaWNlIjoxNSwiY291bnQiOjgyMCwidGFnIjpbInNwb3J0IiwiZm9ybWFsIiwiYmxhY2siXX0seyJpZCI6IjgwOGEyZGUxLTFhYWEtNGMyNS1hOWI5LTY2MTJlOGYyOWEzOCIsIm5hbWUiOiJDcm9zc2VkIiwiZGVzY3JpcHRpb24iOiJBIG1hdHVyZSBzb2NrLCBjcm9zc2VkLCB3aXRoIGFuIGFpciBvZiBub25jaGFsYW5jZS4iLCJpbWFnZVVybCI6WyIvY2F0YWxvZ3VlL2ltYWdlcy9jcm9zc18xLmpwZWciLCIvY2F0YWxvZ3VlL2ltYWdlcy9jcm9zc18yLmpwZWciXSwicHJpY2UiOjE3LjMyLCJjb3VudCI6NzM4LCJ0YWciOlsiYmx1ZSIsImFjdGlvbiIsInJlZCIsImZvcm1hbCJdfSx7ImlkIjoiODE5ZTFmYmYtOGI3ZS00ZjZkLTgxMWYtNjkzNTM0OTE2YThiIiwibmFtZSI6IkZpZ3Vlcm9hIiwiZGVzY3JpcHRpb24iOiJlbmltIG9mZmljaWEgYWxpcXVhIGV4Y2VwdGV1ciBlc3NlIGRlc2VydW50IHF1aXMgYWxpcXVpcCBub3N0cnVkIGFuaW0iLCJpbWFnZVVybCI6WyIvY2F0YWxvZ3VlL2ltYWdlcy9XQVQuanBnIiwiL2NhdGFsb2d1ZS9pbWFnZXMvV0FUMi5qcGciXSwicHJpY2UiOjE0LCJjb3VudCI6ODA4LCJ0YWciOlsiZ3JlZW4iLCJmb3JtYWwiLCJibHVlIl19LHsiaWQiOiI4MzdhYjE0MS0zOTllLTRjMWYtOWFiYy1iYWNlNDAyOTZiYWMiLCJuYW1lIjoiQ2F0IHNvY2tzIiwiZGVzY3JpcHRpb24iOiJjb25zZXF1YXQgYW1ldCBjdXBpZGF0YXQgbWluaW0gbGFib3J1bSB0ZW1wb3IgZWxpdCBleCBjb25zZXF1YXQgaW4iLCJpbWFnZVVybCI6WyIvY2F0YWxvZ3VlL2ltYWdlcy9jYXRzb2Nrcy5qcGciLCIvY2F0YWxvZ3VlL2ltYWdlcy9jYXRzb2NrczIuanBnIl0sInByaWNlIjoxNSwiY291bnQiOjE3NSwidGFnIjpbImJyb3duIiwiZm9ybWFsIiwiZ3JlZW4iXX1dCg==", "encoding": "base64"}, "redirectURL": "", "headersSize": -1, "bodySize": 1927}, "cache": {}, "timings": {"send": -1, "wait": -1, "receive": 19}} +{"_id": "", "startedDateTime": "2021-07-26T11:14:17.78418182Z", "time": 7, "request": {"method": "GET", "url": "http://catalogue/tags", "httpVersion": "HTTP/1.1", "cookies": [], "headers": [{"name": "Connection", "value": "close"}, {"name": "Host", "value": "catalogue"}], "queryString": [], "headersSize": -1, "bodySize": 0}, "response": {"status": 200, "statusText": "OK", "httpVersion": "HTTP/1.1", "cookies": [], "headers": [{"name": "Content-Type", "value": "application/json; charset=utf-8"}, {"name": "Date", "value": "Mon, 26 Jul 2021 11:14:17 GMT"}, {"name": "Content-Length", "value": "107"}], "content": {"size": 107, "mimeType": "application/json; charset=utf-8", "text": "eyJlcnIiOm51bGwsInRhZ3MiOlsiYnJvd24iLCJnZWVrIiwiZm9ybWFsIiwiYmx1ZSIsInNraW4iLCJyZWQiLCJhY3Rpb24iLCJzcG9ydCIsImJsYWNrIiwibWFnaWMiLCJncmVlbiJdfQ==", "encoding": "base64"}, "redirectURL": "", "headersSize": -1, "bodySize": 107}, "cache": {}, "timings": {"send": -1, "wait": -1, "receive": 7}} +{"_id": "", "startedDateTime": "2021-07-26T11:14:18.131501482Z", "time": 5, "request": {"method": "GET", "url": "http://catalogue/catalogue/3395a43e-2d88-40de-b95f-e00e1502085b", "httpVersion": "HTTP/1.1", "cookies": [], "headers": [{"name": "Connection", "value": "close"}, {"name": "Host", "value": "catalogue"}, {"name": "x-some", "value": "demoval"}], ",queryString": [], "headersSize": -1, "bodySize": 0}, "response": {"status": 200, "statusText": "OK", "httpVersion": "HTTP/1.1", "cookies": [], "headers": [{"name": "Content-Type", "value": "application/json; charset=utf-8"}, {"name": "Date", "value": "Mon, 26 Jul 2021 11:14:17 GMT"}, {"name": "Content-Length", "value": "286"}], "content": {"size": 286, "mimeType": "application/json; charset=utf-8", "text": "eyJjb3VudCI6NDM4LCJkZXNjcmlwdGlvbiI6InByb2lkZW50IG9jY2FlY2F0IGlydXJlIGV0IGV4Y2VwdGV1ciBsYWJvcmUgbWluaW0gbmlzaSBhbWV0IGlydXJlIiwiaWQiOiIzMzk1YTQzZS0yZDg4LTQwZGUtYjk1Zi1lMDBlMTUwMjA4NWIiLCJpbWFnZVVybCI6WyIvY2F0YWxvZ3VlL2ltYWdlcy9jb2xvdXJmdWxfc29ja3MuanBnIiwiL2NhdGFsb2d1ZS9pbWFnZXMvY29sb3VyZnVsX3NvY2tzLmpwZyJdLCJuYW1lIjoiQ29sb3VyZnVsIiwicHJpY2UiOjE4LCJ0YWciOlsiYnJvd24iLCJibHVlIl19", "encoding": "base64"}, "redirectURL": "", "headersSize": -1, "bodySize": 286}, "cache": {}, "timings": {"send": -1, "wait": -1, "receive": 5}} +{"_id": "", "startedDateTime": "2021-07-26T11:14:18.379836908Z", "time": 14, "request": {"method": "GET", "url": "http://carts/carts/mHK0P7zTktmV1zv57iWAvCTd43FFMHap/items", "httpVersion": "HTTP/1.1", "cookies": [], "headers": [{"name": "Connection", "value": "close"}, {"name": "Host", "value": "carts"}], "queryString": [], "headersSize": -1, "bodySize": 0}, "response": {"status": 200, "statusText": "OK", "httpVersion": "HTTP/1.1", "cookies": [], "headers": [{"name": "X-Application-Context", "value": "carts:80"}, {"name": "Content-Type", "value": "application/json;charset=UTF-8"}, {"name": "Date", "value": "Mon, 26 Jul 2021 11:14:17 GMT"}, {"name": "Transfer-Encoding", "value": "chunked"}], "content": {"size": 113, "mimeType": "application/json;charset=UTF-8", "text": "W3siaWQiOiI2MGZlOThmYjg2YzBmYzAwMDg2OWE5MGMiLCJpdGVtSWQiOiIzMzk1YTQzZS0yZDg4LTQwZGUtYjk1Zi1lMDBlMTUwMjA4NWIiLCJxdWFudGl0eSI6MSwidW5pdFByaWNlIjoxOC4wfV0=", "encoding": "base64"}, "redirectURL": "", "headersSize": -1, "bodySize": -1}, "cache": {}, "timings": {"send": -1, "wait": -1, "receive": 14}} +{"_id": "", "startedDateTime": "2021-07-26T11:14:22.920540124Z", "time": 3, "request": {"method": "GET", "url": "http://catalogue/catalogue/808a2de1-1aaa-4c25-a9b9-6612e8f29a38", "httpVersion": "HTTP/1.1", "cookies": [], "headers": [{"name": "Connection", "value": "close"}, {"name": "Host", "value": "catalogue"}], "queryString": [], "headersSize": -1, "bodySize": 0}, "response": {"status": 200, "statusText": "OK", "httpVersion": "HTTP/1.1", "cookies": [], "headers": [{"name": "Content-Type", "value": "application/json; charset=utf-8"}, {"name": "Date", "value": "Mon, 26 Jul 2021 11:14:22 GMT"}, {"name": "Content-Length", "value": "275"}], "content": {"size": 275, "mimeType": "application/json; charset=utf-8", "text": "eyJjb3VudCI6NzM4LCJkZXNjcmlwdGlvbiI6IkEgbWF0dXJlIHNvY2ssIGNyb3NzZWQsIHdpdGggYW4gYWlyIG9mIG5vbmNoYWxhbmNlLiIsImlkIjoiODA4YTJkZTEtMWFhYS00YzI1LWE5YjktNjYxMmU4ZjI5YTM4IiwiaW1hZ2VVcmwiOlsiL2NhdGFsb2d1ZS9pbWFnZXMvY3Jvc3NfMS5qcGVnIiwiL2NhdGFsb2d1ZS9pbWFnZXMvY3Jvc3NfMi5qcGVnIl0sIm5hbWUiOiJDcm9zc2VkIiwicHJpY2UiOjE3LjMyLCJ0YWciOlsiYmx1ZSIsInJlZCIsImFjdGlvbiIsImZvcm1hbCJdfQ==", "encoding": "base64"}, "redirectURL": "", "headersSize": -1, "bodySize": 275}, "cache": {}, "timings": {"send": -1, "wait": -1, "receive": 3}} +{"_id": "", "startedDateTime": "2021-07-26T11:14:22.921609501Z", "time": 3, "request": {"method": "GET", "url": "http://catalogue/catalogue?sort=id&size=3&tags=blue", "httpVersion": "HTTP/1.1", "cookies": [], "headers": [{"name": "Connection", "value": "close"}, {"name": "Host", "value": "catalogue"}], "queryString": [{"name": "size", "value": "3"}, {"name": "tags", "value": "blue"}, {"name": "sort", "value": "id"}], "headersSize": -1, "bodySize": 0}, "response": {"status": 200, "statusText": "OK", "httpVersion": "HTTP/1.1", "cookies": [], "headers": [{"name": "Content-Length", "value": "789"}, {"name": "Content-Type", "value": "application/json; charset=utf-8"}, {"name": "Date", "value": "Mon, 26 Jul 2021 11:14:22 GMT"}], "content": {"size": 789, "mimeType": "application/json; charset=utf-8", "text": "W3siaWQiOiIzMzk1YTQzZS0yZDg4LTQwZGUtYjk1Zi1lMDBlMTUwMjA4NWIiLCJuYW1lIjoiQ29sb3VyZnVsIiwiZGVzY3JpcHRpb24iOiJwcm9pZGVudCBvY2NhZWNhdCBpcnVyZSBldCBleGNlcHRldXIgbGFib3JlIG1pbmltIG5pc2kgYW1ldCBpcnVyZSIsImltYWdlVXJsIjpbIi9jYXRhbG9ndWUvaW1hZ2VzL2NvbG91cmZ1bF9zb2Nrcy5qcGciLCIvY2F0YWxvZ3VlL2ltYWdlcy9jb2xvdXJmdWxfc29ja3MuanBnIl0sInByaWNlIjoxOCwiY291bnQiOjQzOCwidGFnIjpbImJsdWUiXX0seyJpZCI6IjgwOGEyZGUxLTFhYWEtNGMyNS1hOWI5LTY2MTJlOGYyOWEzOCIsIm5hbWUiOiJDcm9zc2VkIiwiZGVzY3JpcHRpb24iOiJBIG1hdHVyZSBzb2NrLCBjcm9zc2VkLCB3aXRoIGFuIGFpciBvZiBub25jaGFsYW5jZS4iLCJpbWFnZVVybCI6WyIvY2F0YWxvZ3VlL2ltYWdlcy9jcm9zc18xLmpwZWciLCIvY2F0YWxvZ3VlL2ltYWdlcy9jcm9zc18yLmpwZWciXSwicHJpY2UiOjE3LjMyLCJjb3VudCI6NzM4LCJ0YWciOlsiYmx1ZSJdfSx7ImlkIjoiODE5ZTFmYmYtOGI3ZS00ZjZkLTgxMWYtNjkzNTM0OTE2YThiIiwibmFtZSI6IkZpZ3Vlcm9hIiwiZGVzY3JpcHRpb24iOiJlbmltIG9mZmljaWEgYWxpcXVhIGV4Y2VwdGV1ciBlc3NlIGRlc2VydW50IHF1aXMgYWxpcXVpcCBub3N0cnVkIGFuaW0iLCJpbWFnZVVybCI6WyIvY2F0YWxvZ3VlL2ltYWdlcy9XQVQuanBnIiwiL2NhdGFsb2d1ZS9pbWFnZXMvV0FUMi5qcGciXSwicHJpY2UiOjE0LCJjb3VudCI6ODA4LCJ0YWciOlsiYmx1ZSJdfV0K", "encoding": "base64"}, "redirectURL": "", "headersSize": -1, "bodySize": 789}, "cache": {}, "timings": {"send": -1, "wait": -1, "receive": 3}} +{"_id": "", "startedDateTime": "2021-07-26T11:14:22.923197848Z", "time": 3, "request": {"method": "GET", "url": "http://catalogue/catalogue/3395a43e-2d88-40de-b95f-e00e1502085b", "httpVersion": "HTTP/1.1", "cookies": [], "headers": [{"name": "Host", "value": "catalogue"}, {"name": "Connection", "value": "close"}], "queryString": [], "headersSize": -1, "bodySize": 0}, "response": {"status": 200, "statusText": "OK", "httpVersion": "HTTP/1.1", "cookies": [], "headers": [{"name": "Content-Type", "value": "application/json; charset=utf-8"}, {"name": "Date", "value": "Mon, 26 Jul 2021 11:14:22 GMT"}, {"name": "Content-Length", "value": "286"}], "content": {"size": 286, "mimeType": "application/json; charset=utf-8", "text": "eyJjb3VudCI6NDM4LCJkZXNjcmlwdGlvbiI6InByb2lkZW50IG9jY2FlY2F0IGlydXJlIGV0IGV4Y2VwdGV1ciBsYWJvcmUgbWluaW0gbmlzaSBhbWV0IGlydXJlIiwiaWQiOiIzMzk1YTQzZS0yZDg4LTQwZGUtYjk1Zi1lMDBlMTUwMjA4NWIiLCJpbWFnZVVybCI6WyIvY2F0YWxvZ3VlL2ltYWdlcy9jb2xvdXJmdWxfc29ja3MuanBnIiwiL2NhdGFsb2d1ZS9pbWFnZXMvY29sb3VyZnVsX3NvY2tzLmpwZyJdLCJuYW1lIjoiQ29sb3VyZnVsIiwicHJpY2UiOjE4LCJ0YWciOlsiYnJvd24iLCJibHVlIl19", "encoding": "base64"}, "redirectURL": "", "headersSize": -1, "bodySize": 286}, "cache": {}, "timings": {"send": -1, "wait": -1, "receive": 3}} +{"_id": "", "startedDateTime": "2021-07-26T11:14:23.175549218Z", "time": 26, "request": {"method": "GET", "url": "http://carts/carts/mHK0P7zTktmV1zv57iWAvCTd43FFMHap/items", "httpVersion": "HTTP/1.1", "cookies": [], "headers": [{"name": "Connection", "value": "close"}, {"name": "Host", "value": "carts"}], "queryString": [], "headersSize": -1, "bodySize": 0}, "response": {"status": 200, "statusText": "OK", "httpVersion": "HTTP/1.1", "cookies": [], "headers": [{"name": "X-Application-Context", "value": "carts:80"}, {"name": "Content-Type", "value": "application/json;charset=UTF-8"}, {"name": "Date", "value": "Mon, 26 Jul 2021 11:14:22 GMT"}, {"name": "Transfer-Encoding", "value": "chunked"}], "content": {"size": 113, "mimeType": "application/json;charset=UTF-8", "text": "W3siaWQiOiI2MGZlOThmYjg2YzBmYzAwMDg2OWE5MGMiLCJpdGVtSWQiOiIzMzk1YTQzZS0yZDg4LTQwZGUtYjk1Zi1lMDBlMTUwMjA4NWIiLCJxdWFudGl0eSI6MSwidW5pdFByaWNlIjoxOC4wfV0=", "encoding": "base64"}, "redirectURL": "", "headersSize": -1, "bodySize": -1}, "cache": {}, "timings": {"send": -1, "wait": -1, "receive": 26}} +{"_id": "", "startedDateTime": "2021-07-26T11:14:25.239777333Z", "time": 10, "request": {"method": "GET", "url": "http://carts/carts/mHK0P7zTktmV1zv57iWAvCTd43FFMHap/items", "httpVersion": "HTTP/1.1", "cookies": [], "headers": [{"name": "Connection", "value": "close"}, {"name": "Host", "value": "carts"}], "queryString": [], "headersSize": -1, "bodySize": 0}, "response": {"status": 200, "statusText": "OK", "httpVersion": "HTTP/1.1", "cookies": [], "headers": [{"name": "Content-Type", "value": "application/json;charset=UTF-8"}, {"name": "Transfer-Encoding", "value": "chunked"}, {"name": "Date", "value": "Mon, 26 Jul 2021 11:14:25 GMT"}, {"name": "X-Application-Context", "value": "carts:80"}], "content": {"size": 113, "mimeType": "application/json;charset=UTF-8", "text": "W3siaWQiOiI2MGZlOThmYjg2YzBmYzAwMDg2OWE5MGMiLCJpdGVtSWQiOiIzMzk1YTQzZS0yZDg4LTQwZGUtYjk1Zi1lMDBlMTUwMjA4NWIiLCJxdWFudGl0eSI6MSwidW5pdFByaWNlIjoxOC4wfV0=", "encoding": "base64"}, "redirectURL": "", "headersSize": -1, "bodySize": -1}, "cache": {}, "timings": {"send": -1, "wait": -1, "receive": 10}} +{"_id": "", "startedDateTime": "2021-07-26T11:14:25.725866772Z", "time": 3, "request": {"method": "GET", "url": "http://catalogue/catalogue?size=5", "httpVersion": "HTTP/1.1", "cookies": [], "headers": [{"name": "Connection", "value": "close"}, {"name": "Host", "value": "catalogue"}], "queryString": [{"name": "size", "value": "5"}], "headersSize": -1, "bodySize": 0}, "response": {"status": 200, "statusText": "OK", "httpVersion": "HTTP/1.1", "cookies": [], "headers": [{"name": "Content-Length", "value": "1643"}, {"name": "Content-Type", "value": "application/json; charset=utf-8"}, {"name": "Date", "value": "Mon, 26 Jul 2021 11:14:25 GMT"}], "content": {"size": 1643, "mimeType": "application/json; charset=utf-8", "text": "W3siaWQiOiIwM2ZlZjZhYy0xODk2LTRjZTgtYmQ2OS1iNzk4Zjg1YzZlMGIiLCJuYW1lIjoiSG9seSIsImRlc2NyaXB0aW9uIjoiU29ja3MgZml0IGZvciBhIE1lc3NpYWguIFlvdSB0b28gY2FuIGV4cGVyaWVuY2Ugd2Fsa2luZyBpbiB3YXRlciB3aXRoIHRoZXNlIHNwZWNpYWwgZWRpdGlvbiBiZWF1dGllcy4gRWFjaCBob2xlIGlzIGxvdmluZ2x5IHByb2dnbGVkIHRvIGxlYXZlIHNtb290aCBlZGdlcy4gVGhlIG9ubHkgc29jayBhcHByb3ZlZCBieSBhIGhpZ2hlciBwb3dlci4iLCJpbWFnZVVybCI6WyIvY2F0YWxvZ3VlL2ltYWdlcy9ob2x5XzEuanBlZyIsIi9jYXRhbG9ndWUvaW1hZ2VzL2hvbHlfMi5qcGVnIl0sInByaWNlIjo5OS45OSwiY291bnQiOjEsInRhZyI6WyJhY3Rpb24iLCJtYWdpYyJdfSx7ImlkIjoiMzM5NWE0M2UtMmQ4OC00MGRlLWI5NWYtZTAwZTE1MDIwODViIiwibmFtZSI6IkNvbG91cmZ1bCIsImRlc2NyaXB0aW9uIjoicHJvaWRlbnQgb2NjYWVjYXQgaXJ1cmUgZXQgZXhjZXB0ZXVyIGxhYm9yZSBtaW5pbSBuaXNpIGFtZXQgaXJ1cmUiLCJpbWFnZVVybCI6WyIvY2F0YWxvZ3VlL2ltYWdlcy9jb2xvdXJmdWxfc29ja3MuanBnIiwiL2NhdGFsb2d1ZS9pbWFnZXMvY29sb3VyZnVsX3NvY2tzLmpwZyJdLCJwcmljZSI6MTgsImNvdW50Ijo0MzgsInRhZyI6WyJicm93biIsImJsdWUiXX0seyJpZCI6IjUxMGEwZDdlLThlODMtNDE5My1iNDgzLWUyN2UwOWRkYzM0ZCIsIm5hbWUiOiJTdXBlclNwb3J0IFhMIiwiZGVzY3JpcHRpb24iOiJSZWFkeSBmb3IgYWN0aW9uLiBFbmdpbmVlcnM6IGJlIHJlYWR5IHRvIHNtYXNoIHRoYXQgbmV4dCBidWchIEJlIHJlYWR5LCB3aXRoIHRoZXNlIHN1cGVyLWFjdGlvbi1zcG9ydC1tYXN0ZXJwaWVjZXMuIFRoaXMgcGFydGljdWxhciBlbmdpbmVlciB3YXMgY2hhc2VkIGF3YXkgZnJvbSB0aGUgb2ZmaWNlIHdpdGggYSBzdGljay4iLCJpbWFnZVVybCI6WyIvY2F0YWxvZ3VlL2ltYWdlcy9wdW1hXzEuanBlZyIsIi9jYXRhbG9ndWUvaW1hZ2VzL3B1bWFfMi5qcGVnIl0sInByaWNlIjoxNSwiY291bnQiOjgyMCwidGFnIjpbInNwb3J0IiwiZm9ybWFsIiwiYmxhY2siXX0seyJpZCI6IjgwOGEyZGUxLTFhYWEtNGMyNS1hOWI5LTY2MTJlOGYyOWEzOCIsIm5hbWUiOiJDcm9zc2VkIiwiZGVzY3JpcHRpb24iOiJBIG1hdHVyZSBzb2NrLCBjcm9zc2VkLCB3aXRoIGFuIGFpciBvZiBub25jaGFsYW5jZS4iLCJpbWFnZVVybCI6WyIvY2F0YWxvZ3VlL2ltYWdlcy9jcm9zc18xLmpwZWciLCIvY2F0YWxvZ3VlL2ltYWdlcy9jcm9zc18yLmpwZWciXSwicHJpY2UiOjE3LjMyLCJjb3VudCI6NzM4LCJ0YWciOlsiYmx1ZSIsImFjdGlvbiIsInJlZCIsImZvcm1hbCJdfSx7ImlkIjoiODE5ZTFmYmYtOGI3ZS00ZjZkLTgxMWYtNjkzNTM0OTE2YThiIiwibmFtZSI6IkZpZ3Vlcm9hIiwiZGVzY3JpcHRpb24iOiJlbmltIG9mZmljaWEgYWxpcXVhIGV4Y2VwdGV1ciBlc3NlIGRlc2VydW50IHF1aXMgYWxpcXVpcCBub3N0cnVkIGFuaW0iLCJpbWFnZVVybCI6WyIvY2F0YWxvZ3VlL2ltYWdlcy9XQVQuanBnIiwiL2NhdGFsb2d1ZS9pbWFnZXMvV0FUMi5qcGciXSwicHJpY2UiOjE0LCJjb3VudCI6ODA4LCJ0YWciOlsiZ3JlZW4iLCJmb3JtYWwiLCJibHVlIl19XQo=", "encoding": "base64"}, "redirectURL": "", "headersSize": -1, "bodySize": 1643}, "cache": {}, "timings": {"send": -1, "wait": -1, "receive": 3}} +{"_id": "", "startedDateTime": "2021-07-26T11:14:25.729303217Z", "time": 3, "request": {"method": "GET", "url": "http://catalogue/catalogue/3395a43e-2d88-40de-b95f-e00e1502085b", "httpVersion": "HTTP/1.1", "cookies": [], "headers": [{"name": "Connection", "value": "close"}, {"name": "Host", "value": "catalogue"}], "queryString": [], "headersSize": -1, "bodySize": 0}, "response": {"status": 200, "statusText": "OK", "httpVersion": "HTTP/1.1", "cookies": [], "headers": [{"name": "Content-Type", "value": "application/json; charset=utf-8"}, {"name": "Date", "value": "Mon, 26 Jul 2021 11:14:25 GMT"}, {"name": "Content-Length", "value": "286"}], "content": {"size": 286, "mimeType": "application/json; charset=utf-8", "text": "eyJjb3VudCI6NDM4LCJkZXNjcmlwdGlvbiI6InByb2lkZW50IG9jY2FlY2F0IGlydXJlIGV0IGV4Y2VwdGV1ciBsYWJvcmUgbWluaW0gbmlzaSBhbWV0IGlydXJlIiwiaWQiOiIzMzk1YTQzZS0yZDg4LTQwZGUtYjk1Zi1lMDBlMTUwMjA4NWIiLCJpbWFnZVVybCI6WyIvY2F0YWxvZ3VlL2ltYWdlcy9jb2xvdXJmdWxfc29ja3MuanBnIiwiL2NhdGFsb2d1ZS9pbWFnZXMvY29sb3VyZnVsX3NvY2tzLmpwZyJdLCJuYW1lIjoiQ29sb3VyZnVsIiwicHJpY2UiOjE4LCJ0YWciOlsiYnJvd24iLCJibHVlIl19", "encoding": "base64"}, "redirectURL": "", "headersSize": -1, "bodySize": 286}, "cache": {}, "timings": {"send": -1, "wait": -1, "receive": 3}} diff --git a/agent/pkg/oas/test_artifacts/output_ysuwqrdktj.har b/agent/pkg/oas/test_artifacts/output_ysuwqrdktj.har new file mode 100644 index 000000000..bdfc4a42d --- /dev/null +++ b/agent/pkg/oas/test_artifacts/output_ysuwqrdktj.har @@ -0,0 +1,24961 @@ +{ + "log": { + "version": "1.2", + "creator": { + "name": "har creator", + "version": "0.1", + "comment": "", + "_source": "http://nginx-ingress-controller" + }, + "entries": [ + { + "startedDateTime": "2020-05-21T11:02:28.255000+00:00", + "time": 1022, + "request": { + "method": "GET", + "url": "http://trcc-api-service/proxies/", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "Sec-Fetch-Dest", + "value": "empty" + }, + { + "name": "X-Forwarded-Port", + "value": "443" + }, + { + "name": "X-Scheme", + "value": "https" + }, + { + "name": "Authorization", + "value": "bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJqSEZ0R1dybjJpY084VnpDYXpaZWUyakpFc2drY1k5ZzhpN2FTbGtielRnIn0.eyJleHAiOjE1OTAwNTkyMzksImlhdCI6MTU5MDA1ODkzOSwiYXV0aF90aW1lIjoxNTg5ODk5OTI1LCJqdGkiOiIwMTljOGVjMi1hZjNmLTRkNzEtYWQyNC0wNzAxNGQ3OTJlYzIiLCJpc3MiOiJodHRwczovL2F1dGguc3RnLnRlc3RyLmlvL2F1dGgvcmVhbG1zL3Rlc3RyIiwiYXVkIjoiYWNjb3VudCIsInN1YiI6ImFiOWU4NDZmLTA4ZjEtNDU0MC04MTQ3LTI1OTBhYzAwYjk0ZSIsInR5cCI6IkJlYXJlciIsImF6cCI6InJlYWN0LWNsaWVudCIsIm5vbmNlIjoiNjczNTQzOTItOGNjNi00NWM1LTlhMGQtN2NkNDdkYmI2ZWM4Iiwic2Vzc2lvbl9zdGF0ZSI6ImIyNTczMGY5LTdmOWUtNDhlNy04YzEzLWNhMDc3OTU1YzEyNiIsImFjciI6IjAiLCJhbGxvd2VkLW9yaWdpbnMiOlsiaHR0cHM6Ly9zdGcudGVzdHIuaW8iLCJjaHJvbWUtZXh0ZW5zaW9uOi8vbmFkZ2VsamVtbWJna2xkaGNwYWZqbXBtYXBpcGdsY20iLCJodHRwOi8vbG9jYWxob3N0OjMwMDAiXSwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm1hbmFnZUZlYXR1cmVGbGFncyIsIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyJhY2NvdW50Ijp7InJvbGVzIjpbIm1hbmFnZS1hY2NvdW50IiwibWFuYWdlLWFjY291bnQtbGlua3MiLCJ2aWV3LXByb2ZpbGUiXX19LCJzY29wZSI6Im9wZW5pZCBwcm9maWxlIGVtYWlsIiwiZ3JvdXBfbWVtYmVyc2hpcCI6WyJzb21lT3JnSWQxMjMiXSwiZW1haWxfdmVyaWZpZWQiOnRydWUsIm5hbWUiOiJTaGFoYXIgWWFraXIiLCJwcmVmZXJyZWRfdXNlcm5hbWUiOiJzaGFoYXJAdXA5LmNvbSIsImdpdmVuX25hbWUiOiJTaGFoYXIiLCJmYW1pbHlfbmFtZSI6Illha2lyIiwiZ3JvdXBfc3ViZG9tYWluIjoic29tZU9yZ0lkMTIzIiwiZW1haWwiOiJzaGFoYXJAdXA5LmNvbSIsImZlYXR1cmVGbGFncyI6eyJlZGl0RW5kcG9pbnRWYXJpYWJsZXMiOnRydWUsInNpZGVOYXZpZ2F0aW9uIjp0cnVlfX0.PwXybF1B05pEvfkFuIOJINCka0wA1hEP5vHEjkO4fxcu8-8dNvNX_O8EPVkfQ5jKc94ZSTLhWLmQcydmMekVzAYAlzY1PwLHDr3vncQjVQOHf1VJuBU38n3YccYkB7wSGg3QhcKJNifcnmSIo8utlFSCozKLOEsT_qp9W5F7pDlCPgWCJpXx1YH2rdj6CpK6Dup0VtAm7EzO4re7BQiQg4W1RQhjkLhCqCsL5Iy6yFJbXGQ6KLsxKOoJZmkru6ZI3VRiNL7XHFlKvAEOpwc3KpJR1cWi-I9xVsJZiFR1v-weLNwg-S_oGuodccdRFiXVGdrIgSbWVSP3uhYKi1zBTA" + }, + { + "name": "Sec-Fetch-Site", + "value": "same-site" + }, + { + "name": "X-Request-Id", + "value": "e70b3d2df28ad8f418401c3745a30306" + }, + { + "name": "X-Forwarded-Proto", + "value": "https" + }, + { + "name": "Sec-Fetch-Mode", + "value": "cors" + }, + { + "name": "Referer", + "value": "https://stg.testr.io/someOrgId123/tapping" + }, + { + "name": "User-Agent", + "value": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36" + }, + { + "name": "Accept-Language", + "value": "en-US,en;q=0.9,he;q=0.8" + }, + { + "name": "X-Real-Ip", + "value": "10.132.0.34" + }, + { + "name": "X-Forwarded-For", + "value": "10.132.0.34" + }, + { + "name": "X-Forwarded-Host", + "value": "trcc.stg.testr.io" + }, + { + "name": "Accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "Origin", + "value": "https://stg.testr.io" + }, + { + "name": "Accept-Encoding", + "value": "gzip, deflate, br" + }, + { + "name": ":method", + "value": "GET" + }, + { + "name": ":path", + "value": "/proxies/" + }, + { + "name": ":authority", + "value": "trcc.stg.testr.io" + }, + { + "name": ":scheme", + "value": "http" + }, + { + "name": "x-request-start", + "value": "1590058948.255" + }, + { + "name": "x-up9-source", + "value": "10.48.1.44" + }, + { + "name": "x-up9-destination", + "value": "10.48.0.155:5000" + } + ], + "queryString": [], + "headersSize": -1, + "bodySize": -1 + }, + "response": { + "status": 200, + "statusText": "OK", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "Vary", + "value": "Origin" + }, + { + "name": "Server", + "value": "gunicorn/19.9.0" + }, + { + "name": "Date", + "value": "Thu, 21 May 2020 11:02:28 GMT" + }, + { + "name": "Connection", + "value": "keep-alive" + }, + { + "name": "Content-Type", + "value": "application/json" + }, + { + "name": "Content-Length", + "value": "5" + }, + { + "name": "Access-Control-Allow-Origin", + "value": "https://stg.testr.io" + }, + { + "name": "Access-Control-Allow-Credentials", + "value": "true" + }, + { + "name": ":status", + "value": "200" + }, + { + "name": "duration_ms", + "value": "1022" + } + ], + "content": { + "size": 5, + "mimeType": "", + "text": "null\n" + }, + "redirectURL": "", + "headersSize": -1, + "bodySize": 5 + }, + "cache": {}, + "timings": { + "send": -1, + "wait": -1, + "receive": 1022 + } + }, + { + "startedDateTime": "2020-05-21T11:02:29.277000+00:00", + "time": 1, + "request": { + "method": "GET", + "url": "http://trcc-api-service/models/aws_kong5/suites/all/runs", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "Dnt", + "value": "1" + }, + { + "name": "Accept-Language", + "value": "en-IL,en-US;q=0.9,en;q=0.8,he;q=0.7,pl;q=0.6,ru;q=0.5" + }, + { + "name": "X-Request-Id", + "value": "5ed5df282a8a5ea4893a955c197cf7be" + }, + { + "name": "X-Forwarded-Port", + "value": "443" + }, + { + "name": "Origin", + "value": "https://stg.testr.io" + }, + { + "name": "Sec-Fetch-Mode", + "value": "cors" + }, + { + "name": "Sec-Fetch-Dest", + "value": "empty" + }, + { + "name": "X-Forwarded-Proto", + "value": "https" + }, + { + "name": "Authorization", + "value": "bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJqSEZ0R1dybjJpY084VnpDYXpaZWUyakpFc2drY1k5ZzhpN2FTbGtielRnIn0.eyJleHAiOjE1OTAwNTkyNDMsImlhdCI6MTU5MDA1ODk0MywiYXV0aF90aW1lIjoxNTkwMDU4NjUxLCJqdGkiOiI1ODYzNmRiMy0wN2IxLTQ2ZDYtOGNiNS01MzEzMDFlZGY4MGYiLCJpc3MiOiJodHRwczovL2F1dGguc3RnLnRlc3RyLmlvL2F1dGgvcmVhbG1zL3Rlc3RyIiwiYXVkIjoiYWNjb3VudCIsInN1YiI6IjBlYWU4ZmFjLTgyYTEtNDUwNi05MWQ0LTA4ZDYxZTI2NWY1NCIsInR5cCI6IkJlYXJlciIsImF6cCI6InJlYWN0LWNsaWVudCIsIm5vbmNlIjoiNTRjMTM5OTktMDg0NS00OWNmLWI1OTAtOTY1ZThjNWI0NmJlIiwic2Vzc2lvbl9zdGF0ZSI6ImY3YjEyOTM1LThmMTctNDc1Zi04NmRhLWQ4NjFjZTYxNWZjNyIsImFjciI6IjAiLCJhbGxvd2VkLW9yaWdpbnMiOlsiaHR0cHM6Ly9zdGcudGVzdHIuaW8iLCJjaHJvbWUtZXh0ZW5zaW9uOi8vbmFkZ2VsamVtbWJna2xkaGNwYWZqbXBtYXBpcGdsY20iLCJodHRwOi8vbG9jYWxob3N0OjMwMDAiXSwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyJhY2NvdW50Ijp7InJvbGVzIjpbIm1hbmFnZS1hY2NvdW50IiwibWFuYWdlLWFjY291bnQtbGlua3MiLCJ2aWV3LXByb2ZpbGUiXX19LCJzY29wZSI6Im9wZW5pZCBwcm9maWxlIGVtYWlsIiwiZ3JvdXBfbWVtYmVyc2hpcCI6WyJzb21lT3JnSWQxMjMiXSwiZW1haWxfdmVyaWZpZWQiOnRydWUsIm5hbWUiOiJSYW1pIEJlcm1hbiIsInByZWZlcnJlZF91c2VybmFtZSI6InJhbWkuYmVybWFuQHVwOS5jb20iLCJnaXZlbl9uYW1lIjoiUmFtaSIsImZhbWlseV9uYW1lIjoiQmVybWFuIiwiZ3JvdXBfc3ViZG9tYWluIjoic29tZU9yZ0lkMTIzIiwiZW1haWwiOiJyYW1pLmJlcm1hbkB1cDkuY29tIiwiZmVhdHVyZUZsYWdzIjp7ImVkaXRFbmRwb2ludFZhcmlhYmxlcyI6dHJ1ZSwic2lkZU5hdmlnYXRpb24iOnRydWV9fQ.UEDsnoo9A8CbdIYKXoOrAAq6y2K7Aoqf-PplHhXFoVep9ewwA9qBjXqgn0fK9cnE_KfZKUcX_cy1HDhhdIfR_aHpbWWhQ3gxISkE6ALka18JIrUv7bFaHKio6eEP6tgn34QVP8aQVEB3e3g7h3dLuUvZ1xIMnt6fy03tD3KgiQlvdHwg5FhJLosiCrHgboEqN5VH_f_2QF33XiXTkDG1e-AOEnIIWqloMDTUPZEUvEo_KH68lB0Uu23YhhI5gPAuKQVb_UjFWcF_6Ysvk3C3j0cuk09DZ7YEI1u-bKp58LHnsS6gqNFQxy-CDlZ8Oht5d2I3LbwZZxHzMixzzFzJCA" + }, + { + "name": "Accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "User-Agent", + "value": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36" + }, + { + "name": "Referer", + "value": "https://stg.testr.io/someOrgId123/model/aws_kong5/lastResults/systems/all/runs" + }, + { + "name": "Accept-Encoding", + "value": "gzip, deflate, br" + }, + { + "name": "X-Real-Ip", + "value": "10.132.0.11" + }, + { + "name": "X-Scheme", + "value": "https" + }, + { + "name": "Sec-Fetch-Site", + "value": "same-site" + }, + { + "name": "X-Forwarded-For", + "value": "10.132.0.11" + }, + { + "name": "X-Forwarded-Host", + "value": "trcc.stg.testr.io" + }, + { + "name": ":method", + "value": "GET" + }, + { + "name": ":path", + "value": "/models/aws_kong5/suites/all/runs" + }, + { + "name": ":authority", + "value": "trcc.stg.testr.io" + }, + { + "name": ":scheme", + "value": "http" + }, + { + "name": "x-request-start", + "value": "1590058949.277" + }, + { + "name": "x-up9-source", + "value": "10.48.1.44" + }, + { + "name": "x-up9-destination", + "value": "10.48.0.155:5000" + } + ], + "queryString": [], + "headersSize": -1, + "bodySize": -1 + }, + "response": { + "status": 200, + "statusText": "OK", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "Access-Control-Allow-Origin", + "value": "https://stg.testr.io" + }, + { + "name": "Access-Control-Allow-Credentials", + "value": "true" + }, + { + "name": "Vary", + "value": "Origin" + }, + { + "name": "Server", + "value": "gunicorn/19.9.0" + }, + { + "name": "Date", + "value": "Thu, 21 May 2020 11:02:28 GMT" + }, + { + "name": "Connection", + "value": "keep-alive" + }, + { + "name": "Content-Type", + "value": "application/json" + }, + { + "name": "Content-Length", + "value": "3" + }, + { + "name": ":status", + "value": "200" + }, + { + "name": "duration_ms", + "value": "1" + } + ], + "content": { + "size": 3, + "mimeType": "", + "text": "[]\n" + }, + "redirectURL": "", + "headersSize": -1, + "bodySize": 3 + }, + "cache": {}, + "timings": { + "send": -1, + "wait": -1, + "receive": 1 + } + }, + { + "startedDateTime": "2020-05-21T11:02:29.278000+00:00", + "time": 1, + "request": { + "method": "OPTIONS", + "url": "http://trcc-api-service/models/aws_kong5/status", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "X-Scheme", + "value": "https" + }, + { + "name": "Access-Control-Request-Headers", + "value": "authorization" + }, + { + "name": "Referer", + "value": "https://stg.testr.io/someOrgId123/model/aws_kong5/lastResults/systems/all/runs" + }, + { + "name": "X-Request-Id", + "value": "341bc2b5103f6759c4dbe6bbe3d2b2ef" + }, + { + "name": "Sec-Fetch-Site", + "value": "same-site" + }, + { + "name": "Sec-Fetch-Dest", + "value": "empty" + }, + { + "name": "Accept-Language", + "value": "en-IL,en-US;q=0.9,en;q=0.8,he;q=0.7,pl;q=0.6,ru;q=0.5" + }, + { + "name": "X-Real-Ip", + "value": "10.132.0.11" + }, + { + "name": "X-Forwarded-Port", + "value": "443" + }, + { + "name": "Accept", + "value": "*/*" + }, + { + "name": "Access-Control-Request-Method", + "value": "GET" + }, + { + "name": "Origin", + "value": "https://stg.testr.io" + }, + { + "name": "User-Agent", + "value": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36" + }, + { + "name": "Accept-Encoding", + "value": "gzip, deflate, br" + }, + { + "name": "X-Forwarded-For", + "value": "10.132.0.11" + }, + { + "name": "X-Forwarded-Host", + "value": "trcc.stg.testr.io" + }, + { + "name": "X-Forwarded-Proto", + "value": "https" + }, + { + "name": "Sec-Fetch-Mode", + "value": "cors" + }, + { + "name": ":method", + "value": "OPTIONS" + }, + { + "name": ":path", + "value": "/models/aws_kong5/status" + }, + { + "name": ":authority", + "value": "trcc.stg.testr.io" + }, + { + "name": ":scheme", + "value": "http" + }, + { + "name": "x-request-start", + "value": "1590058949.278" + }, + { + "name": "x-up9-source", + "value": "10.48.1.44" + }, + { + "name": "x-up9-destination", + "value": "10.48.0.155:5000" + } + ], + "queryString": [], + "headersSize": -1, + "bodySize": -1 + }, + "response": { + "status": 200, + "statusText": "OK", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "Date", + "value": "Thu, 21 May 2020 11:02:28 GMT" + }, + { + "name": "Connection", + "value": "keep-alive" + }, + { + "name": "Content-Type", + "value": "application/json" + }, + { + "name": "Content-Length", + "value": "3" + }, + { + "name": "Access-Control-Allow-Origin", + "value": "http://localhost:3000" + }, + { + "name": "Access-Control-Allow-Credentials", + "value": "true" + }, + { + "name": "Vary", + "value": "Origin" + }, + { + "name": "Server", + "value": "gunicorn/19.9.0" + }, + { + "name": ":status", + "value": "200" + }, + { + "name": "duration_ms", + "value": "1" + } + ], + "content": { + "size": 3, + "mimeType": "", + "text": "[]\n" + }, + "redirectURL": "", + "headersSize": -1, + "bodySize": 3 + }, + "cache": {}, + "timings": { + "send": -1, + "wait": -1, + "receive": 1 + } + }, + { + "startedDateTime": "2020-05-21T11:02:29.278000+00:00", + "time": 1, + "request": { + "method": "GET", + "url": "http://trcc-api-service/models/aws_kong5/suites/all/runs", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "Accept-Encoding", + "value": "gzip, deflate, br" + }, + { + "name": "X-Real-Ip", + "value": "10.132.0.11" + }, + { + "name": "X-Forwarded-Port", + "value": "443" + }, + { + "name": "Accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "Dnt", + "value": "1" + }, + { + "name": "Sec-Fetch-Dest", + "value": "empty" + }, + { + "name": "Sec-Fetch-Mode", + "value": "cors" + }, + { + "name": "X-Request-Id", + "value": "8ea8d98c8675b42c921cc81dd77f06ed" + }, + { + "name": "Authorization", + "value": "bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJqSEZ0R1dybjJpY084VnpDYXpaZWUyakpFc2drY1k5ZzhpN2FTbGtielRnIn0.eyJleHAiOjE1OTAwNTkyNDMsImlhdCI6MTU5MDA1ODk0MywiYXV0aF90aW1lIjoxNTkwMDU4NjUxLCJqdGkiOiI1ODYzNmRiMy0wN2IxLTQ2ZDYtOGNiNS01MzEzMDFlZGY4MGYiLCJpc3MiOiJodHRwczovL2F1dGguc3RnLnRlc3RyLmlvL2F1dGgvcmVhbG1zL3Rlc3RyIiwiYXVkIjoiYWNjb3VudCIsInN1YiI6IjBlYWU4ZmFjLTgyYTEtNDUwNi05MWQ0LTA4ZDYxZTI2NWY1NCIsInR5cCI6IkJlYXJlciIsImF6cCI6InJlYWN0LWNsaWVudCIsIm5vbmNlIjoiNTRjMTM5OTktMDg0NS00OWNmLWI1OTAtOTY1ZThjNWI0NmJlIiwic2Vzc2lvbl9zdGF0ZSI6ImY3YjEyOTM1LThmMTctNDc1Zi04NmRhLWQ4NjFjZTYxNWZjNyIsImFjciI6IjAiLCJhbGxvd2VkLW9yaWdpbnMiOlsiaHR0cHM6Ly9zdGcudGVzdHIuaW8iLCJjaHJvbWUtZXh0ZW5zaW9uOi8vbmFkZ2VsamVtbWJna2xkaGNwYWZqbXBtYXBpcGdsY20iLCJodHRwOi8vbG9jYWxob3N0OjMwMDAiXSwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyJhY2NvdW50Ijp7InJvbGVzIjpbIm1hbmFnZS1hY2NvdW50IiwibWFuYWdlLWFjY291bnQtbGlua3MiLCJ2aWV3LXByb2ZpbGUiXX19LCJzY29wZSI6Im9wZW5pZCBwcm9maWxlIGVtYWlsIiwiZ3JvdXBfbWVtYmVyc2hpcCI6WyJzb21lT3JnSWQxMjMiXSwiZW1haWxfdmVyaWZpZWQiOnRydWUsIm5hbWUiOiJSYW1pIEJlcm1hbiIsInByZWZlcnJlZF91c2VybmFtZSI6InJhbWkuYmVybWFuQHVwOS5jb20iLCJnaXZlbl9uYW1lIjoiUmFtaSIsImZhbWlseV9uYW1lIjoiQmVybWFuIiwiZ3JvdXBfc3ViZG9tYWluIjoic29tZU9yZ0lkMTIzIiwiZW1haWwiOiJyYW1pLmJlcm1hbkB1cDkuY29tIiwiZmVhdHVyZUZsYWdzIjp7ImVkaXRFbmRwb2ludFZhcmlhYmxlcyI6dHJ1ZSwic2lkZU5hdmlnYXRpb24iOnRydWV9fQ.UEDsnoo9A8CbdIYKXoOrAAq6y2K7Aoqf-PplHhXFoVep9ewwA9qBjXqgn0fK9cnE_KfZKUcX_cy1HDhhdIfR_aHpbWWhQ3gxISkE6ALka18JIrUv7bFaHKio6eEP6tgn34QVP8aQVEB3e3g7h3dLuUvZ1xIMnt6fy03tD3KgiQlvdHwg5FhJLosiCrHgboEqN5VH_f_2QF33XiXTkDG1e-AOEnIIWqloMDTUPZEUvEo_KH68lB0Uu23YhhI5gPAuKQVb_UjFWcF_6Ysvk3C3j0cuk09DZ7YEI1u-bKp58LHnsS6gqNFQxy-CDlZ8Oht5d2I3LbwZZxHzMixzzFzJCA" + }, + { + "name": "Origin", + "value": "https://stg.testr.io" + }, + { + "name": "Sec-Fetch-Site", + "value": "same-site" + }, + { + "name": "User-Agent", + "value": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36" + }, + { + "name": "Referer", + "value": "https://stg.testr.io/someOrgId123/model/aws_kong5/lastResults/systems/all/runs" + }, + { + "name": "Accept-Language", + "value": "en-IL,en-US;q=0.9,en;q=0.8,he;q=0.7,pl;q=0.6,ru;q=0.5" + }, + { + "name": "X-Forwarded-For", + "value": "10.132.0.11" + }, + { + "name": "X-Forwarded-Host", + "value": "trcc.stg.testr.io" + }, + { + "name": "X-Forwarded-Proto", + "value": "https" + }, + { + "name": "X-Scheme", + "value": "https" + }, + { + "name": ":method", + "value": "GET" + }, + { + "name": ":path", + "value": "/models/aws_kong5/suites/all/runs" + }, + { + "name": ":authority", + "value": "trcc.stg.testr.io" + }, + { + "name": ":scheme", + "value": "http" + }, + { + "name": "x-request-start", + "value": "1590058949.278" + }, + { + "name": "x-up9-source", + "value": "10.48.1.44" + }, + { + "name": "x-up9-destination", + "value": "10.48.0.155:5000" + } + ], + "queryString": [], + "headersSize": -1, + "bodySize": -1 + }, + "response": { + "status": 200, + "statusText": "OK", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "Vary", + "value": "Origin" + }, + { + "name": "Server", + "value": "gunicorn/19.9.0" + }, + { + "name": "Date", + "value": "Thu, 21 May 2020 11:02:28 GMT" + }, + { + "name": "Connection", + "value": "keep-alive" + }, + { + "name": "Content-Type", + "value": "application/json" + }, + { + "name": "Content-Length", + "value": "3" + }, + { + "name": "Access-Control-Allow-Origin", + "value": "https://stg.testr.io" + }, + { + "name": "Access-Control-Allow-Credentials", + "value": "true" + }, + { + "name": ":status", + "value": "200" + }, + { + "name": "duration_ms", + "value": "1" + } + ], + "content": { + "size": 3, + "mimeType": "", + "text": "[]\n" + }, + "redirectURL": "", + "headersSize": -1, + "bodySize": 3 + }, + "cache": {}, + "timings": { + "send": -1, + "wait": -1, + "receive": 1 + } + }, + { + "startedDateTime": "2020-05-21T11:02:29.278000+00:00", + "time": 1, + "request": { + "method": "GET", + "url": "http://trcc-api-service/proxies", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "X-Scheme", + "value": "https" + }, + { + "name": "X-Forwarded-Proto", + "value": "https" + }, + { + "name": "Authorization", + "value": "bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJqSEZ0R1dybjJpY084VnpDYXpaZWUyakpFc2drY1k5ZzhpN2FTbGtielRnIn0.eyJleHAiOjE1OTAwNTkxNjYsImlhdCI6MTU5MDA1ODg2NiwiYXV0aF90aW1lIjoxNTg5OTU4NDcwLCJqdGkiOiJiNWVhOWVkYS1iZGIwLTQzOTUtOWYyZi1jMWNkYzNmZDRkZjYiLCJpc3MiOiJodHRwczovL2F1dGguc3RnLnRlc3RyLmlvL2F1dGgvcmVhbG1zL3Rlc3RyIiwiYXVkIjoiYWNjb3VudCIsInN1YiI6ImU4NzAxMDZjLWJjYjItNDQxMy05Y2Q2LTUwMTZiNTUxMDRlYiIsInR5cCI6IkJlYXJlciIsImF6cCI6InJlYWN0LWNsaWVudCIsIm5vbmNlIjoiNTZkNzJmNzMtNzVhOC00NzdlLTlkNjctZWVjYmNkZmJkNzYxIiwic2Vzc2lvbl9zdGF0ZSI6IjM2ZDc2MDAxLTE5M2EtNGQ5OS05MTIwLTZmNGZkMjEwZDAxMiIsImFjciI6IjAiLCJhbGxvd2VkLW9yaWdpbnMiOlsiaHR0cHM6Ly9zdGcudGVzdHIuaW8iLCJjaHJvbWUtZXh0ZW5zaW9uOi8vbmFkZ2VsamVtbWJna2xkaGNwYWZqbXBtYXBpcGdsY20iLCJodHRwOi8vbG9jYWxob3N0OjMwMDAiXSwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm1hbmFnZUZlYXR1cmVGbGFncyIsIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyJhY2NvdW50Ijp7InJvbGVzIjpbIm1hbmFnZS1hY2NvdW50IiwibWFuYWdlLWFjY291bnQtbGlua3MiLCJ2aWV3LXByb2ZpbGUiXX19LCJzY29wZSI6Im9wZW5pZCBwcm9maWxlIGVtYWlsIiwiZ3JvdXBfbWVtYmVyc2hpcCI6WyJzb21lT3JnSWQxMjMiXSwiZW1haWxfdmVyaWZpZWQiOnRydWUsIm5hbWUiOiJMaXJheiBZZWhlemtlbCIsInByZWZlcnJlZF91c2VybmFtZSI6ImxpcmF6eUB1cDkuY29tIiwiZ2l2ZW5fbmFtZSI6IkxpcmF6IiwiZmFtaWx5X25hbWUiOiJZZWhlemtlbCIsImdyb3VwX3N1YmRvbWFpbiI6InNvbWVPcmdJZDEyMyIsImVtYWlsIjoibGlyYXp5QHVwOS5jb20iLCJmZWF0dXJlRmxhZ3MiOnsiZWRpdEVuZHBvaW50VmFyaWFibGVzIjp0cnVlLCJzaWRlTmF2aWdhdGlvbiI6dHJ1ZX19.UtoOxWkLeLbutQDkjZloImIVXyYD2PyajFrKXefhUJhWBoeNPRwGeMAgH24oudwpHrCdnW58jWe0uAAiPyYiFr8O5mhGw-AtLqvv9R1I1RAoVyrOmRcZbJLKMTYy-NnJcVk1_KlPqW8e3VTz8q3gel9kLBJU5cjAm2KvDa2u_u65-Dyxa_nBO9tFCfGL4NdYqX3mp_9q058mB01OJo0n7sWNxEtX4AK5RzFSsVFqZoOG2HEu7JDzHBfA-wfqpsIg31-_rmrxjSrOunIrSzH5-zDbmbhob-Z541W9McjcEZN52SIhemIAf1dx-kOKXceNYlX8usOjOMIPG6WyOopYGQ" + }, + { + "name": "User-Agent", + "value": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36" + }, + { + "name": "Accept", + "value": "*/*" + }, + { + "name": "X-Request-Id", + "value": "3e998c7d3f50aedbbad498e7c5ec0e8c" + }, + { + "name": "X-Real-Ip", + "value": "10.132.0.34" + }, + { + "name": "X-Forwarded-For", + "value": "10.132.0.34" + }, + { + "name": "Accept-Encoding", + "value": "gzip, deflate, br" + }, + { + "name": "Accept-Language", + "value": "en-US,en;q=0.9" + }, + { + "name": "X-Forwarded-Host", + "value": "trcc.stg.testr.io" + }, + { + "name": "X-Forwarded-Port", + "value": "443" + }, + { + "name": "Sec-Fetch-Mode", + "value": "cors" + }, + { + "name": "Cookie", + "value": "_ga=GA1.2.780780214.1589122353; _gid=GA1.2.2003763308.1589719109; intercom-session-gcndx9tp=MklzblNNY05RODJSdjUrdzFnMm8wWE1neTNJYkJRbDBHWVlOdzh5T0hONUJCaGw1ZTlMT1lZNTAvYkdsc1pTdC0tZ1V3TEtXVnpFdkJ6NllYSHpGTW15QT09--8ac73e1394e1c2f8d9bffebbbc1debcf06e4dcc3" + }, + { + "name": "Sec-Fetch-Site", + "value": "none" + }, + { + "name": "Sec-Fetch-Dest", + "value": "empty" + }, + { + "name": ":method", + "value": "GET" + }, + { + "name": ":path", + "value": "/proxies" + }, + { + "name": ":authority", + "value": "trcc.stg.testr.io" + }, + { + "name": ":scheme", + "value": "http" + }, + { + "name": "x-request-start", + "value": "1590058949.278" + }, + { + "name": "x-up9-source", + "value": "10.48.1.44" + }, + { + "name": "x-up9-destination", + "value": "10.48.0.155:5000" + } + ], + "queryString": [], + "headersSize": -1, + "bodySize": -1 + }, + "response": { + "status": 200, + "statusText": "OK", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "Access-Control-Allow-Origin", + "value": "http://localhost:3000" + }, + { + "name": "Access-Control-Allow-Credentials", + "value": "true" + }, + { + "name": "Vary", + "value": "Origin" + }, + { + "name": "Server", + "value": "gunicorn/19.9.0" + }, + { + "name": "Date", + "value": "Thu, 21 May 2020 11:02:28 GMT" + }, + { + "name": "Connection", + "value": "keep-alive" + }, + { + "name": "Content-Type", + "value": "application/json" + }, + { + "name": "Content-Length", + "value": "215" + }, + { + "name": ":status", + "value": "200" + }, + { + "name": "duration_ms", + "value": "1" + } + ], + "content": { + "size": 215, + "mimeType": "", + "text": "{\"createDate\":\"2020-05-21T10:45:02+00:00\",\"idleSince\":\"2020-05-21T10:51:26.131837\",\"modelId\":null,\"orgId\":\"someOrgId123\",\"password\":\"anna\",\"proxyId\":\"lirazyup9com-prx1\",\"status\":\"idle\",\"urls\":{},\"userName\":\"proxy\"}\n" + }, + "redirectURL": "", + "headersSize": -1, + "bodySize": 215 + }, + "cache": {}, + "timings": { + "send": -1, + "wait": -1, + "receive": 1 + } + }, + { + "startedDateTime": "2020-05-21T11:02:29.279000+00:00", + "time": 1, + "request": { + "method": "GET", + "url": "http://trcc-api-service/models/liraz_test_2105/suites/all/runs", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "X-Request-Id", + "value": "4fa1120af2e20c9004880fc4c9fbfbff" + }, + { + "name": "Sec-Fetch-Site", + "value": "cross-site" + }, + { + "name": "Sec-Fetch-Mode", + "value": "cors" + }, + { + "name": "Accept-Encoding", + "value": "gzip, deflate, br" + }, + { + "name": "Accept-Language", + "value": "en-US,en;q=0.9" + }, + { + "name": "X-Forwarded-Host", + "value": "trcc.stg.testr.io" + }, + { + "name": "X-Forwarded-Port", + "value": "443" + }, + { + "name": "Accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "Sec-Fetch-Dest", + "value": "empty" + }, + { + "name": "X-Forwarded-Proto", + "value": "https" + }, + { + "name": "Origin", + "value": "http://localhost:3000" + }, + { + "name": "X-Real-Ip", + "value": "10.132.0.22" + }, + { + "name": "X-Forwarded-For", + "value": "10.132.0.22" + }, + { + "name": "X-Scheme", + "value": "https" + }, + { + "name": "Authorization", + "value": "bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJqSEZ0R1dybjJpY084VnpDYXpaZWUyakpFc2drY1k5ZzhpN2FTbGtielRnIn0.eyJleHAiOjE1OTAwNTkxMTQsImlhdCI6MTU5MDA1ODgxNCwiYXV0aF90aW1lIjoxNTg5OTU4NDcwLCJqdGkiOiIyNzgxOTYyMy00Yjk5LTQ2MzQtOWZlNi02ZDRiNzYwNGU2ZmMiLCJpc3MiOiJodHRwczovL2F1dGguc3RnLnRlc3RyLmlvL2F1dGgvcmVhbG1zL3Rlc3RyIiwiYXVkIjoiYWNjb3VudCIsInN1YiI6ImU4NzAxMDZjLWJjYjItNDQxMy05Y2Q2LTUwMTZiNTUxMDRlYiIsInR5cCI6IkJlYXJlciIsImF6cCI6InJlYWN0LWNsaWVudCIsIm5vbmNlIjoiYzJiZTgwNGYtZjBiYS00ZWUxLTgyZWQtYmIzMTY5ZDBkYjU1Iiwic2Vzc2lvbl9zdGF0ZSI6IjM2ZDc2MDAxLTE5M2EtNGQ5OS05MTIwLTZmNGZkMjEwZDAxMiIsImFjciI6IjAiLCJhbGxvd2VkLW9yaWdpbnMiOlsiaHR0cHM6Ly9zdGcudGVzdHIuaW8iLCJjaHJvbWUtZXh0ZW5zaW9uOi8vbmFkZ2VsamVtbWJna2xkaGNwYWZqbXBtYXBpcGdsY20iLCJodHRwOi8vbG9jYWxob3N0OjMwMDAiXSwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm1hbmFnZUZlYXR1cmVGbGFncyIsIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyJhY2NvdW50Ijp7InJvbGVzIjpbIm1hbmFnZS1hY2NvdW50IiwibWFuYWdlLWFjY291bnQtbGlua3MiLCJ2aWV3LXByb2ZpbGUiXX19LCJzY29wZSI6Im9wZW5pZCBwcm9maWxlIGVtYWlsIiwiZ3JvdXBfbWVtYmVyc2hpcCI6WyJzb21lT3JnSWQxMjMiXSwiZW1haWxfdmVyaWZpZWQiOnRydWUsIm5hbWUiOiJMaXJheiBZZWhlemtlbCIsInByZWZlcnJlZF91c2VybmFtZSI6ImxpcmF6eUB1cDkuY29tIiwiZ2l2ZW5fbmFtZSI6IkxpcmF6IiwiZmFtaWx5X25hbWUiOiJZZWhlemtlbCIsImdyb3VwX3N1YmRvbWFpbiI6InNvbWVPcmdJZDEyMyIsImVtYWlsIjoibGlyYXp5QHVwOS5jb20iLCJmZWF0dXJlRmxhZ3MiOnsiZWRpdEVuZHBvaW50VmFyaWFibGVzIjp0cnVlLCJzaWRlTmF2aWdhdGlvbiI6dHJ1ZX19.KdLz7jeIr8HaST4FpJROrg6Sp-o1Nl5dU2hIbNCA0FEY-jmaoubiOlz6p7QthTJ8t-S0R_qdZtd7rXf249L6wGG_A6rriZhH41Fxhyrb0ig8OVrQp-sepv_AUf7GEIGYgpYIPFnZ6G3Dkq1aY9NzLXruh7fly_ZRkRlzF_wb1vt5NRJz3xeMrj82BOJJmUpv08AYYQhnyjKiBp7rgrNTTBejaFBozsJgXGkIi-DZfv862tgFhvPNuXsqKO5iOxv9nApuQJ2O4knVB1ag7tqB1xQcvBdkZt9gG1VVkpWsM_2j5C9cBwOuPRgHZhpZuT_YNfB4ITefGV1aYfRF-cjnug" + }, + { + "name": "User-Agent", + "value": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36" + }, + { + "name": "Referer", + "value": "http://localhost:3000/someOrgId123/model/liraz_test_2105/lastResults/systems/all/summary" + }, + { + "name": ":method", + "value": "GET" + }, + { + "name": ":path", + "value": "/models/liraz_test_2105/suites/all/runs" + }, + { + "name": ":authority", + "value": "trcc.stg.testr.io" + }, + { + "name": ":scheme", + "value": "http" + }, + { + "name": "x-request-start", + "value": "1590058949.279" + }, + { + "name": "x-up9-source", + "value": "10.48.1.44" + }, + { + "name": "x-up9-destination", + "value": "10.48.0.155:5000" + } + ], + "queryString": [], + "headersSize": -1, + "bodySize": -1 + }, + "response": { + "status": 200, + "statusText": "OK", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "Content-Type", + "value": "application/json" + }, + { + "name": "Content-Length", + "value": "3" + }, + { + "name": "Access-Control-Allow-Origin", + "value": "http://localhost:3000" + }, + { + "name": "Access-Control-Allow-Credentials", + "value": "true" + }, + { + "name": "Vary", + "value": "Origin" + }, + { + "name": "Server", + "value": "gunicorn/19.9.0" + }, + { + "name": "Date", + "value": "Thu, 21 May 2020 11:02:28 GMT" + }, + { + "name": "Connection", + "value": "keep-alive" + }, + { + "name": ":status", + "value": "200" + }, + { + "name": "duration_ms", + "value": "1" + } + ], + "content": { + "size": 3, + "mimeType": "", + "text": "[]\n" + }, + "redirectURL": "", + "headersSize": -1, + "bodySize": 3 + }, + "cache": {}, + "timings": { + "send": -1, + "wait": -1, + "receive": 1 + } + }, + { + "startedDateTime": "2020-05-21T11:02:29.279000+00:00", + "time": 1, + "request": { + "method": "GET", + "url": "http://trcc-api-service/models/aws_kong5/suites/all/runs", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "X-Forwarded-Port", + "value": "443" + }, + { + "name": "Dnt", + "value": "1" + }, + { + "name": "Authorization", + "value": "bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJqSEZ0R1dybjJpY084VnpDYXpaZWUyakpFc2drY1k5ZzhpN2FTbGtielRnIn0.eyJleHAiOjE1OTAwNTkyNDMsImlhdCI6MTU5MDA1ODk0MywiYXV0aF90aW1lIjoxNTkwMDU4NjUxLCJqdGkiOiI1ODYzNmRiMy0wN2IxLTQ2ZDYtOGNiNS01MzEzMDFlZGY4MGYiLCJpc3MiOiJodHRwczovL2F1dGguc3RnLnRlc3RyLmlvL2F1dGgvcmVhbG1zL3Rlc3RyIiwiYXVkIjoiYWNjb3VudCIsInN1YiI6IjBlYWU4ZmFjLTgyYTEtNDUwNi05MWQ0LTA4ZDYxZTI2NWY1NCIsInR5cCI6IkJlYXJlciIsImF6cCI6InJlYWN0LWNsaWVudCIsIm5vbmNlIjoiNTRjMTM5OTktMDg0NS00OWNmLWI1OTAtOTY1ZThjNWI0NmJlIiwic2Vzc2lvbl9zdGF0ZSI6ImY3YjEyOTM1LThmMTctNDc1Zi04NmRhLWQ4NjFjZTYxNWZjNyIsImFjciI6IjAiLCJhbGxvd2VkLW9yaWdpbnMiOlsiaHR0cHM6Ly9zdGcudGVzdHIuaW8iLCJjaHJvbWUtZXh0ZW5zaW9uOi8vbmFkZ2VsamVtbWJna2xkaGNwYWZqbXBtYXBpcGdsY20iLCJodHRwOi8vbG9jYWxob3N0OjMwMDAiXSwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyJhY2NvdW50Ijp7InJvbGVzIjpbIm1hbmFnZS1hY2NvdW50IiwibWFuYWdlLWFjY291bnQtbGlua3MiLCJ2aWV3LXByb2ZpbGUiXX19LCJzY29wZSI6Im9wZW5pZCBwcm9maWxlIGVtYWlsIiwiZ3JvdXBfbWVtYmVyc2hpcCI6WyJzb21lT3JnSWQxMjMiXSwiZW1haWxfdmVyaWZpZWQiOnRydWUsIm5hbWUiOiJSYW1pIEJlcm1hbiIsInByZWZlcnJlZF91c2VybmFtZSI6InJhbWkuYmVybWFuQHVwOS5jb20iLCJnaXZlbl9uYW1lIjoiUmFtaSIsImZhbWlseV9uYW1lIjoiQmVybWFuIiwiZ3JvdXBfc3ViZG9tYWluIjoic29tZU9yZ0lkMTIzIiwiZW1haWwiOiJyYW1pLmJlcm1hbkB1cDkuY29tIiwiZmVhdHVyZUZsYWdzIjp7ImVkaXRFbmRwb2ludFZhcmlhYmxlcyI6dHJ1ZSwic2lkZU5hdmlnYXRpb24iOnRydWV9fQ.UEDsnoo9A8CbdIYKXoOrAAq6y2K7Aoqf-PplHhXFoVep9ewwA9qBjXqgn0fK9cnE_KfZKUcX_cy1HDhhdIfR_aHpbWWhQ3gxISkE6ALka18JIrUv7bFaHKio6eEP6tgn34QVP8aQVEB3e3g7h3dLuUvZ1xIMnt6fy03tD3KgiQlvdHwg5FhJLosiCrHgboEqN5VH_f_2QF33XiXTkDG1e-AOEnIIWqloMDTUPZEUvEo_KH68lB0Uu23YhhI5gPAuKQVb_UjFWcF_6Ysvk3C3j0cuk09DZ7YEI1u-bKp58LHnsS6gqNFQxy-CDlZ8Oht5d2I3LbwZZxHzMixzzFzJCA" + }, + { + "name": "Sec-Fetch-Mode", + "value": "cors" + }, + { + "name": "Referer", + "value": "https://stg.testr.io/someOrgId123/model/aws_kong5/lastResults/systems/all/runs" + }, + { + "name": "X-Request-Id", + "value": "1e987af07202375a8e20c38068e13270" + }, + { + "name": "X-Forwarded-For", + "value": "10.132.0.11" + }, + { + "name": "X-Forwarded-Host", + "value": "trcc.stg.testr.io" + }, + { + "name": "X-Forwarded-Proto", + "value": "https" + }, + { + "name": "X-Scheme", + "value": "https" + }, + { + "name": "Origin", + "value": "https://stg.testr.io" + }, + { + "name": "User-Agent", + "value": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36" + }, + { + "name": "Sec-Fetch-Site", + "value": "same-site" + }, + { + "name": "Sec-Fetch-Dest", + "value": "empty" + }, + { + "name": "Accept-Encoding", + "value": "gzip, deflate, br" + }, + { + "name": "X-Real-Ip", + "value": "10.132.0.11" + }, + { + "name": "Accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "Accept-Language", + "value": "en-IL,en-US;q=0.9,en;q=0.8,he;q=0.7,pl;q=0.6,ru;q=0.5" + }, + { + "name": ":method", + "value": "GET" + }, + { + "name": ":path", + "value": "/models/aws_kong5/suites/all/runs" + }, + { + "name": ":authority", + "value": "trcc.stg.testr.io" + }, + { + "name": ":scheme", + "value": "http" + }, + { + "name": "x-request-start", + "value": "1590058949.279" + }, + { + "name": "x-up9-source", + "value": "10.48.1.44" + }, + { + "name": "x-up9-destination", + "value": "10.48.0.155:5000" + } + ], + "queryString": [], + "headersSize": -1, + "bodySize": -1 + }, + "response": { + "status": 200, + "statusText": "OK", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "Vary", + "value": "Origin" + }, + { + "name": "Server", + "value": "gunicorn/19.9.0" + }, + { + "name": "Date", + "value": "Thu, 21 May 2020 11:02:28 GMT" + }, + { + "name": "Connection", + "value": "keep-alive" + }, + { + "name": "Content-Type", + "value": "application/json" + }, + { + "name": "Content-Length", + "value": "3" + }, + { + "name": "Access-Control-Allow-Origin", + "value": "https://stg.testr.io" + }, + { + "name": "Access-Control-Allow-Credentials", + "value": "true" + }, + { + "name": ":status", + "value": "200" + }, + { + "name": "duration_ms", + "value": "1" + } + ], + "content": { + "size": 3, + "mimeType": "", + "text": "[]\n" + }, + "redirectURL": "", + "headersSize": -1, + "bodySize": 3 + }, + "cache": {}, + "timings": { + "send": -1, + "wait": -1, + "receive": 1 + } + }, + { + "startedDateTime": "2020-05-21T11:02:29.282000+00:00", + "time": 1, + "request": { + "method": "GET", + "url": "http://trcc-api-service/models/aws_kong5/suites/all/runs", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "Accept-Language", + "value": "en-IL,en-US;q=0.9,en;q=0.8,he;q=0.7,pl;q=0.6,ru;q=0.5" + }, + { + "name": "X-Forwarded-For", + "value": "10.132.0.11" + }, + { + "name": "Dnt", + "value": "1" + }, + { + "name": "Sec-Fetch-Mode", + "value": "cors" + }, + { + "name": "Sec-Fetch-Dest", + "value": "empty" + }, + { + "name": "Referer", + "value": "https://stg.testr.io/someOrgId123/model/aws_kong5/lastResults/systems/all/runs" + }, + { + "name": "Accept-Encoding", + "value": "gzip, deflate, br" + }, + { + "name": "X-Forwarded-Port", + "value": "443" + }, + { + "name": "X-Scheme", + "value": "https" + }, + { + "name": "Authorization", + "value": "bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJqSEZ0R1dybjJpY084VnpDYXpaZWUyakpFc2drY1k5ZzhpN2FTbGtielRnIn0.eyJleHAiOjE1OTAwNTkyNDMsImlhdCI6MTU5MDA1ODk0MywiYXV0aF90aW1lIjoxNTkwMDU4NjUxLCJqdGkiOiI1ODYzNmRiMy0wN2IxLTQ2ZDYtOGNiNS01MzEzMDFlZGY4MGYiLCJpc3MiOiJodHRwczovL2F1dGguc3RnLnRlc3RyLmlvL2F1dGgvcmVhbG1zL3Rlc3RyIiwiYXVkIjoiYWNjb3VudCIsInN1YiI6IjBlYWU4ZmFjLTgyYTEtNDUwNi05MWQ0LTA4ZDYxZTI2NWY1NCIsInR5cCI6IkJlYXJlciIsImF6cCI6InJlYWN0LWNsaWVudCIsIm5vbmNlIjoiNTRjMTM5OTktMDg0NS00OWNmLWI1OTAtOTY1ZThjNWI0NmJlIiwic2Vzc2lvbl9zdGF0ZSI6ImY3YjEyOTM1LThmMTctNDc1Zi04NmRhLWQ4NjFjZTYxNWZjNyIsImFjciI6IjAiLCJhbGxvd2VkLW9yaWdpbnMiOlsiaHR0cHM6Ly9zdGcudGVzdHIuaW8iLCJjaHJvbWUtZXh0ZW5zaW9uOi8vbmFkZ2VsamVtbWJna2xkaGNwYWZqbXBtYXBpcGdsY20iLCJodHRwOi8vbG9jYWxob3N0OjMwMDAiXSwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyJhY2NvdW50Ijp7InJvbGVzIjpbIm1hbmFnZS1hY2NvdW50IiwibWFuYWdlLWFjY291bnQtbGlua3MiLCJ2aWV3LXByb2ZpbGUiXX19LCJzY29wZSI6Im9wZW5pZCBwcm9maWxlIGVtYWlsIiwiZ3JvdXBfbWVtYmVyc2hpcCI6WyJzb21lT3JnSWQxMjMiXSwiZW1haWxfdmVyaWZpZWQiOnRydWUsIm5hbWUiOiJSYW1pIEJlcm1hbiIsInByZWZlcnJlZF91c2VybmFtZSI6InJhbWkuYmVybWFuQHVwOS5jb20iLCJnaXZlbl9uYW1lIjoiUmFtaSIsImZhbWlseV9uYW1lIjoiQmVybWFuIiwiZ3JvdXBfc3ViZG9tYWluIjoic29tZU9yZ0lkMTIzIiwiZW1haWwiOiJyYW1pLmJlcm1hbkB1cDkuY29tIiwiZmVhdHVyZUZsYWdzIjp7ImVkaXRFbmRwb2ludFZhcmlhYmxlcyI6dHJ1ZSwic2lkZU5hdmlnYXRpb24iOnRydWV9fQ.UEDsnoo9A8CbdIYKXoOrAAq6y2K7Aoqf-PplHhXFoVep9ewwA9qBjXqgn0fK9cnE_KfZKUcX_cy1HDhhdIfR_aHpbWWhQ3gxISkE6ALka18JIrUv7bFaHKio6eEP6tgn34QVP8aQVEB3e3g7h3dLuUvZ1xIMnt6fy03tD3KgiQlvdHwg5FhJLosiCrHgboEqN5VH_f_2QF33XiXTkDG1e-AOEnIIWqloMDTUPZEUvEo_KH68lB0Uu23YhhI5gPAuKQVb_UjFWcF_6Ysvk3C3j0cuk09DZ7YEI1u-bKp58LHnsS6gqNFQxy-CDlZ8Oht5d2I3LbwZZxHzMixzzFzJCA" + }, + { + "name": "Sec-Fetch-Site", + "value": "same-site" + }, + { + "name": "User-Agent", + "value": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36" + }, + { + "name": "Origin", + "value": "https://stg.testr.io" + }, + { + "name": "X-Request-Id", + "value": "617a3428ab7448533ef3fa43299ecbcd" + }, + { + "name": "X-Real-Ip", + "value": "10.132.0.11" + }, + { + "name": "X-Forwarded-Host", + "value": "trcc.stg.testr.io" + }, + { + "name": "X-Forwarded-Proto", + "value": "https" + }, + { + "name": "Accept", + "value": "application/json, text/plain, */*" + }, + { + "name": ":method", + "value": "GET" + }, + { + "name": ":path", + "value": "/models/aws_kong5/suites/all/runs" + }, + { + "name": ":authority", + "value": "trcc.stg.testr.io" + }, + { + "name": ":scheme", + "value": "http" + }, + { + "name": "x-request-start", + "value": "1590058949.282" + }, + { + "name": "x-up9-source", + "value": "10.48.1.44" + }, + { + "name": "x-up9-destination", + "value": "10.48.0.155:5000" + } + ], + "queryString": [], + "headersSize": -1, + "bodySize": -1 + }, + "response": { + "status": 200, + "statusText": "OK", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "Vary", + "value": "Origin" + }, + { + "name": "Server", + "value": "gunicorn/19.9.0" + }, + { + "name": "Date", + "value": "Thu, 21 May 2020 11:02:28 GMT" + }, + { + "name": "Connection", + "value": "keep-alive" + }, + { + "name": "Content-Type", + "value": "application/json" + }, + { + "name": "Content-Length", + "value": "3" + }, + { + "name": "Access-Control-Allow-Origin", + "value": "https://stg.testr.io" + }, + { + "name": "Access-Control-Allow-Credentials", + "value": "true" + }, + { + "name": ":status", + "value": "200" + }, + { + "name": "duration_ms", + "value": "1" + } + ], + "content": { + "size": 3, + "mimeType": "", + "text": "[]\n" + }, + "redirectURL": "", + "headersSize": -1, + "bodySize": 3 + }, + "cache": {}, + "timings": { + "send": -1, + "wait": -1, + "receive": 1 + } + }, + { + "startedDateTime": "2020-05-21T11:02:28.255000+00:00", + "time": 1027, + "request": { + "method": "GET", + "url": "http://trcc-api-service/tapping/state", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "X-Request-Id", + "value": "60b36fa8d77385e87b4c01fa4a2d06bd" + }, + { + "name": "X-Real-Ip", + "value": "10.132.0.34" + }, + { + "name": "X-Forwarded-Port", + "value": "443" + }, + { + "name": "X-Scheme", + "value": "https" + }, + { + "name": "Authorization", + "value": "Bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJqSEZ0R1dybjJpY084VnpDYXpaZWUyakpFc2drY1k5ZzhpN2FTbGtielRnIn0.eyJleHAiOjE1OTAwNTkxNTgsImlhdCI6MTU5MDA1ODg1OCwianRpIjoiNjA5MDI1NDYtMWY0Mi00ZTU4LWEwYWYtZGQzNDk1YjI0YTY3IiwiaXNzIjoiaHR0cHM6Ly9hdXRoLnN0Zy50ZXN0ci5pby9hdXRoL3JlYWxtcy90ZXN0ciIsImF1ZCI6ImFjY291bnQiLCJzdWIiOiI0YWFkZWM0Mi01OWE5LTRmZDUtODI3NC1lZWI5NDNmODQyNmUiLCJ0eXAiOiJCZWFyZXIiLCJhenAiOiIzWjE5LTNzYnN2MU9KSDBEd2l2UWkyYmZVSzdsSlNFdSIsInNlc3Npb25fc3RhdGUiOiI3NTc4NWZkYS05YWIyLTQwNmYtYTI1Yy0yMjcwNTZiZmNjNzUiLCJhY3IiOiIxIiwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyJhY2NvdW50Ijp7InJvbGVzIjpbIm1hbmFnZS1hY2NvdW50IiwibWFuYWdlLWFjY291bnQtbGlua3MiLCJ2aWV3LXByb2ZpbGUiXX19LCJzY29wZSI6InByb2ZpbGUgZW1haWwiLCJjbGllbnRJZCI6IjNaMTktM3Nic3YxT0pIMER3aXZRaTJiZlVLN2xKU0V1IiwiY2xpZW50SG9zdCI6IjEwLjEzMi4wLjMwIiwiZW1haWxfdmVyaWZpZWQiOmZhbHNlLCJvcmdhbml6YXRpb24iOiJzb21lT3JnSWQxMjMiLCJwcmVmZXJyZWRfdXNlcm5hbWUiOiJzZXJ2aWNlLWFjY291bnQtM3oxOS0zc2JzdjFvamgwZHdpdnFpMmJmdWs3bGpzZXUiLCJjbGllbnRBZGRyZXNzIjoiMTAuMTMyLjAuMzAiLCJlbWFpbCI6InNlcnZpY2UtYWNjb3VudC0zejE5LTNzYnN2MW9qaDBkd2l2cWkyYmZ1azdsanNldUBwbGFjZWhvbGRlci5vcmcifQ.IMl_9miuOr4S3mRDh11hIFOaDJkexcdL6qZGPOoT13KM2KqXXRYR93078P8XSi8x9AAuFmWjogwPHCqJuK9WYqdcvK7FYtWEMe5wDbehqIV07yqKpewRemAcRs9VyXlrjxOdUMdtc47ueJtMsQ4Au9KrUCpxMvHqHOOAD5KstJOWWUmFSoLT6e1NOsHAOVjefRcDxAHyTwbLMh_ztpvzuf06kEB1tV7wMwekT0yL0LOaMFdbkEY8kCxxZprPOFu43WlwMCyvnmR-IhGH47tsmcBEVz6_Am4V0zLn-C9Bhk5mbmoNhcyC54Mbl5gdjVQq4oyobmbTTj3909K8yYpMnA" + }, + { + "name": "X-Forwarded-For", + "value": "10.132.0.34" + }, + { + "name": "X-Forwarded-Host", + "value": "trcc.stg.testr.io" + }, + { + "name": "X-Forwarded-Proto", + "value": "https" + }, + { + "name": "User-Agent", + "value": "python-requests/2.23.0" + }, + { + "name": "Accept-Encoding", + "value": "gzip, deflate" + }, + { + "name": "Accept", + "value": "*/*" + }, + { + "name": ":method", + "value": "GET" + }, + { + "name": ":path", + "value": "/tapping/state" + }, + { + "name": ":authority", + "value": "trcc.stg.testr.io" + }, + { + "name": ":scheme", + "value": "http" + }, + { + "name": "x-request-start", + "value": "1590058948.255" + }, + { + "name": "x-up9-source", + "value": "10.48.1.44" + }, + { + "name": "x-up9-destination", + "value": "10.48.0.155:5000" + } + ], + "queryString": [], + "headersSize": -1, + "bodySize": -1 + }, + "response": { + "status": 200, + "statusText": "OK", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "Content-Type", + "value": "application/json" + }, + { + "name": "Content-Length", + "value": "222" + }, + { + "name": "Access-Control-Allow-Origin", + "value": "https://stg.testr.io" + }, + { + "name": "Access-Control-Allow-Credentials", + "value": "true" + }, + { + "name": "Vary", + "value": "Origin" + }, + { + "name": "Server", + "value": "gunicorn/19.9.0" + }, + { + "name": "Date", + "value": "Thu, 21 May 2020 11:02:28 GMT" + }, + { + "name": "Connection", + "value": "keep-alive" + }, + { + "name": ":status", + "value": "200" + }, + { + "name": "duration_ms", + "value": "1027" + } + ], + "content": { + "size": 222, + "mimeType": "", + "text": "[{\"runId\":\"fpfrlibnwy\",\"status\":\"COMPLETED\"},{\"runId\":\"huuonvenvp\",\"status\":\"COMPLETED\"},{\"runId\":\"lbtcxllqvg\",\"status\":\"COMPLETED\"},{\"runId\":\"tycbfylptk\",\"status\":\"COMPLETED\"},{\"runId\":\"zlzddvtcaa\",\"status\":\"COMPLETED\"}]\n" + }, + "redirectURL": "", + "headersSize": -1, + "bodySize": 222 + }, + "cache": {}, + "timings": { + "send": -1, + "wait": -1, + "receive": 1027 + } + }, + { + "startedDateTime": "2020-05-21T11:02:29.282000+00:00", + "time": 1, + "request": { + "method": "GET", + "url": "http://trcc-api-service/models/liraz_test_2105/suites/all/runs", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "X-Forwarded-For", + "value": "10.132.0.22" + }, + { + "name": "X-Forwarded-Port", + "value": "443" + }, + { + "name": "Sec-Fetch-Site", + "value": "cross-site" + }, + { + "name": "Referer", + "value": "http://localhost:3000/someOrgId123/model/liraz_test_2105/lastResults/systems/all/summary" + }, + { + "name": "Origin", + "value": "http://localhost:3000" + }, + { + "name": "Sec-Fetch-Dest", + "value": "empty" + }, + { + "name": "X-Request-Id", + "value": "8199d3ce1bdd31afbe80a89156da16e4" + }, + { + "name": "X-Forwarded-Host", + "value": "trcc.stg.testr.io" + }, + { + "name": "Authorization", + "value": "bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJqSEZ0R1dybjJpY084VnpDYXpaZWUyakpFc2drY1k5ZzhpN2FTbGtielRnIn0.eyJleHAiOjE1OTAwNTkxMTQsImlhdCI6MTU5MDA1ODgxNCwiYXV0aF90aW1lIjoxNTg5OTU4NDcwLCJqdGkiOiIyNzgxOTYyMy00Yjk5LTQ2MzQtOWZlNi02ZDRiNzYwNGU2ZmMiLCJpc3MiOiJodHRwczovL2F1dGguc3RnLnRlc3RyLmlvL2F1dGgvcmVhbG1zL3Rlc3RyIiwiYXVkIjoiYWNjb3VudCIsInN1YiI6ImU4NzAxMDZjLWJjYjItNDQxMy05Y2Q2LTUwMTZiNTUxMDRlYiIsInR5cCI6IkJlYXJlciIsImF6cCI6InJlYWN0LWNsaWVudCIsIm5vbmNlIjoiYzJiZTgwNGYtZjBiYS00ZWUxLTgyZWQtYmIzMTY5ZDBkYjU1Iiwic2Vzc2lvbl9zdGF0ZSI6IjM2ZDc2MDAxLTE5M2EtNGQ5OS05MTIwLTZmNGZkMjEwZDAxMiIsImFjciI6IjAiLCJhbGxvd2VkLW9yaWdpbnMiOlsiaHR0cHM6Ly9zdGcudGVzdHIuaW8iLCJjaHJvbWUtZXh0ZW5zaW9uOi8vbmFkZ2VsamVtbWJna2xkaGNwYWZqbXBtYXBpcGdsY20iLCJodHRwOi8vbG9jYWxob3N0OjMwMDAiXSwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm1hbmFnZUZlYXR1cmVGbGFncyIsIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyJhY2NvdW50Ijp7InJvbGVzIjpbIm1hbmFnZS1hY2NvdW50IiwibWFuYWdlLWFjY291bnQtbGlua3MiLCJ2aWV3LXByb2ZpbGUiXX19LCJzY29wZSI6Im9wZW5pZCBwcm9maWxlIGVtYWlsIiwiZ3JvdXBfbWVtYmVyc2hpcCI6WyJzb21lT3JnSWQxMjMiXSwiZW1haWxfdmVyaWZpZWQiOnRydWUsIm5hbWUiOiJMaXJheiBZZWhlemtlbCIsInByZWZlcnJlZF91c2VybmFtZSI6ImxpcmF6eUB1cDkuY29tIiwiZ2l2ZW5fbmFtZSI6IkxpcmF6IiwiZmFtaWx5X25hbWUiOiJZZWhlemtlbCIsImdyb3VwX3N1YmRvbWFpbiI6InNvbWVPcmdJZDEyMyIsImVtYWlsIjoibGlyYXp5QHVwOS5jb20iLCJmZWF0dXJlRmxhZ3MiOnsiZWRpdEVuZHBvaW50VmFyaWFibGVzIjp0cnVlLCJzaWRlTmF2aWdhdGlvbiI6dHJ1ZX19.KdLz7jeIr8HaST4FpJROrg6Sp-o1Nl5dU2hIbNCA0FEY-jmaoubiOlz6p7QthTJ8t-S0R_qdZtd7rXf249L6wGG_A6rriZhH41Fxhyrb0ig8OVrQp-sepv_AUf7GEIGYgpYIPFnZ6G3Dkq1aY9NzLXruh7fly_ZRkRlzF_wb1vt5NRJz3xeMrj82BOJJmUpv08AYYQhnyjKiBp7rgrNTTBejaFBozsJgXGkIi-DZfv862tgFhvPNuXsqKO5iOxv9nApuQJ2O4knVB1ag7tqB1xQcvBdkZt9gG1VVkpWsM_2j5C9cBwOuPRgHZhpZuT_YNfB4ITefGV1aYfRF-cjnug" + }, + { + "name": "User-Agent", + "value": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36" + }, + { + "name": "X-Forwarded-Proto", + "value": "https" + }, + { + "name": "X-Scheme", + "value": "https" + }, + { + "name": "Sec-Fetch-Mode", + "value": "cors" + }, + { + "name": "Accept-Language", + "value": "en-US,en;q=0.9" + }, + { + "name": "X-Real-Ip", + "value": "10.132.0.22" + }, + { + "name": "Accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "Accept-Encoding", + "value": "gzip, deflate, br" + }, + { + "name": ":method", + "value": "GET" + }, + { + "name": ":path", + "value": "/models/liraz_test_2105/suites/all/runs" + }, + { + "name": ":authority", + "value": "trcc.stg.testr.io" + }, + { + "name": ":scheme", + "value": "http" + }, + { + "name": "x-request-start", + "value": "1590058949.282" + }, + { + "name": "x-up9-source", + "value": "10.48.1.44" + }, + { + "name": "x-up9-destination", + "value": "10.48.0.155:5000" + } + ], + "queryString": [], + "headersSize": -1, + "bodySize": -1 + }, + "response": { + "status": 200, + "statusText": "OK", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "Content-Length", + "value": "3" + }, + { + "name": "Access-Control-Allow-Origin", + "value": "https://stg.testr.io" + }, + { + "name": "Access-Control-Allow-Credentials", + "value": "true" + }, + { + "name": "Vary", + "value": "Origin" + }, + { + "name": "Server", + "value": "gunicorn/19.9.0" + }, + { + "name": "Date", + "value": "Thu, 21 May 2020 11:02:28 GMT" + }, + { + "name": "Connection", + "value": "keep-alive" + }, + { + "name": "Content-Type", + "value": "application/json" + }, + { + "name": ":status", + "value": "200" + }, + { + "name": "duration_ms", + "value": "1" + } + ], + "content": { + "size": 3, + "mimeType": "", + "text": "[]\n" + }, + "redirectURL": "", + "headersSize": -1, + "bodySize": 3 + }, + "cache": {}, + "timings": { + "send": -1, + "wait": -1, + "receive": 1 + } + }, + { + "startedDateTime": "2020-05-21T11:02:29.282000+00:00", + "time": 1, + "request": { + "method": "GET", + "url": "http://trcc-api-service/tapping/state", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "Accept-Encoding", + "value": "gzip, deflate" + }, + { + "name": "X-Forwarded-For", + "value": "10.132.0.85" + }, + { + "name": "User-Agent", + "value": "python-requests/2.23.0" + }, + { + "name": "X-Real-Ip", + "value": "10.132.0.85" + }, + { + "name": "X-Forwarded-Host", + "value": "trcc.stg.testr.io" + }, + { + "name": "X-Forwarded-Port", + "value": "443" + }, + { + "name": "X-Forwarded-Proto", + "value": "https" + }, + { + "name": "X-Scheme", + "value": "https" + }, + { + "name": "Accept", + "value": "*/*" + }, + { + "name": "X-Request-Id", + "value": "dc6902773654f4ef22cf38bfeed2d54f" + }, + { + "name": "Authorization", + "value": "Bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJqSEZ0R1dybjJpY084VnpDYXpaZWUyakpFc2drY1k5ZzhpN2FTbGtielRnIn0.eyJleHAiOjE1OTAwNTkxNTksImlhdCI6MTU5MDA1ODg1OSwianRpIjoiM2E5NDhkMjctOThiNy00Yjc2LTljNzQtZTkyODc2NWI2MTk0IiwiaXNzIjoiaHR0cHM6Ly9hdXRoLnN0Zy50ZXN0ci5pby9hdXRoL3JlYWxtcy90ZXN0ciIsImF1ZCI6ImFjY291bnQiLCJzdWIiOiI0YWFkZWM0Mi01OWE5LTRmZDUtODI3NC1lZWI5NDNmODQyNmUiLCJ0eXAiOiJCZWFyZXIiLCJhenAiOiIzWjE5LTNzYnN2MU9KSDBEd2l2UWkyYmZVSzdsSlNFdSIsInNlc3Npb25fc3RhdGUiOiI3ZWZjNDU0My1hZWM1LTRlZjAtODRmOC04NTEyMzE0OGViNGUiLCJhY3IiOiIxIiwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyJhY2NvdW50Ijp7InJvbGVzIjpbIm1hbmFnZS1hY2NvdW50IiwibWFuYWdlLWFjY291bnQtbGlua3MiLCJ2aWV3LXByb2ZpbGUiXX19LCJzY29wZSI6InByb2ZpbGUgZW1haWwiLCJjbGllbnRJZCI6IjNaMTktM3Nic3YxT0pIMER3aXZRaTJiZlVLN2xKU0V1IiwiY2xpZW50SG9zdCI6IjEwLjEzMi4wLjM0IiwiZW1haWxfdmVyaWZpZWQiOmZhbHNlLCJvcmdhbml6YXRpb24iOiJzb21lT3JnSWQxMjMiLCJwcmVmZXJyZWRfdXNlcm5hbWUiOiJzZXJ2aWNlLWFjY291bnQtM3oxOS0zc2JzdjFvamgwZHdpdnFpMmJmdWs3bGpzZXUiLCJjbGllbnRBZGRyZXNzIjoiMTAuMTMyLjAuMzQiLCJlbWFpbCI6InNlcnZpY2UtYWNjb3VudC0zejE5LTNzYnN2MW9qaDBkd2l2cWkyYmZ1azdsanNldUBwbGFjZWhvbGRlci5vcmcifQ.Sszc_AZ0MGf1MPQ0RKtMHoZW05mVJoR05dWuS9HqufKe_jr7qoyDS5-amMY-_hnQ3PpFW0A6QGXYhJEa6gny87ewM4LNh-A9VoBD3KTDOHIGf8b29Pa0e-t_DjQjf-KX-oWXLEQmV8ltE_cuMqBxG8eqat14s3ajZhfo5_n5XTghl4FKhC8o_LDbux-VjEphjvJOxHy3y20fHAKem3TLnHncsk4YirDX3P0hrLjzYQWjG24GeYz1biMH-r1Ti3z95Iwp8IhK-f0eIH5h_rCeTvG8U5n7PjWk9I0izVZpwYaKyOoysUICHK56FaRH9Yu6Ijwno6sbM5v1s3lqvO6tPg" + }, + { + "name": ":method", + "value": "GET" + }, + { + "name": ":path", + "value": "/tapping/state" + }, + { + "name": ":authority", + "value": "trcc.stg.testr.io" + }, + { + "name": ":scheme", + "value": "http" + }, + { + "name": "x-request-start", + "value": "1590058949.282" + }, + { + "name": "x-up9-source", + "value": "10.48.1.44" + }, + { + "name": "x-up9-destination", + "value": "10.48.0.155:5000" + } + ], + "queryString": [], + "headersSize": -1, + "bodySize": -1 + }, + "response": { + "status": 200, + "statusText": "OK", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "Content-Length", + "value": "3" + }, + { + "name": "Access-Control-Allow-Origin", + "value": "http://localhost:3000" + }, + { + "name": "Access-Control-Allow-Credentials", + "value": "true" + }, + { + "name": "Vary", + "value": "Origin" + }, + { + "name": "Server", + "value": "gunicorn/19.9.0" + }, + { + "name": "Date", + "value": "Thu, 21 May 2020 11:02:28 GMT" + }, + { + "name": "Connection", + "value": "keep-alive" + }, + { + "name": "Content-Type", + "value": "application/json" + }, + { + "name": ":status", + "value": "200" + }, + { + "name": "duration_ms", + "value": "1" + } + ], + "content": { + "size": 3, + "mimeType": "", + "text": "[]\n" + }, + "redirectURL": "", + "headersSize": -1, + "bodySize": 3 + }, + "cache": {}, + "timings": { + "send": -1, + "wait": -1, + "receive": 1 + } + }, + { + "startedDateTime": "2020-05-21T11:02:28.254000+00:00", + "time": 1030, + "request": { + "method": "GET", + "url": "http://trcc-api-service/tapping/state", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "X-Request-Id", + "value": "9f92d24d833b16fa65660aea5d79c546" + }, + { + "name": "X-Forwarded-For", + "value": "10.132.0.85" + }, + { + "name": "X-Forwarded-Port", + "value": "443" + }, + { + "name": "User-Agent", + "value": "python-requests/2.23.0" + }, + { + "name": "Accept-Encoding", + "value": "gzip, deflate" + }, + { + "name": "Authorization", + "value": "Bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJqSEZ0R1dybjJpY084VnpDYXpaZWUyakpFc2drY1k5ZzhpN2FTbGtielRnIn0.eyJleHAiOjE1OTAwNTkxNzIsImlhdCI6MTU5MDA1ODg3MiwianRpIjoiNDlkZTU1YmEtOWI2OC00MzIyLTk3MWUtMzViYWRhMjIyYzJjIiwiaXNzIjoiaHR0cHM6Ly9hdXRoLnN0Zy50ZXN0ci5pby9hdXRoL3JlYWxtcy90ZXN0ciIsImF1ZCI6ImFjY291bnQiLCJzdWIiOiI0YWFkZWM0Mi01OWE5LTRmZDUtODI3NC1lZWI5NDNmODQyNmUiLCJ0eXAiOiJCZWFyZXIiLCJhenAiOiIzWjE5LTNzYnN2MU9KSDBEd2l2UWkyYmZVSzdsSlNFdSIsInNlc3Npb25fc3RhdGUiOiJiZjEzZjE2ZC0zMzRiLTRkYzItODQwMy02ZjRjODlkM2IzYzMiLCJhY3IiOiIxIiwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyJhY2NvdW50Ijp7InJvbGVzIjpbIm1hbmFnZS1hY2NvdW50IiwibWFuYWdlLWFjY291bnQtbGlua3MiLCJ2aWV3LXByb2ZpbGUiXX19LCJzY29wZSI6InByb2ZpbGUgZW1haWwiLCJjbGllbnRJZCI6IjNaMTktM3Nic3YxT0pIMER3aXZRaTJiZlVLN2xKU0V1IiwiY2xpZW50SG9zdCI6IjEwLjQ4LjEuMSIsImVtYWlsX3ZlcmlmaWVkIjpmYWxzZSwib3JnYW5pemF0aW9uIjoic29tZU9yZ0lkMTIzIiwicHJlZmVycmVkX3VzZXJuYW1lIjoic2VydmljZS1hY2NvdW50LTN6MTktM3Nic3Yxb2poMGR3aXZxaTJiZnVrN2xqc2V1IiwiY2xpZW50QWRkcmVzcyI6IjEwLjQ4LjEuMSIsImVtYWlsIjoic2VydmljZS1hY2NvdW50LTN6MTktM3Nic3Yxb2poMGR3aXZxaTJiZnVrN2xqc2V1QHBsYWNlaG9sZGVyLm9yZyJ9.GG5HWvQ9ufASjOq0RaiQ4l_v-YfeDnZoMA7eLZGhntXpaI3b5RQ6fTwh7XD0Uy_b-hITd5Lxhm0Wlt8U5MPSQRSDUGSJRE97_2egmDQCqLu4oKG7l2I6olLf7U4xWSMRKoATXfgV5Ccx9hGgsQPLLBjYZmLuusuNoUbOCNYEMpM24QB-j5jNMMVJIaECdXy3ka26hsuUOK3wue8tPEIUSmgMhLcwtJ4NKTNlXicE6W8-WpY6U9SCIVkfi3lKH-zFSSWw9XJWg30Qk9SzMcrfd11bSQqGyc3Z0rUSt2XvQC2LaoZPIA4guL6fkFIBu3mcSsHI0TY_pa1Vd_kQH-QtIQ" + }, + { + "name": "X-Real-Ip", + "value": "10.132.0.85" + }, + { + "name": "X-Forwarded-Host", + "value": "trcc.stg.testr.io" + }, + { + "name": "X-Forwarded-Proto", + "value": "https" + }, + { + "name": "X-Scheme", + "value": "https" + }, + { + "name": "Accept", + "value": "*/*" + }, + { + "name": ":method", + "value": "GET" + }, + { + "name": ":path", + "value": "/tapping/state" + }, + { + "name": ":authority", + "value": "trcc.stg.testr.io" + }, + { + "name": ":scheme", + "value": "http" + }, + { + "name": "x-request-start", + "value": "1590058948.254" + }, + { + "name": "x-up9-source", + "value": "10.48.1.44" + }, + { + "name": "x-up9-destination", + "value": "10.48.0.155:5000" + } + ], + "queryString": [], + "headersSize": -1, + "bodySize": -1 + }, + "response": { + "status": 200, + "statusText": "OK", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "Access-Control-Allow-Origin", + "value": "http://localhost:3000" + }, + { + "name": "Access-Control-Allow-Credentials", + "value": "true" + }, + { + "name": "Vary", + "value": "Origin" + }, + { + "name": "Server", + "value": "gunicorn/19.9.0" + }, + { + "name": "Date", + "value": "Thu, 21 May 2020 11:02:29 GMT" + }, + { + "name": "Connection", + "value": "keep-alive" + }, + { + "name": "Content-Type", + "value": "application/json" + }, + { + "name": "Content-Length", + "value": "22" + }, + { + "name": ":status", + "value": "200" + }, + { + "name": "duration_ms", + "value": "1030" + } + ], + "content": { + "size": 22, + "mimeType": "", + "text": "{\"revisionId\":\"2335\"}\n" + }, + "redirectURL": "", + "headersSize": -1, + "bodySize": 22 + }, + "cache": {}, + "timings": { + "send": -1, + "wait": -1, + "receive": 1030 + } + }, + { + "startedDateTime": "2020-05-21T11:02:29.283000+00:00", + "time": 1, + "request": { + "method": "GET", + "url": "http://trcc-api-service/models/aws_kong5/suites/all/runs", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "Origin", + "value": "https://stg.testr.io" + }, + { + "name": "Accept-Language", + "value": "en-IL,en-US;q=0.9,en;q=0.8,he;q=0.7,pl;q=0.6,ru;q=0.5" + }, + { + "name": "X-Forwarded-For", + "value": "10.132.0.11" + }, + { + "name": "X-Scheme", + "value": "https" + }, + { + "name": "Accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "Dnt", + "value": "1" + }, + { + "name": "User-Agent", + "value": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36" + }, + { + "name": "X-Real-Ip", + "value": "10.132.0.11" + }, + { + "name": "Accept-Encoding", + "value": "gzip, deflate, br" + }, + { + "name": "X-Request-Id", + "value": "3ce42171a9ac62e721f2462ab501e1eb" + }, + { + "name": "X-Forwarded-Proto", + "value": "https" + }, + { + "name": "Sec-Fetch-Mode", + "value": "cors" + }, + { + "name": "Referer", + "value": "https://stg.testr.io/someOrgId123/model/aws_kong5/lastResults/systems/all/runs" + }, + { + "name": "X-Forwarded-Host", + "value": "trcc.stg.testr.io" + }, + { + "name": "X-Forwarded-Port", + "value": "443" + }, + { + "name": "Authorization", + "value": "bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJqSEZ0R1dybjJpY084VnpDYXpaZWUyakpFc2drY1k5ZzhpN2FTbGtielRnIn0.eyJleHAiOjE1OTAwNTkyNDMsImlhdCI6MTU5MDA1ODk0MywiYXV0aF90aW1lIjoxNTkwMDU4NjUxLCJqdGkiOiI1ODYzNmRiMy0wN2IxLTQ2ZDYtOGNiNS01MzEzMDFlZGY4MGYiLCJpc3MiOiJodHRwczovL2F1dGguc3RnLnRlc3RyLmlvL2F1dGgvcmVhbG1zL3Rlc3RyIiwiYXVkIjoiYWNjb3VudCIsInN1YiI6IjBlYWU4ZmFjLTgyYTEtNDUwNi05MWQ0LTA4ZDYxZTI2NWY1NCIsInR5cCI6IkJlYXJlciIsImF6cCI6InJlYWN0LWNsaWVudCIsIm5vbmNlIjoiNTRjMTM5OTktMDg0NS00OWNmLWI1OTAtOTY1ZThjNWI0NmJlIiwic2Vzc2lvbl9zdGF0ZSI6ImY3YjEyOTM1LThmMTctNDc1Zi04NmRhLWQ4NjFjZTYxNWZjNyIsImFjciI6IjAiLCJhbGxvd2VkLW9yaWdpbnMiOlsiaHR0cHM6Ly9zdGcudGVzdHIuaW8iLCJjaHJvbWUtZXh0ZW5zaW9uOi8vbmFkZ2VsamVtbWJna2xkaGNwYWZqbXBtYXBpcGdsY20iLCJodHRwOi8vbG9jYWxob3N0OjMwMDAiXSwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyJhY2NvdW50Ijp7InJvbGVzIjpbIm1hbmFnZS1hY2NvdW50IiwibWFuYWdlLWFjY291bnQtbGlua3MiLCJ2aWV3LXByb2ZpbGUiXX19LCJzY29wZSI6Im9wZW5pZCBwcm9maWxlIGVtYWlsIiwiZ3JvdXBfbWVtYmVyc2hpcCI6WyJzb21lT3JnSWQxMjMiXSwiZW1haWxfdmVyaWZpZWQiOnRydWUsIm5hbWUiOiJSYW1pIEJlcm1hbiIsInByZWZlcnJlZF91c2VybmFtZSI6InJhbWkuYmVybWFuQHVwOS5jb20iLCJnaXZlbl9uYW1lIjoiUmFtaSIsImZhbWlseV9uYW1lIjoiQmVybWFuIiwiZ3JvdXBfc3ViZG9tYWluIjoic29tZU9yZ0lkMTIzIiwiZW1haWwiOiJyYW1pLmJlcm1hbkB1cDkuY29tIiwiZmVhdHVyZUZsYWdzIjp7ImVkaXRFbmRwb2ludFZhcmlhYmxlcyI6dHJ1ZSwic2lkZU5hdmlnYXRpb24iOnRydWV9fQ.UEDsnoo9A8CbdIYKXoOrAAq6y2K7Aoqf-PplHhXFoVep9ewwA9qBjXqgn0fK9cnE_KfZKUcX_cy1HDhhdIfR_aHpbWWhQ3gxISkE6ALka18JIrUv7bFaHKio6eEP6tgn34QVP8aQVEB3e3g7h3dLuUvZ1xIMnt6fy03tD3KgiQlvdHwg5FhJLosiCrHgboEqN5VH_f_2QF33XiXTkDG1e-AOEnIIWqloMDTUPZEUvEo_KH68lB0Uu23YhhI5gPAuKQVb_UjFWcF_6Ysvk3C3j0cuk09DZ7YEI1u-bKp58LHnsS6gqNFQxy-CDlZ8Oht5d2I3LbwZZxHzMixzzFzJCA" + }, + { + "name": "Sec-Fetch-Site", + "value": "same-site" + }, + { + "name": "Sec-Fetch-Dest", + "value": "empty" + }, + { + "name": ":method", + "value": "GET" + }, + { + "name": ":path", + "value": "/models/aws_kong5/suites/all/runs" + }, + { + "name": ":authority", + "value": "trcc.stg.testr.io" + }, + { + "name": ":scheme", + "value": "http" + }, + { + "name": "x-request-start", + "value": "1590058949.283" + }, + { + "name": "x-up9-source", + "value": "10.48.1.44" + }, + { + "name": "x-up9-destination", + "value": "10.48.0.155:5000" + } + ], + "queryString": [], + "headersSize": -1, + "bodySize": -1 + }, + "response": { + "status": 200, + "statusText": "OK", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "Connection", + "value": "keep-alive" + }, + { + "name": "Content-Type", + "value": "application/json" + }, + { + "name": "Content-Length", + "value": "20352" + }, + { + "name": "Access-Control-Allow-Origin", + "value": "http://localhost:3000" + }, + { + "name": "Access-Control-Allow-Credentials", + "value": "true" + }, + { + "name": "Vary", + "value": "Origin" + }, + { + "name": "Server", + "value": "gunicorn/19.9.0" + }, + { + "name": "Date", + "value": "Thu, 21 May 2020 11:02:29 GMT" + }, + { + "name": ":status", + "value": "200" + }, + { + "name": "duration_ms", + "value": "1" + } + ], + "content": { + "size": 20352, + "mimeType": "", + "text": "[{\"agentName\":\"ag6-minikube\",\"creationTime\":\"Sun, 22 Mar 2020 22:11:55 GMT\",\"id\":\"057573f3-c207-4d56-9512-3e1ff9190f53_trdemo_trdemo-client\",\"instancesCount\":0,\"lastSeen\":\"Thu, 09 Apr 2020 22:45:55 GMT\",\"model\":\"ag_trdemo_040701\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"ag6-minikube\",\"creationTime\":\"Sun, 22 Mar 2020 22:11:55 GMT\",\"id\":\"057573f3-c207-4d56-9512-3e1ff9190f53_trdemo_trdemo-flights\",\"instancesCount\":0,\"lastSeen\":\"Thu, 09 Apr 2020 22:45:55 GMT\",\"model\":\"ag_trdemo_040701\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"ag6-minikube\",\"creationTime\":\"Sun, 22 Mar 2020 22:11:55 GMT\",\"id\":\"057573f3-c207-4d56-9512-3e1ff9190f53_trdemo_trdemo-shoppingcart\",\"instancesCount\":0,\"lastSeen\":\"Thu, 09 Apr 2020 22:45:55 GMT\",\"model\":\"ag_trdemo_040701\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"ag6-minikube\",\"creationTime\":\"Sun, 22 Mar 2020 22:11:55 GMT\",\"id\":\"057573f3-c207-4d56-9512-3e1ff9190f53_trdemo_trdemo-users\",\"instancesCount\":0,\"lastSeen\":\"Thu, 09 Apr 2020 22:45:55 GMT\",\"model\":\"ag_trdemo_040701\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"nimrod-gcloud-mycluster\",\"creationTime\":\"Sun, 19 Apr 2020 17:46:09 GMT\",\"id\":\"0c484f93-5987-4e16-ac5d-ee838b8c7b65_tradmin_frontend-deployment\",\"instancesCount\":0,\"lastSeen\":\"Mon, 20 Apr 2020 09:29:13 GMT\",\"model\":\"default\",\"shouldTap\":false,\"type\":\"envoy\"},{\"agentName\":\"nimrod-gcloud-mycluster\",\"creationTime\":\"Mon, 06 Apr 2020 06:50:47 GMT\",\"id\":\"0c484f93-5987-4e16-ac5d-ee838b8c7b65_tradmin_trcc-api-deployment\",\"instancesCount\":0,\"lastSeen\":\"Mon, 20 Apr 2020 09:29:13 GMT\",\"model\":\"default\",\"shouldTap\":false,\"type\":\"envoy\"},{\"agentName\":\"nimrod-gcloud-mycluster\",\"creationTime\":null,\"id\":\"0c484f93-5987-4e16-ac5d-ee838b8c7b65_trdemo_trdemo-client\",\"instancesCount\":0,\"lastSeen\":\"Mon, 20 Apr 2020 09:29:53 GMT\",\"model\":\"ngm-0704-gcloud-05\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"nimrod-gcloud-mycluster\",\"creationTime\":null,\"id\":\"0c484f93-5987-4e16-ac5d-ee838b8c7b65_trdemo_trdemo-flights\",\"instancesCount\":0,\"lastSeen\":\"Mon, 20 Apr 2020 09:29:53 GMT\",\"model\":\"ngm-0704-gcloud-05\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"nimrod-gcloud-mycluster\",\"creationTime\":null,\"id\":\"0c484f93-5987-4e16-ac5d-ee838b8c7b65_trdemo_trdemo-shoppingcart\",\"instancesCount\":0,\"lastSeen\":\"Tue, 07 Apr 2020 17:12:48 GMT\",\"model\":\"ngm-0704-gcloud-05\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"nimrod-gcloud-mycluster\",\"creationTime\":null,\"id\":\"0c484f93-5987-4e16-ac5d-ee838b8c7b65_trdemo_trdemo-users\",\"instancesCount\":0,\"lastSeen\":\"Tue, 07 Apr 2020 17:12:48 GMT\",\"model\":\"ngm-0704-gcloud-05\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"haiut-samcust1105\",\"creationTime\":\"Thu, 23 Apr 2020 13:44:42 GMT\",\"id\":\"2a45b7bd-3615-11ea-b692-42010a8400bd_trdemo_trdemo-client\",\"instancesCount\":1,\"lastSeen\":\"Thu, 21 May 2020 11:02:27 GMT\",\"model\":\"ah.trdemo.0513\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"haiut-samcust1105\",\"creationTime\":\"Thu, 23 Apr 2020 13:44:42 GMT\",\"id\":\"2a45b7bd-3615-11ea-b692-42010a8400bd_trdemo_trdemo-flights\",\"instancesCount\":1,\"lastSeen\":\"Thu, 21 May 2020 11:02:27 GMT\",\"model\":\"ah.trdemo.0513\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"haiut-samcust1105\",\"creationTime\":\"Thu, 23 Apr 2020 13:44:42 GMT\",\"id\":\"2a45b7bd-3615-11ea-b692-42010a8400bd_trdemo_trdemo-shoppingcart\",\"instancesCount\":1,\"lastSeen\":\"Thu, 21 May 2020 11:02:27 GMT\",\"model\":\"ah.trdemo.0513\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"haiut-samcust1105\",\"creationTime\":\"Thu, 23 Apr 2020 13:44:35 GMT\",\"id\":\"2a45b7bd-3615-11ea-b692-42010a8400bd_trdemo_trdemo-users\",\"instancesCount\":1,\"lastSeen\":\"Thu, 21 May 2020 11:02:27 GMT\",\"model\":\"ah.trdemo.0513\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"rami-aws-agent2\",\"creationTime\":\"Thu, 14 May 2020 14:54:45 GMT\",\"id\":\"6edcaf1b-f7f9-4dd7-ae4d-2443ab489213_trdemo_trdemo-client\",\"instancesCount\":1,\"lastSeen\":\"Thu, 21 May 2020 11:02:28 GMT\",\"model\":\"aws_services_envoy\",\"shouldTap\":true,\"type\":\"envoy\"},{\"agentName\":\"rami-aws-agent2\",\"creationTime\":\"Thu, 14 May 2020 14:54:45 GMT\",\"id\":\"6edcaf1b-f7f9-4dd7-ae4d-2443ab489213_trdemo_trdemo-flights\",\"instancesCount\":2,\"lastSeen\":\"Thu, 21 May 2020 11:02:28 GMT\",\"model\":\"aws_services_envoy\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"rami-aws-agent2\",\"creationTime\":\"Thu, 14 May 2020 14:54:45 GMT\",\"id\":\"6edcaf1b-f7f9-4dd7-ae4d-2443ab489213_trdemo_trdemo-shoppingcart\",\"instancesCount\":2,\"lastSeen\":\"Thu, 21 May 2020 11:02:28 GMT\",\"model\":\"aws_services_envoy\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"rami-aws-agent2\",\"creationTime\":\"Thu, 14 May 2020 14:54:45 GMT\",\"id\":\"6edcaf1b-f7f9-4dd7-ae4d-2443ab489213_trdemo_trdemo-users\",\"instancesCount\":2,\"lastSeen\":\"Thu, 21 May 2020 11:02:28 GMT\",\"model\":\"aws_services_envoy\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":null,\"creationTime\":null,\"id\":\"alextestrio-prx1\",\"instancesCount\":0,\"lastSeen\":\"Thu, 19 Mar 2020 13:10:36 GMT\",\"model\":\"ah-0319\",\"shouldTap\":false,\"type\":\"proxy\"},{\"agentName\":null,\"creationTime\":\"Fri, 17 Apr 2020 16:17:58 GMT\",\"id\":\"alexup9com-prx1\",\"instancesCount\":0,\"lastSeen\":\"Sat, 18 Apr 2020 14:12:41 GMT\",\"model\":\"ah-test-1704-01\",\"shouldTap\":false,\"type\":\"proxy\"},{\"agentName\":null,\"creationTime\":null,\"id\":\"alontestrio-prx1\",\"instancesCount\":0,\"lastSeen\":\"Mon, 23 Mar 2020 17:45:49 GMT\",\"model\":\"ag_nectar_032301\",\"shouldTap\":false,\"type\":\"proxy\"},{\"agentName\":null,\"creationTime\":\"Tue, 31 Mar 2020 23:45:34 GMT\",\"id\":\"alonup9com-prx1\",\"instancesCount\":1,\"lastSeen\":\"Thu, 21 May 2020 10:58:30 GMT\",\"model\":\"ag.proxy.050801\",\"shouldTap\":true,\"type\":\"proxy\"},{\"agentName\":null,\"creationTime\":\"Mon, 06 Apr 2020 07:51:20 GMT\",\"id\":\"andrewpetrovup9com-prx1\",\"instancesCount\":0,\"lastSeen\":\"Tue, 07 Apr 2020 08:15:56 GMT\",\"model\":\"ap_test\",\"shouldTap\":false,\"type\":\"proxy\"},{\"agentName\":null,\"creationTime\":null,\"id\":\"andreytestrio-prx1\",\"instancesCount\":0,\"lastSeen\":\"Thu, 26 Mar 2020 11:09:27 GMT\",\"model\":\"andrey2\",\"shouldTap\":false,\"type\":\"proxy\"},{\"agentName\":\"haiut-mk04\",\"creationTime\":null,\"id\":\"c59d834b-00cd-4650-b114-a9da537c56d7_trdemo_trdemo-client\",\"instancesCount\":0,\"lastSeen\":\"Thu, 09 Apr 2020 10:19:27 GMT\",\"model\":\"ah-0329-01\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"haiut-mk04\",\"creationTime\":null,\"id\":\"c59d834b-00cd-4650-b114-a9da537c56d7_trdemo_trdemo-flights\",\"instancesCount\":0,\"lastSeen\":\"Thu, 09 Apr 2020 10:19:27 GMT\",\"model\":\"ah-0329-01\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"haiut-mk04\",\"creationTime\":null,\"id\":\"c59d834b-00cd-4650-b114-a9da537c56d7_trdemo_trdemo-shoppingcart\",\"instancesCount\":0,\"lastSeen\":\"Thu, 09 Apr 2020 10:19:27 GMT\",\"model\":\"ah-0329-01\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"haiut-mk04\",\"creationTime\":null,\"id\":\"c59d834b-00cd-4650-b114-a9da537c56d7_trdemo_trdemo-users\",\"instancesCount\":0,\"lastSeen\":\"Thu, 09 Apr 2020 10:19:27 GMT\",\"model\":\"ah-0329-01\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"nimrod-01-london-aws\",\"creationTime\":\"Mon, 13 Apr 2020 14:32:47 GMT\",\"id\":\"cluster-01-ECSCluster-ZldlPWdD1B9z_trdemo-01-TrdemoClientTaskDefinition-51AGMDOUMFOS\",\"instancesCount\":0,\"lastSeen\":\"Thu, 23 Apr 2020 17:01:37 GMT\",\"model\":\"default\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"nimrod-01-london-aws\",\"creationTime\":\"Sun, 12 Apr 2020 12:18:27 GMT\",\"id\":\"cluster-01-ECSCluster-ZldlPWdD1B9z_trdemo-01-TrdemoClientTaskDefinition-ZSUR7XY24R3X\",\"instancesCount\":0,\"lastSeen\":\"Sun, 12 Apr 2020 14:40:11 GMT\",\"model\":\"ngm-1204-aws-01\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"nimrod-01-london-aws\",\"creationTime\":\"Mon, 13 Apr 2020 14:31:31 GMT\",\"id\":\"cluster-01-ECSCluster-ZldlPWdD1B9z_trdemo-01-TrdemoFlightsTaskDefinition-1GQ6KPSBBH2CG\",\"instancesCount\":0,\"lastSeen\":\"Thu, 23 Apr 2020 17:01:37 GMT\",\"model\":\"default\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"nimrod-01-london-aws\",\"creationTime\":\"Sun, 12 Apr 2020 12:18:27 GMT\",\"id\":\"cluster-01-ECSCluster-ZldlPWdD1B9z_trdemo-01-TrdemoFlightsTaskDefinition-1P92C5J4BMAJ\",\"instancesCount\":0,\"lastSeen\":\"Sun, 12 Apr 2020 14:40:11 GMT\",\"model\":\"ngm-1204-aws-01\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"nimrod-01-london-aws\",\"creationTime\":\"Sun, 12 Apr 2020 12:18:26 GMT\",\"id\":\"cluster-01-ECSCluster-ZldlPWdD1B9z_trdemo-01-TrdemoShoppingcartTaskDefinition-8LVIGNH5OGR5\",\"instancesCount\":0,\"lastSeen\":\"Sun, 12 Apr 2020 14:40:09 GMT\",\"model\":\"ngm-1204-aws-01\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"nimrod-01-london-aws\",\"creationTime\":\"Mon, 13 Apr 2020 14:31:29 GMT\",\"id\":\"cluster-01-ECSCluster-ZldlPWdD1B9z_trdemo-01-TrdemoShoppingcartTaskDefinition-EF79FKMGB0S5\",\"instancesCount\":0,\"lastSeen\":\"Thu, 23 Apr 2020 17:01:59 GMT\",\"model\":\"default\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"nimrod-01-london-aws\",\"creationTime\":\"Mon, 13 Apr 2020 14:31:36 GMT\",\"id\":\"cluster-01-ECSCluster-ZldlPWdD1B9z_trdemo-01-TrdemoUsersTaskDefinition-1SOGKLV12R6VX\",\"instancesCount\":0,\"lastSeen\":\"Thu, 23 Apr 2020 17:01:53 GMT\",\"model\":\"default\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"nimrod-01-london-aws\",\"creationTime\":\"Sun, 12 Apr 2020 12:18:26 GMT\",\"id\":\"cluster-01-ECSCluster-ZldlPWdD1B9z_trdemo-01-TrdemoUsersTaskDefinition-IA4ZUEXN3VPX\",\"instancesCount\":0,\"lastSeen\":\"Sun, 12 Apr 2020 14:40:09 GMT\",\"model\":\"ngm-1204-aws-01\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"nimrod-01-london-aws\",\"creationTime\":\"Sun, 12 Apr 2020 14:51:10 GMT\",\"id\":\"cluster-01-ECSCluster-ZldlPWdD1B9z_trdemo-02-TrdemoClientTaskDefinition-19SVXVU4US12S\",\"instancesCount\":0,\"lastSeen\":\"Sun, 12 Apr 2020 15:59:02 GMT\",\"model\":\"ngm-1204-aws-02\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"nimrod-01-london-aws\",\"creationTime\":\"Sun, 12 Apr 2020 14:49:24 GMT\",\"id\":\"cluster-01-ECSCluster-ZldlPWdD1B9z_trdemo-02-TrdemoFlightsTaskDefinition-2P1PRCG5UHC3\",\"instancesCount\":0,\"lastSeen\":\"Sun, 12 Apr 2020 15:59:04 GMT\",\"model\":\"ngm-1204-aws-02\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"nimrod-01-london-aws\",\"creationTime\":\"Sun, 12 Apr 2020 14:48:48 GMT\",\"id\":\"cluster-01-ECSCluster-ZldlPWdD1B9z_trdemo-02-TrdemoShoppingcartTaskDefinition-1TLHJW9NH2B5A\",\"instancesCount\":0,\"lastSeen\":\"Sun, 12 Apr 2020 15:59:00 GMT\",\"model\":\"ngm-1204-aws-02\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"nimrod-01-london-aws\",\"creationTime\":\"Sun, 12 Apr 2020 14:48:43 GMT\",\"id\":\"cluster-01-ECSCluster-ZldlPWdD1B9z_trdemo-02-TrdemoUsersTaskDefinition-1W5X329FWGXZ3\",\"instancesCount\":0,\"lastSeen\":\"Sun, 12 Apr 2020 15:59:00 GMT\",\"model\":\"ngm-1204-aws-02\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"haiut-aws-fra-03\",\"creationTime\":\"Sun, 26 Apr 2020 20:09:14 GMT\",\"id\":\"d2d6c435-eaf5-48f6-8e61-1e7c57251fbd_trdemo_trdemo-client\",\"instancesCount\":0,\"lastSeen\":\"Sun, 10 May 2020 13:31:29 GMT\",\"model\":\"aws_new_resolving2\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"haiut-aws-fra-03\",\"creationTime\":\"Sun, 26 Apr 2020 20:09:09 GMT\",\"id\":\"d2d6c435-eaf5-48f6-8e61-1e7c57251fbd_trdemo_trdemo-flights\",\"instancesCount\":0,\"lastSeen\":\"Sun, 10 May 2020 13:31:31 GMT\",\"model\":\"aws_new_resolving2\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"haiut-aws-fra-03\",\"creationTime\":\"Sun, 26 Apr 2020 20:09:14 GMT\",\"id\":\"d2d6c435-eaf5-48f6-8e61-1e7c57251fbd_trdemo_trdemo-shoppingcart\",\"instancesCount\":0,\"lastSeen\":\"Sun, 10 May 2020 13:31:29 GMT\",\"model\":\"aws_new_resolving2\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"haiut-aws-fra-03\",\"creationTime\":\"Sun, 26 Apr 2020 20:09:09 GMT\",\"id\":\"d2d6c435-eaf5-48f6-8e61-1e7c57251fbd_trdemo_trdemo-users\",\"instancesCount\":0,\"lastSeen\":\"Sun, 10 May 2020 13:31:31 GMT\",\"model\":\"aws_new_resolving2\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":null,\"creationTime\":null,\"id\":\"e677a5bc-0542-11ea-a607-42010a8400ce_tradmin_frontend-deployment\",\"instancesCount\":0,\"lastSeen\":\"Sun, 10 May 2020 13:31:31 GMT\",\"model\":\"default\",\"shouldTap\":false,\"type\":\"envoy\"},{\"agentName\":null,\"creationTime\":\"Fri, 03 Apr 2020 08:00:08 GMT\",\"id\":\"e677a5bc-0542-11ea-a607-42010a8400ce_tradmin_trcc-api-deployme-f9aaef0a8d6f47bab4894c055aa72533-67c7fc5czfxr\",\"instancesCount\":0,\"lastSeen\":\"Fri, 03 Apr 2020 05:04:11 GMT\",\"model\":\"default\",\"shouldTap\":false,\"type\":\"envoy\"},{\"agentName\":null,\"creationTime\":null,\"id\":\"e677a5bc-0542-11ea-a607-42010a8400ce_tradmin_trcc-api-deployment\",\"instancesCount\":0,\"lastSeen\":\"Thu, 23 Apr 2020 08:12:03 GMT\",\"model\":\"sy-trcc-dogfood-3\",\"shouldTap\":false,\"type\":\"envoy\"},{\"agentName\":\"stg-cloud-agent\",\"creationTime\":\"Thu, 23 Apr 2020 08:11:52 GMT\",\"id\":\"e677a5bc-0542-11ea-a607-42010a8400ce_tradmin_trcc-api-deployment-stable\",\"instancesCount\":2,\"lastSeen\":\"Thu, 21 May 2020 11:02:26 GMT\",\"model\":\"sy-trcc-dogfood-10\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"stg-cloud-agent\",\"creationTime\":null,\"id\":\"e677a5bc-0542-11ea-a607-42010a8400ce_trdemo_trdemo-client\",\"instancesCount\":1,\"lastSeen\":\"Thu, 21 May 2020 11:02:24 GMT\",\"model\":\"up9_011401\",\"shouldTap\":false,\"type\":\"envoy\"},{\"agentName\":\"stg-cloud-agent\",\"creationTime\":null,\"id\":\"e677a5bc-0542-11ea-a607-42010a8400ce_trdemo_trdemo-flights\",\"instancesCount\":1,\"lastSeen\":\"Thu, 21 May 2020 11:02:24 GMT\",\"model\":\"up9_011401\",\"shouldTap\":false,\"type\":\"passive\"},{\"agentName\":null,\"creationTime\":null,\"id\":\"e677a5bc-0542-11ea-a607-42010a8400ce_trdemo_trdemo-shoppingcart\",\"instancesCount\":0,\"lastSeen\":\"Sun, 10 May 2020 13:31:30 GMT\",\"model\":\"bookstack-remote\",\"shouldTap\":false,\"type\":\"passive\"},{\"agentName\":\"stg-cloud-agent\",\"creationTime\":null,\"id\":\"e677a5bc-0542-11ea-a607-42010a8400ce_trdemo_trdemo-users\",\"instancesCount\":1,\"lastSeen\":\"Thu, 21 May 2020 11:02:24 GMT\",\"model\":\"up9_011401\",\"shouldTap\":false,\"type\":\"passive\"},{\"agentName\":null,\"creationTime\":null,\"id\":\"lirazyup9com-prx1\",\"instancesCount\":0,\"lastSeen\":\"Thu, 21 May 2020 10:51:01 GMT\",\"model\":\"liraz_test_2105\",\"shouldTap\":false,\"type\":\"proxy\"},{\"agentName\":\"nimrod-01-london-aws\",\"creationTime\":\"Thu, 21 May 2020 10:58:05 GMT\",\"id\":\"london-01-ECSCluster-27iuIYva8nO4_trdemo-01-TrdemoClientTaskDefinition-4TTVATDRY0CJ\",\"instancesCount\":1,\"lastSeen\":\"Thu, 21 May 2020 11:02:26 GMT\",\"model\":\"default\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"nimrod-01-london-aws\",\"creationTime\":\"Thu, 21 May 2020 10:51:53 GMT\",\"id\":\"london-01-ECSCluster-27iuIYva8nO4_trdemo-01-TrdemoFlightsTaskDefinition-HBBUAO47D2VT\",\"instancesCount\":1,\"lastSeen\":\"Thu, 21 May 2020 11:02:25 GMT\",\"model\":\"default\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"nimrod-01-london-aws\",\"creationTime\":\"Thu, 21 May 2020 10:57:09 GMT\",\"id\":\"london-01-ECSCluster-27iuIYva8nO4_trdemo-01-TrdemoShoppingcartTaskDefinition-1UAMK7WTR1SWE\",\"instancesCount\":1,\"lastSeen\":\"Thu, 21 May 2020 11:02:27 GMT\",\"model\":\"default\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"nimrod-01-london-aws\",\"creationTime\":\"Thu, 21 May 2020 10:56:49 GMT\",\"id\":\"london-01-ECSCluster-27iuIYva8nO4_trdemo-01-TrdemoUsersTaskDefinition-1HEEGJCBNB4PB\",\"instancesCount\":1,\"lastSeen\":\"Thu, 21 May 2020 11:02:26 GMT\",\"model\":\"default\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"nimrod-01-paris-aws\",\"creationTime\":\"Tue, 12 May 2020 14:14:42 GMT\",\"id\":\"nimrod-01-ECSCluster-1ENCWB3MDFEUQ_trdemo-01-TrdemoClientTaskDefinition-1HQRZT31KSGK0\",\"instancesCount\":1,\"lastSeen\":\"Thu, 21 May 2020 11:02:29 GMT\",\"model\":\"ngm-1305-aws-01\",\"shouldTap\":false,\"type\":\"passive\"},{\"agentName\":\"nimrod-01-paris-aws\",\"creationTime\":\"Mon, 06 Apr 2020 08:37:02 GMT\",\"id\":\"nimrod-01-ECSCluster-1ENCWB3MDFEUQ_trdemo-01-TrdemoClientTaskDefinition-PCTOAFN3NUUL\",\"instancesCount\":0,\"lastSeen\":\"Tue, 12 May 2020 12:36:48 GMT\",\"model\":\"default\",\"shouldTap\":false,\"type\":\"passive\"},{\"agentName\":\"nimrod-01-paris-aws\",\"creationTime\":\"Mon, 06 Apr 2020 10:46:50 GMT\",\"id\":\"nimrod-01-ECSCluster-1ENCWB3MDFEUQ_trdemo-01-TrdemoFlightsTaskDefinition-1RP81I0ETBSRA\",\"instancesCount\":0,\"lastSeen\":\"Tue, 12 May 2020 12:34:26 GMT\",\"model\":\"default\",\"shouldTap\":false,\"type\":\"passive\"},{\"agentName\":\"nimrod-01-paris-aws\",\"creationTime\":\"Tue, 12 May 2020 14:13:16 GMT\",\"id\":\"nimrod-01-ECSCluster-1ENCWB3MDFEUQ_trdemo-01-TrdemoFlightsTaskDefinition-6MATLSTUSK15\",\"instancesCount\":1,\"lastSeen\":\"Thu, 21 May 2020 11:02:25 GMT\",\"model\":\"ngm-1305-aws-01\",\"shouldTap\":false,\"type\":\"passive\"},{\"agentName\":\"nimrod-01-paris-aws\",\"creationTime\":\"Tue, 12 May 2020 14:13:05 GMT\",\"id\":\"nimrod-01-ECSCluster-1ENCWB3MDFEUQ_trdemo-01-TrdemoShoppingcartTaskDefinition-1NSJ45NVQ46VV\",\"instancesCount\":1,\"lastSeen\":\"Thu, 21 May 2020 11:02:25 GMT\",\"model\":\"ngm-1305-aws-01\",\"shouldTap\":false,\"type\":\"passive\"},{\"agentName\":\"nimrod-01-paris-aws\",\"creationTime\":\"Mon, 06 Apr 2020 08:37:02 GMT\",\"id\":\"nimrod-01-ECSCluster-1ENCWB3MDFEUQ_trdemo-01-TrdemoShoppingcartTaskDefinition-VAY9IULBYL27\",\"instancesCount\":0,\"lastSeen\":\"Tue, 12 May 2020 12:34:12 GMT\",\"model\":\"default\",\"shouldTap\":false,\"type\":\"passive\"},{\"agentName\":\"nimrod-01-paris-aws\",\"creationTime\":\"Tue, 12 May 2020 14:13:05 GMT\",\"id\":\"nimrod-01-ECSCluster-1ENCWB3MDFEUQ_trdemo-01-TrdemoUsersTaskDefinition-1KSLKXSKQ0YGI\",\"instancesCount\":1,\"lastSeen\":\"Thu, 21 May 2020 11:02:26 GMT\",\"model\":\"ngm-1305-aws-01\",\"shouldTap\":false,\"type\":\"passive\"},{\"agentName\":\"nimrod-01-paris-aws\",\"creationTime\":\"Mon, 06 Apr 2020 10:47:04 GMT\",\"id\":\"nimrod-01-ECSCluster-1ENCWB3MDFEUQ_trdemo-01-TrdemoUsersTaskDefinition-A4VERGQEE2C9\",\"instancesCount\":0,\"lastSeen\":\"Tue, 12 May 2020 12:34:26 GMT\",\"model\":\"default\",\"shouldTap\":false,\"type\":\"passive\"},{\"agentName\":\"nimrod-01-paris-aws\",\"creationTime\":\"Tue, 12 May 2020 16:03:37 GMT\",\"id\":\"nimrod-01-ECSCluster-1ENCWB3MDFEUQ_trdemo-no-tapper-TrdemoClientTaskDefinition-1SP9ZUN1LZE3N\",\"instancesCount\":0,\"lastSeen\":\"Tue, 12 May 2020 21:58:09 GMT\",\"model\":\"ngm-1205-aws-no-tapper-04\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"nimrod-01-paris-aws\",\"creationTime\":\"Tue, 12 May 2020 16:04:39 GMT\",\"id\":\"nimrod-01-ECSCluster-1ENCWB3MDFEUQ_trdemo-no-tapper-TrdemoFlightsTaskDefinition-1U2E8ONADR65S\",\"instancesCount\":0,\"lastSeen\":\"Tue, 12 May 2020 21:56:39 GMT\",\"model\":\"ngm-1205-aws-no-tapper-04\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"nimrod-01-paris-aws\",\"creationTime\":\"Tue, 12 May 2020 16:01:49 GMT\",\"id\":\"nimrod-01-ECSCluster-1ENCWB3MDFEUQ_trdemo-no-tapper-TrdemoShoppingcartTaskDefinition-PFB3IL2KQWE3\",\"instancesCount\":0,\"lastSeen\":\"Tue, 12 May 2020 21:56:34 GMT\",\"model\":\"ngm-1205-aws-no-tapper-04\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"nimrod-01-paris-aws\",\"creationTime\":\"Tue, 12 May 2020 16:01:54 GMT\",\"id\":\"nimrod-01-ECSCluster-1ENCWB3MDFEUQ_trdemo-no-tapper-TrdemoUsersTaskDefinition-CXOR2F6JGPNY\",\"instancesCount\":0,\"lastSeen\":\"Tue, 12 May 2020 21:56:54 GMT\",\"model\":\"ngm-1205-aws-no-tapper-04\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":null,\"creationTime\":null,\"id\":\"nimrodup9com-prx1\",\"instancesCount\":0,\"lastSeen\":\"Sun, 29 Mar 2020 12:59:27 GMT\",\"model\":\"ngm-2020-03-29-00\",\"shouldTap\":false,\"type\":\"proxy\"},{\"agentName\":null,\"creationTime\":\"Sun, 29 Mar 2020 14:09:23 GMT\",\"id\":\"nimrodup9com-someorgid123-prx1-local\",\"instancesCount\":0,\"lastSeen\":\"Sun, 29 Mar 2020 14:15:05 GMT\",\"model\":\"ngm-2020-03-29-01\",\"shouldTap\":true,\"type\":\"local_proxy\"},{\"agentName\":null,\"creationTime\":null,\"id\":\"ofriup9com-prx1\",\"instancesCount\":0,\"lastSeen\":\"Wed, 04 Mar 2020 08:04:47 GMT\",\"model\":\"aaa\",\"shouldTap\":false,\"type\":\"proxy\"},{\"agentName\":null,\"creationTime\":\"Thu, 19 Mar 2020 16:03:38 GMT\",\"id\":\"rami-prx1\",\"instancesCount\":0,\"lastSeen\":\"Thu, 19 Mar 2020 16:03:38 GMT\",\"model\":\"default\",\"shouldTap\":true,\"type\":\"proxy\"},{\"agentName\":null,\"creationTime\":\"Thu, 02 Apr 2020 06:31:20 GMT\",\"id\":\"ramibermanup9com-prx1\",\"instancesCount\":0,\"lastSeen\":\"Thu, 23 Apr 2020 06:26:18 GMT\",\"model\":\"rami-endpoints\",\"shouldTap\":false,\"type\":\"proxy\"},{\"agentName\":null,\"creationTime\":\"Mon, 04 May 2020 11:25:30 GMT\",\"id\":\"ramibrn1gmailcom-prx1\",\"instancesCount\":0,\"lastSeen\":\"Mon, 04 May 2020 11:26:11 GMT\",\"model\":\"regression-04-05-20\",\"shouldTap\":false,\"type\":\"proxy\"},{\"agentName\":null,\"creationTime\":\"Sun, 12 Apr 2020 12:50:24 GMT\",\"id\":\"ramibrngmailcom-prx1\",\"instancesCount\":0,\"lastSeen\":\"Sun, 12 Apr 2020 12:51:00 GMT\",\"model\":\"rami-proxy-test\",\"shouldTap\":false,\"type\":\"proxy\"},{\"agentName\":null,\"creationTime\":\"Mon, 16 Mar 2020 14:14:37 GMT\",\"id\":\"roeegadottestrio-prx1\",\"instancesCount\":0,\"lastSeen\":\"Thu, 19 Mar 2020 07:02:30 GMT\",\"model\":\"roee\",\"shouldTap\":false,\"type\":\"proxy\"},{\"agentName\":null,\"creationTime\":\"Tue, 31 Mar 2020 09:31:42 GMT\",\"id\":\"roeegadotup9com-someorgid123-prx1-local\",\"instancesCount\":0,\"lastSeen\":\"Mon, 13 Apr 2020 06:29:10 GMT\",\"model\":\"rg_local_proxy_5\",\"shouldTap\":false,\"type\":\"local_proxy\"}]\n" + }, + "redirectURL": "", + "headersSize": -1, + "bodySize": 20352 + }, + "cache": {}, + "timings": { + "send": -1, + "wait": -1, + "receive": 1 + } + }, + { + "startedDateTime": "2020-05-21T11:02:29.283000+00:00", + "time": 1, + "request": { + "method": "GET", + "url": "http://trcc-api-service/models/aws_kong5/suites/all/runs", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "X-Forwarded-Host", + "value": "trcc.stg.testr.io" + }, + { + "name": "X-Forwarded-Proto", + "value": "https" + }, + { + "name": "Origin", + "value": "https://stg.testr.io" + }, + { + "name": "Sec-Fetch-Mode", + "value": "cors" + }, + { + "name": "Sec-Fetch-Dest", + "value": "empty" + }, + { + "name": "Accept-Encoding", + "value": "gzip, deflate, br" + }, + { + "name": "X-Real-Ip", + "value": "10.132.0.11" + }, + { + "name": "User-Agent", + "value": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36" + }, + { + "name": "Dnt", + "value": "1" + }, + { + "name": "X-Request-Id", + "value": "b1223cd172732c5fcce8a65157eafaa2" + }, + { + "name": "X-Forwarded-Port", + "value": "443" + }, + { + "name": "X-Scheme", + "value": "https" + }, + { + "name": "Sec-Fetch-Site", + "value": "same-site" + }, + { + "name": "Referer", + "value": "https://stg.testr.io/someOrgId123/model/aws_kong5/lastResults/systems/all/runs" + }, + { + "name": "Accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "Authorization", + "value": "bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJqSEZ0R1dybjJpY084VnpDYXpaZWUyakpFc2drY1k5ZzhpN2FTbGtielRnIn0.eyJleHAiOjE1OTAwNTkyNDMsImlhdCI6MTU5MDA1ODk0MywiYXV0aF90aW1lIjoxNTkwMDU4NjUxLCJqdGkiOiI1ODYzNmRiMy0wN2IxLTQ2ZDYtOGNiNS01MzEzMDFlZGY4MGYiLCJpc3MiOiJodHRwczovL2F1dGguc3RnLnRlc3RyLmlvL2F1dGgvcmVhbG1zL3Rlc3RyIiwiYXVkIjoiYWNjb3VudCIsInN1YiI6IjBlYWU4ZmFjLTgyYTEtNDUwNi05MWQ0LTA4ZDYxZTI2NWY1NCIsInR5cCI6IkJlYXJlciIsImF6cCI6InJlYWN0LWNsaWVudCIsIm5vbmNlIjoiNTRjMTM5OTktMDg0NS00OWNmLWI1OTAtOTY1ZThjNWI0NmJlIiwic2Vzc2lvbl9zdGF0ZSI6ImY3YjEyOTM1LThmMTctNDc1Zi04NmRhLWQ4NjFjZTYxNWZjNyIsImFjciI6IjAiLCJhbGxvd2VkLW9yaWdpbnMiOlsiaHR0cHM6Ly9zdGcudGVzdHIuaW8iLCJjaHJvbWUtZXh0ZW5zaW9uOi8vbmFkZ2VsamVtbWJna2xkaGNwYWZqbXBtYXBpcGdsY20iLCJodHRwOi8vbG9jYWxob3N0OjMwMDAiXSwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyJhY2NvdW50Ijp7InJvbGVzIjpbIm1hbmFnZS1hY2NvdW50IiwibWFuYWdlLWFjY291bnQtbGlua3MiLCJ2aWV3LXByb2ZpbGUiXX19LCJzY29wZSI6Im9wZW5pZCBwcm9maWxlIGVtYWlsIiwiZ3JvdXBfbWVtYmVyc2hpcCI6WyJzb21lT3JnSWQxMjMiXSwiZW1haWxfdmVyaWZpZWQiOnRydWUsIm5hbWUiOiJSYW1pIEJlcm1hbiIsInByZWZlcnJlZF91c2VybmFtZSI6InJhbWkuYmVybWFuQHVwOS5jb20iLCJnaXZlbl9uYW1lIjoiUmFtaSIsImZhbWlseV9uYW1lIjoiQmVybWFuIiwiZ3JvdXBfc3ViZG9tYWluIjoic29tZU9yZ0lkMTIzIiwiZW1haWwiOiJyYW1pLmJlcm1hbkB1cDkuY29tIiwiZmVhdHVyZUZsYWdzIjp7ImVkaXRFbmRwb2ludFZhcmlhYmxlcyI6dHJ1ZSwic2lkZU5hdmlnYXRpb24iOnRydWV9fQ.UEDsnoo9A8CbdIYKXoOrAAq6y2K7Aoqf-PplHhXFoVep9ewwA9qBjXqgn0fK9cnE_KfZKUcX_cy1HDhhdIfR_aHpbWWhQ3gxISkE6ALka18JIrUv7bFaHKio6eEP6tgn34QVP8aQVEB3e3g7h3dLuUvZ1xIMnt6fy03tD3KgiQlvdHwg5FhJLosiCrHgboEqN5VH_f_2QF33XiXTkDG1e-AOEnIIWqloMDTUPZEUvEo_KH68lB0Uu23YhhI5gPAuKQVb_UjFWcF_6Ysvk3C3j0cuk09DZ7YEI1u-bKp58LHnsS6gqNFQxy-CDlZ8Oht5d2I3LbwZZxHzMixzzFzJCA" + }, + { + "name": "Accept-Language", + "value": "en-IL,en-US;q=0.9,en;q=0.8,he;q=0.7,pl;q=0.6,ru;q=0.5" + }, + { + "name": "X-Forwarded-For", + "value": "10.132.0.11" + }, + { + "name": ":method", + "value": "GET" + }, + { + "name": ":path", + "value": "/models/aws_kong5/suites/all/runs" + }, + { + "name": ":authority", + "value": "trcc.stg.testr.io" + }, + { + "name": ":scheme", + "value": "http" + }, + { + "name": "x-request-start", + "value": "1590058949.283" + }, + { + "name": "x-up9-source", + "value": "10.48.1.44" + }, + { + "name": "x-up9-destination", + "value": "10.48.0.155:5000" + } + ], + "queryString": [], + "headersSize": -1, + "bodySize": -1 + }, + "response": { + "status": 200, + "statusText": "OK", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "Access-Control-Allow-Origin", + "value": "https://stg.testr.io" + }, + { + "name": "Access-Control-Allow-Credentials", + "value": "true" + }, + { + "name": "Vary", + "value": "Origin" + }, + { + "name": "Server", + "value": "gunicorn/19.9.0" + }, + { + "name": "Date", + "value": "Thu, 21 May 2020 11:02:29 GMT" + }, + { + "name": "Connection", + "value": "keep-alive" + }, + { + "name": "Content-Type", + "value": "application/json" + }, + { + "name": "Content-Length", + "value": "3" + }, + { + "name": ":status", + "value": "200" + }, + { + "name": "duration_ms", + "value": "1" + } + ], + "content": { + "size": 3, + "mimeType": "", + "text": "[]\n" + }, + "redirectURL": "", + "headersSize": -1, + "bodySize": 3 + }, + "cache": {}, + "timings": { + "send": -1, + "wait": -1, + "receive": 1 + } + }, + { + "startedDateTime": "2020-05-21T11:02:29.284000+00:00", + "time": 1, + "request": { + "method": "GET", + "url": "http://trcc-api-service/models/aws_kong5/suites/all/runs", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "Sec-Fetch-Dest", + "value": "empty" + }, + { + "name": "Accept-Language", + "value": "en-IL,en-US;q=0.9,en;q=0.8,he;q=0.7,pl;q=0.6,ru;q=0.5" + }, + { + "name": "X-Forwarded-Host", + "value": "trcc.stg.testr.io" + }, + { + "name": "X-Forwarded-Proto", + "value": "https" + }, + { + "name": "Accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "Authorization", + "value": "bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJqSEZ0R1dybjJpY084VnpDYXpaZWUyakpFc2drY1k5ZzhpN2FTbGtielRnIn0.eyJleHAiOjE1OTAwNTkyNDMsImlhdCI6MTU5MDA1ODk0MywiYXV0aF90aW1lIjoxNTkwMDU4NjUxLCJqdGkiOiI1ODYzNmRiMy0wN2IxLTQ2ZDYtOGNiNS01MzEzMDFlZGY4MGYiLCJpc3MiOiJodHRwczovL2F1dGguc3RnLnRlc3RyLmlvL2F1dGgvcmVhbG1zL3Rlc3RyIiwiYXVkIjoiYWNjb3VudCIsInN1YiI6IjBlYWU4ZmFjLTgyYTEtNDUwNi05MWQ0LTA4ZDYxZTI2NWY1NCIsInR5cCI6IkJlYXJlciIsImF6cCI6InJlYWN0LWNsaWVudCIsIm5vbmNlIjoiNTRjMTM5OTktMDg0NS00OWNmLWI1OTAtOTY1ZThjNWI0NmJlIiwic2Vzc2lvbl9zdGF0ZSI6ImY3YjEyOTM1LThmMTctNDc1Zi04NmRhLWQ4NjFjZTYxNWZjNyIsImFjciI6IjAiLCJhbGxvd2VkLW9yaWdpbnMiOlsiaHR0cHM6Ly9zdGcudGVzdHIuaW8iLCJjaHJvbWUtZXh0ZW5zaW9uOi8vbmFkZ2VsamVtbWJna2xkaGNwYWZqbXBtYXBpcGdsY20iLCJodHRwOi8vbG9jYWxob3N0OjMwMDAiXSwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyJhY2NvdW50Ijp7InJvbGVzIjpbIm1hbmFnZS1hY2NvdW50IiwibWFuYWdlLWFjY291bnQtbGlua3MiLCJ2aWV3LXByb2ZpbGUiXX19LCJzY29wZSI6Im9wZW5pZCBwcm9maWxlIGVtYWlsIiwiZ3JvdXBfbWVtYmVyc2hpcCI6WyJzb21lT3JnSWQxMjMiXSwiZW1haWxfdmVyaWZpZWQiOnRydWUsIm5hbWUiOiJSYW1pIEJlcm1hbiIsInByZWZlcnJlZF91c2VybmFtZSI6InJhbWkuYmVybWFuQHVwOS5jb20iLCJnaXZlbl9uYW1lIjoiUmFtaSIsImZhbWlseV9uYW1lIjoiQmVybWFuIiwiZ3JvdXBfc3ViZG9tYWluIjoic29tZU9yZ0lkMTIzIiwiZW1haWwiOiJyYW1pLmJlcm1hbkB1cDkuY29tIiwiZmVhdHVyZUZsYWdzIjp7ImVkaXRFbmRwb2ludFZhcmlhYmxlcyI6dHJ1ZSwic2lkZU5hdmlnYXRpb24iOnRydWV9fQ.UEDsnoo9A8CbdIYKXoOrAAq6y2K7Aoqf-PplHhXFoVep9ewwA9qBjXqgn0fK9cnE_KfZKUcX_cy1HDhhdIfR_aHpbWWhQ3gxISkE6ALka18JIrUv7bFaHKio6eEP6tgn34QVP8aQVEB3e3g7h3dLuUvZ1xIMnt6fy03tD3KgiQlvdHwg5FhJLosiCrHgboEqN5VH_f_2QF33XiXTkDG1e-AOEnIIWqloMDTUPZEUvEo_KH68lB0Uu23YhhI5gPAuKQVb_UjFWcF_6Ysvk3C3j0cuk09DZ7YEI1u-bKp58LHnsS6gqNFQxy-CDlZ8Oht5d2I3LbwZZxHzMixzzFzJCA" + }, + { + "name": "Origin", + "value": "https://stg.testr.io" + }, + { + "name": "X-Forwarded-Port", + "value": "443" + }, + { + "name": "X-Request-Id", + "value": "a3d7529b16ebc6e2d819869cf9510e1c" + }, + { + "name": "X-Real-Ip", + "value": "10.132.0.11" + }, + { + "name": "X-Scheme", + "value": "https" + }, + { + "name": "Sec-Fetch-Mode", + "value": "cors" + }, + { + "name": "Referer", + "value": "https://stg.testr.io/someOrgId123/model/aws_kong5/lastResults/systems/all/runs" + }, + { + "name": "Accept-Encoding", + "value": "gzip, deflate, br" + }, + { + "name": "X-Forwarded-For", + "value": "10.132.0.11" + }, + { + "name": "Dnt", + "value": "1" + }, + { + "name": "User-Agent", + "value": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36" + }, + { + "name": "Sec-Fetch-Site", + "value": "same-site" + }, + { + "name": ":method", + "value": "GET" + }, + { + "name": ":path", + "value": "/models/aws_kong5/suites/all/runs" + }, + { + "name": ":authority", + "value": "trcc.stg.testr.io" + }, + { + "name": ":scheme", + "value": "http" + }, + { + "name": "x-request-start", + "value": "1590058949.284" + }, + { + "name": "x-up9-source", + "value": "10.48.1.44" + }, + { + "name": "x-up9-destination", + "value": "10.48.0.155:5000" + } + ], + "queryString": [], + "headersSize": -1, + "bodySize": -1 + }, + "response": { + "status": 200, + "statusText": "OK", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "Access-Control-Allow-Credentials", + "value": "true" + }, + { + "name": "Vary", + "value": "Origin" + }, + { + "name": "Server", + "value": "gunicorn/19.9.0" + }, + { + "name": "Date", + "value": "Thu, 21 May 2020 11:02:29 GMT" + }, + { + "name": "Connection", + "value": "keep-alive" + }, + { + "name": "Content-Type", + "value": "application/json" + }, + { + "name": "Content-Length", + "value": "3" + }, + { + "name": "Access-Control-Allow-Origin", + "value": "https://stg.testr.io" + }, + { + "name": ":status", + "value": "200" + }, + { + "name": "duration_ms", + "value": "1" + } + ], + "content": { + "size": 3, + "mimeType": "", + "text": "[]\n" + }, + "redirectURL": "", + "headersSize": -1, + "bodySize": 3 + }, + "cache": {}, + "timings": { + "send": -1, + "wait": -1, + "receive": 1 + } + }, + { + "startedDateTime": "2020-05-21T11:02:30.303000+00:00", + "time": 6, + "request": { + "method": "GET", + "url": "http://trcc-api-service/models/aws_kong5/suites/all/runs", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "User-Agent", + "value": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36" + }, + { + "name": "Referer", + "value": "https://stg.testr.io/someOrgId123/model/aws_kong5/lastResults/systems/all/runs" + }, + { + "name": "X-Forwarded-For", + "value": "10.132.0.11" + }, + { + "name": "X-Forwarded-Proto", + "value": "https" + }, + { + "name": "X-Scheme", + "value": "https" + }, + { + "name": "X-Request-Id", + "value": "25018ed0c450221f0917518f2e571993" + }, + { + "name": "Sec-Fetch-Dest", + "value": "empty" + }, + { + "name": "Accept-Language", + "value": "en-IL,en-US;q=0.9,en;q=0.8,he;q=0.7,pl;q=0.6,ru;q=0.5" + }, + { + "name": "Sec-Fetch-Mode", + "value": "cors" + }, + { + "name": "X-Forwarded-Port", + "value": "443" + }, + { + "name": "Accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "Authorization", + "value": "bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJqSEZ0R1dybjJpY084VnpDYXpaZWUyakpFc2drY1k5ZzhpN2FTbGtielRnIn0.eyJleHAiOjE1OTAwNTkyNDMsImlhdCI6MTU5MDA1ODk0MywiYXV0aF90aW1lIjoxNTkwMDU4NjUxLCJqdGkiOiI1ODYzNmRiMy0wN2IxLTQ2ZDYtOGNiNS01MzEzMDFlZGY4MGYiLCJpc3MiOiJodHRwczovL2F1dGguc3RnLnRlc3RyLmlvL2F1dGgvcmVhbG1zL3Rlc3RyIiwiYXVkIjoiYWNjb3VudCIsInN1YiI6IjBlYWU4ZmFjLTgyYTEtNDUwNi05MWQ0LTA4ZDYxZTI2NWY1NCIsInR5cCI6IkJlYXJlciIsImF6cCI6InJlYWN0LWNsaWVudCIsIm5vbmNlIjoiNTRjMTM5OTktMDg0NS00OWNmLWI1OTAtOTY1ZThjNWI0NmJlIiwic2Vzc2lvbl9zdGF0ZSI6ImY3YjEyOTM1LThmMTctNDc1Zi04NmRhLWQ4NjFjZTYxNWZjNyIsImFjciI6IjAiLCJhbGxvd2VkLW9yaWdpbnMiOlsiaHR0cHM6Ly9zdGcudGVzdHIuaW8iLCJjaHJvbWUtZXh0ZW5zaW9uOi8vbmFkZ2VsamVtbWJna2xkaGNwYWZqbXBtYXBpcGdsY20iLCJodHRwOi8vbG9jYWxob3N0OjMwMDAiXSwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyJhY2NvdW50Ijp7InJvbGVzIjpbIm1hbmFnZS1hY2NvdW50IiwibWFuYWdlLWFjY291bnQtbGlua3MiLCJ2aWV3LXByb2ZpbGUiXX19LCJzY29wZSI6Im9wZW5pZCBwcm9maWxlIGVtYWlsIiwiZ3JvdXBfbWVtYmVyc2hpcCI6WyJzb21lT3JnSWQxMjMiXSwiZW1haWxfdmVyaWZpZWQiOnRydWUsIm5hbWUiOiJSYW1pIEJlcm1hbiIsInByZWZlcnJlZF91c2VybmFtZSI6InJhbWkuYmVybWFuQHVwOS5jb20iLCJnaXZlbl9uYW1lIjoiUmFtaSIsImZhbWlseV9uYW1lIjoiQmVybWFuIiwiZ3JvdXBfc3ViZG9tYWluIjoic29tZU9yZ0lkMTIzIiwiZW1haWwiOiJyYW1pLmJlcm1hbkB1cDkuY29tIiwiZmVhdHVyZUZsYWdzIjp7ImVkaXRFbmRwb2ludFZhcmlhYmxlcyI6dHJ1ZSwic2lkZU5hdmlnYXRpb24iOnRydWV9fQ.UEDsnoo9A8CbdIYKXoOrAAq6y2K7Aoqf-PplHhXFoVep9ewwA9qBjXqgn0fK9cnE_KfZKUcX_cy1HDhhdIfR_aHpbWWhQ3gxISkE6ALka18JIrUv7bFaHKio6eEP6tgn34QVP8aQVEB3e3g7h3dLuUvZ1xIMnt6fy03tD3KgiQlvdHwg5FhJLosiCrHgboEqN5VH_f_2QF33XiXTkDG1e-AOEnIIWqloMDTUPZEUvEo_KH68lB0Uu23YhhI5gPAuKQVb_UjFWcF_6Ysvk3C3j0cuk09DZ7YEI1u-bKp58LHnsS6gqNFQxy-CDlZ8Oht5d2I3LbwZZxHzMixzzFzJCA" + }, + { + "name": "Dnt", + "value": "1" + }, + { + "name": "Origin", + "value": "https://stg.testr.io" + }, + { + "name": "Sec-Fetch-Site", + "value": "same-site" + }, + { + "name": "Accept-Encoding", + "value": "gzip, deflate, br" + }, + { + "name": "X-Real-Ip", + "value": "10.132.0.11" + }, + { + "name": "X-Forwarded-Host", + "value": "trcc.stg.testr.io" + }, + { + "name": ":method", + "value": "GET" + }, + { + "name": ":path", + "value": "/models/aws_kong5/suites/all/runs" + }, + { + "name": ":authority", + "value": "trcc.stg.testr.io" + }, + { + "name": ":scheme", + "value": "http" + }, + { + "name": "x-request-start", + "value": "1590058950.303" + }, + { + "name": "x-up9-source", + "value": "10.48.1.44" + }, + { + "name": "x-up9-destination", + "value": "10.48.0.155:5000" + } + ], + "queryString": [], + "headersSize": -1, + "bodySize": -1 + }, + "response": { + "status": 200, + "statusText": "OK", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "Access-Control-Allow-Credentials", + "value": "true" + }, + { + "name": "Vary", + "value": "Origin" + }, + { + "name": "Server", + "value": "gunicorn/19.9.0" + }, + { + "name": "Date", + "value": "Thu, 21 May 2020 11:02:29 GMT" + }, + { + "name": "Connection", + "value": "keep-alive" + }, + { + "name": "Content-Type", + "value": "application/json" + }, + { + "name": "Content-Length", + "value": "3" + }, + { + "name": "Access-Control-Allow-Origin", + "value": "https://stg.testr.io" + }, + { + "name": ":status", + "value": "200" + }, + { + "name": "duration_ms", + "value": "6" + } + ], + "content": { + "size": 3, + "mimeType": "", + "text": "[]\n" + }, + "redirectURL": "", + "headersSize": -1, + "bodySize": 3 + }, + "cache": {}, + "timings": { + "send": -1, + "wait": -1, + "receive": 6 + } + }, + { + "startedDateTime": "2020-05-21T11:02:30.309000+00:00", + "time": 1, + "request": { + "method": "GET", + "url": "http://trcc-api-service/models/liraz_test_2105/suites/all/runs", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "X-Scheme", + "value": "https" + }, + { + "name": "User-Agent", + "value": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36" + }, + { + "name": "Origin", + "value": "http://localhost:3000" + }, + { + "name": "Sec-Fetch-Site", + "value": "cross-site" + }, + { + "name": "Sec-Fetch-Dest", + "value": "empty" + }, + { + "name": "Accept-Encoding", + "value": "gzip, deflate, br" + }, + { + "name": "X-Forwarded-Port", + "value": "443" + }, + { + "name": "Authorization", + "value": "bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJqSEZ0R1dybjJpY084VnpDYXpaZWUyakpFc2drY1k5ZzhpN2FTbGtielRnIn0.eyJleHAiOjE1OTAwNTkxMTQsImlhdCI6MTU5MDA1ODgxNCwiYXV0aF90aW1lIjoxNTg5OTU4NDcwLCJqdGkiOiIyNzgxOTYyMy00Yjk5LTQ2MzQtOWZlNi02ZDRiNzYwNGU2ZmMiLCJpc3MiOiJodHRwczovL2F1dGguc3RnLnRlc3RyLmlvL2F1dGgvcmVhbG1zL3Rlc3RyIiwiYXVkIjoiYWNjb3VudCIsInN1YiI6ImU4NzAxMDZjLWJjYjItNDQxMy05Y2Q2LTUwMTZiNTUxMDRlYiIsInR5cCI6IkJlYXJlciIsImF6cCI6InJlYWN0LWNsaWVudCIsIm5vbmNlIjoiYzJiZTgwNGYtZjBiYS00ZWUxLTgyZWQtYmIzMTY5ZDBkYjU1Iiwic2Vzc2lvbl9zdGF0ZSI6IjM2ZDc2MDAxLTE5M2EtNGQ5OS05MTIwLTZmNGZkMjEwZDAxMiIsImFjciI6IjAiLCJhbGxvd2VkLW9yaWdpbnMiOlsiaHR0cHM6Ly9zdGcudGVzdHIuaW8iLCJjaHJvbWUtZXh0ZW5zaW9uOi8vbmFkZ2VsamVtbWJna2xkaGNwYWZqbXBtYXBpcGdsY20iLCJodHRwOi8vbG9jYWxob3N0OjMwMDAiXSwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm1hbmFnZUZlYXR1cmVGbGFncyIsIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyJhY2NvdW50Ijp7InJvbGVzIjpbIm1hbmFnZS1hY2NvdW50IiwibWFuYWdlLWFjY291bnQtbGlua3MiLCJ2aWV3LXByb2ZpbGUiXX19LCJzY29wZSI6Im9wZW5pZCBwcm9maWxlIGVtYWlsIiwiZ3JvdXBfbWVtYmVyc2hpcCI6WyJzb21lT3JnSWQxMjMiXSwiZW1haWxfdmVyaWZpZWQiOnRydWUsIm5hbWUiOiJMaXJheiBZZWhlemtlbCIsInByZWZlcnJlZF91c2VybmFtZSI6ImxpcmF6eUB1cDkuY29tIiwiZ2l2ZW5fbmFtZSI6IkxpcmF6IiwiZmFtaWx5X25hbWUiOiJZZWhlemtlbCIsImdyb3VwX3N1YmRvbWFpbiI6InNvbWVPcmdJZDEyMyIsImVtYWlsIjoibGlyYXp5QHVwOS5jb20iLCJmZWF0dXJlRmxhZ3MiOnsiZWRpdEVuZHBvaW50VmFyaWFibGVzIjp0cnVlLCJzaWRlTmF2aWdhdGlvbiI6dHJ1ZX19.KdLz7jeIr8HaST4FpJROrg6Sp-o1Nl5dU2hIbNCA0FEY-jmaoubiOlz6p7QthTJ8t-S0R_qdZtd7rXf249L6wGG_A6rriZhH41Fxhyrb0ig8OVrQp-sepv_AUf7GEIGYgpYIPFnZ6G3Dkq1aY9NzLXruh7fly_ZRkRlzF_wb1vt5NRJz3xeMrj82BOJJmUpv08AYYQhnyjKiBp7rgrNTTBejaFBozsJgXGkIi-DZfv862tgFhvPNuXsqKO5iOxv9nApuQJ2O4knVB1ag7tqB1xQcvBdkZt9gG1VVkpWsM_2j5C9cBwOuPRgHZhpZuT_YNfB4ITefGV1aYfRF-cjnug" + }, + { + "name": "X-Real-Ip", + "value": "10.132.0.22" + }, + { + "name": "X-Forwarded-Proto", + "value": "https" + }, + { + "name": "Accept-Language", + "value": "en-US,en;q=0.9" + }, + { + "name": "Accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "Referer", + "value": "http://localhost:3000/someOrgId123/model/liraz_test_2105/lastResults/systems/all/summary" + }, + { + "name": "X-Forwarded-Host", + "value": "trcc.stg.testr.io" + }, + { + "name": "Sec-Fetch-Mode", + "value": "cors" + }, + { + "name": "X-Request-Id", + "value": "8b474c8aa95eb4e73f6446d5a3267104" + }, + { + "name": "X-Forwarded-For", + "value": "10.132.0.22" + }, + { + "name": ":method", + "value": "GET" + }, + { + "name": ":path", + "value": "/models/liraz_test_2105/suites/all/runs" + }, + { + "name": ":authority", + "value": "trcc.stg.testr.io" + }, + { + "name": ":scheme", + "value": "http" + }, + { + "name": "x-request-start", + "value": "1590058950.309" + }, + { + "name": "x-up9-source", + "value": "10.48.1.44" + }, + { + "name": "x-up9-destination", + "value": "10.48.0.155:5000" + } + ], + "queryString": [], + "headersSize": -1, + "bodySize": -1 + }, + "response": { + "status": 200, + "statusText": "OK", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "Content-Length", + "value": "3" + }, + { + "name": "Access-Control-Allow-Origin", + "value": "http://localhost:3000" + }, + { + "name": "Access-Control-Allow-Credentials", + "value": "true" + }, + { + "name": "Vary", + "value": "Origin" + }, + { + "name": "Server", + "value": "gunicorn/19.9.0" + }, + { + "name": "Date", + "value": "Thu, 21 May 2020 11:02:29 GMT" + }, + { + "name": "Connection", + "value": "keep-alive" + }, + { + "name": "Content-Type", + "value": "application/json" + }, + { + "name": ":status", + "value": "200" + }, + { + "name": "duration_ms", + "value": "1" + } + ], + "content": { + "size": 3, + "mimeType": "", + "text": "[]\n" + }, + "redirectURL": "", + "headersSize": -1, + "bodySize": 3 + }, + "cache": {}, + "timings": { + "send": -1, + "wait": -1, + "receive": 1 + } + }, + { + "startedDateTime": "2020-05-21T11:02:29.283000+00:00", + "time": 1027, + "request": { + "method": "POST", + "url": "http://trcc-api-service/tapping/state", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "Accept", + "value": "*/*" + }, + { + "name": "Content-Type", + "value": "application/json" + }, + { + "name": "X-Request-Id", + "value": "b8efe23a935187a309f97b910cb46c6c" + }, + { + "name": "X-Forwarded-Proto", + "value": "https" + }, + { + "name": "Content-Length", + "value": "792" + }, + { + "name": "Accept-Encoding", + "value": "gzip, deflate" + }, + { + "name": "X-Scheme", + "value": "https" + }, + { + "name": "X-Real-Ip", + "value": "10.132.0.22" + }, + { + "name": "X-Forwarded-For", + "value": "10.132.0.22" + }, + { + "name": "X-Forwarded-Port", + "value": "443" + }, + { + "name": "User-Agent", + "value": "python-requests/2.23.0" + }, + { + "name": "X-Forwarded-Host", + "value": "trcc.stg.testr.io" + }, + { + "name": "Authorization", + "value": "Bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJqSEZ0R1dybjJpY084VnpDYXpaZWUyakpFc2drY1k5ZzhpN2FTbGtielRnIn0.eyJleHAiOjE1OTAwNTkwNDgsImlhdCI6MTU5MDA1ODc0OCwianRpIjoiNDY2MDc5ZmItOTY4YS00YTBjLWIyNjgtNDJlZTIxYzFhNjI4IiwiaXNzIjoiaHR0cHM6Ly9hdXRoLnN0Zy50ZXN0ci5pby9hdXRoL3JlYWxtcy90ZXN0ciIsImF1ZCI6ImFjY291bnQiLCJzdWIiOiI0YWFkZWM0Mi01OWE5LTRmZDUtODI3NC1lZWI5NDNmODQyNmUiLCJ0eXAiOiJCZWFyZXIiLCJhenAiOiIzWjE5LTNzYnN2MU9KSDBEd2l2UWkyYmZVSzdsSlNFdSIsInNlc3Npb25fc3RhdGUiOiI3MzAzNjlhMi0yMzAyLTQ2MTEtYmJmZS02YmU3YTg4ZjMwN2UiLCJhY3IiOiIxIiwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyJhY2NvdW50Ijp7InJvbGVzIjpbIm1hbmFnZS1hY2NvdW50IiwibWFuYWdlLWFjY291bnQtbGlua3MiLCJ2aWV3LXByb2ZpbGUiXX19LCJzY29wZSI6InByb2ZpbGUgZW1haWwiLCJjbGllbnRJZCI6IjNaMTktM3Nic3YxT0pIMER3aXZRaTJiZlVLN2xKU0V1IiwiY2xpZW50SG9zdCI6IjEwLjEzMi4wLjIyIiwiZW1haWxfdmVyaWZpZWQiOmZhbHNlLCJvcmdhbml6YXRpb24iOiJzb21lT3JnSWQxMjMiLCJwcmVmZXJyZWRfdXNlcm5hbWUiOiJzZXJ2aWNlLWFjY291bnQtM3oxOS0zc2JzdjFvamgwZHdpdnFpMmJmdWs3bGpzZXUiLCJjbGllbnRBZGRyZXNzIjoiMTAuMTMyLjAuMjIiLCJlbWFpbCI6InNlcnZpY2UtYWNjb3VudC0zejE5LTNzYnN2MW9qaDBkd2l2cWkyYmZ1azdsanNldUBwbGFjZWhvbGRlci5vcmcifQ.BGvSTRIDSYBiSJ6JbvHE5zF0rDyW0roWtFJkMqX8eyGDwtR0nbLmNyvilEkvfbkVHXnzA-DDkRnR1jJCqGxTk-MXqPHGsSr8kdkdQ3GCUH8RfVxmrm-wCtx4GljtLkfFuTo-iELp5eCPqNG6OYT2S1dlrpGubpWurMY38bXTcIAM689vjQF1Dnlk8avxa195vbHhcYqPi2MG6aMzTq-y5FsRzsfgZbTErV74oYhWK5Gr2lsG-sXJiJDzTQz8naXAfwlPIjNnpUOhgtPwXlrdXll9kXZIg2CktUXjUKhGb_EJNIE7LgVVtDNHRkycd6bS9e2qXlvoye7JbiJee_LWIw" + }, + { + "name": ":method", + "value": "POST" + }, + { + "name": ":path", + "value": "/tapping/state" + }, + { + "name": ":authority", + "value": "trcc.stg.testr.io" + }, + { + "name": ":scheme", + "value": "http" + }, + { + "name": "x-request-start", + "value": "1590058949.283" + }, + { + "name": "x-up9-source", + "value": "10.48.1.44" + }, + { + "name": "x-up9-destination", + "value": "10.48.0.155:5000" + } + ], + "queryString": [], + "headersSize": -1, + "bodySize": -1, + "postData": { + "mimeType": "", + "text": "{\"data\": [{\"id\": \"e677a5bc-0542-11ea-a607-42010a8400ce_tradmin_trcc-api-deployment-stable\", \"instance_id\": \"trcc-api-deployment-stable-559db9f988-sj52h\", \"ip\": \"10.48.0.155\", \"type\": \"passive\", \"agentName\": \"stg-cloud-agent\"}, {\"id\": \"e677a5bc-0542-11ea-a607-42010a8400ce_trdemo_trdemo-client\", \"instance_id\": \"trdemo-client-6db5b5684-srtdd\", \"ip\": \"10.48.0.139\", \"type\": \"envoy\", \"agentName\": \"stg-cloud-agent\"}, {\"id\": \"e677a5bc-0542-11ea-a607-42010a8400ce_trdemo_trdemo-flights\", \"instance_id\": \"trdemo-flights-5679bd4b49-r489r\", \"ip\": \"10.48.0.51\", \"type\": \"passive\", \"agentName\": \"stg-cloud-agent\"}, {\"id\": \"e677a5bc-0542-11ea-a607-42010a8400ce_trdemo_trdemo-users\", \"instance_id\": \"trdemo-users-77f6546dbc-k8rxr\", \"ip\": \"10.48.0.50\", \"type\": \"passive\", \"agentName\": \"stg-cloud-agent\"}]}" + } + }, + "response": { + "status": 200, + "statusText": "OK", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "Content-Length", + "value": "1047" + }, + { + "name": "Access-Control-Allow-Origin", + "value": "http://localhost:3000" + }, + { + "name": "Access-Control-Allow-Credentials", + "value": "true" + }, + { + "name": "Vary", + "value": "Origin" + }, + { + "name": "Server", + "value": "gunicorn/19.9.0" + }, + { + "name": "Date", + "value": "Thu, 21 May 2020 11:02:29 GMT" + }, + { + "name": "Connection", + "value": "keep-alive" + }, + { + "name": "Content-Type", + "value": "application/json" + }, + { + "name": ":status", + "value": "200" + }, + { + "name": "duration_ms", + "value": "1027" + } + ], + "content": { + "size": 1047, + "mimeType": "", + "text": "[{\"agentName\":\"stg-cloud-agent\",\"creationTime\":\"Mon, 18 May 2020 08:34:05 GMT\",\"id\":\"e677a5bc-0542-11ea-a607-42010a8400ce_tradmin_trcc-api-deployment-stable\",\"instancesCount\":2,\"lastSeen\":\"Mon, 18 May 2020 14:48:04 GMT\",\"model\":\"default\",\"shouldTap\":false,\"type\":\"envoy\"},{\"agentName\":\"stg-cloud-agent\",\"creationTime\":\"Wed, 20 May 2020 09:33:35 GMT\",\"id\":\"e677a5bc-0542-11ea-a607-42010a8400ce_trdemo_trdemo-client\",\"instancesCount\":1,\"lastSeen\":\"Wed, 20 May 2020 10:23:57 GMT\",\"model\":\"default\",\"shouldTap\":true,\"type\":\"envoy\"},{\"agentName\":\"stg-cloud-agent\",\"creationTime\":\"Mon, 18 May 2020 07:45:09 GMT\",\"id\":\"e677a5bc-0542-11ea-a607-42010a8400ce_trdemo_trdemo-flights\",\"instancesCount\":1,\"lastSeen\":\"Wed, 20 May 2020 10:23:57 GMT\",\"model\":\"default\",\"shouldTap\":false,\"type\":\"passive\"},{\"agentName\":\"stg-cloud-agent\",\"creationTime\":\"Mon, 18 May 2020 07:45:09 GMT\",\"id\":\"e677a5bc-0542-11ea-a607-42010a8400ce_trdemo_trdemo-users\",\"instancesCount\":1,\"lastSeen\":\"Wed, 20 May 2020 10:23:57 GMT\",\"model\":\"default\",\"shouldTap\":false,\"type\":\"passive\"}]\n" + }, + "redirectURL": "", + "headersSize": -1, + "bodySize": 1047 + }, + "cache": {}, + "timings": { + "send": -1, + "wait": -1, + "receive": 1027 + } + }, + { + "startedDateTime": "2020-05-21T11:02:29.282000+00:00", + "time": 1028, + "request": { + "method": "GET", + "url": "http://trcc-api-service/models/ah.trdemo.0511/suites/all/runs/state", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "Sec-Fetch-Mode", + "value": "cors" + }, + { + "name": "Sec-Fetch-Dest", + "value": "empty" + }, + { + "name": "Accept-Encoding", + "value": "gzip, deflate, br" + }, + { + "name": "X-Scheme", + "value": "https" + }, + { + "name": "Origin", + "value": "https://stg.testr.io" + }, + { + "name": "X-Real-Ip", + "value": "10.132.0.85" + }, + { + "name": "X-Forwarded-Host", + "value": "trcc.stg.testr.io" + }, + { + "name": "Authorization", + "value": "bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJqSEZ0R1dybjJpY084VnpDYXpaZWUyakpFc2drY1k5ZzhpN2FTbGtielRnIn0.eyJleHAiOjE1OTAwNTkwNTQsImlhdCI6MTU5MDA1ODc1NCwiYXV0aF90aW1lIjoxNTg5OTA1NzU2LCJqdGkiOiJhMDhiNWVhYy1lMDg0LTRjOTMtYmY3ZC0yNjlkZmRmZWIyZjciLCJpc3MiOiJodHRwczovL2F1dGguc3RnLnRlc3RyLmlvL2F1dGgvcmVhbG1zL3Rlc3RyIiwiYXVkIjoiYWNjb3VudCIsInN1YiI6IjdiYmFhOTg4LWFlMmUtNGQxMy1iNGQzLTdhMzc0MzEyNzFiYyIsInR5cCI6IkJlYXJlciIsImF6cCI6InJlYWN0LWNsaWVudCIsIm5vbmNlIjoiY2EwOTQ2ZWItMDA2NC00YzUwLTgxYTctZWIxNzBkY2I0MjQ0Iiwic2Vzc2lvbl9zdGF0ZSI6IjdjYTU4YWIxLWRlY2EtNDUzMS05NjljLTVhMzUzYmVmZDIyOCIsImFjciI6IjAiLCJhbGxvd2VkLW9yaWdpbnMiOlsiaHR0cHM6Ly9zdGcudGVzdHIuaW8iLCJjaHJvbWUtZXh0ZW5zaW9uOi8vbmFkZ2VsamVtbWJna2xkaGNwYWZqbXBtYXBpcGdsY20iLCJodHRwOi8vbG9jYWxob3N0OjMwMDAiXSwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm1hbmFnZUZlYXR1cmVGbGFncyIsIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyJhY2NvdW50Ijp7InJvbGVzIjpbIm1hbmFnZS1hY2NvdW50IiwibWFuYWdlLWFjY291bnQtbGlua3MiLCJ2aWV3LXByb2ZpbGUiXX19LCJzY29wZSI6Im9wZW5pZCBwcm9maWxlIGVtYWlsIiwiZ3JvdXBfbWVtYmVyc2hpcCI6WyJzb21lT3JnSWQxMjMiXSwiZW1haWxfdmVyaWZpZWQiOnRydWUsIm5hbWUiOiJBbGV4IEhhaXV0IiwicHJlZmVycmVkX3VzZXJuYW1lIjoiYWxleEB1cDkuY29tIiwiZ2l2ZW5fbmFtZSI6IkFsZXgiLCJmYW1pbHlfbmFtZSI6IkhhaXV0IiwiZ3JvdXBfc3ViZG9tYWluIjoic29tZU9yZ0lkMTIzIiwiZW1haWwiOiJhbGV4QHVwOS5jb20iLCJmZWF0dXJlRmxhZ3MiOnsiZWRpdEVuZHBvaW50VmFyaWFibGVzIjp0cnVlLCJzaWRlTmF2aWdhdGlvbiI6dHJ1ZX19.iXBcJGDz9UVUzsfUsNdoP9VC-qkPZrkTryuQ1LfSX08ovoFDEHxVb8bgud_iP36QnA8TpHXKde0kcLYDO-CV0hp-sEV7nX_zTy4uKC7vbD8Of6LkHJ4VKwcp-VBTwoEQ2nan6aFqIS5AkJxTEiCf0owIhUB7cnCYI-MkZhOUxRbh3tfAv-wBQb6aDo4M6sAG-EY8epcy4BcMxQrnflEF8jGqpveBmSMNQYS5a3yM0sFQ0sXRYGEYMWTemL0E0S253wqdMtoBpDdreNtxyecmZlTL0gNtRcXl5tBVJVLq1PgWNr43Wcxgzc4b2ujziE_E7feAj22w-dN78Q_IEXkdKw" + }, + { + "name": "Accept-Language", + "value": "en-US,en;q=0.9,de;q=0.8,he;q=0.7,ru;q=0.6" + }, + { + "name": "X-Forwarded-Port", + "value": "443" + }, + { + "name": "Accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "Sec-Fetch-Site", + "value": "same-site" + }, + { + "name": "User-Agent", + "value": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36" + }, + { + "name": "Referer", + "value": "https://stg.testr.io/someOrgId123/model/ah.trdemo.0511/lastResults/systems/all/endpoints" + }, + { + "name": "X-Request-Id", + "value": "618a62ec10a4c7db828846b1fc1de14c" + }, + { + "name": "X-Forwarded-For", + "value": "10.132.0.85" + }, + { + "name": "X-Forwarded-Proto", + "value": "https" + }, + { + "name": ":method", + "value": "GET" + }, + { + "name": ":path", + "value": "/models/ah.trdemo.0511/suites/all/runs/state" + }, + { + "name": ":authority", + "value": "trcc.stg.testr.io" + }, + { + "name": ":scheme", + "value": "http" + }, + { + "name": "x-request-start", + "value": "1590058949.282" + }, + { + "name": "x-up9-source", + "value": "10.48.1.44" + }, + { + "name": "x-up9-destination", + "value": "10.48.0.155:5000" + } + ], + "queryString": [], + "headersSize": -1, + "bodySize": -1 + }, + "response": { + "status": 200, + "statusText": "OK", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "Connection", + "value": "keep-alive" + }, + { + "name": "Content-Type", + "value": "application/json" + }, + { + "name": "Content-Length", + "value": "72" + }, + { + "name": "Access-Control-Allow-Origin", + "value": "https://stg.testr.io" + }, + { + "name": "Access-Control-Allow-Credentials", + "value": "true" + }, + { + "name": "Vary", + "value": "Origin" + }, + { + "name": "Server", + "value": "gunicorn/19.9.0" + }, + { + "name": "Date", + "value": "Thu, 21 May 2020 11:02:29 GMT" + }, + { + "name": ":status", + "value": "200" + }, + { + "name": "duration_ms", + "value": "1028" + } + ], + "content": { + "size": 72, + "mimeType": "", + "text": "{\"errorCount\":0,\"lastMajorGeneration\":-1,\"lastSuccessfulGeneration\":-1}\n" + }, + "redirectURL": "", + "headersSize": -1, + "bodySize": 72 + }, + "cache": {}, + "timings": { + "send": -1, + "wait": -1, + "receive": 1028 + } + }, + { + "startedDateTime": "2020-05-21T11:02:30.310000+00:00", + "time": 1, + "request": { + "method": "GET", + "url": "http://trcc-api-service/models/liraz_test_2105/suites/all/runs", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "X-Request-Id", + "value": "c056bd5b818670207ae58702d755cd9f" + }, + { + "name": "X-Real-Ip", + "value": "10.132.0.22" + }, + { + "name": "X-Forwarded-Port", + "value": "443" + }, + { + "name": "X-Forwarded-Proto", + "value": "https" + }, + { + "name": "Accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "Sec-Fetch-Site", + "value": "cross-site" + }, + { + "name": "Sec-Fetch-Dest", + "value": "empty" + }, + { + "name": "Accept-Encoding", + "value": "gzip, deflate, br" + }, + { + "name": "Authorization", + "value": "bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJqSEZ0R1dybjJpY084VnpDYXpaZWUyakpFc2drY1k5ZzhpN2FTbGtielRnIn0.eyJleHAiOjE1OTAwNTkxMTQsImlhdCI6MTU5MDA1ODgxNCwiYXV0aF90aW1lIjoxNTg5OTU4NDcwLCJqdGkiOiIyNzgxOTYyMy00Yjk5LTQ2MzQtOWZlNi02ZDRiNzYwNGU2ZmMiLCJpc3MiOiJodHRwczovL2F1dGguc3RnLnRlc3RyLmlvL2F1dGgvcmVhbG1zL3Rlc3RyIiwiYXVkIjoiYWNjb3VudCIsInN1YiI6ImU4NzAxMDZjLWJjYjItNDQxMy05Y2Q2LTUwMTZiNTUxMDRlYiIsInR5cCI6IkJlYXJlciIsImF6cCI6InJlYWN0LWNsaWVudCIsIm5vbmNlIjoiYzJiZTgwNGYtZjBiYS00ZWUxLTgyZWQtYmIzMTY5ZDBkYjU1Iiwic2Vzc2lvbl9zdGF0ZSI6IjM2ZDc2MDAxLTE5M2EtNGQ5OS05MTIwLTZmNGZkMjEwZDAxMiIsImFjciI6IjAiLCJhbGxvd2VkLW9yaWdpbnMiOlsiaHR0cHM6Ly9zdGcudGVzdHIuaW8iLCJjaHJvbWUtZXh0ZW5zaW9uOi8vbmFkZ2VsamVtbWJna2xkaGNwYWZqbXBtYXBpcGdsY20iLCJodHRwOi8vbG9jYWxob3N0OjMwMDAiXSwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm1hbmFnZUZlYXR1cmVGbGFncyIsIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyJhY2NvdW50Ijp7InJvbGVzIjpbIm1hbmFnZS1hY2NvdW50IiwibWFuYWdlLWFjY291bnQtbGlua3MiLCJ2aWV3LXByb2ZpbGUiXX19LCJzY29wZSI6Im9wZW5pZCBwcm9maWxlIGVtYWlsIiwiZ3JvdXBfbWVtYmVyc2hpcCI6WyJzb21lT3JnSWQxMjMiXSwiZW1haWxfdmVyaWZpZWQiOnRydWUsIm5hbWUiOiJMaXJheiBZZWhlemtlbCIsInByZWZlcnJlZF91c2VybmFtZSI6ImxpcmF6eUB1cDkuY29tIiwiZ2l2ZW5fbmFtZSI6IkxpcmF6IiwiZmFtaWx5X25hbWUiOiJZZWhlemtlbCIsImdyb3VwX3N1YmRvbWFpbiI6InNvbWVPcmdJZDEyMyIsImVtYWlsIjoibGlyYXp5QHVwOS5jb20iLCJmZWF0dXJlRmxhZ3MiOnsiZWRpdEVuZHBvaW50VmFyaWFibGVzIjp0cnVlLCJzaWRlTmF2aWdhdGlvbiI6dHJ1ZX19.KdLz7jeIr8HaST4FpJROrg6Sp-o1Nl5dU2hIbNCA0FEY-jmaoubiOlz6p7QthTJ8t-S0R_qdZtd7rXf249L6wGG_A6rriZhH41Fxhyrb0ig8OVrQp-sepv_AUf7GEIGYgpYIPFnZ6G3Dkq1aY9NzLXruh7fly_ZRkRlzF_wb1vt5NRJz3xeMrj82BOJJmUpv08AYYQhnyjKiBp7rgrNTTBejaFBozsJgXGkIi-DZfv862tgFhvPNuXsqKO5iOxv9nApuQJ2O4knVB1ag7tqB1xQcvBdkZt9gG1VVkpWsM_2j5C9cBwOuPRgHZhpZuT_YNfB4ITefGV1aYfRF-cjnug" + }, + { + "name": "Accept-Language", + "value": "en-US,en;q=0.9" + }, + { + "name": "X-Scheme", + "value": "https" + }, + { + "name": "Origin", + "value": "http://localhost:3000" + }, + { + "name": "Sec-Fetch-Mode", + "value": "cors" + }, + { + "name": "X-Forwarded-For", + "value": "10.132.0.22" + }, + { + "name": "User-Agent", + "value": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36" + }, + { + "name": "Referer", + "value": "http://localhost:3000/someOrgId123/model/liraz_test_2105/lastResults/systems/all/summary" + }, + { + "name": "X-Forwarded-Host", + "value": "trcc.stg.testr.io" + }, + { + "name": ":method", + "value": "GET" + }, + { + "name": ":path", + "value": "/models/liraz_test_2105/suites/all/runs" + }, + { + "name": ":authority", + "value": "trcc.stg.testr.io" + }, + { + "name": ":scheme", + "value": "http" + }, + { + "name": "x-request-start", + "value": "1590058950.310" + }, + { + "name": "x-up9-source", + "value": "10.48.1.44" + }, + { + "name": "x-up9-destination", + "value": "10.48.0.155:5000" + } + ], + "queryString": [], + "headersSize": -1, + "bodySize": -1 + }, + "response": { + "status": 200, + "statusText": "OK", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "Server", + "value": "gunicorn/19.9.0" + }, + { + "name": "Date", + "value": "Thu, 21 May 2020 11:02:29 GMT" + }, + { + "name": "Connection", + "value": "keep-alive" + }, + { + "name": "Content-Type", + "value": "application/json" + }, + { + "name": "Content-Length", + "value": "3" + }, + { + "name": "Access-Control-Allow-Origin", + "value": "http://localhost:3000" + }, + { + "name": "Access-Control-Allow-Credentials", + "value": "true" + }, + { + "name": "Vary", + "value": "Origin" + }, + { + "name": ":status", + "value": "200" + }, + { + "name": "duration_ms", + "value": "1" + } + ], + "content": { + "size": 3, + "mimeType": "", + "text": "[]\n" + }, + "redirectURL": "", + "headersSize": -1, + "bodySize": 3 + }, + "cache": {}, + "timings": { + "send": -1, + "wait": -1, + "receive": 1 + } + }, + { + "startedDateTime": "2020-05-21T11:02:30.310000+00:00", + "time": 1, + "request": { + "method": "GET", + "url": "http://trcc-api-service/tapping/state", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "X-Forwarded-For", + "value": "10.132.0.34" + }, + { + "name": "X-Forwarded-Port", + "value": "443" + }, + { + "name": "Accept-Encoding", + "value": "gzip, deflate" + }, + { + "name": "Accept", + "value": "*/*" + }, + { + "name": "Authorization", + "value": "Bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJqSEZ0R1dybjJpY084VnpDYXpaZWUyakpFc2drY1k5ZzhpN2FTbGtielRnIn0.eyJleHAiOjE1OTAwNTkxNTksImlhdCI6MTU5MDA1ODg1OSwianRpIjoiODM1OTZhNTgtNTRhOC00MDVmLTg1YjQtZTRhNDhlNjYwNTdjIiwiaXNzIjoiaHR0cHM6Ly9hdXRoLnN0Zy50ZXN0ci5pby9hdXRoL3JlYWxtcy90ZXN0ciIsImF1ZCI6ImFjY291bnQiLCJzdWIiOiJkYWEzOWFmMC04MDdlLTQyZmEtOWI1ZC04Njg3NzI2OGMxZjQiLCJ0eXAiOiJCZWFyZXIiLCJhenAiOiJ1cDlJbnRlcm5hbEFnZW50Iiwic2Vzc2lvbl9zdGF0ZSI6IjlmMWNmYTgxLTk4OTUtNDliMy04OGU1LTc4MDU4MWNmMTMyOCIsImFjciI6IjEiLCJyZWFsbV9hY2Nlc3MiOnsicm9sZXMiOlsib2ZmbGluZV9hY2Nlc3MiLCJpbXBlcnNvbmF0ZUdyb3VwIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyJhY2NvdW50Ijp7InJvbGVzIjpbIm1hbmFnZS1hY2NvdW50IiwibWFuYWdlLWFjY291bnQtbGlua3MiLCJ2aWV3LXByb2ZpbGUiXX19LCJzY29wZSI6InByb2ZpbGUgZW1haWwiLCJ1cDlpbmZvIjp7ImlzSW50ZXJuYWxBZ2VudCI6dHJ1ZX0sImNsaWVudElkIjoidXA5SW50ZXJuYWxBZ2VudCIsImVtYWlsX3ZlcmlmaWVkIjpmYWxzZSwiY2xpZW50SG9zdCI6IjEwLjEzMi4wLjExIiwib3JnYW5pemF0aW9uIjoidXA5IiwicHJlZmVycmVkX3VzZXJuYW1lIjoic2VydmljZS1hY2NvdW50LXVwOWludGVybmFsYWdlbnQiLCJjbGllbnRBZGRyZXNzIjoiMTAuMTMyLjAuMTEiLCJlbWFpbCI6InNlcnZpY2UtYWNjb3VudC11cDlpbnRlcm5hbGFnZW50QHBsYWNlaG9sZGVyLm9yZyJ9.eSNalXDWVLTvJoaD-TBv9Y2TpiRmsdU-Xv7QdVycOeOeI3OeonJF65807JjruhZaPh25NwH73aqmDfYHHhPc8kG2pqVViE1pT96jv1pGvvMu_GQMOijSVgad71qnNQqS7c4MCoVHwQNPr7FymJRtQ-9cinwO5XVxDPZ94rO010CSE-CIGFRYsFqMAzGbrKRAWpZY8gKDcFjfqCeQpg17Ign99mG3HtVX2_s4Jh93-qmbnnG_XwDznDbVrXuQmVaw_yD1yiobncIdVaeJrPZCvZYscxQS4AaDTJw9eiXfBSA6PDOeoduTEBXuM6CPaJfOzegKNYS48qiYs-a3G-ewsA" + }, + { + "name": "User-Agent", + "value": "python-requests/2.23.0" + }, + { + "name": "X-Request-Id", + "value": "53dec347f005c13306a8657b92041e0c" + }, + { + "name": "X-Real-Ip", + "value": "10.132.0.34" + }, + { + "name": "X-Forwarded-Host", + "value": "trcc.stg.testr.io" + }, + { + "name": "X-Forwarded-Proto", + "value": "https" + }, + { + "name": "X-Scheme", + "value": "https" + }, + { + "name": ":method", + "value": "GET" + }, + { + "name": ":path", + "value": "/tapping/state" + }, + { + "name": ":authority", + "value": "trcc.stg.testr.io" + }, + { + "name": ":scheme", + "value": "http" + }, + { + "name": "x-request-start", + "value": "1590058950.310" + }, + { + "name": "x-up9-source", + "value": "10.48.1.44" + }, + { + "name": "x-up9-destination", + "value": "10.48.0.155:5000" + } + ], + "queryString": [], + "headersSize": -1, + "bodySize": -1 + }, + "response": { + "status": 200, + "statusText": "OK", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "Server", + "value": "gunicorn/19.9.0" + }, + { + "name": "Date", + "value": "Thu, 21 May 2020 11:02:29 GMT" + }, + { + "name": "Connection", + "value": "keep-alive" + }, + { + "name": "Content-Type", + "value": "text/html; charset=utf-8" + }, + { + "name": "Content-Length", + "value": "2" + }, + { + "name": "Access-Control-Allow-Origin", + "value": "http://localhost:3000" + }, + { + "name": "Access-Control-Allow-Credentials", + "value": "true" + }, + { + "name": "Vary", + "value": "Origin" + }, + { + "name": ":status", + "value": "200" + }, + { + "name": "duration_ms", + "value": "1" + } + ], + "content": { + "size": 2, + "mimeType": "", + "text": "Ok" + }, + "redirectURL": "", + "headersSize": -1, + "bodySize": 2 + }, + "cache": {}, + "timings": { + "send": -1, + "wait": -1, + "receive": 1 + } + }, + { + "startedDateTime": "2020-05-21T11:02:30.311000+00:00", + "time": 1, + "request": { + "method": "GET", + "url": "http://trcc-api-service/models/liraz_test_2105/suites/all/runs", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "Origin", + "value": "http://localhost:3000" + }, + { + "name": "Sec-Fetch-Site", + "value": "cross-site" + }, + { + "name": "Sec-Fetch-Mode", + "value": "cors" + }, + { + "name": "Sec-Fetch-Dest", + "value": "empty" + }, + { + "name": "Authorization", + "value": "bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJqSEZ0R1dybjJpY084VnpDYXpaZWUyakpFc2drY1k5ZzhpN2FTbGtielRnIn0.eyJleHAiOjE1OTAwNTkxMTQsImlhdCI6MTU5MDA1ODgxNCwiYXV0aF90aW1lIjoxNTg5OTU4NDcwLCJqdGkiOiIyNzgxOTYyMy00Yjk5LTQ2MzQtOWZlNi02ZDRiNzYwNGU2ZmMiLCJpc3MiOiJodHRwczovL2F1dGguc3RnLnRlc3RyLmlvL2F1dGgvcmVhbG1zL3Rlc3RyIiwiYXVkIjoiYWNjb3VudCIsInN1YiI6ImU4NzAxMDZjLWJjYjItNDQxMy05Y2Q2LTUwMTZiNTUxMDRlYiIsInR5cCI6IkJlYXJlciIsImF6cCI6InJlYWN0LWNsaWVudCIsIm5vbmNlIjoiYzJiZTgwNGYtZjBiYS00ZWUxLTgyZWQtYmIzMTY5ZDBkYjU1Iiwic2Vzc2lvbl9zdGF0ZSI6IjM2ZDc2MDAxLTE5M2EtNGQ5OS05MTIwLTZmNGZkMjEwZDAxMiIsImFjciI6IjAiLCJhbGxvd2VkLW9yaWdpbnMiOlsiaHR0cHM6Ly9zdGcudGVzdHIuaW8iLCJjaHJvbWUtZXh0ZW5zaW9uOi8vbmFkZ2VsamVtbWJna2xkaGNwYWZqbXBtYXBpcGdsY20iLCJodHRwOi8vbG9jYWxob3N0OjMwMDAiXSwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm1hbmFnZUZlYXR1cmVGbGFncyIsIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyJhY2NvdW50Ijp7InJvbGVzIjpbIm1hbmFnZS1hY2NvdW50IiwibWFuYWdlLWFjY291bnQtbGlua3MiLCJ2aWV3LXByb2ZpbGUiXX19LCJzY29wZSI6Im9wZW5pZCBwcm9maWxlIGVtYWlsIiwiZ3JvdXBfbWVtYmVyc2hpcCI6WyJzb21lT3JnSWQxMjMiXSwiZW1haWxfdmVyaWZpZWQiOnRydWUsIm5hbWUiOiJMaXJheiBZZWhlemtlbCIsInByZWZlcnJlZF91c2VybmFtZSI6ImxpcmF6eUB1cDkuY29tIiwiZ2l2ZW5fbmFtZSI6IkxpcmF6IiwiZmFtaWx5X25hbWUiOiJZZWhlemtlbCIsImdyb3VwX3N1YmRvbWFpbiI6InNvbWVPcmdJZDEyMyIsImVtYWlsIjoibGlyYXp5QHVwOS5jb20iLCJmZWF0dXJlRmxhZ3MiOnsiZWRpdEVuZHBvaW50VmFyaWFibGVzIjp0cnVlLCJzaWRlTmF2aWdhdGlvbiI6dHJ1ZX19.KdLz7jeIr8HaST4FpJROrg6Sp-o1Nl5dU2hIbNCA0FEY-jmaoubiOlz6p7QthTJ8t-S0R_qdZtd7rXf249L6wGG_A6rriZhH41Fxhyrb0ig8OVrQp-sepv_AUf7GEIGYgpYIPFnZ6G3Dkq1aY9NzLXruh7fly_ZRkRlzF_wb1vt5NRJz3xeMrj82BOJJmUpv08AYYQhnyjKiBp7rgrNTTBejaFBozsJgXGkIi-DZfv862tgFhvPNuXsqKO5iOxv9nApuQJ2O4knVB1ag7tqB1xQcvBdkZt9gG1VVkpWsM_2j5C9cBwOuPRgHZhpZuT_YNfB4ITefGV1aYfRF-cjnug" + }, + { + "name": "Referer", + "value": "http://localhost:3000/someOrgId123/model/liraz_test_2105/lastResults/systems/all/summary" + }, + { + "name": "X-Forwarded-Proto", + "value": "https" + }, + { + "name": "X-Forwarded-Host", + "value": "trcc.stg.testr.io" + }, + { + "name": "X-Forwarded-Port", + "value": "443" + }, + { + "name": "X-Scheme", + "value": "https" + }, + { + "name": "Accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "Accept-Encoding", + "value": "gzip, deflate, br" + }, + { + "name": "X-Real-Ip", + "value": "10.132.0.22" + }, + { + "name": "X-Request-Id", + "value": "da681419e8ee56802769b65fa4e646f7" + }, + { + "name": "X-Forwarded-For", + "value": "10.132.0.22" + }, + { + "name": "User-Agent", + "value": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36" + }, + { + "name": "Accept-Language", + "value": "en-US,en;q=0.9" + }, + { + "name": ":method", + "value": "GET" + }, + { + "name": ":path", + "value": "/models/liraz_test_2105/suites/all/runs" + }, + { + "name": ":authority", + "value": "trcc.stg.testr.io" + }, + { + "name": ":scheme", + "value": "http" + }, + { + "name": "x-request-start", + "value": "1590058950.311" + }, + { + "name": "x-up9-source", + "value": "10.48.1.44" + }, + { + "name": "x-up9-destination", + "value": "10.48.0.155:5000" + } + ], + "queryString": [], + "headersSize": -1, + "bodySize": -1 + }, + "response": { + "status": 200, + "statusText": "OK", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "Connection", + "value": "keep-alive" + }, + { + "name": "Content-Type", + "value": "application/json" + }, + { + "name": "Content-Length", + "value": "3" + }, + { + "name": "Access-Control-Allow-Origin", + "value": "http://localhost:3000" + }, + { + "name": "Access-Control-Allow-Credentials", + "value": "true" + }, + { + "name": "Vary", + "value": "Origin" + }, + { + "name": "Server", + "value": "gunicorn/19.9.0" + }, + { + "name": "Date", + "value": "Thu, 21 May 2020 11:02:29 GMT" + }, + { + "name": ":status", + "value": "200" + }, + { + "name": "duration_ms", + "value": "1" + } + ], + "content": { + "size": 3, + "mimeType": "", + "text": "[]\n" + }, + "redirectURL": "", + "headersSize": -1, + "bodySize": 3 + }, + "cache": {}, + "timings": { + "send": -1, + "wait": -1, + "receive": 1 + } + }, + { + "startedDateTime": "2020-05-21T11:02:30.311000+00:00", + "time": 1, + "request": { + "method": "GET", + "url": "http://trcc-api-service/models/liraz_test_2105/suites/all/runs", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "X-Scheme", + "value": "https" + }, + { + "name": "Accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "Authorization", + "value": "bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJqSEZ0R1dybjJpY084VnpDYXpaZWUyakpFc2drY1k5ZzhpN2FTbGtielRnIn0.eyJleHAiOjE1OTAwNTkxMTQsImlhdCI6MTU5MDA1ODgxNCwiYXV0aF90aW1lIjoxNTg5OTU4NDcwLCJqdGkiOiIyNzgxOTYyMy00Yjk5LTQ2MzQtOWZlNi02ZDRiNzYwNGU2ZmMiLCJpc3MiOiJodHRwczovL2F1dGguc3RnLnRlc3RyLmlvL2F1dGgvcmVhbG1zL3Rlc3RyIiwiYXVkIjoiYWNjb3VudCIsInN1YiI6ImU4NzAxMDZjLWJjYjItNDQxMy05Y2Q2LTUwMTZiNTUxMDRlYiIsInR5cCI6IkJlYXJlciIsImF6cCI6InJlYWN0LWNsaWVudCIsIm5vbmNlIjoiYzJiZTgwNGYtZjBiYS00ZWUxLTgyZWQtYmIzMTY5ZDBkYjU1Iiwic2Vzc2lvbl9zdGF0ZSI6IjM2ZDc2MDAxLTE5M2EtNGQ5OS05MTIwLTZmNGZkMjEwZDAxMiIsImFjciI6IjAiLCJhbGxvd2VkLW9yaWdpbnMiOlsiaHR0cHM6Ly9zdGcudGVzdHIuaW8iLCJjaHJvbWUtZXh0ZW5zaW9uOi8vbmFkZ2VsamVtbWJna2xkaGNwYWZqbXBtYXBpcGdsY20iLCJodHRwOi8vbG9jYWxob3N0OjMwMDAiXSwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm1hbmFnZUZlYXR1cmVGbGFncyIsIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyJhY2NvdW50Ijp7InJvbGVzIjpbIm1hbmFnZS1hY2NvdW50IiwibWFuYWdlLWFjY291bnQtbGlua3MiLCJ2aWV3LXByb2ZpbGUiXX19LCJzY29wZSI6Im9wZW5pZCBwcm9maWxlIGVtYWlsIiwiZ3JvdXBfbWVtYmVyc2hpcCI6WyJzb21lT3JnSWQxMjMiXSwiZW1haWxfdmVyaWZpZWQiOnRydWUsIm5hbWUiOiJMaXJheiBZZWhlemtlbCIsInByZWZlcnJlZF91c2VybmFtZSI6ImxpcmF6eUB1cDkuY29tIiwiZ2l2ZW5fbmFtZSI6IkxpcmF6IiwiZmFtaWx5X25hbWUiOiJZZWhlemtlbCIsImdyb3VwX3N1YmRvbWFpbiI6InNvbWVPcmdJZDEyMyIsImVtYWlsIjoibGlyYXp5QHVwOS5jb20iLCJmZWF0dXJlRmxhZ3MiOnsiZWRpdEVuZHBvaW50VmFyaWFibGVzIjp0cnVlLCJzaWRlTmF2aWdhdGlvbiI6dHJ1ZX19.KdLz7jeIr8HaST4FpJROrg6Sp-o1Nl5dU2hIbNCA0FEY-jmaoubiOlz6p7QthTJ8t-S0R_qdZtd7rXf249L6wGG_A6rriZhH41Fxhyrb0ig8OVrQp-sepv_AUf7GEIGYgpYIPFnZ6G3Dkq1aY9NzLXruh7fly_ZRkRlzF_wb1vt5NRJz3xeMrj82BOJJmUpv08AYYQhnyjKiBp7rgrNTTBejaFBozsJgXGkIi-DZfv862tgFhvPNuXsqKO5iOxv9nApuQJ2O4knVB1ag7tqB1xQcvBdkZt9gG1VVkpWsM_2j5C9cBwOuPRgHZhpZuT_YNfB4ITefGV1aYfRF-cjnug" + }, + { + "name": "User-Agent", + "value": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36" + }, + { + "name": "Origin", + "value": "http://localhost:3000" + }, + { + "name": "Sec-Fetch-Dest", + "value": "empty" + }, + { + "name": "X-Forwarded-Proto", + "value": "https" + }, + { + "name": "Accept-Encoding", + "value": "gzip, deflate, br" + }, + { + "name": "Accept-Language", + "value": "en-US,en;q=0.9" + }, + { + "name": "X-Request-Id", + "value": "8e396a29fd8009dc27b53cc74f254da6" + }, + { + "name": "Sec-Fetch-Site", + "value": "cross-site" + }, + { + "name": "X-Forwarded-Host", + "value": "trcc.stg.testr.io" + }, + { + "name": "Sec-Fetch-Mode", + "value": "cors" + }, + { + "name": "X-Forwarded-Port", + "value": "443" + }, + { + "name": "Referer", + "value": "http://localhost:3000/someOrgId123/model/liraz_test_2105/lastResults/systems/all/summary" + }, + { + "name": "X-Real-Ip", + "value": "10.132.0.22" + }, + { + "name": "X-Forwarded-For", + "value": "10.132.0.22" + }, + { + "name": ":method", + "value": "GET" + }, + { + "name": ":path", + "value": "/models/liraz_test_2105/suites/all/runs" + }, + { + "name": ":authority", + "value": "trcc.stg.testr.io" + }, + { + "name": ":scheme", + "value": "http" + }, + { + "name": "x-request-start", + "value": "1590058950.311" + }, + { + "name": "x-up9-source", + "value": "10.48.1.44" + }, + { + "name": "x-up9-destination", + "value": "10.48.0.155:5000" + } + ], + "queryString": [], + "headersSize": -1, + "bodySize": -1 + }, + "response": { + "status": 200, + "statusText": "OK", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "Content-Type", + "value": "application/json" + }, + { + "name": "Content-Length", + "value": "3" + }, + { + "name": "Access-Control-Allow-Origin", + "value": "http://localhost:3000" + }, + { + "name": "Access-Control-Allow-Credentials", + "value": "true" + }, + { + "name": "Vary", + "value": "Origin" + }, + { + "name": "Server", + "value": "gunicorn/19.9.0" + }, + { + "name": "Date", + "value": "Thu, 21 May 2020 11:02:29 GMT" + }, + { + "name": "Connection", + "value": "keep-alive" + }, + { + "name": ":status", + "value": "200" + }, + { + "name": "duration_ms", + "value": "1" + } + ], + "content": { + "size": 3, + "mimeType": "", + "text": "[]\n" + }, + "redirectURL": "", + "headersSize": -1, + "bodySize": 3 + }, + "cache": {}, + "timings": { + "send": -1, + "wait": -1, + "receive": 1 + } + }, + { + "startedDateTime": "2020-05-21T11:02:30.312000+00:00", + "time": 1, + "request": { + "method": "GET", + "url": "http://trcc-api-service/models/aws_kong5/suites/all/runs", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "X-Forwarded-Host", + "value": "trcc.stg.testr.io" + }, + { + "name": "Authorization", + "value": "bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJqSEZ0R1dybjJpY084VnpDYXpaZWUyakpFc2drY1k5ZzhpN2FTbGtielRnIn0.eyJleHAiOjE1OTAwNTkyNDMsImlhdCI6MTU5MDA1ODk0MywiYXV0aF90aW1lIjoxNTkwMDU4NjUxLCJqdGkiOiI1ODYzNmRiMy0wN2IxLTQ2ZDYtOGNiNS01MzEzMDFlZGY4MGYiLCJpc3MiOiJodHRwczovL2F1dGguc3RnLnRlc3RyLmlvL2F1dGgvcmVhbG1zL3Rlc3RyIiwiYXVkIjoiYWNjb3VudCIsInN1YiI6IjBlYWU4ZmFjLTgyYTEtNDUwNi05MWQ0LTA4ZDYxZTI2NWY1NCIsInR5cCI6IkJlYXJlciIsImF6cCI6InJlYWN0LWNsaWVudCIsIm5vbmNlIjoiNTRjMTM5OTktMDg0NS00OWNmLWI1OTAtOTY1ZThjNWI0NmJlIiwic2Vzc2lvbl9zdGF0ZSI6ImY3YjEyOTM1LThmMTctNDc1Zi04NmRhLWQ4NjFjZTYxNWZjNyIsImFjciI6IjAiLCJhbGxvd2VkLW9yaWdpbnMiOlsiaHR0cHM6Ly9zdGcudGVzdHIuaW8iLCJjaHJvbWUtZXh0ZW5zaW9uOi8vbmFkZ2VsamVtbWJna2xkaGNwYWZqbXBtYXBpcGdsY20iLCJodHRwOi8vbG9jYWxob3N0OjMwMDAiXSwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyJhY2NvdW50Ijp7InJvbGVzIjpbIm1hbmFnZS1hY2NvdW50IiwibWFuYWdlLWFjY291bnQtbGlua3MiLCJ2aWV3LXByb2ZpbGUiXX19LCJzY29wZSI6Im9wZW5pZCBwcm9maWxlIGVtYWlsIiwiZ3JvdXBfbWVtYmVyc2hpcCI6WyJzb21lT3JnSWQxMjMiXSwiZW1haWxfdmVyaWZpZWQiOnRydWUsIm5hbWUiOiJSYW1pIEJlcm1hbiIsInByZWZlcnJlZF91c2VybmFtZSI6InJhbWkuYmVybWFuQHVwOS5jb20iLCJnaXZlbl9uYW1lIjoiUmFtaSIsImZhbWlseV9uYW1lIjoiQmVybWFuIiwiZ3JvdXBfc3ViZG9tYWluIjoic29tZU9yZ0lkMTIzIiwiZW1haWwiOiJyYW1pLmJlcm1hbkB1cDkuY29tIiwiZmVhdHVyZUZsYWdzIjp7ImVkaXRFbmRwb2ludFZhcmlhYmxlcyI6dHJ1ZSwic2lkZU5hdmlnYXRpb24iOnRydWV9fQ.UEDsnoo9A8CbdIYKXoOrAAq6y2K7Aoqf-PplHhXFoVep9ewwA9qBjXqgn0fK9cnE_KfZKUcX_cy1HDhhdIfR_aHpbWWhQ3gxISkE6ALka18JIrUv7bFaHKio6eEP6tgn34QVP8aQVEB3e3g7h3dLuUvZ1xIMnt6fy03tD3KgiQlvdHwg5FhJLosiCrHgboEqN5VH_f_2QF33XiXTkDG1e-AOEnIIWqloMDTUPZEUvEo_KH68lB0Uu23YhhI5gPAuKQVb_UjFWcF_6Ysvk3C3j0cuk09DZ7YEI1u-bKp58LHnsS6gqNFQxy-CDlZ8Oht5d2I3LbwZZxHzMixzzFzJCA" + }, + { + "name": "Origin", + "value": "https://stg.testr.io" + }, + { + "name": "Sec-Fetch-Site", + "value": "same-site" + }, + { + "name": "Referer", + "value": "https://stg.testr.io/someOrgId123/model/aws_kong5/lastResults/systems/all/runs" + }, + { + "name": "Accept-Encoding", + "value": "gzip, deflate, br" + }, + { + "name": "Accept-Language", + "value": "en-IL,en-US;q=0.9,en;q=0.8,he;q=0.7,pl;q=0.6,ru;q=0.5" + }, + { + "name": "X-Real-Ip", + "value": "10.132.0.11" + }, + { + "name": "X-Forwarded-Proto", + "value": "https" + }, + { + "name": "User-Agent", + "value": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36" + }, + { + "name": "Sec-Fetch-Mode", + "value": "cors" + }, + { + "name": "X-Request-Id", + "value": "508e59836054100f14be66ef2551f631" + }, + { + "name": "X-Forwarded-For", + "value": "10.132.0.11" + }, + { + "name": "X-Forwarded-Port", + "value": "443" + }, + { + "name": "X-Scheme", + "value": "https" + }, + { + "name": "Accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "Dnt", + "value": "1" + }, + { + "name": "Sec-Fetch-Dest", + "value": "empty" + }, + { + "name": ":method", + "value": "GET" + }, + { + "name": ":path", + "value": "/models/aws_kong5/suites/all/runs" + }, + { + "name": ":authority", + "value": "trcc.stg.testr.io" + }, + { + "name": ":scheme", + "value": "http" + }, + { + "name": "x-request-start", + "value": "1590058950.312" + }, + { + "name": "x-up9-source", + "value": "10.48.1.44" + }, + { + "name": "x-up9-destination", + "value": "10.48.0.155:5000" + } + ], + "queryString": [], + "headersSize": -1, + "bodySize": -1 + }, + "response": { + "status": 200, + "statusText": "OK", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "Content-Length", + "value": "3" + }, + { + "name": "Access-Control-Allow-Origin", + "value": "https://stg.testr.io" + }, + { + "name": "Access-Control-Allow-Credentials", + "value": "true" + }, + { + "name": "Vary", + "value": "Origin" + }, + { + "name": "Server", + "value": "gunicorn/19.9.0" + }, + { + "name": "Date", + "value": "Thu, 21 May 2020 11:02:29 GMT" + }, + { + "name": "Connection", + "value": "keep-alive" + }, + { + "name": "Content-Type", + "value": "application/json" + }, + { + "name": ":status", + "value": "200" + }, + { + "name": "duration_ms", + "value": "1" + } + ], + "content": { + "size": 3, + "mimeType": "", + "text": "[]\n" + }, + "redirectURL": "", + "headersSize": -1, + "bodySize": 3 + }, + "cache": {}, + "timings": { + "send": -1, + "wait": -1, + "receive": 1 + } + }, + { + "startedDateTime": "2020-05-21T11:02:30.310000+00:00", + "time": 2, + "request": { + "method": "GET", + "url": "http://trcc-api-service/models/ah.trdemo.0511/status", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "Sec-Fetch-Mode", + "value": "cors" + }, + { + "name": "X-Forwarded-Host", + "value": "trcc.stg.testr.io" + }, + { + "name": "X-Forwarded-Port", + "value": "443" + }, + { + "name": "X-Scheme", + "value": "https" + }, + { + "name": "Sec-Fetch-Dest", + "value": "empty" + }, + { + "name": "Referer", + "value": "https://stg.testr.io/someOrgId123/model/ah.trdemo.0511/lastResults/systems/all/endpoints" + }, + { + "name": "Accept-Encoding", + "value": "gzip, deflate, br" + }, + { + "name": "Accept-Language", + "value": "en-US,en;q=0.9,de;q=0.8,he;q=0.7,ru;q=0.6" + }, + { + "name": "X-Real-Ip", + "value": "10.132.0.85" + }, + { + "name": "Origin", + "value": "https://stg.testr.io" + }, + { + "name": "Sec-Fetch-Site", + "value": "same-site" + }, + { + "name": "Accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "Authorization", + "value": "bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJqSEZ0R1dybjJpY084VnpDYXpaZWUyakpFc2drY1k5ZzhpN2FTbGtielRnIn0.eyJleHAiOjE1OTAwNTkwNTQsImlhdCI6MTU5MDA1ODc1NCwiYXV0aF90aW1lIjoxNTg5OTA1NzU2LCJqdGkiOiJhMDhiNWVhYy1lMDg0LTRjOTMtYmY3ZC0yNjlkZmRmZWIyZjciLCJpc3MiOiJodHRwczovL2F1dGguc3RnLnRlc3RyLmlvL2F1dGgvcmVhbG1zL3Rlc3RyIiwiYXVkIjoiYWNjb3VudCIsInN1YiI6IjdiYmFhOTg4LWFlMmUtNGQxMy1iNGQzLTdhMzc0MzEyNzFiYyIsInR5cCI6IkJlYXJlciIsImF6cCI6InJlYWN0LWNsaWVudCIsIm5vbmNlIjoiY2EwOTQ2ZWItMDA2NC00YzUwLTgxYTctZWIxNzBkY2I0MjQ0Iiwic2Vzc2lvbl9zdGF0ZSI6IjdjYTU4YWIxLWRlY2EtNDUzMS05NjljLTVhMzUzYmVmZDIyOCIsImFjciI6IjAiLCJhbGxvd2VkLW9yaWdpbnMiOlsiaHR0cHM6Ly9zdGcudGVzdHIuaW8iLCJjaHJvbWUtZXh0ZW5zaW9uOi8vbmFkZ2VsamVtbWJna2xkaGNwYWZqbXBtYXBpcGdsY20iLCJodHRwOi8vbG9jYWxob3N0OjMwMDAiXSwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm1hbmFnZUZlYXR1cmVGbGFncyIsIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyJhY2NvdW50Ijp7InJvbGVzIjpbIm1hbmFnZS1hY2NvdW50IiwibWFuYWdlLWFjY291bnQtbGlua3MiLCJ2aWV3LXByb2ZpbGUiXX19LCJzY29wZSI6Im9wZW5pZCBwcm9maWxlIGVtYWlsIiwiZ3JvdXBfbWVtYmVyc2hpcCI6WyJzb21lT3JnSWQxMjMiXSwiZW1haWxfdmVyaWZpZWQiOnRydWUsIm5hbWUiOiJBbGV4IEhhaXV0IiwicHJlZmVycmVkX3VzZXJuYW1lIjoiYWxleEB1cDkuY29tIiwiZ2l2ZW5fbmFtZSI6IkFsZXgiLCJmYW1pbHlfbmFtZSI6IkhhaXV0IiwiZ3JvdXBfc3ViZG9tYWluIjoic29tZU9yZ0lkMTIzIiwiZW1haWwiOiJhbGV4QHVwOS5jb20iLCJmZWF0dXJlRmxhZ3MiOnsiZWRpdEVuZHBvaW50VmFyaWFibGVzIjp0cnVlLCJzaWRlTmF2aWdhdGlvbiI6dHJ1ZX19.iXBcJGDz9UVUzsfUsNdoP9VC-qkPZrkTryuQ1LfSX08ovoFDEHxVb8bgud_iP36QnA8TpHXKde0kcLYDO-CV0hp-sEV7nX_zTy4uKC7vbD8Of6LkHJ4VKwcp-VBTwoEQ2nan6aFqIS5AkJxTEiCf0owIhUB7cnCYI-MkZhOUxRbh3tfAv-wBQb6aDo4M6sAG-EY8epcy4BcMxQrnflEF8jGqpveBmSMNQYS5a3yM0sFQ0sXRYGEYMWTemL0E0S253wqdMtoBpDdreNtxyecmZlTL0gNtRcXl5tBVJVLq1PgWNr43Wcxgzc4b2ujziE_E7feAj22w-dN78Q_IEXkdKw" + }, + { + "name": "X-Request-Id", + "value": "f39a900b653217bb6df37ce5f29f7ad3" + }, + { + "name": "X-Forwarded-For", + "value": "10.132.0.85" + }, + { + "name": "X-Forwarded-Proto", + "value": "https" + }, + { + "name": "User-Agent", + "value": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36" + }, + { + "name": ":method", + "value": "GET" + }, + { + "name": ":path", + "value": "/models/ah.trdemo.0511/status" + }, + { + "name": ":authority", + "value": "trcc.stg.testr.io" + }, + { + "name": ":scheme", + "value": "http" + }, + { + "name": "x-request-start", + "value": "1590058950.310" + }, + { + "name": "x-up9-source", + "value": "10.48.1.44" + }, + { + "name": "x-up9-destination", + "value": "10.48.0.155:5000" + } + ], + "queryString": [], + "headersSize": -1, + "bodySize": -1 + }, + "response": { + "status": 200, + "statusText": "OK", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "Server", + "value": "gunicorn/19.9.0" + }, + { + "name": "Date", + "value": "Thu, 21 May 2020 11:02:29 GMT" + }, + { + "name": "Connection", + "value": "keep-alive" + }, + { + "name": "Content-Type", + "value": "application/json" + }, + { + "name": "Content-Length", + "value": "3" + }, + { + "name": "Access-Control-Allow-Origin", + "value": "http://localhost:3000" + }, + { + "name": "Access-Control-Allow-Credentials", + "value": "true" + }, + { + "name": "Vary", + "value": "Origin" + }, + { + "name": ":status", + "value": "200" + }, + { + "name": "duration_ms", + "value": "2" + } + ], + "content": { + "size": 3, + "mimeType": "", + "text": "[]\n" + }, + "redirectURL": "", + "headersSize": -1, + "bodySize": 3 + }, + "cache": {}, + "timings": { + "send": -1, + "wait": -1, + "receive": 2 + } + }, + { + "startedDateTime": "2020-05-21T11:02:30.313000+00:00", + "time": 1, + "request": { + "method": "GET", + "url": "http://trcc-api-service/models/ngm-1205-aws-no-tapper-04/blacklist", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "User-Agent", + "value": "python-requests/2.23.0" + }, + { + "name": "X-Real-Ip", + "value": "10.132.0.85" + }, + { + "name": "X-Forwarded-Host", + "value": "trcc.stg.testr.io" + }, + { + "name": "X-Forwarded-Proto", + "value": "https" + }, + { + "name": "X-Scheme", + "value": "https" + }, + { + "name": "Accept-Encoding", + "value": "gzip, deflate" + }, + { + "name": "Accept", + "value": "*/*" + }, + { + "name": "Authorization", + "value": "Bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJqSEZ0R1dybjJpY084VnpDYXpaZWUyakpFc2drY1k5ZzhpN2FTbGtielRnIn0.eyJleHAiOjE1OTAwNTkxNDQsImlhdCI6MTU5MDA1ODg0NCwianRpIjoiN2FhZmE3YWEtZGZmOS00ZGMyLThiZmEtZGYxNmI4NDE0MDQ0IiwiaXNzIjoiaHR0cHM6Ly9hdXRoLnN0Zy50ZXN0ci5pby9hdXRoL3JlYWxtcy90ZXN0ciIsImF1ZCI6ImFjY291bnQiLCJzdWIiOiI0YWFkZWM0Mi01OWE5LTRmZDUtODI3NC1lZWI5NDNmODQyNmUiLCJ0eXAiOiJCZWFyZXIiLCJhenAiOiIzWjE5LTNzYnN2MU9KSDBEd2l2UWkyYmZVSzdsSlNFdSIsInNlc3Npb25fc3RhdGUiOiJlZWU2MjkxYy01MDAwLTQ0ZGYtYWRmNy1jZmM3MWQzMjJjYjIiLCJhY3IiOiIxIiwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyJhY2NvdW50Ijp7InJvbGVzIjpbIm1hbmFnZS1hY2NvdW50IiwibWFuYWdlLWFjY291bnQtbGlua3MiLCJ2aWV3LXByb2ZpbGUiXX19LCJzY29wZSI6InByb2ZpbGUgZW1haWwiLCJjbGllbnRJZCI6IjNaMTktM3Nic3YxT0pIMER3aXZRaTJiZlVLN2xKU0V1IiwiY2xpZW50SG9zdCI6IjEwLjEzMi4wLjg1IiwiZW1haWxfdmVyaWZpZWQiOmZhbHNlLCJvcmdhbml6YXRpb24iOiJzb21lT3JnSWQxMjMiLCJwcmVmZXJyZWRfdXNlcm5hbWUiOiJzZXJ2aWNlLWFjY291bnQtM3oxOS0zc2JzdjFvamgwZHdpdnFpMmJmdWs3bGpzZXUiLCJjbGllbnRBZGRyZXNzIjoiMTAuMTMyLjAuODUiLCJlbWFpbCI6InNlcnZpY2UtYWNjb3VudC0zejE5LTNzYnN2MW9qaDBkd2l2cWkyYmZ1azdsanNldUBwbGFjZWhvbGRlci5vcmcifQ.km-_NSTvQO_RTK7vfQSlWMbj8hT80SxSs-LwX0lfwc11kFNEP8dw-vrJURpci2KUHKLITFyhfXDkertAftWEYfGAOqu1ZQlG8LQvFimjDKLqxKioFQ8OA7Ap8Mf4RCrmR_PCrlDykm4sdJwAEKjb8ygLr90Ot2QhfuIeFxh5U5agxpzzuXGQbg0EwatBsRkqYMpMknXD3uGEVR466_qk6-0sKHn_xAyT1Lr9QTV6F7JBQfWkakdwwi-bGe1VNMQqC5SgAN8qkj_03SK6s7KGJ7LIhZhXFtXkjMBh0P6xF_rpZHdmfKOo3XyWBbavCIqVpg3PMpHLmbd63Xissu6nsw" + }, + { + "name": "X-Request-Id", + "value": "66bf750f6ae671bc90ca3f885790620d" + }, + { + "name": "X-Forwarded-For", + "value": "10.132.0.85" + }, + { + "name": "X-Forwarded-Port", + "value": "443" + }, + { + "name": ":method", + "value": "GET" + }, + { + "name": ":path", + "value": "/models/ngm-1205-aws-no-tapper-04/blacklist" + }, + { + "name": ":authority", + "value": "trcc.stg.testr.io" + }, + { + "name": ":scheme", + "value": "http" + }, + { + "name": "x-request-start", + "value": "1590058950.313" + }, + { + "name": "x-up9-source", + "value": "10.48.1.44" + }, + { + "name": "x-up9-destination", + "value": "10.48.0.155:5000" + } + ], + "queryString": [], + "headersSize": -1, + "bodySize": -1 + }, + "response": { + "status": 200, + "statusText": "OK", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "Server", + "value": "gunicorn/19.9.0" + }, + { + "name": "Date", + "value": "Thu, 21 May 2020 11:02:29 GMT" + }, + { + "name": "Connection", + "value": "keep-alive" + }, + { + "name": "Content-Type", + "value": "application/json" + }, + { + "name": "Content-Length", + "value": "3" + }, + { + "name": "Access-Control-Allow-Origin", + "value": "http://localhost:3000" + }, + { + "name": "Access-Control-Allow-Credentials", + "value": "true" + }, + { + "name": "Vary", + "value": "Origin" + }, + { + "name": ":status", + "value": "200" + }, + { + "name": "duration_ms", + "value": "1" + } + ], + "content": { + "size": 3, + "mimeType": "", + "text": "[]\n" + }, + "redirectURL": "", + "headersSize": -1, + "bodySize": 3 + }, + "cache": {}, + "timings": { + "send": -1, + "wait": -1, + "receive": 1 + } + }, + { + "startedDateTime": "2020-05-21T11:02:30.313000+00:00", + "time": 1, + "request": { + "method": "GET", + "url": "http://trcc-api-service/models/aws_kong5/suites/all/runs", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "Authorization", + "value": "bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJqSEZ0R1dybjJpY084VnpDYXpaZWUyakpFc2drY1k5ZzhpN2FTbGtielRnIn0.eyJleHAiOjE1OTAwNTkyNDMsImlhdCI6MTU5MDA1ODk0MywiYXV0aF90aW1lIjoxNTkwMDU4NjUxLCJqdGkiOiI1ODYzNmRiMy0wN2IxLTQ2ZDYtOGNiNS01MzEzMDFlZGY4MGYiLCJpc3MiOiJodHRwczovL2F1dGguc3RnLnRlc3RyLmlvL2F1dGgvcmVhbG1zL3Rlc3RyIiwiYXVkIjoiYWNjb3VudCIsInN1YiI6IjBlYWU4ZmFjLTgyYTEtNDUwNi05MWQ0LTA4ZDYxZTI2NWY1NCIsInR5cCI6IkJlYXJlciIsImF6cCI6InJlYWN0LWNsaWVudCIsIm5vbmNlIjoiNTRjMTM5OTktMDg0NS00OWNmLWI1OTAtOTY1ZThjNWI0NmJlIiwic2Vzc2lvbl9zdGF0ZSI6ImY3YjEyOTM1LThmMTctNDc1Zi04NmRhLWQ4NjFjZTYxNWZjNyIsImFjciI6IjAiLCJhbGxvd2VkLW9yaWdpbnMiOlsiaHR0cHM6Ly9zdGcudGVzdHIuaW8iLCJjaHJvbWUtZXh0ZW5zaW9uOi8vbmFkZ2VsamVtbWJna2xkaGNwYWZqbXBtYXBpcGdsY20iLCJodHRwOi8vbG9jYWxob3N0OjMwMDAiXSwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyJhY2NvdW50Ijp7InJvbGVzIjpbIm1hbmFnZS1hY2NvdW50IiwibWFuYWdlLWFjY291bnQtbGlua3MiLCJ2aWV3LXByb2ZpbGUiXX19LCJzY29wZSI6Im9wZW5pZCBwcm9maWxlIGVtYWlsIiwiZ3JvdXBfbWVtYmVyc2hpcCI6WyJzb21lT3JnSWQxMjMiXSwiZW1haWxfdmVyaWZpZWQiOnRydWUsIm5hbWUiOiJSYW1pIEJlcm1hbiIsInByZWZlcnJlZF91c2VybmFtZSI6InJhbWkuYmVybWFuQHVwOS5jb20iLCJnaXZlbl9uYW1lIjoiUmFtaSIsImZhbWlseV9uYW1lIjoiQmVybWFuIiwiZ3JvdXBfc3ViZG9tYWluIjoic29tZU9yZ0lkMTIzIiwiZW1haWwiOiJyYW1pLmJlcm1hbkB1cDkuY29tIiwiZmVhdHVyZUZsYWdzIjp7ImVkaXRFbmRwb2ludFZhcmlhYmxlcyI6dHJ1ZSwic2lkZU5hdmlnYXRpb24iOnRydWV9fQ.UEDsnoo9A8CbdIYKXoOrAAq6y2K7Aoqf-PplHhXFoVep9ewwA9qBjXqgn0fK9cnE_KfZKUcX_cy1HDhhdIfR_aHpbWWhQ3gxISkE6ALka18JIrUv7bFaHKio6eEP6tgn34QVP8aQVEB3e3g7h3dLuUvZ1xIMnt6fy03tD3KgiQlvdHwg5FhJLosiCrHgboEqN5VH_f_2QF33XiXTkDG1e-AOEnIIWqloMDTUPZEUvEo_KH68lB0Uu23YhhI5gPAuKQVb_UjFWcF_6Ysvk3C3j0cuk09DZ7YEI1u-bKp58LHnsS6gqNFQxy-CDlZ8Oht5d2I3LbwZZxHzMixzzFzJCA" + }, + { + "name": "Sec-Fetch-Mode", + "value": "cors" + }, + { + "name": "Sec-Fetch-Dest", + "value": "empty" + }, + { + "name": "X-Request-Id", + "value": "b8638fc10e60af06771ab1a53d745939" + }, + { + "name": "X-Real-Ip", + "value": "10.132.0.11" + }, + { + "name": "X-Forwarded-For", + "value": "10.132.0.11" + }, + { + "name": "X-Forwarded-Port", + "value": "443" + }, + { + "name": "Accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "Referer", + "value": "https://stg.testr.io/someOrgId123/model/aws_kong5/lastResults/systems/all/runs" + }, + { + "name": "X-Forwarded-Proto", + "value": "https" + }, + { + "name": "Dnt", + "value": "1" + }, + { + "name": "User-Agent", + "value": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36" + }, + { + "name": "Sec-Fetch-Site", + "value": "same-site" + }, + { + "name": "Accept-Language", + "value": "en-IL,en-US;q=0.9,en;q=0.8,he;q=0.7,pl;q=0.6,ru;q=0.5" + }, + { + "name": "X-Forwarded-Host", + "value": "trcc.stg.testr.io" + }, + { + "name": "Accept-Encoding", + "value": "gzip, deflate, br" + }, + { + "name": "X-Scheme", + "value": "https" + }, + { + "name": "Origin", + "value": "https://stg.testr.io" + }, + { + "name": ":method", + "value": "GET" + }, + { + "name": ":path", + "value": "/models/aws_kong5/suites/all/runs" + }, + { + "name": ":authority", + "value": "trcc.stg.testr.io" + }, + { + "name": ":scheme", + "value": "http" + }, + { + "name": "x-request-start", + "value": "1590058950.313" + }, + { + "name": "x-up9-source", + "value": "10.48.1.44" + }, + { + "name": "x-up9-destination", + "value": "10.48.0.155:5000" + } + ], + "queryString": [], + "headersSize": -1, + "bodySize": -1 + }, + "response": { + "status": 200, + "statusText": "OK", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "Server", + "value": "gunicorn/19.9.0" + }, + { + "name": "Date", + "value": "Thu, 21 May 2020 11:02:29 GMT" + }, + { + "name": "Connection", + "value": "keep-alive" + }, + { + "name": "Content-Type", + "value": "application/json" + }, + { + "name": "Content-Length", + "value": "3" + }, + { + "name": "Access-Control-Allow-Origin", + "value": "http://localhost:3000" + }, + { + "name": "Access-Control-Allow-Credentials", + "value": "true" + }, + { + "name": "Vary", + "value": "Origin" + }, + { + "name": ":status", + "value": "200" + }, + { + "name": "duration_ms", + "value": "1" + } + ], + "content": { + "size": 3, + "mimeType": "", + "text": "[]\n" + }, + "redirectURL": "", + "headersSize": -1, + "bodySize": 3 + }, + "cache": {}, + "timings": { + "send": -1, + "wait": -1, + "receive": 1 + } + }, + { + "startedDateTime": "2020-05-21T11:02:30.314000+00:00", + "time": 1, + "request": { + "method": "GET", + "url": "http://trcc-api-service/models/rami-endpoints/blacklist", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "User-Agent", + "value": "python-requests/2.23.0" + }, + { + "name": "Accept-Encoding", + "value": "gzip, deflate" + }, + { + "name": "X-Request-Id", + "value": "e21bd0d9d477a24d3f8d64735aded93e" + }, + { + "name": "X-Forwarded-Host", + "value": "trcc.stg.testr.io" + }, + { + "name": "X-Forwarded-Proto", + "value": "https" + }, + { + "name": "X-Scheme", + "value": "https" + }, + { + "name": "Accept", + "value": "*/*" + }, + { + "name": "Authorization", + "value": "Bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJqSEZ0R1dybjJpY084VnpDYXpaZWUyakpFc2drY1k5ZzhpN2FTbGtielRnIn0.eyJleHAiOjE1OTAwNTkxNDQsImlhdCI6MTU5MDA1ODg0NCwianRpIjoiN2FhZmE3YWEtZGZmOS00ZGMyLThiZmEtZGYxNmI4NDE0MDQ0IiwiaXNzIjoiaHR0cHM6Ly9hdXRoLnN0Zy50ZXN0ci5pby9hdXRoL3JlYWxtcy90ZXN0ciIsImF1ZCI6ImFjY291bnQiLCJzdWIiOiI0YWFkZWM0Mi01OWE5LTRmZDUtODI3NC1lZWI5NDNmODQyNmUiLCJ0eXAiOiJCZWFyZXIiLCJhenAiOiIzWjE5LTNzYnN2MU9KSDBEd2l2UWkyYmZVSzdsSlNFdSIsInNlc3Npb25fc3RhdGUiOiJlZWU2MjkxYy01MDAwLTQ0ZGYtYWRmNy1jZmM3MWQzMjJjYjIiLCJhY3IiOiIxIiwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyJhY2NvdW50Ijp7InJvbGVzIjpbIm1hbmFnZS1hY2NvdW50IiwibWFuYWdlLWFjY291bnQtbGlua3MiLCJ2aWV3LXByb2ZpbGUiXX19LCJzY29wZSI6InByb2ZpbGUgZW1haWwiLCJjbGllbnRJZCI6IjNaMTktM3Nic3YxT0pIMER3aXZRaTJiZlVLN2xKU0V1IiwiY2xpZW50SG9zdCI6IjEwLjEzMi4wLjg1IiwiZW1haWxfdmVyaWZpZWQiOmZhbHNlLCJvcmdhbml6YXRpb24iOiJzb21lT3JnSWQxMjMiLCJwcmVmZXJyZWRfdXNlcm5hbWUiOiJzZXJ2aWNlLWFjY291bnQtM3oxOS0zc2JzdjFvamgwZHdpdnFpMmJmdWs3bGpzZXUiLCJjbGllbnRBZGRyZXNzIjoiMTAuMTMyLjAuODUiLCJlbWFpbCI6InNlcnZpY2UtYWNjb3VudC0zejE5LTNzYnN2MW9qaDBkd2l2cWkyYmZ1azdsanNldUBwbGFjZWhvbGRlci5vcmcifQ.km-_NSTvQO_RTK7vfQSlWMbj8hT80SxSs-LwX0lfwc11kFNEP8dw-vrJURpci2KUHKLITFyhfXDkertAftWEYfGAOqu1ZQlG8LQvFimjDKLqxKioFQ8OA7Ap8Mf4RCrmR_PCrlDykm4sdJwAEKjb8ygLr90Ot2QhfuIeFxh5U5agxpzzuXGQbg0EwatBsRkqYMpMknXD3uGEVR466_qk6-0sKHn_xAyT1Lr9QTV6F7JBQfWkakdwwi-bGe1VNMQqC5SgAN8qkj_03SK6s7KGJ7LIhZhXFtXkjMBh0P6xF_rpZHdmfKOo3XyWBbavCIqVpg3PMpHLmbd63Xissu6nsw" + }, + { + "name": "X-Real-Ip", + "value": "10.132.0.85" + }, + { + "name": "X-Forwarded-For", + "value": "10.132.0.85" + }, + { + "name": "X-Forwarded-Port", + "value": "443" + }, + { + "name": ":method", + "value": "GET" + }, + { + "name": ":path", + "value": "/models/rami-endpoints/blacklist" + }, + { + "name": ":authority", + "value": "trcc.stg.testr.io" + }, + { + "name": ":scheme", + "value": "http" + }, + { + "name": "x-request-start", + "value": "1590058950.314" + }, + { + "name": "x-up9-source", + "value": "10.48.1.44" + }, + { + "name": "x-up9-destination", + "value": "10.48.0.155:5000" + } + ], + "queryString": [], + "headersSize": -1, + "bodySize": -1 + }, + "response": { + "status": 200, + "statusText": "OK", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "Server", + "value": "gunicorn/19.9.0" + }, + { + "name": "Date", + "value": "Thu, 21 May 2020 11:02:30 GMT" + }, + { + "name": "Connection", + "value": "keep-alive" + }, + { + "name": "Content-Type", + "value": "application/json" + }, + { + "name": "Content-Length", + "value": "3" + }, + { + "name": "Access-Control-Allow-Origin", + "value": "http://localhost:3000" + }, + { + "name": "Access-Control-Allow-Credentials", + "value": "true" + }, + { + "name": "Vary", + "value": "Origin" + }, + { + "name": ":status", + "value": "200" + }, + { + "name": "duration_ms", + "value": "1" + } + ], + "content": { + "size": 3, + "mimeType": "", + "text": "[]\n" + }, + "redirectURL": "", + "headersSize": -1, + "bodySize": 3 + }, + "cache": {}, + "timings": { + "send": -1, + "wait": -1, + "receive": 1 + } + }, + { + "startedDateTime": "2020-05-21T11:02:30.314000+00:00", + "time": 1, + "request": { + "method": "GET", + "url": "http://trcc-api-service/models/liraz_test_2105/suites/all/runs", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "X-Request-Id", + "value": "ec3e44dd73c3372e2c531cd4ef233381" + }, + { + "name": "X-Real-Ip", + "value": "10.132.0.22" + }, + { + "name": "Accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "Origin", + "value": "http://localhost:3000" + }, + { + "name": "Sec-Fetch-Mode", + "value": "cors" + }, + { + "name": "Sec-Fetch-Dest", + "value": "empty" + }, + { + "name": "X-Forwarded-Proto", + "value": "https" + }, + { + "name": "Referer", + "value": "http://localhost:3000/someOrgId123/model/liraz_test_2105/lastResults/systems/all/summary" + }, + { + "name": "Accept-Language", + "value": "en-US,en;q=0.9" + }, + { + "name": "X-Forwarded-For", + "value": "10.132.0.22" + }, + { + "name": "X-Scheme", + "value": "https" + }, + { + "name": "X-Forwarded-Host", + "value": "trcc.stg.testr.io" + }, + { + "name": "X-Forwarded-Port", + "value": "443" + }, + { + "name": "Authorization", + "value": "bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJqSEZ0R1dybjJpY084VnpDYXpaZWUyakpFc2drY1k5ZzhpN2FTbGtielRnIn0.eyJleHAiOjE1OTAwNTkxMTQsImlhdCI6MTU5MDA1ODgxNCwiYXV0aF90aW1lIjoxNTg5OTU4NDcwLCJqdGkiOiIyNzgxOTYyMy00Yjk5LTQ2MzQtOWZlNi02ZDRiNzYwNGU2ZmMiLCJpc3MiOiJodHRwczovL2F1dGguc3RnLnRlc3RyLmlvL2F1dGgvcmVhbG1zL3Rlc3RyIiwiYXVkIjoiYWNjb3VudCIsInN1YiI6ImU4NzAxMDZjLWJjYjItNDQxMy05Y2Q2LTUwMTZiNTUxMDRlYiIsInR5cCI6IkJlYXJlciIsImF6cCI6InJlYWN0LWNsaWVudCIsIm5vbmNlIjoiYzJiZTgwNGYtZjBiYS00ZWUxLTgyZWQtYmIzMTY5ZDBkYjU1Iiwic2Vzc2lvbl9zdGF0ZSI6IjM2ZDc2MDAxLTE5M2EtNGQ5OS05MTIwLTZmNGZkMjEwZDAxMiIsImFjciI6IjAiLCJhbGxvd2VkLW9yaWdpbnMiOlsiaHR0cHM6Ly9zdGcudGVzdHIuaW8iLCJjaHJvbWUtZXh0ZW5zaW9uOi8vbmFkZ2VsamVtbWJna2xkaGNwYWZqbXBtYXBpcGdsY20iLCJodHRwOi8vbG9jYWxob3N0OjMwMDAiXSwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm1hbmFnZUZlYXR1cmVGbGFncyIsIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyJhY2NvdW50Ijp7InJvbGVzIjpbIm1hbmFnZS1hY2NvdW50IiwibWFuYWdlLWFjY291bnQtbGlua3MiLCJ2aWV3LXByb2ZpbGUiXX19LCJzY29wZSI6Im9wZW5pZCBwcm9maWxlIGVtYWlsIiwiZ3JvdXBfbWVtYmVyc2hpcCI6WyJzb21lT3JnSWQxMjMiXSwiZW1haWxfdmVyaWZpZWQiOnRydWUsIm5hbWUiOiJMaXJheiBZZWhlemtlbCIsInByZWZlcnJlZF91c2VybmFtZSI6ImxpcmF6eUB1cDkuY29tIiwiZ2l2ZW5fbmFtZSI6IkxpcmF6IiwiZmFtaWx5X25hbWUiOiJZZWhlemtlbCIsImdyb3VwX3N1YmRvbWFpbiI6InNvbWVPcmdJZDEyMyIsImVtYWlsIjoibGlyYXp5QHVwOS5jb20iLCJmZWF0dXJlRmxhZ3MiOnsiZWRpdEVuZHBvaW50VmFyaWFibGVzIjp0cnVlLCJzaWRlTmF2aWdhdGlvbiI6dHJ1ZX19.KdLz7jeIr8HaST4FpJROrg6Sp-o1Nl5dU2hIbNCA0FEY-jmaoubiOlz6p7QthTJ8t-S0R_qdZtd7rXf249L6wGG_A6rriZhH41Fxhyrb0ig8OVrQp-sepv_AUf7GEIGYgpYIPFnZ6G3Dkq1aY9NzLXruh7fly_ZRkRlzF_wb1vt5NRJz3xeMrj82BOJJmUpv08AYYQhnyjKiBp7rgrNTTBejaFBozsJgXGkIi-DZfv862tgFhvPNuXsqKO5iOxv9nApuQJ2O4knVB1ag7tqB1xQcvBdkZt9gG1VVkpWsM_2j5C9cBwOuPRgHZhpZuT_YNfB4ITefGV1aYfRF-cjnug" + }, + { + "name": "User-Agent", + "value": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36" + }, + { + "name": "Sec-Fetch-Site", + "value": "cross-site" + }, + { + "name": "Accept-Encoding", + "value": "gzip, deflate, br" + }, + { + "name": ":method", + "value": "GET" + }, + { + "name": ":path", + "value": "/models/liraz_test_2105/suites/all/runs" + }, + { + "name": ":authority", + "value": "trcc.stg.testr.io" + }, + { + "name": ":scheme", + "value": "http" + }, + { + "name": "x-request-start", + "value": "1590058950.314" + }, + { + "name": "x-up9-source", + "value": "10.48.1.44" + }, + { + "name": "x-up9-destination", + "value": "10.48.0.155:5000" + } + ], + "queryString": [], + "headersSize": -1, + "bodySize": -1 + }, + "response": { + "status": 200, + "statusText": "OK", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "Vary", + "value": "Origin" + }, + { + "name": "Server", + "value": "gunicorn/19.9.0" + }, + { + "name": "Date", + "value": "Thu, 21 May 2020 11:02:30 GMT" + }, + { + "name": "Connection", + "value": "keep-alive" + }, + { + "name": "Content-Type", + "value": "application/json" + }, + { + "name": "Content-Length", + "value": "3" + }, + { + "name": "Access-Control-Allow-Origin", + "value": "http://localhost:3000" + }, + { + "name": "Access-Control-Allow-Credentials", + "value": "true" + }, + { + "name": ":status", + "value": "200" + }, + { + "name": "duration_ms", + "value": "1" + } + ], + "content": { + "size": 3, + "mimeType": "", + "text": "[]\n" + }, + "redirectURL": "", + "headersSize": -1, + "bodySize": 3 + }, + "cache": {}, + "timings": { + "send": -1, + "wait": -1, + "receive": 1 + } + }, + { + "startedDateTime": "2020-05-21T11:02:30.314000+00:00", + "time": 8, + "request": { + "method": "GET", + "url": "http://trcc-api-service/models/liraz_test_2105/suites/all/runs", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "X-Request-Id", + "value": "e92f962c6dcd93fdeb697a809fc91e1f" + }, + { + "name": "X-Forwarded-Port", + "value": "443" + }, + { + "name": "X-Forwarded-Proto", + "value": "https" + }, + { + "name": "Sec-Fetch-Dest", + "value": "empty" + }, + { + "name": "Referer", + "value": "http://localhost:3000/someOrgId123/model/liraz_test_2105/lastResults/systems/all/summary" + }, + { + "name": "Accept-Encoding", + "value": "gzip, deflate, br" + }, + { + "name": "Accept-Language", + "value": "en-US,en;q=0.9" + }, + { + "name": "X-Scheme", + "value": "https" + }, + { + "name": "Accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "Origin", + "value": "http://localhost:3000" + }, + { + "name": "Sec-Fetch-Mode", + "value": "cors" + }, + { + "name": "X-Real-Ip", + "value": "10.132.0.22" + }, + { + "name": "X-Forwarded-For", + "value": "10.132.0.22" + }, + { + "name": "X-Forwarded-Host", + "value": "trcc.stg.testr.io" + }, + { + "name": "Authorization", + "value": "bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJqSEZ0R1dybjJpY084VnpDYXpaZWUyakpFc2drY1k5ZzhpN2FTbGtielRnIn0.eyJleHAiOjE1OTAwNTkxMTQsImlhdCI6MTU5MDA1ODgxNCwiYXV0aF90aW1lIjoxNTg5OTU4NDcwLCJqdGkiOiIyNzgxOTYyMy00Yjk5LTQ2MzQtOWZlNi02ZDRiNzYwNGU2ZmMiLCJpc3MiOiJodHRwczovL2F1dGguc3RnLnRlc3RyLmlvL2F1dGgvcmVhbG1zL3Rlc3RyIiwiYXVkIjoiYWNjb3VudCIsInN1YiI6ImU4NzAxMDZjLWJjYjItNDQxMy05Y2Q2LTUwMTZiNTUxMDRlYiIsInR5cCI6IkJlYXJlciIsImF6cCI6InJlYWN0LWNsaWVudCIsIm5vbmNlIjoiYzJiZTgwNGYtZjBiYS00ZWUxLTgyZWQtYmIzMTY5ZDBkYjU1Iiwic2Vzc2lvbl9zdGF0ZSI6IjM2ZDc2MDAxLTE5M2EtNGQ5OS05MTIwLTZmNGZkMjEwZDAxMiIsImFjciI6IjAiLCJhbGxvd2VkLW9yaWdpbnMiOlsiaHR0cHM6Ly9zdGcudGVzdHIuaW8iLCJjaHJvbWUtZXh0ZW5zaW9uOi8vbmFkZ2VsamVtbWJna2xkaGNwYWZqbXBtYXBpcGdsY20iLCJodHRwOi8vbG9jYWxob3N0OjMwMDAiXSwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm1hbmFnZUZlYXR1cmVGbGFncyIsIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyJhY2NvdW50Ijp7InJvbGVzIjpbIm1hbmFnZS1hY2NvdW50IiwibWFuYWdlLWFjY291bnQtbGlua3MiLCJ2aWV3LXByb2ZpbGUiXX19LCJzY29wZSI6Im9wZW5pZCBwcm9maWxlIGVtYWlsIiwiZ3JvdXBfbWVtYmVyc2hpcCI6WyJzb21lT3JnSWQxMjMiXSwiZW1haWxfdmVyaWZpZWQiOnRydWUsIm5hbWUiOiJMaXJheiBZZWhlemtlbCIsInByZWZlcnJlZF91c2VybmFtZSI6ImxpcmF6eUB1cDkuY29tIiwiZ2l2ZW5fbmFtZSI6IkxpcmF6IiwiZmFtaWx5X25hbWUiOiJZZWhlemtlbCIsImdyb3VwX3N1YmRvbWFpbiI6InNvbWVPcmdJZDEyMyIsImVtYWlsIjoibGlyYXp5QHVwOS5jb20iLCJmZWF0dXJlRmxhZ3MiOnsiZWRpdEVuZHBvaW50VmFyaWFibGVzIjp0cnVlLCJzaWRlTmF2aWdhdGlvbiI6dHJ1ZX19.KdLz7jeIr8HaST4FpJROrg6Sp-o1Nl5dU2hIbNCA0FEY-jmaoubiOlz6p7QthTJ8t-S0R_qdZtd7rXf249L6wGG_A6rriZhH41Fxhyrb0ig8OVrQp-sepv_AUf7GEIGYgpYIPFnZ6G3Dkq1aY9NzLXruh7fly_ZRkRlzF_wb1vt5NRJz3xeMrj82BOJJmUpv08AYYQhnyjKiBp7rgrNTTBejaFBozsJgXGkIi-DZfv862tgFhvPNuXsqKO5iOxv9nApuQJ2O4knVB1ag7tqB1xQcvBdkZt9gG1VVkpWsM_2j5C9cBwOuPRgHZhpZuT_YNfB4ITefGV1aYfRF-cjnug" + }, + { + "name": "User-Agent", + "value": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36" + }, + { + "name": "Sec-Fetch-Site", + "value": "cross-site" + }, + { + "name": ":method", + "value": "GET" + }, + { + "name": ":path", + "value": "/models/liraz_test_2105/suites/all/runs" + }, + { + "name": ":authority", + "value": "trcc.stg.testr.io" + }, + { + "name": ":scheme", + "value": "http" + }, + { + "name": "x-request-start", + "value": "1590058950.314" + }, + { + "name": "x-up9-source", + "value": "10.48.1.44" + }, + { + "name": "x-up9-destination", + "value": "10.48.0.155:5000" + } + ], + "queryString": [], + "headersSize": -1, + "bodySize": -1 + }, + "response": { + "status": 200, + "statusText": "OK", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "Connection", + "value": "keep-alive" + }, + { + "name": "Content-Type", + "value": "application/json" + }, + { + "name": "Content-Length", + "value": "3" + }, + { + "name": "Access-Control-Allow-Origin", + "value": "http://localhost:3000" + }, + { + "name": "Access-Control-Allow-Credentials", + "value": "true" + }, + { + "name": "Vary", + "value": "Origin" + }, + { + "name": "Server", + "value": "gunicorn/19.9.0" + }, + { + "name": "Date", + "value": "Thu, 21 May 2020 11:02:30 GMT" + }, + { + "name": ":status", + "value": "200" + }, + { + "name": "duration_ms", + "value": "8" + } + ], + "content": { + "size": 3, + "mimeType": "", + "text": "[]\n" + }, + "redirectURL": "", + "headersSize": -1, + "bodySize": 3 + }, + "cache": {}, + "timings": { + "send": -1, + "wait": -1, + "receive": 8 + } + }, + { + "startedDateTime": "2020-05-21T11:02:30.322000+00:00", + "time": 1, + "request": { + "method": "GET", + "url": "http://trcc-api-service/models/ngm-2020-03-29-01/blacklist", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "X-Request-Id", + "value": "1f6cba2321eb51b0e1b926e61a548b9c" + }, + { + "name": "X-Scheme", + "value": "https" + }, + { + "name": "Accept-Encoding", + "value": "gzip, deflate" + }, + { + "name": "Authorization", + "value": "Bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJqSEZ0R1dybjJpY084VnpDYXpaZWUyakpFc2drY1k5ZzhpN2FTbGtielRnIn0.eyJleHAiOjE1OTAwNTkxNDQsImlhdCI6MTU5MDA1ODg0NCwianRpIjoiN2FhZmE3YWEtZGZmOS00ZGMyLThiZmEtZGYxNmI4NDE0MDQ0IiwiaXNzIjoiaHR0cHM6Ly9hdXRoLnN0Zy50ZXN0ci5pby9hdXRoL3JlYWxtcy90ZXN0ciIsImF1ZCI6ImFjY291bnQiLCJzdWIiOiI0YWFkZWM0Mi01OWE5LTRmZDUtODI3NC1lZWI5NDNmODQyNmUiLCJ0eXAiOiJCZWFyZXIiLCJhenAiOiIzWjE5LTNzYnN2MU9KSDBEd2l2UWkyYmZVSzdsSlNFdSIsInNlc3Npb25fc3RhdGUiOiJlZWU2MjkxYy01MDAwLTQ0ZGYtYWRmNy1jZmM3MWQzMjJjYjIiLCJhY3IiOiIxIiwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyJhY2NvdW50Ijp7InJvbGVzIjpbIm1hbmFnZS1hY2NvdW50IiwibWFuYWdlLWFjY291bnQtbGlua3MiLCJ2aWV3LXByb2ZpbGUiXX19LCJzY29wZSI6InByb2ZpbGUgZW1haWwiLCJjbGllbnRJZCI6IjNaMTktM3Nic3YxT0pIMER3aXZRaTJiZlVLN2xKU0V1IiwiY2xpZW50SG9zdCI6IjEwLjEzMi4wLjg1IiwiZW1haWxfdmVyaWZpZWQiOmZhbHNlLCJvcmdhbml6YXRpb24iOiJzb21lT3JnSWQxMjMiLCJwcmVmZXJyZWRfdXNlcm5hbWUiOiJzZXJ2aWNlLWFjY291bnQtM3oxOS0zc2JzdjFvamgwZHdpdnFpMmJmdWs3bGpzZXUiLCJjbGllbnRBZGRyZXNzIjoiMTAuMTMyLjAuODUiLCJlbWFpbCI6InNlcnZpY2UtYWNjb3VudC0zejE5LTNzYnN2MW9qaDBkd2l2cWkyYmZ1azdsanNldUBwbGFjZWhvbGRlci5vcmcifQ.km-_NSTvQO_RTK7vfQSlWMbj8hT80SxSs-LwX0lfwc11kFNEP8dw-vrJURpci2KUHKLITFyhfXDkertAftWEYfGAOqu1ZQlG8LQvFimjDKLqxKioFQ8OA7Ap8Mf4RCrmR_PCrlDykm4sdJwAEKjb8ygLr90Ot2QhfuIeFxh5U5agxpzzuXGQbg0EwatBsRkqYMpMknXD3uGEVR466_qk6-0sKHn_xAyT1Lr9QTV6F7JBQfWkakdwwi-bGe1VNMQqC5SgAN8qkj_03SK6s7KGJ7LIhZhXFtXkjMBh0P6xF_rpZHdmfKOo3XyWBbavCIqVpg3PMpHLmbd63Xissu6nsw" + }, + { + "name": "Accept", + "value": "*/*" + }, + { + "name": "X-Real-Ip", + "value": "10.132.0.85" + }, + { + "name": "X-Forwarded-For", + "value": "10.132.0.85" + }, + { + "name": "X-Forwarded-Host", + "value": "trcc.stg.testr.io" + }, + { + "name": "X-Forwarded-Port", + "value": "443" + }, + { + "name": "X-Forwarded-Proto", + "value": "https" + }, + { + "name": "User-Agent", + "value": "python-requests/2.23.0" + }, + { + "name": ":method", + "value": "GET" + }, + { + "name": ":path", + "value": "/models/ngm-2020-03-29-01/blacklist" + }, + { + "name": ":authority", + "value": "trcc.stg.testr.io" + }, + { + "name": ":scheme", + "value": "http" + }, + { + "name": "x-request-start", + "value": "1590058950.322" + }, + { + "name": "x-up9-source", + "value": "10.48.1.44" + }, + { + "name": "x-up9-destination", + "value": "10.48.0.155:5000" + } + ], + "queryString": [], + "headersSize": -1, + "bodySize": -1 + }, + "response": { + "status": 200, + "statusText": "OK", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "Connection", + "value": "keep-alive" + }, + { + "name": "Content-Type", + "value": "application/json" + }, + { + "name": "Content-Length", + "value": "3" + }, + { + "name": "Access-Control-Allow-Origin", + "value": "http://localhost:3000" + }, + { + "name": "Access-Control-Allow-Credentials", + "value": "true" + }, + { + "name": "Vary", + "value": "Origin" + }, + { + "name": "Server", + "value": "gunicorn/19.9.0" + }, + { + "name": "Date", + "value": "Thu, 21 May 2020 11:02:30 GMT" + }, + { + "name": ":status", + "value": "200" + }, + { + "name": "duration_ms", + "value": "1" + } + ], + "content": { + "size": 3, + "mimeType": "", + "text": "[]\n" + }, + "redirectURL": "", + "headersSize": -1, + "bodySize": 3 + }, + "cache": {}, + "timings": { + "send": -1, + "wait": -1, + "receive": 1 + } + }, + { + "startedDateTime": "2020-05-21T11:02:30.327000+00:00", + "time": 1, + "request": { + "method": "GET", + "url": "http://trcc-api-service/models/ngm-1305-aws-01/blacklist", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "X-Request-Id", + "value": "c61ad56d3b9eb2720e805d0b91a037c7" + }, + { + "name": "X-Forwarded-Host", + "value": "trcc.stg.testr.io" + }, + { + "name": "X-Forwarded-Proto", + "value": "https" + }, + { + "name": "Authorization", + "value": "Bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJqSEZ0R1dybjJpY084VnpDYXpaZWUyakpFc2drY1k5ZzhpN2FTbGtielRnIn0.eyJleHAiOjE1OTAwNTkxNDQsImlhdCI6MTU5MDA1ODg0NCwianRpIjoiN2FhZmE3YWEtZGZmOS00ZGMyLThiZmEtZGYxNmI4NDE0MDQ0IiwiaXNzIjoiaHR0cHM6Ly9hdXRoLnN0Zy50ZXN0ci5pby9hdXRoL3JlYWxtcy90ZXN0ciIsImF1ZCI6ImFjY291bnQiLCJzdWIiOiI0YWFkZWM0Mi01OWE5LTRmZDUtODI3NC1lZWI5NDNmODQyNmUiLCJ0eXAiOiJCZWFyZXIiLCJhenAiOiIzWjE5LTNzYnN2MU9KSDBEd2l2UWkyYmZVSzdsSlNFdSIsInNlc3Npb25fc3RhdGUiOiJlZWU2MjkxYy01MDAwLTQ0ZGYtYWRmNy1jZmM3MWQzMjJjYjIiLCJhY3IiOiIxIiwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyJhY2NvdW50Ijp7InJvbGVzIjpbIm1hbmFnZS1hY2NvdW50IiwibWFuYWdlLWFjY291bnQtbGlua3MiLCJ2aWV3LXByb2ZpbGUiXX19LCJzY29wZSI6InByb2ZpbGUgZW1haWwiLCJjbGllbnRJZCI6IjNaMTktM3Nic3YxT0pIMER3aXZRaTJiZlVLN2xKU0V1IiwiY2xpZW50SG9zdCI6IjEwLjEzMi4wLjg1IiwiZW1haWxfdmVyaWZpZWQiOmZhbHNlLCJvcmdhbml6YXRpb24iOiJzb21lT3JnSWQxMjMiLCJwcmVmZXJyZWRfdXNlcm5hbWUiOiJzZXJ2aWNlLWFjY291bnQtM3oxOS0zc2JzdjFvamgwZHdpdnFpMmJmdWs3bGpzZXUiLCJjbGllbnRBZGRyZXNzIjoiMTAuMTMyLjAuODUiLCJlbWFpbCI6InNlcnZpY2UtYWNjb3VudC0zejE5LTNzYnN2MW9qaDBkd2l2cWkyYmZ1azdsanNldUBwbGFjZWhvbGRlci5vcmcifQ.km-_NSTvQO_RTK7vfQSlWMbj8hT80SxSs-LwX0lfwc11kFNEP8dw-vrJURpci2KUHKLITFyhfXDkertAftWEYfGAOqu1ZQlG8LQvFimjDKLqxKioFQ8OA7Ap8Mf4RCrmR_PCrlDykm4sdJwAEKjb8ygLr90Ot2QhfuIeFxh5U5agxpzzuXGQbg0EwatBsRkqYMpMknXD3uGEVR466_qk6-0sKHn_xAyT1Lr9QTV6F7JBQfWkakdwwi-bGe1VNMQqC5SgAN8qkj_03SK6s7KGJ7LIhZhXFtXkjMBh0P6xF_rpZHdmfKOo3XyWBbavCIqVpg3PMpHLmbd63Xissu6nsw" + }, + { + "name": "X-Real-Ip", + "value": "10.132.0.85" + }, + { + "name": "X-Forwarded-For", + "value": "10.132.0.85" + }, + { + "name": "X-Forwarded-Port", + "value": "443" + }, + { + "name": "X-Scheme", + "value": "https" + }, + { + "name": "User-Agent", + "value": "python-requests/2.23.0" + }, + { + "name": "Accept-Encoding", + "value": "gzip, deflate" + }, + { + "name": "Accept", + "value": "*/*" + }, + { + "name": ":method", + "value": "GET" + }, + { + "name": ":path", + "value": "/models/ngm-1305-aws-01/blacklist" + }, + { + "name": ":authority", + "value": "trcc.stg.testr.io" + }, + { + "name": ":scheme", + "value": "http" + }, + { + "name": "x-request-start", + "value": "1590058950.327" + }, + { + "name": "x-up9-source", + "value": "10.48.1.44" + }, + { + "name": "x-up9-destination", + "value": "10.48.0.155:5000" + } + ], + "queryString": [], + "headersSize": -1, + "bodySize": -1 + }, + "response": { + "status": 200, + "statusText": "OK", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "Vary", + "value": "Origin" + }, + { + "name": "Server", + "value": "gunicorn/19.9.0" + }, + { + "name": "Date", + "value": "Thu, 21 May 2020 11:02:30 GMT" + }, + { + "name": "Connection", + "value": "keep-alive" + }, + { + "name": "Content-Type", + "value": "application/json" + }, + { + "name": "Content-Length", + "value": "3" + }, + { + "name": "Access-Control-Allow-Origin", + "value": "http://localhost:3000" + }, + { + "name": "Access-Control-Allow-Credentials", + "value": "true" + }, + { + "name": ":status", + "value": "200" + }, + { + "name": "duration_ms", + "value": "1" + } + ], + "content": { + "size": 3, + "mimeType": "", + "text": "[]\n" + }, + "redirectURL": "", + "headersSize": -1, + "bodySize": 3 + }, + "cache": {}, + "timings": { + "send": -1, + "wait": -1, + "receive": 1 + } + }, + { + "startedDateTime": "2020-05-21T11:02:30.327000+00:00", + "time": 1, + "request": { + "method": "GET", + "url": "http://trcc-api-service/models/aws_kong5/suites/all/runs", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "X-Forwarded-Host", + "value": "trcc.stg.testr.io" + }, + { + "name": "Sec-Fetch-Mode", + "value": "cors" + }, + { + "name": "Sec-Fetch-Dest", + "value": "empty" + }, + { + "name": "X-Real-Ip", + "value": "10.132.0.11" + }, + { + "name": "X-Forwarded-For", + "value": "10.132.0.11" + }, + { + "name": "X-Forwarded-Proto", + "value": "https" + }, + { + "name": "Origin", + "value": "https://stg.testr.io" + }, + { + "name": "Sec-Fetch-Site", + "value": "same-site" + }, + { + "name": "Accept-Language", + "value": "en-IL,en-US;q=0.9,en;q=0.8,he;q=0.7,pl;q=0.6,ru;q=0.5" + }, + { + "name": "X-Request-Id", + "value": "7b8e6a1b79c395b6e59895a0463e74c6" + }, + { + "name": "User-Agent", + "value": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36" + }, + { + "name": "Referer", + "value": "https://stg.testr.io/someOrgId123/model/aws_kong5/lastResults/systems/all/runs" + }, + { + "name": "X-Forwarded-Port", + "value": "443" + }, + { + "name": "X-Scheme", + "value": "https" + }, + { + "name": "Accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "Dnt", + "value": "1" + }, + { + "name": "Authorization", + "value": "bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJqSEZ0R1dybjJpY084VnpDYXpaZWUyakpFc2drY1k5ZzhpN2FTbGtielRnIn0.eyJleHAiOjE1OTAwNTkyNDMsImlhdCI6MTU5MDA1ODk0MywiYXV0aF90aW1lIjoxNTkwMDU4NjUxLCJqdGkiOiI1ODYzNmRiMy0wN2IxLTQ2ZDYtOGNiNS01MzEzMDFlZGY4MGYiLCJpc3MiOiJodHRwczovL2F1dGguc3RnLnRlc3RyLmlvL2F1dGgvcmVhbG1zL3Rlc3RyIiwiYXVkIjoiYWNjb3VudCIsInN1YiI6IjBlYWU4ZmFjLTgyYTEtNDUwNi05MWQ0LTA4ZDYxZTI2NWY1NCIsInR5cCI6IkJlYXJlciIsImF6cCI6InJlYWN0LWNsaWVudCIsIm5vbmNlIjoiNTRjMTM5OTktMDg0NS00OWNmLWI1OTAtOTY1ZThjNWI0NmJlIiwic2Vzc2lvbl9zdGF0ZSI6ImY3YjEyOTM1LThmMTctNDc1Zi04NmRhLWQ4NjFjZTYxNWZjNyIsImFjciI6IjAiLCJhbGxvd2VkLW9yaWdpbnMiOlsiaHR0cHM6Ly9zdGcudGVzdHIuaW8iLCJjaHJvbWUtZXh0ZW5zaW9uOi8vbmFkZ2VsamVtbWJna2xkaGNwYWZqbXBtYXBpcGdsY20iLCJodHRwOi8vbG9jYWxob3N0OjMwMDAiXSwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyJhY2NvdW50Ijp7InJvbGVzIjpbIm1hbmFnZS1hY2NvdW50IiwibWFuYWdlLWFjY291bnQtbGlua3MiLCJ2aWV3LXByb2ZpbGUiXX19LCJzY29wZSI6Im9wZW5pZCBwcm9maWxlIGVtYWlsIiwiZ3JvdXBfbWVtYmVyc2hpcCI6WyJzb21lT3JnSWQxMjMiXSwiZW1haWxfdmVyaWZpZWQiOnRydWUsIm5hbWUiOiJSYW1pIEJlcm1hbiIsInByZWZlcnJlZF91c2VybmFtZSI6InJhbWkuYmVybWFuQHVwOS5jb20iLCJnaXZlbl9uYW1lIjoiUmFtaSIsImZhbWlseV9uYW1lIjoiQmVybWFuIiwiZ3JvdXBfc3ViZG9tYWluIjoic29tZU9yZ0lkMTIzIiwiZW1haWwiOiJyYW1pLmJlcm1hbkB1cDkuY29tIiwiZmVhdHVyZUZsYWdzIjp7ImVkaXRFbmRwb2ludFZhcmlhYmxlcyI6dHJ1ZSwic2lkZU5hdmlnYXRpb24iOnRydWV9fQ.UEDsnoo9A8CbdIYKXoOrAAq6y2K7Aoqf-PplHhXFoVep9ewwA9qBjXqgn0fK9cnE_KfZKUcX_cy1HDhhdIfR_aHpbWWhQ3gxISkE6ALka18JIrUv7bFaHKio6eEP6tgn34QVP8aQVEB3e3g7h3dLuUvZ1xIMnt6fy03tD3KgiQlvdHwg5FhJLosiCrHgboEqN5VH_f_2QF33XiXTkDG1e-AOEnIIWqloMDTUPZEUvEo_KH68lB0Uu23YhhI5gPAuKQVb_UjFWcF_6Ysvk3C3j0cuk09DZ7YEI1u-bKp58LHnsS6gqNFQxy-CDlZ8Oht5d2I3LbwZZxHzMixzzFzJCA" + }, + { + "name": "Accept-Encoding", + "value": "gzip, deflate, br" + }, + { + "name": ":method", + "value": "GET" + }, + { + "name": ":path", + "value": "/models/aws_kong5/suites/all/runs" + }, + { + "name": ":authority", + "value": "trcc.stg.testr.io" + }, + { + "name": ":scheme", + "value": "http" + }, + { + "name": "x-request-start", + "value": "1590058950.327" + }, + { + "name": "x-up9-source", + "value": "10.48.1.44" + }, + { + "name": "x-up9-destination", + "value": "10.48.0.155:5000" + } + ], + "queryString": [], + "headersSize": -1, + "bodySize": -1 + }, + "response": { + "status": 200, + "statusText": "OK", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "Connection", + "value": "keep-alive" + }, + { + "name": "Content-Type", + "value": "application/json" + }, + { + "name": "Content-Length", + "value": "3" + }, + { + "name": "Access-Control-Allow-Origin", + "value": "https://stg.testr.io" + }, + { + "name": "Access-Control-Allow-Credentials", + "value": "true" + }, + { + "name": "Vary", + "value": "Origin" + }, + { + "name": "Server", + "value": "gunicorn/19.9.0" + }, + { + "name": "Date", + "value": "Thu, 21 May 2020 11:02:30 GMT" + }, + { + "name": ":status", + "value": "200" + }, + { + "name": "duration_ms", + "value": "1" + } + ], + "content": { + "size": 3, + "mimeType": "", + "text": "[]\n" + }, + "redirectURL": "", + "headersSize": -1, + "bodySize": 3 + }, + "cache": {}, + "timings": { + "send": -1, + "wait": -1, + "receive": 1 + } + }, + { + "startedDateTime": "2020-05-21T11:02:31.272000+00:00", + "time": 2, + "request": { + "method": "GET", + "url": "http://trcc-api-service/models/aws_new_resolving2/blacklist", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "X-Forwarded-Proto", + "value": "https" + }, + { + "name": "User-Agent", + "value": "python-requests/2.23.0" + }, + { + "name": "Authorization", + "value": "Bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJqSEZ0R1dybjJpY084VnpDYXpaZWUyakpFc2drY1k5ZzhpN2FTbGtielRnIn0.eyJleHAiOjE1OTAwNTkxNDQsImlhdCI6MTU5MDA1ODg0NCwianRpIjoiN2FhZmE3YWEtZGZmOS00ZGMyLThiZmEtZGYxNmI4NDE0MDQ0IiwiaXNzIjoiaHR0cHM6Ly9hdXRoLnN0Zy50ZXN0ci5pby9hdXRoL3JlYWxtcy90ZXN0ciIsImF1ZCI6ImFjY291bnQiLCJzdWIiOiI0YWFkZWM0Mi01OWE5LTRmZDUtODI3NC1lZWI5NDNmODQyNmUiLCJ0eXAiOiJCZWFyZXIiLCJhenAiOiIzWjE5LTNzYnN2MU9KSDBEd2l2UWkyYmZVSzdsSlNFdSIsInNlc3Npb25fc3RhdGUiOiJlZWU2MjkxYy01MDAwLTQ0ZGYtYWRmNy1jZmM3MWQzMjJjYjIiLCJhY3IiOiIxIiwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyJhY2NvdW50Ijp7InJvbGVzIjpbIm1hbmFnZS1hY2NvdW50IiwibWFuYWdlLWFjY291bnQtbGlua3MiLCJ2aWV3LXByb2ZpbGUiXX19LCJzY29wZSI6InByb2ZpbGUgZW1haWwiLCJjbGllbnRJZCI6IjNaMTktM3Nic3YxT0pIMER3aXZRaTJiZlVLN2xKU0V1IiwiY2xpZW50SG9zdCI6IjEwLjEzMi4wLjg1IiwiZW1haWxfdmVyaWZpZWQiOmZhbHNlLCJvcmdhbml6YXRpb24iOiJzb21lT3JnSWQxMjMiLCJwcmVmZXJyZWRfdXNlcm5hbWUiOiJzZXJ2aWNlLWFjY291bnQtM3oxOS0zc2JzdjFvamgwZHdpdnFpMmJmdWs3bGpzZXUiLCJjbGllbnRBZGRyZXNzIjoiMTAuMTMyLjAuODUiLCJlbWFpbCI6InNlcnZpY2UtYWNjb3VudC0zejE5LTNzYnN2MW9qaDBkd2l2cWkyYmZ1azdsanNldUBwbGFjZWhvbGRlci5vcmcifQ.km-_NSTvQO_RTK7vfQSlWMbj8hT80SxSs-LwX0lfwc11kFNEP8dw-vrJURpci2KUHKLITFyhfXDkertAftWEYfGAOqu1ZQlG8LQvFimjDKLqxKioFQ8OA7Ap8Mf4RCrmR_PCrlDykm4sdJwAEKjb8ygLr90Ot2QhfuIeFxh5U5agxpzzuXGQbg0EwatBsRkqYMpMknXD3uGEVR466_qk6-0sKHn_xAyT1Lr9QTV6F7JBQfWkakdwwi-bGe1VNMQqC5SgAN8qkj_03SK6s7KGJ7LIhZhXFtXkjMBh0P6xF_rpZHdmfKOo3XyWBbavCIqVpg3PMpHLmbd63Xissu6nsw" + }, + { + "name": "X-Forwarded-Port", + "value": "443" + }, + { + "name": "X-Request-Id", + "value": "622f1b260c46379312e9be8849703956" + }, + { + "name": "X-Real-Ip", + "value": "10.132.0.85" + }, + { + "name": "X-Forwarded-For", + "value": "10.132.0.85" + }, + { + "name": "X-Forwarded-Host", + "value": "trcc.stg.testr.io" + }, + { + "name": "X-Scheme", + "value": "https" + }, + { + "name": "Accept-Encoding", + "value": "gzip, deflate" + }, + { + "name": "Accept", + "value": "*/*" + }, + { + "name": ":method", + "value": "GET" + }, + { + "name": ":path", + "value": "/models/aws_new_resolving2/blacklist" + }, + { + "name": ":authority", + "value": "trcc.stg.testr.io" + }, + { + "name": ":scheme", + "value": "http" + }, + { + "name": "x-request-start", + "value": "1590058951.272" + }, + { + "name": "x-up9-source", + "value": "10.48.1.44" + }, + { + "name": "x-up9-destination", + "value": "10.48.0.155:5000" + } + ], + "queryString": [], + "headersSize": -1, + "bodySize": -1 + }, + "response": { + "status": 200, + "statusText": "OK", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "Connection", + "value": "keep-alive" + }, + { + "name": "Content-Type", + "value": "application/json" + }, + { + "name": "Content-Length", + "value": "3" + }, + { + "name": "Access-Control-Allow-Origin", + "value": "http://localhost:3000" + }, + { + "name": "Access-Control-Allow-Credentials", + "value": "true" + }, + { + "name": "Vary", + "value": "Origin" + }, + { + "name": "Server", + "value": "gunicorn/19.9.0" + }, + { + "name": "Date", + "value": "Thu, 21 May 2020 11:02:30 GMT" + }, + { + "name": ":status", + "value": "200" + }, + { + "name": "duration_ms", + "value": "2" + } + ], + "content": { + "size": 3, + "mimeType": "", + "text": "[]\n" + }, + "redirectURL": "", + "headersSize": -1, + "bodySize": 3 + }, + "cache": {}, + "timings": { + "send": -1, + "wait": -1, + "receive": 2 + } + }, + { + "startedDateTime": "2020-05-21T11:02:31.273000+00:00", + "time": 1, + "request": { + "method": "GET", + "url": "http://trcc-api-service/hc", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "X-Forwarded-Host", + "value": "trcc.stg.testr.io" + }, + { + "name": "X-Forwarded-Proto", + "value": "https" + }, + { + "name": "Accept-Encoding", + "value": "deflate, gzip" + }, + { + "name": "Accept", + "value": "*/*" + }, + { + "name": "User-Agent", + "value": "GoogleStackdriverMonitoring-UptimeChecks(https://cloud.google.com/monitoring)" + }, + { + "name": "X-Request-Id", + "value": "61fcd3af89aff6732a52b60594249487" + }, + { + "name": "X-Real-Ip", + "value": "10.132.0.30" + }, + { + "name": "X-Forwarded-For", + "value": "10.132.0.30" + }, + { + "name": "X-Forwarded-Port", + "value": "443" + }, + { + "name": "X-Scheme", + "value": "https" + }, + { + "name": ":method", + "value": "GET" + }, + { + "name": ":path", + "value": "/hc" + }, + { + "name": ":authority", + "value": "trcc.stg.testr.io" + }, + { + "name": ":scheme", + "value": "http" + }, + { + "name": "x-request-start", + "value": "1590058951.273" + }, + { + "name": "x-up9-source", + "value": "10.48.1.44" + }, + { + "name": "x-up9-destination", + "value": "10.48.0.155:5000" + } + ], + "queryString": [], + "headersSize": -1, + "bodySize": -1 + }, + "response": { + "status": 200, + "statusText": "OK", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "Connection", + "value": "keep-alive" + }, + { + "name": "Content-Type", + "value": "text/html; charset=utf-8" + }, + { + "name": "Content-Length", + "value": "7" + }, + { + "name": "Access-Control-Allow-Origin", + "value": "http://localhost:3000" + }, + { + "name": "Access-Control-Allow-Credentials", + "value": "true" + }, + { + "name": "Vary", + "value": "Origin" + }, + { + "name": "Server", + "value": "gunicorn/19.9.0" + }, + { + "name": "Date", + "value": "Thu, 21 May 2020 11:02:30 GMT" + }, + { + "name": ":status", + "value": "200" + }, + { + "name": "duration_ms", + "value": "1" + } + ], + "content": { + "size": 7, + "mimeType": "", + "text": "healthy" + }, + "redirectURL": "", + "headersSize": -1, + "bodySize": 7 + }, + "cache": {}, + "timings": { + "send": -1, + "wait": -1, + "receive": 1 + } + }, + { + "startedDateTime": "2020-05-21T11:02:31.273000+00:00", + "time": 1, + "request": { + "method": "GET", + "url": "http://trcc-api-service/models/aws_kong5/suites/all/runs", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "Accept-Language", + "value": "en-IL,en-US;q=0.9,en;q=0.8,he;q=0.7,pl;q=0.6,ru;q=0.5" + }, + { + "name": "X-Request-Id", + "value": "13b35c3a1fa03b6784e255ac4d6c6cf8" + }, + { + "name": "X-Forwarded-Proto", + "value": "https" + }, + { + "name": "User-Agent", + "value": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36" + }, + { + "name": "Sec-Fetch-Mode", + "value": "cors" + }, + { + "name": "X-Forwarded-For", + "value": "10.132.0.11" + }, + { + "name": "X-Forwarded-Host", + "value": "trcc.stg.testr.io" + }, + { + "name": "Referer", + "value": "https://stg.testr.io/someOrgId123/model/aws_kong5/lastResults/systems/all/runs" + }, + { + "name": "X-Forwarded-Port", + "value": "443" + }, + { + "name": "Sec-Fetch-Dest", + "value": "empty" + }, + { + "name": "Authorization", + "value": "bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJqSEZ0R1dybjJpY084VnpDYXpaZWUyakpFc2drY1k5ZzhpN2FTbGtielRnIn0.eyJleHAiOjE1OTAwNTkyNDMsImlhdCI6MTU5MDA1ODk0MywiYXV0aF90aW1lIjoxNTkwMDU4NjUxLCJqdGkiOiI1ODYzNmRiMy0wN2IxLTQ2ZDYtOGNiNS01MzEzMDFlZGY4MGYiLCJpc3MiOiJodHRwczovL2F1dGguc3RnLnRlc3RyLmlvL2F1dGgvcmVhbG1zL3Rlc3RyIiwiYXVkIjoiYWNjb3VudCIsInN1YiI6IjBlYWU4ZmFjLTgyYTEtNDUwNi05MWQ0LTA4ZDYxZTI2NWY1NCIsInR5cCI6IkJlYXJlciIsImF6cCI6InJlYWN0LWNsaWVudCIsIm5vbmNlIjoiNTRjMTM5OTktMDg0NS00OWNmLWI1OTAtOTY1ZThjNWI0NmJlIiwic2Vzc2lvbl9zdGF0ZSI6ImY3YjEyOTM1LThmMTctNDc1Zi04NmRhLWQ4NjFjZTYxNWZjNyIsImFjciI6IjAiLCJhbGxvd2VkLW9yaWdpbnMiOlsiaHR0cHM6Ly9zdGcudGVzdHIuaW8iLCJjaHJvbWUtZXh0ZW5zaW9uOi8vbmFkZ2VsamVtbWJna2xkaGNwYWZqbXBtYXBpcGdsY20iLCJodHRwOi8vbG9jYWxob3N0OjMwMDAiXSwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyJhY2NvdW50Ijp7InJvbGVzIjpbIm1hbmFnZS1hY2NvdW50IiwibWFuYWdlLWFjY291bnQtbGlua3MiLCJ2aWV3LXByb2ZpbGUiXX19LCJzY29wZSI6Im9wZW5pZCBwcm9maWxlIGVtYWlsIiwiZ3JvdXBfbWVtYmVyc2hpcCI6WyJzb21lT3JnSWQxMjMiXSwiZW1haWxfdmVyaWZpZWQiOnRydWUsIm5hbWUiOiJSYW1pIEJlcm1hbiIsInByZWZlcnJlZF91c2VybmFtZSI6InJhbWkuYmVybWFuQHVwOS5jb20iLCJnaXZlbl9uYW1lIjoiUmFtaSIsImZhbWlseV9uYW1lIjoiQmVybWFuIiwiZ3JvdXBfc3ViZG9tYWluIjoic29tZU9yZ0lkMTIzIiwiZW1haWwiOiJyYW1pLmJlcm1hbkB1cDkuY29tIiwiZmVhdHVyZUZsYWdzIjp7ImVkaXRFbmRwb2ludFZhcmlhYmxlcyI6dHJ1ZSwic2lkZU5hdmlnYXRpb24iOnRydWV9fQ.UEDsnoo9A8CbdIYKXoOrAAq6y2K7Aoqf-PplHhXFoVep9ewwA9qBjXqgn0fK9cnE_KfZKUcX_cy1HDhhdIfR_aHpbWWhQ3gxISkE6ALka18JIrUv7bFaHKio6eEP6tgn34QVP8aQVEB3e3g7h3dLuUvZ1xIMnt6fy03tD3KgiQlvdHwg5FhJLosiCrHgboEqN5VH_f_2QF33XiXTkDG1e-AOEnIIWqloMDTUPZEUvEo_KH68lB0Uu23YhhI5gPAuKQVb_UjFWcF_6Ysvk3C3j0cuk09DZ7YEI1u-bKp58LHnsS6gqNFQxy-CDlZ8Oht5d2I3LbwZZxHzMixzzFzJCA" + }, + { + "name": "Origin", + "value": "https://stg.testr.io" + }, + { + "name": "Sec-Fetch-Site", + "value": "same-site" + }, + { + "name": "Accept-Encoding", + "value": "gzip, deflate, br" + }, + { + "name": "X-Real-Ip", + "value": "10.132.0.11" + }, + { + "name": "X-Scheme", + "value": "https" + }, + { + "name": "Accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "Dnt", + "value": "1" + }, + { + "name": ":method", + "value": "GET" + }, + { + "name": ":path", + "value": "/models/aws_kong5/suites/all/runs" + }, + { + "name": ":authority", + "value": "trcc.stg.testr.io" + }, + { + "name": ":scheme", + "value": "http" + }, + { + "name": "x-request-start", + "value": "1590058951.273" + }, + { + "name": "x-up9-source", + "value": "10.48.1.44" + }, + { + "name": "x-up9-destination", + "value": "10.48.0.155:5000" + } + ], + "queryString": [], + "headersSize": -1, + "bodySize": -1 + }, + "response": { + "status": 200, + "statusText": "OK", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "Content-Length", + "value": "3" + }, + { + "name": "Access-Control-Allow-Origin", + "value": "https://stg.testr.io" + }, + { + "name": "Access-Control-Allow-Credentials", + "value": "true" + }, + { + "name": "Vary", + "value": "Origin" + }, + { + "name": "Server", + "value": "gunicorn/19.9.0" + }, + { + "name": "Date", + "value": "Thu, 21 May 2020 11:02:30 GMT" + }, + { + "name": "Connection", + "value": "keep-alive" + }, + { + "name": "Content-Type", + "value": "application/json" + }, + { + "name": ":status", + "value": "200" + }, + { + "name": "duration_ms", + "value": "1" + } + ], + "content": { + "size": 3, + "mimeType": "", + "text": "[]\n" + }, + "redirectURL": "", + "headersSize": -1, + "bodySize": 3 + }, + "cache": {}, + "timings": { + "send": -1, + "wait": -1, + "receive": 1 + } + }, + { + "startedDateTime": "2020-05-21T11:02:31.273000+00:00", + "time": 1, + "request": { + "method": "GET", + "url": "http://trcc-api-service/models/aws_kong5/suites/all/runs", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "Authorization", + "value": "bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJqSEZ0R1dybjJpY084VnpDYXpaZWUyakpFc2drY1k5ZzhpN2FTbGtielRnIn0.eyJleHAiOjE1OTAwNTkyNDMsImlhdCI6MTU5MDA1ODk0MywiYXV0aF90aW1lIjoxNTkwMDU4NjUxLCJqdGkiOiI1ODYzNmRiMy0wN2IxLTQ2ZDYtOGNiNS01MzEzMDFlZGY4MGYiLCJpc3MiOiJodHRwczovL2F1dGguc3RnLnRlc3RyLmlvL2F1dGgvcmVhbG1zL3Rlc3RyIiwiYXVkIjoiYWNjb3VudCIsInN1YiI6IjBlYWU4ZmFjLTgyYTEtNDUwNi05MWQ0LTA4ZDYxZTI2NWY1NCIsInR5cCI6IkJlYXJlciIsImF6cCI6InJlYWN0LWNsaWVudCIsIm5vbmNlIjoiNTRjMTM5OTktMDg0NS00OWNmLWI1OTAtOTY1ZThjNWI0NmJlIiwic2Vzc2lvbl9zdGF0ZSI6ImY3YjEyOTM1LThmMTctNDc1Zi04NmRhLWQ4NjFjZTYxNWZjNyIsImFjciI6IjAiLCJhbGxvd2VkLW9yaWdpbnMiOlsiaHR0cHM6Ly9zdGcudGVzdHIuaW8iLCJjaHJvbWUtZXh0ZW5zaW9uOi8vbmFkZ2VsamVtbWJna2xkaGNwYWZqbXBtYXBpcGdsY20iLCJodHRwOi8vbG9jYWxob3N0OjMwMDAiXSwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyJhY2NvdW50Ijp7InJvbGVzIjpbIm1hbmFnZS1hY2NvdW50IiwibWFuYWdlLWFjY291bnQtbGlua3MiLCJ2aWV3LXByb2ZpbGUiXX19LCJzY29wZSI6Im9wZW5pZCBwcm9maWxlIGVtYWlsIiwiZ3JvdXBfbWVtYmVyc2hpcCI6WyJzb21lT3JnSWQxMjMiXSwiZW1haWxfdmVyaWZpZWQiOnRydWUsIm5hbWUiOiJSYW1pIEJlcm1hbiIsInByZWZlcnJlZF91c2VybmFtZSI6InJhbWkuYmVybWFuQHVwOS5jb20iLCJnaXZlbl9uYW1lIjoiUmFtaSIsImZhbWlseV9uYW1lIjoiQmVybWFuIiwiZ3JvdXBfc3ViZG9tYWluIjoic29tZU9yZ0lkMTIzIiwiZW1haWwiOiJyYW1pLmJlcm1hbkB1cDkuY29tIiwiZmVhdHVyZUZsYWdzIjp7ImVkaXRFbmRwb2ludFZhcmlhYmxlcyI6dHJ1ZSwic2lkZU5hdmlnYXRpb24iOnRydWV9fQ.UEDsnoo9A8CbdIYKXoOrAAq6y2K7Aoqf-PplHhXFoVep9ewwA9qBjXqgn0fK9cnE_KfZKUcX_cy1HDhhdIfR_aHpbWWhQ3gxISkE6ALka18JIrUv7bFaHKio6eEP6tgn34QVP8aQVEB3e3g7h3dLuUvZ1xIMnt6fy03tD3KgiQlvdHwg5FhJLosiCrHgboEqN5VH_f_2QF33XiXTkDG1e-AOEnIIWqloMDTUPZEUvEo_KH68lB0Uu23YhhI5gPAuKQVb_UjFWcF_6Ysvk3C3j0cuk09DZ7YEI1u-bKp58LHnsS6gqNFQxy-CDlZ8Oht5d2I3LbwZZxHzMixzzFzJCA" + }, + { + "name": "X-Real-Ip", + "value": "10.132.0.11" + }, + { + "name": "X-Forwarded-For", + "value": "10.132.0.11" + }, + { + "name": "X-Forwarded-Port", + "value": "443" + }, + { + "name": "Sec-Fetch-Site", + "value": "same-site" + }, + { + "name": "Referer", + "value": "https://stg.testr.io/someOrgId123/model/aws_kong5/lastResults/systems/all/runs" + }, + { + "name": "X-Request-Id", + "value": "acf143eb0f8faa5fc41107491f9aaa99" + }, + { + "name": "X-Forwarded-Host", + "value": "trcc.stg.testr.io" + }, + { + "name": "User-Agent", + "value": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36" + }, + { + "name": "Origin", + "value": "https://stg.testr.io" + }, + { + "name": "Sec-Fetch-Dest", + "value": "empty" + }, + { + "name": "Accept-Language", + "value": "en-IL,en-US;q=0.9,en;q=0.8,he;q=0.7,pl;q=0.6,ru;q=0.5" + }, + { + "name": "X-Forwarded-Proto", + "value": "https" + }, + { + "name": "X-Scheme", + "value": "https" + }, + { + "name": "Dnt", + "value": "1" + }, + { + "name": "Accept-Encoding", + "value": "gzip, deflate, br" + }, + { + "name": "Accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "Sec-Fetch-Mode", + "value": "cors" + }, + { + "name": ":method", + "value": "GET" + }, + { + "name": ":path", + "value": "/models/aws_kong5/suites/all/runs" + }, + { + "name": ":authority", + "value": "trcc.stg.testr.io" + }, + { + "name": ":scheme", + "value": "http" + }, + { + "name": "x-request-start", + "value": "1590058951.273" + }, + { + "name": "x-up9-source", + "value": "10.48.1.44" + }, + { + "name": "x-up9-destination", + "value": "10.48.0.155:5000" + } + ], + "queryString": [], + "headersSize": -1, + "bodySize": -1 + }, + "response": { + "status": 200, + "statusText": "OK", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "Date", + "value": "Thu, 21 May 2020 11:02:30 GMT" + }, + { + "name": "Connection", + "value": "keep-alive" + }, + { + "name": "Content-Type", + "value": "application/json" + }, + { + "name": "Content-Length", + "value": "3" + }, + { + "name": "Access-Control-Allow-Origin", + "value": "https://stg.testr.io" + }, + { + "name": "Access-Control-Allow-Credentials", + "value": "true" + }, + { + "name": "Vary", + "value": "Origin" + }, + { + "name": "Server", + "value": "gunicorn/19.9.0" + }, + { + "name": ":status", + "value": "200" + }, + { + "name": "duration_ms", + "value": "1" + } + ], + "content": { + "size": 3, + "mimeType": "", + "text": "[]\n" + }, + "redirectURL": "", + "headersSize": -1, + "bodySize": 3 + }, + "cache": {}, + "timings": { + "send": -1, + "wait": -1, + "receive": 1 + } + }, + { + "startedDateTime": "2020-05-21T11:02:31.273000+00:00", + "time": 1, + "request": { + "method": "GET", + "url": "http://trcc-api-service/models/ngm-0704-gcloud-05/blacklist", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "X-Forwarded-Host", + "value": "trcc.stg.testr.io" + }, + { + "name": "X-Forwarded-Proto", + "value": "https" + }, + { + "name": "Accept", + "value": "*/*" + }, + { + "name": "X-Real-Ip", + "value": "10.132.0.85" + }, + { + "name": "X-Forwarded-For", + "value": "10.132.0.85" + }, + { + "name": "X-Forwarded-Port", + "value": "443" + }, + { + "name": "X-Scheme", + "value": "https" + }, + { + "name": "User-Agent", + "value": "python-requests/2.23.0" + }, + { + "name": "Accept-Encoding", + "value": "gzip, deflate" + }, + { + "name": "Authorization", + "value": "Bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJqSEZ0R1dybjJpY084VnpDYXpaZWUyakpFc2drY1k5ZzhpN2FTbGtielRnIn0.eyJleHAiOjE1OTAwNTkxNDQsImlhdCI6MTU5MDA1ODg0NCwianRpIjoiN2FhZmE3YWEtZGZmOS00ZGMyLThiZmEtZGYxNmI4NDE0MDQ0IiwiaXNzIjoiaHR0cHM6Ly9hdXRoLnN0Zy50ZXN0ci5pby9hdXRoL3JlYWxtcy90ZXN0ciIsImF1ZCI6ImFjY291bnQiLCJzdWIiOiI0YWFkZWM0Mi01OWE5LTRmZDUtODI3NC1lZWI5NDNmODQyNmUiLCJ0eXAiOiJCZWFyZXIiLCJhenAiOiIzWjE5LTNzYnN2MU9KSDBEd2l2UWkyYmZVSzdsSlNFdSIsInNlc3Npb25fc3RhdGUiOiJlZWU2MjkxYy01MDAwLTQ0ZGYtYWRmNy1jZmM3MWQzMjJjYjIiLCJhY3IiOiIxIiwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyJhY2NvdW50Ijp7InJvbGVzIjpbIm1hbmFnZS1hY2NvdW50IiwibWFuYWdlLWFjY291bnQtbGlua3MiLCJ2aWV3LXByb2ZpbGUiXX19LCJzY29wZSI6InByb2ZpbGUgZW1haWwiLCJjbGllbnRJZCI6IjNaMTktM3Nic3YxT0pIMER3aXZRaTJiZlVLN2xKU0V1IiwiY2xpZW50SG9zdCI6IjEwLjEzMi4wLjg1IiwiZW1haWxfdmVyaWZpZWQiOmZhbHNlLCJvcmdhbml6YXRpb24iOiJzb21lT3JnSWQxMjMiLCJwcmVmZXJyZWRfdXNlcm5hbWUiOiJzZXJ2aWNlLWFjY291bnQtM3oxOS0zc2JzdjFvamgwZHdpdnFpMmJmdWs3bGpzZXUiLCJjbGllbnRBZGRyZXNzIjoiMTAuMTMyLjAuODUiLCJlbWFpbCI6InNlcnZpY2UtYWNjb3VudC0zejE5LTNzYnN2MW9qaDBkd2l2cWkyYmZ1azdsanNldUBwbGFjZWhvbGRlci5vcmcifQ.km-_NSTvQO_RTK7vfQSlWMbj8hT80SxSs-LwX0lfwc11kFNEP8dw-vrJURpci2KUHKLITFyhfXDkertAftWEYfGAOqu1ZQlG8LQvFimjDKLqxKioFQ8OA7Ap8Mf4RCrmR_PCrlDykm4sdJwAEKjb8ygLr90Ot2QhfuIeFxh5U5agxpzzuXGQbg0EwatBsRkqYMpMknXD3uGEVR466_qk6-0sKHn_xAyT1Lr9QTV6F7JBQfWkakdwwi-bGe1VNMQqC5SgAN8qkj_03SK6s7KGJ7LIhZhXFtXkjMBh0P6xF_rpZHdmfKOo3XyWBbavCIqVpg3PMpHLmbd63Xissu6nsw" + }, + { + "name": "X-Request-Id", + "value": "00a7e406793ee85610233fcf10829d9d" + }, + { + "name": ":method", + "value": "GET" + }, + { + "name": ":path", + "value": "/models/ngm-0704-gcloud-05/blacklist" + }, + { + "name": ":authority", + "value": "trcc.stg.testr.io" + }, + { + "name": ":scheme", + "value": "http" + }, + { + "name": "x-request-start", + "value": "1590058951.273" + }, + { + "name": "x-up9-source", + "value": "10.48.1.44" + }, + { + "name": "x-up9-destination", + "value": "10.48.0.155:5000" + } + ], + "queryString": [], + "headersSize": -1, + "bodySize": -1 + }, + "response": { + "status": 200, + "statusText": "OK", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "Server", + "value": "gunicorn/19.9.0" + }, + { + "name": "Date", + "value": "Thu, 21 May 2020 11:02:30 GMT" + }, + { + "name": "Connection", + "value": "keep-alive" + }, + { + "name": "Content-Type", + "value": "application/json" + }, + { + "name": "Content-Length", + "value": "3" + }, + { + "name": "Access-Control-Allow-Origin", + "value": "http://localhost:3000" + }, + { + "name": "Access-Control-Allow-Credentials", + "value": "true" + }, + { + "name": "Vary", + "value": "Origin" + }, + { + "name": ":status", + "value": "200" + }, + { + "name": "duration_ms", + "value": "1" + } + ], + "content": { + "size": 3, + "mimeType": "", + "text": "[]\n" + }, + "redirectURL": "", + "headersSize": -1, + "bodySize": 3 + }, + "cache": {}, + "timings": { + "send": -1, + "wait": -1, + "receive": 1 + } + }, + { + "startedDateTime": "2020-05-21T11:02:31.274000+00:00", + "time": 1, + "request": { + "method": "GET", + "url": "http://trcc-api-service/models/ag_trdemo_040701/blacklist", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "X-Real-Ip", + "value": "10.132.0.85" + }, + { + "name": "X-Forwarded-For", + "value": "10.132.0.85" + }, + { + "name": "X-Forwarded-Proto", + "value": "https" + }, + { + "name": "Accept-Encoding", + "value": "gzip, deflate" + }, + { + "name": "X-Request-Id", + "value": "32acb134c4570a5c32baabdf0c4970b0" + }, + { + "name": "X-Forwarded-Host", + "value": "trcc.stg.testr.io" + }, + { + "name": "X-Forwarded-Port", + "value": "443" + }, + { + "name": "X-Scheme", + "value": "https" + }, + { + "name": "User-Agent", + "value": "python-requests/2.23.0" + }, + { + "name": "Accept", + "value": "*/*" + }, + { + "name": "Authorization", + "value": "Bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJqSEZ0R1dybjJpY084VnpDYXpaZWUyakpFc2drY1k5ZzhpN2FTbGtielRnIn0.eyJleHAiOjE1OTAwNTkxNDQsImlhdCI6MTU5MDA1ODg0NCwianRpIjoiN2FhZmE3YWEtZGZmOS00ZGMyLThiZmEtZGYxNmI4NDE0MDQ0IiwiaXNzIjoiaHR0cHM6Ly9hdXRoLnN0Zy50ZXN0ci5pby9hdXRoL3JlYWxtcy90ZXN0ciIsImF1ZCI6ImFjY291bnQiLCJzdWIiOiI0YWFkZWM0Mi01OWE5LTRmZDUtODI3NC1lZWI5NDNmODQyNmUiLCJ0eXAiOiJCZWFyZXIiLCJhenAiOiIzWjE5LTNzYnN2MU9KSDBEd2l2UWkyYmZVSzdsSlNFdSIsInNlc3Npb25fc3RhdGUiOiJlZWU2MjkxYy01MDAwLTQ0ZGYtYWRmNy1jZmM3MWQzMjJjYjIiLCJhY3IiOiIxIiwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyJhY2NvdW50Ijp7InJvbGVzIjpbIm1hbmFnZS1hY2NvdW50IiwibWFuYWdlLWFjY291bnQtbGlua3MiLCJ2aWV3LXByb2ZpbGUiXX19LCJzY29wZSI6InByb2ZpbGUgZW1haWwiLCJjbGllbnRJZCI6IjNaMTktM3Nic3YxT0pIMER3aXZRaTJiZlVLN2xKU0V1IiwiY2xpZW50SG9zdCI6IjEwLjEzMi4wLjg1IiwiZW1haWxfdmVyaWZpZWQiOmZhbHNlLCJvcmdhbml6YXRpb24iOiJzb21lT3JnSWQxMjMiLCJwcmVmZXJyZWRfdXNlcm5hbWUiOiJzZXJ2aWNlLWFjY291bnQtM3oxOS0zc2JzdjFvamgwZHdpdnFpMmJmdWs3bGpzZXUiLCJjbGllbnRBZGRyZXNzIjoiMTAuMTMyLjAuODUiLCJlbWFpbCI6InNlcnZpY2UtYWNjb3VudC0zejE5LTNzYnN2MW9qaDBkd2l2cWkyYmZ1azdsanNldUBwbGFjZWhvbGRlci5vcmcifQ.km-_NSTvQO_RTK7vfQSlWMbj8hT80SxSs-LwX0lfwc11kFNEP8dw-vrJURpci2KUHKLITFyhfXDkertAftWEYfGAOqu1ZQlG8LQvFimjDKLqxKioFQ8OA7Ap8Mf4RCrmR_PCrlDykm4sdJwAEKjb8ygLr90Ot2QhfuIeFxh5U5agxpzzuXGQbg0EwatBsRkqYMpMknXD3uGEVR466_qk6-0sKHn_xAyT1Lr9QTV6F7JBQfWkakdwwi-bGe1VNMQqC5SgAN8qkj_03SK6s7KGJ7LIhZhXFtXkjMBh0P6xF_rpZHdmfKOo3XyWBbavCIqVpg3PMpHLmbd63Xissu6nsw" + }, + { + "name": ":method", + "value": "GET" + }, + { + "name": ":path", + "value": "/models/ag_trdemo_040701/blacklist" + }, + { + "name": ":authority", + "value": "trcc.stg.testr.io" + }, + { + "name": ":scheme", + "value": "http" + }, + { + "name": "x-request-start", + "value": "1590058951.274" + }, + { + "name": "x-up9-source", + "value": "10.48.1.44" + }, + { + "name": "x-up9-destination", + "value": "10.48.0.155:5000" + } + ], + "queryString": [], + "headersSize": -1, + "bodySize": -1 + }, + "response": { + "status": 200, + "statusText": "OK", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "Content-Length", + "value": "3" + }, + { + "name": "Access-Control-Allow-Origin", + "value": "http://localhost:3000" + }, + { + "name": "Access-Control-Allow-Credentials", + "value": "true" + }, + { + "name": "Vary", + "value": "Origin" + }, + { + "name": "Server", + "value": "gunicorn/19.9.0" + }, + { + "name": "Date", + "value": "Thu, 21 May 2020 11:02:30 GMT" + }, + { + "name": "Connection", + "value": "keep-alive" + }, + { + "name": "Content-Type", + "value": "application/json" + }, + { + "name": ":status", + "value": "200" + }, + { + "name": "duration_ms", + "value": "1" + } + ], + "content": { + "size": 3, + "mimeType": "", + "text": "[]\n" + }, + "redirectURL": "", + "headersSize": -1, + "bodySize": 3 + }, + "cache": {}, + "timings": { + "send": -1, + "wait": -1, + "receive": 1 + } + }, + { + "startedDateTime": "2020-05-21T11:02:31.274000+00:00", + "time": 1, + "request": { + "method": "GET", + "url": "http://trcc-api-service/models/aws_kong5/suites/all/runs", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "Dnt", + "value": "1" + }, + { + "name": "Authorization", + "value": "bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJqSEZ0R1dybjJpY084VnpDYXpaZWUyakpFc2drY1k5ZzhpN2FTbGtielRnIn0.eyJleHAiOjE1OTAwNTkyNDMsImlhdCI6MTU5MDA1ODk0MywiYXV0aF90aW1lIjoxNTkwMDU4NjUxLCJqdGkiOiI1ODYzNmRiMy0wN2IxLTQ2ZDYtOGNiNS01MzEzMDFlZGY4MGYiLCJpc3MiOiJodHRwczovL2F1dGguc3RnLnRlc3RyLmlvL2F1dGgvcmVhbG1zL3Rlc3RyIiwiYXVkIjoiYWNjb3VudCIsInN1YiI6IjBlYWU4ZmFjLTgyYTEtNDUwNi05MWQ0LTA4ZDYxZTI2NWY1NCIsInR5cCI6IkJlYXJlciIsImF6cCI6InJlYWN0LWNsaWVudCIsIm5vbmNlIjoiNTRjMTM5OTktMDg0NS00OWNmLWI1OTAtOTY1ZThjNWI0NmJlIiwic2Vzc2lvbl9zdGF0ZSI6ImY3YjEyOTM1LThmMTctNDc1Zi04NmRhLWQ4NjFjZTYxNWZjNyIsImFjciI6IjAiLCJhbGxvd2VkLW9yaWdpbnMiOlsiaHR0cHM6Ly9zdGcudGVzdHIuaW8iLCJjaHJvbWUtZXh0ZW5zaW9uOi8vbmFkZ2VsamVtbWJna2xkaGNwYWZqbXBtYXBpcGdsY20iLCJodHRwOi8vbG9jYWxob3N0OjMwMDAiXSwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyJhY2NvdW50Ijp7InJvbGVzIjpbIm1hbmFnZS1hY2NvdW50IiwibWFuYWdlLWFjY291bnQtbGlua3MiLCJ2aWV3LXByb2ZpbGUiXX19LCJzY29wZSI6Im9wZW5pZCBwcm9maWxlIGVtYWlsIiwiZ3JvdXBfbWVtYmVyc2hpcCI6WyJzb21lT3JnSWQxMjMiXSwiZW1haWxfdmVyaWZpZWQiOnRydWUsIm5hbWUiOiJSYW1pIEJlcm1hbiIsInByZWZlcnJlZF91c2VybmFtZSI6InJhbWkuYmVybWFuQHVwOS5jb20iLCJnaXZlbl9uYW1lIjoiUmFtaSIsImZhbWlseV9uYW1lIjoiQmVybWFuIiwiZ3JvdXBfc3ViZG9tYWluIjoic29tZU9yZ0lkMTIzIiwiZW1haWwiOiJyYW1pLmJlcm1hbkB1cDkuY29tIiwiZmVhdHVyZUZsYWdzIjp7ImVkaXRFbmRwb2ludFZhcmlhYmxlcyI6dHJ1ZSwic2lkZU5hdmlnYXRpb24iOnRydWV9fQ.UEDsnoo9A8CbdIYKXoOrAAq6y2K7Aoqf-PplHhXFoVep9ewwA9qBjXqgn0fK9cnE_KfZKUcX_cy1HDhhdIfR_aHpbWWhQ3gxISkE6ALka18JIrUv7bFaHKio6eEP6tgn34QVP8aQVEB3e3g7h3dLuUvZ1xIMnt6fy03tD3KgiQlvdHwg5FhJLosiCrHgboEqN5VH_f_2QF33XiXTkDG1e-AOEnIIWqloMDTUPZEUvEo_KH68lB0Uu23YhhI5gPAuKQVb_UjFWcF_6Ysvk3C3j0cuk09DZ7YEI1u-bKp58LHnsS6gqNFQxy-CDlZ8Oht5d2I3LbwZZxHzMixzzFzJCA" + }, + { + "name": "User-Agent", + "value": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36" + }, + { + "name": "Accept-Language", + "value": "en-IL,en-US;q=0.9,en;q=0.8,he;q=0.7,pl;q=0.6,ru;q=0.5" + }, + { + "name": "X-Forwarded-For", + "value": "10.132.0.11" + }, + { + "name": "X-Forwarded-Port", + "value": "443" + }, + { + "name": "X-Forwarded-Proto", + "value": "https" + }, + { + "name": "Sec-Fetch-Site", + "value": "same-site" + }, + { + "name": "Sec-Fetch-Mode", + "value": "cors" + }, + { + "name": "Referer", + "value": "https://stg.testr.io/someOrgId123/model/aws_kong5/lastResults/systems/all/runs" + }, + { + "name": "X-Real-Ip", + "value": "10.132.0.11" + }, + { + "name": "Origin", + "value": "https://stg.testr.io" + }, + { + "name": "X-Scheme", + "value": "https" + }, + { + "name": "Sec-Fetch-Dest", + "value": "empty" + }, + { + "name": "Accept-Encoding", + "value": "gzip, deflate, br" + }, + { + "name": "X-Request-Id", + "value": "4f9d4f9f7294dbb6c821444bb01495ae" + }, + { + "name": "X-Forwarded-Host", + "value": "trcc.stg.testr.io" + }, + { + "name": "Accept", + "value": "application/json, text/plain, */*" + }, + { + "name": ":method", + "value": "GET" + }, + { + "name": ":path", + "value": "/models/aws_kong5/suites/all/runs" + }, + { + "name": ":authority", + "value": "trcc.stg.testr.io" + }, + { + "name": ":scheme", + "value": "http" + }, + { + "name": "x-request-start", + "value": "1590058951.274" + }, + { + "name": "x-up9-source", + "value": "10.48.1.44" + }, + { + "name": "x-up9-destination", + "value": "10.48.0.155:5000" + } + ], + "queryString": [], + "headersSize": -1, + "bodySize": -1 + }, + "response": { + "status": 200, + "statusText": "OK", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "Access-Control-Allow-Origin", + "value": "http://localhost:3000" + }, + { + "name": "Access-Control-Allow-Credentials", + "value": "true" + }, + { + "name": "Vary", + "value": "Origin" + }, + { + "name": "Server", + "value": "gunicorn/19.9.0" + }, + { + "name": "Date", + "value": "Thu, 21 May 2020 11:02:30 GMT" + }, + { + "name": "Connection", + "value": "keep-alive" + }, + { + "name": "Content-Type", + "value": "application/json" + }, + { + "name": "Content-Length", + "value": "3" + }, + { + "name": ":status", + "value": "200" + }, + { + "name": "duration_ms", + "value": "1" + } + ], + "content": { + "size": 3, + "mimeType": "", + "text": "[]\n" + }, + "redirectURL": "", + "headersSize": -1, + "bodySize": 3 + }, + "cache": {}, + "timings": { + "send": -1, + "wait": -1, + "receive": 1 + } + }, + { + "startedDateTime": "2020-05-21T11:02:31.274000+00:00", + "time": 1, + "request": { + "method": "GET", + "url": "http://trcc-api-service/models/liraz_test_2105/suites/all/runs", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "Sec-Fetch-Mode", + "value": "cors" + }, + { + "name": "Referer", + "value": "http://localhost:3000/someOrgId123/model/liraz_test_2105/lastResults/systems/all/summary" + }, + { + "name": "Accept-Language", + "value": "en-US,en;q=0.9" + }, + { + "name": "X-Real-Ip", + "value": "10.132.0.22" + }, + { + "name": "X-Scheme", + "value": "https" + }, + { + "name": "Sec-Fetch-Site", + "value": "cross-site" + }, + { + "name": "X-Forwarded-Proto", + "value": "https" + }, + { + "name": "Accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "Origin", + "value": "http://localhost:3000" + }, + { + "name": "Accept-Encoding", + "value": "gzip, deflate, br" + }, + { + "name": "X-Forwarded-For", + "value": "10.132.0.22" + }, + { + "name": "X-Forwarded-Host", + "value": "trcc.stg.testr.io" + }, + { + "name": "X-Forwarded-Port", + "value": "443" + }, + { + "name": "X-Request-Id", + "value": "025b6fd8e94bfd26a8f5d7f94d730993" + }, + { + "name": "User-Agent", + "value": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36" + }, + { + "name": "Authorization", + "value": "bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJqSEZ0R1dybjJpY084VnpDYXpaZWUyakpFc2drY1k5ZzhpN2FTbGtielRnIn0.eyJleHAiOjE1OTAwNTkxMTQsImlhdCI6MTU5MDA1ODgxNCwiYXV0aF90aW1lIjoxNTg5OTU4NDcwLCJqdGkiOiIyNzgxOTYyMy00Yjk5LTQ2MzQtOWZlNi02ZDRiNzYwNGU2ZmMiLCJpc3MiOiJodHRwczovL2F1dGguc3RnLnRlc3RyLmlvL2F1dGgvcmVhbG1zL3Rlc3RyIiwiYXVkIjoiYWNjb3VudCIsInN1YiI6ImU4NzAxMDZjLWJjYjItNDQxMy05Y2Q2LTUwMTZiNTUxMDRlYiIsInR5cCI6IkJlYXJlciIsImF6cCI6InJlYWN0LWNsaWVudCIsIm5vbmNlIjoiYzJiZTgwNGYtZjBiYS00ZWUxLTgyZWQtYmIzMTY5ZDBkYjU1Iiwic2Vzc2lvbl9zdGF0ZSI6IjM2ZDc2MDAxLTE5M2EtNGQ5OS05MTIwLTZmNGZkMjEwZDAxMiIsImFjciI6IjAiLCJhbGxvd2VkLW9yaWdpbnMiOlsiaHR0cHM6Ly9zdGcudGVzdHIuaW8iLCJjaHJvbWUtZXh0ZW5zaW9uOi8vbmFkZ2VsamVtbWJna2xkaGNwYWZqbXBtYXBpcGdsY20iLCJodHRwOi8vbG9jYWxob3N0OjMwMDAiXSwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm1hbmFnZUZlYXR1cmVGbGFncyIsIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyJhY2NvdW50Ijp7InJvbGVzIjpbIm1hbmFnZS1hY2NvdW50IiwibWFuYWdlLWFjY291bnQtbGlua3MiLCJ2aWV3LXByb2ZpbGUiXX19LCJzY29wZSI6Im9wZW5pZCBwcm9maWxlIGVtYWlsIiwiZ3JvdXBfbWVtYmVyc2hpcCI6WyJzb21lT3JnSWQxMjMiXSwiZW1haWxfdmVyaWZpZWQiOnRydWUsIm5hbWUiOiJMaXJheiBZZWhlemtlbCIsInByZWZlcnJlZF91c2VybmFtZSI6ImxpcmF6eUB1cDkuY29tIiwiZ2l2ZW5fbmFtZSI6IkxpcmF6IiwiZmFtaWx5X25hbWUiOiJZZWhlemtlbCIsImdyb3VwX3N1YmRvbWFpbiI6InNvbWVPcmdJZDEyMyIsImVtYWlsIjoibGlyYXp5QHVwOS5jb20iLCJmZWF0dXJlRmxhZ3MiOnsiZWRpdEVuZHBvaW50VmFyaWFibGVzIjp0cnVlLCJzaWRlTmF2aWdhdGlvbiI6dHJ1ZX19.KdLz7jeIr8HaST4FpJROrg6Sp-o1Nl5dU2hIbNCA0FEY-jmaoubiOlz6p7QthTJ8t-S0R_qdZtd7rXf249L6wGG_A6rriZhH41Fxhyrb0ig8OVrQp-sepv_AUf7GEIGYgpYIPFnZ6G3Dkq1aY9NzLXruh7fly_ZRkRlzF_wb1vt5NRJz3xeMrj82BOJJmUpv08AYYQhnyjKiBp7rgrNTTBejaFBozsJgXGkIi-DZfv862tgFhvPNuXsqKO5iOxv9nApuQJ2O4knVB1ag7tqB1xQcvBdkZt9gG1VVkpWsM_2j5C9cBwOuPRgHZhpZuT_YNfB4ITefGV1aYfRF-cjnug" + }, + { + "name": "Sec-Fetch-Dest", + "value": "empty" + }, + { + "name": ":method", + "value": "GET" + }, + { + "name": ":path", + "value": "/models/liraz_test_2105/suites/all/runs" + }, + { + "name": ":authority", + "value": "trcc.stg.testr.io" + }, + { + "name": ":scheme", + "value": "http" + }, + { + "name": "x-request-start", + "value": "1590058951.274" + }, + { + "name": "x-up9-source", + "value": "10.48.1.44" + }, + { + "name": "x-up9-destination", + "value": "10.48.0.155:5000" + } + ], + "queryString": [], + "headersSize": -1, + "bodySize": -1 + }, + "response": { + "status": 200, + "statusText": "OK", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "Access-Control-Allow-Origin", + "value": "http://localhost:3000" + }, + { + "name": "Access-Control-Allow-Credentials", + "value": "true" + }, + { + "name": "Vary", + "value": "Origin" + }, + { + "name": "Server", + "value": "gunicorn/19.9.0" + }, + { + "name": "Date", + "value": "Thu, 21 May 2020 11:02:30 GMT" + }, + { + "name": "Connection", + "value": "keep-alive" + }, + { + "name": "Content-Type", + "value": "application/json" + }, + { + "name": "Content-Length", + "value": "2628" + }, + { + "name": ":status", + "value": "200" + }, + { + "name": "duration_ms", + "value": "1" + } + ], + "content": { + "size": 2628, + "mimeType": "", + "text": "[{\"runId\":\"aittevcslm\",\"status\":\"COMPLETED\"},{\"runId\":\"alcqzbblzb\",\"status\":\"COMPLETED\"},{\"runId\":\"azafkxrgio\",\"status\":\"COMPLETED\"},{\"runId\":\"bqmrrcucqn\",\"status\":\"COMPLETED\"},{\"runId\":\"bvtvnolbej\",\"status\":\"STARTED\"},{\"runId\":\"ckwjnafyss\",\"status\":\"FAILED\"},{\"runId\":\"cnuldeupiz\",\"status\":\"FAILED\"},{\"runId\":\"dgtzkvurzr\",\"status\":\"COMPLETED\"},{\"runId\":\"dzmihnoyjr\",\"status\":\"COMPLETED\"},{\"runId\":\"euiwbrmmmf\",\"status\":\"COMPLETED\"},{\"runId\":\"flopwwycua\",\"status\":\"STARTED\"},{\"runId\":\"fmccacnjws\",\"status\":\"COMPLETED\"},{\"runId\":\"fvjurnnkea\",\"status\":\"COMPLETED\"},{\"runId\":\"gnzvmbrpjp\",\"status\":\"COMPLETED\"},{\"runId\":\"gutakabjjt\",\"status\":\"COMPLETED\"},{\"runId\":\"gvtgfezwjc\",\"status\":\"FAILED\"},{\"runId\":\"hrqafextpc\",\"status\":\"FAILED\"},{\"runId\":\"hwychhzema\",\"status\":\"COMPLETED\"},{\"runId\":\"ikcrxvqkjs\",\"status\":\"COMPLETED\"},{\"runId\":\"imougsqzvf\",\"status\":\"COMPLETED\"},{\"runId\":\"ipnbteomnf\",\"status\":\"STARTED\"},{\"runId\":\"jlsnncxqvf\",\"status\":\"COMPLETED\"},{\"runId\":\"jottzgovuz\",\"status\":\"COMPLETED\"},{\"runId\":\"jqkrbnumkm\",\"status\":\"STARTED\"},{\"runId\":\"kwprhocfbs\",\"status\":\"COMPLETED\"},{\"runId\":\"lceatcwrbq\",\"status\":\"COMPLETED\"},{\"runId\":\"lqauepmnjj\",\"status\":\"STARTED\"},{\"runId\":\"lsnpgtnlma\",\"status\":\"COMPLETED\"},{\"runId\":\"lxornwgazx\",\"status\":\"COMPLETED\"},{\"runId\":\"muowblzleu\",\"status\":\"COMPLETED\"},{\"runId\":\"nxqaspaudu\",\"status\":\"FAILED\"},{\"runId\":\"ocmmutzvdv\",\"status\":\"STARTED\"},{\"runId\":\"ojzbmwlpci\",\"status\":\"COMPLETED\"},{\"runId\":\"otjrhbtbfj\",\"status\":\"COMPLETED\"},{\"runId\":\"pbkxfptxkc\",\"status\":\"COMPLETED\"},{\"runId\":\"pcemcfisac\",\"status\":\"COMPLETED\"},{\"runId\":\"pnhewfukvc\",\"status\":\"FAILED\"},{\"runId\":\"pybtkeimlf\",\"status\":\"FAILED\"},{\"runId\":\"qdywhbzqul\",\"status\":\"COMPLETED\"},{\"runId\":\"qfjlnxxpjr\",\"status\":\"FAILED\"},{\"runId\":\"qjmcbyraoo\",\"status\":\"COMPLETED\"},{\"runId\":\"qkhuvpxqhb\",\"status\":\"COMPLETED\"},{\"runId\":\"qkpyfpsqbe\",\"status\":\"STARTED\"},{\"runId\":\"rakkkldfxb\",\"status\":\"FAILED\"},{\"runId\":\"rcznwqohjb\",\"status\":\"COMPLETED\"},{\"runId\":\"rudwxkqtbf\",\"status\":\"COMPLETED\"},{\"runId\":\"rwhvxsxeve\",\"status\":\"STARTED\"},{\"runId\":\"scddzcuvjo\",\"status\":\"COMPLETED\"},{\"runId\":\"sgnkiaxsas\",\"status\":\"COMPLETED\"},{\"runId\":\"soxuineriz\",\"status\":\"COMPLETED\"},{\"runId\":\"spruugbxgh\",\"status\":\"COMPLETED\"},{\"runId\":\"tazfrmcmwr\",\"status\":\"FAILED\"},{\"runId\":\"trvztbxueo\",\"status\":\"FAILED\"},{\"runId\":\"tvquigmppx\",\"status\":\"FAILED\"},{\"runId\":\"ucqkrkilbn\",\"status\":\"COMPLETED\"},{\"runId\":\"vuquhadifo\",\"status\":\"COMPLETED\"},{\"runId\":\"xihzznzyyl\",\"status\":\"COMPLETED\"},{\"runId\":\"xvjgmxkugt\",\"status\":\"FAILED\"},{\"runId\":\"xxcnuvjbwf\",\"status\":\"COMPLETED\"},{\"runId\":\"yzuqwbiqsk\",\"status\":\"COMPLETED\"},{\"runId\":\"zweiiihtlw\",\"status\":\"FAILED\"}]\n" + }, + "redirectURL": "", + "headersSize": -1, + "bodySize": 2628 + }, + "cache": {}, + "timings": { + "send": -1, + "wait": -1, + "receive": 1 + } + }, + { + "startedDateTime": "2020-05-21T11:02:31.275000+00:00", + "time": 1, + "request": { + "method": "GET", + "url": "http://trcc-api-service/models/sy_up9/suites/all/runs/state", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "X-Forwarded-Port", + "value": "443" + }, + { + "name": "Sec-Fetch-Mode", + "value": "cors" + }, + { + "name": "X-Real-Ip", + "value": "10.132.0.22" + }, + { + "name": "Authorization", + "value": "bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJqSEZ0R1dybjJpY084VnpDYXpaZWUyakpFc2drY1k5ZzhpN2FTbGtielRnIn0.eyJleHAiOjE1OTAwNTkyNDYsImlhdCI6MTU5MDA1ODk0NiwiYXV0aF90aW1lIjoxNTg5OTU4NDcwLCJqdGkiOiJjNmE1MWRmOS1hYzdlLTRjNmEtYjcyZS0wZTExODY0ZTVjZmQiLCJpc3MiOiJodHRwczovL2F1dGguc3RnLnRlc3RyLmlvL2F1dGgvcmVhbG1zL3Rlc3RyIiwiYXVkIjoiYWNjb3VudCIsInN1YiI6ImU4NzAxMDZjLWJjYjItNDQxMy05Y2Q2LTUwMTZiNTUxMDRlYiIsInR5cCI6IkJlYXJlciIsImF6cCI6InJlYWN0LWNsaWVudCIsIm5vbmNlIjoiZTkxNzVjNTYtYTE1ZC00YzRiLTk5NzktZTQ0OTQ4YTdjMTAzIiwic2Vzc2lvbl9zdGF0ZSI6IjM2ZDc2MDAxLTE5M2EtNGQ5OS05MTIwLTZmNGZkMjEwZDAxMiIsImFjciI6IjAiLCJhbGxvd2VkLW9yaWdpbnMiOlsiaHR0cHM6Ly9zdGcudGVzdHIuaW8iLCJjaHJvbWUtZXh0ZW5zaW9uOi8vbmFkZ2VsamVtbWJna2xkaGNwYWZqbXBtYXBpcGdsY20iLCJodHRwOi8vbG9jYWxob3N0OjMwMDAiXSwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm1hbmFnZUZlYXR1cmVGbGFncyIsIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyJhY2NvdW50Ijp7InJvbGVzIjpbIm1hbmFnZS1hY2NvdW50IiwibWFuYWdlLWFjY291bnQtbGlua3MiLCJ2aWV3LXByb2ZpbGUiXX19LCJzY29wZSI6Im9wZW5pZCBwcm9maWxlIGVtYWlsIiwiZ3JvdXBfbWVtYmVyc2hpcCI6WyJzb21lT3JnSWQxMjMiXSwiZW1haWxfdmVyaWZpZWQiOnRydWUsIm5hbWUiOiJMaXJheiBZZWhlemtlbCIsInByZWZlcnJlZF91c2VybmFtZSI6ImxpcmF6eUB1cDkuY29tIiwiZ2l2ZW5fbmFtZSI6IkxpcmF6IiwiZmFtaWx5X25hbWUiOiJZZWhlemtlbCIsImdyb3VwX3N1YmRvbWFpbiI6InNvbWVPcmdJZDEyMyIsImVtYWlsIjoibGlyYXp5QHVwOS5jb20iLCJmZWF0dXJlRmxhZ3MiOnsiZWRpdEVuZHBvaW50VmFyaWFibGVzIjp0cnVlLCJzaWRlTmF2aWdhdGlvbiI6dHJ1ZX19.B6r6tfXSNz9cPHRPPC5QnB6fE4IpHTY3XYgwQaFSarbVY6SviGkdWJShd8CnKEQdnVZsBRys2Y6cVBLOV7H5dfj9S_L47hkwEux7NvmbBkbkeuM_2dCiJ7lKoU5puh8_mKGkeS8wU6MQadHejyQgIsntPbOOpzBbf9S_ASkq_mjK1pF7T7GoYKyTL3yY8V_l5ocnBYccziGFtwxrdDnOOzh3epBcxx7Nsi77_Mi4VOjSaEbu9QXtkL1SZYUJ-Y7cQync0ixmMIpn6u1C8GEJdROHHFW4VmrRbCUY67rFHOB9PNOdarMANtHbjxep0Z1frfrvTrIyfF0nGsurkftWWQ" + }, + { + "name": "X-Forwarded-Host", + "value": "trcc.stg.testr.io" + }, + { + "name": "X-Scheme", + "value": "https" + }, + { + "name": "User-Agent", + "value": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36" + }, + { + "name": "Accept-Encoding", + "value": "gzip, deflate, br" + }, + { + "name": "X-Request-Id", + "value": "da105f0807122815057e75f42e2497fe" + }, + { + "name": "X-Forwarded-For", + "value": "10.132.0.22" + }, + { + "name": "Origin", + "value": "http://localhost:3000" + }, + { + "name": "Sec-Fetch-Site", + "value": "cross-site" + }, + { + "name": "Sec-Fetch-Dest", + "value": "empty" + }, + { + "name": "Referer", + "value": "http://localhost:3000/someOrgId123/model/sy_up9/lastResults/systems/all/endpoints" + }, + { + "name": "Accept-Language", + "value": "en-US,en;q=0.9" + }, + { + "name": "X-Forwarded-Proto", + "value": "https" + }, + { + "name": "Accept", + "value": "application/json, text/plain, */*" + }, + { + "name": ":method", + "value": "GET" + }, + { + "name": ":path", + "value": "/models/sy_up9/suites/all/runs/state" + }, + { + "name": ":authority", + "value": "trcc.stg.testr.io" + }, + { + "name": ":scheme", + "value": "http" + }, + { + "name": "x-request-start", + "value": "1590058951.275" + }, + { + "name": "x-up9-source", + "value": "10.48.1.44" + }, + { + "name": "x-up9-destination", + "value": "10.48.0.155:5000" + } + ], + "queryString": [], + "headersSize": -1, + "bodySize": -1 + }, + "response": { + "status": 200, + "statusText": "OK", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "Access-Control-Allow-Credentials", + "value": "true" + }, + { + "name": "Vary", + "value": "Origin" + }, + { + "name": "Server", + "value": "gunicorn/19.9.0" + }, + { + "name": "Date", + "value": "Thu, 21 May 2020 11:02:30 GMT" + }, + { + "name": "Connection", + "value": "keep-alive" + }, + { + "name": "Content-Type", + "value": "application/json" + }, + { + "name": "Content-Length", + "value": "3" + }, + { + "name": "Access-Control-Allow-Origin", + "value": "https://stg.testr.io" + }, + { + "name": ":status", + "value": "200" + }, + { + "name": "duration_ms", + "value": "1" + } + ], + "content": { + "size": 3, + "mimeType": "", + "text": "[]\n" + }, + "redirectURL": "", + "headersSize": -1, + "bodySize": 3 + }, + "cache": {}, + "timings": { + "send": -1, + "wait": -1, + "receive": 1 + } + }, + { + "startedDateTime": "2020-05-21T11:02:30.311000+00:00", + "time": 965, + "request": { + "method": "POST", + "url": "http://trcc-api-service/tapping/state", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "X-Forwarded-Host", + "value": "trcc.stg.testr.io" + }, + { + "name": "X-Forwarded-Port", + "value": "443" + }, + { + "name": "Accept-Encoding", + "value": "gzip, deflate" + }, + { + "name": "X-Request-Id", + "value": "3277ad74a69a87131f009020dc21e38c" + }, + { + "name": "X-Real-Ip", + "value": "10.132.0.34" + }, + { + "name": "X-Forwarded-For", + "value": "10.132.0.34" + }, + { + "name": "X-Forwarded-Proto", + "value": "https" + }, + { + "name": "X-Scheme", + "value": "https" + }, + { + "name": "Accept", + "value": "*/*" + }, + { + "name": "Authorization", + "value": "Bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJqSEZ0R1dybjJpY084VnpDYXpaZWUyakpFc2drY1k5ZzhpN2FTbGtielRnIn0.eyJleHAiOjE1OTAwNTkxNTksImlhdCI6MTU5MDA1ODg1OSwianRpIjoiODM1OTZhNTgtNTRhOC00MDVmLTg1YjQtZTRhNDhlNjYwNTdjIiwiaXNzIjoiaHR0cHM6Ly9hdXRoLnN0Zy50ZXN0ci5pby9hdXRoL3JlYWxtcy90ZXN0ciIsImF1ZCI6ImFjY291bnQiLCJzdWIiOiJkYWEzOWFmMC04MDdlLTQyZmEtOWI1ZC04Njg3NzI2OGMxZjQiLCJ0eXAiOiJCZWFyZXIiLCJhenAiOiJ1cDlJbnRlcm5hbEFnZW50Iiwic2Vzc2lvbl9zdGF0ZSI6IjlmMWNmYTgxLTk4OTUtNDliMy04OGU1LTc4MDU4MWNmMTMyOCIsImFjciI6IjEiLCJyZWFsbV9hY2Nlc3MiOnsicm9sZXMiOlsib2ZmbGluZV9hY2Nlc3MiLCJpbXBlcnNvbmF0ZUdyb3VwIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyJhY2NvdW50Ijp7InJvbGVzIjpbIm1hbmFnZS1hY2NvdW50IiwibWFuYWdlLWFjY291bnQtbGlua3MiLCJ2aWV3LXByb2ZpbGUiXX19LCJzY29wZSI6InByb2ZpbGUgZW1haWwiLCJ1cDlpbmZvIjp7ImlzSW50ZXJuYWxBZ2VudCI6dHJ1ZX0sImNsaWVudElkIjoidXA5SW50ZXJuYWxBZ2VudCIsImVtYWlsX3ZlcmlmaWVkIjpmYWxzZSwiY2xpZW50SG9zdCI6IjEwLjEzMi4wLjExIiwib3JnYW5pemF0aW9uIjoidXA5IiwicHJlZmVycmVkX3VzZXJuYW1lIjoic2VydmljZS1hY2NvdW50LXVwOWludGVybmFsYWdlbnQiLCJjbGllbnRBZGRyZXNzIjoiMTAuMTMyLjAuMTEiLCJlbWFpbCI6InNlcnZpY2UtYWNjb3VudC11cDlpbnRlcm5hbGFnZW50QHBsYWNlaG9sZGVyLm9yZyJ9.eSNalXDWVLTvJoaD-TBv9Y2TpiRmsdU-Xv7QdVycOeOeI3OeonJF65807JjruhZaPh25NwH73aqmDfYHHhPc8kG2pqVViE1pT96jv1pGvvMu_GQMOijSVgad71qnNQqS7c4MCoVHwQNPr7FymJRtQ-9cinwO5XVxDPZ94rO010CSE-CIGFRYsFqMAzGbrKRAWpZY8gKDcFjfqCeQpg17Ign99mG3HtVX2_s4Jh93-qmbnnG_XwDznDbVrXuQmVaw_yD1yiobncIdVaeJrPZCvZYscxQS4AaDTJw9eiXfBSA6PDOeoduTEBXuM6CPaJfOzegKNYS48qiYs-a3G-ewsA" + }, + { + "name": "Content-Type", + "value": "application/json" + }, + { + "name": "Content-Length", + "value": "12" + }, + { + "name": "User-Agent", + "value": "python-requests/2.23.0" + }, + { + "name": ":method", + "value": "POST" + }, + { + "name": ":path", + "value": "/tapping/state" + }, + { + "name": ":authority", + "value": "trcc.stg.testr.io" + }, + { + "name": ":scheme", + "value": "http" + }, + { + "name": "x-request-start", + "value": "1590058950.311" + }, + { + "name": "x-up9-source", + "value": "10.48.1.44" + }, + { + "name": "x-up9-destination", + "value": "10.48.0.155:5000" + } + ], + "queryString": [], + "headersSize": -1, + "bodySize": -1, + "postData": { + "mimeType": "", + "text": "{\"data\": []}" + } + }, + "response": { + "status": 404, + "statusText": "Not Found", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "Access-Control-Allow-Credentials", + "value": "true" + }, + { + "name": "Vary", + "value": "Origin" + }, + { + "name": "Server", + "value": "gunicorn/19.9.0" + }, + { + "name": "Date", + "value": "Thu, 21 May 2020 11:02:30 GMT" + }, + { + "name": "Connection", + "value": "keep-alive" + }, + { + "name": "Content-Type", + "value": "application/json" + }, + { + "name": "Content-Length", + "value": "150" + }, + { + "name": "Access-Control-Allow-Origin", + "value": "http://localhost:3000" + }, + { + "name": ":status", + "value": "404" + }, + { + "name": "duration_ms", + "value": "965" + } + ], + "content": { + "size": 150, + "mimeType": "", + "text": "{\"message\":\"404 Not Found: The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again.\"}\n" + }, + "redirectURL": "", + "headersSize": -1, + "bodySize": 150 + }, + "cache": {}, + "timings": { + "send": -1, + "wait": -1, + "receive": 965 + } + }, + { + "startedDateTime": "2020-05-21T11:02:31.275000+00:00", + "time": 1, + "request": { + "method": "GET", + "url": "http://trcc-api-service/models/liraz_test_2105/suites/all/runs", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "Sec-Fetch-Site", + "value": "cross-site" + }, + { + "name": "Accept-Encoding", + "value": "gzip, deflate, br" + }, + { + "name": "Accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "User-Agent", + "value": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36" + }, + { + "name": "Sec-Fetch-Mode", + "value": "cors" + }, + { + "name": "Referer", + "value": "http://localhost:3000/someOrgId123/model/liraz_test_2105/lastResults/systems/all/summary" + }, + { + "name": "X-Real-Ip", + "value": "10.132.0.22" + }, + { + "name": "X-Forwarded-For", + "value": "10.132.0.22" + }, + { + "name": "X-Forwarded-Port", + "value": "443" + }, + { + "name": "Origin", + "value": "http://localhost:3000" + }, + { + "name": "X-Request-Id", + "value": "488c685e0ec286ea783e50e43d8a2dd0" + }, + { + "name": "X-Forwarded-Host", + "value": "trcc.stg.testr.io" + }, + { + "name": "Authorization", + "value": "bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJqSEZ0R1dybjJpY084VnpDYXpaZWUyakpFc2drY1k5ZzhpN2FTbGtielRnIn0.eyJleHAiOjE1OTAwNTkxMTQsImlhdCI6MTU5MDA1ODgxNCwiYXV0aF90aW1lIjoxNTg5OTU4NDcwLCJqdGkiOiIyNzgxOTYyMy00Yjk5LTQ2MzQtOWZlNi02ZDRiNzYwNGU2ZmMiLCJpc3MiOiJodHRwczovL2F1dGguc3RnLnRlc3RyLmlvL2F1dGgvcmVhbG1zL3Rlc3RyIiwiYXVkIjoiYWNjb3VudCIsInN1YiI6ImU4NzAxMDZjLWJjYjItNDQxMy05Y2Q2LTUwMTZiNTUxMDRlYiIsInR5cCI6IkJlYXJlciIsImF6cCI6InJlYWN0LWNsaWVudCIsIm5vbmNlIjoiYzJiZTgwNGYtZjBiYS00ZWUxLTgyZWQtYmIzMTY5ZDBkYjU1Iiwic2Vzc2lvbl9zdGF0ZSI6IjM2ZDc2MDAxLTE5M2EtNGQ5OS05MTIwLTZmNGZkMjEwZDAxMiIsImFjciI6IjAiLCJhbGxvd2VkLW9yaWdpbnMiOlsiaHR0cHM6Ly9zdGcudGVzdHIuaW8iLCJjaHJvbWUtZXh0ZW5zaW9uOi8vbmFkZ2VsamVtbWJna2xkaGNwYWZqbXBtYXBpcGdsY20iLCJodHRwOi8vbG9jYWxob3N0OjMwMDAiXSwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm1hbmFnZUZlYXR1cmVGbGFncyIsIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyJhY2NvdW50Ijp7InJvbGVzIjpbIm1hbmFnZS1hY2NvdW50IiwibWFuYWdlLWFjY291bnQtbGlua3MiLCJ2aWV3LXByb2ZpbGUiXX19LCJzY29wZSI6Im9wZW5pZCBwcm9maWxlIGVtYWlsIiwiZ3JvdXBfbWVtYmVyc2hpcCI6WyJzb21lT3JnSWQxMjMiXSwiZW1haWxfdmVyaWZpZWQiOnRydWUsIm5hbWUiOiJMaXJheiBZZWhlemtlbCIsInByZWZlcnJlZF91c2VybmFtZSI6ImxpcmF6eUB1cDkuY29tIiwiZ2l2ZW5fbmFtZSI6IkxpcmF6IiwiZmFtaWx5X25hbWUiOiJZZWhlemtlbCIsImdyb3VwX3N1YmRvbWFpbiI6InNvbWVPcmdJZDEyMyIsImVtYWlsIjoibGlyYXp5QHVwOS5jb20iLCJmZWF0dXJlRmxhZ3MiOnsiZWRpdEVuZHBvaW50VmFyaWFibGVzIjp0cnVlLCJzaWRlTmF2aWdhdGlvbiI6dHJ1ZX19.KdLz7jeIr8HaST4FpJROrg6Sp-o1Nl5dU2hIbNCA0FEY-jmaoubiOlz6p7QthTJ8t-S0R_qdZtd7rXf249L6wGG_A6rriZhH41Fxhyrb0ig8OVrQp-sepv_AUf7GEIGYgpYIPFnZ6G3Dkq1aY9NzLXruh7fly_ZRkRlzF_wb1vt5NRJz3xeMrj82BOJJmUpv08AYYQhnyjKiBp7rgrNTTBejaFBozsJgXGkIi-DZfv862tgFhvPNuXsqKO5iOxv9nApuQJ2O4knVB1ag7tqB1xQcvBdkZt9gG1VVkpWsM_2j5C9cBwOuPRgHZhpZuT_YNfB4ITefGV1aYfRF-cjnug" + }, + { + "name": "Accept-Language", + "value": "en-US,en;q=0.9" + }, + { + "name": "X-Forwarded-Proto", + "value": "https" + }, + { + "name": "X-Scheme", + "value": "https" + }, + { + "name": "Sec-Fetch-Dest", + "value": "empty" + }, + { + "name": ":method", + "value": "GET" + }, + { + "name": ":path", + "value": "/models/liraz_test_2105/suites/all/runs" + }, + { + "name": ":authority", + "value": "trcc.stg.testr.io" + }, + { + "name": ":scheme", + "value": "http" + }, + { + "name": "x-request-start", + "value": "1590058951.275" + }, + { + "name": "x-up9-source", + "value": "10.48.1.44" + }, + { + "name": "x-up9-destination", + "value": "10.48.0.155:5000" + } + ], + "queryString": [], + "headersSize": -1, + "bodySize": -1 + }, + "response": { + "status": 200, + "statusText": "OK", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "Access-Control-Allow-Headers", + "value": "authorization" + }, + { + "name": "Access-Control-Allow-Methods", + "value": "DELETE, GET, HEAD, OPTIONS, PATCH, POST, PUT" + }, + { + "name": "Date", + "value": "Thu, 21 May 2020 11:02:30 GMT" + }, + { + "name": "Content-Type", + "value": "text/html; charset=utf-8" + }, + { + "name": "Allow", + "value": "GET, HEAD, OPTIONS" + }, + { + "name": "Access-Control-Allow-Credentials", + "value": "true" + }, + { + "name": "Vary", + "value": "Origin" + }, + { + "name": "Content-Length", + "value": "0" + }, + { + "name": "Server", + "value": "gunicorn/19.9.0" + }, + { + "name": "Connection", + "value": "keep-alive" + }, + { + "name": "Access-Control-Allow-Origin", + "value": "https://stg.testr.io" + }, + { + "name": ":status", + "value": "200" + }, + { + "name": "duration_ms", + "value": "1" + } + ], + "content": { + "size": 0, + "mimeType": "", + "text": "", + "encoding": "base64" + }, + "redirectURL": "", + "headersSize": -1, + "bodySize": 0 + }, + "cache": {}, + "timings": { + "send": -1, + "wait": -1, + "receive": 1 + } + }, + { + "startedDateTime": "2020-05-21T11:02:31.275000+00:00", + "time": 1, + "request": { + "method": "GET", + "url": "http://trcc-api-service/models/liraz_test_2105/status", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "X-Forwarded-For", + "value": "10.132.0.22" + }, + { + "name": "X-Forwarded-Host", + "value": "trcc.stg.testr.io" + }, + { + "name": "X-Forwarded-Proto", + "value": "https" + }, + { + "name": "Pragma", + "value": "no-cache" + }, + { + "name": "Accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "Authorization", + "value": "bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJqSEZ0R1dybjJpY084VnpDYXpaZWUyakpFc2drY1k5ZzhpN2FTbGtielRnIn0.eyJleHAiOjE1OTAwNTkxNzgsImlhdCI6MTU5MDA1ODg3OCwiYXV0aF90aW1lIjoxNTg5OTU4NDcwLCJqdGkiOiJhMjJjMDZlMy04NzEyLTQ5N2YtYTJhOC04MjJjMzE5N2U4ZWMiLCJpc3MiOiJodHRwczovL2F1dGguc3RnLnRlc3RyLmlvL2F1dGgvcmVhbG1zL3Rlc3RyIiwiYXVkIjoiYWNjb3VudCIsInN1YiI6ImU4NzAxMDZjLWJjYjItNDQxMy05Y2Q2LTUwMTZiNTUxMDRlYiIsInR5cCI6IkJlYXJlciIsImF6cCI6InJlYWN0LWNsaWVudCIsIm5vbmNlIjoiNGZjNmQyZDEtNTEyZC00OThjLTgyODktNWY0NmMyOTZmZThkIiwic2Vzc2lvbl9zdGF0ZSI6IjM2ZDc2MDAxLTE5M2EtNGQ5OS05MTIwLTZmNGZkMjEwZDAxMiIsImFjciI6IjAiLCJhbGxvd2VkLW9yaWdpbnMiOlsiaHR0cHM6Ly9zdGcudGVzdHIuaW8iLCJjaHJvbWUtZXh0ZW5zaW9uOi8vbmFkZ2VsamVtbWJna2xkaGNwYWZqbXBtYXBpcGdsY20iLCJodHRwOi8vbG9jYWxob3N0OjMwMDAiXSwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm1hbmFnZUZlYXR1cmVGbGFncyIsIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyJhY2NvdW50Ijp7InJvbGVzIjpbIm1hbmFnZS1hY2NvdW50IiwibWFuYWdlLWFjY291bnQtbGlua3MiLCJ2aWV3LXByb2ZpbGUiXX19LCJzY29wZSI6Im9wZW5pZCBwcm9maWxlIGVtYWlsIiwiZ3JvdXBfbWVtYmVyc2hpcCI6WyJzb21lT3JnSWQxMjMiXSwiZW1haWxfdmVyaWZpZWQiOnRydWUsIm5hbWUiOiJMaXJheiBZZWhlemtlbCIsInByZWZlcnJlZF91c2VybmFtZSI6ImxpcmF6eUB1cDkuY29tIiwiZ2l2ZW5fbmFtZSI6IkxpcmF6IiwiZmFtaWx5X25hbWUiOiJZZWhlemtlbCIsImdyb3VwX3N1YmRvbWFpbiI6InNvbWVPcmdJZDEyMyIsImVtYWlsIjoibGlyYXp5QHVwOS5jb20iLCJmZWF0dXJlRmxhZ3MiOnsiZWRpdEVuZHBvaW50VmFyaWFibGVzIjp0cnVlLCJzaWRlTmF2aWdhdGlvbiI6dHJ1ZX19.apGJm4z9B_-wnlHtzLZa159JugfYQ6eNVIW7Gy6yw7Hu0fBYxYufwphMsxds9-miNBh3p8_El7vF2hfStYPsPFjtV8recjKaFzhXc-G1WkBVn14vLz5NUeIkpJpfMX6tTN5WkHdJeiMIZs9ASNA-VeYrrMqZgPONrslMS_DDmDHVtUna-6ETfBnVcmWwXG80OhzCgoagG7p2mlEA9acKm4SEfosRjb4GTerXeRx9NXQ0JdXts-x2ctem_t3DoDcgPhL1gbkfDuvNmOZ6GBNmZGB0glfiuMbanuZufoHQ9uLVE6Wgm3CVTCrAfCcQjee0LOB6GsyfR2OI7kuHyAKasA" + }, + { + "name": "Origin", + "value": "https://stg.testr.io" + }, + { + "name": "Sec-Fetch-Dest", + "value": "empty" + }, + { + "name": "Referer", + "value": "https://stg.testr.io/someOrgId123/model/liraz_test_2105/lastResults/systems" + }, + { + "name": "Accept-Language", + "value": "en-US,en;q=0.9" + }, + { + "name": "X-Forwarded-Port", + "value": "443" + }, + { + "name": "Sec-Fetch-Site", + "value": "same-site" + }, + { + "name": "Accept-Encoding", + "value": "gzip, deflate, br" + }, + { + "name": "X-Scheme", + "value": "https" + }, + { + "name": "X-Request-Id", + "value": "610a02ab3d43de13eaf9f69d2be8dd11" + }, + { + "name": "X-Real-Ip", + "value": "10.132.0.22" + }, + { + "name": "Cache-Control", + "value": "no-cache" + }, + { + "name": "User-Agent", + "value": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36" + }, + { + "name": "Sec-Fetch-Mode", + "value": "cors" + }, + { + "name": ":method", + "value": "GET" + }, + { + "name": ":path", + "value": "/models/liraz_test_2105/status" + }, + { + "name": ":authority", + "value": "trcc.stg.testr.io" + }, + { + "name": ":scheme", + "value": "http" + }, + { + "name": "x-request-start", + "value": "1590058951.275" + }, + { + "name": "x-up9-source", + "value": "10.48.1.44" + }, + { + "name": "x-up9-destination", + "value": "10.48.0.155:5000" + } + ], + "queryString": [], + "headersSize": -1, + "bodySize": -1 + }, + "response": { + "status": 200, + "statusText": "OK", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "Server", + "value": "gunicorn/19.9.0" + }, + { + "name": "Date", + "value": "Thu, 21 May 2020 11:02:30 GMT" + }, + { + "name": "Connection", + "value": "keep-alive" + }, + { + "name": "Content-Type", + "value": "application/json" + }, + { + "name": "Content-Length", + "value": "3" + }, + { + "name": "Access-Control-Allow-Origin", + "value": "http://localhost:3000" + }, + { + "name": "Access-Control-Allow-Credentials", + "value": "true" + }, + { + "name": "Vary", + "value": "Origin" + }, + { + "name": ":status", + "value": "200" + }, + { + "name": "duration_ms", + "value": "1" + } + ], + "content": { + "size": 3, + "mimeType": "", + "text": "[]\n" + }, + "redirectURL": "", + "headersSize": -1, + "bodySize": 3 + }, + "cache": {}, + "timings": { + "send": -1, + "wait": -1, + "receive": 1 + } + }, + { + "startedDateTime": "2020-05-21T11:02:31.275000+00:00", + "time": 1, + "request": { + "method": "GET", + "url": "http://trcc-api-service/models/aws_kong5/suites/all/runs", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "Sec-Fetch-Site", + "value": "same-site" + }, + { + "name": "Accept-Encoding", + "value": "gzip, deflate, br" + }, + { + "name": "X-Request-Id", + "value": "d289483dec1b031d711efc28ebe750e4" + }, + { + "name": "X-Forwarded-For", + "value": "10.132.0.11" + }, + { + "name": "X-Scheme", + "value": "https" + }, + { + "name": "Origin", + "value": "https://stg.testr.io" + }, + { + "name": "Accept-Language", + "value": "en-IL,en-US;q=0.9,en;q=0.8,he;q=0.7,pl;q=0.6,ru;q=0.5" + }, + { + "name": "Authorization", + "value": "bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJqSEZ0R1dybjJpY084VnpDYXpaZWUyakpFc2drY1k5ZzhpN2FTbGtielRnIn0.eyJleHAiOjE1OTAwNTkyNDMsImlhdCI6MTU5MDA1ODk0MywiYXV0aF90aW1lIjoxNTkwMDU4NjUxLCJqdGkiOiI1ODYzNmRiMy0wN2IxLTQ2ZDYtOGNiNS01MzEzMDFlZGY4MGYiLCJpc3MiOiJodHRwczovL2F1dGguc3RnLnRlc3RyLmlvL2F1dGgvcmVhbG1zL3Rlc3RyIiwiYXVkIjoiYWNjb3VudCIsInN1YiI6IjBlYWU4ZmFjLTgyYTEtNDUwNi05MWQ0LTA4ZDYxZTI2NWY1NCIsInR5cCI6IkJlYXJlciIsImF6cCI6InJlYWN0LWNsaWVudCIsIm5vbmNlIjoiNTRjMTM5OTktMDg0NS00OWNmLWI1OTAtOTY1ZThjNWI0NmJlIiwic2Vzc2lvbl9zdGF0ZSI6ImY3YjEyOTM1LThmMTctNDc1Zi04NmRhLWQ4NjFjZTYxNWZjNyIsImFjciI6IjAiLCJhbGxvd2VkLW9yaWdpbnMiOlsiaHR0cHM6Ly9zdGcudGVzdHIuaW8iLCJjaHJvbWUtZXh0ZW5zaW9uOi8vbmFkZ2VsamVtbWJna2xkaGNwYWZqbXBtYXBpcGdsY20iLCJodHRwOi8vbG9jYWxob3N0OjMwMDAiXSwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyJhY2NvdW50Ijp7InJvbGVzIjpbIm1hbmFnZS1hY2NvdW50IiwibWFuYWdlLWFjY291bnQtbGlua3MiLCJ2aWV3LXByb2ZpbGUiXX19LCJzY29wZSI6Im9wZW5pZCBwcm9maWxlIGVtYWlsIiwiZ3JvdXBfbWVtYmVyc2hpcCI6WyJzb21lT3JnSWQxMjMiXSwiZW1haWxfdmVyaWZpZWQiOnRydWUsIm5hbWUiOiJSYW1pIEJlcm1hbiIsInByZWZlcnJlZF91c2VybmFtZSI6InJhbWkuYmVybWFuQHVwOS5jb20iLCJnaXZlbl9uYW1lIjoiUmFtaSIsImZhbWlseV9uYW1lIjoiQmVybWFuIiwiZ3JvdXBfc3ViZG9tYWluIjoic29tZU9yZ0lkMTIzIiwiZW1haWwiOiJyYW1pLmJlcm1hbkB1cDkuY29tIiwiZmVhdHVyZUZsYWdzIjp7ImVkaXRFbmRwb2ludFZhcmlhYmxlcyI6dHJ1ZSwic2lkZU5hdmlnYXRpb24iOnRydWV9fQ.UEDsnoo9A8CbdIYKXoOrAAq6y2K7Aoqf-PplHhXFoVep9ewwA9qBjXqgn0fK9cnE_KfZKUcX_cy1HDhhdIfR_aHpbWWhQ3gxISkE6ALka18JIrUv7bFaHKio6eEP6tgn34QVP8aQVEB3e3g7h3dLuUvZ1xIMnt6fy03tD3KgiQlvdHwg5FhJLosiCrHgboEqN5VH_f_2QF33XiXTkDG1e-AOEnIIWqloMDTUPZEUvEo_KH68lB0Uu23YhhI5gPAuKQVb_UjFWcF_6Ysvk3C3j0cuk09DZ7YEI1u-bKp58LHnsS6gqNFQxy-CDlZ8Oht5d2I3LbwZZxHzMixzzFzJCA" + }, + { + "name": "User-Agent", + "value": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36" + }, + { + "name": "Sec-Fetch-Mode", + "value": "cors" + }, + { + "name": "X-Forwarded-Host", + "value": "trcc.stg.testr.io" + }, + { + "name": "X-Forwarded-Port", + "value": "443" + }, + { + "name": "Sec-Fetch-Dest", + "value": "empty" + }, + { + "name": "Referer", + "value": "https://stg.testr.io/someOrgId123/model/aws_kong5/lastResults/systems/all/runs" + }, + { + "name": "X-Real-Ip", + "value": "10.132.0.11" + }, + { + "name": "X-Forwarded-Proto", + "value": "https" + }, + { + "name": "Accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "Dnt", + "value": "1" + }, + { + "name": ":method", + "value": "GET" + }, + { + "name": ":path", + "value": "/models/aws_kong5/suites/all/runs" + }, + { + "name": ":authority", + "value": "trcc.stg.testr.io" + }, + { + "name": ":scheme", + "value": "http" + }, + { + "name": "x-request-start", + "value": "1590058951.275" + }, + { + "name": "x-up9-source", + "value": "10.48.1.44" + }, + { + "name": "x-up9-destination", + "value": "10.48.0.155:5000" + } + ], + "queryString": [], + "headersSize": -1, + "bodySize": -1 + }, + "response": { + "status": 200, + "statusText": "OK", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "Date", + "value": "Thu, 21 May 2020 11:02:30 GMT" + }, + { + "name": "Connection", + "value": "keep-alive" + }, + { + "name": "Content-Type", + "value": "application/json" + }, + { + "name": "Content-Length", + "value": "96" + }, + { + "name": "Access-Control-Allow-Origin", + "value": "https://stg.testr.io" + }, + { + "name": "Access-Control-Allow-Credentials", + "value": "true" + }, + { + "name": "Vary", + "value": "Origin" + }, + { + "name": "Server", + "value": "gunicorn/19.9.0" + }, + { + "name": ":status", + "value": "200" + }, + { + "name": "duration_ms", + "value": "1" + } + ], + "content": { + "size": 96, + "mimeType": "", + "text": "{\"errorCount\":0,\"lastMajorGeneration\":1590058047.468,\"lastSuccessfulGeneration\":1590058331.782}\n" + }, + "redirectURL": "", + "headersSize": -1, + "bodySize": 96 + }, + "cache": {}, + "timings": { + "send": -1, + "wait": -1, + "receive": 1 + } + }, + { + "startedDateTime": "2020-05-21T11:02:31.276000+00:00", + "time": 1, + "request": { + "method": "GET", + "url": "http://trcc-api-service/models/sy-trcc-dogfood-10/blacklist", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "X-Request-Id", + "value": "eb30f27f793e65fe3748d1fde6a3811b" + }, + { + "name": "X-Forwarded-For", + "value": "10.132.0.85" + }, + { + "name": "X-Forwarded-Port", + "value": "443" + }, + { + "name": "X-Forwarded-Proto", + "value": "https" + }, + { + "name": "X-Scheme", + "value": "https" + }, + { + "name": "Accept-Encoding", + "value": "gzip, deflate" + }, + { + "name": "X-Forwarded-Host", + "value": "trcc.stg.testr.io" + }, + { + "name": "User-Agent", + "value": "python-requests/2.23.0" + }, + { + "name": "Accept", + "value": "*/*" + }, + { + "name": "Authorization", + "value": "Bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJqSEZ0R1dybjJpY084VnpDYXpaZWUyakpFc2drY1k5ZzhpN2FTbGtielRnIn0.eyJleHAiOjE1OTAwNTkxMzUsImlhdCI6MTU5MDA1ODgzNSwianRpIjoiNjNiMWU3ODgtMmI3MC00ZDY0LTk1NDEtNTdmYzVmMTY3ZDg1IiwiaXNzIjoiaHR0cHM6Ly9hdXRoLnN0Zy50ZXN0ci5pby9hdXRoL3JlYWxtcy90ZXN0ciIsImF1ZCI6ImFjY291bnQiLCJzdWIiOiI0YWFkZWM0Mi01OWE5LTRmZDUtODI3NC1lZWI5NDNmODQyNmUiLCJ0eXAiOiJCZWFyZXIiLCJhenAiOiIzWjE5LTNzYnN2MU9KSDBEd2l2UWkyYmZVSzdsSlNFdSIsInNlc3Npb25fc3RhdGUiOiJkOTA0NjBhOC05NjBmLTRjZTYtYjczMS1hNGEwMDQ2ZTk2MzQiLCJhY3IiOiIxIiwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyJhY2NvdW50Ijp7InJvbGVzIjpbIm1hbmFnZS1hY2NvdW50IiwibWFuYWdlLWFjY291bnQtbGlua3MiLCJ2aWV3LXByb2ZpbGUiXX19LCJzY29wZSI6InByb2ZpbGUgZW1haWwiLCJjbGllbnRJZCI6IjNaMTktM3Nic3YxT0pIMER3aXZRaTJiZlVLN2xKU0V1IiwiY2xpZW50SG9zdCI6IjEwLjEzMi4wLjMwIiwiZW1haWxfdmVyaWZpZWQiOmZhbHNlLCJvcmdhbml6YXRpb24iOiJzb21lT3JnSWQxMjMiLCJwcmVmZXJyZWRfdXNlcm5hbWUiOiJzZXJ2aWNlLWFjY291bnQtM3oxOS0zc2JzdjFvamgwZHdpdnFpMmJmdWs3bGpzZXUiLCJjbGllbnRBZGRyZXNzIjoiMTAuMTMyLjAuMzAiLCJlbWFpbCI6InNlcnZpY2UtYWNjb3VudC0zejE5LTNzYnN2MW9qaDBkd2l2cWkyYmZ1azdsanNldUBwbGFjZWhvbGRlci5vcmcifQ.NbnASo0pxkWkTTA8IP3BGVX__bw97K9EDfG4eGHg9QVb14Dfwh4TCvjoL2lxj3v_32hHcHWU6BL2rlztd1gSeheVR_XN39Q8_DkU3CWDuI05ndqPs5BuXu5sJ0KsfJP1lR-GOB_na0HHImLNWdNVQanTmFIsyWPAVcISirIfwhRhei5d730-JXiASbF2lnNOyvnGvFEj2NtgQjF5PZwG_7Qici7Mq-PE5z6LX9t6xuWVqPnryHGQLgl3EPBkWyzdA0UhG0nIitW5xKNdCq3wo9fwAigW7QNLdqjrrWGVglDnp6olg_eF915mbyWtnYXq3vFZpbhXKH0NEYD5gjkTRw" + }, + { + "name": "X-Real-Ip", + "value": "10.132.0.85" + }, + { + "name": ":method", + "value": "GET" + }, + { + "name": ":path", + "value": "/models/sy-trcc-dogfood-10/blacklist" + }, + { + "name": ":authority", + "value": "trcc.stg.testr.io" + }, + { + "name": ":scheme", + "value": "http" + }, + { + "name": "x-request-start", + "value": "1590058951.276" + }, + { + "name": "x-up9-source", + "value": "10.48.1.44" + }, + { + "name": "x-up9-destination", + "value": "10.48.0.155:5000" + } + ], + "queryString": [], + "headersSize": -1, + "bodySize": -1 + }, + "response": { + "status": 200, + "statusText": "OK", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "Content-Length", + "value": "3" + }, + { + "name": "Access-Control-Allow-Origin", + "value": "https://stg.testr.io" + }, + { + "name": "Access-Control-Allow-Credentials", + "value": "true" + }, + { + "name": "Vary", + "value": "Origin" + }, + { + "name": "Server", + "value": "gunicorn/19.9.0" + }, + { + "name": "Date", + "value": "Thu, 21 May 2020 11:02:30 GMT" + }, + { + "name": "Connection", + "value": "keep-alive" + }, + { + "name": "Content-Type", + "value": "application/json" + }, + { + "name": ":status", + "value": "200" + }, + { + "name": "duration_ms", + "value": "1" + } + ], + "content": { + "size": 3, + "mimeType": "", + "text": "[]\n" + }, + "redirectURL": "", + "headersSize": -1, + "bodySize": 3 + }, + "cache": {}, + "timings": { + "send": -1, + "wait": -1, + "receive": 1 + } + }, + { + "startedDateTime": "2020-05-21T11:02:31.276000+00:00", + "time": 1, + "request": { + "method": "GET", + "url": "http://trcc-api-service/models/aws_kong5/suites/all/runs", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "X-Real-Ip", + "value": "10.132.0.11" + }, + { + "name": "X-Forwarded-Proto", + "value": "https" + }, + { + "name": "Sec-Fetch-Mode", + "value": "cors" + }, + { + "name": "Referer", + "value": "https://stg.testr.io/someOrgId123/model/aws_kong5/lastResults/systems/all/runs" + }, + { + "name": "Accept-Language", + "value": "en-IL,en-US;q=0.9,en;q=0.8,he;q=0.7,pl;q=0.6,ru;q=0.5" + }, + { + "name": "X-Scheme", + "value": "https" + }, + { + "name": "Accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "Dnt", + "value": "1" + }, + { + "name": "Sec-Fetch-Site", + "value": "same-site" + }, + { + "name": "Accept-Encoding", + "value": "gzip, deflate, br" + }, + { + "name": "X-Request-Id", + "value": "85d969e65ef67dee386fcbd26e07f585" + }, + { + "name": "X-Forwarded-For", + "value": "10.132.0.11" + }, + { + "name": "Authorization", + "value": "bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJqSEZ0R1dybjJpY084VnpDYXpaZWUyakpFc2drY1k5ZzhpN2FTbGtielRnIn0.eyJleHAiOjE1OTAwNTkyNDMsImlhdCI6MTU5MDA1ODk0MywiYXV0aF90aW1lIjoxNTkwMDU4NjUxLCJqdGkiOiI1ODYzNmRiMy0wN2IxLTQ2ZDYtOGNiNS01MzEzMDFlZGY4MGYiLCJpc3MiOiJodHRwczovL2F1dGguc3RnLnRlc3RyLmlvL2F1dGgvcmVhbG1zL3Rlc3RyIiwiYXVkIjoiYWNjb3VudCIsInN1YiI6IjBlYWU4ZmFjLTgyYTEtNDUwNi05MWQ0LTA4ZDYxZTI2NWY1NCIsInR5cCI6IkJlYXJlciIsImF6cCI6InJlYWN0LWNsaWVudCIsIm5vbmNlIjoiNTRjMTM5OTktMDg0NS00OWNmLWI1OTAtOTY1ZThjNWI0NmJlIiwic2Vzc2lvbl9zdGF0ZSI6ImY3YjEyOTM1LThmMTctNDc1Zi04NmRhLWQ4NjFjZTYxNWZjNyIsImFjciI6IjAiLCJhbGxvd2VkLW9yaWdpbnMiOlsiaHR0cHM6Ly9zdGcudGVzdHIuaW8iLCJjaHJvbWUtZXh0ZW5zaW9uOi8vbmFkZ2VsamVtbWJna2xkaGNwYWZqbXBtYXBpcGdsY20iLCJodHRwOi8vbG9jYWxob3N0OjMwMDAiXSwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyJhY2NvdW50Ijp7InJvbGVzIjpbIm1hbmFnZS1hY2NvdW50IiwibWFuYWdlLWFjY291bnQtbGlua3MiLCJ2aWV3LXByb2ZpbGUiXX19LCJzY29wZSI6Im9wZW5pZCBwcm9maWxlIGVtYWlsIiwiZ3JvdXBfbWVtYmVyc2hpcCI6WyJzb21lT3JnSWQxMjMiXSwiZW1haWxfdmVyaWZpZWQiOnRydWUsIm5hbWUiOiJSYW1pIEJlcm1hbiIsInByZWZlcnJlZF91c2VybmFtZSI6InJhbWkuYmVybWFuQHVwOS5jb20iLCJnaXZlbl9uYW1lIjoiUmFtaSIsImZhbWlseV9uYW1lIjoiQmVybWFuIiwiZ3JvdXBfc3ViZG9tYWluIjoic29tZU9yZ0lkMTIzIiwiZW1haWwiOiJyYW1pLmJlcm1hbkB1cDkuY29tIiwiZmVhdHVyZUZsYWdzIjp7ImVkaXRFbmRwb2ludFZhcmlhYmxlcyI6dHJ1ZSwic2lkZU5hdmlnYXRpb24iOnRydWV9fQ.UEDsnoo9A8CbdIYKXoOrAAq6y2K7Aoqf-PplHhXFoVep9ewwA9qBjXqgn0fK9cnE_KfZKUcX_cy1HDhhdIfR_aHpbWWhQ3gxISkE6ALka18JIrUv7bFaHKio6eEP6tgn34QVP8aQVEB3e3g7h3dLuUvZ1xIMnt6fy03tD3KgiQlvdHwg5FhJLosiCrHgboEqN5VH_f_2QF33XiXTkDG1e-AOEnIIWqloMDTUPZEUvEo_KH68lB0Uu23YhhI5gPAuKQVb_UjFWcF_6Ysvk3C3j0cuk09DZ7YEI1u-bKp58LHnsS6gqNFQxy-CDlZ8Oht5d2I3LbwZZxHzMixzzFzJCA" + }, + { + "name": "User-Agent", + "value": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36" + }, + { + "name": "Sec-Fetch-Dest", + "value": "empty" + }, + { + "name": "X-Forwarded-Host", + "value": "trcc.stg.testr.io" + }, + { + "name": "X-Forwarded-Port", + "value": "443" + }, + { + "name": "Origin", + "value": "https://stg.testr.io" + }, + { + "name": ":method", + "value": "GET" + }, + { + "name": ":path", + "value": "/models/aws_kong5/suites/all/runs" + }, + { + "name": ":authority", + "value": "trcc.stg.testr.io" + }, + { + "name": ":scheme", + "value": "http" + }, + { + "name": "x-request-start", + "value": "1590058951.276" + }, + { + "name": "x-up9-source", + "value": "10.48.1.44" + }, + { + "name": "x-up9-destination", + "value": "10.48.0.155:5000" + } + ], + "queryString": [], + "headersSize": -1, + "bodySize": -1 + }, + "response": { + "status": 200, + "statusText": "OK", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "Access-Control-Allow-Origin", + "value": "http://localhost:3000" + }, + { + "name": "Access-Control-Allow-Credentials", + "value": "true" + }, + { + "name": "Vary", + "value": "Origin" + }, + { + "name": "Server", + "value": "gunicorn/19.9.0" + }, + { + "name": "Date", + "value": "Thu, 21 May 2020 11:02:30 GMT" + }, + { + "name": "Connection", + "value": "keep-alive" + }, + { + "name": "Content-Type", + "value": "application/json" + }, + { + "name": "Content-Length", + "value": "3" + }, + { + "name": ":status", + "value": "200" + }, + { + "name": "duration_ms", + "value": "1" + } + ], + "content": { + "size": 3, + "mimeType": "", + "text": "[]\n" + }, + "redirectURL": "", + "headersSize": -1, + "bodySize": 3 + }, + "cache": {}, + "timings": { + "send": -1, + "wait": -1, + "receive": 1 + } + }, + { + "startedDateTime": "2020-05-21T11:02:31.276000+00:00", + "time": 1, + "request": { + "method": "GET", + "url": "http://trcc-api-service/models/sy-trcc-dogfood-3/blacklist", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "Authorization", + "value": "Bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJqSEZ0R1dybjJpY084VnpDYXpaZWUyakpFc2drY1k5ZzhpN2FTbGtielRnIn0.eyJleHAiOjE1OTAwNTkxMzUsImlhdCI6MTU5MDA1ODgzNSwianRpIjoiNjNiMWU3ODgtMmI3MC00ZDY0LTk1NDEtNTdmYzVmMTY3ZDg1IiwiaXNzIjoiaHR0cHM6Ly9hdXRoLnN0Zy50ZXN0ci5pby9hdXRoL3JlYWxtcy90ZXN0ciIsImF1ZCI6ImFjY291bnQiLCJzdWIiOiI0YWFkZWM0Mi01OWE5LTRmZDUtODI3NC1lZWI5NDNmODQyNmUiLCJ0eXAiOiJCZWFyZXIiLCJhenAiOiIzWjE5LTNzYnN2MU9KSDBEd2l2UWkyYmZVSzdsSlNFdSIsInNlc3Npb25fc3RhdGUiOiJkOTA0NjBhOC05NjBmLTRjZTYtYjczMS1hNGEwMDQ2ZTk2MzQiLCJhY3IiOiIxIiwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyJhY2NvdW50Ijp7InJvbGVzIjpbIm1hbmFnZS1hY2NvdW50IiwibWFuYWdlLWFjY291bnQtbGlua3MiLCJ2aWV3LXByb2ZpbGUiXX19LCJzY29wZSI6InByb2ZpbGUgZW1haWwiLCJjbGllbnRJZCI6IjNaMTktM3Nic3YxT0pIMER3aXZRaTJiZlVLN2xKU0V1IiwiY2xpZW50SG9zdCI6IjEwLjEzMi4wLjMwIiwiZW1haWxfdmVyaWZpZWQiOmZhbHNlLCJvcmdhbml6YXRpb24iOiJzb21lT3JnSWQxMjMiLCJwcmVmZXJyZWRfdXNlcm5hbWUiOiJzZXJ2aWNlLWFjY291bnQtM3oxOS0zc2JzdjFvamgwZHdpdnFpMmJmdWs3bGpzZXUiLCJjbGllbnRBZGRyZXNzIjoiMTAuMTMyLjAuMzAiLCJlbWFpbCI6InNlcnZpY2UtYWNjb3VudC0zejE5LTNzYnN2MW9qaDBkd2l2cWkyYmZ1azdsanNldUBwbGFjZWhvbGRlci5vcmcifQ.NbnASo0pxkWkTTA8IP3BGVX__bw97K9EDfG4eGHg9QVb14Dfwh4TCvjoL2lxj3v_32hHcHWU6BL2rlztd1gSeheVR_XN39Q8_DkU3CWDuI05ndqPs5BuXu5sJ0KsfJP1lR-GOB_na0HHImLNWdNVQanTmFIsyWPAVcISirIfwhRhei5d730-JXiASbF2lnNOyvnGvFEj2NtgQjF5PZwG_7Qici7Mq-PE5z6LX9t6xuWVqPnryHGQLgl3EPBkWyzdA0UhG0nIitW5xKNdCq3wo9fwAigW7QNLdqjrrWGVglDnp6olg_eF915mbyWtnYXq3vFZpbhXKH0NEYD5gjkTRw" + }, + { + "name": "X-Request-Id", + "value": "8bbcc47de417454ca4edabd2697ee8a9" + }, + { + "name": "X-Real-Ip", + "value": "10.132.0.85" + }, + { + "name": "X-Forwarded-Host", + "value": "trcc.stg.testr.io" + }, + { + "name": "X-Forwarded-Proto", + "value": "https" + }, + { + "name": "X-Scheme", + "value": "https" + }, + { + "name": "User-Agent", + "value": "python-requests/2.23.0" + }, + { + "name": "Accept-Encoding", + "value": "gzip, deflate" + }, + { + "name": "Accept", + "value": "*/*" + }, + { + "name": "X-Forwarded-For", + "value": "10.132.0.85" + }, + { + "name": "X-Forwarded-Port", + "value": "443" + }, + { + "name": ":method", + "value": "GET" + }, + { + "name": ":path", + "value": "/models/sy-trcc-dogfood-3/blacklist" + }, + { + "name": ":authority", + "value": "trcc.stg.testr.io" + }, + { + "name": ":scheme", + "value": "http" + }, + { + "name": "x-request-start", + "value": "1590058951.276" + }, + { + "name": "x-up9-source", + "value": "10.48.1.44" + }, + { + "name": "x-up9-destination", + "value": "10.48.0.155:5000" + } + ], + "queryString": [], + "headersSize": -1, + "bodySize": -1 + }, + "response": { + "status": 200, + "statusText": "OK", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "Vary", + "value": "Origin" + }, + { + "name": "Server", + "value": "gunicorn/19.9.0" + }, + { + "name": "Date", + "value": "Thu, 21 May 2020 11:02:30 GMT" + }, + { + "name": "Connection", + "value": "keep-alive" + }, + { + "name": "Content-Type", + "value": "application/json" + }, + { + "name": "Content-Length", + "value": "3" + }, + { + "name": "Access-Control-Allow-Origin", + "value": "https://stg.testr.io" + }, + { + "name": "Access-Control-Allow-Credentials", + "value": "true" + }, + { + "name": ":status", + "value": "200" + }, + { + "name": "duration_ms", + "value": "1" + } + ], + "content": { + "size": 3, + "mimeType": "", + "text": "[]\n" + }, + "redirectURL": "", + "headersSize": -1, + "bodySize": 3 + }, + "cache": {}, + "timings": { + "send": -1, + "wait": -1, + "receive": 1 + } + }, + { + "startedDateTime": "2020-05-21T11:02:31.276000+00:00", + "time": 1, + "request": { + "method": "GET", + "url": "http://trcc-api-service/models/ag.proxy.050801/blacklist", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "X-Forwarded-Port", + "value": "443" + }, + { + "name": "X-Forwarded-Proto", + "value": "https" + }, + { + "name": "Accept-Encoding", + "value": "gzip, deflate" + }, + { + "name": "Accept", + "value": "*/*" + }, + { + "name": "Authorization", + "value": "Bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJqSEZ0R1dybjJpY084VnpDYXpaZWUyakpFc2drY1k5ZzhpN2FTbGtielRnIn0.eyJleHAiOjE1OTAwNTkxMzUsImlhdCI6MTU5MDA1ODgzNSwianRpIjoiNjNiMWU3ODgtMmI3MC00ZDY0LTk1NDEtNTdmYzVmMTY3ZDg1IiwiaXNzIjoiaHR0cHM6Ly9hdXRoLnN0Zy50ZXN0ci5pby9hdXRoL3JlYWxtcy90ZXN0ciIsImF1ZCI6ImFjY291bnQiLCJzdWIiOiI0YWFkZWM0Mi01OWE5LTRmZDUtODI3NC1lZWI5NDNmODQyNmUiLCJ0eXAiOiJCZWFyZXIiLCJhenAiOiIzWjE5LTNzYnN2MU9KSDBEd2l2UWkyYmZVSzdsSlNFdSIsInNlc3Npb25fc3RhdGUiOiJkOTA0NjBhOC05NjBmLTRjZTYtYjczMS1hNGEwMDQ2ZTk2MzQiLCJhY3IiOiIxIiwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyJhY2NvdW50Ijp7InJvbGVzIjpbIm1hbmFnZS1hY2NvdW50IiwibWFuYWdlLWFjY291bnQtbGlua3MiLCJ2aWV3LXByb2ZpbGUiXX19LCJzY29wZSI6InByb2ZpbGUgZW1haWwiLCJjbGllbnRJZCI6IjNaMTktM3Nic3YxT0pIMER3aXZRaTJiZlVLN2xKU0V1IiwiY2xpZW50SG9zdCI6IjEwLjEzMi4wLjMwIiwiZW1haWxfdmVyaWZpZWQiOmZhbHNlLCJvcmdhbml6YXRpb24iOiJzb21lT3JnSWQxMjMiLCJwcmVmZXJyZWRfdXNlcm5hbWUiOiJzZXJ2aWNlLWFjY291bnQtM3oxOS0zc2JzdjFvamgwZHdpdnFpMmJmdWs3bGpzZXUiLCJjbGllbnRBZGRyZXNzIjoiMTAuMTMyLjAuMzAiLCJlbWFpbCI6InNlcnZpY2UtYWNjb3VudC0zejE5LTNzYnN2MW9qaDBkd2l2cWkyYmZ1azdsanNldUBwbGFjZWhvbGRlci5vcmcifQ.NbnASo0pxkWkTTA8IP3BGVX__bw97K9EDfG4eGHg9QVb14Dfwh4TCvjoL2lxj3v_32hHcHWU6BL2rlztd1gSeheVR_XN39Q8_DkU3CWDuI05ndqPs5BuXu5sJ0KsfJP1lR-GOB_na0HHImLNWdNVQanTmFIsyWPAVcISirIfwhRhei5d730-JXiASbF2lnNOyvnGvFEj2NtgQjF5PZwG_7Qici7Mq-PE5z6LX9t6xuWVqPnryHGQLgl3EPBkWyzdA0UhG0nIitW5xKNdCq3wo9fwAigW7QNLdqjrrWGVglDnp6olg_eF915mbyWtnYXq3vFZpbhXKH0NEYD5gjkTRw" + }, + { + "name": "X-Forwarded-Host", + "value": "trcc.stg.testr.io" + }, + { + "name": "X-Request-Id", + "value": "73ff2232e3932fa495b023d1620d6b0e" + }, + { + "name": "X-Real-Ip", + "value": "10.132.0.85" + }, + { + "name": "X-Forwarded-For", + "value": "10.132.0.85" + }, + { + "name": "X-Scheme", + "value": "https" + }, + { + "name": "User-Agent", + "value": "python-requests/2.23.0" + }, + { + "name": ":method", + "value": "GET" + }, + { + "name": ":path", + "value": "/models/ag.proxy.050801/blacklist" + }, + { + "name": ":authority", + "value": "trcc.stg.testr.io" + }, + { + "name": ":scheme", + "value": "http" + }, + { + "name": "x-request-start", + "value": "1590058951.276" + }, + { + "name": "x-up9-source", + "value": "10.48.1.44" + }, + { + "name": "x-up9-destination", + "value": "10.48.0.155:5000" + } + ], + "queryString": [], + "headersSize": -1, + "bodySize": -1 + }, + "response": { + "status": 200, + "statusText": "OK", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "Access-Control-Allow-Origin", + "value": "http://localhost:3000" + }, + { + "name": "Access-Control-Allow-Credentials", + "value": "true" + }, + { + "name": "Vary", + "value": "Origin" + }, + { + "name": "Server", + "value": "gunicorn/19.9.0" + }, + { + "name": "Date", + "value": "Thu, 21 May 2020 11:02:30 GMT" + }, + { + "name": "Connection", + "value": "keep-alive" + }, + { + "name": "Content-Type", + "value": "application/json" + }, + { + "name": "Content-Length", + "value": "3" + }, + { + "name": ":status", + "value": "200" + }, + { + "name": "duration_ms", + "value": "1" + } + ], + "content": { + "size": 3, + "mimeType": "", + "text": "[]\n" + }, + "redirectURL": "", + "headersSize": -1, + "bodySize": 3 + }, + "cache": {}, + "timings": { + "send": -1, + "wait": -1, + "receive": 1 + } + }, + { + "startedDateTime": "2020-05-21T11:02:31.277000+00:00", + "time": 1, + "request": { + "method": "GET", + "url": "http://trcc-api-service/models/aws_kong5/suites/all/runs", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "Authorization", + "value": "bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJqSEZ0R1dybjJpY084VnpDYXpaZWUyakpFc2drY1k5ZzhpN2FTbGtielRnIn0.eyJleHAiOjE1OTAwNTkyNDMsImlhdCI6MTU5MDA1ODk0MywiYXV0aF90aW1lIjoxNTkwMDU4NjUxLCJqdGkiOiI1ODYzNmRiMy0wN2IxLTQ2ZDYtOGNiNS01MzEzMDFlZGY4MGYiLCJpc3MiOiJodHRwczovL2F1dGguc3RnLnRlc3RyLmlvL2F1dGgvcmVhbG1zL3Rlc3RyIiwiYXVkIjoiYWNjb3VudCIsInN1YiI6IjBlYWU4ZmFjLTgyYTEtNDUwNi05MWQ0LTA4ZDYxZTI2NWY1NCIsInR5cCI6IkJlYXJlciIsImF6cCI6InJlYWN0LWNsaWVudCIsIm5vbmNlIjoiNTRjMTM5OTktMDg0NS00OWNmLWI1OTAtOTY1ZThjNWI0NmJlIiwic2Vzc2lvbl9zdGF0ZSI6ImY3YjEyOTM1LThmMTctNDc1Zi04NmRhLWQ4NjFjZTYxNWZjNyIsImFjciI6IjAiLCJhbGxvd2VkLW9yaWdpbnMiOlsiaHR0cHM6Ly9zdGcudGVzdHIuaW8iLCJjaHJvbWUtZXh0ZW5zaW9uOi8vbmFkZ2VsamVtbWJna2xkaGNwYWZqbXBtYXBpcGdsY20iLCJodHRwOi8vbG9jYWxob3N0OjMwMDAiXSwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyJhY2NvdW50Ijp7InJvbGVzIjpbIm1hbmFnZS1hY2NvdW50IiwibWFuYWdlLWFjY291bnQtbGlua3MiLCJ2aWV3LXByb2ZpbGUiXX19LCJzY29wZSI6Im9wZW5pZCBwcm9maWxlIGVtYWlsIiwiZ3JvdXBfbWVtYmVyc2hpcCI6WyJzb21lT3JnSWQxMjMiXSwiZW1haWxfdmVyaWZpZWQiOnRydWUsIm5hbWUiOiJSYW1pIEJlcm1hbiIsInByZWZlcnJlZF91c2VybmFtZSI6InJhbWkuYmVybWFuQHVwOS5jb20iLCJnaXZlbl9uYW1lIjoiUmFtaSIsImZhbWlseV9uYW1lIjoiQmVybWFuIiwiZ3JvdXBfc3ViZG9tYWluIjoic29tZU9yZ0lkMTIzIiwiZW1haWwiOiJyYW1pLmJlcm1hbkB1cDkuY29tIiwiZmVhdHVyZUZsYWdzIjp7ImVkaXRFbmRwb2ludFZhcmlhYmxlcyI6dHJ1ZSwic2lkZU5hdmlnYXRpb24iOnRydWV9fQ.UEDsnoo9A8CbdIYKXoOrAAq6y2K7Aoqf-PplHhXFoVep9ewwA9qBjXqgn0fK9cnE_KfZKUcX_cy1HDhhdIfR_aHpbWWhQ3gxISkE6ALka18JIrUv7bFaHKio6eEP6tgn34QVP8aQVEB3e3g7h3dLuUvZ1xIMnt6fy03tD3KgiQlvdHwg5FhJLosiCrHgboEqN5VH_f_2QF33XiXTkDG1e-AOEnIIWqloMDTUPZEUvEo_KH68lB0Uu23YhhI5gPAuKQVb_UjFWcF_6Ysvk3C3j0cuk09DZ7YEI1u-bKp58LHnsS6gqNFQxy-CDlZ8Oht5d2I3LbwZZxHzMixzzFzJCA" + }, + { + "name": "X-Request-Id", + "value": "2ea4b9b8e8afee00998ec24e45bab89b" + }, + { + "name": "X-Forwarded-For", + "value": "10.132.0.11" + }, + { + "name": "X-Forwarded-Host", + "value": "trcc.stg.testr.io" + }, + { + "name": "X-Forwarded-Port", + "value": "443" + }, + { + "name": "X-Forwarded-Proto", + "value": "https" + }, + { + "name": "X-Scheme", + "value": "https" + }, + { + "name": "X-Real-Ip", + "value": "10.132.0.11" + }, + { + "name": "Dnt", + "value": "1" + }, + { + "name": "User-Agent", + "value": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36" + }, + { + "name": "Origin", + "value": "https://stg.testr.io" + }, + { + "name": "Accept-Language", + "value": "en-IL,en-US;q=0.9,en;q=0.8,he;q=0.7,pl;q=0.6,ru;q=0.5" + }, + { + "name": "Accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "Sec-Fetch-Mode", + "value": "cors" + }, + { + "name": "Referer", + "value": "https://stg.testr.io/someOrgId123/model/aws_kong5/lastResults/systems/all/runs" + }, + { + "name": "Sec-Fetch-Site", + "value": "same-site" + }, + { + "name": "Sec-Fetch-Dest", + "value": "empty" + }, + { + "name": "Accept-Encoding", + "value": "gzip, deflate, br" + }, + { + "name": ":method", + "value": "GET" + }, + { + "name": ":path", + "value": "/models/aws_kong5/suites/all/runs" + }, + { + "name": ":authority", + "value": "trcc.stg.testr.io" + }, + { + "name": ":scheme", + "value": "http" + }, + { + "name": "x-request-start", + "value": "1590058951.277" + }, + { + "name": "x-up9-source", + "value": "10.48.1.44" + }, + { + "name": "x-up9-destination", + "value": "10.48.0.155:5000" + } + ], + "queryString": [], + "headersSize": -1, + "bodySize": -1 + }, + "response": { + "status": 200, + "statusText": "OK", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "Vary", + "value": "Origin" + }, + { + "name": "Server", + "value": "gunicorn/19.9.0" + }, + { + "name": "Date", + "value": "Thu, 21 May 2020 11:02:30 GMT" + }, + { + "name": "Connection", + "value": "keep-alive" + }, + { + "name": "Content-Type", + "value": "application/json" + }, + { + "name": "Content-Length", + "value": "3" + }, + { + "name": "Access-Control-Allow-Origin", + "value": "http://localhost:3000" + }, + { + "name": "Access-Control-Allow-Credentials", + "value": "true" + }, + { + "name": ":status", + "value": "200" + }, + { + "name": "duration_ms", + "value": "1" + } + ], + "content": { + "size": 3, + "mimeType": "", + "text": "[]\n" + }, + "redirectURL": "", + "headersSize": -1, + "bodySize": 3 + }, + "cache": {}, + "timings": { + "send": -1, + "wait": -1, + "receive": 1 + } + }, + { + "startedDateTime": "2020-05-21T11:02:31.277000+00:00", + "time": 1, + "request": { + "method": "GET", + "url": "http://trcc-api-service/models/liraz_test_2105/suites/all/runs", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "Sec-Fetch-Mode", + "value": "cors" + }, + { + "name": "X-Real-Ip", + "value": "10.132.0.22" + }, + { + "name": "X-Forwarded-Port", + "value": "443" + }, + { + "name": "Authorization", + "value": "bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJqSEZ0R1dybjJpY084VnpDYXpaZWUyakpFc2drY1k5ZzhpN2FTbGtielRnIn0.eyJleHAiOjE1OTAwNTkxMTQsImlhdCI6MTU5MDA1ODgxNCwiYXV0aF90aW1lIjoxNTg5OTU4NDcwLCJqdGkiOiIyNzgxOTYyMy00Yjk5LTQ2MzQtOWZlNi02ZDRiNzYwNGU2ZmMiLCJpc3MiOiJodHRwczovL2F1dGguc3RnLnRlc3RyLmlvL2F1dGgvcmVhbG1zL3Rlc3RyIiwiYXVkIjoiYWNjb3VudCIsInN1YiI6ImU4NzAxMDZjLWJjYjItNDQxMy05Y2Q2LTUwMTZiNTUxMDRlYiIsInR5cCI6IkJlYXJlciIsImF6cCI6InJlYWN0LWNsaWVudCIsIm5vbmNlIjoiYzJiZTgwNGYtZjBiYS00ZWUxLTgyZWQtYmIzMTY5ZDBkYjU1Iiwic2Vzc2lvbl9zdGF0ZSI6IjM2ZDc2MDAxLTE5M2EtNGQ5OS05MTIwLTZmNGZkMjEwZDAxMiIsImFjciI6IjAiLCJhbGxvd2VkLW9yaWdpbnMiOlsiaHR0cHM6Ly9zdGcudGVzdHIuaW8iLCJjaHJvbWUtZXh0ZW5zaW9uOi8vbmFkZ2VsamVtbWJna2xkaGNwYWZqbXBtYXBpcGdsY20iLCJodHRwOi8vbG9jYWxob3N0OjMwMDAiXSwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm1hbmFnZUZlYXR1cmVGbGFncyIsIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyJhY2NvdW50Ijp7InJvbGVzIjpbIm1hbmFnZS1hY2NvdW50IiwibWFuYWdlLWFjY291bnQtbGlua3MiLCJ2aWV3LXByb2ZpbGUiXX19LCJzY29wZSI6Im9wZW5pZCBwcm9maWxlIGVtYWlsIiwiZ3JvdXBfbWVtYmVyc2hpcCI6WyJzb21lT3JnSWQxMjMiXSwiZW1haWxfdmVyaWZpZWQiOnRydWUsIm5hbWUiOiJMaXJheiBZZWhlemtlbCIsInByZWZlcnJlZF91c2VybmFtZSI6ImxpcmF6eUB1cDkuY29tIiwiZ2l2ZW5fbmFtZSI6IkxpcmF6IiwiZmFtaWx5X25hbWUiOiJZZWhlemtlbCIsImdyb3VwX3N1YmRvbWFpbiI6InNvbWVPcmdJZDEyMyIsImVtYWlsIjoibGlyYXp5QHVwOS5jb20iLCJmZWF0dXJlRmxhZ3MiOnsiZWRpdEVuZHBvaW50VmFyaWFibGVzIjp0cnVlLCJzaWRlTmF2aWdhdGlvbiI6dHJ1ZX19.KdLz7jeIr8HaST4FpJROrg6Sp-o1Nl5dU2hIbNCA0FEY-jmaoubiOlz6p7QthTJ8t-S0R_qdZtd7rXf249L6wGG_A6rriZhH41Fxhyrb0ig8OVrQp-sepv_AUf7GEIGYgpYIPFnZ6G3Dkq1aY9NzLXruh7fly_ZRkRlzF_wb1vt5NRJz3xeMrj82BOJJmUpv08AYYQhnyjKiBp7rgrNTTBejaFBozsJgXGkIi-DZfv862tgFhvPNuXsqKO5iOxv9nApuQJ2O4knVB1ag7tqB1xQcvBdkZt9gG1VVkpWsM_2j5C9cBwOuPRgHZhpZuT_YNfB4ITefGV1aYfRF-cjnug" + }, + { + "name": "User-Agent", + "value": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36" + }, + { + "name": "Origin", + "value": "http://localhost:3000" + }, + { + "name": "Sec-Fetch-Site", + "value": "cross-site" + }, + { + "name": "Sec-Fetch-Dest", + "value": "empty" + }, + { + "name": "X-Forwarded-Proto", + "value": "https" + }, + { + "name": "Accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "Referer", + "value": "http://localhost:3000/someOrgId123/model/liraz_test_2105/lastResults/systems/all/summary" + }, + { + "name": "X-Forwarded-For", + "value": "10.132.0.22" + }, + { + "name": "X-Forwarded-Host", + "value": "trcc.stg.testr.io" + }, + { + "name": "Accept-Encoding", + "value": "gzip, deflate, br" + }, + { + "name": "Accept-Language", + "value": "en-US,en;q=0.9" + }, + { + "name": "X-Request-Id", + "value": "12ebb885a2842a9f022522f0540292e3" + }, + { + "name": "X-Scheme", + "value": "https" + }, + { + "name": ":method", + "value": "GET" + }, + { + "name": ":path", + "value": "/models/liraz_test_2105/suites/all/runs" + }, + { + "name": ":authority", + "value": "trcc.stg.testr.io" + }, + { + "name": ":scheme", + "value": "http" + }, + { + "name": "x-request-start", + "value": "1590058951.277" + }, + { + "name": "x-up9-source", + "value": "10.48.1.44" + }, + { + "name": "x-up9-destination", + "value": "10.48.0.155:5000" + } + ], + "queryString": [], + "headersSize": -1, + "bodySize": -1 + }, + "response": { + "status": 200, + "statusText": "OK", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "Access-Control-Allow-Origin", + "value": "http://localhost:3000" + }, + { + "name": "Access-Control-Allow-Credentials", + "value": "true" + }, + { + "name": "Vary", + "value": "Origin" + }, + { + "name": "Server", + "value": "gunicorn/19.9.0" + }, + { + "name": "Date", + "value": "Thu, 21 May 2020 11:02:30 GMT" + }, + { + "name": "Connection", + "value": "keep-alive" + }, + { + "name": "Content-Type", + "value": "application/json" + }, + { + "name": "Content-Length", + "value": "3" + }, + { + "name": ":status", + "value": "200" + }, + { + "name": "duration_ms", + "value": "1" + } + ], + "content": { + "size": 3, + "mimeType": "", + "text": "[]\n" + }, + "redirectURL": "", + "headersSize": -1, + "bodySize": 3 + }, + "cache": {}, + "timings": { + "send": -1, + "wait": -1, + "receive": 1 + } + }, + { + "startedDateTime": "2020-05-21T11:02:31.277000+00:00", + "time": 1, + "request": { + "method": "OPTIONS", + "url": "http://trcc-api-service/models/rg_2105_01/status", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "X-Forwarded-Port", + "value": "443" + }, + { + "name": "Accept", + "value": "*/*" + }, + { + "name": "Origin", + "value": "https://stg.testr.io" + }, + { + "name": "User-Agent", + "value": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36" + }, + { + "name": "X-Request-Id", + "value": "42c5b7609286386ad4f8f4287bd2631e" + }, + { + "name": "X-Real-Ip", + "value": "10.132.0.85" + }, + { + "name": "Access-Control-Request-Method", + "value": "GET" + }, + { + "name": "X-Forwarded-Proto", + "value": "https" + }, + { + "name": "Sec-Fetch-Mode", + "value": "cors" + }, + { + "name": "Sec-Fetch-Site", + "value": "same-site" + }, + { + "name": "Sec-Fetch-Dest", + "value": "empty" + }, + { + "name": "Referer", + "value": "https://stg.testr.io/someOrgId123/model/rg_2105_01/lastResults/systems" + }, + { + "name": "X-Forwarded-For", + "value": "10.132.0.85" + }, + { + "name": "X-Forwarded-Host", + "value": "trcc.stg.testr.io" + }, + { + "name": "Accept-Encoding", + "value": "gzip, deflate, br" + }, + { + "name": "X-Scheme", + "value": "https" + }, + { + "name": "Access-Control-Request-Headers", + "value": "authorization" + }, + { + "name": "Accept-Language", + "value": "en-US,en;q=0.9" + }, + { + "name": ":method", + "value": "OPTIONS" + }, + { + "name": ":path", + "value": "/models/rg_2105_01/status" + }, + { + "name": ":authority", + "value": "trcc.stg.testr.io" + }, + { + "name": ":scheme", + "value": "http" + }, + { + "name": "x-request-start", + "value": "1590058951.277" + }, + { + "name": "x-up9-source", + "value": "10.48.1.44" + }, + { + "name": "x-up9-destination", + "value": "10.48.0.155:5000" + } + ], + "queryString": [], + "headersSize": -1, + "bodySize": -1 + }, + "response": { + "status": 200, + "statusText": "OK", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "Content-Type", + "value": "text/html; charset=utf-8" + }, + { + "name": "Access-Control-Allow-Origin", + "value": "https://stg.testr.io" + }, + { + "name": "Access-Control-Allow-Headers", + "value": "authorization" + }, + { + "name": "Access-Control-Allow-Methods", + "value": "DELETE, GET, HEAD, OPTIONS, PATCH, POST, PUT" + }, + { + "name": "Vary", + "value": "Origin" + }, + { + "name": "Content-Length", + "value": "0" + }, + { + "name": "Server", + "value": "gunicorn/19.9.0" + }, + { + "name": "Date", + "value": "Thu, 21 May 2020 11:02:30 GMT" + }, + { + "name": "Connection", + "value": "keep-alive" + }, + { + "name": "Allow", + "value": "GET, HEAD, OPTIONS" + }, + { + "name": "Access-Control-Allow-Credentials", + "value": "true" + }, + { + "name": ":status", + "value": "200" + }, + { + "name": "duration_ms", + "value": "1" + } + ], + "content": { + "size": 0, + "mimeType": "", + "text": "", + "encoding": "base64" + }, + "redirectURL": "", + "headersSize": -1, + "bodySize": 0 + }, + "cache": {}, + "timings": { + "send": -1, + "wait": -1, + "receive": 1 + } + }, + { + "startedDateTime": "2020-05-21T11:02:31.278000+00:00", + "time": 1, + "request": { + "method": "GET", + "url": "http://trcc-api-service/models/regression-04-05-20/blacklist", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "Accept", + "value": "*/*" + }, + { + "name": "X-Request-Id", + "value": "3724e8d5d53559239150f7718dff1d04" + }, + { + "name": "X-Forwarded-For", + "value": "10.132.0.85" + }, + { + "name": "X-Forwarded-Host", + "value": "trcc.stg.testr.io" + }, + { + "name": "X-Forwarded-Proto", + "value": "https" + }, + { + "name": "User-Agent", + "value": "python-requests/2.23.0" + }, + { + "name": "Authorization", + "value": "Bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJqSEZ0R1dybjJpY084VnpDYXpaZWUyakpFc2drY1k5ZzhpN2FTbGtielRnIn0.eyJleHAiOjE1OTAwNTkxMzUsImlhdCI6MTU5MDA1ODgzNSwianRpIjoiNjNiMWU3ODgtMmI3MC00ZDY0LTk1NDEtNTdmYzVmMTY3ZDg1IiwiaXNzIjoiaHR0cHM6Ly9hdXRoLnN0Zy50ZXN0ci5pby9hdXRoL3JlYWxtcy90ZXN0ciIsImF1ZCI6ImFjY291bnQiLCJzdWIiOiI0YWFkZWM0Mi01OWE5LTRmZDUtODI3NC1lZWI5NDNmODQyNmUiLCJ0eXAiOiJCZWFyZXIiLCJhenAiOiIzWjE5LTNzYnN2MU9KSDBEd2l2UWkyYmZVSzdsSlNFdSIsInNlc3Npb25fc3RhdGUiOiJkOTA0NjBhOC05NjBmLTRjZTYtYjczMS1hNGEwMDQ2ZTk2MzQiLCJhY3IiOiIxIiwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyJhY2NvdW50Ijp7InJvbGVzIjpbIm1hbmFnZS1hY2NvdW50IiwibWFuYWdlLWFjY291bnQtbGlua3MiLCJ2aWV3LXByb2ZpbGUiXX19LCJzY29wZSI6InByb2ZpbGUgZW1haWwiLCJjbGllbnRJZCI6IjNaMTktM3Nic3YxT0pIMER3aXZRaTJiZlVLN2xKU0V1IiwiY2xpZW50SG9zdCI6IjEwLjEzMi4wLjMwIiwiZW1haWxfdmVyaWZpZWQiOmZhbHNlLCJvcmdhbml6YXRpb24iOiJzb21lT3JnSWQxMjMiLCJwcmVmZXJyZWRfdXNlcm5hbWUiOiJzZXJ2aWNlLWFjY291bnQtM3oxOS0zc2JzdjFvamgwZHdpdnFpMmJmdWs3bGpzZXUiLCJjbGllbnRBZGRyZXNzIjoiMTAuMTMyLjAuMzAiLCJlbWFpbCI6InNlcnZpY2UtYWNjb3VudC0zejE5LTNzYnN2MW9qaDBkd2l2cWkyYmZ1azdsanNldUBwbGFjZWhvbGRlci5vcmcifQ.NbnASo0pxkWkTTA8IP3BGVX__bw97K9EDfG4eGHg9QVb14Dfwh4TCvjoL2lxj3v_32hHcHWU6BL2rlztd1gSeheVR_XN39Q8_DkU3CWDuI05ndqPs5BuXu5sJ0KsfJP1lR-GOB_na0HHImLNWdNVQanTmFIsyWPAVcISirIfwhRhei5d730-JXiASbF2lnNOyvnGvFEj2NtgQjF5PZwG_7Qici7Mq-PE5z6LX9t6xuWVqPnryHGQLgl3EPBkWyzdA0UhG0nIitW5xKNdCq3wo9fwAigW7QNLdqjrrWGVglDnp6olg_eF915mbyWtnYXq3vFZpbhXKH0NEYD5gjkTRw" + }, + { + "name": "X-Real-Ip", + "value": "10.132.0.85" + }, + { + "name": "X-Forwarded-Port", + "value": "443" + }, + { + "name": "X-Scheme", + "value": "https" + }, + { + "name": "Accept-Encoding", + "value": "gzip, deflate" + }, + { + "name": ":method", + "value": "GET" + }, + { + "name": ":path", + "value": "/models/regression-04-05-20/blacklist" + }, + { + "name": ":authority", + "value": "trcc.stg.testr.io" + }, + { + "name": ":scheme", + "value": "http" + }, + { + "name": "x-request-start", + "value": "1590058951.278" + }, + { + "name": "x-up9-source", + "value": "10.48.1.44" + }, + { + "name": "x-up9-destination", + "value": "10.48.0.155:5000" + } + ], + "queryString": [], + "headersSize": -1, + "bodySize": -1 + }, + "response": { + "status": 200, + "statusText": "OK", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "Server", + "value": "gunicorn/19.9.0" + }, + { + "name": "Date", + "value": "Thu, 21 May 2020 11:02:31 GMT" + }, + { + "name": "Connection", + "value": "keep-alive" + }, + { + "name": "Content-Type", + "value": "application/json" + }, + { + "name": "Content-Length", + "value": "3" + }, + { + "name": "Access-Control-Allow-Origin", + "value": "http://localhost:3000" + }, + { + "name": "Access-Control-Allow-Credentials", + "value": "true" + }, + { + "name": "Vary", + "value": "Origin" + }, + { + "name": ":status", + "value": "200" + }, + { + "name": "duration_ms", + "value": "1" + } + ], + "content": { + "size": 3, + "mimeType": "", + "text": "[]\n" + }, + "redirectURL": "", + "headersSize": -1, + "bodySize": 3 + }, + "cache": {}, + "timings": { + "send": -1, + "wait": -1, + "receive": 1 + } + }, + { + "startedDateTime": "2020-05-21T11:02:31.278000+00:00", + "time": 1, + "request": { + "method": "GET", + "url": "http://trcc-api-service/models/rg_2105_01/status", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "X-Request-Id", + "value": "d276e7e338f1a5fe3e6df6a66849c619" + }, + { + "name": "Authorization", + "value": "bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJqSEZ0R1dybjJpY084VnpDYXpaZWUyakpFc2drY1k5ZzhpN2FTbGtielRnIn0.eyJleHAiOjE1OTAwNTkwMzIsImlhdCI6MTU5MDA1ODczMiwiYXV0aF90aW1lIjoxNTg5ODk1MDc2LCJqdGkiOiI1YjZkZmNjNi0zODVjLTQ4MjUtOGQxNC0yNjYxYWU0ZDlhNzQiLCJpc3MiOiJodHRwczovL2F1dGguc3RnLnRlc3RyLmlvL2F1dGgvcmVhbG1zL3Rlc3RyIiwiYXVkIjoiYWNjb3VudCIsInN1YiI6IjNjMzM3OWRkLWM0MTEtNGZiYS1hMTQzLTY5NTFmNzBiODQyYSIsInR5cCI6IkJlYXJlciIsImF6cCI6InJlYWN0LWNsaWVudCIsIm5vbmNlIjoiMmM2YzBjYzQtYTYxNS00NWU5LTk0NTUtOWQxOGU5NDViZTljIiwic2Vzc2lvbl9zdGF0ZSI6IjAyODlkODZhLWIxMTMtNGM5Yy05MGIyLWU1ZGE3ODc2YmE3MCIsImFjciI6IjAiLCJhbGxvd2VkLW9yaWdpbnMiOlsiaHR0cHM6Ly9zdGcudGVzdHIuaW8iLCJjaHJvbWUtZXh0ZW5zaW9uOi8vbmFkZ2VsamVtbWJna2xkaGNwYWZqbXBtYXBpcGdsY20iLCJodHRwOi8vbG9jYWxob3N0OjMwMDAiXSwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm1hbmFnZUZlYXR1cmVGbGFncyIsIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyJhY2NvdW50Ijp7InJvbGVzIjpbIm1hbmFnZS1hY2NvdW50IiwibWFuYWdlLWFjY291bnQtbGlua3MiLCJ2aWV3LXByb2ZpbGUiXX19LCJzY29wZSI6Im9wZW5pZCBwcm9maWxlIGVtYWlsIiwiZ3JvdXBfbWVtYmVyc2hpcCI6WyJzb21lT3JnSWQxMjMiXSwiZW1haWxfdmVyaWZpZWQiOnRydWUsIm5hbWUiOiJSb2VlIEdhZG90IiwicHJlZmVycmVkX3VzZXJuYW1lIjoicm9lZS5nYWRvdEB1cDkuY29tIiwiZ2l2ZW5fbmFtZSI6IlJvZWUiLCJmYW1pbHlfbmFtZSI6IkdhZG90IiwiZ3JvdXBfc3ViZG9tYWluIjoic29tZU9yZ0lkMTIzIiwiZW1haWwiOiJyb2VlLmdhZG90QHVwOS5jb20iLCJmZWF0dXJlRmxhZ3MiOnsiZWRpdEVuZHBvaW50VmFyaWFibGVzIjp0cnVlLCJzaWRlTmF2aWdhdGlvbiI6dHJ1ZX19.MRoLjJEdFBpcQ4KIKW-2xE3R0twdoh1beJjIzDyL7iSdk82QnltfXso6Fc_HLeq7FwgtC4uNoEaBZUTftMcc5V6PtehZmd1AbL4DR-1A1QgMWDMIxhII6QxcBDZDNbr20vSj8KrXGatbdd78c24MF_M6QsBF77wbemETVmz-Ju-zR6DX9Gu5vh_CMCb71_WSrmehIWU4OuJ-OvCeVA6cg59_TrWSVTZ5RCKkJ-_e6_tYIlDeNeNTNTciukZqF0xe8KpGqG1mqJwNMeN9srw7Qzihd5SrnD4BV2EQmwW_Aas04cnp3-WhjIqy41MW_L4sN8tgYzld2BUQiREAjlT7MA" + }, + { + "name": "Origin", + "value": "https://stg.testr.io" + }, + { + "name": "Sec-Fetch-Mode", + "value": "cors" + }, + { + "name": "X-Forwarded-Port", + "value": "443" + }, + { + "name": "X-Forwarded-Proto", + "value": "https" + }, + { + "name": "X-Scheme", + "value": "https" + }, + { + "name": "Accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "Sec-Fetch-Site", + "value": "same-site" + }, + { + "name": "Accept-Encoding", + "value": "gzip, deflate, br" + }, + { + "name": "X-Real-Ip", + "value": "10.132.0.85" + }, + { + "name": "X-Forwarded-For", + "value": "10.132.0.85" + }, + { + "name": "Sec-Fetch-Dest", + "value": "empty" + }, + { + "name": "X-Forwarded-Host", + "value": "trcc.stg.testr.io" + }, + { + "name": "User-Agent", + "value": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36" + }, + { + "name": "Referer", + "value": "https://stg.testr.io/someOrgId123/model/rg_2105_01/lastResults/systems" + }, + { + "name": "Accept-Language", + "value": "en-US,en;q=0.9" + }, + { + "name": ":method", + "value": "GET" + }, + { + "name": ":path", + "value": "/models/rg_2105_01/status" + }, + { + "name": ":authority", + "value": "trcc.stg.testr.io" + }, + { + "name": ":scheme", + "value": "http" + }, + { + "name": "x-request-start", + "value": "1590058951.278" + }, + { + "name": "x-up9-source", + "value": "10.48.1.44" + }, + { + "name": "x-up9-destination", + "value": "10.48.0.155:5000" + } + ], + "queryString": [], + "headersSize": -1, + "bodySize": -1 + }, + "response": { + "status": 200, + "statusText": "OK", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "Server", + "value": "gunicorn/19.9.0" + }, + { + "name": "Date", + "value": "Thu, 21 May 2020 11:02:31 GMT" + }, + { + "name": "Connection", + "value": "keep-alive" + }, + { + "name": "Content-Type", + "value": "application/json" + }, + { + "name": "Content-Length", + "value": "3" + }, + { + "name": "Access-Control-Allow-Origin", + "value": "http://localhost:3000" + }, + { + "name": "Access-Control-Allow-Credentials", + "value": "true" + }, + { + "name": "Vary", + "value": "Origin" + }, + { + "name": ":status", + "value": "200" + }, + { + "name": "duration_ms", + "value": "1" + } + ], + "content": { + "size": 3, + "mimeType": "", + "text": "[]\n" + }, + "redirectURL": "", + "headersSize": -1, + "bodySize": 3 + }, + "cache": {}, + "timings": { + "send": -1, + "wait": -1, + "receive": 1 + } + }, + { + "startedDateTime": "2020-05-21T11:02:31.278000+00:00", + "time": 1, + "request": { + "method": "GET", + "url": "http://trcc-api-service/models/aws_kong5/suites/all/runs", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "Sec-Fetch-Site", + "value": "same-site" + }, + { + "name": "X-Forwarded-For", + "value": "10.132.0.11" + }, + { + "name": "Authorization", + "value": "bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJqSEZ0R1dybjJpY084VnpDYXpaZWUyakpFc2drY1k5ZzhpN2FTbGtielRnIn0.eyJleHAiOjE1OTAwNTkyNDMsImlhdCI6MTU5MDA1ODk0MywiYXV0aF90aW1lIjoxNTkwMDU4NjUxLCJqdGkiOiI1ODYzNmRiMy0wN2IxLTQ2ZDYtOGNiNS01MzEzMDFlZGY4MGYiLCJpc3MiOiJodHRwczovL2F1dGguc3RnLnRlc3RyLmlvL2F1dGgvcmVhbG1zL3Rlc3RyIiwiYXVkIjoiYWNjb3VudCIsInN1YiI6IjBlYWU4ZmFjLTgyYTEtNDUwNi05MWQ0LTA4ZDYxZTI2NWY1NCIsInR5cCI6IkJlYXJlciIsImF6cCI6InJlYWN0LWNsaWVudCIsIm5vbmNlIjoiNTRjMTM5OTktMDg0NS00OWNmLWI1OTAtOTY1ZThjNWI0NmJlIiwic2Vzc2lvbl9zdGF0ZSI6ImY3YjEyOTM1LThmMTctNDc1Zi04NmRhLWQ4NjFjZTYxNWZjNyIsImFjciI6IjAiLCJhbGxvd2VkLW9yaWdpbnMiOlsiaHR0cHM6Ly9zdGcudGVzdHIuaW8iLCJjaHJvbWUtZXh0ZW5zaW9uOi8vbmFkZ2VsamVtbWJna2xkaGNwYWZqbXBtYXBpcGdsY20iLCJodHRwOi8vbG9jYWxob3N0OjMwMDAiXSwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyJhY2NvdW50Ijp7InJvbGVzIjpbIm1hbmFnZS1hY2NvdW50IiwibWFuYWdlLWFjY291bnQtbGlua3MiLCJ2aWV3LXByb2ZpbGUiXX19LCJzY29wZSI6Im9wZW5pZCBwcm9maWxlIGVtYWlsIiwiZ3JvdXBfbWVtYmVyc2hpcCI6WyJzb21lT3JnSWQxMjMiXSwiZW1haWxfdmVyaWZpZWQiOnRydWUsIm5hbWUiOiJSYW1pIEJlcm1hbiIsInByZWZlcnJlZF91c2VybmFtZSI6InJhbWkuYmVybWFuQHVwOS5jb20iLCJnaXZlbl9uYW1lIjoiUmFtaSIsImZhbWlseV9uYW1lIjoiQmVybWFuIiwiZ3JvdXBfc3ViZG9tYWluIjoic29tZU9yZ0lkMTIzIiwiZW1haWwiOiJyYW1pLmJlcm1hbkB1cDkuY29tIiwiZmVhdHVyZUZsYWdzIjp7ImVkaXRFbmRwb2ludFZhcmlhYmxlcyI6dHJ1ZSwic2lkZU5hdmlnYXRpb24iOnRydWV9fQ.UEDsnoo9A8CbdIYKXoOrAAq6y2K7Aoqf-PplHhXFoVep9ewwA9qBjXqgn0fK9cnE_KfZKUcX_cy1HDhhdIfR_aHpbWWhQ3gxISkE6ALka18JIrUv7bFaHKio6eEP6tgn34QVP8aQVEB3e3g7h3dLuUvZ1xIMnt6fy03tD3KgiQlvdHwg5FhJLosiCrHgboEqN5VH_f_2QF33XiXTkDG1e-AOEnIIWqloMDTUPZEUvEo_KH68lB0Uu23YhhI5gPAuKQVb_UjFWcF_6Ysvk3C3j0cuk09DZ7YEI1u-bKp58LHnsS6gqNFQxy-CDlZ8Oht5d2I3LbwZZxHzMixzzFzJCA" + }, + { + "name": "User-Agent", + "value": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36" + }, + { + "name": "Sec-Fetch-Dest", + "value": "empty" + }, + { + "name": "Accept-Language", + "value": "en-IL,en-US;q=0.9,en;q=0.8,he;q=0.7,pl;q=0.6,ru;q=0.5" + }, + { + "name": "X-Forwarded-Port", + "value": "443" + }, + { + "name": "X-Forwarded-Proto", + "value": "https" + }, + { + "name": "Accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "X-Request-Id", + "value": "9550e78fed0fc62457329f12711a8306" + }, + { + "name": "X-Forwarded-Host", + "value": "trcc.stg.testr.io" + }, + { + "name": "Origin", + "value": "https://stg.testr.io" + }, + { + "name": "Sec-Fetch-Mode", + "value": "cors" + }, + { + "name": "Referer", + "value": "https://stg.testr.io/someOrgId123/model/aws_kong5/lastResults/systems/all/runs" + }, + { + "name": "Accept-Encoding", + "value": "gzip, deflate, br" + }, + { + "name": "X-Real-Ip", + "value": "10.132.0.11" + }, + { + "name": "X-Scheme", + "value": "https" + }, + { + "name": "Dnt", + "value": "1" + }, + { + "name": ":method", + "value": "GET" + }, + { + "name": ":path", + "value": "/models/aws_kong5/suites/all/runs" + }, + { + "name": ":authority", + "value": "trcc.stg.testr.io" + }, + { + "name": ":scheme", + "value": "http" + }, + { + "name": "x-request-start", + "value": "1590058951.278" + }, + { + "name": "x-up9-source", + "value": "10.48.1.44" + }, + { + "name": "x-up9-destination", + "value": "10.48.0.155:5000" + } + ], + "queryString": [], + "headersSize": -1, + "bodySize": -1 + }, + "response": { + "status": 200, + "statusText": "OK", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "Content-Type", + "value": "application/json" + }, + { + "name": "Content-Length", + "value": "96" + }, + { + "name": "Access-Control-Allow-Origin", + "value": "https://stg.testr.io" + }, + { + "name": "Access-Control-Allow-Credentials", + "value": "true" + }, + { + "name": "Vary", + "value": "Origin" + }, + { + "name": "Server", + "value": "gunicorn/19.9.0" + }, + { + "name": "Date", + "value": "Thu, 21 May 2020 11:02:31 GMT" + }, + { + "name": "Connection", + "value": "keep-alive" + }, + { + "name": ":status", + "value": "200" + }, + { + "name": "duration_ms", + "value": "1" + } + ], + "content": { + "size": 96, + "mimeType": "", + "text": "{\"errorCount\":0,\"lastMajorGeneration\":1590058178.535,\"lastSuccessfulGeneration\":1590058178.535}\n" + }, + "redirectURL": "", + "headersSize": -1, + "bodySize": 96 + }, + "cache": {}, + "timings": { + "send": -1, + "wait": -1, + "receive": 1 + } + }, + { + "startedDateTime": "2020-05-21T11:02:31.278000+00:00", + "time": 1, + "request": { + "method": "GET", + "url": "http://trcc-api-service/models/up9_011401/blacklist", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "Accept-Encoding", + "value": "gzip, deflate" + }, + { + "name": "Accept", + "value": "*/*" + }, + { + "name": "Authorization", + "value": "Bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJqSEZ0R1dybjJpY084VnpDYXpaZWUyakpFc2drY1k5ZzhpN2FTbGtielRnIn0.eyJleHAiOjE1OTAwNTkxMzUsImlhdCI6MTU5MDA1ODgzNSwianRpIjoiNjNiMWU3ODgtMmI3MC00ZDY0LTk1NDEtNTdmYzVmMTY3ZDg1IiwiaXNzIjoiaHR0cHM6Ly9hdXRoLnN0Zy50ZXN0ci5pby9hdXRoL3JlYWxtcy90ZXN0ciIsImF1ZCI6ImFjY291bnQiLCJzdWIiOiI0YWFkZWM0Mi01OWE5LTRmZDUtODI3NC1lZWI5NDNmODQyNmUiLCJ0eXAiOiJCZWFyZXIiLCJhenAiOiIzWjE5LTNzYnN2MU9KSDBEd2l2UWkyYmZVSzdsSlNFdSIsInNlc3Npb25fc3RhdGUiOiJkOTA0NjBhOC05NjBmLTRjZTYtYjczMS1hNGEwMDQ2ZTk2MzQiLCJhY3IiOiIxIiwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyJhY2NvdW50Ijp7InJvbGVzIjpbIm1hbmFnZS1hY2NvdW50IiwibWFuYWdlLWFjY291bnQtbGlua3MiLCJ2aWV3LXByb2ZpbGUiXX19LCJzY29wZSI6InByb2ZpbGUgZW1haWwiLCJjbGllbnRJZCI6IjNaMTktM3Nic3YxT0pIMER3aXZRaTJiZlVLN2xKU0V1IiwiY2xpZW50SG9zdCI6IjEwLjEzMi4wLjMwIiwiZW1haWxfdmVyaWZpZWQiOmZhbHNlLCJvcmdhbml6YXRpb24iOiJzb21lT3JnSWQxMjMiLCJwcmVmZXJyZWRfdXNlcm5hbWUiOiJzZXJ2aWNlLWFjY291bnQtM3oxOS0zc2JzdjFvamgwZHdpdnFpMmJmdWs3bGpzZXUiLCJjbGllbnRBZGRyZXNzIjoiMTAuMTMyLjAuMzAiLCJlbWFpbCI6InNlcnZpY2UtYWNjb3VudC0zejE5LTNzYnN2MW9qaDBkd2l2cWkyYmZ1azdsanNldUBwbGFjZWhvbGRlci5vcmcifQ.NbnASo0pxkWkTTA8IP3BGVX__bw97K9EDfG4eGHg9QVb14Dfwh4TCvjoL2lxj3v_32hHcHWU6BL2rlztd1gSeheVR_XN39Q8_DkU3CWDuI05ndqPs5BuXu5sJ0KsfJP1lR-GOB_na0HHImLNWdNVQanTmFIsyWPAVcISirIfwhRhei5d730-JXiASbF2lnNOyvnGvFEj2NtgQjF5PZwG_7Qici7Mq-PE5z6LX9t6xuWVqPnryHGQLgl3EPBkWyzdA0UhG0nIitW5xKNdCq3wo9fwAigW7QNLdqjrrWGVglDnp6olg_eF915mbyWtnYXq3vFZpbhXKH0NEYD5gjkTRw" + }, + { + "name": "X-Real-Ip", + "value": "10.132.0.85" + }, + { + "name": "X-Forwarded-Host", + "value": "trcc.stg.testr.io" + }, + { + "name": "X-Scheme", + "value": "https" + }, + { + "name": "X-Forwarded-Port", + "value": "443" + }, + { + "name": "X-Forwarded-Proto", + "value": "https" + }, + { + "name": "User-Agent", + "value": "python-requests/2.23.0" + }, + { + "name": "X-Request-Id", + "value": "3dfc4c16560bcddd74ab1af1b01b04ff" + }, + { + "name": "X-Forwarded-For", + "value": "10.132.0.85" + }, + { + "name": ":method", + "value": "GET" + }, + { + "name": ":path", + "value": "/models/up9_011401/blacklist" + }, + { + "name": ":authority", + "value": "trcc.stg.testr.io" + }, + { + "name": ":scheme", + "value": "http" + }, + { + "name": "x-request-start", + "value": "1590058951.278" + }, + { + "name": "x-up9-source", + "value": "10.48.1.44" + }, + { + "name": "x-up9-destination", + "value": "10.48.0.155:5000" + } + ], + "queryString": [], + "headersSize": -1, + "bodySize": -1 + }, + "response": { + "status": 200, + "statusText": "OK", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "Vary", + "value": "Origin" + }, + { + "name": "Server", + "value": "gunicorn/19.9.0" + }, + { + "name": "Date", + "value": "Thu, 21 May 2020 11:02:31 GMT" + }, + { + "name": "Connection", + "value": "keep-alive" + }, + { + "name": "Content-Type", + "value": "application/json" + }, + { + "name": "Content-Length", + "value": "3" + }, + { + "name": "Access-Control-Allow-Origin", + "value": "https://stg.testr.io" + }, + { + "name": "Access-Control-Allow-Credentials", + "value": "true" + }, + { + "name": ":status", + "value": "200" + }, + { + "name": "duration_ms", + "value": "1" + } + ], + "content": { + "size": 3, + "mimeType": "", + "text": "[]\n" + }, + "redirectURL": "", + "headersSize": -1, + "bodySize": 3 + }, + "cache": {}, + "timings": { + "send": -1, + "wait": -1, + "receive": 1 + } + }, + { + "startedDateTime": "2020-05-21T11:02:31.279000+00:00", + "time": 1, + "request": { + "method": "GET", + "url": "http://trcc-api-service/models/ngm-1204-aws-02/blacklist", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "Accept-Encoding", + "value": "gzip, deflate" + }, + { + "name": "Accept", + "value": "*/*" + }, + { + "name": "Authorization", + "value": "Bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJqSEZ0R1dybjJpY084VnpDYXpaZWUyakpFc2drY1k5ZzhpN2FTbGtielRnIn0.eyJleHAiOjE1OTAwNTkxMzUsImlhdCI6MTU5MDA1ODgzNSwianRpIjoiNjNiMWU3ODgtMmI3MC00ZDY0LTk1NDEtNTdmYzVmMTY3ZDg1IiwiaXNzIjoiaHR0cHM6Ly9hdXRoLnN0Zy50ZXN0ci5pby9hdXRoL3JlYWxtcy90ZXN0ciIsImF1ZCI6ImFjY291bnQiLCJzdWIiOiI0YWFkZWM0Mi01OWE5LTRmZDUtODI3NC1lZWI5NDNmODQyNmUiLCJ0eXAiOiJCZWFyZXIiLCJhenAiOiIzWjE5LTNzYnN2MU9KSDBEd2l2UWkyYmZVSzdsSlNFdSIsInNlc3Npb25fc3RhdGUiOiJkOTA0NjBhOC05NjBmLTRjZTYtYjczMS1hNGEwMDQ2ZTk2MzQiLCJhY3IiOiIxIiwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyJhY2NvdW50Ijp7InJvbGVzIjpbIm1hbmFnZS1hY2NvdW50IiwibWFuYWdlLWFjY291bnQtbGlua3MiLCJ2aWV3LXByb2ZpbGUiXX19LCJzY29wZSI6InByb2ZpbGUgZW1haWwiLCJjbGllbnRJZCI6IjNaMTktM3Nic3YxT0pIMER3aXZRaTJiZlVLN2xKU0V1IiwiY2xpZW50SG9zdCI6IjEwLjEzMi4wLjMwIiwiZW1haWxfdmVyaWZpZWQiOmZhbHNlLCJvcmdhbml6YXRpb24iOiJzb21lT3JnSWQxMjMiLCJwcmVmZXJyZWRfdXNlcm5hbWUiOiJzZXJ2aWNlLWFjY291bnQtM3oxOS0zc2JzdjFvamgwZHdpdnFpMmJmdWs3bGpzZXUiLCJjbGllbnRBZGRyZXNzIjoiMTAuMTMyLjAuMzAiLCJlbWFpbCI6InNlcnZpY2UtYWNjb3VudC0zejE5LTNzYnN2MW9qaDBkd2l2cWkyYmZ1azdsanNldUBwbGFjZWhvbGRlci5vcmcifQ.NbnASo0pxkWkTTA8IP3BGVX__bw97K9EDfG4eGHg9QVb14Dfwh4TCvjoL2lxj3v_32hHcHWU6BL2rlztd1gSeheVR_XN39Q8_DkU3CWDuI05ndqPs5BuXu5sJ0KsfJP1lR-GOB_na0HHImLNWdNVQanTmFIsyWPAVcISirIfwhRhei5d730-JXiASbF2lnNOyvnGvFEj2NtgQjF5PZwG_7Qici7Mq-PE5z6LX9t6xuWVqPnryHGQLgl3EPBkWyzdA0UhG0nIitW5xKNdCq3wo9fwAigW7QNLdqjrrWGVglDnp6olg_eF915mbyWtnYXq3vFZpbhXKH0NEYD5gjkTRw" + }, + { + "name": "X-Forwarded-For", + "value": "10.132.0.85" + }, + { + "name": "X-Forwarded-Proto", + "value": "https" + }, + { + "name": "User-Agent", + "value": "python-requests/2.23.0" + }, + { + "name": "X-Scheme", + "value": "https" + }, + { + "name": "X-Request-Id", + "value": "4569950a587baea2695979a9b9d2ffde" + }, + { + "name": "X-Real-Ip", + "value": "10.132.0.85" + }, + { + "name": "X-Forwarded-Host", + "value": "trcc.stg.testr.io" + }, + { + "name": "X-Forwarded-Port", + "value": "443" + }, + { + "name": ":method", + "value": "GET" + }, + { + "name": ":path", + "value": "/models/ngm-1204-aws-02/blacklist" + }, + { + "name": ":authority", + "value": "trcc.stg.testr.io" + }, + { + "name": ":scheme", + "value": "http" + }, + { + "name": "x-request-start", + "value": "1590058951.279" + }, + { + "name": "x-up9-source", + "value": "10.48.1.44" + }, + { + "name": "x-up9-destination", + "value": "10.48.0.155:5000" + } + ], + "queryString": [], + "headersSize": -1, + "bodySize": -1 + }, + "response": { + "status": 200, + "statusText": "OK", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "Content-Length", + "value": "3" + }, + { + "name": "Access-Control-Allow-Origin", + "value": "http://localhost:3000" + }, + { + "name": "Access-Control-Allow-Credentials", + "value": "true" + }, + { + "name": "Vary", + "value": "Origin" + }, + { + "name": "Server", + "value": "gunicorn/19.9.0" + }, + { + "name": "Date", + "value": "Thu, 21 May 2020 11:02:31 GMT" + }, + { + "name": "Connection", + "value": "keep-alive" + }, + { + "name": "Content-Type", + "value": "application/json" + }, + { + "name": ":status", + "value": "200" + }, + { + "name": "duration_ms", + "value": "1" + } + ], + "content": { + "size": 3, + "mimeType": "", + "text": "[]\n" + }, + "redirectURL": "", + "headersSize": -1, + "bodySize": 3 + }, + "cache": {}, + "timings": { + "send": -1, + "wait": -1, + "receive": 1 + } + }, + { + "startedDateTime": "2020-05-21T11:02:31.279000+00:00", + "time": 1, + "request": { + "method": "GET", + "url": "http://trcc-api-service/models/liraz_test_2105/suites/all/runs", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "Authorization", + "value": "bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJqSEZ0R1dybjJpY084VnpDYXpaZWUyakpFc2drY1k5ZzhpN2FTbGtielRnIn0.eyJleHAiOjE1OTAwNTkxMTQsImlhdCI6MTU5MDA1ODgxNCwiYXV0aF90aW1lIjoxNTg5OTU4NDcwLCJqdGkiOiIyNzgxOTYyMy00Yjk5LTQ2MzQtOWZlNi02ZDRiNzYwNGU2ZmMiLCJpc3MiOiJodHRwczovL2F1dGguc3RnLnRlc3RyLmlvL2F1dGgvcmVhbG1zL3Rlc3RyIiwiYXVkIjoiYWNjb3VudCIsInN1YiI6ImU4NzAxMDZjLWJjYjItNDQxMy05Y2Q2LTUwMTZiNTUxMDRlYiIsInR5cCI6IkJlYXJlciIsImF6cCI6InJlYWN0LWNsaWVudCIsIm5vbmNlIjoiYzJiZTgwNGYtZjBiYS00ZWUxLTgyZWQtYmIzMTY5ZDBkYjU1Iiwic2Vzc2lvbl9zdGF0ZSI6IjM2ZDc2MDAxLTE5M2EtNGQ5OS05MTIwLTZmNGZkMjEwZDAxMiIsImFjciI6IjAiLCJhbGxvd2VkLW9yaWdpbnMiOlsiaHR0cHM6Ly9zdGcudGVzdHIuaW8iLCJjaHJvbWUtZXh0ZW5zaW9uOi8vbmFkZ2VsamVtbWJna2xkaGNwYWZqbXBtYXBpcGdsY20iLCJodHRwOi8vbG9jYWxob3N0OjMwMDAiXSwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm1hbmFnZUZlYXR1cmVGbGFncyIsIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyJhY2NvdW50Ijp7InJvbGVzIjpbIm1hbmFnZS1hY2NvdW50IiwibWFuYWdlLWFjY291bnQtbGlua3MiLCJ2aWV3LXByb2ZpbGUiXX19LCJzY29wZSI6Im9wZW5pZCBwcm9maWxlIGVtYWlsIiwiZ3JvdXBfbWVtYmVyc2hpcCI6WyJzb21lT3JnSWQxMjMiXSwiZW1haWxfdmVyaWZpZWQiOnRydWUsIm5hbWUiOiJMaXJheiBZZWhlemtlbCIsInByZWZlcnJlZF91c2VybmFtZSI6ImxpcmF6eUB1cDkuY29tIiwiZ2l2ZW5fbmFtZSI6IkxpcmF6IiwiZmFtaWx5X25hbWUiOiJZZWhlemtlbCIsImdyb3VwX3N1YmRvbWFpbiI6InNvbWVPcmdJZDEyMyIsImVtYWlsIjoibGlyYXp5QHVwOS5jb20iLCJmZWF0dXJlRmxhZ3MiOnsiZWRpdEVuZHBvaW50VmFyaWFibGVzIjp0cnVlLCJzaWRlTmF2aWdhdGlvbiI6dHJ1ZX19.KdLz7jeIr8HaST4FpJROrg6Sp-o1Nl5dU2hIbNCA0FEY-jmaoubiOlz6p7QthTJ8t-S0R_qdZtd7rXf249L6wGG_A6rriZhH41Fxhyrb0ig8OVrQp-sepv_AUf7GEIGYgpYIPFnZ6G3Dkq1aY9NzLXruh7fly_ZRkRlzF_wb1vt5NRJz3xeMrj82BOJJmUpv08AYYQhnyjKiBp7rgrNTTBejaFBozsJgXGkIi-DZfv862tgFhvPNuXsqKO5iOxv9nApuQJ2O4knVB1ag7tqB1xQcvBdkZt9gG1VVkpWsM_2j5C9cBwOuPRgHZhpZuT_YNfB4ITefGV1aYfRF-cjnug" + }, + { + "name": "Origin", + "value": "http://localhost:3000" + }, + { + "name": "X-Forwarded-For", + "value": "10.132.0.22" + }, + { + "name": "X-Forwarded-Proto", + "value": "https" + }, + { + "name": "Sec-Fetch-Site", + "value": "cross-site" + }, + { + "name": "Sec-Fetch-Mode", + "value": "cors" + }, + { + "name": "X-Real-Ip", + "value": "10.132.0.22" + }, + { + "name": "X-Forwarded-Host", + "value": "trcc.stg.testr.io" + }, + { + "name": "X-Forwarded-Port", + "value": "443" + }, + { + "name": "Accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "Accept-Language", + "value": "en-US,en;q=0.9" + }, + { + "name": "X-Scheme", + "value": "https" + }, + { + "name": "User-Agent", + "value": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36" + }, + { + "name": "Sec-Fetch-Dest", + "value": "empty" + }, + { + "name": "Referer", + "value": "http://localhost:3000/someOrgId123/model/liraz_test_2105/lastResults/systems/all/summary" + }, + { + "name": "Accept-Encoding", + "value": "gzip, deflate, br" + }, + { + "name": "X-Request-Id", + "value": "08f4cdd105177f2c18d4175e606a59d9" + }, + { + "name": ":method", + "value": "GET" + }, + { + "name": ":path", + "value": "/models/liraz_test_2105/suites/all/runs" + }, + { + "name": ":authority", + "value": "trcc.stg.testr.io" + }, + { + "name": ":scheme", + "value": "http" + }, + { + "name": "x-request-start", + "value": "1590058951.279" + }, + { + "name": "x-up9-source", + "value": "10.48.1.44" + }, + { + "name": "x-up9-destination", + "value": "10.48.0.155:5000" + } + ], + "queryString": [], + "headersSize": -1, + "bodySize": -1 + }, + "response": { + "status": 200, + "statusText": "OK", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "Vary", + "value": "Origin" + }, + { + "name": "Server", + "value": "gunicorn/19.9.0" + }, + { + "name": "Date", + "value": "Thu, 21 May 2020 11:02:31 GMT" + }, + { + "name": "Connection", + "value": "keep-alive" + }, + { + "name": "Content-Type", + "value": "application/json" + }, + { + "name": "Content-Length", + "value": "3" + }, + { + "name": "Access-Control-Allow-Origin", + "value": "http://localhost:3000" + }, + { + "name": "Access-Control-Allow-Credentials", + "value": "true" + }, + { + "name": ":status", + "value": "200" + }, + { + "name": "duration_ms", + "value": "1" + } + ], + "content": { + "size": 3, + "mimeType": "", + "text": "[]\n" + }, + "redirectURL": "", + "headersSize": -1, + "bodySize": 3 + }, + "cache": {}, + "timings": { + "send": -1, + "wait": -1, + "receive": 1 + } + }, + { + "startedDateTime": "2020-05-21T11:02:31.279000+00:00", + "time": 1, + "request": { + "method": "GET", + "url": "http://trcc-api-service/models/ag_nectar_032301/blacklist", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "X-Forwarded-For", + "value": "10.132.0.85" + }, + { + "name": "X-Forwarded-Host", + "value": "trcc.stg.testr.io" + }, + { + "name": "X-Forwarded-Proto", + "value": "https" + }, + { + "name": "X-Scheme", + "value": "https" + }, + { + "name": "X-Real-Ip", + "value": "10.132.0.85" + }, + { + "name": "X-Request-Id", + "value": "7659917f4f09be13505959ebf46e7c52" + }, + { + "name": "X-Forwarded-Port", + "value": "443" + }, + { + "name": "User-Agent", + "value": "python-requests/2.23.0" + }, + { + "name": "Accept-Encoding", + "value": "gzip, deflate" + }, + { + "name": "Accept", + "value": "*/*" + }, + { + "name": "Authorization", + "value": "Bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJqSEZ0R1dybjJpY084VnpDYXpaZWUyakpFc2drY1k5ZzhpN2FTbGtielRnIn0.eyJleHAiOjE1OTAwNTkxMzUsImlhdCI6MTU5MDA1ODgzNSwianRpIjoiNjNiMWU3ODgtMmI3MC00ZDY0LTk1NDEtNTdmYzVmMTY3ZDg1IiwiaXNzIjoiaHR0cHM6Ly9hdXRoLnN0Zy50ZXN0ci5pby9hdXRoL3JlYWxtcy90ZXN0ciIsImF1ZCI6ImFjY291bnQiLCJzdWIiOiI0YWFkZWM0Mi01OWE5LTRmZDUtODI3NC1lZWI5NDNmODQyNmUiLCJ0eXAiOiJCZWFyZXIiLCJhenAiOiIzWjE5LTNzYnN2MU9KSDBEd2l2UWkyYmZVSzdsSlNFdSIsInNlc3Npb25fc3RhdGUiOiJkOTA0NjBhOC05NjBmLTRjZTYtYjczMS1hNGEwMDQ2ZTk2MzQiLCJhY3IiOiIxIiwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyJhY2NvdW50Ijp7InJvbGVzIjpbIm1hbmFnZS1hY2NvdW50IiwibWFuYWdlLWFjY291bnQtbGlua3MiLCJ2aWV3LXByb2ZpbGUiXX19LCJzY29wZSI6InByb2ZpbGUgZW1haWwiLCJjbGllbnRJZCI6IjNaMTktM3Nic3YxT0pIMER3aXZRaTJiZlVLN2xKU0V1IiwiY2xpZW50SG9zdCI6IjEwLjEzMi4wLjMwIiwiZW1haWxfdmVyaWZpZWQiOmZhbHNlLCJvcmdhbml6YXRpb24iOiJzb21lT3JnSWQxMjMiLCJwcmVmZXJyZWRfdXNlcm5hbWUiOiJzZXJ2aWNlLWFjY291bnQtM3oxOS0zc2JzdjFvamgwZHdpdnFpMmJmdWs3bGpzZXUiLCJjbGllbnRBZGRyZXNzIjoiMTAuMTMyLjAuMzAiLCJlbWFpbCI6InNlcnZpY2UtYWNjb3VudC0zejE5LTNzYnN2MW9qaDBkd2l2cWkyYmZ1azdsanNldUBwbGFjZWhvbGRlci5vcmcifQ.NbnASo0pxkWkTTA8IP3BGVX__bw97K9EDfG4eGHg9QVb14Dfwh4TCvjoL2lxj3v_32hHcHWU6BL2rlztd1gSeheVR_XN39Q8_DkU3CWDuI05ndqPs5BuXu5sJ0KsfJP1lR-GOB_na0HHImLNWdNVQanTmFIsyWPAVcISirIfwhRhei5d730-JXiASbF2lnNOyvnGvFEj2NtgQjF5PZwG_7Qici7Mq-PE5z6LX9t6xuWVqPnryHGQLgl3EPBkWyzdA0UhG0nIitW5xKNdCq3wo9fwAigW7QNLdqjrrWGVglDnp6olg_eF915mbyWtnYXq3vFZpbhXKH0NEYD5gjkTRw" + }, + { + "name": ":method", + "value": "GET" + }, + { + "name": ":path", + "value": "/models/ag_nectar_032301/blacklist" + }, + { + "name": ":authority", + "value": "trcc.stg.testr.io" + }, + { + "name": ":scheme", + "value": "http" + }, + { + "name": "x-request-start", + "value": "1590058951.279" + }, + { + "name": "x-up9-source", + "value": "10.48.1.44" + }, + { + "name": "x-up9-destination", + "value": "10.48.0.155:5000" + } + ], + "queryString": [], + "headersSize": -1, + "bodySize": -1 + }, + "response": { + "status": 200, + "statusText": "OK", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "Content-Length", + "value": "3" + }, + { + "name": "Access-Control-Allow-Origin", + "value": "http://localhost:3000" + }, + { + "name": "Access-Control-Allow-Credentials", + "value": "true" + }, + { + "name": "Vary", + "value": "Origin" + }, + { + "name": "Server", + "value": "gunicorn/19.9.0" + }, + { + "name": "Date", + "value": "Thu, 21 May 2020 11:02:31 GMT" + }, + { + "name": "Connection", + "value": "keep-alive" + }, + { + "name": "Content-Type", + "value": "application/json" + }, + { + "name": ":status", + "value": "200" + }, + { + "name": "duration_ms", + "value": "1" + } + ], + "content": { + "size": 3, + "mimeType": "", + "text": "[]\n" + }, + "redirectURL": "", + "headersSize": -1, + "bodySize": 3 + }, + "cache": {}, + "timings": { + "send": -1, + "wait": -1, + "receive": 1 + } + }, + { + "startedDateTime": "2020-05-21T11:02:31.279000+00:00", + "time": 1, + "request": { + "method": "GET", + "url": "http://trcc-api-service/models/liraz_test_2105/blacklist", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "X-Forwarded-For", + "value": "10.132.0.85" + }, + { + "name": "X-Forwarded-Host", + "value": "trcc.stg.testr.io" + }, + { + "name": "X-Forwarded-Proto", + "value": "https" + }, + { + "name": "X-Scheme", + "value": "https" + }, + { + "name": "X-Request-Id", + "value": "84ed05ef64b4cb18eee46fa3746474c6" + }, + { + "name": "X-Real-Ip", + "value": "10.132.0.85" + }, + { + "name": "X-Forwarded-Port", + "value": "443" + }, + { + "name": "User-Agent", + "value": "python-requests/2.23.0" + }, + { + "name": "Accept-Encoding", + "value": "gzip, deflate" + }, + { + "name": "Accept", + "value": "*/*" + }, + { + "name": "Authorization", + "value": "Bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJqSEZ0R1dybjJpY084VnpDYXpaZWUyakpFc2drY1k5ZzhpN2FTbGtielRnIn0.eyJleHAiOjE1OTAwNTkxMzUsImlhdCI6MTU5MDA1ODgzNSwianRpIjoiNjNiMWU3ODgtMmI3MC00ZDY0LTk1NDEtNTdmYzVmMTY3ZDg1IiwiaXNzIjoiaHR0cHM6Ly9hdXRoLnN0Zy50ZXN0ci5pby9hdXRoL3JlYWxtcy90ZXN0ciIsImF1ZCI6ImFjY291bnQiLCJzdWIiOiI0YWFkZWM0Mi01OWE5LTRmZDUtODI3NC1lZWI5NDNmODQyNmUiLCJ0eXAiOiJCZWFyZXIiLCJhenAiOiIzWjE5LTNzYnN2MU9KSDBEd2l2UWkyYmZVSzdsSlNFdSIsInNlc3Npb25fc3RhdGUiOiJkOTA0NjBhOC05NjBmLTRjZTYtYjczMS1hNGEwMDQ2ZTk2MzQiLCJhY3IiOiIxIiwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyJhY2NvdW50Ijp7InJvbGVzIjpbIm1hbmFnZS1hY2NvdW50IiwibWFuYWdlLWFjY291bnQtbGlua3MiLCJ2aWV3LXByb2ZpbGUiXX19LCJzY29wZSI6InByb2ZpbGUgZW1haWwiLCJjbGllbnRJZCI6IjNaMTktM3Nic3YxT0pIMER3aXZRaTJiZlVLN2xKU0V1IiwiY2xpZW50SG9zdCI6IjEwLjEzMi4wLjMwIiwiZW1haWxfdmVyaWZpZWQiOmZhbHNlLCJvcmdhbml6YXRpb24iOiJzb21lT3JnSWQxMjMiLCJwcmVmZXJyZWRfdXNlcm5hbWUiOiJzZXJ2aWNlLWFjY291bnQtM3oxOS0zc2JzdjFvamgwZHdpdnFpMmJmdWs3bGpzZXUiLCJjbGllbnRBZGRyZXNzIjoiMTAuMTMyLjAuMzAiLCJlbWFpbCI6InNlcnZpY2UtYWNjb3VudC0zejE5LTNzYnN2MW9qaDBkd2l2cWkyYmZ1azdsanNldUBwbGFjZWhvbGRlci5vcmcifQ.NbnASo0pxkWkTTA8IP3BGVX__bw97K9EDfG4eGHg9QVb14Dfwh4TCvjoL2lxj3v_32hHcHWU6BL2rlztd1gSeheVR_XN39Q8_DkU3CWDuI05ndqPs5BuXu5sJ0KsfJP1lR-GOB_na0HHImLNWdNVQanTmFIsyWPAVcISirIfwhRhei5d730-JXiASbF2lnNOyvnGvFEj2NtgQjF5PZwG_7Qici7Mq-PE5z6LX9t6xuWVqPnryHGQLgl3EPBkWyzdA0UhG0nIitW5xKNdCq3wo9fwAigW7QNLdqjrrWGVglDnp6olg_eF915mbyWtnYXq3vFZpbhXKH0NEYD5gjkTRw" + }, + { + "name": ":method", + "value": "GET" + }, + { + "name": ":path", + "value": "/models/liraz_test_2105/blacklist" + }, + { + "name": ":authority", + "value": "trcc.stg.testr.io" + }, + { + "name": ":scheme", + "value": "http" + }, + { + "name": "x-request-start", + "value": "1590058951.279" + }, + { + "name": "x-up9-source", + "value": "10.48.1.44" + }, + { + "name": "x-up9-destination", + "value": "10.48.0.155:5000" + } + ], + "queryString": [], + "headersSize": -1, + "bodySize": -1 + }, + "response": { + "status": 200, + "statusText": "OK", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "Server", + "value": "gunicorn/19.9.0" + }, + { + "name": "Date", + "value": "Thu, 21 May 2020 11:02:31 GMT" + }, + { + "name": "Connection", + "value": "keep-alive" + }, + { + "name": "Content-Type", + "value": "application/json" + }, + { + "name": "Content-Length", + "value": "3" + }, + { + "name": "Access-Control-Allow-Origin", + "value": "http://localhost:3000" + }, + { + "name": "Access-Control-Allow-Credentials", + "value": "true" + }, + { + "name": "Vary", + "value": "Origin" + }, + { + "name": ":status", + "value": "200" + }, + { + "name": "duration_ms", + "value": "1" + } + ], + "content": { + "size": 3, + "mimeType": "", + "text": "[]\n" + }, + "redirectURL": "", + "headersSize": -1, + "bodySize": 3 + }, + "cache": {}, + "timings": { + "send": -1, + "wait": -1, + "receive": 1 + } + }, + { + "startedDateTime": "2020-05-21T11:02:31.279000+00:00", + "time": 1, + "request": { + "method": "GET", + "url": "http://trcc-api-service/models/ngm-2020-03-29-00/blacklist", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "X-Request-Id", + "value": "712afad5b3b390f2610827aa88cb5905" + }, + { + "name": "X-Forwarded-For", + "value": "10.132.0.85" + }, + { + "name": "X-Forwarded-Host", + "value": "trcc.stg.testr.io" + }, + { + "name": "Accept-Encoding", + "value": "gzip, deflate" + }, + { + "name": "Accept", + "value": "*/*" + }, + { + "name": "Authorization", + "value": "Bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJqSEZ0R1dybjJpY084VnpDYXpaZWUyakpFc2drY1k5ZzhpN2FTbGtielRnIn0.eyJleHAiOjE1OTAwNTkxMzUsImlhdCI6MTU5MDA1ODgzNSwianRpIjoiNjNiMWU3ODgtMmI3MC00ZDY0LTk1NDEtNTdmYzVmMTY3ZDg1IiwiaXNzIjoiaHR0cHM6Ly9hdXRoLnN0Zy50ZXN0ci5pby9hdXRoL3JlYWxtcy90ZXN0ciIsImF1ZCI6ImFjY291bnQiLCJzdWIiOiI0YWFkZWM0Mi01OWE5LTRmZDUtODI3NC1lZWI5NDNmODQyNmUiLCJ0eXAiOiJCZWFyZXIiLCJhenAiOiIzWjE5LTNzYnN2MU9KSDBEd2l2UWkyYmZVSzdsSlNFdSIsInNlc3Npb25fc3RhdGUiOiJkOTA0NjBhOC05NjBmLTRjZTYtYjczMS1hNGEwMDQ2ZTk2MzQiLCJhY3IiOiIxIiwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyJhY2NvdW50Ijp7InJvbGVzIjpbIm1hbmFnZS1hY2NvdW50IiwibWFuYWdlLWFjY291bnQtbGlua3MiLCJ2aWV3LXByb2ZpbGUiXX19LCJzY29wZSI6InByb2ZpbGUgZW1haWwiLCJjbGllbnRJZCI6IjNaMTktM3Nic3YxT0pIMER3aXZRaTJiZlVLN2xKU0V1IiwiY2xpZW50SG9zdCI6IjEwLjEzMi4wLjMwIiwiZW1haWxfdmVyaWZpZWQiOmZhbHNlLCJvcmdhbml6YXRpb24iOiJzb21lT3JnSWQxMjMiLCJwcmVmZXJyZWRfdXNlcm5hbWUiOiJzZXJ2aWNlLWFjY291bnQtM3oxOS0zc2JzdjFvamgwZHdpdnFpMmJmdWs3bGpzZXUiLCJjbGllbnRBZGRyZXNzIjoiMTAuMTMyLjAuMzAiLCJlbWFpbCI6InNlcnZpY2UtYWNjb3VudC0zejE5LTNzYnN2MW9qaDBkd2l2cWkyYmZ1azdsanNldUBwbGFjZWhvbGRlci5vcmcifQ.NbnASo0pxkWkTTA8IP3BGVX__bw97K9EDfG4eGHg9QVb14Dfwh4TCvjoL2lxj3v_32hHcHWU6BL2rlztd1gSeheVR_XN39Q8_DkU3CWDuI05ndqPs5BuXu5sJ0KsfJP1lR-GOB_na0HHImLNWdNVQanTmFIsyWPAVcISirIfwhRhei5d730-JXiASbF2lnNOyvnGvFEj2NtgQjF5PZwG_7Qici7Mq-PE5z6LX9t6xuWVqPnryHGQLgl3EPBkWyzdA0UhG0nIitW5xKNdCq3wo9fwAigW7QNLdqjrrWGVglDnp6olg_eF915mbyWtnYXq3vFZpbhXKH0NEYD5gjkTRw" + }, + { + "name": "X-Real-Ip", + "value": "10.132.0.85" + }, + { + "name": "X-Forwarded-Port", + "value": "443" + }, + { + "name": "X-Forwarded-Proto", + "value": "https" + }, + { + "name": "X-Scheme", + "value": "https" + }, + { + "name": "User-Agent", + "value": "python-requests/2.23.0" + }, + { + "name": ":method", + "value": "GET" + }, + { + "name": ":path", + "value": "/models/ngm-2020-03-29-00/blacklist" + }, + { + "name": ":authority", + "value": "trcc.stg.testr.io" + }, + { + "name": ":scheme", + "value": "http" + }, + { + "name": "x-request-start", + "value": "1590058951.279" + }, + { + "name": "x-up9-source", + "value": "10.48.1.44" + }, + { + "name": "x-up9-destination", + "value": "10.48.0.155:5000" + } + ], + "queryString": [], + "headersSize": -1, + "bodySize": -1 + }, + "response": { + "status": 200, + "statusText": "OK", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "Vary", + "value": "Origin" + }, + { + "name": "Server", + "value": "gunicorn/19.9.0" + }, + { + "name": "Date", + "value": "Thu, 21 May 2020 11:02:31 GMT" + }, + { + "name": "Connection", + "value": "keep-alive" + }, + { + "name": "Content-Type", + "value": "application/json" + }, + { + "name": "Content-Length", + "value": "3" + }, + { + "name": "Access-Control-Allow-Origin", + "value": "http://localhost:3000" + }, + { + "name": "Access-Control-Allow-Credentials", + "value": "true" + }, + { + "name": ":status", + "value": "200" + }, + { + "name": "duration_ms", + "value": "1" + } + ], + "content": { + "size": 3, + "mimeType": "", + "text": "[]\n" + }, + "redirectURL": "", + "headersSize": -1, + "bodySize": 3 + }, + "cache": {}, + "timings": { + "send": -1, + "wait": -1, + "receive": 1 + } + }, + { + "startedDateTime": "2020-05-21T11:02:31.282000+00:00", + "time": 12, + "request": { + "method": "GET", + "url": "http://trcc-api-service/models/ngm-0704-gcloud-05/blacklist", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "X-Forwarded-For", + "value": "10.132.0.85" + }, + { + "name": "Accept-Encoding", + "value": "gzip, deflate" + }, + { + "name": "Authorization", + "value": "Bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJqSEZ0R1dybjJpY084VnpDYXpaZWUyakpFc2drY1k5ZzhpN2FTbGtielRnIn0.eyJleHAiOjE1OTAwNTkxMzUsImlhdCI6MTU5MDA1ODgzNSwianRpIjoiNjNiMWU3ODgtMmI3MC00ZDY0LTk1NDEtNTdmYzVmMTY3ZDg1IiwiaXNzIjoiaHR0cHM6Ly9hdXRoLnN0Zy50ZXN0ci5pby9hdXRoL3JlYWxtcy90ZXN0ciIsImF1ZCI6ImFjY291bnQiLCJzdWIiOiI0YWFkZWM0Mi01OWE5LTRmZDUtODI3NC1lZWI5NDNmODQyNmUiLCJ0eXAiOiJCZWFyZXIiLCJhenAiOiIzWjE5LTNzYnN2MU9KSDBEd2l2UWkyYmZVSzdsSlNFdSIsInNlc3Npb25fc3RhdGUiOiJkOTA0NjBhOC05NjBmLTRjZTYtYjczMS1hNGEwMDQ2ZTk2MzQiLCJhY3IiOiIxIiwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyJhY2NvdW50Ijp7InJvbGVzIjpbIm1hbmFnZS1hY2NvdW50IiwibWFuYWdlLWFjY291bnQtbGlua3MiLCJ2aWV3LXByb2ZpbGUiXX19LCJzY29wZSI6InByb2ZpbGUgZW1haWwiLCJjbGllbnRJZCI6IjNaMTktM3Nic3YxT0pIMER3aXZRaTJiZlVLN2xKU0V1IiwiY2xpZW50SG9zdCI6IjEwLjEzMi4wLjMwIiwiZW1haWxfdmVyaWZpZWQiOmZhbHNlLCJvcmdhbml6YXRpb24iOiJzb21lT3JnSWQxMjMiLCJwcmVmZXJyZWRfdXNlcm5hbWUiOiJzZXJ2aWNlLWFjY291bnQtM3oxOS0zc2JzdjFvamgwZHdpdnFpMmJmdWs3bGpzZXUiLCJjbGllbnRBZGRyZXNzIjoiMTAuMTMyLjAuMzAiLCJlbWFpbCI6InNlcnZpY2UtYWNjb3VudC0zejE5LTNzYnN2MW9qaDBkd2l2cWkyYmZ1azdsanNldUBwbGFjZWhvbGRlci5vcmcifQ.NbnASo0pxkWkTTA8IP3BGVX__bw97K9EDfG4eGHg9QVb14Dfwh4TCvjoL2lxj3v_32hHcHWU6BL2rlztd1gSeheVR_XN39Q8_DkU3CWDuI05ndqPs5BuXu5sJ0KsfJP1lR-GOB_na0HHImLNWdNVQanTmFIsyWPAVcISirIfwhRhei5d730-JXiASbF2lnNOyvnGvFEj2NtgQjF5PZwG_7Qici7Mq-PE5z6LX9t6xuWVqPnryHGQLgl3EPBkWyzdA0UhG0nIitW5xKNdCq3wo9fwAigW7QNLdqjrrWGVglDnp6olg_eF915mbyWtnYXq3vFZpbhXKH0NEYD5gjkTRw" + }, + { + "name": "X-Forwarded-Port", + "value": "443" + }, + { + "name": "X-Forwarded-Proto", + "value": "https" + }, + { + "name": "X-Scheme", + "value": "https" + }, + { + "name": "User-Agent", + "value": "python-requests/2.23.0" + }, + { + "name": "X-Request-Id", + "value": "a401d9e382f17dfb66dad8bb9bc5d47e" + }, + { + "name": "X-Real-Ip", + "value": "10.132.0.85" + }, + { + "name": "X-Forwarded-Host", + "value": "trcc.stg.testr.io" + }, + { + "name": "Accept", + "value": "*/*" + }, + { + "name": ":method", + "value": "GET" + }, + { + "name": ":path", + "value": "/models/ngm-0704-gcloud-05/blacklist" + }, + { + "name": ":authority", + "value": "trcc.stg.testr.io" + }, + { + "name": ":scheme", + "value": "http" + }, + { + "name": "x-request-start", + "value": "1590058951.282" + }, + { + "name": "x-up9-source", + "value": "10.48.1.44" + }, + { + "name": "x-up9-destination", + "value": "10.48.0.155:5000" + } + ], + "queryString": [], + "headersSize": -1, + "bodySize": -1 + }, + "response": { + "status": 200, + "statusText": "OK", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "Access-Control-Allow-Origin", + "value": "http://localhost:3000" + }, + { + "name": "Access-Control-Allow-Credentials", + "value": "true" + }, + { + "name": "Vary", + "value": "Origin" + }, + { + "name": "Server", + "value": "gunicorn/19.9.0" + }, + { + "name": "Date", + "value": "Thu, 21 May 2020 11:02:31 GMT" + }, + { + "name": "Connection", + "value": "keep-alive" + }, + { + "name": "Content-Type", + "value": "application/json" + }, + { + "name": "Content-Length", + "value": "3" + }, + { + "name": ":status", + "value": "200" + }, + { + "name": "duration_ms", + "value": "12" + } + ], + "content": { + "size": 3, + "mimeType": "", + "text": "[]\n" + }, + "redirectURL": "", + "headersSize": -1, + "bodySize": 3 + }, + "cache": {}, + "timings": { + "send": -1, + "wait": -1, + "receive": 12 + } + }, + { + "startedDateTime": "2020-05-21T11:02:31.861000+00:00", + "time": 1, + "request": { + "method": "GET", + "url": "http://trcc-api-service/models/liraz_test_2105/suites/all/runs", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "Sec-Fetch-Site", + "value": "cross-site" + }, + { + "name": "Accept-Language", + "value": "en-US,en;q=0.9" + }, + { + "name": "Accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "X-Real-Ip", + "value": "10.132.0.22" + }, + { + "name": "X-Forwarded-Proto", + "value": "https" + }, + { + "name": "Authorization", + "value": "bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJqSEZ0R1dybjJpY084VnpDYXpaZWUyakpFc2drY1k5ZzhpN2FTbGtielRnIn0.eyJleHAiOjE1OTAwNTkxMTQsImlhdCI6MTU5MDA1ODgxNCwiYXV0aF90aW1lIjoxNTg5OTU4NDcwLCJqdGkiOiIyNzgxOTYyMy00Yjk5LTQ2MzQtOWZlNi02ZDRiNzYwNGU2ZmMiLCJpc3MiOiJodHRwczovL2F1dGguc3RnLnRlc3RyLmlvL2F1dGgvcmVhbG1zL3Rlc3RyIiwiYXVkIjoiYWNjb3VudCIsInN1YiI6ImU4NzAxMDZjLWJjYjItNDQxMy05Y2Q2LTUwMTZiNTUxMDRlYiIsInR5cCI6IkJlYXJlciIsImF6cCI6InJlYWN0LWNsaWVudCIsIm5vbmNlIjoiYzJiZTgwNGYtZjBiYS00ZWUxLTgyZWQtYmIzMTY5ZDBkYjU1Iiwic2Vzc2lvbl9zdGF0ZSI6IjM2ZDc2MDAxLTE5M2EtNGQ5OS05MTIwLTZmNGZkMjEwZDAxMiIsImFjciI6IjAiLCJhbGxvd2VkLW9yaWdpbnMiOlsiaHR0cHM6Ly9zdGcudGVzdHIuaW8iLCJjaHJvbWUtZXh0ZW5zaW9uOi8vbmFkZ2VsamVtbWJna2xkaGNwYWZqbXBtYXBpcGdsY20iLCJodHRwOi8vbG9jYWxob3N0OjMwMDAiXSwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm1hbmFnZUZlYXR1cmVGbGFncyIsIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyJhY2NvdW50Ijp7InJvbGVzIjpbIm1hbmFnZS1hY2NvdW50IiwibWFuYWdlLWFjY291bnQtbGlua3MiLCJ2aWV3LXByb2ZpbGUiXX19LCJzY29wZSI6Im9wZW5pZCBwcm9maWxlIGVtYWlsIiwiZ3JvdXBfbWVtYmVyc2hpcCI6WyJzb21lT3JnSWQxMjMiXSwiZW1haWxfdmVyaWZpZWQiOnRydWUsIm5hbWUiOiJMaXJheiBZZWhlemtlbCIsInByZWZlcnJlZF91c2VybmFtZSI6ImxpcmF6eUB1cDkuY29tIiwiZ2l2ZW5fbmFtZSI6IkxpcmF6IiwiZmFtaWx5X25hbWUiOiJZZWhlemtlbCIsImdyb3VwX3N1YmRvbWFpbiI6InNvbWVPcmdJZDEyMyIsImVtYWlsIjoibGlyYXp5QHVwOS5jb20iLCJmZWF0dXJlRmxhZ3MiOnsiZWRpdEVuZHBvaW50VmFyaWFibGVzIjp0cnVlLCJzaWRlTmF2aWdhdGlvbiI6dHJ1ZX19.KdLz7jeIr8HaST4FpJROrg6Sp-o1Nl5dU2hIbNCA0FEY-jmaoubiOlz6p7QthTJ8t-S0R_qdZtd7rXf249L6wGG_A6rriZhH41Fxhyrb0ig8OVrQp-sepv_AUf7GEIGYgpYIPFnZ6G3Dkq1aY9NzLXruh7fly_ZRkRlzF_wb1vt5NRJz3xeMrj82BOJJmUpv08AYYQhnyjKiBp7rgrNTTBejaFBozsJgXGkIi-DZfv862tgFhvPNuXsqKO5iOxv9nApuQJ2O4knVB1ag7tqB1xQcvBdkZt9gG1VVkpWsM_2j5C9cBwOuPRgHZhpZuT_YNfB4ITefGV1aYfRF-cjnug" + }, + { + "name": "Sec-Fetch-Mode", + "value": "cors" + }, + { + "name": "X-Forwarded-Host", + "value": "trcc.stg.testr.io" + }, + { + "name": "Origin", + "value": "http://localhost:3000" + }, + { + "name": "Sec-Fetch-Dest", + "value": "empty" + }, + { + "name": "Referer", + "value": "http://localhost:3000/someOrgId123/model/liraz_test_2105/lastResults/systems/all/summary" + }, + { + "name": "Accept-Encoding", + "value": "gzip, deflate, br" + }, + { + "name": "X-Request-Id", + "value": "4722242c621806fd8e1f6600a94d4d1a" + }, + { + "name": "X-Forwarded-Port", + "value": "443" + }, + { + "name": "X-Scheme", + "value": "https" + }, + { + "name": "User-Agent", + "value": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36" + }, + { + "name": "X-Forwarded-For", + "value": "10.132.0.22" + }, + { + "name": ":method", + "value": "GET" + }, + { + "name": ":path", + "value": "/models/liraz_test_2105/suites/all/runs" + }, + { + "name": ":authority", + "value": "trcc.stg.testr.io" + }, + { + "name": ":scheme", + "value": "http" + }, + { + "name": "x-request-start", + "value": "1590058951.861" + }, + { + "name": "x-up9-source", + "value": "10.48.1.44" + }, + { + "name": "x-up9-destination", + "value": "10.48.2.97:5000" + } + ], + "queryString": [], + "headersSize": -1, + "bodySize": -1 + }, + "response": { + "status": 200, + "statusText": "OK", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "Vary", + "value": "Origin" + }, + { + "name": "Server", + "value": "gunicorn/19.9.0" + }, + { + "name": "Date", + "value": "Thu, 21 May 2020 11:02:30 GMT" + }, + { + "name": "Connection", + "value": "keep-alive" + }, + { + "name": "Content-Type", + "value": "application/json" + }, + { + "name": "Content-Length", + "value": "3" + }, + { + "name": "Access-Control-Allow-Origin", + "value": "http://localhost:3000" + }, + { + "name": "Access-Control-Allow-Credentials", + "value": "true" + }, + { + "name": ":status", + "value": "200" + }, + { + "name": "duration_ms", + "value": "1" + } + ], + "content": { + "size": 3, + "mimeType": "", + "text": "[]\n" + }, + "redirectURL": "", + "headersSize": -1, + "bodySize": 3 + }, + "cache": {}, + "timings": { + "send": -1, + "wait": -1, + "receive": 1 + } + }, + { + "startedDateTime": "2020-05-21T11:02:31.294000+00:00", + "time": 1, + "request": { + "method": "GET", + "url": "http://trcc-api-service/models/ngm-2020-03-29-01/blacklist", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "X-Real-Ip", + "value": "10.132.0.85" + }, + { + "name": "Authorization", + "value": "Bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJqSEZ0R1dybjJpY084VnpDYXpaZWUyakpFc2drY1k5ZzhpN2FTbGtielRnIn0.eyJleHAiOjE1OTAwNTkxMzUsImlhdCI6MTU5MDA1ODgzNSwianRpIjoiNjNiMWU3ODgtMmI3MC00ZDY0LTk1NDEtNTdmYzVmMTY3ZDg1IiwiaXNzIjoiaHR0cHM6Ly9hdXRoLnN0Zy50ZXN0ci5pby9hdXRoL3JlYWxtcy90ZXN0ciIsImF1ZCI6ImFjY291bnQiLCJzdWIiOiI0YWFkZWM0Mi01OWE5LTRmZDUtODI3NC1lZWI5NDNmODQyNmUiLCJ0eXAiOiJCZWFyZXIiLCJhenAiOiIzWjE5LTNzYnN2MU9KSDBEd2l2UWkyYmZVSzdsSlNFdSIsInNlc3Npb25fc3RhdGUiOiJkOTA0NjBhOC05NjBmLTRjZTYtYjczMS1hNGEwMDQ2ZTk2MzQiLCJhY3IiOiIxIiwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyJhY2NvdW50Ijp7InJvbGVzIjpbIm1hbmFnZS1hY2NvdW50IiwibWFuYWdlLWFjY291bnQtbGlua3MiLCJ2aWV3LXByb2ZpbGUiXX19LCJzY29wZSI6InByb2ZpbGUgZW1haWwiLCJjbGllbnRJZCI6IjNaMTktM3Nic3YxT0pIMER3aXZRaTJiZlVLN2xKU0V1IiwiY2xpZW50SG9zdCI6IjEwLjEzMi4wLjMwIiwiZW1haWxfdmVyaWZpZWQiOmZhbHNlLCJvcmdhbml6YXRpb24iOiJzb21lT3JnSWQxMjMiLCJwcmVmZXJyZWRfdXNlcm5hbWUiOiJzZXJ2aWNlLWFjY291bnQtM3oxOS0zc2JzdjFvamgwZHdpdnFpMmJmdWs3bGpzZXUiLCJjbGllbnRBZGRyZXNzIjoiMTAuMTMyLjAuMzAiLCJlbWFpbCI6InNlcnZpY2UtYWNjb3VudC0zejE5LTNzYnN2MW9qaDBkd2l2cWkyYmZ1azdsanNldUBwbGFjZWhvbGRlci5vcmcifQ.NbnASo0pxkWkTTA8IP3BGVX__bw97K9EDfG4eGHg9QVb14Dfwh4TCvjoL2lxj3v_32hHcHWU6BL2rlztd1gSeheVR_XN39Q8_DkU3CWDuI05ndqPs5BuXu5sJ0KsfJP1lR-GOB_na0HHImLNWdNVQanTmFIsyWPAVcISirIfwhRhei5d730-JXiASbF2lnNOyvnGvFEj2NtgQjF5PZwG_7Qici7Mq-PE5z6LX9t6xuWVqPnryHGQLgl3EPBkWyzdA0UhG0nIitW5xKNdCq3wo9fwAigW7QNLdqjrrWGVglDnp6olg_eF915mbyWtnYXq3vFZpbhXKH0NEYD5gjkTRw" + }, + { + "name": "User-Agent", + "value": "python-requests/2.23.0" + }, + { + "name": "X-Request-Id", + "value": "619630e4bd70cbf273a9d6f48458b7e2" + }, + { + "name": "X-Forwarded-For", + "value": "10.132.0.85" + }, + { + "name": "X-Forwarded-Host", + "value": "trcc.stg.testr.io" + }, + { + "name": "X-Forwarded-Port", + "value": "443" + }, + { + "name": "X-Forwarded-Proto", + "value": "https" + }, + { + "name": "X-Scheme", + "value": "https" + }, + { + "name": "Accept-Encoding", + "value": "gzip, deflate" + }, + { + "name": "Accept", + "value": "*/*" + }, + { + "name": ":method", + "value": "GET" + }, + { + "name": ":path", + "value": "/models/ngm-2020-03-29-01/blacklist" + }, + { + "name": ":authority", + "value": "trcc.stg.testr.io" + }, + { + "name": ":scheme", + "value": "http" + }, + { + "name": "x-request-start", + "value": "1590058951.294" + }, + { + "name": "x-up9-source", + "value": "10.48.1.44" + }, + { + "name": "x-up9-destination", + "value": "10.48.0.155:5000" + } + ], + "queryString": [], + "headersSize": -1, + "bodySize": -1 + }, + "response": { + "status": 200, + "statusText": "OK", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "Content-Type", + "value": "application/json" + }, + { + "name": "Content-Length", + "value": "3" + }, + { + "name": "Access-Control-Allow-Origin", + "value": "http://localhost:3000" + }, + { + "name": "Access-Control-Allow-Credentials", + "value": "true" + }, + { + "name": "Vary", + "value": "Origin" + }, + { + "name": "Server", + "value": "gunicorn/19.9.0" + }, + { + "name": "Date", + "value": "Thu, 21 May 2020 11:02:31 GMT" + }, + { + "name": "Connection", + "value": "keep-alive" + }, + { + "name": ":status", + "value": "200" + }, + { + "name": "duration_ms", + "value": "1" + } + ], + "content": { + "size": 3, + "mimeType": "", + "text": "[]\n" + }, + "redirectURL": "", + "headersSize": -1, + "bodySize": 3 + }, + "cache": {}, + "timings": { + "send": -1, + "wait": -1, + "receive": 1 + } + }, + { + "startedDateTime": "2020-05-21T11:02:31.862000+00:00", + "time": 1, + "request": { + "method": "GET", + "url": "http://trcc-api-service/models/ag_trdemo_040701/blacklist", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "X-Forwarded-Proto", + "value": "https" + }, + { + "name": "X-Scheme", + "value": "https" + }, + { + "name": "Accept", + "value": "*/*" + }, + { + "name": "X-Real-Ip", + "value": "10.132.0.85" + }, + { + "name": "X-Forwarded-Host", + "value": "trcc.stg.testr.io" + }, + { + "name": "X-Forwarded-Port", + "value": "443" + }, + { + "name": "User-Agent", + "value": "python-requests/2.23.0" + }, + { + "name": "Accept-Encoding", + "value": "gzip, deflate" + }, + { + "name": "Authorization", + "value": "Bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJqSEZ0R1dybjJpY084VnpDYXpaZWUyakpFc2drY1k5ZzhpN2FTbGtielRnIn0.eyJleHAiOjE1OTAwNTkxMzUsImlhdCI6MTU5MDA1ODgzNSwianRpIjoiNjNiMWU3ODgtMmI3MC00ZDY0LTk1NDEtNTdmYzVmMTY3ZDg1IiwiaXNzIjoiaHR0cHM6Ly9hdXRoLnN0Zy50ZXN0ci5pby9hdXRoL3JlYWxtcy90ZXN0ciIsImF1ZCI6ImFjY291bnQiLCJzdWIiOiI0YWFkZWM0Mi01OWE5LTRmZDUtODI3NC1lZWI5NDNmODQyNmUiLCJ0eXAiOiJCZWFyZXIiLCJhenAiOiIzWjE5LTNzYnN2MU9KSDBEd2l2UWkyYmZVSzdsSlNFdSIsInNlc3Npb25fc3RhdGUiOiJkOTA0NjBhOC05NjBmLTRjZTYtYjczMS1hNGEwMDQ2ZTk2MzQiLCJhY3IiOiIxIiwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyJhY2NvdW50Ijp7InJvbGVzIjpbIm1hbmFnZS1hY2NvdW50IiwibWFuYWdlLWFjY291bnQtbGlua3MiLCJ2aWV3LXByb2ZpbGUiXX19LCJzY29wZSI6InByb2ZpbGUgZW1haWwiLCJjbGllbnRJZCI6IjNaMTktM3Nic3YxT0pIMER3aXZRaTJiZlVLN2xKU0V1IiwiY2xpZW50SG9zdCI6IjEwLjEzMi4wLjMwIiwiZW1haWxfdmVyaWZpZWQiOmZhbHNlLCJvcmdhbml6YXRpb24iOiJzb21lT3JnSWQxMjMiLCJwcmVmZXJyZWRfdXNlcm5hbWUiOiJzZXJ2aWNlLWFjY291bnQtM3oxOS0zc2JzdjFvamgwZHdpdnFpMmJmdWs3bGpzZXUiLCJjbGllbnRBZGRyZXNzIjoiMTAuMTMyLjAuMzAiLCJlbWFpbCI6InNlcnZpY2UtYWNjb3VudC0zejE5LTNzYnN2MW9qaDBkd2l2cWkyYmZ1azdsanNldUBwbGFjZWhvbGRlci5vcmcifQ.NbnASo0pxkWkTTA8IP3BGVX__bw97K9EDfG4eGHg9QVb14Dfwh4TCvjoL2lxj3v_32hHcHWU6BL2rlztd1gSeheVR_XN39Q8_DkU3CWDuI05ndqPs5BuXu5sJ0KsfJP1lR-GOB_na0HHImLNWdNVQanTmFIsyWPAVcISirIfwhRhei5d730-JXiASbF2lnNOyvnGvFEj2NtgQjF5PZwG_7Qici7Mq-PE5z6LX9t6xuWVqPnryHGQLgl3EPBkWyzdA0UhG0nIitW5xKNdCq3wo9fwAigW7QNLdqjrrWGVglDnp6olg_eF915mbyWtnYXq3vFZpbhXKH0NEYD5gjkTRw" + }, + { + "name": "X-Request-Id", + "value": "015255058670ed5e3f9d42acf65d0ce6" + }, + { + "name": "X-Forwarded-For", + "value": "10.132.0.85" + }, + { + "name": ":method", + "value": "GET" + }, + { + "name": ":path", + "value": "/models/ag_trdemo_040701/blacklist" + }, + { + "name": ":authority", + "value": "trcc.stg.testr.io" + }, + { + "name": ":scheme", + "value": "http" + }, + { + "name": "x-request-start", + "value": "1590058951.862" + }, + { + "name": "x-up9-source", + "value": "10.48.1.44" + }, + { + "name": "x-up9-destination", + "value": "10.48.2.97:5000" + } + ], + "queryString": [], + "headersSize": -1, + "bodySize": -1 + }, + "response": { + "status": 200, + "statusText": "OK", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "Content-Type", + "value": "application/json" + }, + { + "name": "Content-Length", + "value": "3" + }, + { + "name": "Access-Control-Allow-Origin", + "value": "http://localhost:3000" + }, + { + "name": "Access-Control-Allow-Credentials", + "value": "true" + }, + { + "name": "Vary", + "value": "Origin" + }, + { + "name": "Server", + "value": "gunicorn/19.9.0" + }, + { + "name": "Date", + "value": "Thu, 21 May 2020 11:02:30 GMT" + }, + { + "name": "Connection", + "value": "keep-alive" + }, + { + "name": ":status", + "value": "200" + }, + { + "name": "duration_ms", + "value": "1" + } + ], + "content": { + "size": 3, + "mimeType": "", + "text": "[]\n" + }, + "redirectURL": "", + "headersSize": -1, + "bodySize": 3 + }, + "cache": {}, + "timings": { + "send": -1, + "wait": -1, + "receive": 1 + } + }, + { + "startedDateTime": "2020-05-21T11:02:31.862000+00:00", + "time": 1, + "request": { + "method": "GET", + "url": "http://trcc-api-service/models/ah-test-1704-01/blacklist", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "X-Request-Id", + "value": "2bca119036de2e57ea42da7ee67e216d" + }, + { + "name": "X-Real-Ip", + "value": "10.132.0.85" + }, + { + "name": "X-Forwarded-Host", + "value": "trcc.stg.testr.io" + }, + { + "name": "X-Forwarded-Proto", + "value": "https" + }, + { + "name": "X-Scheme", + "value": "https" + }, + { + "name": "Accept", + "value": "*/*" + }, + { + "name": "Authorization", + "value": "Bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJqSEZ0R1dybjJpY084VnpDYXpaZWUyakpFc2drY1k5ZzhpN2FTbGtielRnIn0.eyJleHAiOjE1OTAwNTkxMzUsImlhdCI6MTU5MDA1ODgzNSwianRpIjoiNjNiMWU3ODgtMmI3MC00ZDY0LTk1NDEtNTdmYzVmMTY3ZDg1IiwiaXNzIjoiaHR0cHM6Ly9hdXRoLnN0Zy50ZXN0ci5pby9hdXRoL3JlYWxtcy90ZXN0ciIsImF1ZCI6ImFjY291bnQiLCJzdWIiOiI0YWFkZWM0Mi01OWE5LTRmZDUtODI3NC1lZWI5NDNmODQyNmUiLCJ0eXAiOiJCZWFyZXIiLCJhenAiOiIzWjE5LTNzYnN2MU9KSDBEd2l2UWkyYmZVSzdsSlNFdSIsInNlc3Npb25fc3RhdGUiOiJkOTA0NjBhOC05NjBmLTRjZTYtYjczMS1hNGEwMDQ2ZTk2MzQiLCJhY3IiOiIxIiwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyJhY2NvdW50Ijp7InJvbGVzIjpbIm1hbmFnZS1hY2NvdW50IiwibWFuYWdlLWFjY291bnQtbGlua3MiLCJ2aWV3LXByb2ZpbGUiXX19LCJzY29wZSI6InByb2ZpbGUgZW1haWwiLCJjbGllbnRJZCI6IjNaMTktM3Nic3YxT0pIMER3aXZRaTJiZlVLN2xKU0V1IiwiY2xpZW50SG9zdCI6IjEwLjEzMi4wLjMwIiwiZW1haWxfdmVyaWZpZWQiOmZhbHNlLCJvcmdhbml6YXRpb24iOiJzb21lT3JnSWQxMjMiLCJwcmVmZXJyZWRfdXNlcm5hbWUiOiJzZXJ2aWNlLWFjY291bnQtM3oxOS0zc2JzdjFvamgwZHdpdnFpMmJmdWs3bGpzZXUiLCJjbGllbnRBZGRyZXNzIjoiMTAuMTMyLjAuMzAiLCJlbWFpbCI6InNlcnZpY2UtYWNjb3VudC0zejE5LTNzYnN2MW9qaDBkd2l2cWkyYmZ1azdsanNldUBwbGFjZWhvbGRlci5vcmcifQ.NbnASo0pxkWkTTA8IP3BGVX__bw97K9EDfG4eGHg9QVb14Dfwh4TCvjoL2lxj3v_32hHcHWU6BL2rlztd1gSeheVR_XN39Q8_DkU3CWDuI05ndqPs5BuXu5sJ0KsfJP1lR-GOB_na0HHImLNWdNVQanTmFIsyWPAVcISirIfwhRhei5d730-JXiASbF2lnNOyvnGvFEj2NtgQjF5PZwG_7Qici7Mq-PE5z6LX9t6xuWVqPnryHGQLgl3EPBkWyzdA0UhG0nIitW5xKNdCq3wo9fwAigW7QNLdqjrrWGVglDnp6olg_eF915mbyWtnYXq3vFZpbhXKH0NEYD5gjkTRw" + }, + { + "name": "X-Forwarded-For", + "value": "10.132.0.85" + }, + { + "name": "X-Forwarded-Port", + "value": "443" + }, + { + "name": "User-Agent", + "value": "python-requests/2.23.0" + }, + { + "name": "Accept-Encoding", + "value": "gzip, deflate" + }, + { + "name": ":method", + "value": "GET" + }, + { + "name": ":path", + "value": "/models/ah-test-1704-01/blacklist" + }, + { + "name": ":authority", + "value": "trcc.stg.testr.io" + }, + { + "name": ":scheme", + "value": "http" + }, + { + "name": "x-request-start", + "value": "1590058951.862" + }, + { + "name": "x-up9-source", + "value": "10.48.1.44" + }, + { + "name": "x-up9-destination", + "value": "10.48.2.97:5000" + } + ], + "queryString": [], + "headersSize": -1, + "bodySize": -1 + }, + "response": { + "status": 200, + "statusText": "OK", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "Connection", + "value": "keep-alive" + }, + { + "name": "Content-Type", + "value": "application/json" + }, + { + "name": "Content-Length", + "value": "3" + }, + { + "name": "Access-Control-Allow-Origin", + "value": "http://localhost:3000" + }, + { + "name": "Access-Control-Allow-Credentials", + "value": "true" + }, + { + "name": "Vary", + "value": "Origin" + }, + { + "name": "Server", + "value": "gunicorn/19.9.0" + }, + { + "name": "Date", + "value": "Thu, 21 May 2020 11:02:30 GMT" + }, + { + "name": ":status", + "value": "200" + }, + { + "name": "duration_ms", + "value": "1" + } + ], + "content": { + "size": 3, + "mimeType": "", + "text": "[]\n" + }, + "redirectURL": "", + "headersSize": -1, + "bodySize": 3 + }, + "cache": {}, + "timings": { + "send": -1, + "wait": -1, + "receive": 1 + } + }, + { + "startedDateTime": "2020-05-21T11:02:31.862000+00:00", + "time": 1, + "request": { + "method": "GET", + "url": "http://trcc-api-service/models/aws_kong5/suites/all/runs", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "X-Forwarded-Port", + "value": "443" + }, + { + "name": "Accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "Authorization", + "value": "bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJqSEZ0R1dybjJpY084VnpDYXpaZWUyakpFc2drY1k5ZzhpN2FTbGtielRnIn0.eyJleHAiOjE1OTAwNTkyNDMsImlhdCI6MTU5MDA1ODk0MywiYXV0aF90aW1lIjoxNTkwMDU4NjUxLCJqdGkiOiI1ODYzNmRiMy0wN2IxLTQ2ZDYtOGNiNS01MzEzMDFlZGY4MGYiLCJpc3MiOiJodHRwczovL2F1dGguc3RnLnRlc3RyLmlvL2F1dGgvcmVhbG1zL3Rlc3RyIiwiYXVkIjoiYWNjb3VudCIsInN1YiI6IjBlYWU4ZmFjLTgyYTEtNDUwNi05MWQ0LTA4ZDYxZTI2NWY1NCIsInR5cCI6IkJlYXJlciIsImF6cCI6InJlYWN0LWNsaWVudCIsIm5vbmNlIjoiNTRjMTM5OTktMDg0NS00OWNmLWI1OTAtOTY1ZThjNWI0NmJlIiwic2Vzc2lvbl9zdGF0ZSI6ImY3YjEyOTM1LThmMTctNDc1Zi04NmRhLWQ4NjFjZTYxNWZjNyIsImFjciI6IjAiLCJhbGxvd2VkLW9yaWdpbnMiOlsiaHR0cHM6Ly9zdGcudGVzdHIuaW8iLCJjaHJvbWUtZXh0ZW5zaW9uOi8vbmFkZ2VsamVtbWJna2xkaGNwYWZqbXBtYXBpcGdsY20iLCJodHRwOi8vbG9jYWxob3N0OjMwMDAiXSwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyJhY2NvdW50Ijp7InJvbGVzIjpbIm1hbmFnZS1hY2NvdW50IiwibWFuYWdlLWFjY291bnQtbGlua3MiLCJ2aWV3LXByb2ZpbGUiXX19LCJzY29wZSI6Im9wZW5pZCBwcm9maWxlIGVtYWlsIiwiZ3JvdXBfbWVtYmVyc2hpcCI6WyJzb21lT3JnSWQxMjMiXSwiZW1haWxfdmVyaWZpZWQiOnRydWUsIm5hbWUiOiJSYW1pIEJlcm1hbiIsInByZWZlcnJlZF91c2VybmFtZSI6InJhbWkuYmVybWFuQHVwOS5jb20iLCJnaXZlbl9uYW1lIjoiUmFtaSIsImZhbWlseV9uYW1lIjoiQmVybWFuIiwiZ3JvdXBfc3ViZG9tYWluIjoic29tZU9yZ0lkMTIzIiwiZW1haWwiOiJyYW1pLmJlcm1hbkB1cDkuY29tIiwiZmVhdHVyZUZsYWdzIjp7ImVkaXRFbmRwb2ludFZhcmlhYmxlcyI6dHJ1ZSwic2lkZU5hdmlnYXRpb24iOnRydWV9fQ.UEDsnoo9A8CbdIYKXoOrAAq6y2K7Aoqf-PplHhXFoVep9ewwA9qBjXqgn0fK9cnE_KfZKUcX_cy1HDhhdIfR_aHpbWWhQ3gxISkE6ALka18JIrUv7bFaHKio6eEP6tgn34QVP8aQVEB3e3g7h3dLuUvZ1xIMnt6fy03tD3KgiQlvdHwg5FhJLosiCrHgboEqN5VH_f_2QF33XiXTkDG1e-AOEnIIWqloMDTUPZEUvEo_KH68lB0Uu23YhhI5gPAuKQVb_UjFWcF_6Ysvk3C3j0cuk09DZ7YEI1u-bKp58LHnsS6gqNFQxy-CDlZ8Oht5d2I3LbwZZxHzMixzzFzJCA" + }, + { + "name": "User-Agent", + "value": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36" + }, + { + "name": "Referer", + "value": "https://stg.testr.io/someOrgId123/model/aws_kong5/lastResults/systems/all/runs" + }, + { + "name": "X-Real-Ip", + "value": "10.132.0.11" + }, + { + "name": "Sec-Fetch-Dest", + "value": "empty" + }, + { + "name": "X-Forwarded-For", + "value": "10.132.0.11" + }, + { + "name": "X-Forwarded-Host", + "value": "trcc.stg.testr.io" + }, + { + "name": "X-Forwarded-Proto", + "value": "https" + }, + { + "name": "Sec-Fetch-Site", + "value": "same-site" + }, + { + "name": "Accept-Language", + "value": "en-IL,en-US;q=0.9,en;q=0.8,he;q=0.7,pl;q=0.6,ru;q=0.5" + }, + { + "name": "X-Request-Id", + "value": "f94c8c1748fabe1b38b71836f84f6bb5" + }, + { + "name": "X-Scheme", + "value": "https" + }, + { + "name": "Dnt", + "value": "1" + }, + { + "name": "Origin", + "value": "https://stg.testr.io" + }, + { + "name": "Sec-Fetch-Mode", + "value": "cors" + }, + { + "name": "Accept-Encoding", + "value": "gzip, deflate, br" + }, + { + "name": ":method", + "value": "GET" + }, + { + "name": ":path", + "value": "/models/aws_kong5/suites/all/runs" + }, + { + "name": ":authority", + "value": "trcc.stg.testr.io" + }, + { + "name": ":scheme", + "value": "http" + }, + { + "name": "x-request-start", + "value": "1590058951.862" + }, + { + "name": "x-up9-source", + "value": "10.48.1.44" + }, + { + "name": "x-up9-destination", + "value": "10.48.2.97:5000" + } + ], + "queryString": [], + "headersSize": -1, + "bodySize": -1 + }, + "response": { + "status": 200, + "statusText": "OK", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "Connection", + "value": "keep-alive" + }, + { + "name": "Content-Type", + "value": "application/json" + }, + { + "name": "Content-Length", + "value": "3" + }, + { + "name": "Access-Control-Allow-Origin", + "value": "https://stg.testr.io" + }, + { + "name": "Access-Control-Allow-Credentials", + "value": "true" + }, + { + "name": "Vary", + "value": "Origin" + }, + { + "name": "Server", + "value": "gunicorn/19.9.0" + }, + { + "name": "Date", + "value": "Thu, 21 May 2020 11:02:31 GMT" + }, + { + "name": ":status", + "value": "200" + }, + { + "name": "duration_ms", + "value": "1" + } + ], + "content": { + "size": 3, + "mimeType": "", + "text": "[]\n" + }, + "redirectURL": "", + "headersSize": -1, + "bodySize": 3 + }, + "cache": {}, + "timings": { + "send": -1, + "wait": -1, + "receive": 1 + } + }, + { + "startedDateTime": "2020-05-21T11:02:31.863000+00:00", + "time": 1, + "request": { + "method": "GET", + "url": "http://trcc-api-service/models/ah-0319/blacklist", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "X-Forwarded-Proto", + "value": "https" + }, + { + "name": "X-Scheme", + "value": "https" + }, + { + "name": "User-Agent", + "value": "python-requests/2.23.0" + }, + { + "name": "X-Real-Ip", + "value": "10.132.0.85" + }, + { + "name": "X-Forwarded-For", + "value": "10.132.0.85" + }, + { + "name": "X-Forwarded-Host", + "value": "trcc.stg.testr.io" + }, + { + "name": "X-Forwarded-Port", + "value": "443" + }, + { + "name": "Accept-Encoding", + "value": "gzip, deflate" + }, + { + "name": "Accept", + "value": "*/*" + }, + { + "name": "Authorization", + "value": "Bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJqSEZ0R1dybjJpY084VnpDYXpaZWUyakpFc2drY1k5ZzhpN2FTbGtielRnIn0.eyJleHAiOjE1OTAwNTkxMzUsImlhdCI6MTU5MDA1ODgzNSwianRpIjoiNjNiMWU3ODgtMmI3MC00ZDY0LTk1NDEtNTdmYzVmMTY3ZDg1IiwiaXNzIjoiaHR0cHM6Ly9hdXRoLnN0Zy50ZXN0ci5pby9hdXRoL3JlYWxtcy90ZXN0ciIsImF1ZCI6ImFjY291bnQiLCJzdWIiOiI0YWFkZWM0Mi01OWE5LTRmZDUtODI3NC1lZWI5NDNmODQyNmUiLCJ0eXAiOiJCZWFyZXIiLCJhenAiOiIzWjE5LTNzYnN2MU9KSDBEd2l2UWkyYmZVSzdsSlNFdSIsInNlc3Npb25fc3RhdGUiOiJkOTA0NjBhOC05NjBmLTRjZTYtYjczMS1hNGEwMDQ2ZTk2MzQiLCJhY3IiOiIxIiwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyJhY2NvdW50Ijp7InJvbGVzIjpbIm1hbmFnZS1hY2NvdW50IiwibWFuYWdlLWFjY291bnQtbGlua3MiLCJ2aWV3LXByb2ZpbGUiXX19LCJzY29wZSI6InByb2ZpbGUgZW1haWwiLCJjbGllbnRJZCI6IjNaMTktM3Nic3YxT0pIMER3aXZRaTJiZlVLN2xKU0V1IiwiY2xpZW50SG9zdCI6IjEwLjEzMi4wLjMwIiwiZW1haWxfdmVyaWZpZWQiOmZhbHNlLCJvcmdhbml6YXRpb24iOiJzb21lT3JnSWQxMjMiLCJwcmVmZXJyZWRfdXNlcm5hbWUiOiJzZXJ2aWNlLWFjY291bnQtM3oxOS0zc2JzdjFvamgwZHdpdnFpMmJmdWs3bGpzZXUiLCJjbGllbnRBZGRyZXNzIjoiMTAuMTMyLjAuMzAiLCJlbWFpbCI6InNlcnZpY2UtYWNjb3VudC0zejE5LTNzYnN2MW9qaDBkd2l2cWkyYmZ1azdsanNldUBwbGFjZWhvbGRlci5vcmcifQ.NbnASo0pxkWkTTA8IP3BGVX__bw97K9EDfG4eGHg9QVb14Dfwh4TCvjoL2lxj3v_32hHcHWU6BL2rlztd1gSeheVR_XN39Q8_DkU3CWDuI05ndqPs5BuXu5sJ0KsfJP1lR-GOB_na0HHImLNWdNVQanTmFIsyWPAVcISirIfwhRhei5d730-JXiASbF2lnNOyvnGvFEj2NtgQjF5PZwG_7Qici7Mq-PE5z6LX9t6xuWVqPnryHGQLgl3EPBkWyzdA0UhG0nIitW5xKNdCq3wo9fwAigW7QNLdqjrrWGVglDnp6olg_eF915mbyWtnYXq3vFZpbhXKH0NEYD5gjkTRw" + }, + { + "name": "X-Request-Id", + "value": "e68aa8a6685015dc6aa1811b3f4f36e5" + }, + { + "name": ":method", + "value": "GET" + }, + { + "name": ":path", + "value": "/models/ah-0319/blacklist" + }, + { + "name": ":authority", + "value": "trcc.stg.testr.io" + }, + { + "name": ":scheme", + "value": "http" + }, + { + "name": "x-request-start", + "value": "1590058951.863" + }, + { + "name": "x-up9-source", + "value": "10.48.1.44" + }, + { + "name": "x-up9-destination", + "value": "10.48.2.97:5000" + } + ], + "queryString": [], + "headersSize": -1, + "bodySize": -1 + }, + "response": { + "status": 200, + "statusText": "OK", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "Content-Length", + "value": "3" + }, + { + "name": "Access-Control-Allow-Origin", + "value": "http://localhost:3000" + }, + { + "name": "Access-Control-Allow-Credentials", + "value": "true" + }, + { + "name": "Vary", + "value": "Origin" + }, + { + "name": "Server", + "value": "gunicorn/19.9.0" + }, + { + "name": "Date", + "value": "Thu, 21 May 2020 11:02:31 GMT" + }, + { + "name": "Connection", + "value": "keep-alive" + }, + { + "name": "Content-Type", + "value": "application/json" + }, + { + "name": ":status", + "value": "200" + }, + { + "name": "duration_ms", + "value": "1" + } + ], + "content": { + "size": 3, + "mimeType": "", + "text": "[]\n" + }, + "redirectURL": "", + "headersSize": -1, + "bodySize": 3 + }, + "cache": {}, + "timings": { + "send": -1, + "wait": -1, + "receive": 1 + } + }, + { + "startedDateTime": "2020-05-21T11:02:31.863000+00:00", + "time": 1, + "request": { + "method": "GET", + "url": "http://trcc-api-service/models/ah-0329-01/blacklist", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "X-Request-Id", + "value": "0f6888202501664072a2709fe267f066" + }, + { + "name": "X-Forwarded-For", + "value": "10.132.0.85" + }, + { + "name": "X-Scheme", + "value": "https" + }, + { + "name": "User-Agent", + "value": "python-requests/2.23.0" + }, + { + "name": "Accept", + "value": "*/*" + }, + { + "name": "Authorization", + "value": "Bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJqSEZ0R1dybjJpY084VnpDYXpaZWUyakpFc2drY1k5ZzhpN2FTbGtielRnIn0.eyJleHAiOjE1OTAwNTkxMzUsImlhdCI6MTU5MDA1ODgzNSwianRpIjoiNjNiMWU3ODgtMmI3MC00ZDY0LTk1NDEtNTdmYzVmMTY3ZDg1IiwiaXNzIjoiaHR0cHM6Ly9hdXRoLnN0Zy50ZXN0ci5pby9hdXRoL3JlYWxtcy90ZXN0ciIsImF1ZCI6ImFjY291bnQiLCJzdWIiOiI0YWFkZWM0Mi01OWE5LTRmZDUtODI3NC1lZWI5NDNmODQyNmUiLCJ0eXAiOiJCZWFyZXIiLCJhenAiOiIzWjE5LTNzYnN2MU9KSDBEd2l2UWkyYmZVSzdsSlNFdSIsInNlc3Npb25fc3RhdGUiOiJkOTA0NjBhOC05NjBmLTRjZTYtYjczMS1hNGEwMDQ2ZTk2MzQiLCJhY3IiOiIxIiwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyJhY2NvdW50Ijp7InJvbGVzIjpbIm1hbmFnZS1hY2NvdW50IiwibWFuYWdlLWFjY291bnQtbGlua3MiLCJ2aWV3LXByb2ZpbGUiXX19LCJzY29wZSI6InByb2ZpbGUgZW1haWwiLCJjbGllbnRJZCI6IjNaMTktM3Nic3YxT0pIMER3aXZRaTJiZlVLN2xKU0V1IiwiY2xpZW50SG9zdCI6IjEwLjEzMi4wLjMwIiwiZW1haWxfdmVyaWZpZWQiOmZhbHNlLCJvcmdhbml6YXRpb24iOiJzb21lT3JnSWQxMjMiLCJwcmVmZXJyZWRfdXNlcm5hbWUiOiJzZXJ2aWNlLWFjY291bnQtM3oxOS0zc2JzdjFvamgwZHdpdnFpMmJmdWs3bGpzZXUiLCJjbGllbnRBZGRyZXNzIjoiMTAuMTMyLjAuMzAiLCJlbWFpbCI6InNlcnZpY2UtYWNjb3VudC0zejE5LTNzYnN2MW9qaDBkd2l2cWkyYmZ1azdsanNldUBwbGFjZWhvbGRlci5vcmcifQ.NbnASo0pxkWkTTA8IP3BGVX__bw97K9EDfG4eGHg9QVb14Dfwh4TCvjoL2lxj3v_32hHcHWU6BL2rlztd1gSeheVR_XN39Q8_DkU3CWDuI05ndqPs5BuXu5sJ0KsfJP1lR-GOB_na0HHImLNWdNVQanTmFIsyWPAVcISirIfwhRhei5d730-JXiASbF2lnNOyvnGvFEj2NtgQjF5PZwG_7Qici7Mq-PE5z6LX9t6xuWVqPnryHGQLgl3EPBkWyzdA0UhG0nIitW5xKNdCq3wo9fwAigW7QNLdqjrrWGVglDnp6olg_eF915mbyWtnYXq3vFZpbhXKH0NEYD5gjkTRw" + }, + { + "name": "X-Real-Ip", + "value": "10.132.0.85" + }, + { + "name": "X-Forwarded-Host", + "value": "trcc.stg.testr.io" + }, + { + "name": "X-Forwarded-Port", + "value": "443" + }, + { + "name": "X-Forwarded-Proto", + "value": "https" + }, + { + "name": "Accept-Encoding", + "value": "gzip, deflate" + }, + { + "name": ":method", + "value": "GET" + }, + { + "name": ":path", + "value": "/models/ah-0329-01/blacklist" + }, + { + "name": ":authority", + "value": "trcc.stg.testr.io" + }, + { + "name": ":scheme", + "value": "http" + }, + { + "name": "x-request-start", + "value": "1590058951.863" + }, + { + "name": "x-up9-source", + "value": "10.48.1.44" + }, + { + "name": "x-up9-destination", + "value": "10.48.2.97:5000" + } + ], + "queryString": [], + "headersSize": -1, + "bodySize": -1 + }, + "response": { + "status": 200, + "statusText": "OK", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "Access-Control-Allow-Credentials", + "value": "true" + }, + { + "name": "Vary", + "value": "Origin" + }, + { + "name": "Server", + "value": "gunicorn/19.9.0" + }, + { + "name": "Date", + "value": "Thu, 21 May 2020 11:02:31 GMT" + }, + { + "name": "Connection", + "value": "keep-alive" + }, + { + "name": "Content-Type", + "value": "application/json" + }, + { + "name": "Content-Length", + "value": "3" + }, + { + "name": "Access-Control-Allow-Origin", + "value": "http://localhost:3000" + }, + { + "name": ":status", + "value": "200" + }, + { + "name": "duration_ms", + "value": "1" + } + ], + "content": { + "size": 3, + "mimeType": "", + "text": "[]\n" + }, + "redirectURL": "", + "headersSize": -1, + "bodySize": 3 + }, + "cache": {}, + "timings": { + "send": -1, + "wait": -1, + "receive": 1 + } + }, + { + "startedDateTime": "2020-05-21T11:02:32.027000+00:00", + "time": 1, + "request": { + "method": "GET", + "url": "http://trcc-api-service/models/roee/blacklist", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "X-Forwarded-Port", + "value": "443" + }, + { + "name": "X-Scheme", + "value": "https" + }, + { + "name": "Accept", + "value": "*/*" + }, + { + "name": "Authorization", + "value": "Bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJqSEZ0R1dybjJpY084VnpDYXpaZWUyakpFc2drY1k5ZzhpN2FTbGtielRnIn0.eyJleHAiOjE1OTAwNTkxMzUsImlhdCI6MTU5MDA1ODgzNSwianRpIjoiNjNiMWU3ODgtMmI3MC00ZDY0LTk1NDEtNTdmYzVmMTY3ZDg1IiwiaXNzIjoiaHR0cHM6Ly9hdXRoLnN0Zy50ZXN0ci5pby9hdXRoL3JlYWxtcy90ZXN0ciIsImF1ZCI6ImFjY291bnQiLCJzdWIiOiI0YWFkZWM0Mi01OWE5LTRmZDUtODI3NC1lZWI5NDNmODQyNmUiLCJ0eXAiOiJCZWFyZXIiLCJhenAiOiIzWjE5LTNzYnN2MU9KSDBEd2l2UWkyYmZVSzdsSlNFdSIsInNlc3Npb25fc3RhdGUiOiJkOTA0NjBhOC05NjBmLTRjZTYtYjczMS1hNGEwMDQ2ZTk2MzQiLCJhY3IiOiIxIiwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyJhY2NvdW50Ijp7InJvbGVzIjpbIm1hbmFnZS1hY2NvdW50IiwibWFuYWdlLWFjY291bnQtbGlua3MiLCJ2aWV3LXByb2ZpbGUiXX19LCJzY29wZSI6InByb2ZpbGUgZW1haWwiLCJjbGllbnRJZCI6IjNaMTktM3Nic3YxT0pIMER3aXZRaTJiZlVLN2xKU0V1IiwiY2xpZW50SG9zdCI6IjEwLjEzMi4wLjMwIiwiZW1haWxfdmVyaWZpZWQiOmZhbHNlLCJvcmdhbml6YXRpb24iOiJzb21lT3JnSWQxMjMiLCJwcmVmZXJyZWRfdXNlcm5hbWUiOiJzZXJ2aWNlLWFjY291bnQtM3oxOS0zc2JzdjFvamgwZHdpdnFpMmJmdWs3bGpzZXUiLCJjbGllbnRBZGRyZXNzIjoiMTAuMTMyLjAuMzAiLCJlbWFpbCI6InNlcnZpY2UtYWNjb3VudC0zejE5LTNzYnN2MW9qaDBkd2l2cWkyYmZ1azdsanNldUBwbGFjZWhvbGRlci5vcmcifQ.NbnASo0pxkWkTTA8IP3BGVX__bw97K9EDfG4eGHg9QVb14Dfwh4TCvjoL2lxj3v_32hHcHWU6BL2rlztd1gSeheVR_XN39Q8_DkU3CWDuI05ndqPs5BuXu5sJ0KsfJP1lR-GOB_na0HHImLNWdNVQanTmFIsyWPAVcISirIfwhRhei5d730-JXiASbF2lnNOyvnGvFEj2NtgQjF5PZwG_7Qici7Mq-PE5z6LX9t6xuWVqPnryHGQLgl3EPBkWyzdA0UhG0nIitW5xKNdCq3wo9fwAigW7QNLdqjrrWGVglDnp6olg_eF915mbyWtnYXq3vFZpbhXKH0NEYD5gjkTRw" + }, + { + "name": "X-Request-Id", + "value": "c2bbe957cef8a7aa8f9d2f77c628f19f" + }, + { + "name": "X-Forwarded-Host", + "value": "trcc.stg.testr.io" + }, + { + "name": "X-Forwarded-For", + "value": "10.132.0.85" + }, + { + "name": "X-Forwarded-Proto", + "value": "https" + }, + { + "name": "User-Agent", + "value": "python-requests/2.23.0" + }, + { + "name": "Accept-Encoding", + "value": "gzip, deflate" + }, + { + "name": "X-Real-Ip", + "value": "10.132.0.85" + }, + { + "name": ":method", + "value": "GET" + }, + { + "name": ":path", + "value": "/models/roee/blacklist" + }, + { + "name": ":authority", + "value": "trcc.stg.testr.io" + }, + { + "name": ":scheme", + "value": "http" + }, + { + "name": "x-request-start", + "value": "1590058952.027" + }, + { + "name": "x-up9-source", + "value": "10.48.1.44" + }, + { + "name": "x-up9-destination", + "value": "10.48.0.155:5000" + } + ], + "queryString": [], + "headersSize": -1, + "bodySize": -1 + }, + "response": { + "status": 200, + "statusText": "OK", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "Server", + "value": "gunicorn/19.9.0" + }, + { + "name": "Date", + "value": "Thu, 21 May 2020 11:02:31 GMT" + }, + { + "name": "Connection", + "value": "keep-alive" + }, + { + "name": "Content-Type", + "value": "application/json" + }, + { + "name": "Content-Length", + "value": "3" + }, + { + "name": "Access-Control-Allow-Origin", + "value": "http://localhost:3000" + }, + { + "name": "Access-Control-Allow-Credentials", + "value": "true" + }, + { + "name": "Vary", + "value": "Origin" + }, + { + "name": ":status", + "value": "200" + }, + { + "name": "duration_ms", + "value": "1" + } + ], + "content": { + "size": 3, + "mimeType": "", + "text": "[]\n" + }, + "redirectURL": "", + "headersSize": -1, + "bodySize": 3 + }, + "cache": {}, + "timings": { + "send": -1, + "wait": -1, + "receive": 1 + } + }, + { + "startedDateTime": "2020-05-21T11:02:31.863000+00:00", + "time": 1, + "request": { + "method": "POST", + "url": "http://trcc-api-service/tapping/state", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "X-Request-Id", + "value": "98e8251d2c4ca662d702fcf91fe45197" + }, + { + "name": "X-Scheme", + "value": "https" + }, + { + "name": "X-Forwarded-For", + "value": "10.132.0.34" + }, + { + "name": "User-Agent", + "value": "python-requests/2.23.0" + }, + { + "name": "X-Forwarded-Host", + "value": "trcc.stg.testr.io" + }, + { + "name": "X-Forwarded-Port", + "value": "443" + }, + { + "name": "Authorization", + "value": "Bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJqSEZ0R1dybjJpY084VnpDYXpaZWUyakpFc2drY1k5ZzhpN2FTbGtielRnIn0.eyJleHAiOjE1OTAwNTkwNDQsImlhdCI6MTU5MDA1ODc0NCwianRpIjoiNDM0YTkyOGUtNDU3Yi00MTFhLTg1MmEtYTkyMGIzOTM1ZGJmIiwiaXNzIjoiaHR0cHM6Ly9hdXRoLnN0Zy50ZXN0ci5pby9hdXRoL3JlYWxtcy90ZXN0ciIsImF1ZCI6ImFjY291bnQiLCJzdWIiOiI0YWFkZWM0Mi01OWE5LTRmZDUtODI3NC1lZWI5NDNmODQyNmUiLCJ0eXAiOiJCZWFyZXIiLCJhenAiOiIzWjE5LTNzYnN2MU9KSDBEd2l2UWkyYmZVSzdsSlNFdSIsInNlc3Npb25fc3RhdGUiOiJmNWI3YzhhYi0zNmJlLTRhZTgtOTgzNS0xMzBkMzcwN2NlODkiLCJhY3IiOiIxIiwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyJhY2NvdW50Ijp7InJvbGVzIjpbIm1hbmFnZS1hY2NvdW50IiwibWFuYWdlLWFjY291bnQtbGlua3MiLCJ2aWV3LXByb2ZpbGUiXX19LCJzY29wZSI6InByb2ZpbGUgZW1haWwiLCJjbGllbnRJZCI6IjNaMTktM3Nic3YxT0pIMER3aXZRaTJiZlVLN2xKU0V1IiwiY2xpZW50SG9zdCI6IjEwLjEzMi4wLjM0IiwiZW1haWxfdmVyaWZpZWQiOmZhbHNlLCJvcmdhbml6YXRpb24iOiJzb21lT3JnSWQxMjMiLCJwcmVmZXJyZWRfdXNlcm5hbWUiOiJzZXJ2aWNlLWFjY291bnQtM3oxOS0zc2JzdjFvamgwZHdpdnFpMmJmdWs3bGpzZXUiLCJjbGllbnRBZGRyZXNzIjoiMTAuMTMyLjAuMzQiLCJlbWFpbCI6InNlcnZpY2UtYWNjb3VudC0zejE5LTNzYnN2MW9qaDBkd2l2cWkyYmZ1azdsanNldUBwbGFjZWhvbGRlci5vcmcifQ.JDy7Ksc_cbK6UWMSAHB6RWe4tXDKxjbbMgPwR_Bvwh7Oz6QakLN1aGjzIjat37dXPJBqLm8QnkuweErKVCeB1fib932UtTxzkYXquBsHptT-1J_-mYiEHaJfnbr5f-jCSPbJXK-ari5S4sy_S5a7YzvMe8qrL13KrwAar-7rLysC67v-3dLUUGSXHl0NVGELFANfTCfm95RRkRALwGR_7FbkG8z_wDdyrSJ64AJdhqVHfq8-uDSywPrzvST2eUVpA4kB9Xa_yYn1VUugawVFv_CHDAfYnpmI5O_LmAXwHT2CmvYxbeEXJAQvvChdFMEAl6GSBqdEn3EgD4vNMCzYBw" + }, + { + "name": "Content-Type", + "value": "application/json" + }, + { + "name": "X-Real-Ip", + "value": "10.132.0.34" + }, + { + "name": "X-Forwarded-Proto", + "value": "https" + }, + { + "name": "Content-Length", + "value": "226" + }, + { + "name": "Accept-Encoding", + "value": "gzip, deflate" + }, + { + "name": "Accept", + "value": "*/*" + }, + { + "name": ":method", + "value": "POST" + }, + { + "name": ":path", + "value": "/tapping/state" + }, + { + "name": ":authority", + "value": "trcc.stg.testr.io" + }, + { + "name": ":scheme", + "value": "http" + }, + { + "name": "x-request-start", + "value": "1590058951.863" + }, + { + "name": "x-up9-source", + "value": "10.48.1.44" + }, + { + "name": "x-up9-destination", + "value": "10.48.2.97:5000" + } + ], + "queryString": [], + "headersSize": -1, + "bodySize": -1, + "postData": { + "mimeType": "", + "text": "{\"data\": [{\"id\": \"e677a5bc-0542-11ea-a607-42010a8400ce_tradmin_trcc-api-deployment-stable\", \"instance_id\": \"trcc-api-deployment-stable-559db9f988-gblcd\", \"ip\": \"10.48.2.97\", \"type\": \"passive\", \"agentName\": \"stg-cloud-agent\"}]}" + } + }, + "response": { + "status": 200, + "statusText": "OK", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "Access-Control-Allow-Credentials", + "value": "true" + }, + { + "name": "Vary", + "value": "Origin" + }, + { + "name": "Server", + "value": "gunicorn/19.9.0" + }, + { + "name": "Date", + "value": "Thu, 21 May 2020 11:02:31 GMT" + }, + { + "name": "Connection", + "value": "keep-alive" + }, + { + "name": "Content-Type", + "value": "text/html; charset=utf-8" + }, + { + "name": "Content-Length", + "value": "2" + }, + { + "name": "Access-Control-Allow-Origin", + "value": "http://localhost:3000" + }, + { + "name": ":status", + "value": "200" + }, + { + "name": "duration_ms", + "value": "1" + } + ], + "content": { + "size": 2, + "mimeType": "", + "text": "Ok" + }, + "redirectURL": "", + "headersSize": -1, + "bodySize": 2 + }, + "cache": {}, + "timings": { + "send": -1, + "wait": -1, + "receive": 1 + } + }, + { + "startedDateTime": "2020-05-21T11:02:32.027000+00:00", + "time": 1, + "request": { + "method": "GET", + "url": "http://trcc-api-service/models/rami-endpoints/blacklist", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "User-Agent", + "value": "python-requests/2.23.0" + }, + { + "name": "Accept", + "value": "*/*" + }, + { + "name": "X-Real-Ip", + "value": "10.132.0.85" + }, + { + "name": "X-Forwarded-For", + "value": "10.132.0.85" + }, + { + "name": "X-Forwarded-Port", + "value": "443" + }, + { + "name": "X-Forwarded-Proto", + "value": "https" + }, + { + "name": "X-Scheme", + "value": "https" + }, + { + "name": "Authorization", + "value": "Bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJqSEZ0R1dybjJpY084VnpDYXpaZWUyakpFc2drY1k5ZzhpN2FTbGtielRnIn0.eyJleHAiOjE1OTAwNTkxMzUsImlhdCI6MTU5MDA1ODgzNSwianRpIjoiNjNiMWU3ODgtMmI3MC00ZDY0LTk1NDEtNTdmYzVmMTY3ZDg1IiwiaXNzIjoiaHR0cHM6Ly9hdXRoLnN0Zy50ZXN0ci5pby9hdXRoL3JlYWxtcy90ZXN0ciIsImF1ZCI6ImFjY291bnQiLCJzdWIiOiI0YWFkZWM0Mi01OWE5LTRmZDUtODI3NC1lZWI5NDNmODQyNmUiLCJ0eXAiOiJCZWFyZXIiLCJhenAiOiIzWjE5LTNzYnN2MU9KSDBEd2l2UWkyYmZVSzdsSlNFdSIsInNlc3Npb25fc3RhdGUiOiJkOTA0NjBhOC05NjBmLTRjZTYtYjczMS1hNGEwMDQ2ZTk2MzQiLCJhY3IiOiIxIiwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyJhY2NvdW50Ijp7InJvbGVzIjpbIm1hbmFnZS1hY2NvdW50IiwibWFuYWdlLWFjY291bnQtbGlua3MiLCJ2aWV3LXByb2ZpbGUiXX19LCJzY29wZSI6InByb2ZpbGUgZW1haWwiLCJjbGllbnRJZCI6IjNaMTktM3Nic3YxT0pIMER3aXZRaTJiZlVLN2xKU0V1IiwiY2xpZW50SG9zdCI6IjEwLjEzMi4wLjMwIiwiZW1haWxfdmVyaWZpZWQiOmZhbHNlLCJvcmdhbml6YXRpb24iOiJzb21lT3JnSWQxMjMiLCJwcmVmZXJyZWRfdXNlcm5hbWUiOiJzZXJ2aWNlLWFjY291bnQtM3oxOS0zc2JzdjFvamgwZHdpdnFpMmJmdWs3bGpzZXUiLCJjbGllbnRBZGRyZXNzIjoiMTAuMTMyLjAuMzAiLCJlbWFpbCI6InNlcnZpY2UtYWNjb3VudC0zejE5LTNzYnN2MW9qaDBkd2l2cWkyYmZ1azdsanNldUBwbGFjZWhvbGRlci5vcmcifQ.NbnASo0pxkWkTTA8IP3BGVX__bw97K9EDfG4eGHg9QVb14Dfwh4TCvjoL2lxj3v_32hHcHWU6BL2rlztd1gSeheVR_XN39Q8_DkU3CWDuI05ndqPs5BuXu5sJ0KsfJP1lR-GOB_na0HHImLNWdNVQanTmFIsyWPAVcISirIfwhRhei5d730-JXiASbF2lnNOyvnGvFEj2NtgQjF5PZwG_7Qici7Mq-PE5z6LX9t6xuWVqPnryHGQLgl3EPBkWyzdA0UhG0nIitW5xKNdCq3wo9fwAigW7QNLdqjrrWGVglDnp6olg_eF915mbyWtnYXq3vFZpbhXKH0NEYD5gjkTRw" + }, + { + "name": "X-Request-Id", + "value": "c8b7891c41e2806f21934324bcc00498" + }, + { + "name": "X-Forwarded-Host", + "value": "trcc.stg.testr.io" + }, + { + "name": "Accept-Encoding", + "value": "gzip, deflate" + }, + { + "name": ":method", + "value": "GET" + }, + { + "name": ":path", + "value": "/models/rami-endpoints/blacklist" + }, + { + "name": ":authority", + "value": "trcc.stg.testr.io" + }, + { + "name": ":scheme", + "value": "http" + }, + { + "name": "x-request-start", + "value": "1590058952.027" + }, + { + "name": "x-up9-source", + "value": "10.48.1.44" + }, + { + "name": "x-up9-destination", + "value": "10.48.0.155:5000" + } + ], + "queryString": [], + "headersSize": -1, + "bodySize": -1 + }, + "response": { + "status": 200, + "statusText": "OK", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "Vary", + "value": "Origin" + }, + { + "name": "Server", + "value": "gunicorn/19.9.0" + }, + { + "name": "Date", + "value": "Thu, 21 May 2020 11:02:31 GMT" + }, + { + "name": "Connection", + "value": "keep-alive" + }, + { + "name": "Content-Type", + "value": "application/json" + }, + { + "name": "Content-Length", + "value": "3" + }, + { + "name": "Access-Control-Allow-Origin", + "value": "http://localhost:3000" + }, + { + "name": "Access-Control-Allow-Credentials", + "value": "true" + }, + { + "name": ":status", + "value": "200" + }, + { + "name": "duration_ms", + "value": "1" + } + ], + "content": { + "size": 3, + "mimeType": "", + "text": "[]\n" + }, + "redirectURL": "", + "headersSize": -1, + "bodySize": 3 + }, + "cache": {}, + "timings": { + "send": -1, + "wait": -1, + "receive": 1 + } + }, + { + "startedDateTime": "2020-05-21T11:02:31.864000+00:00", + "time": 2, + "request": { + "method": "GET", + "url": "http://trcc-api-service/models/aaa/blacklist", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "X-Real-Ip", + "value": "10.132.0.85" + }, + { + "name": "X-Forwarded-For", + "value": "10.132.0.85" + }, + { + "name": "X-Forwarded-Proto", + "value": "https" + }, + { + "name": "X-Scheme", + "value": "https" + }, + { + "name": "User-Agent", + "value": "python-requests/2.23.0" + }, + { + "name": "Accept", + "value": "*/*" + }, + { + "name": "Authorization", + "value": "Bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJqSEZ0R1dybjJpY084VnpDYXpaZWUyakpFc2drY1k5ZzhpN2FTbGtielRnIn0.eyJleHAiOjE1OTAwNTkxMzUsImlhdCI6MTU5MDA1ODgzNSwianRpIjoiNjNiMWU3ODgtMmI3MC00ZDY0LTk1NDEtNTdmYzVmMTY3ZDg1IiwiaXNzIjoiaHR0cHM6Ly9hdXRoLnN0Zy50ZXN0ci5pby9hdXRoL3JlYWxtcy90ZXN0ciIsImF1ZCI6ImFjY291bnQiLCJzdWIiOiI0YWFkZWM0Mi01OWE5LTRmZDUtODI3NC1lZWI5NDNmODQyNmUiLCJ0eXAiOiJCZWFyZXIiLCJhenAiOiIzWjE5LTNzYnN2MU9KSDBEd2l2UWkyYmZVSzdsSlNFdSIsInNlc3Npb25fc3RhdGUiOiJkOTA0NjBhOC05NjBmLTRjZTYtYjczMS1hNGEwMDQ2ZTk2MzQiLCJhY3IiOiIxIiwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyJhY2NvdW50Ijp7InJvbGVzIjpbIm1hbmFnZS1hY2NvdW50IiwibWFuYWdlLWFjY291bnQtbGlua3MiLCJ2aWV3LXByb2ZpbGUiXX19LCJzY29wZSI6InByb2ZpbGUgZW1haWwiLCJjbGllbnRJZCI6IjNaMTktM3Nic3YxT0pIMER3aXZRaTJiZlVLN2xKU0V1IiwiY2xpZW50SG9zdCI6IjEwLjEzMi4wLjMwIiwiZW1haWxfdmVyaWZpZWQiOmZhbHNlLCJvcmdhbml6YXRpb24iOiJzb21lT3JnSWQxMjMiLCJwcmVmZXJyZWRfdXNlcm5hbWUiOiJzZXJ2aWNlLWFjY291bnQtM3oxOS0zc2JzdjFvamgwZHdpdnFpMmJmdWs3bGpzZXUiLCJjbGllbnRBZGRyZXNzIjoiMTAuMTMyLjAuMzAiLCJlbWFpbCI6InNlcnZpY2UtYWNjb3VudC0zejE5LTNzYnN2MW9qaDBkd2l2cWkyYmZ1azdsanNldUBwbGFjZWhvbGRlci5vcmcifQ.NbnASo0pxkWkTTA8IP3BGVX__bw97K9EDfG4eGHg9QVb14Dfwh4TCvjoL2lxj3v_32hHcHWU6BL2rlztd1gSeheVR_XN39Q8_DkU3CWDuI05ndqPs5BuXu5sJ0KsfJP1lR-GOB_na0HHImLNWdNVQanTmFIsyWPAVcISirIfwhRhei5d730-JXiASbF2lnNOyvnGvFEj2NtgQjF5PZwG_7Qici7Mq-PE5z6LX9t6xuWVqPnryHGQLgl3EPBkWyzdA0UhG0nIitW5xKNdCq3wo9fwAigW7QNLdqjrrWGVglDnp6olg_eF915mbyWtnYXq3vFZpbhXKH0NEYD5gjkTRw" + }, + { + "name": "X-Forwarded-Host", + "value": "trcc.stg.testr.io" + }, + { + "name": "X-Forwarded-Port", + "value": "443" + }, + { + "name": "Accept-Encoding", + "value": "gzip, deflate" + }, + { + "name": "X-Request-Id", + "value": "00d5de5094251ec3b28e74471ffed8c3" + }, + { + "name": ":method", + "value": "GET" + }, + { + "name": ":path", + "value": "/models/aaa/blacklist" + }, + { + "name": ":authority", + "value": "trcc.stg.testr.io" + }, + { + "name": ":scheme", + "value": "http" + }, + { + "name": "x-request-start", + "value": "1590058951.864" + }, + { + "name": "x-up9-source", + "value": "10.48.1.44" + }, + { + "name": "x-up9-destination", + "value": "10.48.2.97:5000" + } + ], + "queryString": [], + "headersSize": -1, + "bodySize": -1 + }, + "response": { + "status": 200, + "statusText": "OK", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "Access-Control-Allow-Credentials", + "value": "true" + }, + { + "name": "Vary", + "value": "Origin" + }, + { + "name": "Server", + "value": "gunicorn/19.9.0" + }, + { + "name": "Date", + "value": "Thu, 21 May 2020 11:02:31 GMT" + }, + { + "name": "Connection", + "value": "keep-alive" + }, + { + "name": "Content-Type", + "value": "application/json" + }, + { + "name": "Content-Length", + "value": "3" + }, + { + "name": "Access-Control-Allow-Origin", + "value": "http://localhost:3000" + }, + { + "name": ":status", + "value": "200" + }, + { + "name": "duration_ms", + "value": "2" + } + ], + "content": { + "size": 3, + "mimeType": "", + "text": "[]\n" + }, + "redirectURL": "", + "headersSize": -1, + "bodySize": 3 + }, + "cache": {}, + "timings": { + "send": -1, + "wait": -1, + "receive": 2 + } + }, + { + "startedDateTime": "2020-05-21T11:02:32.028000+00:00", + "time": 1, + "request": { + "method": "GET", + "url": "http://trcc-api-service/models/aws_kong5/suites/all/runs", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "X-Forwarded-Proto", + "value": "https" + }, + { + "name": "Accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "Origin", + "value": "https://stg.testr.io" + }, + { + "name": "Sec-Fetch-Dest", + "value": "empty" + }, + { + "name": "Referer", + "value": "https://stg.testr.io/someOrgId123/model/aws_kong5/lastResults/systems/all/runs" + }, + { + "name": "Accept-Encoding", + "value": "gzip, deflate, br" + }, + { + "name": "X-Request-Id", + "value": "e43fb6da93ef51c62441b66bd155a53b" + }, + { + "name": "X-Real-Ip", + "value": "10.132.0.11" + }, + { + "name": "Authorization", + "value": "bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJqSEZ0R1dybjJpY084VnpDYXpaZWUyakpFc2drY1k5ZzhpN2FTbGtielRnIn0.eyJleHAiOjE1OTAwNTkyNDMsImlhdCI6MTU5MDA1ODk0MywiYXV0aF90aW1lIjoxNTkwMDU4NjUxLCJqdGkiOiI1ODYzNmRiMy0wN2IxLTQ2ZDYtOGNiNS01MzEzMDFlZGY4MGYiLCJpc3MiOiJodHRwczovL2F1dGguc3RnLnRlc3RyLmlvL2F1dGgvcmVhbG1zL3Rlc3RyIiwiYXVkIjoiYWNjb3VudCIsInN1YiI6IjBlYWU4ZmFjLTgyYTEtNDUwNi05MWQ0LTA4ZDYxZTI2NWY1NCIsInR5cCI6IkJlYXJlciIsImF6cCI6InJlYWN0LWNsaWVudCIsIm5vbmNlIjoiNTRjMTM5OTktMDg0NS00OWNmLWI1OTAtOTY1ZThjNWI0NmJlIiwic2Vzc2lvbl9zdGF0ZSI6ImY3YjEyOTM1LThmMTctNDc1Zi04NmRhLWQ4NjFjZTYxNWZjNyIsImFjciI6IjAiLCJhbGxvd2VkLW9yaWdpbnMiOlsiaHR0cHM6Ly9zdGcudGVzdHIuaW8iLCJjaHJvbWUtZXh0ZW5zaW9uOi8vbmFkZ2VsamVtbWJna2xkaGNwYWZqbXBtYXBpcGdsY20iLCJodHRwOi8vbG9jYWxob3N0OjMwMDAiXSwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyJhY2NvdW50Ijp7InJvbGVzIjpbIm1hbmFnZS1hY2NvdW50IiwibWFuYWdlLWFjY291bnQtbGlua3MiLCJ2aWV3LXByb2ZpbGUiXX19LCJzY29wZSI6Im9wZW5pZCBwcm9maWxlIGVtYWlsIiwiZ3JvdXBfbWVtYmVyc2hpcCI6WyJzb21lT3JnSWQxMjMiXSwiZW1haWxfdmVyaWZpZWQiOnRydWUsIm5hbWUiOiJSYW1pIEJlcm1hbiIsInByZWZlcnJlZF91c2VybmFtZSI6InJhbWkuYmVybWFuQHVwOS5jb20iLCJnaXZlbl9uYW1lIjoiUmFtaSIsImZhbWlseV9uYW1lIjoiQmVybWFuIiwiZ3JvdXBfc3ViZG9tYWluIjoic29tZU9yZ0lkMTIzIiwiZW1haWwiOiJyYW1pLmJlcm1hbkB1cDkuY29tIiwiZmVhdHVyZUZsYWdzIjp7ImVkaXRFbmRwb2ludFZhcmlhYmxlcyI6dHJ1ZSwic2lkZU5hdmlnYXRpb24iOnRydWV9fQ.UEDsnoo9A8CbdIYKXoOrAAq6y2K7Aoqf-PplHhXFoVep9ewwA9qBjXqgn0fK9cnE_KfZKUcX_cy1HDhhdIfR_aHpbWWhQ3gxISkE6ALka18JIrUv7bFaHKio6eEP6tgn34QVP8aQVEB3e3g7h3dLuUvZ1xIMnt6fy03tD3KgiQlvdHwg5FhJLosiCrHgboEqN5VH_f_2QF33XiXTkDG1e-AOEnIIWqloMDTUPZEUvEo_KH68lB0Uu23YhhI5gPAuKQVb_UjFWcF_6Ysvk3C3j0cuk09DZ7YEI1u-bKp58LHnsS6gqNFQxy-CDlZ8Oht5d2I3LbwZZxHzMixzzFzJCA" + }, + { + "name": "User-Agent", + "value": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36" + }, + { + "name": "Sec-Fetch-Site", + "value": "same-site" + }, + { + "name": "Sec-Fetch-Mode", + "value": "cors" + }, + { + "name": "X-Forwarded-For", + "value": "10.132.0.11" + }, + { + "name": "Dnt", + "value": "1" + }, + { + "name": "Accept-Language", + "value": "en-IL,en-US;q=0.9,en;q=0.8,he;q=0.7,pl;q=0.6,ru;q=0.5" + }, + { + "name": "X-Scheme", + "value": "https" + }, + { + "name": "X-Forwarded-Host", + "value": "trcc.stg.testr.io" + }, + { + "name": "X-Forwarded-Port", + "value": "443" + }, + { + "name": ":method", + "value": "GET" + }, + { + "name": ":path", + "value": "/models/aws_kong5/suites/all/runs" + }, + { + "name": ":authority", + "value": "trcc.stg.testr.io" + }, + { + "name": ":scheme", + "value": "http" + }, + { + "name": "x-request-start", + "value": "1590058952.028" + }, + { + "name": "x-up9-source", + "value": "10.48.1.44" + }, + { + "name": "x-up9-destination", + "value": "10.48.0.155:5000" + } + ], + "queryString": [], + "headersSize": -1, + "bodySize": -1 + }, + "response": { + "status": 200, + "statusText": "OK", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "Date", + "value": "Thu, 21 May 2020 11:02:31 GMT" + }, + { + "name": "Connection", + "value": "keep-alive" + }, + { + "name": "Content-Type", + "value": "application/json" + }, + { + "name": "Content-Length", + "value": "3" + }, + { + "name": "Access-Control-Allow-Origin", + "value": "https://stg.testr.io" + }, + { + "name": "Access-Control-Allow-Credentials", + "value": "true" + }, + { + "name": "Vary", + "value": "Origin" + }, + { + "name": "Server", + "value": "gunicorn/19.9.0" + }, + { + "name": ":status", + "value": "200" + }, + { + "name": "duration_ms", + "value": "1" + } + ], + "content": { + "size": 3, + "mimeType": "", + "text": "[]\n" + }, + "redirectURL": "", + "headersSize": -1, + "bodySize": 3 + }, + "cache": {}, + "timings": { + "send": -1, + "wait": -1, + "receive": 1 + } + }, + { + "startedDateTime": "2020-05-21T11:02:32.028000+00:00", + "time": 1, + "request": { + "method": "GET", + "url": "http://trcc-api-service/models/liraz_test_2105/suites/all/runs", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "X-Forwarded-For", + "value": "10.132.0.22" + }, + { + "name": "X-Forwarded-Port", + "value": "443" + }, + { + "name": "Accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "Authorization", + "value": "bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJqSEZ0R1dybjJpY084VnpDYXpaZWUyakpFc2drY1k5ZzhpN2FTbGtielRnIn0.eyJleHAiOjE1OTAwNTkxMTQsImlhdCI6MTU5MDA1ODgxNCwiYXV0aF90aW1lIjoxNTg5OTU4NDcwLCJqdGkiOiIyNzgxOTYyMy00Yjk5LTQ2MzQtOWZlNi02ZDRiNzYwNGU2ZmMiLCJpc3MiOiJodHRwczovL2F1dGguc3RnLnRlc3RyLmlvL2F1dGgvcmVhbG1zL3Rlc3RyIiwiYXVkIjoiYWNjb3VudCIsInN1YiI6ImU4NzAxMDZjLWJjYjItNDQxMy05Y2Q2LTUwMTZiNTUxMDRlYiIsInR5cCI6IkJlYXJlciIsImF6cCI6InJlYWN0LWNsaWVudCIsIm5vbmNlIjoiYzJiZTgwNGYtZjBiYS00ZWUxLTgyZWQtYmIzMTY5ZDBkYjU1Iiwic2Vzc2lvbl9zdGF0ZSI6IjM2ZDc2MDAxLTE5M2EtNGQ5OS05MTIwLTZmNGZkMjEwZDAxMiIsImFjciI6IjAiLCJhbGxvd2VkLW9yaWdpbnMiOlsiaHR0cHM6Ly9zdGcudGVzdHIuaW8iLCJjaHJvbWUtZXh0ZW5zaW9uOi8vbmFkZ2VsamVtbWJna2xkaGNwYWZqbXBtYXBpcGdsY20iLCJodHRwOi8vbG9jYWxob3N0OjMwMDAiXSwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm1hbmFnZUZlYXR1cmVGbGFncyIsIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyJhY2NvdW50Ijp7InJvbGVzIjpbIm1hbmFnZS1hY2NvdW50IiwibWFuYWdlLWFjY291bnQtbGlua3MiLCJ2aWV3LXByb2ZpbGUiXX19LCJzY29wZSI6Im9wZW5pZCBwcm9maWxlIGVtYWlsIiwiZ3JvdXBfbWVtYmVyc2hpcCI6WyJzb21lT3JnSWQxMjMiXSwiZW1haWxfdmVyaWZpZWQiOnRydWUsIm5hbWUiOiJMaXJheiBZZWhlemtlbCIsInByZWZlcnJlZF91c2VybmFtZSI6ImxpcmF6eUB1cDkuY29tIiwiZ2l2ZW5fbmFtZSI6IkxpcmF6IiwiZmFtaWx5X25hbWUiOiJZZWhlemtlbCIsImdyb3VwX3N1YmRvbWFpbiI6InNvbWVPcmdJZDEyMyIsImVtYWlsIjoibGlyYXp5QHVwOS5jb20iLCJmZWF0dXJlRmxhZ3MiOnsiZWRpdEVuZHBvaW50VmFyaWFibGVzIjp0cnVlLCJzaWRlTmF2aWdhdGlvbiI6dHJ1ZX19.KdLz7jeIr8HaST4FpJROrg6Sp-o1Nl5dU2hIbNCA0FEY-jmaoubiOlz6p7QthTJ8t-S0R_qdZtd7rXf249L6wGG_A6rriZhH41Fxhyrb0ig8OVrQp-sepv_AUf7GEIGYgpYIPFnZ6G3Dkq1aY9NzLXruh7fly_ZRkRlzF_wb1vt5NRJz3xeMrj82BOJJmUpv08AYYQhnyjKiBp7rgrNTTBejaFBozsJgXGkIi-DZfv862tgFhvPNuXsqKO5iOxv9nApuQJ2O4knVB1ag7tqB1xQcvBdkZt9gG1VVkpWsM_2j5C9cBwOuPRgHZhpZuT_YNfB4ITefGV1aYfRF-cjnug" + }, + { + "name": "Accept-Encoding", + "value": "gzip, deflate, br" + }, + { + "name": "X-Scheme", + "value": "https" + }, + { + "name": "X-Real-Ip", + "value": "10.132.0.22" + }, + { + "name": "X-Forwarded-Host", + "value": "trcc.stg.testr.io" + }, + { + "name": "X-Forwarded-Proto", + "value": "https" + }, + { + "name": "Sec-Fetch-Mode", + "value": "cors" + }, + { + "name": "Sec-Fetch-Dest", + "value": "empty" + }, + { + "name": "Referer", + "value": "http://localhost:3000/someOrgId123/model/liraz_test_2105/lastResults/systems/all/summary" + }, + { + "name": "X-Request-Id", + "value": "311e9875978b2bb251d39503f6be11bd" + }, + { + "name": "User-Agent", + "value": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36" + }, + { + "name": "Origin", + "value": "http://localhost:3000" + }, + { + "name": "Sec-Fetch-Site", + "value": "cross-site" + }, + { + "name": "Accept-Language", + "value": "en-US,en;q=0.9" + }, + { + "name": ":method", + "value": "GET" + }, + { + "name": ":path", + "value": "/models/liraz_test_2105/suites/all/runs" + }, + { + "name": ":authority", + "value": "trcc.stg.testr.io" + }, + { + "name": ":scheme", + "value": "http" + }, + { + "name": "x-request-start", + "value": "1590058952.028" + }, + { + "name": "x-up9-source", + "value": "10.48.1.44" + }, + { + "name": "x-up9-destination", + "value": "10.48.0.155:5000" + } + ], + "queryString": [], + "headersSize": -1, + "bodySize": -1 + }, + "response": { + "status": 200, + "statusText": "OK", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "Connection", + "value": "keep-alive" + }, + { + "name": "Content-Type", + "value": "application/json" + }, + { + "name": "Content-Length", + "value": "96" + }, + { + "name": "Access-Control-Allow-Origin", + "value": "https://stg.testr.io" + }, + { + "name": "Access-Control-Allow-Credentials", + "value": "true" + }, + { + "name": "Vary", + "value": "Origin" + }, + { + "name": "Server", + "value": "gunicorn/19.9.0" + }, + { + "name": "Date", + "value": "Thu, 21 May 2020 11:02:31 GMT" + }, + { + "name": ":status", + "value": "200" + }, + { + "name": "duration_ms", + "value": "1" + } + ], + "content": { + "size": 96, + "mimeType": "", + "text": "{\"errorCount\":0,\"lastMajorGeneration\":1589801930.129,\"lastSuccessfulGeneration\":1589801930.129}\n" + }, + "redirectURL": "", + "headersSize": -1, + "bodySize": 96 + }, + "cache": {}, + "timings": { + "send": -1, + "wait": -1, + "receive": 1 + } + }, + { + "startedDateTime": "2020-05-21T11:02:31.867000+00:00", + "time": 1, + "request": { + "method": "GET", + "url": "http://trcc-api-service/models/aws_kong5/suites/all/runs", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "X-Forwarded-Proto", + "value": "https" + }, + { + "name": "Sec-Fetch-Mode", + "value": "cors" + }, + { + "name": "Referer", + "value": "https://stg.testr.io/someOrgId123/model/aws_kong5/lastResults/systems/all/runs" + }, + { + "name": "Accept-Encoding", + "value": "gzip, deflate, br" + }, + { + "name": "Sec-Fetch-Site", + "value": "same-site" + }, + { + "name": "Sec-Fetch-Dest", + "value": "empty" + }, + { + "name": "X-Forwarded-Host", + "value": "trcc.stg.testr.io" + }, + { + "name": "X-Scheme", + "value": "https" + }, + { + "name": "Accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "User-Agent", + "value": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36" + }, + { + "name": "Accept-Language", + "value": "en-IL,en-US;q=0.9,en;q=0.8,he;q=0.7,pl;q=0.6,ru;q=0.5" + }, + { + "name": "X-Request-Id", + "value": "733f83854ae879e4bca5212bdd5ad03d" + }, + { + "name": "X-Forwarded-Port", + "value": "443" + }, + { + "name": "Origin", + "value": "https://stg.testr.io" + }, + { + "name": "X-Real-Ip", + "value": "10.132.0.11" + }, + { + "name": "X-Forwarded-For", + "value": "10.132.0.11" + }, + { + "name": "Dnt", + "value": "1" + }, + { + "name": "Authorization", + "value": "bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJqSEZ0R1dybjJpY084VnpDYXpaZWUyakpFc2drY1k5ZzhpN2FTbGtielRnIn0.eyJleHAiOjE1OTAwNTkyNDMsImlhdCI6MTU5MDA1ODk0MywiYXV0aF90aW1lIjoxNTkwMDU4NjUxLCJqdGkiOiI1ODYzNmRiMy0wN2IxLTQ2ZDYtOGNiNS01MzEzMDFlZGY4MGYiLCJpc3MiOiJodHRwczovL2F1dGguc3RnLnRlc3RyLmlvL2F1dGgvcmVhbG1zL3Rlc3RyIiwiYXVkIjoiYWNjb3VudCIsInN1YiI6IjBlYWU4ZmFjLTgyYTEtNDUwNi05MWQ0LTA4ZDYxZTI2NWY1NCIsInR5cCI6IkJlYXJlciIsImF6cCI6InJlYWN0LWNsaWVudCIsIm5vbmNlIjoiNTRjMTM5OTktMDg0NS00OWNmLWI1OTAtOTY1ZThjNWI0NmJlIiwic2Vzc2lvbl9zdGF0ZSI6ImY3YjEyOTM1LThmMTctNDc1Zi04NmRhLWQ4NjFjZTYxNWZjNyIsImFjciI6IjAiLCJhbGxvd2VkLW9yaWdpbnMiOlsiaHR0cHM6Ly9zdGcudGVzdHIuaW8iLCJjaHJvbWUtZXh0ZW5zaW9uOi8vbmFkZ2VsamVtbWJna2xkaGNwYWZqbXBtYXBpcGdsY20iLCJodHRwOi8vbG9jYWxob3N0OjMwMDAiXSwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyJhY2NvdW50Ijp7InJvbGVzIjpbIm1hbmFnZS1hY2NvdW50IiwibWFuYWdlLWFjY291bnQtbGlua3MiLCJ2aWV3LXByb2ZpbGUiXX19LCJzY29wZSI6Im9wZW5pZCBwcm9maWxlIGVtYWlsIiwiZ3JvdXBfbWVtYmVyc2hpcCI6WyJzb21lT3JnSWQxMjMiXSwiZW1haWxfdmVyaWZpZWQiOnRydWUsIm5hbWUiOiJSYW1pIEJlcm1hbiIsInByZWZlcnJlZF91c2VybmFtZSI6InJhbWkuYmVybWFuQHVwOS5jb20iLCJnaXZlbl9uYW1lIjoiUmFtaSIsImZhbWlseV9uYW1lIjoiQmVybWFuIiwiZ3JvdXBfc3ViZG9tYWluIjoic29tZU9yZ0lkMTIzIiwiZW1haWwiOiJyYW1pLmJlcm1hbkB1cDkuY29tIiwiZmVhdHVyZUZsYWdzIjp7ImVkaXRFbmRwb2ludFZhcmlhYmxlcyI6dHJ1ZSwic2lkZU5hdmlnYXRpb24iOnRydWV9fQ.UEDsnoo9A8CbdIYKXoOrAAq6y2K7Aoqf-PplHhXFoVep9ewwA9qBjXqgn0fK9cnE_KfZKUcX_cy1HDhhdIfR_aHpbWWhQ3gxISkE6ALka18JIrUv7bFaHKio6eEP6tgn34QVP8aQVEB3e3g7h3dLuUvZ1xIMnt6fy03tD3KgiQlvdHwg5FhJLosiCrHgboEqN5VH_f_2QF33XiXTkDG1e-AOEnIIWqloMDTUPZEUvEo_KH68lB0Uu23YhhI5gPAuKQVb_UjFWcF_6Ysvk3C3j0cuk09DZ7YEI1u-bKp58LHnsS6gqNFQxy-CDlZ8Oht5d2I3LbwZZxHzMixzzFzJCA" + }, + { + "name": ":method", + "value": "GET" + }, + { + "name": ":path", + "value": "/models/aws_kong5/suites/all/runs" + }, + { + "name": ":authority", + "value": "trcc.stg.testr.io" + }, + { + "name": ":scheme", + "value": "http" + }, + { + "name": "x-request-start", + "value": "1590058951.867" + }, + { + "name": "x-up9-source", + "value": "10.48.1.44" + }, + { + "name": "x-up9-destination", + "value": "10.48.2.97:5000" + } + ], + "queryString": [], + "headersSize": -1, + "bodySize": -1 + }, + "response": { + "status": 200, + "statusText": "OK", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "Content-Type", + "value": "application/json" + }, + { + "name": "Content-Length", + "value": "3" + }, + { + "name": "Access-Control-Allow-Origin", + "value": "https://stg.testr.io" + }, + { + "name": "Access-Control-Allow-Credentials", + "value": "true" + }, + { + "name": "Vary", + "value": "Origin" + }, + { + "name": "Server", + "value": "gunicorn/19.9.0" + }, + { + "name": "Date", + "value": "Thu, 21 May 2020 11:02:31 GMT" + }, + { + "name": "Connection", + "value": "keep-alive" + }, + { + "name": ":status", + "value": "200" + }, + { + "name": "duration_ms", + "value": "1" + } + ], + "content": { + "size": 3, + "mimeType": "", + "text": "[]\n" + }, + "redirectURL": "", + "headersSize": -1, + "bodySize": 3 + }, + "cache": {}, + "timings": { + "send": -1, + "wait": -1, + "receive": 1 + } + }, + { + "startedDateTime": "2020-05-21T11:02:31.867000+00:00", + "time": 1, + "request": { + "method": "GET", + "url": "http://trcc-api-service/models/aws_kong5/suites/all/runs", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "X-Scheme", + "value": "https" + }, + { + "name": "Accept-Language", + "value": "en-IL,en-US;q=0.9,en;q=0.8,he;q=0.7,pl;q=0.6,ru;q=0.5" + }, + { + "name": "X-Real-Ip", + "value": "10.132.0.11" + }, + { + "name": "X-Forwarded-For", + "value": "10.132.0.11" + }, + { + "name": "X-Forwarded-Proto", + "value": "https" + }, + { + "name": "User-Agent", + "value": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36" + }, + { + "name": "Sec-Fetch-Site", + "value": "same-site" + }, + { + "name": "Referer", + "value": "https://stg.testr.io/someOrgId123/model/aws_kong5/lastResults/systems/all/runs" + }, + { + "name": "Accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "Dnt", + "value": "1" + }, + { + "name": "Origin", + "value": "https://stg.testr.io" + }, + { + "name": "Sec-Fetch-Mode", + "value": "cors" + }, + { + "name": "Sec-Fetch-Dest", + "value": "empty" + }, + { + "name": "Accept-Encoding", + "value": "gzip, deflate, br" + }, + { + "name": "X-Request-Id", + "value": "bf6b3b1b8b6a5a8ee994b3a66e172214" + }, + { + "name": "X-Forwarded-Host", + "value": "trcc.stg.testr.io" + }, + { + "name": "X-Forwarded-Port", + "value": "443" + }, + { + "name": "Authorization", + "value": "bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJqSEZ0R1dybjJpY084VnpDYXpaZWUyakpFc2drY1k5ZzhpN2FTbGtielRnIn0.eyJleHAiOjE1OTAwNTkyNDMsImlhdCI6MTU5MDA1ODk0MywiYXV0aF90aW1lIjoxNTkwMDU4NjUxLCJqdGkiOiI1ODYzNmRiMy0wN2IxLTQ2ZDYtOGNiNS01MzEzMDFlZGY4MGYiLCJpc3MiOiJodHRwczovL2F1dGguc3RnLnRlc3RyLmlvL2F1dGgvcmVhbG1zL3Rlc3RyIiwiYXVkIjoiYWNjb3VudCIsInN1YiI6IjBlYWU4ZmFjLTgyYTEtNDUwNi05MWQ0LTA4ZDYxZTI2NWY1NCIsInR5cCI6IkJlYXJlciIsImF6cCI6InJlYWN0LWNsaWVudCIsIm5vbmNlIjoiNTRjMTM5OTktMDg0NS00OWNmLWI1OTAtOTY1ZThjNWI0NmJlIiwic2Vzc2lvbl9zdGF0ZSI6ImY3YjEyOTM1LThmMTctNDc1Zi04NmRhLWQ4NjFjZTYxNWZjNyIsImFjciI6IjAiLCJhbGxvd2VkLW9yaWdpbnMiOlsiaHR0cHM6Ly9zdGcudGVzdHIuaW8iLCJjaHJvbWUtZXh0ZW5zaW9uOi8vbmFkZ2VsamVtbWJna2xkaGNwYWZqbXBtYXBpcGdsY20iLCJodHRwOi8vbG9jYWxob3N0OjMwMDAiXSwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyJhY2NvdW50Ijp7InJvbGVzIjpbIm1hbmFnZS1hY2NvdW50IiwibWFuYWdlLWFjY291bnQtbGlua3MiLCJ2aWV3LXByb2ZpbGUiXX19LCJzY29wZSI6Im9wZW5pZCBwcm9maWxlIGVtYWlsIiwiZ3JvdXBfbWVtYmVyc2hpcCI6WyJzb21lT3JnSWQxMjMiXSwiZW1haWxfdmVyaWZpZWQiOnRydWUsIm5hbWUiOiJSYW1pIEJlcm1hbiIsInByZWZlcnJlZF91c2VybmFtZSI6InJhbWkuYmVybWFuQHVwOS5jb20iLCJnaXZlbl9uYW1lIjoiUmFtaSIsImZhbWlseV9uYW1lIjoiQmVybWFuIiwiZ3JvdXBfc3ViZG9tYWluIjoic29tZU9yZ0lkMTIzIiwiZW1haWwiOiJyYW1pLmJlcm1hbkB1cDkuY29tIiwiZmVhdHVyZUZsYWdzIjp7ImVkaXRFbmRwb2ludFZhcmlhYmxlcyI6dHJ1ZSwic2lkZU5hdmlnYXRpb24iOnRydWV9fQ.UEDsnoo9A8CbdIYKXoOrAAq6y2K7Aoqf-PplHhXFoVep9ewwA9qBjXqgn0fK9cnE_KfZKUcX_cy1HDhhdIfR_aHpbWWhQ3gxISkE6ALka18JIrUv7bFaHKio6eEP6tgn34QVP8aQVEB3e3g7h3dLuUvZ1xIMnt6fy03tD3KgiQlvdHwg5FhJLosiCrHgboEqN5VH_f_2QF33XiXTkDG1e-AOEnIIWqloMDTUPZEUvEo_KH68lB0Uu23YhhI5gPAuKQVb_UjFWcF_6Ysvk3C3j0cuk09DZ7YEI1u-bKp58LHnsS6gqNFQxy-CDlZ8Oht5d2I3LbwZZxHzMixzzFzJCA" + }, + { + "name": ":method", + "value": "GET" + }, + { + "name": ":path", + "value": "/models/aws_kong5/suites/all/runs" + }, + { + "name": ":authority", + "value": "trcc.stg.testr.io" + }, + { + "name": ":scheme", + "value": "http" + }, + { + "name": "x-request-start", + "value": "1590058951.867" + }, + { + "name": "x-up9-source", + "value": "10.48.1.44" + }, + { + "name": "x-up9-destination", + "value": "10.48.2.97:5000" + } + ], + "queryString": [], + "headersSize": -1, + "bodySize": -1 + }, + "response": { + "status": 200, + "statusText": "OK", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "Connection", + "value": "keep-alive" + }, + { + "name": "Content-Type", + "value": "application/json" + }, + { + "name": "Content-Length", + "value": "3" + }, + { + "name": "Access-Control-Allow-Origin", + "value": "https://stg.testr.io" + }, + { + "name": "Access-Control-Allow-Credentials", + "value": "true" + }, + { + "name": "Vary", + "value": "Origin" + }, + { + "name": "Server", + "value": "gunicorn/19.9.0" + }, + { + "name": "Date", + "value": "Thu, 21 May 2020 11:02:31 GMT" + }, + { + "name": ":status", + "value": "200" + }, + { + "name": "duration_ms", + "value": "1" + } + ], + "content": { + "size": 3, + "mimeType": "", + "text": "[]\n" + }, + "redirectURL": "", + "headersSize": -1, + "bodySize": 3 + }, + "cache": {}, + "timings": { + "send": -1, + "wait": -1, + "receive": 1 + } + }, + { + "startedDateTime": "2020-05-21T11:02:32.029000+00:00", + "time": 1, + "request": { + "method": "GET", + "url": "http://trcc-api-service/models/aws_kong5/suites/all/runs", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "User-Agent", + "value": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36" + }, + { + "name": "Sec-Fetch-Site", + "value": "same-site" + }, + { + "name": "Sec-Fetch-Dest", + "value": "empty" + }, + { + "name": "Referer", + "value": "https://stg.testr.io/someOrgId123/model/aws_kong5/lastResults/systems/all/runs" + }, + { + "name": "Accept-Encoding", + "value": "gzip, deflate, br" + }, + { + "name": "X-Forwarded-Port", + "value": "443" + }, + { + "name": "X-Forwarded-Proto", + "value": "https" + }, + { + "name": "Accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "Accept-Language", + "value": "en-IL,en-US;q=0.9,en;q=0.8,he;q=0.7,pl;q=0.6,ru;q=0.5" + }, + { + "name": "X-Request-Id", + "value": "79bd3a70862f24be29c736eb2751ab2f" + }, + { + "name": "X-Forwarded-Host", + "value": "trcc.stg.testr.io" + }, + { + "name": "Dnt", + "value": "1" + }, + { + "name": "X-Scheme", + "value": "https" + }, + { + "name": "Authorization", + "value": "bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJqSEZ0R1dybjJpY084VnpDYXpaZWUyakpFc2drY1k5ZzhpN2FTbGtielRnIn0.eyJleHAiOjE1OTAwNTkyNDMsImlhdCI6MTU5MDA1ODk0MywiYXV0aF90aW1lIjoxNTkwMDU4NjUxLCJqdGkiOiI1ODYzNmRiMy0wN2IxLTQ2ZDYtOGNiNS01MzEzMDFlZGY4MGYiLCJpc3MiOiJodHRwczovL2F1dGguc3RnLnRlc3RyLmlvL2F1dGgvcmVhbG1zL3Rlc3RyIiwiYXVkIjoiYWNjb3VudCIsInN1YiI6IjBlYWU4ZmFjLTgyYTEtNDUwNi05MWQ0LTA4ZDYxZTI2NWY1NCIsInR5cCI6IkJlYXJlciIsImF6cCI6InJlYWN0LWNsaWVudCIsIm5vbmNlIjoiNTRjMTM5OTktMDg0NS00OWNmLWI1OTAtOTY1ZThjNWI0NmJlIiwic2Vzc2lvbl9zdGF0ZSI6ImY3YjEyOTM1LThmMTctNDc1Zi04NmRhLWQ4NjFjZTYxNWZjNyIsImFjciI6IjAiLCJhbGxvd2VkLW9yaWdpbnMiOlsiaHR0cHM6Ly9zdGcudGVzdHIuaW8iLCJjaHJvbWUtZXh0ZW5zaW9uOi8vbmFkZ2VsamVtbWJna2xkaGNwYWZqbXBtYXBpcGdsY20iLCJodHRwOi8vbG9jYWxob3N0OjMwMDAiXSwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyJhY2NvdW50Ijp7InJvbGVzIjpbIm1hbmFnZS1hY2NvdW50IiwibWFuYWdlLWFjY291bnQtbGlua3MiLCJ2aWV3LXByb2ZpbGUiXX19LCJzY29wZSI6Im9wZW5pZCBwcm9maWxlIGVtYWlsIiwiZ3JvdXBfbWVtYmVyc2hpcCI6WyJzb21lT3JnSWQxMjMiXSwiZW1haWxfdmVyaWZpZWQiOnRydWUsIm5hbWUiOiJSYW1pIEJlcm1hbiIsInByZWZlcnJlZF91c2VybmFtZSI6InJhbWkuYmVybWFuQHVwOS5jb20iLCJnaXZlbl9uYW1lIjoiUmFtaSIsImZhbWlseV9uYW1lIjoiQmVybWFuIiwiZ3JvdXBfc3ViZG9tYWluIjoic29tZU9yZ0lkMTIzIiwiZW1haWwiOiJyYW1pLmJlcm1hbkB1cDkuY29tIiwiZmVhdHVyZUZsYWdzIjp7ImVkaXRFbmRwb2ludFZhcmlhYmxlcyI6dHJ1ZSwic2lkZU5hdmlnYXRpb24iOnRydWV9fQ.UEDsnoo9A8CbdIYKXoOrAAq6y2K7Aoqf-PplHhXFoVep9ewwA9qBjXqgn0fK9cnE_KfZKUcX_cy1HDhhdIfR_aHpbWWhQ3gxISkE6ALka18JIrUv7bFaHKio6eEP6tgn34QVP8aQVEB3e3g7h3dLuUvZ1xIMnt6fy03tD3KgiQlvdHwg5FhJLosiCrHgboEqN5VH_f_2QF33XiXTkDG1e-AOEnIIWqloMDTUPZEUvEo_KH68lB0Uu23YhhI5gPAuKQVb_UjFWcF_6Ysvk3C3j0cuk09DZ7YEI1u-bKp58LHnsS6gqNFQxy-CDlZ8Oht5d2I3LbwZZxHzMixzzFzJCA" + }, + { + "name": "Origin", + "value": "https://stg.testr.io" + }, + { + "name": "Sec-Fetch-Mode", + "value": "cors" + }, + { + "name": "X-Real-Ip", + "value": "10.132.0.11" + }, + { + "name": "X-Forwarded-For", + "value": "10.132.0.11" + }, + { + "name": ":method", + "value": "GET" + }, + { + "name": ":path", + "value": "/models/aws_kong5/suites/all/runs" + }, + { + "name": ":authority", + "value": "trcc.stg.testr.io" + }, + { + "name": ":scheme", + "value": "http" + }, + { + "name": "x-request-start", + "value": "1590058952.029" + }, + { + "name": "x-up9-source", + "value": "10.48.1.44" + }, + { + "name": "x-up9-destination", + "value": "10.48.0.155:5000" + } + ], + "queryString": [], + "headersSize": -1, + "bodySize": -1 + }, + "response": { + "status": 200, + "statusText": "OK", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "Access-Control-Allow-Credentials", + "value": "true" + }, + { + "name": "Vary", + "value": "Origin" + }, + { + "name": "Server", + "value": "gunicorn/19.9.0" + }, + { + "name": "Date", + "value": "Thu, 21 May 2020 11:02:31 GMT" + }, + { + "name": "Connection", + "value": "keep-alive" + }, + { + "name": "Content-Type", + "value": "application/json" + }, + { + "name": "Content-Length", + "value": "3" + }, + { + "name": "Access-Control-Allow-Origin", + "value": "http://localhost:3000" + }, + { + "name": ":status", + "value": "200" + }, + { + "name": "duration_ms", + "value": "1" + } + ], + "content": { + "size": 3, + "mimeType": "", + "text": "[]\n" + }, + "redirectURL": "", + "headersSize": -1, + "bodySize": 3 + }, + "cache": {}, + "timings": { + "send": -1, + "wait": -1, + "receive": 1 + } + }, + { + "startedDateTime": "2020-05-21T11:02:31.868000+00:00", + "time": 1, + "request": { + "method": "GET", + "url": "http://trcc-api-service/models/ngm-1205-aws-no-tapper-04/blacklist", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "X-Forwarded-Proto", + "value": "https" + }, + { + "name": "User-Agent", + "value": "python-requests/2.23.0" + }, + { + "name": "Accept", + "value": "*/*" + }, + { + "name": "X-Request-Id", + "value": "82b37583d79efd21ef95ba697e8a8d5c" + }, + { + "name": "X-Forwarded-For", + "value": "10.132.0.85" + }, + { + "name": "X-Forwarded-Port", + "value": "443" + }, + { + "name": "X-Scheme", + "value": "https" + }, + { + "name": "Accept-Encoding", + "value": "gzip, deflate" + }, + { + "name": "Authorization", + "value": "Bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJqSEZ0R1dybjJpY084VnpDYXpaZWUyakpFc2drY1k5ZzhpN2FTbGtielRnIn0.eyJleHAiOjE1OTAwNTkxMzUsImlhdCI6MTU5MDA1ODgzNSwianRpIjoiNjNiMWU3ODgtMmI3MC00ZDY0LTk1NDEtNTdmYzVmMTY3ZDg1IiwiaXNzIjoiaHR0cHM6Ly9hdXRoLnN0Zy50ZXN0ci5pby9hdXRoL3JlYWxtcy90ZXN0ciIsImF1ZCI6ImFjY291bnQiLCJzdWIiOiI0YWFkZWM0Mi01OWE5LTRmZDUtODI3NC1lZWI5NDNmODQyNmUiLCJ0eXAiOiJCZWFyZXIiLCJhenAiOiIzWjE5LTNzYnN2MU9KSDBEd2l2UWkyYmZVSzdsSlNFdSIsInNlc3Npb25fc3RhdGUiOiJkOTA0NjBhOC05NjBmLTRjZTYtYjczMS1hNGEwMDQ2ZTk2MzQiLCJhY3IiOiIxIiwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyJhY2NvdW50Ijp7InJvbGVzIjpbIm1hbmFnZS1hY2NvdW50IiwibWFuYWdlLWFjY291bnQtbGlua3MiLCJ2aWV3LXByb2ZpbGUiXX19LCJzY29wZSI6InByb2ZpbGUgZW1haWwiLCJjbGllbnRJZCI6IjNaMTktM3Nic3YxT0pIMER3aXZRaTJiZlVLN2xKU0V1IiwiY2xpZW50SG9zdCI6IjEwLjEzMi4wLjMwIiwiZW1haWxfdmVyaWZpZWQiOmZhbHNlLCJvcmdhbml6YXRpb24iOiJzb21lT3JnSWQxMjMiLCJwcmVmZXJyZWRfdXNlcm5hbWUiOiJzZXJ2aWNlLWFjY291bnQtM3oxOS0zc2JzdjFvamgwZHdpdnFpMmJmdWs3bGpzZXUiLCJjbGllbnRBZGRyZXNzIjoiMTAuMTMyLjAuMzAiLCJlbWFpbCI6InNlcnZpY2UtYWNjb3VudC0zejE5LTNzYnN2MW9qaDBkd2l2cWkyYmZ1azdsanNldUBwbGFjZWhvbGRlci5vcmcifQ.NbnASo0pxkWkTTA8IP3BGVX__bw97K9EDfG4eGHg9QVb14Dfwh4TCvjoL2lxj3v_32hHcHWU6BL2rlztd1gSeheVR_XN39Q8_DkU3CWDuI05ndqPs5BuXu5sJ0KsfJP1lR-GOB_na0HHImLNWdNVQanTmFIsyWPAVcISirIfwhRhei5d730-JXiASbF2lnNOyvnGvFEj2NtgQjF5PZwG_7Qici7Mq-PE5z6LX9t6xuWVqPnryHGQLgl3EPBkWyzdA0UhG0nIitW5xKNdCq3wo9fwAigW7QNLdqjrrWGVglDnp6olg_eF915mbyWtnYXq3vFZpbhXKH0NEYD5gjkTRw" + }, + { + "name": "X-Real-Ip", + "value": "10.132.0.85" + }, + { + "name": "X-Forwarded-Host", + "value": "trcc.stg.testr.io" + }, + { + "name": ":method", + "value": "GET" + }, + { + "name": ":path", + "value": "/models/ngm-1205-aws-no-tapper-04/blacklist" + }, + { + "name": ":authority", + "value": "trcc.stg.testr.io" + }, + { + "name": ":scheme", + "value": "http" + }, + { + "name": "x-request-start", + "value": "1590058951.868" + }, + { + "name": "x-up9-source", + "value": "10.48.1.44" + }, + { + "name": "x-up9-destination", + "value": "10.48.2.97:5000" + } + ], + "queryString": [], + "headersSize": -1, + "bodySize": -1 + }, + "response": { + "status": 200, + "statusText": "OK", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "Vary", + "value": "Origin" + }, + { + "name": "Server", + "value": "gunicorn/19.9.0" + }, + { + "name": "Date", + "value": "Thu, 21 May 2020 11:02:31 GMT" + }, + { + "name": "Connection", + "value": "keep-alive" + }, + { + "name": "Content-Type", + "value": "application/json" + }, + { + "name": "Content-Length", + "value": "3" + }, + { + "name": "Access-Control-Allow-Origin", + "value": "http://localhost:3000" + }, + { + "name": "Access-Control-Allow-Credentials", + "value": "true" + }, + { + "name": ":status", + "value": "200" + }, + { + "name": "duration_ms", + "value": "1" + } + ], + "content": { + "size": 3, + "mimeType": "", + "text": "[]\n" + }, + "redirectURL": "", + "headersSize": -1, + "bodySize": 3 + }, + "cache": {}, + "timings": { + "send": -1, + "wait": -1, + "receive": 1 + } + }, + { + "startedDateTime": "2020-05-21T11:02:32.029000+00:00", + "time": 1, + "request": { + "method": "GET", + "url": "http://trcc-api-service/models/liraz_test_2105/suites/all/runs", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "X-Request-Id", + "value": "df2a6948e4696ee0ae83c7948343adaf" + }, + { + "name": "X-Real-Ip", + "value": "10.132.0.22" + }, + { + "name": "X-Forwarded-Port", + "value": "443" + }, + { + "name": "X-Forwarded-Proto", + "value": "https" + }, + { + "name": "Accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "Origin", + "value": "http://localhost:3000" + }, + { + "name": "Referer", + "value": "http://localhost:3000/someOrgId123/model/liraz_test_2105/lastResults/systems/all/summary" + }, + { + "name": "Accept-Language", + "value": "en-US,en;q=0.9" + }, + { + "name": "X-Scheme", + "value": "https" + }, + { + "name": "Authorization", + "value": "bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJqSEZ0R1dybjJpY084VnpDYXpaZWUyakpFc2drY1k5ZzhpN2FTbGtielRnIn0.eyJleHAiOjE1OTAwNTkxMTQsImlhdCI6MTU5MDA1ODgxNCwiYXV0aF90aW1lIjoxNTg5OTU4NDcwLCJqdGkiOiIyNzgxOTYyMy00Yjk5LTQ2MzQtOWZlNi02ZDRiNzYwNGU2ZmMiLCJpc3MiOiJodHRwczovL2F1dGguc3RnLnRlc3RyLmlvL2F1dGgvcmVhbG1zL3Rlc3RyIiwiYXVkIjoiYWNjb3VudCIsInN1YiI6ImU4NzAxMDZjLWJjYjItNDQxMy05Y2Q2LTUwMTZiNTUxMDRlYiIsInR5cCI6IkJlYXJlciIsImF6cCI6InJlYWN0LWNsaWVudCIsIm5vbmNlIjoiYzJiZTgwNGYtZjBiYS00ZWUxLTgyZWQtYmIzMTY5ZDBkYjU1Iiwic2Vzc2lvbl9zdGF0ZSI6IjM2ZDc2MDAxLTE5M2EtNGQ5OS05MTIwLTZmNGZkMjEwZDAxMiIsImFjciI6IjAiLCJhbGxvd2VkLW9yaWdpbnMiOlsiaHR0cHM6Ly9zdGcudGVzdHIuaW8iLCJjaHJvbWUtZXh0ZW5zaW9uOi8vbmFkZ2VsamVtbWJna2xkaGNwYWZqbXBtYXBpcGdsY20iLCJodHRwOi8vbG9jYWxob3N0OjMwMDAiXSwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm1hbmFnZUZlYXR1cmVGbGFncyIsIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyJhY2NvdW50Ijp7InJvbGVzIjpbIm1hbmFnZS1hY2NvdW50IiwibWFuYWdlLWFjY291bnQtbGlua3MiLCJ2aWV3LXByb2ZpbGUiXX19LCJzY29wZSI6Im9wZW5pZCBwcm9maWxlIGVtYWlsIiwiZ3JvdXBfbWVtYmVyc2hpcCI6WyJzb21lT3JnSWQxMjMiXSwiZW1haWxfdmVyaWZpZWQiOnRydWUsIm5hbWUiOiJMaXJheiBZZWhlemtlbCIsInByZWZlcnJlZF91c2VybmFtZSI6ImxpcmF6eUB1cDkuY29tIiwiZ2l2ZW5fbmFtZSI6IkxpcmF6IiwiZmFtaWx5X25hbWUiOiJZZWhlemtlbCIsImdyb3VwX3N1YmRvbWFpbiI6InNvbWVPcmdJZDEyMyIsImVtYWlsIjoibGlyYXp5QHVwOS5jb20iLCJmZWF0dXJlRmxhZ3MiOnsiZWRpdEVuZHBvaW50VmFyaWFibGVzIjp0cnVlLCJzaWRlTmF2aWdhdGlvbiI6dHJ1ZX19.KdLz7jeIr8HaST4FpJROrg6Sp-o1Nl5dU2hIbNCA0FEY-jmaoubiOlz6p7QthTJ8t-S0R_qdZtd7rXf249L6wGG_A6rriZhH41Fxhyrb0ig8OVrQp-sepv_AUf7GEIGYgpYIPFnZ6G3Dkq1aY9NzLXruh7fly_ZRkRlzF_wb1vt5NRJz3xeMrj82BOJJmUpv08AYYQhnyjKiBp7rgrNTTBejaFBozsJgXGkIi-DZfv862tgFhvPNuXsqKO5iOxv9nApuQJ2O4knVB1ag7tqB1xQcvBdkZt9gG1VVkpWsM_2j5C9cBwOuPRgHZhpZuT_YNfB4ITefGV1aYfRF-cjnug" + }, + { + "name": "User-Agent", + "value": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36" + }, + { + "name": "X-Forwarded-For", + "value": "10.132.0.22" + }, + { + "name": "X-Forwarded-Host", + "value": "trcc.stg.testr.io" + }, + { + "name": "Sec-Fetch-Site", + "value": "cross-site" + }, + { + "name": "Sec-Fetch-Mode", + "value": "cors" + }, + { + "name": "Sec-Fetch-Dest", + "value": "empty" + }, + { + "name": "Accept-Encoding", + "value": "gzip, deflate, br" + }, + { + "name": ":method", + "value": "GET" + }, + { + "name": ":path", + "value": "/models/liraz_test_2105/suites/all/runs" + }, + { + "name": ":authority", + "value": "trcc.stg.testr.io" + }, + { + "name": ":scheme", + "value": "http" + }, + { + "name": "x-request-start", + "value": "1590058952.029" + }, + { + "name": "x-up9-source", + "value": "10.48.1.44" + }, + { + "name": "x-up9-destination", + "value": "10.48.0.155:5000" + } + ], + "queryString": [], + "headersSize": -1, + "bodySize": -1 + }, + "response": { + "status": 200, + "statusText": "OK", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "Access-Control-Allow-Credentials", + "value": "true" + }, + { + "name": "Vary", + "value": "Origin" + }, + { + "name": "Server", + "value": "gunicorn/19.9.0" + }, + { + "name": "Date", + "value": "Thu, 21 May 2020 11:02:31 GMT" + }, + { + "name": "Connection", + "value": "keep-alive" + }, + { + "name": "Content-Type", + "value": "application/json" + }, + { + "name": "Content-Length", + "value": "3" + }, + { + "name": "Access-Control-Allow-Origin", + "value": "https://stg.testr.io" + }, + { + "name": ":status", + "value": "200" + }, + { + "name": "duration_ms", + "value": "1" + } + ], + "content": { + "size": 3, + "mimeType": "", + "text": "[]\n" + }, + "redirectURL": "", + "headersSize": -1, + "bodySize": 3 + }, + "cache": {}, + "timings": { + "send": -1, + "wait": -1, + "receive": 1 + } + }, + { + "startedDateTime": "2020-05-21T11:02:31.867000+00:00", + "time": 1, + "request": { + "method": "POST", + "url": "http://trcc-api-service/tapping/state", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "X-Real-Ip", + "value": "10.132.0.85" + }, + { + "name": "Accept", + "value": "*/*" + }, + { + "name": "X-Request-Id", + "value": "3c157292949b46c02ec9c2f35765a8d6" + }, + { + "name": "User-Agent", + "value": "python-requests/2.23.0" + }, + { + "name": "Content-Type", + "value": "application/json" + }, + { + "name": "Content-Length", + "value": "276" + }, + { + "name": "Accept-Encoding", + "value": "gzip, deflate" + }, + { + "name": "X-Forwarded-Proto", + "value": "https" + }, + { + "name": "X-Scheme", + "value": "https" + }, + { + "name": "Authorization", + "value": "Bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJqSEZ0R1dybjJpY084VnpDYXpaZWUyakpFc2drY1k5ZzhpN2FTbGtielRnIn0.eyJleHAiOjE1OTAwNTkxNzIsImlhdCI6MTU5MDA1ODg3MiwianRpIjoiNDlkZTU1YmEtOWI2OC00MzIyLTk3MWUtMzViYWRhMjIyYzJjIiwiaXNzIjoiaHR0cHM6Ly9hdXRoLnN0Zy50ZXN0ci5pby9hdXRoL3JlYWxtcy90ZXN0ciIsImF1ZCI6ImFjY291bnQiLCJzdWIiOiI0YWFkZWM0Mi01OWE5LTRmZDUtODI3NC1lZWI5NDNmODQyNmUiLCJ0eXAiOiJCZWFyZXIiLCJhenAiOiIzWjE5LTNzYnN2MU9KSDBEd2l2UWkyYmZVSzdsSlNFdSIsInNlc3Npb25fc3RhdGUiOiJiZjEzZjE2ZC0zMzRiLTRkYzItODQwMy02ZjRjODlkM2IzYzMiLCJhY3IiOiIxIiwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyJhY2NvdW50Ijp7InJvbGVzIjpbIm1hbmFnZS1hY2NvdW50IiwibWFuYWdlLWFjY291bnQtbGlua3MiLCJ2aWV3LXByb2ZpbGUiXX19LCJzY29wZSI6InByb2ZpbGUgZW1haWwiLCJjbGllbnRJZCI6IjNaMTktM3Nic3YxT0pIMER3aXZRaTJiZlVLN2xKU0V1IiwiY2xpZW50SG9zdCI6IjEwLjQ4LjEuMSIsImVtYWlsX3ZlcmlmaWVkIjpmYWxzZSwib3JnYW5pemF0aW9uIjoic29tZU9yZ0lkMTIzIiwicHJlZmVycmVkX3VzZXJuYW1lIjoic2VydmljZS1hY2NvdW50LTN6MTktM3Nic3Yxb2poMGR3aXZxaTJiZnVrN2xqc2V1IiwiY2xpZW50QWRkcmVzcyI6IjEwLjQ4LjEuMSIsImVtYWlsIjoic2VydmljZS1hY2NvdW50LTN6MTktM3Nic3Yxb2poMGR3aXZxaTJiZnVrN2xqc2V1QHBsYWNlaG9sZGVyLm9yZyJ9.GG5HWvQ9ufASjOq0RaiQ4l_v-YfeDnZoMA7eLZGhntXpaI3b5RQ6fTwh7XD0Uy_b-hITd5Lxhm0Wlt8U5MPSQRSDUGSJRE97_2egmDQCqLu4oKG7l2I6olLf7U4xWSMRKoATXfgV5Ccx9hGgsQPLLBjYZmLuusuNoUbOCNYEMpM24QB-j5jNMMVJIaECdXy3ka26hsuUOK3wue8tPEIUSmgMhLcwtJ4NKTNlXicE6W8-WpY6U9SCIVkfi3lKH-zFSSWw9XJWg30Qk9SzMcrfd11bSQqGyc3Z0rUSt2XvQC2LaoZPIA4guL6fkFIBu3mcSsHI0TY_pa1Vd_kQH-QtIQ" + }, + { + "name": "X-Forwarded-For", + "value": "10.132.0.85" + }, + { + "name": "X-Forwarded-Host", + "value": "trcc.stg.testr.io" + }, + { + "name": "X-Forwarded-Port", + "value": "443" + }, + { + "name": ":method", + "value": "POST" + }, + { + "name": ":path", + "value": "/tapping/state" + }, + { + "name": ":authority", + "value": "trcc.stg.testr.io" + }, + { + "name": ":scheme", + "value": "http" + }, + { + "name": "x-request-start", + "value": "1590058951.867" + }, + { + "name": "x-up9-source", + "value": "10.48.1.44" + }, + { + "name": "x-up9-destination", + "value": "10.48.2.97:5000" + } + ], + "queryString": [], + "headersSize": -1, + "bodySize": -1, + "postData": { + "mimeType": "", + "text": "{\"data\": [{\"id\": \"nimrod-01-ECSCluster-1ENCWB3MDFEUQ_trdemo-01-TrdemoUsersTaskDefinition-1KSLKXSKQ0YGI\", \"instance_id\": \"arn:aws:ecs:eu-west-3:396248696294:task/09ed7837-ee2d-4078-849b-ed1e95112570\", \"ip\": \"10.0.1.123\", \"type\": \"passive\", \"agentName\": \"nimrod-01-paris-aws\"}]}" + } + }, + "response": { + "status": 200, + "statusText": "OK", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "Vary", + "value": "Origin" + }, + { + "name": "Server", + "value": "gunicorn/19.9.0" + }, + { + "name": "Date", + "value": "Thu, 21 May 2020 11:02:31 GMT" + }, + { + "name": "Connection", + "value": "keep-alive" + }, + { + "name": "Content-Type", + "value": "text/html; charset=utf-8" + }, + { + "name": "Content-Length", + "value": "2" + }, + { + "name": "Access-Control-Allow-Origin", + "value": "http://localhost:3000" + }, + { + "name": "Access-Control-Allow-Credentials", + "value": "true" + }, + { + "name": ":status", + "value": "200" + }, + { + "name": "duration_ms", + "value": "1" + } + ], + "content": { + "size": 2, + "mimeType": "", + "text": "Ok" + }, + "redirectURL": "", + "headersSize": -1, + "bodySize": 2 + }, + "cache": {}, + "timings": { + "send": -1, + "wait": -1, + "receive": 1 + } + }, + { + "startedDateTime": "2020-05-21T11:02:32.030000+00:00", + "time": 1, + "request": { + "method": "GET", + "url": "http://trcc-api-service/tapping/state", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "User-Agent", + "value": "python-requests/2.23.0" + }, + { + "name": "Authorization", + "value": "Bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJqSEZ0R1dybjJpY084VnpDYXpaZWUyakpFc2drY1k5ZzhpN2FTbGtielRnIn0.eyJleHAiOjE1OTAwNTkwNjEsImlhdCI6MTU5MDA1ODc2MSwianRpIjoiOTVmMjRhZTAtMzYzYS00YzBiLTkxNzUtMGEzNDdkMGMzOTQ5IiwiaXNzIjoiaHR0cHM6Ly9hdXRoLnN0Zy50ZXN0ci5pby9hdXRoL3JlYWxtcy90ZXN0ciIsImF1ZCI6ImFjY291bnQiLCJzdWIiOiI0YWFkZWM0Mi01OWE5LTRmZDUtODI3NC1lZWI5NDNmODQyNmUiLCJ0eXAiOiJCZWFyZXIiLCJhenAiOiIzWjE5LTNzYnN2MU9KSDBEd2l2UWkyYmZVSzdsSlNFdSIsInNlc3Npb25fc3RhdGUiOiJiYzEzOTc2Zi03MGVlLTRjMTgtYmFmNS0zYTY1MWU5MmZlZjIiLCJhY3IiOiIxIiwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyJhY2NvdW50Ijp7InJvbGVzIjpbIm1hbmFnZS1hY2NvdW50IiwibWFuYWdlLWFjY291bnQtbGlua3MiLCJ2aWV3LXByb2ZpbGUiXX19LCJzY29wZSI6InByb2ZpbGUgZW1haWwiLCJjbGllbnRJZCI6IjNaMTktM3Nic3YxT0pIMER3aXZRaTJiZlVLN2xKU0V1IiwiY2xpZW50SG9zdCI6IjEwLjEzMi4wLjM0IiwiZW1haWxfdmVyaWZpZWQiOmZhbHNlLCJvcmdhbml6YXRpb24iOiJzb21lT3JnSWQxMjMiLCJwcmVmZXJyZWRfdXNlcm5hbWUiOiJzZXJ2aWNlLWFjY291bnQtM3oxOS0zc2JzdjFvamgwZHdpdnFpMmJmdWs3bGpzZXUiLCJjbGllbnRBZGRyZXNzIjoiMTAuMTMyLjAuMzQiLCJlbWFpbCI6InNlcnZpY2UtYWNjb3VudC0zejE5LTNzYnN2MW9qaDBkd2l2cWkyYmZ1azdsanNldUBwbGFjZWhvbGRlci5vcmcifQ.J8KYPdDVXdNFhGA8Ar3yV95boMPceX7cz6yWWs59MZy23sz9QCy4VrCXZNFTF23LMs5wQ2qGRANIQw5s5E7b_7EidEOiR8gbUqC6wnNWuSmKGGV-DneKKcA_Q-kaGitsTkMvEoQlj8qzNyYXwyRsfvpfLdxbEKIxqrjtg8mZadea6qmbIJyPlth3iP2Xr-Kfufwco4MBBLvAMnk0eMbDj4YaotTI_fC46yamuUJEl32iLTwjsqcErbDnNt9KZJxro4BvUkmkceDp297qSJDPqATJlU9dEmdIpSWhBEQ9MOQezJbXMQYlkwKBN2QTYFervZBhAf0Gp_1NkIr2wR978g" + }, + { + "name": "X-Real-Ip", + "value": "10.132.0.34" + }, + { + "name": "X-Forwarded-Host", + "value": "trcc.stg.testr.io" + }, + { + "name": "X-Forwarded-Port", + "value": "443" + }, + { + "name": "X-Scheme", + "value": "https" + }, + { + "name": "Accept-Encoding", + "value": "gzip, deflate" + }, + { + "name": "Accept", + "value": "*/*" + }, + { + "name": "X-Request-Id", + "value": "d540326a49fc8422e24ded2a88996a94" + }, + { + "name": "X-Forwarded-For", + "value": "10.132.0.34" + }, + { + "name": "X-Forwarded-Proto", + "value": "https" + }, + { + "name": ":method", + "value": "GET" + }, + { + "name": ":path", + "value": "/tapping/state" + }, + { + "name": ":authority", + "value": "trcc.stg.testr.io" + }, + { + "name": ":scheme", + "value": "http" + }, + { + "name": "x-request-start", + "value": "1590058952.030" + }, + { + "name": "x-up9-source", + "value": "10.48.1.44" + }, + { + "name": "x-up9-destination", + "value": "10.48.0.155:5000" + } + ], + "queryString": [], + "headersSize": -1, + "bodySize": -1 + }, + "response": { + "status": 200, + "statusText": "OK", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "Access-Control-Allow-Origin", + "value": "http://localhost:3000" + }, + { + "name": "Access-Control-Allow-Credentials", + "value": "true" + }, + { + "name": "Vary", + "value": "Origin" + }, + { + "name": "Server", + "value": "gunicorn/19.9.0" + }, + { + "name": "Date", + "value": "Thu, 21 May 2020 11:02:31 GMT" + }, + { + "name": "Connection", + "value": "keep-alive" + }, + { + "name": "Content-Type", + "value": "application/json" + }, + { + "name": "Content-Length", + "value": "20352" + }, + { + "name": ":status", + "value": "200" + }, + { + "name": "duration_ms", + "value": "1" + } + ], + "content": { + "size": 20352, + "mimeType": "", + "text": "[{\"agentName\":\"ag6-minikube\",\"creationTime\":\"Sun, 22 Mar 2020 22:11:55 GMT\",\"id\":\"057573f3-c207-4d56-9512-3e1ff9190f53_trdemo_trdemo-client\",\"instancesCount\":0,\"lastSeen\":\"Thu, 09 Apr 2020 22:45:55 GMT\",\"model\":\"ag_trdemo_040701\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"ag6-minikube\",\"creationTime\":\"Sun, 22 Mar 2020 22:11:55 GMT\",\"id\":\"057573f3-c207-4d56-9512-3e1ff9190f53_trdemo_trdemo-flights\",\"instancesCount\":0,\"lastSeen\":\"Thu, 09 Apr 2020 22:45:55 GMT\",\"model\":\"ag_trdemo_040701\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"ag6-minikube\",\"creationTime\":\"Sun, 22 Mar 2020 22:11:55 GMT\",\"id\":\"057573f3-c207-4d56-9512-3e1ff9190f53_trdemo_trdemo-shoppingcart\",\"instancesCount\":0,\"lastSeen\":\"Thu, 09 Apr 2020 22:45:55 GMT\",\"model\":\"ag_trdemo_040701\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"ag6-minikube\",\"creationTime\":\"Sun, 22 Mar 2020 22:11:55 GMT\",\"id\":\"057573f3-c207-4d56-9512-3e1ff9190f53_trdemo_trdemo-users\",\"instancesCount\":0,\"lastSeen\":\"Thu, 09 Apr 2020 22:45:55 GMT\",\"model\":\"ag_trdemo_040701\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"nimrod-gcloud-mycluster\",\"creationTime\":\"Sun, 19 Apr 2020 17:46:09 GMT\",\"id\":\"0c484f93-5987-4e16-ac5d-ee838b8c7b65_tradmin_frontend-deployment\",\"instancesCount\":0,\"lastSeen\":\"Mon, 20 Apr 2020 09:29:13 GMT\",\"model\":\"default\",\"shouldTap\":false,\"type\":\"envoy\"},{\"agentName\":\"nimrod-gcloud-mycluster\",\"creationTime\":\"Mon, 06 Apr 2020 06:50:47 GMT\",\"id\":\"0c484f93-5987-4e16-ac5d-ee838b8c7b65_tradmin_trcc-api-deployment\",\"instancesCount\":0,\"lastSeen\":\"Mon, 20 Apr 2020 09:29:13 GMT\",\"model\":\"default\",\"shouldTap\":false,\"type\":\"envoy\"},{\"agentName\":\"nimrod-gcloud-mycluster\",\"creationTime\":null,\"id\":\"0c484f93-5987-4e16-ac5d-ee838b8c7b65_trdemo_trdemo-client\",\"instancesCount\":0,\"lastSeen\":\"Mon, 20 Apr 2020 09:29:53 GMT\",\"model\":\"ngm-0704-gcloud-05\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"nimrod-gcloud-mycluster\",\"creationTime\":null,\"id\":\"0c484f93-5987-4e16-ac5d-ee838b8c7b65_trdemo_trdemo-flights\",\"instancesCount\":0,\"lastSeen\":\"Mon, 20 Apr 2020 09:29:53 GMT\",\"model\":\"ngm-0704-gcloud-05\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"nimrod-gcloud-mycluster\",\"creationTime\":null,\"id\":\"0c484f93-5987-4e16-ac5d-ee838b8c7b65_trdemo_trdemo-shoppingcart\",\"instancesCount\":0,\"lastSeen\":\"Tue, 07 Apr 2020 17:12:48 GMT\",\"model\":\"ngm-0704-gcloud-05\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"nimrod-gcloud-mycluster\",\"creationTime\":null,\"id\":\"0c484f93-5987-4e16-ac5d-ee838b8c7b65_trdemo_trdemo-users\",\"instancesCount\":0,\"lastSeen\":\"Tue, 07 Apr 2020 17:12:48 GMT\",\"model\":\"ngm-0704-gcloud-05\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"haiut-samcust1105\",\"creationTime\":\"Thu, 23 Apr 2020 13:44:42 GMT\",\"id\":\"2a45b7bd-3615-11ea-b692-42010a8400bd_trdemo_trdemo-client\",\"instancesCount\":1,\"lastSeen\":\"Thu, 21 May 2020 11:02:27 GMT\",\"model\":\"ah.trdemo.0513\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"haiut-samcust1105\",\"creationTime\":\"Thu, 23 Apr 2020 13:44:42 GMT\",\"id\":\"2a45b7bd-3615-11ea-b692-42010a8400bd_trdemo_trdemo-flights\",\"instancesCount\":1,\"lastSeen\":\"Thu, 21 May 2020 11:02:27 GMT\",\"model\":\"ah.trdemo.0513\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"haiut-samcust1105\",\"creationTime\":\"Thu, 23 Apr 2020 13:44:42 GMT\",\"id\":\"2a45b7bd-3615-11ea-b692-42010a8400bd_trdemo_trdemo-shoppingcart\",\"instancesCount\":1,\"lastSeen\":\"Thu, 21 May 2020 11:02:27 GMT\",\"model\":\"ah.trdemo.0513\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"haiut-samcust1105\",\"creationTime\":\"Thu, 23 Apr 2020 13:44:35 GMT\",\"id\":\"2a45b7bd-3615-11ea-b692-42010a8400bd_trdemo_trdemo-users\",\"instancesCount\":1,\"lastSeen\":\"Thu, 21 May 2020 11:02:27 GMT\",\"model\":\"ah.trdemo.0513\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"rami-aws-agent2\",\"creationTime\":\"Thu, 14 May 2020 14:54:45 GMT\",\"id\":\"6edcaf1b-f7f9-4dd7-ae4d-2443ab489213_trdemo_trdemo-client\",\"instancesCount\":1,\"lastSeen\":\"Thu, 21 May 2020 11:02:28 GMT\",\"model\":\"aws_services_envoy\",\"shouldTap\":true,\"type\":\"envoy\"},{\"agentName\":\"rami-aws-agent2\",\"creationTime\":\"Thu, 14 May 2020 14:54:45 GMT\",\"id\":\"6edcaf1b-f7f9-4dd7-ae4d-2443ab489213_trdemo_trdemo-flights\",\"instancesCount\":2,\"lastSeen\":\"Thu, 21 May 2020 11:02:30 GMT\",\"model\":\"aws_services_envoy\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"rami-aws-agent2\",\"creationTime\":\"Thu, 14 May 2020 14:54:45 GMT\",\"id\":\"6edcaf1b-f7f9-4dd7-ae4d-2443ab489213_trdemo_trdemo-shoppingcart\",\"instancesCount\":2,\"lastSeen\":\"Thu, 21 May 2020 11:02:30 GMT\",\"model\":\"aws_services_envoy\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"rami-aws-agent2\",\"creationTime\":\"Thu, 14 May 2020 14:54:45 GMT\",\"id\":\"6edcaf1b-f7f9-4dd7-ae4d-2443ab489213_trdemo_trdemo-users\",\"instancesCount\":2,\"lastSeen\":\"Thu, 21 May 2020 11:02:30 GMT\",\"model\":\"aws_services_envoy\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":null,\"creationTime\":null,\"id\":\"alextestrio-prx1\",\"instancesCount\":0,\"lastSeen\":\"Thu, 19 Mar 2020 13:10:36 GMT\",\"model\":\"ah-0319\",\"shouldTap\":false,\"type\":\"proxy\"},{\"agentName\":null,\"creationTime\":\"Fri, 17 Apr 2020 16:17:58 GMT\",\"id\":\"alexup9com-prx1\",\"instancesCount\":0,\"lastSeen\":\"Sat, 18 Apr 2020 14:12:41 GMT\",\"model\":\"ah-test-1704-01\",\"shouldTap\":false,\"type\":\"proxy\"},{\"agentName\":null,\"creationTime\":null,\"id\":\"alontestrio-prx1\",\"instancesCount\":0,\"lastSeen\":\"Mon, 23 Mar 2020 17:45:49 GMT\",\"model\":\"ag_nectar_032301\",\"shouldTap\":false,\"type\":\"proxy\"},{\"agentName\":null,\"creationTime\":\"Tue, 31 Mar 2020 23:45:34 GMT\",\"id\":\"alonup9com-prx1\",\"instancesCount\":1,\"lastSeen\":\"Thu, 21 May 2020 10:58:30 GMT\",\"model\":\"ag.proxy.050801\",\"shouldTap\":true,\"type\":\"proxy\"},{\"agentName\":null,\"creationTime\":\"Mon, 06 Apr 2020 07:51:20 GMT\",\"id\":\"andrewpetrovup9com-prx1\",\"instancesCount\":0,\"lastSeen\":\"Tue, 07 Apr 2020 08:15:56 GMT\",\"model\":\"ap_test\",\"shouldTap\":false,\"type\":\"proxy\"},{\"agentName\":null,\"creationTime\":null,\"id\":\"andreytestrio-prx1\",\"instancesCount\":0,\"lastSeen\":\"Thu, 26 Mar 2020 11:09:27 GMT\",\"model\":\"andrey2\",\"shouldTap\":false,\"type\":\"proxy\"},{\"agentName\":\"haiut-mk04\",\"creationTime\":null,\"id\":\"c59d834b-00cd-4650-b114-a9da537c56d7_trdemo_trdemo-client\",\"instancesCount\":0,\"lastSeen\":\"Thu, 09 Apr 2020 10:19:27 GMT\",\"model\":\"ah-0329-01\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"haiut-mk04\",\"creationTime\":null,\"id\":\"c59d834b-00cd-4650-b114-a9da537c56d7_trdemo_trdemo-flights\",\"instancesCount\":0,\"lastSeen\":\"Thu, 09 Apr 2020 10:19:27 GMT\",\"model\":\"ah-0329-01\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"haiut-mk04\",\"creationTime\":null,\"id\":\"c59d834b-00cd-4650-b114-a9da537c56d7_trdemo_trdemo-shoppingcart\",\"instancesCount\":0,\"lastSeen\":\"Thu, 09 Apr 2020 10:19:27 GMT\",\"model\":\"ah-0329-01\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"haiut-mk04\",\"creationTime\":null,\"id\":\"c59d834b-00cd-4650-b114-a9da537c56d7_trdemo_trdemo-users\",\"instancesCount\":0,\"lastSeen\":\"Thu, 09 Apr 2020 10:19:27 GMT\",\"model\":\"ah-0329-01\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"nimrod-01-london-aws\",\"creationTime\":\"Mon, 13 Apr 2020 14:32:47 GMT\",\"id\":\"cluster-01-ECSCluster-ZldlPWdD1B9z_trdemo-01-TrdemoClientTaskDefinition-51AGMDOUMFOS\",\"instancesCount\":0,\"lastSeen\":\"Thu, 23 Apr 2020 17:01:37 GMT\",\"model\":\"default\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"nimrod-01-london-aws\",\"creationTime\":\"Sun, 12 Apr 2020 12:18:27 GMT\",\"id\":\"cluster-01-ECSCluster-ZldlPWdD1B9z_trdemo-01-TrdemoClientTaskDefinition-ZSUR7XY24R3X\",\"instancesCount\":0,\"lastSeen\":\"Sun, 12 Apr 2020 14:40:11 GMT\",\"model\":\"ngm-1204-aws-01\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"nimrod-01-london-aws\",\"creationTime\":\"Mon, 13 Apr 2020 14:31:31 GMT\",\"id\":\"cluster-01-ECSCluster-ZldlPWdD1B9z_trdemo-01-TrdemoFlightsTaskDefinition-1GQ6KPSBBH2CG\",\"instancesCount\":0,\"lastSeen\":\"Thu, 23 Apr 2020 17:01:37 GMT\",\"model\":\"default\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"nimrod-01-london-aws\",\"creationTime\":\"Sun, 12 Apr 2020 12:18:27 GMT\",\"id\":\"cluster-01-ECSCluster-ZldlPWdD1B9z_trdemo-01-TrdemoFlightsTaskDefinition-1P92C5J4BMAJ\",\"instancesCount\":0,\"lastSeen\":\"Sun, 12 Apr 2020 14:40:11 GMT\",\"model\":\"ngm-1204-aws-01\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"nimrod-01-london-aws\",\"creationTime\":\"Sun, 12 Apr 2020 12:18:26 GMT\",\"id\":\"cluster-01-ECSCluster-ZldlPWdD1B9z_trdemo-01-TrdemoShoppingcartTaskDefinition-8LVIGNH5OGR5\",\"instancesCount\":0,\"lastSeen\":\"Sun, 12 Apr 2020 14:40:09 GMT\",\"model\":\"ngm-1204-aws-01\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"nimrod-01-london-aws\",\"creationTime\":\"Mon, 13 Apr 2020 14:31:29 GMT\",\"id\":\"cluster-01-ECSCluster-ZldlPWdD1B9z_trdemo-01-TrdemoShoppingcartTaskDefinition-EF79FKMGB0S5\",\"instancesCount\":0,\"lastSeen\":\"Thu, 23 Apr 2020 17:01:59 GMT\",\"model\":\"default\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"nimrod-01-london-aws\",\"creationTime\":\"Mon, 13 Apr 2020 14:31:36 GMT\",\"id\":\"cluster-01-ECSCluster-ZldlPWdD1B9z_trdemo-01-TrdemoUsersTaskDefinition-1SOGKLV12R6VX\",\"instancesCount\":0,\"lastSeen\":\"Thu, 23 Apr 2020 17:01:53 GMT\",\"model\":\"default\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"nimrod-01-london-aws\",\"creationTime\":\"Sun, 12 Apr 2020 12:18:26 GMT\",\"id\":\"cluster-01-ECSCluster-ZldlPWdD1B9z_trdemo-01-TrdemoUsersTaskDefinition-IA4ZUEXN3VPX\",\"instancesCount\":0,\"lastSeen\":\"Sun, 12 Apr 2020 14:40:09 GMT\",\"model\":\"ngm-1204-aws-01\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"nimrod-01-london-aws\",\"creationTime\":\"Sun, 12 Apr 2020 14:51:10 GMT\",\"id\":\"cluster-01-ECSCluster-ZldlPWdD1B9z_trdemo-02-TrdemoClientTaskDefinition-19SVXVU4US12S\",\"instancesCount\":0,\"lastSeen\":\"Sun, 12 Apr 2020 15:59:02 GMT\",\"model\":\"ngm-1204-aws-02\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"nimrod-01-london-aws\",\"creationTime\":\"Sun, 12 Apr 2020 14:49:24 GMT\",\"id\":\"cluster-01-ECSCluster-ZldlPWdD1B9z_trdemo-02-TrdemoFlightsTaskDefinition-2P1PRCG5UHC3\",\"instancesCount\":0,\"lastSeen\":\"Sun, 12 Apr 2020 15:59:04 GMT\",\"model\":\"ngm-1204-aws-02\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"nimrod-01-london-aws\",\"creationTime\":\"Sun, 12 Apr 2020 14:48:48 GMT\",\"id\":\"cluster-01-ECSCluster-ZldlPWdD1B9z_trdemo-02-TrdemoShoppingcartTaskDefinition-1TLHJW9NH2B5A\",\"instancesCount\":0,\"lastSeen\":\"Sun, 12 Apr 2020 15:59:00 GMT\",\"model\":\"ngm-1204-aws-02\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"nimrod-01-london-aws\",\"creationTime\":\"Sun, 12 Apr 2020 14:48:43 GMT\",\"id\":\"cluster-01-ECSCluster-ZldlPWdD1B9z_trdemo-02-TrdemoUsersTaskDefinition-1W5X329FWGXZ3\",\"instancesCount\":0,\"lastSeen\":\"Sun, 12 Apr 2020 15:59:00 GMT\",\"model\":\"ngm-1204-aws-02\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"haiut-aws-fra-03\",\"creationTime\":\"Sun, 26 Apr 2020 20:09:14 GMT\",\"id\":\"d2d6c435-eaf5-48f6-8e61-1e7c57251fbd_trdemo_trdemo-client\",\"instancesCount\":0,\"lastSeen\":\"Sun, 10 May 2020 13:31:29 GMT\",\"model\":\"aws_new_resolving2\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"haiut-aws-fra-03\",\"creationTime\":\"Sun, 26 Apr 2020 20:09:09 GMT\",\"id\":\"d2d6c435-eaf5-48f6-8e61-1e7c57251fbd_trdemo_trdemo-flights\",\"instancesCount\":0,\"lastSeen\":\"Sun, 10 May 2020 13:31:31 GMT\",\"model\":\"aws_new_resolving2\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"haiut-aws-fra-03\",\"creationTime\":\"Sun, 26 Apr 2020 20:09:14 GMT\",\"id\":\"d2d6c435-eaf5-48f6-8e61-1e7c57251fbd_trdemo_trdemo-shoppingcart\",\"instancesCount\":0,\"lastSeen\":\"Sun, 10 May 2020 13:31:29 GMT\",\"model\":\"aws_new_resolving2\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"haiut-aws-fra-03\",\"creationTime\":\"Sun, 26 Apr 2020 20:09:09 GMT\",\"id\":\"d2d6c435-eaf5-48f6-8e61-1e7c57251fbd_trdemo_trdemo-users\",\"instancesCount\":0,\"lastSeen\":\"Sun, 10 May 2020 13:31:31 GMT\",\"model\":\"aws_new_resolving2\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":null,\"creationTime\":null,\"id\":\"e677a5bc-0542-11ea-a607-42010a8400ce_tradmin_frontend-deployment\",\"instancesCount\":0,\"lastSeen\":\"Sun, 10 May 2020 13:31:31 GMT\",\"model\":\"default\",\"shouldTap\":false,\"type\":\"envoy\"},{\"agentName\":null,\"creationTime\":\"Fri, 03 Apr 2020 08:00:08 GMT\",\"id\":\"e677a5bc-0542-11ea-a607-42010a8400ce_tradmin_trcc-api-deployme-f9aaef0a8d6f47bab4894c055aa72533-67c7fc5czfxr\",\"instancesCount\":0,\"lastSeen\":\"Fri, 03 Apr 2020 05:04:11 GMT\",\"model\":\"default\",\"shouldTap\":false,\"type\":\"envoy\"},{\"agentName\":null,\"creationTime\":null,\"id\":\"e677a5bc-0542-11ea-a607-42010a8400ce_tradmin_trcc-api-deployment\",\"instancesCount\":0,\"lastSeen\":\"Thu, 23 Apr 2020 08:12:03 GMT\",\"model\":\"sy-trcc-dogfood-3\",\"shouldTap\":false,\"type\":\"envoy\"},{\"agentName\":\"stg-cloud-agent\",\"creationTime\":\"Thu, 23 Apr 2020 08:11:52 GMT\",\"id\":\"e677a5bc-0542-11ea-a607-42010a8400ce_tradmin_trcc-api-deployment-stable\",\"instancesCount\":2,\"lastSeen\":\"Thu, 21 May 2020 11:02:31 GMT\",\"model\":\"sy-trcc-dogfood-10\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"stg-cloud-agent\",\"creationTime\":null,\"id\":\"e677a5bc-0542-11ea-a607-42010a8400ce_trdemo_trdemo-client\",\"instancesCount\":0,\"lastSeen\":\"Thu, 21 May 2020 11:02:29 GMT\",\"model\":\"up9_011401\",\"shouldTap\":false,\"type\":\"envoy\"},{\"agentName\":\"stg-cloud-agent\",\"creationTime\":null,\"id\":\"e677a5bc-0542-11ea-a607-42010a8400ce_trdemo_trdemo-flights\",\"instancesCount\":0,\"lastSeen\":\"Thu, 21 May 2020 11:02:29 GMT\",\"model\":\"up9_011401\",\"shouldTap\":false,\"type\":\"passive\"},{\"agentName\":null,\"creationTime\":null,\"id\":\"e677a5bc-0542-11ea-a607-42010a8400ce_trdemo_trdemo-shoppingcart\",\"instancesCount\":0,\"lastSeen\":\"Sun, 10 May 2020 13:31:30 GMT\",\"model\":\"bookstack-remote\",\"shouldTap\":false,\"type\":\"passive\"},{\"agentName\":\"stg-cloud-agent\",\"creationTime\":null,\"id\":\"e677a5bc-0542-11ea-a607-42010a8400ce_trdemo_trdemo-users\",\"instancesCount\":0,\"lastSeen\":\"Thu, 21 May 2020 11:02:29 GMT\",\"model\":\"up9_011401\",\"shouldTap\":false,\"type\":\"passive\"},{\"agentName\":null,\"creationTime\":null,\"id\":\"lirazyup9com-prx1\",\"instancesCount\":0,\"lastSeen\":\"Thu, 21 May 2020 10:51:01 GMT\",\"model\":\"liraz_test_2105\",\"shouldTap\":false,\"type\":\"proxy\"},{\"agentName\":\"nimrod-01-london-aws\",\"creationTime\":\"Thu, 21 May 2020 10:58:05 GMT\",\"id\":\"london-01-ECSCluster-27iuIYva8nO4_trdemo-01-TrdemoClientTaskDefinition-4TTVATDRY0CJ\",\"instancesCount\":1,\"lastSeen\":\"Thu, 21 May 2020 11:02:31 GMT\",\"model\":\"default\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"nimrod-01-london-aws\",\"creationTime\":\"Thu, 21 May 2020 10:51:53 GMT\",\"id\":\"london-01-ECSCluster-27iuIYva8nO4_trdemo-01-TrdemoFlightsTaskDefinition-HBBUAO47D2VT\",\"instancesCount\":1,\"lastSeen\":\"Thu, 21 May 2020 11:02:30 GMT\",\"model\":\"default\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"nimrod-01-london-aws\",\"creationTime\":\"Thu, 21 May 2020 10:57:09 GMT\",\"id\":\"london-01-ECSCluster-27iuIYva8nO4_trdemo-01-TrdemoShoppingcartTaskDefinition-1UAMK7WTR1SWE\",\"instancesCount\":1,\"lastSeen\":\"Thu, 21 May 2020 11:02:27 GMT\",\"model\":\"default\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"nimrod-01-london-aws\",\"creationTime\":\"Thu, 21 May 2020 10:56:49 GMT\",\"id\":\"london-01-ECSCluster-27iuIYva8nO4_trdemo-01-TrdemoUsersTaskDefinition-1HEEGJCBNB4PB\",\"instancesCount\":1,\"lastSeen\":\"Thu, 21 May 2020 11:02:31 GMT\",\"model\":\"default\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"nimrod-01-paris-aws\",\"creationTime\":\"Tue, 12 May 2020 14:14:42 GMT\",\"id\":\"nimrod-01-ECSCluster-1ENCWB3MDFEUQ_trdemo-01-TrdemoClientTaskDefinition-1HQRZT31KSGK0\",\"instancesCount\":1,\"lastSeen\":\"Thu, 21 May 2020 11:02:29 GMT\",\"model\":\"ngm-1305-aws-01\",\"shouldTap\":false,\"type\":\"passive\"},{\"agentName\":\"nimrod-01-paris-aws\",\"creationTime\":\"Mon, 06 Apr 2020 08:37:02 GMT\",\"id\":\"nimrod-01-ECSCluster-1ENCWB3MDFEUQ_trdemo-01-TrdemoClientTaskDefinition-PCTOAFN3NUUL\",\"instancesCount\":0,\"lastSeen\":\"Tue, 12 May 2020 12:36:48 GMT\",\"model\":\"default\",\"shouldTap\":false,\"type\":\"passive\"},{\"agentName\":\"nimrod-01-paris-aws\",\"creationTime\":\"Mon, 06 Apr 2020 10:46:50 GMT\",\"id\":\"nimrod-01-ECSCluster-1ENCWB3MDFEUQ_trdemo-01-TrdemoFlightsTaskDefinition-1RP81I0ETBSRA\",\"instancesCount\":0,\"lastSeen\":\"Tue, 12 May 2020 12:34:26 GMT\",\"model\":\"default\",\"shouldTap\":false,\"type\":\"passive\"},{\"agentName\":\"nimrod-01-paris-aws\",\"creationTime\":\"Tue, 12 May 2020 14:13:16 GMT\",\"id\":\"nimrod-01-ECSCluster-1ENCWB3MDFEUQ_trdemo-01-TrdemoFlightsTaskDefinition-6MATLSTUSK15\",\"instancesCount\":1,\"lastSeen\":\"Thu, 21 May 2020 11:02:30 GMT\",\"model\":\"ngm-1305-aws-01\",\"shouldTap\":false,\"type\":\"passive\"},{\"agentName\":\"nimrod-01-paris-aws\",\"creationTime\":\"Tue, 12 May 2020 14:13:05 GMT\",\"id\":\"nimrod-01-ECSCluster-1ENCWB3MDFEUQ_trdemo-01-TrdemoShoppingcartTaskDefinition-1NSJ45NVQ46VV\",\"instancesCount\":1,\"lastSeen\":\"Thu, 21 May 2020 11:02:30 GMT\",\"model\":\"ngm-1305-aws-01\",\"shouldTap\":false,\"type\":\"passive\"},{\"agentName\":\"nimrod-01-paris-aws\",\"creationTime\":\"Mon, 06 Apr 2020 08:37:02 GMT\",\"id\":\"nimrod-01-ECSCluster-1ENCWB3MDFEUQ_trdemo-01-TrdemoShoppingcartTaskDefinition-VAY9IULBYL27\",\"instancesCount\":0,\"lastSeen\":\"Tue, 12 May 2020 12:34:12 GMT\",\"model\":\"default\",\"shouldTap\":false,\"type\":\"passive\"},{\"agentName\":\"nimrod-01-paris-aws\",\"creationTime\":\"Tue, 12 May 2020 14:13:05 GMT\",\"id\":\"nimrod-01-ECSCluster-1ENCWB3MDFEUQ_trdemo-01-TrdemoUsersTaskDefinition-1KSLKXSKQ0YGI\",\"instancesCount\":1,\"lastSeen\":\"Thu, 21 May 2020 11:02:31 GMT\",\"model\":\"ngm-1305-aws-01\",\"shouldTap\":false,\"type\":\"passive\"},{\"agentName\":\"nimrod-01-paris-aws\",\"creationTime\":\"Mon, 06 Apr 2020 10:47:04 GMT\",\"id\":\"nimrod-01-ECSCluster-1ENCWB3MDFEUQ_trdemo-01-TrdemoUsersTaskDefinition-A4VERGQEE2C9\",\"instancesCount\":0,\"lastSeen\":\"Tue, 12 May 2020 12:34:26 GMT\",\"model\":\"default\",\"shouldTap\":false,\"type\":\"passive\"},{\"agentName\":\"nimrod-01-paris-aws\",\"creationTime\":\"Tue, 12 May 2020 16:03:37 GMT\",\"id\":\"nimrod-01-ECSCluster-1ENCWB3MDFEUQ_trdemo-no-tapper-TrdemoClientTaskDefinition-1SP9ZUN1LZE3N\",\"instancesCount\":0,\"lastSeen\":\"Tue, 12 May 2020 21:58:09 GMT\",\"model\":\"ngm-1205-aws-no-tapper-04\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"nimrod-01-paris-aws\",\"creationTime\":\"Tue, 12 May 2020 16:04:39 GMT\",\"id\":\"nimrod-01-ECSCluster-1ENCWB3MDFEUQ_trdemo-no-tapper-TrdemoFlightsTaskDefinition-1U2E8ONADR65S\",\"instancesCount\":0,\"lastSeen\":\"Tue, 12 May 2020 21:56:39 GMT\",\"model\":\"ngm-1205-aws-no-tapper-04\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"nimrod-01-paris-aws\",\"creationTime\":\"Tue, 12 May 2020 16:01:49 GMT\",\"id\":\"nimrod-01-ECSCluster-1ENCWB3MDFEUQ_trdemo-no-tapper-TrdemoShoppingcartTaskDefinition-PFB3IL2KQWE3\",\"instancesCount\":0,\"lastSeen\":\"Tue, 12 May 2020 21:56:34 GMT\",\"model\":\"ngm-1205-aws-no-tapper-04\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"nimrod-01-paris-aws\",\"creationTime\":\"Tue, 12 May 2020 16:01:54 GMT\",\"id\":\"nimrod-01-ECSCluster-1ENCWB3MDFEUQ_trdemo-no-tapper-TrdemoUsersTaskDefinition-CXOR2F6JGPNY\",\"instancesCount\":0,\"lastSeen\":\"Tue, 12 May 2020 21:56:54 GMT\",\"model\":\"ngm-1205-aws-no-tapper-04\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":null,\"creationTime\":null,\"id\":\"nimrodup9com-prx1\",\"instancesCount\":0,\"lastSeen\":\"Sun, 29 Mar 2020 12:59:27 GMT\",\"model\":\"ngm-2020-03-29-00\",\"shouldTap\":false,\"type\":\"proxy\"},{\"agentName\":null,\"creationTime\":\"Sun, 29 Mar 2020 14:09:23 GMT\",\"id\":\"nimrodup9com-someorgid123-prx1-local\",\"instancesCount\":0,\"lastSeen\":\"Sun, 29 Mar 2020 14:15:05 GMT\",\"model\":\"ngm-2020-03-29-01\",\"shouldTap\":true,\"type\":\"local_proxy\"},{\"agentName\":null,\"creationTime\":null,\"id\":\"ofriup9com-prx1\",\"instancesCount\":0,\"lastSeen\":\"Wed, 04 Mar 2020 08:04:47 GMT\",\"model\":\"aaa\",\"shouldTap\":false,\"type\":\"proxy\"},{\"agentName\":null,\"creationTime\":\"Thu, 19 Mar 2020 16:03:38 GMT\",\"id\":\"rami-prx1\",\"instancesCount\":0,\"lastSeen\":\"Thu, 19 Mar 2020 16:03:38 GMT\",\"model\":\"default\",\"shouldTap\":true,\"type\":\"proxy\"},{\"agentName\":null,\"creationTime\":\"Thu, 02 Apr 2020 06:31:20 GMT\",\"id\":\"ramibermanup9com-prx1\",\"instancesCount\":0,\"lastSeen\":\"Thu, 23 Apr 2020 06:26:18 GMT\",\"model\":\"rami-endpoints\",\"shouldTap\":false,\"type\":\"proxy\"},{\"agentName\":null,\"creationTime\":\"Mon, 04 May 2020 11:25:30 GMT\",\"id\":\"ramibrn1gmailcom-prx1\",\"instancesCount\":0,\"lastSeen\":\"Mon, 04 May 2020 11:26:11 GMT\",\"model\":\"regression-04-05-20\",\"shouldTap\":false,\"type\":\"proxy\"},{\"agentName\":null,\"creationTime\":\"Sun, 12 Apr 2020 12:50:24 GMT\",\"id\":\"ramibrngmailcom-prx1\",\"instancesCount\":0,\"lastSeen\":\"Sun, 12 Apr 2020 12:51:00 GMT\",\"model\":\"rami-proxy-test\",\"shouldTap\":false,\"type\":\"proxy\"},{\"agentName\":null,\"creationTime\":\"Mon, 16 Mar 2020 14:14:37 GMT\",\"id\":\"roeegadottestrio-prx1\",\"instancesCount\":0,\"lastSeen\":\"Thu, 19 Mar 2020 07:02:30 GMT\",\"model\":\"roee\",\"shouldTap\":false,\"type\":\"proxy\"},{\"agentName\":null,\"creationTime\":\"Tue, 31 Mar 2020 09:31:42 GMT\",\"id\":\"roeegadotup9com-someorgid123-prx1-local\",\"instancesCount\":0,\"lastSeen\":\"Mon, 13 Apr 2020 06:29:10 GMT\",\"model\":\"rg_local_proxy_5\",\"shouldTap\":false,\"type\":\"local_proxy\"}]\n" + }, + "redirectURL": "", + "headersSize": -1, + "bodySize": 20352 + }, + "cache": {}, + "timings": { + "send": -1, + "wait": -1, + "receive": 1 + } + }, + { + "startedDateTime": "2020-05-21T11:02:31.868000+00:00", + "time": 1, + "request": { + "method": "GET", + "url": "http://trcc-api-service/models/liraz_test_2105/suites/all/runs", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "User-Agent", + "value": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36" + }, + { + "name": "X-Real-Ip", + "value": "10.132.0.22" + }, + { + "name": "X-Forwarded-For", + "value": "10.132.0.22" + }, + { + "name": "X-Forwarded-Host", + "value": "trcc.stg.testr.io" + }, + { + "name": "X-Forwarded-Port", + "value": "443" + }, + { + "name": "X-Forwarded-Proto", + "value": "https" + }, + { + "name": "Accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "Authorization", + "value": "bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJqSEZ0R1dybjJpY084VnpDYXpaZWUyakpFc2drY1k5ZzhpN2FTbGtielRnIn0.eyJleHAiOjE1OTAwNTkxMTQsImlhdCI6MTU5MDA1ODgxNCwiYXV0aF90aW1lIjoxNTg5OTU4NDcwLCJqdGkiOiIyNzgxOTYyMy00Yjk5LTQ2MzQtOWZlNi02ZDRiNzYwNGU2ZmMiLCJpc3MiOiJodHRwczovL2F1dGguc3RnLnRlc3RyLmlvL2F1dGgvcmVhbG1zL3Rlc3RyIiwiYXVkIjoiYWNjb3VudCIsInN1YiI6ImU4NzAxMDZjLWJjYjItNDQxMy05Y2Q2LTUwMTZiNTUxMDRlYiIsInR5cCI6IkJlYXJlciIsImF6cCI6InJlYWN0LWNsaWVudCIsIm5vbmNlIjoiYzJiZTgwNGYtZjBiYS00ZWUxLTgyZWQtYmIzMTY5ZDBkYjU1Iiwic2Vzc2lvbl9zdGF0ZSI6IjM2ZDc2MDAxLTE5M2EtNGQ5OS05MTIwLTZmNGZkMjEwZDAxMiIsImFjciI6IjAiLCJhbGxvd2VkLW9yaWdpbnMiOlsiaHR0cHM6Ly9zdGcudGVzdHIuaW8iLCJjaHJvbWUtZXh0ZW5zaW9uOi8vbmFkZ2VsamVtbWJna2xkaGNwYWZqbXBtYXBpcGdsY20iLCJodHRwOi8vbG9jYWxob3N0OjMwMDAiXSwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm1hbmFnZUZlYXR1cmVGbGFncyIsIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyJhY2NvdW50Ijp7InJvbGVzIjpbIm1hbmFnZS1hY2NvdW50IiwibWFuYWdlLWFjY291bnQtbGlua3MiLCJ2aWV3LXByb2ZpbGUiXX19LCJzY29wZSI6Im9wZW5pZCBwcm9maWxlIGVtYWlsIiwiZ3JvdXBfbWVtYmVyc2hpcCI6WyJzb21lT3JnSWQxMjMiXSwiZW1haWxfdmVyaWZpZWQiOnRydWUsIm5hbWUiOiJMaXJheiBZZWhlemtlbCIsInByZWZlcnJlZF91c2VybmFtZSI6ImxpcmF6eUB1cDkuY29tIiwiZ2l2ZW5fbmFtZSI6IkxpcmF6IiwiZmFtaWx5X25hbWUiOiJZZWhlemtlbCIsImdyb3VwX3N1YmRvbWFpbiI6InNvbWVPcmdJZDEyMyIsImVtYWlsIjoibGlyYXp5QHVwOS5jb20iLCJmZWF0dXJlRmxhZ3MiOnsiZWRpdEVuZHBvaW50VmFyaWFibGVzIjp0cnVlLCJzaWRlTmF2aWdhdGlvbiI6dHJ1ZX19.KdLz7jeIr8HaST4FpJROrg6Sp-o1Nl5dU2hIbNCA0FEY-jmaoubiOlz6p7QthTJ8t-S0R_qdZtd7rXf249L6wGG_A6rriZhH41Fxhyrb0ig8OVrQp-sepv_AUf7GEIGYgpYIPFnZ6G3Dkq1aY9NzLXruh7fly_ZRkRlzF_wb1vt5NRJz3xeMrj82BOJJmUpv08AYYQhnyjKiBp7rgrNTTBejaFBozsJgXGkIi-DZfv862tgFhvPNuXsqKO5iOxv9nApuQJ2O4knVB1ag7tqB1xQcvBdkZt9gG1VVkpWsM_2j5C9cBwOuPRgHZhpZuT_YNfB4ITefGV1aYfRF-cjnug" + }, + { + "name": "Sec-Fetch-Site", + "value": "cross-site" + }, + { + "name": "Referer", + "value": "http://localhost:3000/someOrgId123/model/liraz_test_2105/lastResults/systems/all/summary" + }, + { + "name": "Sec-Fetch-Dest", + "value": "empty" + }, + { + "name": "Accept-Language", + "value": "en-US,en;q=0.9" + }, + { + "name": "Origin", + "value": "http://localhost:3000" + }, + { + "name": "Sec-Fetch-Mode", + "value": "cors" + }, + { + "name": "Accept-Encoding", + "value": "gzip, deflate, br" + }, + { + "name": "X-Request-Id", + "value": "7fa15fe4622cb3e94101ae4e0437e70f" + }, + { + "name": "X-Scheme", + "value": "https" + }, + { + "name": ":method", + "value": "GET" + }, + { + "name": ":path", + "value": "/models/liraz_test_2105/suites/all/runs" + }, + { + "name": ":authority", + "value": "trcc.stg.testr.io" + }, + { + "name": ":scheme", + "value": "http" + }, + { + "name": "x-request-start", + "value": "1590058951.868" + }, + { + "name": "x-up9-source", + "value": "10.48.1.44" + }, + { + "name": "x-up9-destination", + "value": "10.48.2.97:5000" + } + ], + "queryString": [], + "headersSize": -1, + "bodySize": -1 + }, + "response": { + "status": 200, + "statusText": "OK", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "Vary", + "value": "Origin" + }, + { + "name": "Server", + "value": "gunicorn/19.9.0" + }, + { + "name": "Date", + "value": "Thu, 21 May 2020 11:02:31 GMT" + }, + { + "name": "Connection", + "value": "keep-alive" + }, + { + "name": "Content-Type", + "value": "application/json" + }, + { + "name": "Content-Length", + "value": "3" + }, + { + "name": "Access-Control-Allow-Origin", + "value": "http://localhost:3000" + }, + { + "name": "Access-Control-Allow-Credentials", + "value": "true" + }, + { + "name": ":status", + "value": "200" + }, + { + "name": "duration_ms", + "value": "1" + } + ], + "content": { + "size": 3, + "mimeType": "", + "text": "[]\n" + }, + "redirectURL": "", + "headersSize": -1, + "bodySize": 3 + }, + "cache": {}, + "timings": { + "send": -1, + "wait": -1, + "receive": 1 + } + }, + { + "startedDateTime": "2020-05-21T11:02:32.030000+00:00", + "time": 1, + "request": { + "method": "GET", + "url": "http://trcc-api-service/models/liraz_test_2105/suites/all/runs", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "User-Agent", + "value": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36" + }, + { + "name": "Referer", + "value": "http://localhost:3000/someOrgId123/model/liraz_test_2105/lastResults/systems/all/summary" + }, + { + "name": "Sec-Fetch-Site", + "value": "cross-site" + }, + { + "name": "X-Request-Id", + "value": "87c44aed874f18450374652e08401790" + }, + { + "name": "X-Forwarded-Host", + "value": "trcc.stg.testr.io" + }, + { + "name": "X-Forwarded-Port", + "value": "443" + }, + { + "name": "X-Scheme", + "value": "https" + }, + { + "name": "Origin", + "value": "http://localhost:3000" + }, + { + "name": "Accept-Encoding", + "value": "gzip, deflate, br" + }, + { + "name": "X-Real-Ip", + "value": "10.132.0.22" + }, + { + "name": "X-Forwarded-For", + "value": "10.132.0.22" + }, + { + "name": "X-Forwarded-Proto", + "value": "https" + }, + { + "name": "Sec-Fetch-Mode", + "value": "cors" + }, + { + "name": "Sec-Fetch-Dest", + "value": "empty" + }, + { + "name": "Accept-Language", + "value": "en-US,en;q=0.9" + }, + { + "name": "Accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "Authorization", + "value": "bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJqSEZ0R1dybjJpY084VnpDYXpaZWUyakpFc2drY1k5ZzhpN2FTbGtielRnIn0.eyJleHAiOjE1OTAwNTkxMTQsImlhdCI6MTU5MDA1ODgxNCwiYXV0aF90aW1lIjoxNTg5OTU4NDcwLCJqdGkiOiIyNzgxOTYyMy00Yjk5LTQ2MzQtOWZlNi02ZDRiNzYwNGU2ZmMiLCJpc3MiOiJodHRwczovL2F1dGguc3RnLnRlc3RyLmlvL2F1dGgvcmVhbG1zL3Rlc3RyIiwiYXVkIjoiYWNjb3VudCIsInN1YiI6ImU4NzAxMDZjLWJjYjItNDQxMy05Y2Q2LTUwMTZiNTUxMDRlYiIsInR5cCI6IkJlYXJlciIsImF6cCI6InJlYWN0LWNsaWVudCIsIm5vbmNlIjoiYzJiZTgwNGYtZjBiYS00ZWUxLTgyZWQtYmIzMTY5ZDBkYjU1Iiwic2Vzc2lvbl9zdGF0ZSI6IjM2ZDc2MDAxLTE5M2EtNGQ5OS05MTIwLTZmNGZkMjEwZDAxMiIsImFjciI6IjAiLCJhbGxvd2VkLW9yaWdpbnMiOlsiaHR0cHM6Ly9zdGcudGVzdHIuaW8iLCJjaHJvbWUtZXh0ZW5zaW9uOi8vbmFkZ2VsamVtbWJna2xkaGNwYWZqbXBtYXBpcGdsY20iLCJodHRwOi8vbG9jYWxob3N0OjMwMDAiXSwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm1hbmFnZUZlYXR1cmVGbGFncyIsIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyJhY2NvdW50Ijp7InJvbGVzIjpbIm1hbmFnZS1hY2NvdW50IiwibWFuYWdlLWFjY291bnQtbGlua3MiLCJ2aWV3LXByb2ZpbGUiXX19LCJzY29wZSI6Im9wZW5pZCBwcm9maWxlIGVtYWlsIiwiZ3JvdXBfbWVtYmVyc2hpcCI6WyJzb21lT3JnSWQxMjMiXSwiZW1haWxfdmVyaWZpZWQiOnRydWUsIm5hbWUiOiJMaXJheiBZZWhlemtlbCIsInByZWZlcnJlZF91c2VybmFtZSI6ImxpcmF6eUB1cDkuY29tIiwiZ2l2ZW5fbmFtZSI6IkxpcmF6IiwiZmFtaWx5X25hbWUiOiJZZWhlemtlbCIsImdyb3VwX3N1YmRvbWFpbiI6InNvbWVPcmdJZDEyMyIsImVtYWlsIjoibGlyYXp5QHVwOS5jb20iLCJmZWF0dXJlRmxhZ3MiOnsiZWRpdEVuZHBvaW50VmFyaWFibGVzIjp0cnVlLCJzaWRlTmF2aWdhdGlvbiI6dHJ1ZX19.KdLz7jeIr8HaST4FpJROrg6Sp-o1Nl5dU2hIbNCA0FEY-jmaoubiOlz6p7QthTJ8t-S0R_qdZtd7rXf249L6wGG_A6rriZhH41Fxhyrb0ig8OVrQp-sepv_AUf7GEIGYgpYIPFnZ6G3Dkq1aY9NzLXruh7fly_ZRkRlzF_wb1vt5NRJz3xeMrj82BOJJmUpv08AYYQhnyjKiBp7rgrNTTBejaFBozsJgXGkIi-DZfv862tgFhvPNuXsqKO5iOxv9nApuQJ2O4knVB1ag7tqB1xQcvBdkZt9gG1VVkpWsM_2j5C9cBwOuPRgHZhpZuT_YNfB4ITefGV1aYfRF-cjnug" + }, + { + "name": ":method", + "value": "GET" + }, + { + "name": ":path", + "value": "/models/liraz_test_2105/suites/all/runs" + }, + { + "name": ":authority", + "value": "trcc.stg.testr.io" + }, + { + "name": ":scheme", + "value": "http" + }, + { + "name": "x-request-start", + "value": "1590058952.030" + }, + { + "name": "x-up9-source", + "value": "10.48.1.44" + }, + { + "name": "x-up9-destination", + "value": "10.48.0.155:5000" + } + ], + "queryString": [], + "headersSize": -1, + "bodySize": -1 + }, + "response": { + "status": 200, + "statusText": "OK", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "Vary", + "value": "Origin" + }, + { + "name": "Server", + "value": "gunicorn/19.9.0" + }, + { + "name": "Date", + "value": "Thu, 21 May 2020 11:02:31 GMT" + }, + { + "name": "Connection", + "value": "keep-alive" + }, + { + "name": "Content-Type", + "value": "application/json" + }, + { + "name": "Content-Length", + "value": "3" + }, + { + "name": "Access-Control-Allow-Origin", + "value": "http://localhost:3000" + }, + { + "name": "Access-Control-Allow-Credentials", + "value": "true" + }, + { + "name": ":status", + "value": "200" + }, + { + "name": "duration_ms", + "value": "1" + } + ], + "content": { + "size": 3, + "mimeType": "", + "text": "[]\n" + }, + "redirectURL": "", + "headersSize": -1, + "bodySize": 3 + }, + "cache": {}, + "timings": { + "send": -1, + "wait": -1, + "receive": 1 + } + }, + { + "startedDateTime": "2020-05-21T11:02:31.868000+00:00", + "time": 1, + "request": { + "method": "GET", + "url": "http://trcc-api-service/models/aws_services_envoy/blacklist", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "X-Request-Id", + "value": "6489852b252d95858703521c491c5ec2" + }, + { + "name": "X-Real-Ip", + "value": "10.132.0.85" + }, + { + "name": "X-Forwarded-Port", + "value": "443" + }, + { + "name": "X-Scheme", + "value": "https" + }, + { + "name": "Accept", + "value": "*/*" + }, + { + "name": "Accept-Encoding", + "value": "gzip, deflate" + }, + { + "name": "Authorization", + "value": "Bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJqSEZ0R1dybjJpY084VnpDYXpaZWUyakpFc2drY1k5ZzhpN2FTbGtielRnIn0.eyJleHAiOjE1OTAwNTkxMzUsImlhdCI6MTU5MDA1ODgzNSwianRpIjoiNjNiMWU3ODgtMmI3MC00ZDY0LTk1NDEtNTdmYzVmMTY3ZDg1IiwiaXNzIjoiaHR0cHM6Ly9hdXRoLnN0Zy50ZXN0ci5pby9hdXRoL3JlYWxtcy90ZXN0ciIsImF1ZCI6ImFjY291bnQiLCJzdWIiOiI0YWFkZWM0Mi01OWE5LTRmZDUtODI3NC1lZWI5NDNmODQyNmUiLCJ0eXAiOiJCZWFyZXIiLCJhenAiOiIzWjE5LTNzYnN2MU9KSDBEd2l2UWkyYmZVSzdsSlNFdSIsInNlc3Npb25fc3RhdGUiOiJkOTA0NjBhOC05NjBmLTRjZTYtYjczMS1hNGEwMDQ2ZTk2MzQiLCJhY3IiOiIxIiwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyJhY2NvdW50Ijp7InJvbGVzIjpbIm1hbmFnZS1hY2NvdW50IiwibWFuYWdlLWFjY291bnQtbGlua3MiLCJ2aWV3LXByb2ZpbGUiXX19LCJzY29wZSI6InByb2ZpbGUgZW1haWwiLCJjbGllbnRJZCI6IjNaMTktM3Nic3YxT0pIMER3aXZRaTJiZlVLN2xKU0V1IiwiY2xpZW50SG9zdCI6IjEwLjEzMi4wLjMwIiwiZW1haWxfdmVyaWZpZWQiOmZhbHNlLCJvcmdhbml6YXRpb24iOiJzb21lT3JnSWQxMjMiLCJwcmVmZXJyZWRfdXNlcm5hbWUiOiJzZXJ2aWNlLWFjY291bnQtM3oxOS0zc2JzdjFvamgwZHdpdnFpMmJmdWs3bGpzZXUiLCJjbGllbnRBZGRyZXNzIjoiMTAuMTMyLjAuMzAiLCJlbWFpbCI6InNlcnZpY2UtYWNjb3VudC0zejE5LTNzYnN2MW9qaDBkd2l2cWkyYmZ1azdsanNldUBwbGFjZWhvbGRlci5vcmcifQ.NbnASo0pxkWkTTA8IP3BGVX__bw97K9EDfG4eGHg9QVb14Dfwh4TCvjoL2lxj3v_32hHcHWU6BL2rlztd1gSeheVR_XN39Q8_DkU3CWDuI05ndqPs5BuXu5sJ0KsfJP1lR-GOB_na0HHImLNWdNVQanTmFIsyWPAVcISirIfwhRhei5d730-JXiASbF2lnNOyvnGvFEj2NtgQjF5PZwG_7Qici7Mq-PE5z6LX9t6xuWVqPnryHGQLgl3EPBkWyzdA0UhG0nIitW5xKNdCq3wo9fwAigW7QNLdqjrrWGVglDnp6olg_eF915mbyWtnYXq3vFZpbhXKH0NEYD5gjkTRw" + }, + { + "name": "X-Forwarded-For", + "value": "10.132.0.85" + }, + { + "name": "X-Forwarded-Host", + "value": "trcc.stg.testr.io" + }, + { + "name": "X-Forwarded-Proto", + "value": "https" + }, + { + "name": "User-Agent", + "value": "python-requests/2.23.0" + }, + { + "name": ":method", + "value": "GET" + }, + { + "name": ":path", + "value": "/models/aws_services_envoy/blacklist" + }, + { + "name": ":authority", + "value": "trcc.stg.testr.io" + }, + { + "name": ":scheme", + "value": "http" + }, + { + "name": "x-request-start", + "value": "1590058951.868" + }, + { + "name": "x-up9-source", + "value": "10.48.1.44" + }, + { + "name": "x-up9-destination", + "value": "10.48.2.97:5000" + } + ], + "queryString": [], + "headersSize": -1, + "bodySize": -1 + }, + "response": { + "status": 200, + "statusText": "OK", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "Access-Control-Allow-Origin", + "value": "http://localhost:3000" + }, + { + "name": "Access-Control-Allow-Credentials", + "value": "true" + }, + { + "name": "Vary", + "value": "Origin" + }, + { + "name": "Server", + "value": "gunicorn/19.9.0" + }, + { + "name": "Date", + "value": "Thu, 21 May 2020 11:02:31 GMT" + }, + { + "name": "Connection", + "value": "keep-alive" + }, + { + "name": "Content-Type", + "value": "application/json" + }, + { + "name": "Content-Length", + "value": "3" + }, + { + "name": ":status", + "value": "200" + }, + { + "name": "duration_ms", + "value": "1" + } + ], + "content": { + "size": 3, + "mimeType": "", + "text": "[]\n" + }, + "redirectURL": "", + "headersSize": -1, + "bodySize": 3 + }, + "cache": {}, + "timings": { + "send": -1, + "wait": -1, + "receive": 1 + } + }, + { + "startedDateTime": "2020-05-21T11:02:32.031000+00:00", + "time": 1, + "request": { + "method": "GET", + "url": "http://trcc-api-service/models/liraz_test_2105/suites/all/runs", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "X-Forwarded-For", + "value": "10.132.0.22" + }, + { + "name": "Authorization", + "value": "bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJqSEZ0R1dybjJpY084VnpDYXpaZWUyakpFc2drY1k5ZzhpN2FTbGtielRnIn0.eyJleHAiOjE1OTAwNTkxMTQsImlhdCI6MTU5MDA1ODgxNCwiYXV0aF90aW1lIjoxNTg5OTU4NDcwLCJqdGkiOiIyNzgxOTYyMy00Yjk5LTQ2MzQtOWZlNi02ZDRiNzYwNGU2ZmMiLCJpc3MiOiJodHRwczovL2F1dGguc3RnLnRlc3RyLmlvL2F1dGgvcmVhbG1zL3Rlc3RyIiwiYXVkIjoiYWNjb3VudCIsInN1YiI6ImU4NzAxMDZjLWJjYjItNDQxMy05Y2Q2LTUwMTZiNTUxMDRlYiIsInR5cCI6IkJlYXJlciIsImF6cCI6InJlYWN0LWNsaWVudCIsIm5vbmNlIjoiYzJiZTgwNGYtZjBiYS00ZWUxLTgyZWQtYmIzMTY5ZDBkYjU1Iiwic2Vzc2lvbl9zdGF0ZSI6IjM2ZDc2MDAxLTE5M2EtNGQ5OS05MTIwLTZmNGZkMjEwZDAxMiIsImFjciI6IjAiLCJhbGxvd2VkLW9yaWdpbnMiOlsiaHR0cHM6Ly9zdGcudGVzdHIuaW8iLCJjaHJvbWUtZXh0ZW5zaW9uOi8vbmFkZ2VsamVtbWJna2xkaGNwYWZqbXBtYXBpcGdsY20iLCJodHRwOi8vbG9jYWxob3N0OjMwMDAiXSwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm1hbmFnZUZlYXR1cmVGbGFncyIsIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyJhY2NvdW50Ijp7InJvbGVzIjpbIm1hbmFnZS1hY2NvdW50IiwibWFuYWdlLWFjY291bnQtbGlua3MiLCJ2aWV3LXByb2ZpbGUiXX19LCJzY29wZSI6Im9wZW5pZCBwcm9maWxlIGVtYWlsIiwiZ3JvdXBfbWVtYmVyc2hpcCI6WyJzb21lT3JnSWQxMjMiXSwiZW1haWxfdmVyaWZpZWQiOnRydWUsIm5hbWUiOiJMaXJheiBZZWhlemtlbCIsInByZWZlcnJlZF91c2VybmFtZSI6ImxpcmF6eUB1cDkuY29tIiwiZ2l2ZW5fbmFtZSI6IkxpcmF6IiwiZmFtaWx5X25hbWUiOiJZZWhlemtlbCIsImdyb3VwX3N1YmRvbWFpbiI6InNvbWVPcmdJZDEyMyIsImVtYWlsIjoibGlyYXp5QHVwOS5jb20iLCJmZWF0dXJlRmxhZ3MiOnsiZWRpdEVuZHBvaW50VmFyaWFibGVzIjp0cnVlLCJzaWRlTmF2aWdhdGlvbiI6dHJ1ZX19.KdLz7jeIr8HaST4FpJROrg6Sp-o1Nl5dU2hIbNCA0FEY-jmaoubiOlz6p7QthTJ8t-S0R_qdZtd7rXf249L6wGG_A6rriZhH41Fxhyrb0ig8OVrQp-sepv_AUf7GEIGYgpYIPFnZ6G3Dkq1aY9NzLXruh7fly_ZRkRlzF_wb1vt5NRJz3xeMrj82BOJJmUpv08AYYQhnyjKiBp7rgrNTTBejaFBozsJgXGkIi-DZfv862tgFhvPNuXsqKO5iOxv9nApuQJ2O4knVB1ag7tqB1xQcvBdkZt9gG1VVkpWsM_2j5C9cBwOuPRgHZhpZuT_YNfB4ITefGV1aYfRF-cjnug" + }, + { + "name": "Sec-Fetch-Dest", + "value": "empty" + }, + { + "name": "X-Real-Ip", + "value": "10.132.0.22" + }, + { + "name": "Origin", + "value": "http://localhost:3000" + }, + { + "name": "Accept-Language", + "value": "en-US,en;q=0.9" + }, + { + "name": "X-Request-Id", + "value": "688d6b0d11f2ed02e31f4c998cb394e8" + }, + { + "name": "X-Forwarded-Host", + "value": "trcc.stg.testr.io" + }, + { + "name": "X-Forwarded-Port", + "value": "443" + }, + { + "name": "X-Scheme", + "value": "https" + }, + { + "name": "Referer", + "value": "http://localhost:3000/someOrgId123/model/liraz_test_2105/lastResults/systems/all/summary" + }, + { + "name": "Sec-Fetch-Mode", + "value": "cors" + }, + { + "name": "Accept-Encoding", + "value": "gzip, deflate, br" + }, + { + "name": "X-Forwarded-Proto", + "value": "https" + }, + { + "name": "Accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "User-Agent", + "value": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36" + }, + { + "name": "Sec-Fetch-Site", + "value": "cross-site" + }, + { + "name": ":method", + "value": "GET" + }, + { + "name": ":path", + "value": "/models/liraz_test_2105/suites/all/runs" + }, + { + "name": ":authority", + "value": "trcc.stg.testr.io" + }, + { + "name": ":scheme", + "value": "http" + }, + { + "name": "x-request-start", + "value": "1590058952.031" + }, + { + "name": "x-up9-source", + "value": "10.48.1.44" + }, + { + "name": "x-up9-destination", + "value": "10.48.0.155:5000" + } + ], + "queryString": [], + "headersSize": -1, + "bodySize": -1 + }, + "response": { + "status": 200, + "statusText": "OK", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "Access-Control-Allow-Credentials", + "value": "true" + }, + { + "name": "Vary", + "value": "Origin" + }, + { + "name": "Server", + "value": "gunicorn/19.9.0" + }, + { + "name": "Date", + "value": "Thu, 21 May 2020 11:02:31 GMT" + }, + { + "name": "Connection", + "value": "keep-alive" + }, + { + "name": "Content-Type", + "value": "application/json" + }, + { + "name": "Content-Length", + "value": "3" + }, + { + "name": "Access-Control-Allow-Origin", + "value": "http://localhost:3000" + }, + { + "name": ":status", + "value": "200" + }, + { + "name": "duration_ms", + "value": "1" + } + ], + "content": { + "size": 3, + "mimeType": "", + "text": "[]\n" + }, + "redirectURL": "", + "headersSize": -1, + "bodySize": 3 + }, + "cache": {}, + "timings": { + "send": -1, + "wait": -1, + "receive": 1 + } + }, + { + "startedDateTime": "2020-05-21T11:02:31.869000+00:00", + "time": 1, + "request": { + "method": "GET", + "url": "http://trcc-api-service/models/ap_test/blacklist", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "X-Request-Id", + "value": "7409add7cf3085b693523f8a9d246af2" + }, + { + "name": "X-Forwarded-For", + "value": "10.132.0.85" + }, + { + "name": "X-Forwarded-Proto", + "value": "https" + }, + { + "name": "User-Agent", + "value": "python-requests/2.23.0" + }, + { + "name": "Accept-Encoding", + "value": "gzip, deflate" + }, + { + "name": "Authorization", + "value": "Bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJqSEZ0R1dybjJpY084VnpDYXpaZWUyakpFc2drY1k5ZzhpN2FTbGtielRnIn0.eyJleHAiOjE1OTAwNTkxMzUsImlhdCI6MTU5MDA1ODgzNSwianRpIjoiNjNiMWU3ODgtMmI3MC00ZDY0LTk1NDEtNTdmYzVmMTY3ZDg1IiwiaXNzIjoiaHR0cHM6Ly9hdXRoLnN0Zy50ZXN0ci5pby9hdXRoL3JlYWxtcy90ZXN0ciIsImF1ZCI6ImFjY291bnQiLCJzdWIiOiI0YWFkZWM0Mi01OWE5LTRmZDUtODI3NC1lZWI5NDNmODQyNmUiLCJ0eXAiOiJCZWFyZXIiLCJhenAiOiIzWjE5LTNzYnN2MU9KSDBEd2l2UWkyYmZVSzdsSlNFdSIsInNlc3Npb25fc3RhdGUiOiJkOTA0NjBhOC05NjBmLTRjZTYtYjczMS1hNGEwMDQ2ZTk2MzQiLCJhY3IiOiIxIiwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyJhY2NvdW50Ijp7InJvbGVzIjpbIm1hbmFnZS1hY2NvdW50IiwibWFuYWdlLWFjY291bnQtbGlua3MiLCJ2aWV3LXByb2ZpbGUiXX19LCJzY29wZSI6InByb2ZpbGUgZW1haWwiLCJjbGllbnRJZCI6IjNaMTktM3Nic3YxT0pIMER3aXZRaTJiZlVLN2xKU0V1IiwiY2xpZW50SG9zdCI6IjEwLjEzMi4wLjMwIiwiZW1haWxfdmVyaWZpZWQiOmZhbHNlLCJvcmdhbml6YXRpb24iOiJzb21lT3JnSWQxMjMiLCJwcmVmZXJyZWRfdXNlcm5hbWUiOiJzZXJ2aWNlLWFjY291bnQtM3oxOS0zc2JzdjFvamgwZHdpdnFpMmJmdWs3bGpzZXUiLCJjbGllbnRBZGRyZXNzIjoiMTAuMTMyLjAuMzAiLCJlbWFpbCI6InNlcnZpY2UtYWNjb3VudC0zejE5LTNzYnN2MW9qaDBkd2l2cWkyYmZ1azdsanNldUBwbGFjZWhvbGRlci5vcmcifQ.NbnASo0pxkWkTTA8IP3BGVX__bw97K9EDfG4eGHg9QVb14Dfwh4TCvjoL2lxj3v_32hHcHWU6BL2rlztd1gSeheVR_XN39Q8_DkU3CWDuI05ndqPs5BuXu5sJ0KsfJP1lR-GOB_na0HHImLNWdNVQanTmFIsyWPAVcISirIfwhRhei5d730-JXiASbF2lnNOyvnGvFEj2NtgQjF5PZwG_7Qici7Mq-PE5z6LX9t6xuWVqPnryHGQLgl3EPBkWyzdA0UhG0nIitW5xKNdCq3wo9fwAigW7QNLdqjrrWGVglDnp6olg_eF915mbyWtnYXq3vFZpbhXKH0NEYD5gjkTRw" + }, + { + "name": "X-Real-Ip", + "value": "10.132.0.85" + }, + { + "name": "X-Forwarded-Host", + "value": "trcc.stg.testr.io" + }, + { + "name": "X-Forwarded-Port", + "value": "443" + }, + { + "name": "X-Scheme", + "value": "https" + }, + { + "name": "Accept", + "value": "*/*" + }, + { + "name": ":method", + "value": "GET" + }, + { + "name": ":path", + "value": "/models/ap_test/blacklist" + }, + { + "name": ":authority", + "value": "trcc.stg.testr.io" + }, + { + "name": ":scheme", + "value": "http" + }, + { + "name": "x-request-start", + "value": "1590058951.869" + }, + { + "name": "x-up9-source", + "value": "10.48.1.44" + }, + { + "name": "x-up9-destination", + "value": "10.48.2.97:5000" + } + ], + "queryString": [], + "headersSize": -1, + "bodySize": -1 + }, + "response": { + "status": 200, + "statusText": "OK", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "Access-Control-Allow-Credentials", + "value": "true" + }, + { + "name": "Vary", + "value": "Origin" + }, + { + "name": "Server", + "value": "gunicorn/19.9.0" + }, + { + "name": "Date", + "value": "Thu, 21 May 2020 11:02:31 GMT" + }, + { + "name": "Connection", + "value": "keep-alive" + }, + { + "name": "Content-Type", + "value": "application/json" + }, + { + "name": "Content-Length", + "value": "3" + }, + { + "name": "Access-Control-Allow-Origin", + "value": "http://localhost:3000" + }, + { + "name": ":status", + "value": "200" + }, + { + "name": "duration_ms", + "value": "1" + } + ], + "content": { + "size": 3, + "mimeType": "", + "text": "[]\n" + }, + "redirectURL": "", + "headersSize": -1, + "bodySize": 3 + }, + "cache": {}, + "timings": { + "send": -1, + "wait": -1, + "receive": 1 + } + }, + { + "startedDateTime": "2020-05-21T11:02:32.032000+00:00", + "time": 1, + "request": { + "method": "OPTIONS", + "url": "http://trcc-api-service/models/roee/suites/all/runs/state", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "Origin", + "value": "https://stg.testr.io" + }, + { + "name": "Referer", + "value": "https://stg.testr.io/someOrgId123/model/roee/lastResults/systems/all/endpoints/12" + }, + { + "name": "Sec-Fetch-Mode", + "value": "cors" + }, + { + "name": "Sec-Fetch-Site", + "value": "same-site" + }, + { + "name": "Accept-Language", + "value": "en-US,en;q=0.9" + }, + { + "name": "X-Request-Id", + "value": "f4bd7b9338ccd683e6d66b555861a91d" + }, + { + "name": "X-Forwarded-Host", + "value": "trcc.stg.testr.io" + }, + { + "name": "Access-Control-Request-Headers", + "value": "authorization" + }, + { + "name": "Accept", + "value": "*/*" + }, + { + "name": "Sec-Fetch-Dest", + "value": "empty" + }, + { + "name": "User-Agent", + "value": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36" + }, + { + "name": "X-Forwarded-Port", + "value": "443" + }, + { + "name": "X-Scheme", + "value": "https" + }, + { + "name": "Access-Control-Request-Method", + "value": "GET" + }, + { + "name": "Accept-Encoding", + "value": "gzip, deflate, br" + }, + { + "name": "X-Real-Ip", + "value": "10.132.0.22" + }, + { + "name": "X-Forwarded-For", + "value": "10.132.0.22" + }, + { + "name": "X-Forwarded-Proto", + "value": "https" + }, + { + "name": ":method", + "value": "OPTIONS" + }, + { + "name": ":path", + "value": "/models/roee/suites/all/runs/state" + }, + { + "name": ":authority", + "value": "trcc.stg.testr.io" + }, + { + "name": ":scheme", + "value": "http" + }, + { + "name": "x-request-start", + "value": "1590058952.032" + }, + { + "name": "x-up9-source", + "value": "10.48.1.44" + }, + { + "name": "x-up9-destination", + "value": "10.48.0.155:5000" + } + ], + "queryString": [], + "headersSize": -1, + "bodySize": -1 + }, + "response": { + "status": 200, + "statusText": "OK", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "Server", + "value": "gunicorn/19.9.0" + }, + { + "name": "Date", + "value": "Thu, 21 May 2020 11:02:31 GMT" + }, + { + "name": "Connection", + "value": "keep-alive" + }, + { + "name": "Access-Control-Allow-Headers", + "value": "authorization" + }, + { + "name": "Content-Length", + "value": "0" + }, + { + "name": "Vary", + "value": "Origin" + }, + { + "name": "Content-Type", + "value": "text/html; charset=utf-8" + }, + { + "name": "Allow", + "value": "DELETE, GET, HEAD, OPTIONS, POST" + }, + { + "name": "Access-Control-Allow-Origin", + "value": "https://stg.testr.io" + }, + { + "name": "Access-Control-Allow-Credentials", + "value": "true" + }, + { + "name": "Access-Control-Allow-Methods", + "value": "DELETE, GET, HEAD, OPTIONS, PATCH, POST, PUT" + }, + { + "name": ":status", + "value": "200" + }, + { + "name": "duration_ms", + "value": "1" + } + ], + "content": { + "size": 0, + "mimeType": "", + "text": "", + "encoding": "base64" + }, + "redirectURL": "", + "headersSize": -1, + "bodySize": 0 + }, + "cache": {}, + "timings": { + "send": -1, + "wait": -1, + "receive": 1 + } + }, + { + "startedDateTime": "2020-05-21T11:02:32.032000+00:00", + "time": 1, + "request": { + "method": "GET", + "url": "http://trcc-api-service/models/ah.trdemo.0511/status", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "Accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "Referer", + "value": "https://stg.testr.io/someOrgId123/model/ah.trdemo.0511/lastResults/systems/all/endpoints" + }, + { + "name": "X-Real-Ip", + "value": "10.132.0.85" + }, + { + "name": "X-Scheme", + "value": "https" + }, + { + "name": "User-Agent", + "value": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36" + }, + { + "name": "Sec-Fetch-Mode", + "value": "cors" + }, + { + "name": "X-Forwarded-For", + "value": "10.132.0.85" + }, + { + "name": "X-Forwarded-Host", + "value": "trcc.stg.testr.io" + }, + { + "name": "X-Forwarded-Proto", + "value": "https" + }, + { + "name": "Authorization", + "value": "bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJqSEZ0R1dybjJpY084VnpDYXpaZWUyakpFc2drY1k5ZzhpN2FTbGtielRnIn0.eyJleHAiOjE1OTAwNTkwNTQsImlhdCI6MTU5MDA1ODc1NCwiYXV0aF90aW1lIjoxNTg5OTA1NzU2LCJqdGkiOiJhMDhiNWVhYy1lMDg0LTRjOTMtYmY3ZC0yNjlkZmRmZWIyZjciLCJpc3MiOiJodHRwczovL2F1dGguc3RnLnRlc3RyLmlvL2F1dGgvcmVhbG1zL3Rlc3RyIiwiYXVkIjoiYWNjb3VudCIsInN1YiI6IjdiYmFhOTg4LWFlMmUtNGQxMy1iNGQzLTdhMzc0MzEyNzFiYyIsInR5cCI6IkJlYXJlciIsImF6cCI6InJlYWN0LWNsaWVudCIsIm5vbmNlIjoiY2EwOTQ2ZWItMDA2NC00YzUwLTgxYTctZWIxNzBkY2I0MjQ0Iiwic2Vzc2lvbl9zdGF0ZSI6IjdjYTU4YWIxLWRlY2EtNDUzMS05NjljLTVhMzUzYmVmZDIyOCIsImFjciI6IjAiLCJhbGxvd2VkLW9yaWdpbnMiOlsiaHR0cHM6Ly9zdGcudGVzdHIuaW8iLCJjaHJvbWUtZXh0ZW5zaW9uOi8vbmFkZ2VsamVtbWJna2xkaGNwYWZqbXBtYXBpcGdsY20iLCJodHRwOi8vbG9jYWxob3N0OjMwMDAiXSwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm1hbmFnZUZlYXR1cmVGbGFncyIsIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyJhY2NvdW50Ijp7InJvbGVzIjpbIm1hbmFnZS1hY2NvdW50IiwibWFuYWdlLWFjY291bnQtbGlua3MiLCJ2aWV3LXByb2ZpbGUiXX19LCJzY29wZSI6Im9wZW5pZCBwcm9maWxlIGVtYWlsIiwiZ3JvdXBfbWVtYmVyc2hpcCI6WyJzb21lT3JnSWQxMjMiXSwiZW1haWxfdmVyaWZpZWQiOnRydWUsIm5hbWUiOiJBbGV4IEhhaXV0IiwicHJlZmVycmVkX3VzZXJuYW1lIjoiYWxleEB1cDkuY29tIiwiZ2l2ZW5fbmFtZSI6IkFsZXgiLCJmYW1pbHlfbmFtZSI6IkhhaXV0IiwiZ3JvdXBfc3ViZG9tYWluIjoic29tZU9yZ0lkMTIzIiwiZW1haWwiOiJhbGV4QHVwOS5jb20iLCJmZWF0dXJlRmxhZ3MiOnsiZWRpdEVuZHBvaW50VmFyaWFibGVzIjp0cnVlLCJzaWRlTmF2aWdhdGlvbiI6dHJ1ZX19.iXBcJGDz9UVUzsfUsNdoP9VC-qkPZrkTryuQ1LfSX08ovoFDEHxVb8bgud_iP36QnA8TpHXKde0kcLYDO-CV0hp-sEV7nX_zTy4uKC7vbD8Of6LkHJ4VKwcp-VBTwoEQ2nan6aFqIS5AkJxTEiCf0owIhUB7cnCYI-MkZhOUxRbh3tfAv-wBQb6aDo4M6sAG-EY8epcy4BcMxQrnflEF8jGqpveBmSMNQYS5a3yM0sFQ0sXRYGEYMWTemL0E0S253wqdMtoBpDdreNtxyecmZlTL0gNtRcXl5tBVJVLq1PgWNr43Wcxgzc4b2ujziE_E7feAj22w-dN78Q_IEXkdKw" + }, + { + "name": "Origin", + "value": "https://stg.testr.io" + }, + { + "name": "Sec-Fetch-Dest", + "value": "empty" + }, + { + "name": "Accept-Encoding", + "value": "gzip, deflate, br" + }, + { + "name": "X-Request-Id", + "value": "f55c63eb570da3a5bcdbe66cf2b6c655" + }, + { + "name": "X-Forwarded-Port", + "value": "443" + }, + { + "name": "Sec-Fetch-Site", + "value": "same-site" + }, + { + "name": "Accept-Language", + "value": "en-US,en;q=0.9,de;q=0.8,he;q=0.7,ru;q=0.6" + }, + { + "name": ":method", + "value": "GET" + }, + { + "name": ":path", + "value": "/models/ah.trdemo.0511/status" + }, + { + "name": ":authority", + "value": "trcc.stg.testr.io" + }, + { + "name": ":scheme", + "value": "http" + }, + { + "name": "x-request-start", + "value": "1590058952.032" + }, + { + "name": "x-up9-source", + "value": "10.48.1.44" + }, + { + "name": "x-up9-destination", + "value": "10.48.0.155:5000" + } + ], + "queryString": [], + "headersSize": -1, + "bodySize": -1 + }, + "response": { + "status": 200, + "statusText": "OK", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "Access-Control-Allow-Origin", + "value": "https://stg.testr.io" + }, + { + "name": "Access-Control-Allow-Credentials", + "value": "true" + }, + { + "name": "Vary", + "value": "Origin" + }, + { + "name": "Server", + "value": "gunicorn/19.9.0" + }, + { + "name": "Date", + "value": "Thu, 21 May 2020 11:02:31 GMT" + }, + { + "name": "Connection", + "value": "keep-alive" + }, + { + "name": "Content-Type", + "value": "application/json" + }, + { + "name": "Content-Length", + "value": "72" + }, + { + "name": ":status", + "value": "200" + }, + { + "name": "duration_ms", + "value": "1" + } + ], + "content": { + "size": 72, + "mimeType": "", + "text": "{\"errorCount\":0,\"lastMajorGeneration\":-1,\"lastSuccessfulGeneration\":-1}\n" + }, + "redirectURL": "", + "headersSize": -1, + "bodySize": 72 + }, + "cache": {}, + "timings": { + "send": -1, + "wait": -1, + "receive": 1 + } + }, + { + "startedDateTime": "2020-05-21T11:02:31.869000+00:00", + "time": 1, + "request": { + "method": "GET", + "url": "http://trcc-api-service/models/aws_kong5/suites/all/runs", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "X-Real-Ip", + "value": "10.132.0.11" + }, + { + "name": "X-Forwarded-Host", + "value": "trcc.stg.testr.io" + }, + { + "name": "X-Forwarded-Port", + "value": "443" + }, + { + "name": "Dnt", + "value": "1" + }, + { + "name": "Sec-Fetch-Dest", + "value": "empty" + }, + { + "name": "Accept-Language", + "value": "en-IL,en-US;q=0.9,en;q=0.8,he;q=0.7,pl;q=0.6,ru;q=0.5" + }, + { + "name": "X-Forwarded-For", + "value": "10.132.0.11" + }, + { + "name": "X-Scheme", + "value": "https" + }, + { + "name": "Accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "Referer", + "value": "https://stg.testr.io/someOrgId123/model/aws_kong5/lastResults/systems/all/runs" + }, + { + "name": "X-Request-Id", + "value": "82b41d759c0c16749ae1b8cc397d34f3" + }, + { + "name": "X-Forwarded-Proto", + "value": "https" + }, + { + "name": "Sec-Fetch-Site", + "value": "same-site" + }, + { + "name": "Sec-Fetch-Mode", + "value": "cors" + }, + { + "name": "Authorization", + "value": "bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJqSEZ0R1dybjJpY084VnpDYXpaZWUyakpFc2drY1k5ZzhpN2FTbGtielRnIn0.eyJleHAiOjE1OTAwNTkyNDMsImlhdCI6MTU5MDA1ODk0MywiYXV0aF90aW1lIjoxNTkwMDU4NjUxLCJqdGkiOiI1ODYzNmRiMy0wN2IxLTQ2ZDYtOGNiNS01MzEzMDFlZGY4MGYiLCJpc3MiOiJodHRwczovL2F1dGguc3RnLnRlc3RyLmlvL2F1dGgvcmVhbG1zL3Rlc3RyIiwiYXVkIjoiYWNjb3VudCIsInN1YiI6IjBlYWU4ZmFjLTgyYTEtNDUwNi05MWQ0LTA4ZDYxZTI2NWY1NCIsInR5cCI6IkJlYXJlciIsImF6cCI6InJlYWN0LWNsaWVudCIsIm5vbmNlIjoiNTRjMTM5OTktMDg0NS00OWNmLWI1OTAtOTY1ZThjNWI0NmJlIiwic2Vzc2lvbl9zdGF0ZSI6ImY3YjEyOTM1LThmMTctNDc1Zi04NmRhLWQ4NjFjZTYxNWZjNyIsImFjciI6IjAiLCJhbGxvd2VkLW9yaWdpbnMiOlsiaHR0cHM6Ly9zdGcudGVzdHIuaW8iLCJjaHJvbWUtZXh0ZW5zaW9uOi8vbmFkZ2VsamVtbWJna2xkaGNwYWZqbXBtYXBpcGdsY20iLCJodHRwOi8vbG9jYWxob3N0OjMwMDAiXSwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyJhY2NvdW50Ijp7InJvbGVzIjpbIm1hbmFnZS1hY2NvdW50IiwibWFuYWdlLWFjY291bnQtbGlua3MiLCJ2aWV3LXByb2ZpbGUiXX19LCJzY29wZSI6Im9wZW5pZCBwcm9maWxlIGVtYWlsIiwiZ3JvdXBfbWVtYmVyc2hpcCI6WyJzb21lT3JnSWQxMjMiXSwiZW1haWxfdmVyaWZpZWQiOnRydWUsIm5hbWUiOiJSYW1pIEJlcm1hbiIsInByZWZlcnJlZF91c2VybmFtZSI6InJhbWkuYmVybWFuQHVwOS5jb20iLCJnaXZlbl9uYW1lIjoiUmFtaSIsImZhbWlseV9uYW1lIjoiQmVybWFuIiwiZ3JvdXBfc3ViZG9tYWluIjoic29tZU9yZ0lkMTIzIiwiZW1haWwiOiJyYW1pLmJlcm1hbkB1cDkuY29tIiwiZmVhdHVyZUZsYWdzIjp7ImVkaXRFbmRwb2ludFZhcmlhYmxlcyI6dHJ1ZSwic2lkZU5hdmlnYXRpb24iOnRydWV9fQ.UEDsnoo9A8CbdIYKXoOrAAq6y2K7Aoqf-PplHhXFoVep9ewwA9qBjXqgn0fK9cnE_KfZKUcX_cy1HDhhdIfR_aHpbWWhQ3gxISkE6ALka18JIrUv7bFaHKio6eEP6tgn34QVP8aQVEB3e3g7h3dLuUvZ1xIMnt6fy03tD3KgiQlvdHwg5FhJLosiCrHgboEqN5VH_f_2QF33XiXTkDG1e-AOEnIIWqloMDTUPZEUvEo_KH68lB0Uu23YhhI5gPAuKQVb_UjFWcF_6Ysvk3C3j0cuk09DZ7YEI1u-bKp58LHnsS6gqNFQxy-CDlZ8Oht5d2I3LbwZZxHzMixzzFzJCA" + }, + { + "name": "User-Agent", + "value": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36" + }, + { + "name": "Origin", + "value": "https://stg.testr.io" + }, + { + "name": "Accept-Encoding", + "value": "gzip, deflate, br" + }, + { + "name": ":method", + "value": "GET" + }, + { + "name": ":path", + "value": "/models/aws_kong5/suites/all/runs" + }, + { + "name": ":authority", + "value": "trcc.stg.testr.io" + }, + { + "name": ":scheme", + "value": "http" + }, + { + "name": "x-request-start", + "value": "1590058951.869" + }, + { + "name": "x-up9-source", + "value": "10.48.1.44" + }, + { + "name": "x-up9-destination", + "value": "10.48.2.97:5000" + } + ], + "queryString": [], + "headersSize": -1, + "bodySize": -1 + }, + "response": { + "status": 200, + "statusText": "OK", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "Connection", + "value": "keep-alive" + }, + { + "name": "Content-Type", + "value": "application/json" + }, + { + "name": "Content-Length", + "value": "3" + }, + { + "name": "Access-Control-Allow-Origin", + "value": "https://stg.testr.io" + }, + { + "name": "Access-Control-Allow-Credentials", + "value": "true" + }, + { + "name": "Vary", + "value": "Origin" + }, + { + "name": "Server", + "value": "gunicorn/19.9.0" + }, + { + "name": "Date", + "value": "Thu, 21 May 2020 11:02:31 GMT" + }, + { + "name": ":status", + "value": "200" + }, + { + "name": "duration_ms", + "value": "1" + } + ], + "content": { + "size": 3, + "mimeType": "", + "text": "[]\n" + }, + "redirectURL": "", + "headersSize": -1, + "bodySize": 3 + }, + "cache": {}, + "timings": { + "send": -1, + "wait": -1, + "receive": 1 + } + }, + { + "startedDateTime": "2020-05-21T11:02:31.870000+00:00", + "time": 1, + "request": { + "method": "GET", + "url": "http://trcc-api-service/models/aws_kong5/suites/all/runs", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "Dnt", + "value": "1" + }, + { + "name": "Accept-Encoding", + "value": "gzip, deflate, br" + }, + { + "name": "Accept-Language", + "value": "en-IL,en-US;q=0.9,en;q=0.8,he;q=0.7,pl;q=0.6,ru;q=0.5" + }, + { + "name": "User-Agent", + "value": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36" + }, + { + "name": "Sec-Fetch-Mode", + "value": "cors" + }, + { + "name": "Referer", + "value": "https://stg.testr.io/someOrgId123/model/aws_kong5/lastResults/systems/all/runs" + }, + { + "name": "X-Real-Ip", + "value": "10.132.0.11" + }, + { + "name": "X-Forwarded-Host", + "value": "trcc.stg.testr.io" + }, + { + "name": "X-Forwarded-Port", + "value": "443" + }, + { + "name": "Authorization", + "value": "bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJqSEZ0R1dybjJpY084VnpDYXpaZWUyakpFc2drY1k5ZzhpN2FTbGtielRnIn0.eyJleHAiOjE1OTAwNTkyNDMsImlhdCI6MTU5MDA1ODk0MywiYXV0aF90aW1lIjoxNTkwMDU4NjUxLCJqdGkiOiI1ODYzNmRiMy0wN2IxLTQ2ZDYtOGNiNS01MzEzMDFlZGY4MGYiLCJpc3MiOiJodHRwczovL2F1dGguc3RnLnRlc3RyLmlvL2F1dGgvcmVhbG1zL3Rlc3RyIiwiYXVkIjoiYWNjb3VudCIsInN1YiI6IjBlYWU4ZmFjLTgyYTEtNDUwNi05MWQ0LTA4ZDYxZTI2NWY1NCIsInR5cCI6IkJlYXJlciIsImF6cCI6InJlYWN0LWNsaWVudCIsIm5vbmNlIjoiNTRjMTM5OTktMDg0NS00OWNmLWI1OTAtOTY1ZThjNWI0NmJlIiwic2Vzc2lvbl9zdGF0ZSI6ImY3YjEyOTM1LThmMTctNDc1Zi04NmRhLWQ4NjFjZTYxNWZjNyIsImFjciI6IjAiLCJhbGxvd2VkLW9yaWdpbnMiOlsiaHR0cHM6Ly9zdGcudGVzdHIuaW8iLCJjaHJvbWUtZXh0ZW5zaW9uOi8vbmFkZ2VsamVtbWJna2xkaGNwYWZqbXBtYXBpcGdsY20iLCJodHRwOi8vbG9jYWxob3N0OjMwMDAiXSwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyJhY2NvdW50Ijp7InJvbGVzIjpbIm1hbmFnZS1hY2NvdW50IiwibWFuYWdlLWFjY291bnQtbGlua3MiLCJ2aWV3LXByb2ZpbGUiXX19LCJzY29wZSI6Im9wZW5pZCBwcm9maWxlIGVtYWlsIiwiZ3JvdXBfbWVtYmVyc2hpcCI6WyJzb21lT3JnSWQxMjMiXSwiZW1haWxfdmVyaWZpZWQiOnRydWUsIm5hbWUiOiJSYW1pIEJlcm1hbiIsInByZWZlcnJlZF91c2VybmFtZSI6InJhbWkuYmVybWFuQHVwOS5jb20iLCJnaXZlbl9uYW1lIjoiUmFtaSIsImZhbWlseV9uYW1lIjoiQmVybWFuIiwiZ3JvdXBfc3ViZG9tYWluIjoic29tZU9yZ0lkMTIzIiwiZW1haWwiOiJyYW1pLmJlcm1hbkB1cDkuY29tIiwiZmVhdHVyZUZsYWdzIjp7ImVkaXRFbmRwb2ludFZhcmlhYmxlcyI6dHJ1ZSwic2lkZU5hdmlnYXRpb24iOnRydWV9fQ.UEDsnoo9A8CbdIYKXoOrAAq6y2K7Aoqf-PplHhXFoVep9ewwA9qBjXqgn0fK9cnE_KfZKUcX_cy1HDhhdIfR_aHpbWWhQ3gxISkE6ALka18JIrUv7bFaHKio6eEP6tgn34QVP8aQVEB3e3g7h3dLuUvZ1xIMnt6fy03tD3KgiQlvdHwg5FhJLosiCrHgboEqN5VH_f_2QF33XiXTkDG1e-AOEnIIWqloMDTUPZEUvEo_KH68lB0Uu23YhhI5gPAuKQVb_UjFWcF_6Ysvk3C3j0cuk09DZ7YEI1u-bKp58LHnsS6gqNFQxy-CDlZ8Oht5d2I3LbwZZxHzMixzzFzJCA" + }, + { + "name": "X-Request-Id", + "value": "0345240c491c3b88fc0d55f7782c3355" + }, + { + "name": "X-Forwarded-For", + "value": "10.132.0.11" + }, + { + "name": "X-Scheme", + "value": "https" + }, + { + "name": "Accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "Origin", + "value": "https://stg.testr.io" + }, + { + "name": "X-Forwarded-Proto", + "value": "https" + }, + { + "name": "Sec-Fetch-Site", + "value": "same-site" + }, + { + "name": "Sec-Fetch-Dest", + "value": "empty" + }, + { + "name": ":method", + "value": "GET" + }, + { + "name": ":path", + "value": "/models/aws_kong5/suites/all/runs" + }, + { + "name": ":authority", + "value": "trcc.stg.testr.io" + }, + { + "name": ":scheme", + "value": "http" + }, + { + "name": "x-request-start", + "value": "1590058951.870" + }, + { + "name": "x-up9-source", + "value": "10.48.1.44" + }, + { + "name": "x-up9-destination", + "value": "10.48.2.97:5000" + } + ], + "queryString": [], + "headersSize": -1, + "bodySize": -1 + }, + "response": { + "status": 200, + "statusText": "OK", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "Connection", + "value": "keep-alive" + }, + { + "name": "Content-Type", + "value": "application/json" + }, + { + "name": "Content-Length", + "value": "3" + }, + { + "name": "Access-Control-Allow-Origin", + "value": "https://stg.testr.io" + }, + { + "name": "Access-Control-Allow-Credentials", + "value": "true" + }, + { + "name": "Vary", + "value": "Origin" + }, + { + "name": "Server", + "value": "gunicorn/19.9.0" + }, + { + "name": "Date", + "value": "Thu, 21 May 2020 11:02:31 GMT" + }, + { + "name": ":status", + "value": "200" + }, + { + "name": "duration_ms", + "value": "1" + } + ], + "content": { + "size": 3, + "mimeType": "", + "text": "[]\n" + }, + "redirectURL": "", + "headersSize": -1, + "bodySize": 3 + }, + "cache": {}, + "timings": { + "send": -1, + "wait": -1, + "receive": 1 + } + }, + { + "startedDateTime": "2020-05-21T11:02:32.032000+00:00", + "time": 1, + "request": { + "method": "GET", + "url": "http://trcc-api-service/models/aws_kong5/suites/all/runs", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "X-Forwarded-Host", + "value": "trcc.stg.testr.io" + }, + { + "name": "X-Forwarded-Port", + "value": "443" + }, + { + "name": "X-Forwarded-Proto", + "value": "https" + }, + { + "name": "Dnt", + "value": "1" + }, + { + "name": "User-Agent", + "value": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36" + }, + { + "name": "X-Request-Id", + "value": "1987c5ec57c99f38a10b428b3bddcd38" + }, + { + "name": "X-Scheme", + "value": "https" + }, + { + "name": "Accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "Sec-Fetch-Site", + "value": "same-site" + }, + { + "name": "Sec-Fetch-Mode", + "value": "cors" + }, + { + "name": "Sec-Fetch-Dest", + "value": "empty" + }, + { + "name": "Accept-Language", + "value": "en-IL,en-US;q=0.9,en;q=0.8,he;q=0.7,pl;q=0.6,ru;q=0.5" + }, + { + "name": "Origin", + "value": "https://stg.testr.io" + }, + { + "name": "Referer", + "value": "https://stg.testr.io/someOrgId123/model/aws_kong5/lastResults/systems/all/runs" + }, + { + "name": "X-Forwarded-For", + "value": "10.132.0.11" + }, + { + "name": "Authorization", + "value": "bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJqSEZ0R1dybjJpY084VnpDYXpaZWUyakpFc2drY1k5ZzhpN2FTbGtielRnIn0.eyJleHAiOjE1OTAwNTkyNDMsImlhdCI6MTU5MDA1ODk0MywiYXV0aF90aW1lIjoxNTkwMDU4NjUxLCJqdGkiOiI1ODYzNmRiMy0wN2IxLTQ2ZDYtOGNiNS01MzEzMDFlZGY4MGYiLCJpc3MiOiJodHRwczovL2F1dGguc3RnLnRlc3RyLmlvL2F1dGgvcmVhbG1zL3Rlc3RyIiwiYXVkIjoiYWNjb3VudCIsInN1YiI6IjBlYWU4ZmFjLTgyYTEtNDUwNi05MWQ0LTA4ZDYxZTI2NWY1NCIsInR5cCI6IkJlYXJlciIsImF6cCI6InJlYWN0LWNsaWVudCIsIm5vbmNlIjoiNTRjMTM5OTktMDg0NS00OWNmLWI1OTAtOTY1ZThjNWI0NmJlIiwic2Vzc2lvbl9zdGF0ZSI6ImY3YjEyOTM1LThmMTctNDc1Zi04NmRhLWQ4NjFjZTYxNWZjNyIsImFjciI6IjAiLCJhbGxvd2VkLW9yaWdpbnMiOlsiaHR0cHM6Ly9zdGcudGVzdHIuaW8iLCJjaHJvbWUtZXh0ZW5zaW9uOi8vbmFkZ2VsamVtbWJna2xkaGNwYWZqbXBtYXBpcGdsY20iLCJodHRwOi8vbG9jYWxob3N0OjMwMDAiXSwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyJhY2NvdW50Ijp7InJvbGVzIjpbIm1hbmFnZS1hY2NvdW50IiwibWFuYWdlLWFjY291bnQtbGlua3MiLCJ2aWV3LXByb2ZpbGUiXX19LCJzY29wZSI6Im9wZW5pZCBwcm9maWxlIGVtYWlsIiwiZ3JvdXBfbWVtYmVyc2hpcCI6WyJzb21lT3JnSWQxMjMiXSwiZW1haWxfdmVyaWZpZWQiOnRydWUsIm5hbWUiOiJSYW1pIEJlcm1hbiIsInByZWZlcnJlZF91c2VybmFtZSI6InJhbWkuYmVybWFuQHVwOS5jb20iLCJnaXZlbl9uYW1lIjoiUmFtaSIsImZhbWlseV9uYW1lIjoiQmVybWFuIiwiZ3JvdXBfc3ViZG9tYWluIjoic29tZU9yZ0lkMTIzIiwiZW1haWwiOiJyYW1pLmJlcm1hbkB1cDkuY29tIiwiZmVhdHVyZUZsYWdzIjp7ImVkaXRFbmRwb2ludFZhcmlhYmxlcyI6dHJ1ZSwic2lkZU5hdmlnYXRpb24iOnRydWV9fQ.UEDsnoo9A8CbdIYKXoOrAAq6y2K7Aoqf-PplHhXFoVep9ewwA9qBjXqgn0fK9cnE_KfZKUcX_cy1HDhhdIfR_aHpbWWhQ3gxISkE6ALka18JIrUv7bFaHKio6eEP6tgn34QVP8aQVEB3e3g7h3dLuUvZ1xIMnt6fy03tD3KgiQlvdHwg5FhJLosiCrHgboEqN5VH_f_2QF33XiXTkDG1e-AOEnIIWqloMDTUPZEUvEo_KH68lB0Uu23YhhI5gPAuKQVb_UjFWcF_6Ysvk3C3j0cuk09DZ7YEI1u-bKp58LHnsS6gqNFQxy-CDlZ8Oht5d2I3LbwZZxHzMixzzFzJCA" + }, + { + "name": "Accept-Encoding", + "value": "gzip, deflate, br" + }, + { + "name": "X-Real-Ip", + "value": "10.132.0.11" + }, + { + "name": ":method", + "value": "GET" + }, + { + "name": ":path", + "value": "/models/aws_kong5/suites/all/runs" + }, + { + "name": ":authority", + "value": "trcc.stg.testr.io" + }, + { + "name": ":scheme", + "value": "http" + }, + { + "name": "x-request-start", + "value": "1590058952.032" + }, + { + "name": "x-up9-source", + "value": "10.48.1.44" + }, + { + "name": "x-up9-destination", + "value": "10.48.0.155:5000" + } + ], + "queryString": [], + "headersSize": -1, + "bodySize": -1 + }, + "response": { + "status": 200, + "statusText": "OK", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "Vary", + "value": "Origin" + }, + { + "name": "Server", + "value": "gunicorn/19.9.0" + }, + { + "name": "Date", + "value": "Thu, 21 May 2020 11:02:31 GMT" + }, + { + "name": "Connection", + "value": "keep-alive" + }, + { + "name": "Content-Type", + "value": "application/json" + }, + { + "name": "Content-Length", + "value": "3" + }, + { + "name": "Access-Control-Allow-Origin", + "value": "http://localhost:3000" + }, + { + "name": "Access-Control-Allow-Credentials", + "value": "true" + }, + { + "name": ":status", + "value": "200" + }, + { + "name": "duration_ms", + "value": "1" + } + ], + "content": { + "size": 3, + "mimeType": "", + "text": "[]\n" + }, + "redirectURL": "", + "headersSize": -1, + "bodySize": 3 + }, + "cache": {}, + "timings": { + "send": -1, + "wait": -1, + "receive": 1 + } + }, + { + "startedDateTime": "2020-05-21T11:02:31.870000+00:00", + "time": 1, + "request": { + "method": "GET", + "url": "http://trcc-api-service/models/aws_kong5/suites/all/runs", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "X-Scheme", + "value": "https" + }, + { + "name": "Accept-Language", + "value": "en-IL,en-US;q=0.9,en;q=0.8,he;q=0.7,pl;q=0.6,ru;q=0.5" + }, + { + "name": "X-Real-Ip", + "value": "10.132.0.11" + }, + { + "name": "Accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "Dnt", + "value": "1" + }, + { + "name": "Origin", + "value": "https://stg.testr.io" + }, + { + "name": "Sec-Fetch-Site", + "value": "same-site" + }, + { + "name": "Accept-Encoding", + "value": "gzip, deflate, br" + }, + { + "name": "Referer", + "value": "https://stg.testr.io/someOrgId123/model/aws_kong5/lastResults/systems/all/runs" + }, + { + "name": "X-Forwarded-For", + "value": "10.132.0.11" + }, + { + "name": "X-Forwarded-Host", + "value": "trcc.stg.testr.io" + }, + { + "name": "X-Forwarded-Port", + "value": "443" + }, + { + "name": "X-Forwarded-Proto", + "value": "https" + }, + { + "name": "Authorization", + "value": "bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJqSEZ0R1dybjJpY084VnpDYXpaZWUyakpFc2drY1k5ZzhpN2FTbGtielRnIn0.eyJleHAiOjE1OTAwNTkyNDMsImlhdCI6MTU5MDA1ODk0MywiYXV0aF90aW1lIjoxNTkwMDU4NjUxLCJqdGkiOiI1ODYzNmRiMy0wN2IxLTQ2ZDYtOGNiNS01MzEzMDFlZGY4MGYiLCJpc3MiOiJodHRwczovL2F1dGguc3RnLnRlc3RyLmlvL2F1dGgvcmVhbG1zL3Rlc3RyIiwiYXVkIjoiYWNjb3VudCIsInN1YiI6IjBlYWU4ZmFjLTgyYTEtNDUwNi05MWQ0LTA4ZDYxZTI2NWY1NCIsInR5cCI6IkJlYXJlciIsImF6cCI6InJlYWN0LWNsaWVudCIsIm5vbmNlIjoiNTRjMTM5OTktMDg0NS00OWNmLWI1OTAtOTY1ZThjNWI0NmJlIiwic2Vzc2lvbl9zdGF0ZSI6ImY3YjEyOTM1LThmMTctNDc1Zi04NmRhLWQ4NjFjZTYxNWZjNyIsImFjciI6IjAiLCJhbGxvd2VkLW9yaWdpbnMiOlsiaHR0cHM6Ly9zdGcudGVzdHIuaW8iLCJjaHJvbWUtZXh0ZW5zaW9uOi8vbmFkZ2VsamVtbWJna2xkaGNwYWZqbXBtYXBpcGdsY20iLCJodHRwOi8vbG9jYWxob3N0OjMwMDAiXSwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyJhY2NvdW50Ijp7InJvbGVzIjpbIm1hbmFnZS1hY2NvdW50IiwibWFuYWdlLWFjY291bnQtbGlua3MiLCJ2aWV3LXByb2ZpbGUiXX19LCJzY29wZSI6Im9wZW5pZCBwcm9maWxlIGVtYWlsIiwiZ3JvdXBfbWVtYmVyc2hpcCI6WyJzb21lT3JnSWQxMjMiXSwiZW1haWxfdmVyaWZpZWQiOnRydWUsIm5hbWUiOiJSYW1pIEJlcm1hbiIsInByZWZlcnJlZF91c2VybmFtZSI6InJhbWkuYmVybWFuQHVwOS5jb20iLCJnaXZlbl9uYW1lIjoiUmFtaSIsImZhbWlseV9uYW1lIjoiQmVybWFuIiwiZ3JvdXBfc3ViZG9tYWluIjoic29tZU9yZ0lkMTIzIiwiZW1haWwiOiJyYW1pLmJlcm1hbkB1cDkuY29tIiwiZmVhdHVyZUZsYWdzIjp7ImVkaXRFbmRwb2ludFZhcmlhYmxlcyI6dHJ1ZSwic2lkZU5hdmlnYXRpb24iOnRydWV9fQ.UEDsnoo9A8CbdIYKXoOrAAq6y2K7Aoqf-PplHhXFoVep9ewwA9qBjXqgn0fK9cnE_KfZKUcX_cy1HDhhdIfR_aHpbWWhQ3gxISkE6ALka18JIrUv7bFaHKio6eEP6tgn34QVP8aQVEB3e3g7h3dLuUvZ1xIMnt6fy03tD3KgiQlvdHwg5FhJLosiCrHgboEqN5VH_f_2QF33XiXTkDG1e-AOEnIIWqloMDTUPZEUvEo_KH68lB0Uu23YhhI5gPAuKQVb_UjFWcF_6Ysvk3C3j0cuk09DZ7YEI1u-bKp58LHnsS6gqNFQxy-CDlZ8Oht5d2I3LbwZZxHzMixzzFzJCA" + }, + { + "name": "User-Agent", + "value": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36" + }, + { + "name": "X-Request-Id", + "value": "f0227a71030b86a3cddb5e73fa4efc08" + }, + { + "name": "Sec-Fetch-Mode", + "value": "cors" + }, + { + "name": "Sec-Fetch-Dest", + "value": "empty" + }, + { + "name": ":method", + "value": "GET" + }, + { + "name": ":path", + "value": "/models/aws_kong5/suites/all/runs" + }, + { + "name": ":authority", + "value": "trcc.stg.testr.io" + }, + { + "name": ":scheme", + "value": "http" + }, + { + "name": "x-request-start", + "value": "1590058951.870" + }, + { + "name": "x-up9-source", + "value": "10.48.1.44" + }, + { + "name": "x-up9-destination", + "value": "10.48.2.97:5000" + } + ], + "queryString": [], + "headersSize": -1, + "bodySize": -1 + }, + "response": { + "status": 200, + "statusText": "OK", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "Connection", + "value": "keep-alive" + }, + { + "name": "Content-Type", + "value": "application/json" + }, + { + "name": "Content-Length", + "value": "3" + }, + { + "name": "Access-Control-Allow-Origin", + "value": "https://stg.testr.io" + }, + { + "name": "Access-Control-Allow-Credentials", + "value": "true" + }, + { + "name": "Vary", + "value": "Origin" + }, + { + "name": "Server", + "value": "gunicorn/19.9.0" + }, + { + "name": "Date", + "value": "Thu, 21 May 2020 11:02:31 GMT" + }, + { + "name": ":status", + "value": "200" + }, + { + "name": "duration_ms", + "value": "1" + } + ], + "content": { + "size": 3, + "mimeType": "", + "text": "[]\n" + }, + "redirectURL": "", + "headersSize": -1, + "bodySize": 3 + }, + "cache": {}, + "timings": { + "send": -1, + "wait": -1, + "receive": 1 + } + }, + { + "startedDateTime": "2020-05-21T11:02:32.032000+00:00", + "time": 1, + "request": { + "method": "GET", + "url": "http://trcc-api-service/models/liraz_test_2105/suites/all/runs", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "Referer", + "value": "http://localhost:3000/someOrgId123/model/liraz_test_2105/lastResults/systems/all/summary" + }, + { + "name": "X-Real-Ip", + "value": "10.132.0.22" + }, + { + "name": "X-Forwarded-Host", + "value": "trcc.stg.testr.io" + }, + { + "name": "X-Forwarded-Port", + "value": "443" + }, + { + "name": "Accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "Authorization", + "value": "bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJqSEZ0R1dybjJpY084VnpDYXpaZWUyakpFc2drY1k5ZzhpN2FTbGtielRnIn0.eyJleHAiOjE1OTAwNTkxMTQsImlhdCI6MTU5MDA1ODgxNCwiYXV0aF90aW1lIjoxNTg5OTU4NDcwLCJqdGkiOiIyNzgxOTYyMy00Yjk5LTQ2MzQtOWZlNi02ZDRiNzYwNGU2ZmMiLCJpc3MiOiJodHRwczovL2F1dGguc3RnLnRlc3RyLmlvL2F1dGgvcmVhbG1zL3Rlc3RyIiwiYXVkIjoiYWNjb3VudCIsInN1YiI6ImU4NzAxMDZjLWJjYjItNDQxMy05Y2Q2LTUwMTZiNTUxMDRlYiIsInR5cCI6IkJlYXJlciIsImF6cCI6InJlYWN0LWNsaWVudCIsIm5vbmNlIjoiYzJiZTgwNGYtZjBiYS00ZWUxLTgyZWQtYmIzMTY5ZDBkYjU1Iiwic2Vzc2lvbl9zdGF0ZSI6IjM2ZDc2MDAxLTE5M2EtNGQ5OS05MTIwLTZmNGZkMjEwZDAxMiIsImFjciI6IjAiLCJhbGxvd2VkLW9yaWdpbnMiOlsiaHR0cHM6Ly9zdGcudGVzdHIuaW8iLCJjaHJvbWUtZXh0ZW5zaW9uOi8vbmFkZ2VsamVtbWJna2xkaGNwYWZqbXBtYXBpcGdsY20iLCJodHRwOi8vbG9jYWxob3N0OjMwMDAiXSwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm1hbmFnZUZlYXR1cmVGbGFncyIsIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyJhY2NvdW50Ijp7InJvbGVzIjpbIm1hbmFnZS1hY2NvdW50IiwibWFuYWdlLWFjY291bnQtbGlua3MiLCJ2aWV3LXByb2ZpbGUiXX19LCJzY29wZSI6Im9wZW5pZCBwcm9maWxlIGVtYWlsIiwiZ3JvdXBfbWVtYmVyc2hpcCI6WyJzb21lT3JnSWQxMjMiXSwiZW1haWxfdmVyaWZpZWQiOnRydWUsIm5hbWUiOiJMaXJheiBZZWhlemtlbCIsInByZWZlcnJlZF91c2VybmFtZSI6ImxpcmF6eUB1cDkuY29tIiwiZ2l2ZW5fbmFtZSI6IkxpcmF6IiwiZmFtaWx5X25hbWUiOiJZZWhlemtlbCIsImdyb3VwX3N1YmRvbWFpbiI6InNvbWVPcmdJZDEyMyIsImVtYWlsIjoibGlyYXp5QHVwOS5jb20iLCJmZWF0dXJlRmxhZ3MiOnsiZWRpdEVuZHBvaW50VmFyaWFibGVzIjp0cnVlLCJzaWRlTmF2aWdhdGlvbiI6dHJ1ZX19.KdLz7jeIr8HaST4FpJROrg6Sp-o1Nl5dU2hIbNCA0FEY-jmaoubiOlz6p7QthTJ8t-S0R_qdZtd7rXf249L6wGG_A6rriZhH41Fxhyrb0ig8OVrQp-sepv_AUf7GEIGYgpYIPFnZ6G3Dkq1aY9NzLXruh7fly_ZRkRlzF_wb1vt5NRJz3xeMrj82BOJJmUpv08AYYQhnyjKiBp7rgrNTTBejaFBozsJgXGkIi-DZfv862tgFhvPNuXsqKO5iOxv9nApuQJ2O4knVB1ag7tqB1xQcvBdkZt9gG1VVkpWsM_2j5C9cBwOuPRgHZhpZuT_YNfB4ITefGV1aYfRF-cjnug" + }, + { + "name": "User-Agent", + "value": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36" + }, + { + "name": "Sec-Fetch-Site", + "value": "cross-site" + }, + { + "name": "Sec-Fetch-Dest", + "value": "empty" + }, + { + "name": "Accept-Language", + "value": "en-US,en;q=0.9" + }, + { + "name": "X-Request-Id", + "value": "c0447a0160782b721d20993aa11973d5" + }, + { + "name": "X-Scheme", + "value": "https" + }, + { + "name": "Sec-Fetch-Mode", + "value": "cors" + }, + { + "name": "Accept-Encoding", + "value": "gzip, deflate, br" + }, + { + "name": "X-Forwarded-For", + "value": "10.132.0.22" + }, + { + "name": "X-Forwarded-Proto", + "value": "https" + }, + { + "name": "Origin", + "value": "http://localhost:3000" + }, + { + "name": ":method", + "value": "GET" + }, + { + "name": ":path", + "value": "/models/liraz_test_2105/suites/all/runs" + }, + { + "name": ":authority", + "value": "trcc.stg.testr.io" + }, + { + "name": ":scheme", + "value": "http" + }, + { + "name": "x-request-start", + "value": "1590058952.032" + }, + { + "name": "x-up9-source", + "value": "10.48.1.44" + }, + { + "name": "x-up9-destination", + "value": "10.48.0.155:5000" + } + ], + "queryString": [], + "headersSize": -1, + "bodySize": -1 + }, + "response": { + "status": 200, + "statusText": "OK", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "Access-Control-Allow-Credentials", + "value": "true" + }, + { + "name": "Vary", + "value": "Origin" + }, + { + "name": "Server", + "value": "gunicorn/19.9.0" + }, + { + "name": "Date", + "value": "Thu, 21 May 2020 11:02:32 GMT" + }, + { + "name": "Connection", + "value": "keep-alive" + }, + { + "name": "Content-Type", + "value": "application/json" + }, + { + "name": "Content-Length", + "value": "3" + }, + { + "name": "Access-Control-Allow-Origin", + "value": "https://stg.testr.io" + }, + { + "name": ":status", + "value": "200" + }, + { + "name": "duration_ms", + "value": "1" + } + ], + "content": { + "size": 3, + "mimeType": "", + "text": "[]\n" + }, + "redirectURL": "", + "headersSize": -1, + "bodySize": 3 + }, + "cache": {}, + "timings": { + "send": -1, + "wait": -1, + "receive": 1 + } + }, + { + "startedDateTime": "2020-05-21T11:02:31.871000+00:00", + "time": 1, + "request": { + "method": "GET", + "url": "http://trcc-api-service/models/aws_kong5/suites/all/runs", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "Origin", + "value": "https://stg.testr.io" + }, + { + "name": "Sec-Fetch-Dest", + "value": "empty" + }, + { + "name": "Accept-Encoding", + "value": "gzip, deflate, br" + }, + { + "name": "Authorization", + "value": "bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJqSEZ0R1dybjJpY084VnpDYXpaZWUyakpFc2drY1k5ZzhpN2FTbGtielRnIn0.eyJleHAiOjE1OTAwNTkyNDMsImlhdCI6MTU5MDA1ODk0MywiYXV0aF90aW1lIjoxNTkwMDU4NjUxLCJqdGkiOiI1ODYzNmRiMy0wN2IxLTQ2ZDYtOGNiNS01MzEzMDFlZGY4MGYiLCJpc3MiOiJodHRwczovL2F1dGguc3RnLnRlc3RyLmlvL2F1dGgvcmVhbG1zL3Rlc3RyIiwiYXVkIjoiYWNjb3VudCIsInN1YiI6IjBlYWU4ZmFjLTgyYTEtNDUwNi05MWQ0LTA4ZDYxZTI2NWY1NCIsInR5cCI6IkJlYXJlciIsImF6cCI6InJlYWN0LWNsaWVudCIsIm5vbmNlIjoiNTRjMTM5OTktMDg0NS00OWNmLWI1OTAtOTY1ZThjNWI0NmJlIiwic2Vzc2lvbl9zdGF0ZSI6ImY3YjEyOTM1LThmMTctNDc1Zi04NmRhLWQ4NjFjZTYxNWZjNyIsImFjciI6IjAiLCJhbGxvd2VkLW9yaWdpbnMiOlsiaHR0cHM6Ly9zdGcudGVzdHIuaW8iLCJjaHJvbWUtZXh0ZW5zaW9uOi8vbmFkZ2VsamVtbWJna2xkaGNwYWZqbXBtYXBpcGdsY20iLCJodHRwOi8vbG9jYWxob3N0OjMwMDAiXSwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyJhY2NvdW50Ijp7InJvbGVzIjpbIm1hbmFnZS1hY2NvdW50IiwibWFuYWdlLWFjY291bnQtbGlua3MiLCJ2aWV3LXByb2ZpbGUiXX19LCJzY29wZSI6Im9wZW5pZCBwcm9maWxlIGVtYWlsIiwiZ3JvdXBfbWVtYmVyc2hpcCI6WyJzb21lT3JnSWQxMjMiXSwiZW1haWxfdmVyaWZpZWQiOnRydWUsIm5hbWUiOiJSYW1pIEJlcm1hbiIsInByZWZlcnJlZF91c2VybmFtZSI6InJhbWkuYmVybWFuQHVwOS5jb20iLCJnaXZlbl9uYW1lIjoiUmFtaSIsImZhbWlseV9uYW1lIjoiQmVybWFuIiwiZ3JvdXBfc3ViZG9tYWluIjoic29tZU9yZ0lkMTIzIiwiZW1haWwiOiJyYW1pLmJlcm1hbkB1cDkuY29tIiwiZmVhdHVyZUZsYWdzIjp7ImVkaXRFbmRwb2ludFZhcmlhYmxlcyI6dHJ1ZSwic2lkZU5hdmlnYXRpb24iOnRydWV9fQ.UEDsnoo9A8CbdIYKXoOrAAq6y2K7Aoqf-PplHhXFoVep9ewwA9qBjXqgn0fK9cnE_KfZKUcX_cy1HDhhdIfR_aHpbWWhQ3gxISkE6ALka18JIrUv7bFaHKio6eEP6tgn34QVP8aQVEB3e3g7h3dLuUvZ1xIMnt6fy03tD3KgiQlvdHwg5FhJLosiCrHgboEqN5VH_f_2QF33XiXTkDG1e-AOEnIIWqloMDTUPZEUvEo_KH68lB0Uu23YhhI5gPAuKQVb_UjFWcF_6Ysvk3C3j0cuk09DZ7YEI1u-bKp58LHnsS6gqNFQxy-CDlZ8Oht5d2I3LbwZZxHzMixzzFzJCA" + }, + { + "name": "X-Forwarded-For", + "value": "10.132.0.11" + }, + { + "name": "X-Scheme", + "value": "https" + }, + { + "name": "Dnt", + "value": "1" + }, + { + "name": "Sec-Fetch-Site", + "value": "same-site" + }, + { + "name": "Sec-Fetch-Mode", + "value": "cors" + }, + { + "name": "Accept-Language", + "value": "en-IL,en-US;q=0.9,en;q=0.8,he;q=0.7,pl;q=0.6,ru;q=0.5" + }, + { + "name": "X-Real-Ip", + "value": "10.132.0.11" + }, + { + "name": "X-Forwarded-Host", + "value": "trcc.stg.testr.io" + }, + { + "name": "X-Forwarded-Port", + "value": "443" + }, + { + "name": "X-Forwarded-Proto", + "value": "https" + }, + { + "name": "X-Request-Id", + "value": "94f00fab741d344360314396cc8da5b0" + }, + { + "name": "Accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "User-Agent", + "value": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36" + }, + { + "name": "Referer", + "value": "https://stg.testr.io/someOrgId123/model/aws_kong5/lastResults/systems/all/runs" + }, + { + "name": ":method", + "value": "GET" + }, + { + "name": ":path", + "value": "/models/aws_kong5/suites/all/runs" + }, + { + "name": ":authority", + "value": "trcc.stg.testr.io" + }, + { + "name": ":scheme", + "value": "http" + }, + { + "name": "x-request-start", + "value": "1590058951.871" + }, + { + "name": "x-up9-source", + "value": "10.48.1.44" + }, + { + "name": "x-up9-destination", + "value": "10.48.2.97:5000" + } + ], + "queryString": [], + "headersSize": -1, + "bodySize": -1 + }, + "response": { + "status": 200, + "statusText": "OK", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "Vary", + "value": "Origin" + }, + { + "name": "Server", + "value": "gunicorn/19.9.0" + }, + { + "name": "Date", + "value": "Thu, 21 May 2020 11:02:31 GMT" + }, + { + "name": "Connection", + "value": "keep-alive" + }, + { + "name": "Content-Type", + "value": "application/json" + }, + { + "name": "Content-Length", + "value": "3" + }, + { + "name": "Access-Control-Allow-Origin", + "value": "https://stg.testr.io" + }, + { + "name": "Access-Control-Allow-Credentials", + "value": "true" + }, + { + "name": ":status", + "value": "200" + }, + { + "name": "duration_ms", + "value": "1" + } + ], + "content": { + "size": 3, + "mimeType": "", + "text": "[]\n" + }, + "redirectURL": "", + "headersSize": -1, + "bodySize": 3 + }, + "cache": {}, + "timings": { + "send": -1, + "wait": -1, + "receive": 1 + } + }, + { + "startedDateTime": "2020-05-21T11:02:31.871000+00:00", + "time": 1, + "request": { + "method": "GET", + "url": "http://trcc-api-service/models/aws_kong5/suites/all/runs", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "Authorization", + "value": "bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJqSEZ0R1dybjJpY084VnpDYXpaZWUyakpFc2drY1k5ZzhpN2FTbGtielRnIn0.eyJleHAiOjE1OTAwNTkyNDMsImlhdCI6MTU5MDA1ODk0MywiYXV0aF90aW1lIjoxNTkwMDU4NjUxLCJqdGkiOiI1ODYzNmRiMy0wN2IxLTQ2ZDYtOGNiNS01MzEzMDFlZGY4MGYiLCJpc3MiOiJodHRwczovL2F1dGguc3RnLnRlc3RyLmlvL2F1dGgvcmVhbG1zL3Rlc3RyIiwiYXVkIjoiYWNjb3VudCIsInN1YiI6IjBlYWU4ZmFjLTgyYTEtNDUwNi05MWQ0LTA4ZDYxZTI2NWY1NCIsInR5cCI6IkJlYXJlciIsImF6cCI6InJlYWN0LWNsaWVudCIsIm5vbmNlIjoiNTRjMTM5OTktMDg0NS00OWNmLWI1OTAtOTY1ZThjNWI0NmJlIiwic2Vzc2lvbl9zdGF0ZSI6ImY3YjEyOTM1LThmMTctNDc1Zi04NmRhLWQ4NjFjZTYxNWZjNyIsImFjciI6IjAiLCJhbGxvd2VkLW9yaWdpbnMiOlsiaHR0cHM6Ly9zdGcudGVzdHIuaW8iLCJjaHJvbWUtZXh0ZW5zaW9uOi8vbmFkZ2VsamVtbWJna2xkaGNwYWZqbXBtYXBpcGdsY20iLCJodHRwOi8vbG9jYWxob3N0OjMwMDAiXSwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyJhY2NvdW50Ijp7InJvbGVzIjpbIm1hbmFnZS1hY2NvdW50IiwibWFuYWdlLWFjY291bnQtbGlua3MiLCJ2aWV3LXByb2ZpbGUiXX19LCJzY29wZSI6Im9wZW5pZCBwcm9maWxlIGVtYWlsIiwiZ3JvdXBfbWVtYmVyc2hpcCI6WyJzb21lT3JnSWQxMjMiXSwiZW1haWxfdmVyaWZpZWQiOnRydWUsIm5hbWUiOiJSYW1pIEJlcm1hbiIsInByZWZlcnJlZF91c2VybmFtZSI6InJhbWkuYmVybWFuQHVwOS5jb20iLCJnaXZlbl9uYW1lIjoiUmFtaSIsImZhbWlseV9uYW1lIjoiQmVybWFuIiwiZ3JvdXBfc3ViZG9tYWluIjoic29tZU9yZ0lkMTIzIiwiZW1haWwiOiJyYW1pLmJlcm1hbkB1cDkuY29tIiwiZmVhdHVyZUZsYWdzIjp7ImVkaXRFbmRwb2ludFZhcmlhYmxlcyI6dHJ1ZSwic2lkZU5hdmlnYXRpb24iOnRydWV9fQ.UEDsnoo9A8CbdIYKXoOrAAq6y2K7Aoqf-PplHhXFoVep9ewwA9qBjXqgn0fK9cnE_KfZKUcX_cy1HDhhdIfR_aHpbWWhQ3gxISkE6ALka18JIrUv7bFaHKio6eEP6tgn34QVP8aQVEB3e3g7h3dLuUvZ1xIMnt6fy03tD3KgiQlvdHwg5FhJLosiCrHgboEqN5VH_f_2QF33XiXTkDG1e-AOEnIIWqloMDTUPZEUvEo_KH68lB0Uu23YhhI5gPAuKQVb_UjFWcF_6Ysvk3C3j0cuk09DZ7YEI1u-bKp58LHnsS6gqNFQxy-CDlZ8Oht5d2I3LbwZZxHzMixzzFzJCA" + }, + { + "name": "Sec-Fetch-Mode", + "value": "cors" + }, + { + "name": "User-Agent", + "value": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36" + }, + { + "name": "Origin", + "value": "https://stg.testr.io" + }, + { + "name": "Referer", + "value": "https://stg.testr.io/someOrgId123/model/aws_kong5/lastResults/systems/all/runs" + }, + { + "name": "Accept-Encoding", + "value": "gzip, deflate, br" + }, + { + "name": "X-Request-Id", + "value": "381559aee247e99c81495bc8e799ddd0" + }, + { + "name": "X-Forwarded-Port", + "value": "443" + }, + { + "name": "X-Scheme", + "value": "https" + }, + { + "name": "Dnt", + "value": "1" + }, + { + "name": "X-Forwarded-Host", + "value": "trcc.stg.testr.io" + }, + { + "name": "Sec-Fetch-Site", + "value": "same-site" + }, + { + "name": "Sec-Fetch-Dest", + "value": "empty" + }, + { + "name": "Accept-Language", + "value": "en-IL,en-US;q=0.9,en;q=0.8,he;q=0.7,pl;q=0.6,ru;q=0.5" + }, + { + "name": "X-Real-Ip", + "value": "10.132.0.11" + }, + { + "name": "X-Forwarded-For", + "value": "10.132.0.11" + }, + { + "name": "X-Forwarded-Proto", + "value": "https" + }, + { + "name": "Accept", + "value": "application/json, text/plain, */*" + }, + { + "name": ":method", + "value": "GET" + }, + { + "name": ":path", + "value": "/models/aws_kong5/suites/all/runs" + }, + { + "name": ":authority", + "value": "trcc.stg.testr.io" + }, + { + "name": ":scheme", + "value": "http" + }, + { + "name": "x-request-start", + "value": "1590058951.871" + }, + { + "name": "x-up9-source", + "value": "10.48.1.44" + }, + { + "name": "x-up9-destination", + "value": "10.48.2.97:5000" + } + ], + "queryString": [], + "headersSize": -1, + "bodySize": -1 + }, + "response": { + "status": 200, + "statusText": "OK", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "Connection", + "value": "keep-alive" + }, + { + "name": "Content-Type", + "value": "application/json" + }, + { + "name": "Content-Length", + "value": "3" + }, + { + "name": "Access-Control-Allow-Origin", + "value": "https://stg.testr.io" + }, + { + "name": "Access-Control-Allow-Credentials", + "value": "true" + }, + { + "name": "Vary", + "value": "Origin" + }, + { + "name": "Server", + "value": "gunicorn/19.9.0" + }, + { + "name": "Date", + "value": "Thu, 21 May 2020 11:02:31 GMT" + }, + { + "name": ":status", + "value": "200" + }, + { + "name": "duration_ms", + "value": "1" + } + ], + "content": { + "size": 3, + "mimeType": "", + "text": "[]\n" + }, + "redirectURL": "", + "headersSize": -1, + "bodySize": 3 + }, + "cache": {}, + "timings": { + "send": -1, + "wait": -1, + "receive": 1 + } + }, + { + "startedDateTime": "2020-05-21T11:02:31.871000+00:00", + "time": 577, + "request": { + "method": "GET", + "url": "http://trcc-api-service/models/liraz_test_2105/suites/all/runs", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "X-Real-Ip", + "value": "10.132.0.22" + }, + { + "name": "Sec-Fetch-Site", + "value": "cross-site" + }, + { + "name": "Referer", + "value": "http://localhost:3000/someOrgId123/model/liraz_test_2105/lastResults/systems/all/summary" + }, + { + "name": "Accept-Language", + "value": "en-US,en;q=0.9" + }, + { + "name": "X-Forwarded-Host", + "value": "trcc.stg.testr.io" + }, + { + "name": "Accept-Encoding", + "value": "gzip, deflate, br" + }, + { + "name": "Accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "User-Agent", + "value": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36" + }, + { + "name": "Origin", + "value": "http://localhost:3000" + }, + { + "name": "Sec-Fetch-Mode", + "value": "cors" + }, + { + "name": "X-Forwarded-For", + "value": "10.132.0.22" + }, + { + "name": "X-Forwarded-Port", + "value": "443" + }, + { + "name": "X-Forwarded-Proto", + "value": "https" + }, + { + "name": "X-Scheme", + "value": "https" + }, + { + "name": "Sec-Fetch-Dest", + "value": "empty" + }, + { + "name": "X-Request-Id", + "value": "0edb0aaddd35577b2f1067a21032ca3f" + }, + { + "name": "Authorization", + "value": "bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJqSEZ0R1dybjJpY084VnpDYXpaZWUyakpFc2drY1k5ZzhpN2FTbGtielRnIn0.eyJleHAiOjE1OTAwNTkxMTQsImlhdCI6MTU5MDA1ODgxNCwiYXV0aF90aW1lIjoxNTg5OTU4NDcwLCJqdGkiOiIyNzgxOTYyMy00Yjk5LTQ2MzQtOWZlNi02ZDRiNzYwNGU2ZmMiLCJpc3MiOiJodHRwczovL2F1dGguc3RnLnRlc3RyLmlvL2F1dGgvcmVhbG1zL3Rlc3RyIiwiYXVkIjoiYWNjb3VudCIsInN1YiI6ImU4NzAxMDZjLWJjYjItNDQxMy05Y2Q2LTUwMTZiNTUxMDRlYiIsInR5cCI6IkJlYXJlciIsImF6cCI6InJlYWN0LWNsaWVudCIsIm5vbmNlIjoiYzJiZTgwNGYtZjBiYS00ZWUxLTgyZWQtYmIzMTY5ZDBkYjU1Iiwic2Vzc2lvbl9zdGF0ZSI6IjM2ZDc2MDAxLTE5M2EtNGQ5OS05MTIwLTZmNGZkMjEwZDAxMiIsImFjciI6IjAiLCJhbGxvd2VkLW9yaWdpbnMiOlsiaHR0cHM6Ly9zdGcudGVzdHIuaW8iLCJjaHJvbWUtZXh0ZW5zaW9uOi8vbmFkZ2VsamVtbWJna2xkaGNwYWZqbXBtYXBpcGdsY20iLCJodHRwOi8vbG9jYWxob3N0OjMwMDAiXSwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm1hbmFnZUZlYXR1cmVGbGFncyIsIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyJhY2NvdW50Ijp7InJvbGVzIjpbIm1hbmFnZS1hY2NvdW50IiwibWFuYWdlLWFjY291bnQtbGlua3MiLCJ2aWV3LXByb2ZpbGUiXX19LCJzY29wZSI6Im9wZW5pZCBwcm9maWxlIGVtYWlsIiwiZ3JvdXBfbWVtYmVyc2hpcCI6WyJzb21lT3JnSWQxMjMiXSwiZW1haWxfdmVyaWZpZWQiOnRydWUsIm5hbWUiOiJMaXJheiBZZWhlemtlbCIsInByZWZlcnJlZF91c2VybmFtZSI6ImxpcmF6eUB1cDkuY29tIiwiZ2l2ZW5fbmFtZSI6IkxpcmF6IiwiZmFtaWx5X25hbWUiOiJZZWhlemtlbCIsImdyb3VwX3N1YmRvbWFpbiI6InNvbWVPcmdJZDEyMyIsImVtYWlsIjoibGlyYXp5QHVwOS5jb20iLCJmZWF0dXJlRmxhZ3MiOnsiZWRpdEVuZHBvaW50VmFyaWFibGVzIjp0cnVlLCJzaWRlTmF2aWdhdGlvbiI6dHJ1ZX19.KdLz7jeIr8HaST4FpJROrg6Sp-o1Nl5dU2hIbNCA0FEY-jmaoubiOlz6p7QthTJ8t-S0R_qdZtd7rXf249L6wGG_A6rriZhH41Fxhyrb0ig8OVrQp-sepv_AUf7GEIGYgpYIPFnZ6G3Dkq1aY9NzLXruh7fly_ZRkRlzF_wb1vt5NRJz3xeMrj82BOJJmUpv08AYYQhnyjKiBp7rgrNTTBejaFBozsJgXGkIi-DZfv862tgFhvPNuXsqKO5iOxv9nApuQJ2O4knVB1ag7tqB1xQcvBdkZt9gG1VVkpWsM_2j5C9cBwOuPRgHZhpZuT_YNfB4ITefGV1aYfRF-cjnug" + }, + { + "name": ":method", + "value": "GET" + }, + { + "name": ":path", + "value": "/models/liraz_test_2105/suites/all/runs" + }, + { + "name": ":authority", + "value": "trcc.stg.testr.io" + }, + { + "name": ":scheme", + "value": "http" + }, + { + "name": "x-request-start", + "value": "1590058951.871" + }, + { + "name": "x-up9-source", + "value": "10.48.1.44" + }, + { + "name": "x-up9-destination", + "value": "10.48.2.97:5000" + } + ], + "queryString": [], + "headersSize": -1, + "bodySize": -1 + }, + "response": { + "status": 200, + "statusText": "OK", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "Access-Control-Allow-Origin", + "value": "http://localhost:3000" + }, + { + "name": "Access-Control-Allow-Credentials", + "value": "true" + }, + { + "name": "Vary", + "value": "Origin" + }, + { + "name": "Server", + "value": "gunicorn/19.9.0" + }, + { + "name": "Date", + "value": "Thu, 21 May 2020 11:02:31 GMT" + }, + { + "name": "Connection", + "value": "keep-alive" + }, + { + "name": "Content-Type", + "value": "application/json" + }, + { + "name": "Content-Length", + "value": "3" + }, + { + "name": ":status", + "value": "200" + }, + { + "name": "duration_ms", + "value": "577" + } + ], + "content": { + "size": 3, + "mimeType": "", + "text": "[]\n" + }, + "redirectURL": "", + "headersSize": -1, + "bodySize": 3 + }, + "cache": {}, + "timings": { + "send": -1, + "wait": -1, + "receive": 577 + } + }, + { + "startedDateTime": "2020-05-21T11:02:32.449000+00:00", + "time": 1, + "request": { + "method": "GET", + "url": "http://trcc-api-service/models/aws_kong5/suites/all/runs", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "X-Request-Id", + "value": "1c524e038a9477593fa233f252060e5c" + }, + { + "name": "Accept-Language", + "value": "en-IL,en-US;q=0.9,en;q=0.8,he;q=0.7,pl;q=0.6,ru;q=0.5" + }, + { + "name": "X-Forwarded-Port", + "value": "443" + }, + { + "name": "Authorization", + "value": "bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJqSEZ0R1dybjJpY084VnpDYXpaZWUyakpFc2drY1k5ZzhpN2FTbGtielRnIn0.eyJleHAiOjE1OTAwNTkyNDMsImlhdCI6MTU5MDA1ODk0MywiYXV0aF90aW1lIjoxNTkwMDU4NjUxLCJqdGkiOiI1ODYzNmRiMy0wN2IxLTQ2ZDYtOGNiNS01MzEzMDFlZGY4MGYiLCJpc3MiOiJodHRwczovL2F1dGguc3RnLnRlc3RyLmlvL2F1dGgvcmVhbG1zL3Rlc3RyIiwiYXVkIjoiYWNjb3VudCIsInN1YiI6IjBlYWU4ZmFjLTgyYTEtNDUwNi05MWQ0LTA4ZDYxZTI2NWY1NCIsInR5cCI6IkJlYXJlciIsImF6cCI6InJlYWN0LWNsaWVudCIsIm5vbmNlIjoiNTRjMTM5OTktMDg0NS00OWNmLWI1OTAtOTY1ZThjNWI0NmJlIiwic2Vzc2lvbl9zdGF0ZSI6ImY3YjEyOTM1LThmMTctNDc1Zi04NmRhLWQ4NjFjZTYxNWZjNyIsImFjciI6IjAiLCJhbGxvd2VkLW9yaWdpbnMiOlsiaHR0cHM6Ly9zdGcudGVzdHIuaW8iLCJjaHJvbWUtZXh0ZW5zaW9uOi8vbmFkZ2VsamVtbWJna2xkaGNwYWZqbXBtYXBpcGdsY20iLCJodHRwOi8vbG9jYWxob3N0OjMwMDAiXSwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyJhY2NvdW50Ijp7InJvbGVzIjpbIm1hbmFnZS1hY2NvdW50IiwibWFuYWdlLWFjY291bnQtbGlua3MiLCJ2aWV3LXByb2ZpbGUiXX19LCJzY29wZSI6Im9wZW5pZCBwcm9maWxlIGVtYWlsIiwiZ3JvdXBfbWVtYmVyc2hpcCI6WyJzb21lT3JnSWQxMjMiXSwiZW1haWxfdmVyaWZpZWQiOnRydWUsIm5hbWUiOiJSYW1pIEJlcm1hbiIsInByZWZlcnJlZF91c2VybmFtZSI6InJhbWkuYmVybWFuQHVwOS5jb20iLCJnaXZlbl9uYW1lIjoiUmFtaSIsImZhbWlseV9uYW1lIjoiQmVybWFuIiwiZ3JvdXBfc3ViZG9tYWluIjoic29tZU9yZ0lkMTIzIiwiZW1haWwiOiJyYW1pLmJlcm1hbkB1cDkuY29tIiwiZmVhdHVyZUZsYWdzIjp7ImVkaXRFbmRwb2ludFZhcmlhYmxlcyI6dHJ1ZSwic2lkZU5hdmlnYXRpb24iOnRydWV9fQ.UEDsnoo9A8CbdIYKXoOrAAq6y2K7Aoqf-PplHhXFoVep9ewwA9qBjXqgn0fK9cnE_KfZKUcX_cy1HDhhdIfR_aHpbWWhQ3gxISkE6ALka18JIrUv7bFaHKio6eEP6tgn34QVP8aQVEB3e3g7h3dLuUvZ1xIMnt6fy03tD3KgiQlvdHwg5FhJLosiCrHgboEqN5VH_f_2QF33XiXTkDG1e-AOEnIIWqloMDTUPZEUvEo_KH68lB0Uu23YhhI5gPAuKQVb_UjFWcF_6Ysvk3C3j0cuk09DZ7YEI1u-bKp58LHnsS6gqNFQxy-CDlZ8Oht5d2I3LbwZZxHzMixzzFzJCA" + }, + { + "name": "Origin", + "value": "https://stg.testr.io" + }, + { + "name": "Sec-Fetch-Mode", + "value": "cors" + }, + { + "name": "Accept-Encoding", + "value": "gzip, deflate, br" + }, + { + "name": "Referer", + "value": "https://stg.testr.io/someOrgId123/model/aws_kong5/lastResults/systems/all/runs" + }, + { + "name": "X-Forwarded-For", + "value": "10.132.0.11" + }, + { + "name": "X-Forwarded-Host", + "value": "trcc.stg.testr.io" + }, + { + "name": "Accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "Dnt", + "value": "1" + }, + { + "name": "Sec-Fetch-Dest", + "value": "empty" + }, + { + "name": "X-Real-Ip", + "value": "10.132.0.11" + }, + { + "name": "X-Forwarded-Proto", + "value": "https" + }, + { + "name": "X-Scheme", + "value": "https" + }, + { + "name": "User-Agent", + "value": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36" + }, + { + "name": "Sec-Fetch-Site", + "value": "same-site" + }, + { + "name": ":method", + "value": "GET" + }, + { + "name": ":path", + "value": "/models/aws_kong5/suites/all/runs" + }, + { + "name": ":authority", + "value": "trcc.stg.testr.io" + }, + { + "name": ":scheme", + "value": "http" + }, + { + "name": "x-request-start", + "value": "1590058952.449" + }, + { + "name": "x-up9-source", + "value": "10.48.1.44" + }, + { + "name": "x-up9-destination", + "value": "10.48.2.97:5000" + } + ], + "queryString": [], + "headersSize": -1, + "bodySize": -1 + }, + "response": { + "status": 200, + "statusText": "OK", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "Content-Type", + "value": "application/json" + }, + { + "name": "Content-Length", + "value": "3" + }, + { + "name": "Access-Control-Allow-Origin", + "value": "https://stg.testr.io" + }, + { + "name": "Access-Control-Allow-Credentials", + "value": "true" + }, + { + "name": "Vary", + "value": "Origin" + }, + { + "name": "Server", + "value": "gunicorn/19.9.0" + }, + { + "name": "Date", + "value": "Thu, 21 May 2020 11:02:31 GMT" + }, + { + "name": "Connection", + "value": "keep-alive" + }, + { + "name": ":status", + "value": "200" + }, + { + "name": "duration_ms", + "value": "1" + } + ], + "content": { + "size": 3, + "mimeType": "", + "text": "[]\n" + }, + "redirectURL": "", + "headersSize": -1, + "bodySize": 3 + }, + "cache": {}, + "timings": { + "send": -1, + "wait": -1, + "receive": 1 + } + }, + { + "startedDateTime": "2020-05-21T11:02:32.450000+00:00", + "time": 1, + "request": { + "method": "GET", + "url": "http://trcc-api-service/models/aws_new_resolving2/blacklist", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "User-Agent", + "value": "python-requests/2.23.0" + }, + { + "name": "Accept-Encoding", + "value": "gzip, deflate" + }, + { + "name": "Authorization", + "value": "Bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJqSEZ0R1dybjJpY084VnpDYXpaZWUyakpFc2drY1k5ZzhpN2FTbGtielRnIn0.eyJleHAiOjE1OTAwNTkxNDIsImlhdCI6MTU5MDA1ODg0MiwianRpIjoiYWE1OWJkMWMtMGJmMy00M2U1LWIwMDctMDg3MDAwNzVlY2M3IiwiaXNzIjoiaHR0cHM6Ly9hdXRoLnN0Zy50ZXN0ci5pby9hdXRoL3JlYWxtcy90ZXN0ciIsImF1ZCI6ImFjY291bnQiLCJzdWIiOiI0YWFkZWM0Mi01OWE5LTRmZDUtODI3NC1lZWI5NDNmODQyNmUiLCJ0eXAiOiJCZWFyZXIiLCJhenAiOiIzWjE5LTNzYnN2MU9KSDBEd2l2UWkyYmZVSzdsSlNFdSIsInNlc3Npb25fc3RhdGUiOiJhYjU1ODNmNC00NmU3LTRhYmEtYTllZS1lODQzZDlmOGVlMDciLCJhY3IiOiIxIiwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyJhY2NvdW50Ijp7InJvbGVzIjpbIm1hbmFnZS1hY2NvdW50IiwibWFuYWdlLWFjY291bnQtbGlua3MiLCJ2aWV3LXByb2ZpbGUiXX19LCJzY29wZSI6InByb2ZpbGUgZW1haWwiLCJjbGllbnRJZCI6IjNaMTktM3Nic3YxT0pIMER3aXZRaTJiZlVLN2xKU0V1IiwiY2xpZW50SG9zdCI6IjEwLjQ4LjEuMSIsImVtYWlsX3ZlcmlmaWVkIjpmYWxzZSwib3JnYW5pemF0aW9uIjoic29tZU9yZ0lkMTIzIiwicHJlZmVycmVkX3VzZXJuYW1lIjoic2VydmljZS1hY2NvdW50LTN6MTktM3Nic3Yxb2poMGR3aXZxaTJiZnVrN2xqc2V1IiwiY2xpZW50QWRkcmVzcyI6IjEwLjQ4LjEuMSIsImVtYWlsIjoic2VydmljZS1hY2NvdW50LTN6MTktM3Nic3Yxb2poMGR3aXZxaTJiZnVrN2xqc2V1QHBsYWNlaG9sZGVyLm9yZyJ9.ltF1H_vfQ4aEtR_gAKwSO7iPPqAg5SojS-k4_MPUJ_IdRf13xLV2C-Qis6jIwqZHgdJmR-TShyxoRz7-ekMWzCToyHFK-YRFja6ggoZiq2DAdYgFdXwf_yljGC1A2n5hg_WPIfbLE732QmnmeMM7K1ovLyb27TqpTm0Dr_WRyoRSTUHRGneHjZ9LKhpLheODb0dhS_YpPc60hZL4YN2j7U6y6VqNDS8F_IHZHNKTh0IgsS5uFq1mJ5l_MHaNOQEjcM3tzwKL9tBnPEHBk10YWQTmuNtUvs4L-eyzkLAMpNDiW7xv3cGSHj2gCC7P7gEC3Z3ddFcvl5frk-1OU4xGLg" + }, + { + "name": "X-Request-Id", + "value": "1b4e457665a4b905660fa7ec1ef91bda" + }, + { + "name": "X-Forwarded-Host", + "value": "trcc.stg.testr.io" + }, + { + "name": "X-Forwarded-Port", + "value": "443" + }, + { + "name": "X-Forwarded-Proto", + "value": "https" + }, + { + "name": "X-Scheme", + "value": "https" + }, + { + "name": "Accept", + "value": "*/*" + }, + { + "name": "X-Real-Ip", + "value": "10.132.0.30" + }, + { + "name": "X-Forwarded-For", + "value": "10.132.0.30" + }, + { + "name": ":method", + "value": "GET" + }, + { + "name": ":path", + "value": "/models/aws_new_resolving2/blacklist" + }, + { + "name": ":authority", + "value": "trcc.stg.testr.io" + }, + { + "name": ":scheme", + "value": "http" + }, + { + "name": "x-request-start", + "value": "1590058952.450" + }, + { + "name": "x-up9-source", + "value": "10.48.1.44" + }, + { + "name": "x-up9-destination", + "value": "10.48.2.97:5000" + } + ], + "queryString": [], + "headersSize": -1, + "bodySize": -1 + }, + "response": { + "status": 200, + "statusText": "OK", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "Access-Control-Allow-Origin", + "value": "http://localhost:3000" + }, + { + "name": "Access-Control-Allow-Credentials", + "value": "true" + }, + { + "name": "Vary", + "value": "Origin" + }, + { + "name": "Server", + "value": "gunicorn/19.9.0" + }, + { + "name": "Date", + "value": "Thu, 21 May 2020 11:02:32 GMT" + }, + { + "name": "Connection", + "value": "keep-alive" + }, + { + "name": "Content-Type", + "value": "application/json" + }, + { + "name": "Content-Length", + "value": "3" + }, + { + "name": ":status", + "value": "200" + }, + { + "name": "duration_ms", + "value": "1" + } + ], + "content": { + "size": 3, + "mimeType": "", + "text": "[]\n" + }, + "redirectURL": "", + "headersSize": -1, + "bodySize": 3 + }, + "cache": {}, + "timings": { + "send": -1, + "wait": -1, + "receive": 1 + } + }, + { + "startedDateTime": "2020-05-21T11:02:32.450000+00:00", + "time": 1, + "request": { + "method": "GET", + "url": "http://trcc-api-service/models/roee/blacklist", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "X-Forwarded-Proto", + "value": "https" + }, + { + "name": "X-Scheme", + "value": "https" + }, + { + "name": "User-Agent", + "value": "python-requests/2.23.0" + }, + { + "name": "X-Forwarded-For", + "value": "10.132.0.30" + }, + { + "name": "X-Forwarded-Host", + "value": "trcc.stg.testr.io" + }, + { + "name": "X-Forwarded-Port", + "value": "443" + }, + { + "name": "Accept-Encoding", + "value": "gzip, deflate" + }, + { + "name": "Accept", + "value": "*/*" + }, + { + "name": "Authorization", + "value": "Bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJqSEZ0R1dybjJpY084VnpDYXpaZWUyakpFc2drY1k5ZzhpN2FTbGtielRnIn0.eyJleHAiOjE1OTAwNTkxNDIsImlhdCI6MTU5MDA1ODg0MiwianRpIjoiYWE1OWJkMWMtMGJmMy00M2U1LWIwMDctMDg3MDAwNzVlY2M3IiwiaXNzIjoiaHR0cHM6Ly9hdXRoLnN0Zy50ZXN0ci5pby9hdXRoL3JlYWxtcy90ZXN0ciIsImF1ZCI6ImFjY291bnQiLCJzdWIiOiI0YWFkZWM0Mi01OWE5LTRmZDUtODI3NC1lZWI5NDNmODQyNmUiLCJ0eXAiOiJCZWFyZXIiLCJhenAiOiIzWjE5LTNzYnN2MU9KSDBEd2l2UWkyYmZVSzdsSlNFdSIsInNlc3Npb25fc3RhdGUiOiJhYjU1ODNmNC00NmU3LTRhYmEtYTllZS1lODQzZDlmOGVlMDciLCJhY3IiOiIxIiwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyJhY2NvdW50Ijp7InJvbGVzIjpbIm1hbmFnZS1hY2NvdW50IiwibWFuYWdlLWFjY291bnQtbGlua3MiLCJ2aWV3LXByb2ZpbGUiXX19LCJzY29wZSI6InByb2ZpbGUgZW1haWwiLCJjbGllbnRJZCI6IjNaMTktM3Nic3YxT0pIMER3aXZRaTJiZlVLN2xKU0V1IiwiY2xpZW50SG9zdCI6IjEwLjQ4LjEuMSIsImVtYWlsX3ZlcmlmaWVkIjpmYWxzZSwib3JnYW5pemF0aW9uIjoic29tZU9yZ0lkMTIzIiwicHJlZmVycmVkX3VzZXJuYW1lIjoic2VydmljZS1hY2NvdW50LTN6MTktM3Nic3Yxb2poMGR3aXZxaTJiZnVrN2xqc2V1IiwiY2xpZW50QWRkcmVzcyI6IjEwLjQ4LjEuMSIsImVtYWlsIjoic2VydmljZS1hY2NvdW50LTN6MTktM3Nic3Yxb2poMGR3aXZxaTJiZnVrN2xqc2V1QHBsYWNlaG9sZGVyLm9yZyJ9.ltF1H_vfQ4aEtR_gAKwSO7iPPqAg5SojS-k4_MPUJ_IdRf13xLV2C-Qis6jIwqZHgdJmR-TShyxoRz7-ekMWzCToyHFK-YRFja6ggoZiq2DAdYgFdXwf_yljGC1A2n5hg_WPIfbLE732QmnmeMM7K1ovLyb27TqpTm0Dr_WRyoRSTUHRGneHjZ9LKhpLheODb0dhS_YpPc60hZL4YN2j7U6y6VqNDS8F_IHZHNKTh0IgsS5uFq1mJ5l_MHaNOQEjcM3tzwKL9tBnPEHBk10YWQTmuNtUvs4L-eyzkLAMpNDiW7xv3cGSHj2gCC7P7gEC3Z3ddFcvl5frk-1OU4xGLg" + }, + { + "name": "X-Request-Id", + "value": "390bda9c654f565b6e662f86b8f5d7b4" + }, + { + "name": "X-Real-Ip", + "value": "10.132.0.30" + }, + { + "name": ":method", + "value": "GET" + }, + { + "name": ":path", + "value": "/models/roee/blacklist" + }, + { + "name": ":authority", + "value": "trcc.stg.testr.io" + }, + { + "name": ":scheme", + "value": "http" + }, + { + "name": "x-request-start", + "value": "1590058952.450" + }, + { + "name": "x-up9-source", + "value": "10.48.1.44" + }, + { + "name": "x-up9-destination", + "value": "10.48.2.97:5000" + } + ], + "queryString": [], + "headersSize": -1, + "bodySize": -1 + }, + "response": { + "status": 200, + "statusText": "OK", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "Vary", + "value": "Origin" + }, + { + "name": "Server", + "value": "gunicorn/19.9.0" + }, + { + "name": "Date", + "value": "Thu, 21 May 2020 11:02:32 GMT" + }, + { + "name": "Connection", + "value": "keep-alive" + }, + { + "name": "Content-Type", + "value": "application/json" + }, + { + "name": "Content-Length", + "value": "3" + }, + { + "name": "Access-Control-Allow-Origin", + "value": "http://localhost:3000" + }, + { + "name": "Access-Control-Allow-Credentials", + "value": "true" + }, + { + "name": ":status", + "value": "200" + }, + { + "name": "duration_ms", + "value": "1" + } + ], + "content": { + "size": 3, + "mimeType": "", + "text": "[]\n" + }, + "redirectURL": "", + "headersSize": -1, + "bodySize": 3 + }, + "cache": {}, + "timings": { + "send": -1, + "wait": -1, + "receive": 1 + } + }, + { + "startedDateTime": "2020-05-21T11:02:32.451000+00:00", + "time": 1, + "request": { + "method": "GET", + "url": "http://trcc-api-service/models/ag_nectar_032301/blacklist", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "X-Scheme", + "value": "https" + }, + { + "name": "User-Agent", + "value": "python-requests/2.23.0" + }, + { + "name": "X-Request-Id", + "value": "d6c88c971d00b7ee36694cb42f528100" + }, + { + "name": "X-Forwarded-Proto", + "value": "https" + }, + { + "name": "X-Forwarded-Port", + "value": "443" + }, + { + "name": "Accept-Encoding", + "value": "gzip, deflate" + }, + { + "name": "Accept", + "value": "*/*" + }, + { + "name": "Authorization", + "value": "Bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJqSEZ0R1dybjJpY084VnpDYXpaZWUyakpFc2drY1k5ZzhpN2FTbGtielRnIn0.eyJleHAiOjE1OTAwNTkxNDIsImlhdCI6MTU5MDA1ODg0MiwianRpIjoiYWE1OWJkMWMtMGJmMy00M2U1LWIwMDctMDg3MDAwNzVlY2M3IiwiaXNzIjoiaHR0cHM6Ly9hdXRoLnN0Zy50ZXN0ci5pby9hdXRoL3JlYWxtcy90ZXN0ciIsImF1ZCI6ImFjY291bnQiLCJzdWIiOiI0YWFkZWM0Mi01OWE5LTRmZDUtODI3NC1lZWI5NDNmODQyNmUiLCJ0eXAiOiJCZWFyZXIiLCJhenAiOiIzWjE5LTNzYnN2MU9KSDBEd2l2UWkyYmZVSzdsSlNFdSIsInNlc3Npb25fc3RhdGUiOiJhYjU1ODNmNC00NmU3LTRhYmEtYTllZS1lODQzZDlmOGVlMDciLCJhY3IiOiIxIiwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyJhY2NvdW50Ijp7InJvbGVzIjpbIm1hbmFnZS1hY2NvdW50IiwibWFuYWdlLWFjY291bnQtbGlua3MiLCJ2aWV3LXByb2ZpbGUiXX19LCJzY29wZSI6InByb2ZpbGUgZW1haWwiLCJjbGllbnRJZCI6IjNaMTktM3Nic3YxT0pIMER3aXZRaTJiZlVLN2xKU0V1IiwiY2xpZW50SG9zdCI6IjEwLjQ4LjEuMSIsImVtYWlsX3ZlcmlmaWVkIjpmYWxzZSwib3JnYW5pemF0aW9uIjoic29tZU9yZ0lkMTIzIiwicHJlZmVycmVkX3VzZXJuYW1lIjoic2VydmljZS1hY2NvdW50LTN6MTktM3Nic3Yxb2poMGR3aXZxaTJiZnVrN2xqc2V1IiwiY2xpZW50QWRkcmVzcyI6IjEwLjQ4LjEuMSIsImVtYWlsIjoic2VydmljZS1hY2NvdW50LTN6MTktM3Nic3Yxb2poMGR3aXZxaTJiZnVrN2xqc2V1QHBsYWNlaG9sZGVyLm9yZyJ9.ltF1H_vfQ4aEtR_gAKwSO7iPPqAg5SojS-k4_MPUJ_IdRf13xLV2C-Qis6jIwqZHgdJmR-TShyxoRz7-ekMWzCToyHFK-YRFja6ggoZiq2DAdYgFdXwf_yljGC1A2n5hg_WPIfbLE732QmnmeMM7K1ovLyb27TqpTm0Dr_WRyoRSTUHRGneHjZ9LKhpLheODb0dhS_YpPc60hZL4YN2j7U6y6VqNDS8F_IHZHNKTh0IgsS5uFq1mJ5l_MHaNOQEjcM3tzwKL9tBnPEHBk10YWQTmuNtUvs4L-eyzkLAMpNDiW7xv3cGSHj2gCC7P7gEC3Z3ddFcvl5frk-1OU4xGLg" + }, + { + "name": "X-Real-Ip", + "value": "10.132.0.30" + }, + { + "name": "X-Forwarded-For", + "value": "10.132.0.30" + }, + { + "name": "X-Forwarded-Host", + "value": "trcc.stg.testr.io" + }, + { + "name": ":method", + "value": "GET" + }, + { + "name": ":path", + "value": "/models/ag_nectar_032301/blacklist" + }, + { + "name": ":authority", + "value": "trcc.stg.testr.io" + }, + { + "name": ":scheme", + "value": "http" + }, + { + "name": "x-request-start", + "value": "1590058952.451" + }, + { + "name": "x-up9-source", + "value": "10.48.1.44" + }, + { + "name": "x-up9-destination", + "value": "10.48.2.97:5000" + } + ], + "queryString": [], + "headersSize": -1, + "bodySize": -1 + }, + "response": { + "status": 200, + "statusText": "OK", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "Content-Type", + "value": "application/json" + }, + { + "name": "Content-Length", + "value": "3" + }, + { + "name": "Access-Control-Allow-Origin", + "value": "http://localhost:3000" + }, + { + "name": "Access-Control-Allow-Credentials", + "value": "true" + }, + { + "name": "Vary", + "value": "Origin" + }, + { + "name": "Server", + "value": "gunicorn/19.9.0" + }, + { + "name": "Date", + "value": "Thu, 21 May 2020 11:02:32 GMT" + }, + { + "name": "Connection", + "value": "keep-alive" + }, + { + "name": ":status", + "value": "200" + }, + { + "name": "duration_ms", + "value": "1" + } + ], + "content": { + "size": 3, + "mimeType": "", + "text": "[]\n" + }, + "redirectURL": "", + "headersSize": -1, + "bodySize": 3 + }, + "cache": {}, + "timings": { + "send": -1, + "wait": -1, + "receive": 1 + } + }, + { + "startedDateTime": "2020-05-21T11:02:32.451000+00:00", + "time": 1, + "request": { + "method": "GET", + "url": "http://trcc-api-service/models/ah.trdemo.0513/blacklist", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "X-Real-Ip", + "value": "10.132.0.30" + }, + { + "name": "X-Forwarded-For", + "value": "10.132.0.30" + }, + { + "name": "X-Forwarded-Proto", + "value": "https" + }, + { + "name": "X-Scheme", + "value": "https" + }, + { + "name": "User-Agent", + "value": "python-requests/2.23.0" + }, + { + "name": "Authorization", + "value": "Bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJqSEZ0R1dybjJpY084VnpDYXpaZWUyakpFc2drY1k5ZzhpN2FTbGtielRnIn0.eyJleHAiOjE1OTAwNTkxNDIsImlhdCI6MTU5MDA1ODg0MiwianRpIjoiYWE1OWJkMWMtMGJmMy00M2U1LWIwMDctMDg3MDAwNzVlY2M3IiwiaXNzIjoiaHR0cHM6Ly9hdXRoLnN0Zy50ZXN0ci5pby9hdXRoL3JlYWxtcy90ZXN0ciIsImF1ZCI6ImFjY291bnQiLCJzdWIiOiI0YWFkZWM0Mi01OWE5LTRmZDUtODI3NC1lZWI5NDNmODQyNmUiLCJ0eXAiOiJCZWFyZXIiLCJhenAiOiIzWjE5LTNzYnN2MU9KSDBEd2l2UWkyYmZVSzdsSlNFdSIsInNlc3Npb25fc3RhdGUiOiJhYjU1ODNmNC00NmU3LTRhYmEtYTllZS1lODQzZDlmOGVlMDciLCJhY3IiOiIxIiwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyJhY2NvdW50Ijp7InJvbGVzIjpbIm1hbmFnZS1hY2NvdW50IiwibWFuYWdlLWFjY291bnQtbGlua3MiLCJ2aWV3LXByb2ZpbGUiXX19LCJzY29wZSI6InByb2ZpbGUgZW1haWwiLCJjbGllbnRJZCI6IjNaMTktM3Nic3YxT0pIMER3aXZRaTJiZlVLN2xKU0V1IiwiY2xpZW50SG9zdCI6IjEwLjQ4LjEuMSIsImVtYWlsX3ZlcmlmaWVkIjpmYWxzZSwib3JnYW5pemF0aW9uIjoic29tZU9yZ0lkMTIzIiwicHJlZmVycmVkX3VzZXJuYW1lIjoic2VydmljZS1hY2NvdW50LTN6MTktM3Nic3Yxb2poMGR3aXZxaTJiZnVrN2xqc2V1IiwiY2xpZW50QWRkcmVzcyI6IjEwLjQ4LjEuMSIsImVtYWlsIjoic2VydmljZS1hY2NvdW50LTN6MTktM3Nic3Yxb2poMGR3aXZxaTJiZnVrN2xqc2V1QHBsYWNlaG9sZGVyLm9yZyJ9.ltF1H_vfQ4aEtR_gAKwSO7iPPqAg5SojS-k4_MPUJ_IdRf13xLV2C-Qis6jIwqZHgdJmR-TShyxoRz7-ekMWzCToyHFK-YRFja6ggoZiq2DAdYgFdXwf_yljGC1A2n5hg_WPIfbLE732QmnmeMM7K1ovLyb27TqpTm0Dr_WRyoRSTUHRGneHjZ9LKhpLheODb0dhS_YpPc60hZL4YN2j7U6y6VqNDS8F_IHZHNKTh0IgsS5uFq1mJ5l_MHaNOQEjcM3tzwKL9tBnPEHBk10YWQTmuNtUvs4L-eyzkLAMpNDiW7xv3cGSHj2gCC7P7gEC3Z3ddFcvl5frk-1OU4xGLg" + }, + { + "name": "X-Forwarded-Host", + "value": "trcc.stg.testr.io" + }, + { + "name": "X-Forwarded-Port", + "value": "443" + }, + { + "name": "Accept-Encoding", + "value": "gzip, deflate" + }, + { + "name": "Accept", + "value": "*/*" + }, + { + "name": "X-Request-Id", + "value": "421e35c794c3e808af71dde2b192975c" + }, + { + "name": ":method", + "value": "GET" + }, + { + "name": ":path", + "value": "/models/ah.trdemo.0513/blacklist" + }, + { + "name": ":authority", + "value": "trcc.stg.testr.io" + }, + { + "name": ":scheme", + "value": "http" + }, + { + "name": "x-request-start", + "value": "1590058952.451" + }, + { + "name": "x-up9-source", + "value": "10.48.1.44" + }, + { + "name": "x-up9-destination", + "value": "10.48.2.97:5000" + } + ], + "queryString": [], + "headersSize": -1, + "bodySize": -1 + }, + "response": { + "status": 200, + "statusText": "OK", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "Connection", + "value": "keep-alive" + }, + { + "name": "Content-Type", + "value": "application/json" + }, + { + "name": "Content-Length", + "value": "3" + }, + { + "name": "Access-Control-Allow-Origin", + "value": "http://localhost:3000" + }, + { + "name": "Access-Control-Allow-Credentials", + "value": "true" + }, + { + "name": "Vary", + "value": "Origin" + }, + { + "name": "Server", + "value": "gunicorn/19.9.0" + }, + { + "name": "Date", + "value": "Thu, 21 May 2020 11:02:32 GMT" + }, + { + "name": ":status", + "value": "200" + }, + { + "name": "duration_ms", + "value": "1" + } + ], + "content": { + "size": 3, + "mimeType": "", + "text": "[]\n" + }, + "redirectURL": "", + "headersSize": -1, + "bodySize": 3 + }, + "cache": {}, + "timings": { + "send": -1, + "wait": -1, + "receive": 1 + } + }, + { + "startedDateTime": "2020-05-21T11:02:32.033000+00:00", + "time": 633, + "request": { + "method": "GET", + "url": "http://trcc-api-service/models/aws_kong5/suites/all/runs", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "X-Forwarded-Proto", + "value": "https" + }, + { + "name": "Accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "Referer", + "value": "https://stg.testr.io/someOrgId123/model/aws_kong5/lastResults/systems/all/runs" + }, + { + "name": "X-Forwarded-Host", + "value": "trcc.stg.testr.io" + }, + { + "name": "X-Forwarded-Port", + "value": "443" + }, + { + "name": "Origin", + "value": "https://stg.testr.io" + }, + { + "name": "Sec-Fetch-Dest", + "value": "empty" + }, + { + "name": "Accept-Encoding", + "value": "gzip, deflate, br" + }, + { + "name": "X-Scheme", + "value": "https" + }, + { + "name": "Authorization", + "value": "bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJqSEZ0R1dybjJpY084VnpDYXpaZWUyakpFc2drY1k5ZzhpN2FTbGtielRnIn0.eyJleHAiOjE1OTAwNTkyNDMsImlhdCI6MTU5MDA1ODk0MywiYXV0aF90aW1lIjoxNTkwMDU4NjUxLCJqdGkiOiI1ODYzNmRiMy0wN2IxLTQ2ZDYtOGNiNS01MzEzMDFlZGY4MGYiLCJpc3MiOiJodHRwczovL2F1dGguc3RnLnRlc3RyLmlvL2F1dGgvcmVhbG1zL3Rlc3RyIiwiYXVkIjoiYWNjb3VudCIsInN1YiI6IjBlYWU4ZmFjLTgyYTEtNDUwNi05MWQ0LTA4ZDYxZTI2NWY1NCIsInR5cCI6IkJlYXJlciIsImF6cCI6InJlYWN0LWNsaWVudCIsIm5vbmNlIjoiNTRjMTM5OTktMDg0NS00OWNmLWI1OTAtOTY1ZThjNWI0NmJlIiwic2Vzc2lvbl9zdGF0ZSI6ImY3YjEyOTM1LThmMTctNDc1Zi04NmRhLWQ4NjFjZTYxNWZjNyIsImFjciI6IjAiLCJhbGxvd2VkLW9yaWdpbnMiOlsiaHR0cHM6Ly9zdGcudGVzdHIuaW8iLCJjaHJvbWUtZXh0ZW5zaW9uOi8vbmFkZ2VsamVtbWJna2xkaGNwYWZqbXBtYXBpcGdsY20iLCJodHRwOi8vbG9jYWxob3N0OjMwMDAiXSwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyJhY2NvdW50Ijp7InJvbGVzIjpbIm1hbmFnZS1hY2NvdW50IiwibWFuYWdlLWFjY291bnQtbGlua3MiLCJ2aWV3LXByb2ZpbGUiXX19LCJzY29wZSI6Im9wZW5pZCBwcm9maWxlIGVtYWlsIiwiZ3JvdXBfbWVtYmVyc2hpcCI6WyJzb21lT3JnSWQxMjMiXSwiZW1haWxfdmVyaWZpZWQiOnRydWUsIm5hbWUiOiJSYW1pIEJlcm1hbiIsInByZWZlcnJlZF91c2VybmFtZSI6InJhbWkuYmVybWFuQHVwOS5jb20iLCJnaXZlbl9uYW1lIjoiUmFtaSIsImZhbWlseV9uYW1lIjoiQmVybWFuIiwiZ3JvdXBfc3ViZG9tYWluIjoic29tZU9yZ0lkMTIzIiwiZW1haWwiOiJyYW1pLmJlcm1hbkB1cDkuY29tIiwiZmVhdHVyZUZsYWdzIjp7ImVkaXRFbmRwb2ludFZhcmlhYmxlcyI6dHJ1ZSwic2lkZU5hdmlnYXRpb24iOnRydWV9fQ.UEDsnoo9A8CbdIYKXoOrAAq6y2K7Aoqf-PplHhXFoVep9ewwA9qBjXqgn0fK9cnE_KfZKUcX_cy1HDhhdIfR_aHpbWWhQ3gxISkE6ALka18JIrUv7bFaHKio6eEP6tgn34QVP8aQVEB3e3g7h3dLuUvZ1xIMnt6fy03tD3KgiQlvdHwg5FhJLosiCrHgboEqN5VH_f_2QF33XiXTkDG1e-AOEnIIWqloMDTUPZEUvEo_KH68lB0Uu23YhhI5gPAuKQVb_UjFWcF_6Ysvk3C3j0cuk09DZ7YEI1u-bKp58LHnsS6gqNFQxy-CDlZ8Oht5d2I3LbwZZxHzMixzzFzJCA" + }, + { + "name": "Sec-Fetch-Site", + "value": "same-site" + }, + { + "name": "X-Real-Ip", + "value": "10.132.0.11" + }, + { + "name": "Dnt", + "value": "1" + }, + { + "name": "X-Forwarded-For", + "value": "10.132.0.11" + }, + { + "name": "User-Agent", + "value": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36" + }, + { + "name": "Sec-Fetch-Mode", + "value": "cors" + }, + { + "name": "Accept-Language", + "value": "en-IL,en-US;q=0.9,en;q=0.8,he;q=0.7,pl;q=0.6,ru;q=0.5" + }, + { + "name": "X-Request-Id", + "value": "ed62ba7a893ab02842471ebf8f9b0a7f" + }, + { + "name": ":method", + "value": "GET" + }, + { + "name": ":path", + "value": "/models/aws_kong5/suites/all/runs" + }, + { + "name": ":authority", + "value": "trcc.stg.testr.io" + }, + { + "name": ":scheme", + "value": "http" + }, + { + "name": "x-request-start", + "value": "1590058952.033" + }, + { + "name": "x-up9-source", + "value": "10.48.1.44" + }, + { + "name": "x-up9-destination", + "value": "10.48.0.155:5000" + } + ], + "queryString": [], + "headersSize": -1, + "bodySize": -1 + }, + "response": { + "status": 200, + "statusText": "OK", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "Connection", + "value": "keep-alive" + }, + { + "name": "Content-Type", + "value": "text/html; charset=utf-8" + }, + { + "name": "Access-Control-Allow-Headers", + "value": "authorization" + }, + { + "name": "Vary", + "value": "Origin" + }, + { + "name": "Content-Length", + "value": "0" + }, + { + "name": "Server", + "value": "gunicorn/19.9.0" + }, + { + "name": "Allow", + "value": "GET, HEAD, OPTIONS, POST" + }, + { + "name": "Access-Control-Allow-Origin", + "value": "http://localhost:3000" + }, + { + "name": "Access-Control-Allow-Credentials", + "value": "true" + }, + { + "name": "Access-Control-Allow-Methods", + "value": "DELETE, GET, HEAD, OPTIONS, PATCH, POST, PUT" + }, + { + "name": "Date", + "value": "Thu, 21 May 2020 11:02:32 GMT" + }, + { + "name": ":status", + "value": "200" + }, + { + "name": "duration_ms", + "value": "633" + } + ], + "content": { + "size": 0, + "mimeType": "", + "text": "", + "encoding": "base64" + }, + "redirectURL": "", + "headersSize": -1, + "bodySize": 0 + }, + "cache": {}, + "timings": { + "send": -1, + "wait": -1, + "receive": 633 + } + }, + { + "startedDateTime": "2020-05-21T11:02:32.452000+00:00", + "time": 1, + "request": { + "method": "GET", + "url": "http://trcc-api-service/models/ag_trdemo_040701/blacklist", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "X-Real-Ip", + "value": "10.132.0.30" + }, + { + "name": "X-Forwarded-For", + "value": "10.132.0.30" + }, + { + "name": "X-Forwarded-Host", + "value": "trcc.stg.testr.io" + }, + { + "name": "X-Forwarded-Port", + "value": "443" + }, + { + "name": "X-Scheme", + "value": "https" + }, + { + "name": "Accept", + "value": "*/*" + }, + { + "name": "Authorization", + "value": "Bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJqSEZ0R1dybjJpY084VnpDYXpaZWUyakpFc2drY1k5ZzhpN2FTbGtielRnIn0.eyJleHAiOjE1OTAwNTkxNDIsImlhdCI6MTU5MDA1ODg0MiwianRpIjoiYWE1OWJkMWMtMGJmMy00M2U1LWIwMDctMDg3MDAwNzVlY2M3IiwiaXNzIjoiaHR0cHM6Ly9hdXRoLnN0Zy50ZXN0ci5pby9hdXRoL3JlYWxtcy90ZXN0ciIsImF1ZCI6ImFjY291bnQiLCJzdWIiOiI0YWFkZWM0Mi01OWE5LTRmZDUtODI3NC1lZWI5NDNmODQyNmUiLCJ0eXAiOiJCZWFyZXIiLCJhenAiOiIzWjE5LTNzYnN2MU9KSDBEd2l2UWkyYmZVSzdsSlNFdSIsInNlc3Npb25fc3RhdGUiOiJhYjU1ODNmNC00NmU3LTRhYmEtYTllZS1lODQzZDlmOGVlMDciLCJhY3IiOiIxIiwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyJhY2NvdW50Ijp7InJvbGVzIjpbIm1hbmFnZS1hY2NvdW50IiwibWFuYWdlLWFjY291bnQtbGlua3MiLCJ2aWV3LXByb2ZpbGUiXX19LCJzY29wZSI6InByb2ZpbGUgZW1haWwiLCJjbGllbnRJZCI6IjNaMTktM3Nic3YxT0pIMER3aXZRaTJiZlVLN2xKU0V1IiwiY2xpZW50SG9zdCI6IjEwLjQ4LjEuMSIsImVtYWlsX3ZlcmlmaWVkIjpmYWxzZSwib3JnYW5pemF0aW9uIjoic29tZU9yZ0lkMTIzIiwicHJlZmVycmVkX3VzZXJuYW1lIjoic2VydmljZS1hY2NvdW50LTN6MTktM3Nic3Yxb2poMGR3aXZxaTJiZnVrN2xqc2V1IiwiY2xpZW50QWRkcmVzcyI6IjEwLjQ4LjEuMSIsImVtYWlsIjoic2VydmljZS1hY2NvdW50LTN6MTktM3Nic3Yxb2poMGR3aXZxaTJiZnVrN2xqc2V1QHBsYWNlaG9sZGVyLm9yZyJ9.ltF1H_vfQ4aEtR_gAKwSO7iPPqAg5SojS-k4_MPUJ_IdRf13xLV2C-Qis6jIwqZHgdJmR-TShyxoRz7-ekMWzCToyHFK-YRFja6ggoZiq2DAdYgFdXwf_yljGC1A2n5hg_WPIfbLE732QmnmeMM7K1ovLyb27TqpTm0Dr_WRyoRSTUHRGneHjZ9LKhpLheODb0dhS_YpPc60hZL4YN2j7U6y6VqNDS8F_IHZHNKTh0IgsS5uFq1mJ5l_MHaNOQEjcM3tzwKL9tBnPEHBk10YWQTmuNtUvs4L-eyzkLAMpNDiW7xv3cGSHj2gCC7P7gEC3Z3ddFcvl5frk-1OU4xGLg" + }, + { + "name": "X-Forwarded-Proto", + "value": "https" + }, + { + "name": "User-Agent", + "value": "python-requests/2.23.0" + }, + { + "name": "Accept-Encoding", + "value": "gzip, deflate" + }, + { + "name": "X-Request-Id", + "value": "c10a6a742608973f40ef351dc98799a5" + }, + { + "name": ":method", + "value": "GET" + }, + { + "name": ":path", + "value": "/models/ag_trdemo_040701/blacklist" + }, + { + "name": ":authority", + "value": "trcc.stg.testr.io" + }, + { + "name": ":scheme", + "value": "http" + }, + { + "name": "x-request-start", + "value": "1590058952.452" + }, + { + "name": "x-up9-source", + "value": "10.48.1.44" + }, + { + "name": "x-up9-destination", + "value": "10.48.2.97:5000" + } + ], + "queryString": [], + "headersSize": -1, + "bodySize": -1 + }, + "response": { + "status": 200, + "statusText": "OK", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "Content-Type", + "value": "application/json" + }, + { + "name": "Content-Length", + "value": "3" + }, + { + "name": "Access-Control-Allow-Origin", + "value": "http://localhost:3000" + }, + { + "name": "Access-Control-Allow-Credentials", + "value": "true" + }, + { + "name": "Vary", + "value": "Origin" + }, + { + "name": "Server", + "value": "gunicorn/19.9.0" + }, + { + "name": "Date", + "value": "Thu, 21 May 2020 11:02:32 GMT" + }, + { + "name": "Connection", + "value": "keep-alive" + }, + { + "name": ":status", + "value": "200" + }, + { + "name": "duration_ms", + "value": "1" + } + ], + "content": { + "size": 3, + "mimeType": "", + "text": "[]\n" + }, + "redirectURL": "", + "headersSize": -1, + "bodySize": 3 + }, + "cache": {}, + "timings": { + "send": -1, + "wait": -1, + "receive": 1 + } + }, + { + "startedDateTime": "2020-05-21T11:02:32.670000+00:00", + "time": 1, + "request": { + "method": "GET", + "url": "http://trcc-api-service/models/liraz_test_2105/blacklist", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "User-Agent", + "value": "python-requests/2.23.0" + }, + { + "name": "Accept-Encoding", + "value": "gzip, deflate" + }, + { + "name": "Accept", + "value": "*/*" + }, + { + "name": "Authorization", + "value": "Bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJqSEZ0R1dybjJpY084VnpDYXpaZWUyakpFc2drY1k5ZzhpN2FTbGtielRnIn0.eyJleHAiOjE1OTAwNTkxNDIsImlhdCI6MTU5MDA1ODg0MiwianRpIjoiYWE1OWJkMWMtMGJmMy00M2U1LWIwMDctMDg3MDAwNzVlY2M3IiwiaXNzIjoiaHR0cHM6Ly9hdXRoLnN0Zy50ZXN0ci5pby9hdXRoL3JlYWxtcy90ZXN0ciIsImF1ZCI6ImFjY291bnQiLCJzdWIiOiI0YWFkZWM0Mi01OWE5LTRmZDUtODI3NC1lZWI5NDNmODQyNmUiLCJ0eXAiOiJCZWFyZXIiLCJhenAiOiIzWjE5LTNzYnN2MU9KSDBEd2l2UWkyYmZVSzdsSlNFdSIsInNlc3Npb25fc3RhdGUiOiJhYjU1ODNmNC00NmU3LTRhYmEtYTllZS1lODQzZDlmOGVlMDciLCJhY3IiOiIxIiwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyJhY2NvdW50Ijp7InJvbGVzIjpbIm1hbmFnZS1hY2NvdW50IiwibWFuYWdlLWFjY291bnQtbGlua3MiLCJ2aWV3LXByb2ZpbGUiXX19LCJzY29wZSI6InByb2ZpbGUgZW1haWwiLCJjbGllbnRJZCI6IjNaMTktM3Nic3YxT0pIMER3aXZRaTJiZlVLN2xKU0V1IiwiY2xpZW50SG9zdCI6IjEwLjQ4LjEuMSIsImVtYWlsX3ZlcmlmaWVkIjpmYWxzZSwib3JnYW5pemF0aW9uIjoic29tZU9yZ0lkMTIzIiwicHJlZmVycmVkX3VzZXJuYW1lIjoic2VydmljZS1hY2NvdW50LTN6MTktM3Nic3Yxb2poMGR3aXZxaTJiZnVrN2xqc2V1IiwiY2xpZW50QWRkcmVzcyI6IjEwLjQ4LjEuMSIsImVtYWlsIjoic2VydmljZS1hY2NvdW50LTN6MTktM3Nic3Yxb2poMGR3aXZxaTJiZnVrN2xqc2V1QHBsYWNlaG9sZGVyLm9yZyJ9.ltF1H_vfQ4aEtR_gAKwSO7iPPqAg5SojS-k4_MPUJ_IdRf13xLV2C-Qis6jIwqZHgdJmR-TShyxoRz7-ekMWzCToyHFK-YRFja6ggoZiq2DAdYgFdXwf_yljGC1A2n5hg_WPIfbLE732QmnmeMM7K1ovLyb27TqpTm0Dr_WRyoRSTUHRGneHjZ9LKhpLheODb0dhS_YpPc60hZL4YN2j7U6y6VqNDS8F_IHZHNKTh0IgsS5uFq1mJ5l_MHaNOQEjcM3tzwKL9tBnPEHBk10YWQTmuNtUvs4L-eyzkLAMpNDiW7xv3cGSHj2gCC7P7gEC3Z3ddFcvl5frk-1OU4xGLg" + }, + { + "name": "X-Real-Ip", + "value": "10.132.0.30" + }, + { + "name": "X-Forwarded-Port", + "value": "443" + }, + { + "name": "X-Scheme", + "value": "https" + }, + { + "name": "X-Forwarded-Host", + "value": "trcc.stg.testr.io" + }, + { + "name": "X-Forwarded-Proto", + "value": "https" + }, + { + "name": "X-Request-Id", + "value": "1ac06a6704540e66e0c5be53b2d58f0e" + }, + { + "name": "X-Forwarded-For", + "value": "10.132.0.30" + }, + { + "name": ":method", + "value": "GET" + }, + { + "name": ":path", + "value": "/models/liraz_test_2105/blacklist" + }, + { + "name": ":authority", + "value": "trcc.stg.testr.io" + }, + { + "name": ":scheme", + "value": "http" + }, + { + "name": "x-request-start", + "value": "1590058952.670" + }, + { + "name": "x-up9-source", + "value": "10.48.1.44" + }, + { + "name": "x-up9-destination", + "value": "10.48.0.155:5000" + } + ], + "queryString": [], + "headersSize": -1, + "bodySize": -1 + }, + "response": { + "status": 200, + "statusText": "OK", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "Content-Type", + "value": "application/json" + }, + { + "name": "Content-Length", + "value": "3" + }, + { + "name": "Access-Control-Allow-Origin", + "value": "http://localhost:3000" + }, + { + "name": "Access-Control-Allow-Credentials", + "value": "true" + }, + { + "name": "Vary", + "value": "Origin" + }, + { + "name": "Server", + "value": "gunicorn/19.9.0" + }, + { + "name": "Date", + "value": "Thu, 21 May 2020 11:02:32 GMT" + }, + { + "name": "Connection", + "value": "keep-alive" + }, + { + "name": ":status", + "value": "200" + }, + { + "name": "duration_ms", + "value": "1" + } + ], + "content": { + "size": 3, + "mimeType": "", + "text": "[]\n" + }, + "redirectURL": "", + "headersSize": -1, + "bodySize": 3 + }, + "cache": {}, + "timings": { + "send": -1, + "wait": -1, + "receive": 1 + } + }, + { + "startedDateTime": "2020-05-21T11:02:32.452000+00:00", + "time": 1, + "request": { + "method": "GET", + "url": "http://trcc-api-service/models/default/blacklist", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "Accept", + "value": "*/*" + }, + { + "name": "X-Real-Ip", + "value": "10.132.0.30" + }, + { + "name": "X-Forwarded-For", + "value": "10.132.0.30" + }, + { + "name": "X-Scheme", + "value": "https" + }, + { + "name": "Accept-Encoding", + "value": "gzip, deflate" + }, + { + "name": "X-Forwarded-Proto", + "value": "https" + }, + { + "name": "User-Agent", + "value": "python-requests/2.23.0" + }, + { + "name": "Authorization", + "value": "Bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJqSEZ0R1dybjJpY084VnpDYXpaZWUyakpFc2drY1k5ZzhpN2FTbGtielRnIn0.eyJleHAiOjE1OTAwNTkxNDIsImlhdCI6MTU5MDA1ODg0MiwianRpIjoiYWE1OWJkMWMtMGJmMy00M2U1LWIwMDctMDg3MDAwNzVlY2M3IiwiaXNzIjoiaHR0cHM6Ly9hdXRoLnN0Zy50ZXN0ci5pby9hdXRoL3JlYWxtcy90ZXN0ciIsImF1ZCI6ImFjY291bnQiLCJzdWIiOiI0YWFkZWM0Mi01OWE5LTRmZDUtODI3NC1lZWI5NDNmODQyNmUiLCJ0eXAiOiJCZWFyZXIiLCJhenAiOiIzWjE5LTNzYnN2MU9KSDBEd2l2UWkyYmZVSzdsSlNFdSIsInNlc3Npb25fc3RhdGUiOiJhYjU1ODNmNC00NmU3LTRhYmEtYTllZS1lODQzZDlmOGVlMDciLCJhY3IiOiIxIiwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyJhY2NvdW50Ijp7InJvbGVzIjpbIm1hbmFnZS1hY2NvdW50IiwibWFuYWdlLWFjY291bnQtbGlua3MiLCJ2aWV3LXByb2ZpbGUiXX19LCJzY29wZSI6InByb2ZpbGUgZW1haWwiLCJjbGllbnRJZCI6IjNaMTktM3Nic3YxT0pIMER3aXZRaTJiZlVLN2xKU0V1IiwiY2xpZW50SG9zdCI6IjEwLjQ4LjEuMSIsImVtYWlsX3ZlcmlmaWVkIjpmYWxzZSwib3JnYW5pemF0aW9uIjoic29tZU9yZ0lkMTIzIiwicHJlZmVycmVkX3VzZXJuYW1lIjoic2VydmljZS1hY2NvdW50LTN6MTktM3Nic3Yxb2poMGR3aXZxaTJiZnVrN2xqc2V1IiwiY2xpZW50QWRkcmVzcyI6IjEwLjQ4LjEuMSIsImVtYWlsIjoic2VydmljZS1hY2NvdW50LTN6MTktM3Nic3Yxb2poMGR3aXZxaTJiZnVrN2xqc2V1QHBsYWNlaG9sZGVyLm9yZyJ9.ltF1H_vfQ4aEtR_gAKwSO7iPPqAg5SojS-k4_MPUJ_IdRf13xLV2C-Qis6jIwqZHgdJmR-TShyxoRz7-ekMWzCToyHFK-YRFja6ggoZiq2DAdYgFdXwf_yljGC1A2n5hg_WPIfbLE732QmnmeMM7K1ovLyb27TqpTm0Dr_WRyoRSTUHRGneHjZ9LKhpLheODb0dhS_YpPc60hZL4YN2j7U6y6VqNDS8F_IHZHNKTh0IgsS5uFq1mJ5l_MHaNOQEjcM3tzwKL9tBnPEHBk10YWQTmuNtUvs4L-eyzkLAMpNDiW7xv3cGSHj2gCC7P7gEC3Z3ddFcvl5frk-1OU4xGLg" + }, + { + "name": "X-Request-Id", + "value": "e104a2cb9fadce4c74739426e5160ade" + }, + { + "name": "X-Forwarded-Host", + "value": "trcc.stg.testr.io" + }, + { + "name": "X-Forwarded-Port", + "value": "443" + }, + { + "name": ":method", + "value": "GET" + }, + { + "name": ":path", + "value": "/models/default/blacklist" + }, + { + "name": ":authority", + "value": "trcc.stg.testr.io" + }, + { + "name": ":scheme", + "value": "http" + }, + { + "name": "x-request-start", + "value": "1590058952.452" + }, + { + "name": "x-up9-source", + "value": "10.48.1.44" + }, + { + "name": "x-up9-destination", + "value": "10.48.2.97:5000" + } + ], + "queryString": [], + "headersSize": -1, + "bodySize": -1 + }, + "response": { + "status": 200, + "statusText": "OK", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "Access-Control-Allow-Origin", + "value": "http://localhost:3000" + }, + { + "name": "Access-Control-Allow-Credentials", + "value": "true" + }, + { + "name": "Vary", + "value": "Origin" + }, + { + "name": "Server", + "value": "gunicorn/19.9.0" + }, + { + "name": "Date", + "value": "Thu, 21 May 2020 11:02:32 GMT" + }, + { + "name": "Connection", + "value": "keep-alive" + }, + { + "name": "Content-Type", + "value": "application/json" + }, + { + "name": "Content-Length", + "value": "3" + }, + { + "name": ":status", + "value": "200" + }, + { + "name": "duration_ms", + "value": "1" + } + ], + "content": { + "size": 3, + "mimeType": "", + "text": "[]\n" + }, + "redirectURL": "", + "headersSize": -1, + "bodySize": 3 + }, + "cache": {}, + "timings": { + "send": -1, + "wait": -1, + "receive": 1 + } + }, + { + "startedDateTime": "2020-05-21T11:02:32.678000+00:00", + "time": 2, + "request": { + "method": "GET", + "url": "http://trcc-api-service/models/sy-trcc-dogfood-10/blacklist", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "Accept-Encoding", + "value": "gzip, deflate" + }, + { + "name": "Accept", + "value": "*/*" + }, + { + "name": "X-Forwarded-For", + "value": "10.132.0.30" + }, + { + "name": "X-Forwarded-Host", + "value": "trcc.stg.testr.io" + }, + { + "name": "X-Forwarded-Port", + "value": "443" + }, + { + "name": "X-Forwarded-Proto", + "value": "https" + }, + { + "name": "X-Scheme", + "value": "https" + }, + { + "name": "User-Agent", + "value": "python-requests/2.23.0" + }, + { + "name": "X-Request-Id", + "value": "94b623480410bf2e60c1665ee356a239" + }, + { + "name": "X-Real-Ip", + "value": "10.132.0.30" + }, + { + "name": "Authorization", + "value": "Bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJqSEZ0R1dybjJpY084VnpDYXpaZWUyakpFc2drY1k5ZzhpN2FTbGtielRnIn0.eyJleHAiOjE1OTAwNTkxNDIsImlhdCI6MTU5MDA1ODg0MiwianRpIjoiYWE1OWJkMWMtMGJmMy00M2U1LWIwMDctMDg3MDAwNzVlY2M3IiwiaXNzIjoiaHR0cHM6Ly9hdXRoLnN0Zy50ZXN0ci5pby9hdXRoL3JlYWxtcy90ZXN0ciIsImF1ZCI6ImFjY291bnQiLCJzdWIiOiI0YWFkZWM0Mi01OWE5LTRmZDUtODI3NC1lZWI5NDNmODQyNmUiLCJ0eXAiOiJCZWFyZXIiLCJhenAiOiIzWjE5LTNzYnN2MU9KSDBEd2l2UWkyYmZVSzdsSlNFdSIsInNlc3Npb25fc3RhdGUiOiJhYjU1ODNmNC00NmU3LTRhYmEtYTllZS1lODQzZDlmOGVlMDciLCJhY3IiOiIxIiwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyJhY2NvdW50Ijp7InJvbGVzIjpbIm1hbmFnZS1hY2NvdW50IiwibWFuYWdlLWFjY291bnQtbGlua3MiLCJ2aWV3LXByb2ZpbGUiXX19LCJzY29wZSI6InByb2ZpbGUgZW1haWwiLCJjbGllbnRJZCI6IjNaMTktM3Nic3YxT0pIMER3aXZRaTJiZlVLN2xKU0V1IiwiY2xpZW50SG9zdCI6IjEwLjQ4LjEuMSIsImVtYWlsX3ZlcmlmaWVkIjpmYWxzZSwib3JnYW5pemF0aW9uIjoic29tZU9yZ0lkMTIzIiwicHJlZmVycmVkX3VzZXJuYW1lIjoic2VydmljZS1hY2NvdW50LTN6MTktM3Nic3Yxb2poMGR3aXZxaTJiZnVrN2xqc2V1IiwiY2xpZW50QWRkcmVzcyI6IjEwLjQ4LjEuMSIsImVtYWlsIjoic2VydmljZS1hY2NvdW50LTN6MTktM3Nic3Yxb2poMGR3aXZxaTJiZnVrN2xqc2V1QHBsYWNlaG9sZGVyLm9yZyJ9.ltF1H_vfQ4aEtR_gAKwSO7iPPqAg5SojS-k4_MPUJ_IdRf13xLV2C-Qis6jIwqZHgdJmR-TShyxoRz7-ekMWzCToyHFK-YRFja6ggoZiq2DAdYgFdXwf_yljGC1A2n5hg_WPIfbLE732QmnmeMM7K1ovLyb27TqpTm0Dr_WRyoRSTUHRGneHjZ9LKhpLheODb0dhS_YpPc60hZL4YN2j7U6y6VqNDS8F_IHZHNKTh0IgsS5uFq1mJ5l_MHaNOQEjcM3tzwKL9tBnPEHBk10YWQTmuNtUvs4L-eyzkLAMpNDiW7xv3cGSHj2gCC7P7gEC3Z3ddFcvl5frk-1OU4xGLg" + }, + { + "name": ":method", + "value": "GET" + }, + { + "name": ":path", + "value": "/models/sy-trcc-dogfood-10/blacklist" + }, + { + "name": ":authority", + "value": "trcc.stg.testr.io" + }, + { + "name": ":scheme", + "value": "http" + }, + { + "name": "x-request-start", + "value": "1590058952.678" + }, + { + "name": "x-up9-source", + "value": "10.48.1.44" + }, + { + "name": "x-up9-destination", + "value": "10.48.0.155:5000" + } + ], + "queryString": [], + "headersSize": -1, + "bodySize": -1 + }, + "response": { + "status": 200, + "statusText": "OK", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "Vary", + "value": "Origin" + }, + { + "name": "Server", + "value": "gunicorn/19.9.0" + }, + { + "name": "Date", + "value": "Thu, 21 May 2020 11:02:32 GMT" + }, + { + "name": "Connection", + "value": "keep-alive" + }, + { + "name": "Content-Type", + "value": "application/json" + }, + { + "name": "Content-Length", + "value": "3" + }, + { + "name": "Access-Control-Allow-Origin", + "value": "http://localhost:3000" + }, + { + "name": "Access-Control-Allow-Credentials", + "value": "true" + }, + { + "name": ":status", + "value": "200" + }, + { + "name": "duration_ms", + "value": "2" + } + ], + "content": { + "size": 3, + "mimeType": "", + "text": "[]\n" + }, + "redirectURL": "", + "headersSize": -1, + "bodySize": 3 + }, + "cache": {}, + "timings": { + "send": -1, + "wait": -1, + "receive": 2 + } + }, + { + "startedDateTime": "2020-05-21T11:02:32.681000+00:00", + "time": 1, + "request": { + "method": "GET", + "url": "http://trcc-api-service/models/aws_kong5/suites/all/runs", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "Sec-Fetch-Site", + "value": "same-site" + }, + { + "name": "Accept-Encoding", + "value": "gzip, deflate, br" + }, + { + "name": "X-Real-Ip", + "value": "10.132.0.11" + }, + { + "name": "X-Forwarded-Host", + "value": "trcc.stg.testr.io" + }, + { + "name": "Authorization", + "value": "bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJqSEZ0R1dybjJpY084VnpDYXpaZWUyakpFc2drY1k5ZzhpN2FTbGtielRnIn0.eyJleHAiOjE1OTAwNTkyNDMsImlhdCI6MTU5MDA1ODk0MywiYXV0aF90aW1lIjoxNTkwMDU4NjUxLCJqdGkiOiI1ODYzNmRiMy0wN2IxLTQ2ZDYtOGNiNS01MzEzMDFlZGY4MGYiLCJpc3MiOiJodHRwczovL2F1dGguc3RnLnRlc3RyLmlvL2F1dGgvcmVhbG1zL3Rlc3RyIiwiYXVkIjoiYWNjb3VudCIsInN1YiI6IjBlYWU4ZmFjLTgyYTEtNDUwNi05MWQ0LTA4ZDYxZTI2NWY1NCIsInR5cCI6IkJlYXJlciIsImF6cCI6InJlYWN0LWNsaWVudCIsIm5vbmNlIjoiNTRjMTM5OTktMDg0NS00OWNmLWI1OTAtOTY1ZThjNWI0NmJlIiwic2Vzc2lvbl9zdGF0ZSI6ImY3YjEyOTM1LThmMTctNDc1Zi04NmRhLWQ4NjFjZTYxNWZjNyIsImFjciI6IjAiLCJhbGxvd2VkLW9yaWdpbnMiOlsiaHR0cHM6Ly9zdGcudGVzdHIuaW8iLCJjaHJvbWUtZXh0ZW5zaW9uOi8vbmFkZ2VsamVtbWJna2xkaGNwYWZqbXBtYXBpcGdsY20iLCJodHRwOi8vbG9jYWxob3N0OjMwMDAiXSwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyJhY2NvdW50Ijp7InJvbGVzIjpbIm1hbmFnZS1hY2NvdW50IiwibWFuYWdlLWFjY291bnQtbGlua3MiLCJ2aWV3LXByb2ZpbGUiXX19LCJzY29wZSI6Im9wZW5pZCBwcm9maWxlIGVtYWlsIiwiZ3JvdXBfbWVtYmVyc2hpcCI6WyJzb21lT3JnSWQxMjMiXSwiZW1haWxfdmVyaWZpZWQiOnRydWUsIm5hbWUiOiJSYW1pIEJlcm1hbiIsInByZWZlcnJlZF91c2VybmFtZSI6InJhbWkuYmVybWFuQHVwOS5jb20iLCJnaXZlbl9uYW1lIjoiUmFtaSIsImZhbWlseV9uYW1lIjoiQmVybWFuIiwiZ3JvdXBfc3ViZG9tYWluIjoic29tZU9yZ0lkMTIzIiwiZW1haWwiOiJyYW1pLmJlcm1hbkB1cDkuY29tIiwiZmVhdHVyZUZsYWdzIjp7ImVkaXRFbmRwb2ludFZhcmlhYmxlcyI6dHJ1ZSwic2lkZU5hdmlnYXRpb24iOnRydWV9fQ.UEDsnoo9A8CbdIYKXoOrAAq6y2K7Aoqf-PplHhXFoVep9ewwA9qBjXqgn0fK9cnE_KfZKUcX_cy1HDhhdIfR_aHpbWWhQ3gxISkE6ALka18JIrUv7bFaHKio6eEP6tgn34QVP8aQVEB3e3g7h3dLuUvZ1xIMnt6fy03tD3KgiQlvdHwg5FhJLosiCrHgboEqN5VH_f_2QF33XiXTkDG1e-AOEnIIWqloMDTUPZEUvEo_KH68lB0Uu23YhhI5gPAuKQVb_UjFWcF_6Ysvk3C3j0cuk09DZ7YEI1u-bKp58LHnsS6gqNFQxy-CDlZ8Oht5d2I3LbwZZxHzMixzzFzJCA" + }, + { + "name": "Accept-Language", + "value": "en-IL,en-US;q=0.9,en;q=0.8,he;q=0.7,pl;q=0.6,ru;q=0.5" + }, + { + "name": "X-Request-Id", + "value": "0de25627d5fe3269fda503e7487a1bf9" + }, + { + "name": "Sec-Fetch-Mode", + "value": "cors" + }, + { + "name": "User-Agent", + "value": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36" + }, + { + "name": "Origin", + "value": "https://stg.testr.io" + }, + { + "name": "X-Forwarded-For", + "value": "10.132.0.11" + }, + { + "name": "X-Scheme", + "value": "https" + }, + { + "name": "Dnt", + "value": "1" + }, + { + "name": "Sec-Fetch-Dest", + "value": "empty" + }, + { + "name": "Referer", + "value": "https://stg.testr.io/someOrgId123/model/aws_kong5/lastResults/systems/all/runs" + }, + { + "name": "X-Forwarded-Port", + "value": "443" + }, + { + "name": "X-Forwarded-Proto", + "value": "https" + }, + { + "name": "Accept", + "value": "application/json, text/plain, */*" + }, + { + "name": ":method", + "value": "GET" + }, + { + "name": ":path", + "value": "/models/aws_kong5/suites/all/runs" + }, + { + "name": ":authority", + "value": "trcc.stg.testr.io" + }, + { + "name": ":scheme", + "value": "http" + }, + { + "name": "x-request-start", + "value": "1590058952.681" + }, + { + "name": "x-up9-source", + "value": "10.48.1.44" + }, + { + "name": "x-up9-destination", + "value": "10.48.0.155:5000" + } + ], + "queryString": [], + "headersSize": -1, + "bodySize": -1 + }, + "response": { + "status": 200, + "statusText": "OK", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "Access-Control-Allow-Origin", + "value": "http://localhost:3000" + }, + { + "name": "Access-Control-Allow-Credentials", + "value": "true" + }, + { + "name": "Vary", + "value": "Origin" + }, + { + "name": "Server", + "value": "gunicorn/19.9.0" + }, + { + "name": "Date", + "value": "Thu, 21 May 2020 11:02:32 GMT" + }, + { + "name": "Connection", + "value": "keep-alive" + }, + { + "name": "Content-Type", + "value": "application/json" + }, + { + "name": "Content-Length", + "value": "3" + }, + { + "name": ":status", + "value": "200" + }, + { + "name": "duration_ms", + "value": "1" + } + ], + "content": { + "size": 3, + "mimeType": "", + "text": "[]\n" + }, + "redirectURL": "", + "headersSize": -1, + "bodySize": 3 + }, + "cache": {}, + "timings": { + "send": -1, + "wait": -1, + "receive": 1 + } + }, + { + "startedDateTime": "2020-05-21T11:02:32.453000+00:00", + "time": 1, + "request": { + "method": "GET", + "url": "http://trcc-api-service/models/aws_kong5/suites/all/runs", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "X-Forwarded-For", + "value": "10.132.0.11" + }, + { + "name": "X-Forwarded-Port", + "value": "443" + }, + { + "name": "X-Forwarded-Proto", + "value": "https" + }, + { + "name": "Dnt", + "value": "1" + }, + { + "name": "Referer", + "value": "https://stg.testr.io/someOrgId123/model/aws_kong5/lastResults/systems/all/runs" + }, + { + "name": "Sec-Fetch-Mode", + "value": "cors" + }, + { + "name": "Sec-Fetch-Dest", + "value": "empty" + }, + { + "name": "Authorization", + "value": "bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJqSEZ0R1dybjJpY084VnpDYXpaZWUyakpFc2drY1k5ZzhpN2FTbGtielRnIn0.eyJleHAiOjE1OTAwNTkyNDMsImlhdCI6MTU5MDA1ODk0MywiYXV0aF90aW1lIjoxNTkwMDU4NjUxLCJqdGkiOiI1ODYzNmRiMy0wN2IxLTQ2ZDYtOGNiNS01MzEzMDFlZGY4MGYiLCJpc3MiOiJodHRwczovL2F1dGguc3RnLnRlc3RyLmlvL2F1dGgvcmVhbG1zL3Rlc3RyIiwiYXVkIjoiYWNjb3VudCIsInN1YiI6IjBlYWU4ZmFjLTgyYTEtNDUwNi05MWQ0LTA4ZDYxZTI2NWY1NCIsInR5cCI6IkJlYXJlciIsImF6cCI6InJlYWN0LWNsaWVudCIsIm5vbmNlIjoiNTRjMTM5OTktMDg0NS00OWNmLWI1OTAtOTY1ZThjNWI0NmJlIiwic2Vzc2lvbl9zdGF0ZSI6ImY3YjEyOTM1LThmMTctNDc1Zi04NmRhLWQ4NjFjZTYxNWZjNyIsImFjciI6IjAiLCJhbGxvd2VkLW9yaWdpbnMiOlsiaHR0cHM6Ly9zdGcudGVzdHIuaW8iLCJjaHJvbWUtZXh0ZW5zaW9uOi8vbmFkZ2VsamVtbWJna2xkaGNwYWZqbXBtYXBpcGdsY20iLCJodHRwOi8vbG9jYWxob3N0OjMwMDAiXSwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyJhY2NvdW50Ijp7InJvbGVzIjpbIm1hbmFnZS1hY2NvdW50IiwibWFuYWdlLWFjY291bnQtbGlua3MiLCJ2aWV3LXByb2ZpbGUiXX19LCJzY29wZSI6Im9wZW5pZCBwcm9maWxlIGVtYWlsIiwiZ3JvdXBfbWVtYmVyc2hpcCI6WyJzb21lT3JnSWQxMjMiXSwiZW1haWxfdmVyaWZpZWQiOnRydWUsIm5hbWUiOiJSYW1pIEJlcm1hbiIsInByZWZlcnJlZF91c2VybmFtZSI6InJhbWkuYmVybWFuQHVwOS5jb20iLCJnaXZlbl9uYW1lIjoiUmFtaSIsImZhbWlseV9uYW1lIjoiQmVybWFuIiwiZ3JvdXBfc3ViZG9tYWluIjoic29tZU9yZ0lkMTIzIiwiZW1haWwiOiJyYW1pLmJlcm1hbkB1cDkuY29tIiwiZmVhdHVyZUZsYWdzIjp7ImVkaXRFbmRwb2ludFZhcmlhYmxlcyI6dHJ1ZSwic2lkZU5hdmlnYXRpb24iOnRydWV9fQ.UEDsnoo9A8CbdIYKXoOrAAq6y2K7Aoqf-PplHhXFoVep9ewwA9qBjXqgn0fK9cnE_KfZKUcX_cy1HDhhdIfR_aHpbWWhQ3gxISkE6ALka18JIrUv7bFaHKio6eEP6tgn34QVP8aQVEB3e3g7h3dLuUvZ1xIMnt6fy03tD3KgiQlvdHwg5FhJLosiCrHgboEqN5VH_f_2QF33XiXTkDG1e-AOEnIIWqloMDTUPZEUvEo_KH68lB0Uu23YhhI5gPAuKQVb_UjFWcF_6Ysvk3C3j0cuk09DZ7YEI1u-bKp58LHnsS6gqNFQxy-CDlZ8Oht5d2I3LbwZZxHzMixzzFzJCA" + }, + { + "name": "X-Forwarded-Host", + "value": "trcc.stg.testr.io" + }, + { + "name": "X-Scheme", + "value": "https" + }, + { + "name": "Accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "User-Agent", + "value": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36" + }, + { + "name": "Origin", + "value": "https://stg.testr.io" + }, + { + "name": "Sec-Fetch-Site", + "value": "same-site" + }, + { + "name": "Accept-Language", + "value": "en-IL,en-US;q=0.9,en;q=0.8,he;q=0.7,pl;q=0.6,ru;q=0.5" + }, + { + "name": "X-Request-Id", + "value": "66cb21174ba25dfa6ed8307a089a9258" + }, + { + "name": "Accept-Encoding", + "value": "gzip, deflate, br" + }, + { + "name": "X-Real-Ip", + "value": "10.132.0.11" + }, + { + "name": ":method", + "value": "GET" + }, + { + "name": ":path", + "value": "/models/aws_kong5/suites/all/runs" + }, + { + "name": ":authority", + "value": "trcc.stg.testr.io" + }, + { + "name": ":scheme", + "value": "http" + }, + { + "name": "x-request-start", + "value": "1590058952.453" + }, + { + "name": "x-up9-source", + "value": "10.48.1.44" + }, + { + "name": "x-up9-destination", + "value": "10.48.2.97:5000" + } + ], + "queryString": [], + "headersSize": -1, + "bodySize": -1 + }, + "response": { + "status": 200, + "statusText": "OK", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "Content-Length", + "value": "3" + }, + { + "name": "Access-Control-Allow-Origin", + "value": "https://stg.testr.io" + }, + { + "name": "Access-Control-Allow-Credentials", + "value": "true" + }, + { + "name": "Vary", + "value": "Origin" + }, + { + "name": "Server", + "value": "gunicorn/19.9.0" + }, + { + "name": "Date", + "value": "Thu, 21 May 2020 11:02:32 GMT" + }, + { + "name": "Connection", + "value": "keep-alive" + }, + { + "name": "Content-Type", + "value": "application/json" + }, + { + "name": ":status", + "value": "200" + }, + { + "name": "duration_ms", + "value": "1" + } + ], + "content": { + "size": 3, + "mimeType": "", + "text": "[]\n" + }, + "redirectURL": "", + "headersSize": -1, + "bodySize": 3 + }, + "cache": {}, + "timings": { + "send": -1, + "wait": -1, + "receive": 1 + } + }, + { + "startedDateTime": "2020-05-21T11:02:32.684000+00:00", + "time": 1, + "request": { + "method": "POST", + "url": "http://trcc-api-service/tapping/state", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "X-Real-Ip", + "value": "10.132.0.85" + }, + { + "name": "X-Scheme", + "value": "https" + }, + { + "name": "User-Agent", + "value": "python-requests/2.23.0" + }, + { + "name": "Content-Type", + "value": "application/json" + }, + { + "name": "X-Forwarded-For", + "value": "10.132.0.85" + }, + { + "name": "X-Forwarded-Host", + "value": "trcc.stg.testr.io" + }, + { + "name": "X-Forwarded-Proto", + "value": "https" + }, + { + "name": "Authorization", + "value": "Bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJqSEZ0R1dybjJpY084VnpDYXpaZWUyakpFc2drY1k5ZzhpN2FTbGtielRnIn0.eyJleHAiOjE1OTAwNTkxNTksImlhdCI6MTU5MDA1ODg1OSwianRpIjoiM2E5NDhkMjctOThiNy00Yjc2LTljNzQtZTkyODc2NWI2MTk0IiwiaXNzIjoiaHR0cHM6Ly9hdXRoLnN0Zy50ZXN0ci5pby9hdXRoL3JlYWxtcy90ZXN0ciIsImF1ZCI6ImFjY291bnQiLCJzdWIiOiI0YWFkZWM0Mi01OWE5LTRmZDUtODI3NC1lZWI5NDNmODQyNmUiLCJ0eXAiOiJCZWFyZXIiLCJhenAiOiIzWjE5LTNzYnN2MU9KSDBEd2l2UWkyYmZVSzdsSlNFdSIsInNlc3Npb25fc3RhdGUiOiI3ZWZjNDU0My1hZWM1LTRlZjAtODRmOC04NTEyMzE0OGViNGUiLCJhY3IiOiIxIiwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyJhY2NvdW50Ijp7InJvbGVzIjpbIm1hbmFnZS1hY2NvdW50IiwibWFuYWdlLWFjY291bnQtbGlua3MiLCJ2aWV3LXByb2ZpbGUiXX19LCJzY29wZSI6InByb2ZpbGUgZW1haWwiLCJjbGllbnRJZCI6IjNaMTktM3Nic3YxT0pIMER3aXZRaTJiZlVLN2xKU0V1IiwiY2xpZW50SG9zdCI6IjEwLjEzMi4wLjM0IiwiZW1haWxfdmVyaWZpZWQiOmZhbHNlLCJvcmdhbml6YXRpb24iOiJzb21lT3JnSWQxMjMiLCJwcmVmZXJyZWRfdXNlcm5hbWUiOiJzZXJ2aWNlLWFjY291bnQtM3oxOS0zc2JzdjFvamgwZHdpdnFpMmJmdWs3bGpzZXUiLCJjbGllbnRBZGRyZXNzIjoiMTAuMTMyLjAuMzQiLCJlbWFpbCI6InNlcnZpY2UtYWNjb3VudC0zejE5LTNzYnN2MW9qaDBkd2l2cWkyYmZ1azdsanNldUBwbGFjZWhvbGRlci5vcmcifQ.Sszc_AZ0MGf1MPQ0RKtMHoZW05mVJoR05dWuS9HqufKe_jr7qoyDS5-amMY-_hnQ3PpFW0A6QGXYhJEa6gny87ewM4LNh-A9VoBD3KTDOHIGf8b29Pa0e-t_DjQjf-KX-oWXLEQmV8ltE_cuMqBxG8eqat14s3ajZhfo5_n5XTghl4FKhC8o_LDbux-VjEphjvJOxHy3y20fHAKem3TLnHncsk4YirDX3P0hrLjzYQWjG24GeYz1biMH-r1Ti3z95Iwp8IhK-f0eIH5h_rCeTvG8U5n7PjWk9I0izVZpwYaKyOoysUICHK56FaRH9Yu6Ijwno6sbM5v1s3lqvO6tPg" + }, + { + "name": "X-Forwarded-Port", + "value": "443" + }, + { + "name": "Content-Length", + "value": "790" + }, + { + "name": "Accept", + "value": "*/*" + }, + { + "name": "X-Request-Id", + "value": "79e72b1704a72a4120b5b0cce9cd09e1" + }, + { + "name": "Accept-Encoding", + "value": "gzip, deflate" + }, + { + "name": ":method", + "value": "POST" + }, + { + "name": ":path", + "value": "/tapping/state" + }, + { + "name": ":authority", + "value": "trcc.stg.testr.io" + }, + { + "name": ":scheme", + "value": "http" + }, + { + "name": "x-request-start", + "value": "1590058952.684" + }, + { + "name": "x-up9-source", + "value": "10.48.1.44" + }, + { + "name": "x-up9-destination", + "value": "10.48.0.155:5000" + } + ], + "queryString": [], + "headersSize": -1, + "bodySize": -1, + "postData": { + "mimeType": "", + "text": "{\"data\": [{\"id\": \"2a45b7bd-3615-11ea-b692-42010a8400bd_trdemo_trdemo-client\", \"instance_id\": \"trdemo-client-66d7d586b6-9t7tm\", \"ip\": \"10.16.1.199\", \"type\": \"passive\", \"agentName\": \"haiut-samcust1105\"}, {\"id\": \"2a45b7bd-3615-11ea-b692-42010a8400bd_trdemo_trdemo-flights\", \"instance_id\": \"trdemo-flights-85bfbd8f95-7nnn6\", \"ip\": \"10.16.1.198\", \"type\": \"passive\", \"agentName\": \"haiut-samcust1105\"}, {\"id\": \"2a45b7bd-3615-11ea-b692-42010a8400bd_trdemo_trdemo-shoppingcart\", \"instance_id\": \"trdemo-shoppingcart-67bd48fdf8-92f49\", \"ip\": \"10.16.1.193\", \"type\": \"passive\", \"agentName\": \"haiut-samcust1105\"}, {\"id\": \"2a45b7bd-3615-11ea-b692-42010a8400bd_trdemo_trdemo-users\", \"instance_id\": \"trdemo-users-5bc9c964bc-m257k\", \"ip\": \"10.16.1.196\", \"type\": \"passive\", \"agentName\": \"haiut-samcust1105\"}]}" + } + }, + "response": { + "status": 200, + "statusText": "OK", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "Access-Control-Allow-Origin", + "value": "https://stg.testr.io" + }, + { + "name": "Access-Control-Allow-Credentials", + "value": "true" + }, + { + "name": "Vary", + "value": "Origin" + }, + { + "name": "Server", + "value": "gunicorn/19.9.0" + }, + { + "name": "Date", + "value": "Thu, 21 May 2020 11:02:32 GMT" + }, + { + "name": "Connection", + "value": "keep-alive" + }, + { + "name": "Content-Type", + "value": "application/json" + }, + { + "name": "Content-Length", + "value": "3" + }, + { + "name": ":status", + "value": "200" + }, + { + "name": "duration_ms", + "value": "1" + } + ], + "content": { + "size": 3, + "mimeType": "", + "text": "[]\n" + }, + "redirectURL": "", + "headersSize": -1, + "bodySize": 3 + }, + "cache": {}, + "timings": { + "send": -1, + "wait": -1, + "receive": 1 + } + }, + { + "startedDateTime": "2020-05-21T11:02:32.453000+00:00", + "time": 1, + "request": { + "method": "GET", + "url": "http://trcc-api-service/models/aws_kong5/suites/all/runs", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "X-Forwarded-Host", + "value": "trcc.stg.testr.io" + }, + { + "name": "Dnt", + "value": "1" + }, + { + "name": "Authorization", + "value": "bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJqSEZ0R1dybjJpY084VnpDYXpaZWUyakpFc2drY1k5ZzhpN2FTbGtielRnIn0.eyJleHAiOjE1OTAwNTkyNDMsImlhdCI6MTU5MDA1ODk0MywiYXV0aF90aW1lIjoxNTkwMDU4NjUxLCJqdGkiOiI1ODYzNmRiMy0wN2IxLTQ2ZDYtOGNiNS01MzEzMDFlZGY4MGYiLCJpc3MiOiJodHRwczovL2F1dGguc3RnLnRlc3RyLmlvL2F1dGgvcmVhbG1zL3Rlc3RyIiwiYXVkIjoiYWNjb3VudCIsInN1YiI6IjBlYWU4ZmFjLTgyYTEtNDUwNi05MWQ0LTA4ZDYxZTI2NWY1NCIsInR5cCI6IkJlYXJlciIsImF6cCI6InJlYWN0LWNsaWVudCIsIm5vbmNlIjoiNTRjMTM5OTktMDg0NS00OWNmLWI1OTAtOTY1ZThjNWI0NmJlIiwic2Vzc2lvbl9zdGF0ZSI6ImY3YjEyOTM1LThmMTctNDc1Zi04NmRhLWQ4NjFjZTYxNWZjNyIsImFjciI6IjAiLCJhbGxvd2VkLW9yaWdpbnMiOlsiaHR0cHM6Ly9zdGcudGVzdHIuaW8iLCJjaHJvbWUtZXh0ZW5zaW9uOi8vbmFkZ2VsamVtbWJna2xkaGNwYWZqbXBtYXBpcGdsY20iLCJodHRwOi8vbG9jYWxob3N0OjMwMDAiXSwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyJhY2NvdW50Ijp7InJvbGVzIjpbIm1hbmFnZS1hY2NvdW50IiwibWFuYWdlLWFjY291bnQtbGlua3MiLCJ2aWV3LXByb2ZpbGUiXX19LCJzY29wZSI6Im9wZW5pZCBwcm9maWxlIGVtYWlsIiwiZ3JvdXBfbWVtYmVyc2hpcCI6WyJzb21lT3JnSWQxMjMiXSwiZW1haWxfdmVyaWZpZWQiOnRydWUsIm5hbWUiOiJSYW1pIEJlcm1hbiIsInByZWZlcnJlZF91c2VybmFtZSI6InJhbWkuYmVybWFuQHVwOS5jb20iLCJnaXZlbl9uYW1lIjoiUmFtaSIsImZhbWlseV9uYW1lIjoiQmVybWFuIiwiZ3JvdXBfc3ViZG9tYWluIjoic29tZU9yZ0lkMTIzIiwiZW1haWwiOiJyYW1pLmJlcm1hbkB1cDkuY29tIiwiZmVhdHVyZUZsYWdzIjp7ImVkaXRFbmRwb2ludFZhcmlhYmxlcyI6dHJ1ZSwic2lkZU5hdmlnYXRpb24iOnRydWV9fQ.UEDsnoo9A8CbdIYKXoOrAAq6y2K7Aoqf-PplHhXFoVep9ewwA9qBjXqgn0fK9cnE_KfZKUcX_cy1HDhhdIfR_aHpbWWhQ3gxISkE6ALka18JIrUv7bFaHKio6eEP6tgn34QVP8aQVEB3e3g7h3dLuUvZ1xIMnt6fy03tD3KgiQlvdHwg5FhJLosiCrHgboEqN5VH_f_2QF33XiXTkDG1e-AOEnIIWqloMDTUPZEUvEo_KH68lB0Uu23YhhI5gPAuKQVb_UjFWcF_6Ysvk3C3j0cuk09DZ7YEI1u-bKp58LHnsS6gqNFQxy-CDlZ8Oht5d2I3LbwZZxHzMixzzFzJCA" + }, + { + "name": "User-Agent", + "value": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36" + }, + { + "name": "Sec-Fetch-Site", + "value": "same-site" + }, + { + "name": "X-Request-Id", + "value": "d93b3b1e16a17fc5590893bf9491ea1a" + }, + { + "name": "X-Forwarded-For", + "value": "10.132.0.11" + }, + { + "name": "X-Forwarded-Port", + "value": "443" + }, + { + "name": "Accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "Sec-Fetch-Dest", + "value": "empty" + }, + { + "name": "X-Scheme", + "value": "https" + }, + { + "name": "Origin", + "value": "https://stg.testr.io" + }, + { + "name": "Sec-Fetch-Mode", + "value": "cors" + }, + { + "name": "X-Real-Ip", + "value": "10.132.0.11" + }, + { + "name": "X-Forwarded-Proto", + "value": "https" + }, + { + "name": "Referer", + "value": "https://stg.testr.io/someOrgId123/model/aws_kong5/lastResults/systems/all/runs" + }, + { + "name": "Accept-Encoding", + "value": "gzip, deflate, br" + }, + { + "name": "Accept-Language", + "value": "en-IL,en-US;q=0.9,en;q=0.8,he;q=0.7,pl;q=0.6,ru;q=0.5" + }, + { + "name": ":method", + "value": "GET" + }, + { + "name": ":path", + "value": "/models/aws_kong5/suites/all/runs" + }, + { + "name": ":authority", + "value": "trcc.stg.testr.io" + }, + { + "name": ":scheme", + "value": "http" + }, + { + "name": "x-request-start", + "value": "1590058952.453" + }, + { + "name": "x-up9-source", + "value": "10.48.1.44" + }, + { + "name": "x-up9-destination", + "value": "10.48.2.97:5000" + } + ], + "queryString": [], + "headersSize": -1, + "bodySize": -1 + }, + "response": { + "status": 200, + "statusText": "OK", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "Content-Type", + "value": "application/json" + }, + { + "name": "Content-Length", + "value": "3" + }, + { + "name": "Access-Control-Allow-Origin", + "value": "https://stg.testr.io" + }, + { + "name": "Access-Control-Allow-Credentials", + "value": "true" + }, + { + "name": "Vary", + "value": "Origin" + }, + { + "name": "Server", + "value": "gunicorn/19.9.0" + }, + { + "name": "Date", + "value": "Thu, 21 May 2020 11:02:32 GMT" + }, + { + "name": "Connection", + "value": "keep-alive" + }, + { + "name": ":status", + "value": "200" + }, + { + "name": "duration_ms", + "value": "1" + } + ], + "content": { + "size": 3, + "mimeType": "", + "text": "[]\n" + }, + "redirectURL": "", + "headersSize": -1, + "bodySize": 3 + }, + "cache": {}, + "timings": { + "send": -1, + "wait": -1, + "receive": 1 + } + }, + { + "startedDateTime": "2020-05-21T11:02:32.687000+00:00", + "time": 1, + "request": { + "method": "GET", + "url": "http://trcc-api-service/models/bookstack-remote/blacklist", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "X-Real-Ip", + "value": "10.132.0.30" + }, + { + "name": "X-Forwarded-For", + "value": "10.132.0.30" + }, + { + "name": "X-Forwarded-Port", + "value": "443" + }, + { + "name": "User-Agent", + "value": "python-requests/2.23.0" + }, + { + "name": "Accept", + "value": "*/*" + }, + { + "name": "X-Request-Id", + "value": "3b8e3b7270fdacdc1e5b2785615f6d17" + }, + { + "name": "X-Forwarded-Host", + "value": "trcc.stg.testr.io" + }, + { + "name": "X-Forwarded-Proto", + "value": "https" + }, + { + "name": "X-Scheme", + "value": "https" + }, + { + "name": "Accept-Encoding", + "value": "gzip, deflate" + }, + { + "name": "Authorization", + "value": "Bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJqSEZ0R1dybjJpY084VnpDYXpaZWUyakpFc2drY1k5ZzhpN2FTbGtielRnIn0.eyJleHAiOjE1OTAwNTkxNDIsImlhdCI6MTU5MDA1ODg0MiwianRpIjoiYWE1OWJkMWMtMGJmMy00M2U1LWIwMDctMDg3MDAwNzVlY2M3IiwiaXNzIjoiaHR0cHM6Ly9hdXRoLnN0Zy50ZXN0ci5pby9hdXRoL3JlYWxtcy90ZXN0ciIsImF1ZCI6ImFjY291bnQiLCJzdWIiOiI0YWFkZWM0Mi01OWE5LTRmZDUtODI3NC1lZWI5NDNmODQyNmUiLCJ0eXAiOiJCZWFyZXIiLCJhenAiOiIzWjE5LTNzYnN2MU9KSDBEd2l2UWkyYmZVSzdsSlNFdSIsInNlc3Npb25fc3RhdGUiOiJhYjU1ODNmNC00NmU3LTRhYmEtYTllZS1lODQzZDlmOGVlMDciLCJhY3IiOiIxIiwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyJhY2NvdW50Ijp7InJvbGVzIjpbIm1hbmFnZS1hY2NvdW50IiwibWFuYWdlLWFjY291bnQtbGlua3MiLCJ2aWV3LXByb2ZpbGUiXX19LCJzY29wZSI6InByb2ZpbGUgZW1haWwiLCJjbGllbnRJZCI6IjNaMTktM3Nic3YxT0pIMER3aXZRaTJiZlVLN2xKU0V1IiwiY2xpZW50SG9zdCI6IjEwLjQ4LjEuMSIsImVtYWlsX3ZlcmlmaWVkIjpmYWxzZSwib3JnYW5pemF0aW9uIjoic29tZU9yZ0lkMTIzIiwicHJlZmVycmVkX3VzZXJuYW1lIjoic2VydmljZS1hY2NvdW50LTN6MTktM3Nic3Yxb2poMGR3aXZxaTJiZnVrN2xqc2V1IiwiY2xpZW50QWRkcmVzcyI6IjEwLjQ4LjEuMSIsImVtYWlsIjoic2VydmljZS1hY2NvdW50LTN6MTktM3Nic3Yxb2poMGR3aXZxaTJiZnVrN2xqc2V1QHBsYWNlaG9sZGVyLm9yZyJ9.ltF1H_vfQ4aEtR_gAKwSO7iPPqAg5SojS-k4_MPUJ_IdRf13xLV2C-Qis6jIwqZHgdJmR-TShyxoRz7-ekMWzCToyHFK-YRFja6ggoZiq2DAdYgFdXwf_yljGC1A2n5hg_WPIfbLE732QmnmeMM7K1ovLyb27TqpTm0Dr_WRyoRSTUHRGneHjZ9LKhpLheODb0dhS_YpPc60hZL4YN2j7U6y6VqNDS8F_IHZHNKTh0IgsS5uFq1mJ5l_MHaNOQEjcM3tzwKL9tBnPEHBk10YWQTmuNtUvs4L-eyzkLAMpNDiW7xv3cGSHj2gCC7P7gEC3Z3ddFcvl5frk-1OU4xGLg" + }, + { + "name": ":method", + "value": "GET" + }, + { + "name": ":path", + "value": "/models/bookstack-remote/blacklist" + }, + { + "name": ":authority", + "value": "trcc.stg.testr.io" + }, + { + "name": ":scheme", + "value": "http" + }, + { + "name": "x-request-start", + "value": "1590058952.687" + }, + { + "name": "x-up9-source", + "value": "10.48.1.44" + }, + { + "name": "x-up9-destination", + "value": "10.48.0.155:5000" + } + ], + "queryString": [], + "headersSize": -1, + "bodySize": -1 + }, + "response": { + "status": 200, + "statusText": "OK", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "Vary", + "value": "Origin" + }, + { + "name": "Server", + "value": "gunicorn/19.9.0" + }, + { + "name": "Date", + "value": "Thu, 21 May 2020 11:02:32 GMT" + }, + { + "name": "Connection", + "value": "keep-alive" + }, + { + "name": "Content-Type", + "value": "application/json" + }, + { + "name": "Content-Length", + "value": "3" + }, + { + "name": "Access-Control-Allow-Origin", + "value": "https://stg.testr.io" + }, + { + "name": "Access-Control-Allow-Credentials", + "value": "true" + }, + { + "name": ":status", + "value": "200" + }, + { + "name": "duration_ms", + "value": "1" + } + ], + "content": { + "size": 3, + "mimeType": "", + "text": "[]\n" + }, + "redirectURL": "", + "headersSize": -1, + "bodySize": 3 + }, + "cache": {}, + "timings": { + "send": -1, + "wait": -1, + "receive": 1 + } + }, + { + "startedDateTime": "2020-05-21T11:02:32.702000+00:00", + "time": 1, + "request": { + "method": "GET", + "url": "http://trcc-api-service/models/regression-04-05-20/blacklist", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "X-Forwarded-Host", + "value": "trcc.stg.testr.io" + }, + { + "name": "X-Forwarded-Port", + "value": "443" + }, + { + "name": "X-Forwarded-Proto", + "value": "https" + }, + { + "name": "X-Scheme", + "value": "https" + }, + { + "name": "User-Agent", + "value": "python-requests/2.23.0" + }, + { + "name": "Authorization", + "value": "Bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJqSEZ0R1dybjJpY084VnpDYXpaZWUyakpFc2drY1k5ZzhpN2FTbGtielRnIn0.eyJleHAiOjE1OTAwNTkxNDIsImlhdCI6MTU5MDA1ODg0MiwianRpIjoiYWE1OWJkMWMtMGJmMy00M2U1LWIwMDctMDg3MDAwNzVlY2M3IiwiaXNzIjoiaHR0cHM6Ly9hdXRoLnN0Zy50ZXN0ci5pby9hdXRoL3JlYWxtcy90ZXN0ciIsImF1ZCI6ImFjY291bnQiLCJzdWIiOiI0YWFkZWM0Mi01OWE5LTRmZDUtODI3NC1lZWI5NDNmODQyNmUiLCJ0eXAiOiJCZWFyZXIiLCJhenAiOiIzWjE5LTNzYnN2MU9KSDBEd2l2UWkyYmZVSzdsSlNFdSIsInNlc3Npb25fc3RhdGUiOiJhYjU1ODNmNC00NmU3LTRhYmEtYTllZS1lODQzZDlmOGVlMDciLCJhY3IiOiIxIiwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyJhY2NvdW50Ijp7InJvbGVzIjpbIm1hbmFnZS1hY2NvdW50IiwibWFuYWdlLWFjY291bnQtbGlua3MiLCJ2aWV3LXByb2ZpbGUiXX19LCJzY29wZSI6InByb2ZpbGUgZW1haWwiLCJjbGllbnRJZCI6IjNaMTktM3Nic3YxT0pIMER3aXZRaTJiZlVLN2xKU0V1IiwiY2xpZW50SG9zdCI6IjEwLjQ4LjEuMSIsImVtYWlsX3ZlcmlmaWVkIjpmYWxzZSwib3JnYW5pemF0aW9uIjoic29tZU9yZ0lkMTIzIiwicHJlZmVycmVkX3VzZXJuYW1lIjoic2VydmljZS1hY2NvdW50LTN6MTktM3Nic3Yxb2poMGR3aXZxaTJiZnVrN2xqc2V1IiwiY2xpZW50QWRkcmVzcyI6IjEwLjQ4LjEuMSIsImVtYWlsIjoic2VydmljZS1hY2NvdW50LTN6MTktM3Nic3Yxb2poMGR3aXZxaTJiZnVrN2xqc2V1QHBsYWNlaG9sZGVyLm9yZyJ9.ltF1H_vfQ4aEtR_gAKwSO7iPPqAg5SojS-k4_MPUJ_IdRf13xLV2C-Qis6jIwqZHgdJmR-TShyxoRz7-ekMWzCToyHFK-YRFja6ggoZiq2DAdYgFdXwf_yljGC1A2n5hg_WPIfbLE732QmnmeMM7K1ovLyb27TqpTm0Dr_WRyoRSTUHRGneHjZ9LKhpLheODb0dhS_YpPc60hZL4YN2j7U6y6VqNDS8F_IHZHNKTh0IgsS5uFq1mJ5l_MHaNOQEjcM3tzwKL9tBnPEHBk10YWQTmuNtUvs4L-eyzkLAMpNDiW7xv3cGSHj2gCC7P7gEC3Z3ddFcvl5frk-1OU4xGLg" + }, + { + "name": "X-Forwarded-For", + "value": "10.132.0.30" + }, + { + "name": "X-Request-Id", + "value": "17f04e52f6383542d6421c0c4492b9e9" + }, + { + "name": "X-Real-Ip", + "value": "10.132.0.30" + }, + { + "name": "Accept-Encoding", + "value": "gzip, deflate" + }, + { + "name": "Accept", + "value": "*/*" + }, + { + "name": ":method", + "value": "GET" + }, + { + "name": ":path", + "value": "/models/regression-04-05-20/blacklist" + }, + { + "name": ":authority", + "value": "trcc.stg.testr.io" + }, + { + "name": ":scheme", + "value": "http" + }, + { + "name": "x-request-start", + "value": "1590058952.702" + }, + { + "name": "x-up9-source", + "value": "10.48.1.44" + }, + { + "name": "x-up9-destination", + "value": "10.48.0.155:5000" + } + ], + "queryString": [], + "headersSize": -1, + "bodySize": -1 + }, + "response": { + "status": 200, + "statusText": "OK", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "Content-Length", + "value": "3" + }, + { + "name": "Access-Control-Allow-Origin", + "value": "http://localhost:3000" + }, + { + "name": "Access-Control-Allow-Credentials", + "value": "true" + }, + { + "name": "Vary", + "value": "Origin" + }, + { + "name": "Server", + "value": "gunicorn/19.9.0" + }, + { + "name": "Date", + "value": "Thu, 21 May 2020 11:02:32 GMT" + }, + { + "name": "Connection", + "value": "keep-alive" + }, + { + "name": "Content-Type", + "value": "application/json" + }, + { + "name": ":status", + "value": "200" + }, + { + "name": "duration_ms", + "value": "1" + } + ], + "content": { + "size": 3, + "mimeType": "", + "text": "[]\n" + }, + "redirectURL": "", + "headersSize": -1, + "bodySize": 3 + }, + "cache": {}, + "timings": { + "send": -1, + "wait": -1, + "receive": 1 + } + }, + { + "startedDateTime": "2020-05-21T11:02:32.702000+00:00", + "time": 1, + "request": { + "method": "GET", + "url": "http://trcc-api-service/models/up9_011401/blacklist", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "X-Forwarded-Port", + "value": "443" + }, + { + "name": "User-Agent", + "value": "python-requests/2.23.0" + }, + { + "name": "Accept-Encoding", + "value": "gzip, deflate" + }, + { + "name": "Accept", + "value": "*/*" + }, + { + "name": "X-Real-Ip", + "value": "10.132.0.30" + }, + { + "name": "X-Forwarded-Host", + "value": "trcc.stg.testr.io" + }, + { + "name": "X-Scheme", + "value": "https" + }, + { + "name": "Authorization", + "value": "Bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJqSEZ0R1dybjJpY084VnpDYXpaZWUyakpFc2drY1k5ZzhpN2FTbGtielRnIn0.eyJleHAiOjE1OTAwNTkxNDIsImlhdCI6MTU5MDA1ODg0MiwianRpIjoiYWE1OWJkMWMtMGJmMy00M2U1LWIwMDctMDg3MDAwNzVlY2M3IiwiaXNzIjoiaHR0cHM6Ly9hdXRoLnN0Zy50ZXN0ci5pby9hdXRoL3JlYWxtcy90ZXN0ciIsImF1ZCI6ImFjY291bnQiLCJzdWIiOiI0YWFkZWM0Mi01OWE5LTRmZDUtODI3NC1lZWI5NDNmODQyNmUiLCJ0eXAiOiJCZWFyZXIiLCJhenAiOiIzWjE5LTNzYnN2MU9KSDBEd2l2UWkyYmZVSzdsSlNFdSIsInNlc3Npb25fc3RhdGUiOiJhYjU1ODNmNC00NmU3LTRhYmEtYTllZS1lODQzZDlmOGVlMDciLCJhY3IiOiIxIiwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyJhY2NvdW50Ijp7InJvbGVzIjpbIm1hbmFnZS1hY2NvdW50IiwibWFuYWdlLWFjY291bnQtbGlua3MiLCJ2aWV3LXByb2ZpbGUiXX19LCJzY29wZSI6InByb2ZpbGUgZW1haWwiLCJjbGllbnRJZCI6IjNaMTktM3Nic3YxT0pIMER3aXZRaTJiZlVLN2xKU0V1IiwiY2xpZW50SG9zdCI6IjEwLjQ4LjEuMSIsImVtYWlsX3ZlcmlmaWVkIjpmYWxzZSwib3JnYW5pemF0aW9uIjoic29tZU9yZ0lkMTIzIiwicHJlZmVycmVkX3VzZXJuYW1lIjoic2VydmljZS1hY2NvdW50LTN6MTktM3Nic3Yxb2poMGR3aXZxaTJiZnVrN2xqc2V1IiwiY2xpZW50QWRkcmVzcyI6IjEwLjQ4LjEuMSIsImVtYWlsIjoic2VydmljZS1hY2NvdW50LTN6MTktM3Nic3Yxb2poMGR3aXZxaTJiZnVrN2xqc2V1QHBsYWNlaG9sZGVyLm9yZyJ9.ltF1H_vfQ4aEtR_gAKwSO7iPPqAg5SojS-k4_MPUJ_IdRf13xLV2C-Qis6jIwqZHgdJmR-TShyxoRz7-ekMWzCToyHFK-YRFja6ggoZiq2DAdYgFdXwf_yljGC1A2n5hg_WPIfbLE732QmnmeMM7K1ovLyb27TqpTm0Dr_WRyoRSTUHRGneHjZ9LKhpLheODb0dhS_YpPc60hZL4YN2j7U6y6VqNDS8F_IHZHNKTh0IgsS5uFq1mJ5l_MHaNOQEjcM3tzwKL9tBnPEHBk10YWQTmuNtUvs4L-eyzkLAMpNDiW7xv3cGSHj2gCC7P7gEC3Z3ddFcvl5frk-1OU4xGLg" + }, + { + "name": "X-Request-Id", + "value": "a1a7fdaccb8db786322b1fc0fed7c92d" + }, + { + "name": "X-Forwarded-For", + "value": "10.132.0.30" + }, + { + "name": "X-Forwarded-Proto", + "value": "https" + }, + { + "name": ":method", + "value": "GET" + }, + { + "name": ":path", + "value": "/models/up9_011401/blacklist" + }, + { + "name": ":authority", + "value": "trcc.stg.testr.io" + }, + { + "name": ":scheme", + "value": "http" + }, + { + "name": "x-request-start", + "value": "1590058952.702" + }, + { + "name": "x-up9-source", + "value": "10.48.1.44" + }, + { + "name": "x-up9-destination", + "value": "10.48.0.155:5000" + } + ], + "queryString": [], + "headersSize": -1, + "bodySize": -1 + }, + "response": { + "status": 200, + "statusText": "OK", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "Content-Type", + "value": "application/json" + }, + { + "name": "Content-Length", + "value": "3" + }, + { + "name": "Access-Control-Allow-Origin", + "value": "http://localhost:3000" + }, + { + "name": "Access-Control-Allow-Credentials", + "value": "true" + }, + { + "name": "Vary", + "value": "Origin" + }, + { + "name": "Server", + "value": "gunicorn/19.9.0" + }, + { + "name": "Date", + "value": "Thu, 21 May 2020 11:02:32 GMT" + }, + { + "name": "Connection", + "value": "keep-alive" + }, + { + "name": ":status", + "value": "200" + }, + { + "name": "duration_ms", + "value": "1" + } + ], + "content": { + "size": 3, + "mimeType": "", + "text": "[]\n" + }, + "redirectURL": "", + "headersSize": -1, + "bodySize": 3 + }, + "cache": {}, + "timings": { + "send": -1, + "wait": -1, + "receive": 1 + } + }, + { + "startedDateTime": "2020-05-21T11:02:31.275000+00:00", + "time": 1428, + "request": { + "method": "GET", + "url": "http://trcc-api-service/proxies/local", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "X-Real-Ip", + "value": "10.132.0.34" + }, + { + "name": "X-Forwarded-Proto", + "value": "https" + }, + { + "name": "X-Scheme", + "value": "https" + }, + { + "name": "Sec-Fetch-Dest", + "value": "empty" + }, + { + "name": "Cookie", + "value": "_ga=GA1.2.780780214.1589122353; _gid=GA1.2.2003763308.1589719109; intercom-session-gcndx9tp=MklzblNNY05RODJSdjUrdzFnMm8wWE1neTNJYkJRbDBHWVlOdzh5T0hONUJCaGw1ZTlMT1lZNTAvYkdsc1pTdC0tZ1V3TEtXVnpFdkJ6NllYSHpGTW15QT09--8ac73e1394e1c2f8d9bffebbbc1debcf06e4dcc3" + }, + { + "name": "Sec-Fetch-Site", + "value": "none" + }, + { + "name": "Sec-Fetch-Mode", + "value": "cors" + }, + { + "name": "X-Request-Id", + "value": "7fc82c59e6dccfb1bbb97fbd0f1b9a50" + }, + { + "name": "X-Forwarded-Host", + "value": "trcc.stg.testr.io" + }, + { + "name": "User-Agent", + "value": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36" + }, + { + "name": "Accept", + "value": "*/*" + }, + { + "name": "Accept-Language", + "value": "en-US,en;q=0.9" + }, + { + "name": "X-Forwarded-For", + "value": "10.132.0.34" + }, + { + "name": "X-Forwarded-Port", + "value": "443" + }, + { + "name": "Authorization", + "value": "bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJqSEZ0R1dybjJpY084VnpDYXpaZWUyakpFc2drY1k5ZzhpN2FTbGtielRnIn0.eyJleHAiOjE1OTAwNTkxNjYsImlhdCI6MTU5MDA1ODg2NiwiYXV0aF90aW1lIjoxNTg5OTU4NDcwLCJqdGkiOiJiNWVhOWVkYS1iZGIwLTQzOTUtOWYyZi1jMWNkYzNmZDRkZjYiLCJpc3MiOiJodHRwczovL2F1dGguc3RnLnRlc3RyLmlvL2F1dGgvcmVhbG1zL3Rlc3RyIiwiYXVkIjoiYWNjb3VudCIsInN1YiI6ImU4NzAxMDZjLWJjYjItNDQxMy05Y2Q2LTUwMTZiNTUxMDRlYiIsInR5cCI6IkJlYXJlciIsImF6cCI6InJlYWN0LWNsaWVudCIsIm5vbmNlIjoiNTZkNzJmNzMtNzVhOC00NzdlLTlkNjctZWVjYmNkZmJkNzYxIiwic2Vzc2lvbl9zdGF0ZSI6IjM2ZDc2MDAxLTE5M2EtNGQ5OS05MTIwLTZmNGZkMjEwZDAxMiIsImFjciI6IjAiLCJhbGxvd2VkLW9yaWdpbnMiOlsiaHR0cHM6Ly9zdGcudGVzdHIuaW8iLCJjaHJvbWUtZXh0ZW5zaW9uOi8vbmFkZ2VsamVtbWJna2xkaGNwYWZqbXBtYXBpcGdsY20iLCJodHRwOi8vbG9jYWxob3N0OjMwMDAiXSwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm1hbmFnZUZlYXR1cmVGbGFncyIsIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyJhY2NvdW50Ijp7InJvbGVzIjpbIm1hbmFnZS1hY2NvdW50IiwibWFuYWdlLWFjY291bnQtbGlua3MiLCJ2aWV3LXByb2ZpbGUiXX19LCJzY29wZSI6Im9wZW5pZCBwcm9maWxlIGVtYWlsIiwiZ3JvdXBfbWVtYmVyc2hpcCI6WyJzb21lT3JnSWQxMjMiXSwiZW1haWxfdmVyaWZpZWQiOnRydWUsIm5hbWUiOiJMaXJheiBZZWhlemtlbCIsInByZWZlcnJlZF91c2VybmFtZSI6ImxpcmF6eUB1cDkuY29tIiwiZ2l2ZW5fbmFtZSI6IkxpcmF6IiwiZmFtaWx5X25hbWUiOiJZZWhlemtlbCIsImdyb3VwX3N1YmRvbWFpbiI6InNvbWVPcmdJZDEyMyIsImVtYWlsIjoibGlyYXp5QHVwOS5jb20iLCJmZWF0dXJlRmxhZ3MiOnsiZWRpdEVuZHBvaW50VmFyaWFibGVzIjp0cnVlLCJzaWRlTmF2aWdhdGlvbiI6dHJ1ZX19.UtoOxWkLeLbutQDkjZloImIVXyYD2PyajFrKXefhUJhWBoeNPRwGeMAgH24oudwpHrCdnW58jWe0uAAiPyYiFr8O5mhGw-AtLqvv9R1I1RAoVyrOmRcZbJLKMTYy-NnJcVk1_KlPqW8e3VTz8q3gel9kLBJU5cjAm2KvDa2u_u65-Dyxa_nBO9tFCfGL4NdYqX3mp_9q058mB01OJo0n7sWNxEtX4AK5RzFSsVFqZoOG2HEu7JDzHBfA-wfqpsIg31-_rmrxjSrOunIrSzH5-zDbmbhob-Z541W9McjcEZN52SIhemIAf1dx-kOKXceNYlX8usOjOMIPG6WyOopYGQ" + }, + { + "name": "Accept-Encoding", + "value": "gzip, deflate, br" + }, + { + "name": ":method", + "value": "GET" + }, + { + "name": ":path", + "value": "/proxies/local" + }, + { + "name": ":authority", + "value": "trcc.stg.testr.io" + }, + { + "name": ":scheme", + "value": "http" + }, + { + "name": "x-request-start", + "value": "1590058951.275" + }, + { + "name": "x-up9-source", + "value": "10.48.1.44" + }, + { + "name": "x-up9-destination", + "value": "10.48.0.155:5000" + } + ], + "queryString": [], + "headersSize": -1, + "bodySize": -1 + }, + "response": { + "status": 404, + "statusText": "Not Found", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "Content-Type", + "value": "application/json" + }, + { + "name": "Content-Length", + "value": "150" + }, + { + "name": "Access-Control-Allow-Origin", + "value": "http://localhost:3000" + }, + { + "name": "Access-Control-Allow-Credentials", + "value": "true" + }, + { + "name": "Vary", + "value": "Origin" + }, + { + "name": "Server", + "value": "gunicorn/19.9.0" + }, + { + "name": "Date", + "value": "Thu, 21 May 2020 11:02:32 GMT" + }, + { + "name": "Connection", + "value": "keep-alive" + }, + { + "name": ":status", + "value": "404" + }, + { + "name": "duration_ms", + "value": "1428" + } + ], + "content": { + "size": 150, + "mimeType": "", + "text": "{\"message\":\"404 Not Found: The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again.\"}\n" + }, + "redirectURL": "", + "headersSize": -1, + "bodySize": 150 + }, + "cache": {}, + "timings": { + "send": -1, + "wait": -1, + "receive": 1428 + } + }, + { + "startedDateTime": "2020-05-21T11:02:32.703000+00:00", + "time": 1, + "request": { + "method": "GET", + "url": "http://trcc-api-service/models/ah-test-1704-01/blacklist", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "X-Real-Ip", + "value": "10.132.0.30" + }, + { + "name": "X-Forwarded-Proto", + "value": "https" + }, + { + "name": "X-Scheme", + "value": "https" + }, + { + "name": "Accept-Encoding", + "value": "gzip, deflate" + }, + { + "name": "Accept", + "value": "*/*" + }, + { + "name": "Authorization", + "value": "Bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJqSEZ0R1dybjJpY084VnpDYXpaZWUyakpFc2drY1k5ZzhpN2FTbGtielRnIn0.eyJleHAiOjE1OTAwNTkxNDIsImlhdCI6MTU5MDA1ODg0MiwianRpIjoiYWE1OWJkMWMtMGJmMy00M2U1LWIwMDctMDg3MDAwNzVlY2M3IiwiaXNzIjoiaHR0cHM6Ly9hdXRoLnN0Zy50ZXN0ci5pby9hdXRoL3JlYWxtcy90ZXN0ciIsImF1ZCI6ImFjY291bnQiLCJzdWIiOiI0YWFkZWM0Mi01OWE5LTRmZDUtODI3NC1lZWI5NDNmODQyNmUiLCJ0eXAiOiJCZWFyZXIiLCJhenAiOiIzWjE5LTNzYnN2MU9KSDBEd2l2UWkyYmZVSzdsSlNFdSIsInNlc3Npb25fc3RhdGUiOiJhYjU1ODNmNC00NmU3LTRhYmEtYTllZS1lODQzZDlmOGVlMDciLCJhY3IiOiIxIiwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyJhY2NvdW50Ijp7InJvbGVzIjpbIm1hbmFnZS1hY2NvdW50IiwibWFuYWdlLWFjY291bnQtbGlua3MiLCJ2aWV3LXByb2ZpbGUiXX19LCJzY29wZSI6InByb2ZpbGUgZW1haWwiLCJjbGllbnRJZCI6IjNaMTktM3Nic3YxT0pIMER3aXZRaTJiZlVLN2xKU0V1IiwiY2xpZW50SG9zdCI6IjEwLjQ4LjEuMSIsImVtYWlsX3ZlcmlmaWVkIjpmYWxzZSwib3JnYW5pemF0aW9uIjoic29tZU9yZ0lkMTIzIiwicHJlZmVycmVkX3VzZXJuYW1lIjoic2VydmljZS1hY2NvdW50LTN6MTktM3Nic3Yxb2poMGR3aXZxaTJiZnVrN2xqc2V1IiwiY2xpZW50QWRkcmVzcyI6IjEwLjQ4LjEuMSIsImVtYWlsIjoic2VydmljZS1hY2NvdW50LTN6MTktM3Nic3Yxb2poMGR3aXZxaTJiZnVrN2xqc2V1QHBsYWNlaG9sZGVyLm9yZyJ9.ltF1H_vfQ4aEtR_gAKwSO7iPPqAg5SojS-k4_MPUJ_IdRf13xLV2C-Qis6jIwqZHgdJmR-TShyxoRz7-ekMWzCToyHFK-YRFja6ggoZiq2DAdYgFdXwf_yljGC1A2n5hg_WPIfbLE732QmnmeMM7K1ovLyb27TqpTm0Dr_WRyoRSTUHRGneHjZ9LKhpLheODb0dhS_YpPc60hZL4YN2j7U6y6VqNDS8F_IHZHNKTh0IgsS5uFq1mJ5l_MHaNOQEjcM3tzwKL9tBnPEHBk10YWQTmuNtUvs4L-eyzkLAMpNDiW7xv3cGSHj2gCC7P7gEC3Z3ddFcvl5frk-1OU4xGLg" + }, + { + "name": "X-Request-Id", + "value": "3615025baf089b2856a07968a6c0d08e" + }, + { + "name": "X-Forwarded-Port", + "value": "443" + }, + { + "name": "User-Agent", + "value": "python-requests/2.23.0" + }, + { + "name": "X-Forwarded-For", + "value": "10.132.0.30" + }, + { + "name": "X-Forwarded-Host", + "value": "trcc.stg.testr.io" + }, + { + "name": ":method", + "value": "GET" + }, + { + "name": ":path", + "value": "/models/ah-test-1704-01/blacklist" + }, + { + "name": ":authority", + "value": "trcc.stg.testr.io" + }, + { + "name": ":scheme", + "value": "http" + }, + { + "name": "x-request-start", + "value": "1590058952.703" + }, + { + "name": "x-up9-source", + "value": "10.48.1.44" + }, + { + "name": "x-up9-destination", + "value": "10.48.0.155:5000" + } + ], + "queryString": [], + "headersSize": -1, + "bodySize": -1 + }, + "response": { + "status": 200, + "statusText": "OK", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "Access-Control-Allow-Credentials", + "value": "true" + }, + { + "name": "Vary", + "value": "Origin" + }, + { + "name": "Server", + "value": "gunicorn/19.9.0" + }, + { + "name": "Date", + "value": "Thu, 21 May 2020 11:02:32 GMT" + }, + { + "name": "Connection", + "value": "keep-alive" + }, + { + "name": "Content-Type", + "value": "application/json" + }, + { + "name": "Content-Length", + "value": "3" + }, + { + "name": "Access-Control-Allow-Origin", + "value": "http://localhost:3000" + }, + { + "name": ":status", + "value": "200" + }, + { + "name": "duration_ms", + "value": "1" + } + ], + "content": { + "size": 3, + "mimeType": "", + "text": "[]\n" + }, + "redirectURL": "", + "headersSize": -1, + "bodySize": 3 + }, + "cache": {}, + "timings": { + "send": -1, + "wait": -1, + "receive": 1 + } + }, + { + "startedDateTime": "2020-05-21T11:02:32.704000+00:00", + "time": 1, + "request": { + "method": "GET", + "url": "http://trcc-api-service/models/rami-endpoints/blacklist", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "Authorization", + "value": "Bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJqSEZ0R1dybjJpY084VnpDYXpaZWUyakpFc2drY1k5ZzhpN2FTbGtielRnIn0.eyJleHAiOjE1OTAwNTkxNDIsImlhdCI6MTU5MDA1ODg0MiwianRpIjoiYWE1OWJkMWMtMGJmMy00M2U1LWIwMDctMDg3MDAwNzVlY2M3IiwiaXNzIjoiaHR0cHM6Ly9hdXRoLnN0Zy50ZXN0ci5pby9hdXRoL3JlYWxtcy90ZXN0ciIsImF1ZCI6ImFjY291bnQiLCJzdWIiOiI0YWFkZWM0Mi01OWE5LTRmZDUtODI3NC1lZWI5NDNmODQyNmUiLCJ0eXAiOiJCZWFyZXIiLCJhenAiOiIzWjE5LTNzYnN2MU9KSDBEd2l2UWkyYmZVSzdsSlNFdSIsInNlc3Npb25fc3RhdGUiOiJhYjU1ODNmNC00NmU3LTRhYmEtYTllZS1lODQzZDlmOGVlMDciLCJhY3IiOiIxIiwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyJhY2NvdW50Ijp7InJvbGVzIjpbIm1hbmFnZS1hY2NvdW50IiwibWFuYWdlLWFjY291bnQtbGlua3MiLCJ2aWV3LXByb2ZpbGUiXX19LCJzY29wZSI6InByb2ZpbGUgZW1haWwiLCJjbGllbnRJZCI6IjNaMTktM3Nic3YxT0pIMER3aXZRaTJiZlVLN2xKU0V1IiwiY2xpZW50SG9zdCI6IjEwLjQ4LjEuMSIsImVtYWlsX3ZlcmlmaWVkIjpmYWxzZSwib3JnYW5pemF0aW9uIjoic29tZU9yZ0lkMTIzIiwicHJlZmVycmVkX3VzZXJuYW1lIjoic2VydmljZS1hY2NvdW50LTN6MTktM3Nic3Yxb2poMGR3aXZxaTJiZnVrN2xqc2V1IiwiY2xpZW50QWRkcmVzcyI6IjEwLjQ4LjEuMSIsImVtYWlsIjoic2VydmljZS1hY2NvdW50LTN6MTktM3Nic3Yxb2poMGR3aXZxaTJiZnVrN2xqc2V1QHBsYWNlaG9sZGVyLm9yZyJ9.ltF1H_vfQ4aEtR_gAKwSO7iPPqAg5SojS-k4_MPUJ_IdRf13xLV2C-Qis6jIwqZHgdJmR-TShyxoRz7-ekMWzCToyHFK-YRFja6ggoZiq2DAdYgFdXwf_yljGC1A2n5hg_WPIfbLE732QmnmeMM7K1ovLyb27TqpTm0Dr_WRyoRSTUHRGneHjZ9LKhpLheODb0dhS_YpPc60hZL4YN2j7U6y6VqNDS8F_IHZHNKTh0IgsS5uFq1mJ5l_MHaNOQEjcM3tzwKL9tBnPEHBk10YWQTmuNtUvs4L-eyzkLAMpNDiW7xv3cGSHj2gCC7P7gEC3Z3ddFcvl5frk-1OU4xGLg" + }, + { + "name": "X-Request-Id", + "value": "e6f096161caab2818f99d74bef902e63" + }, + { + "name": "X-Real-Ip", + "value": "10.132.0.30" + }, + { + "name": "X-Forwarded-Proto", + "value": "https" + }, + { + "name": "X-Scheme", + "value": "https" + }, + { + "name": "Accept", + "value": "*/*" + }, + { + "name": "X-Forwarded-For", + "value": "10.132.0.30" + }, + { + "name": "X-Forwarded-Host", + "value": "trcc.stg.testr.io" + }, + { + "name": "X-Forwarded-Port", + "value": "443" + }, + { + "name": "User-Agent", + "value": "python-requests/2.23.0" + }, + { + "name": "Accept-Encoding", + "value": "gzip, deflate" + }, + { + "name": ":method", + "value": "GET" + }, + { + "name": ":path", + "value": "/models/rami-endpoints/blacklist" + }, + { + "name": ":authority", + "value": "trcc.stg.testr.io" + }, + { + "name": ":scheme", + "value": "http" + }, + { + "name": "x-request-start", + "value": "1590058952.704" + }, + { + "name": "x-up9-source", + "value": "10.48.1.44" + }, + { + "name": "x-up9-destination", + "value": "10.48.0.155:5000" + } + ], + "queryString": [], + "headersSize": -1, + "bodySize": -1 + }, + "response": { + "status": 200, + "statusText": "OK", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "Access-Control-Allow-Credentials", + "value": "true" + }, + { + "name": "Vary", + "value": "Origin" + }, + { + "name": "Server", + "value": "gunicorn/19.9.0" + }, + { + "name": "Date", + "value": "Thu, 21 May 2020 11:02:32 GMT" + }, + { + "name": "Connection", + "value": "keep-alive" + }, + { + "name": "Content-Type", + "value": "application/json" + }, + { + "name": "Content-Length", + "value": "3" + }, + { + "name": "Access-Control-Allow-Origin", + "value": "http://localhost:3000" + }, + { + "name": ":status", + "value": "200" + }, + { + "name": "duration_ms", + "value": "1" + } + ], + "content": { + "size": 3, + "mimeType": "", + "text": "[]\n" + }, + "redirectURL": "", + "headersSize": -1, + "bodySize": 3 + }, + "cache": {}, + "timings": { + "send": -1, + "wait": -1, + "receive": 1 + } + }, + { + "startedDateTime": "2020-05-21T11:02:32.704000+00:00", + "time": 1, + "request": { + "method": "GET", + "url": "http://trcc-api-service/models/aws_kong5/suites/all/runs", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "X-Forwarded-Proto", + "value": "https" + }, + { + "name": "Sec-Fetch-Mode", + "value": "cors" + }, + { + "name": "User-Agent", + "value": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36" + }, + { + "name": "Accept-Language", + "value": "en-IL,en-US;q=0.9,en;q=0.8,he;q=0.7,pl;q=0.6,ru;q=0.5" + }, + { + "name": "X-Forwarded-For", + "value": "10.132.0.11" + }, + { + "name": "Accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "X-Real-Ip", + "value": "10.132.0.11" + }, + { + "name": "Dnt", + "value": "1" + }, + { + "name": "Sec-Fetch-Site", + "value": "same-site" + }, + { + "name": "Sec-Fetch-Dest", + "value": "empty" + }, + { + "name": "X-Request-Id", + "value": "2165cd4e1c3e1741a0d32327ab823ebf" + }, + { + "name": "X-Scheme", + "value": "https" + }, + { + "name": "Authorization", + "value": "bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJqSEZ0R1dybjJpY084VnpDYXpaZWUyakpFc2drY1k5ZzhpN2FTbGtielRnIn0.eyJleHAiOjE1OTAwNTkyNDMsImlhdCI6MTU5MDA1ODk0MywiYXV0aF90aW1lIjoxNTkwMDU4NjUxLCJqdGkiOiI1ODYzNmRiMy0wN2IxLTQ2ZDYtOGNiNS01MzEzMDFlZGY4MGYiLCJpc3MiOiJodHRwczovL2F1dGguc3RnLnRlc3RyLmlvL2F1dGgvcmVhbG1zL3Rlc3RyIiwiYXVkIjoiYWNjb3VudCIsInN1YiI6IjBlYWU4ZmFjLTgyYTEtNDUwNi05MWQ0LTA4ZDYxZTI2NWY1NCIsInR5cCI6IkJlYXJlciIsImF6cCI6InJlYWN0LWNsaWVudCIsIm5vbmNlIjoiNTRjMTM5OTktMDg0NS00OWNmLWI1OTAtOTY1ZThjNWI0NmJlIiwic2Vzc2lvbl9zdGF0ZSI6ImY3YjEyOTM1LThmMTctNDc1Zi04NmRhLWQ4NjFjZTYxNWZjNyIsImFjciI6IjAiLCJhbGxvd2VkLW9yaWdpbnMiOlsiaHR0cHM6Ly9zdGcudGVzdHIuaW8iLCJjaHJvbWUtZXh0ZW5zaW9uOi8vbmFkZ2VsamVtbWJna2xkaGNwYWZqbXBtYXBpcGdsY20iLCJodHRwOi8vbG9jYWxob3N0OjMwMDAiXSwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyJhY2NvdW50Ijp7InJvbGVzIjpbIm1hbmFnZS1hY2NvdW50IiwibWFuYWdlLWFjY291bnQtbGlua3MiLCJ2aWV3LXByb2ZpbGUiXX19LCJzY29wZSI6Im9wZW5pZCBwcm9maWxlIGVtYWlsIiwiZ3JvdXBfbWVtYmVyc2hpcCI6WyJzb21lT3JnSWQxMjMiXSwiZW1haWxfdmVyaWZpZWQiOnRydWUsIm5hbWUiOiJSYW1pIEJlcm1hbiIsInByZWZlcnJlZF91c2VybmFtZSI6InJhbWkuYmVybWFuQHVwOS5jb20iLCJnaXZlbl9uYW1lIjoiUmFtaSIsImZhbWlseV9uYW1lIjoiQmVybWFuIiwiZ3JvdXBfc3ViZG9tYWluIjoic29tZU9yZ0lkMTIzIiwiZW1haWwiOiJyYW1pLmJlcm1hbkB1cDkuY29tIiwiZmVhdHVyZUZsYWdzIjp7ImVkaXRFbmRwb2ludFZhcmlhYmxlcyI6dHJ1ZSwic2lkZU5hdmlnYXRpb24iOnRydWV9fQ.UEDsnoo9A8CbdIYKXoOrAAq6y2K7Aoqf-PplHhXFoVep9ewwA9qBjXqgn0fK9cnE_KfZKUcX_cy1HDhhdIfR_aHpbWWhQ3gxISkE6ALka18JIrUv7bFaHKio6eEP6tgn34QVP8aQVEB3e3g7h3dLuUvZ1xIMnt6fy03tD3KgiQlvdHwg5FhJLosiCrHgboEqN5VH_f_2QF33XiXTkDG1e-AOEnIIWqloMDTUPZEUvEo_KH68lB0Uu23YhhI5gPAuKQVb_UjFWcF_6Ysvk3C3j0cuk09DZ7YEI1u-bKp58LHnsS6gqNFQxy-CDlZ8Oht5d2I3LbwZZxHzMixzzFzJCA" + }, + { + "name": "Origin", + "value": "https://stg.testr.io" + }, + { + "name": "Referer", + "value": "https://stg.testr.io/someOrgId123/model/aws_kong5/lastResults/systems/all/runs" + }, + { + "name": "Accept-Encoding", + "value": "gzip, deflate, br" + }, + { + "name": "X-Forwarded-Host", + "value": "trcc.stg.testr.io" + }, + { + "name": "X-Forwarded-Port", + "value": "443" + }, + { + "name": ":method", + "value": "GET" + }, + { + "name": ":path", + "value": "/models/aws_kong5/suites/all/runs" + }, + { + "name": ":authority", + "value": "trcc.stg.testr.io" + }, + { + "name": ":scheme", + "value": "http" + }, + { + "name": "x-request-start", + "value": "1590058952.704" + }, + { + "name": "x-up9-source", + "value": "10.48.1.44" + }, + { + "name": "x-up9-destination", + "value": "10.48.0.155:5000" + } + ], + "queryString": [], + "headersSize": -1, + "bodySize": -1 + }, + "response": { + "status": 200, + "statusText": "OK", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "Access-Control-Allow-Origin", + "value": "https://stg.testr.io" + }, + { + "name": "Access-Control-Allow-Credentials", + "value": "true" + }, + { + "name": "Vary", + "value": "Origin" + }, + { + "name": "Server", + "value": "gunicorn/19.9.0" + }, + { + "name": "Date", + "value": "Thu, 21 May 2020 11:02:32 GMT" + }, + { + "name": "Connection", + "value": "keep-alive" + }, + { + "name": "Content-Type", + "value": "application/json" + }, + { + "name": "Content-Length", + "value": "3" + }, + { + "name": ":status", + "value": "200" + }, + { + "name": "duration_ms", + "value": "1" + } + ], + "content": { + "size": 3, + "mimeType": "", + "text": "[]\n" + }, + "redirectURL": "", + "headersSize": -1, + "bodySize": 3 + }, + "cache": {}, + "timings": { + "send": -1, + "wait": -1, + "receive": 1 + } + }, + { + "startedDateTime": "2020-05-21T11:02:32.705000+00:00", + "time": 1, + "request": { + "method": "GET", + "url": "http://trcc-api-service/models/liraz_test_2105/suites/all/runs", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "X-Forwarded-Port", + "value": "443" + }, + { + "name": "User-Agent", + "value": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36" + }, + { + "name": "Sec-Fetch-Mode", + "value": "cors" + }, + { + "name": "Accept-Encoding", + "value": "gzip, deflate, br" + }, + { + "name": "Accept-Language", + "value": "en-US,en;q=0.9" + }, + { + "name": "X-Real-Ip", + "value": "10.132.0.22" + }, + { + "name": "X-Forwarded-For", + "value": "10.132.0.22" + }, + { + "name": "Sec-Fetch-Site", + "value": "cross-site" + }, + { + "name": "Referer", + "value": "http://localhost:3000/someOrgId123/model/liraz_test_2105/lastResults/systems/all/summary" + }, + { + "name": "X-Request-Id", + "value": "927b5a557b6e10ce29e9ae3554fbbe2b" + }, + { + "name": "X-Forwarded-Host", + "value": "trcc.stg.testr.io" + }, + { + "name": "X-Forwarded-Proto", + "value": "https" + }, + { + "name": "X-Scheme", + "value": "https" + }, + { + "name": "Accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "Authorization", + "value": "bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJqSEZ0R1dybjJpY084VnpDYXpaZWUyakpFc2drY1k5ZzhpN2FTbGtielRnIn0.eyJleHAiOjE1OTAwNTkxMTQsImlhdCI6MTU5MDA1ODgxNCwiYXV0aF90aW1lIjoxNTg5OTU4NDcwLCJqdGkiOiIyNzgxOTYyMy00Yjk5LTQ2MzQtOWZlNi02ZDRiNzYwNGU2ZmMiLCJpc3MiOiJodHRwczovL2F1dGguc3RnLnRlc3RyLmlvL2F1dGgvcmVhbG1zL3Rlc3RyIiwiYXVkIjoiYWNjb3VudCIsInN1YiI6ImU4NzAxMDZjLWJjYjItNDQxMy05Y2Q2LTUwMTZiNTUxMDRlYiIsInR5cCI6IkJlYXJlciIsImF6cCI6InJlYWN0LWNsaWVudCIsIm5vbmNlIjoiYzJiZTgwNGYtZjBiYS00ZWUxLTgyZWQtYmIzMTY5ZDBkYjU1Iiwic2Vzc2lvbl9zdGF0ZSI6IjM2ZDc2MDAxLTE5M2EtNGQ5OS05MTIwLTZmNGZkMjEwZDAxMiIsImFjciI6IjAiLCJhbGxvd2VkLW9yaWdpbnMiOlsiaHR0cHM6Ly9zdGcudGVzdHIuaW8iLCJjaHJvbWUtZXh0ZW5zaW9uOi8vbmFkZ2VsamVtbWJna2xkaGNwYWZqbXBtYXBpcGdsY20iLCJodHRwOi8vbG9jYWxob3N0OjMwMDAiXSwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm1hbmFnZUZlYXR1cmVGbGFncyIsIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyJhY2NvdW50Ijp7InJvbGVzIjpbIm1hbmFnZS1hY2NvdW50IiwibWFuYWdlLWFjY291bnQtbGlua3MiLCJ2aWV3LXByb2ZpbGUiXX19LCJzY29wZSI6Im9wZW5pZCBwcm9maWxlIGVtYWlsIiwiZ3JvdXBfbWVtYmVyc2hpcCI6WyJzb21lT3JnSWQxMjMiXSwiZW1haWxfdmVyaWZpZWQiOnRydWUsIm5hbWUiOiJMaXJheiBZZWhlemtlbCIsInByZWZlcnJlZF91c2VybmFtZSI6ImxpcmF6eUB1cDkuY29tIiwiZ2l2ZW5fbmFtZSI6IkxpcmF6IiwiZmFtaWx5X25hbWUiOiJZZWhlemtlbCIsImdyb3VwX3N1YmRvbWFpbiI6InNvbWVPcmdJZDEyMyIsImVtYWlsIjoibGlyYXp5QHVwOS5jb20iLCJmZWF0dXJlRmxhZ3MiOnsiZWRpdEVuZHBvaW50VmFyaWFibGVzIjp0cnVlLCJzaWRlTmF2aWdhdGlvbiI6dHJ1ZX19.KdLz7jeIr8HaST4FpJROrg6Sp-o1Nl5dU2hIbNCA0FEY-jmaoubiOlz6p7QthTJ8t-S0R_qdZtd7rXf249L6wGG_A6rriZhH41Fxhyrb0ig8OVrQp-sepv_AUf7GEIGYgpYIPFnZ6G3Dkq1aY9NzLXruh7fly_ZRkRlzF_wb1vt5NRJz3xeMrj82BOJJmUpv08AYYQhnyjKiBp7rgrNTTBejaFBozsJgXGkIi-DZfv862tgFhvPNuXsqKO5iOxv9nApuQJ2O4knVB1ag7tqB1xQcvBdkZt9gG1VVkpWsM_2j5C9cBwOuPRgHZhpZuT_YNfB4ITefGV1aYfRF-cjnug" + }, + { + "name": "Origin", + "value": "http://localhost:3000" + }, + { + "name": "Sec-Fetch-Dest", + "value": "empty" + }, + { + "name": ":method", + "value": "GET" + }, + { + "name": ":path", + "value": "/models/liraz_test_2105/suites/all/runs" + }, + { + "name": ":authority", + "value": "trcc.stg.testr.io" + }, + { + "name": ":scheme", + "value": "http" + }, + { + "name": "x-request-start", + "value": "1590058952.705" + }, + { + "name": "x-up9-source", + "value": "10.48.1.44" + }, + { + "name": "x-up9-destination", + "value": "10.48.0.155:5000" + } + ], + "queryString": [], + "headersSize": -1, + "bodySize": -1 + }, + "response": { + "status": 200, + "statusText": "OK", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "Access-Control-Allow-Origin", + "value": "http://localhost:3000" + }, + { + "name": "Access-Control-Allow-Credentials", + "value": "true" + }, + { + "name": "Vary", + "value": "Origin" + }, + { + "name": "Server", + "value": "gunicorn/19.9.0" + }, + { + "name": "Date", + "value": "Thu, 21 May 2020 11:02:32 GMT" + }, + { + "name": "Connection", + "value": "keep-alive" + }, + { + "name": "Content-Type", + "value": "application/json" + }, + { + "name": "Content-Length", + "value": "3" + }, + { + "name": ":status", + "value": "200" + }, + { + "name": "duration_ms", + "value": "1" + } + ], + "content": { + "size": 3, + "mimeType": "", + "text": "[]\n" + }, + "redirectURL": "", + "headersSize": -1, + "bodySize": 3 + }, + "cache": {}, + "timings": { + "send": -1, + "wait": -1, + "receive": 1 + } + }, + { + "startedDateTime": "2020-05-21T11:02:32.705000+00:00", + "time": 1, + "request": { + "method": "GET", + "url": "http://trcc-api-service/models/aaa/blacklist", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "X-Real-Ip", + "value": "10.132.0.30" + }, + { + "name": "X-Forwarded-For", + "value": "10.132.0.30" + }, + { + "name": "X-Forwarded-Host", + "value": "trcc.stg.testr.io" + }, + { + "name": "X-Forwarded-Port", + "value": "443" + }, + { + "name": "X-Forwarded-Proto", + "value": "https" + }, + { + "name": "User-Agent", + "value": "python-requests/2.23.0" + }, + { + "name": "X-Request-Id", + "value": "8deb41c79544fe12f14b0765795ff48f" + }, + { + "name": "Accept-Encoding", + "value": "gzip, deflate" + }, + { + "name": "Authorization", + "value": "Bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJqSEZ0R1dybjJpY084VnpDYXpaZWUyakpFc2drY1k5ZzhpN2FTbGtielRnIn0.eyJleHAiOjE1OTAwNTkxNDIsImlhdCI6MTU5MDA1ODg0MiwianRpIjoiYWE1OWJkMWMtMGJmMy00M2U1LWIwMDctMDg3MDAwNzVlY2M3IiwiaXNzIjoiaHR0cHM6Ly9hdXRoLnN0Zy50ZXN0ci5pby9hdXRoL3JlYWxtcy90ZXN0ciIsImF1ZCI6ImFjY291bnQiLCJzdWIiOiI0YWFkZWM0Mi01OWE5LTRmZDUtODI3NC1lZWI5NDNmODQyNmUiLCJ0eXAiOiJCZWFyZXIiLCJhenAiOiIzWjE5LTNzYnN2MU9KSDBEd2l2UWkyYmZVSzdsSlNFdSIsInNlc3Npb25fc3RhdGUiOiJhYjU1ODNmNC00NmU3LTRhYmEtYTllZS1lODQzZDlmOGVlMDciLCJhY3IiOiIxIiwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyJhY2NvdW50Ijp7InJvbGVzIjpbIm1hbmFnZS1hY2NvdW50IiwibWFuYWdlLWFjY291bnQtbGlua3MiLCJ2aWV3LXByb2ZpbGUiXX19LCJzY29wZSI6InByb2ZpbGUgZW1haWwiLCJjbGllbnRJZCI6IjNaMTktM3Nic3YxT0pIMER3aXZRaTJiZlVLN2xKU0V1IiwiY2xpZW50SG9zdCI6IjEwLjQ4LjEuMSIsImVtYWlsX3ZlcmlmaWVkIjpmYWxzZSwib3JnYW5pemF0aW9uIjoic29tZU9yZ0lkMTIzIiwicHJlZmVycmVkX3VzZXJuYW1lIjoic2VydmljZS1hY2NvdW50LTN6MTktM3Nic3Yxb2poMGR3aXZxaTJiZnVrN2xqc2V1IiwiY2xpZW50QWRkcmVzcyI6IjEwLjQ4LjEuMSIsImVtYWlsIjoic2VydmljZS1hY2NvdW50LTN6MTktM3Nic3Yxb2poMGR3aXZxaTJiZnVrN2xqc2V1QHBsYWNlaG9sZGVyLm9yZyJ9.ltF1H_vfQ4aEtR_gAKwSO7iPPqAg5SojS-k4_MPUJ_IdRf13xLV2C-Qis6jIwqZHgdJmR-TShyxoRz7-ekMWzCToyHFK-YRFja6ggoZiq2DAdYgFdXwf_yljGC1A2n5hg_WPIfbLE732QmnmeMM7K1ovLyb27TqpTm0Dr_WRyoRSTUHRGneHjZ9LKhpLheODb0dhS_YpPc60hZL4YN2j7U6y6VqNDS8F_IHZHNKTh0IgsS5uFq1mJ5l_MHaNOQEjcM3tzwKL9tBnPEHBk10YWQTmuNtUvs4L-eyzkLAMpNDiW7xv3cGSHj2gCC7P7gEC3Z3ddFcvl5frk-1OU4xGLg" + }, + { + "name": "X-Scheme", + "value": "https" + }, + { + "name": "Accept", + "value": "*/*" + }, + { + "name": ":method", + "value": "GET" + }, + { + "name": ":path", + "value": "/models/aaa/blacklist" + }, + { + "name": ":authority", + "value": "trcc.stg.testr.io" + }, + { + "name": ":scheme", + "value": "http" + }, + { + "name": "x-request-start", + "value": "1590058952.705" + }, + { + "name": "x-up9-source", + "value": "10.48.1.44" + }, + { + "name": "x-up9-destination", + "value": "10.48.0.155:5000" + } + ], + "queryString": [], + "headersSize": -1, + "bodySize": -1 + }, + "response": { + "status": 200, + "statusText": "OK", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "Content-Type", + "value": "application/json" + }, + { + "name": "Content-Length", + "value": "3" + }, + { + "name": "Access-Control-Allow-Origin", + "value": "http://localhost:3000" + }, + { + "name": "Access-Control-Allow-Credentials", + "value": "true" + }, + { + "name": "Vary", + "value": "Origin" + }, + { + "name": "Server", + "value": "gunicorn/19.9.0" + }, + { + "name": "Date", + "value": "Thu, 21 May 2020 11:02:32 GMT" + }, + { + "name": "Connection", + "value": "keep-alive" + }, + { + "name": ":status", + "value": "200" + }, + { + "name": "duration_ms", + "value": "1" + } + ], + "content": { + "size": 3, + "mimeType": "", + "text": "[]\n" + }, + "redirectURL": "", + "headersSize": -1, + "bodySize": 3 + }, + "cache": {}, + "timings": { + "send": -1, + "wait": -1, + "receive": 1 + } + }, + { + "startedDateTime": "2020-05-21T11:02:32.706000+00:00", + "time": 1, + "request": { + "method": "GET", + "url": "http://trcc-api-service/models/liraz_test_2105/suites/all/runs", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "X-Forwarded-For", + "value": "10.132.0.22" + }, + { + "name": "User-Agent", + "value": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36" + }, + { + "name": "X-Request-Id", + "value": "4dbddbf3bde5bb2009fcf5ce53b25cc5" + }, + { + "name": "X-Forwarded-Host", + "value": "trcc.stg.testr.io" + }, + { + "name": "Authorization", + "value": "bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJqSEZ0R1dybjJpY084VnpDYXpaZWUyakpFc2drY1k5ZzhpN2FTbGtielRnIn0.eyJleHAiOjE1OTAwNTkxMTQsImlhdCI6MTU5MDA1ODgxNCwiYXV0aF90aW1lIjoxNTg5OTU4NDcwLCJqdGkiOiIyNzgxOTYyMy00Yjk5LTQ2MzQtOWZlNi02ZDRiNzYwNGU2ZmMiLCJpc3MiOiJodHRwczovL2F1dGguc3RnLnRlc3RyLmlvL2F1dGgvcmVhbG1zL3Rlc3RyIiwiYXVkIjoiYWNjb3VudCIsInN1YiI6ImU4NzAxMDZjLWJjYjItNDQxMy05Y2Q2LTUwMTZiNTUxMDRlYiIsInR5cCI6IkJlYXJlciIsImF6cCI6InJlYWN0LWNsaWVudCIsIm5vbmNlIjoiYzJiZTgwNGYtZjBiYS00ZWUxLTgyZWQtYmIzMTY5ZDBkYjU1Iiwic2Vzc2lvbl9zdGF0ZSI6IjM2ZDc2MDAxLTE5M2EtNGQ5OS05MTIwLTZmNGZkMjEwZDAxMiIsImFjciI6IjAiLCJhbGxvd2VkLW9yaWdpbnMiOlsiaHR0cHM6Ly9zdGcudGVzdHIuaW8iLCJjaHJvbWUtZXh0ZW5zaW9uOi8vbmFkZ2VsamVtbWJna2xkaGNwYWZqbXBtYXBpcGdsY20iLCJodHRwOi8vbG9jYWxob3N0OjMwMDAiXSwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm1hbmFnZUZlYXR1cmVGbGFncyIsIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyJhY2NvdW50Ijp7InJvbGVzIjpbIm1hbmFnZS1hY2NvdW50IiwibWFuYWdlLWFjY291bnQtbGlua3MiLCJ2aWV3LXByb2ZpbGUiXX19LCJzY29wZSI6Im9wZW5pZCBwcm9maWxlIGVtYWlsIiwiZ3JvdXBfbWVtYmVyc2hpcCI6WyJzb21lT3JnSWQxMjMiXSwiZW1haWxfdmVyaWZpZWQiOnRydWUsIm5hbWUiOiJMaXJheiBZZWhlemtlbCIsInByZWZlcnJlZF91c2VybmFtZSI6ImxpcmF6eUB1cDkuY29tIiwiZ2l2ZW5fbmFtZSI6IkxpcmF6IiwiZmFtaWx5X25hbWUiOiJZZWhlemtlbCIsImdyb3VwX3N1YmRvbWFpbiI6InNvbWVPcmdJZDEyMyIsImVtYWlsIjoibGlyYXp5QHVwOS5jb20iLCJmZWF0dXJlRmxhZ3MiOnsiZWRpdEVuZHBvaW50VmFyaWFibGVzIjp0cnVlLCJzaWRlTmF2aWdhdGlvbiI6dHJ1ZX19.KdLz7jeIr8HaST4FpJROrg6Sp-o1Nl5dU2hIbNCA0FEY-jmaoubiOlz6p7QthTJ8t-S0R_qdZtd7rXf249L6wGG_A6rriZhH41Fxhyrb0ig8OVrQp-sepv_AUf7GEIGYgpYIPFnZ6G3Dkq1aY9NzLXruh7fly_ZRkRlzF_wb1vt5NRJz3xeMrj82BOJJmUpv08AYYQhnyjKiBp7rgrNTTBejaFBozsJgXGkIi-DZfv862tgFhvPNuXsqKO5iOxv9nApuQJ2O4knVB1ag7tqB1xQcvBdkZt9gG1VVkpWsM_2j5C9cBwOuPRgHZhpZuT_YNfB4ITefGV1aYfRF-cjnug" + }, + { + "name": "Origin", + "value": "http://localhost:3000" + }, + { + "name": "X-Real-Ip", + "value": "10.132.0.22" + }, + { + "name": "Sec-Fetch-Dest", + "value": "empty" + }, + { + "name": "Referer", + "value": "http://localhost:3000/someOrgId123/model/liraz_test_2105/lastResults/systems/all/summary" + }, + { + "name": "Accept-Encoding", + "value": "gzip, deflate, br" + }, + { + "name": "Accept-Language", + "value": "en-US,en;q=0.9" + }, + { + "name": "Sec-Fetch-Site", + "value": "cross-site" + }, + { + "name": "Sec-Fetch-Mode", + "value": "cors" + }, + { + "name": "X-Forwarded-Port", + "value": "443" + }, + { + "name": "X-Forwarded-Proto", + "value": "https" + }, + { + "name": "X-Scheme", + "value": "https" + }, + { + "name": "Accept", + "value": "application/json, text/plain, */*" + }, + { + "name": ":method", + "value": "GET" + }, + { + "name": ":path", + "value": "/models/liraz_test_2105/suites/all/runs" + }, + { + "name": ":authority", + "value": "trcc.stg.testr.io" + }, + { + "name": ":scheme", + "value": "http" + }, + { + "name": "x-request-start", + "value": "1590058952.706" + }, + { + "name": "x-up9-source", + "value": "10.48.1.44" + }, + { + "name": "x-up9-destination", + "value": "10.48.0.155:5000" + } + ], + "queryString": [], + "headersSize": -1, + "bodySize": -1 + }, + "response": { + "status": 200, + "statusText": "OK", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "Access-Control-Allow-Credentials", + "value": "true" + }, + { + "name": "Vary", + "value": "Origin" + }, + { + "name": "Server", + "value": "gunicorn/19.9.0" + }, + { + "name": "Date", + "value": "Thu, 21 May 2020 11:02:32 GMT" + }, + { + "name": "Connection", + "value": "keep-alive" + }, + { + "name": "Content-Type", + "value": "application/json" + }, + { + "name": "Content-Length", + "value": "3" + }, + { + "name": "Access-Control-Allow-Origin", + "value": "http://localhost:3000" + }, + { + "name": ":status", + "value": "200" + }, + { + "name": "duration_ms", + "value": "1" + } + ], + "content": { + "size": 3, + "mimeType": "", + "text": "[]\n" + }, + "redirectURL": "", + "headersSize": -1, + "bodySize": 3 + }, + "cache": {}, + "timings": { + "send": -1, + "wait": -1, + "receive": 1 + } + }, + { + "startedDateTime": "2020-05-21T11:02:33.209000+00:00", + "time": 1, + "request": { + "method": "GET", + "url": "http://trcc-api-service/models/ngm-1204-aws-02/blacklist", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "X-Request-Id", + "value": "e9cb5bb32641f52b0816de0c448a80d8" + }, + { + "name": "X-Real-Ip", + "value": "10.132.0.30" + }, + { + "name": "X-Forwarded-For", + "value": "10.132.0.30" + }, + { + "name": "X-Forwarded-Host", + "value": "trcc.stg.testr.io" + }, + { + "name": "X-Forwarded-Proto", + "value": "https" + }, + { + "name": "Accept-Encoding", + "value": "gzip, deflate" + }, + { + "name": "Accept", + "value": "*/*" + }, + { + "name": "X-Forwarded-Port", + "value": "443" + }, + { + "name": "X-Scheme", + "value": "https" + }, + { + "name": "User-Agent", + "value": "python-requests/2.23.0" + }, + { + "name": "Authorization", + "value": "Bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJqSEZ0R1dybjJpY084VnpDYXpaZWUyakpFc2drY1k5ZzhpN2FTbGtielRnIn0.eyJleHAiOjE1OTAwNTkxNDIsImlhdCI6MTU5MDA1ODg0MiwianRpIjoiYWE1OWJkMWMtMGJmMy00M2U1LWIwMDctMDg3MDAwNzVlY2M3IiwiaXNzIjoiaHR0cHM6Ly9hdXRoLnN0Zy50ZXN0ci5pby9hdXRoL3JlYWxtcy90ZXN0ciIsImF1ZCI6ImFjY291bnQiLCJzdWIiOiI0YWFkZWM0Mi01OWE5LTRmZDUtODI3NC1lZWI5NDNmODQyNmUiLCJ0eXAiOiJCZWFyZXIiLCJhenAiOiIzWjE5LTNzYnN2MU9KSDBEd2l2UWkyYmZVSzdsSlNFdSIsInNlc3Npb25fc3RhdGUiOiJhYjU1ODNmNC00NmU3LTRhYmEtYTllZS1lODQzZDlmOGVlMDciLCJhY3IiOiIxIiwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyJhY2NvdW50Ijp7InJvbGVzIjpbIm1hbmFnZS1hY2NvdW50IiwibWFuYWdlLWFjY291bnQtbGlua3MiLCJ2aWV3LXByb2ZpbGUiXX19LCJzY29wZSI6InByb2ZpbGUgZW1haWwiLCJjbGllbnRJZCI6IjNaMTktM3Nic3YxT0pIMER3aXZRaTJiZlVLN2xKU0V1IiwiY2xpZW50SG9zdCI6IjEwLjQ4LjEuMSIsImVtYWlsX3ZlcmlmaWVkIjpmYWxzZSwib3JnYW5pemF0aW9uIjoic29tZU9yZ0lkMTIzIiwicHJlZmVycmVkX3VzZXJuYW1lIjoic2VydmljZS1hY2NvdW50LTN6MTktM3Nic3Yxb2poMGR3aXZxaTJiZnVrN2xqc2V1IiwiY2xpZW50QWRkcmVzcyI6IjEwLjQ4LjEuMSIsImVtYWlsIjoic2VydmljZS1hY2NvdW50LTN6MTktM3Nic3Yxb2poMGR3aXZxaTJiZnVrN2xqc2V1QHBsYWNlaG9sZGVyLm9yZyJ9.ltF1H_vfQ4aEtR_gAKwSO7iPPqAg5SojS-k4_MPUJ_IdRf13xLV2C-Qis6jIwqZHgdJmR-TShyxoRz7-ekMWzCToyHFK-YRFja6ggoZiq2DAdYgFdXwf_yljGC1A2n5hg_WPIfbLE732QmnmeMM7K1ovLyb27TqpTm0Dr_WRyoRSTUHRGneHjZ9LKhpLheODb0dhS_YpPc60hZL4YN2j7U6y6VqNDS8F_IHZHNKTh0IgsS5uFq1mJ5l_MHaNOQEjcM3tzwKL9tBnPEHBk10YWQTmuNtUvs4L-eyzkLAMpNDiW7xv3cGSHj2gCC7P7gEC3Z3ddFcvl5frk-1OU4xGLg" + }, + { + "name": ":method", + "value": "GET" + }, + { + "name": ":path", + "value": "/models/ngm-1204-aws-02/blacklist" + }, + { + "name": ":authority", + "value": "trcc.stg.testr.io" + }, + { + "name": ":scheme", + "value": "http" + }, + { + "name": "x-request-start", + "value": "1590058953.209" + }, + { + "name": "x-up9-source", + "value": "10.48.1.44" + }, + { + "name": "x-up9-destination", + "value": "10.48.2.97:5000" + } + ], + "queryString": [], + "headersSize": -1, + "bodySize": -1 + }, + "response": { + "status": 200, + "statusText": "OK", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "Connection", + "value": "keep-alive" + }, + { + "name": "Content-Type", + "value": "application/json" + }, + { + "name": "Content-Length", + "value": "3" + }, + { + "name": "Access-Control-Allow-Origin", + "value": "http://localhost:3000" + }, + { + "name": "Access-Control-Allow-Credentials", + "value": "true" + }, + { + "name": "Vary", + "value": "Origin" + }, + { + "name": "Server", + "value": "gunicorn/19.9.0" + }, + { + "name": "Date", + "value": "Thu, 21 May 2020 11:02:32 GMT" + }, + { + "name": ":status", + "value": "200" + }, + { + "name": "duration_ms", + "value": "1" + } + ], + "content": { + "size": 3, + "mimeType": "", + "text": "[]\n" + }, + "redirectURL": "", + "headersSize": -1, + "bodySize": 3 + }, + "cache": {}, + "timings": { + "send": -1, + "wait": -1, + "receive": 1 + } + }, + { + "startedDateTime": "2020-05-21T11:02:33.212000+00:00", + "time": 1, + "request": { + "method": "GET", + "url": "http://trcc-api-service/models/ngm-1305-aws-01/blacklist", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "User-Agent", + "value": "python-requests/2.23.0" + }, + { + "name": "Accept", + "value": "*/*" + }, + { + "name": "Authorization", + "value": "Bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJqSEZ0R1dybjJpY084VnpDYXpaZWUyakpFc2drY1k5ZzhpN2FTbGtielRnIn0.eyJleHAiOjE1OTAwNTkxNDIsImlhdCI6MTU5MDA1ODg0MiwianRpIjoiYWE1OWJkMWMtMGJmMy00M2U1LWIwMDctMDg3MDAwNzVlY2M3IiwiaXNzIjoiaHR0cHM6Ly9hdXRoLnN0Zy50ZXN0ci5pby9hdXRoL3JlYWxtcy90ZXN0ciIsImF1ZCI6ImFjY291bnQiLCJzdWIiOiI0YWFkZWM0Mi01OWE5LTRmZDUtODI3NC1lZWI5NDNmODQyNmUiLCJ0eXAiOiJCZWFyZXIiLCJhenAiOiIzWjE5LTNzYnN2MU9KSDBEd2l2UWkyYmZVSzdsSlNFdSIsInNlc3Npb25fc3RhdGUiOiJhYjU1ODNmNC00NmU3LTRhYmEtYTllZS1lODQzZDlmOGVlMDciLCJhY3IiOiIxIiwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyJhY2NvdW50Ijp7InJvbGVzIjpbIm1hbmFnZS1hY2NvdW50IiwibWFuYWdlLWFjY291bnQtbGlua3MiLCJ2aWV3LXByb2ZpbGUiXX19LCJzY29wZSI6InByb2ZpbGUgZW1haWwiLCJjbGllbnRJZCI6IjNaMTktM3Nic3YxT0pIMER3aXZRaTJiZlVLN2xKU0V1IiwiY2xpZW50SG9zdCI6IjEwLjQ4LjEuMSIsImVtYWlsX3ZlcmlmaWVkIjpmYWxzZSwib3JnYW5pemF0aW9uIjoic29tZU9yZ0lkMTIzIiwicHJlZmVycmVkX3VzZXJuYW1lIjoic2VydmljZS1hY2NvdW50LTN6MTktM3Nic3Yxb2poMGR3aXZxaTJiZnVrN2xqc2V1IiwiY2xpZW50QWRkcmVzcyI6IjEwLjQ4LjEuMSIsImVtYWlsIjoic2VydmljZS1hY2NvdW50LTN6MTktM3Nic3Yxb2poMGR3aXZxaTJiZnVrN2xqc2V1QHBsYWNlaG9sZGVyLm9yZyJ9.ltF1H_vfQ4aEtR_gAKwSO7iPPqAg5SojS-k4_MPUJ_IdRf13xLV2C-Qis6jIwqZHgdJmR-TShyxoRz7-ekMWzCToyHFK-YRFja6ggoZiq2DAdYgFdXwf_yljGC1A2n5hg_WPIfbLE732QmnmeMM7K1ovLyb27TqpTm0Dr_WRyoRSTUHRGneHjZ9LKhpLheODb0dhS_YpPc60hZL4YN2j7U6y6VqNDS8F_IHZHNKTh0IgsS5uFq1mJ5l_MHaNOQEjcM3tzwKL9tBnPEHBk10YWQTmuNtUvs4L-eyzkLAMpNDiW7xv3cGSHj2gCC7P7gEC3Z3ddFcvl5frk-1OU4xGLg" + }, + { + "name": "X-Request-Id", + "value": "005a527e7202fb8425c61a90bea4061c" + }, + { + "name": "X-Real-Ip", + "value": "10.132.0.30" + }, + { + "name": "X-Forwarded-For", + "value": "10.132.0.30" + }, + { + "name": "X-Forwarded-Proto", + "value": "https" + }, + { + "name": "X-Forwarded-Host", + "value": "trcc.stg.testr.io" + }, + { + "name": "X-Forwarded-Port", + "value": "443" + }, + { + "name": "X-Scheme", + "value": "https" + }, + { + "name": "Accept-Encoding", + "value": "gzip, deflate" + }, + { + "name": ":method", + "value": "GET" + }, + { + "name": ":path", + "value": "/models/ngm-1305-aws-01/blacklist" + }, + { + "name": ":authority", + "value": "trcc.stg.testr.io" + }, + { + "name": ":scheme", + "value": "http" + }, + { + "name": "x-request-start", + "value": "1590058953.212" + }, + { + "name": "x-up9-source", + "value": "10.48.1.44" + }, + { + "name": "x-up9-destination", + "value": "10.48.2.97:5000" + } + ], + "queryString": [], + "headersSize": -1, + "bodySize": -1 + }, + "response": { + "status": 200, + "statusText": "OK", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "Server", + "value": "gunicorn/19.9.0" + }, + { + "name": "Date", + "value": "Thu, 21 May 2020 11:02:32 GMT" + }, + { + "name": "Connection", + "value": "keep-alive" + }, + { + "name": "Content-Type", + "value": "application/json" + }, + { + "name": "Content-Length", + "value": "3" + }, + { + "name": "Access-Control-Allow-Origin", + "value": "http://localhost:3000" + }, + { + "name": "Access-Control-Allow-Credentials", + "value": "true" + }, + { + "name": "Vary", + "value": "Origin" + }, + { + "name": ":status", + "value": "200" + }, + { + "name": "duration_ms", + "value": "1" + } + ], + "content": { + "size": 3, + "mimeType": "", + "text": "[]\n" + }, + "redirectURL": "", + "headersSize": -1, + "bodySize": 3 + }, + "cache": {}, + "timings": { + "send": -1, + "wait": -1, + "receive": 1 + } + }, + { + "startedDateTime": "2020-05-21T11:02:33.212000+00:00", + "time": 1, + "request": { + "method": "GET", + "url": "http://trcc-api-service/models/aws_kong5/suites/all/runs", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "Accept-Encoding", + "value": "gzip, deflate, br" + }, + { + "name": "X-Forwarded-Port", + "value": "443" + }, + { + "name": "Authorization", + "value": "bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJqSEZ0R1dybjJpY084VnpDYXpaZWUyakpFc2drY1k5ZzhpN2FTbGtielRnIn0.eyJleHAiOjE1OTAwNTkyNDMsImlhdCI6MTU5MDA1ODk0MywiYXV0aF90aW1lIjoxNTkwMDU4NjUxLCJqdGkiOiI1ODYzNmRiMy0wN2IxLTQ2ZDYtOGNiNS01MzEzMDFlZGY4MGYiLCJpc3MiOiJodHRwczovL2F1dGguc3RnLnRlc3RyLmlvL2F1dGgvcmVhbG1zL3Rlc3RyIiwiYXVkIjoiYWNjb3VudCIsInN1YiI6IjBlYWU4ZmFjLTgyYTEtNDUwNi05MWQ0LTA4ZDYxZTI2NWY1NCIsInR5cCI6IkJlYXJlciIsImF6cCI6InJlYWN0LWNsaWVudCIsIm5vbmNlIjoiNTRjMTM5OTktMDg0NS00OWNmLWI1OTAtOTY1ZThjNWI0NmJlIiwic2Vzc2lvbl9zdGF0ZSI6ImY3YjEyOTM1LThmMTctNDc1Zi04NmRhLWQ4NjFjZTYxNWZjNyIsImFjciI6IjAiLCJhbGxvd2VkLW9yaWdpbnMiOlsiaHR0cHM6Ly9zdGcudGVzdHIuaW8iLCJjaHJvbWUtZXh0ZW5zaW9uOi8vbmFkZ2VsamVtbWJna2xkaGNwYWZqbXBtYXBpcGdsY20iLCJodHRwOi8vbG9jYWxob3N0OjMwMDAiXSwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyJhY2NvdW50Ijp7InJvbGVzIjpbIm1hbmFnZS1hY2NvdW50IiwibWFuYWdlLWFjY291bnQtbGlua3MiLCJ2aWV3LXByb2ZpbGUiXX19LCJzY29wZSI6Im9wZW5pZCBwcm9maWxlIGVtYWlsIiwiZ3JvdXBfbWVtYmVyc2hpcCI6WyJzb21lT3JnSWQxMjMiXSwiZW1haWxfdmVyaWZpZWQiOnRydWUsIm5hbWUiOiJSYW1pIEJlcm1hbiIsInByZWZlcnJlZF91c2VybmFtZSI6InJhbWkuYmVybWFuQHVwOS5jb20iLCJnaXZlbl9uYW1lIjoiUmFtaSIsImZhbWlseV9uYW1lIjoiQmVybWFuIiwiZ3JvdXBfc3ViZG9tYWluIjoic29tZU9yZ0lkMTIzIiwiZW1haWwiOiJyYW1pLmJlcm1hbkB1cDkuY29tIiwiZmVhdHVyZUZsYWdzIjp7ImVkaXRFbmRwb2ludFZhcmlhYmxlcyI6dHJ1ZSwic2lkZU5hdmlnYXRpb24iOnRydWV9fQ.UEDsnoo9A8CbdIYKXoOrAAq6y2K7Aoqf-PplHhXFoVep9ewwA9qBjXqgn0fK9cnE_KfZKUcX_cy1HDhhdIfR_aHpbWWhQ3gxISkE6ALka18JIrUv7bFaHKio6eEP6tgn34QVP8aQVEB3e3g7h3dLuUvZ1xIMnt6fy03tD3KgiQlvdHwg5FhJLosiCrHgboEqN5VH_f_2QF33XiXTkDG1e-AOEnIIWqloMDTUPZEUvEo_KH68lB0Uu23YhhI5gPAuKQVb_UjFWcF_6Ysvk3C3j0cuk09DZ7YEI1u-bKp58LHnsS6gqNFQxy-CDlZ8Oht5d2I3LbwZZxHzMixzzFzJCA" + }, + { + "name": "Origin", + "value": "https://stg.testr.io" + }, + { + "name": "Referer", + "value": "https://stg.testr.io/someOrgId123/model/aws_kong5/lastResults/systems/all/runs" + }, + { + "name": "X-Request-Id", + "value": "87940ffb62aa5801d303e32ffadac4a1" + }, + { + "name": "User-Agent", + "value": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36" + }, + { + "name": "Accept-Language", + "value": "en-IL,en-US;q=0.9,en;q=0.8,he;q=0.7,pl;q=0.6,ru;q=0.5" + }, + { + "name": "X-Forwarded-For", + "value": "10.132.0.11" + }, + { + "name": "X-Forwarded-Proto", + "value": "https" + }, + { + "name": "Sec-Fetch-Site", + "value": "same-site" + }, + { + "name": "Sec-Fetch-Dest", + "value": "empty" + }, + { + "name": "Accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "Dnt", + "value": "1" + }, + { + "name": "Sec-Fetch-Mode", + "value": "cors" + }, + { + "name": "X-Real-Ip", + "value": "10.132.0.11" + }, + { + "name": "X-Forwarded-Host", + "value": "trcc.stg.testr.io" + }, + { + "name": "X-Scheme", + "value": "https" + }, + { + "name": ":method", + "value": "GET" + }, + { + "name": ":path", + "value": "/models/aws_kong5/suites/all/runs" + }, + { + "name": ":authority", + "value": "trcc.stg.testr.io" + }, + { + "name": ":scheme", + "value": "http" + }, + { + "name": "x-request-start", + "value": "1590058953.212" + }, + { + "name": "x-up9-source", + "value": "10.48.1.44" + }, + { + "name": "x-up9-destination", + "value": "10.48.2.97:5000" + } + ], + "queryString": [], + "headersSize": -1, + "bodySize": -1 + }, + "response": { + "status": 200, + "statusText": "OK", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "Vary", + "value": "Origin" + }, + { + "name": "Server", + "value": "gunicorn/19.9.0" + }, + { + "name": "Date", + "value": "Thu, 21 May 2020 11:02:32 GMT" + }, + { + "name": "Connection", + "value": "keep-alive" + }, + { + "name": "Content-Type", + "value": "application/json" + }, + { + "name": "Content-Length", + "value": "3" + }, + { + "name": "Access-Control-Allow-Origin", + "value": "https://stg.testr.io" + }, + { + "name": "Access-Control-Allow-Credentials", + "value": "true" + }, + { + "name": ":status", + "value": "200" + }, + { + "name": "duration_ms", + "value": "1" + } + ], + "content": { + "size": 3, + "mimeType": "", + "text": "[]\n" + }, + "redirectURL": "", + "headersSize": -1, + "bodySize": 3 + }, + "cache": {}, + "timings": { + "send": -1, + "wait": -1, + "receive": 1 + } + }, + { + "startedDateTime": "2020-05-21T11:02:33.214000+00:00", + "time": 1, + "request": { + "method": "GET", + "url": "http://trcc-api-service/models/aws_kong5/suites/all/runs", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "Authorization", + "value": "bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJqSEZ0R1dybjJpY084VnpDYXpaZWUyakpFc2drY1k5ZzhpN2FTbGtielRnIn0.eyJleHAiOjE1OTAwNTkyNDMsImlhdCI6MTU5MDA1ODk0MywiYXV0aF90aW1lIjoxNTkwMDU4NjUxLCJqdGkiOiI1ODYzNmRiMy0wN2IxLTQ2ZDYtOGNiNS01MzEzMDFlZGY4MGYiLCJpc3MiOiJodHRwczovL2F1dGguc3RnLnRlc3RyLmlvL2F1dGgvcmVhbG1zL3Rlc3RyIiwiYXVkIjoiYWNjb3VudCIsInN1YiI6IjBlYWU4ZmFjLTgyYTEtNDUwNi05MWQ0LTA4ZDYxZTI2NWY1NCIsInR5cCI6IkJlYXJlciIsImF6cCI6InJlYWN0LWNsaWVudCIsIm5vbmNlIjoiNTRjMTM5OTktMDg0NS00OWNmLWI1OTAtOTY1ZThjNWI0NmJlIiwic2Vzc2lvbl9zdGF0ZSI6ImY3YjEyOTM1LThmMTctNDc1Zi04NmRhLWQ4NjFjZTYxNWZjNyIsImFjciI6IjAiLCJhbGxvd2VkLW9yaWdpbnMiOlsiaHR0cHM6Ly9zdGcudGVzdHIuaW8iLCJjaHJvbWUtZXh0ZW5zaW9uOi8vbmFkZ2VsamVtbWJna2xkaGNwYWZqbXBtYXBpcGdsY20iLCJodHRwOi8vbG9jYWxob3N0OjMwMDAiXSwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyJhY2NvdW50Ijp7InJvbGVzIjpbIm1hbmFnZS1hY2NvdW50IiwibWFuYWdlLWFjY291bnQtbGlua3MiLCJ2aWV3LXByb2ZpbGUiXX19LCJzY29wZSI6Im9wZW5pZCBwcm9maWxlIGVtYWlsIiwiZ3JvdXBfbWVtYmVyc2hpcCI6WyJzb21lT3JnSWQxMjMiXSwiZW1haWxfdmVyaWZpZWQiOnRydWUsIm5hbWUiOiJSYW1pIEJlcm1hbiIsInByZWZlcnJlZF91c2VybmFtZSI6InJhbWkuYmVybWFuQHVwOS5jb20iLCJnaXZlbl9uYW1lIjoiUmFtaSIsImZhbWlseV9uYW1lIjoiQmVybWFuIiwiZ3JvdXBfc3ViZG9tYWluIjoic29tZU9yZ0lkMTIzIiwiZW1haWwiOiJyYW1pLmJlcm1hbkB1cDkuY29tIiwiZmVhdHVyZUZsYWdzIjp7ImVkaXRFbmRwb2ludFZhcmlhYmxlcyI6dHJ1ZSwic2lkZU5hdmlnYXRpb24iOnRydWV9fQ.UEDsnoo9A8CbdIYKXoOrAAq6y2K7Aoqf-PplHhXFoVep9ewwA9qBjXqgn0fK9cnE_KfZKUcX_cy1HDhhdIfR_aHpbWWhQ3gxISkE6ALka18JIrUv7bFaHKio6eEP6tgn34QVP8aQVEB3e3g7h3dLuUvZ1xIMnt6fy03tD3KgiQlvdHwg5FhJLosiCrHgboEqN5VH_f_2QF33XiXTkDG1e-AOEnIIWqloMDTUPZEUvEo_KH68lB0Uu23YhhI5gPAuKQVb_UjFWcF_6Ysvk3C3j0cuk09DZ7YEI1u-bKp58LHnsS6gqNFQxy-CDlZ8Oht5d2I3LbwZZxHzMixzzFzJCA" + }, + { + "name": "Sec-Fetch-Site", + "value": "same-site" + }, + { + "name": "X-Forwarded-For", + "value": "10.132.0.11" + }, + { + "name": "X-Forwarded-Proto", + "value": "https" + }, + { + "name": "User-Agent", + "value": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36" + }, + { + "name": "Sec-Fetch-Dest", + "value": "empty" + }, + { + "name": "X-Forwarded-Host", + "value": "trcc.stg.testr.io" + }, + { + "name": "Origin", + "value": "https://stg.testr.io" + }, + { + "name": "Sec-Fetch-Mode", + "value": "cors" + }, + { + "name": "Referer", + "value": "https://stg.testr.io/someOrgId123/model/aws_kong5/lastResults/systems/all/runs" + }, + { + "name": "Accept-Encoding", + "value": "gzip, deflate, br" + }, + { + "name": "Accept-Language", + "value": "en-IL,en-US;q=0.9,en;q=0.8,he;q=0.7,pl;q=0.6,ru;q=0.5" + }, + { + "name": "Accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "X-Request-Id", + "value": "5ffa0e2ab99a20374809d4c82f442b21" + }, + { + "name": "X-Real-Ip", + "value": "10.132.0.11" + }, + { + "name": "X-Forwarded-Port", + "value": "443" + }, + { + "name": "X-Scheme", + "value": "https" + }, + { + "name": "Dnt", + "value": "1" + }, + { + "name": ":method", + "value": "GET" + }, + { + "name": ":path", + "value": "/models/aws_kong5/suites/all/runs" + }, + { + "name": ":authority", + "value": "trcc.stg.testr.io" + }, + { + "name": ":scheme", + "value": "http" + }, + { + "name": "x-request-start", + "value": "1590058953.214" + }, + { + "name": "x-up9-source", + "value": "10.48.1.44" + }, + { + "name": "x-up9-destination", + "value": "10.48.2.97:5000" + } + ], + "queryString": [], + "headersSize": -1, + "bodySize": -1 + }, + "response": { + "status": 200, + "statusText": "OK", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "Date", + "value": "Thu, 21 May 2020 11:02:32 GMT" + }, + { + "name": "Connection", + "value": "keep-alive" + }, + { + "name": "Content-Type", + "value": "application/json" + }, + { + "name": "Content-Length", + "value": "3" + }, + { + "name": "Access-Control-Allow-Origin", + "value": "http://localhost:3000" + }, + { + "name": "Access-Control-Allow-Credentials", + "value": "true" + }, + { + "name": "Vary", + "value": "Origin" + }, + { + "name": "Server", + "value": "gunicorn/19.9.0" + }, + { + "name": ":status", + "value": "200" + }, + { + "name": "duration_ms", + "value": "1" + } + ], + "content": { + "size": 3, + "mimeType": "", + "text": "[]\n" + }, + "redirectURL": "", + "headersSize": -1, + "bodySize": 3 + }, + "cache": {}, + "timings": { + "send": -1, + "wait": -1, + "receive": 1 + } + }, + { + "startedDateTime": "2020-05-21T11:02:33.215000+00:00", + "time": 1, + "request": { + "method": "GET", + "url": "http://trcc-api-service/models/andrey2/blacklist", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "X-Forwarded-Host", + "value": "trcc.stg.testr.io" + }, + { + "name": "X-Forwarded-Proto", + "value": "https" + }, + { + "name": "Accept-Encoding", + "value": "gzip, deflate" + }, + { + "name": "Accept", + "value": "*/*" + }, + { + "name": "X-Forwarded-For", + "value": "10.132.0.30" + }, + { + "name": "X-Forwarded-Port", + "value": "443" + }, + { + "name": "X-Scheme", + "value": "https" + }, + { + "name": "User-Agent", + "value": "python-requests/2.23.0" + }, + { + "name": "Authorization", + "value": "Bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJqSEZ0R1dybjJpY084VnpDYXpaZWUyakpFc2drY1k5ZzhpN2FTbGtielRnIn0.eyJleHAiOjE1OTAwNTkxNDIsImlhdCI6MTU5MDA1ODg0MiwianRpIjoiYWE1OWJkMWMtMGJmMy00M2U1LWIwMDctMDg3MDAwNzVlY2M3IiwiaXNzIjoiaHR0cHM6Ly9hdXRoLnN0Zy50ZXN0ci5pby9hdXRoL3JlYWxtcy90ZXN0ciIsImF1ZCI6ImFjY291bnQiLCJzdWIiOiI0YWFkZWM0Mi01OWE5LTRmZDUtODI3NC1lZWI5NDNmODQyNmUiLCJ0eXAiOiJCZWFyZXIiLCJhenAiOiIzWjE5LTNzYnN2MU9KSDBEd2l2UWkyYmZVSzdsSlNFdSIsInNlc3Npb25fc3RhdGUiOiJhYjU1ODNmNC00NmU3LTRhYmEtYTllZS1lODQzZDlmOGVlMDciLCJhY3IiOiIxIiwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyJhY2NvdW50Ijp7InJvbGVzIjpbIm1hbmFnZS1hY2NvdW50IiwibWFuYWdlLWFjY291bnQtbGlua3MiLCJ2aWV3LXByb2ZpbGUiXX19LCJzY29wZSI6InByb2ZpbGUgZW1haWwiLCJjbGllbnRJZCI6IjNaMTktM3Nic3YxT0pIMER3aXZRaTJiZlVLN2xKU0V1IiwiY2xpZW50SG9zdCI6IjEwLjQ4LjEuMSIsImVtYWlsX3ZlcmlmaWVkIjpmYWxzZSwib3JnYW5pemF0aW9uIjoic29tZU9yZ0lkMTIzIiwicHJlZmVycmVkX3VzZXJuYW1lIjoic2VydmljZS1hY2NvdW50LTN6MTktM3Nic3Yxb2poMGR3aXZxaTJiZnVrN2xqc2V1IiwiY2xpZW50QWRkcmVzcyI6IjEwLjQ4LjEuMSIsImVtYWlsIjoic2VydmljZS1hY2NvdW50LTN6MTktM3Nic3Yxb2poMGR3aXZxaTJiZnVrN2xqc2V1QHBsYWNlaG9sZGVyLm9yZyJ9.ltF1H_vfQ4aEtR_gAKwSO7iPPqAg5SojS-k4_MPUJ_IdRf13xLV2C-Qis6jIwqZHgdJmR-TShyxoRz7-ekMWzCToyHFK-YRFja6ggoZiq2DAdYgFdXwf_yljGC1A2n5hg_WPIfbLE732QmnmeMM7K1ovLyb27TqpTm0Dr_WRyoRSTUHRGneHjZ9LKhpLheODb0dhS_YpPc60hZL4YN2j7U6y6VqNDS8F_IHZHNKTh0IgsS5uFq1mJ5l_MHaNOQEjcM3tzwKL9tBnPEHBk10YWQTmuNtUvs4L-eyzkLAMpNDiW7xv3cGSHj2gCC7P7gEC3Z3ddFcvl5frk-1OU4xGLg" + }, + { + "name": "X-Request-Id", + "value": "e4f1b900efa8d35857fb7f9a9c98a43c" + }, + { + "name": "X-Real-Ip", + "value": "10.132.0.30" + }, + { + "name": ":method", + "value": "GET" + }, + { + "name": ":path", + "value": "/models/andrey2/blacklist" + }, + { + "name": ":authority", + "value": "trcc.stg.testr.io" + }, + { + "name": ":scheme", + "value": "http" + }, + { + "name": "x-request-start", + "value": "1590058953.215" + }, + { + "name": "x-up9-source", + "value": "10.48.1.44" + }, + { + "name": "x-up9-destination", + "value": "10.48.2.97:5000" + } + ], + "queryString": [], + "headersSize": -1, + "bodySize": -1 + }, + "response": { + "status": 200, + "statusText": "OK", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "Vary", + "value": "Origin" + }, + { + "name": "Server", + "value": "gunicorn/19.9.0" + }, + { + "name": "Date", + "value": "Thu, 21 May 2020 11:02:32 GMT" + }, + { + "name": "Connection", + "value": "keep-alive" + }, + { + "name": "Content-Type", + "value": "application/json" + }, + { + "name": "Content-Length", + "value": "3" + }, + { + "name": "Access-Control-Allow-Origin", + "value": "http://localhost:3000" + }, + { + "name": "Access-Control-Allow-Credentials", + "value": "true" + }, + { + "name": ":status", + "value": "200" + }, + { + "name": "duration_ms", + "value": "1" + } + ], + "content": { + "size": 3, + "mimeType": "", + "text": "[]\n" + }, + "redirectURL": "", + "headersSize": -1, + "bodySize": 3 + }, + "cache": {}, + "timings": { + "send": -1, + "wait": -1, + "receive": 1 + } + }, + { + "startedDateTime": "2020-05-21T11:02:32.706000+00:00", + "time": 590, + "request": { + "method": "POST", + "url": "http://trcc-api-service/tapping/state", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "X-Real-Ip", + "value": "10.48.1.1" + }, + { + "name": "X-Scheme", + "value": "https" + }, + { + "name": "User-Agent", + "value": "python-requests/2.23.0" + }, + { + "name": "Content-Type", + "value": "application/json" + }, + { + "name": "X-Request-Id", + "value": "38efa16718afef745dbeae7b2b453796" + }, + { + "name": "Content-Length", + "value": "282" + }, + { + "name": "X-Forwarded-Port", + "value": "443" + }, + { + "name": "Accept", + "value": "*/*" + }, + { + "name": "X-Forwarded-Host", + "value": "trcc.stg.testr.io" + }, + { + "name": "X-Forwarded-Proto", + "value": "https" + }, + { + "name": "Accept-Encoding", + "value": "gzip, deflate" + }, + { + "name": "Authorization", + "value": "Bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJqSEZ0R1dybjJpY084VnpDYXpaZWUyakpFc2drY1k5ZzhpN2FTbGtielRnIn0.eyJleHAiOjE1OTAwNTkxNDIsImlhdCI6MTU5MDA1ODg0MiwianRpIjoiYWE1OWJkMWMtMGJmMy00M2U1LWIwMDctMDg3MDAwNzVlY2M3IiwiaXNzIjoiaHR0cHM6Ly9hdXRoLnN0Zy50ZXN0ci5pby9hdXRoL3JlYWxtcy90ZXN0ciIsImF1ZCI6ImFjY291bnQiLCJzdWIiOiI0YWFkZWM0Mi01OWE5LTRmZDUtODI3NC1lZWI5NDNmODQyNmUiLCJ0eXAiOiJCZWFyZXIiLCJhenAiOiIzWjE5LTNzYnN2MU9KSDBEd2l2UWkyYmZVSzdsSlNFdSIsInNlc3Npb25fc3RhdGUiOiJhYjU1ODNmNC00NmU3LTRhYmEtYTllZS1lODQzZDlmOGVlMDciLCJhY3IiOiIxIiwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyJhY2NvdW50Ijp7InJvbGVzIjpbIm1hbmFnZS1hY2NvdW50IiwibWFuYWdlLWFjY291bnQtbGlua3MiLCJ2aWV3LXByb2ZpbGUiXX19LCJzY29wZSI6InByb2ZpbGUgZW1haWwiLCJjbGllbnRJZCI6IjNaMTktM3Nic3YxT0pIMER3aXZRaTJiZlVLN2xKU0V1IiwiY2xpZW50SG9zdCI6IjEwLjQ4LjEuMSIsImVtYWlsX3ZlcmlmaWVkIjpmYWxzZSwib3JnYW5pemF0aW9uIjoic29tZU9yZ0lkMTIzIiwicHJlZmVycmVkX3VzZXJuYW1lIjoic2VydmljZS1hY2NvdW50LTN6MTktM3Nic3Yxb2poMGR3aXZxaTJiZnVrN2xqc2V1IiwiY2xpZW50QWRkcmVzcyI6IjEwLjQ4LjEuMSIsImVtYWlsIjoic2VydmljZS1hY2NvdW50LTN6MTktM3Nic3Yxb2poMGR3aXZxaTJiZnVrN2xqc2V1QHBsYWNlaG9sZGVyLm9yZyJ9.ltF1H_vfQ4aEtR_gAKwSO7iPPqAg5SojS-k4_MPUJ_IdRf13xLV2C-Qis6jIwqZHgdJmR-TShyxoRz7-ekMWzCToyHFK-YRFja6ggoZiq2DAdYgFdXwf_yljGC1A2n5hg_WPIfbLE732QmnmeMM7K1ovLyb27TqpTm0Dr_WRyoRSTUHRGneHjZ9LKhpLheODb0dhS_YpPc60hZL4YN2j7U6y6VqNDS8F_IHZHNKTh0IgsS5uFq1mJ5l_MHaNOQEjcM3tzwKL9tBnPEHBk10YWQTmuNtUvs4L-eyzkLAMpNDiW7xv3cGSHj2gCC7P7gEC3Z3ddFcvl5frk-1OU4xGLg" + }, + { + "name": "X-Forwarded-For", + "value": "10.48.1.1" + }, + { + "name": ":method", + "value": "POST" + }, + { + "name": ":path", + "value": "/tapping/state" + }, + { + "name": ":authority", + "value": "trcc.stg.testr.io" + }, + { + "name": ":scheme", + "value": "http" + }, + { + "name": "x-request-start", + "value": "1590058952.706" + }, + { + "name": "x-up9-source", + "value": "10.48.1.44" + }, + { + "name": "x-up9-destination", + "value": "10.48.0.155:5000" + } + ], + "queryString": [], + "headersSize": -1, + "bodySize": -1, + "postData": { + "mimeType": "", + "text": "{\"data\": [{\"id\": \"london-01-ECSCluster-27iuIYva8nO4_trdemo-01-TrdemoShoppingcartTaskDefinition-1UAMK7WTR1SWE\", \"instance_id\": \"arn:aws:ecs:eu-west-2:396248696294:task/f54924ca-6782-4c3b-9840-52e4feb78e01\", \"ip\": \"10.0.0.57\", \"type\": \"passive\", \"agentName\": \"nimrod-01-london-aws\"}]}" + } + }, + "response": { + "status": 200, + "statusText": "OK", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "Access-Control-Allow-Credentials", + "value": "true" + }, + { + "name": "Vary", + "value": "Origin" + }, + { + "name": "Server", + "value": "gunicorn/19.9.0" + }, + { + "name": "Date", + "value": "Thu, 21 May 2020 11:02:32 GMT" + }, + { + "name": "Connection", + "value": "keep-alive" + }, + { + "name": "Content-Type", + "value": "text/html; charset=utf-8" + }, + { + "name": "Content-Length", + "value": "2" + }, + { + "name": "Access-Control-Allow-Origin", + "value": "http://localhost:3000" + }, + { + "name": ":status", + "value": "200" + }, + { + "name": "duration_ms", + "value": "590" + } + ], + "content": { + "size": 2, + "mimeType": "", + "text": "Ok" + }, + "redirectURL": "", + "headersSize": -1, + "bodySize": 2 + }, + "cache": {}, + "timings": { + "send": -1, + "wait": -1, + "receive": 590 + } + }, + { + "startedDateTime": "2020-05-21T11:02:31.872000+00:00", + "time": 1343, + "request": { + "method": "GET", + "url": "http://trcc-api-service/models/rg_2105_01/status", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "X-Forwarded-Proto", + "value": "https" + }, + { + "name": "Authorization", + "value": "bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJqSEZ0R1dybjJpY084VnpDYXpaZWUyakpFc2drY1k5ZzhpN2FTbGtielRnIn0.eyJleHAiOjE2MjEzNDQ2NzYsImlhdCI6MTU5MDA1NzgzNiwiYXV0aF90aW1lIjoxNTg5ODk1MDc2LCJqdGkiOiJlMTIyMWJjMy0wY2Y3LTRkY2QtYmRkZi01ODAxZDdlZTc1ODMiLCJpc3MiOiJodHRwczovL2F1dGguc3RnLnRlc3RyLmlvL2F1dGgvcmVhbG1zL3Rlc3RyIiwiYXVkIjoiYWNjb3VudCIsInN1YiI6IjNjMzM3OWRkLWM0MTEtNGZiYS1hMTQzLTY5NTFmNzBiODQyYSIsInR5cCI6IkJlYXJlciIsImF6cCI6ImNsaSIsInNlc3Npb25fc3RhdGUiOiIwMjg5ZDg2YS1iMTEzLTRjOWMtOTBiMi1lNWRhNzg3NmJhNzAiLCJhY3IiOiIwIiwiYWxsb3dlZC1vcmlnaW5zIjpbIiJdLCJyZWFsbV9hY2Nlc3MiOnsicm9sZXMiOlsibWFuYWdlRmVhdHVyZUZsYWdzIiwib2ZmbGluZV9hY2Nlc3MiLCJ1bWFfYXV0aG9yaXphdGlvbiJdfSwicmVzb3VyY2VfYWNjZXNzIjp7ImFjY291bnQiOnsicm9sZXMiOlsibWFuYWdlLWFjY291bnQiLCJtYW5hZ2UtYWNjb3VudC1saW5rcyIsInZpZXctcHJvZmlsZSJdfX0sInNjb3BlIjoicHJvZmlsZSBlbWFpbCIsImdyb3VwX21lbWJlcnNoaXAiOlsic29tZU9yZ0lkMTIzIl0sImVtYWlsX3ZlcmlmaWVkIjp0cnVlLCJuYW1lIjoiUm9lZSBHYWRvdCIsInByZWZlcnJlZF91c2VybmFtZSI6InJvZWUuZ2Fkb3RAdXA5LmNvbSIsImdpdmVuX25hbWUiOiJSb2VlIiwiZmFtaWx5X25hbWUiOiJHYWRvdCIsImdyb3VwX3N1YmRvbWFpbiI6InNvbWVPcmdJZDEyMyIsImVtYWlsIjoicm9lZS5nYWRvdEB1cDkuY29tIn0.Y_GQcYnbig_GVO9idU7Ran9SaPtKWyXKm_tcAsduxLCZOfaTwkSFW4zTmsgU5kMaJieQMA5cw2ZfIXGsC3hHexAQYVRNsTf7_cUNyv8Slh0NBH88oI3yOPGba33vERvx7aVLEzhs8n9umzilfWXgkylgjued_ufT9-9bx9fkrPnxmOxHbaDHqGrgtOEToTRBczX7ulKUiKo7Pxw9cC8_rr3oEIOGPj2gnnh_-LDvxM7FI3nyE6qxmcyhESqhXdZmHzSeaIKiFXrDa_faGdMV7TkP9y0B4BJMyokyuYQeAYMK9fSB5mZpCgaLn-Zmf7izX2Srg9ETjTSFX0gYkkKJDg" + }, + { + "name": "User-Agent", + "value": "axios/0.19.2" + }, + { + "name": "X-Forwarded-For", + "value": "10.132.0.85" + }, + { + "name": "X-Forwarded-Host", + "value": "trcc.stg.testr.io" + }, + { + "name": "X-Forwarded-Port", + "value": "443" + }, + { + "name": "X-Scheme", + "value": "https" + }, + { + "name": "Accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "X-Request-Id", + "value": "659efcb50ff40f5c820ee95625794c87" + }, + { + "name": "X-Real-Ip", + "value": "10.132.0.85" + }, + { + "name": ":method", + "value": "GET" + }, + { + "name": ":path", + "value": "/models/rg_2105_01/status" + }, + { + "name": ":authority", + "value": "trcc.stg.testr.io" + }, + { + "name": ":scheme", + "value": "http" + }, + { + "name": "x-request-start", + "value": "1590058951.872" + }, + { + "name": "x-up9-source", + "value": "10.48.1.44" + }, + { + "name": "x-up9-destination", + "value": "10.48.2.97:5000" + } + ], + "queryString": [], + "headersSize": -1, + "bodySize": -1 + }, + "response": { + "status": 200, + "statusText": "OK", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "Access-Control-Allow-Credentials", + "value": "true" + }, + { + "name": "Vary", + "value": "Origin" + }, + { + "name": "Server", + "value": "gunicorn/19.9.0" + }, + { + "name": "Date", + "value": "Thu, 21 May 2020 11:02:32 GMT" + }, + { + "name": "Connection", + "value": "keep-alive" + }, + { + "name": "Content-Type", + "value": "application/json" + }, + { + "name": "Content-Length", + "value": "222" + }, + { + "name": "Access-Control-Allow-Origin", + "value": "https://stg.testr.io" + }, + { + "name": ":status", + "value": "200" + }, + { + "name": "duration_ms", + "value": "1343" + } + ], + "content": { + "size": 222, + "mimeType": "", + "text": "[{\"runId\":\"fpfrlibnwy\",\"status\":\"COMPLETED\"},{\"runId\":\"huuonvenvp\",\"status\":\"COMPLETED\"},{\"runId\":\"lbtcxllqvg\",\"status\":\"COMPLETED\"},{\"runId\":\"tycbfylptk\",\"status\":\"COMPLETED\"},{\"runId\":\"zlzddvtcaa\",\"status\":\"COMPLETED\"}]\n" + }, + "redirectURL": "", + "headersSize": -1, + "bodySize": 222 + }, + "cache": {}, + "timings": { + "send": -1, + "wait": -1, + "receive": 1343 + } + }, + { + "startedDateTime": "2020-05-21T11:02:33.296000+00:00", + "time": 1, + "request": { + "method": "GET", + "url": "http://trcc-api-service/models/sy_up9/status", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "X-Forwarded-Proto", + "value": "https" + }, + { + "name": "Accept-Language", + "value": "en-US,en;q=0.9" + }, + { + "name": "X-Real-Ip", + "value": "10.132.0.22" + }, + { + "name": "X-Scheme", + "value": "https" + }, + { + "name": "Accept-Encoding", + "value": "gzip, deflate, br" + }, + { + "name": "X-Request-Id", + "value": "1c50e6e3ebab2d1446253172a22e9553" + }, + { + "name": "Accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "Authorization", + "value": "bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJqSEZ0R1dybjJpY084VnpDYXpaZWUyakpFc2drY1k5ZzhpN2FTbGtielRnIn0.eyJleHAiOjE1OTAwNTkyNDYsImlhdCI6MTU5MDA1ODk0NiwiYXV0aF90aW1lIjoxNTg5OTU4NDcwLCJqdGkiOiJjNmE1MWRmOS1hYzdlLTRjNmEtYjcyZS0wZTExODY0ZTVjZmQiLCJpc3MiOiJodHRwczovL2F1dGguc3RnLnRlc3RyLmlvL2F1dGgvcmVhbG1zL3Rlc3RyIiwiYXVkIjoiYWNjb3VudCIsInN1YiI6ImU4NzAxMDZjLWJjYjItNDQxMy05Y2Q2LTUwMTZiNTUxMDRlYiIsInR5cCI6IkJlYXJlciIsImF6cCI6InJlYWN0LWNsaWVudCIsIm5vbmNlIjoiZTkxNzVjNTYtYTE1ZC00YzRiLTk5NzktZTQ0OTQ4YTdjMTAzIiwic2Vzc2lvbl9zdGF0ZSI6IjM2ZDc2MDAxLTE5M2EtNGQ5OS05MTIwLTZmNGZkMjEwZDAxMiIsImFjciI6IjAiLCJhbGxvd2VkLW9yaWdpbnMiOlsiaHR0cHM6Ly9zdGcudGVzdHIuaW8iLCJjaHJvbWUtZXh0ZW5zaW9uOi8vbmFkZ2VsamVtbWJna2xkaGNwYWZqbXBtYXBpcGdsY20iLCJodHRwOi8vbG9jYWxob3N0OjMwMDAiXSwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm1hbmFnZUZlYXR1cmVGbGFncyIsIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyJhY2NvdW50Ijp7InJvbGVzIjpbIm1hbmFnZS1hY2NvdW50IiwibWFuYWdlLWFjY291bnQtbGlua3MiLCJ2aWV3LXByb2ZpbGUiXX19LCJzY29wZSI6Im9wZW5pZCBwcm9maWxlIGVtYWlsIiwiZ3JvdXBfbWVtYmVyc2hpcCI6WyJzb21lT3JnSWQxMjMiXSwiZW1haWxfdmVyaWZpZWQiOnRydWUsIm5hbWUiOiJMaXJheiBZZWhlemtlbCIsInByZWZlcnJlZF91c2VybmFtZSI6ImxpcmF6eUB1cDkuY29tIiwiZ2l2ZW5fbmFtZSI6IkxpcmF6IiwiZmFtaWx5X25hbWUiOiJZZWhlemtlbCIsImdyb3VwX3N1YmRvbWFpbiI6InNvbWVPcmdJZDEyMyIsImVtYWlsIjoibGlyYXp5QHVwOS5jb20iLCJmZWF0dXJlRmxhZ3MiOnsiZWRpdEVuZHBvaW50VmFyaWFibGVzIjp0cnVlLCJzaWRlTmF2aWdhdGlvbiI6dHJ1ZX19.B6r6tfXSNz9cPHRPPC5QnB6fE4IpHTY3XYgwQaFSarbVY6SviGkdWJShd8CnKEQdnVZsBRys2Y6cVBLOV7H5dfj9S_L47hkwEux7NvmbBkbkeuM_2dCiJ7lKoU5puh8_mKGkeS8wU6MQadHejyQgIsntPbOOpzBbf9S_ASkq_mjK1pF7T7GoYKyTL3yY8V_l5ocnBYccziGFtwxrdDnOOzh3epBcxx7Nsi77_Mi4VOjSaEbu9QXtkL1SZYUJ-Y7cQync0ixmMIpn6u1C8GEJdROHHFW4VmrRbCUY67rFHOB9PNOdarMANtHbjxep0Z1frfrvTrIyfF0nGsurkftWWQ" + }, + { + "name": "Origin", + "value": "http://localhost:3000" + }, + { + "name": "Sec-Fetch-Mode", + "value": "cors" + }, + { + "name": "Referer", + "value": "http://localhost:3000/someOrgId123/model/sy_up9/lastResults/systems/all/endpoints" + }, + { + "name": "X-Forwarded-For", + "value": "10.132.0.22" + }, + { + "name": "X-Forwarded-Host", + "value": "trcc.stg.testr.io" + }, + { + "name": "X-Forwarded-Port", + "value": "443" + }, + { + "name": "User-Agent", + "value": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36" + }, + { + "name": "Sec-Fetch-Site", + "value": "cross-site" + }, + { + "name": "Sec-Fetch-Dest", + "value": "empty" + }, + { + "name": ":method", + "value": "GET" + }, + { + "name": ":path", + "value": "/models/sy_up9/status" + }, + { + "name": ":authority", + "value": "trcc.stg.testr.io" + }, + { + "name": ":scheme", + "value": "http" + }, + { + "name": "x-request-start", + "value": "1590058953.296" + }, + { + "name": "x-up9-source", + "value": "10.48.1.44" + }, + { + "name": "x-up9-destination", + "value": "10.48.0.155:5000" + } + ], + "queryString": [], + "headersSize": -1, + "bodySize": -1 + }, + "response": { + "status": 200, + "statusText": "OK", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "Access-Control-Allow-Origin", + "value": "http://localhost:3000" + }, + { + "name": "Access-Control-Allow-Credentials", + "value": "true" + }, + { + "name": "Vary", + "value": "Origin" + }, + { + "name": "Server", + "value": "gunicorn/19.9.0" + }, + { + "name": "Date", + "value": "Thu, 21 May 2020 11:02:32 GMT" + }, + { + "name": "Connection", + "value": "keep-alive" + }, + { + "name": "Content-Type", + "value": "application/json" + }, + { + "name": "Content-Length", + "value": "96" + }, + { + "name": ":status", + "value": "200" + }, + { + "name": "duration_ms", + "value": "1" + } + ], + "content": { + "size": 96, + "mimeType": "", + "text": "{\"errorCount\":0,\"lastMajorGeneration\":1588494735.612,\"lastSuccessfulGeneration\":1588494735.612}\n" + }, + "redirectURL": "", + "headersSize": -1, + "bodySize": 96 + }, + "cache": {}, + "timings": { + "send": -1, + "wait": -1, + "receive": 1 + } + }, + { + "startedDateTime": "2020-05-21T11:02:33.216000+00:00", + "time": 1, + "request": { + "method": "GET", + "url": "http://trcc-api-service/models/aws_kong5/suites/all/runs", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "X-Request-Id", + "value": "881d41b9bec7092745372d82d7d3821a" + }, + { + "name": "X-Forwarded-Host", + "value": "trcc.stg.testr.io" + }, + { + "name": "X-Forwarded-Proto", + "value": "https" + }, + { + "name": "Accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "User-Agent", + "value": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36" + }, + { + "name": "X-Scheme", + "value": "https" + }, + { + "name": "Dnt", + "value": "1" + }, + { + "name": "Authorization", + "value": "bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJqSEZ0R1dybjJpY084VnpDYXpaZWUyakpFc2drY1k5ZzhpN2FTbGtielRnIn0.eyJleHAiOjE1OTAwNTkyNDMsImlhdCI6MTU5MDA1ODk0MywiYXV0aF90aW1lIjoxNTkwMDU4NjUxLCJqdGkiOiI1ODYzNmRiMy0wN2IxLTQ2ZDYtOGNiNS01MzEzMDFlZGY4MGYiLCJpc3MiOiJodHRwczovL2F1dGguc3RnLnRlc3RyLmlvL2F1dGgvcmVhbG1zL3Rlc3RyIiwiYXVkIjoiYWNjb3VudCIsInN1YiI6IjBlYWU4ZmFjLTgyYTEtNDUwNi05MWQ0LTA4ZDYxZTI2NWY1NCIsInR5cCI6IkJlYXJlciIsImF6cCI6InJlYWN0LWNsaWVudCIsIm5vbmNlIjoiNTRjMTM5OTktMDg0NS00OWNmLWI1OTAtOTY1ZThjNWI0NmJlIiwic2Vzc2lvbl9zdGF0ZSI6ImY3YjEyOTM1LThmMTctNDc1Zi04NmRhLWQ4NjFjZTYxNWZjNyIsImFjciI6IjAiLCJhbGxvd2VkLW9yaWdpbnMiOlsiaHR0cHM6Ly9zdGcudGVzdHIuaW8iLCJjaHJvbWUtZXh0ZW5zaW9uOi8vbmFkZ2VsamVtbWJna2xkaGNwYWZqbXBtYXBpcGdsY20iLCJodHRwOi8vbG9jYWxob3N0OjMwMDAiXSwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyJhY2NvdW50Ijp7InJvbGVzIjpbIm1hbmFnZS1hY2NvdW50IiwibWFuYWdlLWFjY291bnQtbGlua3MiLCJ2aWV3LXByb2ZpbGUiXX19LCJzY29wZSI6Im9wZW5pZCBwcm9maWxlIGVtYWlsIiwiZ3JvdXBfbWVtYmVyc2hpcCI6WyJzb21lT3JnSWQxMjMiXSwiZW1haWxfdmVyaWZpZWQiOnRydWUsIm5hbWUiOiJSYW1pIEJlcm1hbiIsInByZWZlcnJlZF91c2VybmFtZSI6InJhbWkuYmVybWFuQHVwOS5jb20iLCJnaXZlbl9uYW1lIjoiUmFtaSIsImZhbWlseV9uYW1lIjoiQmVybWFuIiwiZ3JvdXBfc3ViZG9tYWluIjoic29tZU9yZ0lkMTIzIiwiZW1haWwiOiJyYW1pLmJlcm1hbkB1cDkuY29tIiwiZmVhdHVyZUZsYWdzIjp7ImVkaXRFbmRwb2ludFZhcmlhYmxlcyI6dHJ1ZSwic2lkZU5hdmlnYXRpb24iOnRydWV9fQ.UEDsnoo9A8CbdIYKXoOrAAq6y2K7Aoqf-PplHhXFoVep9ewwA9qBjXqgn0fK9cnE_KfZKUcX_cy1HDhhdIfR_aHpbWWhQ3gxISkE6ALka18JIrUv7bFaHKio6eEP6tgn34QVP8aQVEB3e3g7h3dLuUvZ1xIMnt6fy03tD3KgiQlvdHwg5FhJLosiCrHgboEqN5VH_f_2QF33XiXTkDG1e-AOEnIIWqloMDTUPZEUvEo_KH68lB0Uu23YhhI5gPAuKQVb_UjFWcF_6Ysvk3C3j0cuk09DZ7YEI1u-bKp58LHnsS6gqNFQxy-CDlZ8Oht5d2I3LbwZZxHzMixzzFzJCA" + }, + { + "name": "Referer", + "value": "https://stg.testr.io/someOrgId123/model/aws_kong5/lastResults/systems/all/runs" + }, + { + "name": "Accept-Language", + "value": "en-IL,en-US;q=0.9,en;q=0.8,he;q=0.7,pl;q=0.6,ru;q=0.5" + }, + { + "name": "X-Real-Ip", + "value": "10.132.0.11" + }, + { + "name": "X-Forwarded-Port", + "value": "443" + }, + { + "name": "Origin", + "value": "https://stg.testr.io" + }, + { + "name": "Sec-Fetch-Site", + "value": "same-site" + }, + { + "name": "Sec-Fetch-Dest", + "value": "empty" + }, + { + "name": "X-Forwarded-For", + "value": "10.132.0.11" + }, + { + "name": "Sec-Fetch-Mode", + "value": "cors" + }, + { + "name": "Accept-Encoding", + "value": "gzip, deflate, br" + }, + { + "name": ":method", + "value": "GET" + }, + { + "name": ":path", + "value": "/models/aws_kong5/suites/all/runs" + }, + { + "name": ":authority", + "value": "trcc.stg.testr.io" + }, + { + "name": ":scheme", + "value": "http" + }, + { + "name": "x-request-start", + "value": "1590058953.216" + }, + { + "name": "x-up9-source", + "value": "10.48.1.44" + }, + { + "name": "x-up9-destination", + "value": "10.48.2.97:5000" + } + ], + "queryString": [], + "headersSize": -1, + "bodySize": -1 + }, + "response": { + "status": 200, + "statusText": "OK", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "Vary", + "value": "Origin" + }, + { + "name": "Server", + "value": "gunicorn/19.9.0" + }, + { + "name": "Date", + "value": "Thu, 21 May 2020 11:02:32 GMT" + }, + { + "name": "Connection", + "value": "keep-alive" + }, + { + "name": "Content-Type", + "value": "application/json" + }, + { + "name": "Content-Length", + "value": "3" + }, + { + "name": "Access-Control-Allow-Origin", + "value": "http://localhost:3000" + }, + { + "name": "Access-Control-Allow-Credentials", + "value": "true" + }, + { + "name": ":status", + "value": "200" + }, + { + "name": "duration_ms", + "value": "1" + } + ], + "content": { + "size": 3, + "mimeType": "", + "text": "[]\n" + }, + "redirectURL": "", + "headersSize": -1, + "bodySize": 3 + }, + "cache": {}, + "timings": { + "send": -1, + "wait": -1, + "receive": 1 + } + }, + { + "startedDateTime": "2020-05-21T11:02:33.215000+00:00", + "time": 2, + "request": { + "method": "OPTIONS", + "url": "http://trcc-api-service/models/roee/status", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "X-Request-Id", + "value": "1c54b7fa39068c1f37260a97f2e37bfe" + }, + { + "name": "X-Forwarded-Proto", + "value": "https" + }, + { + "name": "Referer", + "value": "https://stg.testr.io/someOrgId123/model/roee/lastResults/systems/all/endpoints/12" + }, + { + "name": "X-Real-Ip", + "value": "10.132.0.22" + }, + { + "name": "X-Forwarded-Port", + "value": "443" + }, + { + "name": "Accept", + "value": "*/*" + }, + { + "name": "Sec-Fetch-Mode", + "value": "cors" + }, + { + "name": "Access-Control-Request-Headers", + "value": "authorization" + }, + { + "name": "Sec-Fetch-Site", + "value": "same-site" + }, + { + "name": "Sec-Fetch-Dest", + "value": "empty" + }, + { + "name": "User-Agent", + "value": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36" + }, + { + "name": "Accept-Language", + "value": "en-US,en;q=0.9" + }, + { + "name": "Accept-Encoding", + "value": "gzip, deflate, br" + }, + { + "name": "X-Forwarded-For", + "value": "10.132.0.22" + }, + { + "name": "X-Forwarded-Host", + "value": "trcc.stg.testr.io" + }, + { + "name": "X-Scheme", + "value": "https" + }, + { + "name": "Access-Control-Request-Method", + "value": "GET" + }, + { + "name": "Origin", + "value": "https://stg.testr.io" + }, + { + "name": ":method", + "value": "OPTIONS" + }, + { + "name": ":path", + "value": "/models/roee/status" + }, + { + "name": ":authority", + "value": "trcc.stg.testr.io" + }, + { + "name": ":scheme", + "value": "http" + }, + { + "name": "x-request-start", + "value": "1590058953.215" + }, + { + "name": "x-up9-source", + "value": "10.48.1.44" + }, + { + "name": "x-up9-destination", + "value": "10.48.2.97:5000" + } + ], + "queryString": [], + "headersSize": -1, + "bodySize": -1 + }, + "response": { + "status": 200, + "statusText": "OK", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "Server", + "value": "gunicorn/19.9.0" + }, + { + "name": "Date", + "value": "Thu, 21 May 2020 11:02:32 GMT" + }, + { + "name": "Connection", + "value": "keep-alive" + }, + { + "name": "Content-Type", + "value": "text/html; charset=utf-8" + }, + { + "name": "Allow", + "value": "HEAD, OPTIONS, GET" + }, + { + "name": "Access-Control-Allow-Origin", + "value": "https://stg.testr.io" + }, + { + "name": "Access-Control-Allow-Headers", + "value": "authorization" + }, + { + "name": "Vary", + "value": "Origin" + }, + { + "name": "Content-Length", + "value": "0" + }, + { + "name": "Access-Control-Allow-Credentials", + "value": "true" + }, + { + "name": "Access-Control-Allow-Methods", + "value": "DELETE, GET, HEAD, OPTIONS, PATCH, POST, PUT" + }, + { + "name": ":status", + "value": "200" + }, + { + "name": "duration_ms", + "value": "2" + } + ], + "content": { + "size": 0, + "mimeType": "", + "text": "", + "encoding": "base64" + }, + "redirectURL": "", + "headersSize": -1, + "bodySize": 0 + }, + "cache": {}, + "timings": { + "send": -1, + "wait": -1, + "receive": 2 + } + }, + { + "startedDateTime": "2020-05-21T11:02:33.303000+00:00", + "time": 1, + "request": { + "method": "GET", + "url": "http://trcc-api-service/models/roee/status", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "X-Real-Ip", + "value": "10.132.0.22" + }, + { + "name": "X-Forwarded-Port", + "value": "443" + }, + { + "name": "Sec-Fetch-Site", + "value": "same-site" + }, + { + "name": "Accept-Encoding", + "value": "gzip, deflate, br" + }, + { + "name": "Accept-Language", + "value": "en-US,en;q=0.9" + }, + { + "name": "X-Forwarded-Host", + "value": "trcc.stg.testr.io" + }, + { + "name": "X-Scheme", + "value": "https" + }, + { + "name": "Sec-Fetch-Mode", + "value": "cors" + }, + { + "name": "X-Forwarded-Proto", + "value": "https" + }, + { + "name": "Accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "Authorization", + "value": "bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJqSEZ0R1dybjJpY084VnpDYXpaZWUyakpFc2drY1k5ZzhpN2FTbGtielRnIn0.eyJleHAiOjE1OTAwNTkyNDgsImlhdCI6MTU5MDA1ODk0OCwiYXV0aF90aW1lIjoxNTg5OTU4NDcwLCJqdGkiOiIzMmUyNzIxZi1iMGEwLTQ3NDMtODk0NC0xYWJlYzIxOTdjY2YiLCJpc3MiOiJodHRwczovL2F1dGguc3RnLnRlc3RyLmlvL2F1dGgvcmVhbG1zL3Rlc3RyIiwiYXVkIjoiYWNjb3VudCIsInN1YiI6ImU4NzAxMDZjLWJjYjItNDQxMy05Y2Q2LTUwMTZiNTUxMDRlYiIsInR5cCI6IkJlYXJlciIsImF6cCI6InJlYWN0LWNsaWVudCIsIm5vbmNlIjoiMjM4Y2JjZDgtZWEzZi00YmJkLWI2NDYtMjljNjY3MGZhOWI3Iiwic2Vzc2lvbl9zdGF0ZSI6IjM2ZDc2MDAxLTE5M2EtNGQ5OS05MTIwLTZmNGZkMjEwZDAxMiIsImFjciI6IjAiLCJhbGxvd2VkLW9yaWdpbnMiOlsiaHR0cHM6Ly9zdGcudGVzdHIuaW8iLCJjaHJvbWUtZXh0ZW5zaW9uOi8vbmFkZ2VsamVtbWJna2xkaGNwYWZqbXBtYXBpcGdsY20iLCJodHRwOi8vbG9jYWxob3N0OjMwMDAiXSwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm1hbmFnZUZlYXR1cmVGbGFncyIsIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyJhY2NvdW50Ijp7InJvbGVzIjpbIm1hbmFnZS1hY2NvdW50IiwibWFuYWdlLWFjY291bnQtbGlua3MiLCJ2aWV3LXByb2ZpbGUiXX19LCJzY29wZSI6Im9wZW5pZCBwcm9maWxlIGVtYWlsIiwiZ3JvdXBfbWVtYmVyc2hpcCI6WyJzb21lT3JnSWQxMjMiXSwiZW1haWxfdmVyaWZpZWQiOnRydWUsIm5hbWUiOiJMaXJheiBZZWhlemtlbCIsInByZWZlcnJlZF91c2VybmFtZSI6ImxpcmF6eUB1cDkuY29tIiwiZ2l2ZW5fbmFtZSI6IkxpcmF6IiwiZmFtaWx5X25hbWUiOiJZZWhlemtlbCIsImdyb3VwX3N1YmRvbWFpbiI6InNvbWVPcmdJZDEyMyIsImVtYWlsIjoibGlyYXp5QHVwOS5jb20iLCJmZWF0dXJlRmxhZ3MiOnsiZWRpdEVuZHBvaW50VmFyaWFibGVzIjp0cnVlLCJzaWRlTmF2aWdhdGlvbiI6dHJ1ZX19.g1xYTSoU_qAY1ELvTQL0vzskvMIM2X2TyY3eJYQ129kIUbcPkKqkuz3Ck1ikRG1PNZFsoFpqU05iLRplYPft0N3jWCKLWyHmK6IgYyUW-VVgdJXp3FtHMu6S5aZANWhzaGq2cnHFh_iekhTKp_Pw7ALXyetHp7l7lgEO4-xblV7_ncE4fd2ImfMY6HGfcIwes8H0VYpRRU-zVlc4uUknccnZ8-q6W0wIKVm_3327z91BzKkabWV_HD4GI-b_WPPPspBambRjIq2MQq_-OAVEUe7Qas_yKWTy4IQ9ABOsugdi_MlzrtUsyacCMMwptYk_s6vv7qqFDS_KPQGsGZZauA" + }, + { + "name": "User-Agent", + "value": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36" + }, + { + "name": "Origin", + "value": "https://stg.testr.io" + }, + { + "name": "Sec-Fetch-Dest", + "value": "empty" + }, + { + "name": "X-Request-Id", + "value": "da0e204467d39101a3d36fa53f1b80bf" + }, + { + "name": "X-Forwarded-For", + "value": "10.132.0.22" + }, + { + "name": "Referer", + "value": "https://stg.testr.io/someOrgId123/model/roee/lastResults/systems/all/endpoints/12" + }, + { + "name": ":method", + "value": "GET" + }, + { + "name": ":path", + "value": "/models/roee/status" + }, + { + "name": ":authority", + "value": "trcc.stg.testr.io" + }, + { + "name": ":scheme", + "value": "http" + }, + { + "name": "x-request-start", + "value": "1590058953.303" + }, + { + "name": "x-up9-source", + "value": "10.48.1.44" + }, + { + "name": "x-up9-destination", + "value": "10.48.0.155:5000" + } + ], + "queryString": [], + "headersSize": -1, + "bodySize": -1 + }, + "response": { + "status": 200, + "statusText": "OK", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "Connection", + "value": "keep-alive" + }, + { + "name": "Content-Type", + "value": "application/json" + }, + { + "name": "Content-Length", + "value": "96" + }, + { + "name": "Access-Control-Allow-Origin", + "value": "https://stg.testr.io" + }, + { + "name": "Access-Control-Allow-Credentials", + "value": "true" + }, + { + "name": "Vary", + "value": "Origin" + }, + { + "name": "Server", + "value": "gunicorn/19.9.0" + }, + { + "name": "Date", + "value": "Thu, 21 May 2020 11:02:32 GMT" + }, + { + "name": ":status", + "value": "200" + }, + { + "name": "duration_ms", + "value": "1" + } + ], + "content": { + "size": 96, + "mimeType": "", + "text": "{\"errorCount\":0,\"lastMajorGeneration\":1589448081.392,\"lastSuccessfulGeneration\":1589448081.392}\n" + }, + "redirectURL": "", + "headersSize": -1, + "bodySize": 96 + }, + "cache": {}, + "timings": { + "send": -1, + "wait": -1, + "receive": 1 + } + }, + { + "startedDateTime": "2020-05-21T11:02:33.307000+00:00", + "time": 1, + "request": { + "method": "GET", + "url": "http://trcc-api-service/tapping/state", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "X-Forwarded-For", + "value": "10.132.0.85" + }, + { + "name": "X-Forwarded-Proto", + "value": "https" + }, + { + "name": "X-Scheme", + "value": "https" + }, + { + "name": "Accept-Encoding", + "value": "gzip, deflate" + }, + { + "name": "Accept", + "value": "*/*" + }, + { + "name": "User-Agent", + "value": "python-requests/2.23.0" + }, + { + "name": "Authorization", + "value": "Bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJqSEZ0R1dybjJpY084VnpDYXpaZWUyakpFc2drY1k5ZzhpN2FTbGtielRnIn0.eyJleHAiOjE1OTAwNTkxNzIsImlhdCI6MTU5MDA1ODg3MiwianRpIjoiNDlkZTU1YmEtOWI2OC00MzIyLTk3MWUtMzViYWRhMjIyYzJjIiwiaXNzIjoiaHR0cHM6Ly9hdXRoLnN0Zy50ZXN0ci5pby9hdXRoL3JlYWxtcy90ZXN0ciIsImF1ZCI6ImFjY291bnQiLCJzdWIiOiI0YWFkZWM0Mi01OWE5LTRmZDUtODI3NC1lZWI5NDNmODQyNmUiLCJ0eXAiOiJCZWFyZXIiLCJhenAiOiIzWjE5LTNzYnN2MU9KSDBEd2l2UWkyYmZVSzdsSlNFdSIsInNlc3Npb25fc3RhdGUiOiJiZjEzZjE2ZC0zMzRiLTRkYzItODQwMy02ZjRjODlkM2IzYzMiLCJhY3IiOiIxIiwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyJhY2NvdW50Ijp7InJvbGVzIjpbIm1hbmFnZS1hY2NvdW50IiwibWFuYWdlLWFjY291bnQtbGlua3MiLCJ2aWV3LXByb2ZpbGUiXX19LCJzY29wZSI6InByb2ZpbGUgZW1haWwiLCJjbGllbnRJZCI6IjNaMTktM3Nic3YxT0pIMER3aXZRaTJiZlVLN2xKU0V1IiwiY2xpZW50SG9zdCI6IjEwLjQ4LjEuMSIsImVtYWlsX3ZlcmlmaWVkIjpmYWxzZSwib3JnYW5pemF0aW9uIjoic29tZU9yZ0lkMTIzIiwicHJlZmVycmVkX3VzZXJuYW1lIjoic2VydmljZS1hY2NvdW50LTN6MTktM3Nic3Yxb2poMGR3aXZxaTJiZnVrN2xqc2V1IiwiY2xpZW50QWRkcmVzcyI6IjEwLjQ4LjEuMSIsImVtYWlsIjoic2VydmljZS1hY2NvdW50LTN6MTktM3Nic3Yxb2poMGR3aXZxaTJiZnVrN2xqc2V1QHBsYWNlaG9sZGVyLm9yZyJ9.GG5HWvQ9ufASjOq0RaiQ4l_v-YfeDnZoMA7eLZGhntXpaI3b5RQ6fTwh7XD0Uy_b-hITd5Lxhm0Wlt8U5MPSQRSDUGSJRE97_2egmDQCqLu4oKG7l2I6olLf7U4xWSMRKoATXfgV5Ccx9hGgsQPLLBjYZmLuusuNoUbOCNYEMpM24QB-j5jNMMVJIaECdXy3ka26hsuUOK3wue8tPEIUSmgMhLcwtJ4NKTNlXicE6W8-WpY6U9SCIVkfi3lKH-zFSSWw9XJWg30Qk9SzMcrfd11bSQqGyc3Z0rUSt2XvQC2LaoZPIA4guL6fkFIBu3mcSsHI0TY_pa1Vd_kQH-QtIQ" + }, + { + "name": "X-Request-Id", + "value": "24cdc93fc11b72b6ef603a8164ced195" + }, + { + "name": "X-Real-Ip", + "value": "10.132.0.85" + }, + { + "name": "X-Forwarded-Host", + "value": "trcc.stg.testr.io" + }, + { + "name": "X-Forwarded-Port", + "value": "443" + }, + { + "name": ":method", + "value": "GET" + }, + { + "name": ":path", + "value": "/tapping/state" + }, + { + "name": ":authority", + "value": "trcc.stg.testr.io" + }, + { + "name": ":scheme", + "value": "http" + }, + { + "name": "x-request-start", + "value": "1590058953.307" + }, + { + "name": "x-up9-source", + "value": "10.48.1.44" + }, + { + "name": "x-up9-destination", + "value": "10.48.0.155:5000" + } + ], + "queryString": [], + "headersSize": -1, + "bodySize": -1 + }, + "response": { + "status": 200, + "statusText": "OK", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "Server", + "value": "gunicorn/19.9.0" + }, + { + "name": "Date", + "value": "Thu, 21 May 2020 11:02:32 GMT" + }, + { + "name": "Connection", + "value": "keep-alive" + }, + { + "name": "Content-Type", + "value": "application/json" + }, + { + "name": "Content-Length", + "value": "20352" + }, + { + "name": "Access-Control-Allow-Origin", + "value": "http://localhost:3000" + }, + { + "name": "Access-Control-Allow-Credentials", + "value": "true" + }, + { + "name": "Vary", + "value": "Origin" + }, + { + "name": ":status", + "value": "200" + }, + { + "name": "duration_ms", + "value": "1" + } + ], + "content": { + "size": 20352, + "mimeType": "", + "text": "[{\"agentName\":\"ag6-minikube\",\"creationTime\":\"Sun, 22 Mar 2020 22:11:55 GMT\",\"id\":\"057573f3-c207-4d56-9512-3e1ff9190f53_trdemo_trdemo-client\",\"instancesCount\":0,\"lastSeen\":\"Thu, 09 Apr 2020 22:45:55 GMT\",\"model\":\"ag_trdemo_040701\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"ag6-minikube\",\"creationTime\":\"Sun, 22 Mar 2020 22:11:55 GMT\",\"id\":\"057573f3-c207-4d56-9512-3e1ff9190f53_trdemo_trdemo-flights\",\"instancesCount\":0,\"lastSeen\":\"Thu, 09 Apr 2020 22:45:55 GMT\",\"model\":\"ag_trdemo_040701\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"ag6-minikube\",\"creationTime\":\"Sun, 22 Mar 2020 22:11:55 GMT\",\"id\":\"057573f3-c207-4d56-9512-3e1ff9190f53_trdemo_trdemo-shoppingcart\",\"instancesCount\":0,\"lastSeen\":\"Thu, 09 Apr 2020 22:45:55 GMT\",\"model\":\"ag_trdemo_040701\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"ag6-minikube\",\"creationTime\":\"Sun, 22 Mar 2020 22:11:55 GMT\",\"id\":\"057573f3-c207-4d56-9512-3e1ff9190f53_trdemo_trdemo-users\",\"instancesCount\":0,\"lastSeen\":\"Thu, 09 Apr 2020 22:45:55 GMT\",\"model\":\"ag_trdemo_040701\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"nimrod-gcloud-mycluster\",\"creationTime\":\"Sun, 19 Apr 2020 17:46:09 GMT\",\"id\":\"0c484f93-5987-4e16-ac5d-ee838b8c7b65_tradmin_frontend-deployment\",\"instancesCount\":0,\"lastSeen\":\"Mon, 20 Apr 2020 09:29:13 GMT\",\"model\":\"default\",\"shouldTap\":false,\"type\":\"envoy\"},{\"agentName\":\"nimrod-gcloud-mycluster\",\"creationTime\":\"Mon, 06 Apr 2020 06:50:47 GMT\",\"id\":\"0c484f93-5987-4e16-ac5d-ee838b8c7b65_tradmin_trcc-api-deployment\",\"instancesCount\":0,\"lastSeen\":\"Mon, 20 Apr 2020 09:29:13 GMT\",\"model\":\"default\",\"shouldTap\":false,\"type\":\"envoy\"},{\"agentName\":\"nimrod-gcloud-mycluster\",\"creationTime\":null,\"id\":\"0c484f93-5987-4e16-ac5d-ee838b8c7b65_trdemo_trdemo-client\",\"instancesCount\":0,\"lastSeen\":\"Mon, 20 Apr 2020 09:29:53 GMT\",\"model\":\"ngm-0704-gcloud-05\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"nimrod-gcloud-mycluster\",\"creationTime\":null,\"id\":\"0c484f93-5987-4e16-ac5d-ee838b8c7b65_trdemo_trdemo-flights\",\"instancesCount\":0,\"lastSeen\":\"Mon, 20 Apr 2020 09:29:53 GMT\",\"model\":\"ngm-0704-gcloud-05\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"nimrod-gcloud-mycluster\",\"creationTime\":null,\"id\":\"0c484f93-5987-4e16-ac5d-ee838b8c7b65_trdemo_trdemo-shoppingcart\",\"instancesCount\":0,\"lastSeen\":\"Tue, 07 Apr 2020 17:12:48 GMT\",\"model\":\"ngm-0704-gcloud-05\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"nimrod-gcloud-mycluster\",\"creationTime\":null,\"id\":\"0c484f93-5987-4e16-ac5d-ee838b8c7b65_trdemo_trdemo-users\",\"instancesCount\":0,\"lastSeen\":\"Tue, 07 Apr 2020 17:12:48 GMT\",\"model\":\"ngm-0704-gcloud-05\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"haiut-samcust1105\",\"creationTime\":\"Thu, 23 Apr 2020 13:44:42 GMT\",\"id\":\"2a45b7bd-3615-11ea-b692-42010a8400bd_trdemo_trdemo-client\",\"instancesCount\":1,\"lastSeen\":\"Thu, 21 May 2020 11:02:32 GMT\",\"model\":\"ah.trdemo.0513\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"haiut-samcust1105\",\"creationTime\":\"Thu, 23 Apr 2020 13:44:42 GMT\",\"id\":\"2a45b7bd-3615-11ea-b692-42010a8400bd_trdemo_trdemo-flights\",\"instancesCount\":1,\"lastSeen\":\"Thu, 21 May 2020 11:02:32 GMT\",\"model\":\"ah.trdemo.0513\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"haiut-samcust1105\",\"creationTime\":\"Thu, 23 Apr 2020 13:44:42 GMT\",\"id\":\"2a45b7bd-3615-11ea-b692-42010a8400bd_trdemo_trdemo-shoppingcart\",\"instancesCount\":1,\"lastSeen\":\"Thu, 21 May 2020 11:02:32 GMT\",\"model\":\"ah.trdemo.0513\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"haiut-samcust1105\",\"creationTime\":\"Thu, 23 Apr 2020 13:44:35 GMT\",\"id\":\"2a45b7bd-3615-11ea-b692-42010a8400bd_trdemo_trdemo-users\",\"instancesCount\":1,\"lastSeen\":\"Thu, 21 May 2020 11:02:32 GMT\",\"model\":\"ah.trdemo.0513\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"rami-aws-agent2\",\"creationTime\":\"Thu, 14 May 2020 14:54:45 GMT\",\"id\":\"6edcaf1b-f7f9-4dd7-ae4d-2443ab489213_trdemo_trdemo-client\",\"instancesCount\":1,\"lastSeen\":\"Thu, 21 May 2020 11:02:28 GMT\",\"model\":\"aws_services_envoy\",\"shouldTap\":true,\"type\":\"envoy\"},{\"agentName\":\"rami-aws-agent2\",\"creationTime\":\"Thu, 14 May 2020 14:54:45 GMT\",\"id\":\"6edcaf1b-f7f9-4dd7-ae4d-2443ab489213_trdemo_trdemo-flights\",\"instancesCount\":2,\"lastSeen\":\"Thu, 21 May 2020 11:02:30 GMT\",\"model\":\"aws_services_envoy\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"rami-aws-agent2\",\"creationTime\":\"Thu, 14 May 2020 14:54:45 GMT\",\"id\":\"6edcaf1b-f7f9-4dd7-ae4d-2443ab489213_trdemo_trdemo-shoppingcart\",\"instancesCount\":2,\"lastSeen\":\"Thu, 21 May 2020 11:02:30 GMT\",\"model\":\"aws_services_envoy\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"rami-aws-agent2\",\"creationTime\":\"Thu, 14 May 2020 14:54:45 GMT\",\"id\":\"6edcaf1b-f7f9-4dd7-ae4d-2443ab489213_trdemo_trdemo-users\",\"instancesCount\":2,\"lastSeen\":\"Thu, 21 May 2020 11:02:30 GMT\",\"model\":\"aws_services_envoy\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":null,\"creationTime\":null,\"id\":\"alextestrio-prx1\",\"instancesCount\":0,\"lastSeen\":\"Thu, 19 Mar 2020 13:10:36 GMT\",\"model\":\"ah-0319\",\"shouldTap\":false,\"type\":\"proxy\"},{\"agentName\":null,\"creationTime\":\"Fri, 17 Apr 2020 16:17:58 GMT\",\"id\":\"alexup9com-prx1\",\"instancesCount\":0,\"lastSeen\":\"Sat, 18 Apr 2020 14:12:41 GMT\",\"model\":\"ah-test-1704-01\",\"shouldTap\":false,\"type\":\"proxy\"},{\"agentName\":null,\"creationTime\":null,\"id\":\"alontestrio-prx1\",\"instancesCount\":0,\"lastSeen\":\"Mon, 23 Mar 2020 17:45:49 GMT\",\"model\":\"ag_nectar_032301\",\"shouldTap\":false,\"type\":\"proxy\"},{\"agentName\":null,\"creationTime\":\"Tue, 31 Mar 2020 23:45:34 GMT\",\"id\":\"alonup9com-prx1\",\"instancesCount\":1,\"lastSeen\":\"Thu, 21 May 2020 10:58:30 GMT\",\"model\":\"ag.proxy.050801\",\"shouldTap\":true,\"type\":\"proxy\"},{\"agentName\":null,\"creationTime\":\"Mon, 06 Apr 2020 07:51:20 GMT\",\"id\":\"andrewpetrovup9com-prx1\",\"instancesCount\":0,\"lastSeen\":\"Tue, 07 Apr 2020 08:15:56 GMT\",\"model\":\"ap_test\",\"shouldTap\":false,\"type\":\"proxy\"},{\"agentName\":null,\"creationTime\":null,\"id\":\"andreytestrio-prx1\",\"instancesCount\":0,\"lastSeen\":\"Thu, 26 Mar 2020 11:09:27 GMT\",\"model\":\"andrey2\",\"shouldTap\":false,\"type\":\"proxy\"},{\"agentName\":\"haiut-mk04\",\"creationTime\":null,\"id\":\"c59d834b-00cd-4650-b114-a9da537c56d7_trdemo_trdemo-client\",\"instancesCount\":0,\"lastSeen\":\"Thu, 09 Apr 2020 10:19:27 GMT\",\"model\":\"ah-0329-01\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"haiut-mk04\",\"creationTime\":null,\"id\":\"c59d834b-00cd-4650-b114-a9da537c56d7_trdemo_trdemo-flights\",\"instancesCount\":0,\"lastSeen\":\"Thu, 09 Apr 2020 10:19:27 GMT\",\"model\":\"ah-0329-01\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"haiut-mk04\",\"creationTime\":null,\"id\":\"c59d834b-00cd-4650-b114-a9da537c56d7_trdemo_trdemo-shoppingcart\",\"instancesCount\":0,\"lastSeen\":\"Thu, 09 Apr 2020 10:19:27 GMT\",\"model\":\"ah-0329-01\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"haiut-mk04\",\"creationTime\":null,\"id\":\"c59d834b-00cd-4650-b114-a9da537c56d7_trdemo_trdemo-users\",\"instancesCount\":0,\"lastSeen\":\"Thu, 09 Apr 2020 10:19:27 GMT\",\"model\":\"ah-0329-01\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"nimrod-01-london-aws\",\"creationTime\":\"Mon, 13 Apr 2020 14:32:47 GMT\",\"id\":\"cluster-01-ECSCluster-ZldlPWdD1B9z_trdemo-01-TrdemoClientTaskDefinition-51AGMDOUMFOS\",\"instancesCount\":0,\"lastSeen\":\"Thu, 23 Apr 2020 17:01:37 GMT\",\"model\":\"default\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"nimrod-01-london-aws\",\"creationTime\":\"Sun, 12 Apr 2020 12:18:27 GMT\",\"id\":\"cluster-01-ECSCluster-ZldlPWdD1B9z_trdemo-01-TrdemoClientTaskDefinition-ZSUR7XY24R3X\",\"instancesCount\":0,\"lastSeen\":\"Sun, 12 Apr 2020 14:40:11 GMT\",\"model\":\"ngm-1204-aws-01\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"nimrod-01-london-aws\",\"creationTime\":\"Mon, 13 Apr 2020 14:31:31 GMT\",\"id\":\"cluster-01-ECSCluster-ZldlPWdD1B9z_trdemo-01-TrdemoFlightsTaskDefinition-1GQ6KPSBBH2CG\",\"instancesCount\":0,\"lastSeen\":\"Thu, 23 Apr 2020 17:01:37 GMT\",\"model\":\"default\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"nimrod-01-london-aws\",\"creationTime\":\"Sun, 12 Apr 2020 12:18:27 GMT\",\"id\":\"cluster-01-ECSCluster-ZldlPWdD1B9z_trdemo-01-TrdemoFlightsTaskDefinition-1P92C5J4BMAJ\",\"instancesCount\":0,\"lastSeen\":\"Sun, 12 Apr 2020 14:40:11 GMT\",\"model\":\"ngm-1204-aws-01\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"nimrod-01-london-aws\",\"creationTime\":\"Sun, 12 Apr 2020 12:18:26 GMT\",\"id\":\"cluster-01-ECSCluster-ZldlPWdD1B9z_trdemo-01-TrdemoShoppingcartTaskDefinition-8LVIGNH5OGR5\",\"instancesCount\":0,\"lastSeen\":\"Sun, 12 Apr 2020 14:40:09 GMT\",\"model\":\"ngm-1204-aws-01\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"nimrod-01-london-aws\",\"creationTime\":\"Mon, 13 Apr 2020 14:31:29 GMT\",\"id\":\"cluster-01-ECSCluster-ZldlPWdD1B9z_trdemo-01-TrdemoShoppingcartTaskDefinition-EF79FKMGB0S5\",\"instancesCount\":0,\"lastSeen\":\"Thu, 23 Apr 2020 17:01:59 GMT\",\"model\":\"default\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"nimrod-01-london-aws\",\"creationTime\":\"Mon, 13 Apr 2020 14:31:36 GMT\",\"id\":\"cluster-01-ECSCluster-ZldlPWdD1B9z_trdemo-01-TrdemoUsersTaskDefinition-1SOGKLV12R6VX\",\"instancesCount\":0,\"lastSeen\":\"Thu, 23 Apr 2020 17:01:53 GMT\",\"model\":\"default\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"nimrod-01-london-aws\",\"creationTime\":\"Sun, 12 Apr 2020 12:18:26 GMT\",\"id\":\"cluster-01-ECSCluster-ZldlPWdD1B9z_trdemo-01-TrdemoUsersTaskDefinition-IA4ZUEXN3VPX\",\"instancesCount\":0,\"lastSeen\":\"Sun, 12 Apr 2020 14:40:09 GMT\",\"model\":\"ngm-1204-aws-01\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"nimrod-01-london-aws\",\"creationTime\":\"Sun, 12 Apr 2020 14:51:10 GMT\",\"id\":\"cluster-01-ECSCluster-ZldlPWdD1B9z_trdemo-02-TrdemoClientTaskDefinition-19SVXVU4US12S\",\"instancesCount\":0,\"lastSeen\":\"Sun, 12 Apr 2020 15:59:02 GMT\",\"model\":\"ngm-1204-aws-02\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"nimrod-01-london-aws\",\"creationTime\":\"Sun, 12 Apr 2020 14:49:24 GMT\",\"id\":\"cluster-01-ECSCluster-ZldlPWdD1B9z_trdemo-02-TrdemoFlightsTaskDefinition-2P1PRCG5UHC3\",\"instancesCount\":0,\"lastSeen\":\"Sun, 12 Apr 2020 15:59:04 GMT\",\"model\":\"ngm-1204-aws-02\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"nimrod-01-london-aws\",\"creationTime\":\"Sun, 12 Apr 2020 14:48:48 GMT\",\"id\":\"cluster-01-ECSCluster-ZldlPWdD1B9z_trdemo-02-TrdemoShoppingcartTaskDefinition-1TLHJW9NH2B5A\",\"instancesCount\":0,\"lastSeen\":\"Sun, 12 Apr 2020 15:59:00 GMT\",\"model\":\"ngm-1204-aws-02\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"nimrod-01-london-aws\",\"creationTime\":\"Sun, 12 Apr 2020 14:48:43 GMT\",\"id\":\"cluster-01-ECSCluster-ZldlPWdD1B9z_trdemo-02-TrdemoUsersTaskDefinition-1W5X329FWGXZ3\",\"instancesCount\":0,\"lastSeen\":\"Sun, 12 Apr 2020 15:59:00 GMT\",\"model\":\"ngm-1204-aws-02\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"haiut-aws-fra-03\",\"creationTime\":\"Sun, 26 Apr 2020 20:09:14 GMT\",\"id\":\"d2d6c435-eaf5-48f6-8e61-1e7c57251fbd_trdemo_trdemo-client\",\"instancesCount\":0,\"lastSeen\":\"Sun, 10 May 2020 13:31:29 GMT\",\"model\":\"aws_new_resolving2\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"haiut-aws-fra-03\",\"creationTime\":\"Sun, 26 Apr 2020 20:09:09 GMT\",\"id\":\"d2d6c435-eaf5-48f6-8e61-1e7c57251fbd_trdemo_trdemo-flights\",\"instancesCount\":0,\"lastSeen\":\"Sun, 10 May 2020 13:31:31 GMT\",\"model\":\"aws_new_resolving2\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"haiut-aws-fra-03\",\"creationTime\":\"Sun, 26 Apr 2020 20:09:14 GMT\",\"id\":\"d2d6c435-eaf5-48f6-8e61-1e7c57251fbd_trdemo_trdemo-shoppingcart\",\"instancesCount\":0,\"lastSeen\":\"Sun, 10 May 2020 13:31:29 GMT\",\"model\":\"aws_new_resolving2\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"haiut-aws-fra-03\",\"creationTime\":\"Sun, 26 Apr 2020 20:09:09 GMT\",\"id\":\"d2d6c435-eaf5-48f6-8e61-1e7c57251fbd_trdemo_trdemo-users\",\"instancesCount\":0,\"lastSeen\":\"Sun, 10 May 2020 13:31:31 GMT\",\"model\":\"aws_new_resolving2\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":null,\"creationTime\":null,\"id\":\"e677a5bc-0542-11ea-a607-42010a8400ce_tradmin_frontend-deployment\",\"instancesCount\":0,\"lastSeen\":\"Sun, 10 May 2020 13:31:31 GMT\",\"model\":\"default\",\"shouldTap\":false,\"type\":\"envoy\"},{\"agentName\":null,\"creationTime\":\"Fri, 03 Apr 2020 08:00:08 GMT\",\"id\":\"e677a5bc-0542-11ea-a607-42010a8400ce_tradmin_trcc-api-deployme-f9aaef0a8d6f47bab4894c055aa72533-67c7fc5czfxr\",\"instancesCount\":0,\"lastSeen\":\"Fri, 03 Apr 2020 05:04:11 GMT\",\"model\":\"default\",\"shouldTap\":false,\"type\":\"envoy\"},{\"agentName\":null,\"creationTime\":null,\"id\":\"e677a5bc-0542-11ea-a607-42010a8400ce_tradmin_trcc-api-deployment\",\"instancesCount\":0,\"lastSeen\":\"Thu, 23 Apr 2020 08:12:03 GMT\",\"model\":\"sy-trcc-dogfood-3\",\"shouldTap\":false,\"type\":\"envoy\"},{\"agentName\":\"stg-cloud-agent\",\"creationTime\":\"Thu, 23 Apr 2020 08:11:52 GMT\",\"id\":\"e677a5bc-0542-11ea-a607-42010a8400ce_tradmin_trcc-api-deployment-stable\",\"instancesCount\":2,\"lastSeen\":\"Thu, 21 May 2020 11:02:31 GMT\",\"model\":\"sy-trcc-dogfood-10\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"stg-cloud-agent\",\"creationTime\":null,\"id\":\"e677a5bc-0542-11ea-a607-42010a8400ce_trdemo_trdemo-client\",\"instancesCount\":0,\"lastSeen\":\"Thu, 21 May 2020 11:02:29 GMT\",\"model\":\"up9_011401\",\"shouldTap\":false,\"type\":\"envoy\"},{\"agentName\":\"stg-cloud-agent\",\"creationTime\":null,\"id\":\"e677a5bc-0542-11ea-a607-42010a8400ce_trdemo_trdemo-flights\",\"instancesCount\":0,\"lastSeen\":\"Thu, 21 May 2020 11:02:29 GMT\",\"model\":\"up9_011401\",\"shouldTap\":false,\"type\":\"passive\"},{\"agentName\":null,\"creationTime\":null,\"id\":\"e677a5bc-0542-11ea-a607-42010a8400ce_trdemo_trdemo-shoppingcart\",\"instancesCount\":0,\"lastSeen\":\"Sun, 10 May 2020 13:31:30 GMT\",\"model\":\"bookstack-remote\",\"shouldTap\":false,\"type\":\"passive\"},{\"agentName\":\"stg-cloud-agent\",\"creationTime\":null,\"id\":\"e677a5bc-0542-11ea-a607-42010a8400ce_trdemo_trdemo-users\",\"instancesCount\":0,\"lastSeen\":\"Thu, 21 May 2020 11:02:29 GMT\",\"model\":\"up9_011401\",\"shouldTap\":false,\"type\":\"passive\"},{\"agentName\":null,\"creationTime\":null,\"id\":\"lirazyup9com-prx1\",\"instancesCount\":0,\"lastSeen\":\"Thu, 21 May 2020 10:51:01 GMT\",\"model\":\"liraz_test_2105\",\"shouldTap\":false,\"type\":\"proxy\"},{\"agentName\":\"nimrod-01-london-aws\",\"creationTime\":\"Thu, 21 May 2020 10:58:05 GMT\",\"id\":\"london-01-ECSCluster-27iuIYva8nO4_trdemo-01-TrdemoClientTaskDefinition-4TTVATDRY0CJ\",\"instancesCount\":1,\"lastSeen\":\"Thu, 21 May 2020 11:02:31 GMT\",\"model\":\"default\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"nimrod-01-london-aws\",\"creationTime\":\"Thu, 21 May 2020 10:51:53 GMT\",\"id\":\"london-01-ECSCluster-27iuIYva8nO4_trdemo-01-TrdemoFlightsTaskDefinition-HBBUAO47D2VT\",\"instancesCount\":1,\"lastSeen\":\"Thu, 21 May 2020 11:02:30 GMT\",\"model\":\"default\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"nimrod-01-london-aws\",\"creationTime\":\"Thu, 21 May 2020 10:57:09 GMT\",\"id\":\"london-01-ECSCluster-27iuIYva8nO4_trdemo-01-TrdemoShoppingcartTaskDefinition-1UAMK7WTR1SWE\",\"instancesCount\":1,\"lastSeen\":\"Thu, 21 May 2020 11:02:32 GMT\",\"model\":\"default\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"nimrod-01-london-aws\",\"creationTime\":\"Thu, 21 May 2020 10:56:49 GMT\",\"id\":\"london-01-ECSCluster-27iuIYva8nO4_trdemo-01-TrdemoUsersTaskDefinition-1HEEGJCBNB4PB\",\"instancesCount\":1,\"lastSeen\":\"Thu, 21 May 2020 11:02:31 GMT\",\"model\":\"default\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"nimrod-01-paris-aws\",\"creationTime\":\"Tue, 12 May 2020 14:14:42 GMT\",\"id\":\"nimrod-01-ECSCluster-1ENCWB3MDFEUQ_trdemo-01-TrdemoClientTaskDefinition-1HQRZT31KSGK0\",\"instancesCount\":1,\"lastSeen\":\"Thu, 21 May 2020 11:02:29 GMT\",\"model\":\"ngm-1305-aws-01\",\"shouldTap\":false,\"type\":\"passive\"},{\"agentName\":\"nimrod-01-paris-aws\",\"creationTime\":\"Mon, 06 Apr 2020 08:37:02 GMT\",\"id\":\"nimrod-01-ECSCluster-1ENCWB3MDFEUQ_trdemo-01-TrdemoClientTaskDefinition-PCTOAFN3NUUL\",\"instancesCount\":0,\"lastSeen\":\"Tue, 12 May 2020 12:36:48 GMT\",\"model\":\"default\",\"shouldTap\":false,\"type\":\"passive\"},{\"agentName\":\"nimrod-01-paris-aws\",\"creationTime\":\"Mon, 06 Apr 2020 10:46:50 GMT\",\"id\":\"nimrod-01-ECSCluster-1ENCWB3MDFEUQ_trdemo-01-TrdemoFlightsTaskDefinition-1RP81I0ETBSRA\",\"instancesCount\":0,\"lastSeen\":\"Tue, 12 May 2020 12:34:26 GMT\",\"model\":\"default\",\"shouldTap\":false,\"type\":\"passive\"},{\"agentName\":\"nimrod-01-paris-aws\",\"creationTime\":\"Tue, 12 May 2020 14:13:16 GMT\",\"id\":\"nimrod-01-ECSCluster-1ENCWB3MDFEUQ_trdemo-01-TrdemoFlightsTaskDefinition-6MATLSTUSK15\",\"instancesCount\":1,\"lastSeen\":\"Thu, 21 May 2020 11:02:30 GMT\",\"model\":\"ngm-1305-aws-01\",\"shouldTap\":false,\"type\":\"passive\"},{\"agentName\":\"nimrod-01-paris-aws\",\"creationTime\":\"Tue, 12 May 2020 14:13:05 GMT\",\"id\":\"nimrod-01-ECSCluster-1ENCWB3MDFEUQ_trdemo-01-TrdemoShoppingcartTaskDefinition-1NSJ45NVQ46VV\",\"instancesCount\":1,\"lastSeen\":\"Thu, 21 May 2020 11:02:30 GMT\",\"model\":\"ngm-1305-aws-01\",\"shouldTap\":false,\"type\":\"passive\"},{\"agentName\":\"nimrod-01-paris-aws\",\"creationTime\":\"Mon, 06 Apr 2020 08:37:02 GMT\",\"id\":\"nimrod-01-ECSCluster-1ENCWB3MDFEUQ_trdemo-01-TrdemoShoppingcartTaskDefinition-VAY9IULBYL27\",\"instancesCount\":0,\"lastSeen\":\"Tue, 12 May 2020 12:34:12 GMT\",\"model\":\"default\",\"shouldTap\":false,\"type\":\"passive\"},{\"agentName\":\"nimrod-01-paris-aws\",\"creationTime\":\"Tue, 12 May 2020 14:13:05 GMT\",\"id\":\"nimrod-01-ECSCluster-1ENCWB3MDFEUQ_trdemo-01-TrdemoUsersTaskDefinition-1KSLKXSKQ0YGI\",\"instancesCount\":1,\"lastSeen\":\"Thu, 21 May 2020 11:02:31 GMT\",\"model\":\"ngm-1305-aws-01\",\"shouldTap\":false,\"type\":\"passive\"},{\"agentName\":\"nimrod-01-paris-aws\",\"creationTime\":\"Mon, 06 Apr 2020 10:47:04 GMT\",\"id\":\"nimrod-01-ECSCluster-1ENCWB3MDFEUQ_trdemo-01-TrdemoUsersTaskDefinition-A4VERGQEE2C9\",\"instancesCount\":0,\"lastSeen\":\"Tue, 12 May 2020 12:34:26 GMT\",\"model\":\"default\",\"shouldTap\":false,\"type\":\"passive\"},{\"agentName\":\"nimrod-01-paris-aws\",\"creationTime\":\"Tue, 12 May 2020 16:03:37 GMT\",\"id\":\"nimrod-01-ECSCluster-1ENCWB3MDFEUQ_trdemo-no-tapper-TrdemoClientTaskDefinition-1SP9ZUN1LZE3N\",\"instancesCount\":0,\"lastSeen\":\"Tue, 12 May 2020 21:58:09 GMT\",\"model\":\"ngm-1205-aws-no-tapper-04\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"nimrod-01-paris-aws\",\"creationTime\":\"Tue, 12 May 2020 16:04:39 GMT\",\"id\":\"nimrod-01-ECSCluster-1ENCWB3MDFEUQ_trdemo-no-tapper-TrdemoFlightsTaskDefinition-1U2E8ONADR65S\",\"instancesCount\":0,\"lastSeen\":\"Tue, 12 May 2020 21:56:39 GMT\",\"model\":\"ngm-1205-aws-no-tapper-04\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"nimrod-01-paris-aws\",\"creationTime\":\"Tue, 12 May 2020 16:01:49 GMT\",\"id\":\"nimrod-01-ECSCluster-1ENCWB3MDFEUQ_trdemo-no-tapper-TrdemoShoppingcartTaskDefinition-PFB3IL2KQWE3\",\"instancesCount\":0,\"lastSeen\":\"Tue, 12 May 2020 21:56:34 GMT\",\"model\":\"ngm-1205-aws-no-tapper-04\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"nimrod-01-paris-aws\",\"creationTime\":\"Tue, 12 May 2020 16:01:54 GMT\",\"id\":\"nimrod-01-ECSCluster-1ENCWB3MDFEUQ_trdemo-no-tapper-TrdemoUsersTaskDefinition-CXOR2F6JGPNY\",\"instancesCount\":0,\"lastSeen\":\"Tue, 12 May 2020 21:56:54 GMT\",\"model\":\"ngm-1205-aws-no-tapper-04\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":null,\"creationTime\":null,\"id\":\"nimrodup9com-prx1\",\"instancesCount\":0,\"lastSeen\":\"Sun, 29 Mar 2020 12:59:27 GMT\",\"model\":\"ngm-2020-03-29-00\",\"shouldTap\":false,\"type\":\"proxy\"},{\"agentName\":null,\"creationTime\":\"Sun, 29 Mar 2020 14:09:23 GMT\",\"id\":\"nimrodup9com-someorgid123-prx1-local\",\"instancesCount\":0,\"lastSeen\":\"Sun, 29 Mar 2020 14:15:05 GMT\",\"model\":\"ngm-2020-03-29-01\",\"shouldTap\":true,\"type\":\"local_proxy\"},{\"agentName\":null,\"creationTime\":null,\"id\":\"ofriup9com-prx1\",\"instancesCount\":0,\"lastSeen\":\"Wed, 04 Mar 2020 08:04:47 GMT\",\"model\":\"aaa\",\"shouldTap\":false,\"type\":\"proxy\"},{\"agentName\":null,\"creationTime\":\"Thu, 19 Mar 2020 16:03:38 GMT\",\"id\":\"rami-prx1\",\"instancesCount\":0,\"lastSeen\":\"Thu, 19 Mar 2020 16:03:38 GMT\",\"model\":\"default\",\"shouldTap\":true,\"type\":\"proxy\"},{\"agentName\":null,\"creationTime\":\"Thu, 02 Apr 2020 06:31:20 GMT\",\"id\":\"ramibermanup9com-prx1\",\"instancesCount\":0,\"lastSeen\":\"Thu, 23 Apr 2020 06:26:18 GMT\",\"model\":\"rami-endpoints\",\"shouldTap\":false,\"type\":\"proxy\"},{\"agentName\":null,\"creationTime\":\"Mon, 04 May 2020 11:25:30 GMT\",\"id\":\"ramibrn1gmailcom-prx1\",\"instancesCount\":0,\"lastSeen\":\"Mon, 04 May 2020 11:26:11 GMT\",\"model\":\"regression-04-05-20\",\"shouldTap\":false,\"type\":\"proxy\"},{\"agentName\":null,\"creationTime\":\"Sun, 12 Apr 2020 12:50:24 GMT\",\"id\":\"ramibrngmailcom-prx1\",\"instancesCount\":0,\"lastSeen\":\"Sun, 12 Apr 2020 12:51:00 GMT\",\"model\":\"rami-proxy-test\",\"shouldTap\":false,\"type\":\"proxy\"},{\"agentName\":null,\"creationTime\":\"Mon, 16 Mar 2020 14:14:37 GMT\",\"id\":\"roeegadottestrio-prx1\",\"instancesCount\":0,\"lastSeen\":\"Thu, 19 Mar 2020 07:02:30 GMT\",\"model\":\"roee\",\"shouldTap\":false,\"type\":\"proxy\"},{\"agentName\":null,\"creationTime\":\"Tue, 31 Mar 2020 09:31:42 GMT\",\"id\":\"roeegadotup9com-someorgid123-prx1-local\",\"instancesCount\":0,\"lastSeen\":\"Mon, 13 Apr 2020 06:29:10 GMT\",\"model\":\"rg_local_proxy_5\",\"shouldTap\":false,\"type\":\"local_proxy\"}]\n" + }, + "redirectURL": "", + "headersSize": -1, + "bodySize": 20352 + }, + "cache": {}, + "timings": { + "send": -1, + "wait": -1, + "receive": 1 + } + }, + { + "startedDateTime": "2020-05-21T11:02:33.218000+00:00", + "time": 1, + "request": { + "method": "GET", + "url": "http://trcc-api-service/tapping/state", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "Authorization", + "value": "Bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJqSEZ0R1dybjJpY084VnpDYXpaZWUyakpFc2drY1k5ZzhpN2FTbGtielRnIn0.eyJleHAiOjE1OTAwNTkwNTcsImlhdCI6MTU5MDA1ODc1NywianRpIjoiNzBkNTNmNjItYzI0MS00ZjNiLWIxZTUtZDUzMzc3NDgyYTU0IiwiaXNzIjoiaHR0cHM6Ly9hdXRoLnN0Zy50ZXN0ci5pby9hdXRoL3JlYWxtcy90ZXN0ciIsImF1ZCI6ImFjY291bnQiLCJzdWIiOiI0YWFkZWM0Mi01OWE5LTRmZDUtODI3NC1lZWI5NDNmODQyNmUiLCJ0eXAiOiJCZWFyZXIiLCJhenAiOiIzWjE5LTNzYnN2MU9KSDBEd2l2UWkyYmZVSzdsSlNFdSIsInNlc3Npb25fc3RhdGUiOiIyNDk3MGExNC05OGVkLTRiOTctOTg0ZS1iMmRhZTc4ZjhhZjciLCJhY3IiOiIxIiwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyJhY2NvdW50Ijp7InJvbGVzIjpbIm1hbmFnZS1hY2NvdW50IiwibWFuYWdlLWFjY291bnQtbGlua3MiLCJ2aWV3LXByb2ZpbGUiXX19LCJzY29wZSI6InByb2ZpbGUgZW1haWwiLCJjbGllbnRJZCI6IjNaMTktM3Nic3YxT0pIMER3aXZRaTJiZlVLN2xKU0V1IiwiY2xpZW50SG9zdCI6IjEwLjQ4LjEuMSIsImVtYWlsX3ZlcmlmaWVkIjpmYWxzZSwib3JnYW5pemF0aW9uIjoic29tZU9yZ0lkMTIzIiwicHJlZmVycmVkX3VzZXJuYW1lIjoic2VydmljZS1hY2NvdW50LTN6MTktM3Nic3Yxb2poMGR3aXZxaTJiZnVrN2xqc2V1IiwiY2xpZW50QWRkcmVzcyI6IjEwLjQ4LjEuMSIsImVtYWlsIjoic2VydmljZS1hY2NvdW50LTN6MTktM3Nic3Yxb2poMGR3aXZxaTJiZnVrN2xqc2V1QHBsYWNlaG9sZGVyLm9yZyJ9.huJeB9umhOE_tpNCJ1-IpH7_9kfPrWqrCbjmp0zziUx0OV4m1lzK5xVW3gJHQisQB-7ksZ720k1243YN6tlhnwcfAh50f7eqVoIekFGxTvKd9cU-jHhe12uT4ljci_pD30tK82OduwNE4SgZLEprst6Sq0S-OBvLQwBLsYBNrWhivBhfgYV47ZUo6xqR7lJRck2IUsMd_-LVsCuPAEzfdvWXVU2qaQ5aJPNKq-ujLwrociqJq7TiIFMdDf-R7mrPQcIzbhlOINSQbsBrTc1eiWDQAalevgUrJibK0H4LNs_f02KX246kjwM7Jm3IVncRg1bNXDXHqk6d4HA47CIdew" + }, + { + "name": "X-Forwarded-Port", + "value": "443" + }, + { + "name": "X-Forwarded-Proto", + "value": "https" + }, + { + "name": "Accept", + "value": "*/*" + }, + { + "name": "X-Scheme", + "value": "https" + }, + { + "name": "User-Agent", + "value": "python-requests/2.23.0" + }, + { + "name": "Accept-Encoding", + "value": "gzip, deflate" + }, + { + "name": "X-Request-Id", + "value": "9b0bd8a4b86a4e8b572551d51fd699ee" + }, + { + "name": "X-Real-Ip", + "value": "10.132.0.85" + }, + { + "name": "X-Forwarded-For", + "value": "10.132.0.85" + }, + { + "name": "X-Forwarded-Host", + "value": "trcc.stg.testr.io" + }, + { + "name": ":method", + "value": "GET" + }, + { + "name": ":path", + "value": "/tapping/state" + }, + { + "name": ":authority", + "value": "trcc.stg.testr.io" + }, + { + "name": ":scheme", + "value": "http" + }, + { + "name": "x-request-start", + "value": "1590058953.218" + }, + { + "name": "x-up9-source", + "value": "10.48.1.44" + }, + { + "name": "x-up9-destination", + "value": "10.48.2.97:5000" + } + ], + "queryString": [], + "headersSize": -1, + "bodySize": -1 + }, + "response": { + "status": 200, + "statusText": "OK", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "Connection", + "value": "keep-alive" + }, + { + "name": "Content-Type", + "value": "application/json" + }, + { + "name": "Content-Length", + "value": "20352" + }, + { + "name": "Access-Control-Allow-Origin", + "value": "http://localhost:3000" + }, + { + "name": "Access-Control-Allow-Credentials", + "value": "true" + }, + { + "name": "Vary", + "value": "Origin" + }, + { + "name": "Server", + "value": "gunicorn/19.9.0" + }, + { + "name": "Date", + "value": "Thu, 21 May 2020 11:02:32 GMT" + }, + { + "name": ":status", + "value": "200" + }, + { + "name": "duration_ms", + "value": "1" + } + ], + "content": { + "size": 20352, + "mimeType": "", + "text": "[{\"agentName\":\"ag6-minikube\",\"creationTime\":\"Sun, 22 Mar 2020 22:11:55 GMT\",\"id\":\"057573f3-c207-4d56-9512-3e1ff9190f53_trdemo_trdemo-client\",\"instancesCount\":0,\"lastSeen\":\"Thu, 09 Apr 2020 22:45:55 GMT\",\"model\":\"ag_trdemo_040701\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"ag6-minikube\",\"creationTime\":\"Sun, 22 Mar 2020 22:11:55 GMT\",\"id\":\"057573f3-c207-4d56-9512-3e1ff9190f53_trdemo_trdemo-flights\",\"instancesCount\":0,\"lastSeen\":\"Thu, 09 Apr 2020 22:45:55 GMT\",\"model\":\"ag_trdemo_040701\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"ag6-minikube\",\"creationTime\":\"Sun, 22 Mar 2020 22:11:55 GMT\",\"id\":\"057573f3-c207-4d56-9512-3e1ff9190f53_trdemo_trdemo-shoppingcart\",\"instancesCount\":0,\"lastSeen\":\"Thu, 09 Apr 2020 22:45:55 GMT\",\"model\":\"ag_trdemo_040701\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"ag6-minikube\",\"creationTime\":\"Sun, 22 Mar 2020 22:11:55 GMT\",\"id\":\"057573f3-c207-4d56-9512-3e1ff9190f53_trdemo_trdemo-users\",\"instancesCount\":0,\"lastSeen\":\"Thu, 09 Apr 2020 22:45:55 GMT\",\"model\":\"ag_trdemo_040701\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"nimrod-gcloud-mycluster\",\"creationTime\":\"Sun, 19 Apr 2020 17:46:09 GMT\",\"id\":\"0c484f93-5987-4e16-ac5d-ee838b8c7b65_tradmin_frontend-deployment\",\"instancesCount\":0,\"lastSeen\":\"Mon, 20 Apr 2020 09:29:13 GMT\",\"model\":\"default\",\"shouldTap\":false,\"type\":\"envoy\"},{\"agentName\":\"nimrod-gcloud-mycluster\",\"creationTime\":\"Mon, 06 Apr 2020 06:50:47 GMT\",\"id\":\"0c484f93-5987-4e16-ac5d-ee838b8c7b65_tradmin_trcc-api-deployment\",\"instancesCount\":0,\"lastSeen\":\"Mon, 20 Apr 2020 09:29:13 GMT\",\"model\":\"default\",\"shouldTap\":false,\"type\":\"envoy\"},{\"agentName\":\"nimrod-gcloud-mycluster\",\"creationTime\":null,\"id\":\"0c484f93-5987-4e16-ac5d-ee838b8c7b65_trdemo_trdemo-client\",\"instancesCount\":0,\"lastSeen\":\"Mon, 20 Apr 2020 09:29:53 GMT\",\"model\":\"ngm-0704-gcloud-05\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"nimrod-gcloud-mycluster\",\"creationTime\":null,\"id\":\"0c484f93-5987-4e16-ac5d-ee838b8c7b65_trdemo_trdemo-flights\",\"instancesCount\":0,\"lastSeen\":\"Mon, 20 Apr 2020 09:29:53 GMT\",\"model\":\"ngm-0704-gcloud-05\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"nimrod-gcloud-mycluster\",\"creationTime\":null,\"id\":\"0c484f93-5987-4e16-ac5d-ee838b8c7b65_trdemo_trdemo-shoppingcart\",\"instancesCount\":0,\"lastSeen\":\"Tue, 07 Apr 2020 17:12:48 GMT\",\"model\":\"ngm-0704-gcloud-05\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"nimrod-gcloud-mycluster\",\"creationTime\":null,\"id\":\"0c484f93-5987-4e16-ac5d-ee838b8c7b65_trdemo_trdemo-users\",\"instancesCount\":0,\"lastSeen\":\"Tue, 07 Apr 2020 17:12:48 GMT\",\"model\":\"ngm-0704-gcloud-05\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"haiut-samcust1105\",\"creationTime\":\"Thu, 23 Apr 2020 13:44:42 GMT\",\"id\":\"2a45b7bd-3615-11ea-b692-42010a8400bd_trdemo_trdemo-client\",\"instancesCount\":1,\"lastSeen\":\"Thu, 21 May 2020 11:02:32 GMT\",\"model\":\"ah.trdemo.0513\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"haiut-samcust1105\",\"creationTime\":\"Thu, 23 Apr 2020 13:44:42 GMT\",\"id\":\"2a45b7bd-3615-11ea-b692-42010a8400bd_trdemo_trdemo-flights\",\"instancesCount\":1,\"lastSeen\":\"Thu, 21 May 2020 11:02:32 GMT\",\"model\":\"ah.trdemo.0513\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"haiut-samcust1105\",\"creationTime\":\"Thu, 23 Apr 2020 13:44:42 GMT\",\"id\":\"2a45b7bd-3615-11ea-b692-42010a8400bd_trdemo_trdemo-shoppingcart\",\"instancesCount\":1,\"lastSeen\":\"Thu, 21 May 2020 11:02:32 GMT\",\"model\":\"ah.trdemo.0513\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"haiut-samcust1105\",\"creationTime\":\"Thu, 23 Apr 2020 13:44:35 GMT\",\"id\":\"2a45b7bd-3615-11ea-b692-42010a8400bd_trdemo_trdemo-users\",\"instancesCount\":1,\"lastSeen\":\"Thu, 21 May 2020 11:02:32 GMT\",\"model\":\"ah.trdemo.0513\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"rami-aws-agent2\",\"creationTime\":\"Thu, 14 May 2020 14:54:45 GMT\",\"id\":\"6edcaf1b-f7f9-4dd7-ae4d-2443ab489213_trdemo_trdemo-client\",\"instancesCount\":1,\"lastSeen\":\"Thu, 21 May 2020 11:02:28 GMT\",\"model\":\"aws_services_envoy\",\"shouldTap\":true,\"type\":\"envoy\"},{\"agentName\":\"rami-aws-agent2\",\"creationTime\":\"Thu, 14 May 2020 14:54:45 GMT\",\"id\":\"6edcaf1b-f7f9-4dd7-ae4d-2443ab489213_trdemo_trdemo-flights\",\"instancesCount\":2,\"lastSeen\":\"Thu, 21 May 2020 11:02:30 GMT\",\"model\":\"aws_services_envoy\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"rami-aws-agent2\",\"creationTime\":\"Thu, 14 May 2020 14:54:45 GMT\",\"id\":\"6edcaf1b-f7f9-4dd7-ae4d-2443ab489213_trdemo_trdemo-shoppingcart\",\"instancesCount\":2,\"lastSeen\":\"Thu, 21 May 2020 11:02:30 GMT\",\"model\":\"aws_services_envoy\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"rami-aws-agent2\",\"creationTime\":\"Thu, 14 May 2020 14:54:45 GMT\",\"id\":\"6edcaf1b-f7f9-4dd7-ae4d-2443ab489213_trdemo_trdemo-users\",\"instancesCount\":2,\"lastSeen\":\"Thu, 21 May 2020 11:02:30 GMT\",\"model\":\"aws_services_envoy\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":null,\"creationTime\":null,\"id\":\"alextestrio-prx1\",\"instancesCount\":0,\"lastSeen\":\"Thu, 19 Mar 2020 13:10:36 GMT\",\"model\":\"ah-0319\",\"shouldTap\":false,\"type\":\"proxy\"},{\"agentName\":null,\"creationTime\":\"Fri, 17 Apr 2020 16:17:58 GMT\",\"id\":\"alexup9com-prx1\",\"instancesCount\":0,\"lastSeen\":\"Sat, 18 Apr 2020 14:12:41 GMT\",\"model\":\"ah-test-1704-01\",\"shouldTap\":false,\"type\":\"proxy\"},{\"agentName\":null,\"creationTime\":null,\"id\":\"alontestrio-prx1\",\"instancesCount\":0,\"lastSeen\":\"Mon, 23 Mar 2020 17:45:49 GMT\",\"model\":\"ag_nectar_032301\",\"shouldTap\":false,\"type\":\"proxy\"},{\"agentName\":null,\"creationTime\":\"Tue, 31 Mar 2020 23:45:34 GMT\",\"id\":\"alonup9com-prx1\",\"instancesCount\":1,\"lastSeen\":\"Thu, 21 May 2020 10:58:30 GMT\",\"model\":\"ag.proxy.050801\",\"shouldTap\":true,\"type\":\"proxy\"},{\"agentName\":null,\"creationTime\":\"Mon, 06 Apr 2020 07:51:20 GMT\",\"id\":\"andrewpetrovup9com-prx1\",\"instancesCount\":0,\"lastSeen\":\"Tue, 07 Apr 2020 08:15:56 GMT\",\"model\":\"ap_test\",\"shouldTap\":false,\"type\":\"proxy\"},{\"agentName\":null,\"creationTime\":null,\"id\":\"andreytestrio-prx1\",\"instancesCount\":0,\"lastSeen\":\"Thu, 26 Mar 2020 11:09:27 GMT\",\"model\":\"andrey2\",\"shouldTap\":false,\"type\":\"proxy\"},{\"agentName\":\"haiut-mk04\",\"creationTime\":null,\"id\":\"c59d834b-00cd-4650-b114-a9da537c56d7_trdemo_trdemo-client\",\"instancesCount\":0,\"lastSeen\":\"Thu, 09 Apr 2020 10:19:27 GMT\",\"model\":\"ah-0329-01\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"haiut-mk04\",\"creationTime\":null,\"id\":\"c59d834b-00cd-4650-b114-a9da537c56d7_trdemo_trdemo-flights\",\"instancesCount\":0,\"lastSeen\":\"Thu, 09 Apr 2020 10:19:27 GMT\",\"model\":\"ah-0329-01\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"haiut-mk04\",\"creationTime\":null,\"id\":\"c59d834b-00cd-4650-b114-a9da537c56d7_trdemo_trdemo-shoppingcart\",\"instancesCount\":0,\"lastSeen\":\"Thu, 09 Apr 2020 10:19:27 GMT\",\"model\":\"ah-0329-01\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"haiut-mk04\",\"creationTime\":null,\"id\":\"c59d834b-00cd-4650-b114-a9da537c56d7_trdemo_trdemo-users\",\"instancesCount\":0,\"lastSeen\":\"Thu, 09 Apr 2020 10:19:27 GMT\",\"model\":\"ah-0329-01\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"nimrod-01-london-aws\",\"creationTime\":\"Mon, 13 Apr 2020 14:32:47 GMT\",\"id\":\"cluster-01-ECSCluster-ZldlPWdD1B9z_trdemo-01-TrdemoClientTaskDefinition-51AGMDOUMFOS\",\"instancesCount\":0,\"lastSeen\":\"Thu, 23 Apr 2020 17:01:37 GMT\",\"model\":\"default\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"nimrod-01-london-aws\",\"creationTime\":\"Sun, 12 Apr 2020 12:18:27 GMT\",\"id\":\"cluster-01-ECSCluster-ZldlPWdD1B9z_trdemo-01-TrdemoClientTaskDefinition-ZSUR7XY24R3X\",\"instancesCount\":0,\"lastSeen\":\"Sun, 12 Apr 2020 14:40:11 GMT\",\"model\":\"ngm-1204-aws-01\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"nimrod-01-london-aws\",\"creationTime\":\"Mon, 13 Apr 2020 14:31:31 GMT\",\"id\":\"cluster-01-ECSCluster-ZldlPWdD1B9z_trdemo-01-TrdemoFlightsTaskDefinition-1GQ6KPSBBH2CG\",\"instancesCount\":0,\"lastSeen\":\"Thu, 23 Apr 2020 17:01:37 GMT\",\"model\":\"default\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"nimrod-01-london-aws\",\"creationTime\":\"Sun, 12 Apr 2020 12:18:27 GMT\",\"id\":\"cluster-01-ECSCluster-ZldlPWdD1B9z_trdemo-01-TrdemoFlightsTaskDefinition-1P92C5J4BMAJ\",\"instancesCount\":0,\"lastSeen\":\"Sun, 12 Apr 2020 14:40:11 GMT\",\"model\":\"ngm-1204-aws-01\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"nimrod-01-london-aws\",\"creationTime\":\"Sun, 12 Apr 2020 12:18:26 GMT\",\"id\":\"cluster-01-ECSCluster-ZldlPWdD1B9z_trdemo-01-TrdemoShoppingcartTaskDefinition-8LVIGNH5OGR5\",\"instancesCount\":0,\"lastSeen\":\"Sun, 12 Apr 2020 14:40:09 GMT\",\"model\":\"ngm-1204-aws-01\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"nimrod-01-london-aws\",\"creationTime\":\"Mon, 13 Apr 2020 14:31:29 GMT\",\"id\":\"cluster-01-ECSCluster-ZldlPWdD1B9z_trdemo-01-TrdemoShoppingcartTaskDefinition-EF79FKMGB0S5\",\"instancesCount\":0,\"lastSeen\":\"Thu, 23 Apr 2020 17:01:59 GMT\",\"model\":\"default\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"nimrod-01-london-aws\",\"creationTime\":\"Mon, 13 Apr 2020 14:31:36 GMT\",\"id\":\"cluster-01-ECSCluster-ZldlPWdD1B9z_trdemo-01-TrdemoUsersTaskDefinition-1SOGKLV12R6VX\",\"instancesCount\":0,\"lastSeen\":\"Thu, 23 Apr 2020 17:01:53 GMT\",\"model\":\"default\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"nimrod-01-london-aws\",\"creationTime\":\"Sun, 12 Apr 2020 12:18:26 GMT\",\"id\":\"cluster-01-ECSCluster-ZldlPWdD1B9z_trdemo-01-TrdemoUsersTaskDefinition-IA4ZUEXN3VPX\",\"instancesCount\":0,\"lastSeen\":\"Sun, 12 Apr 2020 14:40:09 GMT\",\"model\":\"ngm-1204-aws-01\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"nimrod-01-london-aws\",\"creationTime\":\"Sun, 12 Apr 2020 14:51:10 GMT\",\"id\":\"cluster-01-ECSCluster-ZldlPWdD1B9z_trdemo-02-TrdemoClientTaskDefinition-19SVXVU4US12S\",\"instancesCount\":0,\"lastSeen\":\"Sun, 12 Apr 2020 15:59:02 GMT\",\"model\":\"ngm-1204-aws-02\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"nimrod-01-london-aws\",\"creationTime\":\"Sun, 12 Apr 2020 14:49:24 GMT\",\"id\":\"cluster-01-ECSCluster-ZldlPWdD1B9z_trdemo-02-TrdemoFlightsTaskDefinition-2P1PRCG5UHC3\",\"instancesCount\":0,\"lastSeen\":\"Sun, 12 Apr 2020 15:59:04 GMT\",\"model\":\"ngm-1204-aws-02\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"nimrod-01-london-aws\",\"creationTime\":\"Sun, 12 Apr 2020 14:48:48 GMT\",\"id\":\"cluster-01-ECSCluster-ZldlPWdD1B9z_trdemo-02-TrdemoShoppingcartTaskDefinition-1TLHJW9NH2B5A\",\"instancesCount\":0,\"lastSeen\":\"Sun, 12 Apr 2020 15:59:00 GMT\",\"model\":\"ngm-1204-aws-02\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"nimrod-01-london-aws\",\"creationTime\":\"Sun, 12 Apr 2020 14:48:43 GMT\",\"id\":\"cluster-01-ECSCluster-ZldlPWdD1B9z_trdemo-02-TrdemoUsersTaskDefinition-1W5X329FWGXZ3\",\"instancesCount\":0,\"lastSeen\":\"Sun, 12 Apr 2020 15:59:00 GMT\",\"model\":\"ngm-1204-aws-02\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"haiut-aws-fra-03\",\"creationTime\":\"Sun, 26 Apr 2020 20:09:14 GMT\",\"id\":\"d2d6c435-eaf5-48f6-8e61-1e7c57251fbd_trdemo_trdemo-client\",\"instancesCount\":0,\"lastSeen\":\"Sun, 10 May 2020 13:31:29 GMT\",\"model\":\"aws_new_resolving2\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"haiut-aws-fra-03\",\"creationTime\":\"Sun, 26 Apr 2020 20:09:09 GMT\",\"id\":\"d2d6c435-eaf5-48f6-8e61-1e7c57251fbd_trdemo_trdemo-flights\",\"instancesCount\":0,\"lastSeen\":\"Sun, 10 May 2020 13:31:31 GMT\",\"model\":\"aws_new_resolving2\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"haiut-aws-fra-03\",\"creationTime\":\"Sun, 26 Apr 2020 20:09:14 GMT\",\"id\":\"d2d6c435-eaf5-48f6-8e61-1e7c57251fbd_trdemo_trdemo-shoppingcart\",\"instancesCount\":0,\"lastSeen\":\"Sun, 10 May 2020 13:31:29 GMT\",\"model\":\"aws_new_resolving2\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"haiut-aws-fra-03\",\"creationTime\":\"Sun, 26 Apr 2020 20:09:09 GMT\",\"id\":\"d2d6c435-eaf5-48f6-8e61-1e7c57251fbd_trdemo_trdemo-users\",\"instancesCount\":0,\"lastSeen\":\"Sun, 10 May 2020 13:31:31 GMT\",\"model\":\"aws_new_resolving2\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":null,\"creationTime\":null,\"id\":\"e677a5bc-0542-11ea-a607-42010a8400ce_tradmin_frontend-deployment\",\"instancesCount\":0,\"lastSeen\":\"Sun, 10 May 2020 13:31:31 GMT\",\"model\":\"default\",\"shouldTap\":false,\"type\":\"envoy\"},{\"agentName\":null,\"creationTime\":\"Fri, 03 Apr 2020 08:00:08 GMT\",\"id\":\"e677a5bc-0542-11ea-a607-42010a8400ce_tradmin_trcc-api-deployme-f9aaef0a8d6f47bab4894c055aa72533-67c7fc5czfxr\",\"instancesCount\":0,\"lastSeen\":\"Fri, 03 Apr 2020 05:04:11 GMT\",\"model\":\"default\",\"shouldTap\":false,\"type\":\"envoy\"},{\"agentName\":null,\"creationTime\":null,\"id\":\"e677a5bc-0542-11ea-a607-42010a8400ce_tradmin_trcc-api-deployment\",\"instancesCount\":0,\"lastSeen\":\"Thu, 23 Apr 2020 08:12:03 GMT\",\"model\":\"sy-trcc-dogfood-3\",\"shouldTap\":false,\"type\":\"envoy\"},{\"agentName\":\"stg-cloud-agent\",\"creationTime\":\"Thu, 23 Apr 2020 08:11:52 GMT\",\"id\":\"e677a5bc-0542-11ea-a607-42010a8400ce_tradmin_trcc-api-deployment-stable\",\"instancesCount\":2,\"lastSeen\":\"Thu, 21 May 2020 11:02:31 GMT\",\"model\":\"sy-trcc-dogfood-10\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"stg-cloud-agent\",\"creationTime\":null,\"id\":\"e677a5bc-0542-11ea-a607-42010a8400ce_trdemo_trdemo-client\",\"instancesCount\":0,\"lastSeen\":\"Thu, 21 May 2020 11:02:29 GMT\",\"model\":\"up9_011401\",\"shouldTap\":false,\"type\":\"envoy\"},{\"agentName\":\"stg-cloud-agent\",\"creationTime\":null,\"id\":\"e677a5bc-0542-11ea-a607-42010a8400ce_trdemo_trdemo-flights\",\"instancesCount\":0,\"lastSeen\":\"Thu, 21 May 2020 11:02:29 GMT\",\"model\":\"up9_011401\",\"shouldTap\":false,\"type\":\"passive\"},{\"agentName\":null,\"creationTime\":null,\"id\":\"e677a5bc-0542-11ea-a607-42010a8400ce_trdemo_trdemo-shoppingcart\",\"instancesCount\":0,\"lastSeen\":\"Sun, 10 May 2020 13:31:30 GMT\",\"model\":\"bookstack-remote\",\"shouldTap\":false,\"type\":\"passive\"},{\"agentName\":\"stg-cloud-agent\",\"creationTime\":null,\"id\":\"e677a5bc-0542-11ea-a607-42010a8400ce_trdemo_trdemo-users\",\"instancesCount\":0,\"lastSeen\":\"Thu, 21 May 2020 11:02:29 GMT\",\"model\":\"up9_011401\",\"shouldTap\":false,\"type\":\"passive\"},{\"agentName\":null,\"creationTime\":null,\"id\":\"lirazyup9com-prx1\",\"instancesCount\":0,\"lastSeen\":\"Thu, 21 May 2020 10:51:01 GMT\",\"model\":\"liraz_test_2105\",\"shouldTap\":false,\"type\":\"proxy\"},{\"agentName\":\"nimrod-01-london-aws\",\"creationTime\":\"Thu, 21 May 2020 10:58:05 GMT\",\"id\":\"london-01-ECSCluster-27iuIYva8nO4_trdemo-01-TrdemoClientTaskDefinition-4TTVATDRY0CJ\",\"instancesCount\":1,\"lastSeen\":\"Thu, 21 May 2020 11:02:31 GMT\",\"model\":\"default\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"nimrod-01-london-aws\",\"creationTime\":\"Thu, 21 May 2020 10:51:53 GMT\",\"id\":\"london-01-ECSCluster-27iuIYva8nO4_trdemo-01-TrdemoFlightsTaskDefinition-HBBUAO47D2VT\",\"instancesCount\":1,\"lastSeen\":\"Thu, 21 May 2020 11:02:30 GMT\",\"model\":\"default\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"nimrod-01-london-aws\",\"creationTime\":\"Thu, 21 May 2020 10:57:09 GMT\",\"id\":\"london-01-ECSCluster-27iuIYva8nO4_trdemo-01-TrdemoShoppingcartTaskDefinition-1UAMK7WTR1SWE\",\"instancesCount\":1,\"lastSeen\":\"Thu, 21 May 2020 11:02:32 GMT\",\"model\":\"default\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"nimrod-01-london-aws\",\"creationTime\":\"Thu, 21 May 2020 10:56:49 GMT\",\"id\":\"london-01-ECSCluster-27iuIYva8nO4_trdemo-01-TrdemoUsersTaskDefinition-1HEEGJCBNB4PB\",\"instancesCount\":1,\"lastSeen\":\"Thu, 21 May 2020 11:02:31 GMT\",\"model\":\"default\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"nimrod-01-paris-aws\",\"creationTime\":\"Tue, 12 May 2020 14:14:42 GMT\",\"id\":\"nimrod-01-ECSCluster-1ENCWB3MDFEUQ_trdemo-01-TrdemoClientTaskDefinition-1HQRZT31KSGK0\",\"instancesCount\":1,\"lastSeen\":\"Thu, 21 May 2020 11:02:29 GMT\",\"model\":\"ngm-1305-aws-01\",\"shouldTap\":false,\"type\":\"passive\"},{\"agentName\":\"nimrod-01-paris-aws\",\"creationTime\":\"Mon, 06 Apr 2020 08:37:02 GMT\",\"id\":\"nimrod-01-ECSCluster-1ENCWB3MDFEUQ_trdemo-01-TrdemoClientTaskDefinition-PCTOAFN3NUUL\",\"instancesCount\":0,\"lastSeen\":\"Tue, 12 May 2020 12:36:48 GMT\",\"model\":\"default\",\"shouldTap\":false,\"type\":\"passive\"},{\"agentName\":\"nimrod-01-paris-aws\",\"creationTime\":\"Mon, 06 Apr 2020 10:46:50 GMT\",\"id\":\"nimrod-01-ECSCluster-1ENCWB3MDFEUQ_trdemo-01-TrdemoFlightsTaskDefinition-1RP81I0ETBSRA\",\"instancesCount\":0,\"lastSeen\":\"Tue, 12 May 2020 12:34:26 GMT\",\"model\":\"default\",\"shouldTap\":false,\"type\":\"passive\"},{\"agentName\":\"nimrod-01-paris-aws\",\"creationTime\":\"Tue, 12 May 2020 14:13:16 GMT\",\"id\":\"nimrod-01-ECSCluster-1ENCWB3MDFEUQ_trdemo-01-TrdemoFlightsTaskDefinition-6MATLSTUSK15\",\"instancesCount\":1,\"lastSeen\":\"Thu, 21 May 2020 11:02:30 GMT\",\"model\":\"ngm-1305-aws-01\",\"shouldTap\":false,\"type\":\"passive\"},{\"agentName\":\"nimrod-01-paris-aws\",\"creationTime\":\"Tue, 12 May 2020 14:13:05 GMT\",\"id\":\"nimrod-01-ECSCluster-1ENCWB3MDFEUQ_trdemo-01-TrdemoShoppingcartTaskDefinition-1NSJ45NVQ46VV\",\"instancesCount\":1,\"lastSeen\":\"Thu, 21 May 2020 11:02:30 GMT\",\"model\":\"ngm-1305-aws-01\",\"shouldTap\":false,\"type\":\"passive\"},{\"agentName\":\"nimrod-01-paris-aws\",\"creationTime\":\"Mon, 06 Apr 2020 08:37:02 GMT\",\"id\":\"nimrod-01-ECSCluster-1ENCWB3MDFEUQ_trdemo-01-TrdemoShoppingcartTaskDefinition-VAY9IULBYL27\",\"instancesCount\":0,\"lastSeen\":\"Tue, 12 May 2020 12:34:12 GMT\",\"model\":\"default\",\"shouldTap\":false,\"type\":\"passive\"},{\"agentName\":\"nimrod-01-paris-aws\",\"creationTime\":\"Tue, 12 May 2020 14:13:05 GMT\",\"id\":\"nimrod-01-ECSCluster-1ENCWB3MDFEUQ_trdemo-01-TrdemoUsersTaskDefinition-1KSLKXSKQ0YGI\",\"instancesCount\":1,\"lastSeen\":\"Thu, 21 May 2020 11:02:31 GMT\",\"model\":\"ngm-1305-aws-01\",\"shouldTap\":false,\"type\":\"passive\"},{\"agentName\":\"nimrod-01-paris-aws\",\"creationTime\":\"Mon, 06 Apr 2020 10:47:04 GMT\",\"id\":\"nimrod-01-ECSCluster-1ENCWB3MDFEUQ_trdemo-01-TrdemoUsersTaskDefinition-A4VERGQEE2C9\",\"instancesCount\":0,\"lastSeen\":\"Tue, 12 May 2020 12:34:26 GMT\",\"model\":\"default\",\"shouldTap\":false,\"type\":\"passive\"},{\"agentName\":\"nimrod-01-paris-aws\",\"creationTime\":\"Tue, 12 May 2020 16:03:37 GMT\",\"id\":\"nimrod-01-ECSCluster-1ENCWB3MDFEUQ_trdemo-no-tapper-TrdemoClientTaskDefinition-1SP9ZUN1LZE3N\",\"instancesCount\":0,\"lastSeen\":\"Tue, 12 May 2020 21:58:09 GMT\",\"model\":\"ngm-1205-aws-no-tapper-04\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"nimrod-01-paris-aws\",\"creationTime\":\"Tue, 12 May 2020 16:04:39 GMT\",\"id\":\"nimrod-01-ECSCluster-1ENCWB3MDFEUQ_trdemo-no-tapper-TrdemoFlightsTaskDefinition-1U2E8ONADR65S\",\"instancesCount\":0,\"lastSeen\":\"Tue, 12 May 2020 21:56:39 GMT\",\"model\":\"ngm-1205-aws-no-tapper-04\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"nimrod-01-paris-aws\",\"creationTime\":\"Tue, 12 May 2020 16:01:49 GMT\",\"id\":\"nimrod-01-ECSCluster-1ENCWB3MDFEUQ_trdemo-no-tapper-TrdemoShoppingcartTaskDefinition-PFB3IL2KQWE3\",\"instancesCount\":0,\"lastSeen\":\"Tue, 12 May 2020 21:56:34 GMT\",\"model\":\"ngm-1205-aws-no-tapper-04\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"nimrod-01-paris-aws\",\"creationTime\":\"Tue, 12 May 2020 16:01:54 GMT\",\"id\":\"nimrod-01-ECSCluster-1ENCWB3MDFEUQ_trdemo-no-tapper-TrdemoUsersTaskDefinition-CXOR2F6JGPNY\",\"instancesCount\":0,\"lastSeen\":\"Tue, 12 May 2020 21:56:54 GMT\",\"model\":\"ngm-1205-aws-no-tapper-04\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":null,\"creationTime\":null,\"id\":\"nimrodup9com-prx1\",\"instancesCount\":0,\"lastSeen\":\"Sun, 29 Mar 2020 12:59:27 GMT\",\"model\":\"ngm-2020-03-29-00\",\"shouldTap\":false,\"type\":\"proxy\"},{\"agentName\":null,\"creationTime\":\"Sun, 29 Mar 2020 14:09:23 GMT\",\"id\":\"nimrodup9com-someorgid123-prx1-local\",\"instancesCount\":0,\"lastSeen\":\"Sun, 29 Mar 2020 14:15:05 GMT\",\"model\":\"ngm-2020-03-29-01\",\"shouldTap\":true,\"type\":\"local_proxy\"},{\"agentName\":null,\"creationTime\":null,\"id\":\"ofriup9com-prx1\",\"instancesCount\":0,\"lastSeen\":\"Wed, 04 Mar 2020 08:04:47 GMT\",\"model\":\"aaa\",\"shouldTap\":false,\"type\":\"proxy\"},{\"agentName\":null,\"creationTime\":\"Thu, 19 Mar 2020 16:03:38 GMT\",\"id\":\"rami-prx1\",\"instancesCount\":0,\"lastSeen\":\"Thu, 19 Mar 2020 16:03:38 GMT\",\"model\":\"default\",\"shouldTap\":true,\"type\":\"proxy\"},{\"agentName\":null,\"creationTime\":\"Thu, 02 Apr 2020 06:31:20 GMT\",\"id\":\"ramibermanup9com-prx1\",\"instancesCount\":0,\"lastSeen\":\"Thu, 23 Apr 2020 06:26:18 GMT\",\"model\":\"rami-endpoints\",\"shouldTap\":false,\"type\":\"proxy\"},{\"agentName\":null,\"creationTime\":\"Mon, 04 May 2020 11:25:30 GMT\",\"id\":\"ramibrn1gmailcom-prx1\",\"instancesCount\":0,\"lastSeen\":\"Mon, 04 May 2020 11:26:11 GMT\",\"model\":\"regression-04-05-20\",\"shouldTap\":false,\"type\":\"proxy\"},{\"agentName\":null,\"creationTime\":\"Sun, 12 Apr 2020 12:50:24 GMT\",\"id\":\"ramibrngmailcom-prx1\",\"instancesCount\":0,\"lastSeen\":\"Sun, 12 Apr 2020 12:51:00 GMT\",\"model\":\"rami-proxy-test\",\"shouldTap\":false,\"type\":\"proxy\"},{\"agentName\":null,\"creationTime\":\"Mon, 16 Mar 2020 14:14:37 GMT\",\"id\":\"roeegadottestrio-prx1\",\"instancesCount\":0,\"lastSeen\":\"Thu, 19 Mar 2020 07:02:30 GMT\",\"model\":\"roee\",\"shouldTap\":false,\"type\":\"proxy\"},{\"agentName\":null,\"creationTime\":\"Tue, 31 Mar 2020 09:31:42 GMT\",\"id\":\"roeegadotup9com-someorgid123-prx1-local\",\"instancesCount\":0,\"lastSeen\":\"Mon, 13 Apr 2020 06:29:10 GMT\",\"model\":\"rg_local_proxy_5\",\"shouldTap\":false,\"type\":\"local_proxy\"}]\n" + }, + "redirectURL": "", + "headersSize": -1, + "bodySize": 20352 + }, + "cache": {}, + "timings": { + "send": -1, + "wait": -1, + "receive": 1 + } + }, + { + "startedDateTime": "2020-05-21T11:02:33.221000+00:00", + "time": 1, + "request": { + "method": "GET", + "url": "http://trcc-api-service/tapping/state", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "X-Forwarded-Port", + "value": "443" + }, + { + "name": "X-Forwarded-Proto", + "value": "https" + }, + { + "name": "User-Agent", + "value": "python-requests/2.23.0" + }, + { + "name": "X-Real-Ip", + "value": "10.132.0.11" + }, + { + "name": "X-Forwarded-Host", + "value": "trcc.stg.testr.io" + }, + { + "name": "X-Forwarded-For", + "value": "10.132.0.11" + }, + { + "name": "X-Scheme", + "value": "https" + }, + { + "name": "Accept-Encoding", + "value": "gzip, deflate" + }, + { + "name": "Accept", + "value": "*/*" + }, + { + "name": "Authorization", + "value": "Bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJqSEZ0R1dybjJpY084VnpDYXpaZWUyakpFc2drY1k5ZzhpN2FTbGtielRnIn0.eyJleHAiOjE1OTAwNTkxNzMsImlhdCI6MTU5MDA1ODg3MywianRpIjoiZWFlOWQ0NWItMzkwZS00NjgwLTk4YzYtYTRlNDUzMDIzMjFhIiwiaXNzIjoiaHR0cHM6Ly9hdXRoLnN0Zy50ZXN0ci5pby9hdXRoL3JlYWxtcy90ZXN0ciIsImF1ZCI6ImFjY291bnQiLCJzdWIiOiI0YWFkZWM0Mi01OWE5LTRmZDUtODI3NC1lZWI5NDNmODQyNmUiLCJ0eXAiOiJCZWFyZXIiLCJhenAiOiIzWjE5LTNzYnN2MU9KSDBEd2l2UWkyYmZVSzdsSlNFdSIsInNlc3Npb25fc3RhdGUiOiJhZmZkYTdlOS1lYTQwLTRiMDktOTM5NC03YTIxOGFkNmI0ZjQiLCJhY3IiOiIxIiwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyJhY2NvdW50Ijp7InJvbGVzIjpbIm1hbmFnZS1hY2NvdW50IiwibWFuYWdlLWFjY291bnQtbGlua3MiLCJ2aWV3LXByb2ZpbGUiXX19LCJzY29wZSI6InByb2ZpbGUgZW1haWwiLCJjbGllbnRJZCI6IjNaMTktM3Nic3YxT0pIMER3aXZRaTJiZlVLN2xKU0V1IiwiY2xpZW50SG9zdCI6IjEwLjEzMi4wLjMwIiwiZW1haWxfdmVyaWZpZWQiOmZhbHNlLCJvcmdhbml6YXRpb24iOiJzb21lT3JnSWQxMjMiLCJwcmVmZXJyZWRfdXNlcm5hbWUiOiJzZXJ2aWNlLWFjY291bnQtM3oxOS0zc2JzdjFvamgwZHdpdnFpMmJmdWs3bGpzZXUiLCJjbGllbnRBZGRyZXNzIjoiMTAuMTMyLjAuMzAiLCJlbWFpbCI6InNlcnZpY2UtYWNjb3VudC0zejE5LTNzYnN2MW9qaDBkd2l2cWkyYmZ1azdsanNldUBwbGFjZWhvbGRlci5vcmcifQ.PB4R2UBhnoIoMyi5vT_Wxws1jNpWR15Z1TK2QUUKk3mu0R-pH522vaMl4tO-k2C5BP9n5MBHv4WtZv7s-190xuK7_FH8Kly_uQobzcTjBiMc3UP06IB96FwYs0Y96Y1WstkiW2FpJQzQi_OU3RuBl4yMik1ndqLI7QTQgqCBzetAueOn-hIKr9SKcflrco7Y90HQ4m-rNbrz8063yz79MDzCXe9kacwPr5rcp118-8pAHYELNNHmWFUd7Gw_zaC1YtZp0hOSIs3zps41aFqlexFuAu6DRPRdiH5iiRQkUnW3Stt-odAUakRpe5PyIZMDLl5zZxCNNHtmObLMwHT2tg" + }, + { + "name": "X-Request-Id", + "value": "103238dfa8c2e5e6ededaa0ab8474eae" + }, + { + "name": ":method", + "value": "GET" + }, + { + "name": ":path", + "value": "/tapping/state" + }, + { + "name": ":authority", + "value": "trcc.stg.testr.io" + }, + { + "name": ":scheme", + "value": "http" + }, + { + "name": "x-request-start", + "value": "1590058953.221" + }, + { + "name": "x-up9-source", + "value": "10.48.1.44" + }, + { + "name": "x-up9-destination", + "value": "10.48.2.97:5000" + } + ], + "queryString": [], + "headersSize": -1, + "bodySize": -1 + }, + "response": { + "status": 200, + "statusText": "OK", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "Connection", + "value": "keep-alive" + }, + { + "name": "Content-Type", + "value": "application/json" + }, + { + "name": "Content-Length", + "value": "20352" + }, + { + "name": "Access-Control-Allow-Origin", + "value": "http://localhost:3000" + }, + { + "name": "Access-Control-Allow-Credentials", + "value": "true" + }, + { + "name": "Vary", + "value": "Origin" + }, + { + "name": "Server", + "value": "gunicorn/19.9.0" + }, + { + "name": "Date", + "value": "Thu, 21 May 2020 11:02:32 GMT" + }, + { + "name": ":status", + "value": "200" + }, + { + "name": "duration_ms", + "value": "1" + } + ], + "content": { + "size": 20352, + "mimeType": "", + "text": "[{\"agentName\":\"ag6-minikube\",\"creationTime\":\"Sun, 22 Mar 2020 22:11:55 GMT\",\"id\":\"057573f3-c207-4d56-9512-3e1ff9190f53_trdemo_trdemo-client\",\"instancesCount\":0,\"lastSeen\":\"Thu, 09 Apr 2020 22:45:55 GMT\",\"model\":\"ag_trdemo_040701\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"ag6-minikube\",\"creationTime\":\"Sun, 22 Mar 2020 22:11:55 GMT\",\"id\":\"057573f3-c207-4d56-9512-3e1ff9190f53_trdemo_trdemo-flights\",\"instancesCount\":0,\"lastSeen\":\"Thu, 09 Apr 2020 22:45:55 GMT\",\"model\":\"ag_trdemo_040701\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"ag6-minikube\",\"creationTime\":\"Sun, 22 Mar 2020 22:11:55 GMT\",\"id\":\"057573f3-c207-4d56-9512-3e1ff9190f53_trdemo_trdemo-shoppingcart\",\"instancesCount\":0,\"lastSeen\":\"Thu, 09 Apr 2020 22:45:55 GMT\",\"model\":\"ag_trdemo_040701\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"ag6-minikube\",\"creationTime\":\"Sun, 22 Mar 2020 22:11:55 GMT\",\"id\":\"057573f3-c207-4d56-9512-3e1ff9190f53_trdemo_trdemo-users\",\"instancesCount\":0,\"lastSeen\":\"Thu, 09 Apr 2020 22:45:55 GMT\",\"model\":\"ag_trdemo_040701\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"nimrod-gcloud-mycluster\",\"creationTime\":\"Sun, 19 Apr 2020 17:46:09 GMT\",\"id\":\"0c484f93-5987-4e16-ac5d-ee838b8c7b65_tradmin_frontend-deployment\",\"instancesCount\":0,\"lastSeen\":\"Mon, 20 Apr 2020 09:29:13 GMT\",\"model\":\"default\",\"shouldTap\":false,\"type\":\"envoy\"},{\"agentName\":\"nimrod-gcloud-mycluster\",\"creationTime\":\"Mon, 06 Apr 2020 06:50:47 GMT\",\"id\":\"0c484f93-5987-4e16-ac5d-ee838b8c7b65_tradmin_trcc-api-deployment\",\"instancesCount\":0,\"lastSeen\":\"Mon, 20 Apr 2020 09:29:13 GMT\",\"model\":\"default\",\"shouldTap\":false,\"type\":\"envoy\"},{\"agentName\":\"nimrod-gcloud-mycluster\",\"creationTime\":null,\"id\":\"0c484f93-5987-4e16-ac5d-ee838b8c7b65_trdemo_trdemo-client\",\"instancesCount\":0,\"lastSeen\":\"Mon, 20 Apr 2020 09:29:53 GMT\",\"model\":\"ngm-0704-gcloud-05\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"nimrod-gcloud-mycluster\",\"creationTime\":null,\"id\":\"0c484f93-5987-4e16-ac5d-ee838b8c7b65_trdemo_trdemo-flights\",\"instancesCount\":0,\"lastSeen\":\"Mon, 20 Apr 2020 09:29:53 GMT\",\"model\":\"ngm-0704-gcloud-05\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"nimrod-gcloud-mycluster\",\"creationTime\":null,\"id\":\"0c484f93-5987-4e16-ac5d-ee838b8c7b65_trdemo_trdemo-shoppingcart\",\"instancesCount\":0,\"lastSeen\":\"Tue, 07 Apr 2020 17:12:48 GMT\",\"model\":\"ngm-0704-gcloud-05\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"nimrod-gcloud-mycluster\",\"creationTime\":null,\"id\":\"0c484f93-5987-4e16-ac5d-ee838b8c7b65_trdemo_trdemo-users\",\"instancesCount\":0,\"lastSeen\":\"Tue, 07 Apr 2020 17:12:48 GMT\",\"model\":\"ngm-0704-gcloud-05\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"haiut-samcust1105\",\"creationTime\":\"Thu, 23 Apr 2020 13:44:42 GMT\",\"id\":\"2a45b7bd-3615-11ea-b692-42010a8400bd_trdemo_trdemo-client\",\"instancesCount\":1,\"lastSeen\":\"Thu, 21 May 2020 11:02:32 GMT\",\"model\":\"ah.trdemo.0513\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"haiut-samcust1105\",\"creationTime\":\"Thu, 23 Apr 2020 13:44:42 GMT\",\"id\":\"2a45b7bd-3615-11ea-b692-42010a8400bd_trdemo_trdemo-flights\",\"instancesCount\":1,\"lastSeen\":\"Thu, 21 May 2020 11:02:32 GMT\",\"model\":\"ah.trdemo.0513\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"haiut-samcust1105\",\"creationTime\":\"Thu, 23 Apr 2020 13:44:42 GMT\",\"id\":\"2a45b7bd-3615-11ea-b692-42010a8400bd_trdemo_trdemo-shoppingcart\",\"instancesCount\":1,\"lastSeen\":\"Thu, 21 May 2020 11:02:32 GMT\",\"model\":\"ah.trdemo.0513\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"haiut-samcust1105\",\"creationTime\":\"Thu, 23 Apr 2020 13:44:35 GMT\",\"id\":\"2a45b7bd-3615-11ea-b692-42010a8400bd_trdemo_trdemo-users\",\"instancesCount\":1,\"lastSeen\":\"Thu, 21 May 2020 11:02:32 GMT\",\"model\":\"ah.trdemo.0513\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"rami-aws-agent2\",\"creationTime\":\"Thu, 14 May 2020 14:54:45 GMT\",\"id\":\"6edcaf1b-f7f9-4dd7-ae4d-2443ab489213_trdemo_trdemo-client\",\"instancesCount\":1,\"lastSeen\":\"Thu, 21 May 2020 11:02:28 GMT\",\"model\":\"aws_services_envoy\",\"shouldTap\":true,\"type\":\"envoy\"},{\"agentName\":\"rami-aws-agent2\",\"creationTime\":\"Thu, 14 May 2020 14:54:45 GMT\",\"id\":\"6edcaf1b-f7f9-4dd7-ae4d-2443ab489213_trdemo_trdemo-flights\",\"instancesCount\":2,\"lastSeen\":\"Thu, 21 May 2020 11:02:30 GMT\",\"model\":\"aws_services_envoy\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"rami-aws-agent2\",\"creationTime\":\"Thu, 14 May 2020 14:54:45 GMT\",\"id\":\"6edcaf1b-f7f9-4dd7-ae4d-2443ab489213_trdemo_trdemo-shoppingcart\",\"instancesCount\":2,\"lastSeen\":\"Thu, 21 May 2020 11:02:30 GMT\",\"model\":\"aws_services_envoy\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"rami-aws-agent2\",\"creationTime\":\"Thu, 14 May 2020 14:54:45 GMT\",\"id\":\"6edcaf1b-f7f9-4dd7-ae4d-2443ab489213_trdemo_trdemo-users\",\"instancesCount\":2,\"lastSeen\":\"Thu, 21 May 2020 11:02:30 GMT\",\"model\":\"aws_services_envoy\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":null,\"creationTime\":null,\"id\":\"alextestrio-prx1\",\"instancesCount\":0,\"lastSeen\":\"Thu, 19 Mar 2020 13:10:36 GMT\",\"model\":\"ah-0319\",\"shouldTap\":false,\"type\":\"proxy\"},{\"agentName\":null,\"creationTime\":\"Fri, 17 Apr 2020 16:17:58 GMT\",\"id\":\"alexup9com-prx1\",\"instancesCount\":0,\"lastSeen\":\"Sat, 18 Apr 2020 14:12:41 GMT\",\"model\":\"ah-test-1704-01\",\"shouldTap\":false,\"type\":\"proxy\"},{\"agentName\":null,\"creationTime\":null,\"id\":\"alontestrio-prx1\",\"instancesCount\":0,\"lastSeen\":\"Mon, 23 Mar 2020 17:45:49 GMT\",\"model\":\"ag_nectar_032301\",\"shouldTap\":false,\"type\":\"proxy\"},{\"agentName\":null,\"creationTime\":\"Tue, 31 Mar 2020 23:45:34 GMT\",\"id\":\"alonup9com-prx1\",\"instancesCount\":1,\"lastSeen\":\"Thu, 21 May 2020 10:58:30 GMT\",\"model\":\"ag.proxy.050801\",\"shouldTap\":true,\"type\":\"proxy\"},{\"agentName\":null,\"creationTime\":\"Mon, 06 Apr 2020 07:51:20 GMT\",\"id\":\"andrewpetrovup9com-prx1\",\"instancesCount\":0,\"lastSeen\":\"Tue, 07 Apr 2020 08:15:56 GMT\",\"model\":\"ap_test\",\"shouldTap\":false,\"type\":\"proxy\"},{\"agentName\":null,\"creationTime\":null,\"id\":\"andreytestrio-prx1\",\"instancesCount\":0,\"lastSeen\":\"Thu, 26 Mar 2020 11:09:27 GMT\",\"model\":\"andrey2\",\"shouldTap\":false,\"type\":\"proxy\"},{\"agentName\":\"haiut-mk04\",\"creationTime\":null,\"id\":\"c59d834b-00cd-4650-b114-a9da537c56d7_trdemo_trdemo-client\",\"instancesCount\":0,\"lastSeen\":\"Thu, 09 Apr 2020 10:19:27 GMT\",\"model\":\"ah-0329-01\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"haiut-mk04\",\"creationTime\":null,\"id\":\"c59d834b-00cd-4650-b114-a9da537c56d7_trdemo_trdemo-flights\",\"instancesCount\":0,\"lastSeen\":\"Thu, 09 Apr 2020 10:19:27 GMT\",\"model\":\"ah-0329-01\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"haiut-mk04\",\"creationTime\":null,\"id\":\"c59d834b-00cd-4650-b114-a9da537c56d7_trdemo_trdemo-shoppingcart\",\"instancesCount\":0,\"lastSeen\":\"Thu, 09 Apr 2020 10:19:27 GMT\",\"model\":\"ah-0329-01\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"haiut-mk04\",\"creationTime\":null,\"id\":\"c59d834b-00cd-4650-b114-a9da537c56d7_trdemo_trdemo-users\",\"instancesCount\":0,\"lastSeen\":\"Thu, 09 Apr 2020 10:19:27 GMT\",\"model\":\"ah-0329-01\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"nimrod-01-london-aws\",\"creationTime\":\"Mon, 13 Apr 2020 14:32:47 GMT\",\"id\":\"cluster-01-ECSCluster-ZldlPWdD1B9z_trdemo-01-TrdemoClientTaskDefinition-51AGMDOUMFOS\",\"instancesCount\":0,\"lastSeen\":\"Thu, 23 Apr 2020 17:01:37 GMT\",\"model\":\"default\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"nimrod-01-london-aws\",\"creationTime\":\"Sun, 12 Apr 2020 12:18:27 GMT\",\"id\":\"cluster-01-ECSCluster-ZldlPWdD1B9z_trdemo-01-TrdemoClientTaskDefinition-ZSUR7XY24R3X\",\"instancesCount\":0,\"lastSeen\":\"Sun, 12 Apr 2020 14:40:11 GMT\",\"model\":\"ngm-1204-aws-01\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"nimrod-01-london-aws\",\"creationTime\":\"Mon, 13 Apr 2020 14:31:31 GMT\",\"id\":\"cluster-01-ECSCluster-ZldlPWdD1B9z_trdemo-01-TrdemoFlightsTaskDefinition-1GQ6KPSBBH2CG\",\"instancesCount\":0,\"lastSeen\":\"Thu, 23 Apr 2020 17:01:37 GMT\",\"model\":\"default\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"nimrod-01-london-aws\",\"creationTime\":\"Sun, 12 Apr 2020 12:18:27 GMT\",\"id\":\"cluster-01-ECSCluster-ZldlPWdD1B9z_trdemo-01-TrdemoFlightsTaskDefinition-1P92C5J4BMAJ\",\"instancesCount\":0,\"lastSeen\":\"Sun, 12 Apr 2020 14:40:11 GMT\",\"model\":\"ngm-1204-aws-01\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"nimrod-01-london-aws\",\"creationTime\":\"Sun, 12 Apr 2020 12:18:26 GMT\",\"id\":\"cluster-01-ECSCluster-ZldlPWdD1B9z_trdemo-01-TrdemoShoppingcartTaskDefinition-8LVIGNH5OGR5\",\"instancesCount\":0,\"lastSeen\":\"Sun, 12 Apr 2020 14:40:09 GMT\",\"model\":\"ngm-1204-aws-01\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"nimrod-01-london-aws\",\"creationTime\":\"Mon, 13 Apr 2020 14:31:29 GMT\",\"id\":\"cluster-01-ECSCluster-ZldlPWdD1B9z_trdemo-01-TrdemoShoppingcartTaskDefinition-EF79FKMGB0S5\",\"instancesCount\":0,\"lastSeen\":\"Thu, 23 Apr 2020 17:01:59 GMT\",\"model\":\"default\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"nimrod-01-london-aws\",\"creationTime\":\"Mon, 13 Apr 2020 14:31:36 GMT\",\"id\":\"cluster-01-ECSCluster-ZldlPWdD1B9z_trdemo-01-TrdemoUsersTaskDefinition-1SOGKLV12R6VX\",\"instancesCount\":0,\"lastSeen\":\"Thu, 23 Apr 2020 17:01:53 GMT\",\"model\":\"default\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"nimrod-01-london-aws\",\"creationTime\":\"Sun, 12 Apr 2020 12:18:26 GMT\",\"id\":\"cluster-01-ECSCluster-ZldlPWdD1B9z_trdemo-01-TrdemoUsersTaskDefinition-IA4ZUEXN3VPX\",\"instancesCount\":0,\"lastSeen\":\"Sun, 12 Apr 2020 14:40:09 GMT\",\"model\":\"ngm-1204-aws-01\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"nimrod-01-london-aws\",\"creationTime\":\"Sun, 12 Apr 2020 14:51:10 GMT\",\"id\":\"cluster-01-ECSCluster-ZldlPWdD1B9z_trdemo-02-TrdemoClientTaskDefinition-19SVXVU4US12S\",\"instancesCount\":0,\"lastSeen\":\"Sun, 12 Apr 2020 15:59:02 GMT\",\"model\":\"ngm-1204-aws-02\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"nimrod-01-london-aws\",\"creationTime\":\"Sun, 12 Apr 2020 14:49:24 GMT\",\"id\":\"cluster-01-ECSCluster-ZldlPWdD1B9z_trdemo-02-TrdemoFlightsTaskDefinition-2P1PRCG5UHC3\",\"instancesCount\":0,\"lastSeen\":\"Sun, 12 Apr 2020 15:59:04 GMT\",\"model\":\"ngm-1204-aws-02\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"nimrod-01-london-aws\",\"creationTime\":\"Sun, 12 Apr 2020 14:48:48 GMT\",\"id\":\"cluster-01-ECSCluster-ZldlPWdD1B9z_trdemo-02-TrdemoShoppingcartTaskDefinition-1TLHJW9NH2B5A\",\"instancesCount\":0,\"lastSeen\":\"Sun, 12 Apr 2020 15:59:00 GMT\",\"model\":\"ngm-1204-aws-02\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"nimrod-01-london-aws\",\"creationTime\":\"Sun, 12 Apr 2020 14:48:43 GMT\",\"id\":\"cluster-01-ECSCluster-ZldlPWdD1B9z_trdemo-02-TrdemoUsersTaskDefinition-1W5X329FWGXZ3\",\"instancesCount\":0,\"lastSeen\":\"Sun, 12 Apr 2020 15:59:00 GMT\",\"model\":\"ngm-1204-aws-02\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"haiut-aws-fra-03\",\"creationTime\":\"Sun, 26 Apr 2020 20:09:14 GMT\",\"id\":\"d2d6c435-eaf5-48f6-8e61-1e7c57251fbd_trdemo_trdemo-client\",\"instancesCount\":0,\"lastSeen\":\"Sun, 10 May 2020 13:31:29 GMT\",\"model\":\"aws_new_resolving2\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"haiut-aws-fra-03\",\"creationTime\":\"Sun, 26 Apr 2020 20:09:09 GMT\",\"id\":\"d2d6c435-eaf5-48f6-8e61-1e7c57251fbd_trdemo_trdemo-flights\",\"instancesCount\":0,\"lastSeen\":\"Sun, 10 May 2020 13:31:31 GMT\",\"model\":\"aws_new_resolving2\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"haiut-aws-fra-03\",\"creationTime\":\"Sun, 26 Apr 2020 20:09:14 GMT\",\"id\":\"d2d6c435-eaf5-48f6-8e61-1e7c57251fbd_trdemo_trdemo-shoppingcart\",\"instancesCount\":0,\"lastSeen\":\"Sun, 10 May 2020 13:31:29 GMT\",\"model\":\"aws_new_resolving2\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"haiut-aws-fra-03\",\"creationTime\":\"Sun, 26 Apr 2020 20:09:09 GMT\",\"id\":\"d2d6c435-eaf5-48f6-8e61-1e7c57251fbd_trdemo_trdemo-users\",\"instancesCount\":0,\"lastSeen\":\"Sun, 10 May 2020 13:31:31 GMT\",\"model\":\"aws_new_resolving2\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":null,\"creationTime\":null,\"id\":\"e677a5bc-0542-11ea-a607-42010a8400ce_tradmin_frontend-deployment\",\"instancesCount\":0,\"lastSeen\":\"Sun, 10 May 2020 13:31:31 GMT\",\"model\":\"default\",\"shouldTap\":false,\"type\":\"envoy\"},{\"agentName\":null,\"creationTime\":\"Fri, 03 Apr 2020 08:00:08 GMT\",\"id\":\"e677a5bc-0542-11ea-a607-42010a8400ce_tradmin_trcc-api-deployme-f9aaef0a8d6f47bab4894c055aa72533-67c7fc5czfxr\",\"instancesCount\":0,\"lastSeen\":\"Fri, 03 Apr 2020 05:04:11 GMT\",\"model\":\"default\",\"shouldTap\":false,\"type\":\"envoy\"},{\"agentName\":null,\"creationTime\":null,\"id\":\"e677a5bc-0542-11ea-a607-42010a8400ce_tradmin_trcc-api-deployment\",\"instancesCount\":0,\"lastSeen\":\"Thu, 23 Apr 2020 08:12:03 GMT\",\"model\":\"sy-trcc-dogfood-3\",\"shouldTap\":false,\"type\":\"envoy\"},{\"agentName\":\"stg-cloud-agent\",\"creationTime\":\"Thu, 23 Apr 2020 08:11:52 GMT\",\"id\":\"e677a5bc-0542-11ea-a607-42010a8400ce_tradmin_trcc-api-deployment-stable\",\"instancesCount\":2,\"lastSeen\":\"Thu, 21 May 2020 11:02:31 GMT\",\"model\":\"sy-trcc-dogfood-10\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"stg-cloud-agent\",\"creationTime\":null,\"id\":\"e677a5bc-0542-11ea-a607-42010a8400ce_trdemo_trdemo-client\",\"instancesCount\":0,\"lastSeen\":\"Thu, 21 May 2020 11:02:29 GMT\",\"model\":\"up9_011401\",\"shouldTap\":false,\"type\":\"envoy\"},{\"agentName\":\"stg-cloud-agent\",\"creationTime\":null,\"id\":\"e677a5bc-0542-11ea-a607-42010a8400ce_trdemo_trdemo-flights\",\"instancesCount\":0,\"lastSeen\":\"Thu, 21 May 2020 11:02:29 GMT\",\"model\":\"up9_011401\",\"shouldTap\":false,\"type\":\"passive\"},{\"agentName\":null,\"creationTime\":null,\"id\":\"e677a5bc-0542-11ea-a607-42010a8400ce_trdemo_trdemo-shoppingcart\",\"instancesCount\":0,\"lastSeen\":\"Sun, 10 May 2020 13:31:30 GMT\",\"model\":\"bookstack-remote\",\"shouldTap\":false,\"type\":\"passive\"},{\"agentName\":\"stg-cloud-agent\",\"creationTime\":null,\"id\":\"e677a5bc-0542-11ea-a607-42010a8400ce_trdemo_trdemo-users\",\"instancesCount\":0,\"lastSeen\":\"Thu, 21 May 2020 11:02:29 GMT\",\"model\":\"up9_011401\",\"shouldTap\":false,\"type\":\"passive\"},{\"agentName\":null,\"creationTime\":null,\"id\":\"lirazyup9com-prx1\",\"instancesCount\":0,\"lastSeen\":\"Thu, 21 May 2020 10:51:01 GMT\",\"model\":\"liraz_test_2105\",\"shouldTap\":false,\"type\":\"proxy\"},{\"agentName\":\"nimrod-01-london-aws\",\"creationTime\":\"Thu, 21 May 2020 10:58:05 GMT\",\"id\":\"london-01-ECSCluster-27iuIYva8nO4_trdemo-01-TrdemoClientTaskDefinition-4TTVATDRY0CJ\",\"instancesCount\":1,\"lastSeen\":\"Thu, 21 May 2020 11:02:31 GMT\",\"model\":\"default\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"nimrod-01-london-aws\",\"creationTime\":\"Thu, 21 May 2020 10:51:53 GMT\",\"id\":\"london-01-ECSCluster-27iuIYva8nO4_trdemo-01-TrdemoFlightsTaskDefinition-HBBUAO47D2VT\",\"instancesCount\":1,\"lastSeen\":\"Thu, 21 May 2020 11:02:30 GMT\",\"model\":\"default\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"nimrod-01-london-aws\",\"creationTime\":\"Thu, 21 May 2020 10:57:09 GMT\",\"id\":\"london-01-ECSCluster-27iuIYva8nO4_trdemo-01-TrdemoShoppingcartTaskDefinition-1UAMK7WTR1SWE\",\"instancesCount\":1,\"lastSeen\":\"Thu, 21 May 2020 11:02:32 GMT\",\"model\":\"default\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"nimrod-01-london-aws\",\"creationTime\":\"Thu, 21 May 2020 10:56:49 GMT\",\"id\":\"london-01-ECSCluster-27iuIYva8nO4_trdemo-01-TrdemoUsersTaskDefinition-1HEEGJCBNB4PB\",\"instancesCount\":1,\"lastSeen\":\"Thu, 21 May 2020 11:02:31 GMT\",\"model\":\"default\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"nimrod-01-paris-aws\",\"creationTime\":\"Tue, 12 May 2020 14:14:42 GMT\",\"id\":\"nimrod-01-ECSCluster-1ENCWB3MDFEUQ_trdemo-01-TrdemoClientTaskDefinition-1HQRZT31KSGK0\",\"instancesCount\":1,\"lastSeen\":\"Thu, 21 May 2020 11:02:29 GMT\",\"model\":\"ngm-1305-aws-01\",\"shouldTap\":false,\"type\":\"passive\"},{\"agentName\":\"nimrod-01-paris-aws\",\"creationTime\":\"Mon, 06 Apr 2020 08:37:02 GMT\",\"id\":\"nimrod-01-ECSCluster-1ENCWB3MDFEUQ_trdemo-01-TrdemoClientTaskDefinition-PCTOAFN3NUUL\",\"instancesCount\":0,\"lastSeen\":\"Tue, 12 May 2020 12:36:48 GMT\",\"model\":\"default\",\"shouldTap\":false,\"type\":\"passive\"},{\"agentName\":\"nimrod-01-paris-aws\",\"creationTime\":\"Mon, 06 Apr 2020 10:46:50 GMT\",\"id\":\"nimrod-01-ECSCluster-1ENCWB3MDFEUQ_trdemo-01-TrdemoFlightsTaskDefinition-1RP81I0ETBSRA\",\"instancesCount\":0,\"lastSeen\":\"Tue, 12 May 2020 12:34:26 GMT\",\"model\":\"default\",\"shouldTap\":false,\"type\":\"passive\"},{\"agentName\":\"nimrod-01-paris-aws\",\"creationTime\":\"Tue, 12 May 2020 14:13:16 GMT\",\"id\":\"nimrod-01-ECSCluster-1ENCWB3MDFEUQ_trdemo-01-TrdemoFlightsTaskDefinition-6MATLSTUSK15\",\"instancesCount\":1,\"lastSeen\":\"Thu, 21 May 2020 11:02:30 GMT\",\"model\":\"ngm-1305-aws-01\",\"shouldTap\":false,\"type\":\"passive\"},{\"agentName\":\"nimrod-01-paris-aws\",\"creationTime\":\"Tue, 12 May 2020 14:13:05 GMT\",\"id\":\"nimrod-01-ECSCluster-1ENCWB3MDFEUQ_trdemo-01-TrdemoShoppingcartTaskDefinition-1NSJ45NVQ46VV\",\"instancesCount\":1,\"lastSeen\":\"Thu, 21 May 2020 11:02:30 GMT\",\"model\":\"ngm-1305-aws-01\",\"shouldTap\":false,\"type\":\"passive\"},{\"agentName\":\"nimrod-01-paris-aws\",\"creationTime\":\"Mon, 06 Apr 2020 08:37:02 GMT\",\"id\":\"nimrod-01-ECSCluster-1ENCWB3MDFEUQ_trdemo-01-TrdemoShoppingcartTaskDefinition-VAY9IULBYL27\",\"instancesCount\":0,\"lastSeen\":\"Tue, 12 May 2020 12:34:12 GMT\",\"model\":\"default\",\"shouldTap\":false,\"type\":\"passive\"},{\"agentName\":\"nimrod-01-paris-aws\",\"creationTime\":\"Tue, 12 May 2020 14:13:05 GMT\",\"id\":\"nimrod-01-ECSCluster-1ENCWB3MDFEUQ_trdemo-01-TrdemoUsersTaskDefinition-1KSLKXSKQ0YGI\",\"instancesCount\":1,\"lastSeen\":\"Thu, 21 May 2020 11:02:31 GMT\",\"model\":\"ngm-1305-aws-01\",\"shouldTap\":false,\"type\":\"passive\"},{\"agentName\":\"nimrod-01-paris-aws\",\"creationTime\":\"Mon, 06 Apr 2020 10:47:04 GMT\",\"id\":\"nimrod-01-ECSCluster-1ENCWB3MDFEUQ_trdemo-01-TrdemoUsersTaskDefinition-A4VERGQEE2C9\",\"instancesCount\":0,\"lastSeen\":\"Tue, 12 May 2020 12:34:26 GMT\",\"model\":\"default\",\"shouldTap\":false,\"type\":\"passive\"},{\"agentName\":\"nimrod-01-paris-aws\",\"creationTime\":\"Tue, 12 May 2020 16:03:37 GMT\",\"id\":\"nimrod-01-ECSCluster-1ENCWB3MDFEUQ_trdemo-no-tapper-TrdemoClientTaskDefinition-1SP9ZUN1LZE3N\",\"instancesCount\":0,\"lastSeen\":\"Tue, 12 May 2020 21:58:09 GMT\",\"model\":\"ngm-1205-aws-no-tapper-04\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"nimrod-01-paris-aws\",\"creationTime\":\"Tue, 12 May 2020 16:04:39 GMT\",\"id\":\"nimrod-01-ECSCluster-1ENCWB3MDFEUQ_trdemo-no-tapper-TrdemoFlightsTaskDefinition-1U2E8ONADR65S\",\"instancesCount\":0,\"lastSeen\":\"Tue, 12 May 2020 21:56:39 GMT\",\"model\":\"ngm-1205-aws-no-tapper-04\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"nimrod-01-paris-aws\",\"creationTime\":\"Tue, 12 May 2020 16:01:49 GMT\",\"id\":\"nimrod-01-ECSCluster-1ENCWB3MDFEUQ_trdemo-no-tapper-TrdemoShoppingcartTaskDefinition-PFB3IL2KQWE3\",\"instancesCount\":0,\"lastSeen\":\"Tue, 12 May 2020 21:56:34 GMT\",\"model\":\"ngm-1205-aws-no-tapper-04\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"nimrod-01-paris-aws\",\"creationTime\":\"Tue, 12 May 2020 16:01:54 GMT\",\"id\":\"nimrod-01-ECSCluster-1ENCWB3MDFEUQ_trdemo-no-tapper-TrdemoUsersTaskDefinition-CXOR2F6JGPNY\",\"instancesCount\":0,\"lastSeen\":\"Tue, 12 May 2020 21:56:54 GMT\",\"model\":\"ngm-1205-aws-no-tapper-04\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":null,\"creationTime\":null,\"id\":\"nimrodup9com-prx1\",\"instancesCount\":0,\"lastSeen\":\"Sun, 29 Mar 2020 12:59:27 GMT\",\"model\":\"ngm-2020-03-29-00\",\"shouldTap\":false,\"type\":\"proxy\"},{\"agentName\":null,\"creationTime\":\"Sun, 29 Mar 2020 14:09:23 GMT\",\"id\":\"nimrodup9com-someorgid123-prx1-local\",\"instancesCount\":0,\"lastSeen\":\"Sun, 29 Mar 2020 14:15:05 GMT\",\"model\":\"ngm-2020-03-29-01\",\"shouldTap\":true,\"type\":\"local_proxy\"},{\"agentName\":null,\"creationTime\":null,\"id\":\"ofriup9com-prx1\",\"instancesCount\":0,\"lastSeen\":\"Wed, 04 Mar 2020 08:04:47 GMT\",\"model\":\"aaa\",\"shouldTap\":false,\"type\":\"proxy\"},{\"agentName\":null,\"creationTime\":\"Thu, 19 Mar 2020 16:03:38 GMT\",\"id\":\"rami-prx1\",\"instancesCount\":0,\"lastSeen\":\"Thu, 19 Mar 2020 16:03:38 GMT\",\"model\":\"default\",\"shouldTap\":true,\"type\":\"proxy\"},{\"agentName\":null,\"creationTime\":\"Thu, 02 Apr 2020 06:31:20 GMT\",\"id\":\"ramibermanup9com-prx1\",\"instancesCount\":0,\"lastSeen\":\"Thu, 23 Apr 2020 06:26:18 GMT\",\"model\":\"rami-endpoints\",\"shouldTap\":false,\"type\":\"proxy\"},{\"agentName\":null,\"creationTime\":\"Mon, 04 May 2020 11:25:30 GMT\",\"id\":\"ramibrn1gmailcom-prx1\",\"instancesCount\":0,\"lastSeen\":\"Mon, 04 May 2020 11:26:11 GMT\",\"model\":\"regression-04-05-20\",\"shouldTap\":false,\"type\":\"proxy\"},{\"agentName\":null,\"creationTime\":\"Sun, 12 Apr 2020 12:50:24 GMT\",\"id\":\"ramibrngmailcom-prx1\",\"instancesCount\":0,\"lastSeen\":\"Sun, 12 Apr 2020 12:51:00 GMT\",\"model\":\"rami-proxy-test\",\"shouldTap\":false,\"type\":\"proxy\"},{\"agentName\":null,\"creationTime\":\"Mon, 16 Mar 2020 14:14:37 GMT\",\"id\":\"roeegadottestrio-prx1\",\"instancesCount\":0,\"lastSeen\":\"Thu, 19 Mar 2020 07:02:30 GMT\",\"model\":\"roee\",\"shouldTap\":false,\"type\":\"proxy\"},{\"agentName\":null,\"creationTime\":\"Tue, 31 Mar 2020 09:31:42 GMT\",\"id\":\"roeegadotup9com-someorgid123-prx1-local\",\"instancesCount\":0,\"lastSeen\":\"Mon, 13 Apr 2020 06:29:10 GMT\",\"model\":\"rg_local_proxy_5\",\"shouldTap\":false,\"type\":\"local_proxy\"}]\n" + }, + "redirectURL": "", + "headersSize": -1, + "bodySize": 20352 + }, + "cache": {}, + "timings": { + "send": -1, + "wait": -1, + "receive": 1 + } + }, + { + "startedDateTime": "2020-05-21T11:02:33.309000+00:00", + "time": 1, + "request": { + "method": "GET", + "url": "http://trcc-api-service/models/liraz_test_2105/suites/all/runs", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "X-Forwarded-Proto", + "value": "https" + }, + { + "name": "Sec-Fetch-Mode", + "value": "cors" + }, + { + "name": "Accept-Encoding", + "value": "gzip, deflate, br" + }, + { + "name": "X-Forwarded-Port", + "value": "443" + }, + { + "name": "X-Request-Id", + "value": "5e335035a51fe28806ac8fb6934740d4" + }, + { + "name": "X-Forwarded-Host", + "value": "trcc.stg.testr.io" + }, + { + "name": "Accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "Authorization", + "value": "bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJqSEZ0R1dybjJpY084VnpDYXpaZWUyakpFc2drY1k5ZzhpN2FTbGtielRnIn0.eyJleHAiOjE1OTAwNTkxMTQsImlhdCI6MTU5MDA1ODgxNCwiYXV0aF90aW1lIjoxNTg5OTU4NDcwLCJqdGkiOiIyNzgxOTYyMy00Yjk5LTQ2MzQtOWZlNi02ZDRiNzYwNGU2ZmMiLCJpc3MiOiJodHRwczovL2F1dGguc3RnLnRlc3RyLmlvL2F1dGgvcmVhbG1zL3Rlc3RyIiwiYXVkIjoiYWNjb3VudCIsInN1YiI6ImU4NzAxMDZjLWJjYjItNDQxMy05Y2Q2LTUwMTZiNTUxMDRlYiIsInR5cCI6IkJlYXJlciIsImF6cCI6InJlYWN0LWNsaWVudCIsIm5vbmNlIjoiYzJiZTgwNGYtZjBiYS00ZWUxLTgyZWQtYmIzMTY5ZDBkYjU1Iiwic2Vzc2lvbl9zdGF0ZSI6IjM2ZDc2MDAxLTE5M2EtNGQ5OS05MTIwLTZmNGZkMjEwZDAxMiIsImFjciI6IjAiLCJhbGxvd2VkLW9yaWdpbnMiOlsiaHR0cHM6Ly9zdGcudGVzdHIuaW8iLCJjaHJvbWUtZXh0ZW5zaW9uOi8vbmFkZ2VsamVtbWJna2xkaGNwYWZqbXBtYXBpcGdsY20iLCJodHRwOi8vbG9jYWxob3N0OjMwMDAiXSwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm1hbmFnZUZlYXR1cmVGbGFncyIsIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyJhY2NvdW50Ijp7InJvbGVzIjpbIm1hbmFnZS1hY2NvdW50IiwibWFuYWdlLWFjY291bnQtbGlua3MiLCJ2aWV3LXByb2ZpbGUiXX19LCJzY29wZSI6Im9wZW5pZCBwcm9maWxlIGVtYWlsIiwiZ3JvdXBfbWVtYmVyc2hpcCI6WyJzb21lT3JnSWQxMjMiXSwiZW1haWxfdmVyaWZpZWQiOnRydWUsIm5hbWUiOiJMaXJheiBZZWhlemtlbCIsInByZWZlcnJlZF91c2VybmFtZSI6ImxpcmF6eUB1cDkuY29tIiwiZ2l2ZW5fbmFtZSI6IkxpcmF6IiwiZmFtaWx5X25hbWUiOiJZZWhlemtlbCIsImdyb3VwX3N1YmRvbWFpbiI6InNvbWVPcmdJZDEyMyIsImVtYWlsIjoibGlyYXp5QHVwOS5jb20iLCJmZWF0dXJlRmxhZ3MiOnsiZWRpdEVuZHBvaW50VmFyaWFibGVzIjp0cnVlLCJzaWRlTmF2aWdhdGlvbiI6dHJ1ZX19.KdLz7jeIr8HaST4FpJROrg6Sp-o1Nl5dU2hIbNCA0FEY-jmaoubiOlz6p7QthTJ8t-S0R_qdZtd7rXf249L6wGG_A6rriZhH41Fxhyrb0ig8OVrQp-sepv_AUf7GEIGYgpYIPFnZ6G3Dkq1aY9NzLXruh7fly_ZRkRlzF_wb1vt5NRJz3xeMrj82BOJJmUpv08AYYQhnyjKiBp7rgrNTTBejaFBozsJgXGkIi-DZfv862tgFhvPNuXsqKO5iOxv9nApuQJ2O4knVB1ag7tqB1xQcvBdkZt9gG1VVkpWsM_2j5C9cBwOuPRgHZhpZuT_YNfB4ITefGV1aYfRF-cjnug" + }, + { + "name": "User-Agent", + "value": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36" + }, + { + "name": "Origin", + "value": "http://localhost:3000" + }, + { + "name": "Sec-Fetch-Site", + "value": "cross-site" + }, + { + "name": "X-Forwarded-For", + "value": "10.132.0.22" + }, + { + "name": "X-Scheme", + "value": "https" + }, + { + "name": "Sec-Fetch-Dest", + "value": "empty" + }, + { + "name": "Referer", + "value": "http://localhost:3000/someOrgId123/model/liraz_test_2105/lastResults/systems/all/summary" + }, + { + "name": "Accept-Language", + "value": "en-US,en;q=0.9" + }, + { + "name": "X-Real-Ip", + "value": "10.132.0.22" + }, + { + "name": ":method", + "value": "GET" + }, + { + "name": ":path", + "value": "/models/liraz_test_2105/suites/all/runs" + }, + { + "name": ":authority", + "value": "trcc.stg.testr.io" + }, + { + "name": ":scheme", + "value": "http" + }, + { + "name": "x-request-start", + "value": "1590058953.309" + }, + { + "name": "x-up9-source", + "value": "10.48.1.44" + }, + { + "name": "x-up9-destination", + "value": "10.48.0.155:5000" + } + ], + "queryString": [], + "headersSize": -1, + "bodySize": -1 + }, + "response": { + "status": 200, + "statusText": "OK", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "Date", + "value": "Thu, 21 May 2020 11:02:32 GMT" + }, + { + "name": "Connection", + "value": "keep-alive" + }, + { + "name": "Content-Type", + "value": "application/json" + }, + { + "name": "Content-Length", + "value": "3" + }, + { + "name": "Access-Control-Allow-Origin", + "value": "http://localhost:3000" + }, + { + "name": "Access-Control-Allow-Credentials", + "value": "true" + }, + { + "name": "Vary", + "value": "Origin" + }, + { + "name": "Server", + "value": "gunicorn/19.9.0" + }, + { + "name": ":status", + "value": "200" + }, + { + "name": "duration_ms", + "value": "1" + } + ], + "content": { + "size": 3, + "mimeType": "", + "text": "[]\n" + }, + "redirectURL": "", + "headersSize": -1, + "bodySize": 3 + }, + "cache": {}, + "timings": { + "send": -1, + "wait": -1, + "receive": 1 + } + }, + { + "startedDateTime": "2020-05-21T11:02:33.221000+00:00", + "time": 1, + "request": { + "method": "GET", + "url": "http://trcc-api-service/models/aws_kong5/suites/all/runs", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "Sec-Fetch-Site", + "value": "same-site" + }, + { + "name": "Sec-Fetch-Mode", + "value": "cors" + }, + { + "name": "Accept-Encoding", + "value": "gzip, deflate, br" + }, + { + "name": "Accept-Language", + "value": "en-IL,en-US;q=0.9,en;q=0.8,he;q=0.7,pl;q=0.6,ru;q=0.5" + }, + { + "name": "X-Forwarded-Host", + "value": "trcc.stg.testr.io" + }, + { + "name": "X-Forwarded-Port", + "value": "443" + }, + { + "name": "X-Scheme", + "value": "https" + }, + { + "name": "Dnt", + "value": "1" + }, + { + "name": "Referer", + "value": "https://stg.testr.io/someOrgId123/model/aws_kong5/lastResults/systems/all/runs" + }, + { + "name": "X-Forwarded-For", + "value": "10.132.0.11" + }, + { + "name": "Origin", + "value": "https://stg.testr.io" + }, + { + "name": "Authorization", + "value": "bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJqSEZ0R1dybjJpY084VnpDYXpaZWUyakpFc2drY1k5ZzhpN2FTbGtielRnIn0.eyJleHAiOjE1OTAwNTkyNDMsImlhdCI6MTU5MDA1ODk0MywiYXV0aF90aW1lIjoxNTkwMDU4NjUxLCJqdGkiOiI1ODYzNmRiMy0wN2IxLTQ2ZDYtOGNiNS01MzEzMDFlZGY4MGYiLCJpc3MiOiJodHRwczovL2F1dGguc3RnLnRlc3RyLmlvL2F1dGgvcmVhbG1zL3Rlc3RyIiwiYXVkIjoiYWNjb3VudCIsInN1YiI6IjBlYWU4ZmFjLTgyYTEtNDUwNi05MWQ0LTA4ZDYxZTI2NWY1NCIsInR5cCI6IkJlYXJlciIsImF6cCI6InJlYWN0LWNsaWVudCIsIm5vbmNlIjoiNTRjMTM5OTktMDg0NS00OWNmLWI1OTAtOTY1ZThjNWI0NmJlIiwic2Vzc2lvbl9zdGF0ZSI6ImY3YjEyOTM1LThmMTctNDc1Zi04NmRhLWQ4NjFjZTYxNWZjNyIsImFjciI6IjAiLCJhbGxvd2VkLW9yaWdpbnMiOlsiaHR0cHM6Ly9zdGcudGVzdHIuaW8iLCJjaHJvbWUtZXh0ZW5zaW9uOi8vbmFkZ2VsamVtbWJna2xkaGNwYWZqbXBtYXBpcGdsY20iLCJodHRwOi8vbG9jYWxob3N0OjMwMDAiXSwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyJhY2NvdW50Ijp7InJvbGVzIjpbIm1hbmFnZS1hY2NvdW50IiwibWFuYWdlLWFjY291bnQtbGlua3MiLCJ2aWV3LXByb2ZpbGUiXX19LCJzY29wZSI6Im9wZW5pZCBwcm9maWxlIGVtYWlsIiwiZ3JvdXBfbWVtYmVyc2hpcCI6WyJzb21lT3JnSWQxMjMiXSwiZW1haWxfdmVyaWZpZWQiOnRydWUsIm5hbWUiOiJSYW1pIEJlcm1hbiIsInByZWZlcnJlZF91c2VybmFtZSI6InJhbWkuYmVybWFuQHVwOS5jb20iLCJnaXZlbl9uYW1lIjoiUmFtaSIsImZhbWlseV9uYW1lIjoiQmVybWFuIiwiZ3JvdXBfc3ViZG9tYWluIjoic29tZU9yZ0lkMTIzIiwiZW1haWwiOiJyYW1pLmJlcm1hbkB1cDkuY29tIiwiZmVhdHVyZUZsYWdzIjp7ImVkaXRFbmRwb2ludFZhcmlhYmxlcyI6dHJ1ZSwic2lkZU5hdmlnYXRpb24iOnRydWV9fQ.UEDsnoo9A8CbdIYKXoOrAAq6y2K7Aoqf-PplHhXFoVep9ewwA9qBjXqgn0fK9cnE_KfZKUcX_cy1HDhhdIfR_aHpbWWhQ3gxISkE6ALka18JIrUv7bFaHKio6eEP6tgn34QVP8aQVEB3e3g7h3dLuUvZ1xIMnt6fy03tD3KgiQlvdHwg5FhJLosiCrHgboEqN5VH_f_2QF33XiXTkDG1e-AOEnIIWqloMDTUPZEUvEo_KH68lB0Uu23YhhI5gPAuKQVb_UjFWcF_6Ysvk3C3j0cuk09DZ7YEI1u-bKp58LHnsS6gqNFQxy-CDlZ8Oht5d2I3LbwZZxHzMixzzFzJCA" + }, + { + "name": "User-Agent", + "value": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36" + }, + { + "name": "X-Forwarded-Proto", + "value": "https" + }, + { + "name": "Accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "Sec-Fetch-Dest", + "value": "empty" + }, + { + "name": "X-Request-Id", + "value": "0c9933500325978610c823823b333654" + }, + { + "name": "X-Real-Ip", + "value": "10.132.0.11" + }, + { + "name": ":method", + "value": "GET" + }, + { + "name": ":path", + "value": "/models/aws_kong5/suites/all/runs" + }, + { + "name": ":authority", + "value": "trcc.stg.testr.io" + }, + { + "name": ":scheme", + "value": "http" + }, + { + "name": "x-request-start", + "value": "1590058953.221" + }, + { + "name": "x-up9-source", + "value": "10.48.1.44" + }, + { + "name": "x-up9-destination", + "value": "10.48.2.97:5000" + } + ], + "queryString": [], + "headersSize": -1, + "bodySize": -1 + }, + "response": { + "status": 200, + "statusText": "OK", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "Server", + "value": "gunicorn/19.9.0" + }, + { + "name": "Date", + "value": "Thu, 21 May 2020 11:02:32 GMT" + }, + { + "name": "Connection", + "value": "keep-alive" + }, + { + "name": "Content-Type", + "value": "application/json" + }, + { + "name": "Content-Length", + "value": "3" + }, + { + "name": "Access-Control-Allow-Origin", + "value": "https://stg.testr.io" + }, + { + "name": "Access-Control-Allow-Credentials", + "value": "true" + }, + { + "name": "Vary", + "value": "Origin" + }, + { + "name": ":status", + "value": "200" + }, + { + "name": "duration_ms", + "value": "1" + } + ], + "content": { + "size": 3, + "mimeType": "", + "text": "[]\n" + }, + "redirectURL": "", + "headersSize": -1, + "bodySize": 3 + }, + "cache": {}, + "timings": { + "send": -1, + "wait": -1, + "receive": 1 + } + }, + { + "startedDateTime": "2020-05-21T11:02:33.311000+00:00", + "time": 1, + "request": { + "method": "GET", + "url": "http://trcc-api-service/models/liraz_test_2105/suites/all/runs", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "Accept-Language", + "value": "en-US,en;q=0.9" + }, + { + "name": "X-Forwarded-For", + "value": "10.132.0.22" + }, + { + "name": "X-Forwarded-Port", + "value": "443" + }, + { + "name": "Sec-Fetch-Site", + "value": "cross-site" + }, + { + "name": "X-Forwarded-Host", + "value": "trcc.stg.testr.io" + }, + { + "name": "User-Agent", + "value": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36" + }, + { + "name": "Accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "Authorization", + "value": "bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJqSEZ0R1dybjJpY084VnpDYXpaZWUyakpFc2drY1k5ZzhpN2FTbGtielRnIn0.eyJleHAiOjE1OTAwNTkxMTQsImlhdCI6MTU5MDA1ODgxNCwiYXV0aF90aW1lIjoxNTg5OTU4NDcwLCJqdGkiOiIyNzgxOTYyMy00Yjk5LTQ2MzQtOWZlNi02ZDRiNzYwNGU2ZmMiLCJpc3MiOiJodHRwczovL2F1dGguc3RnLnRlc3RyLmlvL2F1dGgvcmVhbG1zL3Rlc3RyIiwiYXVkIjoiYWNjb3VudCIsInN1YiI6ImU4NzAxMDZjLWJjYjItNDQxMy05Y2Q2LTUwMTZiNTUxMDRlYiIsInR5cCI6IkJlYXJlciIsImF6cCI6InJlYWN0LWNsaWVudCIsIm5vbmNlIjoiYzJiZTgwNGYtZjBiYS00ZWUxLTgyZWQtYmIzMTY5ZDBkYjU1Iiwic2Vzc2lvbl9zdGF0ZSI6IjM2ZDc2MDAxLTE5M2EtNGQ5OS05MTIwLTZmNGZkMjEwZDAxMiIsImFjciI6IjAiLCJhbGxvd2VkLW9yaWdpbnMiOlsiaHR0cHM6Ly9zdGcudGVzdHIuaW8iLCJjaHJvbWUtZXh0ZW5zaW9uOi8vbmFkZ2VsamVtbWJna2xkaGNwYWZqbXBtYXBpcGdsY20iLCJodHRwOi8vbG9jYWxob3N0OjMwMDAiXSwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm1hbmFnZUZlYXR1cmVGbGFncyIsIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyJhY2NvdW50Ijp7InJvbGVzIjpbIm1hbmFnZS1hY2NvdW50IiwibWFuYWdlLWFjY291bnQtbGlua3MiLCJ2aWV3LXByb2ZpbGUiXX19LCJzY29wZSI6Im9wZW5pZCBwcm9maWxlIGVtYWlsIiwiZ3JvdXBfbWVtYmVyc2hpcCI6WyJzb21lT3JnSWQxMjMiXSwiZW1haWxfdmVyaWZpZWQiOnRydWUsIm5hbWUiOiJMaXJheiBZZWhlemtlbCIsInByZWZlcnJlZF91c2VybmFtZSI6ImxpcmF6eUB1cDkuY29tIiwiZ2l2ZW5fbmFtZSI6IkxpcmF6IiwiZmFtaWx5X25hbWUiOiJZZWhlemtlbCIsImdyb3VwX3N1YmRvbWFpbiI6InNvbWVPcmdJZDEyMyIsImVtYWlsIjoibGlyYXp5QHVwOS5jb20iLCJmZWF0dXJlRmxhZ3MiOnsiZWRpdEVuZHBvaW50VmFyaWFibGVzIjp0cnVlLCJzaWRlTmF2aWdhdGlvbiI6dHJ1ZX19.KdLz7jeIr8HaST4FpJROrg6Sp-o1Nl5dU2hIbNCA0FEY-jmaoubiOlz6p7QthTJ8t-S0R_qdZtd7rXf249L6wGG_A6rriZhH41Fxhyrb0ig8OVrQp-sepv_AUf7GEIGYgpYIPFnZ6G3Dkq1aY9NzLXruh7fly_ZRkRlzF_wb1vt5NRJz3xeMrj82BOJJmUpv08AYYQhnyjKiBp7rgrNTTBejaFBozsJgXGkIi-DZfv862tgFhvPNuXsqKO5iOxv9nApuQJ2O4knVB1ag7tqB1xQcvBdkZt9gG1VVkpWsM_2j5C9cBwOuPRgHZhpZuT_YNfB4ITefGV1aYfRF-cjnug" + }, + { + "name": "Origin", + "value": "http://localhost:3000" + }, + { + "name": "Sec-Fetch-Dest", + "value": "empty" + }, + { + "name": "Referer", + "value": "http://localhost:3000/someOrgId123/model/liraz_test_2105/lastResults/systems/all/summary" + }, + { + "name": "X-Request-Id", + "value": "34afa75981ae1ec9c8edb416a4d23123" + }, + { + "name": "X-Forwarded-Proto", + "value": "https" + }, + { + "name": "X-Scheme", + "value": "https" + }, + { + "name": "X-Real-Ip", + "value": "10.132.0.22" + }, + { + "name": "Sec-Fetch-Mode", + "value": "cors" + }, + { + "name": "Accept-Encoding", + "value": "gzip, deflate, br" + }, + { + "name": ":method", + "value": "GET" + }, + { + "name": ":path", + "value": "/models/liraz_test_2105/suites/all/runs" + }, + { + "name": ":authority", + "value": "trcc.stg.testr.io" + }, + { + "name": ":scheme", + "value": "http" + }, + { + "name": "x-request-start", + "value": "1590058953.311" + }, + { + "name": "x-up9-source", + "value": "10.48.1.44" + }, + { + "name": "x-up9-destination", + "value": "10.48.0.155:5000" + } + ], + "queryString": [], + "headersSize": -1, + "bodySize": -1 + }, + "response": { + "status": 200, + "statusText": "OK", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "Access-Control-Allow-Credentials", + "value": "true" + }, + { + "name": "Vary", + "value": "Origin" + }, + { + "name": "Server", + "value": "gunicorn/19.9.0" + }, + { + "name": "Date", + "value": "Thu, 21 May 2020 11:02:32 GMT" + }, + { + "name": "Connection", + "value": "keep-alive" + }, + { + "name": "Content-Type", + "value": "application/json" + }, + { + "name": "Content-Length", + "value": "3" + }, + { + "name": "Access-Control-Allow-Origin", + "value": "http://localhost:3000" + }, + { + "name": ":status", + "value": "200" + }, + { + "name": "duration_ms", + "value": "1" + } + ], + "content": { + "size": 3, + "mimeType": "", + "text": "[]\n" + }, + "redirectURL": "", + "headersSize": -1, + "bodySize": 3 + }, + "cache": {}, + "timings": { + "send": -1, + "wait": -1, + "receive": 1 + } + }, + { + "startedDateTime": "2020-05-21T11:02:32.452000+00:00", + "time": 770, + "request": { + "method": "GET", + "url": "http://trcc-api-service/proxies", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "X-Request-Id", + "value": "5627874ccb69f9603feef8402b8d94d8" + }, + { + "name": "X-Forwarded-For", + "value": "10.132.0.34" + }, + { + "name": "X-Forwarded-Proto", + "value": "https" + }, + { + "name": "User-Agent", + "value": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36" + }, + { + "name": "Sec-Fetch-Mode", + "value": "cors" + }, + { + "name": "X-Forwarded-Host", + "value": "trcc.stg.testr.io" + }, + { + "name": "Authorization", + "value": "bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJqSEZ0R1dybjJpY084VnpDYXpaZWUyakpFc2drY1k5ZzhpN2FTbGtielRnIn0.eyJleHAiOjE1OTAwNTkxNjYsImlhdCI6MTU5MDA1ODg2NiwiYXV0aF90aW1lIjoxNTg5OTU4NDcwLCJqdGkiOiJiNWVhOWVkYS1iZGIwLTQzOTUtOWYyZi1jMWNkYzNmZDRkZjYiLCJpc3MiOiJodHRwczovL2F1dGguc3RnLnRlc3RyLmlvL2F1dGgvcmVhbG1zL3Rlc3RyIiwiYXVkIjoiYWNjb3VudCIsInN1YiI6ImU4NzAxMDZjLWJjYjItNDQxMy05Y2Q2LTUwMTZiNTUxMDRlYiIsInR5cCI6IkJlYXJlciIsImF6cCI6InJlYWN0LWNsaWVudCIsIm5vbmNlIjoiNTZkNzJmNzMtNzVhOC00NzdlLTlkNjctZWVjYmNkZmJkNzYxIiwic2Vzc2lvbl9zdGF0ZSI6IjM2ZDc2MDAxLTE5M2EtNGQ5OS05MTIwLTZmNGZkMjEwZDAxMiIsImFjciI6IjAiLCJhbGxvd2VkLW9yaWdpbnMiOlsiaHR0cHM6Ly9zdGcudGVzdHIuaW8iLCJjaHJvbWUtZXh0ZW5zaW9uOi8vbmFkZ2VsamVtbWJna2xkaGNwYWZqbXBtYXBpcGdsY20iLCJodHRwOi8vbG9jYWxob3N0OjMwMDAiXSwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm1hbmFnZUZlYXR1cmVGbGFncyIsIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyJhY2NvdW50Ijp7InJvbGVzIjpbIm1hbmFnZS1hY2NvdW50IiwibWFuYWdlLWFjY291bnQtbGlua3MiLCJ2aWV3LXByb2ZpbGUiXX19LCJzY29wZSI6Im9wZW5pZCBwcm9maWxlIGVtYWlsIiwiZ3JvdXBfbWVtYmVyc2hpcCI6WyJzb21lT3JnSWQxMjMiXSwiZW1haWxfdmVyaWZpZWQiOnRydWUsIm5hbWUiOiJMaXJheiBZZWhlemtlbCIsInByZWZlcnJlZF91c2VybmFtZSI6ImxpcmF6eUB1cDkuY29tIiwiZ2l2ZW5fbmFtZSI6IkxpcmF6IiwiZmFtaWx5X25hbWUiOiJZZWhlemtlbCIsImdyb3VwX3N1YmRvbWFpbiI6InNvbWVPcmdJZDEyMyIsImVtYWlsIjoibGlyYXp5QHVwOS5jb20iLCJmZWF0dXJlRmxhZ3MiOnsiZWRpdEVuZHBvaW50VmFyaWFibGVzIjp0cnVlLCJzaWRlTmF2aWdhdGlvbiI6dHJ1ZX19.UtoOxWkLeLbutQDkjZloImIVXyYD2PyajFrKXefhUJhWBoeNPRwGeMAgH24oudwpHrCdnW58jWe0uAAiPyYiFr8O5mhGw-AtLqvv9R1I1RAoVyrOmRcZbJLKMTYy-NnJcVk1_KlPqW8e3VTz8q3gel9kLBJU5cjAm2KvDa2u_u65-Dyxa_nBO9tFCfGL4NdYqX3mp_9q058mB01OJo0n7sWNxEtX4AK5RzFSsVFqZoOG2HEu7JDzHBfA-wfqpsIg31-_rmrxjSrOunIrSzH5-zDbmbhob-Z541W9McjcEZN52SIhemIAf1dx-kOKXceNYlX8usOjOMIPG6WyOopYGQ" + }, + { + "name": "Accept", + "value": "*/*" + }, + { + "name": "Sec-Fetch-Site", + "value": "none" + }, + { + "name": "Sec-Fetch-Dest", + "value": "empty" + }, + { + "name": "Accept-Language", + "value": "en-US,en;q=0.9" + }, + { + "name": "X-Real-Ip", + "value": "10.132.0.34" + }, + { + "name": "X-Forwarded-Port", + "value": "443" + }, + { + "name": "X-Scheme", + "value": "https" + }, + { + "name": "Accept-Encoding", + "value": "gzip, deflate, br" + }, + { + "name": "Cookie", + "value": "_ga=GA1.2.780780214.1589122353; _gid=GA1.2.2003763308.1589719109; intercom-session-gcndx9tp=MklzblNNY05RODJSdjUrdzFnMm8wWE1neTNJYkJRbDBHWVlOdzh5T0hONUJCaGw1ZTlMT1lZNTAvYkdsc1pTdC0tZ1V3TEtXVnpFdkJ6NllYSHpGTW15QT09--8ac73e1394e1c2f8d9bffebbbc1debcf06e4dcc3" + }, + { + "name": ":method", + "value": "GET" + }, + { + "name": ":path", + "value": "/proxies" + }, + { + "name": ":authority", + "value": "trcc.stg.testr.io" + }, + { + "name": ":scheme", + "value": "http" + }, + { + "name": "x-request-start", + "value": "1590058952.452" + }, + { + "name": "x-up9-source", + "value": "10.48.1.44" + }, + { + "name": "x-up9-destination", + "value": "10.48.2.97:5000" + } + ], + "queryString": [], + "headersSize": -1, + "bodySize": -1 + }, + "response": { + "status": 200, + "statusText": "OK", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "Connection", + "value": "keep-alive" + }, + { + "name": "Content-Type", + "value": "application/json" + }, + { + "name": "Content-Length", + "value": "96" + }, + { + "name": "Access-Control-Allow-Origin", + "value": "http://localhost:3000" + }, + { + "name": "Access-Control-Allow-Credentials", + "value": "true" + }, + { + "name": "Vary", + "value": "Origin" + }, + { + "name": "Server", + "value": "gunicorn/19.9.0" + }, + { + "name": "Date", + "value": "Thu, 21 May 2020 11:02:33 GMT" + }, + { + "name": ":status", + "value": "200" + }, + { + "name": "duration_ms", + "value": "770" + } + ], + "content": { + "size": 96, + "mimeType": "", + "text": "{\"errorCount\":0,\"lastMajorGeneration\":1590058178.535,\"lastSuccessfulGeneration\":1590058178.535}\n" + }, + "redirectURL": "", + "headersSize": -1, + "bodySize": 96 + }, + "cache": {}, + "timings": { + "send": -1, + "wait": -1, + "receive": 770 + } + }, + { + "startedDateTime": "2020-05-21T11:02:33.311000+00:00", + "time": 1, + "request": { + "method": "GET", + "url": "http://trcc-api-service/models/aws_kong5/suites/all/runs", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "X-Forwarded-Proto", + "value": "https" + }, + { + "name": "User-Agent", + "value": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36" + }, + { + "name": "Sec-Fetch-Mode", + "value": "cors" + }, + { + "name": "Accept-Language", + "value": "en-IL,en-US;q=0.9,en;q=0.8,he;q=0.7,pl;q=0.6,ru;q=0.5" + }, + { + "name": "X-Request-Id", + "value": "f39decd46fe3b28df9dcf6d5179345bd" + }, + { + "name": "X-Forwarded-Port", + "value": "443" + }, + { + "name": "Origin", + "value": "https://stg.testr.io" + }, + { + "name": "Sec-Fetch-Site", + "value": "same-site" + }, + { + "name": "X-Real-Ip", + "value": "10.132.0.11" + }, + { + "name": "X-Forwarded-For", + "value": "10.132.0.11" + }, + { + "name": "Accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "Authorization", + "value": "bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJqSEZ0R1dybjJpY084VnpDYXpaZWUyakpFc2drY1k5ZzhpN2FTbGtielRnIn0.eyJleHAiOjE1OTAwNTkyNDMsImlhdCI6MTU5MDA1ODk0MywiYXV0aF90aW1lIjoxNTkwMDU4NjUxLCJqdGkiOiI1ODYzNmRiMy0wN2IxLTQ2ZDYtOGNiNS01MzEzMDFlZGY4MGYiLCJpc3MiOiJodHRwczovL2F1dGguc3RnLnRlc3RyLmlvL2F1dGgvcmVhbG1zL3Rlc3RyIiwiYXVkIjoiYWNjb3VudCIsInN1YiI6IjBlYWU4ZmFjLTgyYTEtNDUwNi05MWQ0LTA4ZDYxZTI2NWY1NCIsInR5cCI6IkJlYXJlciIsImF6cCI6InJlYWN0LWNsaWVudCIsIm5vbmNlIjoiNTRjMTM5OTktMDg0NS00OWNmLWI1OTAtOTY1ZThjNWI0NmJlIiwic2Vzc2lvbl9zdGF0ZSI6ImY3YjEyOTM1LThmMTctNDc1Zi04NmRhLWQ4NjFjZTYxNWZjNyIsImFjciI6IjAiLCJhbGxvd2VkLW9yaWdpbnMiOlsiaHR0cHM6Ly9zdGcudGVzdHIuaW8iLCJjaHJvbWUtZXh0ZW5zaW9uOi8vbmFkZ2VsamVtbWJna2xkaGNwYWZqbXBtYXBpcGdsY20iLCJodHRwOi8vbG9jYWxob3N0OjMwMDAiXSwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyJhY2NvdW50Ijp7InJvbGVzIjpbIm1hbmFnZS1hY2NvdW50IiwibWFuYWdlLWFjY291bnQtbGlua3MiLCJ2aWV3LXByb2ZpbGUiXX19LCJzY29wZSI6Im9wZW5pZCBwcm9maWxlIGVtYWlsIiwiZ3JvdXBfbWVtYmVyc2hpcCI6WyJzb21lT3JnSWQxMjMiXSwiZW1haWxfdmVyaWZpZWQiOnRydWUsIm5hbWUiOiJSYW1pIEJlcm1hbiIsInByZWZlcnJlZF91c2VybmFtZSI6InJhbWkuYmVybWFuQHVwOS5jb20iLCJnaXZlbl9uYW1lIjoiUmFtaSIsImZhbWlseV9uYW1lIjoiQmVybWFuIiwiZ3JvdXBfc3ViZG9tYWluIjoic29tZU9yZ0lkMTIzIiwiZW1haWwiOiJyYW1pLmJlcm1hbkB1cDkuY29tIiwiZmVhdHVyZUZsYWdzIjp7ImVkaXRFbmRwb2ludFZhcmlhYmxlcyI6dHJ1ZSwic2lkZU5hdmlnYXRpb24iOnRydWV9fQ.UEDsnoo9A8CbdIYKXoOrAAq6y2K7Aoqf-PplHhXFoVep9ewwA9qBjXqgn0fK9cnE_KfZKUcX_cy1HDhhdIfR_aHpbWWhQ3gxISkE6ALka18JIrUv7bFaHKio6eEP6tgn34QVP8aQVEB3e3g7h3dLuUvZ1xIMnt6fy03tD3KgiQlvdHwg5FhJLosiCrHgboEqN5VH_f_2QF33XiXTkDG1e-AOEnIIWqloMDTUPZEUvEo_KH68lB0Uu23YhhI5gPAuKQVb_UjFWcF_6Ysvk3C3j0cuk09DZ7YEI1u-bKp58LHnsS6gqNFQxy-CDlZ8Oht5d2I3LbwZZxHzMixzzFzJCA" + }, + { + "name": "Sec-Fetch-Dest", + "value": "empty" + }, + { + "name": "X-Scheme", + "value": "https" + }, + { + "name": "Dnt", + "value": "1" + }, + { + "name": "Referer", + "value": "https://stg.testr.io/someOrgId123/model/aws_kong5/lastResults/systems/all/runs" + }, + { + "name": "Accept-Encoding", + "value": "gzip, deflate, br" + }, + { + "name": "X-Forwarded-Host", + "value": "trcc.stg.testr.io" + }, + { + "name": ":method", + "value": "GET" + }, + { + "name": ":path", + "value": "/models/aws_kong5/suites/all/runs" + }, + { + "name": ":authority", + "value": "trcc.stg.testr.io" + }, + { + "name": ":scheme", + "value": "http" + }, + { + "name": "x-request-start", + "value": "1590058953.311" + }, + { + "name": "x-up9-source", + "value": "10.48.1.44" + }, + { + "name": "x-up9-destination", + "value": "10.48.0.155:5000" + } + ], + "queryString": [], + "headersSize": -1, + "bodySize": -1 + }, + "response": { + "status": 200, + "statusText": "OK", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "Server", + "value": "gunicorn/19.9.0" + }, + { + "name": "Date", + "value": "Thu, 21 May 2020 11:02:33 GMT" + }, + { + "name": "Connection", + "value": "keep-alive" + }, + { + "name": "Content-Type", + "value": "application/json" + }, + { + "name": "Content-Length", + "value": "3" + }, + { + "name": "Access-Control-Allow-Origin", + "value": "https://stg.testr.io" + }, + { + "name": "Access-Control-Allow-Credentials", + "value": "true" + }, + { + "name": "Vary", + "value": "Origin" + }, + { + "name": ":status", + "value": "200" + }, + { + "name": "duration_ms", + "value": "1" + } + ], + "content": { + "size": 3, + "mimeType": "", + "text": "[]\n" + }, + "redirectURL": "", + "headersSize": -1, + "bodySize": 3 + }, + "cache": {}, + "timings": { + "send": -1, + "wait": -1, + "receive": 1 + } + }, + { + "startedDateTime": "2020-05-21T11:02:33.222000+00:00", + "time": 1, + "request": { + "method": "GET", + "url": "http://trcc-api-service/models/liraz_test_2105/suites/all/runs", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "X-Forwarded-Host", + "value": "trcc.stg.testr.io" + }, + { + "name": "Accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "Authorization", + "value": "bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJqSEZ0R1dybjJpY084VnpDYXpaZWUyakpFc2drY1k5ZzhpN2FTbGtielRnIn0.eyJleHAiOjE1OTAwNTkxMTQsImlhdCI6MTU5MDA1ODgxNCwiYXV0aF90aW1lIjoxNTg5OTU4NDcwLCJqdGkiOiIyNzgxOTYyMy00Yjk5LTQ2MzQtOWZlNi02ZDRiNzYwNGU2ZmMiLCJpc3MiOiJodHRwczovL2F1dGguc3RnLnRlc3RyLmlvL2F1dGgvcmVhbG1zL3Rlc3RyIiwiYXVkIjoiYWNjb3VudCIsInN1YiI6ImU4NzAxMDZjLWJjYjItNDQxMy05Y2Q2LTUwMTZiNTUxMDRlYiIsInR5cCI6IkJlYXJlciIsImF6cCI6InJlYWN0LWNsaWVudCIsIm5vbmNlIjoiYzJiZTgwNGYtZjBiYS00ZWUxLTgyZWQtYmIzMTY5ZDBkYjU1Iiwic2Vzc2lvbl9zdGF0ZSI6IjM2ZDc2MDAxLTE5M2EtNGQ5OS05MTIwLTZmNGZkMjEwZDAxMiIsImFjciI6IjAiLCJhbGxvd2VkLW9yaWdpbnMiOlsiaHR0cHM6Ly9zdGcudGVzdHIuaW8iLCJjaHJvbWUtZXh0ZW5zaW9uOi8vbmFkZ2VsamVtbWJna2xkaGNwYWZqbXBtYXBpcGdsY20iLCJodHRwOi8vbG9jYWxob3N0OjMwMDAiXSwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm1hbmFnZUZlYXR1cmVGbGFncyIsIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyJhY2NvdW50Ijp7InJvbGVzIjpbIm1hbmFnZS1hY2NvdW50IiwibWFuYWdlLWFjY291bnQtbGlua3MiLCJ2aWV3LXByb2ZpbGUiXX19LCJzY29wZSI6Im9wZW5pZCBwcm9maWxlIGVtYWlsIiwiZ3JvdXBfbWVtYmVyc2hpcCI6WyJzb21lT3JnSWQxMjMiXSwiZW1haWxfdmVyaWZpZWQiOnRydWUsIm5hbWUiOiJMaXJheiBZZWhlemtlbCIsInByZWZlcnJlZF91c2VybmFtZSI6ImxpcmF6eUB1cDkuY29tIiwiZ2l2ZW5fbmFtZSI6IkxpcmF6IiwiZmFtaWx5X25hbWUiOiJZZWhlemtlbCIsImdyb3VwX3N1YmRvbWFpbiI6InNvbWVPcmdJZDEyMyIsImVtYWlsIjoibGlyYXp5QHVwOS5jb20iLCJmZWF0dXJlRmxhZ3MiOnsiZWRpdEVuZHBvaW50VmFyaWFibGVzIjp0cnVlLCJzaWRlTmF2aWdhdGlvbiI6dHJ1ZX19.KdLz7jeIr8HaST4FpJROrg6Sp-o1Nl5dU2hIbNCA0FEY-jmaoubiOlz6p7QthTJ8t-S0R_qdZtd7rXf249L6wGG_A6rriZhH41Fxhyrb0ig8OVrQp-sepv_AUf7GEIGYgpYIPFnZ6G3Dkq1aY9NzLXruh7fly_ZRkRlzF_wb1vt5NRJz3xeMrj82BOJJmUpv08AYYQhnyjKiBp7rgrNTTBejaFBozsJgXGkIi-DZfv862tgFhvPNuXsqKO5iOxv9nApuQJ2O4knVB1ag7tqB1xQcvBdkZt9gG1VVkpWsM_2j5C9cBwOuPRgHZhpZuT_YNfB4ITefGV1aYfRF-cjnug" + }, + { + "name": "Accept-Encoding", + "value": "gzip, deflate, br" + }, + { + "name": "X-Scheme", + "value": "https" + }, + { + "name": "User-Agent", + "value": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36" + }, + { + "name": "Accept-Language", + "value": "en-US,en;q=0.9" + }, + { + "name": "Referer", + "value": "http://localhost:3000/someOrgId123/model/liraz_test_2105/lastResults/systems/all/summary" + }, + { + "name": "X-Forwarded-Port", + "value": "443" + }, + { + "name": "X-Forwarded-Proto", + "value": "https" + }, + { + "name": "Sec-Fetch-Site", + "value": "cross-site" + }, + { + "name": "Sec-Fetch-Mode", + "value": "cors" + }, + { + "name": "Sec-Fetch-Dest", + "value": "empty" + }, + { + "name": "X-Request-Id", + "value": "ccb61905bb1685a0af3f9ebcfce292e5" + }, + { + "name": "X-Real-Ip", + "value": "10.132.0.22" + }, + { + "name": "X-Forwarded-For", + "value": "10.132.0.22" + }, + { + "name": "Origin", + "value": "http://localhost:3000" + }, + { + "name": ":method", + "value": "GET" + }, + { + "name": ":path", + "value": "/models/liraz_test_2105/suites/all/runs" + }, + { + "name": ":authority", + "value": "trcc.stg.testr.io" + }, + { + "name": ":scheme", + "value": "http" + }, + { + "name": "x-request-start", + "value": "1590058953.222" + }, + { + "name": "x-up9-source", + "value": "10.48.1.44" + }, + { + "name": "x-up9-destination", + "value": "10.48.2.97:5000" + } + ], + "queryString": [], + "headersSize": -1, + "bodySize": -1 + }, + "response": { + "status": 200, + "statusText": "OK", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "Access-Control-Allow-Credentials", + "value": "true" + }, + { + "name": "Vary", + "value": "Origin" + }, + { + "name": "Server", + "value": "gunicorn/19.9.0" + }, + { + "name": "Date", + "value": "Thu, 21 May 2020 11:02:33 GMT" + }, + { + "name": "Connection", + "value": "keep-alive" + }, + { + "name": "Content-Type", + "value": "application/json" + }, + { + "name": "Content-Length", + "value": "3" + }, + { + "name": "Access-Control-Allow-Origin", + "value": "http://localhost:3000" + }, + { + "name": ":status", + "value": "200" + }, + { + "name": "duration_ms", + "value": "1" + } + ], + "content": { + "size": 3, + "mimeType": "", + "text": "[]\n" + }, + "redirectURL": "", + "headersSize": -1, + "bodySize": 3 + }, + "cache": {}, + "timings": { + "send": -1, + "wait": -1, + "receive": 1 + } + }, + { + "startedDateTime": "2020-05-21T11:02:33.313000+00:00", + "time": 1, + "request": { + "method": "GET", + "url": "http://trcc-api-service/models/aws_kong5/suites/all/runs", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "Referer", + "value": "https://stg.testr.io/someOrgId123/model/aws_kong5/lastResults/systems/all/runs" + }, + { + "name": "Accept-Encoding", + "value": "gzip, deflate, br" + }, + { + "name": "X-Request-Id", + "value": "68027acadb6c9c5cfd049cd898c40aeb" + }, + { + "name": "Accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "Dnt", + "value": "1" + }, + { + "name": "User-Agent", + "value": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36" + }, + { + "name": "Sec-Fetch-Mode", + "value": "cors" + }, + { + "name": "X-Forwarded-For", + "value": "10.132.0.11" + }, + { + "name": "X-Forwarded-Host", + "value": "trcc.stg.testr.io" + }, + { + "name": "Authorization", + "value": "bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJqSEZ0R1dybjJpY084VnpDYXpaZWUyakpFc2drY1k5ZzhpN2FTbGtielRnIn0.eyJleHAiOjE1OTAwNTkyNDMsImlhdCI6MTU5MDA1ODk0MywiYXV0aF90aW1lIjoxNTkwMDU4NjUxLCJqdGkiOiI1ODYzNmRiMy0wN2IxLTQ2ZDYtOGNiNS01MzEzMDFlZGY4MGYiLCJpc3MiOiJodHRwczovL2F1dGguc3RnLnRlc3RyLmlvL2F1dGgvcmVhbG1zL3Rlc3RyIiwiYXVkIjoiYWNjb3VudCIsInN1YiI6IjBlYWU4ZmFjLTgyYTEtNDUwNi05MWQ0LTA4ZDYxZTI2NWY1NCIsInR5cCI6IkJlYXJlciIsImF6cCI6InJlYWN0LWNsaWVudCIsIm5vbmNlIjoiNTRjMTM5OTktMDg0NS00OWNmLWI1OTAtOTY1ZThjNWI0NmJlIiwic2Vzc2lvbl9zdGF0ZSI6ImY3YjEyOTM1LThmMTctNDc1Zi04NmRhLWQ4NjFjZTYxNWZjNyIsImFjciI6IjAiLCJhbGxvd2VkLW9yaWdpbnMiOlsiaHR0cHM6Ly9zdGcudGVzdHIuaW8iLCJjaHJvbWUtZXh0ZW5zaW9uOi8vbmFkZ2VsamVtbWJna2xkaGNwYWZqbXBtYXBpcGdsY20iLCJodHRwOi8vbG9jYWxob3N0OjMwMDAiXSwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyJhY2NvdW50Ijp7InJvbGVzIjpbIm1hbmFnZS1hY2NvdW50IiwibWFuYWdlLWFjY291bnQtbGlua3MiLCJ2aWV3LXByb2ZpbGUiXX19LCJzY29wZSI6Im9wZW5pZCBwcm9maWxlIGVtYWlsIiwiZ3JvdXBfbWVtYmVyc2hpcCI6WyJzb21lT3JnSWQxMjMiXSwiZW1haWxfdmVyaWZpZWQiOnRydWUsIm5hbWUiOiJSYW1pIEJlcm1hbiIsInByZWZlcnJlZF91c2VybmFtZSI6InJhbWkuYmVybWFuQHVwOS5jb20iLCJnaXZlbl9uYW1lIjoiUmFtaSIsImZhbWlseV9uYW1lIjoiQmVybWFuIiwiZ3JvdXBfc3ViZG9tYWluIjoic29tZU9yZ0lkMTIzIiwiZW1haWwiOiJyYW1pLmJlcm1hbkB1cDkuY29tIiwiZmVhdHVyZUZsYWdzIjp7ImVkaXRFbmRwb2ludFZhcmlhYmxlcyI6dHJ1ZSwic2lkZU5hdmlnYXRpb24iOnRydWV9fQ.UEDsnoo9A8CbdIYKXoOrAAq6y2K7Aoqf-PplHhXFoVep9ewwA9qBjXqgn0fK9cnE_KfZKUcX_cy1HDhhdIfR_aHpbWWhQ3gxISkE6ALka18JIrUv7bFaHKio6eEP6tgn34QVP8aQVEB3e3g7h3dLuUvZ1xIMnt6fy03tD3KgiQlvdHwg5FhJLosiCrHgboEqN5VH_f_2QF33XiXTkDG1e-AOEnIIWqloMDTUPZEUvEo_KH68lB0Uu23YhhI5gPAuKQVb_UjFWcF_6Ysvk3C3j0cuk09DZ7YEI1u-bKp58LHnsS6gqNFQxy-CDlZ8Oht5d2I3LbwZZxHzMixzzFzJCA" + }, + { + "name": "X-Scheme", + "value": "https" + }, + { + "name": "Sec-Fetch-Site", + "value": "same-site" + }, + { + "name": "Sec-Fetch-Dest", + "value": "empty" + }, + { + "name": "Accept-Language", + "value": "en-IL,en-US;q=0.9,en;q=0.8,he;q=0.7,pl;q=0.6,ru;q=0.5" + }, + { + "name": "X-Real-Ip", + "value": "10.132.0.11" + }, + { + "name": "X-Forwarded-Port", + "value": "443" + }, + { + "name": "X-Forwarded-Proto", + "value": "https" + }, + { + "name": "Origin", + "value": "https://stg.testr.io" + }, + { + "name": ":method", + "value": "GET" + }, + { + "name": ":path", + "value": "/models/aws_kong5/suites/all/runs" + }, + { + "name": ":authority", + "value": "trcc.stg.testr.io" + }, + { + "name": ":scheme", + "value": "http" + }, + { + "name": "x-request-start", + "value": "1590058953.313" + }, + { + "name": "x-up9-source", + "value": "10.48.1.44" + }, + { + "name": "x-up9-destination", + "value": "10.48.0.155:5000" + } + ], + "queryString": [], + "headersSize": -1, + "bodySize": -1 + }, + "response": { + "status": 200, + "statusText": "OK", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "Content-Type", + "value": "application/json" + }, + { + "name": "Content-Length", + "value": "3" + }, + { + "name": "Access-Control-Allow-Origin", + "value": "https://stg.testr.io" + }, + { + "name": "Access-Control-Allow-Credentials", + "value": "true" + }, + { + "name": "Vary", + "value": "Origin" + }, + { + "name": "Server", + "value": "gunicorn/19.9.0" + }, + { + "name": "Date", + "value": "Thu, 21 May 2020 11:02:33 GMT" + }, + { + "name": "Connection", + "value": "keep-alive" + }, + { + "name": ":status", + "value": "200" + }, + { + "name": "duration_ms", + "value": "1" + } + ], + "content": { + "size": 3, + "mimeType": "", + "text": "[]\n" + }, + "redirectURL": "", + "headersSize": -1, + "bodySize": 3 + }, + "cache": {}, + "timings": { + "send": -1, + "wait": -1, + "receive": 1 + } + }, + { + "startedDateTime": "2020-05-21T11:02:32.707000+00:00", + "time": 610, + "request": { + "method": "GET", + "url": "http://trcc-api-service/proxies/local", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "Authorization", + "value": "bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJqSEZ0R1dybjJpY084VnpDYXpaZWUyakpFc2drY1k5ZzhpN2FTbGtielRnIn0.eyJleHAiOjE1OTAwNTkxNjYsImlhdCI6MTU5MDA1ODg2NiwiYXV0aF90aW1lIjoxNTg5OTU4NDcwLCJqdGkiOiJiNWVhOWVkYS1iZGIwLTQzOTUtOWYyZi1jMWNkYzNmZDRkZjYiLCJpc3MiOiJodHRwczovL2F1dGguc3RnLnRlc3RyLmlvL2F1dGgvcmVhbG1zL3Rlc3RyIiwiYXVkIjoiYWNjb3VudCIsInN1YiI6ImU4NzAxMDZjLWJjYjItNDQxMy05Y2Q2LTUwMTZiNTUxMDRlYiIsInR5cCI6IkJlYXJlciIsImF6cCI6InJlYWN0LWNsaWVudCIsIm5vbmNlIjoiNTZkNzJmNzMtNzVhOC00NzdlLTlkNjctZWVjYmNkZmJkNzYxIiwic2Vzc2lvbl9zdGF0ZSI6IjM2ZDc2MDAxLTE5M2EtNGQ5OS05MTIwLTZmNGZkMjEwZDAxMiIsImFjciI6IjAiLCJhbGxvd2VkLW9yaWdpbnMiOlsiaHR0cHM6Ly9zdGcudGVzdHIuaW8iLCJjaHJvbWUtZXh0ZW5zaW9uOi8vbmFkZ2VsamVtbWJna2xkaGNwYWZqbXBtYXBpcGdsY20iLCJodHRwOi8vbG9jYWxob3N0OjMwMDAiXSwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm1hbmFnZUZlYXR1cmVGbGFncyIsIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyJhY2NvdW50Ijp7InJvbGVzIjpbIm1hbmFnZS1hY2NvdW50IiwibWFuYWdlLWFjY291bnQtbGlua3MiLCJ2aWV3LXByb2ZpbGUiXX19LCJzY29wZSI6Im9wZW5pZCBwcm9maWxlIGVtYWlsIiwiZ3JvdXBfbWVtYmVyc2hpcCI6WyJzb21lT3JnSWQxMjMiXSwiZW1haWxfdmVyaWZpZWQiOnRydWUsIm5hbWUiOiJMaXJheiBZZWhlemtlbCIsInByZWZlcnJlZF91c2VybmFtZSI6ImxpcmF6eUB1cDkuY29tIiwiZ2l2ZW5fbmFtZSI6IkxpcmF6IiwiZmFtaWx5X25hbWUiOiJZZWhlemtlbCIsImdyb3VwX3N1YmRvbWFpbiI6InNvbWVPcmdJZDEyMyIsImVtYWlsIjoibGlyYXp5QHVwOS5jb20iLCJmZWF0dXJlRmxhZ3MiOnsiZWRpdEVuZHBvaW50VmFyaWFibGVzIjp0cnVlLCJzaWRlTmF2aWdhdGlvbiI6dHJ1ZX19.UtoOxWkLeLbutQDkjZloImIVXyYD2PyajFrKXefhUJhWBoeNPRwGeMAgH24oudwpHrCdnW58jWe0uAAiPyYiFr8O5mhGw-AtLqvv9R1I1RAoVyrOmRcZbJLKMTYy-NnJcVk1_KlPqW8e3VTz8q3gel9kLBJU5cjAm2KvDa2u_u65-Dyxa_nBO9tFCfGL4NdYqX3mp_9q058mB01OJo0n7sWNxEtX4AK5RzFSsVFqZoOG2HEu7JDzHBfA-wfqpsIg31-_rmrxjSrOunIrSzH5-zDbmbhob-Z541W9McjcEZN52SIhemIAf1dx-kOKXceNYlX8usOjOMIPG6WyOopYGQ" + }, + { + "name": "Sec-Fetch-Dest", + "value": "empty" + }, + { + "name": "Accept-Language", + "value": "en-US,en;q=0.9" + }, + { + "name": "Cookie", + "value": "_ga=GA1.2.780780214.1589122353; _gid=GA1.2.2003763308.1589719109; intercom-session-gcndx9tp=MklzblNNY05RODJSdjUrdzFnMm8wWE1neTNJYkJRbDBHWVlOdzh5T0hONUJCaGw1ZTlMT1lZNTAvYkdsc1pTdC0tZ1V3TEtXVnpFdkJ6NllYSHpGTW15QT09--8ac73e1394e1c2f8d9bffebbbc1debcf06e4dcc3" + }, + { + "name": "Sec-Fetch-Mode", + "value": "cors" + }, + { + "name": "X-Request-Id", + "value": "bad11bc8e4b1bc5c8d66b50186e67a25" + }, + { + "name": "X-Forwarded-For", + "value": "10.132.0.34" + }, + { + "name": "X-Forwarded-Proto", + "value": "https" + }, + { + "name": "Accept", + "value": "*/*" + }, + { + "name": "Sec-Fetch-Site", + "value": "none" + }, + { + "name": "X-Forwarded-Port", + "value": "443" + }, + { + "name": "X-Scheme", + "value": "https" + }, + { + "name": "X-Real-Ip", + "value": "10.132.0.34" + }, + { + "name": "X-Forwarded-Host", + "value": "trcc.stg.testr.io" + }, + { + "name": "User-Agent", + "value": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36" + }, + { + "name": "Accept-Encoding", + "value": "gzip, deflate, br" + }, + { + "name": ":method", + "value": "GET" + }, + { + "name": ":path", + "value": "/proxies/local" + }, + { + "name": ":authority", + "value": "trcc.stg.testr.io" + }, + { + "name": ":scheme", + "value": "http" + }, + { + "name": "x-request-start", + "value": "1590058952.707" + }, + { + "name": "x-up9-source", + "value": "10.48.1.44" + }, + { + "name": "x-up9-destination", + "value": "10.48.0.155:5000" + } + ], + "queryString": [], + "headersSize": -1, + "bodySize": -1 + }, + "response": { + "status": 200, + "statusText": "OK", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "Connection", + "value": "keep-alive" + }, + { + "name": "Content-Type", + "value": "application/json" + }, + { + "name": "Content-Length", + "value": "20352" + }, + { + "name": "Access-Control-Allow-Origin", + "value": "http://localhost:3000" + }, + { + "name": "Access-Control-Allow-Credentials", + "value": "true" + }, + { + "name": "Vary", + "value": "Origin" + }, + { + "name": "Server", + "value": "gunicorn/19.9.0" + }, + { + "name": "Date", + "value": "Thu, 21 May 2020 11:02:33 GMT" + }, + { + "name": ":status", + "value": "200" + }, + { + "name": "duration_ms", + "value": "610" + } + ], + "content": { + "size": 20352, + "mimeType": "", + "text": "[{\"agentName\":\"ag6-minikube\",\"creationTime\":\"Sun, 22 Mar 2020 22:11:55 GMT\",\"id\":\"057573f3-c207-4d56-9512-3e1ff9190f53_trdemo_trdemo-client\",\"instancesCount\":0,\"lastSeen\":\"Thu, 09 Apr 2020 22:45:55 GMT\",\"model\":\"ag_trdemo_040701\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"ag6-minikube\",\"creationTime\":\"Sun, 22 Mar 2020 22:11:55 GMT\",\"id\":\"057573f3-c207-4d56-9512-3e1ff9190f53_trdemo_trdemo-flights\",\"instancesCount\":0,\"lastSeen\":\"Thu, 09 Apr 2020 22:45:55 GMT\",\"model\":\"ag_trdemo_040701\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"ag6-minikube\",\"creationTime\":\"Sun, 22 Mar 2020 22:11:55 GMT\",\"id\":\"057573f3-c207-4d56-9512-3e1ff9190f53_trdemo_trdemo-shoppingcart\",\"instancesCount\":0,\"lastSeen\":\"Thu, 09 Apr 2020 22:45:55 GMT\",\"model\":\"ag_trdemo_040701\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"ag6-minikube\",\"creationTime\":\"Sun, 22 Mar 2020 22:11:55 GMT\",\"id\":\"057573f3-c207-4d56-9512-3e1ff9190f53_trdemo_trdemo-users\",\"instancesCount\":0,\"lastSeen\":\"Thu, 09 Apr 2020 22:45:55 GMT\",\"model\":\"ag_trdemo_040701\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"nimrod-gcloud-mycluster\",\"creationTime\":\"Sun, 19 Apr 2020 17:46:09 GMT\",\"id\":\"0c484f93-5987-4e16-ac5d-ee838b8c7b65_tradmin_frontend-deployment\",\"instancesCount\":0,\"lastSeen\":\"Mon, 20 Apr 2020 09:29:13 GMT\",\"model\":\"default\",\"shouldTap\":false,\"type\":\"envoy\"},{\"agentName\":\"nimrod-gcloud-mycluster\",\"creationTime\":\"Mon, 06 Apr 2020 06:50:47 GMT\",\"id\":\"0c484f93-5987-4e16-ac5d-ee838b8c7b65_tradmin_trcc-api-deployment\",\"instancesCount\":0,\"lastSeen\":\"Mon, 20 Apr 2020 09:29:13 GMT\",\"model\":\"default\",\"shouldTap\":false,\"type\":\"envoy\"},{\"agentName\":\"nimrod-gcloud-mycluster\",\"creationTime\":null,\"id\":\"0c484f93-5987-4e16-ac5d-ee838b8c7b65_trdemo_trdemo-client\",\"instancesCount\":0,\"lastSeen\":\"Mon, 20 Apr 2020 09:29:53 GMT\",\"model\":\"ngm-0704-gcloud-05\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"nimrod-gcloud-mycluster\",\"creationTime\":null,\"id\":\"0c484f93-5987-4e16-ac5d-ee838b8c7b65_trdemo_trdemo-flights\",\"instancesCount\":0,\"lastSeen\":\"Mon, 20 Apr 2020 09:29:53 GMT\",\"model\":\"ngm-0704-gcloud-05\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"nimrod-gcloud-mycluster\",\"creationTime\":null,\"id\":\"0c484f93-5987-4e16-ac5d-ee838b8c7b65_trdemo_trdemo-shoppingcart\",\"instancesCount\":0,\"lastSeen\":\"Tue, 07 Apr 2020 17:12:48 GMT\",\"model\":\"ngm-0704-gcloud-05\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"nimrod-gcloud-mycluster\",\"creationTime\":null,\"id\":\"0c484f93-5987-4e16-ac5d-ee838b8c7b65_trdemo_trdemo-users\",\"instancesCount\":0,\"lastSeen\":\"Tue, 07 Apr 2020 17:12:48 GMT\",\"model\":\"ngm-0704-gcloud-05\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"haiut-samcust1105\",\"creationTime\":\"Thu, 23 Apr 2020 13:44:42 GMT\",\"id\":\"2a45b7bd-3615-11ea-b692-42010a8400bd_trdemo_trdemo-client\",\"instancesCount\":1,\"lastSeen\":\"Thu, 21 May 2020 11:02:32 GMT\",\"model\":\"ah.trdemo.0513\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"haiut-samcust1105\",\"creationTime\":\"Thu, 23 Apr 2020 13:44:42 GMT\",\"id\":\"2a45b7bd-3615-11ea-b692-42010a8400bd_trdemo_trdemo-flights\",\"instancesCount\":1,\"lastSeen\":\"Thu, 21 May 2020 11:02:32 GMT\",\"model\":\"ah.trdemo.0513\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"haiut-samcust1105\",\"creationTime\":\"Thu, 23 Apr 2020 13:44:42 GMT\",\"id\":\"2a45b7bd-3615-11ea-b692-42010a8400bd_trdemo_trdemo-shoppingcart\",\"instancesCount\":1,\"lastSeen\":\"Thu, 21 May 2020 11:02:32 GMT\",\"model\":\"ah.trdemo.0513\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"haiut-samcust1105\",\"creationTime\":\"Thu, 23 Apr 2020 13:44:35 GMT\",\"id\":\"2a45b7bd-3615-11ea-b692-42010a8400bd_trdemo_trdemo-users\",\"instancesCount\":1,\"lastSeen\":\"Thu, 21 May 2020 11:02:32 GMT\",\"model\":\"ah.trdemo.0513\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"rami-aws-agent2\",\"creationTime\":\"Thu, 14 May 2020 14:54:45 GMT\",\"id\":\"6edcaf1b-f7f9-4dd7-ae4d-2443ab489213_trdemo_trdemo-client\",\"instancesCount\":1,\"lastSeen\":\"Thu, 21 May 2020 11:02:28 GMT\",\"model\":\"aws_services_envoy\",\"shouldTap\":true,\"type\":\"envoy\"},{\"agentName\":\"rami-aws-agent2\",\"creationTime\":\"Thu, 14 May 2020 14:54:45 GMT\",\"id\":\"6edcaf1b-f7f9-4dd7-ae4d-2443ab489213_trdemo_trdemo-flights\",\"instancesCount\":2,\"lastSeen\":\"Thu, 21 May 2020 11:02:30 GMT\",\"model\":\"aws_services_envoy\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"rami-aws-agent2\",\"creationTime\":\"Thu, 14 May 2020 14:54:45 GMT\",\"id\":\"6edcaf1b-f7f9-4dd7-ae4d-2443ab489213_trdemo_trdemo-shoppingcart\",\"instancesCount\":2,\"lastSeen\":\"Thu, 21 May 2020 11:02:30 GMT\",\"model\":\"aws_services_envoy\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"rami-aws-agent2\",\"creationTime\":\"Thu, 14 May 2020 14:54:45 GMT\",\"id\":\"6edcaf1b-f7f9-4dd7-ae4d-2443ab489213_trdemo_trdemo-users\",\"instancesCount\":2,\"lastSeen\":\"Thu, 21 May 2020 11:02:30 GMT\",\"model\":\"aws_services_envoy\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":null,\"creationTime\":null,\"id\":\"alextestrio-prx1\",\"instancesCount\":0,\"lastSeen\":\"Thu, 19 Mar 2020 13:10:36 GMT\",\"model\":\"ah-0319\",\"shouldTap\":false,\"type\":\"proxy\"},{\"agentName\":null,\"creationTime\":\"Fri, 17 Apr 2020 16:17:58 GMT\",\"id\":\"alexup9com-prx1\",\"instancesCount\":0,\"lastSeen\":\"Sat, 18 Apr 2020 14:12:41 GMT\",\"model\":\"ah-test-1704-01\",\"shouldTap\":false,\"type\":\"proxy\"},{\"agentName\":null,\"creationTime\":null,\"id\":\"alontestrio-prx1\",\"instancesCount\":0,\"lastSeen\":\"Mon, 23 Mar 2020 17:45:49 GMT\",\"model\":\"ag_nectar_032301\",\"shouldTap\":false,\"type\":\"proxy\"},{\"agentName\":null,\"creationTime\":\"Tue, 31 Mar 2020 23:45:34 GMT\",\"id\":\"alonup9com-prx1\",\"instancesCount\":1,\"lastSeen\":\"Thu, 21 May 2020 10:58:30 GMT\",\"model\":\"ag.proxy.050801\",\"shouldTap\":true,\"type\":\"proxy\"},{\"agentName\":null,\"creationTime\":\"Mon, 06 Apr 2020 07:51:20 GMT\",\"id\":\"andrewpetrovup9com-prx1\",\"instancesCount\":0,\"lastSeen\":\"Tue, 07 Apr 2020 08:15:56 GMT\",\"model\":\"ap_test\",\"shouldTap\":false,\"type\":\"proxy\"},{\"agentName\":null,\"creationTime\":null,\"id\":\"andreytestrio-prx1\",\"instancesCount\":0,\"lastSeen\":\"Thu, 26 Mar 2020 11:09:27 GMT\",\"model\":\"andrey2\",\"shouldTap\":false,\"type\":\"proxy\"},{\"agentName\":\"haiut-mk04\",\"creationTime\":null,\"id\":\"c59d834b-00cd-4650-b114-a9da537c56d7_trdemo_trdemo-client\",\"instancesCount\":0,\"lastSeen\":\"Thu, 09 Apr 2020 10:19:27 GMT\",\"model\":\"ah-0329-01\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"haiut-mk04\",\"creationTime\":null,\"id\":\"c59d834b-00cd-4650-b114-a9da537c56d7_trdemo_trdemo-flights\",\"instancesCount\":0,\"lastSeen\":\"Thu, 09 Apr 2020 10:19:27 GMT\",\"model\":\"ah-0329-01\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"haiut-mk04\",\"creationTime\":null,\"id\":\"c59d834b-00cd-4650-b114-a9da537c56d7_trdemo_trdemo-shoppingcart\",\"instancesCount\":0,\"lastSeen\":\"Thu, 09 Apr 2020 10:19:27 GMT\",\"model\":\"ah-0329-01\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"haiut-mk04\",\"creationTime\":null,\"id\":\"c59d834b-00cd-4650-b114-a9da537c56d7_trdemo_trdemo-users\",\"instancesCount\":0,\"lastSeen\":\"Thu, 09 Apr 2020 10:19:27 GMT\",\"model\":\"ah-0329-01\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"nimrod-01-london-aws\",\"creationTime\":\"Mon, 13 Apr 2020 14:32:47 GMT\",\"id\":\"cluster-01-ECSCluster-ZldlPWdD1B9z_trdemo-01-TrdemoClientTaskDefinition-51AGMDOUMFOS\",\"instancesCount\":0,\"lastSeen\":\"Thu, 23 Apr 2020 17:01:37 GMT\",\"model\":\"default\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"nimrod-01-london-aws\",\"creationTime\":\"Sun, 12 Apr 2020 12:18:27 GMT\",\"id\":\"cluster-01-ECSCluster-ZldlPWdD1B9z_trdemo-01-TrdemoClientTaskDefinition-ZSUR7XY24R3X\",\"instancesCount\":0,\"lastSeen\":\"Sun, 12 Apr 2020 14:40:11 GMT\",\"model\":\"ngm-1204-aws-01\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"nimrod-01-london-aws\",\"creationTime\":\"Mon, 13 Apr 2020 14:31:31 GMT\",\"id\":\"cluster-01-ECSCluster-ZldlPWdD1B9z_trdemo-01-TrdemoFlightsTaskDefinition-1GQ6KPSBBH2CG\",\"instancesCount\":0,\"lastSeen\":\"Thu, 23 Apr 2020 17:01:37 GMT\",\"model\":\"default\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"nimrod-01-london-aws\",\"creationTime\":\"Sun, 12 Apr 2020 12:18:27 GMT\",\"id\":\"cluster-01-ECSCluster-ZldlPWdD1B9z_trdemo-01-TrdemoFlightsTaskDefinition-1P92C5J4BMAJ\",\"instancesCount\":0,\"lastSeen\":\"Sun, 12 Apr 2020 14:40:11 GMT\",\"model\":\"ngm-1204-aws-01\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"nimrod-01-london-aws\",\"creationTime\":\"Sun, 12 Apr 2020 12:18:26 GMT\",\"id\":\"cluster-01-ECSCluster-ZldlPWdD1B9z_trdemo-01-TrdemoShoppingcartTaskDefinition-8LVIGNH5OGR5\",\"instancesCount\":0,\"lastSeen\":\"Sun, 12 Apr 2020 14:40:09 GMT\",\"model\":\"ngm-1204-aws-01\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"nimrod-01-london-aws\",\"creationTime\":\"Mon, 13 Apr 2020 14:31:29 GMT\",\"id\":\"cluster-01-ECSCluster-ZldlPWdD1B9z_trdemo-01-TrdemoShoppingcartTaskDefinition-EF79FKMGB0S5\",\"instancesCount\":0,\"lastSeen\":\"Thu, 23 Apr 2020 17:01:59 GMT\",\"model\":\"default\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"nimrod-01-london-aws\",\"creationTime\":\"Mon, 13 Apr 2020 14:31:36 GMT\",\"id\":\"cluster-01-ECSCluster-ZldlPWdD1B9z_trdemo-01-TrdemoUsersTaskDefinition-1SOGKLV12R6VX\",\"instancesCount\":0,\"lastSeen\":\"Thu, 23 Apr 2020 17:01:53 GMT\",\"model\":\"default\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"nimrod-01-london-aws\",\"creationTime\":\"Sun, 12 Apr 2020 12:18:26 GMT\",\"id\":\"cluster-01-ECSCluster-ZldlPWdD1B9z_trdemo-01-TrdemoUsersTaskDefinition-IA4ZUEXN3VPX\",\"instancesCount\":0,\"lastSeen\":\"Sun, 12 Apr 2020 14:40:09 GMT\",\"model\":\"ngm-1204-aws-01\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"nimrod-01-london-aws\",\"creationTime\":\"Sun, 12 Apr 2020 14:51:10 GMT\",\"id\":\"cluster-01-ECSCluster-ZldlPWdD1B9z_trdemo-02-TrdemoClientTaskDefinition-19SVXVU4US12S\",\"instancesCount\":0,\"lastSeen\":\"Sun, 12 Apr 2020 15:59:02 GMT\",\"model\":\"ngm-1204-aws-02\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"nimrod-01-london-aws\",\"creationTime\":\"Sun, 12 Apr 2020 14:49:24 GMT\",\"id\":\"cluster-01-ECSCluster-ZldlPWdD1B9z_trdemo-02-TrdemoFlightsTaskDefinition-2P1PRCG5UHC3\",\"instancesCount\":0,\"lastSeen\":\"Sun, 12 Apr 2020 15:59:04 GMT\",\"model\":\"ngm-1204-aws-02\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"nimrod-01-london-aws\",\"creationTime\":\"Sun, 12 Apr 2020 14:48:48 GMT\",\"id\":\"cluster-01-ECSCluster-ZldlPWdD1B9z_trdemo-02-TrdemoShoppingcartTaskDefinition-1TLHJW9NH2B5A\",\"instancesCount\":0,\"lastSeen\":\"Sun, 12 Apr 2020 15:59:00 GMT\",\"model\":\"ngm-1204-aws-02\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"nimrod-01-london-aws\",\"creationTime\":\"Sun, 12 Apr 2020 14:48:43 GMT\",\"id\":\"cluster-01-ECSCluster-ZldlPWdD1B9z_trdemo-02-TrdemoUsersTaskDefinition-1W5X329FWGXZ3\",\"instancesCount\":0,\"lastSeen\":\"Sun, 12 Apr 2020 15:59:00 GMT\",\"model\":\"ngm-1204-aws-02\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"haiut-aws-fra-03\",\"creationTime\":\"Sun, 26 Apr 2020 20:09:14 GMT\",\"id\":\"d2d6c435-eaf5-48f6-8e61-1e7c57251fbd_trdemo_trdemo-client\",\"instancesCount\":0,\"lastSeen\":\"Sun, 10 May 2020 13:31:29 GMT\",\"model\":\"aws_new_resolving2\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"haiut-aws-fra-03\",\"creationTime\":\"Sun, 26 Apr 2020 20:09:09 GMT\",\"id\":\"d2d6c435-eaf5-48f6-8e61-1e7c57251fbd_trdemo_trdemo-flights\",\"instancesCount\":0,\"lastSeen\":\"Sun, 10 May 2020 13:31:31 GMT\",\"model\":\"aws_new_resolving2\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"haiut-aws-fra-03\",\"creationTime\":\"Sun, 26 Apr 2020 20:09:14 GMT\",\"id\":\"d2d6c435-eaf5-48f6-8e61-1e7c57251fbd_trdemo_trdemo-shoppingcart\",\"instancesCount\":0,\"lastSeen\":\"Sun, 10 May 2020 13:31:29 GMT\",\"model\":\"aws_new_resolving2\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"haiut-aws-fra-03\",\"creationTime\":\"Sun, 26 Apr 2020 20:09:09 GMT\",\"id\":\"d2d6c435-eaf5-48f6-8e61-1e7c57251fbd_trdemo_trdemo-users\",\"instancesCount\":0,\"lastSeen\":\"Sun, 10 May 2020 13:31:31 GMT\",\"model\":\"aws_new_resolving2\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":null,\"creationTime\":null,\"id\":\"e677a5bc-0542-11ea-a607-42010a8400ce_tradmin_frontend-deployment\",\"instancesCount\":0,\"lastSeen\":\"Sun, 10 May 2020 13:31:31 GMT\",\"model\":\"default\",\"shouldTap\":false,\"type\":\"envoy\"},{\"agentName\":null,\"creationTime\":\"Fri, 03 Apr 2020 08:00:08 GMT\",\"id\":\"e677a5bc-0542-11ea-a607-42010a8400ce_tradmin_trcc-api-deployme-f9aaef0a8d6f47bab4894c055aa72533-67c7fc5czfxr\",\"instancesCount\":0,\"lastSeen\":\"Fri, 03 Apr 2020 05:04:11 GMT\",\"model\":\"default\",\"shouldTap\":false,\"type\":\"envoy\"},{\"agentName\":null,\"creationTime\":null,\"id\":\"e677a5bc-0542-11ea-a607-42010a8400ce_tradmin_trcc-api-deployment\",\"instancesCount\":0,\"lastSeen\":\"Thu, 23 Apr 2020 08:12:03 GMT\",\"model\":\"sy-trcc-dogfood-3\",\"shouldTap\":false,\"type\":\"envoy\"},{\"agentName\":\"stg-cloud-agent\",\"creationTime\":\"Thu, 23 Apr 2020 08:11:52 GMT\",\"id\":\"e677a5bc-0542-11ea-a607-42010a8400ce_tradmin_trcc-api-deployment-stable\",\"instancesCount\":2,\"lastSeen\":\"Thu, 21 May 2020 11:02:31 GMT\",\"model\":\"sy-trcc-dogfood-10\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"stg-cloud-agent\",\"creationTime\":null,\"id\":\"e677a5bc-0542-11ea-a607-42010a8400ce_trdemo_trdemo-client\",\"instancesCount\":0,\"lastSeen\":\"Thu, 21 May 2020 11:02:29 GMT\",\"model\":\"up9_011401\",\"shouldTap\":false,\"type\":\"envoy\"},{\"agentName\":\"stg-cloud-agent\",\"creationTime\":null,\"id\":\"e677a5bc-0542-11ea-a607-42010a8400ce_trdemo_trdemo-flights\",\"instancesCount\":0,\"lastSeen\":\"Thu, 21 May 2020 11:02:29 GMT\",\"model\":\"up9_011401\",\"shouldTap\":false,\"type\":\"passive\"},{\"agentName\":null,\"creationTime\":null,\"id\":\"e677a5bc-0542-11ea-a607-42010a8400ce_trdemo_trdemo-shoppingcart\",\"instancesCount\":0,\"lastSeen\":\"Sun, 10 May 2020 13:31:30 GMT\",\"model\":\"bookstack-remote\",\"shouldTap\":false,\"type\":\"passive\"},{\"agentName\":\"stg-cloud-agent\",\"creationTime\":null,\"id\":\"e677a5bc-0542-11ea-a607-42010a8400ce_trdemo_trdemo-users\",\"instancesCount\":0,\"lastSeen\":\"Thu, 21 May 2020 11:02:29 GMT\",\"model\":\"up9_011401\",\"shouldTap\":false,\"type\":\"passive\"},{\"agentName\":null,\"creationTime\":null,\"id\":\"lirazyup9com-prx1\",\"instancesCount\":0,\"lastSeen\":\"Thu, 21 May 2020 10:51:01 GMT\",\"model\":\"liraz_test_2105\",\"shouldTap\":false,\"type\":\"proxy\"},{\"agentName\":\"nimrod-01-london-aws\",\"creationTime\":\"Thu, 21 May 2020 10:58:05 GMT\",\"id\":\"london-01-ECSCluster-27iuIYva8nO4_trdemo-01-TrdemoClientTaskDefinition-4TTVATDRY0CJ\",\"instancesCount\":1,\"lastSeen\":\"Thu, 21 May 2020 11:02:31 GMT\",\"model\":\"default\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"nimrod-01-london-aws\",\"creationTime\":\"Thu, 21 May 2020 10:51:53 GMT\",\"id\":\"london-01-ECSCluster-27iuIYva8nO4_trdemo-01-TrdemoFlightsTaskDefinition-HBBUAO47D2VT\",\"instancesCount\":1,\"lastSeen\":\"Thu, 21 May 2020 11:02:30 GMT\",\"model\":\"default\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"nimrod-01-london-aws\",\"creationTime\":\"Thu, 21 May 2020 10:57:09 GMT\",\"id\":\"london-01-ECSCluster-27iuIYva8nO4_trdemo-01-TrdemoShoppingcartTaskDefinition-1UAMK7WTR1SWE\",\"instancesCount\":1,\"lastSeen\":\"Thu, 21 May 2020 11:02:32 GMT\",\"model\":\"default\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"nimrod-01-london-aws\",\"creationTime\":\"Thu, 21 May 2020 10:56:49 GMT\",\"id\":\"london-01-ECSCluster-27iuIYva8nO4_trdemo-01-TrdemoUsersTaskDefinition-1HEEGJCBNB4PB\",\"instancesCount\":1,\"lastSeen\":\"Thu, 21 May 2020 11:02:31 GMT\",\"model\":\"default\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"nimrod-01-paris-aws\",\"creationTime\":\"Tue, 12 May 2020 14:14:42 GMT\",\"id\":\"nimrod-01-ECSCluster-1ENCWB3MDFEUQ_trdemo-01-TrdemoClientTaskDefinition-1HQRZT31KSGK0\",\"instancesCount\":1,\"lastSeen\":\"Thu, 21 May 2020 11:02:29 GMT\",\"model\":\"ngm-1305-aws-01\",\"shouldTap\":false,\"type\":\"passive\"},{\"agentName\":\"nimrod-01-paris-aws\",\"creationTime\":\"Mon, 06 Apr 2020 08:37:02 GMT\",\"id\":\"nimrod-01-ECSCluster-1ENCWB3MDFEUQ_trdemo-01-TrdemoClientTaskDefinition-PCTOAFN3NUUL\",\"instancesCount\":0,\"lastSeen\":\"Tue, 12 May 2020 12:36:48 GMT\",\"model\":\"default\",\"shouldTap\":false,\"type\":\"passive\"},{\"agentName\":\"nimrod-01-paris-aws\",\"creationTime\":\"Mon, 06 Apr 2020 10:46:50 GMT\",\"id\":\"nimrod-01-ECSCluster-1ENCWB3MDFEUQ_trdemo-01-TrdemoFlightsTaskDefinition-1RP81I0ETBSRA\",\"instancesCount\":0,\"lastSeen\":\"Tue, 12 May 2020 12:34:26 GMT\",\"model\":\"default\",\"shouldTap\":false,\"type\":\"passive\"},{\"agentName\":\"nimrod-01-paris-aws\",\"creationTime\":\"Tue, 12 May 2020 14:13:16 GMT\",\"id\":\"nimrod-01-ECSCluster-1ENCWB3MDFEUQ_trdemo-01-TrdemoFlightsTaskDefinition-6MATLSTUSK15\",\"instancesCount\":1,\"lastSeen\":\"Thu, 21 May 2020 11:02:30 GMT\",\"model\":\"ngm-1305-aws-01\",\"shouldTap\":false,\"type\":\"passive\"},{\"agentName\":\"nimrod-01-paris-aws\",\"creationTime\":\"Tue, 12 May 2020 14:13:05 GMT\",\"id\":\"nimrod-01-ECSCluster-1ENCWB3MDFEUQ_trdemo-01-TrdemoShoppingcartTaskDefinition-1NSJ45NVQ46VV\",\"instancesCount\":1,\"lastSeen\":\"Thu, 21 May 2020 11:02:30 GMT\",\"model\":\"ngm-1305-aws-01\",\"shouldTap\":false,\"type\":\"passive\"},{\"agentName\":\"nimrod-01-paris-aws\",\"creationTime\":\"Mon, 06 Apr 2020 08:37:02 GMT\",\"id\":\"nimrod-01-ECSCluster-1ENCWB3MDFEUQ_trdemo-01-TrdemoShoppingcartTaskDefinition-VAY9IULBYL27\",\"instancesCount\":0,\"lastSeen\":\"Tue, 12 May 2020 12:34:12 GMT\",\"model\":\"default\",\"shouldTap\":false,\"type\":\"passive\"},{\"agentName\":\"nimrod-01-paris-aws\",\"creationTime\":\"Tue, 12 May 2020 14:13:05 GMT\",\"id\":\"nimrod-01-ECSCluster-1ENCWB3MDFEUQ_trdemo-01-TrdemoUsersTaskDefinition-1KSLKXSKQ0YGI\",\"instancesCount\":1,\"lastSeen\":\"Thu, 21 May 2020 11:02:31 GMT\",\"model\":\"ngm-1305-aws-01\",\"shouldTap\":false,\"type\":\"passive\"},{\"agentName\":\"nimrod-01-paris-aws\",\"creationTime\":\"Mon, 06 Apr 2020 10:47:04 GMT\",\"id\":\"nimrod-01-ECSCluster-1ENCWB3MDFEUQ_trdemo-01-TrdemoUsersTaskDefinition-A4VERGQEE2C9\",\"instancesCount\":0,\"lastSeen\":\"Tue, 12 May 2020 12:34:26 GMT\",\"model\":\"default\",\"shouldTap\":false,\"type\":\"passive\"},{\"agentName\":\"nimrod-01-paris-aws\",\"creationTime\":\"Tue, 12 May 2020 16:03:37 GMT\",\"id\":\"nimrod-01-ECSCluster-1ENCWB3MDFEUQ_trdemo-no-tapper-TrdemoClientTaskDefinition-1SP9ZUN1LZE3N\",\"instancesCount\":0,\"lastSeen\":\"Tue, 12 May 2020 21:58:09 GMT\",\"model\":\"ngm-1205-aws-no-tapper-04\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"nimrod-01-paris-aws\",\"creationTime\":\"Tue, 12 May 2020 16:04:39 GMT\",\"id\":\"nimrod-01-ECSCluster-1ENCWB3MDFEUQ_trdemo-no-tapper-TrdemoFlightsTaskDefinition-1U2E8ONADR65S\",\"instancesCount\":0,\"lastSeen\":\"Tue, 12 May 2020 21:56:39 GMT\",\"model\":\"ngm-1205-aws-no-tapper-04\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"nimrod-01-paris-aws\",\"creationTime\":\"Tue, 12 May 2020 16:01:49 GMT\",\"id\":\"nimrod-01-ECSCluster-1ENCWB3MDFEUQ_trdemo-no-tapper-TrdemoShoppingcartTaskDefinition-PFB3IL2KQWE3\",\"instancesCount\":0,\"lastSeen\":\"Tue, 12 May 2020 21:56:34 GMT\",\"model\":\"ngm-1205-aws-no-tapper-04\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"nimrod-01-paris-aws\",\"creationTime\":\"Tue, 12 May 2020 16:01:54 GMT\",\"id\":\"nimrod-01-ECSCluster-1ENCWB3MDFEUQ_trdemo-no-tapper-TrdemoUsersTaskDefinition-CXOR2F6JGPNY\",\"instancesCount\":0,\"lastSeen\":\"Tue, 12 May 2020 21:56:54 GMT\",\"model\":\"ngm-1205-aws-no-tapper-04\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":null,\"creationTime\":null,\"id\":\"nimrodup9com-prx1\",\"instancesCount\":0,\"lastSeen\":\"Sun, 29 Mar 2020 12:59:27 GMT\",\"model\":\"ngm-2020-03-29-00\",\"shouldTap\":false,\"type\":\"proxy\"},{\"agentName\":null,\"creationTime\":\"Sun, 29 Mar 2020 14:09:23 GMT\",\"id\":\"nimrodup9com-someorgid123-prx1-local\",\"instancesCount\":0,\"lastSeen\":\"Sun, 29 Mar 2020 14:15:05 GMT\",\"model\":\"ngm-2020-03-29-01\",\"shouldTap\":true,\"type\":\"local_proxy\"},{\"agentName\":null,\"creationTime\":null,\"id\":\"ofriup9com-prx1\",\"instancesCount\":0,\"lastSeen\":\"Wed, 04 Mar 2020 08:04:47 GMT\",\"model\":\"aaa\",\"shouldTap\":false,\"type\":\"proxy\"},{\"agentName\":null,\"creationTime\":\"Thu, 19 Mar 2020 16:03:38 GMT\",\"id\":\"rami-prx1\",\"instancesCount\":0,\"lastSeen\":\"Thu, 19 Mar 2020 16:03:38 GMT\",\"model\":\"default\",\"shouldTap\":true,\"type\":\"proxy\"},{\"agentName\":null,\"creationTime\":\"Thu, 02 Apr 2020 06:31:20 GMT\",\"id\":\"ramibermanup9com-prx1\",\"instancesCount\":0,\"lastSeen\":\"Thu, 23 Apr 2020 06:26:18 GMT\",\"model\":\"rami-endpoints\",\"shouldTap\":false,\"type\":\"proxy\"},{\"agentName\":null,\"creationTime\":\"Mon, 04 May 2020 11:25:30 GMT\",\"id\":\"ramibrn1gmailcom-prx1\",\"instancesCount\":0,\"lastSeen\":\"Mon, 04 May 2020 11:26:11 GMT\",\"model\":\"regression-04-05-20\",\"shouldTap\":false,\"type\":\"proxy\"},{\"agentName\":null,\"creationTime\":\"Sun, 12 Apr 2020 12:50:24 GMT\",\"id\":\"ramibrngmailcom-prx1\",\"instancesCount\":0,\"lastSeen\":\"Sun, 12 Apr 2020 12:51:00 GMT\",\"model\":\"rami-proxy-test\",\"shouldTap\":false,\"type\":\"proxy\"},{\"agentName\":null,\"creationTime\":\"Mon, 16 Mar 2020 14:14:37 GMT\",\"id\":\"roeegadottestrio-prx1\",\"instancesCount\":0,\"lastSeen\":\"Thu, 19 Mar 2020 07:02:30 GMT\",\"model\":\"roee\",\"shouldTap\":false,\"type\":\"proxy\"},{\"agentName\":null,\"creationTime\":\"Tue, 31 Mar 2020 09:31:42 GMT\",\"id\":\"roeegadotup9com-someorgid123-prx1-local\",\"instancesCount\":0,\"lastSeen\":\"Mon, 13 Apr 2020 06:29:10 GMT\",\"model\":\"rg_local_proxy_5\",\"shouldTap\":false,\"type\":\"local_proxy\"}]\n" + }, + "redirectURL": "", + "headersSize": -1, + "bodySize": 20352 + }, + "cache": {}, + "timings": { + "send": -1, + "wait": -1, + "receive": 610 + } + }, + { + "startedDateTime": "2020-05-21T11:02:33.222000+00:00", + "time": 726, + "request": { + "method": "GET", + "url": "http://trcc-api-service/models/liraz_test_2105/suites/all/runs", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "Referer", + "value": "http://localhost:3000/someOrgId123/model/liraz_test_2105/lastResults/systems/all/summary" + }, + { + "name": "Accept-Encoding", + "value": "gzip, deflate, br" + }, + { + "name": "X-Forwarded-Proto", + "value": "https" + }, + { + "name": "X-Scheme", + "value": "https" + }, + { + "name": "Sec-Fetch-Mode", + "value": "cors" + }, + { + "name": "Origin", + "value": "http://localhost:3000" + }, + { + "name": "Sec-Fetch-Site", + "value": "cross-site" + }, + { + "name": "X-Forwarded-Port", + "value": "443" + }, + { + "name": "Authorization", + "value": "bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJqSEZ0R1dybjJpY084VnpDYXpaZWUyakpFc2drY1k5ZzhpN2FTbGtielRnIn0.eyJleHAiOjE1OTAwNTkxMTQsImlhdCI6MTU5MDA1ODgxNCwiYXV0aF90aW1lIjoxNTg5OTU4NDcwLCJqdGkiOiIyNzgxOTYyMy00Yjk5LTQ2MzQtOWZlNi02ZDRiNzYwNGU2ZmMiLCJpc3MiOiJodHRwczovL2F1dGguc3RnLnRlc3RyLmlvL2F1dGgvcmVhbG1zL3Rlc3RyIiwiYXVkIjoiYWNjb3VudCIsInN1YiI6ImU4NzAxMDZjLWJjYjItNDQxMy05Y2Q2LTUwMTZiNTUxMDRlYiIsInR5cCI6IkJlYXJlciIsImF6cCI6InJlYWN0LWNsaWVudCIsIm5vbmNlIjoiYzJiZTgwNGYtZjBiYS00ZWUxLTgyZWQtYmIzMTY5ZDBkYjU1Iiwic2Vzc2lvbl9zdGF0ZSI6IjM2ZDc2MDAxLTE5M2EtNGQ5OS05MTIwLTZmNGZkMjEwZDAxMiIsImFjciI6IjAiLCJhbGxvd2VkLW9yaWdpbnMiOlsiaHR0cHM6Ly9zdGcudGVzdHIuaW8iLCJjaHJvbWUtZXh0ZW5zaW9uOi8vbmFkZ2VsamVtbWJna2xkaGNwYWZqbXBtYXBpcGdsY20iLCJodHRwOi8vbG9jYWxob3N0OjMwMDAiXSwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm1hbmFnZUZlYXR1cmVGbGFncyIsIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyJhY2NvdW50Ijp7InJvbGVzIjpbIm1hbmFnZS1hY2NvdW50IiwibWFuYWdlLWFjY291bnQtbGlua3MiLCJ2aWV3LXByb2ZpbGUiXX19LCJzY29wZSI6Im9wZW5pZCBwcm9maWxlIGVtYWlsIiwiZ3JvdXBfbWVtYmVyc2hpcCI6WyJzb21lT3JnSWQxMjMiXSwiZW1haWxfdmVyaWZpZWQiOnRydWUsIm5hbWUiOiJMaXJheiBZZWhlemtlbCIsInByZWZlcnJlZF91c2VybmFtZSI6ImxpcmF6eUB1cDkuY29tIiwiZ2l2ZW5fbmFtZSI6IkxpcmF6IiwiZmFtaWx5X25hbWUiOiJZZWhlemtlbCIsImdyb3VwX3N1YmRvbWFpbiI6InNvbWVPcmdJZDEyMyIsImVtYWlsIjoibGlyYXp5QHVwOS5jb20iLCJmZWF0dXJlRmxhZ3MiOnsiZWRpdEVuZHBvaW50VmFyaWFibGVzIjp0cnVlLCJzaWRlTmF2aWdhdGlvbiI6dHJ1ZX19.KdLz7jeIr8HaST4FpJROrg6Sp-o1Nl5dU2hIbNCA0FEY-jmaoubiOlz6p7QthTJ8t-S0R_qdZtd7rXf249L6wGG_A6rriZhH41Fxhyrb0ig8OVrQp-sepv_AUf7GEIGYgpYIPFnZ6G3Dkq1aY9NzLXruh7fly_ZRkRlzF_wb1vt5NRJz3xeMrj82BOJJmUpv08AYYQhnyjKiBp7rgrNTTBejaFBozsJgXGkIi-DZfv862tgFhvPNuXsqKO5iOxv9nApuQJ2O4knVB1ag7tqB1xQcvBdkZt9gG1VVkpWsM_2j5C9cBwOuPRgHZhpZuT_YNfB4ITefGV1aYfRF-cjnug" + }, + { + "name": "User-Agent", + "value": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36" + }, + { + "name": "Sec-Fetch-Dest", + "value": "empty" + }, + { + "name": "X-Real-Ip", + "value": "10.132.0.22" + }, + { + "name": "X-Forwarded-For", + "value": "10.132.0.22" + }, + { + "name": "Accept-Language", + "value": "en-US,en;q=0.9" + }, + { + "name": "X-Request-Id", + "value": "3e5821ca5ffbe1890f25951785d4f57b" + }, + { + "name": "X-Forwarded-Host", + "value": "trcc.stg.testr.io" + }, + { + "name": "Accept", + "value": "application/json, text/plain, */*" + }, + { + "name": ":method", + "value": "GET" + }, + { + "name": ":path", + "value": "/models/liraz_test_2105/suites/all/runs" + }, + { + "name": ":authority", + "value": "trcc.stg.testr.io" + }, + { + "name": ":scheme", + "value": "http" + }, + { + "name": "x-request-start", + "value": "1590058953.222" + }, + { + "name": "x-up9-source", + "value": "10.48.1.44" + }, + { + "name": "x-up9-destination", + "value": "10.48.2.97:5000" + } + ], + "queryString": [], + "headersSize": -1, + "bodySize": -1 + }, + "response": { + "status": 200, + "statusText": "OK", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "Connection", + "value": "keep-alive" + }, + { + "name": "Content-Type", + "value": "application/json" + }, + { + "name": "Content-Length", + "value": "3" + }, + { + "name": "Access-Control-Allow-Origin", + "value": "http://localhost:3000" + }, + { + "name": "Access-Control-Allow-Credentials", + "value": "true" + }, + { + "name": "Vary", + "value": "Origin" + }, + { + "name": "Server", + "value": "gunicorn/19.9.0" + }, + { + "name": "Date", + "value": "Thu, 21 May 2020 11:02:33 GMT" + }, + { + "name": ":status", + "value": "200" + }, + { + "name": "duration_ms", + "value": "726" + } + ], + "content": { + "size": 3, + "mimeType": "", + "text": "[]\n" + }, + "redirectURL": "", + "headersSize": -1, + "bodySize": 3 + }, + "cache": {}, + "timings": { + "send": -1, + "wait": -1, + "receive": 726 + } + }, + { + "startedDateTime": "2020-05-21T11:02:33.950000+00:00", + "time": 3, + "request": { + "method": "GET", + "url": "http://trcc-api-service/models/rg_2105_01/status", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "X-Real-Ip", + "value": "10.132.0.85" + }, + { + "name": "X-Forwarded-For", + "value": "10.132.0.85" + }, + { + "name": "X-Forwarded-Host", + "value": "trcc.stg.testr.io" + }, + { + "name": "X-Forwarded-Proto", + "value": "https" + }, + { + "name": "Origin", + "value": "https://stg.testr.io" + }, + { + "name": "Referer", + "value": "https://stg.testr.io/someOrgId123/model/rg_2105_01/lastResults/systems" + }, + { + "name": "X-Request-Id", + "value": "1c1787968ec761ac96c231541e666220" + }, + { + "name": "X-Forwarded-Port", + "value": "443" + }, + { + "name": "X-Scheme", + "value": "https" + }, + { + "name": "Authorization", + "value": "bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJqSEZ0R1dybjJpY084VnpDYXpaZWUyakpFc2drY1k5ZzhpN2FTbGtielRnIn0.eyJleHAiOjE1OTAwNTkwMzIsImlhdCI6MTU5MDA1ODczMiwiYXV0aF90aW1lIjoxNTg5ODk1MDc2LCJqdGkiOiI1YjZkZmNjNi0zODVjLTQ4MjUtOGQxNC0yNjYxYWU0ZDlhNzQiLCJpc3MiOiJodHRwczovL2F1dGguc3RnLnRlc3RyLmlvL2F1dGgvcmVhbG1zL3Rlc3RyIiwiYXVkIjoiYWNjb3VudCIsInN1YiI6IjNjMzM3OWRkLWM0MTEtNGZiYS1hMTQzLTY5NTFmNzBiODQyYSIsInR5cCI6IkJlYXJlciIsImF6cCI6InJlYWN0LWNsaWVudCIsIm5vbmNlIjoiMmM2YzBjYzQtYTYxNS00NWU5LTk0NTUtOWQxOGU5NDViZTljIiwic2Vzc2lvbl9zdGF0ZSI6IjAyODlkODZhLWIxMTMtNGM5Yy05MGIyLWU1ZGE3ODc2YmE3MCIsImFjciI6IjAiLCJhbGxvd2VkLW9yaWdpbnMiOlsiaHR0cHM6Ly9zdGcudGVzdHIuaW8iLCJjaHJvbWUtZXh0ZW5zaW9uOi8vbmFkZ2VsamVtbWJna2xkaGNwYWZqbXBtYXBpcGdsY20iLCJodHRwOi8vbG9jYWxob3N0OjMwMDAiXSwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm1hbmFnZUZlYXR1cmVGbGFncyIsIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyJhY2NvdW50Ijp7InJvbGVzIjpbIm1hbmFnZS1hY2NvdW50IiwibWFuYWdlLWFjY291bnQtbGlua3MiLCJ2aWV3LXByb2ZpbGUiXX19LCJzY29wZSI6Im9wZW5pZCBwcm9maWxlIGVtYWlsIiwiZ3JvdXBfbWVtYmVyc2hpcCI6WyJzb21lT3JnSWQxMjMiXSwiZW1haWxfdmVyaWZpZWQiOnRydWUsIm5hbWUiOiJSb2VlIEdhZG90IiwicHJlZmVycmVkX3VzZXJuYW1lIjoicm9lZS5nYWRvdEB1cDkuY29tIiwiZ2l2ZW5fbmFtZSI6IlJvZWUiLCJmYW1pbHlfbmFtZSI6IkdhZG90IiwiZ3JvdXBfc3ViZG9tYWluIjoic29tZU9yZ0lkMTIzIiwiZW1haWwiOiJyb2VlLmdhZG90QHVwOS5jb20iLCJmZWF0dXJlRmxhZ3MiOnsiZWRpdEVuZHBvaW50VmFyaWFibGVzIjp0cnVlLCJzaWRlTmF2aWdhdGlvbiI6dHJ1ZX19.MRoLjJEdFBpcQ4KIKW-2xE3R0twdoh1beJjIzDyL7iSdk82QnltfXso6Fc_HLeq7FwgtC4uNoEaBZUTftMcc5V6PtehZmd1AbL4DR-1A1QgMWDMIxhII6QxcBDZDNbr20vSj8KrXGatbdd78c24MF_M6QsBF77wbemETVmz-Ju-zR6DX9Gu5vh_CMCb71_WSrmehIWU4OuJ-OvCeVA6cg59_TrWSVTZ5RCKkJ-_e6_tYIlDeNeNTNTciukZqF0xe8KpGqG1mqJwNMeN9srw7Qzihd5SrnD4BV2EQmwW_Aas04cnp3-WhjIqy41MW_L4sN8tgYzld2BUQiREAjlT7MA" + }, + { + "name": "User-Agent", + "value": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36" + }, + { + "name": "Sec-Fetch-Mode", + "value": "cors" + }, + { + "name": "Sec-Fetch-Site", + "value": "same-site" + }, + { + "name": "Sec-Fetch-Dest", + "value": "empty" + }, + { + "name": "Accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "Accept-Encoding", + "value": "gzip, deflate, br" + }, + { + "name": "Accept-Language", + "value": "en-US,en;q=0.9" + }, + { + "name": ":method", + "value": "GET" + }, + { + "name": ":path", + "value": "/models/rg_2105_01/status" + }, + { + "name": ":authority", + "value": "trcc.stg.testr.io" + }, + { + "name": ":scheme", + "value": "http" + }, + { + "name": "x-request-start", + "value": "1590058953.950" + }, + { + "name": "x-up9-source", + "value": "10.48.1.44" + }, + { + "name": "x-up9-destination", + "value": "10.48.2.97:5000" + } + ], + "queryString": [], + "headersSize": -1, + "bodySize": -1 + }, + "response": { + "status": 200, + "statusText": "OK", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "Date", + "value": "Thu, 21 May 2020 11:02:33 GMT" + }, + { + "name": "Connection", + "value": "keep-alive" + }, + { + "name": "Content-Type", + "value": "application/json" + }, + { + "name": "Content-Length", + "value": "3" + }, + { + "name": "Access-Control-Allow-Origin", + "value": "http://localhost:3000" + }, + { + "name": "Access-Control-Allow-Credentials", + "value": "true" + }, + { + "name": "Vary", + "value": "Origin" + }, + { + "name": "Server", + "value": "gunicorn/19.9.0" + }, + { + "name": ":status", + "value": "200" + }, + { + "name": "duration_ms", + "value": "3" + } + ], + "content": { + "size": 3, + "mimeType": "", + "text": "[]\n" + }, + "redirectURL": "", + "headersSize": -1, + "bodySize": 3 + }, + "cache": {}, + "timings": { + "send": -1, + "wait": -1, + "receive": 3 + } + }, + { + "startedDateTime": "2020-05-21T11:02:33.952000+00:00", + "time": 1, + "request": { + "method": "GET", + "url": "http://trcc-api-service/models/liraz_test_2105/suites/all/runs", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "X-Forwarded-Host", + "value": "trcc.stg.testr.io" + }, + { + "name": "X-Forwarded-Proto", + "value": "https" + }, + { + "name": "Sec-Fetch-Dest", + "value": "empty" + }, + { + "name": "Referer", + "value": "http://localhost:3000/someOrgId123/model/liraz_test_2105/lastResults/systems/all/summary" + }, + { + "name": "Accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "Authorization", + "value": "bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJqSEZ0R1dybjJpY084VnpDYXpaZWUyakpFc2drY1k5ZzhpN2FTbGtielRnIn0.eyJleHAiOjE1OTAwNTkxMTQsImlhdCI6MTU5MDA1ODgxNCwiYXV0aF90aW1lIjoxNTg5OTU4NDcwLCJqdGkiOiIyNzgxOTYyMy00Yjk5LTQ2MzQtOWZlNi02ZDRiNzYwNGU2ZmMiLCJpc3MiOiJodHRwczovL2F1dGguc3RnLnRlc3RyLmlvL2F1dGgvcmVhbG1zL3Rlc3RyIiwiYXVkIjoiYWNjb3VudCIsInN1YiI6ImU4NzAxMDZjLWJjYjItNDQxMy05Y2Q2LTUwMTZiNTUxMDRlYiIsInR5cCI6IkJlYXJlciIsImF6cCI6InJlYWN0LWNsaWVudCIsIm5vbmNlIjoiYzJiZTgwNGYtZjBiYS00ZWUxLTgyZWQtYmIzMTY5ZDBkYjU1Iiwic2Vzc2lvbl9zdGF0ZSI6IjM2ZDc2MDAxLTE5M2EtNGQ5OS05MTIwLTZmNGZkMjEwZDAxMiIsImFjciI6IjAiLCJhbGxvd2VkLW9yaWdpbnMiOlsiaHR0cHM6Ly9zdGcudGVzdHIuaW8iLCJjaHJvbWUtZXh0ZW5zaW9uOi8vbmFkZ2VsamVtbWJna2xkaGNwYWZqbXBtYXBpcGdsY20iLCJodHRwOi8vbG9jYWxob3N0OjMwMDAiXSwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm1hbmFnZUZlYXR1cmVGbGFncyIsIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyJhY2NvdW50Ijp7InJvbGVzIjpbIm1hbmFnZS1hY2NvdW50IiwibWFuYWdlLWFjY291bnQtbGlua3MiLCJ2aWV3LXByb2ZpbGUiXX19LCJzY29wZSI6Im9wZW5pZCBwcm9maWxlIGVtYWlsIiwiZ3JvdXBfbWVtYmVyc2hpcCI6WyJzb21lT3JnSWQxMjMiXSwiZW1haWxfdmVyaWZpZWQiOnRydWUsIm5hbWUiOiJMaXJheiBZZWhlemtlbCIsInByZWZlcnJlZF91c2VybmFtZSI6ImxpcmF6eUB1cDkuY29tIiwiZ2l2ZW5fbmFtZSI6IkxpcmF6IiwiZmFtaWx5X25hbWUiOiJZZWhlemtlbCIsImdyb3VwX3N1YmRvbWFpbiI6InNvbWVPcmdJZDEyMyIsImVtYWlsIjoibGlyYXp5QHVwOS5jb20iLCJmZWF0dXJlRmxhZ3MiOnsiZWRpdEVuZHBvaW50VmFyaWFibGVzIjp0cnVlLCJzaWRlTmF2aWdhdGlvbiI6dHJ1ZX19.KdLz7jeIr8HaST4FpJROrg6Sp-o1Nl5dU2hIbNCA0FEY-jmaoubiOlz6p7QthTJ8t-S0R_qdZtd7rXf249L6wGG_A6rriZhH41Fxhyrb0ig8OVrQp-sepv_AUf7GEIGYgpYIPFnZ6G3Dkq1aY9NzLXruh7fly_ZRkRlzF_wb1vt5NRJz3xeMrj82BOJJmUpv08AYYQhnyjKiBp7rgrNTTBejaFBozsJgXGkIi-DZfv862tgFhvPNuXsqKO5iOxv9nApuQJ2O4knVB1ag7tqB1xQcvBdkZt9gG1VVkpWsM_2j5C9cBwOuPRgHZhpZuT_YNfB4ITefGV1aYfRF-cjnug" + }, + { + "name": "User-Agent", + "value": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36" + }, + { + "name": "Origin", + "value": "http://localhost:3000" + }, + { + "name": "Sec-Fetch-Mode", + "value": "cors" + }, + { + "name": "X-Request-Id", + "value": "8db2862234f5b0230439f763d30d20ed" + }, + { + "name": "X-Real-Ip", + "value": "10.132.0.22" + }, + { + "name": "X-Forwarded-For", + "value": "10.132.0.22" + }, + { + "name": "Sec-Fetch-Site", + "value": "cross-site" + }, + { + "name": "Accept-Encoding", + "value": "gzip, deflate, br" + }, + { + "name": "X-Forwarded-Port", + "value": "443" + }, + { + "name": "X-Scheme", + "value": "https" + }, + { + "name": "Accept-Language", + "value": "en-US,en;q=0.9" + }, + { + "name": ":method", + "value": "GET" + }, + { + "name": ":path", + "value": "/models/liraz_test_2105/suites/all/runs" + }, + { + "name": ":authority", + "value": "trcc.stg.testr.io" + }, + { + "name": ":scheme", + "value": "http" + }, + { + "name": "x-request-start", + "value": "1590058953.952" + }, + { + "name": "x-up9-source", + "value": "10.48.1.44" + }, + { + "name": "x-up9-destination", + "value": "10.48.2.97:5000" + } + ], + "queryString": [], + "headersSize": -1, + "bodySize": -1 + }, + "response": { + "status": 200, + "statusText": "OK", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "Date", + "value": "Thu, 21 May 2020 11:02:33 GMT" + }, + { + "name": "Connection", + "value": "keep-alive" + }, + { + "name": "Content-Type", + "value": "application/json" + }, + { + "name": "Content-Length", + "value": "3" + }, + { + "name": "Access-Control-Allow-Origin", + "value": "https://stg.testr.io" + }, + { + "name": "Access-Control-Allow-Credentials", + "value": "true" + }, + { + "name": "Vary", + "value": "Origin" + }, + { + "name": "Server", + "value": "gunicorn/19.9.0" + }, + { + "name": ":status", + "value": "200" + }, + { + "name": "duration_ms", + "value": "1" + } + ], + "content": { + "size": 3, + "mimeType": "", + "text": "[]\n" + }, + "redirectURL": "", + "headersSize": -1, + "bodySize": 3 + }, + "cache": {}, + "timings": { + "send": -1, + "wait": -1, + "receive": 1 + } + }, + { + "startedDateTime": "2020-05-21T11:02:33.952000+00:00", + "time": 1, + "request": { + "method": "GET", + "url": "http://trcc-api-service/models/aws_kong5/suites/all/runs", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "X-Forwarded-Port", + "value": "443" + }, + { + "name": "Authorization", + "value": "bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJqSEZ0R1dybjJpY084VnpDYXpaZWUyakpFc2drY1k5ZzhpN2FTbGtielRnIn0.eyJleHAiOjE1OTAwNTkyNDMsImlhdCI6MTU5MDA1ODk0MywiYXV0aF90aW1lIjoxNTkwMDU4NjUxLCJqdGkiOiI1ODYzNmRiMy0wN2IxLTQ2ZDYtOGNiNS01MzEzMDFlZGY4MGYiLCJpc3MiOiJodHRwczovL2F1dGguc3RnLnRlc3RyLmlvL2F1dGgvcmVhbG1zL3Rlc3RyIiwiYXVkIjoiYWNjb3VudCIsInN1YiI6IjBlYWU4ZmFjLTgyYTEtNDUwNi05MWQ0LTA4ZDYxZTI2NWY1NCIsInR5cCI6IkJlYXJlciIsImF6cCI6InJlYWN0LWNsaWVudCIsIm5vbmNlIjoiNTRjMTM5OTktMDg0NS00OWNmLWI1OTAtOTY1ZThjNWI0NmJlIiwic2Vzc2lvbl9zdGF0ZSI6ImY3YjEyOTM1LThmMTctNDc1Zi04NmRhLWQ4NjFjZTYxNWZjNyIsImFjciI6IjAiLCJhbGxvd2VkLW9yaWdpbnMiOlsiaHR0cHM6Ly9zdGcudGVzdHIuaW8iLCJjaHJvbWUtZXh0ZW5zaW9uOi8vbmFkZ2VsamVtbWJna2xkaGNwYWZqbXBtYXBpcGdsY20iLCJodHRwOi8vbG9jYWxob3N0OjMwMDAiXSwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyJhY2NvdW50Ijp7InJvbGVzIjpbIm1hbmFnZS1hY2NvdW50IiwibWFuYWdlLWFjY291bnQtbGlua3MiLCJ2aWV3LXByb2ZpbGUiXX19LCJzY29wZSI6Im9wZW5pZCBwcm9maWxlIGVtYWlsIiwiZ3JvdXBfbWVtYmVyc2hpcCI6WyJzb21lT3JnSWQxMjMiXSwiZW1haWxfdmVyaWZpZWQiOnRydWUsIm5hbWUiOiJSYW1pIEJlcm1hbiIsInByZWZlcnJlZF91c2VybmFtZSI6InJhbWkuYmVybWFuQHVwOS5jb20iLCJnaXZlbl9uYW1lIjoiUmFtaSIsImZhbWlseV9uYW1lIjoiQmVybWFuIiwiZ3JvdXBfc3ViZG9tYWluIjoic29tZU9yZ0lkMTIzIiwiZW1haWwiOiJyYW1pLmJlcm1hbkB1cDkuY29tIiwiZmVhdHVyZUZsYWdzIjp7ImVkaXRFbmRwb2ludFZhcmlhYmxlcyI6dHJ1ZSwic2lkZU5hdmlnYXRpb24iOnRydWV9fQ.UEDsnoo9A8CbdIYKXoOrAAq6y2K7Aoqf-PplHhXFoVep9ewwA9qBjXqgn0fK9cnE_KfZKUcX_cy1HDhhdIfR_aHpbWWhQ3gxISkE6ALka18JIrUv7bFaHKio6eEP6tgn34QVP8aQVEB3e3g7h3dLuUvZ1xIMnt6fy03tD3KgiQlvdHwg5FhJLosiCrHgboEqN5VH_f_2QF33XiXTkDG1e-AOEnIIWqloMDTUPZEUvEo_KH68lB0Uu23YhhI5gPAuKQVb_UjFWcF_6Ysvk3C3j0cuk09DZ7YEI1u-bKp58LHnsS6gqNFQxy-CDlZ8Oht5d2I3LbwZZxHzMixzzFzJCA" + }, + { + "name": "Sec-Fetch-Mode", + "value": "cors" + }, + { + "name": "Sec-Fetch-Dest", + "value": "empty" + }, + { + "name": "X-Request-Id", + "value": "ea0d256adc9840cec133a87f484a426c" + }, + { + "name": "X-Real-Ip", + "value": "10.132.0.11" + }, + { + "name": "X-Forwarded-Host", + "value": "trcc.stg.testr.io" + }, + { + "name": "X-Forwarded-Proto", + "value": "https" + }, + { + "name": "Referer", + "value": "https://stg.testr.io/someOrgId123/model/aws_kong5/lastResults/systems/all/runs" + }, + { + "name": "Accept-Encoding", + "value": "gzip, deflate, br" + }, + { + "name": "Accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "Dnt", + "value": "1" + }, + { + "name": "User-Agent", + "value": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36" + }, + { + "name": "Origin", + "value": "https://stg.testr.io" + }, + { + "name": "Sec-Fetch-Site", + "value": "same-site" + }, + { + "name": "X-Forwarded-For", + "value": "10.132.0.11" + }, + { + "name": "X-Scheme", + "value": "https" + }, + { + "name": "Accept-Language", + "value": "en-IL,en-US;q=0.9,en;q=0.8,he;q=0.7,pl;q=0.6,ru;q=0.5" + }, + { + "name": ":method", + "value": "GET" + }, + { + "name": ":path", + "value": "/models/aws_kong5/suites/all/runs" + }, + { + "name": ":authority", + "value": "trcc.stg.testr.io" + }, + { + "name": ":scheme", + "value": "http" + }, + { + "name": "x-request-start", + "value": "1590058953.952" + }, + { + "name": "x-up9-source", + "value": "10.48.1.44" + }, + { + "name": "x-up9-destination", + "value": "10.48.2.97:5000" + } + ], + "queryString": [], + "headersSize": -1, + "bodySize": -1 + }, + "response": { + "status": 200, + "statusText": "OK", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "Access-Control-Allow-Origin", + "value": "https://stg.testr.io" + }, + { + "name": "Access-Control-Allow-Credentials", + "value": "true" + }, + { + "name": "Vary", + "value": "Origin" + }, + { + "name": "Server", + "value": "gunicorn/19.9.0" + }, + { + "name": "Date", + "value": "Thu, 21 May 2020 11:02:33 GMT" + }, + { + "name": "Connection", + "value": "keep-alive" + }, + { + "name": "Content-Type", + "value": "application/json" + }, + { + "name": "Content-Length", + "value": "3" + }, + { + "name": ":status", + "value": "200" + }, + { + "name": "duration_ms", + "value": "1" + } + ], + "content": { + "size": 3, + "mimeType": "", + "text": "[]\n" + }, + "redirectURL": "", + "headersSize": -1, + "bodySize": 3 + }, + "cache": {}, + "timings": { + "send": -1, + "wait": -1, + "receive": 1 + } + }, + { + "startedDateTime": "2020-05-21T11:02:33.952000+00:00", + "time": 1, + "request": { + "method": "GET", + "url": "http://trcc-api-service/models/aws_kong5/suites/all/runs", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "X-Forwarded-Proto", + "value": "https" + }, + { + "name": "Authorization", + "value": "bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJqSEZ0R1dybjJpY084VnpDYXpaZWUyakpFc2drY1k5ZzhpN2FTbGtielRnIn0.eyJleHAiOjE1OTAwNTkyNDMsImlhdCI6MTU5MDA1ODk0MywiYXV0aF90aW1lIjoxNTkwMDU4NjUxLCJqdGkiOiI1ODYzNmRiMy0wN2IxLTQ2ZDYtOGNiNS01MzEzMDFlZGY4MGYiLCJpc3MiOiJodHRwczovL2F1dGguc3RnLnRlc3RyLmlvL2F1dGgvcmVhbG1zL3Rlc3RyIiwiYXVkIjoiYWNjb3VudCIsInN1YiI6IjBlYWU4ZmFjLTgyYTEtNDUwNi05MWQ0LTA4ZDYxZTI2NWY1NCIsInR5cCI6IkJlYXJlciIsImF6cCI6InJlYWN0LWNsaWVudCIsIm5vbmNlIjoiNTRjMTM5OTktMDg0NS00OWNmLWI1OTAtOTY1ZThjNWI0NmJlIiwic2Vzc2lvbl9zdGF0ZSI6ImY3YjEyOTM1LThmMTctNDc1Zi04NmRhLWQ4NjFjZTYxNWZjNyIsImFjciI6IjAiLCJhbGxvd2VkLW9yaWdpbnMiOlsiaHR0cHM6Ly9zdGcudGVzdHIuaW8iLCJjaHJvbWUtZXh0ZW5zaW9uOi8vbmFkZ2VsamVtbWJna2xkaGNwYWZqbXBtYXBpcGdsY20iLCJodHRwOi8vbG9jYWxob3N0OjMwMDAiXSwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyJhY2NvdW50Ijp7InJvbGVzIjpbIm1hbmFnZS1hY2NvdW50IiwibWFuYWdlLWFjY291bnQtbGlua3MiLCJ2aWV3LXByb2ZpbGUiXX19LCJzY29wZSI6Im9wZW5pZCBwcm9maWxlIGVtYWlsIiwiZ3JvdXBfbWVtYmVyc2hpcCI6WyJzb21lT3JnSWQxMjMiXSwiZW1haWxfdmVyaWZpZWQiOnRydWUsIm5hbWUiOiJSYW1pIEJlcm1hbiIsInByZWZlcnJlZF91c2VybmFtZSI6InJhbWkuYmVybWFuQHVwOS5jb20iLCJnaXZlbl9uYW1lIjoiUmFtaSIsImZhbWlseV9uYW1lIjoiQmVybWFuIiwiZ3JvdXBfc3ViZG9tYWluIjoic29tZU9yZ0lkMTIzIiwiZW1haWwiOiJyYW1pLmJlcm1hbkB1cDkuY29tIiwiZmVhdHVyZUZsYWdzIjp7ImVkaXRFbmRwb2ludFZhcmlhYmxlcyI6dHJ1ZSwic2lkZU5hdmlnYXRpb24iOnRydWV9fQ.UEDsnoo9A8CbdIYKXoOrAAq6y2K7Aoqf-PplHhXFoVep9ewwA9qBjXqgn0fK9cnE_KfZKUcX_cy1HDhhdIfR_aHpbWWhQ3gxISkE6ALka18JIrUv7bFaHKio6eEP6tgn34QVP8aQVEB3e3g7h3dLuUvZ1xIMnt6fy03tD3KgiQlvdHwg5FhJLosiCrHgboEqN5VH_f_2QF33XiXTkDG1e-AOEnIIWqloMDTUPZEUvEo_KH68lB0Uu23YhhI5gPAuKQVb_UjFWcF_6Ysvk3C3j0cuk09DZ7YEI1u-bKp58LHnsS6gqNFQxy-CDlZ8Oht5d2I3LbwZZxHzMixzzFzJCA" + }, + { + "name": "User-Agent", + "value": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36" + }, + { + "name": "Sec-Fetch-Mode", + "value": "cors" + }, + { + "name": "X-Request-Id", + "value": "b355043bd9e688c251f1c1081ccce58e" + }, + { + "name": "Dnt", + "value": "1" + }, + { + "name": "Sec-Fetch-Site", + "value": "same-site" + }, + { + "name": "Accept-Language", + "value": "en-IL,en-US;q=0.9,en;q=0.8,he;q=0.7,pl;q=0.6,ru;q=0.5" + }, + { + "name": "X-Real-Ip", + "value": "10.132.0.11" + }, + { + "name": "X-Forwarded-For", + "value": "10.132.0.11" + }, + { + "name": "X-Forwarded-Host", + "value": "trcc.stg.testr.io" + }, + { + "name": "Accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "Referer", + "value": "https://stg.testr.io/someOrgId123/model/aws_kong5/lastResults/systems/all/runs" + }, + { + "name": "X-Forwarded-Port", + "value": "443" + }, + { + "name": "X-Scheme", + "value": "https" + }, + { + "name": "Origin", + "value": "https://stg.testr.io" + }, + { + "name": "Sec-Fetch-Dest", + "value": "empty" + }, + { + "name": "Accept-Encoding", + "value": "gzip, deflate, br" + }, + { + "name": ":method", + "value": "GET" + }, + { + "name": ":path", + "value": "/models/aws_kong5/suites/all/runs" + }, + { + "name": ":authority", + "value": "trcc.stg.testr.io" + }, + { + "name": ":scheme", + "value": "http" + }, + { + "name": "x-request-start", + "value": "1590058953.952" + }, + { + "name": "x-up9-source", + "value": "10.48.1.44" + }, + { + "name": "x-up9-destination", + "value": "10.48.2.97:5000" + } + ], + "queryString": [], + "headersSize": -1, + "bodySize": -1 + }, + "response": { + "status": 200, + "statusText": "OK", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "Content-Length", + "value": "3" + }, + { + "name": "Access-Control-Allow-Origin", + "value": "https://stg.testr.io" + }, + { + "name": "Access-Control-Allow-Credentials", + "value": "true" + }, + { + "name": "Vary", + "value": "Origin" + }, + { + "name": "Server", + "value": "gunicorn/19.9.0" + }, + { + "name": "Date", + "value": "Thu, 21 May 2020 11:02:33 GMT" + }, + { + "name": "Connection", + "value": "keep-alive" + }, + { + "name": "Content-Type", + "value": "application/json" + }, + { + "name": ":status", + "value": "200" + }, + { + "name": "duration_ms", + "value": "1" + } + ], + "content": { + "size": 3, + "mimeType": "", + "text": "[]\n" + }, + "redirectURL": "", + "headersSize": -1, + "bodySize": 3 + }, + "cache": {}, + "timings": { + "send": -1, + "wait": -1, + "receive": 1 + } + }, + { + "startedDateTime": "2020-05-21T11:02:33.953000+00:00", + "time": 1, + "request": { + "method": "GET", + "url": "http://trcc-api-service/models/aws_kong5/suites/all/runs", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "X-Real-Ip", + "value": "10.132.0.11" + }, + { + "name": "Sec-Fetch-Mode", + "value": "cors" + }, + { + "name": "X-Forwarded-Host", + "value": "trcc.stg.testr.io" + }, + { + "name": "X-Forwarded-Port", + "value": "443" + }, + { + "name": "X-Scheme", + "value": "https" + }, + { + "name": "Accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "Authorization", + "value": "bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJqSEZ0R1dybjJpY084VnpDYXpaZWUyakpFc2drY1k5ZzhpN2FTbGtielRnIn0.eyJleHAiOjE1OTAwNTkyNDMsImlhdCI6MTU5MDA1ODk0MywiYXV0aF90aW1lIjoxNTkwMDU4NjUxLCJqdGkiOiI1ODYzNmRiMy0wN2IxLTQ2ZDYtOGNiNS01MzEzMDFlZGY4MGYiLCJpc3MiOiJodHRwczovL2F1dGguc3RnLnRlc3RyLmlvL2F1dGgvcmVhbG1zL3Rlc3RyIiwiYXVkIjoiYWNjb3VudCIsInN1YiI6IjBlYWU4ZmFjLTgyYTEtNDUwNi05MWQ0LTA4ZDYxZTI2NWY1NCIsInR5cCI6IkJlYXJlciIsImF6cCI6InJlYWN0LWNsaWVudCIsIm5vbmNlIjoiNTRjMTM5OTktMDg0NS00OWNmLWI1OTAtOTY1ZThjNWI0NmJlIiwic2Vzc2lvbl9zdGF0ZSI6ImY3YjEyOTM1LThmMTctNDc1Zi04NmRhLWQ4NjFjZTYxNWZjNyIsImFjciI6IjAiLCJhbGxvd2VkLW9yaWdpbnMiOlsiaHR0cHM6Ly9zdGcudGVzdHIuaW8iLCJjaHJvbWUtZXh0ZW5zaW9uOi8vbmFkZ2VsamVtbWJna2xkaGNwYWZqbXBtYXBpcGdsY20iLCJodHRwOi8vbG9jYWxob3N0OjMwMDAiXSwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyJhY2NvdW50Ijp7InJvbGVzIjpbIm1hbmFnZS1hY2NvdW50IiwibWFuYWdlLWFjY291bnQtbGlua3MiLCJ2aWV3LXByb2ZpbGUiXX19LCJzY29wZSI6Im9wZW5pZCBwcm9maWxlIGVtYWlsIiwiZ3JvdXBfbWVtYmVyc2hpcCI6WyJzb21lT3JnSWQxMjMiXSwiZW1haWxfdmVyaWZpZWQiOnRydWUsIm5hbWUiOiJSYW1pIEJlcm1hbiIsInByZWZlcnJlZF91c2VybmFtZSI6InJhbWkuYmVybWFuQHVwOS5jb20iLCJnaXZlbl9uYW1lIjoiUmFtaSIsImZhbWlseV9uYW1lIjoiQmVybWFuIiwiZ3JvdXBfc3ViZG9tYWluIjoic29tZU9yZ0lkMTIzIiwiZW1haWwiOiJyYW1pLmJlcm1hbkB1cDkuY29tIiwiZmVhdHVyZUZsYWdzIjp7ImVkaXRFbmRwb2ludFZhcmlhYmxlcyI6dHJ1ZSwic2lkZU5hdmlnYXRpb24iOnRydWV9fQ.UEDsnoo9A8CbdIYKXoOrAAq6y2K7Aoqf-PplHhXFoVep9ewwA9qBjXqgn0fK9cnE_KfZKUcX_cy1HDhhdIfR_aHpbWWhQ3gxISkE6ALka18JIrUv7bFaHKio6eEP6tgn34QVP8aQVEB3e3g7h3dLuUvZ1xIMnt6fy03tD3KgiQlvdHwg5FhJLosiCrHgboEqN5VH_f_2QF33XiXTkDG1e-AOEnIIWqloMDTUPZEUvEo_KH68lB0Uu23YhhI5gPAuKQVb_UjFWcF_6Ysvk3C3j0cuk09DZ7YEI1u-bKp58LHnsS6gqNFQxy-CDlZ8Oht5d2I3LbwZZxHzMixzzFzJCA" + }, + { + "name": "Origin", + "value": "https://stg.testr.io" + }, + { + "name": "Sec-Fetch-Dest", + "value": "empty" + }, + { + "name": "Dnt", + "value": "1" + }, + { + "name": "User-Agent", + "value": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36" + }, + { + "name": "Sec-Fetch-Site", + "value": "same-site" + }, + { + "name": "Referer", + "value": "https://stg.testr.io/someOrgId123/model/aws_kong5/lastResults/systems/all/runs" + }, + { + "name": "Accept-Encoding", + "value": "gzip, deflate, br" + }, + { + "name": "X-Request-Id", + "value": "6431736344b0f880120c9525c1ae8073" + }, + { + "name": "X-Forwarded-For", + "value": "10.132.0.11" + }, + { + "name": "X-Forwarded-Proto", + "value": "https" + }, + { + "name": "Accept-Language", + "value": "en-IL,en-US;q=0.9,en;q=0.8,he;q=0.7,pl;q=0.6,ru;q=0.5" + }, + { + "name": ":method", + "value": "GET" + }, + { + "name": ":path", + "value": "/models/aws_kong5/suites/all/runs" + }, + { + "name": ":authority", + "value": "trcc.stg.testr.io" + }, + { + "name": ":scheme", + "value": "http" + }, + { + "name": "x-request-start", + "value": "1590058953.953" + }, + { + "name": "x-up9-source", + "value": "10.48.1.44" + }, + { + "name": "x-up9-destination", + "value": "10.48.2.97:5000" + } + ], + "queryString": [], + "headersSize": -1, + "bodySize": -1 + }, + "response": { + "status": 200, + "statusText": "OK", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "Server", + "value": "gunicorn/19.9.0" + }, + { + "name": "Date", + "value": "Thu, 21 May 2020 11:02:33 GMT" + }, + { + "name": "Connection", + "value": "keep-alive" + }, + { + "name": "Content-Type", + "value": "application/json" + }, + { + "name": "Content-Length", + "value": "3" + }, + { + "name": "Access-Control-Allow-Origin", + "value": "http://localhost:3000" + }, + { + "name": "Access-Control-Allow-Credentials", + "value": "true" + }, + { + "name": "Vary", + "value": "Origin" + }, + { + "name": ":status", + "value": "200" + }, + { + "name": "duration_ms", + "value": "1" + } + ], + "content": { + "size": 3, + "mimeType": "", + "text": "[]\n" + }, + "redirectURL": "", + "headersSize": -1, + "bodySize": 3 + }, + "cache": {}, + "timings": { + "send": -1, + "wait": -1, + "receive": 1 + } + }, + { + "startedDateTime": "2020-05-21T11:02:33.950000+00:00", + "time": 4, + "request": { + "method": "GET", + "url": "http://trcc-api-service/tapping/state", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "X-Forwarded-For", + "value": "10.132.0.22" + }, + { + "name": "X-Forwarded-Host", + "value": "trcc.stg.testr.io" + }, + { + "name": "Accept", + "value": "*/*" + }, + { + "name": "Authorization", + "value": "Bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJqSEZ0R1dybjJpY084VnpDYXpaZWUyakpFc2drY1k5ZzhpN2FTbGtielRnIn0.eyJleHAiOjE1OTAwNTkwNDgsImlhdCI6MTU5MDA1ODc0OCwianRpIjoiNDY2MDc5ZmItOTY4YS00YTBjLWIyNjgtNDJlZTIxYzFhNjI4IiwiaXNzIjoiaHR0cHM6Ly9hdXRoLnN0Zy50ZXN0ci5pby9hdXRoL3JlYWxtcy90ZXN0ciIsImF1ZCI6ImFjY291bnQiLCJzdWIiOiI0YWFkZWM0Mi01OWE5LTRmZDUtODI3NC1lZWI5NDNmODQyNmUiLCJ0eXAiOiJCZWFyZXIiLCJhenAiOiIzWjE5LTNzYnN2MU9KSDBEd2l2UWkyYmZVSzdsSlNFdSIsInNlc3Npb25fc3RhdGUiOiI3MzAzNjlhMi0yMzAyLTQ2MTEtYmJmZS02YmU3YTg4ZjMwN2UiLCJhY3IiOiIxIiwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyJhY2NvdW50Ijp7InJvbGVzIjpbIm1hbmFnZS1hY2NvdW50IiwibWFuYWdlLWFjY291bnQtbGlua3MiLCJ2aWV3LXByb2ZpbGUiXX19LCJzY29wZSI6InByb2ZpbGUgZW1haWwiLCJjbGllbnRJZCI6IjNaMTktM3Nic3YxT0pIMER3aXZRaTJiZlVLN2xKU0V1IiwiY2xpZW50SG9zdCI6IjEwLjEzMi4wLjIyIiwiZW1haWxfdmVyaWZpZWQiOmZhbHNlLCJvcmdhbml6YXRpb24iOiJzb21lT3JnSWQxMjMiLCJwcmVmZXJyZWRfdXNlcm5hbWUiOiJzZXJ2aWNlLWFjY291bnQtM3oxOS0zc2JzdjFvamgwZHdpdnFpMmJmdWs3bGpzZXUiLCJjbGllbnRBZGRyZXNzIjoiMTAuMTMyLjAuMjIiLCJlbWFpbCI6InNlcnZpY2UtYWNjb3VudC0zejE5LTNzYnN2MW9qaDBkd2l2cWkyYmZ1azdsanNldUBwbGFjZWhvbGRlci5vcmcifQ.BGvSTRIDSYBiSJ6JbvHE5zF0rDyW0roWtFJkMqX8eyGDwtR0nbLmNyvilEkvfbkVHXnzA-DDkRnR1jJCqGxTk-MXqPHGsSr8kdkdQ3GCUH8RfVxmrm-wCtx4GljtLkfFuTo-iELp5eCPqNG6OYT2S1dlrpGubpWurMY38bXTcIAM689vjQF1Dnlk8avxa195vbHhcYqPi2MG6aMzTq-y5FsRzsfgZbTErV74oYhWK5Gr2lsG-sXJiJDzTQz8naXAfwlPIjNnpUOhgtPwXlrdXll9kXZIg2CktUXjUKhGb_EJNIE7LgVVtDNHRkycd6bS9e2qXlvoye7JbiJee_LWIw" + }, + { + "name": "X-Request-Id", + "value": "d2278adf26d7b5ff002b85325a4fa7f8" + }, + { + "name": "X-Real-Ip", + "value": "10.132.0.22" + }, + { + "name": "X-Forwarded-Port", + "value": "443" + }, + { + "name": "X-Forwarded-Proto", + "value": "https" + }, + { + "name": "X-Scheme", + "value": "https" + }, + { + "name": "User-Agent", + "value": "python-requests/2.23.0" + }, + { + "name": "Accept-Encoding", + "value": "gzip, deflate" + }, + { + "name": ":method", + "value": "GET" + }, + { + "name": ":path", + "value": "/tapping/state" + }, + { + "name": ":authority", + "value": "trcc.stg.testr.io" + }, + { + "name": ":scheme", + "value": "http" + }, + { + "name": "x-request-start", + "value": "1590058953.950" + }, + { + "name": "x-up9-source", + "value": "10.48.1.44" + }, + { + "name": "x-up9-destination", + "value": "10.48.2.97:5000" + } + ], + "queryString": [], + "headersSize": -1, + "bodySize": -1 + }, + "response": { + "status": 200, + "statusText": "OK", + "httpVersion": "", + "cookies": [], + "headers": [ + { + "name": "Date", + "value": "Thu, 21 May 2020 11:02:33 GMT" + }, + { + "name": "Connection", + "value": "keep-alive" + }, + { + "name": "Content-Type", + "value": "application/json" + }, + { + "name": "Content-Length", + "value": "20352" + }, + { + "name": "Access-Control-Allow-Origin", + "value": "http://localhost:3000" + }, + { + "name": "Access-Control-Allow-Credentials", + "value": "true" + }, + { + "name": "Vary", + "value": "Origin" + }, + { + "name": "Server", + "value": "gunicorn/19.9.0" + }, + { + "name": ":status", + "value": "200" + }, + { + "name": "duration_ms", + "value": "4" + } + ], + "content": { + "size": 20352, + "mimeType": "", + "text": "[{\"agentName\":\"ag6-minikube\",\"creationTime\":\"Sun, 22 Mar 2020 22:11:55 GMT\",\"id\":\"057573f3-c207-4d56-9512-3e1ff9190f53_trdemo_trdemo-client\",\"instancesCount\":0,\"lastSeen\":\"Thu, 09 Apr 2020 22:45:55 GMT\",\"model\":\"ag_trdemo_040701\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"ag6-minikube\",\"creationTime\":\"Sun, 22 Mar 2020 22:11:55 GMT\",\"id\":\"057573f3-c207-4d56-9512-3e1ff9190f53_trdemo_trdemo-flights\",\"instancesCount\":0,\"lastSeen\":\"Thu, 09 Apr 2020 22:45:55 GMT\",\"model\":\"ag_trdemo_040701\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"ag6-minikube\",\"creationTime\":\"Sun, 22 Mar 2020 22:11:55 GMT\",\"id\":\"057573f3-c207-4d56-9512-3e1ff9190f53_trdemo_trdemo-shoppingcart\",\"instancesCount\":0,\"lastSeen\":\"Thu, 09 Apr 2020 22:45:55 GMT\",\"model\":\"ag_trdemo_040701\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"ag6-minikube\",\"creationTime\":\"Sun, 22 Mar 2020 22:11:55 GMT\",\"id\":\"057573f3-c207-4d56-9512-3e1ff9190f53_trdemo_trdemo-users\",\"instancesCount\":0,\"lastSeen\":\"Thu, 09 Apr 2020 22:45:55 GMT\",\"model\":\"ag_trdemo_040701\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"nimrod-gcloud-mycluster\",\"creationTime\":\"Sun, 19 Apr 2020 17:46:09 GMT\",\"id\":\"0c484f93-5987-4e16-ac5d-ee838b8c7b65_tradmin_frontend-deployment\",\"instancesCount\":0,\"lastSeen\":\"Mon, 20 Apr 2020 09:29:13 GMT\",\"model\":\"default\",\"shouldTap\":false,\"type\":\"envoy\"},{\"agentName\":\"nimrod-gcloud-mycluster\",\"creationTime\":\"Mon, 06 Apr 2020 06:50:47 GMT\",\"id\":\"0c484f93-5987-4e16-ac5d-ee838b8c7b65_tradmin_trcc-api-deployment\",\"instancesCount\":0,\"lastSeen\":\"Mon, 20 Apr 2020 09:29:13 GMT\",\"model\":\"default\",\"shouldTap\":false,\"type\":\"envoy\"},{\"agentName\":\"nimrod-gcloud-mycluster\",\"creationTime\":null,\"id\":\"0c484f93-5987-4e16-ac5d-ee838b8c7b65_trdemo_trdemo-client\",\"instancesCount\":0,\"lastSeen\":\"Mon, 20 Apr 2020 09:29:53 GMT\",\"model\":\"ngm-0704-gcloud-05\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"nimrod-gcloud-mycluster\",\"creationTime\":null,\"id\":\"0c484f93-5987-4e16-ac5d-ee838b8c7b65_trdemo_trdemo-flights\",\"instancesCount\":0,\"lastSeen\":\"Mon, 20 Apr 2020 09:29:53 GMT\",\"model\":\"ngm-0704-gcloud-05\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"nimrod-gcloud-mycluster\",\"creationTime\":null,\"id\":\"0c484f93-5987-4e16-ac5d-ee838b8c7b65_trdemo_trdemo-shoppingcart\",\"instancesCount\":0,\"lastSeen\":\"Tue, 07 Apr 2020 17:12:48 GMT\",\"model\":\"ngm-0704-gcloud-05\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"nimrod-gcloud-mycluster\",\"creationTime\":null,\"id\":\"0c484f93-5987-4e16-ac5d-ee838b8c7b65_trdemo_trdemo-users\",\"instancesCount\":0,\"lastSeen\":\"Tue, 07 Apr 2020 17:12:48 GMT\",\"model\":\"ngm-0704-gcloud-05\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"haiut-samcust1105\",\"creationTime\":\"Thu, 23 Apr 2020 13:44:42 GMT\",\"id\":\"2a45b7bd-3615-11ea-b692-42010a8400bd_trdemo_trdemo-client\",\"instancesCount\":1,\"lastSeen\":\"Thu, 21 May 2020 11:02:32 GMT\",\"model\":\"ah.trdemo.0513\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"haiut-samcust1105\",\"creationTime\":\"Thu, 23 Apr 2020 13:44:42 GMT\",\"id\":\"2a45b7bd-3615-11ea-b692-42010a8400bd_trdemo_trdemo-flights\",\"instancesCount\":1,\"lastSeen\":\"Thu, 21 May 2020 11:02:32 GMT\",\"model\":\"ah.trdemo.0513\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"haiut-samcust1105\",\"creationTime\":\"Thu, 23 Apr 2020 13:44:42 GMT\",\"id\":\"2a45b7bd-3615-11ea-b692-42010a8400bd_trdemo_trdemo-shoppingcart\",\"instancesCount\":1,\"lastSeen\":\"Thu, 21 May 2020 11:02:32 GMT\",\"model\":\"ah.trdemo.0513\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"haiut-samcust1105\",\"creationTime\":\"Thu, 23 Apr 2020 13:44:35 GMT\",\"id\":\"2a45b7bd-3615-11ea-b692-42010a8400bd_trdemo_trdemo-users\",\"instancesCount\":1,\"lastSeen\":\"Thu, 21 May 2020 11:02:32 GMT\",\"model\":\"ah.trdemo.0513\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"rami-aws-agent2\",\"creationTime\":\"Thu, 14 May 2020 14:54:45 GMT\",\"id\":\"6edcaf1b-f7f9-4dd7-ae4d-2443ab489213_trdemo_trdemo-client\",\"instancesCount\":1,\"lastSeen\":\"Thu, 21 May 2020 11:02:28 GMT\",\"model\":\"aws_services_envoy\",\"shouldTap\":true,\"type\":\"envoy\"},{\"agentName\":\"rami-aws-agent2\",\"creationTime\":\"Thu, 14 May 2020 14:54:45 GMT\",\"id\":\"6edcaf1b-f7f9-4dd7-ae4d-2443ab489213_trdemo_trdemo-flights\",\"instancesCount\":2,\"lastSeen\":\"Thu, 21 May 2020 11:02:30 GMT\",\"model\":\"aws_services_envoy\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"rami-aws-agent2\",\"creationTime\":\"Thu, 14 May 2020 14:54:45 GMT\",\"id\":\"6edcaf1b-f7f9-4dd7-ae4d-2443ab489213_trdemo_trdemo-shoppingcart\",\"instancesCount\":2,\"lastSeen\":\"Thu, 21 May 2020 11:02:30 GMT\",\"model\":\"aws_services_envoy\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"rami-aws-agent2\",\"creationTime\":\"Thu, 14 May 2020 14:54:45 GMT\",\"id\":\"6edcaf1b-f7f9-4dd7-ae4d-2443ab489213_trdemo_trdemo-users\",\"instancesCount\":2,\"lastSeen\":\"Thu, 21 May 2020 11:02:30 GMT\",\"model\":\"aws_services_envoy\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":null,\"creationTime\":null,\"id\":\"alextestrio-prx1\",\"instancesCount\":0,\"lastSeen\":\"Thu, 19 Mar 2020 13:10:36 GMT\",\"model\":\"ah-0319\",\"shouldTap\":false,\"type\":\"proxy\"},{\"agentName\":null,\"creationTime\":\"Fri, 17 Apr 2020 16:17:58 GMT\",\"id\":\"alexup9com-prx1\",\"instancesCount\":0,\"lastSeen\":\"Sat, 18 Apr 2020 14:12:41 GMT\",\"model\":\"ah-test-1704-01\",\"shouldTap\":false,\"type\":\"proxy\"},{\"agentName\":null,\"creationTime\":null,\"id\":\"alontestrio-prx1\",\"instancesCount\":0,\"lastSeen\":\"Mon, 23 Mar 2020 17:45:49 GMT\",\"model\":\"ag_nectar_032301\",\"shouldTap\":false,\"type\":\"proxy\"},{\"agentName\":null,\"creationTime\":\"Tue, 31 Mar 2020 23:45:34 GMT\",\"id\":\"alonup9com-prx1\",\"instancesCount\":1,\"lastSeen\":\"Thu, 21 May 2020 10:58:30 GMT\",\"model\":\"ag.proxy.050801\",\"shouldTap\":true,\"type\":\"proxy\"},{\"agentName\":null,\"creationTime\":\"Mon, 06 Apr 2020 07:51:20 GMT\",\"id\":\"andrewpetrovup9com-prx1\",\"instancesCount\":0,\"lastSeen\":\"Tue, 07 Apr 2020 08:15:56 GMT\",\"model\":\"ap_test\",\"shouldTap\":false,\"type\":\"proxy\"},{\"agentName\":null,\"creationTime\":null,\"id\":\"andreytestrio-prx1\",\"instancesCount\":0,\"lastSeen\":\"Thu, 26 Mar 2020 11:09:27 GMT\",\"model\":\"andrey2\",\"shouldTap\":false,\"type\":\"proxy\"},{\"agentName\":\"haiut-mk04\",\"creationTime\":null,\"id\":\"c59d834b-00cd-4650-b114-a9da537c56d7_trdemo_trdemo-client\",\"instancesCount\":0,\"lastSeen\":\"Thu, 09 Apr 2020 10:19:27 GMT\",\"model\":\"ah-0329-01\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"haiut-mk04\",\"creationTime\":null,\"id\":\"c59d834b-00cd-4650-b114-a9da537c56d7_trdemo_trdemo-flights\",\"instancesCount\":0,\"lastSeen\":\"Thu, 09 Apr 2020 10:19:27 GMT\",\"model\":\"ah-0329-01\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"haiut-mk04\",\"creationTime\":null,\"id\":\"c59d834b-00cd-4650-b114-a9da537c56d7_trdemo_trdemo-shoppingcart\",\"instancesCount\":0,\"lastSeen\":\"Thu, 09 Apr 2020 10:19:27 GMT\",\"model\":\"ah-0329-01\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"haiut-mk04\",\"creationTime\":null,\"id\":\"c59d834b-00cd-4650-b114-a9da537c56d7_trdemo_trdemo-users\",\"instancesCount\":0,\"lastSeen\":\"Thu, 09 Apr 2020 10:19:27 GMT\",\"model\":\"ah-0329-01\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"nimrod-01-london-aws\",\"creationTime\":\"Mon, 13 Apr 2020 14:32:47 GMT\",\"id\":\"cluster-01-ECSCluster-ZldlPWdD1B9z_trdemo-01-TrdemoClientTaskDefinition-51AGMDOUMFOS\",\"instancesCount\":0,\"lastSeen\":\"Thu, 23 Apr 2020 17:01:37 GMT\",\"model\":\"default\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"nimrod-01-london-aws\",\"creationTime\":\"Sun, 12 Apr 2020 12:18:27 GMT\",\"id\":\"cluster-01-ECSCluster-ZldlPWdD1B9z_trdemo-01-TrdemoClientTaskDefinition-ZSUR7XY24R3X\",\"instancesCount\":0,\"lastSeen\":\"Sun, 12 Apr 2020 14:40:11 GMT\",\"model\":\"ngm-1204-aws-01\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"nimrod-01-london-aws\",\"creationTime\":\"Mon, 13 Apr 2020 14:31:31 GMT\",\"id\":\"cluster-01-ECSCluster-ZldlPWdD1B9z_trdemo-01-TrdemoFlightsTaskDefinition-1GQ6KPSBBH2CG\",\"instancesCount\":0,\"lastSeen\":\"Thu, 23 Apr 2020 17:01:37 GMT\",\"model\":\"default\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"nimrod-01-london-aws\",\"creationTime\":\"Sun, 12 Apr 2020 12:18:27 GMT\",\"id\":\"cluster-01-ECSCluster-ZldlPWdD1B9z_trdemo-01-TrdemoFlightsTaskDefinition-1P92C5J4BMAJ\",\"instancesCount\":0,\"lastSeen\":\"Sun, 12 Apr 2020 14:40:11 GMT\",\"model\":\"ngm-1204-aws-01\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"nimrod-01-london-aws\",\"creationTime\":\"Sun, 12 Apr 2020 12:18:26 GMT\",\"id\":\"cluster-01-ECSCluster-ZldlPWdD1B9z_trdemo-01-TrdemoShoppingcartTaskDefinition-8LVIGNH5OGR5\",\"instancesCount\":0,\"lastSeen\":\"Sun, 12 Apr 2020 14:40:09 GMT\",\"model\":\"ngm-1204-aws-01\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"nimrod-01-london-aws\",\"creationTime\":\"Mon, 13 Apr 2020 14:31:29 GMT\",\"id\":\"cluster-01-ECSCluster-ZldlPWdD1B9z_trdemo-01-TrdemoShoppingcartTaskDefinition-EF79FKMGB0S5\",\"instancesCount\":0,\"lastSeen\":\"Thu, 23 Apr 2020 17:01:59 GMT\",\"model\":\"default\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"nimrod-01-london-aws\",\"creationTime\":\"Mon, 13 Apr 2020 14:31:36 GMT\",\"id\":\"cluster-01-ECSCluster-ZldlPWdD1B9z_trdemo-01-TrdemoUsersTaskDefinition-1SOGKLV12R6VX\",\"instancesCount\":0,\"lastSeen\":\"Thu, 23 Apr 2020 17:01:53 GMT\",\"model\":\"default\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"nimrod-01-london-aws\",\"creationTime\":\"Sun, 12 Apr 2020 12:18:26 GMT\",\"id\":\"cluster-01-ECSCluster-ZldlPWdD1B9z_trdemo-01-TrdemoUsersTaskDefinition-IA4ZUEXN3VPX\",\"instancesCount\":0,\"lastSeen\":\"Sun, 12 Apr 2020 14:40:09 GMT\",\"model\":\"ngm-1204-aws-01\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"nimrod-01-london-aws\",\"creationTime\":\"Sun, 12 Apr 2020 14:51:10 GMT\",\"id\":\"cluster-01-ECSCluster-ZldlPWdD1B9z_trdemo-02-TrdemoClientTaskDefinition-19SVXVU4US12S\",\"instancesCount\":0,\"lastSeen\":\"Sun, 12 Apr 2020 15:59:02 GMT\",\"model\":\"ngm-1204-aws-02\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"nimrod-01-london-aws\",\"creationTime\":\"Sun, 12 Apr 2020 14:49:24 GMT\",\"id\":\"cluster-01-ECSCluster-ZldlPWdD1B9z_trdemo-02-TrdemoFlightsTaskDefinition-2P1PRCG5UHC3\",\"instancesCount\":0,\"lastSeen\":\"Sun, 12 Apr 2020 15:59:04 GMT\",\"model\":\"ngm-1204-aws-02\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"nimrod-01-london-aws\",\"creationTime\":\"Sun, 12 Apr 2020 14:48:48 GMT\",\"id\":\"cluster-01-ECSCluster-ZldlPWdD1B9z_trdemo-02-TrdemoShoppingcartTaskDefinition-1TLHJW9NH2B5A\",\"instancesCount\":0,\"lastSeen\":\"Sun, 12 Apr 2020 15:59:00 GMT\",\"model\":\"ngm-1204-aws-02\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"nimrod-01-london-aws\",\"creationTime\":\"Sun, 12 Apr 2020 14:48:43 GMT\",\"id\":\"cluster-01-ECSCluster-ZldlPWdD1B9z_trdemo-02-TrdemoUsersTaskDefinition-1W5X329FWGXZ3\",\"instancesCount\":0,\"lastSeen\":\"Sun, 12 Apr 2020 15:59:00 GMT\",\"model\":\"ngm-1204-aws-02\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"haiut-aws-fra-03\",\"creationTime\":\"Sun, 26 Apr 2020 20:09:14 GMT\",\"id\":\"d2d6c435-eaf5-48f6-8e61-1e7c57251fbd_trdemo_trdemo-client\",\"instancesCount\":0,\"lastSeen\":\"Sun, 10 May 2020 13:31:29 GMT\",\"model\":\"aws_new_resolving2\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"haiut-aws-fra-03\",\"creationTime\":\"Sun, 26 Apr 2020 20:09:09 GMT\",\"id\":\"d2d6c435-eaf5-48f6-8e61-1e7c57251fbd_trdemo_trdemo-flights\",\"instancesCount\":0,\"lastSeen\":\"Sun, 10 May 2020 13:31:31 GMT\",\"model\":\"aws_new_resolving2\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"haiut-aws-fra-03\",\"creationTime\":\"Sun, 26 Apr 2020 20:09:14 GMT\",\"id\":\"d2d6c435-eaf5-48f6-8e61-1e7c57251fbd_trdemo_trdemo-shoppingcart\",\"instancesCount\":0,\"lastSeen\":\"Sun, 10 May 2020 13:31:29 GMT\",\"model\":\"aws_new_resolving2\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"haiut-aws-fra-03\",\"creationTime\":\"Sun, 26 Apr 2020 20:09:09 GMT\",\"id\":\"d2d6c435-eaf5-48f6-8e61-1e7c57251fbd_trdemo_trdemo-users\",\"instancesCount\":0,\"lastSeen\":\"Sun, 10 May 2020 13:31:31 GMT\",\"model\":\"aws_new_resolving2\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":null,\"creationTime\":null,\"id\":\"e677a5bc-0542-11ea-a607-42010a8400ce_tradmin_frontend-deployment\",\"instancesCount\":0,\"lastSeen\":\"Sun, 10 May 2020 13:31:31 GMT\",\"model\":\"default\",\"shouldTap\":false,\"type\":\"envoy\"},{\"agentName\":null,\"creationTime\":\"Fri, 03 Apr 2020 08:00:08 GMT\",\"id\":\"e677a5bc-0542-11ea-a607-42010a8400ce_tradmin_trcc-api-deployme-f9aaef0a8d6f47bab4894c055aa72533-67c7fc5czfxr\",\"instancesCount\":0,\"lastSeen\":\"Fri, 03 Apr 2020 05:04:11 GMT\",\"model\":\"default\",\"shouldTap\":false,\"type\":\"envoy\"},{\"agentName\":null,\"creationTime\":null,\"id\":\"e677a5bc-0542-11ea-a607-42010a8400ce_tradmin_trcc-api-deployment\",\"instancesCount\":0,\"lastSeen\":\"Thu, 23 Apr 2020 08:12:03 GMT\",\"model\":\"sy-trcc-dogfood-3\",\"shouldTap\":false,\"type\":\"envoy\"},{\"agentName\":\"stg-cloud-agent\",\"creationTime\":\"Thu, 23 Apr 2020 08:11:52 GMT\",\"id\":\"e677a5bc-0542-11ea-a607-42010a8400ce_tradmin_trcc-api-deployment-stable\",\"instancesCount\":2,\"lastSeen\":\"Thu, 21 May 2020 11:02:31 GMT\",\"model\":\"sy-trcc-dogfood-10\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"stg-cloud-agent\",\"creationTime\":null,\"id\":\"e677a5bc-0542-11ea-a607-42010a8400ce_trdemo_trdemo-client\",\"instancesCount\":0,\"lastSeen\":\"Thu, 21 May 2020 11:02:29 GMT\",\"model\":\"up9_011401\",\"shouldTap\":false,\"type\":\"envoy\"},{\"agentName\":\"stg-cloud-agent\",\"creationTime\":null,\"id\":\"e677a5bc-0542-11ea-a607-42010a8400ce_trdemo_trdemo-flights\",\"instancesCount\":0,\"lastSeen\":\"Thu, 21 May 2020 11:02:29 GMT\",\"model\":\"up9_011401\",\"shouldTap\":false,\"type\":\"passive\"},{\"agentName\":null,\"creationTime\":null,\"id\":\"e677a5bc-0542-11ea-a607-42010a8400ce_trdemo_trdemo-shoppingcart\",\"instancesCount\":0,\"lastSeen\":\"Sun, 10 May 2020 13:31:30 GMT\",\"model\":\"bookstack-remote\",\"shouldTap\":false,\"type\":\"passive\"},{\"agentName\":\"stg-cloud-agent\",\"creationTime\":null,\"id\":\"e677a5bc-0542-11ea-a607-42010a8400ce_trdemo_trdemo-users\",\"instancesCount\":0,\"lastSeen\":\"Thu, 21 May 2020 11:02:29 GMT\",\"model\":\"up9_011401\",\"shouldTap\":false,\"type\":\"passive\"},{\"agentName\":null,\"creationTime\":null,\"id\":\"lirazyup9com-prx1\",\"instancesCount\":0,\"lastSeen\":\"Thu, 21 May 2020 10:51:01 GMT\",\"model\":\"liraz_test_2105\",\"shouldTap\":false,\"type\":\"proxy\"},{\"agentName\":\"nimrod-01-london-aws\",\"creationTime\":\"Thu, 21 May 2020 10:58:05 GMT\",\"id\":\"london-01-ECSCluster-27iuIYva8nO4_trdemo-01-TrdemoClientTaskDefinition-4TTVATDRY0CJ\",\"instancesCount\":1,\"lastSeen\":\"Thu, 21 May 2020 11:02:31 GMT\",\"model\":\"default\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"nimrod-01-london-aws\",\"creationTime\":\"Thu, 21 May 2020 10:51:53 GMT\",\"id\":\"london-01-ECSCluster-27iuIYva8nO4_trdemo-01-TrdemoFlightsTaskDefinition-HBBUAO47D2VT\",\"instancesCount\":1,\"lastSeen\":\"Thu, 21 May 2020 11:02:30 GMT\",\"model\":\"default\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"nimrod-01-london-aws\",\"creationTime\":\"Thu, 21 May 2020 10:57:09 GMT\",\"id\":\"london-01-ECSCluster-27iuIYva8nO4_trdemo-01-TrdemoShoppingcartTaskDefinition-1UAMK7WTR1SWE\",\"instancesCount\":1,\"lastSeen\":\"Thu, 21 May 2020 11:02:32 GMT\",\"model\":\"default\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"nimrod-01-london-aws\",\"creationTime\":\"Thu, 21 May 2020 10:56:49 GMT\",\"id\":\"london-01-ECSCluster-27iuIYva8nO4_trdemo-01-TrdemoUsersTaskDefinition-1HEEGJCBNB4PB\",\"instancesCount\":1,\"lastSeen\":\"Thu, 21 May 2020 11:02:31 GMT\",\"model\":\"default\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"nimrod-01-paris-aws\",\"creationTime\":\"Tue, 12 May 2020 14:14:42 GMT\",\"id\":\"nimrod-01-ECSCluster-1ENCWB3MDFEUQ_trdemo-01-TrdemoClientTaskDefinition-1HQRZT31KSGK0\",\"instancesCount\":1,\"lastSeen\":\"Thu, 21 May 2020 11:02:29 GMT\",\"model\":\"ngm-1305-aws-01\",\"shouldTap\":false,\"type\":\"passive\"},{\"agentName\":\"nimrod-01-paris-aws\",\"creationTime\":\"Mon, 06 Apr 2020 08:37:02 GMT\",\"id\":\"nimrod-01-ECSCluster-1ENCWB3MDFEUQ_trdemo-01-TrdemoClientTaskDefinition-PCTOAFN3NUUL\",\"instancesCount\":0,\"lastSeen\":\"Tue, 12 May 2020 12:36:48 GMT\",\"model\":\"default\",\"shouldTap\":false,\"type\":\"passive\"},{\"agentName\":\"nimrod-01-paris-aws\",\"creationTime\":\"Mon, 06 Apr 2020 10:46:50 GMT\",\"id\":\"nimrod-01-ECSCluster-1ENCWB3MDFEUQ_trdemo-01-TrdemoFlightsTaskDefinition-1RP81I0ETBSRA\",\"instancesCount\":0,\"lastSeen\":\"Tue, 12 May 2020 12:34:26 GMT\",\"model\":\"default\",\"shouldTap\":false,\"type\":\"passive\"},{\"agentName\":\"nimrod-01-paris-aws\",\"creationTime\":\"Tue, 12 May 2020 14:13:16 GMT\",\"id\":\"nimrod-01-ECSCluster-1ENCWB3MDFEUQ_trdemo-01-TrdemoFlightsTaskDefinition-6MATLSTUSK15\",\"instancesCount\":1,\"lastSeen\":\"Thu, 21 May 2020 11:02:30 GMT\",\"model\":\"ngm-1305-aws-01\",\"shouldTap\":false,\"type\":\"passive\"},{\"agentName\":\"nimrod-01-paris-aws\",\"creationTime\":\"Tue, 12 May 2020 14:13:05 GMT\",\"id\":\"nimrod-01-ECSCluster-1ENCWB3MDFEUQ_trdemo-01-TrdemoShoppingcartTaskDefinition-1NSJ45NVQ46VV\",\"instancesCount\":1,\"lastSeen\":\"Thu, 21 May 2020 11:02:30 GMT\",\"model\":\"ngm-1305-aws-01\",\"shouldTap\":false,\"type\":\"passive\"},{\"agentName\":\"nimrod-01-paris-aws\",\"creationTime\":\"Mon, 06 Apr 2020 08:37:02 GMT\",\"id\":\"nimrod-01-ECSCluster-1ENCWB3MDFEUQ_trdemo-01-TrdemoShoppingcartTaskDefinition-VAY9IULBYL27\",\"instancesCount\":0,\"lastSeen\":\"Tue, 12 May 2020 12:34:12 GMT\",\"model\":\"default\",\"shouldTap\":false,\"type\":\"passive\"},{\"agentName\":\"nimrod-01-paris-aws\",\"creationTime\":\"Tue, 12 May 2020 14:13:05 GMT\",\"id\":\"nimrod-01-ECSCluster-1ENCWB3MDFEUQ_trdemo-01-TrdemoUsersTaskDefinition-1KSLKXSKQ0YGI\",\"instancesCount\":1,\"lastSeen\":\"Thu, 21 May 2020 11:02:31 GMT\",\"model\":\"ngm-1305-aws-01\",\"shouldTap\":false,\"type\":\"passive\"},{\"agentName\":\"nimrod-01-paris-aws\",\"creationTime\":\"Mon, 06 Apr 2020 10:47:04 GMT\",\"id\":\"nimrod-01-ECSCluster-1ENCWB3MDFEUQ_trdemo-01-TrdemoUsersTaskDefinition-A4VERGQEE2C9\",\"instancesCount\":0,\"lastSeen\":\"Tue, 12 May 2020 12:34:26 GMT\",\"model\":\"default\",\"shouldTap\":false,\"type\":\"passive\"},{\"agentName\":\"nimrod-01-paris-aws\",\"creationTime\":\"Tue, 12 May 2020 16:03:37 GMT\",\"id\":\"nimrod-01-ECSCluster-1ENCWB3MDFEUQ_trdemo-no-tapper-TrdemoClientTaskDefinition-1SP9ZUN1LZE3N\",\"instancesCount\":0,\"lastSeen\":\"Tue, 12 May 2020 21:58:09 GMT\",\"model\":\"ngm-1205-aws-no-tapper-04\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"nimrod-01-paris-aws\",\"creationTime\":\"Tue, 12 May 2020 16:04:39 GMT\",\"id\":\"nimrod-01-ECSCluster-1ENCWB3MDFEUQ_trdemo-no-tapper-TrdemoFlightsTaskDefinition-1U2E8ONADR65S\",\"instancesCount\":0,\"lastSeen\":\"Tue, 12 May 2020 21:56:39 GMT\",\"model\":\"ngm-1205-aws-no-tapper-04\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"nimrod-01-paris-aws\",\"creationTime\":\"Tue, 12 May 2020 16:01:49 GMT\",\"id\":\"nimrod-01-ECSCluster-1ENCWB3MDFEUQ_trdemo-no-tapper-TrdemoShoppingcartTaskDefinition-PFB3IL2KQWE3\",\"instancesCount\":0,\"lastSeen\":\"Tue, 12 May 2020 21:56:34 GMT\",\"model\":\"ngm-1205-aws-no-tapper-04\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":\"nimrod-01-paris-aws\",\"creationTime\":\"Tue, 12 May 2020 16:01:54 GMT\",\"id\":\"nimrod-01-ECSCluster-1ENCWB3MDFEUQ_trdemo-no-tapper-TrdemoUsersTaskDefinition-CXOR2F6JGPNY\",\"instancesCount\":0,\"lastSeen\":\"Tue, 12 May 2020 21:56:54 GMT\",\"model\":\"ngm-1205-aws-no-tapper-04\",\"shouldTap\":true,\"type\":\"passive\"},{\"agentName\":null,\"creationTime\":null,\"id\":\"nimrodup9com-prx1\",\"instancesCount\":0,\"lastSeen\":\"Sun, 29 Mar 2020 12:59:27 GMT\",\"model\":\"ngm-2020-03-29-00\",\"shouldTap\":false,\"type\":\"proxy\"},{\"agentName\":null,\"creationTime\":\"Sun, 29 Mar 2020 14:09:23 GMT\",\"id\":\"nimrodup9com-someorgid123-prx1-local\",\"instancesCount\":0,\"lastSeen\":\"Sun, 29 Mar 2020 14:15:05 GMT\",\"model\":\"ngm-2020-03-29-01\",\"shouldTap\":true,\"type\":\"local_proxy\"},{\"agentName\":null,\"creationTime\":null,\"id\":\"ofriup9com-prx1\",\"instancesCount\":0,\"lastSeen\":\"Wed, 04 Mar 2020 08:04:47 GMT\",\"model\":\"aaa\",\"shouldTap\":false,\"type\":\"proxy\"},{\"agentName\":null,\"creationTime\":\"Thu, 19 Mar 2020 16:03:38 GMT\",\"id\":\"rami-prx1\",\"instancesCount\":0,\"lastSeen\":\"Thu, 19 Mar 2020 16:03:38 GMT\",\"model\":\"default\",\"shouldTap\":true,\"type\":\"proxy\"},{\"agentName\":null,\"creationTime\":\"Thu, 02 Apr 2020 06:31:20 GMT\",\"id\":\"ramibermanup9com-prx1\",\"instancesCount\":0,\"lastSeen\":\"Thu, 23 Apr 2020 06:26:18 GMT\",\"model\":\"rami-endpoints\",\"shouldTap\":false,\"type\":\"proxy\"},{\"agentName\":null,\"creationTime\":\"Mon, 04 May 2020 11:25:30 GMT\",\"id\":\"ramibrn1gmailcom-prx1\",\"instancesCount\":0,\"lastSeen\":\"Mon, 04 May 2020 11:26:11 GMT\",\"model\":\"regression-04-05-20\",\"shouldTap\":false,\"type\":\"proxy\"},{\"agentName\":null,\"creationTime\":\"Sun, 12 Apr 2020 12:50:24 GMT\",\"id\":\"ramibrngmailcom-prx1\",\"instancesCount\":0,\"lastSeen\":\"Sun, 12 Apr 2020 12:51:00 GMT\",\"model\":\"rami-proxy-test\",\"shouldTap\":false,\"type\":\"proxy\"},{\"agentName\":null,\"creationTime\":\"Mon, 16 Mar 2020 14:14:37 GMT\",\"id\":\"roeegadottestrio-prx1\",\"instancesCount\":0,\"lastSeen\":\"Thu, 19 Mar 2020 07:02:30 GMT\",\"model\":\"roee\",\"shouldTap\":false,\"type\":\"proxy\"},{\"agentName\":null,\"creationTime\":\"Tue, 31 Mar 2020 09:31:42 GMT\",\"id\":\"roeegadotup9com-someorgid123-prx1-local\",\"instancesCount\":0,\"lastSeen\":\"Mon, 13 Apr 2020 06:29:10 GMT\",\"model\":\"rg_local_proxy_5\",\"shouldTap\":false,\"type\":\"local_proxy\"}]\n" + }, + "redirectURL": "", + "headersSize": -1, + "bodySize": 20352 + }, + "cache": {}, + "timings": { + "send": -1, + "wait": -1, + "receive": 4 + } + } + ] + } +} \ No newline at end of file diff --git a/agent/pkg/oas/tree.go b/agent/pkg/oas/tree.go new file mode 100644 index 000000000..868f7126c --- /dev/null +++ b/agent/pkg/oas/tree.go @@ -0,0 +1,205 @@ +package oas + +import ( + "github.com/chanced/openapi" + "github.com/up9inc/mizu/shared/logger" + "strconv" + "strings" +) + +type NodePath = []string + +type Node struct { + constant *string + param *openapi.ParameterObj + ops *openapi.PathObj + parent *Node + children []*Node +} + +func (n *Node) getOrSet(path NodePath, pathObjToSet *openapi.PathObj) (node *Node) { + if pathObjToSet == nil { + panic("Invalid function call") + } + + pathChunk := path[0] + chunkIsParam := strings.HasPrefix(pathChunk, "{") && strings.HasSuffix(pathChunk, "}") + chunkIsGibberish := IsGibberish(pathChunk) && !IsVersionString(pathChunk) + + var paramObj *openapi.ParameterObj + if chunkIsParam && pathObjToSet != nil { + paramObj = findParamByName(pathObjToSet.Parameters, openapi.InPath, pathChunk[1:len(pathChunk)-1]) + } + + if paramObj == nil { + node = n.searchInConstants(pathChunk) + } + + if node == nil { + node = n.searchInParams(paramObj, chunkIsGibberish) + } + + // still no node found, should create it + if node == nil { + node = new(Node) + node.parent = n + n.children = append(n.children, node) + + if paramObj != nil { + node.param = paramObj + } else if chunkIsGibberish { + initParams(&pathObjToSet.Parameters) + + newParam := n.createParam() + node.param = newParam + + appended := append(*pathObjToSet.Parameters, newParam) + pathObjToSet.Parameters = &appended + } else { + node.constant = &pathChunk + } + } + + // add example if it's a param + if node.param != nil && !chunkIsParam { + exmp := &node.param.Examples + err := fillParamExample(&exmp, pathChunk) + if err != nil { + logger.Log.Warningf("Failed to add example to a parameter: %s", err) + } + } + + // TODO: eat up trailing slash, in a smart way: node.ops!=nil && path[1]=="" + if len(path) > 1 { + return node.getOrSet(path[1:], pathObjToSet) + } else if node.ops == nil { + node.ops = pathObjToSet + } + + return node +} + +func (n *Node) createParam() *openapi.ParameterObj { + name := "param" + + // REST assumption, not always correct + if strings.HasSuffix(*n.constant, "es") && len(*n.constant) > 4 { + name = *n.constant + name = name[:len(name)-2] + "Id" + } else if strings.HasSuffix(*n.constant, "s") && len(*n.constant) > 3 { + name = *n.constant + name = name[:len(name)-1] + "Id" + } + + newParam := createSimpleParam(name, "path", "string") + x := n.countParentParams() + if x > 1 { + newParam.Name = newParam.Name + strconv.Itoa(x) + } + + return newParam +} + +func (n *Node) searchInParams(paramObj *openapi.ParameterObj, chunkIsGibberish bool) *Node { + // look among params + if paramObj != nil || chunkIsGibberish { + for _, subnode := range n.children { + if subnode.constant != nil { + continue + } + + // TODO: check the regex pattern of param? for exceptions etc + + if paramObj != nil { + // TODO: mergeParam(subnode.param, paramObj) + return subnode + } else { + return subnode + } + } + } + return nil +} + +func (n *Node) searchInConstants(pathChunk string) *Node { + // look among constants + for _, subnode := range n.children { + if subnode.constant == nil { + continue + } + + if *subnode.constant == pathChunk { + return subnode + } + } + return nil +} + +func (n *Node) compact() { + // TODO +} + +func (n *Node) listPaths() *openapi.Paths { + paths := &openapi.Paths{Items: map[openapi.PathValue]*openapi.PathObj{}} + + var strChunk string + if n.constant != nil { + strChunk = *n.constant + } else if n.param != nil { + strChunk = "{" + n.param.Name + "}" + } else { + // this is the root node + } + + // add self + if n.ops != nil { + paths.Items[openapi.PathValue(strChunk)] = n.ops + } + + // recurse into children + for _, child := range n.children { + subPaths := child.listPaths() + for path, pathObj := range subPaths.Items { + var concat string + if n.parent == nil { + concat = string(path) + } else { + concat = strChunk + "/" + string(path) + } + paths.Items[openapi.PathValue(concat)] = pathObj + } + } + + return paths +} + +type PathAndOp struct { + path string + op *openapi.Operation +} + +func (n *Node) listOps() []PathAndOp { + res := make([]PathAndOp, 0) + for path, pathObj := range n.listPaths().Items { + for _, op := range getOps(pathObj) { + res = append(res, PathAndOp{path: string(path), op: op}) + } + } + return res +} + +func (n *Node) countParentParams() int { + res := 0 + node := n + for { + if node.param != nil { + res++ + } + + if node.parent == nil { + break + } + node = node.parent + } + return res +} diff --git a/agent/pkg/oas/utils.go b/agent/pkg/oas/utils.go new file mode 100644 index 000000000..ff938ec93 --- /dev/null +++ b/agent/pkg/oas/utils.go @@ -0,0 +1,344 @@ +package oas + +import ( + "encoding/json" + "errors" + "github.com/chanced/openapi" + "github.com/google/martian/har" + "github.com/up9inc/mizu/shared/logger" + "strconv" + "strings" +) + +func exampleResolver(ref string) (*openapi.ExampleObj, error) { + return nil, errors.New("JSON references are not supported at the moment: " + ref) +} + +func responseResolver(ref string) (*openapi.ResponseObj, error) { + return nil, errors.New("JSON references are not supported at the moment: " + ref) +} + +func reqBodyResolver(ref string) (*openapi.RequestBodyObj, error) { + return nil, errors.New("JSON references are not supported at the moment: " + ref) +} + +func paramResolver(ref string) (*openapi.ParameterObj, error) { + return nil, errors.New("JSON references are not supported at the moment: " + ref) +} + +func headerResolver(ref string) (*openapi.HeaderObj, error) { + return nil, errors.New("JSON references are not supported at the moment: " + ref) +} + +func initParams(obj **openapi.ParameterList) { + if *obj == nil { + var params openapi.ParameterList + params = make([]openapi.Parameter, 0) + *obj = ¶ms + } +} + +func initHeaders(respObj *openapi.ResponseObj) { + if respObj.Headers == nil { + var created openapi.Headers + created = map[string]openapi.Header{} + respObj.Headers = created + } +} + +func createSimpleParam(name string, in openapi.In, ptype openapi.SchemaType) *openapi.ParameterObj { + if name == "" { + panic("Cannot create parameter with empty name") + } + required := true // FFS! https://stackoverflow.com/questions/32364027/reference-a-boolean-for-assignment-in-a-struct/32364093 + schema := new(openapi.SchemaObj) + schema.Type = make(openapi.Types, 0) + schema.Type = append(schema.Type, ptype) + + style := openapi.StyleSimple + if in == openapi.InQuery { + style = openapi.StyleForm + } + + newParam := openapi.ParameterObj{ + Name: name, + In: in, + Style: string(style), + Examples: map[string]openapi.Example{}, + Schema: schema, + Required: &required, + } + return &newParam +} + +func findParamByName(params *openapi.ParameterList, in openapi.In, name string) (pathParam *openapi.ParameterObj) { + caseInsensitive := in == openapi.InHeader + for _, param := range *params { + paramObj, err := param.ResolveParameter(paramResolver) + if err != nil { + logger.Log.Warningf("Failed to resolve reference: %s", err) + continue + } + + if paramObj.In != in { + continue + } + + if paramObj.Name == name || (caseInsensitive && strings.ToLower(paramObj.Name) == strings.ToLower(name)) { + pathParam = paramObj + break + } + } + return pathParam +} + +func findHeaderByName(headers *openapi.Headers, name string) *openapi.HeaderObj { + for hname, param := range *headers { + hdrObj, err := param.ResolveHeader(headerResolver) + if err != nil { + logger.Log.Warningf("Failed to resolve reference: %s", err) + continue + } + + if strings.ToLower(hname) == strings.ToLower(name) { + return hdrObj + } + } + return nil +} + +type NVPair struct { + Name string + Value string +} + +type nvParams struct { + In openapi.In + Pairs func() []NVPair + IsIgnored func(name string) bool + GeneralizeName func(name string) string +} + +func qstrToNVP(list []har.QueryString) []NVPair { + res := make([]NVPair, len(list)) + for idx, val := range list { + res[idx] = NVPair{Name: val.Name, Value: val.Value} + } + return res +} + +func hdrToNVP(list []har.Header) []NVPair { + res := make([]NVPair, len(list)) + for idx, val := range list { + res[idx] = NVPair{Name: val.Name, Value: val.Value} + } + return res +} + +func handleNameVals(gw nvParams, params **openapi.ParameterList) { + visited := map[string]*openapi.ParameterObj{} + for _, pair := range gw.Pairs() { + if gw.IsIgnored(pair.Name) { + continue + } + + nameGeneral := gw.GeneralizeName(pair.Name) + + initParams(params) + param := findParamByName(*params, gw.In, pair.Name) + if param == nil { + param = createSimpleParam(nameGeneral, gw.In, openapi.TypeString) + appended := append(**params, param) + *params = &appended + } + exmp := ¶m.Examples + err := fillParamExample(&exmp, pair.Value) + if err != nil { + logger.Log.Warningf("Failed to add example to a parameter: %s", err) + } + visited[nameGeneral] = param + } + + // maintain "required" flag + if *params != nil { + for _, param := range **params { + paramObj, err := param.ResolveParameter(paramResolver) + if err != nil { + logger.Log.Warningf("Failed to resolve param: %s", err) + continue + } + if paramObj.In != gw.In { + continue + } + + _, ok := visited[strings.ToLower(paramObj.Name)] + if !ok { + flag := false + paramObj.Required = &flag + } + } + } +} + +func createHeader(ptype openapi.SchemaType) *openapi.HeaderObj { + required := true // FFS! https://stackoverflow.com/questions/32364027/reference-a-boolean-for-assignment-in-a-struct/32364093 + schema := new(openapi.SchemaObj) + schema.Type = make(openapi.Types, 0) + schema.Type = append(schema.Type, ptype) + + style := openapi.StyleSimple + newParam := openapi.HeaderObj{ + Style: string(style), + Examples: map[string]openapi.Example{}, + Schema: schema, + Required: &required, + } + return &newParam +} + +func fillParamExample(param **openapi.Examples, exampleValue string) error { + if **param == nil { + **param = map[string]openapi.Example{} + } + + cnt := 0 + for _, example := range **param { + cnt++ + exampleObj, err := example.ResolveExample(exampleResolver) + if err != nil { + continue + } + + var value string + err = json.Unmarshal(exampleObj.Value, &value) + if err != nil { + logger.Log.Warningf("Failed decoding parameter example into string: %s", err) + continue + } + + if value == exampleValue || cnt > 5 { // 5 examples is enough + return nil + } + } + + valMsg, err := json.Marshal(exampleValue) + if err != nil { + return err + } + + themap := **param + themap["example #"+strconv.Itoa(cnt)] = &openapi.ExampleObj{Value: valMsg} + + return nil +} + +func longestCommonXfix(strs [][]string, pre bool) []string { // https://github.com/jpillora/longestcommon + empty := make([]string, 0) + //short-circuit empty list + if len(strs) == 0 { + return empty + } + xfix := strs[0] + //short-circuit single-element list + if len(strs) == 1 { + return xfix + } + //compare first to rest + for _, str := range strs[1:] { + xfixl := len(xfix) + strl := len(str) + //short-circuit empty strings + if xfixl == 0 || strl == 0 { + return empty + } + //maximum possible length + maxl := xfixl + if strl < maxl { + maxl = strl + } + //compare letters + if pre { + //prefix, iterate left to right + for i := 0; i < maxl; i++ { + if xfix[i] != str[i] { + xfix = xfix[:i] + break + } + } + } else { + //suffix, iternate right to left + for i := 0; i < maxl; i++ { + xi := xfixl - i - 1 + si := strl - i - 1 + if xfix[xi] != str[si] { + xfix = xfix[xi+1:] + break + } + } + } + } + return xfix +} + +// returns all non-nil ops in PathObj +func getOps(pathObj *openapi.PathObj) []*openapi.Operation { + ops := []**openapi.Operation{&pathObj.Get, &pathObj.Patch, &pathObj.Put, &pathObj.Options, &pathObj.Post, &pathObj.Trace, &pathObj.Head, &pathObj.Delete} + res := make([]*openapi.Operation, 0) + for _, opp := range ops { + if *opp == nil { + continue + } + res = append(res, *opp) + } + return res +} + +// parses JSON into any possible value +func anyJSON(text string) (anyVal interface{}, isJSON bool) { + isJSON = true + asMap := map[string]interface{}{} + err := json.Unmarshal([]byte(text), &asMap) + if err == nil && asMap != nil { + return asMap, isJSON + } + + asArray := make([]interface{}, 0) + err = json.Unmarshal([]byte(text), &asArray) + if err == nil && asArray != nil { + return asArray, isJSON + } + + asString := "" + sPtr := &asString + err = json.Unmarshal([]byte(text), &sPtr) + if err == nil && sPtr != nil { + return asString, isJSON + } + + asInt := 0 + intPtr := &asInt + err = json.Unmarshal([]byte(text), &intPtr) + if err == nil && intPtr != nil { + return asInt, isJSON + } + + asFloat := 0.0 + floatPtr := &asFloat + err = json.Unmarshal([]byte(text), &floatPtr) + if err == nil && floatPtr != nil { + return asFloat, isJSON + } + + asBool := false + boolPtr := &asBool + err = json.Unmarshal([]byte(text), &boolPtr) + if err == nil && boolPtr != nil { + return asBool, isJSON + } + + if text == "null" { + return nil, isJSON + } + + return nil, false +} diff --git a/agent/pkg/oas/utils_test.go b/agent/pkg/oas/utils_test.go new file mode 100644 index 000000000..1f0b36377 --- /dev/null +++ b/agent/pkg/oas/utils_test.go @@ -0,0 +1,35 @@ +package oas + +import ( + "testing" +) + +func TestAnyJSON(t *testing.T) { + testCases := []struct { + inp string + isJSON bool + out interface{} + }{ + {`{"key": 1, "keyNull": null}`, true, nil}, + {`[{"key": "val"}, ["subarray"], "string", 1, 2.2, true, null]`, true, nil}, + {`"somestring"`, true, "somestring"}, + {"0", true, 0}, + {"0.5", true, 0.5}, + {"true", true, true}, + {"null", true, nil}, + {"sabbra cadabra", false, nil}, + {"0.1.2.3", false, nil}, + } + for _, tc := range testCases { + any, isJSON := anyJSON(tc.inp) + if isJSON != tc.isJSON { + t.Errorf("Parse flag mismatch: %t != %t", tc.isJSON, isJSON) + } else if isJSON && tc.out != nil && tc.out != any { + t.Errorf("%s != %s", any, tc.out) + } else if tc.inp == "null" && any != nil { + t.Errorf("null has to parse as nil (but got %s)", any) + } else { + t.Logf("%s => %s", tc.inp, any) + } + } +} diff --git a/agent/pkg/providers/install_provider.go b/agent/pkg/providers/install_provider.go new file mode 100644 index 000000000..5e2590a9d --- /dev/null +++ b/agent/pkg/providers/install_provider.go @@ -0,0 +1,18 @@ +package providers + +import ( + "context" + "mizuserver/pkg/config" +) + +func IsInstallNeeded() (bool, error) { + if !config.Config.StandaloneMode { // install not needed in ephermeral mizu + return false, nil + } + + if anyUserExists, err := AnyUserExists(context.Background()); err != nil { + return false, err + } else { + return !anyUserExists, nil + } +} diff --git a/agent/pkg/providers/kubernetes_provider.go b/agent/pkg/providers/kubernetes_provider.go new file mode 100644 index 000000000..d485279d4 --- /dev/null +++ b/agent/pkg/providers/kubernetes_provider.go @@ -0,0 +1,27 @@ +package providers + +import ( + "github.com/up9inc/mizu/shared/kubernetes" + "sync" +) + +var lock = &sync.Mutex{} + +var kubernetesProvider *kubernetes.Provider + +func GetKubernetesProvider() (*kubernetes.Provider, error) { + if kubernetesProvider == nil { + lock.Lock() + defer lock.Unlock() + + if kubernetesProvider == nil { + var err error + kubernetesProvider, err = kubernetes.NewProviderInCluster() + if err != nil { + return nil, err + } + } + } + + return kubernetesProvider, nil +} diff --git a/agent/pkg/providers/status_provider.go b/agent/pkg/providers/status_provider.go index 85fe8793b..ab8ae4ab2 100644 --- a/agent/pkg/providers/status_provider.go +++ b/agent/pkg/providers/status_provider.go @@ -8,20 +8,14 @@ import ( "github.com/up9inc/mizu/tap" "mizuserver/pkg/models" "os" - "sync" "time" ) const tlsLinkRetainmentTime = time.Minute * 15 var ( - TappersCount int - TapStatus shared.TapStatus - TappersStatus map[string]shared.TapperStatus - authStatus *models.AuthStatus - RecentTLSLinks = cache.New(tlsLinkRetainmentTime, tlsLinkRetainmentTime) - ExpectedTapperAmount = -1 //only relevant in daemon mode as cli manages tappers otherwise - tappersCountLock = sync.Mutex{} + authStatus *models.AuthStatus + RecentTLSLinks = cache.New(tlsLinkRetainmentTime, tlsLinkRetainmentTime) ) func GetAuthStatus() (*models.AuthStatus, error) { @@ -69,15 +63,3 @@ func GetAllRecentTLSAddresses() []string { return recentTLSLinks } - -func TapperAdded() { - tappersCountLock.Lock() - TappersCount++ - tappersCountLock.Unlock() -} - -func TapperRemoved() { - tappersCountLock.Lock() - TappersCount-- - tappersCountLock.Unlock() -} diff --git a/agent/pkg/providers/tapConfig/tap_config_provider.go b/agent/pkg/providers/tapConfig/tap_config_provider.go new file mode 100644 index 000000000..b907d7395 --- /dev/null +++ b/agent/pkg/providers/tapConfig/tap_config_provider.go @@ -0,0 +1,42 @@ +package tapConfig + +import ( + "github.com/up9inc/mizu/shared" + "github.com/up9inc/mizu/shared/logger" + "mizuserver/pkg/models" + "mizuserver/pkg/utils" + "os" + "sync" +) + +const FilePath = shared.DataDirPath + "tap-config.json" + +var ( + lock = &sync.Mutex{} + syncOnce sync.Once + config *models.TapConfig +) + +func Get() *models.TapConfig { + syncOnce.Do(func() { + if err := utils.ReadJsonFile(FilePath, &config); err != nil { + config = &models.TapConfig{TappedNamespaces: make(map[string]bool)} + + if !os.IsNotExist(err) { + logger.Log.Errorf("Error reading tap config from file, err: %v", err) + } + } + }) + + return config +} + +func Save(tapConfigToSave *models.TapConfig) { + lock.Lock() + defer lock.Unlock() + + config = tapConfigToSave + if err := utils.SaveJsonFile(FilePath, config); err != nil { + logger.Log.Errorf("Error saving tap config, err: %v", err) + } +} diff --git a/agent/pkg/providers/tappedPods/tapped_pods_provider.go b/agent/pkg/providers/tappedPods/tapped_pods_provider.go new file mode 100644 index 000000000..3791bd689 --- /dev/null +++ b/agent/pkg/providers/tappedPods/tapped_pods_provider.go @@ -0,0 +1,56 @@ +package tappedPods + +import ( + "github.com/up9inc/mizu/shared" + "github.com/up9inc/mizu/shared/logger" + "mizuserver/pkg/providers/tappers" + "mizuserver/pkg/utils" + "os" + "strings" + "sync" +) + +const FilePath = shared.DataDirPath + "tapped-pods.json" + +var ( + lock = &sync.Mutex{} + syncOnce sync.Once + tappedPods []*shared.PodInfo +) + +func Get() []*shared.PodInfo { + syncOnce.Do(func() { + if err := utils.ReadJsonFile(FilePath, &tappedPods); err != nil { + if !os.IsNotExist(err) { + logger.Log.Errorf("Error reading tapped pods from file, err: %v", err) + } + } + }) + + return tappedPods +} + +func Set(tappedPodsToSet []*shared.PodInfo) { + lock.Lock() + defer lock.Unlock() + + tappedPods = tappedPodsToSet + if err := utils.SaveJsonFile(FilePath, tappedPods); err != nil { + logger.Log.Errorf("Error saving tapped pods, err: %v", err) + } +} + +func GetTappedPodsStatus() []shared.TappedPodStatus { + tappedPodsStatus := make([]shared.TappedPodStatus, 0) + for _, pod := range Get() { + var status string + if tapperStatus, ok := tappers.GetStatus()[pod.NodeName]; ok { + status = strings.ToLower(tapperStatus.Status) + } + + isTapped := status == "running" + tappedPodsStatus = append(tappedPodsStatus, shared.TappedPodStatus{Name: pod.Name, Namespace: pod.Namespace, IsTapped: isTapped}) + } + + return tappedPodsStatus +} diff --git a/agent/pkg/providers/tappers/tappers_provider.go b/agent/pkg/providers/tappers/tappers_provider.go new file mode 100644 index 000000000..cad982a7b --- /dev/null +++ b/agent/pkg/providers/tappers/tappers_provider.go @@ -0,0 +1,82 @@ +package tappers + +import ( + "github.com/up9inc/mizu/shared" + "github.com/up9inc/mizu/shared/logger" + "mizuserver/pkg/utils" + "os" + "sync" +) + +const FilePath = shared.DataDirPath + "tappers-status.json" + +var ( + lockStatus = &sync.Mutex{} + syncOnce sync.Once + status map[string]*shared.TapperStatus + + lockConnectedCount = &sync.Mutex{} + connectedCount int +) + +func GetStatus() map[string]*shared.TapperStatus { + initStatus() + + return status +} + +func SetStatus(tapperStatus *shared.TapperStatus) { + initStatus() + + lockStatus.Lock() + defer lockStatus.Unlock() + + status[tapperStatus.NodeName] = tapperStatus + + saveStatus() +} + +func ResetStatus() { + lockStatus.Lock() + defer lockStatus.Unlock() + + status = make(map[string]*shared.TapperStatus) + + saveStatus() +} + +func GetConnectedCount() int { + return connectedCount +} + +func Connected() { + lockConnectedCount.Lock() + defer lockConnectedCount.Unlock() + + connectedCount++ +} + +func Disconnected() { + lockConnectedCount.Lock() + defer lockConnectedCount.Unlock() + + connectedCount-- +} + +func initStatus() { + syncOnce.Do(func() { + if err := utils.ReadJsonFile(FilePath, &status); err != nil { + status = make(map[string]*shared.TapperStatus) + + if !os.IsNotExist(err) { + logger.Log.Errorf("Error reading tappers status from file, err: %v", err) + } + } + }) +} + +func saveStatus() { + if err := utils.SaveJsonFile(FilePath, status); err != nil { + logger.Log.Errorf("Error saving tappers status, err: %v", err) + } +} diff --git a/agent/pkg/providers/user_provider.go b/agent/pkg/providers/user_provider.go new file mode 100644 index 000000000..1e2ba0322 --- /dev/null +++ b/agent/pkg/providers/user_provider.go @@ -0,0 +1,162 @@ +package providers + +import ( + "context" + "encoding/json" + "errors" + "fmt" + "net/http" + "net/http/cookiejar" + + ory "github.com/ory/kratos-client-go" + "github.com/up9inc/mizu/shared/logger" +) + +var client = getKratosClient("http://127.0.0.1:4433", "http://127.0.0.1:4434") + +// returns session token if successful +func RegisterUser(username string, password string, ctx context.Context) (token *string, identityId string, err error, formErrorMessages map[string][]ory.UiText) { + flow, _, err := client.V0alpha2Api.InitializeSelfServiceRegistrationFlowWithoutBrowser(ctx).Execute() + if err != nil { + return nil, "", err, nil + } + + result, _, err := client.V0alpha2Api.SubmitSelfServiceRegistrationFlow(ctx).Flow(flow.Id).SubmitSelfServiceRegistrationFlowBody( + ory.SubmitSelfServiceRegistrationFlowWithPasswordMethodBodyAsSubmitSelfServiceRegistrationFlowBody(&ory.SubmitSelfServiceRegistrationFlowWithPasswordMethodBody{ + Method: "password", + Password: password, + Traits: map[string]interface{}{"username": username}, + }), + ).Execute() + + if err != nil { + parsedKratosError, parsingErr := parseKratosRegistrationFormError(err) + if parsingErr != nil { + logger.Log.Debugf("error parsing kratos error: %v", parsingErr) + return nil, "", err, nil + } else { + return nil, "", err, parsedKratosError + } + } + + return result.SessionToken, result.Identity.Id, nil, nil +} + +func PerformLogin(username string, password string, ctx context.Context) (*string, error) { + flow, _, err := client.V0alpha2Api.InitializeSelfServiceLoginFlowWithoutBrowser(ctx).Execute() + if err != nil { + return nil, err + } + + result, _, err := client.V0alpha2Api.SubmitSelfServiceLoginFlow(ctx).Flow(flow.Id).SubmitSelfServiceLoginFlowBody( + ory.SubmitSelfServiceLoginFlowWithPasswordMethodBodyAsSubmitSelfServiceLoginFlowBody(&ory.SubmitSelfServiceLoginFlowWithPasswordMethodBody{ + Method: "password", + Password: password, + PasswordIdentifier: username, + }), + ).Execute() + + if err != nil { + return nil, err + } + if result == nil { + return nil, errors.New("unknown error occured during login") + } + + return result.SessionToken, nil +} + +func VerifyToken(token string, ctx context.Context) (bool, error) { + flow, _, err := client.V0alpha2Api.ToSession(ctx).XSessionToken(token).Execute() + if err != nil { + return false, err + } + + if flow == nil { + return false, nil + } + + return true, nil +} + +func DeleteUser(identityId string, ctx context.Context) error { + result, err := client.V0alpha2Api.AdminDeleteIdentity(ctx, identityId).Execute() + if err != nil { + return err + } + if result == nil { + return errors.New("unknown error occured during user deletion") + } + + if result.StatusCode < 200 || result.StatusCode > 299 { + return errors.New(fmt.Sprintf("user deletion returned bad status %d", result.StatusCode)) + } else { + return nil + } +} + +func AnyUserExists(ctx context.Context) (bool, error) { + request := client.V0alpha2Api.AdminListIdentities(ctx) + request.PerPage(1) + + if result, _, err := request.Execute(); err != nil { + return false, err + } else { + return len(result) > 0, nil + } +} + +func Logout(token string, ctx context.Context) error { + logoutRequest := client.V0alpha2Api.SubmitSelfServiceLogoutFlowWithoutBrowser(ctx) + logoutRequest = logoutRequest.SubmitSelfServiceLogoutFlowWithoutBrowserBody(ory.SubmitSelfServiceLogoutFlowWithoutBrowserBody{ + SessionToken: token, + }) + if response, err := logoutRequest.Execute(); err != nil { + return err + } else if response == nil || response.StatusCode < 200 || response.StatusCode > 299 { + return errors.New("unknown error occured during logout") + } + + return nil +} + +func getKratosClient(url string, adminUrl string) *ory.APIClient { + conf := ory.NewConfiguration() + conf.Servers = ory.ServerConfigurations{{URL: url}} + + // this ensures kratos client uses the admin url for admin actions (any new admin action we use will have to be added here) + conf.OperationServers = map[string]ory.ServerConfigurations{ + "V0alpha2ApiService.AdminDeleteIdentity": {{URL: adminUrl}}, + "V0alpha2ApiService.AdminListIdentities": {{URL: adminUrl}}, + } + + cj, _ := cookiejar.New(nil) + conf.HTTPClient = &http.Client{Jar: cj} + return ory.NewAPIClient(conf) +} + +// returns map of form value key to error message +func parseKratosRegistrationFormError(err error) (map[string][]ory.UiText, error) { + var openApiError *ory.GenericOpenAPIError + if errors.As(err, &openApiError) { + var registrationFlowModel *ory.SelfServiceRegistrationFlow + if jsonErr := json.Unmarshal(openApiError.Body(), ®istrationFlowModel); jsonErr != nil { + return nil, jsonErr + } else { + formMessages := registrationFlowModel.Ui.Nodes + parsedMessages := make(map[string][]ory.UiText) + + for _, message := range formMessages { + if len(message.Messages) > 0 { + if _, ok := parsedMessages[message.Group]; !ok { + parsedMessages[message.Group] = make([]ory.UiText, 0) + } + parsedMessages[message.Group] = append(parsedMessages[message.Group], message.Messages...) + } + } + return parsedMessages, nil + } + } else { + return nil, errors.New("error is not a generic openapi error") + } +} diff --git a/agent/pkg/routes/config_routes.go b/agent/pkg/routes/config_routes.go new file mode 100644 index 000000000..c13c191e0 --- /dev/null +++ b/agent/pkg/routes/config_routes.go @@ -0,0 +1,15 @@ +package routes + +import ( + "github.com/gin-gonic/gin" + "mizuserver/pkg/controllers" + "mizuserver/pkg/middlewares" +) + +func ConfigRoutes(ginApp *gin.Engine) { + routeGroup := ginApp.Group("/config") + routeGroup.Use(middlewares.RequiresAuth()) + + routeGroup.POST("/tapConfig", controllers.PostTapConfig) + routeGroup.GET("/tapConfig", controllers.GetTapConfig) +} diff --git a/agent/pkg/routes/entries_routes.go b/agent/pkg/routes/entries_routes.go index d931196a9..75956d6f1 100644 --- a/agent/pkg/routes/entries_routes.go +++ b/agent/pkg/routes/entries_routes.go @@ -2,6 +2,7 @@ package routes import ( "mizuserver/pkg/controllers" + "mizuserver/pkg/middlewares" "github.com/gin-gonic/gin" ) @@ -9,6 +10,7 @@ import ( // EntriesRoutes defines the group of har entries routes. func EntriesRoutes(ginApp *gin.Engine) { routeGroup := ginApp.Group("/entries") + routeGroup.Use(middlewares.RequiresAuth()) routeGroup.GET("/", controllers.GetEntries) // get entries (base/thin entries) and metadata routeGroup.GET("/:id", controllers.GetEntry) // get single (full) entry diff --git a/agent/pkg/routes/install_routes.go b/agent/pkg/routes/install_routes.go new file mode 100644 index 000000000..83b28cdd8 --- /dev/null +++ b/agent/pkg/routes/install_routes.go @@ -0,0 +1,13 @@ +package routes + +import ( + "mizuserver/pkg/controllers" + + "github.com/gin-gonic/gin" +) + +func InstallRoutes(ginApp *gin.Engine) { + routeGroup := ginApp.Group("/install") + + routeGroup.GET("/isNeeded", controllers.IsSetupNecessary) +} diff --git a/agent/pkg/routes/metadata_routes.go b/agent/pkg/routes/metadata_routes.go index 4f32ff771..9a3c21b91 100644 --- a/agent/pkg/routes/metadata_routes.go +++ b/agent/pkg/routes/metadata_routes.go @@ -1,8 +1,9 @@ package routes import ( - "github.com/gin-gonic/gin" "mizuserver/pkg/controllers" + + "github.com/gin-gonic/gin" ) // MetadataRoutes defines the group of metadata routes. diff --git a/agent/pkg/routes/oas_routes.go b/agent/pkg/routes/oas_routes.go new file mode 100644 index 000000000..525eb8a44 --- /dev/null +++ b/agent/pkg/routes/oas_routes.go @@ -0,0 +1,18 @@ +package routes + +import ( + "mizuserver/pkg/controllers" + "mizuserver/pkg/middlewares" + + "github.com/gin-gonic/gin" +) + +// OASRoutes methods to access OAS spec +func OASRoutes(ginApp *gin.Engine) { + routeGroup := ginApp.Group("/oas") + routeGroup.Use(middlewares.RequiresAuth()) + + routeGroup.GET("/", controllers.GetOASServers) // list of servers in OAS map + routeGroup.GET("/all", controllers.GetOASAllSpecs) // list of servers in OAS map + routeGroup.GET("/:id", controllers.GetOASSpec) // get OAS spec for given server +} diff --git a/agent/pkg/routes/query_routes.go b/agent/pkg/routes/query_routes.go index 2807bd0b6..7ad8d0490 100644 --- a/agent/pkg/routes/query_routes.go +++ b/agent/pkg/routes/query_routes.go @@ -2,12 +2,14 @@ package routes import ( "mizuserver/pkg/controllers" + "mizuserver/pkg/middlewares" "github.com/gin-gonic/gin" ) func QueryRoutes(ginApp *gin.Engine) { routeGroup := ginApp.Group("/query") + routeGroup.Use(middlewares.RequiresAuth()) routeGroup.POST("/validate", controllers.PostValidate) } diff --git a/agent/pkg/routes/status_routes.go b/agent/pkg/routes/status_routes.go index dd601213d..3c58a2f6a 100644 --- a/agent/pkg/routes/status_routes.go +++ b/agent/pkg/routes/status_routes.go @@ -1,18 +1,21 @@ package routes import ( - "github.com/gin-gonic/gin" "mizuserver/pkg/controllers" + "mizuserver/pkg/middlewares" + + "github.com/gin-gonic/gin" ) func StatusRoutes(ginApp *gin.Engine) { routeGroup := ginApp.Group("/status") + routeGroup.Use(middlewares.RequiresAuth()) routeGroup.GET("/health", controllers.HealthCheck) routeGroup.POST("/tappedPods", controllers.PostTappedPods) routeGroup.POST("/tapperStatus", controllers.PostTapperStatus) - routeGroup.GET("/tappersCount", controllers.GetTappersCount) + routeGroup.GET("/connectedTappersCount", controllers.GetConnectedTappersCount) routeGroup.GET("/tap", controllers.GetTappingStatus) routeGroup.GET("/auth", controllers.GetAuthStatus) diff --git a/agent/pkg/routes/user_routes.go b/agent/pkg/routes/user_routes.go new file mode 100644 index 000000000..6b2090dd3 --- /dev/null +++ b/agent/pkg/routes/user_routes.go @@ -0,0 +1,15 @@ +package routes + +import ( + "mizuserver/pkg/controllers" + + "github.com/gin-gonic/gin" +) + +func UserRoutes(ginApp *gin.Engine) { + routeGroup := ginApp.Group("/user") + + routeGroup.POST("/login", controllers.Login) + routeGroup.POST("/logout", controllers.Logout) + routeGroup.POST("/register", controllers.Register) +} diff --git a/agent/pkg/up9/main.go b/agent/pkg/up9/main.go index e44c2b9e2..54405b5e1 100644 --- a/agent/pkg/up9/main.go +++ b/agent/pkg/up9/main.go @@ -243,7 +243,7 @@ func syncEntriesImpl(token string, model string, envPrefix string, uploadInterva var dataMap map[string]interface{} err = json.Unmarshal(dataBytes, &dataMap) - var entry tapApi.MizuEntry + var entry tapApi.Entry if err := json.Unmarshal([]byte(dataBytes), &entry); err != nil { continue } diff --git a/agent/pkg/utils/utils.go b/agent/pkg/utils/utils.go index 95b92e288..d94be8c37 100644 --- a/agent/pkg/utils/utils.go +++ b/agent/pkg/utils/utils.go @@ -2,13 +2,13 @@ package utils import ( "context" + "encoding/json" "fmt" - "mizuserver/pkg/providers" + "io/ioutil" "net/http" "net/url" "os" "os/signal" - "strings" "syscall" "time" @@ -45,15 +45,6 @@ func StartServer(app *gin.Engine) { } } -func GetTappedPodsStatus() []shared.TappedPodStatus { - tappedPodsStatus := make([]shared.TappedPodStatus, 0) - for _, pod := range providers.TapStatus.Pods { - isTapped := strings.ToLower(providers.TappersStatus[pod.NodeName].Status) == "started" - tappedPodsStatus = append(tappedPodsStatus, shared.TappedPodStatus{Name: pod.Name, Namespace: pod.Namespace, IsTapped: isTapped}) - } - return tappedPodsStatus -} - func CheckErr(e error) { if e != nil { logger.Log.Errorf("%v", e) @@ -70,3 +61,27 @@ func SetHostname(address, newHostname string) string { return replacedUrl.String() } + +func ReadJsonFile(filePath string, value interface{}) error { + if content, err := ioutil.ReadFile(filePath); err != nil { + return err + } else { + if err = json.Unmarshal(content, value); err != nil { + return err + } + } + + return nil +} + +func SaveJsonFile(filePath string, value interface{}) error { + if data, err := json.Marshal(value); err != nil { + return err + } else { + if err = ioutil.WriteFile(filePath, data, 0644); err != nil { + return err + } + } + + return nil +} diff --git a/cli/Makefile b/cli/Makefile index 8275a12da..31f90a5f1 100644 --- a/cli/Makefile +++ b/cli/Makefile @@ -14,8 +14,12 @@ help: ## This help. install: go install mizu.go +build-debug: + export GCLFAGS='-gcflags="all=-N -l"' + ${MAKE} build + build: ## Build mizu CLI binary (select platform via GOOS / GOARCH env variables). - go build -ldflags="-X 'github.com/up9inc/mizu/cli/mizu.GitCommitHash=$(COMMIT_HASH)' \ + go build ${GCLFAGS} -ldflags="-X 'github.com/up9inc/mizu/cli/mizu.GitCommitHash=$(COMMIT_HASH)' \ -X 'github.com/up9inc/mizu/cli/mizu.Branch=$(GIT_BRANCH)' \ -X 'github.com/up9inc/mizu/cli/mizu.BuildTimestamp=$(BUILD_TIMESTAMP)' \ -X 'github.com/up9inc/mizu/cli/mizu.Platform=$(SUFFIX)' \ diff --git a/cli/README.md.TEMPLATE b/cli/README.md.TEMPLATE index ed922a8c8..cc6960e16 100644 --- a/cli/README.md.TEMPLATE +++ b/cli/README.md.TEMPLATE @@ -1,6 +1,7 @@ # Mizu release _SEM_VER_ +Full changelog for stable release see in [docs](https://github.com/up9inc/mizu/blob/main/docs/CHANGELOG.md) -Download Mizu for your platform +## Download Mizu for your platform **Mac** (Intel) ``` diff --git a/cli/apiserver/provider.go b/cli/apiserver/provider.go index dc5dff5e9..5c0bda4d6 100644 --- a/cli/apiserver/provider.go +++ b/cli/apiserver/provider.go @@ -4,11 +4,9 @@ import ( "bytes" "encoding/json" "fmt" - "io" "io/ioutil" "net/http" "net/url" - "strings" "time" "github.com/up9inc/mizu/shared/kubernetes" @@ -41,7 +39,7 @@ func NewProvider(url string, retries int, timeout time.Duration) *Provider { func (provider *Provider) TestConnection() error { retriesLeft := provider.retries for retriesLeft > 0 { - if _, err := provider.GetHealthStatus(); err != nil { + if isReachable, err := provider.isReachable(); err != nil || !isReachable { logger.Log.Debugf("api server not ready yet %v", err) } else { logger.Log.Debugf("connection test to api server passed successfully") @@ -57,27 +55,14 @@ func (provider *Provider) TestConnection() error { return nil } -func (provider *Provider) GetHealthStatus() (*shared.HealthResponse, error) { - healthUrl := fmt.Sprintf("%s/status/health", provider.url) - if response, err := provider.client.Get(healthUrl); err != nil { - return nil, err - } else if response.StatusCode > 299 { - responseBody := new(strings.Builder) - - if _, err := io.Copy(responseBody, response.Body); err != nil { - return nil, fmt.Errorf("status code: %d - (bad response - %v)", response.StatusCode, err) - } else { - singleLineResponse := strings.ReplaceAll(responseBody.String(), "\n", "") - return nil, fmt.Errorf("status code: %d - (response - %v)", response.StatusCode, singleLineResponse) - } +func (provider *Provider) isReachable() (bool, error) { + echoUrl := fmt.Sprintf("%s/echo", provider.url) + if response, err := provider.client.Get(echoUrl); err != nil { + return false, err + } else if response.StatusCode != 200 { + return false, fmt.Errorf("invalid status code %v", response.StatusCode) } else { - defer response.Body.Close() - - healthResponse := &shared.HealthResponse{} - if err := json.NewDecoder(response.Body).Decode(&healthResponse); err != nil { - return nil, err - } - return healthResponse, nil + return true, nil } } @@ -102,9 +87,8 @@ func (provider *Provider) ReportTappedPods(pods []core.Pod) error { tappedPodsUrl := fmt.Sprintf("%s/status/tappedPods", provider.url) podInfos := kubernetes.GetPodInfosForPods(pods) - tapStatus := shared.TapStatus{Pods: podInfos} - if jsonValue, err := json.Marshal(tapStatus); err != nil { + if jsonValue, err := json.Marshal(podInfos); err != nil { return fmt.Errorf("failed Marshal the tapped pods %w", err) } else { if response, err := provider.client.Post(tappedPodsUrl, "application/json", bytes.NewBuffer(jsonValue)); err != nil { diff --git a/cli/cmd/cleanRunner.go b/cli/cmd/cleanRunner.go index 5cc3ca6b1..14c594668 100644 --- a/cli/cmd/cleanRunner.go +++ b/cli/cmd/cleanRunner.go @@ -1,6 +1,9 @@ package cmd -import "github.com/up9inc/mizu/cli/apiserver" +import ( + "github.com/up9inc/mizu/cli/apiserver" + "github.com/up9inc/mizu/cli/config" +) func performCleanCommand() { kubernetesProvider, err := getKubernetesProviderForCli() @@ -8,5 +11,5 @@ func performCleanCommand() { return } - finishMizuExecution(kubernetesProvider, apiserver.NewProvider(GetApiServerUrl(), apiserver.DefaultRetries, apiserver.DefaultTimeout)) + finishMizuExecution(kubernetesProvider, apiserver.NewProvider(GetApiServerUrl(), apiserver.DefaultRetries, apiserver.DefaultTimeout), config.Config.IsNsRestrictedMode(), config.Config.MizuResourcesNamespace) } diff --git a/cli/cmd/common.go b/cli/cmd/common.go index 822335c8e..b99b1011d 100644 --- a/cli/cmd/common.go +++ b/cli/cmd/common.go @@ -2,16 +2,16 @@ package cmd import ( "context" + "encoding/json" "errors" "fmt" "github.com/up9inc/mizu/cli/apiserver" "github.com/up9inc/mizu/cli/mizu" "github.com/up9inc/mizu/cli/mizu/fsUtils" + "github.com/up9inc/mizu/cli/resources" "github.com/up9inc/mizu/cli/telemetry" - "os" - "os/signal" + "github.com/up9inc/mizu/shared" "path" - "syscall" "time" "github.com/up9inc/mizu/cli/config" @@ -37,22 +37,6 @@ func startProxyReportErrorIfAny(kubernetesProvider *kubernetes.Provider, cancel logger.Log.Debugf("proxy ended") } -func waitForFinish(ctx context.Context, cancel context.CancelFunc) { - logger.Log.Debugf("waiting for finish...") - sigChan := make(chan os.Signal, 1) - signal.Notify(sigChan, syscall.SIGINT, syscall.SIGTERM, syscall.SIGQUIT) - - // block until ctx cancel is called or termination signal is received - select { - case <-ctx.Done(): - logger.Log.Debugf("ctx done") - break - case <-sigChan: - logger.Log.Debugf("Got termination signal, canceling execution...") - cancel() - } -} - func getKubernetesProviderForCli() (*kubernetes.Provider, error) { kubernetesProvider, err := kubernetes.NewProvider(config.Config.KubeConfigPath()) if err != nil { @@ -71,12 +55,12 @@ func handleKubernetesProviderError(err error) { } } -func finishMizuExecution(kubernetesProvider *kubernetes.Provider, apiProvider *apiserver.Provider) { +func finishMizuExecution(kubernetesProvider *kubernetes.Provider, apiProvider *apiserver.Provider, isNsRestrictedMode bool, mizuResourcesNamespace string) { telemetry.ReportAPICalls(apiProvider) removalCtx, cancel := context.WithTimeout(context.Background(), cleanupTimeout) defer cancel() dumpLogsIfNeeded(removalCtx, kubernetesProvider) - cleanUpMizuResources(removalCtx, cancel, kubernetesProvider) + resources.CleanUpMizuResources(removalCtx, cancel, kubernetesProvider, isNsRestrictedMode, mizuResourcesNamespace) } func dumpLogsIfNeeded(ctx context.Context, kubernetesProvider *kubernetes.Provider) { @@ -90,22 +74,11 @@ func dumpLogsIfNeeded(ctx context.Context, kubernetesProvider *kubernetes.Provid } } -func cleanUpMizuResources(ctx context.Context, cancel context.CancelFunc, kubernetesProvider *kubernetes.Provider) { - logger.Log.Infof("\nRemoving mizu resources") - - var leftoverResources []string - - if config.Config.IsNsRestrictedMode() { - leftoverResources = cleanUpRestrictedMode(ctx, kubernetesProvider) - } else { - leftoverResources = cleanUpNonRestrictedMode(ctx, cancel, kubernetesProvider) +func getSerializedMizuAgentConfig(mizuAgentConfig *shared.MizuAgentConfig) (string, error) { + serializedConfig, err := json.Marshal(mizuAgentConfig) + if err != nil { + return "", err } - if len(leftoverResources) > 0 { - errMsg := fmt.Sprintf("Failed to remove the following resources, for more info check logs at %s:", fsUtils.GetLogFilePath()) - for _, resource := range leftoverResources { - errMsg += "\n- " + resource - } - logger.Log.Errorf(uiUtils.Error, errMsg) - } + return string(serializedConfig), nil } diff --git a/cli/cmd/install.go b/cli/cmd/install.go new file mode 100644 index 000000000..e17b1258b --- /dev/null +++ b/cli/cmd/install.go @@ -0,0 +1,30 @@ +package cmd + +import ( + "fmt" + "github.com/spf13/cobra" + "github.com/up9inc/mizu/cli/config" + "github.com/up9inc/mizu/cli/telemetry" +) + +var installCmd = &cobra.Command{ + Use: "install", + Short: "Installs mizu components", + RunE: func(cmd *cobra.Command, args []string) error { + go telemetry.ReportRun("install", nil) + runMizuInstall() + return nil + }, + PreRunE: func(cmd *cobra.Command, args []string) error { + if config.Config.IsNsRestrictedMode() { + return fmt.Errorf("install is not supported in restricted namespace mode") + } + + return nil + }, +} + +func init() { + rootCmd.AddCommand(installCmd) +} + diff --git a/cli/cmd/installRunner.go b/cli/cmd/installRunner.go new file mode 100644 index 000000000..2802bc011 --- /dev/null +++ b/cli/cmd/installRunner.go @@ -0,0 +1,153 @@ +package cmd + +import ( + "context" + "errors" + "fmt" + "github.com/up9inc/mizu/shared/kubernetes" + core "k8s.io/api/core/v1" + "regexp" + "time" + + "github.com/creasty/defaults" + "github.com/up9inc/mizu/cli/config" + "github.com/up9inc/mizu/cli/errormessage" + "github.com/up9inc/mizu/cli/resources" + "github.com/up9inc/mizu/cli/uiUtils" + "github.com/up9inc/mizu/shared" + "github.com/up9inc/mizu/shared/logger" + k8serrors "k8s.io/apimachinery/pkg/api/errors" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" +) + +func runMizuInstall() { + kubernetesProvider, err := getKubernetesProviderForCli() + if err != nil { + return + } + + ctx, cancel := context.WithCancel(context.Background()) + defer cancel() // cancel will be called when this function exits + + var serializedValidationRules string + var serializedContract string + + var defaultMaxEntriesDBSizeBytes int64 = 200 * 1000 * 1000 + + defaultResources := shared.Resources{} + defaults.Set(&defaultResources) + + mizuAgentConfig := getInstallMizuAgentConfig(defaultMaxEntriesDBSizeBytes, defaultResources) + serializedMizuConfig, err := getSerializedMizuAgentConfig(mizuAgentConfig) + if err != nil { + logger.Log.Errorf(uiUtils.Error, fmt.Sprintf("Error serializing mizu config: %v", errormessage.FormatError(err))) + return + } + + if err = resources.CreateInstallMizuResources(ctx, kubernetesProvider, serializedValidationRules, + serializedContract, serializedMizuConfig, config.Config.IsNsRestrictedMode(), + config.Config.MizuResourcesNamespace, config.Config.AgentImage, + nil, defaultMaxEntriesDBSizeBytes, defaultResources, config.Config.ImagePullPolicy(), + config.Config.LogLevel(), false); err != nil { + var statusError *k8serrors.StatusError + if errors.As(err, &statusError) { + if statusError.ErrStatus.Reason == metav1.StatusReasonAlreadyExists { + logger.Log.Info("Mizu is already running in this namespace, run `mizu clean` to remove the currently running Mizu instance") + } + } else { + defer resources.CleanUpMizuResources(ctx, cancel, kubernetesProvider, config.Config.IsNsRestrictedMode(), config.Config.MizuResourcesNamespace) + logger.Log.Errorf(uiUtils.Error, fmt.Sprintf("Error creating resources: %v", errormessage.FormatError(err))) + } + + return + } + + logger.Log.Infof("Waiting for Mizu server to start...") + readyChan := make(chan string) + readyErrorChan := make(chan error) + go watchApiServerPodReady(ctx, kubernetesProvider, readyChan, readyErrorChan) + + select { + case readyMessage := <-readyChan: + logger.Log.Infof(readyMessage) + case err := <-readyErrorChan: + defer resources.CleanUpMizuResources(ctx, cancel, kubernetesProvider, config.Config.IsNsRestrictedMode(), config.Config.MizuResourcesNamespace) + logger.Log.Errorf(uiUtils.Error, fmt.Sprintf("%v", errormessage.FormatError(err))) + return + } + + logger.Log.Infof(uiUtils.Magenta, "Installation completed, run `mizu view` to connect to the mizu daemon instance") +} + +func getInstallMizuAgentConfig(maxDBSizeBytes int64, tapperResources shared.Resources) *shared.MizuAgentConfig { + mizuAgentConfig := shared.MizuAgentConfig{ + MaxDBSizeBytes: maxDBSizeBytes, + AgentImage: config.Config.AgentImage, + PullPolicy: config.Config.ImagePullPolicyStr, + LogLevel: config.Config.LogLevel(), + TapperResources: tapperResources, + MizuResourcesNamespace: config.Config.MizuResourcesNamespace, + AgentDatabasePath: shared.DataDirPath, + StandaloneMode: true, + ServiceMap: config.Config.ServiceMap, + OAS: config.Config.OAS, + } + + return &mizuAgentConfig +} + +func watchApiServerPodReady(ctx context.Context, kubernetesProvider *kubernetes.Provider, readyChan chan string, readyErrorChan chan error) { + podExactRegex := regexp.MustCompile(fmt.Sprintf("^%s.*", kubernetes.ApiServerPodName)) + podWatchHelper := kubernetes.NewPodWatchHelper(kubernetesProvider, podExactRegex) + eventChan, errorChan := kubernetes.FilteredWatch(ctx, podWatchHelper, []string{config.Config.MizuResourcesNamespace}, podWatchHelper) + + apiServerTimeoutSec := config.GetIntEnvConfig(config.ApiServerTimeoutSec, 120) + timeAfter := time.After(time.Duration(apiServerTimeoutSec) * time.Second) + for { + select { + case wEvent, ok := <-eventChan: + if !ok { + eventChan = nil + continue + } + + switch wEvent.Type { + case kubernetes.EventAdded: + logger.Log.Debugf("Watching API Server pod ready loop, added") + case kubernetes.EventDeleted: + logger.Log.Debugf("Watching API Server pod ready loop, %s removed", kubernetes.ApiServerPodName) + case kubernetes.EventModified: + modifiedPod, err := wEvent.ToPod() + if err != nil { + readyErrorChan <- err + return + } + + logger.Log.Debugf("Watching API Server pod ready loop, modified: %v", modifiedPod.Status.Phase) + + if modifiedPod.Status.Phase == core.PodRunning { + readyChan <- fmt.Sprintf("%v pod is running", modifiedPod.Name) + return + } + case kubernetes.EventBookmark: + break + case kubernetes.EventError: + break + } + case err, ok := <-errorChan: + if !ok { + errorChan = nil + continue + } + + readyErrorChan <- fmt.Errorf("[ERROR] Agent creation, watching %v namespace, error: %v", config.Config.MizuResourcesNamespace, err) + return + case <-timeAfter: + readyErrorChan <- fmt.Errorf("mizu API server was not ready in time") + return + case <-ctx.Done(): + logger.Log.Debugf("Watching API Server pod ready loop, ctx done") + return + } + } +} diff --git a/cli/cmd/tap.go b/cli/cmd/tap.go index f93a8f65a..127acda89 100644 --- a/cli/cmd/tap.go +++ b/cli/cmd/tap.go @@ -119,6 +119,5 @@ func init() { tapCmd.Flags().StringP(configStructs.WorkspaceTapName, "w", defaultTapConfig.Workspace, "Uploads traffic to your UP9 workspace for further analysis (requires auth)") tapCmd.Flags().String(configStructs.EnforcePolicyFile, defaultTapConfig.EnforcePolicyFile, "Yaml file path with policy rules") tapCmd.Flags().String(configStructs.ContractFile, defaultTapConfig.ContractFile, "OAS/Swagger file to validate to monitor the contracts") - tapCmd.Flags().Bool(configStructs.DaemonModeTapName, defaultTapConfig.DaemonMode, "Run mizu in daemon mode, detached from the cli") - tapCmd.Flags().Bool(configStructs.IstioName, defaultTapConfig.Istio, "Record decrypted traffic if the cluster configured with istio and mtls") + tapCmd.Flags().Bool(configStructs.ServiceMeshName, defaultTapConfig.ServiceMesh, "Record decrypted traffic if the cluster is configured with a service mesh and with mtls") } diff --git a/cli/cmd/tapRunner.go b/cli/cmd/tapRunner.go index 90b7eb071..fec222338 100644 --- a/cli/cmd/tapRunner.go +++ b/cli/cmd/tapRunner.go @@ -9,21 +9,20 @@ import ( "strings" "time" - "k8s.io/apimachinery/pkg/util/intstr" + "github.com/up9inc/mizu/cli/resources" + "github.com/up9inc/mizu/cli/utils" "github.com/getkin/kin-openapi/openapi3" "gopkg.in/yaml.v3" core "k8s.io/api/core/v1" k8serrors "k8s.io/apimachinery/pkg/api/errors" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - "k8s.io/apimachinery/pkg/util/wait" "github.com/up9inc/mizu/cli/apiserver" "github.com/up9inc/mizu/cli/cmd/goUtils" "github.com/up9inc/mizu/cli/config" "github.com/up9inc/mizu/cli/config/configStructs" "github.com/up9inc/mizu/cli/errormessage" - "github.com/up9inc/mizu/cli/mizu" "github.com/up9inc/mizu/cli/mizu/fsUtils" "github.com/up9inc/mizu/cli/uiUtils" "github.com/up9inc/mizu/shared" @@ -35,11 +34,8 @@ import ( const cleanupTimeout = time.Minute type tapState struct { - startTime time.Time - targetNamespaces []string - - apiServerService *core.Service - tapperSyncer *kubernetes.MizuTapperSyncer + startTime time.Time + targetNamespaces []string mizuServiceAccountExists bool } @@ -49,13 +45,9 @@ var apiProvider *apiserver.Provider func RunMizuTap() { state.startTime = time.Now() - mizuApiFilteringOptions, err := getMizuApiFilteringOptions() apiProvider = apiserver.NewProvider(GetApiServerUrl(), apiserver.DefaultRetries, apiserver.DefaultTimeout) - if err != nil { - logger.Log.Errorf(uiUtils.Error, fmt.Sprintf("Error parsing regex-masking: %v", errormessage.FormatError(err))) - return - } + var err error var serializedValidationRules string if config.Config.Tap.EnforcePolicyFile != "" { serializedValidationRules, err = readValidationRules(config.Config.Tap.EnforcePolicyFile) @@ -99,9 +91,10 @@ func RunMizuTap() { state.targetNamespaces = getNamespaces(kubernetesProvider) - serializedMizuConfig, err := config.GetSerializedMizuAgentConfig(state.targetNamespaces, mizuApiFilteringOptions) + mizuAgentConfig := getTapMizuAgentConfig() + serializedMizuConfig, err := getSerializedMizuAgentConfig(mizuAgentConfig) if err != nil { - logger.Log.Errorf(uiUtils.Error, fmt.Sprintf("Error composing mizu config: %v", errormessage.FormatError(err))) + logger.Log.Errorf(uiUtils.Error, fmt.Sprintf("Error serializing mizu config: %v", errormessage.FormatError(err))) return } @@ -131,43 +124,43 @@ func RunMizuTap() { } logger.Log.Infof("Waiting for Mizu Agent to start...") - if err := createMizuResources(ctx, cancel, kubernetesProvider, serializedValidationRules, serializedContract, serializedMizuConfig); err != nil { - logger.Log.Errorf(uiUtils.Error, fmt.Sprintf("Error creating resources: %v", errormessage.FormatError(err))) - + if state.mizuServiceAccountExists, err = resources.CreateTapMizuResources(ctx, kubernetesProvider, serializedValidationRules, serializedContract, serializedMizuConfig, config.Config.IsNsRestrictedMode(), config.Config.MizuResourcesNamespace, config.Config.AgentImage, getSyncEntriesConfig(), config.Config.Tap.MaxEntriesDBSizeBytes(), config.Config.Tap.ApiServerResources, config.Config.ImagePullPolicy(), config.Config.LogLevel()); err != nil { var statusError *k8serrors.StatusError if errors.As(err, &statusError) { if statusError.ErrStatus.Reason == metav1.StatusReasonAlreadyExists { logger.Log.Info("Mizu is already running in this namespace, change the `mizu-resources-namespace` configuration or run `mizu clean` to remove the currently running Mizu instance") } + } else { + defer resources.CleanUpMizuResources(ctx, cancel, kubernetesProvider, config.Config.IsNsRestrictedMode(), config.Config.MizuResourcesNamespace) + logger.Log.Errorf(uiUtils.Error, fmt.Sprintf("Error creating resources: %v", errormessage.FormatError(err))) } + return } - if config.Config.Tap.DaemonMode { - if err := handleDaemonModePostCreation(ctx, cancel, kubernetesProvider, state.targetNamespaces); err != nil { - defer finishMizuExecution(kubernetesProvider, apiProvider) - cancel() - } else { - logger.Log.Infof(uiUtils.Magenta, "Mizu is now running in daemon mode, run `mizu view` to connect to the mizu daemon instance") - } - } else { - defer finishMizuExecution(kubernetesProvider, apiProvider) - go goUtils.HandleExcWrapper(watchApiServerEvents, ctx, kubernetesProvider, cancel) - go goUtils.HandleExcWrapper(watchApiServerPod, ctx, kubernetesProvider, cancel) + defer finishMizuExecution(kubernetesProvider, apiProvider, config.Config.IsNsRestrictedMode(), config.Config.MizuResourcesNamespace) - // block until exit signal or error - waitForFinish(ctx, cancel) - } + go goUtils.HandleExcWrapper(watchApiServerEvents, ctx, kubernetesProvider, cancel) + go goUtils.HandleExcWrapper(watchApiServerPod, ctx, kubernetesProvider, cancel) + + // block until exit signal or error + utils.WaitForFinish(ctx, cancel) } -func handleDaemonModePostCreation(ctx context.Context, cancel context.CancelFunc, kubernetesProvider *kubernetes.Provider, namespaces []string) error { - apiProvider := apiserver.NewProvider(GetApiServerUrl(), 90, 1*time.Second) - - if err := waitForDaemonModeToBeReady(cancel, kubernetesProvider, apiProvider); err != nil { - return err +func getTapMizuAgentConfig() *shared.MizuAgentConfig { + mizuAgentConfig := shared.MizuAgentConfig{ + MaxDBSizeBytes: config.Config.Tap.MaxEntriesDBSizeBytes(), + AgentImage: config.Config.AgentImage, + PullPolicy: config.Config.ImagePullPolicyStr, + LogLevel: config.Config.LogLevel(), + TapperResources: config.Config.Tap.TapperResources, + MizuResourcesNamespace: config.Config.MizuResourcesNamespace, + AgentDatabasePath: shared.DataDirPath, + ServiceMap: config.Config.ServiceMap, + OAS: config.Config.OAS, } - return nil + return &mizuAgentConfig } /* @@ -189,17 +182,6 @@ func printTappedPodsPreview(ctx context.Context, kubernetesProvider *kubernetes. } } -func waitForDaemonModeToBeReady(cancel context.CancelFunc, kubernetesProvider *kubernetes.Provider, apiProvider *apiserver.Provider) error { - go startProxyReportErrorIfAny(kubernetesProvider, cancel) - - // TODO: TRA-3903 add a smarter test to see that tapping/pod watching is functioning properly - if err := apiProvider.TestConnection(); err != nil { - logger.Log.Errorf(uiUtils.Error, fmt.Sprintf("Mizu was not ready in time, for more info check logs at %s", fsUtils.GetLogFilePath())) - return err - } - return nil -} - func startTapperSyncer(ctx context.Context, cancel context.CancelFunc, provider *kubernetes.Provider, targetNamespaces []string, mizuApiFilteringOptions api.TrafficFilteringOptions, startTime time.Time) error { tapperSyncer, err := kubernetes.CreateAndStartMizuTapperSyncer(ctx, provider, kubernetes.TapperSyncerConfig{ TargetNamespaces: targetNamespaces, @@ -212,7 +194,7 @@ func startTapperSyncer(ctx context.Context, cancel context.CancelFunc, provider IgnoredUserAgents: config.Config.Tap.IgnoredUserAgents, MizuApiFilteringOptions: mizuApiFilteringOptions, MizuServiceAccountExists: state.mizuServiceAccountExists, - Istio: config.Config.Tap.Istio, + ServiceMesh: config.Config.Tap.ServiceMesh, }, startTime) if err != nil { @@ -252,8 +234,6 @@ func startTapperSyncer(ctx context.Context, cancel context.CancelFunc, provider } }() - state.tapperSyncer = tapperSyncer - return nil } @@ -287,137 +267,6 @@ func readValidationRules(file string) (string, error) { return string(newContent), nil } -func createMizuResources(ctx context.Context, cancel context.CancelFunc, kubernetesProvider *kubernetes.Provider, serializedValidationRules string, serializedContract string, serializedMizuConfig string) error { - if !config.Config.IsNsRestrictedMode() { - if err := createMizuNamespace(ctx, kubernetesProvider); err != nil { - return err - } - } - - if err := createMizuConfigmap(ctx, kubernetesProvider, serializedValidationRules, serializedContract, serializedMizuConfig); err != nil { - logger.Log.Warningf(uiUtils.Warning, fmt.Sprintf("Failed to create resources required for policy validation. Mizu will not validate policy rules. error: %v", errormessage.FormatError(err))) - } - - var err error - state.mizuServiceAccountExists, err = createRBACIfNecessary(ctx, kubernetesProvider) - if err != nil { - if !config.Config.Tap.DaemonMode { - logger.Log.Warningf(uiUtils.Warning, fmt.Sprintf("Failed to ensure the resources required for IP resolving. Mizu will not resolve target IPs to names. error: %v", errormessage.FormatError(err))) - } - } - - var serviceAccountName string - if state.mizuServiceAccountExists { - serviceAccountName = kubernetes.ServiceAccountName - } else { - serviceAccountName = "" - } - - opts := &kubernetes.ApiServerOptions{ - Namespace: config.Config.MizuResourcesNamespace, - PodName: kubernetes.ApiServerPodName, - PodImage: config.Config.AgentImage, - ServiceAccountName: serviceAccountName, - IsNamespaceRestricted: config.Config.IsNsRestrictedMode(), - SyncEntriesConfig: getSyncEntriesConfig(), - MaxEntriesDBSizeBytes: config.Config.Tap.MaxEntriesDBSizeBytes(), - Resources: config.Config.Tap.ApiServerResources, - ImagePullPolicy: config.Config.ImagePullPolicy(), - LogLevel: config.Config.LogLevel(), - } - - if config.Config.Tap.DaemonMode { - if !state.mizuServiceAccountExists { - defer cleanUpMizuResources(ctx, cancel, kubernetesProvider) - logger.Log.Fatalf(uiUtils.Red, fmt.Sprintf("Failed to ensure the resources required for mizu to run in daemon mode. cannot proceed. error: %v", errormessage.FormatError(err))) - } - if err := createMizuApiServerDeployment(ctx, kubernetesProvider, opts); err != nil { - return err - } - } else { - if err := createMizuApiServerPod(ctx, kubernetesProvider, opts); err != nil { - return err - } - } - - state.apiServerService, err = kubernetesProvider.CreateService(ctx, config.Config.MizuResourcesNamespace, kubernetes.ApiServerPodName, kubernetes.ApiServerPodName) - if err != nil { - return err - } - logger.Log.Debugf("Successfully created service: %s", kubernetes.ApiServerPodName) - - return nil -} - -func createMizuConfigmap(ctx context.Context, kubernetesProvider *kubernetes.Provider, serializedValidationRules string, serializedContract string, serializedMizuConfig string) error { - err := kubernetesProvider.CreateConfigMap(ctx, config.Config.MizuResourcesNamespace, kubernetes.ConfigMapName, serializedValidationRules, serializedContract, serializedMizuConfig) - return err -} - -func createMizuNamespace(ctx context.Context, kubernetesProvider *kubernetes.Provider) error { - _, err := kubernetesProvider.CreateNamespace(ctx, config.Config.MizuResourcesNamespace) - return err -} - -func createMizuApiServerPod(ctx context.Context, kubernetesProvider *kubernetes.Provider, opts *kubernetes.ApiServerOptions) error { - pod, err := kubernetesProvider.GetMizuApiServerPodObject(opts, false, "") - if err != nil { - return err - } - if _, err = kubernetesProvider.CreatePod(ctx, config.Config.MizuResourcesNamespace, pod); err != nil { - return err - } - logger.Log.Debugf("Successfully created API server pod: %s", kubernetes.ApiServerPodName) - return nil -} - -func createMizuApiServerDeployment(ctx context.Context, kubernetesProvider *kubernetes.Provider, opts *kubernetes.ApiServerOptions) error { - volumeClaimCreated := false - if !config.Config.Tap.NoPersistentVolumeClaim { - volumeClaimCreated = TryToCreatePersistentVolumeClaim(ctx, kubernetesProvider) - } - - pod, err := kubernetesProvider.GetMizuApiServerPodObject(opts, volumeClaimCreated, kubernetes.PersistentVolumeClaimName) - if err != nil { - return err - } - pod.Spec.Containers[0].LivenessProbe = &core.Probe{ - Handler: core.Handler{ - HTTPGet: &core.HTTPGetAction{ - Path: "/echo", - Port: intstr.FromInt(shared.DefaultApiServerPort), - }, - }, - InitialDelaySeconds: 1, - PeriodSeconds: 10, - } - if _, err = kubernetesProvider.CreateDeployment(ctx, config.Config.MizuResourcesNamespace, opts.PodName, pod); err != nil { - return err - } - logger.Log.Debugf("Successfully created API server deployment: %s", kubernetes.ApiServerPodName) - return nil -} - -func TryToCreatePersistentVolumeClaim(ctx context.Context, kubernetesProvider *kubernetes.Provider) bool { - isDefaultStorageClassAvailable, err := kubernetesProvider.IsDefaultStorageProviderAvailable(ctx) - if err != nil { - logger.Log.Warningf(uiUtils.Yellow, "An error occured when checking if a default storage provider exists in this cluster, this means mizu data will be lost on mizu-api-server pod restart") - logger.Log.Debugf("error checking if default storage class exists: %v", err) - return false - } else if !isDefaultStorageClassAvailable { - logger.Log.Warningf(uiUtils.Yellow, "Could not find default storage provider in this cluster, this means mizu data will be lost on mizu-api-server pod restart") - return false - } - - if _, err = kubernetesProvider.CreatePersistentVolumeClaim(ctx, config.Config.MizuResourcesNamespace, kubernetes.PersistentVolumeClaimName, config.Config.Tap.MaxEntriesDBSizeBytes()+mizu.DaemonModePersistentVolumeSizeBufferBytes); err != nil { - logger.Log.Warningf(uiUtils.Yellow, "An error has occured while creating a persistent volume claim for mizu, this means mizu data will be lost on mizu-api-server pod restart") - logger.Log.Debugf("error creating persistent volume claim: %v", err) - return false - } - - return true -} - func getMizuApiFilteringOptions() (*api.TrafficFilteringOptions, error) { var compiledRegexSlice []*api.SerializableRegexp @@ -452,120 +301,14 @@ func getSyncEntriesConfig() *shared.SyncEntriesConfig { } } -func cleanUpRestrictedMode(ctx context.Context, kubernetesProvider *kubernetes.Provider) []string { - leftoverResources := make([]string, 0) - - if err := kubernetesProvider.RemoveService(ctx, config.Config.MizuResourcesNamespace, kubernetes.ApiServerPodName); err != nil { - resourceDesc := fmt.Sprintf("Service %s in namespace %s", kubernetes.ApiServerPodName, config.Config.MizuResourcesNamespace) - handleDeletionError(err, resourceDesc, &leftoverResources) - } - - if err := kubernetesProvider.RemoveDaemonSet(ctx, config.Config.MizuResourcesNamespace, kubernetes.TapperDaemonSetName); err != nil { - resourceDesc := fmt.Sprintf("DaemonSet %s in namespace %s", kubernetes.TapperDaemonSetName, config.Config.MizuResourcesNamespace) - handleDeletionError(err, resourceDesc, &leftoverResources) - } - - if err := kubernetesProvider.RemoveConfigMap(ctx, config.Config.MizuResourcesNamespace, kubernetes.ConfigMapName); err != nil { - resourceDesc := fmt.Sprintf("ConfigMap %s in namespace %s", kubernetes.ConfigMapName, config.Config.MizuResourcesNamespace) - handleDeletionError(err, resourceDesc, &leftoverResources) - } - - if err := kubernetesProvider.RemoveServicAccount(ctx, config.Config.MizuResourcesNamespace, kubernetes.ServiceAccountName); err != nil { - resourceDesc := fmt.Sprintf("Service Account %s in namespace %s", kubernetes.ServiceAccountName, config.Config.MizuResourcesNamespace) - handleDeletionError(err, resourceDesc, &leftoverResources) - } - - if err := kubernetesProvider.RemoveRole(ctx, config.Config.MizuResourcesNamespace, kubernetes.RoleName); err != nil { - resourceDesc := fmt.Sprintf("Role %s in namespace %s", kubernetes.RoleName, config.Config.MizuResourcesNamespace) - handleDeletionError(err, resourceDesc, &leftoverResources) - } - - if err := kubernetesProvider.RemovePod(ctx, config.Config.MizuResourcesNamespace, kubernetes.ApiServerPodName); err != nil { - resourceDesc := fmt.Sprintf("Pod %s in namespace %s", kubernetes.ApiServerPodName, config.Config.MizuResourcesNamespace) - handleDeletionError(err, resourceDesc, &leftoverResources) - } - - //daemon mode resources - if err := kubernetesProvider.RemoveRoleBinding(ctx, config.Config.MizuResourcesNamespace, kubernetes.RoleBindingName); err != nil { - resourceDesc := fmt.Sprintf("RoleBinding %s in namespace %s", kubernetes.RoleBindingName, config.Config.MizuResourcesNamespace) - handleDeletionError(err, resourceDesc, &leftoverResources) - } - - if err := kubernetesProvider.RemoveDeployment(ctx, config.Config.MizuResourcesNamespace, kubernetes.ApiServerPodName); err != nil { - resourceDesc := fmt.Sprintf("Deployment %s in namespace %s", kubernetes.ApiServerPodName, config.Config.MizuResourcesNamespace) - handleDeletionError(err, resourceDesc, &leftoverResources) - } - - if err := kubernetesProvider.RemovePersistentVolumeClaim(ctx, config.Config.MizuResourcesNamespace, kubernetes.PersistentVolumeClaimName); err != nil { - resourceDesc := fmt.Sprintf("PersistentVolumeClaim %s in namespace %s", kubernetes.PersistentVolumeClaimName, config.Config.MizuResourcesNamespace) - handleDeletionError(err, resourceDesc, &leftoverResources) - } - - if err := kubernetesProvider.RemoveRole(ctx, config.Config.MizuResourcesNamespace, kubernetes.DaemonRoleName); err != nil { - resourceDesc := fmt.Sprintf("Role %s in namespace %s", kubernetes.DaemonRoleName, config.Config.MizuResourcesNamespace) - handleDeletionError(err, resourceDesc, &leftoverResources) - } - - if err := kubernetesProvider.RemoveRoleBinding(ctx, config.Config.MizuResourcesNamespace, kubernetes.DaemonRoleBindingName); err != nil { - resourceDesc := fmt.Sprintf("RoleBinding %s in namespace %s", kubernetes.DaemonRoleBindingName, config.Config.MizuResourcesNamespace) - handleDeletionError(err, resourceDesc, &leftoverResources) - } - - return leftoverResources -} - -func cleanUpNonRestrictedMode(ctx context.Context, cancel context.CancelFunc, kubernetesProvider *kubernetes.Provider) []string { - leftoverResources := make([]string, 0) - - if err := kubernetesProvider.RemoveNamespace(ctx, config.Config.MizuResourcesNamespace); err != nil { - resourceDesc := fmt.Sprintf("Namespace %s", config.Config.MizuResourcesNamespace) - handleDeletionError(err, resourceDesc, &leftoverResources) - } else { - defer waitUntilNamespaceDeleted(ctx, cancel, kubernetesProvider) - } - - if err := kubernetesProvider.RemoveClusterRole(ctx, kubernetes.ClusterRoleName); err != nil { - resourceDesc := fmt.Sprintf("ClusterRole %s", kubernetes.ClusterRoleName) - handleDeletionError(err, resourceDesc, &leftoverResources) - } - - if err := kubernetesProvider.RemoveClusterRoleBinding(ctx, kubernetes.ClusterRoleBindingName); err != nil { - resourceDesc := fmt.Sprintf("ClusterRoleBinding %s", kubernetes.ClusterRoleBindingName) - handleDeletionError(err, resourceDesc, &leftoverResources) - } - - return leftoverResources -} - -func handleDeletionError(err error, resourceDesc string, leftoverResources *[]string) { - logger.Log.Debugf("Error removing %s: %v", resourceDesc, errormessage.FormatError(err)) - *leftoverResources = append(*leftoverResources, resourceDesc) -} - -func waitUntilNamespaceDeleted(ctx context.Context, cancel context.CancelFunc, kubernetesProvider *kubernetes.Provider) { - // Call cancel if a terminating signal was received. Allows user to skip the wait. - go func() { - waitForFinish(ctx, cancel) - }() - - if err := kubernetesProvider.WaitUtilNamespaceDeleted(ctx, config.Config.MizuResourcesNamespace); err != nil { - switch { - case ctx.Err() == context.Canceled: - logger.Log.Debugf("Do nothing. User interrupted the wait") - case err == wait.ErrWaitTimeout: - logger.Log.Errorf(uiUtils.Error, fmt.Sprintf("Timeout while removing Namespace %s", config.Config.MizuResourcesNamespace)) - default: - logger.Log.Errorf(uiUtils.Error, fmt.Sprintf("Error while waiting for Namespace %s to be deleted: %v", config.Config.MizuResourcesNamespace, errormessage.FormatError(err))) - } - } -} - func watchApiServerPod(ctx context.Context, kubernetesProvider *kubernetes.Provider, cancel context.CancelFunc) { podExactRegex := regexp.MustCompile(fmt.Sprintf("^%s$", kubernetes.ApiServerPodName)) podWatchHelper := kubernetes.NewPodWatchHelper(kubernetesProvider, podExactRegex) eventChan, errorChan := kubernetes.FilteredWatch(ctx, podWatchHelper, []string{config.Config.MizuResourcesNamespace}, podWatchHelper) isPodReady := false - timeAfter := time.After(25 * time.Second) + + apiServerTimeoutSec := config.GetIntEnvConfig(config.ApiServerTimeoutSec, 120) + timeAfter := time.After(time.Duration(apiServerTimeoutSec) * time.Second) for { select { case wEvent, ok := <-eventChan: @@ -635,7 +378,8 @@ func watchApiServerEvents(ctx context.Context, kubernetesProvider *kubernetes.Pr event, err := wEvent.ToEvent() if err != nil { - logger.Log.Errorf(fmt.Sprintf("Error parsing Mizu resource event: %+v", err)) + logger.Log.Debugf("[ERROR] parsing Mizu resource event: %+v", err) + continue } if state.startTime.After(event.CreationTimestamp.Time) { @@ -663,7 +407,7 @@ func watchApiServerEvents(ctx context.Context, kubernetesProvider *kubernetes.Pr continue } - logger.Log.Errorf("Watching API server events loop, error: %+v", err) + logger.Log.Debugf("[Error] Watching API server events loop, error: %+v", err) case <-ctx.Done(): logger.Log.Debugf("Watching API server events loop, ctx done") return @@ -705,21 +449,3 @@ func getNamespaces(kubernetesProvider *kubernetes.Provider) []string { return []string{currentNamespace} } } - -func createRBACIfNecessary(ctx context.Context, kubernetesProvider *kubernetes.Provider) (bool, error) { - if !config.Config.IsNsRestrictedMode() { - if err := kubernetesProvider.CreateMizuRBAC(ctx, config.Config.MizuResourcesNamespace, kubernetes.ServiceAccountName, kubernetes.ClusterRoleName, kubernetes.ClusterRoleBindingName, mizu.RBACVersion); err != nil { - return false, err - } - } else { - if err := kubernetesProvider.CreateMizuRBACNamespaceRestricted(ctx, config.Config.MizuResourcesNamespace, kubernetes.ServiceAccountName, kubernetes.RoleName, kubernetes.RoleBindingName, mizu.RBACVersion); err != nil { - return false, err - } - } - if config.Config.Tap.DaemonMode { - if err := kubernetesProvider.CreateDaemonsetRBAC(ctx, config.Config.MizuResourcesNamespace, kubernetes.ServiceAccountName, kubernetes.DaemonRoleName, kubernetes.DaemonRoleBindingName, mizu.RBACVersion); err != nil { - return false, err - } - } - return true, nil -} diff --git a/cli/cmd/viewRunner.go b/cli/cmd/viewRunner.go index c9c056be1..2cba89126 100644 --- a/cli/cmd/viewRunner.go +++ b/cli/cmd/viewRunner.go @@ -3,6 +3,7 @@ package cmd import ( "context" "fmt" + "github.com/up9inc/mizu/cli/utils" "net/http" "github.com/up9inc/mizu/cli/apiserver" @@ -71,5 +72,5 @@ func runMizuView() { return } - waitForFinish(ctx, cancel) + utils.WaitForFinish(ctx, cancel) } diff --git a/cli/config/config.go b/cli/config/config.go index dc9501fab..f00cc6f09 100644 --- a/cli/config/config.go +++ b/cli/config/config.go @@ -9,9 +9,6 @@ import ( "strconv" "strings" - "github.com/up9inc/mizu/tap/api" - "k8s.io/apimachinery/pkg/util/json" - "github.com/up9inc/mizu/shared" "github.com/up9inc/mizu/shared/logger" @@ -371,38 +368,3 @@ func setZeroForReadonlyFields(currentElem reflect.Value) { } } } - -func GetSerializedMizuAgentConfig(targetNamespaces []string, mizuApiFilteringOptions *api.TrafficFilteringOptions) (string, error) { - mizuConfig, err := getMizuAgentConfig(targetNamespaces, mizuApiFilteringOptions) - if err != nil { - return "", err - } - serializedConfig, err := json.Marshal(mizuConfig) - if err != nil { - return "", err - } - return string(serializedConfig), nil -} - -func getMizuAgentConfig(targetNamespaces []string, mizuApiFilteringOptions *api.TrafficFilteringOptions) (*shared.MizuAgentConfig, error) { - serializableRegex, err := api.CompileRegexToSerializableRegexp(Config.Tap.PodRegexStr) - if err != nil { - return nil, err - } - config := shared.MizuAgentConfig{ - TapTargetRegex: *serializableRegex, - MaxDBSizeBytes: Config.Tap.MaxEntriesDBSizeBytes(), - DaemonMode: Config.Tap.DaemonMode, - TargetNamespaces: targetNamespaces, - AgentImage: Config.AgentImage, - PullPolicy: Config.ImagePullPolicyStr, - LogLevel: Config.LogLevel(), - IgnoredUserAgents: Config.Tap.IgnoredUserAgents, - TapperResources: Config.Tap.TapperResources, - MizuResourcesNamespace: Config.MizuResourcesNamespace, - MizuApiFilteringOptions: *mizuApiFilteringOptions, - AgentDatabasePath: shared.DataDirPath, - Istio: Config.Tap.Istio, - } - return &config, nil -} diff --git a/cli/config/configStruct.go b/cli/config/configStruct.go index f0402bf2d..6fad6180d 100644 --- a/cli/config/configStruct.go +++ b/cli/config/configStruct.go @@ -34,9 +34,11 @@ type ConfigStruct struct { ConfigFilePath string `yaml:"config-path,omitempty" readonly:""` HeadlessMode bool `yaml:"headless" default:"false"` LogLevelStr string `yaml:"log-level,omitempty" default:"INFO" readonly:""` + ServiceMap bool `yaml:"service-map,omitempty" default:"false" readonly:""` + OAS bool `yaml:"oas,omitempty" default:"false" readonly:""` } -func(config *ConfigStruct) validate() error { +func (config *ConfigStruct) validate() error { if _, err := logging.LogLevel(config.LogLevelStr); err != nil { return fmt.Errorf("%s is not a valid log level, err: %v", config.LogLevelStr, err) } diff --git a/cli/config/configStructs/tapConfig.go b/cli/config/configStructs/tapConfig.go index 43c29523d..6ad3b6a21 100644 --- a/cli/config/configStructs/tapConfig.go +++ b/cli/config/configStructs/tapConfig.go @@ -3,8 +3,6 @@ package configStructs import ( "errors" "fmt" - "github.com/up9inc/mizu/cli/uiUtils" - "github.com/up9inc/mizu/shared/logger" "regexp" "github.com/up9inc/mizu/shared" @@ -24,8 +22,7 @@ const ( WorkspaceTapName = "workspace" EnforcePolicyFile = "traffic-validation-file" ContractFile = "contract" - DaemonModeTapName = "daemon" - IstioName = "istio" + ServiceMeshName = "service-mesh" ) type TapConfig struct { @@ -47,9 +44,7 @@ type TapConfig struct { AskUploadConfirmation bool `yaml:"ask-upload-confirmation" default:"true"` ApiServerResources shared.Resources `yaml:"api-server-resources"` TapperResources shared.Resources `yaml:"tapper-resources"` - DaemonMode bool `yaml:"daemon" default:"false"` - NoPersistentVolumeClaim bool `yaml:"no-persistent-volume-claim" default:"false"` - Istio bool `yaml:"istio" default:"false"` + ServiceMesh bool `yaml:"service-mesh" default:"false"` } func (config *TapConfig) PodRegex() *regexp.Regexp { @@ -84,9 +79,5 @@ func (config *TapConfig) Validate() error { return errors.New(fmt.Sprintf("Can't run with both --%s and --%s flags", AnalysisTapName, WorkspaceTapName)) } - if config.NoPersistentVolumeClaim && !config.DaemonMode { - logger.Log.Warningf(uiUtils.Warning, fmt.Sprintf("the --set tap.no-persistent-volume-claim=true flag has no effect without the --%s flag, the claim will not be created anyway.", DaemonModeTapName)) - } - return nil } diff --git a/cli/config/envConfig.go b/cli/config/envConfig.go index 78f91e00b..acbe5e1ab 100644 --- a/cli/config/envConfig.go +++ b/cli/config/envConfig.go @@ -7,6 +7,7 @@ import ( const ( ApiServerRetries = "API_SERVER_RETRIES" + ApiServerTimeoutSec = "API_SERVER_TIMEOUT_SEC" ) func GetIntEnvConfig(key string, defaultValue int) int { diff --git a/cli/mizu/consts.go b/cli/mizu/consts.go index 73621a2ff..cf67a5ab4 100644 --- a/cli/mizu/consts.go +++ b/cli/mizu/consts.go @@ -6,13 +6,13 @@ import ( ) var ( - SemVer = "0.0.1" - Branch = "develop" - GitCommitHash = "" // this var is overridden using ldflags in makefile when building - BuildTimestamp = "" // this var is overridden using ldflags in makefile when building - RBACVersion = "v1" - Platform = "" - DaemonModePersistentVolumeSizeBufferBytes = int64(500 * 1000 * 1000) //500mb + SemVer = "0.0.1" + Branch = "develop" + GitCommitHash = "" // this var is overridden using ldflags in makefile when building + BuildTimestamp = "" // this var is overridden using ldflags in makefile when building + RBACVersion = "v1" + Platform = "" + InstallModePersistentVolumeSizeBufferBytes = int64(500 * 1000 * 1000) //500mb ) const DEVENVVAR = "MIZU_DISABLE_TELEMTRY" diff --git a/cli/mizu/fsUtils/mizuLogsUtils.go b/cli/mizu/fsUtils/mizuLogsUtils.go index fe79936cc..d43cfe5b6 100644 --- a/cli/mizu/fsUtils/mizuLogsUtils.go +++ b/cli/mizu/fsUtils/mizuLogsUtils.go @@ -38,18 +38,20 @@ func DumpLogs(ctx context.Context, provider *kubernetes.Provider, filePath strin defer zipWriter.Close() for _, pod := range pods { - logs, err := provider.GetPodLogs(ctx, pod.Namespace, pod.Name) - if err != nil { - logger.Log.Errorf("Failed to get logs, %v", err) - continue - } else { - logger.Log.Debugf("Successfully read log length %d for pod: %s.%s", len(logs), pod.Namespace, pod.Name) - } + for _, container := range pod.Spec.Containers { + logs, err := provider.GetPodLogs(ctx, pod.Namespace, pod.Name, container.Name) + if err != nil { + logger.Log.Errorf("Failed to get logs, %v", err) + continue + } else { + logger.Log.Debugf("Successfully read log length %d for pod: %s.%s.%s", len(logs), pod.Namespace, pod.Name, container.Name) + } - if err := AddStrToZip(zipWriter, logs, fmt.Sprintf("%s.%s.log", pod.Namespace, pod.Name)); err != nil { - logger.Log.Errorf("Failed write logs, %v", err) - } else { - logger.Log.Debugf("Successfully added log length %d from pod: %s.%s", len(logs), pod.Namespace, pod.Name) + if err := AddStrToZip(zipWriter, logs, fmt.Sprintf("%s.%s.%s.log", pod.Namespace, pod.Name, container.Name)); err != nil { + logger.Log.Errorf("Failed write logs, %v", err) + } else { + logger.Log.Debugf("Successfully added log length %d from pod: %s.%s.%s", len(logs), pod.Namespace, pod.Name, container.Name) + } } } diff --git a/cli/resources/cleanResources.go b/cli/resources/cleanResources.go new file mode 100644 index 000000000..e92e1471d --- /dev/null +++ b/cli/resources/cleanResources.go @@ -0,0 +1,168 @@ +package resources + +import ( + "context" + "fmt" + "github.com/up9inc/mizu/cli/errormessage" + "github.com/up9inc/mizu/cli/mizu/fsUtils" + "github.com/up9inc/mizu/cli/uiUtils" + "github.com/up9inc/mizu/cli/utils" + "github.com/up9inc/mizu/shared/kubernetes" + "github.com/up9inc/mizu/shared/logger" + "k8s.io/apimachinery/pkg/util/wait" +) + +func CleanUpMizuResources(ctx context.Context, cancel context.CancelFunc, kubernetesProvider *kubernetes.Provider, isNsRestrictedMode bool, mizuResourcesNamespace string) { + logger.Log.Infof("\nRemoving mizu resources") + + var leftoverResources []string + + if isNsRestrictedMode { + leftoverResources = cleanUpRestrictedMode(ctx, kubernetesProvider, mizuResourcesNamespace) + } else { + leftoverResources = cleanUpNonRestrictedMode(ctx, cancel, kubernetesProvider, mizuResourcesNamespace) + } + + if len(leftoverResources) > 0 { + errMsg := fmt.Sprintf("Failed to remove the following resources, for more info check logs at %s:", fsUtils.GetLogFilePath()) + for _, resource := range leftoverResources { + errMsg += "\n- " + resource + } + logger.Log.Errorf(uiUtils.Error, errMsg) + } +} + +func cleanUpNonRestrictedMode(ctx context.Context, cancel context.CancelFunc, kubernetesProvider *kubernetes.Provider, mizuResourcesNamespace string) []string { + leftoverResources := make([]string, 0) + + if err := kubernetesProvider.RemoveNamespace(ctx, mizuResourcesNamespace); err != nil { + resourceDesc := fmt.Sprintf("Namespace %s", mizuResourcesNamespace) + handleDeletionError(err, resourceDesc, &leftoverResources) + } else { + defer waitUntilNamespaceDeleted(ctx, cancel, kubernetesProvider, mizuResourcesNamespace) + } + + if resources, err := kubernetesProvider.ListManagedClusterRoles(ctx); err != nil { + resourceDesc := "ClusterRoles" + handleDeletionError(err, resourceDesc, &leftoverResources) + } else { + for _, resource := range resources.Items { + if err := kubernetesProvider.RemoveClusterRole(ctx, resource.Name); err != nil { + resourceDesc := fmt.Sprintf("ClusterRole %s", resource.Name) + handleDeletionError(err, resourceDesc, &leftoverResources) + } + } + } + + + if resources, err := kubernetesProvider.ListManagedClusterRoleBindings(ctx); err != nil { + resourceDesc := "ClusterRoleBindings" + handleDeletionError(err, resourceDesc, &leftoverResources) + } else { + for _, resource := range resources.Items { + if err := kubernetesProvider.RemoveClusterRoleBinding(ctx, resource.Name); err != nil { + resourceDesc := fmt.Sprintf("ClusterRoleBinding %s", resource.Name) + handleDeletionError(err, resourceDesc, &leftoverResources) + } + } + } + + return leftoverResources +} + +func waitUntilNamespaceDeleted(ctx context.Context, cancel context.CancelFunc, kubernetesProvider *kubernetes.Provider, mizuResourcesNamespace string) { + // Call cancel if a terminating signal was received. Allows user to skip the wait. + go func() { + utils.WaitForFinish(ctx, cancel) + }() + + if err := kubernetesProvider.WaitUtilNamespaceDeleted(ctx, mizuResourcesNamespace); err != nil { + switch { + case ctx.Err() == context.Canceled: + logger.Log.Debugf("Do nothing. User interrupted the wait") + case err == wait.ErrWaitTimeout: + logger.Log.Errorf(uiUtils.Error, fmt.Sprintf("Timeout while removing Namespace %s", mizuResourcesNamespace)) + default: + logger.Log.Errorf(uiUtils.Error, fmt.Sprintf("Error while waiting for Namespace %s to be deleted: %v", mizuResourcesNamespace, errormessage.FormatError(err))) + } + } +} + +func cleanUpRestrictedMode(ctx context.Context, kubernetesProvider *kubernetes.Provider, mizuResourcesNamespace string) []string { + leftoverResources := make([]string, 0) + + if err := kubernetesProvider.RemoveService(ctx, mizuResourcesNamespace, kubernetes.ApiServerPodName); err != nil { + resourceDesc := fmt.Sprintf("Service %s in namespace %s", kubernetes.ApiServerPodName, mizuResourcesNamespace) + handleDeletionError(err, resourceDesc, &leftoverResources) + } + + if err := kubernetesProvider.RemoveDaemonSet(ctx, mizuResourcesNamespace, kubernetes.TapperDaemonSetName); err != nil { + resourceDesc := fmt.Sprintf("DaemonSet %s in namespace %s", kubernetes.TapperDaemonSetName, mizuResourcesNamespace) + handleDeletionError(err, resourceDesc, &leftoverResources) + } + + if err := kubernetesProvider.RemoveConfigMap(ctx, mizuResourcesNamespace, kubernetes.ConfigMapName); err != nil { + resourceDesc := fmt.Sprintf("ConfigMap %s in namespace %s", kubernetes.ConfigMapName, mizuResourcesNamespace) + handleDeletionError(err, resourceDesc, &leftoverResources) + } + + if resources, err := kubernetesProvider.ListManagedServiceAccounts(ctx, mizuResourcesNamespace); err != nil { + resourceDesc := fmt.Sprintf("ServiceAccounts in namespace %s", mizuResourcesNamespace) + handleDeletionError(err, resourceDesc, &leftoverResources) + } else { + for _, resource := range resources.Items { + if err := kubernetesProvider.RemoveServicAccount(ctx, mizuResourcesNamespace, resource.Name); err != nil { + resourceDesc := fmt.Sprintf("ServiceAccount %s in namespace %s", resource.Name, mizuResourcesNamespace) + handleDeletionError(err, resourceDesc, &leftoverResources) + } + } + } + + if resources, err := kubernetesProvider.ListManagedRoles(ctx, mizuResourcesNamespace); err != nil { + resourceDesc := fmt.Sprintf("Roles in namespace %s", mizuResourcesNamespace) + handleDeletionError(err, resourceDesc, &leftoverResources) + } else { + for _, resource := range resources.Items { + if err := kubernetesProvider.RemoveRole(ctx, mizuResourcesNamespace, resource.Name); err != nil { + resourceDesc := fmt.Sprintf("Role %s in namespace %s", resource.Name, mizuResourcesNamespace) + handleDeletionError(err, resourceDesc, &leftoverResources) + } + } + } + + if resources, err := kubernetesProvider.ListManagedRoleBindings(ctx, mizuResourcesNamespace); err != nil { + resourceDesc := fmt.Sprintf("RoleBindings in namespace %s", mizuResourcesNamespace) + handleDeletionError(err, resourceDesc, &leftoverResources) + } else { + for _, resource := range resources.Items { + if err := kubernetesProvider.RemoveRoleBinding(ctx, mizuResourcesNamespace, resource.Name); err != nil { + resourceDesc := fmt.Sprintf("RoleBinding %s in namespace %s", resource.Name, mizuResourcesNamespace) + handleDeletionError(err, resourceDesc, &leftoverResources) + } + } + } + + if err := kubernetesProvider.RemovePod(ctx, mizuResourcesNamespace, kubernetes.ApiServerPodName); err != nil { + resourceDesc := fmt.Sprintf("Pod %s in namespace %s", kubernetes.ApiServerPodName, mizuResourcesNamespace) + handleDeletionError(err, resourceDesc, &leftoverResources) + } + + //install mode resources + + if err := kubernetesProvider.RemoveDeployment(ctx, mizuResourcesNamespace, kubernetes.ApiServerPodName); err != nil { + resourceDesc := fmt.Sprintf("Deployment %s in namespace %s", kubernetes.ApiServerPodName, mizuResourcesNamespace) + handleDeletionError(err, resourceDesc, &leftoverResources) + } + + if err := kubernetesProvider.RemovePersistentVolumeClaim(ctx, mizuResourcesNamespace, kubernetes.PersistentVolumeClaimName); err != nil { + resourceDesc := fmt.Sprintf("PersistentVolumeClaim %s in namespace %s", kubernetes.PersistentVolumeClaimName, mizuResourcesNamespace) + handleDeletionError(err, resourceDesc, &leftoverResources) + } + + return leftoverResources +} + +func handleDeletionError(err error, resourceDesc string, leftoverResources *[]string) { + logger.Log.Debugf("Error removing %s: %v", resourceDesc, errormessage.FormatError(err)) + *leftoverResources = append(*leftoverResources, resourceDesc) +} diff --git a/cli/resources/createResources.go b/cli/resources/createResources.go new file mode 100644 index 000000000..0e3b7c2dd --- /dev/null +++ b/cli/resources/createResources.go @@ -0,0 +1,202 @@ +package resources + +import ( + "context" + "fmt" + + "github.com/op/go-logging" + "github.com/up9inc/mizu/cli/errormessage" + "github.com/up9inc/mizu/cli/mizu" + "github.com/up9inc/mizu/cli/uiUtils" + "github.com/up9inc/mizu/shared" + "github.com/up9inc/mizu/shared/kubernetes" + "github.com/up9inc/mizu/shared/logger" + core "k8s.io/api/core/v1" + "k8s.io/apimachinery/pkg/util/intstr" +) + +func CreateTapMizuResources(ctx context.Context, kubernetesProvider *kubernetes.Provider, serializedValidationRules string, serializedContract string, serializedMizuConfig string, isNsRestrictedMode bool, mizuResourcesNamespace string, agentImage string, syncEntriesConfig *shared.SyncEntriesConfig, maxEntriesDBSizeBytes int64, apiServerResources shared.Resources, imagePullPolicy core.PullPolicy, logLevel logging.Level) (bool, error) { + if !isNsRestrictedMode { + if err := createMizuNamespace(ctx, kubernetesProvider, mizuResourcesNamespace); err != nil { + return false, err + } + } + + if err := createMizuConfigmap(ctx, kubernetesProvider, serializedValidationRules, serializedContract, serializedMizuConfig, mizuResourcesNamespace); err != nil { + logger.Log.Warningf(uiUtils.Warning, fmt.Sprintf("Failed to create resources required for policy validation. Mizu will not validate policy rules. error: %v", errormessage.FormatError(err))) + } + + mizuServiceAccountExists, err := createRBACIfNecessary(ctx, kubernetesProvider, isNsRestrictedMode, mizuResourcesNamespace, []string{"pods", "services", "endpoints"}) + if err != nil { + logger.Log.Warningf(uiUtils.Warning, fmt.Sprintf("Failed to ensure the resources required for IP resolving. Mizu will not resolve target IPs to names. error: %v", errormessage.FormatError(err))) + } + + var serviceAccountName string + if mizuServiceAccountExists { + serviceAccountName = kubernetes.ServiceAccountName + } else { + serviceAccountName = "" + } + + opts := &kubernetes.ApiServerOptions{ + Namespace: mizuResourcesNamespace, + PodName: kubernetes.ApiServerPodName, + PodImage: agentImage, + ServiceAccountName: serviceAccountName, + IsNamespaceRestricted: isNsRestrictedMode, + SyncEntriesConfig: syncEntriesConfig, + MaxEntriesDBSizeBytes: maxEntriesDBSizeBytes, + Resources: apiServerResources, + ImagePullPolicy: imagePullPolicy, + LogLevel: logLevel, + } + + if err := createMizuApiServerPod(ctx, kubernetesProvider, opts); err != nil { + return mizuServiceAccountExists, err + } + + _, err = kubernetesProvider.CreateService(ctx, mizuResourcesNamespace, kubernetes.ApiServerPodName, kubernetes.ApiServerPodName) + if err != nil { + return mizuServiceAccountExists, err + } + + logger.Log.Debugf("Successfully created service: %s", kubernetes.ApiServerPodName) + + return mizuServiceAccountExists, nil +} + +func CreateInstallMizuResources(ctx context.Context, kubernetesProvider *kubernetes.Provider, serializedValidationRules string, serializedContract string, serializedMizuConfig string, isNsRestrictedMode bool, mizuResourcesNamespace string, agentImage string, syncEntriesConfig *shared.SyncEntriesConfig, maxEntriesDBSizeBytes int64, apiServerResources shared.Resources, imagePullPolicy core.PullPolicy, logLevel logging.Level, noPersistentVolumeClaim bool) error { + if err := createMizuNamespace(ctx, kubernetesProvider, mizuResourcesNamespace); err != nil { + return err + } + logger.Log.Infof("namespace/%v created", mizuResourcesNamespace) + + if err := createMizuConfigmap(ctx, kubernetesProvider, serializedValidationRules, serializedContract, serializedMizuConfig, mizuResourcesNamespace); err != nil { + return err + } + logger.Log.Infof("configmap/%v created", kubernetes.ConfigMapName) + + _, err := createRBACIfNecessary(ctx, kubernetesProvider, isNsRestrictedMode, mizuResourcesNamespace, []string{"pods", "services", "endpoints", "namespaces"}) + if err != nil { + return err + } + logger.Log.Infof("serviceaccount/%v created", kubernetes.ServiceAccountName) + logger.Log.Infof("clusterrole.rbac.authorization.k8s.io/%v created", kubernetes.ClusterRoleName) + logger.Log.Infof("clusterrolebinding.rbac.authorization.k8s.io/%v created", kubernetes.ClusterRoleBindingName) + + if err := kubernetesProvider.CreateDaemonsetRBAC(ctx, mizuResourcesNamespace, kubernetes.ServiceAccountName, kubernetes.DaemonRoleName, kubernetes.DaemonRoleBindingName, mizu.RBACVersion); err != nil { + return err + } + logger.Log.Infof("role.rbac.authorization.k8s.io/%v created", kubernetes.DaemonRoleName) + logger.Log.Infof("rolebinding.rbac.authorization.k8s.io/%v created", kubernetes.DaemonRoleBindingName) + + serviceAccountName := kubernetes.ServiceAccountName + opts := &kubernetes.ApiServerOptions{ + Namespace: mizuResourcesNamespace, + PodName: kubernetes.ApiServerPodName, + PodImage: agentImage, + ServiceAccountName: serviceAccountName, + IsNamespaceRestricted: isNsRestrictedMode, + SyncEntriesConfig: syncEntriesConfig, + MaxEntriesDBSizeBytes: maxEntriesDBSizeBytes, + Resources: apiServerResources, + ImagePullPolicy: imagePullPolicy, + LogLevel: logLevel, + } + + if err := createMizuApiServerDeployment(ctx, kubernetesProvider, opts, noPersistentVolumeClaim); err != nil { + return err + } + logger.Log.Infof("deployment.apps/%v created", kubernetes.ApiServerPodName) + + _, err = kubernetesProvider.CreateService(ctx, mizuResourcesNamespace, kubernetes.ApiServerPodName, kubernetes.ApiServerPodName) + if err != nil { + return err + } + logger.Log.Infof("service/%v created", kubernetes.ApiServerPodName) + + return nil +} + +func createMizuNamespace(ctx context.Context, kubernetesProvider *kubernetes.Provider, mizuResourcesNamespace string) error { + _, err := kubernetesProvider.CreateNamespace(ctx, mizuResourcesNamespace) + return err +} + +func createMizuConfigmap(ctx context.Context, kubernetesProvider *kubernetes.Provider, serializedValidationRules string, serializedContract string, serializedMizuConfig string, mizuResourcesNamespace string) error { + err := kubernetesProvider.CreateConfigMap(ctx, mizuResourcesNamespace, kubernetes.ConfigMapName, serializedValidationRules, serializedContract, serializedMizuConfig) + return err +} + +func createRBACIfNecessary(ctx context.Context, kubernetesProvider *kubernetes.Provider, isNsRestrictedMode bool, mizuResourcesNamespace string, resources []string) (bool, error) { + if !isNsRestrictedMode { + if err := kubernetesProvider.CreateMizuRBAC(ctx, mizuResourcesNamespace, kubernetes.ServiceAccountName, kubernetes.ClusterRoleName, kubernetes.ClusterRoleBindingName, mizu.RBACVersion, resources); err != nil { + return false, err + } + } else { + if err := kubernetesProvider.CreateMizuRBACNamespaceRestricted(ctx, mizuResourcesNamespace, kubernetes.ServiceAccountName, kubernetes.RoleName, kubernetes.RoleBindingName, mizu.RBACVersion); err != nil { + return false, err + } + } + + return true, nil +} + +func createMizuApiServerDeployment(ctx context.Context, kubernetesProvider *kubernetes.Provider, opts *kubernetes.ApiServerOptions, noPersistentVolumeClaim bool) error { + volumeClaimCreated := false + if !noPersistentVolumeClaim { + volumeClaimCreated = tryToCreatePersistentVolumeClaim(ctx, kubernetesProvider, opts) + } + + pod, err := kubernetesProvider.GetMizuApiServerPodObject(opts, volumeClaimCreated, kubernetes.PersistentVolumeClaimName, true) + if err != nil { + return err + } + pod.Spec.Containers[0].LivenessProbe = &core.Probe{ + Handler: core.Handler{ + HTTPGet: &core.HTTPGetAction{ + Path: "/echo", + Port: intstr.FromInt(shared.DefaultApiServerPort), + }, + }, + InitialDelaySeconds: 1, + PeriodSeconds: 10, + } + if _, err = kubernetesProvider.CreateDeployment(ctx, opts.Namespace, opts.PodName, pod); err != nil { + return err + } + logger.Log.Debugf("Successfully created API server deployment: %s", kubernetes.ApiServerPodName) + return nil +} + +func tryToCreatePersistentVolumeClaim(ctx context.Context, kubernetesProvider *kubernetes.Provider, opts *kubernetes.ApiServerOptions) bool { + isDefaultStorageClassAvailable, err := kubernetesProvider.IsDefaultStorageProviderAvailable(ctx) + if err != nil { + logger.Log.Warningf(uiUtils.Yellow, "An error occured when checking if a default storage provider exists in this cluster, this means mizu data will be lost on mizu-api-server pod restart") + logger.Log.Debugf("error checking if default storage class exists: %v", err) + return false + } else if !isDefaultStorageClassAvailable { + logger.Log.Warningf(uiUtils.Yellow, "Could not find default storage provider in this cluster, this means mizu data will be lost on mizu-api-server pod restart") + return false + } + + if _, err = kubernetesProvider.CreatePersistentVolumeClaim(ctx, opts.Namespace, kubernetes.PersistentVolumeClaimName, opts.MaxEntriesDBSizeBytes+mizu.InstallModePersistentVolumeSizeBufferBytes); err != nil { + logger.Log.Warningf(uiUtils.Yellow, "An error has occured while creating a persistent volume claim for mizu, this means mizu data will be lost on mizu-api-server pod restart") + logger.Log.Debugf("error creating persistent volume claim: %v", err) + return false + } + + return true +} + +func createMizuApiServerPod(ctx context.Context, kubernetesProvider *kubernetes.Provider, opts *kubernetes.ApiServerOptions) error { + pod, err := kubernetesProvider.GetMizuApiServerPodObject(opts, false, "", false) + if err != nil { + return err + } + if _, err = kubernetesProvider.CreatePod(ctx, opts.Namespace, pod); err != nil { + return err + } + logger.Log.Debugf("Successfully created API server pod: %s", kubernetes.ApiServerPodName) + return nil +} diff --git a/cli/utils/waitUtils.go b/cli/utils/waitUtils.go new file mode 100644 index 000000000..75a5e83ff --- /dev/null +++ b/cli/utils/waitUtils.go @@ -0,0 +1,25 @@ +package utils + +import ( + "context" + "github.com/up9inc/mizu/shared/logger" + "os" + "os/signal" + "syscall" +) + +func WaitForFinish(ctx context.Context, cancel context.CancelFunc) { + logger.Log.Debugf("waiting for finish...") + sigChan := make(chan os.Signal, 1) + signal.Notify(sigChan, syscall.SIGINT, syscall.SIGTERM, syscall.SIGQUIT) + + // block until ctx cancel is called or termination signal is received + select { + case <-ctx.Done(): + logger.Log.Debugf("ctx done") + break + case <-sigChan: + logger.Log.Debugf("Got termination signal, canceling execution...") + cancel() + } +} diff --git a/debug.Dockerfile b/debug.Dockerfile index e063e887f..51fe4a549 100644 --- a/debug.Dockerfile +++ b/debug.Dockerfile @@ -3,11 +3,12 @@ FROM node:14-slim AS site-build WORKDIR /app/ui-build -COPY ui . +COPY ui/package.json . +COPY ui/package-lock.json . RUN npm i +COPY ui . RUN npm run build - FROM golang:1.16-alpine AS builder # Set necessary environment variables needed for our image. ENV CGO_ENABLED=1 GOOS=linux GOARCH=amd64 @@ -34,32 +35,33 @@ ARG SEM_VER=0.0.0 COPY shared ../shared COPY tap ../tap COPY agent . +# Include gcflags for debugging RUN go build -gcflags="all=-N -l" -o mizuagent . -# Download Basenine executable, verify the sha1sum and move it to a directory in $PATH -ADD https://github.com/up9inc/basenine/releases/download/v0.2.19/basenine_linux_amd64 ./basenine_linux_amd64 -ADD https://github.com/up9inc/basenine/releases/download/v0.2.19/basenine_linux_amd64.sha256 ./basenine_linux_amd64.sha256 -RUN shasum -a 256 -c basenine_linux_amd64.sha256 -RUN chmod +x ./basenine_linux_amd64 - COPY devops/build_extensions_debug.sh .. RUN cd .. && /bin/bash build_extensions_debug.sh - FROM golang:1.16-alpine -RUN apk add bash libpcap-dev +# Set necessary environment variables needed for our image. +RUN apk add bash libpcap-dev gcc g++ WORKDIR /app # Copy binary and config files from /build to root folder of scratch container. COPY --from=builder ["/app/agent-build/mizuagent", "."] -COPY --from=builder ["/app/agent-build/basenine_linux_amd64", "/usr/local/bin/basenine"] COPY --from=builder ["/app/agent/build/extensions", "extensions"] COPY --from=site-build ["/app/ui-build/build", "site"] +RUN mkdir /app/data/ -# install remote debugging tool +# install delve +ENV CGO_ENABLED=1 GOOS=linux GOARCH=amd64 RUN go get github.com/go-delve/delve/cmd/dlv +ENV GIN_MODE=debug + +# delve ports +EXPOSE 2345 2346 + +# this script runs both apiserver and passivetapper and exits either if one of them exits, preventing a scenario where the container runs without one process ENTRYPOINT "/app/mizuagent" -#CMD ["sh", "-c", "dlv --headless=true --listen=:2345 --log --api-version=2 --accept-multiclient exec ./mizuagent -- --api-server"] diff --git a/deploy/kubernetes/helm-chart/.helmignore b/deploy/kubernetes/helm-chart/.helmignore new file mode 100644 index 000000000..0e8a0eb36 --- /dev/null +++ b/deploy/kubernetes/helm-chart/.helmignore @@ -0,0 +1,23 @@ +# Patterns to ignore when building packages. +# This supports shell glob matching, relative path matching, and +# negation (prefixed with !). Only one pattern per line. +.DS_Store +# Common VCS dirs +.git/ +.gitignore +.bzr/ +.bzrignore +.hg/ +.hgignore +.svn/ +# Common backup files +*.swp +*.bak +*.tmp +*.orig +*~ +# Various IDEs +.project +.idea/ +*.tmproj +.vscode/ diff --git a/deploy/kubernetes/helm-chart/Chart.yaml b/deploy/kubernetes/helm-chart/Chart.yaml new file mode 100644 index 000000000..0dbe9a6dc --- /dev/null +++ b/deploy/kubernetes/helm-chart/Chart.yaml @@ -0,0 +1,7 @@ +apiVersion: v2 +name: mizuhelm +description: Mizu helm chart for Kubernetes +type: application +version: 0.1.1 +kubeVersion: ">= 1.16.0-0" +appVersion: "0.21.29" diff --git a/deploy/kubernetes/helm-chart/templates/PersistentVolumeClaim.yaml b/deploy/kubernetes/helm-chart/templates/PersistentVolumeClaim.yaml new file mode 100644 index 000000000..80f7bbafa --- /dev/null +++ b/deploy/kubernetes/helm-chart/templates/PersistentVolumeClaim.yaml @@ -0,0 +1,13 @@ +kind: PersistentVolumeClaim +apiVersion: v1 +metadata: + name: {{ .Values.volumeClaim.name }} + namespace: {{ .Release.Namespace }} +spec: + accessModes: + - ReadWriteOnce + resources: + limits: + storage: 700M + requests: + storage: 700M diff --git a/deploy/kubernetes/helm-chart/templates/clusterRole.yaml b/deploy/kubernetes/helm-chart/templates/clusterRole.yaml new file mode 100644 index 000000000..c8bc10574 --- /dev/null +++ b/deploy/kubernetes/helm-chart/templates/clusterRole.yaml @@ -0,0 +1,30 @@ +{{- if .Values.rbac.create -}} +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + name: {{ .Values.rbac.name }} + namespace: {{ .Release.Namespace }} + labels: + mizu-cli-version: {{ .Chart.AppVersion }} + heritage: {{ .Release.Service }} + release: {{ .Release.Name }} +rules: + - apiGroups: [ "", "extensions", "apps" ] + resources: [ "endpoints", "pods", "services", "namespaces" ] + verbs: [ "get", "list", "watch" ] +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRoleBinding +metadata: + name: {{ .Values.rbac.roleBindingName }} + labels: + mizu-cli-version: {{ .Chart.AppVersion }} +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: {{ .Values.rbac.name }} +subjects: + - kind: ServiceAccount + name: {{ .Values.serviceAccountName }} + namespace: {{ .Release.Namespace }} + {{- end -}} diff --git a/deploy/kubernetes/helm-chart/templates/configmap.yaml b/deploy/kubernetes/helm-chart/templates/configmap.yaml new file mode 100644 index 000000000..179985f79 --- /dev/null +++ b/deploy/kubernetes/helm-chart/templates/configmap.yaml @@ -0,0 +1,8 @@ +apiVersion: v1 +kind: ConfigMap +metadata: + name: {{ .Values.configMap.name }} + namespace: {{ .Release.Namespace }} +data: + mizu-config.json: >- + {"maxDBSizeBytes":200000000,"agentImage":"{{ .Values.container.tapper.image.repository }}:{{ .Values.container.tapper.image.tag }}","pullPolicy":"Always","logLevel":4,"tapperResources":{"CpuLimit":"750m","MemoryLimit":"1Gi","CpuRequests":"50m","MemoryRequests":"50Mi"},"mizuResourceNamespace":"{{ .Release.Namespace }}","agentDatabasePath":"/app/data/","standaloneMode":true} diff --git a/deploy/kubernetes/helm-chart/templates/deployment.yaml b/deploy/kubernetes/helm-chart/templates/deployment.yaml new file mode 100644 index 000000000..b09fcf975 --- /dev/null +++ b/deploy/kubernetes/helm-chart/templates/deployment.yaml @@ -0,0 +1,128 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: {{ .Values.pod.name }} + namespace: {{ .Release.Namespace }} + labels: + app: {{ .Values.pod.name }} +spec: + replicas: {{ .Values.deployment.replicaCount }} + selector: + matchLabels: + app: {{ .Values.pod.name }} + template: + metadata: + name: {{ .Values.pod.name }} + creationTimestamp: null + labels: + app: {{ .Values.pod.name }} + spec: + volumes: + - name: {{ .Values.configMap.name }} + configMap: + name: {{ .Values.configMap.name }} + defaultMode: 420 + - name: {{ .Values.volumeClaim.name }} + persistentVolumeClaim: + claimName: {{ .Values.volumeClaim.name }} + containers: + - name: {{ .Values.pod.name }} + image: "{{ .Values.container.mizuAgent.image.repository }}:{{ .Values.container.mizuAgent.image.tag | default .Chart.AppVersion }}" + command: + - ./mizuagent + - '--api-server' + env: + - name: SYNC_ENTRIES_CONFIG + - name: LOG_LEVEL + value: INFO + resources: + limits: + cpu: 750m + memory: 1Gi + requests: + cpu: 50m + memory: 50Mi + volumeMounts: + - name: {{ .Values.configMap.name }} + mountPath: /app/config/ + - name: {{ .Values.volumeClaim.name }} + mountPath: /app/data/ + livenessProbe: + httpGet: + path: /echo + port: {{ .Values.pod.port }} + scheme: HTTP + initialDelaySeconds: 1 + timeoutSeconds: 1 + periodSeconds: 10 + successThreshold: 1 + failureThreshold: 3 + terminationMessagePath: /dev/termination-log + terminationMessagePolicy: File + imagePullPolicy: Always + - name: {{ .Values.container.basenine.name }} + image: "{{ .Values.container.basenine.image.repository }}:{{ .Values.container.basenine.image.tag | default .Chart.AppVersion }}" + command: + - /basenine + args: + - '-addr' + - 0.0.0.0 + - '-port' + - '9099' + - '-persistent' + workingDir: /app/data/ + resources: + limits: + cpu: 750m + memory: 1Gi + requests: + cpu: 50m + memory: 50Mi + volumeMounts: + - name: {{ .Values.configMap.name }} + mountPath: /app/config/ + - name: {{ .Values.volumeClaim.name }} + mountPath: /app/data/ + readinessProbe: + tcpSocket: + port: 9099 + timeoutSeconds: 1 + periodSeconds: 1 + successThreshold: 1 + failureThreshold: 3 + terminationMessagePath: /dev/termination-log + terminationMessagePolicy: File + imagePullPolicy: Always + - name: kratos + image: "{{ .Values.container.kratos.image.repository }}:{{ .Values.container.kratos.image.tag | default .Chart.AppVersion }}" + resources: + limits: + cpu: 750m + memory: 1Gi + requests: + cpu: 50m + memory: 50Mi + volumeMounts: + - name: {{ .Values.configMap.name }} + mountPath: /app/config/ + - name: {{ .Values.volumeClaim.name }} + mountPath: /app/data/ + readinessProbe: + httpGet: + path: /health/ready + port: 4433 + scheme: HTTP + timeoutSeconds: 1 + periodSeconds: 1 + successThreshold: 1 + failureThreshold: 3 + terminationMessagePath: /dev/termination-log + terminationMessagePolicy: File + imagePullPolicy: Always + restartPolicy: Always + terminationGracePeriodSeconds: 0 + dnsPolicy: ClusterFirstWithHostNet + serviceAccountName: {{ .Values.serviceAccountName }} + serviceAccount: {{ .Values.serviceAccountName }} + securityContext: { } + schedulerName: default-scheduler diff --git a/deploy/kubernetes/helm-chart/templates/role.yaml b/deploy/kubernetes/helm-chart/templates/role.yaml new file mode 100644 index 000000000..fbe8d73bb --- /dev/null +++ b/deploy/kubernetes/helm-chart/templates/role.yaml @@ -0,0 +1,29 @@ +apiVersion: rbac.authorization.k8s.io/v1 +kind: Role +metadata: + name: {{ .Values.roleName }} + namespace: {{ .Release.Namespace }} + labels: + mizu-cli-version: {{ .Chart.AppVersion }} +rules: + - apiGroups: [ "apps" ] + resources: [ "daemonsets" ] + verbs: [ "patch", "get", "list", "create", "delete" ] + - apiGroups: [ "events.k8s.i" ] + resources: [ "events" ] + verbs: [ "list", "watch" ] +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: RoleBinding +metadata: + name: {{ .Values.roleBindingName }} + namespace: {{ .Release.Namespace }} +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: Role + name: {{ .Values.roleName }} +subjects: + - kind: ServiceAccount + name: {{ .Values.serviceAccountName }} + namespace: {{ .Release.Namespace }} +--- diff --git a/deploy/kubernetes/helm-chart/templates/service.yaml b/deploy/kubernetes/helm-chart/templates/service.yaml new file mode 100644 index 000000000..a9792532b --- /dev/null +++ b/deploy/kubernetes/helm-chart/templates/service.yaml @@ -0,0 +1,14 @@ +apiVersion: v1 +kind: Service +metadata: + name: {{ .Values.service.name }} + namespace: {{ .Release.Namespace }} +spec: + type: {{ .Values.service.type }} + ports: + - name: api + port: {{ .Values.service.port }} + targetPort: {{ .Values.pod.port }} + protocol: TCP + selector: + app: {{ .Values.pod.name }} diff --git a/deploy/kubernetes/helm-chart/templates/serviceAccount.yaml b/deploy/kubernetes/helm-chart/templates/serviceAccount.yaml new file mode 100644 index 000000000..9c4283dba --- /dev/null +++ b/deploy/kubernetes/helm-chart/templates/serviceAccount.yaml @@ -0,0 +1,7 @@ +apiVersion: v1 +kind: ServiceAccount +metadata: + name: {{ .Values.serviceAccountName }} + namespace: {{ .Release.Namespace }} + labels: + mizu-cli-version: {{ .Chart.AppVersion }} diff --git a/deploy/kubernetes/helm-chart/values.yaml b/deploy/kubernetes/helm-chart/values.yaml new file mode 100644 index 000000000..2a5e85065 --- /dev/null +++ b/deploy/kubernetes/helm-chart/values.yaml @@ -0,0 +1,51 @@ +# Default values for mizu. +rbac: + create: true + name: "mizu-cluster-role" + roleBindingName: "mizu-role-binding" + +serviceAccountName: "mizu-service-account" + +roleName: "mizu-role-daemon" +roleBindingName: "mizu-role-binding-daemon" + +service: + name: "mizu-api-server" + type: ClusterIP + port: 80 + +pod: + name: "mizu-api-server" + port: 8899 + +container: + mizuAgent: + image: + repository: "709825985650.dkr.ecr.us-east-1.amazonaws.com/up9/mizufree" + tag: "0.21.29" + tapper: + image: + repository: "709825985650.dkr.ecr.us-east-1.amazonaws.com/up9/mizufree" + tag: "0.21.29" + basenine: + name: "basenine" + port: 9099 + image: + repository: "709825985650.dkr.ecr.us-east-1.amazonaws.com/up9/basenine" + tag: "v0.3.0" + kratos: + name: "kratos" + port: 4433 + image: + repository: "709825985650.dkr.ecr.us-east-1.amazonaws.com/up9/kratos" + tag: "0.0.0" + +deployment: + replicaCount: 1 + +configMap: + name: "mizu-config" + +volumeClaim: + create: true + name: "mizu-volume-claim" diff --git a/devops/build_extensions.sh b/devops/build_extensions.sh index 855f1c44a..6ac6791ca 100755 --- a/devops/build_extensions.sh +++ b/devops/build_extensions.sh @@ -2,6 +2,7 @@ for f in tap/extensions/*; do if [ -d "$f" ]; then + echo Building extension: $f extension=$(basename $f) && \ cd tap/extensions/${extension} && \ go build -buildmode=plugin -o ../${extension}.so . && \ diff --git a/docs/CHANGELOG.md b/docs/CHANGELOG.md new file mode 100644 index 000000000..f56ad4038 --- /dev/null +++ b/docs/CHANGELOG.md @@ -0,0 +1,43 @@ +# CHANGELOG +This document summarizes main and fixes changes published in stable (aka `main`) branch of this project. +Ongoing work and development releases are under `develop` branch. + +## 0.22.0 + +### main features +* Service Mesh support -- mizu is now capable to tap mTLS traffic between pods connected by Istio service mesh + * Use `--service-mesh` option to enable this feature +* New installation option - have the same Mizu functionality as long living pods in your cluster, with password protection + * To install use `mizu install` command + * To access use `mizu view` or `kubectl -n mizu port-forward svc/mizu-api-server` + * To uninstall run `mizu clean` +* At first login + * Set admin password as prompted, use it to login to mizu later on. + * After login, user should select cluster namespaces to tap: by default all namespaces in the cluster are selected, user can select/unselect according to their needs. These settings are retained and can be modified at any time via Settings menu (cog icon on the top-right) + + +### improvements +* improved Mizu permissions/roles logic to support clusters with strict PodSecurityPolicy (PSP) -- see [PERMISSIONS](PERMISSIONS.md) doc for more details + +### notable bug fixes +* mizu now works properly when API service is exposed via HTTPS url +* mizu now properly displays KAFKA message body + + + + +## 0.21.0 + +### main features +* New traffic search & stream exprience +* Rich query language with full-text search capabilities on headers & body +* Distinct live-streaming vs paging/browsing modes, all with filter applied + +### improvements +* GUI - source and destination IP addresses & service names for each traffic item +* GUI - Mizu health - display warning sign in top bar when not all requested pods are successfully tapped +* GUI - pod tapping status reflected in the list (ok or problem) +* Mizu telemetry - report platform type + +### fixes +* Request duration and body size properly shown in GUI (instead of -1) diff --git a/docs/CONFIGURATION.md b/docs/CONFIGURATION.md index ad9c64889..7282bc141 100644 --- a/docs/CONFIGURATION.md +++ b/docs/CONFIGURATION.md @@ -25,7 +25,7 @@ Please make sure to use full option name (`tap.dry-run` as opposed to `dry-run` * `dump-logs` - if set to `true`, saves log files for all Mizu components (tapper, api-server, CLI) in a zip file under `$HOME/.mizu`. Default value is `false` -* `image-pull-policy` - container image pull policy for Kubernetes, default value `Always`. Other accepted values are `Never` or `IfNotExist`. Please mind the implications when changing this. +* `image-pull-policy` - container image pull policy for Kubernetes, default value `Always`. Other accepted values are `Never` or `IfNotPresent`. Please mind the implications when changing this. * `kube-config-path` - path to alternative kubeconfig file to use for all interactions with Kubernetes cluster. By default - `$HOME/.kubeconfig` @@ -38,8 +38,6 @@ Please make sure to use full option name (`tap.dry-run` as opposed to `dry-run` * `all-namespaces` - special flag indicating whether Mizu should search and tap pods, matching the regex, in all namespaces. Default is `false`. Please use with caution, tapping too many pods can affect resource consumption. -* `daemon` - instructs Mizu whether to run daemon mode (where CLI command exits after launch, and tapper & api-server pods in Kubernetes continue to run without controlling CLI). Typically supplied as command-line option `--daemon`. Default valie is `false` - * `dry-run` - if true, Mizu will print list of pods matching the supplied (or default) regex and exit without actually tapping the traffic. Default value is `false`. Typically supplied as command-line option `--dry-run` * `proxy-host` - IP address on which proxy to Mizu API service is launched; should be accessible at `proxy-host:gui-port`. Default value is `127.0.0.1` diff --git a/docs/DAEMON_MODE.md b/docs/INSTALL_STANDALONE.md similarity index 79% rename from docs/DAEMON_MODE.md rename to docs/INSTALL_STANDALONE.md index ab28d7d12..28b5b8620 100644 --- a/docs/DAEMON_MODE.md +++ b/docs/INSTALL_STANDALONE.md @@ -1,22 +1,16 @@ -# Mizu daemon mode +# Mizu install standalone -Mizu can be run detached from the cli using the daemon flag: `mizu tap --daemon`. This type of mizu instance will run +Mizu can be run detached from the cli using the install command: `mizu install`. This type of mizu instance will run indefinitely in the cluster. -Please note that daemon mode requires you to have RBAC creation permissions, see the [permissions](PERMISSIONS.md) +Please note that install standalone requires you to have RBAC creation permissions, see the [permissions](PERMISSIONS.md) doc for more details. ```bash -$ mizu tap "^ca.*" --daemon - Mizu will store up to 200MB of traffic, old traffic will be cleared once the limit is reached. - Tapping pods in namespaces "sock-shop" - Waiting for mizu to be ready... (may take a few minutes) - +carts-66c77f5fbb-fq65r - +catalogue-5f4cb7cf5-7zrmn - .. +$ mizu install ``` -## Stop mizu daemon +## Stop mizu install To stop the detached mizu instance and clean all cluster side resources, run `mizu clean` diff --git a/docs/PERMISSIONS.md b/docs/PERMISSIONS.md index 12eb69b8e..2f3a0129c 100644 --- a/docs/PERMISSIONS.md +++ b/docs/PERMISSIONS.md @@ -1,16 +1,92 @@ ![Mizu: The API Traffic Viewer for Kubernetes](../assets/mizu-logo.svg) + # Kubernetes permissions for MIZU -This document describes in details all permissions required for full and correct operation of Mizu +This document describes in details all permissions required for full and correct operation of Mizu. + +## Editting permissions + +During installation, Mizu creates a `ServiceAccount` and the roles it requires. No further action is required. +However, if there is a need, it is possible to make changes to Mizu permissions. + +### Adding permissions on top of Mizu's defaults + +Mizu pods use the `ServiceAccount` `mizu-service-account`. Permissions can be added to Mizu by creating `ClusterRoleBindings` and `RoleBindings` that target that `ServiceAccount`. + +For example, in order to add a `PodSecurityPolicy` which allows Mizu to run `hostNetwork` and `privileged` pods, create the following resources: + +```yaml +apiVersion: policy/v1beta1 +kind: PodSecurityPolicy +metadata: + name: my-mizu-psp +spec: + hostNetwork: true + privileged: true + allowedCapabilities: + - "*" + fsGroup: + rule: RunAsAny + runAsUser: + rule: RunAsAny + seLinux: + rule: RunAsAny + supplementalGroups: + rule: RunAsAny + volumes: + - "*" +--- +kind: ClusterRole +apiVersion: rbac.authorization.k8s.io/v1 +metadata: + name: my-mizu-clusterrole +rules: +- apiGroups: + - policy + resources: + - podsecuritypolicies + verbs: + - use + resourceNames: + - my-mizu-psp +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRoleBinding +metadata: + name: my-mizu-clusterrolebinding +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: my-mizu-clusterrole +subjects: +- kind: ServiceAccount + name: mizu-service-account # The service account used by Mizu + namespace: mizu +``` + +With this setup, when Mizu starts and creates `mizu-service-account`, this account will be subject to `my-mizu-psp` via `my-mizu-clusterrolebinding`. +When Mizu cleans up resources, the above resources will remain available for future executions. + +### Replacing Mizu's default permissions with custom permissions + +Mizu does not create its `ServiceAccounts`, `ClusterRoles`, `ClusterRoleBindings`, `Roles` or `RoleBindings` if resources by the same name already exist. In order to replace Mizu's defaults, simply create your resources before running Mizu. + +For example, creating a `ClusterRole` by the name of `mizu-cluster-role` before running Mizu will cause Mizu to use that `ClusterRole` instead of the default one created by Mizu. + +Notes: + +1. The resource names must match Mizu's default names. +2. User-managed resources must not have the label `app.kubernetes.io/managed-by=mizu`. Remove the label or set it to another value. + +## List of permissions We broke down this list into few categories: + - Required - what is needed for `mizu` to run properly on your k8s cluster -- Optional - permissions needed for proper name resolving for service & pod IPs - - addition required for policy validation - +- Optional - permissions needed for proper name resolving for service & pod IPs + - addition required for policy validation - -# Required permissions +### Required permissions Mizu needs following permissions on your Kubernetes cluster to run properly @@ -57,11 +133,11 @@ Mizu needs following permissions on your Kubernetes cluster to run properly - get ``` -## Permissions required running with --daemon flag or (optional) for service / pod name resolving +#### Permissions required running with install command or (optional) for service / pod name resolving -Mandatory permissions for running with `--daemon` flag. +Mandatory permissions for running with install command. -Optional for service/pod name resolving in non daemon mode +Optional for service/pod name resolving in non install standalone ```yaml - apiGroups: @@ -178,7 +254,7 @@ Optional for service/pod name resolving in non daemon mode - watch ``` -## Permissions for Policy rules validation feature (opt) +#### Permissions for Policy rules validation feature (opt) Optionally, in order to use the policy rules validation feature, Mizu requires the following additional permissions: @@ -195,7 +271,7 @@ Optionally, in order to use the policy rules validation feature, Mizu requires t - - - -## Namespace-Restricted mode +#### Namespace-Restricted mode Alternatively, in order to restrict Mizu to one namespace only (by setting `agent.namespace` in the config file), Mizu needs the following permissions in that namespace: @@ -235,7 +311,7 @@ Alternatively, in order to restrict Mizu to one namespace only (by setting `agen - get ``` -### Name resolving in Namespace-Restricted mode (opt) +##### Name resolving in Namespace-Restricted mode (opt) To restrict Mizu to one namespace while also resolving IPs, Mizu needs the following permissions in that namespace: diff --git a/docs/ISTIO.md b/docs/SERVICE_MESH.md similarity index 63% rename from docs/ISTIO.md rename to docs/SERVICE_MESH.md index bda897b65..006134ed3 100644 --- a/docs/ISTIO.md +++ b/docs/SERVICE_MESH.md @@ -1,37 +1,75 @@ ![Mizu: The API Traffic Viewer for Kubernetes](../assets/mizu-logo.svg) -# Istio mutual tls (mtls) with Mizu + +# Service mesh mutual tls (mtls) with Mizu + This document describe how Mizu tapper handles workloads configured with mtls, making the internal traffic between services in a cluster to be encrypted. -Besides Istio there are other service meshes that implement mtls. However, as of now Istio is the most used one, and this is why we are focusing on it. +The list of service meshes supported by Mizu include: -In order to create an Istio setup for development, follow those steps: -1. Deploy a sample application to a Kubernetes cluster, the sample application needs to make internal service to service calls -2. SSH to one of the nodes, and run `tcpdump` -3. Make sure you see the internal service to service calls in a plain text -4. Deploy Istio to the cluster - make sure it is attached to all pods of the sample application, and that it is configured with mtls (default) -5. Run `tcpdump` again, make sure you don't see the internal service to service calls in a plain text +- Istio +- Linkerd (beta) -## The connection between Istio and Envoy -In order to implement its service mesh capabilities, [Istio](https://istio.io) use an [Envoy](https://www.envoyproxy.io) sidecar in front of every pod in the cluster. The Envoy is responsible for the mtls communication, and that's why we are focusing on Envoy proxy. +## Installation + +### Optional: Allow source IP resolving in Istio + +When using Istio, in order to enable Mizu to reslove source IPs to names, turn on the [use_remote_address](https://www.envoyproxy.io/docs/envoy/latest/configuration/http/http_conn_man/headers#x-forwarded-for) option in Istio sidecar Envoys. +This setting causes the Envoys to append to `X-Forwarded-For` request header. Mizu in turn uses the `X-Forwarded-For` header to determine the true source IPs. +One way to turn on the `use_remote_address` HTTP connection manager option is by applying an `EnvoyFilter`: + +```yaml +apiVersion: networking.istio.io/v1alpha3 +kind: EnvoyFilter +metadata: + name: mizu-xff + namespace: istio-system # as defined in meshConfig resource. +spec: + configPatches: + - applyTo: NETWORK_FILTER + match: + context: SIDECAR_OUTBOUND # will match outbound listeners in all sidecars + patch: + operation: MERGE + value: + typed_config: + "@type": "type.googleapis.com/envoy.extensions.filters.network.http_connection_manager.v3.HttpConnectionManager" + use_remote_address: true +``` + +Save the above text to `mizu-xff-envoyfilter.yaml` and run `kubectl apply -f mizu-xff-envoyfilter.yaml`. + +With Istio, mizu does not resolve source IPs for non-HTTP traffic. + +## Implementation + +### Istio support + +#### The connection between Istio and Envoy + +In order to implement its service mesh capabilities, [Istio](https://istio.io) uses an [Envoy](https://www.envoyproxy.io) sidecar in front of every pod in the cluster. The Envoy is responsible for the mtls communication, and that's why we are focusing on Envoy proxy. In the future we might see more players in that field, then we'll have to either add support for each of them or go with a unified eBPF solution. -## Network namespaces +#### Network namespaces + A [linux network namespace](https://man7.org/linux/man-pages/man7/network_namespaces.7.html) is an isolation that limit the process view of the network. In the container world it used to isolate one container from another. In the Kubernetes world it used to isolate a pod from another. That means that two containers running on the same pod share the same network namespace. A container can reach a container in the same pod by accessing `localhost`. An Envoy proxy configured with mtls receives the inbound traffic directed to the pod, decrypts it and sends it via `localhost` to the target container. -## Tapping mtls traffic -In order for Mizu to be able to see the decrypted traffic it needs to listen on the same network namespace of the target pod. Multiple threads of the same process can have different network namespaces. +#### Tapping mtls traffic + +In order for Mizu to be able to see the decrypted traffic it needs to listen on the same network namespace of the target pod. Multiple threads of the same process can have different network namespaces. [gopacket](https://github.com/google/gopacket) uses [libpacp](https://github.com/the-tcpdump-group/libpcap) by default for capturing the traffic. Libpacap doesn't support network namespaces and we can't ask it to listen to traffic on a different namespace. However, we can change the network namespace of the calling thread and then start libpcap to see the traffic on a different namespace. -## Finding the network namespace of a running process +#### Finding the network namespace of a running process + The network namespace of a running process can be found in `/proc/PID/ns/net` link. Once we have this link, we can ask Linux to change the network namespace of a thread to this one. This mean that Mizu needs to have access to the `/proc` (procfs) of the running node. -## Finding the network namespace of a running pod +#### Finding the network namespace of a running pod + In order for Mizu to be able to listen to mtls traffic, it needs to get the PIDs of the the running pods, filter them according to the user filters and then start listen to their internal network namespace traffic. There is no official way in Kubernetes to get from pod to PID. The CRI implementation purposefully doesn't force a pod to be a processes on the host. It can be a Virtual Machine as well like [Kata containers](https://katacontainers.io) @@ -42,5 +80,16 @@ Once Mizu detects an Envoy process, it need to check whether this specific Envoy Istio sends an `INSTANCE_IP` environment variable to every Envoy proxy process. By examining the Envoy process's environment variables we can see whether it's relevant or not. Examining a process environment variables is done by reading the `/proc/PID/envion` file. -## Edge cases +#### Edge cases + The method we use to find Envoy processes and correlate them to the cluster IPs may be inaccurate in certain situations. If, for example, a user runs an Envoy process manually, and set its `INSTANCE_IP` environment variable to one of the `CLUSTER_IPS` the tapper gets, then Mizu will capture traffic for it. + +## Development + +In order to create a service mesh setup for development, follow those steps: + +1. Deploy a sample application to a Kubernetes cluster, the sample application needs to make internal service to service calls +2. SSH to one of the nodes, and run `tcpdump` +3. Make sure you see the internal service to service calls in a plain text +4. Deploy a service mesh (Istio, Linkerd) to the cluster - make sure it is attached to all pods of the sample application, and that it is configured with mtls (default) +5. Run `tcpdump` again, make sure you don't see the internal service to service calls in a plain text diff --git a/shared/consts.go b/shared/consts.go index 97dc362d7..a6c90a63b 100644 --- a/shared/consts.go +++ b/shared/consts.go @@ -14,6 +14,8 @@ const ( GoGCEnvVar = "GOGC" DefaultApiServerPort = 8899 LogLevelEnvVar = "LOG_LEVEL" - BasenineHost = "localhost" + BasenineHost = "127.0.0.1" BaseninePort = "9099" + BasenineImageRepo = "ghcr.io/up9inc/basenine" + BasenineImageTag = "v0.3.0" ) diff --git a/shared/kubernetes/consts.go b/shared/kubernetes/consts.go index 68acdd1ec..449bb5c6d 100644 --- a/shared/kubernetes/consts.go +++ b/shared/kubernetes/consts.go @@ -4,9 +4,9 @@ const ( MizuResourcesPrefix = "mizu-" ApiServerPodName = MizuResourcesPrefix + "api-server" ClusterRoleBindingName = MizuResourcesPrefix + "cluster-role-binding" - DaemonRoleBindingName = MizuResourcesPrefix + "cluster-role-binding-daemon" + DaemonRoleBindingName = MizuResourcesPrefix + "role-binding-daemon" ClusterRoleName = MizuResourcesPrefix + "cluster-role" - DaemonRoleName = MizuResourcesPrefix + "cluster-role-daemon" + DaemonRoleName = MizuResourcesPrefix + "role-daemon" K8sAllNamespaces = "" RoleBindingName = MizuResourcesPrefix + "role-binding" RoleName = MizuResourcesPrefix + "role" @@ -17,3 +17,12 @@ const ( PersistentVolumeClaimName = MizuResourcesPrefix + "volume-claim" MinKubernetesServerVersion = "1.16.0" ) + +const ( + LabelPrefixApp = "app.kubernetes.io/" + LabelManagedBy = LabelPrefixApp + "managed-by" + LabelCreatedBy = LabelPrefixApp + "created-by" + LabelValueMizu = "mizu" + LabelValueMizuCLI = "mizu-cli" + LabelValueMizuAgent = "mizu-agent" +) diff --git a/shared/kubernetes/mizuTapperSyncer.go b/shared/kubernetes/mizuTapperSyncer.go index 31dba52d1..3d7bfbe6e 100644 --- a/shared/kubernetes/mizuTapperSyncer.go +++ b/shared/kubernetes/mizuTapperSyncer.go @@ -18,7 +18,6 @@ const updateTappersDelay = 5 * time.Second type TappedPodChangeEvent struct { Added []core.Pod Removed []core.Pod - ExpectedTapperAmount int } // MizuTapperSyncer uses a k8s pod watch to update tapper daemonsets when targeted pods are removed or created @@ -45,7 +44,7 @@ type TapperSyncerConfig struct { IgnoredUserAgents []string MizuApiFilteringOptions api.TrafficFilteringOptions MizuServiceAccountExists bool - Istio bool + ServiceMesh bool } func CreateAndStartMizuTapperSyncer(ctx context.Context, kubernetesProvider *Provider, config TapperSyncerConfig, startTime time.Time) (*MizuTapperSyncer, error) { @@ -70,9 +69,53 @@ func CreateAndStartMizuTapperSyncer(ctx context.Context, kubernetesProvider *Pro go syncer.watchPodsForTapping() go syncer.watchTapperEvents() + go syncer.watchTapperPods() return syncer, nil } +func (tapperSyncer *MizuTapperSyncer) watchTapperPods() { + mizuResourceRegex := regexp.MustCompile(fmt.Sprintf("^%s.*", TapperPodName)) + podWatchHelper := NewPodWatchHelper(tapperSyncer.kubernetesProvider, mizuResourceRegex) + eventChan, errorChan := FilteredWatch(tapperSyncer.context, podWatchHelper, []string{tapperSyncer.config.MizuResourcesNamespace}, podWatchHelper) + + for { + select { + case wEvent, ok := <-eventChan: + if !ok { + eventChan = nil + continue + } + + pod, err := wEvent.ToPod() + if err != nil { + logger.Log.Debugf("[ERROR] parsing Mizu resource pod: %+v", err) + continue + } + + if tapperSyncer.startTime.After(pod.CreationTimestamp.Time) { + continue + } + + logger.Log.Debugf("Watching tapper pods loop, tapper: %v, node: %v, status: %v", pod.Name, pod.Spec.NodeName, pod.Status.Phase) + if pod.Spec.NodeName != "" { + tapperStatus := shared.TapperStatus{TapperName: pod.Name, NodeName: pod.Spec.NodeName, Status: string(pod.Status.Phase)} + tapperSyncer.TapperStatusChangedOut <- tapperStatus + } + + case err, ok := <-errorChan: + if !ok { + errorChan = nil + continue + } + logger.Log.Debugf("[ERROR] Watching tapper pods loop, error: %+v", err) + + case <-tapperSyncer.context.Done(): + logger.Log.Debugf("Watching tapper pods loop, ctx done") + return + } + } +} + func (tapperSyncer *MizuTapperSyncer) watchTapperEvents() { mizuResourceRegex := regexp.MustCompile(fmt.Sprintf("^%s.*", TapperPodName)) eventWatchHelper := NewEventWatchHelper(tapperSyncer.kubernetesProvider, mizuResourceRegex, "pod") @@ -88,7 +131,8 @@ func (tapperSyncer *MizuTapperSyncer) watchTapperEvents() { event, err := wEvent.ToEvent() if err != nil { - logger.Log.Errorf(fmt.Sprintf("Error parsing Mizu resource event: %+v", err)) + logger.Log.Debugf("[ERROR] parsing Mizu resource event: %+v", err) + continue } if tapperSyncer.startTime.After(event.CreationTimestamp.Time) { @@ -106,7 +150,7 @@ func (tapperSyncer *MizuTapperSyncer) watchTapperEvents() { pod, err1 := tapperSyncer.kubernetesProvider.GetPod(tapperSyncer.context, tapperSyncer.config.MizuResourcesNamespace, event.Regarding.Name) if err1 != nil { - logger.Log.Debugf(fmt.Sprintf("Failed to get tapper pod %s", event.Regarding.Name)) + logger.Log.Debugf(fmt.Sprintf("Couldn't get tapper pod %s", event.Regarding.Name)) continue } @@ -117,8 +161,8 @@ func (tapperSyncer *MizuTapperSyncer) watchTapperEvents() { nodeName = pod.Spec.Affinity.NodeAffinity.RequiredDuringSchedulingIgnoredDuringExecution.NodeSelectorTerms[0].MatchFields[0].Values[0] } - taperStatus := shared.TapperStatus{TapperName: pod.Name, NodeName: nodeName, Status: event.Reason} - tapperSyncer.TapperStatusChangedOut <- taperStatus + tapperStatus := shared.TapperStatus{TapperName: pod.Name, NodeName: nodeName, Status: string(pod.Status.Phase)} + tapperSyncer.TapperStatusChangedOut <- tapperStatus case err, ok := <-errorChan: if !ok { @@ -126,7 +170,7 @@ func (tapperSyncer *MizuTapperSyncer) watchTapperEvents() { continue } - logger.Log.Errorf("Watching tapper events loop, error: %+v", err) + logger.Log.Debugf("[ERROR] Watching tapper events loop, error: %+v", err) case <-tapperSyncer.context.Done(): logger.Log.Debugf("Watching tapper events loop, ctx done") @@ -243,7 +287,6 @@ func (tapperSyncer *MizuTapperSyncer) updateCurrentlyTappedPods() (err error, ch tapperSyncer.TapPodChangesOut <- TappedPodChangeEvent{ Added: addedPods, Removed: removedPods, - ExpectedTapperAmount: len(tapperSyncer.nodeToTappedPodMap), } return nil, true } @@ -273,7 +316,7 @@ func (tapperSyncer *MizuTapperSyncer) updateMizuTappers() error { tapperSyncer.config.ImagePullPolicy, tapperSyncer.config.MizuApiFilteringOptions, tapperSyncer.config.LogLevel, - tapperSyncer.config.Istio, + tapperSyncer.config.ServiceMesh, ); err != nil { return err } diff --git a/shared/kubernetes/provider.go b/shared/kubernetes/provider.go index a1a0195d1..1d5615b6c 100644 --- a/shared/kubernetes/provider.go +++ b/shared/kubernetes/provider.go @@ -43,6 +43,8 @@ type Provider struct { kubernetesConfig clientcmd.ClientConfig clientConfig restclient.Config Namespace string + managedBy string + createdBy string } const ( @@ -86,6 +88,8 @@ func NewProvider(kubeConfigPath string) (*Provider, error) { clientSet: clientSet, kubernetesConfig: kubernetesConfig, clientConfig: *restClientConfig, + managedBy: LabelValueMizu, + createdBy: LabelValueMizuCLI, }, nil } @@ -103,6 +107,8 @@ func NewProviderInCluster() (*Provider, error) { clientSet: clientSet, kubernetesConfig: nil, // not relevant in cluster clientConfig: *restClientConfig, + managedBy: LabelValueMizu, + createdBy: LabelValueMizuAgent, }, nil } @@ -158,6 +164,10 @@ func (provider *Provider) CreateNamespace(ctx context.Context, name string) (*co namespaceSpec := &core.Namespace{ ObjectMeta: metav1.ObjectMeta{ Name: name, + Labels: map[string]string{ + LabelManagedBy: provider.managedBy, + LabelCreatedBy: provider.createdBy, + }, }, } return provider.clientSet.CoreV1().Namespaces().Create(ctx, namespaceSpec, metav1.CreateOptions{}) @@ -176,7 +186,7 @@ type ApiServerOptions struct { LogLevel logging.Level } -func (provider *Provider) GetMizuApiServerPodObject(opts *ApiServerOptions, mountVolumeClaim bool, volumeClaimName string) (*core.Pod, error) { +func (provider *Provider) GetMizuApiServerPodObject(opts *ApiServerOptions, mountVolumeClaim bool, volumeClaimName string, createAuthContainer bool) (*core.Pod, error) { var marshaledSyncEntriesConfig []byte if opts.SyncEntriesConfig != nil { var err error @@ -240,41 +250,110 @@ func (provider *Provider) GetMizuApiServerPodObject(opts *ApiServerOptions, moun }) } - pod := &core.Pod{ - ObjectMeta: metav1.ObjectMeta{ - Name: opts.PodName, - Labels: map[string]string{"app": opts.PodName}, - }, - Spec: core.PodSpec{ - Containers: []core.Container{ + containers := []core.Container{ + { + Name: opts.PodName, + Image: opts.PodImage, + ImagePullPolicy: opts.ImagePullPolicy, + VolumeMounts: volumeMounts, + Command: command, + Env: []core.EnvVar{ { - Name: opts.PodName, - Image: opts.PodImage, - ImagePullPolicy: opts.ImagePullPolicy, - VolumeMounts: volumeMounts, - Command: command, - Env: []core.EnvVar{ - { - Name: shared.SyncEntriesConfigEnvVar, - Value: string(marshaledSyncEntriesConfig), - }, - { - Name: shared.LogLevelEnvVar, - Value: opts.LogLevel.String(), - }, - }, - Resources: core.ResourceRequirements{ - Limits: core.ResourceList{ - "cpu": cpuLimit, - "memory": memLimit, - }, - Requests: core.ResourceList{ - "cpu": cpuRequests, - "memory": memRequests, - }, - }, + Name: shared.SyncEntriesConfigEnvVar, + Value: string(marshaledSyncEntriesConfig), + }, + { + Name: shared.LogLevelEnvVar, + Value: opts.LogLevel.String(), }, }, + Resources: core.ResourceRequirements{ + Limits: core.ResourceList{ + "cpu": cpuLimit, + "memory": memLimit, + }, + Requests: core.ResourceList{ + "cpu": cpuRequests, + "memory": memRequests, + }, + }, + }, + { + Name: "basenine", + Image: fmt.Sprintf("%s:%s", shared.BasenineImageRepo, shared.BasenineImageTag), + ImagePullPolicy: opts.ImagePullPolicy, + VolumeMounts: volumeMounts, + ReadinessProbe: &core.Probe{ + FailureThreshold: 3, + Handler: core.Handler{ + TCPSocket: &core.TCPSocketAction{ + Port: intstr.Parse(shared.BaseninePort), + }, + }, + PeriodSeconds: 1, + SuccessThreshold: 1, + TimeoutSeconds: 1, + }, + Resources: core.ResourceRequirements{ + Limits: core.ResourceList{ + "cpu": cpuLimit, + "memory": memLimit, + }, + Requests: core.ResourceList{ + "cpu": cpuRequests, + "memory": memRequests, + }, + }, + Command: []string{"/basenine"}, + Args: []string{"-addr", "0.0.0.0", "-port", shared.BaseninePort, "-persistent"}, + WorkingDir: shared.DataDirPath, + }, + } + + if createAuthContainer { + containers = append(containers, core.Container{ + Name: "kratos", + Image: "gcr.io/up9-docker-hub/mizu-kratos/stable:0.0.0", + ImagePullPolicy: opts.ImagePullPolicy, + VolumeMounts: volumeMounts, + ReadinessProbe: &core.Probe{ + FailureThreshold: 3, + Handler: core.Handler{ + HTTPGet: &core.HTTPGetAction{ + Path: "/health/ready", + Port: intstr.FromInt(4433), + Scheme: core.URISchemeHTTP, + }, + }, + PeriodSeconds: 1, + SuccessThreshold: 1, + TimeoutSeconds: 1, + }, + Resources: core.ResourceRequirements{ + Limits: core.ResourceList{ + "cpu": cpuLimit, + "memory": memLimit, + }, + Requests: core.ResourceList{ + "cpu": cpuRequests, + "memory": memRequests, + }, + }, + }) + + } + + pod := &core.Pod{ + ObjectMeta: metav1.ObjectMeta{ + Name: opts.PodName, + Labels: map[string]string{ + "app": opts.PodName, + LabelManagedBy: provider.managedBy, + LabelCreatedBy: provider.createdBy, + }, + }, + Spec: core.PodSpec{ + Containers: containers, Volumes: volumes, DNSPolicy: core.DNSClusterFirstWithHostNet, TerminationGracePeriodSeconds: new(int64), @@ -303,6 +382,10 @@ func (provider *Provider) CreateDeployment(ctx context.Context, namespace string deployment := &v1.Deployment{ ObjectMeta: metav1.ObjectMeta{ Name: deploymentName, + Labels: map[string]string{ + LabelManagedBy: provider.managedBy, + LabelCreatedBy: provider.createdBy, + }, }, Spec: v1.DeploymentSpec{ Selector: &metav1.LabelSelector{ @@ -319,9 +402,13 @@ func (provider *Provider) CreateService(ctx context.Context, namespace string, s service := core.Service{ ObjectMeta: metav1.ObjectMeta{ Name: serviceName, + Labels: map[string]string{ + LabelManagedBy: provider.managedBy, + LabelCreatedBy: provider.createdBy, + }, }, Spec: core.ServiceSpec{ - Ports: []core.ServicePort{{TargetPort: intstr.FromInt(shared.DefaultApiServerPort), Port: 80}}, + Ports: []core.ServicePort{{TargetPort: intstr.FromInt(shared.DefaultApiServerPort), Port: 80, Name: "api"}}, Type: core.ServiceTypeClusterIP, Selector: map[string]string{"app": appLabelValue}, }, @@ -347,30 +434,42 @@ func (provider *Provider) doesResourceExist(resource interface{}, err error) (bo return resource != nil, nil } -func (provider *Provider) CreateMizuRBAC(ctx context.Context, namespace string, serviceAccountName string, clusterRoleName string, clusterRoleBindingName string, version string) error { +func (provider *Provider) CreateMizuRBAC(ctx context.Context, namespace string, serviceAccountName string, clusterRoleName string, clusterRoleBindingName string, version string, resources []string) error { serviceAccount := &core.ServiceAccount{ ObjectMeta: metav1.ObjectMeta{ - Name: serviceAccountName, - Labels: map[string]string{"mizu-cli-version": version}, + Name: serviceAccountName, + Labels: map[string]string{ + "mizu-cli-version": version, + LabelManagedBy: provider.managedBy, + LabelCreatedBy: provider.createdBy, + }, }, } clusterRole := &rbac.ClusterRole{ ObjectMeta: metav1.ObjectMeta{ - Name: clusterRoleName, - Labels: map[string]string{"mizu-cli-version": version}, + Name: clusterRoleName, + Labels: map[string]string{ + "mizu-cli-version": version, + LabelManagedBy: provider.managedBy, + LabelCreatedBy: provider.createdBy, + }, }, Rules: []rbac.PolicyRule{ { APIGroups: []string{"", "extensions", "apps"}, - Resources: []string{"pods", "services", "endpoints"}, + Resources: resources, Verbs: []string{"list", "get", "watch"}, }, }, } clusterRoleBinding := &rbac.ClusterRoleBinding{ ObjectMeta: metav1.ObjectMeta{ - Name: clusterRoleBindingName, - Labels: map[string]string{"mizu-cli-version": version}, + Name: clusterRoleBindingName, + Labels: map[string]string{ + "mizu-cli-version": version, + LabelManagedBy: provider.managedBy, + LabelCreatedBy: provider.createdBy, + }, }, RoleRef: rbac.RoleRef{ Name: clusterRoleName, @@ -403,14 +502,22 @@ func (provider *Provider) CreateMizuRBAC(ctx context.Context, namespace string, func (provider *Provider) CreateMizuRBACNamespaceRestricted(ctx context.Context, namespace string, serviceAccountName string, roleName string, roleBindingName string, version string) error { serviceAccount := &core.ServiceAccount{ ObjectMeta: metav1.ObjectMeta{ - Name: serviceAccountName, - Labels: map[string]string{"mizu-cli-version": version}, + Name: serviceAccountName, + Labels: map[string]string{ + "mizu-cli-version": version, + LabelManagedBy: provider.managedBy, + LabelCreatedBy: provider.createdBy, + }, }, } role := &rbac.Role{ ObjectMeta: metav1.ObjectMeta{ - Name: roleName, - Labels: map[string]string{"mizu-cli-version": version}, + Name: roleName, + Labels: map[string]string{ + "mizu-cli-version": version, + LabelManagedBy: provider.managedBy, + LabelCreatedBy: provider.createdBy, + }, }, Rules: []rbac.PolicyRule{ { @@ -422,8 +529,12 @@ func (provider *Provider) CreateMizuRBACNamespaceRestricted(ctx context.Context, } roleBinding := &rbac.RoleBinding{ ObjectMeta: metav1.ObjectMeta{ - Name: roleBindingName, - Labels: map[string]string{"mizu-cli-version": version}, + Name: roleBindingName, + Labels: map[string]string{ + "mizu-cli-version": version, + LabelManagedBy: provider.managedBy, + LabelCreatedBy: provider.createdBy, + }, }, RoleRef: rbac.RoleRef{ Name: roleName, @@ -456,8 +567,12 @@ func (provider *Provider) CreateMizuRBACNamespaceRestricted(ctx context.Context, func (provider *Provider) CreateDaemonsetRBAC(ctx context.Context, namespace string, serviceAccountName string, roleName string, roleBindingName string, version string) error { role := &rbac.Role{ ObjectMeta: metav1.ObjectMeta{ - Name: roleName, - Labels: map[string]string{"mizu-cli-version": version}, + Name: roleName, + Labels: map[string]string{ + "mizu-cli-version": version, + LabelManagedBy: provider.managedBy, + LabelCreatedBy: provider.createdBy, + }, }, Rules: []rbac.PolicyRule{ { @@ -474,8 +589,12 @@ func (provider *Provider) CreateDaemonsetRBAC(ctx context.Context, namespace str } roleBinding := &rbac.RoleBinding{ ObjectMeta: metav1.ObjectMeta{ - Name: roleBindingName, - Labels: map[string]string{"mizu-cli-version": version}, + Name: roleBindingName, + Labels: map[string]string{ + "mizu-cli-version": version, + LabelManagedBy: provider.managedBy, + LabelCreatedBy: provider.createdBy, + }, }, RoleRef: rbac.RoleRef{ Name: roleName, @@ -588,6 +707,10 @@ func (provider *Provider) CreateConfigMap(ctx context.Context, namespace string, }, ObjectMeta: metav1.ObjectMeta{ Name: configMapName, + Labels: map[string]string{ + LabelManagedBy: provider.managedBy, + LabelCreatedBy: provider.createdBy, + }, }, Data: configMapData, } @@ -597,7 +720,7 @@ func (provider *Provider) CreateConfigMap(ctx context.Context, namespace string, return nil } -func (provider *Provider) ApplyMizuTapperDaemonSet(ctx context.Context, namespace string, daemonSetName string, podImage string, tapperPodName string, apiServerPodIp string, nodeToTappedPodMap map[string][]core.Pod, serviceAccountName string, resources shared.Resources, imagePullPolicy core.PullPolicy, mizuApiFilteringOptions api.TrafficFilteringOptions, logLevel logging.Level, istio bool) error { +func (provider *Provider) ApplyMizuTapperDaemonSet(ctx context.Context, namespace string, daemonSetName string, podImage string, tapperPodName string, apiServerPodIp string, nodeToTappedPodMap map[string][]core.Pod, serviceAccountName string, resources shared.Resources, imagePullPolicy core.PullPolicy, mizuApiFilteringOptions api.TrafficFilteringOptions, logLevel logging.Level, serviceMesh bool) error { logger.Log.Debugf("Applying %d tapper daemon sets, ns: %s, daemonSetName: %s, podImage: %s, tapperPodName: %s", len(nodeToTappedPodMap), namespace, daemonSetName, podImage, tapperPodName) if len(nodeToTappedPodMap) == 0 { @@ -622,8 +745,8 @@ func (provider *Provider) ApplyMizuTapperDaemonSet(ctx context.Context, namespac "--nodefrag", } - if istio { - mizuCmd = append(mizuCmd, "--procfs", procfsMountPath, "--istio") + if serviceMesh { + mizuCmd = append(mizuCmd, "--procfs", procfsMountPath, "--servicemesh") } agentContainer := applyconfcore.Container() @@ -633,7 +756,7 @@ func (provider *Provider) ApplyMizuTapperDaemonSet(ctx context.Context, namespac caps := applyconfcore.Capabilities().WithDrop("ALL").WithAdd("NET_RAW").WithAdd("NET_ADMIN") - if istio { + if serviceMesh { caps = caps.WithAdd("SYS_ADMIN") // for reading /proc/PID/net/ns caps = caps.WithAdd("SYS_PTRACE") // for setting netns to other process caps = caps.WithAdd("DAC_OVERRIDE") // for reading /proc/PID/environ @@ -746,14 +869,23 @@ func (provider *Provider) ApplyMizuTapperDaemonSet(ctx context.Context, namespac podSpec.WithVolumes(&configMapVolume, procfsVolume) podTemplate := applyconfcore.PodTemplateSpec() - podTemplate.WithLabels(map[string]string{"app": tapperPodName}) + podTemplate.WithLabels(map[string]string{ + "app": tapperPodName, + LabelManagedBy: provider.managedBy, + LabelCreatedBy: provider.createdBy, + }) podTemplate.WithSpec(podSpec) labelSelector := applyconfmeta.LabelSelector() labelSelector.WithMatchLabels(map[string]string{"app": tapperPodName}) daemonSet := applyconfapp.DaemonSet(daemonSetName, namespace) - daemonSet.WithSpec(applyconfapp.DaemonSetSpec().WithSelector(labelSelector).WithTemplate(podTemplate)) + daemonSet. + WithLabels(map[string]string{ + LabelManagedBy: provider.managedBy, + LabelCreatedBy: provider.createdBy, + }). + WithSpec(applyconfapp.DaemonSetSpec().WithSelector(labelSelector).WithTemplate(podTemplate)) _, err = provider.clientSet.AppsV1().DaemonSets(namespace).Apply(ctx, daemonSet, metav1.ApplyOptions{FieldManager: fieldManagerName}) return err @@ -802,8 +934,17 @@ func (provider *Provider) ListAllRunningPodsMatchingRegex(ctx context.Context, r return matchingPods, nil } -func (provider *Provider) GetPodLogs(ctx context.Context, namespace string, podName string) (string, error) { - podLogOpts := core.PodLogOptions{} +func (provider *Provider) ListAllNamespaces(ctx context.Context) ([]core.Namespace, error) { + namespaces, err := provider.clientSet.CoreV1().Namespaces().List(ctx, metav1.ListOptions{}) + if err != nil { + return nil, err + } + + return namespaces.Items, err +} + +func (provider *Provider) GetPodLogs(ctx context.Context, namespace string, podName string, containerName string) (string, error) { + podLogOpts := core.PodLogOptions{Container: containerName} req := provider.clientSet.CoreV1().Pods(namespace).GetLogs(podName, &podLogOpts) podLogs, err := req.Stream(ctx) if err != nil { @@ -827,6 +968,41 @@ func (provider *Provider) GetNamespaceEvents(ctx context.Context, namespace stri return eventList.String(), nil } +func (provider *Provider) ListManagedServiceAccounts(ctx context.Context, namespace string) (*core.ServiceAccountList, error) { + listOptions := metav1.ListOptions{ + LabelSelector: fmt.Sprintf("%s=%s", LabelManagedBy, provider.managedBy), + } + return provider.clientSet.CoreV1().ServiceAccounts(namespace).List(ctx, listOptions) +} + +func (provider *Provider) ListManagedClusterRoles(ctx context.Context) (*rbac.ClusterRoleList, error) { + listOptions := metav1.ListOptions{ + LabelSelector: fmt.Sprintf("%s=%s", LabelManagedBy, provider.managedBy), + } + return provider.clientSet.RbacV1().ClusterRoles().List(ctx, listOptions) +} + +func (provider *Provider) ListManagedClusterRoleBindings(ctx context.Context) (*rbac.ClusterRoleBindingList, error) { + listOptions := metav1.ListOptions{ + LabelSelector: fmt.Sprintf("%s=%s", LabelManagedBy, provider.managedBy), + } + return provider.clientSet.RbacV1().ClusterRoleBindings().List(ctx, listOptions) +} + +func (provider *Provider) ListManagedRoles(ctx context.Context, namespace string) (*rbac.RoleList, error) { + listOptions := metav1.ListOptions{ + LabelSelector: fmt.Sprintf("%s=%s", LabelManagedBy, provider.managedBy), + } + return provider.clientSet.RbacV1().Roles(namespace).List(ctx, listOptions) +} + +func (provider *Provider) ListManagedRoleBindings(ctx context.Context, namespace string) (*rbac.RoleBindingList, error) { + listOptions := metav1.ListOptions{ + LabelSelector: fmt.Sprintf("%s=%s", LabelManagedBy, provider.managedBy), + } + return provider.clientSet.RbacV1().RoleBindings(namespace).List(ctx, listOptions) +} + func (provider *Provider) IsDefaultStorageProviderAvailable(ctx context.Context) (bool, error) { storageClassList, err := provider.clientSet.StorageV1().StorageClasses().List(ctx, metav1.ListOptions{}) if err != nil { @@ -845,6 +1021,10 @@ func (provider *Provider) CreatePersistentVolumeClaim(ctx context.Context, names volumeClaim := &core.PersistentVolumeClaim{ ObjectMeta: metav1.ObjectMeta{ Name: volumeClaimName, + Labels: map[string]string{ + LabelManagedBy: provider.managedBy, + LabelCreatedBy: provider.createdBy, + }, }, Spec: core.PersistentVolumeClaimSpec{ AccessModes: []core.PersistentVolumeAccessMode{core.ReadWriteOnce}, diff --git a/shared/kubernetes/proxy.go b/shared/kubernetes/proxy.go index 138bce331..4cb425e96 100644 --- a/shared/kubernetes/proxy.go +++ b/shared/kubernetes/proxy.go @@ -31,7 +31,6 @@ func StartProxy(kubernetesProvider *Provider, proxyHost string, mizuPort uint16, mux.Handle(k8sProxyApiPrefix, getRerouteHttpHandlerMizuAPI(proxyHandler, mizuNamespace, mizuServiceName)) mux.Handle("/static/", getRerouteHttpHandlerMizuStatic(proxyHandler, mizuNamespace, mizuServiceName)) - l, err := net.Listen("tcp", fmt.Sprintf("%s:%d", proxyHost, int(mizuPort))) if err != nil { return err diff --git a/shared/kubernetes/utils.go b/shared/kubernetes/utils.go index 39871e269..d8488989b 100644 --- a/shared/kubernetes/utils.go +++ b/shared/kubernetes/utils.go @@ -73,10 +73,10 @@ func getMissingPods(pods1 []core.Pod, pods2 []core.Pod) []core.Pod { return missingPods } -func GetPodInfosForPods(pods []core.Pod) []shared.PodInfo { - podInfos := make([]shared.PodInfo, 0) +func GetPodInfosForPods(pods []core.Pod) []*shared.PodInfo { + podInfos := make([]*shared.PodInfo, 0) for _, pod := range pods { - podInfos = append(podInfos, shared.PodInfo{Name: pod.Name, Namespace: pod.Namespace, NodeName: pod.Spec.NodeName}) + podInfos = append(podInfos, &shared.PodInfo{Name: pod.Name, Namespace: pod.Namespace, NodeName: pod.Spec.NodeName}) } return podInfos } diff --git a/shared/models.go b/shared/models.go index ef0cb2949..912061a01 100644 --- a/shared/models.go +++ b/shared/models.go @@ -1,12 +1,13 @@ package shared import ( - "github.com/op/go-logging" - "github.com/up9inc/mizu/shared/logger" - "github.com/up9inc/mizu/tap/api" "io/ioutil" "strings" + "github.com/op/go-logging" + "github.com/up9inc/mizu/shared/logger" + v1 "k8s.io/api/core/v1" + "gopkg.in/yaml.v3" ) @@ -21,6 +22,7 @@ const ( WebSocketMessageTypeToast WebSocketMessageType = "toast" WebSocketMessageTypeQueryMetadata WebSocketMessageType = "queryMetadata" WebSocketMessageTypeStartTime WebSocketMessageType = "startTime" + WebSocketMessageTypeTapConfig WebSocketMessageType = "tapConfig" ) type Resources struct { @@ -31,19 +33,16 @@ type Resources struct { } type MizuAgentConfig struct { - TapTargetRegex api.SerializableRegexp `json:"tapTargetRegex"` - MaxDBSizeBytes int64 `json:"maxDBSizeBytes"` - DaemonMode bool `json:"daemonMode"` - TargetNamespaces []string `json:"targetNamespaces"` - AgentImage string `json:"agentImage"` - PullPolicy string `json:"pullPolicy"` - LogLevel logging.Level `json:"logLevel"` - IgnoredUserAgents []string `json:"ignoredUserAgents"` - TapperResources Resources `json:"tapperResources"` - MizuResourcesNamespace string `json:"mizuResourceNamespace"` - MizuApiFilteringOptions api.TrafficFilteringOptions `json:"mizuApiFilteringOptions"` - AgentDatabasePath string `json:"agentDatabasePath"` - Istio bool `json:"istio"` + MaxDBSizeBytes int64 `json:"maxDBSizeBytes"` + AgentImage string `json:"agentImage"` + PullPolicy string `json:"pullPolicy"` + LogLevel logging.Level `json:"logLevel"` + TapperResources Resources `json:"tapperResources"` + MizuResourcesNamespace string `json:"mizuResourceNamespace"` + AgentDatabasePath string `json:"agentDatabasePath"` + StandaloneMode bool `json:"standaloneMode"` + ServiceMap bool `json:"serviceMap"` + OAS bool `json:"oas"` } type WebSocketMessageMetadata struct { @@ -67,6 +66,11 @@ type WebSocketStatusMessage struct { TappingStatus []TappedPodStatus `json:"tappingStatus"` } +type WebSocketTapConfigMessage struct { + *WebSocketMessageMetadata + TapTargets []v1.Pod `json:"pods"` +} + type TapperStatus struct { TapperName string `json:"tapperName"` NodeName string `json:"nodeName"` @@ -79,10 +83,6 @@ type TappedPodStatus struct { IsTapped bool `json:"isTapped"` } -type TapStatus struct { - Pods []PodInfo `json:"pods"` -} - type PodInfo struct { Namespace string `json:"namespace"` Name string `json:"name"` @@ -122,9 +122,9 @@ func CreateWebSocketMessageTypeAnalyzeStatus(analyzeStatus AnalyzeStatus) WebSoc } type HealthResponse struct { - TapStatus TapStatus `json:"tapStatus"` - TappersCount int `json:"tappersCount"` - TappersStatus []TapperStatus `json:"tappersStatus"` + TappedPods []*PodInfo `json:"tappedPods"` + ConnectedTappersCount int `json:"connectedTappersCount"` + TappersStatus []*TapperStatus `json:"tappersStatus"` } type VersionResponse struct { diff --git a/tap/api/api.go b/tap/api/api.go index 3b1f9834a..c90405f3b 100644 --- a/tap/api/api.go +++ b/tap/api/api.go @@ -81,7 +81,7 @@ type OutputChannelItem struct { Timestamp int64 ConnectionInfo *ConnectionInfo Pair *RequestResponsePair - Summary *BaseEntryDetails + Summary *BaseEntry } type SuperTimer struct { @@ -97,8 +97,7 @@ type Dissector interface { Register(*Extension) Ping() Dissect(b *bufio.Reader, isClient bool, tcpID *TcpID, counterPair *CounterPair, superTimer *SuperTimer, superIdentifier *SuperIdentifier, emitter Emitter, options *TrafficFilteringOptions) error - Analyze(item *OutputChannelItem, resolvedSource string, resolvedDestination string) *MizuEntry - Summarize(entry *MizuEntry) *BaseEntryDetails + Analyze(item *OutputChannelItem, resolvedSource string, resolvedDestination string) *Entry Represent(request map[string]interface{}, response map[string]interface{}) (object []byte, bodySize int64, err error) Macros() map[string]string } @@ -117,7 +116,7 @@ func (e *Emitting) Emit(item *OutputChannelItem) { e.AppStats.IncMatchedPairs() } -type MizuEntry struct { +type Entry struct { Id uint `json:"id"` Protocol Protocol `json:"proto"` Source *TCP `json:"src"` @@ -127,13 +126,13 @@ type MizuEntry struct { StartTime time.Time `json:"startTime"` Request map[string]interface{} `json:"request"` Response map[string]interface{} `json:"response"` - Base *BaseEntryDetails `json:"base"` Summary string `json:"summary"` Method string `json:"method"` Status int `json:"status"` ElapsedTime int64 `json:"elapsedTime"` Path string `json:"path"` IsOutgoing bool `json:"isOutgoing,omitempty"` + Rules ApplicableRules `json:"rules,omitempty"` ContractStatus ContractStatus `json:"contractStatus,omitempty"` ContractRequestReason string `json:"contractRequestReason,omitempty"` ContractResponseReason string `json:"contractResponseReason,omitempty"` @@ -141,22 +140,22 @@ type MizuEntry struct { HTTPPair string `json:"httpPair,omitempty"` } -type MizuEntryWrapper struct { +type EntryWrapper struct { Protocol Protocol `json:"protocol"` Representation string `json:"representation"` BodySize int64 `json:"bodySize"` - Data MizuEntry `json:"data"` + Data *Entry `json:"data"` Rules []map[string]interface{} `json:"rulesMatched,omitempty"` IsRulesEnabled bool `json:"isRulesEnabled"` } -type BaseEntryDetails struct { +type BaseEntry struct { Id uint `json:"id"` - Protocol Protocol `json:"protocol,omitempty"` + Protocol Protocol `json:"proto,omitempty"` Url string `json:"url,omitempty"` Path string `json:"path,omitempty"` Summary string `json:"summary,omitempty"` - StatusCode int `json:"statusCode"` + StatusCode int `json:"status"` Method string `json:"method,omitempty"` Timestamp int64 `json:"timestamp,omitempty"` Source *TCP `json:"src"` @@ -182,11 +181,29 @@ type Contract struct { Content string `json:"content"` } -type DataUnmarshaler interface { - UnmarshalData(*MizuEntry) error +func Summarize(entry *Entry) *BaseEntry { + return &BaseEntry{ + Id: entry.Id, + Protocol: entry.Protocol, + Path: entry.Path, + Summary: entry.Summary, + StatusCode: entry.Status, + Method: entry.Method, + Timestamp: entry.Timestamp, + Source: entry.Source, + Destination: entry.Destination, + IsOutgoing: entry.IsOutgoing, + Latency: entry.ElapsedTime, + Rules: entry.Rules, + ContractStatus: entry.ContractStatus, + } } -func (bed *BaseEntryDetails) UnmarshalData(entry *MizuEntry) error { +type DataUnmarshaler interface { + UnmarshalData(*Entry) error +} + +func (bed *BaseEntry) UnmarshalData(entry *Entry) error { bed.Protocol = entry.Protocol bed.Id = entry.Id bed.Path = entry.Path diff --git a/tap/extensions/amqp/main.go b/tap/extensions/amqp/main.go index 01bd2fac6..8de968b3c 100644 --- a/tap/extensions/amqp/main.go +++ b/tap/extensions/amqp/main.go @@ -223,7 +223,7 @@ func (d dissecting) Dissect(b *bufio.Reader, isClient bool, tcpID *api.TcpID, co } } -func (d dissecting) Analyze(item *api.OutputChannelItem, resolvedSource string, resolvedDestination string) *api.MizuEntry { +func (d dissecting) Analyze(item *api.OutputChannelItem, resolvedSource string, resolvedDestination string) *api.Entry { request := item.Pair.Request.Payload.(map[string]interface{}) reqDetails := request["details"].(map[string]interface{}) @@ -261,7 +261,7 @@ func (d dissecting) Analyze(item *api.OutputChannelItem, resolvedSource string, request["url"] = summary reqDetails["method"] = request["method"] - return &api.MizuEntry{ + return &api.Entry{ Protocol: protocol, Source: &api.TCP{ Name: resolvedSource, @@ -286,25 +286,6 @@ func (d dissecting) Analyze(item *api.OutputChannelItem, resolvedSource string, } -func (d dissecting) Summarize(entry *api.MizuEntry) *api.BaseEntryDetails { - return &api.BaseEntryDetails{ - Id: entry.Id, - Protocol: protocol, - Summary: entry.Summary, - StatusCode: entry.Status, - Method: entry.Method, - Timestamp: entry.Timestamp, - Source: entry.Source, - Destination: entry.Destination, - IsOutgoing: entry.IsOutgoing, - Latency: entry.ElapsedTime, - Rules: api.ApplicableRules{ - Latency: 0, - Status: false, - }, - } -} - func (d dissecting) Represent(request map[string]interface{}, response map[string]interface{}) (object []byte, bodySize int64, err error) { bodySize = 0 representation := make(map[string]interface{}, 0) diff --git a/tap/extensions/http/handlers.go b/tap/extensions/http/handlers.go index ffcbe8c7f..9b34d63f1 100644 --- a/tap/extensions/http/handlers.go +++ b/tap/extensions/http/handlers.go @@ -21,9 +21,32 @@ func filterAndEmit(item *api.OutputChannelItem, emitter api.Emitter, options *ap FilterSensitiveData(item, options) } + replaceForwardedFor(item) + emitter.Emit(item) } +func replaceForwardedFor(item *api.OutputChannelItem) { + if item.Protocol.Name != "http" { + return + } + + request := item.Pair.Request.Payload.(api.HTTPPayload).Data.(*http.Request) + + forwardedFor := request.Header.Get("X-Forwarded-For") + if forwardedFor == "" { + return + } + + ips := strings.Split(forwardedFor, ",") + lastIP := strings.TrimSpace(ips[0]) + + item.ConnectionInfo.ClientIP = lastIP + // Erase the port field. Because the proxy terminates the connection from the client, the port that we see here + // is not the source port on the client side. + item.ConnectionInfo.ClientPort = "" +} + func handleHTTP2Stream(http2Assembler *Http2Assembler, tcpID *api.TcpID, superTimer *api.SuperTimer, emitter api.Emitter, options *api.TrafficFilteringOptions) error { streamID, messageHTTP1, isGrpc, err := http2Assembler.readMessage() if err != nil { diff --git a/tap/extensions/http/helpers.go b/tap/extensions/http/helpers.go index 9348ea3cd..9bf15fca1 100644 --- a/tap/extensions/http/helpers.go +++ b/tap/extensions/http/helpers.go @@ -3,14 +3,15 @@ package main import ( "encoding/json" "fmt" + "strconv" "github.com/up9inc/mizu/tap/api" ) func mapSliceRebuildAsMap(mapSlice []interface{}) (newMap map[string]interface{}) { newMap = make(map[string]interface{}) - for _, header := range mapSlice { - h := header.(map[string]interface{}) + for _, item := range mapSlice { + h := item.(map[string]interface{}) newMap[h["name"].(string)] = h["value"] } @@ -19,8 +20,8 @@ func mapSliceRebuildAsMap(mapSlice []interface{}) (newMap map[string]interface{} func representMapSliceAsTable(mapSlice []interface{}, selectorPrefix string) (representation string) { var table []api.TableData - for _, header := range mapSlice { - h := header.(map[string]interface{}) + for _, item := range mapSlice { + h := item.(map[string]interface{}) selector := fmt.Sprintf("%s[\"%s\"]", selectorPrefix, h["name"].(string)) table = append(table, api.TableData{ Name: h["name"].(string), @@ -33,3 +34,19 @@ func representMapSliceAsTable(mapSlice []interface{}, selectorPrefix string) (re representation = string(obj) return } + +func representSliceAsTable(slice []interface{}, selectorPrefix string) (representation string) { + var table []api.TableData + for i, item := range slice { + selector := fmt.Sprintf("%s[%d]", selectorPrefix, i) + table = append(table, api.TableData{ + Name: strconv.Itoa(i), + Value: item.(interface{}), + Selector: selector, + }) + } + + obj, _ := json.Marshal(table) + representation = string(obj) + return +} diff --git a/tap/extensions/http/main.go b/tap/extensions/http/main.go index 26cf40c8c..cf6a905f5 100644 --- a/tap/extensions/http/main.go +++ b/tap/extensions/http/main.go @@ -9,6 +9,7 @@ import ( "log" "net/http" "net/url" + "strings" "time" "github.com/up9inc/mizu/tap/api" @@ -157,7 +158,7 @@ func (d dissecting) Dissect(b *bufio.Reader, isClient bool, tcpID *api.TcpID, co return nil } -func (d dissecting) Analyze(item *api.OutputChannelItem, resolvedSource string, resolvedDestination string) *api.MizuEntry { +func (d dissecting) Analyze(item *api.OutputChannelItem, resolvedSource string, resolvedDestination string) *api.Entry { var host, authority, path string request := item.Pair.Request.Payload.(map[string]interface{}) @@ -209,6 +210,7 @@ func (d dissecting) Analyze(item *api.OutputChannelItem, resolvedSource string, request["url"] = reqDetails["url"].(string) reqDetails["targetUri"] = reqDetails["url"] reqDetails["path"] = path + reqDetails["pathSegments"] = strings.Split(path, "/")[1:] reqDetails["summary"] = path // Rearrange the maps for the querying @@ -241,7 +243,7 @@ func (d dissecting) Analyze(item *api.OutputChannelItem, resolvedSource string, elapsedTime = 0 } httpPair, _ := json.Marshal(item.Pair) - return &api.MizuEntry{ + return &api.Entry{ Protocol: item.Protocol, Source: &api.TCP{ Name: resolvedSource, @@ -267,26 +269,6 @@ func (d dissecting) Analyze(item *api.OutputChannelItem, resolvedSource string, } } -func (d dissecting) Summarize(entry *api.MizuEntry) *api.BaseEntryDetails { - return &api.BaseEntryDetails{ - Id: entry.Id, - Protocol: entry.Protocol, - Path: entry.Path, - Summary: entry.Summary, - StatusCode: entry.Status, - Method: entry.Method, - Timestamp: entry.Timestamp, - Source: entry.Source, - Destination: entry.Destination, - IsOutgoing: entry.IsOutgoing, - Latency: entry.ElapsedTime, - Rules: api.ApplicableRules{ - Latency: 0, - Status: false, - }, - } -} - func representRequest(request map[string]interface{}) (repRequest []interface{}) { details, _ := json.Marshal([]api.TableData{ { @@ -316,6 +298,15 @@ func representRequest(request map[string]interface{}) (repRequest []interface{}) Data: string(details), }) + pathSegments := request["pathSegments"].([]interface{}) + if len(pathSegments) > 1 { + repRequest = append(repRequest, api.SectionData{ + Type: api.TABLE, + Title: "Path Segments", + Data: representSliceAsTable(pathSegments, `request.pathSegments`), + }) + } + repRequest = append(repRequest, api.SectionData{ Type: api.TABLE, Title: "Headers", diff --git a/tap/extensions/kafka/go.mod b/tap/extensions/kafka/go.mod index 113627f94..cdb75609a 100644 --- a/tap/extensions/kafka/go.mod +++ b/tap/extensions/kafka/go.mod @@ -3,6 +3,8 @@ module github.com/up9inc/mizu/tap/extensions/kafka go 1.16 require ( + github.com/fatih/camelcase v1.0.0 + github.com/ohler55/ojg v1.12.12 github.com/segmentio/kafka-go v0.4.17 github.com/up9inc/mizu/tap/api v0.0.0 ) diff --git a/tap/extensions/kafka/go.sum b/tap/extensions/kafka/go.sum index 70ec03308..e3d62474b 100644 --- a/tap/extensions/kafka/go.sum +++ b/tap/extensions/kafka/go.sum @@ -1,6 +1,8 @@ github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/eapache/go-xerial-snappy v0.0.0-20180814174437-776d5712da21 h1:YEetp8/yCZMuEPMUDHG0CW/brkkEp8mzqk2+ODEitlw= github.com/eapache/go-xerial-snappy v0.0.0-20180814174437-776d5712da21/go.mod h1:+020luEh2TKB4/GOp8oxxtq0Daoen/Cii55CzbTV6DU= +github.com/fatih/camelcase v1.0.0 h1:hxNvNX/xYBp0ovncs8WyWZrOrpBNub/JfaMvbURyft8= +github.com/fatih/camelcase v1.0.0/go.mod h1:yN2Sb0lFhZJUdVvtELVWefmrXpuZESvPmqwoZc+/fpc= github.com/frankban/quicktest v1.11.3 h1:8sXhOn0uLys67V8EsXLc6eszDs8VXWxL3iRvebPhedY= github.com/frankban/quicktest v1.11.3/go.mod h1:wRf/ReqHper53s+kmmSZizM8NamnL3IM0I9ntUbOk+k= github.com/golang/snappy v0.0.1 h1:Qgr9rKW7uDUkrbSmQeiDsGa8SjGyCOGtuasMWwvp2P4= @@ -16,6 +18,8 @@ github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfn github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= +github.com/ohler55/ojg v1.12.12 h1:hepbQFn7GHAecTPmwS3j5dCiOLsOpzPLvhiqnlAVAoE= +github.com/ohler55/ojg v1.12.12/go.mod h1:LBbIVRAgoFbYBXQhRhuEpaJIqq+goSO63/FQ+nyJU88= github.com/pierrec/lz4 v2.6.0+incompatible h1:Ix9yFKn1nSPBLFl/yZknTp8TU5G4Ps0JDmguYK6iH1A= github.com/pierrec/lz4 v2.6.0+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= diff --git a/tap/extensions/kafka/helpers.go b/tap/extensions/kafka/helpers.go index dffe30bd8..68264c077 100644 --- a/tap/extensions/kafka/helpers.go +++ b/tap/extensions/kafka/helpers.go @@ -3,8 +3,13 @@ package main import ( "encoding/json" "fmt" + "reflect" "strconv" + "strings" + "github.com/fatih/camelcase" + "github.com/ohler55/ojg/jp" + "github.com/ohler55/ojg/oj" "github.com/up9inc/mizu/tap/api" ) @@ -289,17 +294,12 @@ func representProduceRequest(data map[string]interface{}) []interface{} { rep = representRequestHeader(data, rep) payload := data["payload"].(map[string]interface{}) - topicData := "" - _topicData := payload["topicData"] - if _topicData != nil { - x, _ := json.Marshal(_topicData.([]interface{})) - topicData = string(x) - } + topicData := payload["topicData"] transactionalID := "" if payload["transactionalID"] != nil { transactionalID = payload["transactionalID"].(string) } - repPayload, _ := json.Marshal([]api.TableData{ + repTransactionDetails, _ := json.Marshal([]api.TableData{ { Name: "Transactional ID", Value: transactionalID, @@ -315,18 +315,73 @@ func representProduceRequest(data map[string]interface{}) []interface{} { Value: fmt.Sprintf("%d", int(payload["timeout"].(float64))), Selector: `request.payload.timeout`, }, - { - Name: "Topic Data", - Value: topicData, - Selector: `request.payload.topicData`, - }, }) rep = append(rep, api.SectionData{ Type: api.TABLE, - Title: "Payload", - Data: string(repPayload), + Title: "Transaction Details", + Data: string(repTransactionDetails), }) + if topicData != nil { + for _, _topic := range topicData.([]interface{}) { + topic := _topic.(map[string]interface{}) + topicName := topic["topic"].(string) + partitions := topic["partitions"].(map[string]interface{}) + partitionsJson, err := json.Marshal(partitions) + if err != nil { + return rep + } + + repPartitions, _ := json.Marshal([]api.TableData{ + { + Name: "Length", + Value: partitions["length"], + Selector: `request.payload.transactionalID`, + }, + }) + rep = append(rep, api.SectionData{ + Type: api.TABLE, + Title: fmt.Sprintf("Partitions (topic: %s)", topicName), + Data: string(repPartitions), + }) + + obj, err := oj.ParseString(string(partitionsJson)) + recordBatchPath, err := jp.ParseString(`partitionData.records.recordBatch`) + recordBatchresults := recordBatchPath.Get(obj) + if len(recordBatchresults) > 0 { + rep = append(rep, api.SectionData{ + Type: api.TABLE, + Title: fmt.Sprintf("Record Batch (topic: %s)", topicName), + Data: representMapAsTable(recordBatchresults[0].(map[string]interface{}), `request.payload.topicData.partitions.partitionData.records.recordBatch`, []string{"record"}), + }) + } + + recordsPath, err := jp.ParseString(`partitionData.records.recordBatch.record`) + recordsResults := recordsPath.Get(obj) + if len(recordsResults) > 0 { + records := recordsResults[0].([]interface{}) + for i, _record := range records { + record := _record.(map[string]interface{}) + value := record["value"] + delete(record, "value") + + rep = append(rep, api.SectionData{ + Type: api.TABLE, + Title: fmt.Sprintf("Record [%d] Details (topic: %s)", i, topicName), + Data: representMapAsTable(record, fmt.Sprintf(`request.payload.topicData.partitions.partitionData.records.recordBatch.record[%d]`, i), []string{"value"}), + }) + + rep = append(rep, api.SectionData{ + Type: api.BODY, + Title: fmt.Sprintf("Record [%d] Value", i), + Data: value.(string), + Selector: fmt.Sprintf(`request.payload.topicData.partitions.partitionData.records.recordBatch.record[%d].value`, i), + }) + } + } + } + } + return rep } @@ -336,21 +391,12 @@ func representProduceResponse(data map[string]interface{}) []interface{} { rep = representResponseHeader(data, rep) payload := data["payload"].(map[string]interface{}) - responses := "" - if payload["responses"] != nil { - _responses, _ := json.Marshal(payload["responses"].([]interface{})) - responses = string(_responses) - } + responses := payload["responses"] throttleTimeMs := "" if payload["throttleTimeMs"] != nil { throttleTimeMs = fmt.Sprintf("%d", int(payload["throttleTimeMs"].(float64))) } repPayload, _ := json.Marshal([]api.TableData{ - { - Name: "Responses", - Value: string(responses), - Selector: `response.payload.responses`, - }, { Name: "Throttle Time (ms)", Value: throttleTimeMs, @@ -359,10 +405,31 @@ func representProduceResponse(data map[string]interface{}) []interface{} { }) rep = append(rep, api.SectionData{ Type: api.TABLE, - Title: "Payload", + Title: "Transaction Details", Data: string(repPayload), }) + if responses != nil { + for i, _response := range responses.([]interface{}) { + response := _response.(map[string]interface{}) + + rep = append(rep, api.SectionData{ + Type: api.TABLE, + Title: fmt.Sprintf("Response [%d]", i), + Data: representMapAsTable(response, fmt.Sprintf(`response.payload.responses[%d]`, i), []string{"partitionResponses"}), + }) + + for j, _partitionResponse := range response["partitionResponses"].([]interface{}) { + partitionResponse := _partitionResponse.(map[string]interface{}) + rep = append(rep, api.SectionData{ + Type: api.TABLE, + Title: fmt.Sprintf("Response [%d] Partition Response [%d]", i, j), + Data: representMapAsTable(partitionResponse, fmt.Sprintf(`response.payload.responses[%d].partitionResponses[%d]`, i, j), []string{}), + }) + } + } + } + return rep } @@ -372,11 +439,7 @@ func representFetchRequest(data map[string]interface{}) []interface{} { rep = representRequestHeader(data, rep) payload := data["payload"].(map[string]interface{}) - topics := "" - if payload["topics"] != nil { - _topics, _ := json.Marshal(payload["topics"].([]interface{})) - topics = string(_topics) - } + topics := payload["topics"] replicaId := "" if payload["replicaId"] != nil { replicaId = fmt.Sprintf("%d", int(payload["replicaId"].(float64))) @@ -442,11 +505,6 @@ func representFetchRequest(data map[string]interface{}) []interface{} { Value: sessionEpoch, Selector: `request.payload.sessionEpoch`, }, - { - Name: "Topics", - Value: topics, - Selector: `request.payload.topics`, - }, { Name: "Forgotten Topics Data", Value: forgottenTopicsData, @@ -460,10 +518,26 @@ func representFetchRequest(data map[string]interface{}) []interface{} { }) rep = append(rep, api.SectionData{ Type: api.TABLE, - Title: "Payload", + Title: "Transaction Details", Data: string(repPayload), }) + if topics != nil { + for i, _topic := range topics.([]interface{}) { + topic := _topic.(map[string]interface{}) + topicName := topic["topic"].(string) + for j, _partition := range topic["partitions"].([]interface{}) { + partition := _partition.(map[string]interface{}) + + rep = append(rep, api.SectionData{ + Type: api.TABLE, + Title: fmt.Sprintf("Partition [%d] (topic: %s)", j, topicName), + Data: representMapAsTable(partition, fmt.Sprintf(`request.payload.topics[%d].partitions[%d]`, i, j), []string{}), + }) + } + } + } + return rep } @@ -473,11 +547,7 @@ func representFetchResponse(data map[string]interface{}) []interface{} { rep = representResponseHeader(data, rep) payload := data["payload"].(map[string]interface{}) - responses := "" - if payload["responses"] != nil { - _responses, _ := json.Marshal(payload["responses"].([]interface{})) - responses = string(_responses) - } + responses := payload["responses"] throttleTimeMs := "" if payload["throttleTimeMs"] != nil { throttleTimeMs = fmt.Sprintf("%d", int(payload["throttleTimeMs"].(float64))) @@ -506,18 +576,56 @@ func representFetchResponse(data map[string]interface{}) []interface{} { Value: sessionId, Selector: `response.payload.sessionId`, }, - { - Name: "Responses", - Value: responses, - Selector: `response.payload.responses`, - }, }) rep = append(rep, api.SectionData{ Type: api.TABLE, - Title: "Payload", + Title: "Transaction Details", Data: string(repPayload), }) + if responses != nil { + for i, _response := range responses.([]interface{}) { + response := _response.(map[string]interface{}) + topicName := response["topic"].(string) + + for j, _partitionResponse := range response["partitionResponses"].([]interface{}) { + partitionResponse := _partitionResponse.(map[string]interface{}) + recordSet := partitionResponse["recordSet"].(map[string]interface{}) + + rep = append(rep, api.SectionData{ + Type: api.TABLE, + Title: fmt.Sprintf("Response [%d] Partition Response [%d] (topic: %s)", i, j, topicName), + Data: representMapAsTable(partitionResponse, fmt.Sprintf(`response.payload.responses[%d].partitionResponses[%d]`, i, j), []string{"recordSet"}), + }) + + recordBatch := recordSet["recordBatch"].(map[string]interface{}) + rep = append(rep, api.SectionData{ + Type: api.TABLE, + Title: fmt.Sprintf("Response [%d] Partition Response [%d] Record Batch (topic: %s)", i, j, topicName), + Data: representMapAsTable(recordBatch, fmt.Sprintf(`response.payload.responses[%d].partitionResponses[%d].recordSet.recordBatch`, i, j), []string{"record"}), + }) + + for k, _record := range recordBatch["record"].([]interface{}) { + record := _record.(map[string]interface{}) + value := record["value"] + + rep = append(rep, api.SectionData{ + Type: api.TABLE, + Title: fmt.Sprintf("Response [%d] Partition Response [%d] Record [%d] (topic: %s)", i, j, k, topicName), + Data: representMapAsTable(record, fmt.Sprintf(`response.payload.responses[%d].partitionResponses[%d].recordSet.recordBatch.record[%d]`, i, j, k), []string{"value"}), + }) + + rep = append(rep, api.SectionData{ + Type: api.BODY, + Title: fmt.Sprintf("Response [%d] Partition Response [%d] Record [%d] Value (topic: %s)", i, j, k, topicName), + Data: value.(string), + Selector: fmt.Sprintf(`response.payload.responses[%d].partitionResponses[%d].recordSet.recordBatch.record[%d].value`, i, j, k), + }) + } + } + } + } + return rep } @@ -591,17 +699,11 @@ func representCreateTopicsRequest(data map[string]interface{}) []interface{} { rep = representRequestHeader(data, rep) payload := data["payload"].(map[string]interface{}) - topics, _ := json.Marshal(payload["topics"].([]interface{})) validateOnly := "" if payload["validateOnly"] != nil { validateOnly = strconv.FormatBool(payload["validateOnly"].(bool)) } repPayload, _ := json.Marshal([]api.TableData{ - { - Name: "Topics", - Value: string(topics), - Selector: `request.payload.topics`, - }, { Name: "Timeout (ms)", Value: fmt.Sprintf("%d", int(payload["timeoutMs"].(float64))), @@ -615,10 +717,20 @@ func representCreateTopicsRequest(data map[string]interface{}) []interface{} { }) rep = append(rep, api.SectionData{ Type: api.TABLE, - Title: "Payload", + Title: "Transaction Details", Data: string(repPayload), }) + for i, _topic := range payload["topics"].([]interface{}) { + topic := _topic.(map[string]interface{}) + + rep = append(rep, api.SectionData{ + Type: api.TABLE, + Title: fmt.Sprintf("Topic [%d]", i), + Data: representMapAsTable(topic, fmt.Sprintf(`request.payload.topics[%d]`, i), []string{}), + }) + } + return rep } @@ -628,7 +740,6 @@ func representCreateTopicsResponse(data map[string]interface{}) []interface{} { rep = representResponseHeader(data, rep) payload := data["payload"].(map[string]interface{}) - topics, _ := json.Marshal(payload["topics"].([]interface{})) throttleTimeMs := "" if payload["throttleTimeMs"] != nil { throttleTimeMs = fmt.Sprintf("%d", int(payload["throttleTimeMs"].(float64))) @@ -639,18 +750,23 @@ func representCreateTopicsResponse(data map[string]interface{}) []interface{} { Value: throttleTimeMs, Selector: `response.payload.throttleTimeMs`, }, - { - Name: "Topics", - Value: string(topics), - Selector: `response.payload.topics`, - }, }) rep = append(rep, api.SectionData{ Type: api.TABLE, - Title: "Payload", + Title: "Transaction Details", Data: string(repPayload), }) + for i, _topic := range payload["topics"].([]interface{}) { + topic := _topic.(map[string]interface{}) + + rep = append(rep, api.SectionData{ + Type: api.TABLE, + Title: fmt.Sprintf("Topic [%d]", i), + Data: representMapAsTable(topic, fmt.Sprintf(`response.payload.topics[%d]`, i), []string{}), + }) + } + return rep } @@ -727,3 +843,42 @@ func representDeleteTopicsResponse(data map[string]interface{}) []interface{} { return rep } + +func contains(s []string, str string) bool { + for _, v := range s { + if v == str { + return true + } + } + + return false +} + +func representMapAsTable(mapData map[string]interface{}, selectorPrefix string, ignoreKeys []string) (representation string) { + var table []api.TableData + for key, value := range mapData { + if contains(ignoreKeys, key) { + continue + } + switch reflect.ValueOf(value).Kind() { + case reflect.Map: + fallthrough + case reflect.Slice: + x, err := json.Marshal(value) + value = string(x) + if err != nil { + continue + } + } + selector := fmt.Sprintf("%s[\"%s\"]", selectorPrefix, key) + table = append(table, api.TableData{ + Name: strings.Join(camelcase.Split(strings.Title(key)), " "), + Value: value, + Selector: selector, + }) + } + + obj, _ := json.Marshal(table) + representation = string(obj) + return +} diff --git a/tap/extensions/kafka/main.go b/tap/extensions/kafka/main.go index 43af66140..5a09dd979 100644 --- a/tap/extensions/kafka/main.go +++ b/tap/extensions/kafka/main.go @@ -62,7 +62,7 @@ func (d dissecting) Dissect(b *bufio.Reader, isClient bool, tcpID *api.TcpID, co } } -func (d dissecting) Analyze(item *api.OutputChannelItem, resolvedSource string, resolvedDestination string) *api.MizuEntry { +func (d dissecting) Analyze(item *api.OutputChannelItem, resolvedSource string, resolvedDestination string) *api.Entry { request := item.Pair.Request.Payload.(map[string]interface{}) reqDetails := request["details"].(map[string]interface{}) apiKey := ApiKey(reqDetails["apiKey"].(float64)) @@ -146,7 +146,7 @@ func (d dissecting) Analyze(item *api.OutputChannelItem, resolvedSource string, if elapsedTime < 0 { elapsedTime = 0 } - return &api.MizuEntry{ + return &api.Entry{ Protocol: _protocol, Source: &api.TCP{ Name: resolvedSource, @@ -171,25 +171,6 @@ func (d dissecting) Analyze(item *api.OutputChannelItem, resolvedSource string, } } -func (d dissecting) Summarize(entry *api.MizuEntry) *api.BaseEntryDetails { - return &api.BaseEntryDetails{ - Id: entry.Id, - Protocol: _protocol, - Summary: entry.Summary, - StatusCode: entry.Status, - Method: entry.Method, - Timestamp: entry.Timestamp, - Source: entry.Source, - Destination: entry.Destination, - IsOutgoing: entry.IsOutgoing, - Latency: entry.ElapsedTime, - Rules: api.ApplicableRules{ - Latency: 0, - Status: false, - }, - } -} - func (d dissecting) Represent(request map[string]interface{}, response map[string]interface{}) (object []byte, bodySize int64, err error) { bodySize = 0 representation := make(map[string]interface{}, 0) diff --git a/tap/extensions/redis/helpers.go b/tap/extensions/redis/helpers.go index 3f8b61791..1661d1e0b 100644 --- a/tap/extensions/redis/helpers.go +++ b/tap/extensions/redis/helpers.go @@ -42,11 +42,6 @@ func representGeneric(generic map[string]interface{}, selectorPrefix string) (re Value: generic["key"].(string), Selector: fmt.Sprintf("%skey", selectorPrefix), }, - { - Name: "Value", - Value: generic["value"].(string), - Selector: fmt.Sprintf("%svalue", selectorPrefix), - }, { Name: "Keyword", Value: generic["keyword"].(string), @@ -59,5 +54,12 @@ func representGeneric(generic map[string]interface{}, selectorPrefix string) (re Data: string(details), }) + representation = append(representation, api.SectionData{ + Type: api.BODY, + Title: "Value", + Data: generic["value"].(string), + Selector: fmt.Sprintf("%svalue", selectorPrefix), + }) + return } diff --git a/tap/extensions/redis/main.go b/tap/extensions/redis/main.go index e8a6d0f31..360ecc32a 100644 --- a/tap/extensions/redis/main.go +++ b/tap/extensions/redis/main.go @@ -59,7 +59,7 @@ func (d dissecting) Dissect(b *bufio.Reader, isClient bool, tcpID *api.TcpID, co } } -func (d dissecting) Analyze(item *api.OutputChannelItem, resolvedSource string, resolvedDestination string) *api.MizuEntry { +func (d dissecting) Analyze(item *api.OutputChannelItem, resolvedSource string, resolvedDestination string) *api.Entry { request := item.Pair.Request.Payload.(map[string]interface{}) response := item.Pair.Response.Payload.(map[string]interface{}) reqDetails := request["details"].(map[string]interface{}) @@ -80,7 +80,7 @@ func (d dissecting) Analyze(item *api.OutputChannelItem, resolvedSource string, if elapsedTime < 0 { elapsedTime = 0 } - return &api.MizuEntry{ + return &api.Entry{ Protocol: protocol, Source: &api.TCP{ Name: resolvedSource, @@ -106,25 +106,6 @@ func (d dissecting) Analyze(item *api.OutputChannelItem, resolvedSource string, } -func (d dissecting) Summarize(entry *api.MizuEntry) *api.BaseEntryDetails { - return &api.BaseEntryDetails{ - Id: entry.Id, - Protocol: protocol, - Summary: entry.Summary, - StatusCode: entry.Status, - Method: entry.Method, - Timestamp: entry.Timestamp, - Source: entry.Source, - Destination: entry.Destination, - IsOutgoing: entry.IsOutgoing, - Latency: entry.ElapsedTime, - Rules: api.ApplicableRules{ - Latency: 0, - Status: false, - }, - } -} - func (d dissecting) Represent(request map[string]interface{}, response map[string]interface{}) (object []byte, bodySize int64, err error) { bodySize = 0 representation := make(map[string]interface{}, 0) diff --git a/tap/passive_tapper.go b/tap/passive_tapper.go index 275f0288d..2a0a142ce 100644 --- a/tap/passive_tapper.go +++ b/tap/passive_tapper.go @@ -11,6 +11,7 @@ package tap import ( "encoding/json" "flag" + "fmt" "os" "runtime" "strings" @@ -51,7 +52,7 @@ var tstype = flag.String("timestamp_type", "", "Type of timestamps to use") var promisc = flag.Bool("promisc", true, "Set promiscuous mode") var staleTimeoutSeconds = flag.Int("staletimout", 120, "Max time in seconds to keep connections which don't transmit data") var pids = flag.String("pids", "", "A comma separated list of PIDs to capture their network namespaces") -var istio = flag.Bool("istio", false, "Record decrypted traffic if the cluster configured with istio and mtls") +var servicemesh = flag.Bool("servicemesh", false, "Record decrypted traffic if the cluster is configured with a service mesh and with mtls") var memprofile = flag.String("memprofile", "", "Write memory profile") @@ -60,8 +61,11 @@ type TapOpts struct { FilterAuthorities []v1.Pod } -var extensions []*api.Extension // global -var filteringOptions *api.TrafficFilteringOptions // global +var extensions []*api.Extension // global +var filteringOptions *api.TrafficFilteringOptions // global +var tapTargets []v1.Pod // global +var packetSourceManager *source.PacketSourceManager // global +var mainPacketInputChan chan source.TcpPacketInfo // global func inArrayInt(arr []int, valueToCheck int) bool { for _, value := range arr { @@ -86,7 +90,9 @@ func StartPassiveTapper(opts *TapOpts, outputItems chan *api.OutputChannelItem, filteringOptions = options if opts.FilterAuthorities == nil { - opts.FilterAuthorities = []v1.Pod{} + tapTargets = []v1.Pod{} + } else { + tapTargets = opts.FilterAuthorities } if GetMemoryProfilingEnabled() { @@ -96,6 +102,23 @@ func StartPassiveTapper(opts *TapOpts, outputItems chan *api.OutputChannelItem, go startPassiveTapper(opts, outputItems) } +func UpdateTapTargets(newTapTargets []v1.Pod) { + tapTargets = newTapTargets + if err := initializePacketSources(); err != nil { + logger.Log.Fatal(err) + } + printNewTapTargets() +} + +func printNewTapTargets() { + printStr := "" + for _, tapTarget := range tapTargets { + printStr += fmt.Sprintf("%s (%s), ", tapTarget.Status.PodIP, tapTarget.Name) + } + printStr = strings.TrimRight(printStr, ", ") + logger.Log.Infof("Now tapping: %s", printStr) +} + func printPeriodicStats(cleaner *Cleaner) { statsPeriod := time.Second * time.Duration(*statsevery) ticker := time.NewTicker(statsPeriod) @@ -136,7 +159,11 @@ func printPeriodicStats(cleaner *Cleaner) { } } -func initializePacketSources(opts *TapOpts) (*source.PacketSourceManager, error) { +func initializePacketSources() error { + if packetSourceManager != nil { + packetSourceManager.Close() + } + var bpffilter string if len(flag.Args()) > 0 { bpffilter = strings.Join(flag.Args(), " ") @@ -151,7 +178,13 @@ func initializePacketSources(opts *TapOpts) (*source.PacketSourceManager, error) BpfFilter: bpffilter, } - return source.NewPacketSourceManager(*procfs, *pids, *fname, *iface, *istio, opts.FilterAuthorities, behaviour) + var err error + if packetSourceManager, err = source.NewPacketSourceManager(*procfs, *pids, *fname, *iface, *servicemesh, tapTargets, behaviour); err != nil { + return err + } else { + packetSourceManager.ReadPackets(!*nodefrag, mainPacketInputChan) + return nil + } } func startPassiveTapper(opts *TapOpts, outputItems chan *api.OutputChannelItem) { @@ -161,25 +194,16 @@ func startPassiveTapper(opts *TapOpts, outputItems chan *api.OutputChannelItem) diagnose.InitializeErrorsMap(*debug, *verbose, *quiet) diagnose.InitializeTapperInternalStats() - sources, err := initializePacketSources(opts) + mainPacketInputChan = make(chan source.TcpPacketInfo) - if err != nil { + if err := initializePacketSources(); err != nil { logger.Log.Fatal(err) } - defer sources.Close() - - if err != nil { - logger.Log.Fatal(err) - } - - packets := make(chan source.TcpPacketInfo) assembler := NewTcpAssembler(outputItems, streamsMap, opts) diagnose.AppStats.SetStartTime(time.Now()) - sources.ReadPackets(!*nodefrag, packets) - staleConnectionTimeout := time.Second * time.Duration(*staleTimeoutSeconds) cleaner := Cleaner{ assembler: assembler.Assembler, @@ -191,7 +215,7 @@ func startPassiveTapper(opts *TapOpts, outputItems chan *api.OutputChannelItem) go printPeriodicStats(&cleaner) - assembler.processPackets(*hexdumppkt, packets) + assembler.processPackets(*hexdumppkt, mainPacketInputChan) if diagnose.TapErrors.OutputLevel >= 2 { assembler.dumpStreamPool() diff --git a/tap/source/discoverer_util.go b/tap/source/discoverer_util.go new file mode 100644 index 000000000..7c9640d4f --- /dev/null +++ b/tap/source/discoverer_util.go @@ -0,0 +1,38 @@ +package source + +import ( + "io/ioutil" + "regexp" + "strings" + + "github.com/up9inc/mizu/shared/logger" +) + +var numberRegex = regexp.MustCompile("[0-9]+") + +func getSingleValueFromEnvironmentVariableFile(filePath string, variableName string) (string, error) { + bytes, err := ioutil.ReadFile(filePath) + + if err != nil { + logger.Log.Warningf("Error reading environment file %v - %v", filePath, err) + return "", err + } + + envs := strings.Split(string(bytes), string([]byte{0})) + + for _, env := range envs { + if !strings.Contains(env, "=") { + continue + } + + parts := strings.Split(env, "=") + varName := parts[0] + value := parts[1] + + if variableName == varName { + return value, nil + } + } + + return "", nil +} diff --git a/tap/source/envoy_discoverer.go b/tap/source/envoy_discoverer.go index 0230b1273..d90f96943 100644 --- a/tap/source/envoy_discoverer.go +++ b/tap/source/envoy_discoverer.go @@ -4,7 +4,6 @@ import ( "fmt" "io/ioutil" "os" - "regexp" "strings" "github.com/up9inc/mizu/shared/logger" @@ -13,8 +12,6 @@ import ( const envoyBinary = "/envoy" -var numberRegex = regexp.MustCompile("[0-9]+") - func discoverRelevantEnvoyPids(procfs string, pods []v1.Pod) ([]string, error) { result := make([]string, 0) @@ -36,7 +33,7 @@ func discoverRelevantEnvoyPids(procfs string, pods []v1.Pod) ([]string, error) { continue } - if checkPid(procfs, pid.Name(), pods) { + if checkEnvoyPid(procfs, pid.Name(), pods) { result = append(result, pid.Name()) } } @@ -46,7 +43,7 @@ func discoverRelevantEnvoyPids(procfs string, pods []v1.Pod) ([]string, error) { return result, nil } -func checkPid(procfs string, pid string, pods []v1.Pod) bool { +func checkEnvoyPid(procfs string, pid string, pods []v1.Pod) bool { execLink := fmt.Sprintf("%v/%v/exe", procfs, pid) exec, err := os.Readlink(execLink) @@ -63,7 +60,7 @@ func checkPid(procfs string, pid string, pods []v1.Pod) bool { } environmentFile := fmt.Sprintf("%v/%v/environ", procfs, pid) - podIp, err := readEnvironmentVariable(environmentFile, "INSTANCE_IP") + podIp, err := getSingleValueFromEnvironmentVariableFile(environmentFile, "INSTANCE_IP") if err != nil { return false @@ -84,30 +81,3 @@ func checkPid(procfs string, pid string, pods []v1.Pod) bool { return false } - -func readEnvironmentVariable(file string, name string) (string, error) { - bytes, err := ioutil.ReadFile(file) - - if err != nil { - logger.Log.Warningf("Error reading environment file %v - %v", file, err) - return "", err - } - - envs := strings.Split(string(bytes), string([]byte{0})) - - for _, env := range envs { - if !strings.Contains(env, "=") { - continue - } - - parts := strings.Split(env, "=") - varName := parts[0] - value := parts[1] - - if name == varName { - return value, nil - } - } - - return "", nil -} diff --git a/tap/source/linkerd_discoverer.go b/tap/source/linkerd_discoverer.go new file mode 100644 index 000000000..808fc8036 --- /dev/null +++ b/tap/source/linkerd_discoverer.go @@ -0,0 +1,83 @@ +package source + +import ( + "fmt" + "io/ioutil" + "os" + "strings" + + "github.com/up9inc/mizu/shared/logger" + v1 "k8s.io/api/core/v1" +) + +const linkerdBinary = "/linkerd2-proxy" + +func discoverRelevantLinkerdPids(procfs string, pods []v1.Pod) ([]string, error) { + result := make([]string, 0) + + pids, err := ioutil.ReadDir(procfs) + + if err != nil { + return result, err + } + + logger.Log.Infof("Starting linkerd auto discoverer %v %v - scanning %v potential pids", + procfs, pods, len(pids)) + + for _, pid := range pids { + if !pid.IsDir() { + continue + } + + if !numberRegex.MatchString(pid.Name()) { + continue + } + + if checkLinkerdPid(procfs, pid.Name(), pods) { + result = append(result, pid.Name()) + } + } + + logger.Log.Infof("Found %v relevant linkerd processes - %v", len(result), result) + + return result, nil +} + +func checkLinkerdPid(procfs string, pid string, pods []v1.Pod) bool { + execLink := fmt.Sprintf("%v/%v/exe", procfs, pid) + exec, err := os.Readlink(execLink) + + if err != nil { + // Debug on purpose - it may happen due to many reasons and we only care + // for it during troubleshooting + // + logger.Log.Debugf("Unable to read link %v - %v\n", execLink, err) + return false + } + + if !strings.HasSuffix(exec, linkerdBinary) { + return false + } + + environmentFile := fmt.Sprintf("%v/%v/environ", procfs, pid) + podName, err := getSingleValueFromEnvironmentVariableFile(environmentFile, "_pod_name") + + if err != nil { + return false + } + + if podName == "" { + logger.Log.Debugf("Found a linkerd process without _pod_name variable %v\n", pid) + return false + } + + logger.Log.Infof("Found linkerd pid %v with pod name %v", pid, podName) + + for _, pod := range pods { + if pod.Name == podName { + return true + } + } + + return false +} diff --git a/tap/source/packet_source_manager.go b/tap/source/packet_source_manager.go index af88554ea..912d03c9a 100644 --- a/tap/source/packet_source_manager.go +++ b/tap/source/packet_source_manager.go @@ -16,7 +16,7 @@ type PacketSourceManager struct { } func NewPacketSourceManager(procfs string, pids string, filename string, interfaceName string, - istio bool, pods []v1.Pod, behaviour TcpPacketSourceBehaviour) (*PacketSourceManager, error) { + mtls bool, pods []v1.Pod, behaviour TcpPacketSourceBehaviour) (*PacketSourceManager, error) { sources := make([]*tcpPacketSource, 0) sources, err := createHostSource(sources, filename, interfaceName, behaviour) @@ -25,7 +25,8 @@ func NewPacketSourceManager(procfs string, pids string, filename string, interfa } sources = createSourcesFromPids(sources, procfs, pids, interfaceName, behaviour) - sources = createSourcesFromEnvoy(sources, istio, procfs, pods, interfaceName, behaviour) + sources = createSourcesFromEnvoy(sources, mtls, procfs, pods, interfaceName, behaviour) + sources = createSourcesFromLinkerd(sources, mtls, procfs, pods, interfaceName, behaviour) return &PacketSourceManager{ sources: sources, @@ -54,13 +55,13 @@ func createSourcesFromPids(sources []*tcpPacketSource, procfs string, pids strin return sources } -func createSourcesFromEnvoy(sources []*tcpPacketSource, istio bool, procfs string, clusterIps []v1.Pod, +func createSourcesFromEnvoy(sources []*tcpPacketSource, mtls bool, procfs string, pods []v1.Pod, interfaceName string, behaviour TcpPacketSourceBehaviour) []*tcpPacketSource { - if !istio { + if !mtls { return sources } - envoyPids, err := discoverRelevantEnvoyPids(procfs, clusterIps) + envoyPids, err := discoverRelevantEnvoyPids(procfs, pods) if err != nil { logger.Log.Warningf("Unable to discover envoy pids - %v", err) @@ -73,6 +74,25 @@ func createSourcesFromEnvoy(sources []*tcpPacketSource, istio bool, procfs strin return sources } +func createSourcesFromLinkerd(sources []*tcpPacketSource, mtls bool, procfs string, pods []v1.Pod, + interfaceName string, behaviour TcpPacketSourceBehaviour) []*tcpPacketSource { + if !mtls { + return sources + } + + linkerdPids, err := discoverRelevantLinkerdPids(procfs, pods) + + if err != nil { + logger.Log.Warningf("Unable to discover linkerd pids - %v", err) + return sources + } + + netnsSources := newNetnsPacketSources(procfs, linkerdPids, interfaceName, behaviour) + sources = append(sources, netnsSources...) + + return sources +} + func newHostPacketSource(filename string, interfaceName string, behaviour TcpPacketSourceBehaviour) (*tcpPacketSource, error) { var name string diff --git a/tap/tcp_assembler.go b/tap/tcp_assembler.go index 150834967..8bba8f81d 100644 --- a/tap/tcp_assembler.go +++ b/tap/tcp_assembler.go @@ -65,11 +65,11 @@ func (a *tcpAssembler) processPackets(dumpPacket bool, packets <-chan source.Tcp for packetInfo := range packets { packetsCount := diagnose.AppStats.IncPacketsCount() - - if packetsCount % PACKETS_SEEN_LOG_THRESHOLD == 0 { + + if packetsCount%PACKETS_SEEN_LOG_THRESHOLD == 0 { logger.Log.Debugf("Packets seen: #%d", packetsCount) } - + packet := packetInfo.Packet data := packet.Data() diagnose.AppStats.UpdateProcessedBytes(uint64(len(data))) @@ -91,7 +91,6 @@ func (a *tcpAssembler) processPackets(dumpPacket bool, packets <-chan source.Tcp CaptureInfo: packet.Metadata().CaptureInfo, } diagnose.InternalStats.Totalsz += len(tcp.Payload) - logger.Log.Debugf("%s:%v -> %s:%v", packet.NetworkLayer().NetworkFlow().Src(), tcp.SrcPort, packet.NetworkLayer().NetworkFlow().Dst(), tcp.DstPort) a.assemblerMutex.Lock() a.AssembleWithContext(packet.NetworkLayer().NetworkFlow(), tcp, &c) a.assemblerMutex.Unlock() diff --git a/tap/tcp_stream.go b/tap/tcp_stream.go index 7a9b53e30..c979c2991 100644 --- a/tap/tcp_stream.go +++ b/tap/tcp_stream.go @@ -2,7 +2,6 @@ package tap import ( "encoding/binary" - "fmt" "sync" "github.com/google/gopacket" @@ -75,7 +74,7 @@ func (t *tcpStream) Accept(tcp *layers.TCP, ci gopacket.CaptureInfo, dir reassem } func (t *tcpStream) ReassembledSG(sg reassembly.ScatterGather, ac reassembly.AssemblerContext) { - dir, start, end, skip := sg.Info() + dir, _, _, skip := sg.Info() length, saved := sg.Lengths() // update stats sgStats := sg.Stats() @@ -103,13 +102,6 @@ func (t *tcpStream) ReassembledSG(sg reassembly.ScatterGather, ac reassembly.Ass diagnose.InternalStats.OverlapBytes += sgStats.OverlapBytes diagnose.InternalStats.OverlapPackets += sgStats.OverlapPackets - var ident string - if dir == reassembly.TCPDirClientToServer { - ident = fmt.Sprintf("%v %v(%s): ", t.net, t.transport, dir) - } else { - ident = fmt.Sprintf("%v %v(%s): ", t.net.Reverse(), t.transport.Reverse(), dir) - } - diagnose.TapErrors.Debug("%s: SG reassembled packet with %d bytes (start:%v,end:%v,skip:%d,saved:%d,nb:%d,%d,overlap:%d,%d)", ident, length, start, end, skip, saved, sgStats.Packets, sgStats.Chunks, sgStats.OverlapBytes, sgStats.OverlapPackets) if skip == -1 && *allowmissinginit { // this is allowed } else if skip != 0 { @@ -174,7 +166,6 @@ func (t *tcpStream) ReassembledSG(sg reassembly.ScatterGather, ac reassembly.Ass } func (t *tcpStream) ReassemblyComplete(ac reassembly.AssemblerContext) bool { - diagnose.TapErrors.Debug("%s: Connection closed", t.ident) if t.isTapTarget && !t.isClosed { t.Close() } diff --git a/tap/tcp_stream_factory.go b/tap/tcp_stream_factory.go index 847ca10d1..90f09b5d8 100644 --- a/tap/tcp_stream_factory.go +++ b/tap/tcp_stream_factory.go @@ -54,7 +54,6 @@ func NewTcpStreamFactory(emitter api.Emitter, streamsMap *tcpStreamMap, opts *Ta } func (factory *tcpStreamFactory) New(net, transport gopacket.Flow, tcp *layers.TCP, ac reassembly.AssemblerContext) reassembly.Stream { - logger.Log.Debugf("* NEW: %s %s", net, transport) fsmOptions := reassembly.TCPSimpleFSMOptions{ SupportMissingEstablishment: *allowmissinginit, } @@ -152,22 +151,17 @@ func inArrayPod(pods []v1.Pod, address string) bool { func (factory *tcpStreamFactory) getStreamProps(srcIP string, srcPort string, dstIP string, dstPort string) *streamProps { if factory.opts.HostMode { - if inArrayPod(factory.opts.FilterAuthorities, fmt.Sprintf("%s:%s", dstIP, dstPort)) { - logger.Log.Debugf("getStreamProps %s", fmt.Sprintf("+ host1 %s:%s", dstIP, dstPort)) + if inArrayPod(tapTargets, fmt.Sprintf("%s:%s", dstIP, dstPort)) { return &streamProps{isTapTarget: true, isOutgoing: false} - } else if inArrayPod(factory.opts.FilterAuthorities, dstIP) { - logger.Log.Debugf("getStreamProps %s", fmt.Sprintf("+ host2 %s", dstIP)) + } else if inArrayPod(tapTargets, dstIP) { return &streamProps{isTapTarget: true, isOutgoing: false} - } else if inArrayPod(factory.opts.FilterAuthorities, fmt.Sprintf("%s:%s", srcIP, srcPort)) { - logger.Log.Debugf("getStreamProps %s", fmt.Sprintf("+ host3 %s:%s", srcIP, srcPort)) + } else if inArrayPod(tapTargets, fmt.Sprintf("%s:%s", srcIP, srcPort)) { return &streamProps{isTapTarget: true, isOutgoing: true} - } else if inArrayPod(factory.opts.FilterAuthorities, srcIP) { - logger.Log.Debugf("getStreamProps %s", fmt.Sprintf("+ host4 %s", srcIP)) + } else if inArrayPod(tapTargets, srcIP) { return &streamProps{isTapTarget: true, isOutgoing: true} } return &streamProps{isTapTarget: false, isOutgoing: false} } else { - logger.Log.Debugf("getStreamProps %s", fmt.Sprintf("+ notHost3 %s:%s -> %s:%s", srcIP, srcPort, dstIP, dstPort)) return &streamProps{isTapTarget: true} } } diff --git a/ui/package-lock.json b/ui/package-lock.json index a0fa2a952..98bfc9969 100644 --- a/ui/package-lock.json +++ b/ui/package-lock.json @@ -1161,11 +1161,51 @@ "resolved": "https://registry.npmjs.org/@csstools/normalize.css/-/normalize.css-10.1.0.tgz", "integrity": "sha512-ij4wRiunFfaJxjB0BdrYHIH8FxBJpOwNPhhAcunlmPdXudL1WQV1qoP9un6JsEBAgQH+7UXyyjh0g7jTxXK6tg==" }, + "@emotion/cache": { + "version": "11.7.1", + "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-11.7.1.tgz", + "integrity": "sha512-r65Zy4Iljb8oyjtLeCuBH8Qjiy107dOYC6SJq7g7GV5UCQWMObY4SJDPGFjiiVpPrOJ2hmJOoBiYTC7hwx9E2A==", + "requires": { + "@emotion/memoize": "^0.7.4", + "@emotion/sheet": "^1.1.0", + "@emotion/utils": "^1.0.0", + "@emotion/weak-memoize": "^0.2.5", + "stylis": "4.0.13" + } + }, "@emotion/hash": { "version": "0.8.0", "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.8.0.tgz", "integrity": "sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow==" }, + "@emotion/is-prop-valid": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.1.1.tgz", + "integrity": "sha512-bW1Tos67CZkOURLc0OalnfxtSXQJMrAMV0jZTVGJUPSOd4qgjF3+tTD5CwJM13PHA8cltGW1WGbbvV9NpvUZPw==", + "requires": { + "@emotion/memoize": "^0.7.4" + } + }, + "@emotion/memoize": { + "version": "0.7.5", + "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.7.5.tgz", + "integrity": "sha512-igX9a37DR2ZPGYtV6suZ6whr8pTFtyHL3K/oLUotxpSVO2ASaprmAe2Dkq7tBo7CRY7MMDrAa9nuQP9/YG8FxQ==" + }, + "@emotion/sheet": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.1.0.tgz", + "integrity": "sha512-u0AX4aSo25sMAygCuQTzS+HsImZFuS8llY8O7b9MDRzbJM0kVJlAz6KNDqcG7pOuQZJmj/8X/rAW+66kMnMW+g==" + }, + "@emotion/utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-1.0.0.tgz", + "integrity": "sha512-mQC2b3XLDs6QCW+pDQDiyO/EdGZYOygE8s5N5rrzjSI4M3IejPE/JPndCBwRT9z982aqQNi6beWs1UeayrQxxA==" + }, + "@emotion/weak-memoize": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.2.5.tgz", + "integrity": "sha512-6U71C2Wp7r5XtFtQzYrW5iKFT67OixrSxjI4MptCHzdSVlgabczzqLe0ZSgnub/5Kp4hSbpDB1tMytZY9pwxxA==" + }, "@eslint/eslintrc": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.0.tgz", @@ -1898,6 +1938,335 @@ "react-is": "^16.8.0 || ^17.0.0" } }, + "@mui/base": { + "version": "5.0.0-alpha.62", + "resolved": "https://registry.npmjs.org/@mui/base/-/base-5.0.0-alpha.62.tgz", + "integrity": "sha512-ItmdSZwHKQbLbAsS3sWguR7OHqYqh2cYWahoVmHb13Kc6bMdmVUTY4x57IlDSU712B0yuA0Q/gPTq7xADKnFow==", + "requires": { + "@babel/runtime": "^7.16.3", + "@emotion/is-prop-valid": "^1.1.1", + "@mui/utils": "^5.2.3", + "@popperjs/core": "^2.4.4", + "clsx": "^1.1.1", + "prop-types": "^15.7.2", + "react-is": "^17.0.2" + }, + "dependencies": { + "@babel/runtime": { + "version": "7.16.5", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.16.5.tgz", + "integrity": "sha512-TXWihFIS3Pyv5hzR7j6ihmeLkZfrXGxAr5UfSl8CHf+6q/wpiYDkUau0czckpYG8QmnCIuPpdLtuA9VmuGGyMA==", + "requires": { + "regenerator-runtime": "^0.13.4" + } + }, + "react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==" + } + } + }, + "@mui/icons-material": { + "version": "5.2.5", + "resolved": "https://registry.npmjs.org/@mui/icons-material/-/icons-material-5.2.5.tgz", + "integrity": "sha512-uQiUz+l0xy+2jExyKyU19MkMAR2F7bQFcsQ5hdqAtsB14Jw2zlmIAD55mV6f0NxKCut7Rx6cA3ZpfzlzAfoK8Q==", + "requires": { + "@babel/runtime": "^7.16.3" + }, + "dependencies": { + "@babel/runtime": { + "version": "7.16.5", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.16.5.tgz", + "integrity": "sha512-TXWihFIS3Pyv5hzR7j6ihmeLkZfrXGxAr5UfSl8CHf+6q/wpiYDkUau0czckpYG8QmnCIuPpdLtuA9VmuGGyMA==", + "requires": { + "regenerator-runtime": "^0.13.4" + } + } + } + }, + "@mui/material": { + "version": "5.2.6", + "resolved": "https://registry.npmjs.org/@mui/material/-/material-5.2.6.tgz", + "integrity": "sha512-yF2bRqyJMo6bYXT7TPA9IU/XLaXHi47Xvmj8duQa5ha3bCpFMXLfGoZcAUl6ZDjjGEz1nCFS+c1qx219xD/aeQ==", + "requires": { + "@babel/runtime": "^7.16.3", + "@mui/base": "5.0.0-alpha.62", + "@mui/system": "^5.2.6", + "@mui/types": "^7.1.0", + "@mui/utils": "^5.2.3", + "@types/react-transition-group": "^4.4.4", + "clsx": "^1.1.1", + "csstype": "^3.0.10", + "hoist-non-react-statics": "^3.3.2", + "prop-types": "^15.7.2", + "react-is": "^17.0.2", + "react-transition-group": "^4.4.2" + }, + "dependencies": { + "@babel/runtime": { + "version": "7.16.5", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.16.5.tgz", + "integrity": "sha512-TXWihFIS3Pyv5hzR7j6ihmeLkZfrXGxAr5UfSl8CHf+6q/wpiYDkUau0czckpYG8QmnCIuPpdLtuA9VmuGGyMA==", + "requires": { + "regenerator-runtime": "^0.13.4" + } + }, + "@types/react-transition-group": { + "version": "4.4.4", + "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.4.tgz", + "integrity": "sha512-7gAPz7anVK5xzbeQW9wFBDg7G++aPLAFY0QaSMOou9rJZpbuI58WAuJrgu+qR92l61grlnCUe7AFX8KGahAgug==", + "requires": { + "@types/react": "*" + } + }, + "csstype": { + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.10.tgz", + "integrity": "sha512-2u44ZG2OcNUO9HDp/Jl8C07x6pU/eTR3ncV91SiK3dhG9TWvRVsCoJw14Ckx5DgWkzGA3waZWO3d7pgqpUI/XA==" + }, + "react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==" + }, + "react-transition-group": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.2.tgz", + "integrity": "sha512-/RNYfRAMlZwDSr6z4zNKV6xu53/e2BuaBbGhbyYIXTrmgu/bGHzmqOs7mJSJBHy9Ud+ApHx3QjrkKSp1pxvlFg==", + "requires": { + "@babel/runtime": "^7.5.5", + "dom-helpers": "^5.0.1", + "loose-envify": "^1.4.0", + "prop-types": "^15.6.2" + } + } + } + }, + "@mui/private-theming": { + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-5.2.3.tgz", + "integrity": "sha512-Lc1Cmu8lSsYZiXADi9PBb17Ho82ZbseHQujUFAcp6bCJ5x/d+87JYCIpCBMagPu/isRlFCwbziuXPmz7WOzJPQ==", + "requires": { + "@babel/runtime": "^7.16.3", + "@mui/utils": "^5.2.3", + "prop-types": "^15.7.2" + }, + "dependencies": { + "@babel/runtime": { + "version": "7.16.5", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.16.5.tgz", + "integrity": "sha512-TXWihFIS3Pyv5hzR7j6ihmeLkZfrXGxAr5UfSl8CHf+6q/wpiYDkUau0czckpYG8QmnCIuPpdLtuA9VmuGGyMA==", + "requires": { + "regenerator-runtime": "^0.13.4" + } + } + } + }, + "@mui/styled-engine": { + "version": "5.2.6", + "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-5.2.6.tgz", + "integrity": "sha512-bqAhli8eGS6v2qxivy2/4K0Ag8o//jsu1G2G6QcieFiT6y7oIF/nd/6Tvw6OSm3roOTifVQWNKwkt1yFWhGS+w==", + "requires": { + "@babel/runtime": "^7.16.3", + "@emotion/cache": "^11.7.1", + "prop-types": "^15.7.2" + }, + "dependencies": { + "@babel/runtime": { + "version": "7.16.5", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.16.5.tgz", + "integrity": "sha512-TXWihFIS3Pyv5hzR7j6ihmeLkZfrXGxAr5UfSl8CHf+6q/wpiYDkUau0czckpYG8QmnCIuPpdLtuA9VmuGGyMA==", + "requires": { + "regenerator-runtime": "^0.13.4" + } + } + } + }, + "@mui/styles": { + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/@mui/styles/-/styles-5.2.3.tgz", + "integrity": "sha512-Art4qjlEI9H2h34mLL8s+CE9nWZWZbuJLbNpievaIM6DGuayz3DYkJHcH5mXJYFPhTNoe9IQYbpyKofjE0YVag==", + "requires": { + "@babel/runtime": "^7.16.3", + "@emotion/hash": "^0.8.0", + "@mui/private-theming": "^5.2.3", + "@mui/types": "^7.1.0", + "@mui/utils": "^5.2.3", + "clsx": "^1.1.1", + "csstype": "^3.0.10", + "hoist-non-react-statics": "^3.3.2", + "jss": "^10.8.2", + "jss-plugin-camel-case": "^10.8.2", + "jss-plugin-default-unit": "^10.8.2", + "jss-plugin-global": "^10.8.2", + "jss-plugin-nested": "^10.8.2", + "jss-plugin-props-sort": "^10.8.2", + "jss-plugin-rule-value-function": "^10.8.2", + "jss-plugin-vendor-prefixer": "^10.8.2", + "prop-types": "^15.7.2" + }, + "dependencies": { + "@babel/runtime": { + "version": "7.16.5", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.16.5.tgz", + "integrity": "sha512-TXWihFIS3Pyv5hzR7j6ihmeLkZfrXGxAr5UfSl8CHf+6q/wpiYDkUau0czckpYG8QmnCIuPpdLtuA9VmuGGyMA==", + "requires": { + "regenerator-runtime": "^0.13.4" + } + }, + "csstype": { + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.10.tgz", + "integrity": "sha512-2u44ZG2OcNUO9HDp/Jl8C07x6pU/eTR3ncV91SiK3dhG9TWvRVsCoJw14Ckx5DgWkzGA3waZWO3d7pgqpUI/XA==" + }, + "jss": { + "version": "10.9.0", + "resolved": "https://registry.npmjs.org/jss/-/jss-10.9.0.tgz", + "integrity": "sha512-YpzpreB6kUunQBbrlArlsMpXYyndt9JATbt95tajx0t4MTJJcCJdd4hdNpHmOIDiUJrF/oX5wtVFrS3uofWfGw==", + "requires": { + "@babel/runtime": "^7.3.1", + "csstype": "^3.0.2", + "is-in-browser": "^1.1.3", + "tiny-warning": "^1.0.2" + } + }, + "jss-plugin-camel-case": { + "version": "10.9.0", + "resolved": "https://registry.npmjs.org/jss-plugin-camel-case/-/jss-plugin-camel-case-10.9.0.tgz", + "integrity": "sha512-UH6uPpnDk413/r/2Olmw4+y54yEF2lRIV8XIZyuYpgPYTITLlPOsq6XB9qeqv+75SQSg3KLocq5jUBXW8qWWww==", + "requires": { + "@babel/runtime": "^7.3.1", + "hyphenate-style-name": "^1.0.3", + "jss": "10.9.0" + } + }, + "jss-plugin-default-unit": { + "version": "10.9.0", + "resolved": "https://registry.npmjs.org/jss-plugin-default-unit/-/jss-plugin-default-unit-10.9.0.tgz", + "integrity": "sha512-7Ju4Q9wJ/MZPsxfu4T84mzdn7pLHWeqoGd/D8O3eDNNJ93Xc8PxnLmV8s8ZPNRYkLdxZqKtm1nPQ0BM4JRlq2w==", + "requires": { + "@babel/runtime": "^7.3.1", + "jss": "10.9.0" + } + }, + "jss-plugin-global": { + "version": "10.9.0", + "resolved": "https://registry.npmjs.org/jss-plugin-global/-/jss-plugin-global-10.9.0.tgz", + "integrity": "sha512-4G8PHNJ0x6nwAFsEzcuVDiBlyMsj2y3VjmFAx/uHk/R/gzJV+yRHICjT4MKGGu1cJq2hfowFWCyrr/Gg37FbgQ==", + "requires": { + "@babel/runtime": "^7.3.1", + "jss": "10.9.0" + } + }, + "jss-plugin-nested": { + "version": "10.9.0", + "resolved": "https://registry.npmjs.org/jss-plugin-nested/-/jss-plugin-nested-10.9.0.tgz", + "integrity": "sha512-2UJnDrfCZpMYcpPYR16oZB7VAC6b/1QLsRiAutOt7wJaaqwCBvNsosLEu/fUyKNQNGdvg2PPJFDO5AX7dwxtoA==", + "requires": { + "@babel/runtime": "^7.3.1", + "jss": "10.9.0", + "tiny-warning": "^1.0.2" + } + }, + "jss-plugin-props-sort": { + "version": "10.9.0", + "resolved": "https://registry.npmjs.org/jss-plugin-props-sort/-/jss-plugin-props-sort-10.9.0.tgz", + "integrity": "sha512-7A76HI8bzwqrsMOJTWKx/uD5v+U8piLnp5bvru7g/3ZEQOu1+PjHvv7bFdNO3DwNPC9oM0a//KwIJsIcDCjDzw==", + "requires": { + "@babel/runtime": "^7.3.1", + "jss": "10.9.0" + } + }, + "jss-plugin-rule-value-function": { + "version": "10.9.0", + "resolved": "https://registry.npmjs.org/jss-plugin-rule-value-function/-/jss-plugin-rule-value-function-10.9.0.tgz", + "integrity": "sha512-IHJv6YrEf8pRzkY207cPmdbBstBaE+z8pazhPShfz0tZSDtRdQua5jjg6NMz3IbTasVx9FdnmptxPqSWL5tyJg==", + "requires": { + "@babel/runtime": "^7.3.1", + "jss": "10.9.0", + "tiny-warning": "^1.0.2" + } + }, + "jss-plugin-vendor-prefixer": { + "version": "10.9.0", + "resolved": "https://registry.npmjs.org/jss-plugin-vendor-prefixer/-/jss-plugin-vendor-prefixer-10.9.0.tgz", + "integrity": "sha512-MbvsaXP7iiVdYVSEoi+blrW+AYnTDvHTW6I6zqi7JcwXdc6I9Kbm234nEblayhF38EftoenbM+5218pidmC5gA==", + "requires": { + "@babel/runtime": "^7.3.1", + "css-vendor": "^2.0.8", + "jss": "10.9.0" + } + } + } + }, + "@mui/system": { + "version": "5.2.6", + "resolved": "https://registry.npmjs.org/@mui/system/-/system-5.2.6.tgz", + "integrity": "sha512-PZ7bmpWOLikWgqn2zWv9/Xa7lxnRBOmfjoMH7c/IVYJs78W3971brXJ3xV9MEWWQcoqiYQeXzUJaNf4rFbKCBA==", + "requires": { + "@babel/runtime": "^7.16.3", + "@mui/private-theming": "^5.2.3", + "@mui/styled-engine": "^5.2.6", + "@mui/types": "^7.1.0", + "@mui/utils": "^5.2.3", + "clsx": "^1.1.1", + "csstype": "^3.0.10", + "prop-types": "^15.7.2" + }, + "dependencies": { + "@babel/runtime": { + "version": "7.16.5", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.16.5.tgz", + "integrity": "sha512-TXWihFIS3Pyv5hzR7j6ihmeLkZfrXGxAr5UfSl8CHf+6q/wpiYDkUau0czckpYG8QmnCIuPpdLtuA9VmuGGyMA==", + "requires": { + "regenerator-runtime": "^0.13.4" + } + }, + "csstype": { + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.10.tgz", + "integrity": "sha512-2u44ZG2OcNUO9HDp/Jl8C07x6pU/eTR3ncV91SiK3dhG9TWvRVsCoJw14Ckx5DgWkzGA3waZWO3d7pgqpUI/XA==" + } + } + }, + "@mui/types": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@mui/types/-/types-7.1.0.tgz", + "integrity": "sha512-Hh7ALdq/GjfIwLvqH3XftuY3bcKhupktTm+S6qRIDGOtPtRuq2L21VWzOK4p7kblirK0XgGVH5BLwa6u8z/6QQ==" + }, + "@mui/utils": { + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-5.2.3.tgz", + "integrity": "sha512-sQujlajIS0zQKcGIS6tZR0L1R+ib26B6UtuEn+cZqwKHsPo3feuS+SkdscYBdcCdMbrZs4gj8WIJHl2z6tbSzQ==", + "requires": { + "@babel/runtime": "^7.16.3", + "@types/prop-types": "^15.7.4", + "@types/react-is": "^16.7.1 || ^17.0.0", + "prop-types": "^15.7.2", + "react-is": "^17.0.2" + }, + "dependencies": { + "@babel/runtime": { + "version": "7.16.5", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.16.5.tgz", + "integrity": "sha512-TXWihFIS3Pyv5hzR7j6ihmeLkZfrXGxAr5UfSl8CHf+6q/wpiYDkUau0czckpYG8QmnCIuPpdLtuA9VmuGGyMA==", + "requires": { + "regenerator-runtime": "^0.13.4" + } + }, + "@types/prop-types": { + "version": "15.7.4", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.4.tgz", + "integrity": "sha512-rZ5drC/jWjrArrS8BR6SIr4cWpW09RNTYt9AMZo3Jwwif+iacXAqgVjm0B0Bv/S1jhDXKHqRVNCbACkJ89RAnQ==" + }, + "react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==" + } + } + }, "@nodelib/fs.scandir": { "version": "2.1.4", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.4.tgz", @@ -1957,6 +2326,11 @@ } } }, + "@popperjs/core": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.0.tgz", + "integrity": "sha512-zrsUxjLOKAzdewIDRWy9nsV1GQsKBCWaGwsZQlCgr6/q+vjyZhFgqedLfFBuI9anTPEUT4APq9Mu0SZBTzIcGQ==" + }, "@rollup/plugin-node-resolve": { "version": "7.1.3", "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-7.1.3.tgz", @@ -2479,6 +2853,14 @@ "@types/react": "*" } }, + "@types/react-is": { + "version": "17.0.3", + "resolved": "https://registry.npmjs.org/@types/react-is/-/react-is-17.0.3.tgz", + "integrity": "sha512-aBTIWg1emtu95bLTLx0cpkxwGW3ueZv71nE2YFBpL8k/z5czEW8yYpOo8Dp+UUAFAtKwNaOsh/ioSeQnWlZcfw==", + "requires": { + "@types/react": "*" + } + }, "@types/react-transition-group": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.1.tgz", @@ -4355,6 +4737,11 @@ } } }, + "classnames": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.3.1.tgz", + "integrity": "sha512-OlQdbZ7gLfGarSqxesMesDa5uz7KFbID8Kpq/SxIoNGDqY8lSYs0D+hhtBXhcdB3rcbXArFr7vlHheLk1voeNA==" + }, "clean-css": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.3.tgz", @@ -7747,9 +8134,9 @@ "integrity": "sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ==" }, "highlight.js": { - "version": "10.7.2", - "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-10.7.2.tgz", - "integrity": "sha512-oFLl873u4usRM9K63j4ME9u3etNF0PLiJhSQ8rdfuL51Wn3zkD6drf9ZW0dOzjnZI22YYG24z30JcmfCZjMgYg==" + "version": "11.3.1", + "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-11.3.1.tgz", + "integrity": "sha512-PUhCRnPjLtiLHZAQ5A/Dt5F8cWZeMyj9KRsACsWT+OD6OP0x6dp5OmT5jdx0JgEyPxPZZIPQpRN2TciUT7occw==" }, "hmac-drbg": { "version": "1.0.1", @@ -10234,6 +10621,11 @@ "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==" }, + "json-beautify": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/json-beautify/-/json-beautify-1.1.1.tgz", + "integrity": "sha512-17j+Hk2lado0xqKtUcyAjK0AtoHnPSIgktWRsEXgdFQFG9UnaGw6CHa0J7xsvulxRpFl6CrkDFHght1p5ZJc4A==" + }, "json-parse-better-errors": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", @@ -10612,6 +11004,13 @@ "requires": { "fault": "^1.0.0", "highlight.js": "~10.7.0" + }, + "dependencies": { + "highlight.js": { + "version": "10.7.3", + "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-10.7.3.tgz", + "integrity": "sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A==" + } } }, "lru-cache": { @@ -10677,6 +11076,19 @@ "object-visit": "^1.0.0" } }, + "material-ui-popup-state": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/material-ui-popup-state/-/material-ui-popup-state-2.0.0.tgz", + "integrity": "sha512-1sbb9xpMs7OxG0SOGfGO0ZnwiLtqZSoXda0/AqqJkpouT4e0nADXutQtDJFMa9GUMNAODVDlYnNmfqM+MhFjsg==", + "requires": { + "@babel/runtime": "^7.12.5", + "@mui/icons-material": "^5.0.0", + "@mui/material": "^5.0.0", + "@mui/styles": "^5.0.0", + "classnames": "^2.2.6", + "prop-types": "^15.7.2" + } + }, "md5.js": { "version": "1.3.5", "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", @@ -13577,6 +13989,34 @@ "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" }, + "react-lowlight": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/react-lowlight/-/react-lowlight-3.0.0.tgz", + "integrity": "sha512-s0+T81PsCbUZYd/0XrplGc6kQEUdiwLKI0G6umJP1ViqRoZRCvSuHvXOy20Usd2ywDKWLuVETQgBDPeNQhPNZg==", + "requires": { + "lowlight": "^2.4.1" + }, + "dependencies": { + "fault": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fault/-/fault-2.0.1.tgz", + "integrity": "sha512-WtySTkS4OKev5JtpHXnib4Gxiurzh5NCGvWrFaZ34m6JehfTUhKZvn9njTfw48t6JumVQOmrKqpmGcdwxnhqBQ==", + "requires": { + "format": "^0.2.0" + } + }, + "lowlight": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/lowlight/-/lowlight-2.4.1.tgz", + "integrity": "sha512-mQkAG0zGQ9lcYecEft+hl9uV1fD6HpURA83/TYrsxKvb8xX2mfyB+aaV/A/aWmhhEcWVzr9Cc+l/fvUYfEUumw==", + "requires": { + "@types/hast": "^2.0.0", + "fault": "^2.0.0", + "highlight.js": "~11.3.0" + } + } + } + }, "react-refresh": { "version": "0.8.3", "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.8.3.tgz", @@ -13663,6 +14103,13 @@ "lowlight": "^1.17.0", "prismjs": "^1.22.0", "refractor": "^3.2.0" + }, + "dependencies": { + "highlight.js": { + "version": "10.7.3", + "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-10.7.3.tgz", + "integrity": "sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A==" + } } }, "react-toastify": { @@ -15686,6 +16133,11 @@ } } }, + "stylis": { + "version": "4.0.13", + "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.0.13.tgz", + "integrity": "sha512-xGPXiFVl4YED9Jh7Euv2V220mriG9u4B2TA6Ybjc1catrstKD2PpIdU3U0RKpkVBC2EhmL/F0sPCr9vrFTNRag==" + }, "supports-color": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", @@ -18149,11 +18601,24 @@ "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.5.tgz", "integrity": "sha512-xzyu3hFvomRfXKH8vOFMU3OguG6oOvhXMo3xsGy3xWExqaM2dxBbVxuD99O7m3ZUFMvvscsZDqxfgMaRr/Nr1g==" }, + "xml-formatter": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/xml-formatter/-/xml-formatter-2.6.0.tgz", + "integrity": "sha512-+bQeoiE5W3CJdDCHTlveYSWFfQWnYB3uHGeRJ6LlEsL5kT++mWy9iN1cMeEDfBbgOnXO2DNUbmQ6elkR/mCcjg==", + "requires": { + "xml-parser-xo": "^3.2.0" + } + }, "xml-name-validator": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==" }, + "xml-parser-xo": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/xml-parser-xo/-/xml-parser-xo-3.2.0.tgz", + "integrity": "sha512-8LRU6cq+d7mVsoDaMhnkkt3CTtAs4153p49fRo+HIB3I1FD1o5CeXRjRH29sQevIfVJIcPjKSsPU/+Ujhq09Rg==" + }, "xmlchars": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", diff --git a/ui/package.json b/ui/package.json index f8fcebd2a..64763c557 100644 --- a/ui/package.json +++ b/ui/package.json @@ -15,7 +15,10 @@ "@types/react-dom": "^17.0.3", "@uiw/react-textarea-code-editor": "^1.4.12", "axios": "^0.21.1", + "highlight.js": "^11.3.1", + "json-beautify": "^1.1.1", "jsonpath": "^1.1.1", + "material-ui-popup-state": "^2.0.0", "moment": "^2.29.1", "node-sass": "^5.0.0", "numeral": "^2.0.6", @@ -23,12 +26,14 @@ "react": "^17.0.2", "react-copy-to-clipboard": "^5.0.3", "react-dom": "^17.0.2", + "react-lowlight": "^3.0.0", "react-scripts": "4.0.3", "react-scrollable-feed-virtualized": "^1.4.9", "react-syntax-highlighter": "^15.4.3", "react-toastify": "^8.0.3", "typescript": "^4.2.4", - "web-vitals": "^1.1.1" + "web-vitals": "^1.1.1", + "xml-formatter": "^2.6.0" }, "scripts": { "start": "react-scripts start", diff --git a/ui/public/index.html b/ui/public/index.html index 8485870fb..f8f972ceb 100644 --- a/ui/public/index.html +++ b/ui/public/index.html @@ -25,6 +25,15 @@ Learn how to configure a non-root public URL by running `npm run build`. --> MIZU + diff --git a/ui/src/App.sass b/ui/src/App.sass index 0bc2e9505..da361d973 100644 --- a/ui/src/App.sass +++ b/ui/src/App.sass @@ -1,38 +1,8 @@ @import './variables.module' -.mizuApp +body background-color: $main-background-color + +.mizuApp color: $font-color width: 100% - - .header - height: 60px - display: flex - align-items: center - padding: 5px 24px - justify-content: space-between - - .title - letter-spacing: 2px - - img - height: 45px - - .description - margin-left: 10px - font-size: 11px - font-weight: bold - color: $light-blue-color - - .httpsDomains - display: none - margin: 0 - padding: 0 - list-style: none - - .customWarningStyle - &:hover - overflow-y: scroll - height: 85px - .httpsDomains - display: block diff --git a/ui/src/App.tsx b/ui/src/App.tsx index 8f654a325..65b8a7aff 100644 --- a/ui/src/App.tsx +++ b/ui/src/App.tsx @@ -1,51 +1,15 @@ -import React, {useEffect, useState} from 'react'; +import React, {useState} from 'react'; import './App.sass'; -import logo from './components/assets/Mizu-logo.svg'; -import logo_up9 from './components/assets/logo_up9.svg'; -import {Button, Snackbar} from "@material-ui/core"; +import {TLSWarning} from "./components/TLSWarning/TLSWarning"; +import {Header} from "./components/Header/Header"; import {TrafficPage} from "./components/TrafficPage"; -import Tooltip from "./components/UI/Tooltip"; -import {makeStyles} from "@material-ui/core/styles"; -import MuiAlert from '@material-ui/lab/Alert'; -import Api from "./helpers/api"; - - -const useStyles = makeStyles(() => ({ - tooltip: { - backgroundColor: "#3868dc", - color: "white", - fontSize: 13, - }, -})); - -const api = new Api(); const App = () => { - const classes = useStyles(); - const [analyzeStatus, setAnalyzeStatus] = useState(null); const [showTLSWarning, setShowTLSWarning] = useState(false); const [userDismissedTLSWarning, setUserDismissedTLSWarning] = useState(false); - const [addressesWithTLS, setAddressesWithTLS] = useState(new Set()); - const [statusAuth, setStatusAuth] = useState(null); - - useEffect(() => { - (async () => { - try { - const recentTLSLinks = await api.getRecentTLSLinks(); - if (recentTLSLinks?.length > 0) { - setAddressesWithTLS(new Set(recentTLSLinks)); - setShowTLSWarning(true); - } - const auth = await api.getAuthStatus(); - setStatusAuth(auth); - } catch (e) { - console.error(e); - } - - })(); - }, []); + const [addressesWithTLS, setAddressesWithTLS] = useState(new Set()); const onTLSDetected = (destAddress: string) => { addressesWithTLS.add(destAddress); @@ -56,96 +20,16 @@ const App = () => { } }; - const analysisMessage = analyzeStatus?.isRemoteReady ? - - - - - - - - - - -
StatusAvailable
Messages{analyzeStatus?.sentCount}
-
: - analyzeStatus?.sentCount > 0 ? - - - - - - - - - - - - - -
StatusProcessing
Messages{analyzeStatus?.sentCount}
Please allow a few minutes for the analysis to complete
-
: - - - - - - - - - - -
StatusWaiting for traffic
Messages{analyzeStatus?.sentCount}
- -
- return (
-
-
-
logo
-
Traffic viewer for Kubernetes
-
-
- - {analyzeStatus?.isAnalyzing && -
- -
- -
-
-
- } - {statusAuth?.email &&
-
-
{statusAuth.email}
-
{statusAuth.model}
-
-
} -
-
+
- - setUserDismissedTLSWarning(true)} severity="warning"> - Mizu is detecting TLS traffic, this type of traffic will not be displayed. - {addressesWithTLS.size > 0 &&
    {Array.from(addressesWithTLS, address =>
  • {address}
  • )}
} -
-
+
); } diff --git a/ui/src/EntApp.tsx b/ui/src/EntApp.tsx new file mode 100644 index 000000000..452b8013d --- /dev/null +++ b/ui/src/EntApp.tsx @@ -0,0 +1,108 @@ +import React, {useEffect, useState} from 'react'; +import './App.sass'; +import {TrafficPage} from "./components/TrafficPage"; +import {TLSWarning} from "./components/TLSWarning/TLSWarning"; +import {EntHeader} from "./components/Header/EntHeader"; +import Api from "./helpers/api"; +import {toast} from "react-toastify"; +import InstallPage from "./components/InstallPage"; +import LoginPage from "./components/LoginPage"; +import LoadingOverlay from "./components/LoadingOverlay"; +import AuthPageBase from './components/AuthPageBase'; + +const api = Api.getInstance(); + +// TODO: move to state management +export enum Page { + Traffic, + Setup, + Login +} + +// TODO: move to state management +export interface MizuContextModel { + page: Page; + setPage: (page: Page) => void; +} + +// TODO: move to state management +export const MizuContext = React.createContext(null); + +const EntApp = () => { + + const [isLoading, setIsLoading] = useState(true); + const [showTLSWarning, setShowTLSWarning] = useState(false); + const [userDismissedTLSWarning, setUserDismissedTLSWarning] = useState(false); + const [addressesWithTLS, setAddressesWithTLS] = useState(new Set()); + const [page, setPage] = useState(Page.Traffic); // TODO: move to state management + const [isFirstLogin, setIsFirstLogin] = useState(false); + + const determinePage = async () => { // TODO: move to state management + try { + const isInstallNeeded = await api.isInstallNeeded(); + if (isInstallNeeded) { + setPage(Page.Setup); + } else { + const isAuthNeeded = await api.isAuthenticationNeeded(); + if(isAuthNeeded) { + setPage(Page.Login); + } + } + } catch (e) { + toast.error("Error occured while checking Mizu API status, see console for mode details"); + console.error(e); + } finally { + setIsLoading(false); + } + } + + useEffect(() => { + determinePage(); + }, []); + + const onTLSDetected = (destAddress: string) => { + addressesWithTLS.add(destAddress); + setAddressesWithTLS(new Set(addressesWithTLS)); + + if (!userDismissedTLSWarning) { + setShowTLSWarning(true); + } + }; + + let pageComponent: any; + + switch (page) { // TODO: move to state management / proper routing + case Page.Traffic: + pageComponent = ; + break; + case Page.Setup: + pageComponent = setIsFirstLogin(true)}/>; + break; + case Page.Login: + pageComponent = ; + break; + default: + pageComponent =
Unknown Error
; + } + + if (isLoading) { + return ; + } + + return ( +
+ + {page === Page.Traffic && } + {pageComponent} + {page === Page.Traffic && } + +
+ ); +} + +export default EntApp; diff --git a/ui/src/components/AnalyzeButton/AnalyzeButton.tsx b/ui/src/components/AnalyzeButton/AnalyzeButton.tsx new file mode 100644 index 000000000..4f6e0f45b --- /dev/null +++ b/ui/src/components/AnalyzeButton/AnalyzeButton.tsx @@ -0,0 +1,86 @@ +import {Button} from "@material-ui/core"; +import React from "react"; +import Tooltip from "../UI/Tooltip"; +import logo_up9 from "../assets/logo_up9.svg"; +import {makeStyles} from "@material-ui/core/styles"; + +const useStyles = makeStyles(() => ({ + tooltip: { + backgroundColor: "#3868dc", + color: "white", + fontSize: 13, + }, +})); + +interface AnalyseButtonProps { + analyzeStatus: any +} + +export const AnalyzeButton: React.FC = ({analyzeStatus}) => { + + const classes = useStyles(); + + const analysisMessage = analyzeStatus?.isRemoteReady ? + + + + + + + + + + +
StatusAvailable
Messages{analyzeStatus?.sentCount}
+
: + analyzeStatus?.sentCount > 0 ? + + + + + + + + + + + + + +
StatusProcessing
Messages{analyzeStatus?.sentCount}
Please allow a few minutes for the analysis to complete
+
: + + + + + + + + + + +
StatusWaiting for traffic
Messages{analyzeStatus?.sentCount}
+
+ + return (
+ +
+ +
+
+
); +} diff --git a/ui/src/components/AuthPageBase.tsx b/ui/src/components/AuthPageBase.tsx new file mode 100644 index 000000000..6aa397757 --- /dev/null +++ b/ui/src/components/AuthPageBase.tsx @@ -0,0 +1,16 @@ +import React from "react"; +import background from "./assets/authBackground.png"; +import logo from './assets/MizuEntLogoFull.svg'; +import "./style/AuthBasePage.sass"; + + +export const AuthPageBase: React.FC = ({children}) => { + return
+
+ logo +
+ {children} +
; +}; + +export default AuthPageBase; diff --git a/ui/src/components/AuthPresentation/AuthPresentation.sass b/ui/src/components/AuthPresentation/AuthPresentation.sass new file mode 100644 index 000000000..2d973ec0c --- /dev/null +++ b/ui/src/components/AuthPresentation/AuthPresentation.sass @@ -0,0 +1,13 @@ +.authPresentationContainer + display: flex + border-left: 2px #87878759 solid + padding-left: 10px + margin-left: 10px + color: rgba(0,0,0,0.75) + + .authEmail + font-weight: 600 + font-size: 13px + + .authModel + font-size: 11px diff --git a/ui/src/components/AuthPresentation/AuthPresentation.tsx b/ui/src/components/AuthPresentation/AuthPresentation.tsx new file mode 100644 index 000000000..d069f2912 --- /dev/null +++ b/ui/src/components/AuthPresentation/AuthPresentation.tsx @@ -0,0 +1,30 @@ +import React, {useEffect, useState} from "react"; +import Api from "../../helpers/api"; +import './AuthPresentation.sass'; + +const api = Api.getInstance(); + +export const AuthPresentation = () => { + + const [statusAuth, setStatusAuth] = useState(null); + + useEffect(() => { + (async () => { + try { + const auth = await api.getAuthStatus(); + setStatusAuth(auth); + } catch (e) { + console.error(e); + } + })(); + }, []); + + return <> + {statusAuth?.email &&
+
+
{statusAuth.email}
+
{statusAuth.model}
+
+
} + ; +} diff --git a/ui/src/components/EntriesList.tsx b/ui/src/components/EntriesList.tsx index 6b3a6917b..4fb88cbf2 100644 --- a/ui/src/components/EntriesList.tsx +++ b/ui/src/components/EntriesList.tsx @@ -1,4 +1,4 @@ -import React, {useCallback, useEffect, useMemo, useRef, useState} from "react"; +import React, {useCallback, useEffect, useMemo, useState} from "react"; import styles from './style/EntriesList.module.sass'; import ScrollableFeedVirtualized from "react-scrollable-feed-virtualized"; import Moment from 'moment'; @@ -33,14 +33,14 @@ interface EntriesListProps { leftOffBottom: number; truncatedTimestamp: number; setTruncatedTimestamp: any; + scrollableRef: any; } -const api = new Api(); +const api = Api.getInstance(); -export const EntriesList: React.FC = ({entries, setEntries, query, listEntryREF, onSnapBrokenEvent, isSnappedToBottom, setIsSnappedToBottom, queriedCurrent, setQueriedCurrent, queriedTotal, setQueriedTotal, startTime, noMoreDataTop, setNoMoreDataTop, focusedEntryId, setFocusedEntryId, updateQuery, leftOffTop, setLeftOffTop, isWebSocketConnectionClosed, ws, openWebSocket, leftOffBottom, truncatedTimestamp, setTruncatedTimestamp}) => { +export const EntriesList: React.FC = ({entries, setEntries, query, listEntryREF, onSnapBrokenEvent, isSnappedToBottom, setIsSnappedToBottom, queriedCurrent, setQueriedCurrent, queriedTotal, setQueriedTotal, startTime, noMoreDataTop, setNoMoreDataTop, focusedEntryId, setFocusedEntryId, updateQuery, leftOffTop, setLeftOffTop, isWebSocketConnectionClosed, ws, openWebSocket, leftOffBottom, truncatedTimestamp, setTruncatedTimestamp, scrollableRef}) => { const [loadMoreTop, setLoadMoreTop] = useState(false); const [isLoadingTop, setIsLoadingTop] = useState(false); - const scrollableRef = useRef(null); useEffect(() => { const list = document.getElementById('list').firstElementChild; @@ -92,7 +92,7 @@ export const EntriesList: React.FC = ({entries, setEntries, qu if (scrollTo) { scrollableRef.current.scrollToIndex(data.data.length - 1); } - },[setLoadMoreTop, setIsLoadingTop, entries, setEntries, query, setNoMoreDataTop, leftOffTop, setLeftOffTop, queriedCurrent, setQueriedCurrent, setQueriedTotal, setTruncatedTimestamp]); + },[setLoadMoreTop, setIsLoadingTop, entries, setEntries, query, setNoMoreDataTop, leftOffTop, setLeftOffTop, queriedCurrent, setQueriedCurrent, setQueriedTotal, setTruncatedTimestamp, scrollableRef]); useEffect(() => { if(!isWebSocketConnectionClosed || !loadMoreTop || noMoreDataTop) return; diff --git a/ui/src/components/EntryDetailed.tsx b/ui/src/components/EntryDetailed.tsx index 72f8ba5c7..8029429fd 100644 --- a/ui/src/components/EntryDetailed.tsx +++ b/ui/src/components/EntryDetailed.tsx @@ -69,9 +69,7 @@ const EntryTitle: React.FC = ({protocol, data, bodySize, elapsedTime, updat ; }; -const EntrySummary: React.FC = ({data, updateQuery}) => { - const entry = data.base; - +const EntrySummary: React.FC = ({entry, updateQuery}) => { return = ({entryData, updateQu elapsedTime={entryData.data.elapsedTime} updateQuery={updateQuery} /> - {entryData.data && } + {entryData.data && } <> {entryData.data && = ({label, value, updateQuery, selector, overrideQueryValue}) => { +const EntryViewLine: React.FC = ({label, value, updateQuery = null, selector = "", overrideQueryValue = "", displayIconOnMouseOver = true, useTooltip = true}) => { let query: string; if (!selector) { query = ""; @@ -34,7 +38,8 @@ const EntryViewLine: React.FC = ({label, value, updateQuery, style={{float: "right", height: "18px"}} iconStyle={{marginRight: "20px"}} flipped={true} - displayIconOnMouseOver={true} + useTooltip={useTooltip} + displayIconOnMouseOver={displayIconOnMouseOver} > {label} @@ -55,36 +60,54 @@ const EntryViewLine: React.FC = ({label, value, updateQuery, interface EntrySectionCollapsibleTitleProps { title: string, color: string, - isExpanded: boolean, + expanded: boolean, + setExpanded: any, + query?: string, + updateQuery?: any, } -const EntrySectionCollapsibleTitle: React.FC = ({title, color, isExpanded}) => { +const EntrySectionCollapsibleTitle: React.FC = ({title, color, expanded, setExpanded, query = "", updateQuery = null}) => { return
-
- {isExpanded ? '-' : '+'} +
{ + setExpanded(!expanded) + }} + > + {expanded ? '-' : '+'}
- {title} + + {title} +
} interface EntrySectionContainerProps { title: string, color: string, + query?: string, + updateQuery?: any, } -export const EntrySectionContainer: React.FC = ({title, color, children}) => { +export const EntrySectionContainer: React.FC = ({title, color, children, query = "", updateQuery = null}) => { const [expanded, setExpanded] = useState(true); return setExpanded(!expanded)} - title={} + expanded={expanded} + title={} > {children} } interface EntryBodySectionProps { + title: string, content: any, color: string, updateQuery: any, @@ -94,6 +117,7 @@ interface EntryBodySectionProps { } export const EntryBodySection: React.FC = ({ + title, color, updateQuery, content, @@ -101,23 +125,41 @@ export const EntryBodySection: React.FC = ({ contentType, selector, }) => { - const MAXIMUM_BYTES_TO_HIGHLIGHT = 10000; // The maximum of chars to highlight in body, in case the response can be megabytes - const supportedLanguages = [['html', 'html'], ['json', 'json'], ['application/grpc', 'json']]; // [[indicator, languageToUse],...] - const jsonLikeFormats = ['json']; + const MAXIMUM_BYTES_TO_FORMAT = 1000000; // The maximum of chars to highlight in body, in case the response can be megabytes + const jsonLikeFormats = ['json', 'yaml', 'yml']; + const xmlLikeFormats = ['xml', 'html']; const protobufFormats = ['application/grpc']; - const [isWrapped, setIsWrapped] = useState(false); + const supportedFormats = jsonLikeFormats.concat(xmlLikeFormats, protobufFormats); - const formatTextBody = (body): string => { - const chunk = body.slice(0, MAXIMUM_BYTES_TO_HIGHLIGHT); - const bodyBuf = encoding === 'base64' ? atob(chunk) : chunk; + const [isPretty, setIsPretty] = useState(true); + const [showLineNumbers, setShowLineNumbers] = useState(true); + const [decodeBase64, setDecodeBase64] = useState(true); + + const isBase64Encoding = encoding === 'base64'; + const supportsPrettying = supportedFormats.some(format => contentType?.indexOf(format) > -1); + + const formatTextBody = (body: any): string => { + if (!decodeBase64) return body; + + const chunk = body.slice(0, MAXIMUM_BYTES_TO_FORMAT); + const bodyBuf = isBase64Encoding ? atob(chunk) : chunk; + + if (!isPretty) return bodyBuf; try { if (jsonLikeFormats.some(format => contentType?.indexOf(format) > -1)) { - return JSON.stringify(JSON.parse(bodyBuf), null, 2); + return jsonBeautify(JSON.parse(bodyBuf), null, 2, 80); + } else if (xmlLikeFormats.some(format => contentType?.indexOf(format) > -1)) { + return xmlBeautify(bodyBuf, { + indentation: ' ', + filter: (node) => node.type !== 'Comment', + collapseContent: true, + lineSeparator: '\n' + }); } else if (protobufFormats.some(format => contentType?.indexOf(format) > -1)) { // Replace all non printable characters (ASCII) const protobufDecoder = new ProtobufDecoder(bodyBuf, true); - return JSON.stringify(protobufDecoder.decode().toSimple(), null, 2); + return jsonBeautify(protobufDecoder.decode().toSimple(), null, 2, 80); } } catch (error) { console.error(error); @@ -125,33 +167,33 @@ export const EntryBodySection: React.FC = ({ return bodyBuf; } - const getLanguage = (mimetype) => { - const chunk = content?.slice(0, 100); - if (chunk.indexOf('html') > 0 || chunk.indexOf('HTML') > 0) return supportedLanguages[0][1]; - const language = supportedLanguages.find(el => (mimetype + contentType).indexOf(el[0]) > -1); - return language ? language[1] : 'default'; - } - return - {content && content?.length > 0 && - - - - {encoding && } - -
+ {content && content?.length > 0 && +
+ {supportsPrettying &&
+ {setIsPretty(!isPretty)}}/> +
} + {supportsPrettying && Pretty} -
setIsWrapped(!isWrapped)}> -
- {}}/> +
+ {setShowLineNumbers(!showLineNumbers)}}/>
- Wrap text + Line numbers + + {isBase64Encoding &&
+ {setDecodeBase64(!decodeBase64)}}/> +
} + {isBase64Encoding && Decode Base64}
} @@ -165,13 +207,27 @@ interface EntrySectionProps { } export const EntryTableSection: React.FC = ({title, color, arrayToIterate, updateQuery}) => { + let arrayToIterateSorted: any[]; + if (arrayToIterate) { + arrayToIterateSorted = arrayToIterate.sort((a, b) => { + if (a.name > b.name) { + return 1; + } + + if (a.name < b.name) { + return -1; + } + + return 0; + }); + } return { arrayToIterate && arrayToIterate.length > 0 ? - {arrayToIterate.map(({name, value, selector}, index) => = ({label, matched, isExpanded}) => { +const EntryPolicySectionCollapsibleTitle: React.FC = ({label, matched, expanded, setExpanded}) => { return
- - {isExpanded ? '-' : '+'} + { + setExpanded(!expanded) + }} + > + {expanded ? '-' : '+'}
@@ -222,9 +285,8 @@ export const EntryPolicySectionContainer: React.FC setExpanded(!expanded)} - title={} + expanded={expanded} + title={} > {children} @@ -303,7 +365,6 @@ export const EntryContractSection: React.FC = ({color } {contractContent && diff --git a/ui/src/components/EntryDetailed/EntryViewer.module.sass b/ui/src/components/EntryDetailed/EntryViewer.module.sass index fdc1e7195..92317867e 100644 --- a/ui/src/components/EntryDetailed/EntryViewer.module.sass +++ b/ui/src/components/EntryDetailed/EntryViewer.module.sass @@ -51,6 +51,7 @@ color: $blue-gray border-radius: 4px padding: 10px + position: relative .bodyHeader padding: 0 1rem .endpointURL diff --git a/ui/src/components/EntryDetailed/EntryViewer.tsx b/ui/src/components/EntryDetailed/EntryViewer.tsx index dabf3d5b7..e7cf3a40e 100644 --- a/ui/src/components/EntryDetailed/EntryViewer.tsx +++ b/ui/src/components/EntryDetailed/EntryViewer.tsx @@ -21,7 +21,7 @@ const SectionsRepresentation: React.FC = ({data, color, updateQuery}) => { break; case SectionTypes.SectionBody: sections.push( - + ) break; default: diff --git a/ui/src/components/EntryListItem/EntryListItem.module.sass b/ui/src/components/EntryListItem/EntryListItem.module.sass index 7e396d136..bb0fc9424 100644 --- a/ui/src/components/EntryListItem/EntryListItem.module.sass +++ b/ui/src/components/EntryListItem/EntryListItem.module.sass @@ -68,6 +68,7 @@ flex-direction: column overflow: hidden padding-right: 10px + padding-top: 4px flex-grow: 1 .separatorRight @@ -92,3 +93,13 @@ .ip margin-left: 5px + +@media (max-width: 1760px) + .timestamp + display: none + .separatorRight + border-right: 0px + +@media (max-width: 1340px) + .separatorRight + display: none diff --git a/ui/src/components/EntryListItem/EntryListItem.tsx b/ui/src/components/EntryListItem/EntryListItem.tsx index d88575250..8cdaeb22a 100644 --- a/ui/src/components/EntryListItem/EntryListItem.tsx +++ b/ui/src/components/EntryListItem/EntryListItem.tsx @@ -20,11 +20,11 @@ interface TCPInterface { } interface Entry { - protocol: ProtocolInterface, + proto: ProtocolInterface, method?: string, summary: string, id: number, - statusCode?: number; + status?: number; timestamp: Date; src: TCPInterface, dst: TCPInterface, @@ -53,7 +53,7 @@ export const EntryItem: React.FC = ({entry, focusedEntryId, setFocus const isSelected = focusedEntryId === entry.id.toString(); - const classification = getClassification(entry.statusCode) + const classification = getClassification(entry.status) const numberOfRules = entry.rules.numberOfRules let ingoingIcon; let outgoingIcon; @@ -123,7 +123,7 @@ export const EntryItem: React.FC = ({entry, focusedEntryId, setFocus break; } - const isStatusCodeEnabled = ((entry.protocol.name === "http" && "statusCode" in entry) || entry.statusCode !== 0); + const isStatusCodeEnabled = ((entry.proto.name === "http" && "status" in entry) || entry.status !== 0); var endpointServiceContainer = "10px"; if (!isStatusCodeEnabled) endpointServiceContainer = "20px"; @@ -137,7 +137,7 @@ export const EntryItem: React.FC = ({entry, focusedEntryId, setFocus setFocusedEntryId(entry.id.toString()); }} style={{ - border: isSelected ? `1px ${entry.protocol.backgroundColor} solid` : "1px transparent solid", + border: isSelected ? `1px ${entry.proto.backgroundColor} solid` : "1px transparent solid", position: !headingMode ? "absolute" : "unset", top: style['top'], marginTop: !headingMode ? style['marginTop'] : "10px", @@ -145,12 +145,12 @@ export const EntryItem: React.FC = ({entry, focusedEntryId, setFocus }} > {!headingMode ? : null} {isStatusCodeEnabled &&
- +
}
@@ -161,7 +161,9 @@ export const EntryItem: React.FC = ({entry, focusedEntryId, setFocus displayIconOnMouseOver={true} flipped={true} style={{marginTop: "-4px", overflow: "visible"}} - iconStyle={!headingMode ? {marginTop: "4px", left: "68px", position: "absolute"} : {marginTop: "4px", left: "calc(50vw + 41px)", position: "absolute"}} + iconStyle={!headingMode ? {marginTop: "4px", left: "68px", position: "absolute"} : + entry.proto.name === "http" ? {marginTop: "4px", left: "calc(50vw + 41px)", position: "absolute"} : + {marginTop: "4px", left: "calc(50vw - 9px)", position: "absolute"}} > = ({entry, focusedEntryId, setFocus {entry.src.name ? entry.src.name : "[Unresolved]"} - + = ({entry, focusedEntryId, setFocus {entry.src.ip} - : + {entry.src.port ? ":" : ""} void; } -const style = { +export const modalStyle = { position: 'absolute', top: '10%', left: '50%', @@ -45,6 +45,7 @@ const style = { bgcolor: 'background.paper', borderRadius: '5px', boxShadow: 24, + outline: "none", p: 4, color: '#000', }; @@ -153,11 +154,11 @@ export const QueryForm: React.FC = ({query, setQuery, background style={{overflow: 'auto'}} > - + Filtering Guide (Cheatsheet) - +

Mizu has a rich filtering syntax that let's you query the results both flexibly and efficiently.

Here are some examples that you can try;

@@ -167,7 +168,6 @@ export const QueryForm: React.FC = ({query, setQuery, background This is a simple query that matches to HTTP packets with request path "/catalogue":
= ({query, setQuery, background The same query can be negated for HTTP path and written like this: = ({query, setQuery, background The syntax supports regular expressions. Here is a query that matches the HTTP requests that send JSON to a server: = ({query, setQuery, background Here is another query that matches HTTP responses with status code 4xx: = ({query, setQuery, background The same exact query can be as integer comparison: = 400`} language="python" @@ -212,7 +208,6 @@ export const QueryForm: React.FC = ({query, setQuery, background The results can be queried based on their timestamps: = ({query, setQuery, background Since Mizu supports various protocols like gRPC, AMQP, Kafka and Redis. It's possible to write complex queries that match multiple protocols like this: = ({query, setQuery, background Such that; clicking this icon in left-pane, would append the query below: = ({query, setQuery, background A query that compares one selector to another is also a valid query: = ({query, setQuery, background

- true if the given selector's value starts with the string: + true if the given selector's value starts with (similarly endsWith, contains) the string: - true if the given selector's value ends with the string: + a field that contains a JSON encoded string can be filtered based a JSONPath: - true if the given selector's value contains the string: + fields that contain sensitive information can be redacted: returns the UNIX timestamp which is the equivalent of the time that's provided by the string. Invalid input evaluates to false: = datetime("10/19/2021, 6:29:02.593 PM")`} language="python" @@ -312,7 +300,6 @@ export const QueryForm: React.FC = ({query, setQuery, background limits the number of records that are streamed back as a result of a query. Always evaluates to true: void +} + +export const EntHeader: React.FC = ({isFirstLogin, setIsFirstLogin}) => { + + const [isSettingsModalOpen, setIsSettingsModalOpen] = useState(false); + + useEffect(() => { + if(isFirstLogin) { + setIsSettingsModalOpen(true) + } + }, [isFirstLogin]) + + const onSettingsModalClose = () => { + setIsSettingsModalOpen(false); + setIsFirstLogin(false); + } + + return
+
+
+ logo +
+
+
+ settings setIsSettingsModalOpen(true)}/> + +
+ +
; +} + +const ProfileButton = () => { + + const {setPage} = useContext(MizuContext); + + const logout = async (popupState) => { + try { + await api.logout(); + setPage(Page.Login); + } catch (e) { + toast.error("Something went wrong, please check the console"); + console.error(e); + } + popupState.close(); + } + + return ( + {(popupState) => ( + + user + + logout(popupState)}> + logout + Log Out + + + + )} + ); +} diff --git a/ui/src/components/Header/Header.sass b/ui/src/components/Header/Header.sass new file mode 100644 index 000000000..dfc2c4cad --- /dev/null +++ b/ui/src/components/Header/Header.sass @@ -0,0 +1,23 @@ +@import '../../variables.module' + +.header + height: 60px + display: flex + align-items: center + padding: 5px 24px + justify-content: space-between + + .title + letter-spacing: 2px + + img + height: 45px + + .description + margin-left: 10px + font-size: 11px + font-weight: bold + color: $light-blue-color + + .headerIcon + cursor: pointer diff --git a/ui/src/components/Header/Header.tsx b/ui/src/components/Header/Header.tsx new file mode 100644 index 000000000..84f0ccd3c --- /dev/null +++ b/ui/src/components/Header/Header.tsx @@ -0,0 +1,21 @@ +import React from "react"; +import {AuthPresentation} from "../AuthPresentation/AuthPresentation"; +import {AnalyzeButton} from "../AnalyzeButton/AnalyzeButton"; +import logo from '../assets/Mizu-logo.svg'; +import './Header.sass'; + +interface HeaderProps { + analyzeStatus: any +} +export const Header: React.FC = ({analyzeStatus}) => { + return
+
+
logo
+
Traffic viewer for Kubernetes
+
+
+ {analyzeStatus?.isAnalyzing && } + +
+
; +} diff --git a/ui/src/components/InstallPage.tsx b/ui/src/components/InstallPage.tsx new file mode 100644 index 000000000..fcc88c559 --- /dev/null +++ b/ui/src/components/InstallPage.tsx @@ -0,0 +1,82 @@ +import { Button } from "@material-ui/core"; +import React, { useContext, useState } from "react"; +import { MizuContext, Page } from "../EntApp"; +import { adminUsername } from "../consts"; +import Api, { FormValidationErrorType } from "../helpers/api"; +import { toast } from 'react-toastify'; +import LoadingOverlay from "./LoadingOverlay"; +import { useCommonStyles } from "../helpers/commonStyle"; + +const api = Api.getInstance(); + +interface InstallPageProps { + onFirstLogin: () => void; +} + +export const InstallPage: React.FC = ({onFirstLogin}) => { + + const classes = useCommonStyles(); + const [isLoading, setIsLoading] = useState(false); + const [password, setPassword] = useState(""); + const [passwordConfirm, setPasswordConfirm] = useState(""); + + const {setPage} = useContext(MizuContext); + + const onFormSubmit = async () => { + if (password.length < 4) { + toast.error("Password must be at least 4 characters long"); + return; + } else if (password !== passwordConfirm) { + toast.error("Passwords do not match"); + return; + } + + try { + setIsLoading(true); + await api.register(adminUsername, password); + if (!await api.isAuthenticationNeeded()) { + setPage(Page.Traffic); + onFirstLogin(); + } + } catch (e) { + if (e.type === FormValidationErrorType) { + for (const messages of Object.values(e.messages) as any[]) { + for (const message of messages) { + toast.error(message.text); + } + } + } + console.error(e); + } finally { + setIsLoading(false); + } + + } + + const handleFormOnKeyPress = (e: React.KeyboardEvent) => { + if (e.key === "Enter") { + onFormSubmit(); + } + }; + + return
+ {isLoading && } +
Setup
+ Welcome to Mizu, please set up the admin user to continue +
+ + +
+
+ + setPassword(event.target.value)}/> +
+
+ + setPasswordConfirm(event.target.value)}/> +
+ +
; +}; + +export default InstallPage; diff --git a/ui/src/components/LoadingOverlay.tsx b/ui/src/components/LoadingOverlay.tsx new file mode 100644 index 000000000..27dcc2a02 --- /dev/null +++ b/ui/src/components/LoadingOverlay.tsx @@ -0,0 +1,31 @@ +import React, {useEffect, useState} from "react"; +import './style/LoadingOverlay.sass'; + +const SpinnerShowDelayMs = 350; + +interface LoadingOverlayProps { + delay?: number +} + +const LoadingOverlay: React.FC = ({delay}) => { + + const [isVisible, setIsVisible] = useState(false); + + // @ts-ignore + useEffect(() => { + let isRelevant = true; + + setTimeout(() => { + if(isRelevant) + setIsVisible(true); + }, delay ?? SpinnerShowDelayMs); + + return () => isRelevant = false; + }, [delay]); + + return
+ + + + + + + + {filteredNamespaces?.map(namespace => { + return + + + + } + )} + +
tap === true)} + onToggle={toggleAll}/>Namespace
+ toggleTapNamespace(namespace)}/> + {namespace}
+ } + + const onModalClose = (reason) => { + if(reason === 'backdropClick' && isFirstLogin) return; + onClose(); + } + + return onModalClose(reason)} + closeAfterTransition + BackdropComponent={Backdrop} + BackdropProps={{ + timeout: 500, + }} + style={{overflow: 'auto'}} + > + + +
+
Tapping Settings
+
+ Please choose from below the namespaces for tapping, traffic for namespaces selected will be displayed +
+ {isLoading ?
+ spinner +
: <> +
+
+ setSearchValue(event.target.value)}/>
+
+ {buildNamespacesTable()} +
+
+ } +
+
+ {!isFirstLogin && + } + +
+
+
+
+} diff --git a/ui/src/components/SettingsModal/SettingsModal.sass b/ui/src/components/SettingsModal/SettingsModal.sass new file mode 100644 index 000000000..863262638 --- /dev/null +++ b/ui/src/components/SettingsModal/SettingsModal.sass @@ -0,0 +1,54 @@ +@import "../../variables.module" + +.settingsTitle + font-size: 28px + color: $blue-gray + font-weight: 600 + +.settingsSubtitle + font-size: 14px + color: $light-gray + margin-top: 20px + line-height: 20px + +.namespacesSettingsContainer + border-radius: 4px + padding: 20px 0 + + .searchNamespace + width: 300px + max-width: calc(40vw - 85px) + +.settingsActionsContainer + display: flex + justify-content: flex-end + padding: 20px + border-top: 2px $data-background-color solid + +.namespacesTable + table + width: 100% + margin-top: 20px + + tbody + max-height: calc(70vh - 355px) + overflow-y: auto + display: block + + th + color: $blue-gray + text-align: left + padding: 10px + + tr + border-bottom-width: 1px + border-bottom-color: $data-background-color + border-bottom-style: solid + display: table + table-layout: fixed + width: 100% + + td + color: $light-gray + padding: 10px + font-size: 16px diff --git a/ui/src/components/TLSWarning/TLSWarning.sass b/ui/src/components/TLSWarning/TLSWarning.sass new file mode 100644 index 000000000..76f77b401 --- /dev/null +++ b/ui/src/components/TLSWarning/TLSWarning.sass @@ -0,0 +1,12 @@ +.httpsDomains + display: none + margin: 0 + padding: 0 + list-style: none + +.customWarningStyle + &:hover + overflow-y: scroll + height: 85px + .httpsDomains + display: block diff --git a/ui/src/components/TLSWarning/TLSWarning.tsx b/ui/src/components/TLSWarning/TLSWarning.tsx new file mode 100644 index 000000000..492e42044 --- /dev/null +++ b/ui/src/components/TLSWarning/TLSWarning.tsx @@ -0,0 +1,42 @@ +import {Snackbar} from "@material-ui/core"; +import MuiAlert from "@material-ui/lab/Alert"; +import React, {useEffect} from "react"; +import Api from "../../helpers/api"; +import './TLSWarning.sass'; + +const api = Api.getInstance(); + +interface TLSWarningProps { + showTLSWarning: boolean + setShowTLSWarning: (show: boolean) => void + addressesWithTLS: Set + setAddressesWithTLS: (addresses: Set) => void + userDismissedTLSWarning: boolean + setUserDismissedTLSWarning: (flag: boolean) => void +} + +export const TLSWarning: React.FC = ({showTLSWarning, setShowTLSWarning, addressesWithTLS, setAddressesWithTLS, userDismissedTLSWarning, setUserDismissedTLSWarning}) => { + + useEffect(() => { + (async () => { + try { + const recentTLSLinks = await api.getRecentTLSLinks(); + if (recentTLSLinks?.length > 0) { + setAddressesWithTLS(new Set(recentTLSLinks)); + setShowTLSWarning(true); + } + } catch (e) { + console.error(e); + } + })(); + }, [setShowTLSWarning, setAddressesWithTLS]); + + return ( + setUserDismissedTLSWarning(true)} severity="warning"> + Mizu is detecting TLS traffic, this type of traffic will not be displayed. + {addressesWithTLS.size > 0 && +
    {Array.from(addressesWithTLS, address =>
  • {address}
  • )}
} +
+
); +} diff --git a/ui/src/components/TrafficPage.tsx b/ui/src/components/TrafficPage.tsx index 0faf7a816..57fc6a603 100644 --- a/ui/src/components/TrafficPage.tsx +++ b/ui/src/components/TrafficPage.tsx @@ -10,8 +10,7 @@ import pauseIcon from './assets/pause.svg'; import variables from '../variables.module.scss'; import {StatusBar} from "./UI/StatusBar"; import Api, {MizuWebsocketURL} from "../helpers/api"; -import { ToastContainer, toast } from 'react-toastify'; -import 'react-toastify/dist/ReactToastify.css'; +import { toast } from 'react-toastify'; import debounce from 'lodash/debounce'; const useLayoutStyles = makeStyles(() => ({ @@ -40,13 +39,13 @@ enum ConnectionStatus { } interface TrafficPageProps { - setAnalyzeStatus: (status: any) => void; onTLSDetected: (destAddress: string) => void; + setAnalyzeStatus?: (status: any) => void; } -const api = new Api(); +const api = Api.getInstance(); -export const TrafficPage: React.FC = ({setAnalyzeStatus, onTLSDetected}) => { +export const TrafficPage: React.FC = ({onTLSDetected, setAnalyzeStatus}) => { const classes = useLayoutStyles(); @@ -73,6 +72,8 @@ export const TrafficPage: React.FC = ({setAnalyzeStatus, onTLS const [startTime, setStartTime] = useState(0); + const scrollableRef = useRef(null); + const handleQueryChange = useMemo(() => debounce(async (query: string) => { if (!query) { setQueryBackgroundColor("#f5f5f5") @@ -91,7 +92,7 @@ export const TrafficPage: React.FC = ({setAnalyzeStatus, onTLS useEffect(() => { handleQueryChange(query); - }, [query]); + }, [query, handleQueryChange]); useEffect(() => { if (query) { @@ -152,7 +153,8 @@ export const TrafficPage: React.FC = ({setAnalyzeStatus, onTLS setTappingStatus(message.tappingStatus); break case "analyzeStatus": - setAnalyzeStatus(message.analyzeStatus); + if(setAnalyzeStatus) + setAnalyzeStatus(message.analyzeStatus); break case "outboundLink": onTLSDetected(message.Data.DstIP); @@ -193,8 +195,10 @@ export const TrafficPage: React.FC = ({setAnalyzeStatus, onTLS try{ const tapStatusResponse = await api.tapStatus(); setTappingStatus(tapStatusResponse); - const analyzeStatusResponse = await api.analyzeStatus(); - setAnalyzeStatus(analyzeStatusResponse); + if(setAnalyzeStatus) { + const analyzeStatusResponse = await api.analyzeStatus(); + setAnalyzeStatus(analyzeStatusResponse); + } } catch (error) { console.error(error); } @@ -208,10 +212,10 @@ export const TrafficPage: React.FC = ({setAnalyzeStatus, onTLS setSelectedEntryData(null); (async () => { try { - const entryData = await api.getEntry(focusedEntryId); + const entryData = await api.getEntry(focusedEntryId, query); setSelectedEntryData(entryData); } catch (error) { - if (error.response) { + if (error.response?.data?.type) { toast[error.response.data.type](`Entry[${focusedEntryId}]: ${error.response.data.msg}`, { position: "bottom-right", theme: "colored", @@ -237,6 +241,8 @@ export const TrafficPage: React.FC = ({setAnalyzeStatus, onTLS } else { openWebSocket(`leftOff(-1)`, true); } + scrollableRef.current.jumpToBottom(); + setIsSnappedToBottom(true); } } @@ -316,6 +322,7 @@ export const TrafficPage: React.FC = ({setAnalyzeStatus, onTLS leftOffBottom={leftOffBottom} truncatedTimestamp={truncatedTimestamp} setTruncatedTimestamp={setTruncatedTimestamp} + scrollableRef={scrollableRef} />
@@ -324,17 +331,6 @@ export const TrafficPage: React.FC = ({setAnalyzeStatus, onTLS
} {tappingStatus && } - ) }; diff --git a/ui/src/components/UI/Checkbox.tsx b/ui/src/components/UI/Checkbox.tsx index 734f045e2..84f8bfab7 100644 --- a/ui/src/components/UI/Checkbox.tsx +++ b/ui/src/components/UI/Checkbox.tsx @@ -8,8 +8,8 @@ export interface Props { const Checkbox: React.FC = ({checked, onToggle}) => { return ( -
- onToggle(event.target.checked)}/> +
+ onToggle(event.target.checked)}/>
); }; diff --git a/ui/src/components/UI/CollapsibleContainer.tsx b/ui/src/components/UI/CollapsibleContainer.tsx index 4c0452623..c59fcb6be 100644 --- a/ui/src/components/UI/CollapsibleContainer.tsx +++ b/ui/src/components/UI/CollapsibleContainer.tsx @@ -1,38 +1,25 @@ -import React, {useState} from "react"; +import React from "react"; import collapsedImg from "../assets/collapsed.svg"; import expandedImg from "../assets/expanded.svg"; import "./style/CollapsibleContainer.sass"; interface Props { title: string | React.ReactNode, - onClick?: (e: React.SyntheticEvent) => void, - isExpanded?: boolean, + expanded: boolean, titleClassName?: string, - stickyHeader?: boolean, className?: string, - initialExpanded?: boolean; - passiveOnClick?: boolean; //whether specifying onClick overrides internal _isExpanded state handling + stickyHeader?: boolean, } -const CollapsibleContainer: React.FC = ({title, children, isExpanded, onClick, titleClassName, stickyHeader = false, className, initialExpanded = true, passiveOnClick}) => { - const [_isExpanded, _setExpanded] = useState(initialExpanded); - let expanded = isExpanded !== undefined ? isExpanded : _isExpanded; +const CollapsibleContainer: React.FC = ({title, children, expanded, titleClassName, className, stickyHeader = false}) => { const classNames = `CollapsibleContainer ${expanded ? "CollapsibleContainer-Expanded" : "CollapsibleContainer-Collapsed"} ${className ? className : ''}`; - // This is needed to achieve the sticky header feature. + // This is needed to achieve the sticky header feature. // It is needed an un-contained component for the css to work properly. const content =
{ - if (onClick) { - onClick(e) - if (passiveOnClick !== true) - return; - } - _setExpanded(!_isExpanded) - }} > { React.isValidElement(title)? diff --git a/ui/src/components/UI/StatusBar.tsx b/ui/src/components/UI/StatusBar.tsx index d8f71b48b..f34ad0d12 100644 --- a/ui/src/components/UI/StatusBar.tsx +++ b/ui/src/components/UI/StatusBar.tsx @@ -39,16 +39,16 @@ export const StatusBar: React.FC = ({tappingStatus}) => { - - - + + + {tappingStatus.map(pod => - - - + + + )}
Pod nameNamespaceTappingPod nameNamespaceTapping
{pod.name}{pod.namespace}status{pod.name}{pod.namespace}status
diff --git a/ui/src/components/UI/SyntaxHighlighter/highlighterStyle.ts b/ui/src/components/UI/SyntaxHighlighter/highlighterStyle.ts deleted file mode 100644 index 1766e309a..000000000 --- a/ui/src/components/UI/SyntaxHighlighter/highlighterStyle.ts +++ /dev/null @@ -1,152 +0,0 @@ -export const highlighterStyle = { - "code[class*=\"language-\"]": { - "color": "#494677", - "fontFamily": "Inconsolata, Monaco, Consolas, 'Courier New', Courier, monospace", - "direction": "ltr", - "textAlign": "left", - "whiteSpace": "pre", - "wordSpacing": "normal", - "wordBreak": "normal", - "lineHeight": "1.5", - "MozTabSize": "4", - "OTabSize": "4", - "tabSize": "4", - "padding": "1rem", - "WebkitHyphetokenns": "none", - "MozHyphens": "none", - "msHyphens": "none", - "hyphens": "none" - }, - "pre[class*=\"language-\"]": { - "color": "#494677", - "fontFamily": "Inconsolata, Monaco, Consolas, 'Courier New', Courier, monospace", - "direction": "ltr", - "textAlign": "left", - "whiteSpace": "pre", - "wordSpacing": "normal", - "wordBreak": "normal", - "lineHeight": "1.2", - "MozTabSize": "4", - "OTabSize": "4", - "tabSize": "4", - "WebkitHyphens": "none", - "MozHyphens": "none", - "msHyphens": "none", - "hyphens": "none", - "padding": "0", - "margin": ".5em 0", - "overflow": "auto", - "borderRadius": "0.3em", - "background": "#F7F9FC" - }, - ":not(pre) > code[class*=\"language-\"]": { - "background": "#F7F9FC", - "padding": ".1em", - "borderRadius": ".3em" - }, - "comment": { - "color": "#5d6aa0" - }, - "prolog": { - "color": "#494677" - }, - "doctype": { - "color": "#494677" - }, - "cdata": { - "color": "#494677" - }, - "punctuation": { - "color": "#494677" - }, - ".namespace": { - "Opacity": ".7" - }, - "property": { - "color": "#627ef7" - }, - "keyword": { - "color": "#627ef7" - }, - "tag": { - "color": "#627ef7" - }, - "class-name": { - "color": "#3eb545", - "textDecoration": "underline" - }, - "boolean": { - "color": "#3eb545" - }, - "constant": { - "color": "#3eb545" - }, - "symbol": { - "color": "#ff3a30" - }, - "deleted": { - "color": "#ff3a30" - }, - "number": { - "color": "#ff16f7" - }, - "selector": { - "color": "rgb(9,224,19)" - }, - "attr-name": { - "color": "rgb(9,224,19)" - }, - "string": { - "color": "rgb(9,224,19)" - }, - "char": { - "color": "rgb(9,224,19)" - }, - "builtin": { - "color": "rgb(9,224,19)" - }, - "inserted": { - "color": "rgb(9,224,19)" - }, - "variable": { - "color": "#C6C5FE" - }, - "operator": { - "color": "#A1A1A1" - }, - "entity": { - "color": "#fdab2b", - "cursor": "help" - }, - "url": { - "color": "#96CBFE" - }, - ".language-css .token.string": { - "color": "#87C38A" - }, - ".style .token.string": { - "color": "#87C38A" - }, - "atrule": { - "color": "#fdab2b" - }, - "attr-value": { - "color": "#f8c575" - }, - "function": { - "color": "#fdab2b" - }, - "regex": { - "color": "#fab248" - }, - "important": { - "color": "#fd971f", - "fontWeight": "bold" - }, - "bold": { - "fontWeight": "bold" - }, - "italic": { - "fontStyle": "italic" - } -}; diff --git a/ui/src/components/UI/SyntaxHighlighter/index.scss b/ui/src/components/UI/SyntaxHighlighter/index.scss index 623c71509..d735e6fe6 100644 --- a/ui/src/components/UI/SyntaxHighlighter/index.scss +++ b/ui/src/components/UI/SyntaxHighlighter/index.scss @@ -26,12 +26,24 @@ } } -.wrapped{ - pre { - code { - &:last-child { - white-space: pre-wrap!important - } - } - } -} \ No newline at end of file +code.hljs { + white-space: pre-wrap; +} + +code.hljs:before { + counter-reset: listing; +} + +code.hljs .hljs-marker-line { + counter-increment: listing; +} + +code.hljs .hljs-marker-line:before { + content: counter(listing) " "; + display: inline-block; + width: 3rem; + padding-left: auto; + margin-left: auto; + text-align: right; + opacity: .5; +} diff --git a/ui/src/components/UI/SyntaxHighlighter/index.tsx b/ui/src/components/UI/SyntaxHighlighter/index.tsx index 3b2efe644..313971bbf 100644 --- a/ui/src/components/UI/SyntaxHighlighter/index.tsx +++ b/ui/src/components/UI/SyntaxHighlighter/index.tsx @@ -1,30 +1,47 @@ import React from 'react'; -import {Prism as SyntaxHighlighterContainer} from 'react-syntax-highlighter'; -import {highlighterStyle} from './highlighterStyle' +import Lowlight from 'react-lowlight' +import 'highlight.js/styles/atom-one-light.css' import './index.scss'; +import xml from 'highlight.js/lib/languages/xml' +import json from 'highlight.js/lib/languages/json' +import protobuf from 'highlight.js/lib/languages/protobuf' +import javascript from 'highlight.js/lib/languages/javascript' +import actionscript from 'highlight.js/lib/languages/actionscript' +import wasm from 'highlight.js/lib/languages/wasm' +import handlebars from 'highlight.js/lib/languages/handlebars' +import yaml from 'highlight.js/lib/languages/yaml' +import python from 'highlight.js/lib/languages/python' + +Lowlight.registerLanguage('python', python); +Lowlight.registerLanguage('xml', xml); +Lowlight.registerLanguage('json', json); +Lowlight.registerLanguage('yaml', yaml); +Lowlight.registerLanguage('protobuf', protobuf); +Lowlight.registerLanguage('javascript', javascript); +Lowlight.registerLanguage('actionscript', actionscript); +Lowlight.registerLanguage('wasm', wasm); +Lowlight.registerLanguage('handlebars', handlebars); + interface Props { code: string; - style?: any; showLineNumbers?: boolean; - className?: string; language?: string; - isWrapped?: boolean; } export const SyntaxHighlighter: React.FC = ({ - code, - style = highlighterStyle, - showLineNumbers = true, - className, - language = 'python', - isWrapped = false, - }) => { - return
- - {code ?? ""} - -
; + code, + showLineNumbers = false, + language = null + }) => { + const markers = showLineNumbers ? code.split("\n").map((item, i) => { + return { + line: i + 1, + className: 'hljs-marker-line' + } + }) : []; + + return
; }; export default SyntaxHighlighter; diff --git a/ui/src/components/UI/style/StatusBar.sass b/ui/src/components/UI/style/StatusBar.sass index f6e66624c..043a8b2e7 100644 --- a/ui/src/components/UI/style/StatusBar.sass +++ b/ui/src/components/UI/style/StatusBar.sass @@ -11,7 +11,7 @@ border-bottom-left-radius: 8px border-bottom-right-radius: 8px top: 0 - padding: 2px 10px + padding: 10px font-size: 14px transition: max-height 2s ease-out width: auto @@ -21,19 +21,30 @@ .podsCount display: flex justify-content: center - padding: 8px font-weight: 600 img margin-right: 10px height: 22px - th - text-align: left - padding-right: 15px - td - padding-right: 15px - padding-top: 5px + table + width: 100% + margin-top: 20px + + tbody + max-height: 70vh + overflow-y: auto + display: block + tr + display: table + table-layout: fixed + width: 100% + th + text-align: left + padding-right: 5% + td + text-align: left + padding-right: 5% .expandedStatusBar max-height: 100vh diff --git a/ui/src/components/assets/MizuEntLogo.svg b/ui/src/components/assets/MizuEntLogo.svg new file mode 100644 index 000000000..d5b9e2d56 --- /dev/null +++ b/ui/src/components/assets/MizuEntLogo.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/ui/src/components/assets/MizuEntLogoFull.svg b/ui/src/components/assets/MizuEntLogoFull.svg new file mode 100644 index 000000000..49011a712 --- /dev/null +++ b/ui/src/components/assets/MizuEntLogoFull.svg @@ -0,0 +1,136 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ui/src/components/assets/authBackground.png b/ui/src/components/assets/authBackground.png new file mode 100644 index 000000000..f67800313 Binary files /dev/null and b/ui/src/components/assets/authBackground.png differ diff --git a/ui/src/components/assets/logout.png b/ui/src/components/assets/logout.png new file mode 100644 index 000000000..3bf6511ba Binary files /dev/null and b/ui/src/components/assets/logout.png differ diff --git a/ui/src/components/assets/settings.svg b/ui/src/components/assets/settings.svg new file mode 100644 index 000000000..23ce2d9de --- /dev/null +++ b/ui/src/components/assets/settings.svg @@ -0,0 +1,3 @@ + + + diff --git a/ui/src/components/assets/user-circle.svg b/ui/src/components/assets/user-circle.svg new file mode 100644 index 000000000..ef8ed8880 --- /dev/null +++ b/ui/src/components/assets/user-circle.svg @@ -0,0 +1,4 @@ + + + + diff --git a/ui/src/components/style/AuthBasePage.sass b/ui/src/components/style/AuthBasePage.sass new file mode 100644 index 000000000..82d33ba40 --- /dev/null +++ b/ui/src/components/style/AuthBasePage.sass @@ -0,0 +1,53 @@ +@import "../../variables.module" + +.authContainer + height: 100vh + width: 100vw + background-size: cover + float: left + + .authHeader + margin: 80px 0 120px 0 + width: 100% + display: flex + align-items: center + justify-content: center + +.centeredForm + background-color: $main-background-color + border-radius: 5px + box-shadow: 0 0 20px -4px $light-blue-color + + padding: 35px + max-width: 350px + text-align: center + display: flex + flex-direction: column + margin: 0 auto + +.form-button + margin-top: 25px !important + padding: 14px 0 !important + .MuiButton-label + text-transform: none !important + +.form-input + margin-top: 20px !important + input + width: 100% + box-sizing: border-box + label + float: left + font-size: 12px + opacity: 0.7 + margin-bottom: 4px + +.form-title + font-size: 28px + color: $blue-gray + font-weight: 600 + text-align: left + +.form-subtitle + text-align: left + margin: 4% 0 diff --git a/ui/src/components/style/Filters.module.sass b/ui/src/components/style/Filters.module.sass index a815d7a9d..05ca06971 100644 --- a/ui/src/components/style/Filters.module.sass +++ b/ui/src/components/style/Filters.module.sass @@ -32,9 +32,8 @@ fieldset border: none -$divider-breakpoint-1: 1474px -$divider-breakpoint-2: 1366px -$divider-breakpoint-3: 1980px +$divider-breakpoint-1: 1055px +$divider-breakpoint-2: 1453px @media (max-width: $divider-breakpoint-1) .divider1 @@ -43,7 +42,3 @@ $divider-breakpoint-3: 1980px @media (max-width: $divider-breakpoint-2) .divider2 display: none - -@media (min-width: $divider-breakpoint-1) and (max-width: $divider-breakpoint-3) - .divider2 - display: none diff --git a/ui/src/components/style/LoadingOverlay.sass b/ui/src/components/style/LoadingOverlay.sass new file mode 100644 index 000000000..26af44cab --- /dev/null +++ b/ui/src/components/style/LoadingOverlay.sass @@ -0,0 +1,54 @@ +.loading-overlay-container + position: absolute + display: flex + width: 100% + height: 100% + top: 0 + left: 0 + align-items: center + justify-content: center + background-color: rgba(25, 25, 25, 0.5) + +.loading-overlay-spinner + width: 60px + height: 60px + top: 50% + left: 50% + z-index: 1000 + -webkit-animation: rotation .6s infinite linear + -moz-animation: rotation .6s infinite linear + -o-animation: rotation .6s infinite linear + animation: rotation .6s infinite linear + border-left: 6px solid rgba(0, 174, 239, 0.15) + border-right: 6px solid rgba(0, 174, 239, 0.15) + border-bottom: 6px solid rgba(0, 174, 239, 0.15) + border-top: 6px solid rgba(0, 174, 239, 0.8) + border-radius: 100% + +@-webkit-keyframes rotation + from + -webkit-transform: rotate(0deg) + + to + -webkit-transform: rotate(359deg) + +@-moz-keyframes rotation + from + -moz-transform: rotate(0deg) + + to + -moz-transform: rotate(359deg) + +@-o-keyframes rotation + from + -o-transform: rotate(0deg) + + to + -o-transform: rotate(359deg) + +@keyframes rotation + from + transform: rotate(0deg) + + to + transform: rotate(359deg) diff --git a/ui/src/consts.ts b/ui/src/consts.ts new file mode 100644 index 000000000..1e62b4dc5 --- /dev/null +++ b/ui/src/consts.ts @@ -0,0 +1 @@ +export const adminUsername = "admin"; diff --git a/ui/src/helpers/api.js b/ui/src/helpers/api.js index ef7404996..19fee9a6b 100644 --- a/ui/src/helpers/api.js +++ b/ui/src/helpers/api.js @@ -1,25 +1,30 @@ import * as axios from "axios"; // When working locally cp `cp .env.example .env` -export const MizuWebsocketURL = process.env.REACT_APP_OVERRIDE_WS_URL ? process.env.REACT_APP_OVERRIDE_WS_URL : `ws://${window.location.host}/ws`; +export const MizuWebsocketURL = process.env.REACT_APP_OVERRIDE_WS_URL ? process.env.REACT_APP_OVERRIDE_WS_URL : + window.location.protocol === 'https:' ? `wss://${window.location.host}/ws` : `ws://${window.location.host}/ws`; + +export const FormValidationErrorType = "formError"; const CancelToken = axios.CancelToken; +// When working locally cp `cp .env.example .env` +const apiURL = process.env.REACT_APP_OVERRIDE_API_URL ? process.env.REACT_APP_OVERRIDE_API_URL : `${window.location.origin}/`; + export default class Api { + static instance; + + static getInstance() { + if (!Api.instance) { + Api.instance = new Api(); + } + return Api.instance; + } constructor() { + this.token = localStorage.getItem("token"); - // When working locally cp `cp .env.example .env` - const apiURL = process.env.REACT_APP_OVERRIDE_API_URL ? process.env.REACT_APP_OVERRIDE_API_URL : `${window.location.origin}/`; - - this.client = axios.create({ - baseURL: apiURL, - timeout: 31000, - headers: { - Accept: "application/json", - } - }); - + this.client = this.getAxiosClient(); this.source = null; } @@ -33,8 +38,8 @@ export default class Api { return response.data; } - getEntry = async (id) => { - const response = await this.client.get(`/entries/${id}`); + getEntry = async (id, query) => { + const response = await this.client.get(`/entries/${id}?query=${query}`); return response.data; } @@ -78,4 +83,92 @@ export default class Api { return response.data; } + + getTapConfig = async () => { + const response = await this.client.get("/config/tapConfig"); + return response.data; + } + + setTapConfig = async (config) => { + const response = await this.client.post("/config/tapConfig", {tappedNamespaces: config}); + return response.data; + } + + isInstallNeeded = async () => { + const response = await this.client.get("/install/isNeeded"); + return response.data; + } + + isAuthenticationNeeded = async () => { + try { + await this.client.get("/status/tap"); + return false; + } catch (e) { + if (e.response.status === 401) { + return true; + } + throw e; + } + } + + register = async (username, password) => { + const form = new FormData(); + form.append('username', username); + form.append('password', password); + + try { + const response = await this.client.post(`/user/register`, form); + this.persistToken(response.data.token); + return response; + } catch (e) { + if (e.response.status === 400) { + const error = { + 'type': FormValidationErrorType, + 'messages': e.response.data + }; + throw error; + } else { + throw e; + } + } + } + + login = async (username, password) => { + const form = new FormData(); + form.append('username', username); + form.append('password', password); + + const response = await this.client.post(`/user/login`, form); + if (response.status >= 200 && response.status < 300) { + this.persistToken(response.data.token); + } + + return response; + } + + persistToken = (token) => { + this.token = token; + this.client = this.getAxiosClient(); + localStorage.setItem('token', token); + } + + logout = async () => { + await this.client.post(`/user/logout`); + this.persistToken(null); + } + + getAxiosClient = () => { + const headers = { + Accept: "application/json" + } + + if (this.token) { + headers['x-session-token'] = `${this.token}`; // we use `x-session-token` instead of `Authorization` because the latter is reserved by kubectl proxy, making mizu view not work + } + return axios.create({ + baseURL: apiURL, + timeout: 31000, + headers + }); + } } diff --git a/ui/src/helpers/commonStyle.ts b/ui/src/helpers/commonStyle.ts new file mode 100644 index 000000000..8c4e2e34e --- /dev/null +++ b/ui/src/helpers/commonStyle.ts @@ -0,0 +1,39 @@ +import {makeStyles} from "@material-ui/core"; + +// @ts-ignore +export const useCommonStyles = makeStyles(() => ({ + button: { + backgroundColor: "#205cf5", + color: "white", + fontWeight: "600 !important", + fontSize: 12, + padding: "8px 12px", + borderRadius: "6px ! important", + + "&:hover": { + backgroundColor: "#205cf5", + }, + }, + outlinedButton: { + backgroundColor: "transparent", + color: "#205cf5", + fontWeight: "600 !important", + fontSize: 12, + padding: "8px 12px", + border: "1px #205cf5 solid", + borderRadius: "6px ! important", + + "&:hover": { + backgroundColor: "transparent", + }, + }, + textField: { + outline: 0, + background: "white", + borderRadius: "4px", + padding: "8px 10px", + border: "1px #9D9D9D solid", + fontSize: "14px", + color: "#494677" + }, +})); diff --git a/ui/src/index.sass b/ui/src/index.sass index 2cb79f24b..840ba3246 100644 --- a/ui/src/index.sass +++ b/ui/src/index.sass @@ -146,4 +146,3 @@ button ::-webkit-scrollbar-corner display: none - diff --git a/ui/src/index.tsx b/ui/src/index.tsx index 716ee7b41..16ccf1811 100644 --- a/ui/src/index.tsx +++ b/ui/src/index.tsx @@ -2,10 +2,26 @@ import React from 'react'; import ReactDOM from 'react-dom'; import './index.sass'; import App from './App'; +import EntApp from "./EntApp"; +import {ToastContainer} from "react-toastify"; +import 'react-toastify/dist/ReactToastify.css'; ReactDOM.render( - + <> + {window["isEnt"] ? : } + + , document.getElementById('root') ); diff --git a/ui/src/variables.module.scss b/ui/src/variables.module.scss index 9e25bb3c3..8c9623ddb 100644 --- a/ui/src/variables.module.scss +++ b/ui/src/variables.module.scss @@ -8,6 +8,7 @@ $light-blue-color: #BCCEFD; $success-color: #27AE60; $failure-color: #EB5757; $blue-gray: #494677; +$light-gray: #8F9BB2; :export { mainBackgroundColor: $main-background-color; @@ -19,4 +20,5 @@ $blue-gray: #494677; successColor: $success-color; failureColor: $failure-color; blueGray: $blue-gray; + lightGray: $light-gray; }