From 10742e80ad39a0d32bd57e684df095a6ef20eedd Mon Sep 17 00:00:00 2001 From: Alberto Gutierrez Date: Fri, 20 Dec 2024 13:04:08 +0100 Subject: [PATCH] feat(kiali) add kiali-frontend --- .../kiali/.changeset/hot-panthers-wink.md | 5 + workspaces/kiali/DEVELOPMENT.md | 64 + workspaces/kiali/README.md | 166 +- workspaces/kiali/app-config.yaml | 107 + workspaces/kiali/examples/kialiEntities.yaml | 34 + .../kiali/images/docs/EntityFullView.png | Bin 0 -> 96325 bytes workspaces/kiali/images/docs/EntityStep.png | Bin 0 -> 114917 bytes workspaces/kiali/images/docs/EntityView.png | Bin 0 -> 163258 bytes workspaces/kiali/images/docs/GraphCard.png | Bin 0 -> 128048 bytes workspaces/kiali/images/docs/KialiPage.png | Bin 0 -> 181876 bytes .../logo/kiali_logo_lightbkg_1280px.png | Bin 0 -> 11902 bytes .../images/logo/kiali_logo_lightbkg_200px.png | Bin 0 -> 1367 bytes .../images/logo/kiali_logo_lightbkg_600px.png | Bin 0 -> 4671 bytes workspaces/kiali/package.json | 8 +- workspaces/kiali/packages/app/.eslintignore | 1 + workspaces/kiali/packages/app/.eslintrc.js | 1 + .../kiali/packages/app/e2e-tests/app.test.ts | 27 + workspaces/kiali/packages/app/package.json | 74 + .../app/public/android-chrome-192x192.png | Bin 0 -> 13599 bytes .../packages/app/public/apple-touch-icon.png | Bin 0 -> 12619 bytes .../packages/app/public/favicon-16x16.png | Bin 0 -> 883 bytes .../packages/app/public/favicon-32x32.png | Bin 0 -> 1686 bytes .../kiali/packages/app/public/favicon.ico | Bin 0 -> 15086 bytes .../kiali/packages/app/public/index.html | 60 + .../kiali/packages/app/public/manifest.json | 15 + .../kiali/packages/app/public/robots.txt | 2 + .../packages/app/public/safari-pinned-tab.svg | 1 + .../kiali/packages/app/src/App.test.tsx | 44 + workspaces/kiali/packages/app/src/App.tsx | 125 + workspaces/kiali/packages/app/src/apis.ts | 34 + .../app/src/components/Root/LogoFull.tsx | 45 + .../app/src/components/Root/LogoIcon.tsx | 46 + .../packages/app/src/components/Root/Root.tsx | 115 + .../packages/app/src/components/Root/index.ts | 16 + .../app/src/components/catalog/EntityPage.tsx | 434 + .../app/src/components/search/SearchPage.tsx | 137 + workspaces/kiali/packages/app/src/index.tsx | 21 + .../kiali/packages/app/src/setupTests.ts | 16 + .../kiali/packages/backend/.eslintrc.js | 1 + workspaces/kiali/packages/backend/Dockerfile | 66 + workspaces/kiali/packages/backend/README.md | 59 + .../kiali/packages/backend/package.json | 54 + .../kiali/packages/backend/src/index.ts | 65 + .../kiali/plugins/kiali-backend/package.json | 4 +- workspaces/kiali/plugins/kiali/.eslintignore | 2 + workspaces/kiali/plugins/kiali/.eslintrc.js | 1 + .../kiali/plugins/kiali/.prettierignore | 12 + workspaces/kiali/plugins/kiali/.prettierrc.js | 20 + workspaces/kiali/plugins/kiali/CHANGELOG.md | 655 + workspaces/kiali/plugins/kiali/README.md | 4 + .../kiali/plugins/kiali/dev/MockProvider.tsx | 574 + .../general/auth_info_anonymous.json | 1 + .../dev/__fixtures__/general/config.json | 190 + .../general/crippledFeatures.json | 11 + .../dev/__fixtures__/general/grafana.json | 1 + .../kiali/dev/__fixtures__/general/graph.json | 693 + .../__fixtures__/general/istioCertsInfo.json | 12 + .../dev/__fixtures__/general/istioConfig.json | 533 + .../dev/__fixtures__/general/istioLogs.json | 12918 ++++ .../dev/__fixtures__/general/istioStatus.json | 7 + .../general/istioValidations.json | 44 + .../dev/__fixtures__/general/logSpan.json | 64122 ++++++++++++++++ .../kiali/dev/__fixtures__/general/logs.json | 18005 +++++ .../general/meshCanaryStatus.json | 6 + .../general/meshIstioResurceThresholds.json | 1 + .../dev/__fixtures__/general/meshTls.json | 1 + .../dev/__fixtures__/general/namespaces.json | 146 + .../general/outbound_traffic_policy_mode.json | 1 + .../dev/__fixtures__/general/status.json | 35 + .../dev/__fixtures__/general/statusError.json | 7 + .../plugins/kiali/dev/__fixtures__/index.ts | 399 + .../namespaces/bookinfo/apps.json | 223 + .../namespaces/bookinfo/apps/details.json | 58 + .../apps/kiali_traffic_generator.json | 54 + .../namespaces/bookinfo/apps/productpage.json | 62 + .../namespaces/bookinfo/apps/ratings.json | 58 + .../namespaces/bookinfo/apps/reviews.json | 96 + .../namespaces/bookinfo/dashboard.json | 347 + .../namespaces/bookinfo/health/app.json | 120 + .../namespaces/bookinfo/health/service.json | 46 + .../namespaces/bookinfo/health/workload.json | 136 + .../namespaces/bookinfo/istio_config.json | 193 + .../gateways/bookinfo-gateway.json | 103 + .../virtualservices/bookinfo.json | 131 + .../metrics/inbound/metrics_inbound_120.json | 28 + .../metrics/inbound/metrics_inbound_1800.json | 40 + .../metrics/inbound/metrics_inbound_300.json | 914 + .../metrics/inbound/metrics_inbound_3600.json | 32 + .../metrics/inbound/metrics_inbound_60.json | 24 + .../metrics/inbound/metrics_inbound_600.json | 40 + .../namespaces/bookinfo/metrics/index.ts | 51 + .../outbound/metrics_outbound_120.json | 28 + .../outbound/metrics_outbound_1800.json | 40 + .../outbound/metrics_outbound_300.json | 40 + .../outbound/metrics_outbound_3600.json | 32 + .../metrics/outbound/metrics_outbound_60.json | 24 + .../outbound/metrics_outbound_600.json | 144 + .../namespaces/bookinfo/services.json | 188 + .../namespaces/bookinfo/services/details.json | 352 + .../bookinfo/services/productpage.json | 437 + .../namespaces/bookinfo/services/ratings.json | 352 + .../namespaces/bookinfo/services/reviews.json | 430 + .../namespaces/bookinfo/spans.json | 25202 ++++++ .../__fixtures__/namespaces/bookinfo/tls.json | 1 + .../namespaces/bookinfo/workloads.json | 370 + .../bookinfo/workloads/details_v1.json | 194 + .../workloads/kiali_traffic_generator.json | 156 + .../bookinfo/workloads/productpage_v1.json | 198 + .../bookinfo/workloads/ratings_v1.json | 194 + .../bookinfo/workloads/reviews_v1.json | 194 + .../bookinfo/workloads/reviews_v2.json | 198 + .../bookinfo/workloads/reviews_v3.json | 198 + .../namespaces/istio-system/apps.json | 223 + .../apps/istio_egressgateway.json | 63 + .../apps/istio_ingressgateway.json | 67 + .../namespaces/istio-system/apps/istiod.json | 58 + .../namespaces/istio-system/apps/jaeger.json | 54 + .../namespaces/istio-system/apps/kiali.json | 70 + .../namespaces/istio-system/dashboard.json | 347 + .../namespaces/istio-system/health/app.json | 114 + .../istio-system/health/service.json | 65 + .../istio-system/health/workload.json | 100 + .../namespaces/istio-system/istio_config.json | 35 + .../metrics/inbound/metrics_inbound_120.json | 100 + .../metrics/inbound/metrics_inbound_1800.json | 130 + .../metrics/inbound/metrics_inbound_300.json | 130 + .../metrics/inbound/metrics_inbound_3600.json | 115 + .../metrics/inbound/metrics_inbound_60.json | 90 + .../metrics/inbound/metrics_inbound_600.json | 141 + .../namespaces/istio-system/metrics/index.ts | 51 + .../outbound/metrics_outbound_120.json | 112 + .../outbound/metrics_outbound_1800.json | 148 + .../outbound/metrics_outbound_300.json | 148 + .../outbound/metrics_outbound_3600.json | 124 + .../metrics/outbound/metrics_outbound_60.json | 100 + .../outbound/metrics_outbound_600.json | 252 + .../namespaces/istio-system/services.json | 378 + .../istio-system/services/grafana.json | 353 + .../services/istio_egressgateway.json | 373 + .../services/istio_ingressgateway.json | 406 + .../istio-system/services/istiod.json | 390 + .../services/jaeger_collector.json | 391 + .../istio-system/services/kiali.json | 363 + .../istio-system/services/prometheus.json | 361 + .../istio-system/services/tracing.json | 358 + .../istio-system/services/zipkin.json | 347 + .../namespaces/istio-system/spans.json | 1 + .../namespaces/istio-system/tls.json | 1 + .../namespaces/istio-system/workloads.json | 374 + .../istio-system/workloads/grafana.json | 155 + .../workloads/istio_egressgateway.json | 183 + .../workloads/istio_ingressgateway.json | 187 + .../istio-system/workloads/istiod.json | 172 + .../istio-system/workloads/jaeger.json | 210 + .../istio-system/workloads/kiali.json | 187 + .../istio-system/workloads/prometheus.json | 162 + .../namespaces/travel-agency/apps.json | 201 + .../namespaces/travel-agency/apps/cars.json | 62 + .../travel-agency/apps/discounts.json | 58 + .../travel-agency/apps/flights.json | 62 + .../namespaces/travel-agency/apps/hotels.json | 62 + .../travel-agency/apps/insurances.json | 62 + .../travel-agency/apps/mysqldb.json | 54 + .../travel-agency/apps/travels.json | 62 + .../namespaces/travel-agency/dashboard.json | 158 + .../namespaces/travel-agency/health/app.json | 172 + .../travel-agency/health/service.json | 75 + .../travel-agency/health/workload.json | 188 + .../travel-agency/istio_config.json | 29 + .../metrics/inbound/metrics_inbound_120.json | 28 + .../metrics/inbound/metrics_inbound_1800.json | 40 + .../metrics/inbound/metrics_inbound_300.json | 40 + .../metrics/inbound/metrics_inbound_3600.json | 34 + .../metrics/inbound/metrics_inbound_60.json | 24 + .../metrics/inbound/metrics_inbound_600.json | 216 + .../namespaces/travel-agency/metrics/index.ts | 51 + .../outbound/metrics_outbound_120.json | 16 + .../outbound/metrics_outbound_1800.json | 22 + .../outbound/metrics_outbound_300.json | 22 + .../outbound/metrics_outbound_3600.json | 19 + .../metrics/outbound/metrics_outbound_60.json | 14 + .../outbound/metrics_outbound_600.json | 198 + .../namespaces/travel-agency/services.json | 272 + .../travel-agency/services/cars.json | 351 + .../travel-agency/services/discounts.json | 351 + .../travel-agency/services/flights.json | 351 + .../travel-agency/services/hotels.json | 351 + .../travel-agency/services/insurances.json | 351 + .../travel-agency/services/mysqldb.json | 347 + .../travel-agency/services/travels.json | 351 + .../namespaces/travel-agency/spans.json | 642 + .../namespaces/travel-agency/tls.json | 1 + .../namespaces/travel-agency/workloads.json | 337 + .../travel-agency/workloads/cars_v1.json | 199 + .../travel-agency/workloads/discounts_v1.json | 195 + .../travel-agency/workloads/flights_v1.json | 199 + .../travel-agency/workloads/hotels_v1.json | 199 + .../workloads/insurances_v1.json | 198 + .../travel-agency/workloads/mysqldb_v1.json | 189 + .../travel-agency/workloads/travels_v1.json | 350 + .../namespaces/travel-control/apps.json | 39 + .../travel-control/apps/control.json | 54 + .../namespaces/travel-control/dashboard.json | 158 + .../namespaces/travel-control/health/app.json | 18 + .../travel-control/health/service.json | 9 + .../travel-control/health/workload.json | 16 + .../travel-control/istio_config.json | 193 + .../destinationrules/control.json | 85 + .../gateways/control-gateway.json | 92 + .../virtualservices/control.json | 92 + .../metrics/inbound/metrics_inbound_120.json | 1 + .../metrics/inbound/metrics_inbound_1800.json | 1 + .../metrics/inbound/metrics_inbound_300.json | 1 + .../metrics/inbound/metrics_inbound_3600.json | 1 + .../metrics/inbound/metrics_inbound_60.json | 1 + .../metrics/inbound/metrics_inbound_600.json | 1 + .../travel-control/metrics/index.ts | 51 + .../outbound/metrics_outbound_120.json | 1 + .../outbound/metrics_outbound_1800.json | 1 + .../outbound/metrics_outbound_300.json | 1 + .../outbound/metrics_outbound_3600.json | 1 + .../metrics/outbound/metrics_outbound_60.json | 1 + .../outbound/metrics_outbound_600.json | 1 + .../namespaces/travel-control/services.json | 50 + .../travel-control/services/control.json | 347 + .../namespaces/travel-control/spans.json | 1 + .../namespaces/travel-control/tls.json | 1 + .../namespaces/travel-control/workloads.json | 61 + .../travel-control/workloads/control.json | 190 + .../namespaces/travel-portal/apps.json | 105 + .../travel-portal/apps/travels.json | 58 + .../namespaces/travel-portal/apps/viaggi.json | 58 + .../travel-portal/apps/voyages.json | 58 + .../namespaces/travel-portal/dashboard.json | 158 + .../namespaces/travel-portal/health/app.json | 66 + .../travel-portal/health/service.json | 23 + .../travel-portal/health/workload.json | 44 + .../travel-portal/istio_config.json | 29 + .../metrics/inbound/metrics_inbound_120.json | 1 + .../metrics/inbound/metrics_inbound_1800.json | 1 + .../metrics/inbound/metrics_inbound_300.json | 1 + .../metrics/inbound/metrics_inbound_3600.json | 1 + .../metrics/inbound/metrics_inbound_60.json | 1 + .../metrics/inbound/metrics_inbound_600.json | 1 + .../namespaces/travel-portal/metrics/index.ts | 51 + .../outbound/metrics_outbound_120.json | 28 + .../outbound/metrics_outbound_1800.json | 40 + .../outbound/metrics_outbound_300.json | 40 + .../outbound/metrics_outbound_3600.json | 34 + .../metrics/outbound/metrics_outbound_60.json | 24 + .../outbound/metrics_outbound_600.json | 144 + .../namespaces/travel-portal/services.json | 120 + .../travel-portal/services/travels.json | 347 + .../travel-portal/services/viaggi.json | 347 + .../travel-portal/services/voyages.json | 347 + .../namespaces/travel-portal/spans.json | 1542 + .../namespaces/travel-portal/tls.json | 1 + .../namespaces/travel-portal/workloads.json | 165 + .../travel-portal/workloads/travels.json | 195 + .../travel-portal/workloads/viaggi.json | 195 + .../travel-portal/workloads/voyages.json | 195 + workspaces/kiali/plugins/kiali/dev/index.tsx | 191 + .../kiali/plugins/kiali/dev/mockEntity.ts | 69 + workspaces/kiali/plugins/kiali/package.json | 118 + .../plugins/kiali/src/actions/ActionKeys.ts | 121 + .../kiali/src/actions/HelpDropdownActions.ts | 34 + .../src/actions/IstioCertsInfoActions.ts | 25 + .../kiali/src/actions/IstioStatusActions.ts | 27 + .../kiali/src/actions/KialiAppAction.ts | 33 + .../plugins/kiali/src/actions/LoginActions.ts | 78 + .../kiali/src/actions/MeshTlsActions.ts | 25 + .../kiali/src/actions/MessageCenterActions.ts | 74 + .../kiali/src/actions/NamespaceAction.ts | 45 + .../kiali/src/actions/UserSettingsActions.ts | 48 + .../kiali/plugins/kiali/src/actions/index.ts | 19 + .../kiali/plugins/kiali/src/app/History.ts | 244 + .../kiali/src/assets/img/api/graphql.svg | 1 + .../plugins/kiali/src/assets/img/api/grpc.svg | 1 + .../plugins/kiali/src/assets/img/api/rest.svg | 1 + .../plugins/kiali/src/assets/img/go-logo.png | Bin 0 -> 5007 bytes .../kiali/src/assets/img/graphql-logo.svg | 1 + .../kiali/src/assets/img/grpc-logo.svg | 1 + .../kiali/src/assets/img/hollow-pin.png | Bin 0 -> 7707 bytes .../kiali/src/assets/img/jaeger-icon.svg | 1 + .../kiali/src/assets/img/java-logo.png | Bin 0 -> 13841 bytes .../kiali/src/assets/img/kiali-title.svg | 1 + .../img/legend-nooptimize/aggregate.svg | 74 + .../src/assets/img/legend-nooptimize/app.svg | 75 + .../img/legend-nooptimize/edge-danger.svg | 76 + .../img/legend-nooptimize/edge-idle.svg | 76 + .../img/legend-nooptimize/edge-success.svg | 76 + .../assets/img/legend-nooptimize/edge-tcp.svg | 73 + .../img/legend-nooptimize/edge-warn.svg | 76 + .../legend-nooptimize/external-namespace.svg | 83 + .../img/legend-nooptimize/mtls-badge.svg | 64 + .../node-badge-circuit-breaker.svg | 75 + .../node-badge-fault-injection.svg | 79 + .../legend-nooptimize/node-badge-gateways.svg | 81 + .../node-badge-mirroring.svg | 80 + .../node-badge-missing-sidecar.svg | 119 + .../node-badge-request-timeout.svg | 95 + .../node-badge-traffic-shifting.svg | 82 + .../node-badge-traffic-source.svg | 101 + .../node-badge-virtual-services.svg | 75 + .../node-badge-workload-entry.svg | 500 + .../legend-nooptimize/node-color-danger.svg | 63 + .../img/legend-nooptimize/node-color-idle.svg | 62 + .../legend-nooptimize/node-color-normal.svg | 63 + .../legend-nooptimize/node-color-warning.svg | 63 + .../src/assets/img/legend-nooptimize/node.svg | 67 + .../restricted-namespace.svg | 72 + .../img/legend-nooptimize/service-entry.svg | 68 + .../assets/img/legend-nooptimize/service.svg | 65 + .../traffic-failed-request.svg | 78 + .../traffic-normal-request.svg | 74 + .../img/legend-nooptimize/traffic-tcp.svg | 92 + .../img/legend-nooptimize/virtualservice.svg | 66 + .../src/assets/img/legend-pf/aggregate.svg | 19 + .../kiali/src/assets/img/legend-pf/app.svg | 1 + .../src/assets/img/legend-pf/edge-danger.svg | 1 + .../src/assets/img/legend-pf/edge-idle.svg | 1 + .../src/assets/img/legend-pf/edge-success.svg | 1 + .../src/assets/img/legend-pf/edge-tcp.svg | 12 + .../src/assets/img/legend-pf/edge-warn.svg | 1 + .../img/legend-pf/external-namespace.svg | 1 + .../src/assets/img/legend-pf/mtls-badge.svg | 1 + .../legend-pf/node-badge-circuit-breaker.svg | 1 + .../legend-pf/node-badge-fault-injection.svg | 1 + .../img/legend-pf/node-badge-gateways.svg | 1 + .../img/legend-pf/node-badge-mirroring.svg | 1 + .../legend-pf/node-badge-missing-sidecar.svg | 1 + .../legend-pf/node-badge-request-timeout.svg | 1 + .../legend-pf/node-badge-traffic-shifting.svg | 1 + .../legend-pf/node-badge-traffic-source.svg | 1 + .../legend-pf/node-badge-virtual-services.svg | 1 + .../legend-pf/node-badge-workload-entry.svg | 1 + .../img/legend-pf/node-color-danger.svg | 1 + .../img/legend-pf/node-color-healthy.svg | 1 + .../assets/img/legend-pf/node-color-idle.svg | 1 + .../img/legend-pf/node-color-warning.svg | 1 + .../kiali/src/assets/img/legend-pf/node.svg | 1 + .../img/legend-pf/restricted-namespace.svg | 1 + .../assets/img/legend-pf/service-entry.svg | 17 + .../src/assets/img/legend-pf/service.svg | 18 + .../img/legend-pf/traffic-failed-request.svg | 22 + .../img/legend-pf/traffic-healthy-request.svg | 21 + .../src/assets/img/legend-pf/traffic-tcp.svg | 21 + .../kiali/src/assets/img/legend/aggregate.svg | 1 + .../kiali/src/assets/img/legend/app.svg | 1 + .../src/assets/img/legend/edge-danger.svg | 1 + .../kiali/src/assets/img/legend/edge-idle.svg | 1 + .../src/assets/img/legend/edge-success.svg | 1 + .../kiali/src/assets/img/legend/edge-tcp.svg | 1 + .../kiali/src/assets/img/legend/edge-warn.svg | 1 + .../assets/img/legend/external-namespace.svg | 1 + .../src/assets/img/legend/mtls-badge.svg | 1 + .../img/legend/node-badge-circuit-breaker.svg | 1 + .../img/legend/node-badge-fault-injection.svg | 1 + .../assets/img/legend/node-badge-gateways.svg | 1 + .../img/legend/node-badge-mirroring.svg | 1 + .../img/legend/node-badge-missing-sidecar.svg | 1 + .../img/legend/node-badge-request-timeout.svg | 1 + .../legend/node-badge-traffic-shifting.svg | 1 + .../img/legend/node-badge-traffic-source.svg | 1 + .../legend/node-badge-virtual-services.svg | 1 + .../img/legend/node-badge-workload-entry.svg | 1 + .../assets/img/legend/node-color-danger.svg | 1 + .../src/assets/img/legend/node-color-idle.svg | 1 + .../assets/img/legend/node-color-normal.svg | 1 + .../assets/img/legend/node-color-warning.svg | 1 + .../kiali/src/assets/img/legend/node.svg | 1 + .../img/legend/restricted-namespace.svg | 1 + .../src/assets/img/legend/service-entry.svg | 1 + .../kiali/src/assets/img/legend/service.svg | 1 + .../img/legend/traffic-failed-request.svg | 1 + .../img/legend/traffic-normal-request.svg | 1 + .../src/assets/img/legend/traffic-tcp.svg | 1 + .../src/assets/img/legend/virtualservice.svg | 1 + .../plugins/kiali/src/assets/img/logo-alt.svg | 1 + .../kiali/src/assets/img/logo-lightbkg.svg | 1 + .../src/assets/img/microprofile-logo.png | Bin 0 -> 2538 bytes .../src/assets/img/mtls-status-full-dark.svg | 1 + .../kiali/src/assets/img/mtls-status-full.svg | 1 + .../assets/img/mtls-status-partial-dark.svg | 1 + .../src/assets/img/mtls-status-partial.svg | 1 + .../src/assets/img/node-background-key.png | Bin 0 -> 4286 bytes .../assets/img/node-background-topology.png | Bin 0 -> 6587 bytes .../kiali/src/assets/img/nodejs-logo.png | Bin 0 -> 1418 bytes .../kiali/src/assets/img/rest-logo.svg | 30 + .../kiali/src/assets/img/runtime/go.svg | 1 + .../kiali/src/assets/img/runtime/java.svg | 1 + .../src/assets/img/runtime/microprofile.svg | 1 + .../kiali/src/assets/img/runtime/nodejs.svg | 1 + .../kiali/src/assets/img/runtime/quarkus.svg | 1 + .../src/assets/img/runtime/spring-boot.svg | 1 + .../src/assets/img/runtime/thorntail.svg | 1 + .../kiali/src/assets/img/runtime/tomcat.svg | 1 + .../kiali/src/assets/img/runtime/vertx.svg | 1 + .../kiali/src/assets/img/solid-pin.png | Bin 0 -> 6067 bytes .../kiali/src/assets/img/thorntail-logo.png | Bin 0 -> 825 bytes .../kiali/src/assets/img/vertx-logo.png | Bin 0 -> 1345 bytes .../src/components/About/AboutUIModal.tsx | 248 + .../src/components/Ambient/AmbientBadge.tsx | 40 + .../src/components/Ambient/AmbientLabel.tsx | 84 + .../components/Banners/TechPreviewWarning.tsx | 33 + .../BreadcrumbView/BreadcrumbView.tsx | 135 + .../src/components/Charts/ChartWithLegend.tsx | 790 + .../kiali/src/components/Charts/Container.tsx | 100 + .../src/components/Charts/CustomTooltip.tsx | 163 + .../kiali/src/components/Charts/Dashboard.tsx | 137 + .../kiali/src/components/Charts/KChart.tsx | 330 + .../src/components/Charts/SparklineChart.tsx | 260 + .../DefaultSecondaryMasthead.tsx | 60 + .../DetailDescription/DetailDescription.tsx | 456 + .../components/Drawers/AppDetailsDrawer.tsx | 90 + .../Drawers/ServiceDetailsDrawer.tsx | 86 + .../Drawers/WorkloadDetailsDrawer.tsx | 99 + .../src/components/Envoy/AccessLogModal.tsx | 977 + .../src/components/FilterList/FilterHelper.ts | 189 + .../src/components/Filters/CommonFilters.ts | 111 + .../src/components/Filters/LabelFilter.tsx | 92 + .../components/Filters/StatefulFilters.tsx | 115 + .../src/components/Health/HealthDetails.tsx | 198 + .../src/components/Health/HealthIndicator.tsx | 58 + .../src/components/Health/HealthStyle.ts | 32 + .../kiali/src/components/Health/Helper.ts | 34 + .../IstioConfigCard/IstioConfigCard.tsx | 119 + .../IstioStatus/IstioComponentStatus.tsx | 107 + .../components/IstioStatus/IstioStatus.tsx | 126 + .../IstioStatus/IstioStatusInline.tsx | 45 + .../IstioStatus/IstioStatusList.tsx | 67 + .../components/IstioWizards/WizardActions.ts | 17 + .../kiali/src/components/Label/Label.tsx | 57 + .../kiali/src/components/Label/Labels.tsx | 110 + .../components/Link/IstioConfigListLink.tsx | 78 + .../src/components/Link/IstioObjectLink.tsx | 106 + .../kiali/src/components/Link/ServiceLink.tsx | 43 + .../components/Link/ValidationSummaryLink.tsx | 54 + .../src/components/Link/WorkloadLink.tsx | 43 + .../kiali/src/components/Logos/Logos.tsx | 86 + .../kiali/src/components/MTls/MTLSIcon.tsx | 65 + .../kiali/src/components/MTls/MTLSStatus.tsx | 82 + .../components/MTls/NamespaceMTLSStatus.tsx | 75 + .../components/MessageCenter/AlertDrawer.tsx | 107 + .../MessageCenter/AlertDrawerGroup.tsx | 106 + .../MessageCenter/AlertDrawerMessage.tsx | 111 + .../MessageCenter/MessageCenter.tsx | 133 + .../src/components/Metrics/GrafanaLinks.tsx | 110 + .../kiali/src/components/Metrics/Helper.ts | 285 + .../src/components/Metrics/IstioMetrics.tsx | 441 + .../src/components/Metrics/SpanOverlay.ts | 143 + .../MetricsOptions/MetricsReporter.tsx | 111 + .../MetricsOptions/MetricsSettings.ts | 40 + .../MetricsSettingsDropdown.tsx | 482 + .../MissingAuthPolicy/MissingAuthPolicy.tsx | 83 + .../components/MissingLabel/MissingLabel.tsx | 109 + .../MissingSidecar/MissingSidecar.tsx | 118 + .../Nav/Page/RenderComponentScroll.tsx | 97 + .../plugins/kiali/src/components/NoData.tsx | 32 + .../kiali/src/components/Overview/TLSInfo.tsx | 128 + .../kiali/src/components/Pf/PfBadges.tsx | 216 + .../kiali/src/components/Pf/PfColors.tsx | 252 + .../kiali/src/components/Pf/PfTitle.tsx | 94 + .../plugins/kiali/src/components/Router.tsx | 198 + .../kiali/src/components/SimpleTable.tsx | 109 + .../kiali/src/components/Tab/TabPanel.tsx | 69 + .../kiali/src/components/TextOrLink.tsx | 44 + .../kiali/src/components/Time/LocalTime.tsx | 36 + .../components/Time/TimeDurationComponent.tsx | 48 + .../src/components/Time/TimeRangeHelper.ts | 50 + .../kiali/src/components/Time/Utils.tsx | 32 + .../ToolbarDropdown/ToolbarDropdown.tsx | 93 + .../src/components/Validations/Validation.tsx | 131 + .../components/Validations/ValidationList.tsx | 54 + .../Validations/ValidationObjectSummary.tsx | 54 + .../Validations/ValidationServiceSummary.tsx | 47 + .../Validations/ValidationStack.tsx | 60 + .../Validations/ValidationSummary.tsx | 153 + .../src/components/VirtualList/Config.tsx | 431 + .../src/components/VirtualList/Renderers.tsx | 527 + .../components/VirtualList/VirtualItem.tsx | 103 + .../components/VirtualList/VirtualList.tsx | 270 + .../kiali/src/config/AuthenticationConfig.ts | 25 + .../kiali/plugins/kiali/src/config/Config.ts | 256 + .../plugins/kiali/src/config/HealthConfig.ts | 71 + .../kiali/plugins/kiali/src/config/Icons.ts | 169 + .../plugins/kiali/src/config/KialiIcon.tsx | 244 + .../plugins/kiali/src/config/KialiLogo.tsx | 46 + .../kiali/plugins/kiali/src/config/Paths.ts | 26 + .../plugins/kiali/src/config/ServerConfig.ts | 211 + .../kiali/plugins/kiali/src/config/index.ts | 20 + .../src/dynamic/EntityKialiGraphCard.tsx | 55 + .../src/dynamic/EntityKialiResourcesCard.tsx | 154 + .../kiali/src/dynamic/KialiContext.tsx | 92 + .../kiali/src/helpers/LabelFilterHelper.ts | 157 + .../plugins/kiali/src/helpers/namespaces.ts | 37 + workspaces/kiali/plugins/kiali/src/index.ts | 24 + .../src/pages/AppDetails/AppDescription.tsx | 101 + .../src/pages/AppDetails/AppDetailsPage.tsx | 214 + .../kiali/src/pages/AppDetails/AppInfo.tsx | 46 + .../kiali/src/pages/AppList/AppListClass.tsx | 41 + .../kiali/src/pages/AppList/AppListPage.tsx | 182 + .../src/pages/AppList/FiltersAndSorts.ts | 73 + .../IstioConfigDetailsOverview.tsx | 206 + .../IstioConfigDetailsPage.tsx | 146 + .../IstioConfigReferences.tsx | 118 + .../IstioConfigValidationReferences.tsx | 53 + .../IstioStatusMessageList.tsx | 90 + .../pages/IstioConfigList/FiltersAndSorts.ts | 242 + .../IstioConfigList/IstioConfigListPage.tsx | 128 + .../src/pages/Kiali/Header/HelpKiali.tsx | 50 + .../src/pages/Kiali/Header/KialiHeader.tsx | 66 + .../pages/Kiali/Header/KialiHeaderEntity.tsx | 74 + .../src/pages/Kiali/Header/KialiTabs.tsx | 95 + .../pages/Kiali/Header/NamespaceSelector.tsx | 93 + .../kiali/src/pages/Kiali/KialiEntity.tsx | 53 + .../kiali/src/pages/Kiali/KialiHelper.tsx | 81 + .../src/pages/Kiali/KialiNoAnnotation.tsx | 37 + .../src/pages/Kiali/KialiNoResources.tsx | 70 + .../kiali/src/pages/Kiali/KialiPage.tsx | 72 + .../plugins/kiali/src/pages/Kiali/NoPath.tsx | 40 + .../plugins/kiali/src/pages/Kiali/index.ts | 17 + .../src/pages/Overview/IstioConfigCard.tsx | 32 + .../pages/Overview/ListView/ListViewPage.tsx | 77 + .../kiali/src/pages/Overview/NamespaceInfo.ts | 43 + .../OverviewCard/CanaryUpgradeProgress.tsx | 92 + .../OverviewCard/ControlPlaneBadge.tsx | 59 + .../ControlPlaneNamespaceStatus.tsx | 125 + .../OverviewCard/ControlPlaneVersionBadge.tsx | 39 + .../Overview/OverviewCard/NamespaceHeader.tsx | 98 + .../Overview/OverviewCard/NamespaceLabels.tsx | 53 + .../Overview/OverviewCard/NamespaceStatus.tsx | 139 + .../Overview/OverviewCard/OverviewCard.tsx | 186 + .../OverviewCardControlPlaneNamespace.tsx | 286 + .../OverviewCardDataPlaneNamespace.tsx | 122 + .../OverviewCardSparklineCharts.tsx | 69 + .../OverviewCard/RemoteClusterBadge.tsx | 30 + .../src/pages/Overview/OverviewCard/index.ts | 16 + .../src/pages/Overview/OverviewHelper.ts | 30 + .../kiali/src/pages/Overview/OverviewPage.tsx | 534 + .../src/pages/Overview/OverviewStatus.tsx | 97 + .../src/pages/Overview/OverviewToolbar.tsx | 144 + .../plugins/kiali/src/pages/Overview/Sorts.ts | 139 + .../ServiceDetails/ServiceDescription.tsx | 259 + .../ServiceDetails/ServiceDetailsPage.tsx | 262 + .../src/pages/ServiceDetails/ServiceInfo.tsx | 164 + .../pages/ServiceDetails/ServiceNetwork.tsx | 272 + .../src/pages/ServiceList/FiltersAndSorts.ts | 376 + .../src/pages/ServiceList/ServiceListPage.tsx | 251 + .../pages/TrafficGraph/TrafficGraphCard.tsx | 36 + .../pages/TrafficGraph/TrafficGraphPage.tsx | 244 + .../factories/KialiComponentFactory.tsx | 49 + .../factories/KialiLayoutFactory.tsx | 42 + .../TrafficGraph/layouts/KialiDagreLayout.ts | 22 + .../pages/TrafficGraph/styles/KialiEdge.tsx | 173 + .../pages/TrafficGraph/styles/KialiGroup.tsx | 103 + .../pages/TrafficGraph/styles/KialiNode.tsx | 163 + .../src/pages/TrafficGraph/types/EdgeData.ts | 36 + .../TrafficGraph/types/GraphPFSettings.ts | 27 + .../src/pages/TrafficGraph/types/NodeData.ts | 93 + .../src/pages/TrafficGraph/types/NodeMap.ts | 18 + .../src/pages/TrafficGraph/util/EdgeLabels.ts | 445 + .../pages/TrafficGraph/util/GraphDecorator.ts | 278 + .../pages/TrafficGraph/util/GraphGenerator.ts | 118 + .../pages/TrafficGraph/util/NodeLabels.tsx | 137 + .../src/pages/WorkloadDetails/PodStatus.tsx | 77 + .../pages/WorkloadDetails/ProxyStatusList.tsx | 64 + .../WorkloadDetails/WorkloadDetailsPage.tsx | 249 + .../pages/WorkloadDetails/WorkloadInfo.tsx | 360 + .../pages/WorkloadDetails/WorkloadPodLogs.tsx | 1245 + .../pages/WorkloadDetails/WorkloadPods.tsx | 188 + .../WorkloadDetails/WorkloadsDescription.tsx | 298 + .../pages/WorkloadList/FiltersAndSorts.tsx | 66 + .../pages/WorkloadList/WorkloadListPage.tsx | 189 + .../kiali/plugins/kiali/src/plugin.test.ts | 22 + workspaces/kiali/plugins/kiali/src/plugin.ts | 103 + .../kiali/src/reducers/HelpDropdown.ts | 48 + .../kiali/src/reducers/IstioCertsInfoState.ts | 34 + .../kiali/src/reducers/IstioStatusState.ts | 35 + .../kiali/plugins/kiali/src/reducers/Login.ts | 92 + .../kiali/src/reducers/MeshTlsState.ts | 44 + .../kiali/src/reducers/MessageCenter.ts | 213 + .../plugins/kiali/src/reducers/Namespace.ts | 110 + .../plugins/kiali/src/reducers/Tracing.ts | 18 + .../kiali/src/reducers/UserSettingsState.ts | 70 + .../kiali/plugins/kiali/src/reducers/index.ts | 23 + workspaces/kiali/plugins/kiali/src/routes.ts | 85 + .../kiali/plugins/kiali/src/services/Api.ts | 1110 + .../plugins/kiali/src/services/Prometheus.ts | 53 + .../kiali/plugins/kiali/src/setupTests.ts | 18 + .../plugins/kiali/src/store/ConfigStore.ts | 44 + .../kiali/plugins/kiali/src/store/Context.ts | 18 + .../plugins/kiali/src/store/KialiProvider.tsx | 290 + .../kiali/plugins/kiali/src/store/Store.ts | 100 + .../kiali/plugins/kiali/src/store/index.ts | 17 + .../kiali/src/styles/AceEditorStyle.ts | 61 + .../kiali/src/styles/DropdownStyles.ts | 71 + .../plugins/kiali/src/styles/HealthStyle.ts | 32 + .../plugins/kiali/src/styles/StyleUtils.ts | 58 + .../plugins/kiali/src/styles/TabStyles.ts | 39 + .../plugins/kiali/src/types/AceValidations.ts | 365 + .../kiali/plugins/kiali/src/types/App.ts | 47 + .../kiali/plugins/kiali/src/types/AppList.ts | 43 + .../kiali/plugins/kiali/src/types/Auth.ts | 50 + .../plugins/kiali/src/types/CertsInfo.ts | 26 + .../kiali/plugins/kiali/src/types/Common.ts | 134 + .../plugins/kiali/src/types/Dashboards.ts | 62 + .../kiali/plugins/kiali/src/types/ErrorMsg.ts | 19 + .../kiali/src/types/ErrorRate/ErrorRate.ts | 224 + .../kiali/src/types/ErrorRate/index.ts | 34 + .../kiali/src/types/ErrorRate/types.ts | 64 + .../kiali/src/types/ErrorRate/utils.ts | 171 + .../kiali/plugins/kiali/src/types/Filters.ts | 85 + .../plugins/kiali/src/types/GrafanaInfo.ts | 32 + .../kiali/plugins/kiali/src/types/Graph.ts | 638 + .../kiali/plugins/kiali/src/types/Health.ts | 662 + .../kiali/src/types/HealthAnnotation.ts | 102 + .../kiali/src/types/IstioConfigDetails.ts | 136 + .../kiali/src/types/IstioConfigList.ts | 560 + .../plugins/kiali/src/types/IstioObjects.ts | 1485 + .../plugins/kiali/src/types/IstioStatus.ts | 33 + .../kiali/plugins/kiali/src/types/Mesh.ts | 33 + .../plugins/kiali/src/types/MessageCenter.ts | 44 + .../kiali/plugins/kiali/src/types/Metrics.ts | 90 + .../plugins/kiali/src/types/MetricsOptions.ts | 83 + .../plugins/kiali/src/types/Namespace.ts | 31 + .../plugins/kiali/src/types/NamespaceInfo.tsx | 43 + .../kiali/plugins/kiali/src/types/Overlay.ts | 28 + .../plugins/kiali/src/types/Permissions.ts | 38 + .../plugins/kiali/src/types/ServerConfig.ts | 160 + .../plugins/kiali/src/types/ServiceId.ts | 19 + .../plugins/kiali/src/types/ServiceInfo.ts | 252 + .../plugins/kiali/src/types/ServiceList.ts | 51 + .../plugins/kiali/src/types/SortFilters.ts | 25 + .../plugins/kiali/src/types/StatusState.ts | 45 + .../plugins/kiali/src/types/TLSStatus.ts | 49 + .../kiali/plugins/kiali/src/types/Tracing.ts | 41 + .../plugins/kiali/src/types/TracingInfo.ts | 144 + .../kiali/src/types/VictoryChartInfo.ts | 81 + .../kiali/plugins/kiali/src/types/Workload.ts | 126 + .../kiali/plugins/kiali/src/types/types.ts | 32 + .../plugins/kiali/src/utils/Alertutils.ts | 154 + .../kiali/plugins/kiali/src/utils/Callback.ts | 44 + .../kiali/src/utils/CancelablePromises.ts | 109 + .../kiali/plugins/kiali/src/utils/Common.ts | 64 + .../kiali/plugins/kiali/src/utils/Date.ts | 22 + .../plugins/kiali/src/utils/Formatter.ts | 166 + .../kiali/src/utils/IstioConfigUtils.ts | 245 + .../plugins/kiali/src/utils/RateIntervals.ts | 34 + .../kiali/plugins/kiali/src/utils/Reducer.ts | 18 + .../plugins/kiali/src/utils/ResponseFlags.ts | 82 + .../plugins/kiali/src/utils/SafeRender.tsx | 34 + .../kiali/src/utils/TimeSeriesUtils.ts | 138 + .../kiali/src/utils/VictoryChartsUtils.ts | 266 + .../plugins/kiali/src/utils/VictoryEvents.ts | 108 + .../kiali/src/utils/backstageLinks.tsx | 122 + .../plugins/kiali/src/utils/entityFilter.ts | 80 + .../kiali/src/utils/tracing/TraceTransform.ts | 348 + .../kiali/src/utils/tracing/TracingHelper.tsx | 334 + workspaces/kiali/yarn.lock | 38032 ++++++--- 660 files changed, 220059 insertions(+), 11566 deletions(-) create mode 100644 workspaces/kiali/.changeset/hot-panthers-wink.md create mode 100644 workspaces/kiali/DEVELOPMENT.md create mode 100644 workspaces/kiali/app-config.yaml create mode 100644 workspaces/kiali/examples/kialiEntities.yaml create mode 100644 workspaces/kiali/images/docs/EntityFullView.png create mode 100644 workspaces/kiali/images/docs/EntityStep.png create mode 100644 workspaces/kiali/images/docs/EntityView.png create mode 100644 workspaces/kiali/images/docs/GraphCard.png create mode 100644 workspaces/kiali/images/docs/KialiPage.png create mode 100644 workspaces/kiali/images/logo/kiali_logo_lightbkg_1280px.png create mode 100644 workspaces/kiali/images/logo/kiali_logo_lightbkg_200px.png create mode 100644 workspaces/kiali/images/logo/kiali_logo_lightbkg_600px.png create mode 100644 workspaces/kiali/packages/app/.eslintignore create mode 100644 workspaces/kiali/packages/app/.eslintrc.js create mode 100644 workspaces/kiali/packages/app/e2e-tests/app.test.ts create mode 100644 workspaces/kiali/packages/app/package.json create mode 100644 workspaces/kiali/packages/app/public/android-chrome-192x192.png create mode 100644 workspaces/kiali/packages/app/public/apple-touch-icon.png create mode 100644 workspaces/kiali/packages/app/public/favicon-16x16.png create mode 100644 workspaces/kiali/packages/app/public/favicon-32x32.png create mode 100644 workspaces/kiali/packages/app/public/favicon.ico create mode 100644 workspaces/kiali/packages/app/public/index.html create mode 100644 workspaces/kiali/packages/app/public/manifest.json create mode 100644 workspaces/kiali/packages/app/public/robots.txt create mode 100644 workspaces/kiali/packages/app/public/safari-pinned-tab.svg create mode 100644 workspaces/kiali/packages/app/src/App.test.tsx create mode 100644 workspaces/kiali/packages/app/src/App.tsx create mode 100644 workspaces/kiali/packages/app/src/apis.ts create mode 100644 workspaces/kiali/packages/app/src/components/Root/LogoFull.tsx create mode 100644 workspaces/kiali/packages/app/src/components/Root/LogoIcon.tsx create mode 100644 workspaces/kiali/packages/app/src/components/Root/Root.tsx create mode 100644 workspaces/kiali/packages/app/src/components/Root/index.ts create mode 100644 workspaces/kiali/packages/app/src/components/catalog/EntityPage.tsx create mode 100644 workspaces/kiali/packages/app/src/components/search/SearchPage.tsx create mode 100644 workspaces/kiali/packages/app/src/index.tsx create mode 100644 workspaces/kiali/packages/app/src/setupTests.ts create mode 100644 workspaces/kiali/packages/backend/.eslintrc.js create mode 100644 workspaces/kiali/packages/backend/Dockerfile create mode 100644 workspaces/kiali/packages/backend/README.md create mode 100644 workspaces/kiali/packages/backend/package.json create mode 100644 workspaces/kiali/packages/backend/src/index.ts create mode 100644 workspaces/kiali/plugins/kiali/.eslintignore create mode 100644 workspaces/kiali/plugins/kiali/.eslintrc.js create mode 100644 workspaces/kiali/plugins/kiali/.prettierignore create mode 100644 workspaces/kiali/plugins/kiali/.prettierrc.js create mode 100644 workspaces/kiali/plugins/kiali/CHANGELOG.md create mode 100644 workspaces/kiali/plugins/kiali/README.md create mode 100644 workspaces/kiali/plugins/kiali/dev/MockProvider.tsx create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/general/auth_info_anonymous.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/general/config.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/general/crippledFeatures.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/general/grafana.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/general/graph.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/general/istioCertsInfo.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/general/istioConfig.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/general/istioLogs.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/general/istioStatus.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/general/istioValidations.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/general/logSpan.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/general/logs.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/general/meshCanaryStatus.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/general/meshIstioResurceThresholds.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/general/meshTls.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/general/namespaces.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/general/outbound_traffic_policy_mode.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/general/status.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/general/statusError.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/index.ts create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/bookinfo/apps.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/bookinfo/apps/details.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/bookinfo/apps/kiali_traffic_generator.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/bookinfo/apps/productpage.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/bookinfo/apps/ratings.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/bookinfo/apps/reviews.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/bookinfo/dashboard.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/bookinfo/health/app.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/bookinfo/health/service.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/bookinfo/health/workload.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/bookinfo/istio_config.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/bookinfo/istio_configs/gateways/bookinfo-gateway.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/bookinfo/istio_configs/virtualservices/bookinfo.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/bookinfo/metrics/inbound/metrics_inbound_120.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/bookinfo/metrics/inbound/metrics_inbound_1800.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/bookinfo/metrics/inbound/metrics_inbound_300.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/bookinfo/metrics/inbound/metrics_inbound_3600.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/bookinfo/metrics/inbound/metrics_inbound_60.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/bookinfo/metrics/inbound/metrics_inbound_600.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/bookinfo/metrics/index.ts create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/bookinfo/metrics/outbound/metrics_outbound_120.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/bookinfo/metrics/outbound/metrics_outbound_1800.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/bookinfo/metrics/outbound/metrics_outbound_300.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/bookinfo/metrics/outbound/metrics_outbound_3600.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/bookinfo/metrics/outbound/metrics_outbound_60.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/bookinfo/metrics/outbound/metrics_outbound_600.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/bookinfo/services.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/bookinfo/services/details.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/bookinfo/services/productpage.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/bookinfo/services/ratings.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/bookinfo/services/reviews.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/bookinfo/spans.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/bookinfo/tls.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/bookinfo/workloads.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/bookinfo/workloads/details_v1.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/bookinfo/workloads/kiali_traffic_generator.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/bookinfo/workloads/productpage_v1.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/bookinfo/workloads/ratings_v1.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/bookinfo/workloads/reviews_v1.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/bookinfo/workloads/reviews_v2.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/bookinfo/workloads/reviews_v3.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/istio-system/apps.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/istio-system/apps/istio_egressgateway.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/istio-system/apps/istio_ingressgateway.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/istio-system/apps/istiod.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/istio-system/apps/jaeger.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/istio-system/apps/kiali.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/istio-system/dashboard.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/istio-system/health/app.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/istio-system/health/service.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/istio-system/health/workload.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/istio-system/istio_config.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/istio-system/metrics/inbound/metrics_inbound_120.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/istio-system/metrics/inbound/metrics_inbound_1800.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/istio-system/metrics/inbound/metrics_inbound_300.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/istio-system/metrics/inbound/metrics_inbound_3600.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/istio-system/metrics/inbound/metrics_inbound_60.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/istio-system/metrics/inbound/metrics_inbound_600.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/istio-system/metrics/index.ts create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/istio-system/metrics/outbound/metrics_outbound_120.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/istio-system/metrics/outbound/metrics_outbound_1800.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/istio-system/metrics/outbound/metrics_outbound_300.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/istio-system/metrics/outbound/metrics_outbound_3600.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/istio-system/metrics/outbound/metrics_outbound_60.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/istio-system/metrics/outbound/metrics_outbound_600.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/istio-system/services.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/istio-system/services/grafana.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/istio-system/services/istio_egressgateway.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/istio-system/services/istio_ingressgateway.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/istio-system/services/istiod.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/istio-system/services/jaeger_collector.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/istio-system/services/kiali.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/istio-system/services/prometheus.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/istio-system/services/tracing.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/istio-system/services/zipkin.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/istio-system/spans.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/istio-system/tls.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/istio-system/workloads.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/istio-system/workloads/grafana.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/istio-system/workloads/istio_egressgateway.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/istio-system/workloads/istio_ingressgateway.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/istio-system/workloads/istiod.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/istio-system/workloads/jaeger.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/istio-system/workloads/kiali.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/istio-system/workloads/prometheus.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-agency/apps.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-agency/apps/cars.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-agency/apps/discounts.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-agency/apps/flights.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-agency/apps/hotels.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-agency/apps/insurances.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-agency/apps/mysqldb.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-agency/apps/travels.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-agency/dashboard.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-agency/health/app.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-agency/health/service.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-agency/health/workload.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-agency/istio_config.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-agency/metrics/inbound/metrics_inbound_120.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-agency/metrics/inbound/metrics_inbound_1800.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-agency/metrics/inbound/metrics_inbound_300.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-agency/metrics/inbound/metrics_inbound_3600.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-agency/metrics/inbound/metrics_inbound_60.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-agency/metrics/inbound/metrics_inbound_600.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-agency/metrics/index.ts create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-agency/metrics/outbound/metrics_outbound_120.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-agency/metrics/outbound/metrics_outbound_1800.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-agency/metrics/outbound/metrics_outbound_300.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-agency/metrics/outbound/metrics_outbound_3600.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-agency/metrics/outbound/metrics_outbound_60.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-agency/metrics/outbound/metrics_outbound_600.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-agency/services.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-agency/services/cars.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-agency/services/discounts.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-agency/services/flights.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-agency/services/hotels.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-agency/services/insurances.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-agency/services/mysqldb.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-agency/services/travels.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-agency/spans.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-agency/tls.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-agency/workloads.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-agency/workloads/cars_v1.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-agency/workloads/discounts_v1.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-agency/workloads/flights_v1.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-agency/workloads/hotels_v1.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-agency/workloads/insurances_v1.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-agency/workloads/mysqldb_v1.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-agency/workloads/travels_v1.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-control/apps.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-control/apps/control.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-control/dashboard.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-control/health/app.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-control/health/service.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-control/health/workload.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-control/istio_config.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-control/istio_configs/destinationrules/control.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-control/istio_configs/gateways/control-gateway.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-control/istio_configs/virtualservices/control.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-control/metrics/inbound/metrics_inbound_120.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-control/metrics/inbound/metrics_inbound_1800.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-control/metrics/inbound/metrics_inbound_300.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-control/metrics/inbound/metrics_inbound_3600.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-control/metrics/inbound/metrics_inbound_60.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-control/metrics/inbound/metrics_inbound_600.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-control/metrics/index.ts create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-control/metrics/outbound/metrics_outbound_120.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-control/metrics/outbound/metrics_outbound_1800.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-control/metrics/outbound/metrics_outbound_300.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-control/metrics/outbound/metrics_outbound_3600.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-control/metrics/outbound/metrics_outbound_60.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-control/metrics/outbound/metrics_outbound_600.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-control/services.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-control/services/control.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-control/spans.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-control/tls.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-control/workloads.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-control/workloads/control.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-portal/apps.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-portal/apps/travels.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-portal/apps/viaggi.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-portal/apps/voyages.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-portal/dashboard.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-portal/health/app.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-portal/health/service.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-portal/health/workload.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-portal/istio_config.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-portal/metrics/inbound/metrics_inbound_120.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-portal/metrics/inbound/metrics_inbound_1800.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-portal/metrics/inbound/metrics_inbound_300.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-portal/metrics/inbound/metrics_inbound_3600.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-portal/metrics/inbound/metrics_inbound_60.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-portal/metrics/inbound/metrics_inbound_600.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-portal/metrics/index.ts create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-portal/metrics/outbound/metrics_outbound_120.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-portal/metrics/outbound/metrics_outbound_1800.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-portal/metrics/outbound/metrics_outbound_300.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-portal/metrics/outbound/metrics_outbound_3600.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-portal/metrics/outbound/metrics_outbound_60.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-portal/metrics/outbound/metrics_outbound_600.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-portal/services.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-portal/services/travels.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-portal/services/viaggi.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-portal/services/voyages.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-portal/spans.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-portal/tls.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-portal/workloads.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-portal/workloads/travels.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-portal/workloads/viaggi.json create mode 100644 workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-portal/workloads/voyages.json create mode 100644 workspaces/kiali/plugins/kiali/dev/index.tsx create mode 100644 workspaces/kiali/plugins/kiali/dev/mockEntity.ts create mode 100644 workspaces/kiali/plugins/kiali/package.json create mode 100644 workspaces/kiali/plugins/kiali/src/actions/ActionKeys.ts create mode 100644 workspaces/kiali/plugins/kiali/src/actions/HelpDropdownActions.ts create mode 100644 workspaces/kiali/plugins/kiali/src/actions/IstioCertsInfoActions.ts create mode 100644 workspaces/kiali/plugins/kiali/src/actions/IstioStatusActions.ts create mode 100644 workspaces/kiali/plugins/kiali/src/actions/KialiAppAction.ts create mode 100644 workspaces/kiali/plugins/kiali/src/actions/LoginActions.ts create mode 100644 workspaces/kiali/plugins/kiali/src/actions/MeshTlsActions.ts create mode 100644 workspaces/kiali/plugins/kiali/src/actions/MessageCenterActions.ts create mode 100644 workspaces/kiali/plugins/kiali/src/actions/NamespaceAction.ts create mode 100644 workspaces/kiali/plugins/kiali/src/actions/UserSettingsActions.ts create mode 100644 workspaces/kiali/plugins/kiali/src/actions/index.ts create mode 100644 workspaces/kiali/plugins/kiali/src/app/History.ts create mode 100644 workspaces/kiali/plugins/kiali/src/assets/img/api/graphql.svg create mode 100644 workspaces/kiali/plugins/kiali/src/assets/img/api/grpc.svg create mode 100644 workspaces/kiali/plugins/kiali/src/assets/img/api/rest.svg create mode 100644 workspaces/kiali/plugins/kiali/src/assets/img/go-logo.png create mode 100644 workspaces/kiali/plugins/kiali/src/assets/img/graphql-logo.svg create mode 100644 workspaces/kiali/plugins/kiali/src/assets/img/grpc-logo.svg create mode 100644 workspaces/kiali/plugins/kiali/src/assets/img/hollow-pin.png create mode 100644 workspaces/kiali/plugins/kiali/src/assets/img/jaeger-icon.svg create mode 100644 workspaces/kiali/plugins/kiali/src/assets/img/java-logo.png create mode 100644 workspaces/kiali/plugins/kiali/src/assets/img/kiali-title.svg create mode 100755 workspaces/kiali/plugins/kiali/src/assets/img/legend-nooptimize/aggregate.svg create mode 100755 workspaces/kiali/plugins/kiali/src/assets/img/legend-nooptimize/app.svg create mode 100755 workspaces/kiali/plugins/kiali/src/assets/img/legend-nooptimize/edge-danger.svg create mode 100755 workspaces/kiali/plugins/kiali/src/assets/img/legend-nooptimize/edge-idle.svg create mode 100755 workspaces/kiali/plugins/kiali/src/assets/img/legend-nooptimize/edge-success.svg create mode 100755 workspaces/kiali/plugins/kiali/src/assets/img/legend-nooptimize/edge-tcp.svg create mode 100755 workspaces/kiali/plugins/kiali/src/assets/img/legend-nooptimize/edge-warn.svg create mode 100755 workspaces/kiali/plugins/kiali/src/assets/img/legend-nooptimize/external-namespace.svg create mode 100755 workspaces/kiali/plugins/kiali/src/assets/img/legend-nooptimize/mtls-badge.svg create mode 100755 workspaces/kiali/plugins/kiali/src/assets/img/legend-nooptimize/node-badge-circuit-breaker.svg create mode 100644 workspaces/kiali/plugins/kiali/src/assets/img/legend-nooptimize/node-badge-fault-injection.svg create mode 100755 workspaces/kiali/plugins/kiali/src/assets/img/legend-nooptimize/node-badge-gateways.svg create mode 100644 workspaces/kiali/plugins/kiali/src/assets/img/legend-nooptimize/node-badge-mirroring.svg create mode 100755 workspaces/kiali/plugins/kiali/src/assets/img/legend-nooptimize/node-badge-missing-sidecar.svg create mode 100644 workspaces/kiali/plugins/kiali/src/assets/img/legend-nooptimize/node-badge-request-timeout.svg create mode 100644 workspaces/kiali/plugins/kiali/src/assets/img/legend-nooptimize/node-badge-traffic-shifting.svg create mode 100755 workspaces/kiali/plugins/kiali/src/assets/img/legend-nooptimize/node-badge-traffic-source.svg create mode 100755 workspaces/kiali/plugins/kiali/src/assets/img/legend-nooptimize/node-badge-virtual-services.svg create mode 100644 workspaces/kiali/plugins/kiali/src/assets/img/legend-nooptimize/node-badge-workload-entry.svg create mode 100755 workspaces/kiali/plugins/kiali/src/assets/img/legend-nooptimize/node-color-danger.svg create mode 100755 workspaces/kiali/plugins/kiali/src/assets/img/legend-nooptimize/node-color-idle.svg create mode 100755 workspaces/kiali/plugins/kiali/src/assets/img/legend-nooptimize/node-color-normal.svg create mode 100755 workspaces/kiali/plugins/kiali/src/assets/img/legend-nooptimize/node-color-warning.svg create mode 100755 workspaces/kiali/plugins/kiali/src/assets/img/legend-nooptimize/node.svg create mode 100755 workspaces/kiali/plugins/kiali/src/assets/img/legend-nooptimize/restricted-namespace.svg create mode 100755 workspaces/kiali/plugins/kiali/src/assets/img/legend-nooptimize/service-entry.svg create mode 100755 workspaces/kiali/plugins/kiali/src/assets/img/legend-nooptimize/service.svg create mode 100755 workspaces/kiali/plugins/kiali/src/assets/img/legend-nooptimize/traffic-failed-request.svg create mode 100755 workspaces/kiali/plugins/kiali/src/assets/img/legend-nooptimize/traffic-normal-request.svg create mode 100755 workspaces/kiali/plugins/kiali/src/assets/img/legend-nooptimize/traffic-tcp.svg create mode 100755 workspaces/kiali/plugins/kiali/src/assets/img/legend-nooptimize/virtualservice.svg create mode 100644 workspaces/kiali/plugins/kiali/src/assets/img/legend-pf/aggregate.svg create mode 100644 workspaces/kiali/plugins/kiali/src/assets/img/legend-pf/app.svg create mode 100644 workspaces/kiali/plugins/kiali/src/assets/img/legend-pf/edge-danger.svg create mode 100644 workspaces/kiali/plugins/kiali/src/assets/img/legend-pf/edge-idle.svg create mode 100644 workspaces/kiali/plugins/kiali/src/assets/img/legend-pf/edge-success.svg create mode 100644 workspaces/kiali/plugins/kiali/src/assets/img/legend-pf/edge-tcp.svg create mode 100644 workspaces/kiali/plugins/kiali/src/assets/img/legend-pf/edge-warn.svg create mode 100644 workspaces/kiali/plugins/kiali/src/assets/img/legend-pf/external-namespace.svg create mode 100644 workspaces/kiali/plugins/kiali/src/assets/img/legend-pf/mtls-badge.svg create mode 100644 workspaces/kiali/plugins/kiali/src/assets/img/legend-pf/node-badge-circuit-breaker.svg create mode 100644 workspaces/kiali/plugins/kiali/src/assets/img/legend-pf/node-badge-fault-injection.svg create mode 100644 workspaces/kiali/plugins/kiali/src/assets/img/legend-pf/node-badge-gateways.svg create mode 100644 workspaces/kiali/plugins/kiali/src/assets/img/legend-pf/node-badge-mirroring.svg create mode 100644 workspaces/kiali/plugins/kiali/src/assets/img/legend-pf/node-badge-missing-sidecar.svg create mode 100644 workspaces/kiali/plugins/kiali/src/assets/img/legend-pf/node-badge-request-timeout.svg create mode 100644 workspaces/kiali/plugins/kiali/src/assets/img/legend-pf/node-badge-traffic-shifting.svg create mode 100644 workspaces/kiali/plugins/kiali/src/assets/img/legend-pf/node-badge-traffic-source.svg create mode 100644 workspaces/kiali/plugins/kiali/src/assets/img/legend-pf/node-badge-virtual-services.svg create mode 100644 workspaces/kiali/plugins/kiali/src/assets/img/legend-pf/node-badge-workload-entry.svg create mode 100644 workspaces/kiali/plugins/kiali/src/assets/img/legend-pf/node-color-danger.svg create mode 100644 workspaces/kiali/plugins/kiali/src/assets/img/legend-pf/node-color-healthy.svg create mode 100644 workspaces/kiali/plugins/kiali/src/assets/img/legend-pf/node-color-idle.svg create mode 100644 workspaces/kiali/plugins/kiali/src/assets/img/legend-pf/node-color-warning.svg create mode 100644 workspaces/kiali/plugins/kiali/src/assets/img/legend-pf/node.svg create mode 100644 workspaces/kiali/plugins/kiali/src/assets/img/legend-pf/restricted-namespace.svg create mode 100644 workspaces/kiali/plugins/kiali/src/assets/img/legend-pf/service-entry.svg create mode 100644 workspaces/kiali/plugins/kiali/src/assets/img/legend-pf/service.svg create mode 100644 workspaces/kiali/plugins/kiali/src/assets/img/legend-pf/traffic-failed-request.svg create mode 100644 workspaces/kiali/plugins/kiali/src/assets/img/legend-pf/traffic-healthy-request.svg create mode 100644 workspaces/kiali/plugins/kiali/src/assets/img/legend-pf/traffic-tcp.svg create mode 100644 workspaces/kiali/plugins/kiali/src/assets/img/legend/aggregate.svg create mode 100644 workspaces/kiali/plugins/kiali/src/assets/img/legend/app.svg create mode 100644 workspaces/kiali/plugins/kiali/src/assets/img/legend/edge-danger.svg create mode 100644 workspaces/kiali/plugins/kiali/src/assets/img/legend/edge-idle.svg create mode 100644 workspaces/kiali/plugins/kiali/src/assets/img/legend/edge-success.svg create mode 100644 workspaces/kiali/plugins/kiali/src/assets/img/legend/edge-tcp.svg create mode 100644 workspaces/kiali/plugins/kiali/src/assets/img/legend/edge-warn.svg create mode 100644 workspaces/kiali/plugins/kiali/src/assets/img/legend/external-namespace.svg create mode 100644 workspaces/kiali/plugins/kiali/src/assets/img/legend/mtls-badge.svg create mode 100644 workspaces/kiali/plugins/kiali/src/assets/img/legend/node-badge-circuit-breaker.svg create mode 100644 workspaces/kiali/plugins/kiali/src/assets/img/legend/node-badge-fault-injection.svg create mode 100644 workspaces/kiali/plugins/kiali/src/assets/img/legend/node-badge-gateways.svg create mode 100644 workspaces/kiali/plugins/kiali/src/assets/img/legend/node-badge-mirroring.svg create mode 100644 workspaces/kiali/plugins/kiali/src/assets/img/legend/node-badge-missing-sidecar.svg create mode 100644 workspaces/kiali/plugins/kiali/src/assets/img/legend/node-badge-request-timeout.svg create mode 100644 workspaces/kiali/plugins/kiali/src/assets/img/legend/node-badge-traffic-shifting.svg create mode 100644 workspaces/kiali/plugins/kiali/src/assets/img/legend/node-badge-traffic-source.svg create mode 100644 workspaces/kiali/plugins/kiali/src/assets/img/legend/node-badge-virtual-services.svg create mode 100644 workspaces/kiali/plugins/kiali/src/assets/img/legend/node-badge-workload-entry.svg create mode 100644 workspaces/kiali/plugins/kiali/src/assets/img/legend/node-color-danger.svg create mode 100644 workspaces/kiali/plugins/kiali/src/assets/img/legend/node-color-idle.svg create mode 100644 workspaces/kiali/plugins/kiali/src/assets/img/legend/node-color-normal.svg create mode 100644 workspaces/kiali/plugins/kiali/src/assets/img/legend/node-color-warning.svg create mode 100644 workspaces/kiali/plugins/kiali/src/assets/img/legend/node.svg create mode 100644 workspaces/kiali/plugins/kiali/src/assets/img/legend/restricted-namespace.svg create mode 100644 workspaces/kiali/plugins/kiali/src/assets/img/legend/service-entry.svg create mode 100644 workspaces/kiali/plugins/kiali/src/assets/img/legend/service.svg create mode 100644 workspaces/kiali/plugins/kiali/src/assets/img/legend/traffic-failed-request.svg create mode 100644 workspaces/kiali/plugins/kiali/src/assets/img/legend/traffic-normal-request.svg create mode 100644 workspaces/kiali/plugins/kiali/src/assets/img/legend/traffic-tcp.svg create mode 100644 workspaces/kiali/plugins/kiali/src/assets/img/legend/virtualservice.svg create mode 100644 workspaces/kiali/plugins/kiali/src/assets/img/logo-alt.svg create mode 100644 workspaces/kiali/plugins/kiali/src/assets/img/logo-lightbkg.svg create mode 100644 workspaces/kiali/plugins/kiali/src/assets/img/microprofile-logo.png create mode 100644 workspaces/kiali/plugins/kiali/src/assets/img/mtls-status-full-dark.svg create mode 100644 workspaces/kiali/plugins/kiali/src/assets/img/mtls-status-full.svg create mode 100644 workspaces/kiali/plugins/kiali/src/assets/img/mtls-status-partial-dark.svg create mode 100644 workspaces/kiali/plugins/kiali/src/assets/img/mtls-status-partial.svg create mode 100644 workspaces/kiali/plugins/kiali/src/assets/img/node-background-key.png create mode 100644 workspaces/kiali/plugins/kiali/src/assets/img/node-background-topology.png create mode 100644 workspaces/kiali/plugins/kiali/src/assets/img/nodejs-logo.png create mode 100644 workspaces/kiali/plugins/kiali/src/assets/img/rest-logo.svg create mode 100644 workspaces/kiali/plugins/kiali/src/assets/img/runtime/go.svg create mode 100644 workspaces/kiali/plugins/kiali/src/assets/img/runtime/java.svg create mode 100644 workspaces/kiali/plugins/kiali/src/assets/img/runtime/microprofile.svg create mode 100644 workspaces/kiali/plugins/kiali/src/assets/img/runtime/nodejs.svg create mode 100644 workspaces/kiali/plugins/kiali/src/assets/img/runtime/quarkus.svg create mode 100644 workspaces/kiali/plugins/kiali/src/assets/img/runtime/spring-boot.svg create mode 100644 workspaces/kiali/plugins/kiali/src/assets/img/runtime/thorntail.svg create mode 100644 workspaces/kiali/plugins/kiali/src/assets/img/runtime/tomcat.svg create mode 100644 workspaces/kiali/plugins/kiali/src/assets/img/runtime/vertx.svg create mode 100644 workspaces/kiali/plugins/kiali/src/assets/img/solid-pin.png create mode 100644 workspaces/kiali/plugins/kiali/src/assets/img/thorntail-logo.png create mode 100644 workspaces/kiali/plugins/kiali/src/assets/img/vertx-logo.png create mode 100644 workspaces/kiali/plugins/kiali/src/components/About/AboutUIModal.tsx create mode 100644 workspaces/kiali/plugins/kiali/src/components/Ambient/AmbientBadge.tsx create mode 100644 workspaces/kiali/plugins/kiali/src/components/Ambient/AmbientLabel.tsx create mode 100644 workspaces/kiali/plugins/kiali/src/components/Banners/TechPreviewWarning.tsx create mode 100644 workspaces/kiali/plugins/kiali/src/components/BreadcrumbView/BreadcrumbView.tsx create mode 100644 workspaces/kiali/plugins/kiali/src/components/Charts/ChartWithLegend.tsx create mode 100644 workspaces/kiali/plugins/kiali/src/components/Charts/Container.tsx create mode 100644 workspaces/kiali/plugins/kiali/src/components/Charts/CustomTooltip.tsx create mode 100644 workspaces/kiali/plugins/kiali/src/components/Charts/Dashboard.tsx create mode 100644 workspaces/kiali/plugins/kiali/src/components/Charts/KChart.tsx create mode 100644 workspaces/kiali/plugins/kiali/src/components/Charts/SparklineChart.tsx create mode 100644 workspaces/kiali/plugins/kiali/src/components/DefaultSecondaryMasthead/DefaultSecondaryMasthead.tsx create mode 100644 workspaces/kiali/plugins/kiali/src/components/DetailDescription/DetailDescription.tsx create mode 100644 workspaces/kiali/plugins/kiali/src/components/Drawers/AppDetailsDrawer.tsx create mode 100644 workspaces/kiali/plugins/kiali/src/components/Drawers/ServiceDetailsDrawer.tsx create mode 100644 workspaces/kiali/plugins/kiali/src/components/Drawers/WorkloadDetailsDrawer.tsx create mode 100644 workspaces/kiali/plugins/kiali/src/components/Envoy/AccessLogModal.tsx create mode 100644 workspaces/kiali/plugins/kiali/src/components/FilterList/FilterHelper.ts create mode 100644 workspaces/kiali/plugins/kiali/src/components/Filters/CommonFilters.ts create mode 100644 workspaces/kiali/plugins/kiali/src/components/Filters/LabelFilter.tsx create mode 100644 workspaces/kiali/plugins/kiali/src/components/Filters/StatefulFilters.tsx create mode 100644 workspaces/kiali/plugins/kiali/src/components/Health/HealthDetails.tsx create mode 100644 workspaces/kiali/plugins/kiali/src/components/Health/HealthIndicator.tsx create mode 100644 workspaces/kiali/plugins/kiali/src/components/Health/HealthStyle.ts create mode 100644 workspaces/kiali/plugins/kiali/src/components/Health/Helper.ts create mode 100644 workspaces/kiali/plugins/kiali/src/components/IstioConfigCard/IstioConfigCard.tsx create mode 100644 workspaces/kiali/plugins/kiali/src/components/IstioStatus/IstioComponentStatus.tsx create mode 100644 workspaces/kiali/plugins/kiali/src/components/IstioStatus/IstioStatus.tsx create mode 100644 workspaces/kiali/plugins/kiali/src/components/IstioStatus/IstioStatusInline.tsx create mode 100644 workspaces/kiali/plugins/kiali/src/components/IstioStatus/IstioStatusList.tsx create mode 100644 workspaces/kiali/plugins/kiali/src/components/IstioWizards/WizardActions.ts create mode 100644 workspaces/kiali/plugins/kiali/src/components/Label/Label.tsx create mode 100644 workspaces/kiali/plugins/kiali/src/components/Label/Labels.tsx create mode 100644 workspaces/kiali/plugins/kiali/src/components/Link/IstioConfigListLink.tsx create mode 100644 workspaces/kiali/plugins/kiali/src/components/Link/IstioObjectLink.tsx create mode 100644 workspaces/kiali/plugins/kiali/src/components/Link/ServiceLink.tsx create mode 100644 workspaces/kiali/plugins/kiali/src/components/Link/ValidationSummaryLink.tsx create mode 100644 workspaces/kiali/plugins/kiali/src/components/Link/WorkloadLink.tsx create mode 100644 workspaces/kiali/plugins/kiali/src/components/Logos/Logos.tsx create mode 100644 workspaces/kiali/plugins/kiali/src/components/MTls/MTLSIcon.tsx create mode 100644 workspaces/kiali/plugins/kiali/src/components/MTls/MTLSStatus.tsx create mode 100644 workspaces/kiali/plugins/kiali/src/components/MTls/NamespaceMTLSStatus.tsx create mode 100644 workspaces/kiali/plugins/kiali/src/components/MessageCenter/AlertDrawer.tsx create mode 100644 workspaces/kiali/plugins/kiali/src/components/MessageCenter/AlertDrawerGroup.tsx create mode 100644 workspaces/kiali/plugins/kiali/src/components/MessageCenter/AlertDrawerMessage.tsx create mode 100644 workspaces/kiali/plugins/kiali/src/components/MessageCenter/MessageCenter.tsx create mode 100644 workspaces/kiali/plugins/kiali/src/components/Metrics/GrafanaLinks.tsx create mode 100644 workspaces/kiali/plugins/kiali/src/components/Metrics/Helper.ts create mode 100644 workspaces/kiali/plugins/kiali/src/components/Metrics/IstioMetrics.tsx create mode 100644 workspaces/kiali/plugins/kiali/src/components/Metrics/SpanOverlay.ts create mode 100644 workspaces/kiali/plugins/kiali/src/components/MetricsOptions/MetricsReporter.tsx create mode 100644 workspaces/kiali/plugins/kiali/src/components/MetricsOptions/MetricsSettings.ts create mode 100644 workspaces/kiali/plugins/kiali/src/components/MetricsOptions/MetricsSettingsDropdown.tsx create mode 100644 workspaces/kiali/plugins/kiali/src/components/MissingAuthPolicy/MissingAuthPolicy.tsx create mode 100644 workspaces/kiali/plugins/kiali/src/components/MissingLabel/MissingLabel.tsx create mode 100644 workspaces/kiali/plugins/kiali/src/components/MissingSidecar/MissingSidecar.tsx create mode 100644 workspaces/kiali/plugins/kiali/src/components/Nav/Page/RenderComponentScroll.tsx create mode 100644 workspaces/kiali/plugins/kiali/src/components/NoData.tsx create mode 100644 workspaces/kiali/plugins/kiali/src/components/Overview/TLSInfo.tsx create mode 100644 workspaces/kiali/plugins/kiali/src/components/Pf/PfBadges.tsx create mode 100644 workspaces/kiali/plugins/kiali/src/components/Pf/PfColors.tsx create mode 100644 workspaces/kiali/plugins/kiali/src/components/Pf/PfTitle.tsx create mode 100644 workspaces/kiali/plugins/kiali/src/components/Router.tsx create mode 100644 workspaces/kiali/plugins/kiali/src/components/SimpleTable.tsx create mode 100644 workspaces/kiali/plugins/kiali/src/components/Tab/TabPanel.tsx create mode 100644 workspaces/kiali/plugins/kiali/src/components/TextOrLink.tsx create mode 100644 workspaces/kiali/plugins/kiali/src/components/Time/LocalTime.tsx create mode 100644 workspaces/kiali/plugins/kiali/src/components/Time/TimeDurationComponent.tsx create mode 100644 workspaces/kiali/plugins/kiali/src/components/Time/TimeRangeHelper.ts create mode 100644 workspaces/kiali/plugins/kiali/src/components/Time/Utils.tsx create mode 100644 workspaces/kiali/plugins/kiali/src/components/ToolbarDropdown/ToolbarDropdown.tsx create mode 100644 workspaces/kiali/plugins/kiali/src/components/Validations/Validation.tsx create mode 100644 workspaces/kiali/plugins/kiali/src/components/Validations/ValidationList.tsx create mode 100644 workspaces/kiali/plugins/kiali/src/components/Validations/ValidationObjectSummary.tsx create mode 100644 workspaces/kiali/plugins/kiali/src/components/Validations/ValidationServiceSummary.tsx create mode 100644 workspaces/kiali/plugins/kiali/src/components/Validations/ValidationStack.tsx create mode 100644 workspaces/kiali/plugins/kiali/src/components/Validations/ValidationSummary.tsx create mode 100644 workspaces/kiali/plugins/kiali/src/components/VirtualList/Config.tsx create mode 100644 workspaces/kiali/plugins/kiali/src/components/VirtualList/Renderers.tsx create mode 100644 workspaces/kiali/plugins/kiali/src/components/VirtualList/VirtualItem.tsx create mode 100644 workspaces/kiali/plugins/kiali/src/components/VirtualList/VirtualList.tsx create mode 100644 workspaces/kiali/plugins/kiali/src/config/AuthenticationConfig.ts create mode 100644 workspaces/kiali/plugins/kiali/src/config/Config.ts create mode 100644 workspaces/kiali/plugins/kiali/src/config/HealthConfig.ts create mode 100644 workspaces/kiali/plugins/kiali/src/config/Icons.ts create mode 100644 workspaces/kiali/plugins/kiali/src/config/KialiIcon.tsx create mode 100644 workspaces/kiali/plugins/kiali/src/config/KialiLogo.tsx create mode 100644 workspaces/kiali/plugins/kiali/src/config/Paths.ts create mode 100644 workspaces/kiali/plugins/kiali/src/config/ServerConfig.ts create mode 100644 workspaces/kiali/plugins/kiali/src/config/index.ts create mode 100644 workspaces/kiali/plugins/kiali/src/dynamic/EntityKialiGraphCard.tsx create mode 100644 workspaces/kiali/plugins/kiali/src/dynamic/EntityKialiResourcesCard.tsx create mode 100644 workspaces/kiali/plugins/kiali/src/dynamic/KialiContext.tsx create mode 100644 workspaces/kiali/plugins/kiali/src/helpers/LabelFilterHelper.ts create mode 100644 workspaces/kiali/plugins/kiali/src/helpers/namespaces.ts create mode 100644 workspaces/kiali/plugins/kiali/src/index.ts create mode 100644 workspaces/kiali/plugins/kiali/src/pages/AppDetails/AppDescription.tsx create mode 100644 workspaces/kiali/plugins/kiali/src/pages/AppDetails/AppDetailsPage.tsx create mode 100644 workspaces/kiali/plugins/kiali/src/pages/AppDetails/AppInfo.tsx create mode 100644 workspaces/kiali/plugins/kiali/src/pages/AppList/AppListClass.tsx create mode 100644 workspaces/kiali/plugins/kiali/src/pages/AppList/AppListPage.tsx create mode 100644 workspaces/kiali/plugins/kiali/src/pages/AppList/FiltersAndSorts.ts create mode 100644 workspaces/kiali/plugins/kiali/src/pages/IstioConfigDetails/IstioConfigDetailsOverview.tsx create mode 100644 workspaces/kiali/plugins/kiali/src/pages/IstioConfigDetails/IstioConfigDetailsPage.tsx create mode 100644 workspaces/kiali/plugins/kiali/src/pages/IstioConfigDetails/IstioConfigReferences.tsx create mode 100644 workspaces/kiali/plugins/kiali/src/pages/IstioConfigDetails/IstioConfigValidationReferences.tsx create mode 100644 workspaces/kiali/plugins/kiali/src/pages/IstioConfigDetails/IstioStatusMessageList.tsx create mode 100644 workspaces/kiali/plugins/kiali/src/pages/IstioConfigList/FiltersAndSorts.ts create mode 100644 workspaces/kiali/plugins/kiali/src/pages/IstioConfigList/IstioConfigListPage.tsx create mode 100644 workspaces/kiali/plugins/kiali/src/pages/Kiali/Header/HelpKiali.tsx create mode 100644 workspaces/kiali/plugins/kiali/src/pages/Kiali/Header/KialiHeader.tsx create mode 100644 workspaces/kiali/plugins/kiali/src/pages/Kiali/Header/KialiHeaderEntity.tsx create mode 100644 workspaces/kiali/plugins/kiali/src/pages/Kiali/Header/KialiTabs.tsx create mode 100644 workspaces/kiali/plugins/kiali/src/pages/Kiali/Header/NamespaceSelector.tsx create mode 100644 workspaces/kiali/plugins/kiali/src/pages/Kiali/KialiEntity.tsx create mode 100644 workspaces/kiali/plugins/kiali/src/pages/Kiali/KialiHelper.tsx create mode 100644 workspaces/kiali/plugins/kiali/src/pages/Kiali/KialiNoAnnotation.tsx create mode 100644 workspaces/kiali/plugins/kiali/src/pages/Kiali/KialiNoResources.tsx create mode 100644 workspaces/kiali/plugins/kiali/src/pages/Kiali/KialiPage.tsx create mode 100644 workspaces/kiali/plugins/kiali/src/pages/Kiali/NoPath.tsx create mode 100644 workspaces/kiali/plugins/kiali/src/pages/Kiali/index.ts create mode 100644 workspaces/kiali/plugins/kiali/src/pages/Overview/IstioConfigCard.tsx create mode 100644 workspaces/kiali/plugins/kiali/src/pages/Overview/ListView/ListViewPage.tsx create mode 100644 workspaces/kiali/plugins/kiali/src/pages/Overview/NamespaceInfo.ts create mode 100644 workspaces/kiali/plugins/kiali/src/pages/Overview/OverviewCard/CanaryUpgradeProgress.tsx create mode 100644 workspaces/kiali/plugins/kiali/src/pages/Overview/OverviewCard/ControlPlaneBadge.tsx create mode 100644 workspaces/kiali/plugins/kiali/src/pages/Overview/OverviewCard/ControlPlaneNamespaceStatus.tsx create mode 100644 workspaces/kiali/plugins/kiali/src/pages/Overview/OverviewCard/ControlPlaneVersionBadge.tsx create mode 100644 workspaces/kiali/plugins/kiali/src/pages/Overview/OverviewCard/NamespaceHeader.tsx create mode 100644 workspaces/kiali/plugins/kiali/src/pages/Overview/OverviewCard/NamespaceLabels.tsx create mode 100644 workspaces/kiali/plugins/kiali/src/pages/Overview/OverviewCard/NamespaceStatus.tsx create mode 100644 workspaces/kiali/plugins/kiali/src/pages/Overview/OverviewCard/OverviewCard.tsx create mode 100644 workspaces/kiali/plugins/kiali/src/pages/Overview/OverviewCard/OverviewCardControlPlaneNamespace.tsx create mode 100644 workspaces/kiali/plugins/kiali/src/pages/Overview/OverviewCard/OverviewCardDataPlaneNamespace.tsx create mode 100644 workspaces/kiali/plugins/kiali/src/pages/Overview/OverviewCard/OverviewCardSparklineCharts.tsx create mode 100644 workspaces/kiali/plugins/kiali/src/pages/Overview/OverviewCard/RemoteClusterBadge.tsx create mode 100644 workspaces/kiali/plugins/kiali/src/pages/Overview/OverviewCard/index.ts create mode 100644 workspaces/kiali/plugins/kiali/src/pages/Overview/OverviewHelper.ts create mode 100644 workspaces/kiali/plugins/kiali/src/pages/Overview/OverviewPage.tsx create mode 100644 workspaces/kiali/plugins/kiali/src/pages/Overview/OverviewStatus.tsx create mode 100644 workspaces/kiali/plugins/kiali/src/pages/Overview/OverviewToolbar.tsx create mode 100644 workspaces/kiali/plugins/kiali/src/pages/Overview/Sorts.ts create mode 100644 workspaces/kiali/plugins/kiali/src/pages/ServiceDetails/ServiceDescription.tsx create mode 100644 workspaces/kiali/plugins/kiali/src/pages/ServiceDetails/ServiceDetailsPage.tsx create mode 100644 workspaces/kiali/plugins/kiali/src/pages/ServiceDetails/ServiceInfo.tsx create mode 100644 workspaces/kiali/plugins/kiali/src/pages/ServiceDetails/ServiceNetwork.tsx create mode 100644 workspaces/kiali/plugins/kiali/src/pages/ServiceList/FiltersAndSorts.ts create mode 100644 workspaces/kiali/plugins/kiali/src/pages/ServiceList/ServiceListPage.tsx create mode 100644 workspaces/kiali/plugins/kiali/src/pages/TrafficGraph/TrafficGraphCard.tsx create mode 100644 workspaces/kiali/plugins/kiali/src/pages/TrafficGraph/TrafficGraphPage.tsx create mode 100644 workspaces/kiali/plugins/kiali/src/pages/TrafficGraph/factories/KialiComponentFactory.tsx create mode 100644 workspaces/kiali/plugins/kiali/src/pages/TrafficGraph/factories/KialiLayoutFactory.tsx create mode 100644 workspaces/kiali/plugins/kiali/src/pages/TrafficGraph/layouts/KialiDagreLayout.ts create mode 100644 workspaces/kiali/plugins/kiali/src/pages/TrafficGraph/styles/KialiEdge.tsx create mode 100644 workspaces/kiali/plugins/kiali/src/pages/TrafficGraph/styles/KialiGroup.tsx create mode 100644 workspaces/kiali/plugins/kiali/src/pages/TrafficGraph/styles/KialiNode.tsx create mode 100644 workspaces/kiali/plugins/kiali/src/pages/TrafficGraph/types/EdgeData.ts create mode 100644 workspaces/kiali/plugins/kiali/src/pages/TrafficGraph/types/GraphPFSettings.ts create mode 100644 workspaces/kiali/plugins/kiali/src/pages/TrafficGraph/types/NodeData.ts create mode 100644 workspaces/kiali/plugins/kiali/src/pages/TrafficGraph/types/NodeMap.ts create mode 100644 workspaces/kiali/plugins/kiali/src/pages/TrafficGraph/util/EdgeLabels.ts create mode 100644 workspaces/kiali/plugins/kiali/src/pages/TrafficGraph/util/GraphDecorator.ts create mode 100644 workspaces/kiali/plugins/kiali/src/pages/TrafficGraph/util/GraphGenerator.ts create mode 100644 workspaces/kiali/plugins/kiali/src/pages/TrafficGraph/util/NodeLabels.tsx create mode 100644 workspaces/kiali/plugins/kiali/src/pages/WorkloadDetails/PodStatus.tsx create mode 100644 workspaces/kiali/plugins/kiali/src/pages/WorkloadDetails/ProxyStatusList.tsx create mode 100644 workspaces/kiali/plugins/kiali/src/pages/WorkloadDetails/WorkloadDetailsPage.tsx create mode 100644 workspaces/kiali/plugins/kiali/src/pages/WorkloadDetails/WorkloadInfo.tsx create mode 100644 workspaces/kiali/plugins/kiali/src/pages/WorkloadDetails/WorkloadPodLogs.tsx create mode 100644 workspaces/kiali/plugins/kiali/src/pages/WorkloadDetails/WorkloadPods.tsx create mode 100644 workspaces/kiali/plugins/kiali/src/pages/WorkloadDetails/WorkloadsDescription.tsx create mode 100644 workspaces/kiali/plugins/kiali/src/pages/WorkloadList/FiltersAndSorts.tsx create mode 100644 workspaces/kiali/plugins/kiali/src/pages/WorkloadList/WorkloadListPage.tsx create mode 100644 workspaces/kiali/plugins/kiali/src/plugin.test.ts create mode 100644 workspaces/kiali/plugins/kiali/src/plugin.ts create mode 100644 workspaces/kiali/plugins/kiali/src/reducers/HelpDropdown.ts create mode 100644 workspaces/kiali/plugins/kiali/src/reducers/IstioCertsInfoState.ts create mode 100644 workspaces/kiali/plugins/kiali/src/reducers/IstioStatusState.ts create mode 100644 workspaces/kiali/plugins/kiali/src/reducers/Login.ts create mode 100644 workspaces/kiali/plugins/kiali/src/reducers/MeshTlsState.ts create mode 100644 workspaces/kiali/plugins/kiali/src/reducers/MessageCenter.ts create mode 100644 workspaces/kiali/plugins/kiali/src/reducers/Namespace.ts create mode 100644 workspaces/kiali/plugins/kiali/src/reducers/Tracing.ts create mode 100644 workspaces/kiali/plugins/kiali/src/reducers/UserSettingsState.ts create mode 100644 workspaces/kiali/plugins/kiali/src/reducers/index.ts create mode 100644 workspaces/kiali/plugins/kiali/src/routes.ts create mode 100644 workspaces/kiali/plugins/kiali/src/services/Api.ts create mode 100644 workspaces/kiali/plugins/kiali/src/services/Prometheus.ts create mode 100644 workspaces/kiali/plugins/kiali/src/setupTests.ts create mode 100644 workspaces/kiali/plugins/kiali/src/store/ConfigStore.ts create mode 100644 workspaces/kiali/plugins/kiali/src/store/Context.ts create mode 100644 workspaces/kiali/plugins/kiali/src/store/KialiProvider.tsx create mode 100644 workspaces/kiali/plugins/kiali/src/store/Store.ts create mode 100644 workspaces/kiali/plugins/kiali/src/store/index.ts create mode 100644 workspaces/kiali/plugins/kiali/src/styles/AceEditorStyle.ts create mode 100644 workspaces/kiali/plugins/kiali/src/styles/DropdownStyles.ts create mode 100644 workspaces/kiali/plugins/kiali/src/styles/HealthStyle.ts create mode 100644 workspaces/kiali/plugins/kiali/src/styles/StyleUtils.ts create mode 100644 workspaces/kiali/plugins/kiali/src/styles/TabStyles.ts create mode 100644 workspaces/kiali/plugins/kiali/src/types/AceValidations.ts create mode 100644 workspaces/kiali/plugins/kiali/src/types/App.ts create mode 100644 workspaces/kiali/plugins/kiali/src/types/AppList.ts create mode 100644 workspaces/kiali/plugins/kiali/src/types/Auth.ts create mode 100644 workspaces/kiali/plugins/kiali/src/types/CertsInfo.ts create mode 100644 workspaces/kiali/plugins/kiali/src/types/Common.ts create mode 100644 workspaces/kiali/plugins/kiali/src/types/Dashboards.ts create mode 100644 workspaces/kiali/plugins/kiali/src/types/ErrorMsg.ts create mode 100644 workspaces/kiali/plugins/kiali/src/types/ErrorRate/ErrorRate.ts create mode 100644 workspaces/kiali/plugins/kiali/src/types/ErrorRate/index.ts create mode 100644 workspaces/kiali/plugins/kiali/src/types/ErrorRate/types.ts create mode 100644 workspaces/kiali/plugins/kiali/src/types/ErrorRate/utils.ts create mode 100644 workspaces/kiali/plugins/kiali/src/types/Filters.ts create mode 100644 workspaces/kiali/plugins/kiali/src/types/GrafanaInfo.ts create mode 100644 workspaces/kiali/plugins/kiali/src/types/Graph.ts create mode 100644 workspaces/kiali/plugins/kiali/src/types/Health.ts create mode 100644 workspaces/kiali/plugins/kiali/src/types/HealthAnnotation.ts create mode 100644 workspaces/kiali/plugins/kiali/src/types/IstioConfigDetails.ts create mode 100644 workspaces/kiali/plugins/kiali/src/types/IstioConfigList.ts create mode 100644 workspaces/kiali/plugins/kiali/src/types/IstioObjects.ts create mode 100644 workspaces/kiali/plugins/kiali/src/types/IstioStatus.ts create mode 100644 workspaces/kiali/plugins/kiali/src/types/Mesh.ts create mode 100644 workspaces/kiali/plugins/kiali/src/types/MessageCenter.ts create mode 100644 workspaces/kiali/plugins/kiali/src/types/Metrics.ts create mode 100644 workspaces/kiali/plugins/kiali/src/types/MetricsOptions.ts create mode 100644 workspaces/kiali/plugins/kiali/src/types/Namespace.ts create mode 100644 workspaces/kiali/plugins/kiali/src/types/NamespaceInfo.tsx create mode 100644 workspaces/kiali/plugins/kiali/src/types/Overlay.ts create mode 100644 workspaces/kiali/plugins/kiali/src/types/Permissions.ts create mode 100644 workspaces/kiali/plugins/kiali/src/types/ServerConfig.ts create mode 100644 workspaces/kiali/plugins/kiali/src/types/ServiceId.ts create mode 100644 workspaces/kiali/plugins/kiali/src/types/ServiceInfo.ts create mode 100644 workspaces/kiali/plugins/kiali/src/types/ServiceList.ts create mode 100644 workspaces/kiali/plugins/kiali/src/types/SortFilters.ts create mode 100644 workspaces/kiali/plugins/kiali/src/types/StatusState.ts create mode 100644 workspaces/kiali/plugins/kiali/src/types/TLSStatus.ts create mode 100644 workspaces/kiali/plugins/kiali/src/types/Tracing.ts create mode 100644 workspaces/kiali/plugins/kiali/src/types/TracingInfo.ts create mode 100644 workspaces/kiali/plugins/kiali/src/types/VictoryChartInfo.ts create mode 100644 workspaces/kiali/plugins/kiali/src/types/Workload.ts create mode 100644 workspaces/kiali/plugins/kiali/src/types/types.ts create mode 100644 workspaces/kiali/plugins/kiali/src/utils/Alertutils.ts create mode 100644 workspaces/kiali/plugins/kiali/src/utils/Callback.ts create mode 100644 workspaces/kiali/plugins/kiali/src/utils/CancelablePromises.ts create mode 100644 workspaces/kiali/plugins/kiali/src/utils/Common.ts create mode 100644 workspaces/kiali/plugins/kiali/src/utils/Date.ts create mode 100644 workspaces/kiali/plugins/kiali/src/utils/Formatter.ts create mode 100644 workspaces/kiali/plugins/kiali/src/utils/IstioConfigUtils.ts create mode 100644 workspaces/kiali/plugins/kiali/src/utils/RateIntervals.ts create mode 100644 workspaces/kiali/plugins/kiali/src/utils/Reducer.ts create mode 100644 workspaces/kiali/plugins/kiali/src/utils/ResponseFlags.ts create mode 100644 workspaces/kiali/plugins/kiali/src/utils/SafeRender.tsx create mode 100644 workspaces/kiali/plugins/kiali/src/utils/TimeSeriesUtils.ts create mode 100644 workspaces/kiali/plugins/kiali/src/utils/VictoryChartsUtils.ts create mode 100644 workspaces/kiali/plugins/kiali/src/utils/VictoryEvents.ts create mode 100644 workspaces/kiali/plugins/kiali/src/utils/backstageLinks.tsx create mode 100644 workspaces/kiali/plugins/kiali/src/utils/entityFilter.ts create mode 100644 workspaces/kiali/plugins/kiali/src/utils/tracing/TraceTransform.ts create mode 100644 workspaces/kiali/plugins/kiali/src/utils/tracing/TracingHelper.tsx diff --git a/workspaces/kiali/.changeset/hot-panthers-wink.md b/workspaces/kiali/.changeset/hot-panthers-wink.md new file mode 100644 index 0000000000..8c2bee6ed8 --- /dev/null +++ b/workspaces/kiali/.changeset/hot-panthers-wink.md @@ -0,0 +1,5 @@ +--- +'@backstage-community/plugin-kiali': minor +--- + +Migrate from janus to backstage diff --git a/workspaces/kiali/DEVELOPMENT.md b/workspaces/kiali/DEVELOPMENT.md new file mode 100644 index 0000000000..f5eb24ec85 --- /dev/null +++ b/workspaces/kiali/DEVELOPMENT.md @@ -0,0 +1,64 @@ +# Development environment + +## Full Setup + +1. Configure you `app-config.local.yaml` with kiali configuration + + ```yaml + catalog: + providers: + # highlight-add-start + kiali: + # Required. Kiali endpoint + url: ${KIALI_ENDPOINT} + # Optional. Required by token authentication + serviceAccountToken: ${KIALI_SERVICE_ACCOUNT_TOKEN} + # Optional. defaults false + skipTLSVerify: true + # Optional + caData: ${KIALI_CONFIG_CA_DATA} + # Optional. Local path to CA file + caFile: '' + # Optional. Time in seconds that session is enabled, defaults to 1 minute. + sessionTime: 60 + # highlight-add-end + ``` + +2. Run + +```bash + export KIALI_BASE_URL=https://kiali-istio-system.apps-crc.testing;` + yarn start:backstage +``` + +## Configure auth + +### Token authentication + +1. Set the parameters in app-config.local.yaml + + ```yaml + catalog: + providers: + # highlight-add-start + kiali: + # Required. Kiali endpoint + url: ${KIALI_ENDPOINT} + # Optional. Required by token authentication + serviceAccountToken: ${KIALI_SERVICE_ACCOUNT_TOKEN} + # Optional. defaults false + skipTLSVerify: true + # Optional + ``` + +2. To get `KIALI_SERVICE_ACCOUNT_TOKEN` create your service account and create the token + + ```bash + kubectl create token $KIALI_SERVICE_ACCOUNT + ``` + + or if you installed kiali with the operator then execute + + ```bash + export KIALI_SERVICE_ACCOUNT_TOKEN=$(kubectl describe secret $(kubectl get secret -n istio-system | grep kiali-service-account-token | cut -d" " -f1) -n istio-system | grep token: | cut -d ":" -f2 | sed 's/^ *//') + ``` diff --git a/workspaces/kiali/README.md b/workspaces/kiali/README.md index 94044a3fa6..7ad884bb31 100644 --- a/workspaces/kiali/README.md +++ b/workspaces/kiali/README.md @@ -1,16 +1,162 @@ -# [Backstage](https://backstage.io) +# Kiali plugin for Backstage -This is your newly scaffolded Backstage App, Good Luck! +The Kiali Plugin +This plugin exposes information about your entity-specific ServiceMesh objects. -To start the app, run: +## Capabilities -```sh -yarn install -yarn dev -``` +The Kiali plugin has the following capabilities: + +- Overview + - Metrics by namespace + - Health by namespace + - Canary info + - Istio Config warnings +- Worklist + +## For administrators + +### Setting up the Kiali plugin + +#### Prerequisites + +- The following annotation is added to the entity's `catalog-info.yaml` file to identify whether an entity contains the Kubernetes resources: + + ```yaml + annotations: + ... + + kiali.io/namespace: + ``` + +#### Setting up the Kiali frontend package + +1. Install the Kiali plugin using the following commands: + + ```console + yarn workspace app add @backstage-community/plugin-kiali + ``` + +2. Select the components that you want to use, such as: + + - `KialiPage`: This is a standalone page or dashboard displaying all namespaces in the mesh. You can add `KialiPage` to `packages/app/src/App.tsx` file as follows: + + ```tsx title="packages/app/src/App.tsx" + /* highlight-add-next-line */ + import { KialiPage } from '@backstage-community/plugin-kiali'; + + const routes = ( + + {/* ... */} + {/* highlight-add-next-line */} + } /> + + ); + ``` + + You can also update navigation in `packages/app/src/components/Root/Root.tsx` as follows: + + ```tsx title="packages/app/src/components/Root/Root.tsx" + /* highlight-add-next-line */ + import { KialiIcon } from '@backstage-community/plugin-kiali'; + + export const Root = ({ children }: PropsWithChildren<{}>) => ( + + + }> + {/* ... */} + {/* highlight-add-next-line */} + + + {/* ... */} + + {children} + + ); + ``` + + - `EntityKialiContent`: This component is a React context provided for Kiali data, which is related to the current entity. The `EntityKialiContent` component is used to display any data on the React components mentioned in `packages/app/src/components/catalog/EntityPage.tsx`: + + ```tsx title="packages/app/src/components/catalog/EntityPage.tsx" + /* highlight-add-next-line */ + import { EntityKialiContent } from '@backstage-community/plugin-kiali'; -To generate knip reports for this app, run: + const serviceEntityPage = ( + + {/* ... */} + {/* highlight-add-start */} + + + + {/* highlight-add-end */} + + ); + ``` -```sh -yarn backstage-repo-tools knip-reports +3. Configure you `app-config.yaml` with kiali configuration + +```yaml +catalog: + providers: + # highlight-add-start + kiali: + # Required. Kiali endpoint + url: ${KIALI_ENDPOINT} + # Optional. Required by token authentication + serviceAccountToken: ${KIALI_SERVICE_ACCOUNT_TOKEN} + # Optional. defaults false + skipTLSVerify: true + # Optional + caData: ${KIALI_CONFIG_CA_DATA} + # Optional. Local path to CA file + caFile: '' + # Optional. Time in seconds that session is enabled, defaults to 1 minute. + sessionTime: 60 + # highlight-add-end ``` + +Authentication methods: + +- anonymous [Read docs about this authentication in kiali.io](https://kiali.io/docs/configuration/authentication/anonymous/) +- token [Read docs about this authentication in kiali.io](https://kiali.io/docs/configuration/authentication/token/) + +The following table describes the parameters that you can configure to enable the plugin under `catalog.providers.keycloakOrg.` object in the `app-config.yaml` file: + +| Name | Description | Default Value | Required | +| --------------------- | -------------------------------------------------------------------------------------------------------------------- | ------------- | --------------------------------------- | +| `url` | Location of the Kiali server, such as `https://localhost:4000` | "" | Yes | +| `serviceAccountToken` | Service Account Token which is used for querying data from Kiali | "" | Yes if using token based authentication | +| `skipTLSVerify` | Skip TLS certificate verification presented by the API server | false | No | +| `caData` | Base64-encoded certificate authority bundle in PEM format | "" | No | +| `caFile` | Filesystem path (on the host where the Backstage process is running) to a certificate authority bundle in PEM format | "" | No | +| `sessionTime` | Time in seconds that session is enabled | 60 | No | + +## For users + +We have 2 ways to consume the Kiali plugin, entity view or full view. + +1. Open your Backstage application and select a component from the **Catalog** page. + +![catalog-list](./images/docs/EntityStep.png) + +2. We can see the GraphCard in the overview section + +![GraphCard](./images/docs/GraphCard.png) + +3. Go to the **Kiali** tab. + + The **Kiali** tab displays the Overview view associated to a Servicemesh. + + ![overview-tab](./images/docs/EntityView.png) + + An If we scroll down we can see the full picture + + ![overview-tab](./images/docs/EntityFullView.png) + +To see the full view we can select the kiali option sidebar. + +![kialiPage](./images/docs/KialiPage.png) + +## Development + +To develop/contribute in kiali plugin follow [these instructions](./DEVELOPMENT.md) diff --git a/workspaces/kiali/app-config.yaml b/workspaces/kiali/app-config.yaml new file mode 100644 index 0000000000..a05a16389f --- /dev/null +++ b/workspaces/kiali/app-config.yaml @@ -0,0 +1,107 @@ +app: + title: Kiali - The Console for Istio Service Mesh + baseUrl: http://localhost:3000 + +organization: + name: Kiali Community + +backend: + # Used for enabling authentication, secret is shared by all backend plugins + # See https://backstage.io/docs/auth/service-to-service-auth for + # information on the format + # auth: + # keys: + # - secret: ${BACKEND_SECRET} + baseUrl: http://localhost:7007 + listen: + port: 7007 + # Uncomment the following host directive to bind to specific interfaces + # host: 127.0.0.1 + csp: + connect-src: ["'self'", 'http:', 'https:'] + # Content-Security-Policy directives follow the Helmet format: https://helmetjs.github.io/#reference + # Default Helmet Content-Security-Policy values can be removed by setting the key to false + cors: + origin: http://localhost:3000 + methods: [GET, HEAD, PATCH, POST, PUT, DELETE] + credentials: true + # This is for local development only, it is not recommended to use this in production + # The production database configuration is stored in app-config.production.yaml + database: + client: better-sqlite3 + connection: ':memory:' + # workingDirectory: /tmp # Use this to configure a working directory for the scaffolder, defaults to the OS temp-dir + +integrations: + github: + - host: github.com + # This is a Personal Access Token or PAT from GitHub. You can find out how to generate this token, and more information + # about setting up the GitHub integration here: https://backstage.io/docs/integrations/github/locations#configuration + token: ${GITHUB_TOKEN} + ### Example for how to add your GitHub Enterprise instance using the API: + # - host: ghe.example.net + # apiBaseUrl: https://ghe.example.net/api/v3 + # token: ${GHE_TOKEN} + +proxy: + ### Example for how to add a proxy endpoint for the frontend. + ### A typical reason to do this is to handle HTTPS and CORS for internal services. + # endpoints: + # '/test': + # target: 'https://example.com' + # changeOrigin: true + +# Reference documentation http://backstage.io/docs/features/techdocs/configuration +# Note: After experimenting with basic setup, use CI/CD to generate docs +# and an external cloud storage when deploying TechDocs for production use-case. +# https://backstage.io/docs/features/techdocs/how-to-guides#how-to-migrate-from-techdocs-basic-to-recommended-deployment-approach +techdocs: + builder: 'local' # Alternatives - 'external' + generator: + runIn: 'docker' # Alternatives - 'local' + publisher: + type: 'local' # Alternatives - 'googleGcs' or 'awsS3'. Read documentation for using alternatives. + +auth: + # see https://backstage.io/docs/auth/ to learn about auth providers + providers: + # See https://backstage.io/docs/auth/guest/provider + guest: {} + +scaffolder: + # see https://backstage.io/docs/features/software-templates/configuration for software template options + +catalog: + import: + entityFilename: catalog-info.yaml + pullRequestBranchName: backstage-integration + rules: + - allow: [Component, System, API, Resource, Location] + locations: + # Local example data, file locations are relative to the backend process, typically `packages/backend` + - type: file + target: ../../examples/kialiEntities.yaml + +kubernetes: + # see https://backstage.io/docs/features/kubernetes/configuration for kubernetes configuration options + +kiali: + # See the README file for configuration + url: ${KIALI_BASE_URL} + # Optional. Kiali public URL to redirect to standalone Kiali. When not specified, url will be used. + # urlExternal: '' + # Optional. Required by token authentication + # serviceAccountToken: ${KIALI_SERVICE_ACCOUNT_TOKEN} + # Optional. defaults false + skipTLSVerify: true + # Optional + # caData: ${KIALI_CONFIG_CA_DATA} + # Optional. Local path to CA file + # caFile: '' + # Optional. Time in seconds that session is enabled, defaults to 1 minute. + sessionTime: 60 + +# see https://backstage.io/docs/permissions/getting-started for more on the permission framework +permission: + # setting this to `false` will disable permissions + enabled: true diff --git a/workspaces/kiali/examples/kialiEntities.yaml b/workspaces/kiali/examples/kialiEntities.yaml new file mode 100644 index 0000000000..9b33535791 --- /dev/null +++ b/workspaces/kiali/examples/kialiEntities.yaml @@ -0,0 +1,34 @@ +--- +apiVersion: backstage.io/v1alpha1 +kind: Component +metadata: + name: istio-system + description: Namespace istio-system. + tags: + - istio + - kiali + - core + - servicemesh + annotations: + 'kiali.io/namespace': istio-system +spec: + type: service + lifecycle: production + owner: user:guest +--- +apiVersion: backstage.io/v1alpha1 +kind: Component +metadata: + name: bookinfo + description: Bookinfo Application + tags: + - bookinfo + - kiali + - core + - servicemesh + annotations: + 'kiali.io/namespace': bookinfo +spec: + type: service + lifecycle: production + owner: user:guest \ No newline at end of file diff --git a/workspaces/kiali/images/docs/EntityFullView.png b/workspaces/kiali/images/docs/EntityFullView.png new file mode 100644 index 0000000000000000000000000000000000000000..e23c6ce137df713a7e900a36d1e2ca814897e8ee GIT binary patch literal 96325 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

?k@Ir&avpb-cz7KcvI?hAHqYm)h0RNj zOK%N~_Ba_1$iL^AlpD6Gg_HUljoQ9XsV*xjWwQkP(J}v@e!XeIi#so2SOHC6w)SiC zj_ypyl2W7{QEJx>49N%aGCzE2axM3^XGCBDAP7%L!I;VMYjZ2B~t!T!M z=1dWs^PpRC@6Vvo%bbOX9$S{tPXz5OuIS;_iB6`+x|l6D;BgBJn*{&2{gMN*1vPvg zd#p*Ef0>RO1Lii4$qj{(Q`Imp$G7O;q1?D1i=_4BT8H;K&3KE@D*F~BU9MPk6r#Cx z9M)S8-OfTxV5uU(UyGa^>Nw^qWboh`r_^%I)^>$bBrZ?rzN83D4e&ZmqCD0IkJ2{D zBnNF_rcTB9>T6*+LC!t%6;s5aH*Avy$7vt)K7^Jm-v2u1vrGxyye1(0~WvXzs1m|`}+b18ytzkCkG=o)fg!0BAG4~q0i5@ zQe(aLxy)&I>(Xj%@we;@&{2of9tGX0cA8a~J<(bGZ}!B5UZ{qk+Vx;*^}t=Fc#%@W zwzX$>2;=07qOulN9oy>m(2DMHk21`lWU z4nNS^JUzUpFubd%a6FZ(6dB5SiOl`7dT! zkFb4B?=ok57gTe6ySP2hH#@TZLH$Z3OfPhX2^{ejYk5#OXgFRl6+He415FPy`TVOK z$AT=BHQ&Jhv9cMQCCRcCHr9OmZAPy5yX?K9bKSSeY!-|1A7icUZ8p+5ICSPc-Us6s ziuZ`uyYtdYLvbcc!}5@o@Y8lFm`gy{Zc)Kkk&zWtE z(0TqAI~@_j2)rSHuD$nze{r;eKux7CcEpwKsM6#;hby;|`#L>5hro1sn#7#803pu_1v77y_hOjY`QwQmacJa4 z3#X*;EnJ9Z65%ioDW4DrM?sZAQen}aWv0YUux|;r@1OM>*`uM!s;gr_WkWS$sHeXa zqWFh1lvth|g(4Of77rR}6LKc1$pxNYXH-6eav{Kb3aV93Q>`UY*-AL)DT+hx3n(z~v>y!X)D-Y(JU^eoKY6PtWMu7<41B=4h*3 z?0`gN$y0FO3UB2EbEj3+ujweIcuvE&4p%+<8Wb`KvIvb1UEN8AHJv3a>~2|h?t{syO@&o8scWB`&-ke3>XRDOtFc3F;pmb1{HrT% z?t{R$>Du@`wA8I564dxdvYFYMdFTQb?~yus=(+{iaPG`?!(=h z{>y#u*Jd5NvSqr)ry^=L+(~u^&iTdg29aS{-iy1zkU9LIcn-^5Sa`1&>)^%gaI=QydqGlRv@njvt8#|K1Y;=0oaSKdK7~VU1 zkH?g^5;oUbiLLI5)Z;q2OO`m!lSSsWZ?g;wy1SG()r=T6mRKDtX~foWlvz#&{z=sF zk(jlbV=9M(Y-lg)OW(wRfrvTes@<<`GIOYST?*r|@9{n1<1+B6!|6;L&pvMAP@@Zd;t4&Lhst`MUNu#7dHr&L`4J6_&qAl4#6z31;LTj~(K=AxH~?)L55^vxAd)`eCT_!1-9ewC4X>F2ceQO?LW|9gMNxX1(&j zcl++@uZV-yhYg7Ww*ii`q`alT#lFi^X7iZUrmI`sy77V#5((X!zqt)#aH(A;_GrSw zHlec?N|1BCs!4>1BRK-1Mq=j=Ri9^%8f|V_WAc3TWQ4TVtM*e*^2h7ZU#{WW3&0rL zP0E)N9Iw+BW`9(n{OGDy9XY{#b=z+BUzi=LBFC@VIgh0rIps<)tYJrMg-}6?hkBl3@|n@$@K?xV z>*FsUoMw9t);fZ)vsm6qj=%QnJn#D7-0Hh&;k=2Xs&}I2p#bi1!rWC8P}!oTvfk0f zE2sPd#!bz|+>zB5Ciq`-3isV~LhWlE!c+l=x$lhcW||ry5kbBhB4+QKm&MWpPTwSW zTHRj6^Lx?e!*{1K=pgO>fqgy=Qe)&}*ym{GY{e%hA2YgzWHL~WU~=2?O-o}A7JzP^ z5q~aaKRkXq0adb?PivPF`xc7IF_D{@z*4ucbsL;|f)sW6q;TIB2U!;*2RSUGo9&^& zm%tkZ`u3hfX$`Eh@^2mM8S%FhY)+P*5C-jK$Pi?iDGJ0bYxbl^eYsRLeuou8HNFU| z9_q_y^;I7k7*G#e@=%H8Bct2!MpBY}_6o|%i08tThH6R|Z=Zi?O5=#o3`J$>_KMT5 z*0}NY4(s#szCn_6m zi`CNGSzr5TJSZJp)$8#u-)3{%rG8uQW5PD#_jIf6`tJJbZ~VHKklr5`wX*7&PdI7t zyI4lIGmjq7j}EUhK*d&wq6n!WM_i=s5Sr9i^=X{CA1CPk8KkVU)Jw3UQqE*MMV>jm zobrHUt!z4UIJeAZJ$?@YGAOy+$03Xb+a9T)=htN%Zov{5JZ|7dHO4WOQG{leZ|^eXXM+Rj=jH%<*k0p;ay$KzXfHG z_}Qp>`jPfuu!Q*AS{$G{{LS6q! z<`QY$7}Uw>NTDV7{j=*&o(h}-AB{IANA13*@@xiQoU_UFbSLnJZ8~=1UwuW(=F*z4 zJ1z|jpZhK>IW9ch0DTSyIU3$GC#96g@`qP~!=O^$1u5SGMMg;}E`u+eVPQFU_3E55 zjms~J$VH71tQ@J9PGR77%n4^=Akp0EYu@k5rM^1iwPHrj*HJ3GH;(`9{<6lJ=({?ADXspfdTiQKhD z3x4e{0e6i?Uz#iLAV1JGbNi{hD%z8-Z~dd!*o=0S+2Y%&+&)ifN-T)md)Q&t?fvtK%by0awpS zQ#wrh7V#!&W^kO!c>O>S30a88Ty-nzLYaNJ6EjlKrw*QY(+1{?)xdr5{Z#N%+}iU`rub5=M^ZGT9(uq z7St;p!Z2c{1m*nO(kxzh99&#n-`m=P8vpc%_4A^lh)xa5Tp=z0fLiqhPn9)d=;a2# zcBiGSYzWG4-YyNi-t7e?4w<(-#22RU$LDP@WaPC2i!S-+lc=dqS zVUh46CgGP9iPNp{F(zlBzr>2%Wpnln6k}!ahDZ~j6e>#PwZHGOxj4YFT*R%Yt{(k! z4NOH|Lgq!7K=Gy3;E4#oITY&NwyJNohfgA4gNLhG7cw1ygbus4B0G+=W!JJRf8zx8 zlGlpV&Dc3*_3<#(?;eUludjI5Nd=oHOV~ss@M@4ZtO6oK%nz?`JT$uBO)Wv&sHpg= zZURLZm4qpa_wL=hGpN-)x1aVS^C5I?w>i|0Pi|>3FfziUrfAMjw)zzUvN#iu@A8S- zc~*c@ClmsqR&6;1G%_%uO)$%mpMM)5Eu9a*dqQUe^p6 zy0AYV4T=r0MGZ$uJDNj-j}#Bauk=vx6ilbgbo|tJi+erWmCZ^+AXPV{T^-cEo%6L+ z@Y;k7326p}EDWJ!4eZ?T*(3rZHz*(#UUGHlNAA$0Lp4nj|etp#&PJq3I= zN&K&EHLfj3l&m&huc_bmw^)5u3AY61CQB+JwxO>9LkwOwZ^ACJe~47IQ%qoSf6s3b zvan!xPJ0D`W<5}r`qvf*Hg2~lx zFDHiqc{+h=?45S!%XRCIz9k0@;f|{)dB&r(r1HY7L8~uk#-U83 zU$g8QV~OV*t^>ikYCYGGQH@c<0@xCic<6a?kI?Spl zRKs8I8w$GxX0{X+VSpsk(HSv}3BBUNa9Y)D+w&Y!Ixue_(pIO<`uzb22~{*tM9 z_;`mkPSBU9+UYvv6n?5NS%cJ>*S05u94Gn?=@vT>-{0o!rl?7cMZzjloapK+m?K}K zG|gp@w^UgiW+f$V>kRW;Vj)l<_m{)F0Jpw8r*39LRTHZo_hl%zKTDmz)|Z|?4UvzJ zHiJWEi#13`Vj2CBN@fvAfp{m-K@Jgouq}AKX!@rl>Dlw5310lt%|nh{TfGr|tBpN1 z^*pJgUJEp%IDIaY+2B{~Ys+oPBBxut8b{Z}+6!K3aBcOdIDR5DBX&)sN+@%)lhf+r zgz|@@6TkQy=tB7=ynoxrsp?xRc9)IrG)R~yn%sJfj?{ZinPE;Wx-~*h{UD2x8L3y# z<4I11rWa+tjN*yZerZkBO_=bc{?}I%uqT6ChaD^7PPtMEyZ#;@OFydh{c{XyFOfK1 z)=b1z2}~=}c58lp$2tKIDdLhb`#(aTX;Ev5MTnh2ub( z%_b=vT!GR)PMe7Xie={(#QUCVn%G1~Hy6~1&A_+~1lR{LcI^NB37_BTy;rgexqk0Q z4wbPnQ4QWsyT|1MpCrq!UEzSo)}0FK(ao+%aqoF~d3k9u*5$_!(l!+*g^z56H!r(5 zqyJa+ z(?fr6lltiirl?KnYb`Z8psZ zh`Fa0ACz5NE4pR&FG!fbi8NWd@jDc0Q%t_jY$PvoKj}zW>$=qTZN#LXQ}A7_nEZt3 zuD)MqQrTh41cA=}ryFb!);{!Rtt(D8`?nGfo6$YOe`C4b|5#nUb=om>Bs%fD~01aF@{D#Q0Nx`CFF_m1L2 z+dbVd5-5RjO%sk8>6&x>_z>01I<|HO8Y9;n>PIK1z<}<*#rWA3IyA{{w&Q_Csq0X_ zN|o?kP$T7kT1aR5sFNR|S_Z{TL9 zpHXi*KZq|_>4Sp6$CoBi(5r@1gdtSMQHJ(n%s-y#Pb5&-em?#}R9QK3!d5yXvuQn} zqNyYY5dty=r6#9*VcOugp6(cZsZB%cdv0sK$}KIod?RWtx?>DTuO3Q%B9iL4j*$ns z_EZTYK_ZMG*KIs{@UGi%s)z|)*5DSd&rGoZZ~hSRS;phoUVGu1l-H9x2k~_1!m|2*=i)R8PWLcI7pD&4BPM>_ z^AzcsM1v0^^flOaA1Js4Pr{p1LJ#%T$bq`1(pS~%F~XpS_e+2C+gq|a>!$CFY%rMd zR^$dTR(9i9z=>CntJ0@VS3Ed;oHbf?7Q|zGg?`noYEj1j;QqwUIUtvJVX*8_AI>eDY!xCK~Im6C7=khOKuRopjHf4m<(u~rlp({OcEb5DQb?952 z_AgdS{1{?k?6*Db7~AG626CWY%oP*6PD@0m?t| z+%hjGsvaeSdex*F>9Ilc++f0u@ z+OdNRy^AN6^{7{VgHpxisDBwz0!Ihu6==JFydw$~+<2~LEG}Q&ajTg{7&=;rcRuam zLRkT`nOMhO)x_vYE$^Z6vNXi0+WP$*KuHZErsK&5oJblw+fNO91&&I;7PQKyuVsKCmY3<>OKxY)30=R}u z3A1;QR;5M?`q#MalOV$c%W+3IhF8k^=kq)L88Y7wdb$)G9O?)?;~45qoOEY4A*6gtThD<=@JK*gO@cupqpHy#mNy zDzOJQaiC4jQNDDzLeUrMd)j@hdTc!+ETykbPl8s@_3N_Fx%YzB7Zt<;hu$wC^RpRl z;dw)MZV1TsR|)CM<`=Rgv@zw>zBY+kBUwHvaGaTtRoXddTv5H<)S^#u=4}2-=B-Tg zgm+%9*B7LUwo*M52X({Im+vtaqx%~dS^D*$C){E{SHcnD9*CqfJAc*TEY(|s+hT@$ zM-wewm}rDgzqWYqER;Wc=Nz#S!+|FDyKE)~dcCOUmtX(hnmU6r;sJ>@kPxG$qWTVU zg67ZbfI9#HpX|J_~63<;Y;5rP!eYf1HseOKe51Ux-m4UR2uP0Qu7wnwfrpuFOEQp5Z(0inx1lu`2SEFF6eLc1k**=T^wD%V6Z#Gl9-gfr7y*uxMwXU)bn^FU}Mw0SGVYiS>hx5K(kLX zv@1c?Cj@gWsG>HLOSH8=zpdH?*>9S>w9jeZ;sDI6!-o;9k3xl zAru5%!XqOemzyaj7`wIdDcH#{=0}zDxZz0Dy>{E#jVybt z;L-X)PoC_IX$g5?eA8Gx($W+3R6w&q+qYP`YiBbQ_mBaO0d5dG_LYyAQKhR*h-JN^ z3HilvMSCfZ+|eLIdgEBf4BO8^=YtKTj)2#|izP!IiC?L=_jw@cfr#3JYp8oq=;-O+ z^(};tSSo|SFcUt8$dp++xkGMWXO@Us<<{M$mS)*h+cx=?2zM_2sry`#W|kx~47TY( zi9wcgTX(n2>~%zml?oI!qZL^Bn^@brI<+NGgenCPd43$(OW0!~>y)(T^#rtq%`Wd}Im0>_Q zG=2*ofh66xi4AV?aPN{%@=%#}b-bM1gJDxg6kq+&Q5F$#-y zLwX6uhaWCWX&A6%x9r`aQ~gluE~N^Mg%7vFs|lO^&8nGyETibrsJ;`D$-_~H}U z8g7Cg=G+n?+rL+O%NL7GRZHxj_|V)Z&po(zgY;5{qDyorU+%Da4t9j3V#PjbPxXCY z`Eu@Bv89LBa#xJjMR4HSo^vpgu&N4E02|@ND0HbH=4CA*dd;e+6OxEc4e$cvcCbn5cC|Zpuef@?9h#C0Hmsr?ssG&E zG!!2`&|Gxe^#eDl{P2+zhn1UPT#I4B6B_yc2%UhEhD`OYSOx}Wh4_kl9;w=a^PFfB zLmi*AGtU?uM%8|}+fk`NX3hVf{7?}CexS6dC@jBs&C~v{BNzG;)_Ck{R9Bc>CFr;D z?9B!j3P+E~nYot_I#hfzb!~QpG}oUN89JV~`sT~Qizfa?T29wZPGyK+9j3zK+6m@z zP_+NC9E#LbRX@N5f>^Unn`QNkIK`g=iMvi-cP4``?eDnsIOISwn8I8Zt+>p5P|rP;y*A&!s=*~`p+xDVeHp7q|lec(VdvIX_>UjHitsjAdylFa7G)S=}rDgxuN~z<7e5xQv^dTQ`1S zP1+K*sY2>&?v=5$qYJL#w!G?>Fl@JecoA%Nb4}TQdK!msbt0u1W#7~4?yHn3S#!95 zoJzg#G;)ck`}lS;(5)SWg4Kts8rK3U;#h(kDd87bmdu_XfqQfc?3@z|FIDsrBUSl6 z5u94%6f6iJ@VGd+BFu)H2|zcUwnoHfrJb*=aqLA+fL*3^>=RJ-WQr9`l-!|r~-=zLFtbdi6B??VlZ7?8&TE;?v!w|(c56#x$ks+RZx)TTyu z6Wz&4N!`W=6HZsIV*Odr8OVCzB~}5c%#TuH;AO!o+Q7ZTjw(AocT^Lwd}qla#cjtY zXT`;~D2VIy(M%*fobUVnV9VIyg$rlZJ(ITb)R9PeT#aXet5oIvOAdgtsAehZ9=ICw zS>Z1wpiQkdVXfBj`(xLRUHb~_U=oJG^~GOXE8mnX+WtI?l|y+ z31HLMt~<<5wwa%52&F1HcV>xc|x^uWh24p2e!Q&{#F$ZWI-yy9d``Gcf?KwmknN%u=(MK zCp6$M_uQ&Q9hb5ora+#3o=Va^oBMM6Mx?!I|dOxK`AB@fwH zmy*R)A<6pGPNe8m8%TDK>88ZpkcwlF58DE@0PV%AjpHK z*KnyoLMB?o-g+G*%K;lu&A03UF%X~!Kn)fl7XY`g^~MtUsj)(tmW(s`7_$-uXTY^n zik^8s?>|4T50dCEh`_JATQHdbLLo-zj$DJRf4(P1v#mH`4Q0*E@woil1Ok{s^pio< zILJ=<&sWGahlPiymzJu80J#T%7pnVcDAV|~Ses{AAka<6&fej)xaDF${^g82jOp(K zMuJ)l)W4&6Z4$Hq9dvmc@6XRElKpI42@y$;Dc5}LXFNPqHyQi&7*KtG1i>rC5TC{k9 z9XNUP6NKxj#L5rXo9*F5)T_ml)jDi0(EinH0S@tVDidH|5pfv4p@OVrLHlGs5+THc zG`%Va%_9`&ZjfnC{P^*%>OA7xbBazb_ZKj4~3=-fQXyoH!*fJrfh=fFnE~go`i;(%|2> zLEG94B%l$97y>l~4%LkVEONmt5RQj#0pqV22*VJ~e?WrD0&zgg^T-~FxDOmxMzev4 zp$(uT1R+6a!czt=v7D$%fo?rI0wD|OMwH8^hVl&pKY&en5Rc0u(_wR^ioHP{!|q_W}+(Cj#6g5_EG){u}&!^Af!tC@pRNY1r$WxU{A9 zpv95h)6A&UB8Zz&pSaVxxTF{^k^s1jLvZKdXum7&Sl^olPR-?jOt=NYekcb#=^NX} zfkf9kM**_(h8q<7vk}E=gjoRx<=$))FsXbh8FgvqO-)J?b{w&f#Ek;&cM||ZAR6tK z6-(Td8t(xK(GWyR9AN{~v~L?(t9KJ1lLVRPRJd*;4pD^44&1lzmnA*6GPO+r@(CZJ z6xSm_6Sr#Pj$3*(k0G_8k&ev*5-vTP1gMxZ zBSh;$5T^%dffx|+VDG9Iw;1aII=jI^Y`!x&;CL)bF~2N(>+TrC0jz3E6`DPVuN^T$}@WCAe+YV?Ree!+nL?GM25 zo8H(n{pBJlAGOfj!fGcHnJHZsD6Qm~Bz2|jiW#h}V!!n9B+yf*2zD2YgE{{1#jwj4 z0P4q1c4@(jj%|pFFiJE8z$m#MTa1at-w*dT0-sX}3Xbwx0+Vqc7^+!-ius{`dv4ga zy$9faj9aWKpR__if=_`SuMChtTpou`h?{wx4Vz>qEH+@O?01wI!z&s{ht+_Iv$hMY zWAt=`X9EV2b8w^zq1;1^kXJQn>)1pc=^fJrJR8tO7egRCfI~qRA;|vtv^)pl(Vu`5 zuy1BANdsm=Ly;9o!G8`ynBrh;I{C?@MMthdSPAeWB6^~+Y!hrq@a5zqkJXj!tCZ|X z(t8AVp6cXOYn;3q1XjxS6+WdY%$OkGM*<08xnEU{j8?J!d{0Y`?OK8Iz?ZLm-8{{= zEC_TjiibY4upqF?_Q)|ss7&ComBSgthiwRjZ_T-$hz{&*8M~|gXr(i-A!6m^hV6=5sa<;kOC$$Deh>?o00*N{pnB4F2jL0y zf7YSkda}JdlBrr?XaWczh`|wy1SI%s)4)H9%r}){<`UK-3yBpdmtsY&=XRsi{IiPF zmN)cZf9xDcSG%*e3(3gqGVnSdZS?`e#hgDD@CUJO>tggWNr&YNIbE>b9=3^r6%t$l z_7R+yb{O7f^dSX}UIbqQhwqYetM|nb;*FtU3T`)qRqkMBZhv^<0*@*j0$pGL9^T_0 zWv%m<2)GcCPo9}UAJdb4>6v++6KTO>|Lc8+#XHwMjj>7j3OjApWdW)l*iH;S6k?WH zfO7O9G$n+x0RI3rHMyH%H-tPYf%>FwauG@Dp#W%slVtjW`8UL&dDEmW zr`H7bz?bx-NHX^1#^toMkaKSKMgtsHw_bJ1Zt6;3CWM4>9^4W&Wy@+!`ke&YEgc4t zSCl-ostsEXsr2nhQCy8Ab67E0U@Z{3JQ=nOVuU-aJP*{D zMkxn*+Mng(c`~<0d&K}-7tj&D-|6By}Quln#E|P z2!#2tyra3TdUu*57Q8TAOePZQ)oKLg@iRqSw-*(?Mp(=+J;zXaG$}8yUGV=r2GG=o zDd2RyYGEq_zaA))0P!!>ZR3h;XQbernKepf5LP;w>moY@obC;Qhan+Xk>9z%UfJr` z3pP1E+Xz|L?Y#MldviS#1Bw{5%A*zd_;Mm7qeSi=m5QCm0ct6aD# zNF3m~*R1`{qUB6-R#>G={QRbgac12@CO<3T;&=Qk+zl=OF%uCGe}TMMI9Hy z&L3zhDdErMe2ZDnk6U3aHXVSHa!C}YB^YY`JLfWIcF$TRjh0x&f$dIOe&Om1Wo@lo z+FyYkDANc4d&eDW?xJ8TKoujhSfs+X`NHHgXR=){97MyT%M zAwV!nzGM5Fa7z#&AtU#mqJAitxqK7Bl)<{$dwD@h+5)gB19x!DE&0{f)B00*$BV zaR7LPK;vu{0jEoH_4|3q0!D1x1r*yz(8MJqx{!znY#H$of|9L*^V$@Rif+qSuU_3m z!l{G+mXNcamyz?v0CN6dQ#oKB0cnb93>{mYA>=d^MY6ESaWwy{%>?pv$7Dr$w94Re zM4dt9-BjV!dXd~}mSOBBdAaRlb$K*p!7lkC#zQd+fDkn6{D*3@>DjX z7kttr7kXWeTAQHcf{~t0!a3dA*ORT@M?`)}Mz)@Bf{TJA_x@Lk-$pTj$&(8q^E|Yf zT7#Hr3mnpoVAir8=2QeJKFgfwq!GJw^`nGmw@)H>d1_LdiXQ7*y z23#b#k!qqK-mk1-^UAR0eLQ5AdialI0Pliuidtjta8Pl+OM(b|eyL;(3ym31rOgbe z%m_U&Z%F}NhBa3?zIm2y^ef+fj`}d!l zb6tTysdk4CAu9#c$=C_Pe?s@>hU=NIo<;m!mTJLe$y3|$MYVCsfmmen+SRLXdL(r3 zv#s9gAof{n_S&I7^6(6oh=rZ)&hA=#y!WH#jloH#1`+eKov;^btQkfz-G~52Vnh?{ z<7;y2znowj6~Ux1ly{*vo&gTKXFvJ(voZwR1XY&gl#~qEa6RHpFf*(mBl8IuXX%zB zo$uxguT}0WMs>3(7rb+6oJ(dGnN}{+MJGN(VotN(cP)K80n;-3;_x zC?F*US&NCG#W&I4{DsoRJ~2ajHb|!troy0+h4hP>^pToRM7=-NsTncxreTR>%s5Mm zN)tmq-|6dC3(#s8wg6SzWLosYv?v42aB^}o)Mt#cQbeJcxEB8gMo2 zEWvX+8E_I%`GT!g-`MDTo=`AOS}V7tVcy`p5JN8>9U~*u?ox30pBMZ`*}xHjbVC8Y zZFhI~tqdh$LN`@h`)TzoJezdz@>w!`?B7erP7x`JgA!~vQvLCJ$@9@M;2Lz z?Z-)Xe0F}QbK!Wn)`|r8yib87iLtr|;zHtH2XX1Xr$}UIyKfafWn)T+$ zLmFHj>scN2i~L>tigH1Ur2Xtq9Zf#tw^%dNChf6R;-7~Mid1e1;Gz7)|Mf-gVbZfQ z_8~>4+{Vmj!H)rn{iChv9S|8*O+HYW0Bdi(IXAA@LSF6}q%(s_T2(HlO(DrhDc3~+ zh~ctHzGqRguanFFJc;Lo>+3aI;Zy<~9$r*UD?1AttcJu;q#2+TgKh<^Pk@OBP?-#@ zUk^#zNs;0Js5S%Tzg3;^zSS`ES;g3j(1bHB`lF0Nqk{U64_2V?{*PIKO6V`@J5*cf zHG+~EDVIYa1f_ISlL4k#?kGR%|2|U~@y4&Icgtr{FePV?{D zY2!P<*rvB_R|^k|{LXrU7F-mSWg0U0L^Ik>Nbe|9Y%j;n;%=#;LG`nN$w~bZ-frIH z*Ymt`lp|a>8UCSzP`sHf8Yl5leP;0su47CE=`I25i@c?hafWR&&4s;uHDV=1D|(W5 zH0)%ANCz2G>(X;(?4X_Am2>!U-{!=HdT2gPA~fgS@+};jf1d)?M#RzQ`RT;5Lx9#@ zt9d`WC*Q-&eXEWn`}?sLLE)@AC0v|HvdG{w>jE_{-hX{o-^utz_J%akfM z9Mi>2yZpAV`Ei!9SK<*}_sO(Tp!{nZ6a{XZ_{+1fqPAQ(N|9)|m%$N~#1eIaz zc$UbY`nv2FFy>%Y9V!G2EinOR0j2r0!a@Z@+gY!RZ)n%sQr1xSV4xy0UC?6RH<`Jh ziG+hgDuX!cJZ>!N?+(VD**O5|L@0~s{-!BDyK?BrO9IQ3qJV%<+KyMf;T)>RKIxZV zXDG3Ewm>HJ{#fX7&CewHBKWLNoxbL4@~Y#W-lcoq5V-(1QPgoN3<6U4!xa0}YnCE+ zew1}_^KgMu^tM%2VO3h8jG06BWpA2nsq&GhPWcnknts&TMXu7} z2Xc$_^PO3lSa?hF?<&|9-7h65Zno3@t=2!Mo7y>0{LLI-$D2hTJ{gs zcuPswG@}3vh2N}wB9g3kCdyQWEV|;zoJ4agcPr&WLZP^%G55Y9U9xa$++j(uT!Qo} zU(dMc^V$2>a<71Wpvr^~T;!x5M^OC-&-)gNG*wXAtP}z&Ap;YW0@MJYJz{$3(vbj9 z2e^1fzwQJnLWyVHr3$Lo>FYL&e{(nko06F`STJ**F^fq{A_+a)#WpFgwx>X(PkkUdnA(!fHg<>`uqH-f~K8WQD0 zjoY*e$b_l(RrBv5*-Vj)PC@9W5Q&KdYUd`v=Z3Ua6d6x|9w>Z7`-xWsPzDUuCRo!) zYR-`G1<^=GDNOZcpha_AbV7!ct9>-DYzmd1K#eJcBI)5#4HW~W=_zY^@S&}S9Aqa@ zH0y?`ZB7uY`mBY31fg1`^sSM4He7uS9L8pk&p=f89r=)7pYL>6->0>=>XjFa+wq>+ zY9`FWS{gK+uc6H}2)H&@!LSoX-*%Ot*W+9Vlj+M)NQ_J&i9&#dELEFwVx3TqD>Ch2 zfM<6ERZSSN_zCICDP0&!MO{!QzBRI>M$O15!CJZMg`5jY zwF0y7;%UQldzT@G_KJm|vALYPmM8Vw7~<$*$}y=@b9t_DSiGvT#4(#oL&_U7?R`+E zx1URn%zy?PTsRaH6ycsDRYH(VGJ(XfVeR@6w33jFdDyZ9l8AJO1;D0^_Sb-n5_E0m zAU^Mf@-5U#?Vy#SI1mY#UB!OO9W8d+1c5hsmuy4l;Rg5 zL_DuB2oRR9e{gW02!Uo2Fk)Yk$SWu$L8?UuaVk(#Lz?t6)?J`9*A2CFIKH zBK!j|wAU-35%JM=xvU(jqHin!PAnrX?hjR#he6Er^d0cwpd6eEODF?M`V>69eOaoB zuuh@%ApsdWB&{6?ryLN_|BtyhfyQ$E|Ap0V)VOzpP-##~rG(5w6UkI&3YE;63Q3`P zLW&R>D#}cflraqtC9{XjgiOhhCo|{s)&Bj@f1S0?de{4|^`3S1+IugF=eeKzzOL`^ z8NL^QmFCyz%WxoN6p%8sFB%{{aMtFM)A2ax*b4Lm;4xf4z&}ft?EP(9^GZcePmkan z9187FDBgDUM-fhX!V&8rX5;aOouJ18m|XRf?09D;@+tK%bTB7DNP8K2sQiGaN9!aS z(n*~QS4m7A6{-{ILb{qXzo;}jZz7_`QWUAT2PqS6XH z6&(m%6e?|!r0YrXB~~Y~0t=PSQwGq>Rb+wZ`5iP8ifU}fydf8yfE{!E{dE)>_exYD z`k{vnJ0uQHjisAZ)P=jo#A)QqmM^C#b5L1X6F$W~{-gW?0u^*e!@?2)EkuDD^2^G? zvK%t;SiY?kL(BXE1ET@+({Z6h1|+0)^5ZD=HKlcu7Ae+JY;0FG-rv8@B{=lAqjl-} zliCL!x>%>U4eE=ZQVr3FJpA-m%#xtj`E?^QR!Ll9T>J(1mjBNBtAyXOVP`$$PMhuC z8~C`5^(o*CYtAMHp4-#61-h%21ZRL|pdK3$mX~OzH2m2S_${HP48b#Ph0JhonHXUI z@{44K9?4)k@sIY64>ok+{PjvS)p1x5t5dTPb?KB=M;z$dg(GOo2ph+m?E)b(SN!K9 z_n|8UrMLp-4BBaOJ0YY0Al60ES0jKM#A?tP+SGqyyxE|BwwvqIE|mv6c7x|imKknY zLV=KoMLH@waqxpiuj+N2O^b)z-`~IIm621G37z8FCx+up-9Zcj(%y&_Nw5zq_LT%dDJQIoDM0>-O|T$Grvcf$UiC6_D0_ zv-`nYMd7$vZtp8Xs+V`?U;1k{orAuCkFN`8e`0A_nFy|l4u~h{9LU`oMaCCT5vz)J zq zU=icrMYBr)Ekz;@cErRcluGtw7?0(Qp*TSHRf6c+r7J!aXWZZ8pL{R@!kicqit9cR zqz}N4;F$whnXr(ZWS_x{_~`N@DVNSpC(If#OdapF$213I<`KXPWx)P7D5kYP@t``y z0;juo)}^QNQUnIzj7a+2-Ufl^<>}Ugz=99>U@GC0(o%I6IFQd10A4$wk|+f?uVcLY z6L2=3?ypIE0gMx{i~+3)d|?;V!6V<}Wkzc#@VE}#0|vBl=JeOZ(1~Ubd+~0@0pYkH zA4oK6N;Qzlh)*NXNU`)9hoSjaNsgr#7UG!oc)UlYPXws*4jhmd=6#MI&xKrO^lsEMPnZ7lQdu6>~& z59J3TpA^$r9c2nQ$GEfhO)^9~dreobvMLM~ML|-&25f!h&B{z2+mTX3AAFUQ9 z1EogwYx{6eOoT~Oex<-t0RR|<0i`4GkCqib+E_D?4&$+f4IE1L%da^7W2@h7;=!SY zh&IeD=6OIL5ac^Wt6NL>_{GJCuZ|nw4DzLOoOm~H-mHkTyzYZMFf9OMs6(tU#*GV~ z>pxi#D5SuCReCq#V)#<$fP0@#s#{uG`e_tB#NqRq=Lb9c^S4)mfRD!-p;N1m&r@0Y zz<#G?`6jQG;_BE{OmGZD#ZpiLf-iWdCd-w;EB~!}Pc|s|n?t<;%DWV4eou85IGh8G zrKz??R2^ZpsvlE)Nu2A}Xzdb=pIpYn!}DUG0&t|wjBVoL;-I?dWbzSpEDoqK!1gMZ zzG(}M#Xh(Ee1Efkrb`N<104!o;j(Irb{ye$5@&yIRiy2L{1I~@=aBv8RR3*9sE9+k zE&K|g9Ho$!2bt$%Cl_AA(@r^6Rl33mze%O2$f>V~*e|FV+J9W8pKR(y#J?-ZHmpYk z2dQYmww9Kwo*(h-kjxuHlg-qiqYKtF zLL@EJMiH6T>VJe+5rB3%&fXSrXg>sn&pv6FfnxgO>6QbErQ0xT^j+YWl1As|j>^O^ zWJRts&EgfJyI#4YpX93dwc10d=3Rxh zO3aE-O|$QFAJ1L5uZ8u`6TYfyiL9PrCA#C>bQ^WlR`o7j+fer!jNp3)tt-@YfbBR!B1G$Gio!%8 zHaXTN%b38zrkV=G2SWk5LUt6>)Qi^;bizxJp!W?oW_n zYsWFSxg07ePrZ2{wJSi$BmjD)r^O|B;wrM?uQF#R{&^J@h`^r6^YK*Ypb0@gVer&= z%N@R*uL}}$l6!$~2 zOEtA>a(di>8kdAC#G;AUw%rii2pr8cz*?EkAU=cCy@*h^FE&L4d;8LJ06T| zM16HP;%?Q#oT4kEG3(LN&Rf2<7_01wx9o(jXsz9qq#v4EP!rfJ{k5>rQ2ciq$it*N zE5)BcP;)5L_P-a_nyM`9T|F@Uu1i2HT~j4ctd-8lVUvsGW34VHf&u zWlfA&)!DsYz+BzdH*`V9b+kLx?{+NT#*Gl98IGV`^0Fq1w(OY~!q@52$_@}37;*a) zG6V6D!n>Svb3xsZEEs);7k4kpZa*M{fCMyg2t5>u^xAw|f7e61QRm$3MfwOR%XSfi zOf87uyk>`%mKJjmZde8T4hRl`rEW*%nF?rg&*kThr??gQH*LZl;am>E8qjZ%J-6Py zd*>T;>7Kv;a&?b=mwKov!jrcwd9vTK>c!K(%LP4yJgN0Xw<4ZBD`i}T@ zsuGHq=^T9=uHfC-<35?5g#w#DUlKlavqlDc5>bJ1P5T7)EFSfVQts7_zI$LX%snxjk!-{YgY$?+i>*O4gD@r6`~t^ygG1yVmMBV+7!E(-bV0A9N1D5v~LJqJ=W7R4k(rJ=E446(7J#x|RY0FR25 zN~qSBmIIfn7qgfD)P>%U-pDvQ@e$%6wMx|Xp+B-Hzj>%p{+t*fS&CJNI!<||WZ@`( zvfraT$ymX-2DIO!r%C}_Yvs_Kfz=y6m@ll=dU>8eG1ALRD6?4IHKHdsCmNHK5Q@qm zS@*1^50(*kzJ7&yU0RB|hK2}4bj`u&t*?Js;R4~%9@7Wd+j%ErUiR0FN65vi{{*lk+}lXw4vA>D8{yU={oAP z`FUJ5x+JTmM-inMr&eY+Btp;kxr=rEOaF8Icw~IO4An%#%$KLCb{bd3V||(Lhd+8XZ`N$oFodfJpUhj_T%eMZi%Zy9AGfr7_xnDE zM&EjWtRoT+7>22aN{OHR{wWE58Lw56+W4l2U7~l-$$-Wap9I)S-X1?=F4uJ_sK1W8 z`sLa8iXlhTzn9*~kF*$kY`|69)X&vrta9*71rvU>M3EXD3zgpo{m$pN_MLla(KE|+ zvh1J03#NOPtf@8wP1e>Po!=VpyE;a$T6n<16KfnL zLZi|JHYVIQ%ez^vymaDgJA89fahIt`VL@HFz~p%Z2|cv<-E}e_@VY!H8y2vcQ!#9 zO&SQ2PJDTWPN@?$QyDsaeyC7D0vn*G4nofi;|Pkt@+{Z$2=99d0YHgge^-CwZVm&7 zdr;6MqSn}h;t>IJDq|o{Yo#Y5kd>ha90Tz1n+Fb84_O!)#cjku?OM`m(nuX&L;|jm?w`c!Y zp3b#FPGsx`Wb;vYKT)0wf z4H7tNZq4eR!BNVa=q0(6_dyl^^lU`{bo!#7y>oj8w*Ys5k_Ek+o9?_|9jG8Rb#*u4 zMt=D4p}CN~Z}6*j z={DYN>#pJAl7_Uz@0uNlfcG!v%bQxW%{y1aB=ccsFRIQ>n=q40{b}FGxEod>Z%fzr zKIc7IJo)f#{2Er(HI`qNrK1}8=scJ`Y(!$Tf$f{Y9|KyMW5(N6|YGCq@AJ7 z;u<-h0=bF;)$IXSHGUBf8Fgd+eW!9w(_*HQV@Lw*M5088hG2n3@8 zuruz*x2Eq;@*clZWRp7ijpqfn!5@{@Zm;?=#7GjMtE-pJ&DJY0O-6(+$}9MZklcKI zBfC^&F7+Fq?qLYdz2b;<5T(R2U21y*9$me9Rb!#b(jh}}!vj#H^1IgE8F%ya@EHAA zypL`PDRcp-PU#I)OSN6;iX>GeJ0?=^2}>y-0)(TX>~{Hfi!Ub5 z;`FJUA^T>A1%UFA7GJe>bu7XM<VDh!z(Ag%rz5a9f*$p)_d=r^AqlmP1D$JdL};=yHGyiR|1dDfwOC$S@Za> zfc5v^e-@vK`j3b3f1z?0zj~SmImtWbecq0mE$^#q_4xSO>>|?Xy;hi|)~v51?2JvU z`Q7qhVVs_DRE1O&H>aazBaRsV1l#|Y3gCZv?f*_0|NHgfw_Pmxw0V(nFq0~UkM2i*Dx6eEIIDO)#f6aS;o9=q31KzQJ=35!b zCR1}n(&^%Z4Q!V>uU%q_tv-(|?eV%vk%IWUCxcJ3g*N42x zV-v?t7u>xn&7EOX%s|?La?_wD3fK&mYGP& zu3ftu>5C+ycs`yiOQC-g06G;-_%fJJl{k#`EG=W4;1hyO9XSyE31NLG8jYn_tvx!Y zTu69EXVue>O?GgO9fmFlZK#%<+{Nlt+eE+(pNfi#bc>)w1sp;}DDpZ~21_|Pqj3_^ zmQ9=TbZx;05IKJGWCX^t9g_<6_b2Fypwg0(5{63(C#YHiGtr3wG&V=zX1oCDOgJ#G zXB3@|6>8<%goHFCoqimGp_i9A90(en^gJkQTOA~padE`}m?LhGApv-M1UTsi#c+AA z{+M~N-1(Jtlmo`itdP_*H;;mN)~5Uxn6)j!!kYc%>EMg`5fdN^?q{)Z3GoiFU__%m zWSzb+^;pDoX7DjrN;)Z{-MU+66Mzoi&h9y3m&l@oR$>qP!QhT7`(6~52p|fu9sG0z z8CEBod85;M1~OpFnl*B;tiqS<6ZyD{uhQx<1Zmr z-mjp*?NtLFfM`QtD9cu@vW{!(>N>K%_vWozhYuXMi3`Mo_H0Det7zoP@$>rsK0wHQ2ni9(NSJPho(##?r}ETaAp25_e)6-T`K3A@H@O zSPB563&LcLpg9%ltm|veO@WFXkGBJa)&ToqN^WfCr)Kc21_}+V1G670TLX*|fM{T_ zKrD0{O8#39gMFrJ0AINc6({(sv>z|>9TbL3w=4QG_4{g#unYWYh_uaL5REANX zW2l4KAcu>J7e|=|gr-6i@~5^QA(9w423 zMi(+A-J~WE+nqMGj_n-heDE;=rJ!XEu&Plp!rde;BH7t+Eq=C?YrgGNI*|YPz zohbB?N&q&RxlPQ+R^cP%F8R#brLUp?dsJP zCVR_vOYhzLDAYh7_XNXZHWVE)*Xp?i|JMUS<8p*ds2+Bsc@wK3kLcg~5H*QVKr8^t zUV-A2uykW?5E8qtvw7UPBh%CW6B`1%AJ-$y)xTl0n3yh#0AHphi%WmL2%0%`V4F8? zWXw@%>FBcuqmyr%OfiU_BT%XGaD_#Q#(1t)1e4JEMC{YCBW?nY>vs3a(J*)yU;PrW zViwyWrZqMm`=rr>X!{6I6WU+xw#+|{V*y@9PHz+!PX@RUk?XVPBDcWCiI(JkNXRxt zg0#J^XW+MuH~Ge}S}cTD0BV4|ch{+}cArnfIORMJ;X>$(46xKYR>wv~9fDaJiAD49 z;m44{CQGqL+5Vd^o?=yjtwhbC0Te3JANL3`B_CQ``~`Yc3bp{xE#q_?$6~V^@S_Bj zV5|p64yP#X15aQ2;^(`9Ddc|NO^abFa`tK*sUf}U>oYu^gjXa+n+xf97 zqX98!_wL2MJ2wE)7#676~x`DX+m%|a)4=VHi#U71Kt~_ zKAOOc%S*fw|H(;W<7I+HiHhRVrArJKEggI9w$pF!hlOod1bZ2qbm7O>BpvHEIOo)b;iG9~NwUSm5-z$eDR&@18xD z1IoXC{VIb7m<7gNjU+BiO9=6F(FBZ4NWF9Of^pm!h6|D{0fCh+ME+x^Ago#mYir`* zp2uIm>O#+tYAK#^8W7BugxBx7Yys7!_@|;M@ri)vHm}L$2Y^}t5rHC2)gKfD$BBj5K{}X} zl}SlSBK5zj-@S+#ltj^nyx$8{W`O`DqI(e3)o8C|?#FWS zTB8}ddLuYhe_pisu@$cKSBf3N<(7k+^bFm?L_TIZXUEppbmEExw|<52#xvL0*ccz< zqJFlKoqbHu7LVgqwA{*{c3ybgIrdnvr1=Bp2V1~m4E5o)<=gZl9z0k9bJ`vdjZ=pC z@o^@iCY1N2iy)Ux*3h?k`m^aLOVMa=!0ZlX7=2KGf$)Wz>WcF>&hxf)r8^n$pU3bOEkq1d!z z$0792)!FXZnhHfT$0E?r-oACK1cHG9Z0cCR6#avPl_-z>?%jKwmv;cFihAdsB}40zCF!{A#nBb*!@kw~><3r0jG{TS>r zROcHCzkZE?i*#4{zY}Arjg^H_=d`OVH;Y{6dJe~tSG?@nGUIQ@E zDXLr^426I5CkFmG)L5rZK|dsB3ktH7lEG4S>?qyeKjR;*+!2uMjKzvDpp`((qG#4~ zg`ea@8Rvc#re^@7)<)e(JVp3y50u!{LM&Vv_29vSU-h{k$$QPdXi+5!Y)@nJxM#?a$)z^gV(NgYLTOOG3*9^qYf(pRaE?wvouK-VY~JYwFCN8^%LR ziMW9}POa*-Q&vn*q~)m}BieslB*w}^W$_#B)7i~L}@?l$|bTp6o|J&v#m1+8SF z;Z~Kyti_!z$Ny2&US|4PXwhL5MRD3zzGH=ucS-d0!%&2OkpW^JJ(2@gei(Wd0?=g! z@qylMDC}_PM2kWUCTcMBP!vObKb1$d9hlPCzdg53Ok4y2FU*LaKOe+m+Jb%o0S~Q& zus;DXuN^c)jBvCD5m;m#)YW}}fbhliOn4ZN;M9zqi!LTR15fUHh)w~-*gW*9F)v>D zyrnz(`U6%dw)^nVP@ZMVu3N?X{wVvo_ON5CL2adP0?TQpfL1AxNwk zeqj{B1e5}EAB3$;0V zt&}8>@)q17Yc#+>bExd3t+r%IIO=Z;fHXcNlqNNwmw_f;;F0#9JrLvtaR}J$($|v@ z8^+|bva(pOvN5x9O2E!bkJs7mGztUKejx+h0DYo`68!Gn#g5(8L}ZrVUAvd-rBtME zP*6`oJc#KrY|xVD;qftnj?*39WQ`B4?9MwYz}yMI3d?YAOS^E%Kaaz$K-^tpTYSgqSY zi2@5n9rs|E+lWO0#EtzK3+bUmpE&J|C25*~<{{UcN7lq#Jpk>(Dp|LqC`eiAyB>+- zXg|G>e4x(&H(I;8w(#(T&DvaK>@EF$S&%1MLlRa4K20$zT8(l|mFP=EO5SMbYqLSF zWlr~F_=JVo*2;+ICFyQuB=N>!o6Bi15}BrrHRIg(eO%>koL+d)=gB+CSf#E6t_m-~ zOVik1-xpuGaM{wOXkPj=Qi1J0!QnS3u}dG_G6kA<6l0mn!6Qx0H0pK&GI$Vx8>WLi z6h;aTEZ|GvIgbUDVw}5>q*2Zj^q_z;(Z~XFFOyUybNqLW4-T;0j~z(5Hm^{P-1ncL?5GfRJRmq&uKGfqLgPnWM=Sf>1=I(JtHi zI818yFT*>slid4X=2Tx zWT8PqTQcvK?8$7m1DG1cptlphHK@P;B-7YD%ivabKYRhYr^M`>W}NkXP3r3&=r=TG<|8? zAd{Gz41^9ECKBv&VKgWWKSEqaKq)ZKOMG$em#HENS9ujtSd-?kC2-}$$p*L4cv1{P zx8@=pin5c$XISsV3DS6{;1a7SuARz0SiT}=g~1Xx=5PZthInr-1c&MfD4Nt|o1jz7 z9c`D=UKWXyh-oU{7mWb)m=oyYrVt7E#%)^VroU3{yU^9JwS54`2JT@e*M z*#_`&ccOzBzibPkMNcJU9}Xm&V7~CBWk;%9x<%Lmi43mb5J*O8G)aI|^UoVsuMz=C zj-lz(rwioCbfz0J15h^^uN&~V_rB?M<735TsHEV~zp8Bh-;qTl?&NN403LJ!Dqs&G~K%nq7CNmsD+x6{!7c_U7DKau8Cg z%_I|Qk`0RJ95eug*F(>T_x~g$tBi!lMC+rGH491)BnZyOiooe;vKu-&D}dWB@OqfQ z1tqS|^^uhpBQTKs&uz)@$0v_eIqQ6j(~3v^5@!vv2yycOYoC5oa-dQOO7h=>Y?KOi31{CHCCaryFPm$@o2nA3|OyGcqaqyG1_ z@*8M)R-{sjU|}Z8>jpr?nM2<^Zr{AQ!{vY~9sz#)H@hl*Kz!`bl8HZ$xuYWfA-Y~( z;JC&$WFaAOnfyJvw*q|SF>4hr18ok z&o|oW)}Nu341JXWi;*@uYx_x7rIBc;D1<*#1Ls~^_$Fl}tQMnOd~J_i=?vGi$9&zy zUbo)wn%}i+kLdj1XW~i|k9Zc^l$@Qt%fh^}X@NH5`_Gz)@Pl8&o;o#M>a0vr@oKFZ zH0jLE4D3(Q6OOYz?|5szZ&_5E*_D zED%t+i(Tn+O8<>3LC*Vi;_KXW|2n^~z0k_ou`8@A^y|`qg}7 z6k)<#uVT2eFeK^;AdeXQXn=uJ;NLO#VGDpPfo4Jx@P?9-__)aVDNpMds`=E-HCtLlb%Hy(uK3>80eXBX>FrctghZ;k4#E zlAgs8pP?SLp23H8k8i{9Z{YN~dpQROcWM#qS1JX3CnDpTy+mEMc>_KHP~f%W1h5u) zyVEZkCVr7NRA!Uqb5peo^5YWo4|(4VH5*tt))MZg=<>rWr9UaiQ7rjD(S=6We|}f^bkp~C zK8zSUk#0J6E^uPdIHtv^>ut#eMRildTL-%r`e}(dlm&m(XT9HjZN|tZ8@1~j$B*CZ zzpXldLvQQZ*#nak0Y}5<(^hyE8PM*$JMe<_@^Ld0pP%QgP2yXneGDQRiVXMyMkBMf z*t}?;kGaxAiyXmC>l}RXh%A4sM>$NE3&7&&$Oqt);@T@ulOIVHJy5Qp zM#K?9HA$4oY6)TmGb(9(C&~!4f#ff+$r?6=HtbVwt^!$QkqDS?6}rD+hASz>2~vXf z*vG7P7(yRC{2H)~l3?*OP(Jdx@cUy`!wTbqq9X;mY$OL*hm`2uE$b%W0E!{Q9hM5X zz0y@@Yae6ef+mug3-skgWEmSEvXR1%0ylJz0~oYtf!BkUfkd6wsddjtF;BEMa+FOb zOWXKn$d@n5DuFxq6JiUrnly@2GDEE|q+T<0ZkmbQd7gdFoMN*u*Jls`DfEA_zl#qK zBAhC*Q9;`S=!1aUEO?a-jUuMA&8p$C%Oas*Eo{^&5FJI36e%J7XDKC<_cylJ+I}b8 zzdpGi?KK;5F9F51tl{z}mp<$I+3k_tt$7T5JsN?&at54jYUT)gkm_y@vHYiejMS_dPL{&9n9w}O~x+=MK?)dxrcT(|Q z`{oP_TbBj{jlieCuSkO}0enY-6YJ2)9`Q>Wry2>8UYGBIW@u-kxJE?-l?h0ulJxCc zIdt6%R!L}LSYRbeZ`S)ovKaNRm_1xz%d5CObHE2PoTeG`AXGAGb}5Rkve?73%?h!$ z5mE5@0rJ(_u(h`)CkrcHc@fZEVp44;rL>~STXcj8?Q%4bn8_m+9RSWIy zJt>`8*|5}4^;%GEPT5%z^>`J5Ich))izW03LR?J9?ZU7sO?X^H@MBa{0Y?+8$4gBT z&#N`~vyLR-A3uCp!Rq749=b+meX9J^FzW~#nFh~bK<>fNH}gq9j4eydDulQJ4k&7j z9QHbjoHSQ=4MT0YAj_!nsMJ95Uigt8RNCDIDL{QQmE|-dl~`RCHdV;r(L?wv!$GUj z;Gxk`P~0n~<$qd|SGf^*DmI^=6o*K#ZB@+R^tc2UTmQ7rs5*?t!lF)}P7Ip&*z&cI zA`s5Fq%ntI8Cbe(99+_>LC^Cg78ZB!b$=SUQ93rNx3IH1?O|xpfIIu|c@<~!!z!+4 zHU#HrA2M)DGRU2GkQsSqOLNk+y7itll8aUceB$j^mQE-V{lRSG{>`5nrF>)OJS|=Q z!^Y?D#a|ZwHIn}lsefef#f;3PAq8;*oA6vk1NnijM+J%stQ)D7R;?9RVjNyOU=hC1 z{Zj2NtoG3Nj^&xs!`)(cTgw@>^+iFQnl?(G<`glX?gz~RO;j%DcO54^zQS6%-@9(hhMxw zpKj>ovEXT3+?NOKoaUW?#0_0KHcVNI5yZ(4mU!J6QJH*mh{SD~iN1ebt#&a4Y?ElX z+3X()O`gwI;C>B@5(}UsrAgI^te6{nmMs%;fB#u%?Ro1i(d(U=rz}T9ArQ7|{0G&4 zqdE>ao8f5f`ee6MQ=XISSl#T~>}bw?Lz(zbEA~-E%Jq#}MLE&S0zy_Ssc&eDEYx;m z+Hm-3<(=5IW%$sYzJMdLO+sZuRm>3N)9O^kc(%7}iCn9W7SAv%8%KNBX zbsAO`w`NwyxLPrS6}n@LIQ5xwm@V)OMF-b{_0y(JV;r3eI7lR+A9(&?kWv%*c#yTh zPB?wuscFj=t$yUamDc*G?c0`B~{RauWcEZsP5l(wnaf0QE249TObQ0kzZ~8=b|afiOb=mlfu6;5dO|j7Fo0+x5Cx4jrYxCS;eaTGj11 ziPsUS5XTJH%5exa!kp4|3>^LJC9w%`4d+6-5TY%?`_Lq6xW!^nSyya2V%_Q!0eOIg zk-c~kp7n~S z-_*IBo2U@tR~lTnP1tIri2i%&YV_=xY`SKpL5Y^PYWh+9S8G+*l+@koq-3A&-I2d- zwnMInNN(}0n3Ev&) zRgj?^^#fY$ZjgSkLIdEX$(CNb&`p5t!=%vhbJnBkuh1o|l5#$TK48b4KKzzt2ybT0 z4S8$UGYoY$?0N-ZHMy&!qIOL8Mtx!&D7Dv;MuU+0Vb9*ZYLatL8?0Nuo(#v*{dw!# z2F5%N8|ZjdZh*8OwGd4~j5}hRsRcyW1=HJE7*Ej!FjcC{wKBI?>g_dj50SuvXdDbs zI>F2TfH(w1Mziq<4FW}tWrUK+YSr{knthMlGsWQ(EY`@0`>P!1Qm}g`-_MFU?-PW8!Sv_wO-NY&IYtD-5Ib;k)@2%%M(i zFs=jnY{g)%C+8XY#5Y;QAp?jDkb1ud>|rVwlnY5?fT3+Zlum8@eW-EF(MxjG4o9xl zkeT@DO1t0j`o=4gMvosG+z_?f{E*MxDE379%L+4Y)!;^nV1WXo(Xy8AztR*oJ=uS; zezG(2@iCck(^S)JjPpIo`XZ~Y>GY%zs;*B>4vIdtHXSKy?sv;t)h&jj6OUc^enmxo z(Go?=Rm<1-D! z=QVnhaE@SJI(z`)n^IsAs_8{B!)d%0P(0F9ep6L_HYdOV9DowBz3|erx24tZ0A39W@_o2GZ^YE-n+;GwHM$J zns?y#O$JF>Q(lUEjV)kLMqE>1Ang^%YC$ec4zi6rEi$=6t|!VZbTvs~xiLGj@-Jh8-goC=2X|QFX(6XT~;4=8(Hiq_ObVf#`Uw6UT2nfG44sX z^o*7%45r$~l?3rD;vC$bJt*rFfk=7g^W0ARzG(K^`dcL9&CgE1ylUK+3Kp#}~`2tg3AfLOs0*$z%8E+zLZv^m1ABM#Cy<6#7oM+#$W zY3vAfrj(^7CMLlCjbNr`eS34fCdKIG@u-!2H>&gp8MSKCTVbN{L6Vh_=R4$#c#uz7!5O<3VE-%H zO~B?`%{akI!V=ymFW*VXFSl*RWAde8j)qTLdaR50HrNDdZtU?}iHV6ABJs4PWeG>w z7YI#>UVt!g0H9~c=`dg|<-i(Q6Qg`?vDxJKb#pg7-<^^MjJ$9th14q4)Utq%tY|2M zj)&}^mIjlR*%K+`%TBBuLc-~!QzHOrpf%F9da!Eg(g?B@7S3(qM&`ar!I+W;YBUsz zq7$jO8RNhMh{a$=nSd{T`}89|RMEK|b|CQK9mBv4;5pyl`N!QE5B{X3&*A%~YvS?8 zn&mh|>-wcKhspLE+!@Lo9&s7!*Jh4ZNbm;mF7wxpDs2+JJ{a@O;fr01@LdpD|*ln@vbTEOgeMf(tv!!jzh7o<@A*zw2(|G>;xqh3lxE}ypE*&3HGrmPn&%T-( zN`v9mgreh|j~mHuZioOyR+Aj*ovh@M+P_meN?RjC!_n;k1HdUK);^9RTefs%d^udD3~oU@B&4CDw1l z8;ZWG0Ewc5?pDNqyhF`>=k+?W0LYB>?oG5#glL!!U4Yn)WEmh1#z!i%D;jgIWM2M- z{+g46%o~m0POmN84Y8o_e`6q3gU9w?JF6W~VIUG$lgAL?VtW)A%dQGp*t4H?>0yY>V)jQc~YnVpyx$$GEJpMMuE7r z(q-B{>lni$=&!L5mM&Yi0gAw!&)N-iPzvf3?m?Y|qvz@;lkxG2g+=@tuRcx-x^%ow z{vRJUw$5wN7XffQnG!mwcA1bSkZ5!mhn%_kA`rWRybV=Dq=j_oP^V(5t+v>Fm(aG= zL194k%O!@-8$cbY6XhrXbNV^eOG>V`qkA%5jlh3N!@o9T{s7RmGQbdVP)QmO1IzHL zLDPUqF=y8M(SbVw>?Gt6I1a@mTKKY=RTYTB=XSrkQmwbuKY5`l23{G*>m|zryDB`l zAp7hyos_@czUgJLm{y6I&u|kzm05M+Tn}wj7C?#zunbppsRr(By?m8M4Ze-;^}y>t z;)JUk0v@Sm)*w8yR7}`rvizt2^%tVe#&a&-!QB@Gh1I7=siEa`!Jt0?28%E)-5gh+ zqH4;6Vh8u;$>Gn?u3S`_XO@GPF1YCJ?fth~@GUZM*rax$>FjsO07Xj&0TsG5upJ6Z zc=MeLRgW^yh2Bd9&_Fc`1Q0berU30FD>BW}tH^=4p3P3+!AiKi9&y?sxPAF@>b|SO zzJ0=#)0UL~nJAVB5RnotjFP&0Y6zn^8tZ_q<8otBE#S?R|m(Tb%I8{a@39fn$6sD%GDMW2sLeB0c%hQ!~0<> zd0GF8BrKrsr<5+mUo=&Mj`B3!!urA?q{ke|2xOKE*cHf{QF{ulOluqF5 zuBjg~xB2r1bpA3po^FC?6AXfXPtsg;avLyUkr z;_lli;Sk%R!n=4mf$6vnz=1#%+{1B~(85BvhF$;#VM|~(rf@@r^%?LN@C3lHUIq?y znQTEzX;ohIxC!+Sc%-rMaqjd@Q-33@^yPmV4jXs>8B|Jt^MCZ~2X8YnYG4Tb zmr3vSfs+4>8pcDsLeKEeKmV`4eqa4{${Trc-p6hyQK!H0G8a9d6t(=ZPI$#1-4(~o z)S7M<-(}jujluuQvVK4PV^xz&ZgWb<1i#v^AL$ANEMW=A;(fQ|U&&U`lw?aC9Mhkh z`gVT-jM%4k84Wbe^?gqYJM&k6R9IdHQ?LJ|%}y-iIwMo}k5kdS0`fyh+l@J<)OhWf zN#Y?R{P)yM>5Jd*tR`2V-213b`_oDPD(8L}u=Cl{ca76E-Oerv#+Pj76#{;~qWI#` z=GRNz-2Z%&{^I{1(bd0Vsn>Q`cqso-r9is0_Qw0Q0r?wf2r>=Sf*36wX&0gLCeQ?WLKDI%x-vcBf%vuC%?RQ zRsLq}yV>5C|FYc09%5M)T_OFjEhP5f4UOTCt?Y|f0aYi}Z)K{t`l()&%38KM{)4tVBzE8hAU5hZuM|`khov=OXY~HjrH@L z2J?T8;R@y{)o5vCAih<*lpE zX{u!eLgwF&_l#xj)Nfwd$8hoz{&D1D8AV?27WX?7@^mY6J=BYYW?3BC()djVi+UjYq7Bj zX`h`lV4MQ9qlNEdNUt2wuJ$Q+ffSMmoiB7a^#;x%LGCk_Btt3&O8{Jg_Jz*WgV6W% z?!pbwR*MI~j@J%hIKOxF7}tJ+8HXZS0t zt)p+-aK}7#f1~F!P%hau5ZfhC=6iO&FK_p7i`($g>Brx_v-NRoG!N}dD{KUs2VWaUgy1-x zCs^-3=_>vEt1*rJglC2Y&{u~}o5N_7Lh}SK=v_K!9wjKKqI9VO6;)N$%&Qx<5c=TA zFBJO#%LnoA{}0YmsKuxqfvB8#HyW6@d@Y(Y!fe0B=VY#9W}m-W>dj%nTr}Iy=#);I)A1m&mk;BXC;#)?tTR`d^M#I>uzP{P z%%N%r-q=HzCS*oVlo=YF-LJE){<%V>VTsn`OMGtS7Xt1->mJ>?tfeQs>xQF_M`K#z z&%A9ftXcYyivhvV;S9Ew>Wc_(WB-7uRKRb^IrFRafC4ZQ#9FkBtSRgxH<_Da@X-Cj8Tz}(q8 znW<;Ew^hAXNWIe&+k0qIW95yl+v;BGEcej!5dBfIVEy@nKI)~vURo#w!J$96YB@7S z`ofr`(3c$p0*^MGNK8uAO*+0k>BCZ$Z<(SWm)Z&^?O);>CE6NbsI22F`f>R!F0YyM z9(|R(J@fgx%tiC(3;mkNv0J+Ngl*R^DVasVY2r55&lFZ$Szk%I`z*z^z2b$~`5euY z0)rB=bH11gVHX5Tp1lJVmA^|gM7&kckN*X~mGk-YOIEH_2E1{f1?|JB+Sm6W*hXK4 z*cjcrVHgYcriX_y0E1K2FKQ|F!s^fA+vQ4en(Ppt+Cc z!Y{!70l2&9;V}=w+EX>J7F@}Z1E$qpp(0ZhLx+G$^?g|K)PDh&@J-~B#j94uODztO zKJSm>1Ogt5suvp&U1s1QxrTlsksyr z?cY{a1=3vb?F;cqG0&w5fvcV6l7=x5mLF;mEgtMRKHZq%dDtI0#S6JS07BAMv1KXe zA=v#<`)0}6vu6ifq#+>e-S#@|Y^0~B=fjX-XqdcZ|Qb~SyO;r`n zKAt;oo-xGwey<+KjLS+&K7?NEM3QcML$)l;(rjz^_->%rw;vg>fRIwDPUF@nK~*>J z++lqDcnx3iPxC;!Pr@Kv%zflRv=*N~>o17#7^ijxbP54*1zLX}Kk@hC#d5f?`^Hu& z`XH1JVv+&>wruXDOFsa9jVZ79+oE$~#|jJ=+kjNbz+g`t^bCeo>~zZ3e#Ig|pHO4o^|=R*-@9hfaO%X! z*@snU*WEj{cbcGCY5T8E+u*DRw>+-gxn{Mfue{ce?IbsQUcvT=N5#q~^aVZz&SFAcK;GpPTqeCBF+U~mdz<=J`(QJ9a?uP{rzAXP8rW{cen{8k6>gPdDars$l247?) zjZ31mlqXKFpB#0snd>FCQ0_$9rHRDxoLBGL?9P<_%4L|ZcD0(h|NFPYg+}pT^Cjo4 zAF^S(t?cgB&FI+Fe5!la(1~Fi!;zD#Ed6eOS-C#kbeq|Df*9M0!e@d#ZQU6Yjw|{& zganr_*K%2Py8nKF_4og10oV^Hiyq6{&b#?N+uQ4Pee*-I?td6K>fppxZ@3~S*60-5 zCIpgAID%~zhL(AMJkf+1+|5wK{8i)e1Mb9LjIV8KY59QVLhA}3)byHpofx$7_p)Wz zVq>=e2Q3Ztx^Gh)0`964XQ#G;~YCMxt-oWe*`TJ73eq#-osjvfE zLclNse~T^8nE@8&822@CWJVGK0JXl(v@}8Xy#P^<$(@H`VMQq96%QVq4lq>a7zTF( zmBwd8eLRO_yWxyR2vXVrfPKixxr9;%+>?Gx+yi_hIC58b$(sbqhaU&A3^7l8Ot-3% z(t2s>5a4|vV{Mw48R-Zi+PeMC+IfYAS=)AVt^E-1i}5P>Sorjx=gntRP*A|Qg?B)} z_ru~3&g%1l0vbWGeXb_|GE6*to11$BuoFp~jd6Uy5;Zk7=+9N%+$K~kY!$gNi8n6e zE!&(qa~c7neTNzG9>9?~{RpG8qyXMa zvC1{@*ia5{=I4KcsQYxp6KK%R#W5#^U2g$ZybHinD!VQU!%{G4%-+cfh_TE;yTh?e z%s6@nj&1vH-`V@Ldc>hJ!EJw6Ri!sK=zkFR-r-#L|J%6I9<+p{C1humO;i#h$_{0P zY_dn&COf;blLlE?6*41P+1X_8&3(SEu0EgdAHU=H9rtnE_i_8-~B^U(fM) zoagyCA0*hWvD3S&rS?OI5#@e^Wo(Ok2CYR>6*I& znn!BiM8+x_%e-Z%TICOb8{_wsD<)W`B)=ObZdUX}k^Hou*%)|qxNKoV39mqY%a+=n zKCSF$A<|6;Gk)6h+&^zozG7=_aeXx=>b6>;n%i^fByN`>pEd^UOwXeRd$ z73XPX);5J?SROwUkyA7GJeN&6E^YXG-;412)Gk>QQQPRFEr;&qh+g8dxbCz)j{~mlRK}j){iaO4*5?-bDV26ePSBFifTxXVzqd2Z#i^%=&nJQPo*EczNTCEG>U~r+8q&=6kUKUUIBE|ZxUqCt z^2(JySSl*~KB}`bfoPK{1V1>EOaf?lT=x;YJ9Z51+qad6P8lAT(!G5ft!}>$&)PYJydit8kQ}6Nsp-c$%~{rJ zCkO|v$2+2+#zclpCFos~o6_RYrx6kH{=fy3-Ew#Uz$ z$*4-(M{jjGAt6CKLoK)uT8Ca}@GA_KJfD5*=UQ#7u6`r4&SIDX)O2cN8;pBM<3>hD zVVA^_#n(x>_DMWSXRD`HzVGjQkn(Vyz%-9Gg>{Q;M1RD{;Y_e0;~ zwiHBHv$i{V$L%70;J7lr1R5`w})4gQ*)P0#M^KQ`cSu=;-(x7Q+aT$`Ru1sB! zIK`56FE;U-eDd|f9&-JXPFy5I&5Mz;Rm>D4Lv1TRjwap7K||@s_{~e5KkYnYm{qvi<=Az4Kll%qnz z!u$ZmO%d z3a)aq?(_2S%w(Zva*7WK-4a^pM4F^kC;}$!FrWE7h&z?-R?u}fRCNyBFN0L!uvht^ z2kKJdaHyCknll8=9#B;Hp=EY)JxeW>Pf)N9js_^(=L6*Pc)3$@T@>jETsf{5kZ;>| z>P%r&wx~v`T*#@nH9^@<&3(?w@d~xDCUaSxRff*&#;vnuC#rMs?r{;WC_XXeE zA4MuhZmk!|>bPZj$>oRzE*0z^Q*j)>IDLM;d%UkI`k9yaZbQwnvw?+elGkT8e|^G} z_%Vw+XHl6$F(B+tZ`9+x74ueW?dQW-dZj{ZNT)9Sl<&}>`kd|ZEqQcY_RRe7()+S% zmQSAxRwNfbUqdjn9Dltnc--f!iprxNidM%Q%|n|50+l7zGW}yGlPl6Pcdr_%4gB!B z?r75Nx0gjJZF4Mo$U zn1wyFVR@1#z*`WPmELLQ=H^!`CWu&0b$oD8#puIVlqo(eEW}YTl00)iHBa7Lxnt%g z&1QF#eVHsZceujdETwyPvw8=(1z-lkcIgTn8iK2Q0`54Wfwe;O4je58$>+ZI(S4Fy z5-a!7wFl0`eE1C1_oX;4EbiXb`~F<4{*~fR+xfJ@?*dW2I8W+80l#ZlB-RP)1ldrm zX&2nGdMqb8Xa*@PA{BCgLKaq5vB(sg&K#8i1QXVI?Rati3tib)Gcz+>!$=k-V)rsK zGDb#4Av~el^~CbhmQe2s*74~)%yiZp*-t^y?-;m9Sg8l}sffSj5d2iu&=8D134{ll zaTaV9!8OtB@vBGNzxm4t#-kF6sZJlnJg~Pm2t{JH-jJ!J zFDqQ|GxTp3SF<^C#_0xg+ql@(fVm1i-V+@i9oOObEkoOi++MG@0MilpVtgZP@tLQu zkW}b)U{UL$)I$jTE^ob(mKG|RcH{f7sF$@c6j!}rAt;_Up6bDgNXOR zmOT4(1qD_nCJ!(Or(ISS6sWHP?RbtNxZ=`Mt&Dc^mz4t#lRfcp2*ExgmD2rkLZ7h( z{qxBvP&}hm7vOdnla=wdKUz(Z-(VP|Prnvezr4Yj9wUxhrOPKs45(h-G6&5U?tE+wS z`PVRui8j3)oW*BqjWRZE*5&sAzO z)$WwKr~S?MTBKYK&(Orv>RHu-Gf#9|bw^a6Y>c*J40@Ot@U|tSarer^tabOY;&QNF zp_zC8>{}LgPTP#(=dha^Hb|7OdwX8PMb(zdi!Jb0c|t7T?+k0>rJIH3TIdN7z%+qI z2tPg;UK0`$qB?z(WO;skpv=Gf*i9RovqWnbh19LP4;7=fCEk0C&t-)V6OmOhpt7!R zKO7W9mImpN|3@h>y>2=mTMO9l3)+ppjGINSO@$zqxpTz*2cQ{Qgdbrd&H_K*Ou}M) z0S9O>Yc$}YNl3?tGNq9$!H&f~Dd& zNue4R$hKq9G{1nr6k66yp=nxZ_@EP#TLdN35Vj~Mx7*m**y>jM3HGTm8j9MCP$7zd zmHR`?BW_el0tBo^Kw-9+^LURfd8$%M9;;@iF*PxF5xT6PP7T_*mrcXL{4`)2A@M`UIO%lW()RyTae~g!^TSW-OUX*^lo}(yMn$ri1Z&5J<;i)X>;0RyznLf zwfdyJb8~ap{Gzbhuc@e%!JARF&_x&k1y-3mbSm9rW13y}sDW}K7dvk`)etkz5{vc+ zh1_`RHz8lWfL#T^8bq*y;9n=_=0dnM$nU-CurkO{175rN6Xrw-KsgU@Z{5YIKI4u& zYC*wVse#k}j${_Ol3&X;em|^@`LXIc8ayt|CCA*NbR*_h<9&oU)m}%}i(buNVySG8 z9I!uP4-j+q7D0sc=rv)z#c2cEmAbxAyOqE3aE@0^TytbEK~o z#Y??moFD&ceu17VWnU6SKW8GE3TYJJ&=cO$$7ZYaBYw zoV`-t>O%WFZF+F?6B+dfxn9wlCPw>zydleElA~%*-)^xzY$j?(&_z@BWFie!OUChU z!c znLP?g z>Lep$9jvSfEhGtn$ru~60uD_8l#A9UQ_xT{@AuYv1J+q+u{SUe)mSS;nRERZgp^)5 zYU$j^5+!k$168ukkE0x57d6)-Ab8qmBMcD)~1 zU45C9G#H*aUZ1=lEID&Vl>tvk#FR^V4cnva+#v4}VC~npTt(D`79i3%z=OEpq$%P} zD;R=7wCJy*u8tPoc@6}H9q>Aq!x`SGCl#>#x090>zQ}B8ZDld}XQ#3mA!+r>!Cb9{ zFx!$*`rykGkb)6oh{+n3e!GS^&-CnZ5(Mw9<^8e#zCCmW6en+62RsRWjgAtaTkx)f z8ERKhtBd693^J~q-<-wyaxhX{JqvrYMOJGIix=1jKA5=eQ#)*O?Pq3M_aeH&K%?Hr3_HM`pD05Qd+>P!Lvl0?F`2yMZNw*7FIu4 z#5`Ci!mHx+V2hO`6{46?)eww4+u~hQ_f0K(rw^ZWCGI3DxxBHkQvQ+oLiDY-aiXzK zrpo2=s-mKcZ-Yp34>mv9D0A_k-qb?HjZuN#eo8FE=NY;6zIhw>KW5+_tJWLdB$@_y<9SVnm%P@-7+`SXi5hhJ)`N;&-O%*^7cN}-2LAWD;Ta1a2(q-W%++&H!m z>=nZ87q143W<@M9IcZv4vA+{(=?V(hH*MNGBPRt+KSBFz}2Jbstj-!4h*bQWK=&m|2CjT9Q)*s^k^w`3`E88*x>Di zT7$Uf&q=m!brW1#rW?z{3=msd|3oG2!}kgC)( zI_eV@)wZu~wB9I#i}HI0v6H~Yp%({vJmCK(XH(*`#I?J{j+_CCI>!+v9HIp1F55oVVTS_?qvX<8mPiUKBlCB3yEW{|?(DyIbk%9cliF^o{#RI8G^^U6D+#z$L)V^rmYDz-4=-v=IWBa zF8q11g%VG$i{|g`g@4WcWmBqLHKOd3*k6X$WY$y5enBi|(O_|raisOqd8Q6~8 zJNNe3?}hq!t9(=2kA~uH7XNuR?v^UAm8$6nuC`ZFr?!8SYb<=G|EXEb%PV#)yfL`+ zy6*AHtM?L9j$}yPt!rg2P7U(+zYmQCHo%0Vt=jL+*H-KyEJbRrsHv=~J~}#TVQrl^ zWI`eC-fFlOQlt9bY=}adm-KYr>?zH`$qHJ-&^@+0nHv5s&%Uy6ytTGd+OmxL?EyWa z>$L)FEjCl(O&U!7#)rt|79QU+TPa`cjf`lkNa0q0{mhdU8(Q}or|X&%k@KlrjsWvo znj5VIM)B5A!ycTTEPTio&}`65OuD4KO#A&in^84X44nZnQ;G7UQmF2#03p8_;$sNh zp5E+K*}_zu@q5{#$?^e1=Y9dA?l%^E4hn`9m4yTqo& zd!o?kfm*?vtUMFtCGHizqa4l7tu-vgK9+ay_CcSB1{342S`ixndHIIY;Lk7|GnHO0 zjzTlNFsMGP`m0`m*YT#|^@Y0767F0OlYB+6m*VsqCM-zWETmgmE-2=|@19jpOWiY1 z^WQ-WKCRCBy3NLOnyHzGY=$9QF}1Q$wK;p92PuSIF8}vfJvOH{j^K&%3btd$oz(m4 zcGpkcjW^3}864s1i)LK1X2uJ5{l4zUwzYa+@3=(%p(BUAuY5Jm>>d~@4yS!jGGnM7 zaZZ$%tR&&x`h|U)6HbJfdc4qD7RcuN?Oyn-WR8yVG}TVSeS=p*-8M3>QtRyJ^5C;0 zb4-0AM&6`TTD$4cCc8a@16$6CtFhm5ta%!&e(re;%c@}gXW7_(^BX%-vP!iR<vz6w7pHz+>ZzU|>Mj2C2zcd@>g!2g zR^yW(Rze?MeNu0~)mfjXHe%1%lroR-U8-v4nGx9Cu2vtXxtrW_dZ%hGx9`)ryXN_? zgPPyyP;M~j{JHM1o>D>^r;zOK=XV>#G8ly)fNOEC1kIw{6rB}l|J4M+*)bWu#%q@F zjkuUtR||iCRExvuZkw;K?`xI!51{Q#2O)=^dobYI10RD@NNV7-1K3)KQ&!LJbnDyJ_iIi(|<}qn- z7%)2`PW|?@+z1dv3>B)fhyvg%? zN-T#xuiRRwqR{Q7Dz9ca##{JwV_;aZHR(nDotSc`f2Upz;M#@xUbX5fpC{sK^;ons zy2r!&SPWdM`3h z9M_=oW(eTkMdC#JG3K(Csd(yxsvC5Eg}I(Sj&eQE(|b}k`$v9!y5XFIuRm`A`9LMb za!@8~hqd>+{M#hY=0*>SXr}Gl>L~al&Byy0MFpmz#gE|ymj*F$I@wdps;Q@EBiI0} zt;Sarf3p~CxoI{ZdEYKME`KhC1OJU^vj7!fmZM>mT3rLGz z9@=Mue((YX0+RY7&{zmjs>08B!H)VprV;`jY&2a6dQlMl^x3m*=g@Ho841{LVmpLx z-`vvjgn&ReX0sKn+FPwlic=3BI#dCATaDR3K^wTJ5Q_dP<{@z!KzX^u+or&fkgt%H zp;a#B&m}?#18W3beSIjm7HVAAiXc0G1pXU}ZCwDok&w?podS6u)GeEDBJ-&V<90)D z_EQ5yAt5w;MFu=v=za_+%njldFg3Rz>Z=eELis6VrV`ELn7MhVoK=jjxzrX@9Uqfw z?HuvRrizL$!fm5k?We3;!E<}NUFiQ40LXiQQwrlt+f9<;q+##abrynyfDFNI>|7TY zDE(MePi~3zczb@H(^X+x=NqAO(*hk%6HeqLN55xgLD<^Zpt>>EEqJQ_sV4W(C(zja47svzaQJKC){JAE?Vprc<|YSniwspN_un%blXaSCm2Gr|f#mL$ zpZ2Wxmo^-^K$~+;a`{*$t%zT<_QhDG_dNz1d$tNaDlww}R2n?+PzfX- z)Y!21Xalv$gS{Vt5fN%0$a3DH!x9Lw;1P;@kS!7!6Wac`s=tlOUW8f*n{xaEx?mIN z5I*7ZDY{`u4G75}n(Nd+z6aYNaw;La(@-ScgbXv1&*A|pr-2}me?nXBMeL|y;7cT8 z{V|>7ArU3OOIV*ZgJi%&6Jx@a>EF@|}G) z_%3vEZod`jT0+V;H zDo0!%^zI_H|9XOi%hG$nULaV&)!K=fS<#~T{a{^*=xqmCk=p@j*kI#^&uUr&+WRQA9-7F%i!ovbbq%$K_11(+gY3wXPnn|n8Ys5 zkyJz@(`|6!diWOm>3Lt3E!MBS9_9;mcceh@^&~x=`{x5HplbB&?7j%+;C=(~0Bw-T zorYJB6B8NXwf+KxX7C#h`^(@zj}WLI%DySFH!awrU9e3>6LLg&kOb$pW7mX`Gkzb> z213t?YJ_jQHMd*vqDoUGRf+zcyf(C}@eKA_Km*3c#$=wIzK=Q(KwQuv^Z^UCv$qd+ z9C^5vynAR!mD%e;Y^^zbp|OjCKGFeEi4I0F&;U;mkU!8H9q5(w9eH84rCebnjD3TXuYN~_!vUsqf~m(6fKg(y!ZAr9Dz$p!lAp3Q-&4g-TPYQKM5z^3 ziJA4hw7pgRn|HgYyhXyRJ>)z7N5p4tlRcwd|G9wA&R_ZJ1yjxAzH{-?(R@E!Z!xFc zOZ9FD9;O`~J;nNQ=ErER;@0;nuSW#^uN%^gWatfCe6MK9MBl2k<@L!jOZ(g_7Y`z? zJ3YRBk!fA#qQ3XzixoASZzjt3ST@(>SxfIK>R1R|@CsYV=2vKa+r53zYHDX~5*l^| zCag%;oW&+Zop6F%)NC*Hm0gZK zas}#lNqi)(d^2Lt790+qw#yNKvh7%9ksqKt)hw21f8j$)4!cX*Q%@Qwd_l;B9l+Ak zv+^xyl@L`k@be!Fis3x$sg#m$#FWaS6{KFde329+d_`nkZSDJd{*rv@*xFyi!_r9q zllu^~XhT6sXtp3fLYWfqJRKZsPSAk;Y;GoqYOts*LN<_$U{3(~!?ccH5UObs%p*NO z)8GSdW~e2DzeMFQ$kTL?BoJP00lU2mgrhF{+yKtQmA)ygW&v~s5kW*|K)|6HdA>${GHl04G%Wff#>6k%%zWl zFXdAps=eBJ_I+-%@o{06nBN`Mo3dVAe0%nO{G5etV_F?2$L z*_%0bu|;p(nDWMk_*52CZc=o9~bX z2KisgI#?24ae^#nz)6ZMx6pYY;UA#x6dn;#EYJAAmU!{D0XafIzoSHG@Yr9*@1 zuL=)AHhTK_`gt@B0Wx|O%_079;qZN?G2U;Hn3#AC>g|*_9FsVipg^-*>|0ZBz9FNwduf262uG#)$C zv>TyOfAAnp^*#wI2L=$LfT)XYn}vJaEr<+}7DRzY-iR*W>QKy=<3J!zm7o2?guw}M z1btHC8d+Z(Uk~ar;5kGXrx3XUC zaX186`~lgHo?>P`!NTGNjR0E45hxJ~^~ClYlh-o@dLTVfXgx?l(O#Rm(;`bf^URj? zc)NOggW}8K^>bgK6ksHJX_f~KqtF%O=LvM=m> z5_K4hg1--I|>i3Gl?}7I6FcDnQb?DB2|rI>-z=_ zS{I!E!Trc#oyS)Tf)xV+^A!XpH8gT2A1%908-3tF?ZWO1$Hr{8FfLba;q_%fvbmDLa#xY}yuQjoRq{y%bH;wo$H0n%a;<_(wQXr}3?#=(+=8YG| zF^#-ZouK+uZgSQ@-YY?@Vg4x zGTz&22g@!@338Bi`XF$c+WWy(PJ{8EhGkDTa%d^39Z=Bd!Bv{q?o4qz90eYtaAgt( zHk`2a!wv?ZNm*GLwMU*D~QpAB6?BGkk|62Qw(3k-+8J0F1=E&?ImFhT(rp8?}J6`(AX#g6q zNsM3s0N^f|bh5Hnzu{VwQ3j66Telf??!0LTJ~NpD522j^|Ir_QtRl@2g*3cv1?sC+ z=DE=nJG`oN`wv|GR`kAYHd%EM^3Blj>-mpxKG9{7n6(!7XGyz=?FEl#TCF@Dvzful z;_3O+ui6u~3Y67dQ^11*VtJAG{owpj=(3EAn2{-vllxh&GbF^vzi2SBxXTv36(#hN`J{fDek9i>KIX+|Ji`2j|qGf!FUnY{a!bLx5lb~sFuo$JF z`b}n}C+(abD<8W~6&CU@JgK1@JA#m%;*FKL`KQk>x;x`jQVSI!%u0C|oE;i0b5JXc zWqB-^RK8;8V7oyl=nuV?__`rP@cFE&bpqBgArV-bHFL@FyjApsXaom4E{{8Ew($rl;WOiwpD$dvwuH{WHqkR@+_j$?O z=gcEO^~uS=5E2~!{QPZ{_srKj=k4hpW29#6_I1!H8E*QJT7NiC^vb#m3#niueRf0s zyte&lHJ`|WGvi~1oj6xP-wuSZYpC^A`9tHRkfOwfGt{QC^=@Hnp{poV)n(Rt>eY3=Tj9p zZ>ij2*mVbEs-UM;*fReQPcx?GkROd4?;m=#SQx~v?Te(Jk~XE|N!Ah7vmd!Y5a>Ua z)v;Y61KfyaB9$h0dh(6i$LtO@O?8VKkuA%f>>B8+dM&8oK<{ z)k4iQ^ToZpxjod4@%I%-9R_MQkwr>&Nn<)dkLnmvIpjD}`Fv+1zCC*UcrP@Sp`nz2%CRn~ z#smkK0BMs10E~PYU{2x}OJT%ML|%>3O`_lvPEJY6Z;t?-D>gohAg2@wILTmLA~_*( z7qE5*j(zRw)lWdbhnn6V1v3n6IUNn-P+1A#$qQ-9MWK{eP=AHKQWmnG(nWpEIwyKy z6Sl{B3nHk61!h9EYYWkTdXpm3V3iz8dR&u{mDL;dqIGa$k|HGo$k&C!7m&6Tck-BZ*jVUrh!r5l%+xSyKZ0|y>z_dla#6tnL=q@HbUZK#Dw1R#|4 ztD+N86hE(tY+wbd>yTIKezE&YqLCkFVs)hy2zAN)F>A81l~d=J@sS+{7fCyxD7IX> zG1cJdOaRf+S%)v(N!0%weqLy`u<*S~>NBWkSB^j6b@lH3RIY2e>oM4g=*V=>i|dC! zUw%suU`DJi#EOr7^Sy`f%e@^~g6dy8c~%`{aL)1gaw6TbKrUoVzh=^_V*WC7n>OmFYQbR>?xj9l9NJHWg78=kuPg>g7+Uitta z%nj~BPSNsaj{}~Wo=a>vJzcs@WX1V*PSf{V&B~@1%c|*gva0%-D)ytp-)=~L+uVBU z(>bjs%X!MIM!+XTtu?gWsNkD|SmFVj0hi5)3NXG$fr0z6v+Oz|^bGo=hodD+s01d2 zz9=>%xD=2dPXhz5^&f_SN(Z)`+1c5sDO&iQ@-`?y9@P@RP`+^sp%*Y5kSfJ!OC=86 z8Bgxt0?a?SHx>jZB5D}1K`mJo!RyC#EupPH#b*7x0gp@=*Jj9_P;yQ3Gt-2IK-8I- zwgXW|ZPvm>QMXJ9L^XiWOI+8NwY0Uhan#@~j|pSNwjNj1Tjjx|451XJ2o;3==oyT% z7Z22h-Y1L>)S>f5Cz%}cu8p8$bOB%igWris3s%MszMPOMp9PYM8980NU(S50_c94m zRI0PaRH$i#wjvF6)X`2;m#g}_YnotR=Sx(f0d4Od94v!$6IO(4q?sQ4++18`Wo5^> zxu-+4rdyMflD0kkY~EUZ`!p4@$B!lh`~M~EkB@C3&Oy&B{K-zjnRRww z`MI|g_$bBd0A%8~Gj$DfzR-6)>1y(Irxk5Ek}Wo`rQcq5eK&q#-?!ldetB=zi=r;a zwr+T5)XLP&p}%*nq^Dxjv;Sh}JDZLqnB^Wz5U$;O&n=?i=AgG|N`1(q4>w$HSh*{% z(}=bI9wW(Hytc_rJCM2|cJKIlW+3=Mx@<)@6nShg(C7@MbfXNFhsM5YWOJ+Ckbk4D zF3nIw!r67&=7XtGhwf+%a!&G|Ad9*!IpDymV)aa9)QEdItlNKuydm}L!hGXZ1txQl zO)^xCo)*WykqmaEF_0#(_jrh0Ngf-$v2^IwO@o1@m3+Do&iq3U+3qmBeJ+{I=}Z}7 z=z0?^pT^d+YzJ!PuMe%4c1De{Mn$piIp}fk*6n-8BFgs3Z{M`(z=o|eiQYZXT6wn2TzpRUhxL#4LQ%;b+WT~Oo}93cD&lXy zoAO&kLxbnK@ZFe7^o86&)DgkVvKL0bL;>S5i11PGekfKFJ)Q00;2Xwo#Q-xpGAMR? zMb{U}Nzff>D}guxQHPPd@Ygl+!+f7$!&-wdEzptb#wKy}z@b%O)SgNX~FGR6`oxr#^v z^3E^l9q|>bTP4qq6Sj<$B%-S``>|39#XQa*l&4UgF*<;=Mf`-a`0yovQPXM&5ftn!;&x`-N8NHyqN`~_rjv5p#P(nD z6g6q=T@li>+8GVW_Ov~B+b2lGH@+U>4>DvOZtK=v_Ko9dk!auvU?4GxHF}?J7x#7S zeAox$J^CNcq#pHb7_PDm$eoMt88+d>OZH!~j#qZ`WXu*iGgo-#l}EdL@r(K!zaK4H zxfV9QZi_4)=_{OQ{E^D1VX9Mn`OAx4YFbv7;*GxFjC9V%ENp*A!6zvca4}?*Pr8x* zovy}4QTn)FqlW!itEG~a6$5TjZa$*2p%H6Mm)_6%>H6wXlDyL{(sZyjxYwY*_)~hc zKJ5Z#PqBWwe?Y(&pe004TGaBvF{uku+s!utZ^ri*gYJC}y9o)wPf(<0qYB;r*Zr;T z=;40)3C0~U!PXMGV-SoYKVwRd{-&=3umn}8wJJ*BPf#KX+IqmA){P}9Cg!MV7EQ!A z3Dm!%sEBY|fPFdYBF-X`Uj#(%Ju8SNW_hL!uPAJCqmbqVw+w)4K{+1=>p;wTOba6B zfd6(dq{fE^s)*DaJp{4&UKO&p31ncDkb3gy(YZ-}wG%u%^;B~qy7&KT0lH=?ISOyS zSMh!p%Aq9-6IV`g&+e1AJOWmOZKE~V+e~?3L`s?8iEX{jbpGPFGHOxq)2mQRTg{v# zZ+D<`WsRcnaNF0m-AAd)_j|d8onD`?3}o>663ecd*Wf=MV>+gu&vqb+tK9V7csWgF zrqkAfj%d9`4pxEpE}CM;MO>wV79wv=9n1P8uisjzEleL0a1u^k{qv+lyBsYx^Im8g zXko}m9_sVT8YtKGYnQ)nr0&)HkYw1SMwKhP@2VPmPRZL1Tke{P8$1slb*!^_G_i#i(y4wmYHCO zQSfGRxQBQy%(-U`zCTyk?;5j28A0yBC;EFd7LUIs^?z zhkxLvAeUaAP79bm$;%rG$1p@~dLNM8haP%toiNbc_r)|TX7(&55pfa&)EvV9MtIZ3o{tA@}T+=>NipTFO{jic1*>J-=&)vAyq9?y(|WGKT8@YWc{H?&=TA&A_6YA?_K1k0E?M3|p2_7rDYud;&-Ye{iu7LPXn(MM zg!kx!RcAh%ih=61=JK?t?Cr`aPmb!RZzau@sLi?9Zn-?#%$`=2h7~y3_x0rOM@#z$ z2d*q9^vN-BP$~lu_!b^@>P1L&G#NqLV|zc_f1C-6Q9Me3QGydjY7r<-fS|l`rhN6l(=+OjPh$R;|R8)7FueD@#x=16^fv)c> z=aJJl&*cQhg?fKKHJ%5}IY)*m0_gIps^Ttls_lNjbz*(G1Jsa_#sX{Fw0UzaNDQl` zU8t-&4!R%C7?E{zp>%FV7F+H_A$uz!B^Npew-ai_B>1BT;88z9IFaFAkD{)t-TywU zH&o0Gikt76S__ZTM6!l)*%mEVwNHpWz8pBWTc9?lc9xRA;^JLze!oE5+BAo6dUNEP0aO+q}~vr@cyT zE}gTbWaQR~%=4roE82;i0skyp7gOrRInS6Szu`9bQO9el3!~$^Mp}M8Ybx%u2{hw4 z*{SJX*Z1=K(1}h>gTr*mHvqn!mDqt42_3eruw{B+f@2RmTfq%~!*^&8h84E^9Kk@m z*WL`j5E7!=4C_dNJ_j3Vl48n1!l57xO{O^AzUIKKvCX>fiW8bhW_w<8h6m0zVwLL^ z#c9hX214S2NC7bMHbT)+d+Dei&T7=hz(6dS;h+JBIf6u?<}vur@A?KuKDhYH($WvRr)S}) z!=(6X*qZgAbn@P_p%2re;+(;OqAY0&9j*vR0>TLekqAnQOycL+{+zf9QHI5rDQ2fW zDQDXoDfc*+mj!w@2B+8M&nmV}kJngyY&$HQJ~^_U>-&`Cs4t~J4i& z*6Fgr)8G%Uog6aEK54vX{5`cEYj!7-A@2L^3%_j>vv^wP4_(+qec5|?DMP=WCMCyW zLG_fRb9uMy~W%@mDxj7WlDXGIU!7=#Jk!^3yH`3ze=FhQy>IN54hVQ&ThK@LI_K_o5+ z94?88Z2+ex6D`!N0`iK};QKLP5ntJ|+AOPM?jYDhIf@@Rlzph!$4&{LjqOZf#ZYl^ z@kAAO%|!F<7*4R`R=%;!i&jG)3gPZDz!mE~V&fS0NJVevKa(qL#AcbFlGHZ0ov1pA ziIGF}TXWNEdc3r>H1Wq$vZua_pijIg8*7%y&6!c5pE@%a{gOWpuh;L}Qp(fkOB3NA z5-g|kyy4l&)whQ$*`Gftw9Og5-8}M4SV-!dpTd_RYyS|9a|X{Tz9_4sz1;Iy zw(1B&)sZ9FZKf^l%g4t>Y9sDMT%cO!(;Pfmsn5t-MmfzycRS9(g6}Yd3yKS^P9r~o zH6}q@%U;)SEr6Z;BrEI4i3<)27*{g4hj1P9Y8emiMR5S$u=n6WeW!WEPf(-WM=dYh z&sOWAc@tqM_yyz8<{Ao?>n_~x%aE4V2dyssyl?J3k6JNdmP;^1zn&cpL_JTbEt{;x_aD~CVuCd!5$ zKnWV9u%YyU78A>==zWF-cr>!ZrC4Gsnn91urihcTaT`FB^ z9_73uSyO&{<+T|TpQdC_in!glM~9w7wtHD{3HTtiG+_;yUS|W8%=i;HD^R?bFfO7z zDZ*b~R8(}T-1aPCCoi%(bB$P2C~&UMF(bxz?_PhF$5MAa@Igoc&fB$aPu_pCgL4)F2GW$R8t91MGKFMH6MXQ-D(x9CIh*AXR)CaLU z;^V7A4!y=^Q(EqOFaO!RPc%G!^8i*=7hY|^>ZV(?U;vQ#xZU(NA)5)|HTZrHJsTqL zcK-Wnp^b z?QaD6=d+*fWBmJ0;?MuTkFJa-`(^w;2Jz2L^m4`T{olIG|Iu&Ir?B7|)6yfe z=7^6GaUU*_9D2kXC;#o#$FpM=$>;ay^!^=KCO0G*=cLH)7OhNvc*e1?=9kbqk>#-W z*YI5>lRhR^%K$w=S%aq(D-Xt7`z$SBJqO9#!^Fe^>Z~Ys zC0H3?U*@oTt+09+PHE_bj9892|82#JqXO+x=uWdG@}11I@i|DkUVT5@9Ux| z)qGiY;nkMl-#CWx!{o-+Ddy)k5MXyQMPW{~yOTvFZEQZ>bU9sP*|&DAW8Q;CH0EJ4 zKP8`(f5kkSs7wNiQmiO2IZFd=I;5CUit6@+R{~nE*`d`C^Kpe_DRdgCM!y$%(}>Ex zZn*kVimolt0cYTl4rNa@7ezl3zNqS*`|4uWqYoT7KyceIdoG76GY4>zJygN(T1P44 z3JZU0y~-L36b!l?9%)qDZ*Lvb*7fr1NreW3e`ls7#q>~b>*NGq`aoOb$_Kv`x(5q0 zoex=r+5Iao-@JJYJ``Unhu>bZL2m?bTwfvU$?1AR!!G4yIaHsj9(w7B{UZW<0Gl6b z1erfA7>e5rtntFwq(-Tz5gcl@hol5k3O2{M7@}OPN=Q zUN}3lTAe@7vru*}Z1#(6_;_tgXv~EJIcP#*)?l_UDLzgF1$+4Wl&FPbWi7O{w zS_j`W=E>a$9f8?X}h=ZVcQZ zBIij-hE5aF3(@UjUMWRGjR`I}&YssP0I9)}23jRF;o-o^j|u(7Ku$)c7o;B}2M0Ps zMAQ)^Ve7i$ax&2b9l(wuTw{P`1JCOQeT1fpIej7O3xMIUFFptDQe0BfWs^&|1K>eJ zS49CWEr2JqAbG8s9}b*n-@$_t5Yr*keO=#kl9F&;B;Y`FI}?KQb9@Wrzj9FGqSR8S zuOgVo_~%pfWkCw_q_Phs+wMRjExw&;dS}rifs6}xLgcfMTM%3ryj4hYZO0j4q6Ycb z2Dmzu5~VkIV6YmEg*XooW~_`81naNWvwUkr*CP?49^%YG2YH-pH&G!gLI5Y3#?241 zvUq`+3B&qe<1Z*H2niS=Rz^-FB)kR^~T5Xbkgco2G+xs z_{GHP*j;OnR|~v~y_WF`8hsgs6Q2Z+BT% z_G@LO7aoQGdmXvPj`fteYixjxK`V!2@ezb0{K_RSUw(n-i=x&ENNdy4E*rDW9@eh* z(BI&sgFyl5Q>e6+lnx>thQHVp5EO#KBy?f$@PpNOq2whQ=2i#;R6ZEUqd_F%B|>Sw zi{|XEdw5Lm;a)*fu+Y7eNKA-QFiZ^8aWm4a@+V3WeF7T=?CGlBH z^W!z>H$?0xa720uSA2*NLOi}1Wk4ic{z@@Lip}i%^9_WDu0M}GTG~hou>7MgPJ*bg?|QJpL@-A8_Vs%O1j$NK~-6M%*3 zcQ~K$%?dT`GV?Lwn(c}p$xc^hd2^KCZSjsvPe*}?_v*M@xqfjkMcz!!k>U%NLWVkZ zA3P$Zc3Pj)SWwM3|Je3{c9LCvov-3b)7hInW|w|OKdYd7C|7^N)xO%+J175P?WLMK zG~au=a#rZx>}I1eQqW2c2MIAf#Gbx z4VzW?nTmrRQH9G2E(W{S&!=Y5oVyf6IpHOAQP@U-pU`L_4~AlUH=2ES+d6@L0pRfi zlqT1(I_p9B2UlRq`pBOkB6!#JwKnsj-LQy{$}GebGW|HjK=?o6qfN6S*fl<)_OOL3 z_8b(xa69Qoj;q)8<+1fxTNq*KnD1x{c=ZL}eNI@<6Oq5pbtz=CVM6v?$nm)$Ljzel z4Ta(lypn`4V*-6i#f=^{F)m9?Fs*nA!^`-k7!XHInvQJf*~d&0C1|Vvzbd=(a4Ofg zyHBTb(x6C1i9)905RsGyDMK7nR7wNNkTPV**lART%(Go6ks%>AJBkpJBAG?oJS4LW z+qWKde&6rG2aUWqdl3(q!x#bOf%+pFcSGOm*yLeT9o%7i@rQ1r(9h~@>CfI?UVzhX;3sC9ID1w^ z$Zof4k|Qo4vASAL8qJ#UwFczYk&*=kH(X)WDty^_cupp2CbU3LOH?c)ol%i{opJ6I zUkDhUccH2}exBS@1q4;Q02KQ*NY!RT1MMp8FiVOBKqlKw->n0RlKOI-8z0`O2(oT9 zH5O+n{`CC9$IUn=uw)iv3Q!_QnzU%%wXpbV2W=9q`DGnv zXJ%A0r{Pv=U@#dnAV_9vVeVL;=ei3wKlRTQmo5!z4~m5^+a)B#0^m|ga@PhEwIP); z8Oypq@y;BA=#m&a;iYc6+Lz3k!n<DXkVvW*v4KylbC*pzYLP%Yga8LJx&zlEat;GafiZFU zXhcNBJ$TB9sct7qD_LF)w>hMHw|f>9?swc< z0T!tCletUjS58{sKehW#?@#Ysj!Vl8$!`Cte8 zDG=YNni+3gcY&MBl+G*jjK`trlm8xH*8+N~`?(91cQ18Edxp!*{OKGj7j6~1Z{RfL zZlrjX?Qp_+w{NneN}?ys&3jg9K?A`+B3%qRZ^*EqW-$BE`o>5pzFGyoA|UQ&%g5QV z1Rp@WM+#F^Mi{CJ7`dB;J*Bv5ji9!+c3Ggbe{V8QybP=6a0Kqb(U>r((D-y^NZjjq zvn^Y(GEDm{r0wJ%U~gN{YD4q-$nX9F?+WprByQ5?PNi{U$eMsn8&12IDH7e<0t0%6QQ_sC$e}(Ccn)t%CXm_wBd`{N4`kz-}a35xGYx`6iDAb zq|`hWNoQ<5Ho;S9BMcqJ5<2ZH#xia zDorv{1e9Byk9TOU4NJ;bp^mjlKb9NuRsvL4N(=`^RwLYDi_(mEh636KbOZ_QJwT6N zZKBr6$Y9DGEmjXg^o(AF5OaTY2~Eh&A){;9L~zehQ^MS^f)E=4g-}hwbAMOrtZL16 zta;LNpgdT&$7S-^MT;~8sGJr7UswmR2>$AU+|EfH2wZ*P6{Z;cc;FaU4Z~GcEv;1m zW=zJ3|93ufOoBwco{NZy*-WHXeqmuMSRS4}K3g_#{u_A#wRKiVpT-%-%#egU;694# zXEq&WHsy9&E=(Yz>rLJe#0O{OU3h{Kkuoe%m8GO%XM@`3sjfcfN5RDPJnK)Mr_Y_9 zwcImfWe+mP$2%ofO*iY_hDV2M9{kf|cL=KlXIQYm_V#swk?-czSFd+5rYRrd+=K(Z z^}TKm2aM#ptP^uBF)>pR^ zz{XSbB*EzUjN$exhxl5Y;n0Q~@q46k_jne=jME zm5fR*405BDXhMKO<4EZw|4n7=CcPtIo*jE0g%F`e@^L*w?KA~c1?@;`CDvkeM9>rS zr}I?TU@{-TU=$LSLynyY1zCGSIH}{Iv~zTHBrfkvD0ZaI6)!`BqBel@$A=Cb1089W z^zQ{r;S(JY6-C_Sh}^?_Jyke)6c;{Hcg~mC8bA;ZciQ4R!FK_T!`@{f>=k-QbKEzB z@(>vQ?$Pd#*I}%S0|R1H0<{~zU5PRZ?5ZGE1*kt%teOBgD|_oyI>MwTm*+sn)Ew-k zkZ|FopI8tw1w)LUjV#M^m zWbWcIGBMh2m}If&(8B=rh^XT-Gi4Vw%gf@GJ=oUR*6*7IYZpedFSuSFyemQdN6Av_ z)$&WmCumP*??(EfAHY^k>$nC~3;>pi)n=-hvk9msegT2FPll^D3u5pEBj-{~p3KGp z6wg|KZKdX3?>0dz_LgKmxJbE+3CW87WXRFKOWfiR@U z9O{zg%U?dACS!j@(+)9ydB)Bt4G2$EUDqTWf9x(3bTFbTsBs56u8nzG9iQV|f?Su| zZc0Hq=P!gve3hWaduj?NxfAaz{x@VNK(t>~CGv^xFQ^V%;9Jhe7L1Lm{&#fu&ck7T z<#*7t!c-}@*{87W!ILL%L$_wdy~u=Q6INmX`|09`D!4G}?rp3N66de=sqWdVP&c7{d$aak zfIY&cy7pJ*n+Y^#k^JB3?h##24N! z+=l@Qm;z2tP8vR&C0H?j=?dkX(7Sns+Vrp>Zpo{dijnR;w8DelJ*p-StGQCY9M1?l z|K)_U3M1i8?1$2fgArkA#()VAivI>Z3eW{?6+zGEKxl+Ok`jHTkxI%8I4@SG8Yx0T zXm>4^{(S2xdMLEyk>odg6Gp1kB+?+n!}^pk;0e3^K!$L z6pUofK-b@(xnYsSr`s{3-~x%zJhxMr;RqVj4Fra2A_D!A&eb!!PIXrQtg2A&hq z3#jf9fMW&buTab_waRY0rG4?2=_^r1b8s9$ALTuc*FSHnR}3W-{2@seHs|{*&uqIi zew9N2pdJFSA`C0e2Zo(Ic!<+QcR4Af2EbVyj(qEzfWLsahbg+FCm-F!$L9gSjPPZM zox1=p!seWwiGKAOlu)`=iN@`vt`p5fQVsCxcjE02m}vzTB%WnAdUKUYNjH5;w+JPm@mPvo!rqW7gkI5AQ?nsAI zX}|q0aIvu{`hZv3w!d8kTxvgooG!wE9b4yD)MErZLvIX;z;6a1w#bMz_*}Fwn4(;c zR(CI=0E}G6IH8ypKw$zB2Vt{0s&d028m6Y52f3Diy)5_k-MddWhJK<@Hbo!r1c-L; zoyx0zVbu75zmhFfsqwA7w9f^5<;J%vm$tPO+~ajCp{KeD?vAH;l$g2{iBV_n)HDW+ z_Ai*)o#w&ozT2yDz_jwAI>mpxWqae&W6W7AW|lb%WeLl6N9OF9!f>akPsi%}`hUIU zsVqrPk+V)St6epnp{0mtyz)CZCY_u)tA;#R{2s zj^y)*$bP$&HPBUYGeT{fvnz88zsm5tleN{Enb9q4NsB<5tPYzYoVG(SwcKxAMQkdF zkP*B~8Wsm68x`0n9!?ftg#{+W$9#x>h3C6%`L--Xh@5!ri?T6jZeor}>S?IP37CYp zdA?0ar4O^>uoXb}PaYMF=19qgY2zIc-ViThn^s4GN0us92LLTbM@JD!xTs4D&+jn| zt1#W79_oP@7}!Bm2#^L?jaUQ0QrodNA$}4i;PRpoV=}f5Vdovpt^#T$01`e|l{QV4 zGGRrrQDiLT7ZFkZWsd1Usz(&6@Qe=rDCE&N(1~bx28szZ&ZtBrNO^&E6d`-b6rvI0 z?f^(1B>rn6E;xLc!nbp07#6GBWE%^3w9ucC6EbC&DxlFMXdWqq`ufU|`j(CI=%J&u zGWy=1b|6QmB=bWztY860y*4=?2Xj#W&x6iS%tslDuUs8=uUZEqcL|F*g9F;fH&eFt zF}=H3)C;QnOKsJJzK>i>HhJM!y*=WHac9G^(XSUn)mv?HX^EzM{46iFE87a3Z%?yp z=Cw1|3TczgYG>5!;=0n8Nq|tx+0t_tp^U9~$6zu)8a8I^pg8*)KOYbI-OfUX>YzWP zZdsyCpQ+qP$;f-W#vw0zSwN|hUv*K#MHT}l^>xODl`HmE+Us+)o?uqb{+=t-mM22h zxlI4#Y1U2p0u~FmhLXtmOCmmxs@S4*IdGJ;LW{GA4~{LQG}MY!9zs>`hcE@K2`?=H z=s47=d!lfsh;kM5a*;*q%f+t%DffI%UXP^0R^GYE+i7z^2rh&A7$$HJPEM)W2=y&+ z!#03lE)3#P0~7oQV-_S6ohW6IbblIL1w}nv+7tNJdRJo0fvOl;=lf9mNt8+EHo?u{ zBhWD7@hhzHc=ycrLgllYwrsgYB*41{=>doiqyQP=0$xdhyC{PsFb?qq5xZ)2EE zsMrBzz-s_vT=3Yy7{wXDS450VAp_H>5T{0a3PBR6963TJ*vLpD)*n#@k%VeS?iYl) zk!cJt-T3S407lkzG0+w7!wC(C-v_|Y@B(24;^P)Sz|PlXQ@#zU&?I>XJ#F`w{5i8j z?{yD#2uevPQ$ek+eQETos8Krzt--S$V~y6DwbPDnuZ+REwTB<~b~@8)yuf9FqgBts zyxG}4BJ90#viz!Y%lJTNeuq@nRf8xR#UcfxuM;MH(qrWOb?!Yld587cj44+Q~lf4^be&DjcnZR zQZ@sIwTTT<&MUKgSDpVdc7{9 zzvxmuZ}R?YWpa;JK9Rrj)Z16_ zYuF*O{L&Zm#7OK8H*?Qpv6PFo_UwsoUsBNq^u#$8R>~-$UZrM65ey!$& zzoW&_n%5W5rh`nj5dLsObAJH?<{c@{Fu?RBBuGAbWPEvyQj4pA_0G z?^;3Gq@}E^uymAc34sb(nJXI8LQ(_x;UNLw8axk=B@~i4w3njcOZ{^(ATO!%CMyVR z1!YUs{I|xBpCI5ERZlb+Xkp4PkfP=}dZ3y8;PH0Z)M~pKE}iy-)}K*+T7c zvZo0P%cb97CZNh8nLsFfq4r$0e!a7XZ62_&z#rd!G5+HEL}@#AAa%zn_sQm5N>laN z9uL+-;gLDskx^F^d0YQ77teQ*Tc}y?sdBs4vbkiaAZDb+!JEQc^?cZS0*#%N?Le`! zgy#0F5^2VGsHq%llvntapib8%<0<}^1~OxVCgZZtoH-V&8@%;9M{~(%tdy8dpLQw{ z4xz#WiZKQW(t}B}8KgC?8@V4y_#TwC6nHxjS*-Q|w8F)I{N_OvBp90}h#smgY&ttr z4Tuv=y(LVr!T<{H9jcf@H_0!)(-|e)CXjuo&DNDnzG$=(o4Dnqa<=2s2>g6`JfL*f z?t@o)1fY4Ov-^F=M_&7?(kmjKAOj4SDBM=8cnlD>Ym|$)JOj0o{!$?Vg&9}U6>acL zYzp5guogI9_v{Q&uMxfq_`#2)03l>U|D$-IoqYlv<miFpJutVgk#p**n92pq+xvWBQy41Q+_Gw}K7s31b zt*<)lx1TFr<3iVH7jxh(qKpaoAC19g(JYZ%xVSx zzS?$8`2=%l|8W1!)oW;%X-)0*n)G}x-n?MecT~kM>qMTRV8l$`KG2zD*bg<(_A+6j zQANLl8%^oP8;(JJEL z0`Rg;Z-=^QCouBLN+Cr>D&Z_%v+xqf?~QJgXSijpyy`7U)EWuAD;6e(8`dDn{Hg9z zX}PCgFJRC;eSKx$N9aHr zR6_{Y&9Cf+_&AB5BGq!iFt#|UC|F$KIc~;z3|js!dOeuhohD}cI6%c-{-detRmbu1 zMCAIH2h;5O@~$$cs(YnONL z=hnxE6u+XdIG;Iqh{d6`P4;M2TOJ!Wd|wt8B@S-mBICc&G1*<>DE0PrQy=)t-DcQ_ zV^wdZ*CFR9duo=wMM1f3URS1;Z1C}xp*%KKL5Jf_PB9AaZyj^c+4U*^om=~`j!ktg zZc`K7i*P)m(;%526g(3m$u#3^JWdK*YrZIL7eX zBi({N!dO8ELFROzV5_RGc7k9I&s;`15>1L%U7Z0oKQu795JZs^zGS1b7lwvIfzYJn zO_`r^9n(94l}pi;%m=J=&-Y#bZ6aA<_AKXL6kU;gv4(Ydmr z{X%$QP1)ECtz@?iPAM{{N4MDtM}K}_dU|ALw1Q;#|oSMB75FcVoR5QXSjIYXL@ z0O!yOlS6XAn?N^|1)3#V;*x+J*ybdNohKntppGHMwwl*&lH(rPqwHK2lD@$dJ}Bb zNUu>@NK}+JbRBE%JyMN+`k(M!X)WvgNxb%iiP68wHg8|rpcXOp@xNe1)tT15YCJ6_ zg3?b$EAsu>Pp%Fbkq?P0Eisxci&(m2=(Wx)(Vt9HXZPQy$|iG1)6H7VBrTNg7+%Jb zh=2LRH7D*)y=7jv3dda`u3F)MvW|fPBCDibw91;6sEp8=rFpIOfFcvKO7Eg}gdRR)qaS!_16_gAKdV20Wy03l%k3^U9Z>N%H@{HXxuLx5JOJc& zUWquB*}ur+GI%+ruL-FWT$*9R^334_kV~l z4`zzgbU=_>Ue3?Qw|DIz?ww5$9Pzu4X;xw2*$^~MQD17lhJiud&WQmC1yLYWIyom8 zAiD&WJ1Cr>Uim|!HNa-^okQfTKwdq#fSN^qfNBh_(cJy-;>@mlL&H@Y41*qtZc$5& z^=EY3&_?eE5sc@sph&{smjw+=bR*t)mKqnp-!VKKX4URA4(@r$U<#gP0a12c`Qp*-^%J6r|qnEGP@AyK9CgXHh^oa zz`lHR0jVKU{y6${Ea@}vP8$Juh0+CF%fp@~3g#rP-)%hq!)epNieeR$SMYB3t%Nn6 z0sa!WE)wOar+=~tn^ZjvOMwRdW!N|mpo!CY-DifhZ~rwAG~@mmDpu_O+%o1$@ZQ7f z0q`vLwIEiiXOkFt?0#iXJmSU+!w+tgl+^HDr^%Aj-A;Z@FQ{ZT9I*X?_IQ@^Fq2pzmKt*v}k{&9nVhMb@i6dj&L zXC=#&yZ0X^cO@~$f9XB{dtPE~XBlTd9ymJx;sh~NUGdR^8k5zF;^#l<%A>i;QwCSx zs*>+%FUaxdWhUBta@hI(RI_$`_~$#jRHxkSGu3}dGXlF*b3*5FR{U(%3BS(^s(-EU n1krz}$Dd#Lf9f&&=YC)KwR5G4ywYU~eyJSPP)gZ<`tSb$BCjVD literal 0 HcmV?d00001 diff --git a/workspaces/kiali/images/docs/EntityStep.png b/workspaces/kiali/images/docs/EntityStep.png new file mode 100644 index 0000000000000000000000000000000000000000..d9fe32f404280b792b1fd5487aa6a3d6ab9fd1ea GIT binary patch literal 114917 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 z zJ2|Ut8ntWev^cCag-{+Gw+TkhM%X0h&O~sRN|Jm721>>aAH^ zM$BqUj%1?FASE*X*S%g>!E0NZ=)Q-Y9XfX_j6yH>bn{EgP}G=F8~dDXr|k>tyJJ%ZD zU3TgE@peA=Hwng7?ahFpnQdmJr?SchUMqI>(s`j))%S4~&vH*adnK`zSI^cE@pDR_ zOlW46!KqA{;l9rdEO1kz!k6y4?E3Oz1Nb0wQ3#Y`-N6t&E9RkT&_{+&N?0>Rn5(|}M))YjQTj#;I z*Nh1v54{|>9m7Svp9lhptHuSM-#=v(w%`_D@kMuf{wyh*8RiC}HnWAV1ua{=4KF-Y zjLr(jXZhL8=dZ6Z2cS0w5>A`a?xXw$XUD*a!>C4L=uhs;;uJ+>G12HW3Sn5`SB|@$ zIyks5%%<5ke!wjde-fPIhysA4IH*>nm2Y{ zHV;RMIrqnNRHn@(?lV&e%uSN*;J%}gbrA>>WBt%N`<}QbSTLVd(`xItjmvv1u1OK9 z!W=$pnXjl!Eufks3yLU+z{LwsT@npRMn)_wM? z!38ic1BQqg*A9;+o?*U&jG2!kky6OIM-&>-0{*HO9OagSN zp~PAsGM_VS*kieFt9JLJu+g&fMao|l&8Wv!f->76gi<|F1=z0g@H)6?Zf7{nxSQ@S z!$Q}HpNUAQQMD$IXQ;%jzZ56Nhl^a9Meo<+%#kxGa5?8H`yzK{0_%xi4NmIvK3&$6 z8U{k9PA9lD&c&qz>d7#&IU!Nvtmmta&8NWg?2kj*u@_8Y{gu_7F2L~#WUP%5Kta~c zitwg)zY-x2qWF7#Zarx!)RbBenrQVGT4N10t5GzWd*n$gYv`Z?kz1dtm#krG&wHza zkg}E#vIJ+8E31kTrCx;nrQp}CJNCzS5M?U47 z(?x@Yw6e8Ww1$gmectj1k)~FI9c7K^L(PMtg>%7y%t3`%vdb*r?9(B2I5>H`7Btb$GXcgnxBliXF-k;xhN}!9IZI_e$jjVY;tSiBTx5gDYravMX*?#%>QsyY zV$Nl@Atk+7Qpt+~6D+ zgCeUy!c2RC8-+)X3~Z>_nJ;NMc^WZks-fRlzw}Zir|kz8Z02+Ew-&X$CHKC?fZVyD zrS?+Rmz9gJVP>$q+~v>{6e}2VMYVk~2vk4qz*r)_`ND=!qNg4Zg_DFti$O;D=Ns|s zm&B8z!ud({m(iXQx!y`bKmnxYUi?dm3iihX)#XlxQ`@6<{8YHhh9{so_w(54 z6`T$)TKEN3+zC~G!W-&%x#yCpRs^_n{jFrPTSs`m>@37yVCa?ZOI-BSu8R6n1_j@1 zL|dPK#F}%wcnOHUkx(0SM|Jz!`#1%$h_cgMSv#Y^|w|wl^aCOvBiu8Enc8P z?_rkc4exPch<_;`ChmTA2zSaf5sv;rA$*eaB2mRK2nUC6_~KUXvtlp25_Q)vw!VWfD<5ecZig6A4*UNPHYNmfVl> zZsE|h{yGB1S!ss57!^u6#5un<8QC$aSU5!yh_}Ec`!uj1q;iS2(v`)7D^{fp+MP?| zS&v~82{MersC^WMZM6O1*p*%8b0IQ-e~jW)5=J0@X(kH0q9(epfv+{GE7D~gS!4 zk|~GbUmP%dfa#cn?Sc$mCZ}{Sa{&WGNU8Om5Wvv(&M!E8{G2Af&!5ie{At!<25|O} zmRYOdq5GTa9N9NCM#Z_FFd_W=vVdbHmt#2`xQ8iw+JmUGPQGv%rC$NNfGao2M{~ZW zFu(6}X<7-=l4x4f2VWaqmt~(ucEP=xm$>0rWuQbA6^Q;0xK|r^8)NW9S#TRRop>`? z?h2S^~NvtRgF z%tXt2b3tupEnAKF$Z|V`G)LyvF;&2V4S(fj1{z8YFbwT=Tb$l-;8dXdyFG_?v&BsYQ+#NeEjf8ZfF6M9f z?@KboBQ zGY#rL)?*-$n->s-_C=RQ6xRH$atl{#*{a}oKV8Dpor062^Kxj)BwQ$~`g_Ob`Nfaw0jsY;U8%dO#TUeoqj+5;s+me zsKkdshbaoOOAV&0D24kTt;v12U8o=|e4pvN2|%elJIlgkK**WMwUWC z%0$M4GxA!?N%o?IiExoI)D_m;^m#W%@#N2M=8XMKQ_8`4euk}^sY6BU)gn*#SiW#N z4OR$b59_w&Fbm;IAv;DTVjo1`qkz+{fs9Kdq{#?jM)+6m26je@i?fvB(&8eNsM7u! zmYUf3J;!SLbg3ko0lDLbp&!DFJMpeBHEC31>(1ClyJ?wA4okDLSRNQUSC|r=?`JPjd#~rs-;C`ki?=dPx zJ5lFxFt_ZmYFr;gv&uvc{2;Cxh+%6Fmedgm6Q=;-PU0QEOT#wnN{tesN%K+DJ}wx0 zB0GCv_nOtLebfE&J1c^YfaO<8@PWxYz&7RK>p_uC7$chDK*TC^z&GOnRQ~lz^TPEz z(>#anty{B4zaxFuQp!j)xI6B7ti(zM9HnQ6<)=S~oQZjp;6h+3AFK&M?>#A$_O7wR z075P2*mGO#7vOjsiKcpTI}-is`{2&NFC!n0T5aQW!4pe^`>sLIWuMeUE|*(LiA3_E zo{;aoOL3wCtLAI}yQl30m6O}8)!WrRju7h8nl~q9}B8Tr4-o4jmnuR8A-6kkYXWe8tY%z_6R!Izh zu3~Su6zZOPMD_j1)14glCFoa|<)}5uVv*>}(mVuVqNemUFpJO^x?IG@<+Ae}FBEt< zf#8%#AjQAP75f}-1*?iC6U{Al5ztnpfeGqgN+eajyfL<4{l%2e|4@G#D#HpR1t1Om z>e`mm#u)^`!M*F1`&I9~`&Hh(_Z_54n`13D6S@shdnE$#ohPlhO1<}6bftwY5}Mqs zne6Yn-U*=AeO_Z*#Q(A5*-gZ6{gYyue+zzrx{lq4%JZf>G}DLu+tI|`)3+FNnFq+E z>kAMahtuEkcYYX@|4ulHsO-ryf)EKGEJa-O=Q(t)9d69zZ~QPoT25jwwd6YRrzcth zP0n?tiURQ5zeX`v(=kCg*+SR3tcIDZbvl+QNTYU)K*e%ZKnf z;PqJ-M!F+osn>1aUejvS(^uYNBQKNV*UtQATyPXB+7Y|9OLePX*CW*@ZmC;*xZz|6 zHs_l@vusvS{)2n+K@#ao)l4z7qrhFagStpEE5YJi)Hw;6Ti=e z46;3B*f?DopLPP}%r{$5I7K6L%5nF{dF{{yDaK=s=OOKMauFzLSw8=(t?-H9o*GcZ z4Ly8Q&X|f3nGWey2p8mqCYp*$-pWIs#T5x{jg^{S8$UXDIc5y7)0C_}!WEM97&$s={0i&E>h~(sHakx}ope;GN|Uxx{G)$O z0}TrUWW!aA=46hj;;97uQIV7@UO7G%c)mv$<}rh}OFUas zS)Ix|Sp$Qa7P{;T2iyDR10%FDZd^zI4(3&s!}lWDDgewa%xjl9{pqZ$enqw?4&n92 z^W`=g+6@njAQ2^4|3-4Is}NBPRgx?dxMQ_^ z?JoC>SzRxDi8$|vrh=Yr9`upyPrmxS7x=&}SA1gp8nb@LYJl51Z<=8z70aUjUF1OT zp=(}eE)GC-0ICfj0p&OxX+<*j2dJcjy#1%O4a0D=ybxUw)EQH-AZ`foF5HAqAxz`@ z;~PJCUTC~uj>>c#*S12rxg#no4i+$clr!PsLbEWP+ikR2o=o*A-V6 zM%CQ$0Fn$@#Mi>~-&s=t)x(?NUHE&JifSR=Mx}|Yn1N~VQeLF{Lzd5vMs5#U>Fblh ztgT!tA=in-Viu;sJn}z->1@f_fTP40n7t4Lzcemlc>3_|#^$(x-Qnzh>SOZ()PV?E zg`Nux(XGlRV;Ob6KwaGEUfmFK8iCW8!K`3l!n*q#V(+;2Xiu3WyFM&OXI3gX#OHEn zs?+%VMUw^{kvvEmKbVH*)q@b3fyZ*#Jj6uw#PbVg=gI}zqNc{it-8`c^Yf-TwW@mqy)PyIs-W2FU`LqJ{lL8|%*Dl-f>RSJ!aDzFX*e->vZSnci7G-wsJg zZ~A8W^o0zzm_LwFr+zor!N1gENzN$RC0lMuv(a2BRV41)t4WCwZoo^jPWV|AEkI)U z^-!wI@N(J4`(n$Q!Zzlrh3T2z^Ur5e7ZOpihv$Pt9oUo`U%ot+kmI>#u7gt73#L)n zkm78cB~h}nkdgE1KXlf!aC>h1n}KR@oqX!gMhwi+RPOPl^ zqN;=ffOJNf96R;cqT4)>OL47IcfoiTa%oiv@;(ogSvIyda8DRl#Lh%}UJ*u~(;b6;h8Lj5Y$C7`09OCe{t--&%TP7b%|Gm|c zLUO)ZD|aop)xH$O06aJU=D4+s92FN;kU>3xtUY2+HS=Z|B8~!1*i}-yw{L879}7GI zrr>`m8Gp<-QVZ-N2&KV2^AZBQ9Q=tIS_~P}2Wck`#ZV7=ZWMAY6TkU|H7;Vs|MJ>GY=JAUGO@GOaLm&5VhZk}7=wucjY1h9~NzuPwh#Bw? zGqufkNa@7Zuo(N>Z6Dk2=ZfW5$H?<;{|V@JwTPnVFUT6iDj z)JXL;_t(#<)^ITegWWzGu|DdbEge?hT)P2T%yIs_^wwsLmCdRtLMbHr zW5`>Hqv+R^Xwt}ZuI<^(Q7) z-qV!=L6Ut@R@M)LWPqhm1@z24Had_@JbSU%kMrjD^PNw7E9}FB2Y`Rnc<5=4QGmX0 z4zwJ{!FKKQLq8v#wo7f;MiAXwXZ<59>z8x`M8%3jGm7Q?33ZD~Xxv)oAMT#WrM z#?aRoFU@;O2dAoQnEJQJ{hdj)lA9by);2%sL@Rf*#&#_Ut5}WSx2}zob!<2mX+Y0E z!2=?;ILH0$G)o*xY7Zr_`NccqL~9Nc7}H+|RM;Pei& zzA?0iXr_$KSExWMZb@_tvbS7^DGI)UJp=bqeaybK6WBN*bbkKmek|`u^lu;r$SRlz zNNNZ=l6HGCFj^%XGb;-MOyqH&&MqdE&xbi3S3b5rZ5?#zJz~MViXoV>umFrusY|71 z9}lUMGb+!7Q%04a(Y4@-Cj^EpikQ4ZK3_KNbeTyVzQ-+F`98;V7(x`@<+m47NbkO4 z2XJx4=!n3smuM$niiU#xo}^1a-XGU8C48M@2~ymEa>^e*iV~MgvEB;*%6CIrH#mt= z-Jd%<|24Tb5syDL$J9<9<*jb~vB%O81O}){ZJ)T_p z!AEbH_wlKrKt>)`SJ11_0v@ERyKgz~vZ>T-Pc)FGVM+9Z6PTIKWz_jhFX}{T6Egi= zZ^A={xTnUBWL51WtmOTys&RYbCrKZ9%i4)A*lEyD9>c}8IhA(uGgW)F@1FqR8h~te zMb0|-SJZ$Nm2Po7(85g^&Q}p{SfEkn@XrdWTLSK49oABEm4;B`eV($amx}Q;7SVU3 z1lskGy}cg_EPmM;-sR0&P6g;Ev+C!!WY@=zmn9$0fa$!+=BLxvNe17Banonv5K~=P zt1r3r2=-H{0zHpLY5%)=#`FUS3Zn3^o+=g5O%lcY) z?(%GRxM04~x9V?`&U?RG?W#U0|B9TiBTVbLR@CqAB~x|jQFU5?9TUKRSv?lK=u#%) zf*NvHQCu8OZu>xLXbhF{pDp9g7I>D^R@Oeh)2Hh7D@n{*vqu%Ew!r0X3uetpa9KRXM)!H)|&PpxdXGP`xU1E_#=}t7BZlMQZW&_ zzsH@xTJ!Zv{ud(>Tek=3lYf1=xtD^^IfsVpX}Hcev|VEdZdc#Oj?ES?t(VZ2qRg1Q z7ayjFjQB-X`>jWEKSj>@PG_VW@2=Mptf_B&ZMi!$p3*HGm%CgM4v;avR~3TK-5+y8 zvRm!hpl%0n;e`{;R%kpd27!{)rS6?erxH)uewL!!Ce*ncT+g-d1hpX%pSTL$J8@=w zJm2dWBh#kz{lQ!N)PspQ?(rLC`sz5!{VNj@k4=)|v#W>=HNCc{c<+|jUauNLtCuhA zUCnN!|G@EW&Q`H$@xcP=^P+V%bHwq8mdT#>+Q+C=NQWwKHk<$PlIh&sn(18W3{02` zBWnKT(sO}(^@7uxgd4p9`C6=ZV06B5Tb{bdG-!N@OvzFs0UaUPgeiVMB&rt+7)KH< zvI>lHQN3={0C$z8wrWuLM>wM*mGf$JU#&e+xfjkbd`(^U7_J2m%gD%uuhFc$@-ah+tcgU-mH zl|JEh&=sV`v7(%+(PNEl0?~?^tXEmEakz4&-9E2a5C)ENRew^q!cjr#?6F_eGl)$a+T`SC1{!2@2 zIOB2$XW3zs>p2}jmh1cd=4ow4HJmj5bkX(e?n5QpHsWyUFbrAo)!0T~>u2#+l9qqc|KfA$ zJ=(q#)IVwmFvUP0pO8FOf0MXP0k&(qyM^h__T@k;V1uW>98oy=xnOTr83gZv&oNA2 z!7kqPpHVYYp=ZyrcWY7vlzx0a?kvok!sy^)Xn*kx-f$rFc&?~6v?@|m2JE?<#7VoI zkM&Svo~~-4ifYB-s6DxA&CfJ+A6?MkkC($aI!^-8-G3ClOJi|fq=#PdNjoughLVj?s4cQU6 zeY|ok9+jBeH$4qeCk>{r4l&>?=d0zeyqfZ&f5y2j2i9U<_$|+7w4LAl9+{}u73yX` zNL@4QORW2}7jk?U@n1AjFo5B=ncb_Rp^M^w#e}#$10jEXkL$gPn>D!;xB&&UQgsJum8gO5FP=+iI$9012h1$*QQ8XwdR?zl7Gq^ z)hyk@gVdBx+pJYJmXi>WxRB6dk+Igvlm-tq5CCnB{f_{QKJv)Ihq%{YDg>Ok$2)>L zWf+A#uD)}xsdjNvs5cGf@8RR7$F{>zkQJR>I|-z*KCCICU4{dM97IGDy-@>9^78% zC@4ht_}|2+2mx*A>QE+gV7A}br@dm%Vc}7k&%;c%J)ci~rXPkbUwI%%Qnb zCJ1wBK$)I1TS>dDc|Hyz{I)gYzL(CVFgU7?-v{`hKDKou)c791wn=}X^!=@^=@)jp z^4eaC-xYF=(a8J^5A-%TWsi5kzf;4asY1+tV`!Uh;LTmmMLs+g5IXKKOA@Em0P@+t zOWc(*O?dpKzY@K6Pe1DlIRn_J+AtkTgu<*ys?+8-HHDwsc@K$>9v%eYK8~5k^b~(( zlPE91V>-=>@)4~>qR+nkp-SjE)biu3O8@+D63=p_g_w!l9Ui1;4&-SpO3?Xn!WaUa zUgN1k5VsY)D1YnoG1C0~%p8#E?||mi9a_dJ4P02fOFeq9m3Qy*T;Tj(=HH~~>U${+ zfjp7c!&(s%giv$5?GXf`hn@G+ad^$nz>)|7 zG=!Dz#h}yykQ0qLvv_CB$*kSr@})m~1XGx#Wgpy}m|iG|;E?DG?oe#b-{fd$q4U%? z0(+x-_ioPiZt&w-&zm>Hc?ycR z^@e7Nq6%khQZAv;!W{QV(HQmLr3+CzTI&R@}Gxh4RnMWAys>%xLXv_DO0~=!jsJoFs zu00~)CoRx`?6&`Zc>3zNCd2l76cq`Hg?LAtvnMu*akihxq1CoSC_g8@TC z7$u|AF=@saNaxt^;r;&Jcc1N_?b-IkeP7qP&N!s)@7@JkDe_7^rJ@;}@CN(y7{HeX$kH6#jA|x}Z|>T@K3~tba5OSW zhrW)p7tD~$$p5?Ve?#>Vt;)v%(e&o$ngID;q<+;Dbx--na>O*w5SP38QiaR;7iez; zIh9H|9&O@9)~+ryq?Ps<8LiNC$?iufpQES~EnUpugX<#!{DZVqUYLGm{Dc|YTt>2o zucrNXx0l+rQp&Wvp><{3QW}lLgr~B@+NBSob3dsk5|0+ z<;Ebva4L^k$=pYX=@}j=gQK7xYd$N|w41#Pp3F7nH$Q|U;h}6GRZP z5RLfIR%^Zm^Ezs?FOL@ zPSFDP9*V88JA^FX_$B-a4Xkkw-->?j2Pp4$$pt*()!k+lY1UYHh$GN~V`qHfHK)!r zX3!dEZSwM_!OPuKABWAXvHcZ@44TV~v5WxW4<#b9O8dAW96@TzbK74poGs5$Up&uj z$kF0u78Qh(k<^|h&XDu|T=dVxM+n#R^<#e>Bb_{#hrJ3m2Irc3)Q(>V^h*Ubo+h(H z{l5TeaKg4rq>awgZ%+XLhh8X2$yiIx|1$(WI5w}I5HF*_zqh~$Rs|;?BZs(O|9&(~ zMLex`p6+_IyvH2NnOGt2UWjN?cZ>EQfoxj=T19W<{ed9Sk9dL3-e&eeq03weo4+O{kMG65 zoy|TD*AV91nYhL$?due+_+75(g+W1m5Zytx)J=JrV{U@k_*&J~l$fatPTdL?@5s&@ zgw&DGtbbl6BEl{NYKhkM@1jHm*jUKe8kGag1{G`Cu6Ogd5#4zxVS9OMG%!Xxo2z?q zAZaf%g*1CKXL*u|AVg`f@=j&3X3Aeu04BJevw)q!cp*%e4pczo&ERY}elthe&eupW z=x7mOKl++!Ra`GJ}L?JGV=Dh)ilFvHuEQAwuWich==YwN&|@Y3plqCqFi1 z(=96Jl!E{H*Wmc6@h9t#-EO7D!x}lHYeiC#%w^yJ1)yF~VSU{Z53NEzUU}1jVcLTe zkv5pN=bMgCatrX25c^~;yw26}BLZ;>X-|^U)Zynojv3Y?RaTS#WYAWk;6E$X`SPQN z;bT*%r&u`c>+;~DY*XWbLl3}bJ<}4zApL>)ESh`7O*9Os@#r+VGg-K;Ba(}q z%!+R)n6Xdq8v)(P9t*5$Pw%Qd{g1;UP~<_%^IFva5cE3l^ttkz<_kN%Mr)OaS%r~` zG|@_ZQJxch`-vV8izpS)n)<6rGG9Marz-$lxGkgk0UG_%nv6PkbUyA(x#IQU7|ALFT)NK)1 zel#P~tWQ?yzPrB-s|*OJUX#2KbzqUh@4MBbvA2${5|=VzT=UnAS+(MKI4#e%2A76k z2%fpKqpAjWKbw;IV+OqA?_S{OabbUbEkJqPAlfo+))k`sGX+&;dcV&)YP*z3^x@w^ zNc4kj7t5TO%aZIb@dc6AYe{~!i`fyz@*dY1CETtkhw=wCsuwa2ECd1o^Io?-CMjsw zBRMJO7JAoPw%5okOhi<>nvA6BUf#+e!$=B?^`mT;{Jo_&-_7op=b)|;F-P7>V`eMV z-pnd%HAL;e=yHEPoc{B9+lQg8&4Edr674Y`3rXXjqGK^`ab(0x``p9By-`{hzepq` z84pfJN;<^mXEtBDMNDL^s=b^2wY-=w@_>7qIgDElj|tjxbH85C`DvI*Bq!G#H(e*< z{!Qu*VBe?W3%=^Zs0-L}KPdG;MoG6TdrbbL+#b7gt>5l%xs~{r;p76iXNB?I>eA&~ zg@3At_CoVClpoukQF7{2H$1U&g5YJ?30Hp!c*e`nTx83)m_F6vN%j!Q6yX6CX)cCj zDkunqpH?Gbj5;DrU77?UbNa|w9OV?@FPOf(rf2{C$z7r`)v@mLJ3mgrs4LZ}`v*VD z4s#KV1J|Q(m2p0A`q>jz>~w(TbhicEEDS1<_a@K3Pjl#^8Lh)y$eXw3*_>Hh*Nwhj z%Z3f;|E>^!j})l2KBk-%D+oMBAmpoWJ>^kVKHSXIbE~Ff@2Nm8e?%@{t*ymLyE^aO zbTsS?VT0sq2XE-;GrCP5z?fdWGzsLq5|0(+}sBY`T7T-+?B#mhN&O2B|Mi`lccXC5$%;YRTF<^HLc%!e zwUqenXgg*@GEh?PbiC@{4dUYEW{=-e!TTo-##uQs%$|!T`OC7;SiUaj2Hah*Ik}t6 z()zG~@a{P*URqt}@n(%inf1@})n=6E)vTG3Bq)lyEkpwt>qnPJN&he@ZXsq`OXgt( zODN+N*%zXj^|`-+5Dx74-?2k0n<1;}(O`KfI?B3JmTH`?J=$pp{-t31f+x~k<^h1= ztkD@w`ChVJMCS0VdBa{s>sgO3U#^>@|9JR+^;HNY;@>9^UBVb=o7_m99JKpEA-Jz zrT}E76Zpqnke8U2cV}Q3`OlZ~^AY8*fJy@TC=&1QwW_Nl=|hw1zZi{ur@hV}J^kUj zeSG$Z&TMXXWk9d_JByTCTHfpOTXO4BKE~8IFMF>U?=B_!3x9m=0@srRZGz+Vll>-n8}O%m z9Uj2V_!W=>V?rN}`w_87?m$cV1dJ+|fyIyrGRx*n@~$ZxFu*(V)9B&!$D2I$sKI-0 zIu%<2bs26i#di1h5AV02^7m76*2~|fZ?q_v#q9=y4g=TjJ)oZdrru#xhOTVUNS5ma z=9=Qp5i`wvFCb9qdb4ALS zt@347NUI-MMT74{dn&UE`9Ak6695q^^*4HoK*MIr(LshGL)Xn-tY~FP^n7SnF4>x1 z25eyk;vKSZ=EF%9{^V}0BDeHg?Q;6JJ^@WDfCsb)TIRh=?C)C=-ZJd@Jj*ldB&J({ zJr|LF(A);7Z} z(1+kaKw0)+w+DB;grKuR%$U_6V!`MibJOUq?MZnX?2^FWnra2qk5GC+yq!0_9R1*S zJFA9Sv-J-Kj=b%J%ahBnn!lNdoUXhunC@hJ$vxjH)iSX^T}0*Q2d}y#H8#S|zJ7Z* zjlS#V_|u3GKs^ts`b$&9pG(&eYW#$ZjX`bp{(cH3x5eVTw+-}qoG+%%M?Ld}M+%J}_`?bYj_kx}0MV!;TInm4?bo>H`KxSmvS*KI_Gt+b=xQ=uc= zm6<=H(4k-f!r|Si&W^i$^M2Qf&axy)AM6a4x;7re3B-t&te`u&|Y5emiW_0I3kqj#Od7dkIee>3+z_Ri7i0cQ{{v) zXtu74Z@G`bZ$AQ>U4@u{rlUTB@1O6B{_ncxXHXMFbQ-pR4z!fP#W7foGeJLIAIJ}` zz5qz!eHVTBU>SSyjZT*HxLF ziYd%rpZz&ne_tK9tca5#x~jjt@4JHL0H-1$JwV7k3`?`+?)>Y=FzO%JNo3Kd4dkph z@QX~WBEcQ6v$nrH^HOnllnNakN>`oWO3`Gq=vU!yR)}Dd(JypN)BKBN?-xAjCf8aj zLR$#vDlq{~LA))CxmWI%-QR0*k|T510n;U5#9jPsU7&4b$wgKo#@L0n40=rCp*>Ti zEe{~3Yk;eogp3+CHMMNzVDIqZu9-LqBmN#5g#9ylphMu|c+BNrjUW04EW0yb(cn&K&=55M z>cMDFu5h`YILkl$blk)*U;PmRTK1nZ9P%w@e_`pdftweBRrr7<mlHZ&cG;e|fr2 z-;y%j+5zagM(t`vgMY5g{mZ1 zC3oqftW+Pzb9{Shn$IOxhF-pQGrCjLBR4gvrPV&5uuji8*F*#tbQY9>B~RyKWy5n} zjz4W*6sB0ieicT3cRh5323jh%g*GLkObD`g_8b36^sDMihymFi&T zMg4t;A-};qd&mm8`NFYF!)MIq_#|NQh>^T|qkxkGfawI*G++W~&H-bNhy#_3NZ z4be#G%-hOb=nLO=KucuuLduT-grgjO5SMSu!}{$G5x{0jT(L?NfKl_=AG}1n$iC-g z){!Df7w*{ld~bplo*1d*8oa~ypV!%2p=S$W(r3A$Hp8T211zW!Tq)aK7pI;J@@l2Z z*4J5dWKJ$~^>jQ?W*@Rn3n!f-<*SI-74b;RB(k zq+`LNqk)W}w4Rw%)E|JHXJZUr`1V}9pw9&m^OX79uRF*GLzjLykp$!2|V zR2KDbqNr1OeKYosE#UcI`S4QG^T+qBMKs{H_76K$)w%GM5c|9K9Jz>gaM(IJ!p<;| zyPuH2XZOefq4}2gX0&grL4NI(PTsbVo*Z@`R080sAzUW=+dXA>$1L@_9-LY5f=7-$*UzoYLduVCy z-R&T|b)D?SeX(1Gg%2K)Vj>Pa&zev1i4B=3**1syt>NwGH5^$8i3ZS`bOSm&JsTMe zN1v!`sGRLKNo?YAW-C6ehgF?2RTA>%%z9emq6bkDmkgu{N+ilu&CMH=eh@BdsRJpV zE_!B6%8vVNp}^(kH0(G7Ybz{YF)-lMU+4t08*AjBuK2w(tB|-Ta$-hZ}@bI ztW&}E$10xGNC*DCi;`cy<%aGwI_~(VKDLuaBi7qn9Zqr(Cof;dY911@a(WL>ve_fB zP_>#lUD2~XK1zIxf8a}fVIZmUerPEnD4Q3L2(|K~>U~38WUY2TA*ISNa zxo6f;%6e@0=Nrpno!v4kxLx{p-QR&fECDEYF(|a`_d0l%CHC4^JD3!lJNyWO6y}{2 zRRz=d-D96^Oa>X3V}iN8g7mE{#>>cOZB9bd&W@)OR>UnlGouQM(+b~mmcIC>O(pg5 zZ2}wfhx|#Fe>`_7%7>OQ-dS&oEAT$g?lTLB1a?{+_H}>D8ZF8XJuYNS77e5rJV75u zVKdL9UhsPo%)OYqg`tOaH6d$9t;J`-%hM8*-a>9*^A%n2=ANg4e}~k_Tz<%Jjl|Py z7|u6zZG&O>lwNau?%B*T*m1dnFyhj%t&0~@#twAKRfRt2-7L!79$_8sP#|2)9UmOm z1ehj%t-w89j+OLEJ^!UA*(_&eX^n(k6%69!3|TvmfjFaFiIRxR)55@TFlJ5K-lXFpaOEY@{Bg+c^r@DgP-mBL{Dp$BlQg1lT9qE+( zEq%%yV2yyi#`#R+55-i*>T+{NF^7}kB%2!qSmF3G_VUOX5hRyb%Yq2I?DQE;mN)3M zMLZ2=Ii(A!Qxlg01fCd7o1-JlPQ1JWAOpiuD2$%saCP zP|cU-DuM31oj&WVtYB}8f_UHrMS(}kl)*S^bCYJLj%xfY-r30mS<2$8=Bxa+MEbX@ zc-W+8M`Q5&pX)!n8vLeeCJXj0we^C`hW1&e7g@df=ahqQRib{*_Kuntm(_(wIROzZ zF~*_JuSLb9%B;XgT7FZsvsGsmskt&gQ=QxeaTb!KsPUI^dd z^vZMgwgEw5-nQJ64p2SDt|*^>V67t7O0ymlT*l2a{$as~d*9zvO3vG${Bvh#r1i|D z17oBNKa{)O(jYap!U&WaXrNyXt2C!!scGkjnnyBVkP-5iC(B4oX9A6GMUBO8oSW0( zv*ZmK{)&)yQ#)Jc;CJbhq4T0_gkgKRVr!)VMJ&ipUrBiLC-|YNF^lES!GL+Qi+e71 zk<4yCNMQ8LZqFe@Nj)9ED+5J}UGCrU0Ndp{lw(}O(MKUxUie<$YAx|FcZk~Iq!^>Q zQB8S$wJqC=#!q$$Qxq(vts)*%g~(9Tl0W;MbNdUPDgakY<=3PW6`oVpH>ZR|YQEgiFCfk{qrEhn zU+^~z*OauRyF7Z_;d?&q^KP8>P;T#bT#G;K8Ok^OI$u@b4#uIavZAKUguL^TSc5Q2 z<@3`B{#_$1%tFHqiVc@X8W2?}Z*8s}qfNri4TomDT)wrHdZyDa2)vB1sgUDl+Zk{waqL;UbB4!;fe-GX11_11Ku*g!7O=C$pu;L2d*{7>_k?Q9 zp!;mH!aFyA2dv*w8H418s>{QUL>Oh?y;%`!W2EwC%zaXyRk~})-v1^E#7G7<8GT=$ zT^?%*M#YgFrq9Zc0&`Jpc}2u$tWRhYUE%k0HMlk;W{p2UO^e_3dvWuy?Y>g3_r)%n zFp%4j^P+}A$i zTAf4HBiK79Mtg{DMlbrKI1mcXE^^eoaa<0sVH|0N#m(Zf_+IoO5GeJWTBr;D>jen< zQA5o4TUQ_2H@ONDO0W5v#-Lj|z8tmv7kgnksG6!Xe_H3;X(fR_vz8Uy7hzn0h7EZE z%%x9l6Fa7vFrG;mgYd&-03m$AG-a;=X-BB_98|LKB*;qb%&5S;_eiBePu>_n{I)e7 z-KE&9@^LxXny=O?e|c@vSwd9R?c~s<6tURT7I6@01@y9rU8wM3+mBG239|NFiH%bO7qi zLi%7lKw$Hfosb4nvBGyEdtI${RVvGSpmlY)*_VRP&wtVu28S zxGq5`qP1!>e{VrVqF84u;!rQ&_jFt&1F>pYLk2a)%Qc;;R?MSbowvOjw|mh=`E{7% zzJ|0(WKo6^My06}YoJpGi{DkE@w@2rCZue8m*cJSa6cZ~bH2pUik@>*^j2jj>X2-*ru$#y$78jg#83YPi>tRk@J6eCnT%^}t+M zZaAN|_K7_}Vq$-q2U0{c_l^!L_X|~$~_1P9lbBh zTCb28__>B;?l4Hov=vcs4LDlksld{C6h+{RS4cbcEXn@4W;Yj0y1la1Fe6Utu}t}3 zV;l)15Fq4g$}dBj&SvSFj#@jNW*9hJMo5zlM7$H`s6?HQqmLWkUn<-*o%deKhGL5z z?u=BgR@9pwO$dYouw1ls!C9Vgu27Kl}IRqPs*uDJ;`i)D%+&@t{FFMV!W6;EopCPiW7WOHr0c2t=gwg>z=jjhV#5w; zetu?0r>Q7uc~yF9ji^CUAN|gciSENkP*Ioe?d)t}4>gT?>3+|CN*=EuQTu<|lZN`v zz?7;&pC+2(;Y`i}#&F@cZ2J-vaU1g5cf^{U4^JCQFyF;@W>Kp_@PJbai;yL!L`;)( zGuBqVU3#${wf*d&aow7CA4HkIiZ=j9(8Epl=Iwn9okNR{do^hPIn|R+ zszU~3+ygA4q8#fAj_IV29DKL#xs^rnVV5p0QSplEb*?enjr`B2^B%gz=pWuTNjnmg zcnw3{ywCOKLu0*FxaP^gy4cdvexvQKCmx$~?!9vAfN9CBPJUW-xo?g$hpWb!HJ7#f z2~2_+$}W>RN(sMq1DAv3r#2m|^ye2sO!$KS_3J%|2Q#dBxR1uO^8i1z_ZbO{sKSDp z7GvUKrjj+Vuk(6R>YQX)UPiOK5&oM_#=mrzCJ&qxU%-Kc(9T2epLTb$q*Ou>aXR0t zG|s0z#@fJymsLSF)3!sCgtCFqJEprc<9p1mu_*Tttk_zHqQzF|zmoOIMx3@p3~{`? zCV=jnHxaQZPjQ5I;o^M8g?!{_?ONHRCq-@f=ETpmwDCd(EBpfBbmZUU66cj7y3)Y6 zVYmQ~CSP8QGL0I%-p6L&xb`gt;B_5m+-|;eu>uj=uY4$E9)bYt{2u9Y{sXh9AjlZu zpT&-Y!Y-Q(FV>C&@zPYjbMeaR@``xy!x}kd)}pD7^Cp*5?hs(-s2$y~2Xi^adl}%@ zm)UAcjzXMGX9#qeqc@WbRot}%|GBTiCLwHo6GcL~Hu`}$_WjtlR}B86x*hPmX2bo< zokcGc$X3#ttZj+*%@F;+LMXy-zz z!P&ILb_^zRJ-);q+f(G>V1cOa75&QcfE^y|VFiEt!c8uB?m|wOH?jF-S+5>rBXhZy zg!!qX((R!?AY(%tf$7K9Ah)YIo!-L>%4#7RMV>R8~5w+h{?JwbY!6rUz z04|TRcftLEh+!IXr@q8Ug9T<9acms{gaYT;I<-5?y^g0_9Avu6Pp7b7^2#^ST0zs5 zYV?&k{`-d+o`~P3-pCNs(-T(aGTX9f$^<2zshCR)_v)F0?!HZ{j4sTqZDL;aa?^6{ zXk!uU9*r^eo$ex*S`YHG&lbwup_mQk#`uoCp7h8Jt*e$=6g?~}PqU_Xc6A$Vm2aug zJHk}0TNWa7f^_Vp=*ch#9)y}B(V|>@Mx1)@SEu9i$t4%9Z?ohp`Nr{08z#|Qx6>-h z>pc(4s^b|T9s1rS$h?Gn5e+I5EwvJ}V4_op>75Esu#u&oJpy9WPurv@WS5m>?bK;A z!xCJ5Bt0{y0BzeS{N9<++}ZSs;MXosnUa^t|}x@Q+aJYL1U zd?=eOY0DeNAhp<>%X!+INlvN~9ew&z4EhnlIha4i zG=AoNzM)mj5^vIiI-Y|y<|a=)mGSZ4EH!FPtjQSMEwC~h!!yc8U! z4usa%u#nWJTA(7v-Z;bWMFs+>1Nk}FM%AZjs=7ZkG_Vy+ZiV%hqZ@uY^K2spQf!C%{X(!?*RmPInqR=eQ5@q@CHbCHs0J zS4C`lAI6CTy?3xx3Gke8!vxHw*Qw6pc6(Uw9hl=%N~2Y$FTyuuDUp@-H+|1nai2%@ z`Yy`QHp$8sQZeg0y$Z&@UTfI=ShV0P43vjc38$ZR9FRE`NV~^pg-5FW%J+0x(qL zVrnP0yH#M&%%Tc*uiHSvvn7yONWHpVxQZ}e5$HBG4GiO;n>7!m$ZuXZCG1@{pxUYd zibDs~!a?BA4jkM*rGF6t!gKpWR)>9VWsRXoA0p!xPn>M&JZTH$5>2mRX{4I+vn z5DKc-%qI_07o{neOCF>~4F7vGBPX>+C!bv!yC7$A#A^Ct)-FW~wO}jUOQGn%Bw`7S z-%*T@0Dp*?)djw0h5QzIjy3hAR^)xn5#OxjPs^?+XP)4mDeo6XF;nct=MT`S<3t4)8J7t)Q&^GbZ>ttZ-{TRMBC0^ z=>AFcl6EYvDgjqhoUed)4q9J*(!{K~xQ}rh&wd9JxOXp9wN381w zR^0mjg4cxX^CvQsv_Hk^Q#;A8##<-5E{Dby;PS$`q9S|w>>0yi%VQXdo}7f255rJ- z6=U_3%r!K}r@b{m*>4V2mYWOU&-G}Q;fFYLbFaK_T_L|gAN`%gi#MFQ$nD1pDOn@b z<#^yYyIQrsqE;wel)2~Lz<{NYy_>I(uy*XBhLOrN3PWaxX&hblp4)g|&MyD~{Ra$v zIyStjMoF!#DCqvGwq;Wrp&mLr`y9=XW(c~r+?qPni9l4)=4!P)q;gzci_19P7IvG5 zDtr33Im~TSbZY}_N0nUer;Cjjl+o6?Q8^_kbJJG_*ByOfd~tili~6Dl>z{7I8LQi$6tv41_KDtMvG zBg4K>76Iw;j|zR<49!jg&7`UZNsQ4ycs@$suj%lGX@S7b%2q)Cv~78&KX&$tu|Yz{ zC1JkY5fsI>+evw!yQAyy5u*#Ldaa0xvkb=6p!Q%(S@Uuhy(Eo!oyd)Hx);KYTU+ z7=p7lQYsox&$nno+D)_R%I5AQ0Y~}l>L|&wU(ThTBzNi>z{CW0ah5i=f6FJJ&~ci+ zmvyek-gB096JmNjY0MA#?n;TuIR*XL@it(3`S-eJ9?r+AgS!G?k@e~kyxv-)=UE%B z;~Qbb8<*Rl{^^^V>0eRoW)qY>d#$uTKTg@>+?EFS) zIX^5hrQFzfIo2^=IWl&KiQ2Z;0v0vzz5SWeq4qUW+RD#73If^2vN5!i7O%eORlca# z1^uN_48k~{Q!C=zV2Y!viPm;Xptrq{U7R$;_u;G@SMl;Rk7b?xk7q7yJtK0kO224X z>wM{FiiU5Bt$j1%b4r-~>|yG9VyiTJCl&zISf#qv_YV6pS|~i}Xv&LPxPU(wVFYz5 zhrJAgj|61h2)2xo>fP);cbZu0c})ymM<$Y9|D)beQpi&@F^TFG_mxgc zq)WF-OE2-A(iF6dEk0B*5_PGInqx<4MmKI- z+}u^wahf_y&_%5cJi$&>OPiR50Oj}`4fi6eHfNUZWnSEvp(|evz#E2?yR7(lA-&*r z==Zm}^uC`1YnkoAP@d`bj5XVpZFVtpdB(yIV%RHc>Fash#+y0Qe7J5^UHanO^5;?8 zu~vE?x|a~afiJa{ zS;Cx2pb^?9-Ga&DmK4Bsc`&9hA%S83xjSx>g0UN!OTG87Qxo%M5}w`n{r5^#N;alEg z>EX|7>!%FsimFt1c?x#h`=;&}51$@Ow4Ev}F2xh&O_@$BB6IS5zZK23>UEpCQ+=*_QYcnK@-1WbSF-Q^E$Vt8 z7OkNKCEo_Nznk97u9?b-SvP4F?QQ%9YPU3VUAS(4{xml~@dnz40*a{*-JY`Fd;&O0K02zS4 zCPCn?b_J5IRXRDgWV^&zIHj+4D?M7MKxT3ms^t@Rrf;w=irzR~Er9pbqR2eqDQl-@ za)WlV<%JpBq(xHK1=5~E8O~eSx#-DMlRo7oObE&4v-5bqmzX@wvp|YiFplqL0gH^2 zMk)aMgHbwy4~mIC@VB4d6=Al>CV)h9c_ALh!Mbre8O~CH>SM0GoOc|IpABlOLqq19 zWz}TD#f5Vz0%_I7l$^wElb+47$fnMFmsz=a7(gH{TDAqI!8lDLQt?OO)bG9>m+zA| zR|b;+H~O3ieU!2X&d{xbs!H-`iMt(}hshLH=+D0?n=)e`Y3}9|U_Er*KcC!m0h|B2 z@iXw>j;Ca)He$|km8AxNKl&zyhW|j_p_+}43k9;=7>DKVkZ5+JPOtY-N!P1*Q5CON z8z1fZP877+nfR7a3~nE^`qG_eWHv%ubw0iw!IVEDu}ip4sph+GaIs%jJkA9&X6TT+ zjIS&76ZD(lm}GXE^(fd{TeRzS755nyC4LcbySH~*8YS&oB`RW%8_@o;V5vi8*NAGE zT{unB>_`R)vbT9zk`|L2OuyQ4M7K6)nlG^C3IV9x!wHl{+kMFvb^Oc)xyk|_kYQ;$ z4R$^}r>+;$R=vfRm4XE14=~jC&nWodpuAFFQKLo^v8U_I+DP|{XKlI0iM~Eov6GUo zVSnFnVy5Kl^)jOR2NV&&qKc4dTpGgXM7Jq~!T%^r-p>H6-&sNNu$QyRBSD*d7(Eh*R_f5lFwSLYSD<*wCQYgFpG4&ZBNpBXC%xU zT={dmkuMr#kpN#i5{IGqbgDlRlPsWSW;VQKKd=l+u5qd?N`Fp*^l&Cimqou6XDFK0 zbkO78yzxxOiC)Q0J$^&DK9mww#|poDmrzog4ATb*y=lgirGKOo7~M;GD|G?WP7-dX z`K=F3pL4xB zXY0P-FFAV|XkhrC@$BEBOUsaf$w98{1vmcl4o=7J%eGQD2p4Dg*2ng@Y}vr1QwF|^ z-cgLS?gM2AYv{R;vqJ~jYXC81E6a~xsO_aw&uS^4u)Ucq5@a$LQfacPcHXI@gGN4{I@CA@GWhDmuUhDKk| znEmnP!8FI{sh&4pqg&nILS+2@>^=;&X<))WE(nOotgxJqNiTq$CU~5>u0l%bTU7YD zB4;}JL-3y}gK`eOA{1N=3iN~ML*H>h@3diakZ-l?VQ0kGnojY~R44n*uGI3^6W=Mw z%~_-)3gisL%F9Y?Ll!m|W>|fx((e1MKE!)`=lH*p<38u_G}&~2V5xwRM%j5b#0x%# zG@%(56j+{qBBwXpyUpwgeK>P$}i3N#K(!a_maud_&s*W zgAeN4pLwIto;gZf3GF2X5Qv+S>z1d&b0o)~oCg}~dd(aeJtJ_DM2!%ysxWW+xA~`_ z`dn3UCC}<~ibP!UTPcY2b&=oZwPwY*xvxiw<<&q%Fv$-Y_~hPnda-wtm;ni`I7`a= z63pFuM5h$Q)4pI}03g{o^Bc|BlMH7V^^r%T@~;?qc~xN7)rYs%>Kc}mw|&xunBqIM`CXzj70Xr?fAyvS=UWWe%UjYCkZIPO< z(Dq6zsb)&^E)7cMaWDIwhGlwvUWSsRO0~;|*LwJ^Elq~Bo_2n7`Jr5(#b9pSTf0k} zGtQ`Br0>y9rnJFp;*&3hGKD1e%kDC$ot8F?3N?Sy{WA*6P+Fm^(=W=l^=4YI%r0pg zc<1$mcuKQp0zU3E?`!vWHv8IrvWPL{h^R({LY^k5MeeGm6I-{L2`e-+0;TI@ASv`B z5S2KafYHNE;c(~+24xnA8jDfH9C0Wx*vL}eesAR9>5YX73eUiDgX6h!-DkDO)qD&l zO?EiC9do}x+#^93-a@I?WyL`m`dC(c`=}6$bNR6{iSFe4T{*dLk`cg|u2s!Y3s7Wp5GRI9yu-0i_0ZWeoU#*q8SzPSKp?u^= zIz126TxB!-15jYr?4P%&HIQ%?`$pxkXOe$40IdRJ%OGMp6C!oZ*OoO#kcazwd3?y* zU?pd7ZJOFlYx*lpm|0yJ4ggoZ=2B+Qswml9mEi`?3|Ad#>cOKAAwcok1n}slA#x=Z zpD6#6wNmRK+ujgAO9n$jKUbgBd(;+@*yK&ho*}44Btwab9d)nPJbUIo6^F<|(j>GZ zHfKYKS{F1jmoD^Bq*zhC_tj?XoVtkpe(KB2-=xmsxcSkuXZ?;`cDLM~G1O!1hcfK9 z=!eUuBpzbg2jg)rQ1vN^%-C7=)F2r^GzapIQ6@U~ka@POIGdMkKAECE39@#KBj z_m*5IwoJWSKjaFSOfymPQ+I_vWd#LCYBrDe2R^M`K0RT%n~w-phmzbZROtb2Jbq&!wh28bMP3L&BRz(#Adt6vYa(aHNy{NBP?p8c9 zkH3bl5SH^+x!8%HA+6a>E3iy66QA3T`>oHWJG!03pUP?X*I}<>=m{=3oZWE2^ zK;@ltAMLm68tGY<$xTjjA18=yK0T`2a8fPnQASJN&y7>{<-UIf?pw?mZf?cA1lYp4 zI=<-DKXt}{|3L4Em#jqg@AP(WxYW$tlD9#i=oPws?eO<`;%@Srdg34<(BC4nb;r}b zAA@4cY{4W}`Rf|pu>o>2*`>VRkvjQMP|~Qczg&b98dGU66yHB*&?Yw#Y9rD@g|2gF z&*InbO$4oq_o^S9(Fwo#GkKgxFDyD<R^na%Vu)p$$=zV%V%zgE8dvm`8$=t-o%4KK|Nj zSE9rMCM%6(RXlzGp#6GEP!ddi|KDM1-wvsWz0~xw^|Silk~q;^8M_?&gR4rppvK5p zJYFY*Tv|k{;W-+q-0N7r4^@!YN;fgt-gSOw(NR7)*i=%dgS%F(C;9PeruD9_)5;Jz zm*`dn<^fj34sFx&^v~R@>d>)D-x4APA)ZNJi)c64h|lndRKx!et+%he|M^Hv=jB2qi@7pk=K<1GM}e9bu~2`4i#9N_nBld=Ro zISa~+$-*XL58GR?5xcf2_Fl4_P+a2pyxWO64tdu{*p{}a2b2ML3^XU1my^Yz(B~FK zEaCtElGz{2MG1fNY<-8*&-OCNpA^4Ex%OW#z_#IRfbR|Uy^rD+#ziTo7SZU=F*juE z^gP|a3e*ln;BIY^X6us^QVwcNUb9_`1^=YcbZK?@9H#uoyrRhH6Oj`STeSUtT6s17|l%oJo235YQ z=v}E&FieHn!^Q)R!>xZ_enST;6Qob~y8YraiWBR3UqwbyR17{SvtjbmvuI4VVd@r6 zP6kQO`N8}~is5Wh+0qrZR*+JBWUkRi;aJ$56|Gs2W|IfhHr8++%XIv)XgvJo;~?HQ zz6ig3>4;62Y80G5znJH2BVztI`R6mQnpvc2+Qig! z5=EsCh=8i)f6}L`9`Cu^_XNkoQ=JS4Xc7A#-(})TAYjK)HTpULx|RF*BxZM8Sk9@A zsV3%ew=Rm)jQY*W3$++vhx9Yi>)r-1_NxfEnz5Lo8Tnc=S#VssMwlVyDXVQMD9}@v zg28y;?=RkDiV{19$cV}sSl_p}Va_e*xv8P-r?|6!N9r;-??`JHPAZu~kpr6^%Zz)T zNx{I?rVeoxfm79ZxHH(LUnX!*9+`97)}{r>?6p|z0l?|_oaXk;{_oyCajMOmZSD*7xH8xp6v6C9p9F_ z(HR8p z^_z1@OmU(*&|8ePZJ01-3fHhrnM*ZsawvAJvl~iN2=G6rL+lqxq5viVvbm%ux?={>TxL{9YoA1|ht9*9tMCs@-16$d}$ z>U)j#_4R!gLHrQ4Jnc70PuO4T{CDFITc5*=>=BZa#ZLDh-OMsHGMpU}#wU zR&a(ZDCH5?f46;MpD&`)ZBhsz4&ZKbhrM>-XIM)K#%sWRHvaGN!FbmK+bd7EZ4Uwd zR1iAP2mIEqKQ+azqIe?Cm)if`jwt9eabeQ!gzK97{xY7e=JmWhPDh+wy8r$B!_Y5> zl*sVH8^EY&MQy)%E6Phv_S}@?f1hvnifUZdrvZz*$~385jF+FT|M#;WEZ%kG)L%E= za#~>i_vQ-SH6WLa;;j(J5qJK(B~j2QnB%YDr~LoD5utdCOZ&zcY0?;;|G#g(2!us< z+ttLWD{vxHeX2i`aaS zd-C}fB@_MrNx4DA!Ai20^Z5}jezHn?b8{0oJByjx%$n76@mmgJUTf;I2P2Bjy!(+4-ADc(YwsP7W&6jE-|dpL zC`l+$A&RnB!%7j#%BZZ2?7iDEL&#Q9*&&-$va+(06=m1 z^6g>>=QVp_KRpnm7wN>!%uADDJAU)Hdd`*IM`W(tzMV)xC-|&xf`x_Ul-0nM1H7i9 znv2bil$+Ndmg3T__&WBp@U&&$SIk7be=qE(lVjE?PFxixt`2m@c+-n$6h7SM-#*&- zC4e>EYEV(iuVwg~)RFM$dz-c!lm{N?AOE~N-Sp?#;g(F<>FMbZTnP&+Yx?aL?&BJH z%CHz;c?as~|N8uxhTrlHx6${g?((4CcU6Cuhs1AjShP9QL{q9Z-W%(%DD^B9L2=T9r9zk5flWloo$^t)R% zhn5GF3j7YY*$*a$oYMFEmaLilBi~`LU}dmiYOHX(VVNHj@)g?}&TaC8t?txm+p+8U zt1F8GjmeS51Hmlb`;jsZrZD6dgs-pQ0C-DR;h*MQI}*T z4ZEVi>5YHxz|^h(^VwzRf_h)yVE6LwFLri`iHRX1F7I27GvCh@aSVLiL|vJ>Q&!Hb%)_}B;`U6PeCm1N@=pEvaak%WWtTYhp`zMim&tyYF>yfe9L?vL%-Z7 z!3jSu(kbJxSgQP{?Q{t-(m?~>0wZ6Gz4jAPW0$Ytw7S^d7;f_;)@7-ao<`U)3zxe` zK_a;^{+e;Nn2+$no5TI@>SW68^4I*i=+EYd?^(9xSouZEy%ZNqAm9GpsiC&^1*Vgw{b*=t z4o!#gm_+DSM?WdBU`^VE-|s8Fl(a8@$XDitP6q9kCrRqLiq|rY8#e4! zi{klV`?8KVy5xXO81to&=pv8362%+S3*D($-`y-Ci)AG7X%&-SiV#%UtLd21QxVK) zWi+(1yeRF5a{j}v_rU4Xr(<1KR~DKZ-!o^nB;xg~)a2qC^og;t$NVm-s;eKDI;q~z zyl8%khe!HA@EcV1SN)Ra9DgpYmh!;tLD3Kq>rK)JwmeY{jL}5&EldOzBsh#@OC;w_ zxT8KC!5-ASl#s{?QqM37CNC__KI65YM@BEg?v?Od$GZHbiE_W_<;7XUA9;2mf_AC) zvm=Q@4l|Mm)_jqmce)a&Q^dB|i643s7Z*2G!Bu^0q&1t^Um3pcr|dzwSWK0`7=(Cv zxA`$@@&PwS@2{U9?@qU$HppKb$>mGj`{!!Ic6uLF38b1d*~wO^%DaQcyJp|Ros%ZH zyt^0zqPOkm?%O0XcgHwyTwLAu=Yx~g$CclT5-UC3sF}QFH*;T&1U=?&zu2od%#Jk7 zjdz~D@oD|^XuD=8_icGGF|orta?QIh%sUF_PgV&K_rab!#Ccrvy;_i_bN0jS^hu*m zqYl2FHNK1z1K+iL8gzoxU(L)|H`Ld^(JXLo&UdhR-JOw{IXIlz{_W{817=UIVlHFl>VE&95my_yNHUNH+TPt`TQ)Ay&K z<&BC}cx|vWH_pG%_j3BR$g&gyD`)PP$7#cFY);ehnwPSM+LuRcki)$Z4oPSyf~R?S z1|J`ZaI>8LgC|^TcOIbKwni#w_3;E z`-;YfpOM%4^;zm$#_emjW8b#rX(a1bhQuI=^`{3K>^tskx>-C~@vvoB5rtn>Rki-x zx4@~>4Gj(aD0UZn;%-nQ6|Wi^8b;IU=;$CbeaY*R0r^4w?r~7^ImeUn^Lt&E}tZv*JtApW{$^b^LV2?#Sxb2s+vF zAdbd2axYIAeoF}J#ZRAmhm?-~STklgGuqyM?1{cgAXaV1?&#YlCbIizw^du9lB}2b z^Klo{czJ0yub-;pE8pzhb0&23YsNNQ*ng3o4c=hLfrl|k(Cs%S`Ayr;$6T`L9f4+faPyT=U6Wr?md@Fz5 z3Co|487+U*Gd2_?UDy=TGW~6_Wojxu-tuj>x}W9zzL!?D-w*oEDyP0Hh*d8aX^q{x zCsFQ%<*kIOPVt$>^tzHGYBISZQOPSe&s1o=rWLrdYBx}`P^lTD-<_lG7d^-Uuv56m zoH%-}IxkUZld9$H^lK)k%6l%33fHU;RG3P4(XaV~CrKa9u-AR9F0g&hd_d^3Pkz=# zj=cAZP7X=~Ar{33#ZzWE1B2ClFY_xy1Pxq^>6(-Z9Q4Jy@`-O?<&v$XdhPSgs@+Kg z^CMrK({s9TuH?sV5B}rj^qZ~hhb)vX%B>1t<-Bw*Q)J5hu>NG#JxZ z&zI|bOIF94S%l`N%dwU(r&MvpaM>5#~2O?^3xmL%Td;7&H)CF#mdnCtd$X%OGQN_Ak$q{8pdd%1jQnw?G9X9%&_6l9@1JC1#3+$+Km>kmtZRE-9GRocZGI~H*=bnN!sDqSGA$zsd^Xb z@vw7^WFDp4bs?1w#LaOnzNBQSnOuxE)v|8x4kgl~))Td^d%sN!JEuVE-L@6># zeev2m%S!LkPP(AjP>#^n{$=ULk*|ZSnUa1iUs`jPrfL?3?z#B$b1Ehmj43Z0jMRD# zxDatOG57qW&v0vdf(VDL$jf<3vj6V$!B;m*Pmrh2uhq|A@qE1ce0xL=Ur$QV54G3v z@5d8DS}1(x^{F3j{HA1Mzxt?UMr_5Ytn6id{Xm^a(Cxs(l`2`PHqH~;mjra*uH+jS zHVCJ}_e)YgN5nNXd95d4 zUw@X3cIr#Z;PhjQlK!A-4mm>yBj*0z{nipI5z8f;np5NDl*0I!hZmFr9d@yo>_4q&aPogcA!1!(&J^qF>)a#( zF^)DDue%4OH8Q28zd1(ln_Ut!DJaMeBgk+`tEsamTt78K!>K0YX%MruuVNxqf!eiY%K5P4#BVS4VyD ze7yUJN=rse`=b*ihuf`LHT^9AEV1h;~^I6ji zViOf?a)oL{=(DZ>5>MFY0}rD~KD^O&N)}SZpLaR5bMwP@PO|=W4SnBWX8rT`BvGF; zuK)LcDg}j?QF>nT*5O(%lm6V;&y1>n-<0I;dyOCwqn1K{KGxOm>>mAN#nBw+;28p8h9_pByYap-uhJTOhTnKhE-6$pMwUO;y&1M9KcVr#1ua zJBw_!5VIarySDqSLp@fZ#P5MQTJA+Vs{Z*tQJNR)tT08_ZLUAGbKAlGgkJZcmO233(+*=L05aIV86{9Yb?2 z*Lv8meG~^k%yZnCj^$kfZ;p3fUWk41;w+sHg#PA`GZ+4|&ZVNfq66mHS2Q%(f9nqQ zU%y6)GB8M`vX%E61U@w-)el?8CnQ|NmVyL&X#a1{U8jD?R_=F$+B~=IWK;CV>nCnp ze|r5d_?DvHW}Mk-Y@I`rmlM zbuHPZv)c-v=%{d#GxoGwA4G_VZr?*syY0bQUza0f-n&lxUB9jeoj+4;db$1tdGM=! zb`@0&f4$?IzK&bGCm@;t6XJh$4Sz$Oujhcw=a-#f6G}$aS24uuOCMiD5|whV+LO*k z5Yj*Jix=_-s774fv~(^68B)}yt$IEif5W1Gq1H|W1|HvDyDmZ<`V#5uI({Pn*~q);?_d?6ez>!LxhiQ~;wt%?S|IF!xcDS_b#--OW?9mrx2nOST4?WMvb|>u zoR=xd9=roBd73Osg%^7r>1h|gToSp;Qi|I=pcCR!l%9OpP0XA6!-kPx>UW| z2liiI?L3o4Toh%lsSTy|O#Ak~ugSWsNagw3-i@35!0zq7-WR!wbL^*p)qxLcSAu56!)Zl4z3}CB}R42 z8GXM9sV7yn3VHz`)@=WWJL^;$0VR(RJN*0Wvgd@^aIG&X78(~p&A@QlTvnHJhBI0S zHKfh5?$Sxt`KdZt!>>_iLbz{-^i)SCH^eKoq%Ps!+ng7NX-?j}zXI;tm)#rTA=vo! zD??=U-e7L>bDbqVjc;!hcFiuPgCX8-%Q^kiQHah5iUCr}7|o8?qrOD)Nn|jlQ1%94B@I%%nahNCSb%0=_G%qj#fvuWzcbR3v-aw`pjBpsK0XyDZ<$$}$8Oa&6EZ(R0U0#Vq zBD*v6k6K$)F=F`4TlrYTL&ur?_q1LWEunTAHYNoi3JI;zVb<7bv8DZ6 z;dYUP-LismP{oSesrWcVsL2gxN7|ZGbv)=ChE8VVVAM=nq)R%weyOz~(dShIEzB;%+p(Q3x z|G_V$CobOWC7Jq(`huI9#)_$Bwmat{0Z!qT6IIg0Aq~F{Gj}JHLPCA6dvytsmeKfg zyUX0YZwV?dLGAlP43qk&mhNuY`p#+5+6$U&W~;f!p5v;~5Li@D!HK*d{_m%17Jq*1 zpK!Y+gFn?28q{D?uFR1z)4OctwIgl0={BPp+h|Tn;&LIpMp_Ry6Z%0v#Gb~XrZgQD z#WRDqs2{=sX=rX{iL5>%g4QqQ*Jxh!;O*vjQt(=!L08$+wPczEL7;we@SJvtH&g5% zhJU#0mg^}a$k)wpZ=9>`rMK(a*=F16MTq-MQU&vsCS=M2QSXqw1E>vhDk{Mv?-xf( zJ1Z+I2_2;#@@6oXo&l;-h_F)*cI=($&rb+@ z?PR#bL`l}KC$bofMsy0Pi*gXJpm@af^OAExgwu=)5?6d}G(KdZLQnW5gvY^e*Gw9| zr)VLuohL)vOFPGT)ph=fS=YQ{k4droIXO;4DJ54_RAQ0(=*3SH0s{jjO{X$ijO!9J zf6&+&L$8f{^X3VE&W8vtJ#QkuZa1H*4Caymq^s+H9hn59MEpk@HYOiUER{_fp)Xgp z?EGi7x)jRROE&C0%*0Ekog5P*M)(zbI5ZMC9Di=j>39P$O^?kHoQet!joDLLqbEX>g6Q*A#p#g?zONy z@FzWTZt|JkZrtYKa$;hSSn4g zT2V{uB_VnBM!IMa(ptJ!iTB-vf4V72lpCl-=sdhTB6%>_IDqx3<*F9+|F#HJl$0~T zB30X@7kON&Iosm(VSQK(e$f_He0b`B&KF9Enj*4>|13V~iNM-u(d|FSZ3*?YuUBL> zo50SqZ8nAo)?@8T3JQ#Mg74xt>jgYKdr(RqS9UlSU20+hCj|a^6UzO6zsD)<(j8tj zr!TZa+3%X1w`{qcsgJ^~Qk@17)Gr#Qi=-c7hDh<20rG!dew~MSxn+&m-u`C8WNF+VS z`Et!~giSWnVltT9zMM1ywcfMW3_Gho{;P=SRzK_qk5`8ADU{G!cm{H4%0yARCK8bV zO;gejKHHl*8G%cFxP_^qv}$n;8|+M+Y^1Pv!){4!Y`JQx_T%~*tK|oKHJ*(N{%~Hr z?KJoEkzX_noj!PT8Tk=^U6as*lV-mT8@6O5$~3O)OW`(d?X#pZ&oF5hM&G}xq$HqD zMbby02I@fE{?a=co1Lw4?h(cD($q|o_N3Pl_AH#YsUI5W4s+WHMnsR!7xTP-P6UKs z^lJ5w@Dj1Bv#YBv732b&@4Dapb@xry)~7uIf!7RrB6LFouVtuZXeb5iG-oEf%a>*? z&uM0>V=X#<{B*h6najJVKM2 zxsrhc-vc7e0d7RiEgv~_=+n{JI$4pOd-hm=yxp8*#frAVc=Dt#TsTrkZ?6Pgp8lq^ zBOgD0+^hC_v*?W*2jT7A82yn?x)^fmF|=`-7MM{cd)U<^)zoN@$VPl_YYXq_xDI2l z=n_wx_EQfZA3Yo(qoktxIW$yJ8zZe>8(l`l$Gr2eFW>TGOiUYOWo6aW)ZQwyJ-f(! zk-3hkA$DiQ;sIzfIC951blk7);G%!bQR+siAJO$w0!5 zAu=rBl8qzYes*?RG_@QJcpVkxiiD$!Z}=k3k$--;IX&JnQqyt#!A{!S-xBr#=$^;` zsJV}!IlTk2OmyuEdSoYA;t%^m6m>x&bxP$rz;s;T8zK<{k3iyoXZ zHuapRTzXYk=2u`g6?*RD^6Un*SmRN&_QT9@i``6#}4GVM?8?d>-XPx~=R+paFp zdUeB8+oPnUM1m>#;o-LZaZA+a|NcsnAbaBO=2oh+d;fmJ=shNNue?qknnd5`l5f$V zz|Lqx@z>VVTX&s1bf1v@DORN z%w}HyxE50aBzPXe1O`YM?(`8UHb`IFF*;g}jQsvie|JhsN-=FN2^1&h&6~~cT-;N` zEsfu~9cG5gZBPBZPKO$|$9$*Sxzo2?_v76S#hoyK(g2nK2hN{4vj%;j6O<*3ZFmm* zC?zY)6R7F3Y&DWUtD)6YRP+GIXA<3Z7bWHA5_%W%55I~$?8b}sj?c_+f7!EVPbx0b zd3jpN&(E*4s;ao8D@zs&snG_LT(YjK+>&4mC)y!KN^0VuAc zRa%bzIN*v>Ha1>Dk8h?^Q&-RK^cJuMp)s?u;TcfNwLXprSi^AQ#FH}rBa*o7 z{?DGdRqDRH6v{0)-{t?#pdqfJk%^1TpUFMdw@EBJ_ow-N5wmvAe09}5fQPX7{0Zuc>EF0nZ`t^~vTpN(6k(1w&Rny(EsVP`t z#NC6;OrAS;?o5reg~Cnj{P|O^$Lwj*$|@-fse3@2Swc)~pARle>ZQ0BX>4jryZ((_ zf_m<^xky?O=P3KpVSu?>-RW9}!Un zE8ES}Gg_}Y!g1{5rmXDjeJu#la)8h^o5{#-;`ib^_Anej?geT&iA?Pn8L4vH$$0eW z(GwZfA*Vg^9cCxcf%gw$1i-jn<+aR#yZ7#SU4PMrNL9ur66*=i-{yOU^Rj(}?XSo3 z`uBZk`OZ2z3KIWREi_B(BeIfJXuT-B1_KDC@Pv3xJ6sDVU%q%zT3UJ?(3zsz%iaAZ zC`y>1UF{903m3==R#yZHRu)+49mnqY2F~1^-MfE(IaZB!=7y~7wPXz;lDoUR?Lh2n z+A2Bs)gaJ*9h4%+h5pwS!Ca4WtOm`6A8n@x+Y%}^_n{M_%_#Z&8TF_T{4Z89F{Ci# z)2FkKbR1OGT>*N5dAFgRK5Q`1SzeeXr#aP^H~d#6O-XAqO2EEfjaLL}qJUu~YHE7o zI3Cr7<+MZ;eVGXl3X*Vk7G`H>r9%q88SzuBP^k*X(BO zG#?+IC!J99=DXPEaf~nQ-myazeL-YtY@K3!0CGA2#B>bUk*{8V@7}#7D0Tgf$@EQ4 zO$i$LH0~zKdKJ$;;>Nd-ks-M5w!5r`dwP-|br#an(%Q0p`=$?N{j2Z4>FDZC^n{ww zFe>}|`8^YI;Lgs@?&|I3g2AhpsQRF3X|+1zE%KNS;8{z!0vZXIW#45%At9BNn;YQq zebh}GhpV|`$BygkyDrde`cTeMPytn#n%jsvI5-%q_(gI%e8Ew3L_|k_{}xek@r?lW z&&*`VX?dS)qO)~{*uv$sV7Y78F69iPeORm>V94y~E8XWW(}2*0&H@mdh^Vw({)fCou)b54$eB~C~%F4cBbBnpd`g@uJ(w6tn*p1HZX zg-5UFn!KMcwx!**OP}sU|$X8>AC8eb;l#Rb7G>J7#g5^?wl*2w^ zh4t2d1QRhnd-m)zP8~ARWN&pZR^((x(8Y9`-Mb4hm0{P1A1cV(Hw)%|ZoIVQ$&($x zXP%E9Z9+!GC?#urH{vF7-)`1kFDdPvT2Ws95(twh1I0N+Ra}~^US|rW3*yE_OwX*b zT^!Ez>bNB-xfz2btDYa)zCJ%^w=`ZtY%%2~y2aU1pQ4*)ycF&xZ-Us>4LrXr0rJeb ztd6d(c@iFe>EcDtlLb94tBabPTwKq28HnAcnLe#wdmsBGclq)MG}>aMzp1%-PT%sj z1N=|f)pK~)OO|-;?={{1UcZjHa~%InE6z1L(BJ{dtz&rjlBg&N3oH(O+hut=Xgo_j z*SeSOT5ay=d&B6)^vp@48#iu0{J;cemi-(721tCzEZm6_& z?OLpHCz`Dmo=jB{F0gm|_U({Rx-T^8ojto2%@%`CcTi)0c6FUc3XhME8-0Jf#>U2G z?YecWI+};%&5%w*Kk`G73&32CRjJrxqxSdV*rlMRrbX4R^f(PI9IPMBdph`HE67qY%Hx9iH&Q<`@jzfTUAU5*bRgSFy4k*(m-U-JVy%4eFaF`- zUX{99-CqK9Hs~KGK!L&xcPZAW16+cXN&AMk8 zw%EDZ>+$2~U_shCI(*TQ2TtBRAIp)WRqT0kZFFpG?B|k_x{TW`@{5ijwVv0RK0uFq z#&5-<7*AD2CetGEWv%6KbHl+ol}uxGp#L+dF(p3qdMz2ZTOs@fy(^eJ#>a1k$rBLD zr=ceA_aR7uFloiD6hEV=+!mzRyqVX;4#?0jIlt#^Bx;#Ca9$A0HS~;5v$AYUvEQ(& zsvG@)0ULDW$PoxlqPK3nNlC=SlPAq-choK}D2?xzCZwUSod<^Duq(i|*T-G;z<3Y! zU~6k@7C5M>wKaRgnrVn)(XU>~D=WMC_-qHBruZ0o_wHJh=?{PuCqpZVmqkS}Xf2L+ zmhk3Vy6gIeCFncNHy57+(L*#*He}Y z1R?|l*n(`>^jywZBVx0B-xYiVMvjg?thEe`OO0{6LQQk?)D$Q5dTgWn(O?5RbVhP| z;V{&O6DZ?997cr@8j3%2NRP7Bs)Hhq2?&Iu0OpmKf z7yu5tVO4ffQFVWf05;i$hk9ZG_wC!qrujY$GPBZ`K?d`5{iakVV`F1v!p_~h6?#T5 zqIrG>20(s=hF*(pk4@6Kkiv?7c(qFSEG5ISV~;iR?fHy2_LUOSlP`A$OIX_^7ZX$W z-9faI?wU zn>TMhJE^r1YF+oe?ZSYi8+#LzyS!F`_>hUc&mYm<#7i!>UYn0xT{+8mNCx z=zSvrGLgcUfYma8*vHp=%(R>AIWI1bMU_2&e*F=dun(1$Ue`?W8?s8KCngT@^M|;( zZ3c%s5n2gw&^b6Ljma+(ui3BlFc4ortPy8^fuK&gQMmDu_b0#;jMWy}E&=A^v+qVm zYR2U4Ii$23Yzs^8=H37eR3}`NJDJT?t zj0+(Wuscu_zyKq47XmgoViP2wqVNLJlc2)cNSa*>q<5aX1NuX)uhZ7rifcqredH5o zX?BQRD<0BXevpSJv%-#3I-`zGQcxh=SfvD|qi@I8y!vcr@RO6l7mL;6z$Hb%99T0Q z#n$=--1zLav(>IQoCq#x!aD#%F~{dM43H;?Fi3;VW-SJE(r~(XZ4i@rqs; za3&xY#R2~FmX@df#ua&X7FwqaQK*p9z&`tCJ@$A!036aH3&2X(r0K~TaqkC4q};QI zW>ybv%GSZ*oLSEcKZT#DjW_YJ@&jPDUpIel7RU~)$kR?y9vd4w@hWa-HeJ)b=#wW; zia!CPT$t{$^flawla*_2dGNtPDpqy3&$G7Gk~ zz3CtH%57I6E&-Jqb45e$@u=ECL6J229^{yH3hmTh(wu z5{im@aF>Wl{7^v!M~-wzt{^~eMK?bd6&3a68Eubi4j5_;_4mJ*mS&M1Y(G>*LBe0K zn&+FFnVl5()78_1?%+|W%gDpCS5~&#qDt2OxPt4IF8(0@(2|e!mIL3C#7vh(m)%&* z@mzA2UvrP^XfIxReI{!4>b}G2O-5|0?@E>FPTpJ($gLKv1DsU?+V`Bd()j8|$r8_f zg(xBSQBtA80BxOsxFCO~HeA4l6a2ALx34}{L0mLNI*8p7E)FR{E!!_h!@lfb{vh}j zt$d+%e{IYc@7HYjhHlJ-o({}3YWj7;yphf=Ug0%GWyoo+o_V!Y?JaOAgU+d=rWb3O zn2gF>xM+AH!l`?UO$wG32l5~Z(xaWf0;j+K=#jvBTGn%AbRQl(cwqD+FBp!W=|KH4 z!r#%l26DDf#90s#3nsni%NE;+MD4gYsb9cS%O#a`Qj|ektRLKcsn=-pe*V&5U}Ffz zMm403`R*Xis(lRV?;ZIl+cU3j0QLa1+d@tr{r2q>4BplysS8|W-i=U#I{DPzTj(v| zO$p2lz_U&11`T(A)jUTJW1kN5E4UX@srx9_{QPHMAxVQslc&FoZvFiEvvK&HFshbX zueWZ*3*%wc`l-6@Zw@u?2ZdB?k>HZuNqKqj0#EGIH*b#O_O;n&QM6i9aZg-pqYIX2 z_CrldNbQgXydx+x=**@L7|4XcP!%q)n})_6^b`$z30#~)--(cB88`D|C>!lxLPmxH zjnb1|BmzUNa%sAkUc7km?8J?`DFu)!u3or2ezqcv&mR&Zzs*PmWTFGjDBb0^Guw38 zRwpA@2^EX9v@n>Q2ae-O%eTwF>@%@uP<1_1eFP^;#i}P&YH>b5CC~OGLK+x+9N#_p zdADrG&z~OwtIPMBn|$-n&L#}5i27f^VI2*U&udV_Hy?}3j}bypSz2a7>rSVg1%v)gN2>=39z9NWXYYUm zLNpLHFkp#SOuPwthNgWI#y6UqRoSAYg+(D4GZ>Fnx+>E3GyVYDO+b8DI-W-S@EHox zvyfFl@%Q87SqZU0BR}Np*UNZ^2iOMeBcq52J=h9fb^T(ypTEC?vBV$(;%85fI20H_ zA66v(_wUN+G+VZAtrL7{URYjT%_Be5>{3wr<;x*%?wOoRDe-Ff0cF`Q4u#eZAk8au zC$I7qm}+Q5_y#_j^rVa7-Q4t2V!KwhwrP5tAk1I_GQgAX?Cn)D$W2b>Aba~cfBqbz7))~8d(hV)wwAsS z^T>iV0`i^P<%EXu015?Y&^&y|IiMp*EC&G(x*LJwq?KW1l;>WS4l_ z%_4V}M3>$l+MiUpV{4t8-Garu@D`Lq_uQ@}+=Qjg3K3QBma~?%FU71#w*JvY=|Mu>1t_>hO^x zoxgsag}AuKqdU*)05szI`YT6e%&u`-$z6qb--}%>1{O!_Rs8a%CKa^|SV9s!bY*2l zXJc_%S{k2a-wwU1Fo25(_%50|^;=ImFWEx1-w35y@B>J>b=j~c8nUd=G$rLG8|ber zQzCyM(%(WS8ayF%8aA>+g2Qqn!0v9McYK0#ERWEGEat{;+`W7E8Ae)St6uG8<>2r^ zbpj!;+V`xYvNGoF+Z{GGvz()LscC6u=H}+q4T{Rj%FnOsSzB{6`)|R&N%QXV9XzL@ zK?m;K)zt;1S;p2j%hzg1t%W`F=~GImiNMt#Z>C)53}&CV;j!}CL7?RbrGpF%9WP84 z1O)|eq2R}44&Hovam%$t)zhjOMs{baXD26FxlEMtXJ?ZqmX+B8C#zcefBrP9 zviwRljr*rwQwu^p4#i8L;-$q&`1=B#;}Ae7X@4((?^a#T;64n>#P$nbz|ammRCFdL zrU#HEPQoX{fPzKYqP3M(;$_#Oh+k=fI#zLseUe|}2A;5*Czh3$Gcq$jMBKKvwLNxo zGwrkN7#O$!0tKjo``od6_qp@uKT~b>Q{?V$qa-?5>{<+NY=y+Ru>*oNfv@Z~ zexxFOf&Mg=EM`OgN=KDj3D3C3p0hSH`0lU7X|A|;E8!0QTMV0`FU%f1r1az40f$>V zd7j;T1ua>)ES5)od^=c1ww z9z}P{v^hDg)!DXj5JC3$m#=xOLb{upNm34FF6^E48#ik7>;7JzfBsWy)fY$hz~UYe)WxSyt@otZn;jOh3I0~ zj*4aPjvXHWl~lWLV~B_Y=e5Z3LTzpB9h8*kfhwwn7uf)gPu=?JN=$KqIs`)Xg0$?_ zWW>zN`wSfkheYpscx(j?=*0;$f)PLj1%uf>aX#+|y6>gkoN}lN4nXQZc3mtOR=BZ6WnnUmb=`QE0%JLR%T{55F8YP28~I#1(SdT zh~8iJ<;zVNX8^mN;45PQ;wP+!lyOM<0;UN_u;cXLH_pw?jbYU0D@nYvp(sHKBodTFm}jueAEE^S?3v1y9FlJ!&L(0F2>%emQ1Jpx+HefM z5gh5Q^{^_VXh>vaH8e)ZuO-@?H91y>3p2wWkmE=KHY3{Tf8_f(?-L!HU|4W!3G*3@ zqzJv8kYf>tM6|fVjylB1xQ|nNb107qGYbnDdNkfh8k23b%@CGUp6F|#?h zu)sgG2+dMwWoaH#%Vqd?4=D~@AfP-y=mu0{EhHc29*lGPnUQ-Bnv9Yz3!&*O%@(Y7 z69pI3zLrDZ7T`10Xxo7XWx98BIphBIQeW(TS6iJ?*P2JWx+Q!-0bz!-=!qAOMAsV0f(tD4~e< z!jhpU5&MntV{M$kCJYcL#W>PX4UrKt-05a6{o2EXwMP&n^;~Xb<7@_X`88h||l@dk+ZO zK6!)?@|$%U&7b8@Si}cjb^mi~Gknd14q3Pk4AYrEkYDUpYT`p9j zUzn&P+8PO-v|sZ31$Rs!d`;1kAb~!pq#Fc`)4C_O;qS>@F@WR_QJWJ7J<(#tPzW&B z@Ds;YZ(wGHM5GjvHaLAvkh+rZHp;$w0(H1fh0x1+gV)Wp=Ee3>Q{Z?7ch30`|q%L061~Nf2S>xj3@@N=^>0+dCIDiz9 z?nI|>`cLn=;>XIrslSP^;1L?6HyZgl=f>)F)2`01Y^N6{7tOby_OzN2EraI49#@57 zJ`$ltqJFI{VpQQM8Fy1-bJ*kxq3`OOC76f$Z8_H_=y(=< zuB_bL{U7BPbCC7|_3fxXohhiV$j_UgYa|qP3io@#*63-i)-AW;w0(RY0k??8XLytY zLOuzWBmKMEErC!uk$ZFD(a@i>VX z`vIfnb(}j95fLGX`A#zLzfcs>KCZloXAxa!P|_Sng+6D---brFzlFWTrx4YG5f%Uh z@sqc{GQfl?fe%SSMt&4)$OhuBt*axLE4HH>rYnAEiZ3vhxDVYWFmWdO2c8RE>nGSTK6rbh;zRIXX{H!N^FOK0pF5ePf@;5$)#qVblqWbDEt_DqdS5a9z}0k zrjv~PqVrLiL}{~4k3mDxkK_k z6+7#7vIJ>XJW>*uJUYg#C6US>pgoPhNh0S!Lz%tIS7^lu%RI z9IJY-NJd5m@$TU-S3{M>s>;gzsCg(HT*OYJ2E}CX@%1OlvqTC>@?!`Ut7zBh#RK)Z z14Id)IRVF6c?nGU*O&YTV>iv^>M*{}Cv<7iP;hzK==m+(VBRSJ>jPZ#Sr0w)HQvp@ z%>3$#`nrwerphbOhUW2qukO#E&tpftupj^-#icyH@lCL==lfpzC}$cUz!jN)4-5~l zM8v?HqQJ=71{j8fQt;x%A*~-@Au1rVp_OYSz*T}vvR7*!5`(xw3mEpq z)E6L_+=`m0Zhefq5pxga<>kB^-6d)wgf^u}>ZELvLh-nO*#=^6ue{s?xh9XlVQmxq z7j+H#Wv|sSmV7N6$t)z)c97RT7L1gVHo&l0%ST8Y!MG1%07lri5PC97RsgFKCtNyC zPEK2#G>FQ2c?Mc@q|?kk7%V7!M5dE%-I@&#nIro+rVF`xnBWBegy8TRGXNx_lDoQ+ z2+0uCECssowG2;8Seapd>Z&b00a>sgg!Tuyih7!`!of@wv*^%c)6LYny1FzzvSGZikHb>J0t2m^T8@}AT9}!E z(>Qlvx}ggaRTtV8_cy4Sq17U*VMuclLjDu5fZb#z53yxOG3148bVMaMWl-Pe*TU&I zXDW_yDqUS>EL#trdvP7~hr}x&FbRk=hCqV1eT^`2LMsJlTP>h2Wqn#CMh!7Sv_|2z zOm|wfaA8x^KB9wO3_c5H`e2Y4NFzpFa34@T{h*zy*Pkr+Dr#v7#kTo{hbMNtAqvOu zFG(sch|(=|nrUB^PwHK7n%w3t*^u>p{x++@Z<#<*u))X!{ltK39%|nPRU0@b49e@0FXy|@tXJ?(j>e5mM=#?Knd@ygZ6^6cw;tK}+=4$*m zu?Bz47XkX92JCIv=CTlu!n)lS6WHq za_V6qZo=nsY6pGtFVpr^J}#T6n$B*g2}j)3)m1tU!W)&6Qlqr-Uvm|IEyESz$}|6F zERnZ7}oaeT}{tG;!_@*QZ09XR3|9MZd%UGNX$qH+Tt6f95^GZ2e{(W}} zP)nA48O&p5R|QuxLq&!z43U_Mis}Y;DDnG0UrAej+XS%Cc%6Su1sFecyYjsAh)iey zh;>Zp!9QHP`GMN8$7EV*n7}C|LEU_&x*jkjdxa* za`^td@=)V??2&o6g^fkbnJ5u>4`y?t{8Qkzz}?eQ2u;h;mi^-+ely6lQ+=zq^XXI`?}m{;bgdyPc~GFm}bBs1<0~byJ}# z_kVr9ju;h7aYn#aLs55htb)4(dIT>2h7EsO8s|k z423BsD6jbtE#-f!H7g}$HIkpcE^ z+)n4|;o&i!2jBrB^a%j^A{r$@zu>CV0-GizutApEOhM6u3A`ex(@>&khME+N1qhyn z+By#{|(#oCGn>N3=Xn{xNKu3Bm-x$(l^a||gol%n?0G(0|>tXr#82g6d7HgiFY1rru zM`bWCQVKdvOqB@=C&s9-Egw)tqs}&d@nV7K1-1k8ULTLGi5

1#~KUkpJHrRkk4R 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 Z{P`@)MJrG4N~Gi18!f)R@s;D>{u^4nE8YMA literal 0 HcmV?d00001 diff --git a/workspaces/kiali/images/docs/EntityView.png b/workspaces/kiali/images/docs/EntityView.png new file mode 100644 index 0000000000000000000000000000000000000000..35865849245f001c25c202e44252f590e4ff586e GIT binary patch literal 163258 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

*! zu@|r$$6AZ<`*vN$UhXE-!2Yx@U|vgWQNfrC1lX>Li0Qjbr0d%;sRwgOC87}{gwHo> zDK zhaxkMU)!19%iQpW!nsN8L1R8L+$W>)>UkrZfJ=%2r|O>I8{u1>YdLLb&tF`MITMPv zAT=5~8K%RzBgUzS_l}};WrhV@|6DVvlg*pB!=qWi3(3P^gzfhdh^Ck+(Q#@r4#aY5 zD9KxQCV|q_0;Q3%jReB|#jJ7tO>$0M)bR_s#j0c{Hqyr4nriw_0Qh!k}{+3pc%(ihPxzOc%=Q+hbX0De`f$ z8khNfe|KF1;34x>W=-MX#92gLC3zZ@z+}1XSuT{Nex({xCNxp9oEr=qBa*6h272jD z<}`gkz{EGfUeSyES;y`4K;K}9>w9lz#-OIIJ~%lUWX%;SMvd3!{`m8n0o(8U&wL-f zLwy^<4`i;&q86{e#4&WL;*T5FNC0s~j{(EF2MPclNq9`AKL)(bBHBXc+4bu50E6G6DNQDp7hdC`elss$hBZ^3m3P^GRiN zNLP>)u6na+i0LKnTB_lNIjo-Y$6*}x zHSX^KXZ5d zl9}wioEhY&(B?zE21MT;>gX|?gFE(5clSGLJa208uCA`PTx5OKVefxny>Sf2`yY${ z@3*#qYFc}H*V#&kuLQ{~k4iKg@M&jV`K3Mfd2`{F_pIR85LA+c!bCc)I>-)IfVHy| z7U&epHFKl5Xdpoikd9}^0Y^z>b%~bjFWR|{X_&^q3L?X)Pat3g;|8Yc?h)2omEPd^?k{f#(j}gg%6iN8wi3;qI!&`#A;$XCXWM5HW2#QS3-h>c zn48OHJP{>nzxHc$GM3xqAYM5}sUe_N)z#J0&fR=T3=m82LJC|xb_OZvkJ;;YgT&~5 z*|E5nqwTfI-+>T;xgK|-A~RRD2@iM{D`dWs5{jeG%x-MKsT18*8p^fS{#u#Fgg@` zZ8oNVv*{2E2W#-fXHJL!65xlSHu>h5dvJCRC zFgXOIMRK5x|D@#las8Yt4(L)K@>p;I|7yV$1K{6VNJduftoh6YbZ7B zA#j+LGj!Fg!IuB8Em$Pa@_GE$l}GFensm|cJRDEb_6$)SlrN4c6X*{Wjq8tG*-1`Q z04j}uB8k*aDc`Ds&)sxe%&UxvR2eotdjx_Zz#mq?#9L5cSx2C-_wxZI-x;g>MI7`* zj5tE6+6rE56gFiTQC<=Ae>mu$8MIOAiR2B5Cyrsu`vsS{KTv2oV6UY7+?Fqz`U|vg zyt@(q_JWA-K6yZrjn1_Q*`z`UJ-qHg20^mV+M2c>Rn_INnuuQJ;${!a)*Nq{$Dn+J zOHU0Jd?kipX)!KML@DhZpWW&QlS%0J&TbdBa<@~N$D0G)YL~9yAn$ z$}PQNx(HBfHXvADT1w;huZp;-%?WWGDKmyqAmA6$|84OoK39WaO$KnIN9!2_bIW() zXgL;xM*z+S2S-9RCE%@_@T&))evD9=42;~4(o448BPViPH3#~41a?}a5dw~)y~!tS z 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

1y2?mTac3Fb0?pv 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 RUq!FR%BlWM{_Fa^{{;?I4VVA` literal 0 HcmV?d00001 diff --git a/workspaces/kiali/images/logo/kiali_logo_lightbkg_1280px.png b/workspaces/kiali/images/logo/kiali_logo_lightbkg_1280px.png new file mode 100644 index 0000000000000000000000000000000000000000..d7aa3e494ca21c7d6baa55ee367d5d2b14ae0c84 GIT binary patch literal 11902 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 literal 0 HcmV?d00001 diff --git a/workspaces/kiali/images/logo/kiali_logo_lightbkg_200px.png b/workspaces/kiali/images/logo/kiali_logo_lightbkg_200px.png new file mode 100644 index 0000000000000000000000000000000000000000..c05d8d0ec9e12479468084fae1f13754b99dd946 GIT binary patch literal 1367 zcmV-d1*rOoP)29-GG>(zst}-WO5KaPw(>c&)D2BS7zVk=wN<|pRu_hN?WhK#87d5aEq0XrL7K` z-@oMc&+GXWcc%e2PVe~rf64AYuH_ew$`yaK36$I4@%x|F@*kk#0ZM9b!t779=pU5M z3R{5zJy);Y^beHQkI?X6yXpZ$VK1lSQ>)hS-000DnNkl2}jF5Js)dlI1-CnwCOYTXx?6?Z8dqk@HE4P0tYtx>s$l=hmG@(5gsws+8W;xaNo4eq_I)@t`z8li+;P zv4Jj9N-!v6jSKDEw!~J?Rvh?2`9Z8RFWWr99#t$-3U(>TYPb?%gC>$3Fss18wG^XJO6YBVogk6#MxLJ&-p;g4}XGZ%8B?fT(4Ro+BV;tZ}fhbZ*NI z%GDi5ZXmE=NH9&*-xYbsJ$x9}B^(Hq;LJjnfJiV}%uP9l z1zlVwBE89V$2~mXWeBp$B14iN6~RS;(#u4~g;8EjmnGcCmtlzozlGR>3f06!5F>gM z7eJBy>{uNY& z_o#@dSyAnOE*MkQL9n&zF#(k7DjO29WzF)|KB0810wRMNY6-Q(l_!zauXC`PZQbvsYvBKW)SIEi1yS(npod7BUCF? z%?KS6NgrA!r(&do%O{qLZSETiH5m~}pX^f)5Hb5}mR{B%4pAh1`PKE*19GIGYw*4j z6iGiJ>caH^k$ot&I$I=?eu;t}xO_6w;Bq=Hl629CvjU1Bx>4-7NWx`2&eL%bEi2I} zl8B3>d$9s)9Tw45Su-FelI~R(X+t7f5d}k(Z;G) z`VBfFIw9(M+NAC6!g(aVW%}^cEz^;_r$=6*NYChMV`oo@$u_awcxqzrN(F$*x{el*t)m1|M79zf9L@7zjUPh!i5WG Z$}bdPM*@PeI2r%|002ovPDHLkV1n}%qeK7z literal 0 HcmV?d00001 diff --git a/workspaces/kiali/images/logo/kiali_logo_lightbkg_600px.png b/workspaces/kiali/images/logo/kiali_logo_lightbkg_600px.png new file mode 100644 index 0000000000000000000000000000000000000000..c381aaa0bae647ac931995efebd846d551540835 GIT binary patch literal 4671 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 literal 0 HcmV?d00001 diff --git a/workspaces/kiali/package.json b/workspaces/kiali/package.json index b04536db55..4b331209f8 100644 --- a/workspaces/kiali/package.json +++ b/workspaces/kiali/package.json @@ -6,6 +6,9 @@ "node": "18 || 20" }, "scripts": { + "start:backstage": "concurrently -c auto -n \"fe,be\" -p \"{name}:{pid}\" \"yarn start-app\" \"yarn start-backend\"", + "start-app": "yarn workspace app start", + "start-backend": "yarn workspace backend start", "tsc": "tsc", "tsc:full": "tsc --skipLibCheck true --incremental false", "build:all": "backstage-cli repo build --all", @@ -38,13 +41,14 @@ "@backstage/repo-tools": "^0.10.0", "@changesets/cli": "^2.27.1", "@spotify/prettier-config": "^12.0.0", - "knip": "^5.27.4", + "concurrently": "^8.2.2", "node-gyp": "^9.0.0", "prettier": "^2.3.2", "typescript": "~5.3.0" }, "dependencies": { - "@ianvs/prettier-plugin-sort-imports": "^4.3.1" + "@ianvs/prettier-plugin-sort-imports": "^4.3.1", + "knip": "^5.27.4" }, "resolutions": { "@types/react": "^18", diff --git a/workspaces/kiali/packages/app/.eslintignore b/workspaces/kiali/packages/app/.eslintignore new file mode 100644 index 0000000000..a48cf0de7a --- /dev/null +++ b/workspaces/kiali/packages/app/.eslintignore @@ -0,0 +1 @@ +public diff --git a/workspaces/kiali/packages/app/.eslintrc.js b/workspaces/kiali/packages/app/.eslintrc.js new file mode 100644 index 0000000000..e2a53a6ad2 --- /dev/null +++ b/workspaces/kiali/packages/app/.eslintrc.js @@ -0,0 +1 @@ +module.exports = require('@backstage/cli/config/eslint-factory')(__dirname); diff --git a/workspaces/kiali/packages/app/e2e-tests/app.test.ts b/workspaces/kiali/packages/app/e2e-tests/app.test.ts new file mode 100644 index 0000000000..9763cd9f2b --- /dev/null +++ b/workspaces/kiali/packages/app/e2e-tests/app.test.ts @@ -0,0 +1,27 @@ +/* + * Copyright 2020 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { expect, test } from '@playwright/test'; + +test('App should render the welcome page', async ({ page }) => { + await page.goto('/'); + + const enterButton = page.getByRole('button', { name: 'Enter' }); + await expect(enterButton).toBeVisible(); + await enterButton.click(); + + await expect(page.getByText('My Company Catalog')).toBeVisible(); +}); diff --git a/workspaces/kiali/packages/app/package.json b/workspaces/kiali/packages/app/package.json new file mode 100644 index 0000000000..019e4dbe14 --- /dev/null +++ b/workspaces/kiali/packages/app/package.json @@ -0,0 +1,74 @@ +{ + "name": "app", + "version": "0.0.0", + "private": true, + "bundled": true, + "backstage": { + "role": "frontend" + }, + "scripts": { + "start": "backstage-cli package start", + "build": "backstage-cli package build", + "clean": "backstage-cli package clean", + "test": "backstage-cli package test", + "lint": "backstage-cli package lint" + }, + "dependencies": { + "@backstage-community/plugin-kiali": "workspace:^", + "@backstage/app-defaults": "^1.5.12", + "@backstage/catalog-model": "^1.7.0", + "@backstage/cli": "^0.28.0", + "@backstage/core-app-api": "^1.15.1", + "@backstage/core-components": "^0.15.1", + "@backstage/core-plugin-api": "^1.10.0", + "@backstage/integration-react": "^1.2.0", + "@backstage/plugin-api-docs": "^0.11.11", + "@backstage/plugin-catalog": "^1.24.0", + "@backstage/plugin-catalog-common": "^1.1.0", + "@backstage/plugin-catalog-graph": "^0.4.11", + "@backstage/plugin-catalog-import": "^0.12.5", + "@backstage/plugin-catalog-react": "^1.14.0", + "@backstage/plugin-kubernetes": "^0.11.16", + "@backstage/plugin-org": "^0.6.31", + "@backstage/plugin-permission-react": "^0.4.27", + "@backstage/plugin-scaffolder": "^1.26.0", + "@backstage/plugin-search": "^1.4.18", + "@backstage/plugin-search-react": "^1.8.1", + "@backstage/plugin-techdocs": "^1.11.0", + "@backstage/plugin-techdocs-module-addons-contrib": "^1.1.16", + "@backstage/plugin-techdocs-react": "^1.2.9", + "@backstage/plugin-user-settings": "^0.8.14", + "@backstage/theme": "^0.6.0", + "@material-ui/core": "^4.12.2", + "@material-ui/icons": "^4.9.1", + "react": "^18.0.2", + "react-dom": "^18.0.2", + "react-router": "^6.3.0", + "react-router-dom": "^6.3.0" + }, + "devDependencies": { + "@backstage/test-utils": "^1.7.0", + "@playwright/test": "^1.32.3", + "@testing-library/dom": "^9.0.0", + "@testing-library/jest-dom": "^6.0.0", + "@testing-library/react": "^14.0.0", + "@testing-library/user-event": "^14.0.0", + "@types/react-dom": "*", + "cross-env": "^7.0.0" + }, + "browserslist": { + "production": [ + ">0.2%", + "not dead", + "not op_mini all" + ], + "development": [ + "last 1 chrome version", + "last 1 firefox version", + "last 1 safari version" + ] + }, + "files": [ + "dist" + ] +} diff --git a/workspaces/kiali/packages/app/public/android-chrome-192x192.png b/workspaces/kiali/packages/app/public/android-chrome-192x192.png new file mode 100644 index 0000000000000000000000000000000000000000..eec0ae25b971cae8eb0033c9af7e0f676d1df663 GIT binary patch literal 13599 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 EANz~b2mk;8 literal 0 HcmV?d00001 diff --git a/workspaces/kiali/packages/app/public/apple-touch-icon.png b/workspaces/kiali/packages/app/public/apple-touch-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..3158830ac778a62ff8f08da0e9eeee6e8ada8bfc GIT binary patch literal 12619 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 VSn|oqbSlsa22WQ%mvv4FO#qym7y1AI literal 0 HcmV?d00001 diff --git a/workspaces/kiali/packages/app/public/favicon-32x32.png b/workspaces/kiali/packages/app/public/favicon-32x32.png new file mode 100644 index 0000000000000000000000000000000000000000..c0915ece75949f3d917134f55193949927edc633 GIT binary patch literal 1686 zcmd5*YdF&j82@WYD9ojqT$Wo{SSXitp^eRqxy{@++t}P`atlKxQX0)YMm6_KR%p4F z$}J+6LMeH2OXWDHjylI#AJ2#L{k+fbeSgn;`91HK_szmP+3%H7kpcicc}5$z1N!Px-7om}akWbt233fdJ10ExN)z&Z~ATcQ$c2>@ad0I)&=0IMPZ zfJBuET&w|L$8)@+J4!Sl|Nk(stgJlvmnlJ&;dZvl8tO{Q%IJ*5_~q$1+xa={mdc0(T`t!w?RZl>^IxA*%bGu3bF$<*nzTrF> zoQ&9oiO|s=ORAp|1maSVle9kTR(cJ300u{&4iq#dewwjMjZ;umbia|8`fV}#)u6uZ z2{{=Vn6Y8_#3SbXb1ic-&s#nMteerJ5NT@9WJFf_0Z{rXvToRrSOV|5nT6}g)=)7clCVKtHJ1*VPs-V;@XTM)*hF8A>dvO zHk*Y?X8JaA;})mFp7;7TRRuk~8$R*Snh{9txf3X8a4%y!TuP;MHGAGHB;T*cTs()( zPBU^uyOrcpI-AkwlQc~ccBy9xRRz@U7IH^D@piFSO__BF#e(AN-^z2yOmV!NrfGJV z)K=@)T;PiA16X29aqmP@px{GT+&pJ*OCU>i#GE8dw3RuCdu^ zY|d<%y|L(_@zJ9#_m z=Lc$*iilj{bjSDeNH|lRP>yLE)Yq?l!XVsP?uHhR(xnf>5p}vuAuF-j7*tA0oTAH zhFP&ZPMN7z8!K6i|K8u7|AYJvRll0p!ov{KSr|$njU-`o&7fVZN5@WQ|g`Mlirnap=oY~b#iCdHeScp|7sct zd}FL!1NSuuCnVle?ygaP975V!)pzN#*|A{{1* z$fS~)G%HFBO+IIv4>f5HNGY_6SF`0>Gf0kWIFv^nU=X CgrE5U literal 0 HcmV?d00001 diff --git a/workspaces/kiali/packages/app/public/favicon.ico b/workspaces/kiali/packages/app/public/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..5e45e5dfbde6f39603d5be60d933c1af14dffb1e GIT binary patch literal 15086 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 D+pS%} literal 0 HcmV?d00001 diff --git a/workspaces/kiali/packages/app/public/index.html b/workspaces/kiali/packages/app/public/index.html new file mode 100644 index 0000000000..18da7c4773 --- /dev/null +++ b/workspaces/kiali/packages/app/public/index.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + <%= config.getOptionalString('app.title') ?? 'Backstage' %> + + + +
    + + + diff --git a/workspaces/kiali/packages/app/public/manifest.json b/workspaces/kiali/packages/app/public/manifest.json new file mode 100644 index 0000000000..4a7c1b4ec4 --- /dev/null +++ b/workspaces/kiali/packages/app/public/manifest.json @@ -0,0 +1,15 @@ +{ + "short_name": "Backstage", + "name": "Backstage", + "icons": [ + { + "src": "favicon.ico", + "sizes": "48x48", + "type": "image/png" + } + ], + "start_url": "./index.html", + "display": "standalone", + "theme_color": "#000000", + "background_color": "#ffffff" +} diff --git a/workspaces/kiali/packages/app/public/robots.txt b/workspaces/kiali/packages/app/public/robots.txt new file mode 100644 index 0000000000..01b0f9a107 --- /dev/null +++ b/workspaces/kiali/packages/app/public/robots.txt @@ -0,0 +1,2 @@ +# https://www.robotstxt.org/robotstxt.html +User-agent: * diff --git a/workspaces/kiali/packages/app/public/safari-pinned-tab.svg b/workspaces/kiali/packages/app/public/safari-pinned-tab.svg new file mode 100644 index 0000000000..0f500b3002 --- /dev/null +++ b/workspaces/kiali/packages/app/public/safari-pinned-tab.svg @@ -0,0 +1 @@ +Created by potrace 1.11, written by Peter Selinger 2001-2013 \ No newline at end of file diff --git a/workspaces/kiali/packages/app/src/App.test.tsx b/workspaces/kiali/packages/app/src/App.test.tsx new file mode 100644 index 0000000000..19a8d6cbae --- /dev/null +++ b/workspaces/kiali/packages/app/src/App.test.tsx @@ -0,0 +1,44 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { render, waitFor } from '@testing-library/react'; +import React from 'react'; +import App from './App'; + +describe('App', () => { + it('should render', async () => { + process.env = { + NODE_ENV: 'test', + APP_CONFIG: [ + { + data: { + app: { title: 'Test' }, + backend: { baseUrl: 'http://localhost:7007' }, + techdocs: { + storageUrl: 'http://localhost:7007/api/techdocs/static/docs', + }, + }, + context: 'test', + }, + ] as any, + }; + + const rendered = render(); + + await waitFor(() => { + expect(rendered.baseElement).toBeInTheDocument(); + }); + }); +}); diff --git a/workspaces/kiali/packages/app/src/App.tsx b/workspaces/kiali/packages/app/src/App.tsx new file mode 100644 index 0000000000..3baf955e25 --- /dev/null +++ b/workspaces/kiali/packages/app/src/App.tsx @@ -0,0 +1,125 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { KialiPage } from '@backstage-community/plugin-kiali'; +import { createApp } from '@backstage/app-defaults'; +import { AppRouter, FlatRoutes } from '@backstage/core-app-api'; +import { + AlertDisplay, + OAuthRequestDialog, + SignInPage, +} from '@backstage/core-components'; +import { apiDocsPlugin, ApiExplorerPage } from '@backstage/plugin-api-docs'; +import { + CatalogEntityPage, + CatalogIndexPage, + catalogPlugin, +} from '@backstage/plugin-catalog'; +import { catalogEntityCreatePermission } from '@backstage/plugin-catalog-common/alpha'; +import { CatalogGraphPage } from '@backstage/plugin-catalog-graph'; +import { + CatalogImportPage, + catalogImportPlugin, +} from '@backstage/plugin-catalog-import'; +import { orgPlugin } from '@backstage/plugin-org'; +import { RequirePermission } from '@backstage/plugin-permission-react'; +import { ScaffolderPage, scaffolderPlugin } from '@backstage/plugin-scaffolder'; +import { SearchPage } from '@backstage/plugin-search'; +import { + TechDocsIndexPage, + techdocsPlugin, + TechDocsReaderPage, +} from '@backstage/plugin-techdocs'; +import { ReportIssue } from '@backstage/plugin-techdocs-module-addons-contrib'; +import { TechDocsAddons } from '@backstage/plugin-techdocs-react'; +import { UserSettingsPage } from '@backstage/plugin-user-settings'; +import React from 'react'; +import { Navigate, Route } from 'react-router-dom'; +import { apis } from './apis'; +import { entityPage } from './components/catalog/EntityPage'; +import { Root } from './components/Root'; +import { searchPage } from './components/search/SearchPage'; + +const app = createApp({ + apis, + bindRoutes({ bind }) { + bind(catalogPlugin.externalRoutes, { + createComponent: scaffolderPlugin.routes.root, + viewTechDoc: techdocsPlugin.routes.docRoot, + createFromTemplate: scaffolderPlugin.routes.selectedTemplate, + }); + bind(apiDocsPlugin.externalRoutes, { + registerApi: catalogImportPlugin.routes.importPage, + }); + bind(scaffolderPlugin.externalRoutes, { + registerComponent: catalogImportPlugin.routes.importPage, + viewTechDoc: techdocsPlugin.routes.docRoot, + }); + bind(orgPlugin.externalRoutes, { + catalogIndex: catalogPlugin.routes.catalogIndex, + }); + }, + components: { + SignInPage: props => , + }, +}); + +const routes = ( + + } /> + } /> + } + > + {entityPage} + + } /> + } + > + + + + + } /> + } /> + + + + } + /> + }> + {searchPage} + + } /> + } /> + } /> + +); + +export default app.createRoot( + <> + + + + {routes} + + , +); diff --git a/workspaces/kiali/packages/app/src/apis.ts b/workspaces/kiali/packages/app/src/apis.ts new file mode 100644 index 0000000000..3b1db0b574 --- /dev/null +++ b/workspaces/kiali/packages/app/src/apis.ts @@ -0,0 +1,34 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { + AnyApiFactory, + configApiRef, + createApiFactory, +} from '@backstage/core-plugin-api'; +import { + ScmAuth, + ScmIntegrationsApi, + scmIntegrationsApiRef, +} from '@backstage/integration-react'; + +export const apis: AnyApiFactory[] = [ + createApiFactory({ + api: scmIntegrationsApiRef, + deps: { configApi: configApiRef }, + factory: ({ configApi }) => ScmIntegrationsApi.fromConfig(configApi), + }), + ScmAuth.createDefaultApiFactory(), +]; diff --git a/workspaces/kiali/packages/app/src/components/Root/LogoFull.tsx b/workspaces/kiali/packages/app/src/components/Root/LogoFull.tsx new file mode 100644 index 0000000000..52c92a6944 --- /dev/null +++ b/workspaces/kiali/packages/app/src/components/Root/LogoFull.tsx @@ -0,0 +1,45 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { makeStyles } from '@material-ui/core'; +import React from 'react'; + +const useStyles = makeStyles({ + svg: { + width: 'auto', + height: 30, + }, + path: { + fill: '#7df3e1', + }, +}); +const LogoFull = () => { + const classes = useStyles(); + + return ( + + + + ); +}; + +export default LogoFull; diff --git a/workspaces/kiali/packages/app/src/components/Root/LogoIcon.tsx b/workspaces/kiali/packages/app/src/components/Root/LogoIcon.tsx new file mode 100644 index 0000000000..bfb8941e35 --- /dev/null +++ b/workspaces/kiali/packages/app/src/components/Root/LogoIcon.tsx @@ -0,0 +1,46 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { makeStyles } from '@material-ui/core'; +import React from 'react'; + +const useStyles = makeStyles({ + svg: { + width: 'auto', + height: 28, + }, + path: { + fill: '#7df3e1', + }, +}); + +const LogoIcon = () => { + const classes = useStyles(); + + return ( + + + + ); +}; + +export default LogoIcon; diff --git a/workspaces/kiali/packages/app/src/components/Root/Root.tsx b/workspaces/kiali/packages/app/src/components/Root/Root.tsx new file mode 100644 index 0000000000..b8eeea568a --- /dev/null +++ b/workspaces/kiali/packages/app/src/components/Root/Root.tsx @@ -0,0 +1,115 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { KialiIcon } from '@backstage-community/plugin-kiali'; +import { + Link, + Sidebar, + sidebarConfig, + SidebarDivider, + SidebarGroup, + SidebarItem, + SidebarPage, + SidebarScrollWrapper, + SidebarSpace, + useSidebarOpenState, +} from '@backstage/core-components'; +import { MyGroupsSidebarItem } from '@backstage/plugin-org'; +import { SidebarSearchModal } from '@backstage/plugin-search'; +import { + Settings as SidebarSettings, + UserSettingsSignInAvatar, +} from '@backstage/plugin-user-settings'; +import { makeStyles } from '@material-ui/core'; +import CreateComponentIcon from '@material-ui/icons/AddCircleOutline'; +import ExtensionIcon from '@material-ui/icons/Extension'; +import HomeIcon from '@material-ui/icons/Home'; +import LibraryBooks from '@material-ui/icons/LibraryBooks'; +import MenuIcon from '@material-ui/icons/Menu'; +import GroupIcon from '@material-ui/icons/People'; +import SearchIcon from '@material-ui/icons/Search'; +import React, { PropsWithChildren } from 'react'; +import LogoFull from './LogoFull'; +import LogoIcon from './LogoIcon'; + +const useSidebarLogoStyles = makeStyles({ + root: { + width: sidebarConfig.drawerWidthClosed, + height: 3 * sidebarConfig.logoHeight, + display: 'flex', + flexFlow: 'row nowrap', + alignItems: 'center', + marginBottom: -14, + }, + link: { + width: sidebarConfig.drawerWidthClosed, + marginLeft: 24, + }, +}); + +const SidebarLogo = () => { + const classes = useSidebarLogoStyles(); + const { isOpen } = useSidebarOpenState(); + + return ( +
    + + {isOpen ? : } + +
    + ); +}; + +export const Root = ({ children }: PropsWithChildren<{}>) => ( + + + + } to="/search"> + + + + }> + {/* Kiali Menu */} + + {/* Global nav, not org-specific */} + + + + + + {/* End global nav */} + + + + {/* Items in this group will be scrollable if they run out of space */} + + + + + } + to="/settings" + > + + + + {children} + +); diff --git a/workspaces/kiali/packages/app/src/components/Root/index.ts b/workspaces/kiali/packages/app/src/components/Root/index.ts new file mode 100644 index 0000000000..6e933a21b6 --- /dev/null +++ b/workspaces/kiali/packages/app/src/components/Root/index.ts @@ -0,0 +1,16 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export { Root } from './Root'; diff --git a/workspaces/kiali/packages/app/src/components/catalog/EntityPage.tsx b/workspaces/kiali/packages/app/src/components/catalog/EntityPage.tsx new file mode 100644 index 0000000000..bff475648e --- /dev/null +++ b/workspaces/kiali/packages/app/src/components/catalog/EntityPage.tsx @@ -0,0 +1,434 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { + EntityKialiContent, + EntityKialiGraphCard, +} from '@backstage-community/plugin-kiali'; +import { + RELATION_API_CONSUMED_BY, + RELATION_API_PROVIDED_BY, + RELATION_CONSUMES_API, + RELATION_DEPENDENCY_OF, + RELATION_DEPENDS_ON, + RELATION_HAS_PART, + RELATION_PART_OF, + RELATION_PROVIDES_API, +} from '@backstage/catalog-model'; +import { EmptyState } from '@backstage/core-components'; +import { + EntityApiDefinitionCard, + EntityConsumedApisCard, + EntityConsumingComponentsCard, + EntityHasApisCard, + EntityProvidedApisCard, + EntityProvidingComponentsCard, +} from '@backstage/plugin-api-docs'; +import { + EntityAboutCard, + EntityDependsOnComponentsCard, + EntityDependsOnResourcesCard, + EntityHasComponentsCard, + EntityHasResourcesCard, + EntityHasSubcomponentsCard, + EntityHasSystemsCard, + EntityLayout, + EntityLinksCard, + EntityOrphanWarning, + EntityProcessingErrorsPanel, + EntityRelationWarning, + EntitySwitch, + hasCatalogProcessingErrors, + hasRelationWarnings, + isComponentType, + isKind, + isOrphan, +} from '@backstage/plugin-catalog'; +import { + Direction, + EntityCatalogGraphCard, +} from '@backstage/plugin-catalog-graph'; +import { + EntityKubernetesContent, + isKubernetesAvailable, +} from '@backstage/plugin-kubernetes'; +import { + EntityGroupProfileCard, + EntityMembersListCard, + EntityOwnershipCard, + EntityUserProfileCard, +} from '@backstage/plugin-org'; +import { EntityTechdocsContent } from '@backstage/plugin-techdocs'; +import { ReportIssue } from '@backstage/plugin-techdocs-module-addons-contrib'; +import { TechDocsAddons } from '@backstage/plugin-techdocs-react'; +import { Button, Grid } from '@material-ui/core'; +import React from 'react'; + +const techdocsContent = ( + + + + + +); + +const cicdContent = ( + // This is an example of how you can implement your company's logic in entity page. + // You can for example enforce that all components of type 'service' should use GitHubActions + + {/* + Here you can add support for different CI/CD services, for example + using @backstage-community/plugin-github-actions as follows: + + + + */} + + + + Read more + + } + /> + + +); + +const entityWarningContent = ( + <> + + + + + + + + + + + + + + + + + + + + + + + + +); + +const overviewContent = ( + + {entityWarningContent} + + + + + + + + + + + + + + + + + +); + +const serviceEntityPage = ( + + + {overviewContent} + + + + + + {cicdContent} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {techdocsContent} + + +); + +const websiteEntityPage = ( + + + {overviewContent} + + + + {cicdContent} + + + + + + + + + + + + + + + + + + + {techdocsContent} + + +); + +/** + * NOTE: This page is designed to work on small screens such as mobile devices. + * This is based on Material UI Grid. If breakpoints are used, each grid item must set the `xs` prop to a column size or to `true`, + * since this does not default. If no breakpoints are used, the items will equitably share the available space. + * https://material-ui.com/components/grid/#basic-grid. + */ + +const defaultEntityPage = ( + + + {overviewContent} + + + + {techdocsContent} + + +); + +const componentPage = ( + + + {serviceEntityPage} + + + + {websiteEntityPage} + + + {defaultEntityPage} + +); + +const apiPage = ( + + + + {entityWarningContent} + + + + + + + + + + + + + + + + + + + + + + + + + + + + +); + +const userPage = ( + + + + {entityWarningContent} + + + + + + + + + +); + +const groupPage = ( + + + + {entityWarningContent} + + + + + + + + + + + + + + + +); + +const systemPage = ( + + + + {entityWarningContent} + + + + + + + + + + + + + + + + + + + + + + + + +); + +const domainPage = ( + + + + {entityWarningContent} + + + + + + + + + + + + +); + +export const entityPage = ( + + + + + + + + + {defaultEntityPage} + +); diff --git a/workspaces/kiali/packages/app/src/components/search/SearchPage.tsx b/workspaces/kiali/packages/app/src/components/search/SearchPage.tsx new file mode 100644 index 0000000000..8a37529a37 --- /dev/null +++ b/workspaces/kiali/packages/app/src/components/search/SearchPage.tsx @@ -0,0 +1,137 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { + CatalogIcon, + Content, + DocsIcon, + Header, + Page, +} from '@backstage/core-components'; +import { useApi } from '@backstage/core-plugin-api'; +import { CatalogSearchResultListItem } from '@backstage/plugin-catalog'; +import { + CATALOG_FILTER_EXISTS, + catalogApiRef, +} from '@backstage/plugin-catalog-react'; +import { SearchType } from '@backstage/plugin-search'; +import { + SearchBar, + SearchFilter, + SearchPagination, + SearchResult, + useSearch, +} from '@backstage/plugin-search-react'; +import { TechDocsSearchResultListItem } from '@backstage/plugin-techdocs'; +import { Grid, makeStyles, Paper, Theme } from '@material-ui/core'; +import React from 'react'; + +const useStyles = makeStyles((theme: Theme) => ({ + bar: { + padding: theme.spacing(1, 0), + }, + filters: { + padding: theme.spacing(2), + marginTop: theme.spacing(2), + }, + filter: { + '& + &': { + marginTop: theme.spacing(2.5), + }, + }, +})); + +const SearchPage = () => { + const classes = useStyles(); + const { types } = useSearch(); + const catalogApi = useApi(catalogApiRef); + + return ( + +
    + + + + + + + + + , + }, + { + value: 'techdocs', + name: 'Documentation', + icon: , + }, + ]} + /> + + {types.includes('techdocs') && ( + { + // Return a list of entities which are documented. + const { items } = await catalogApi.getEntities({ + fields: ['metadata.name'], + filter: { + 'metadata.annotations.backstage.io/techdocs-ref': + CATALOG_FILTER_EXISTS, + }, + }); + + const names = items.map(entity => entity.metadata.name); + names.sort(); + return names; + }} + /> + )} + + + + + + + + } /> + } /> + + + + + + ); +}; + +export const searchPage = ; diff --git a/workspaces/kiali/packages/app/src/index.tsx b/workspaces/kiali/packages/app/src/index.tsx new file mode 100644 index 0000000000..2338991231 --- /dev/null +++ b/workspaces/kiali/packages/app/src/index.tsx @@ -0,0 +1,21 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import '@backstage/cli/asset-types'; +import React from 'react'; +import ReactDOM from 'react-dom/client'; +import App from './App'; + +ReactDOM.createRoot(document.getElementById('root')!).render(); diff --git a/workspaces/kiali/packages/app/src/setupTests.ts b/workspaces/kiali/packages/app/src/setupTests.ts new file mode 100644 index 0000000000..658016ffdd --- /dev/null +++ b/workspaces/kiali/packages/app/src/setupTests.ts @@ -0,0 +1,16 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import '@testing-library/jest-dom'; diff --git a/workspaces/kiali/packages/backend/.eslintrc.js b/workspaces/kiali/packages/backend/.eslintrc.js new file mode 100644 index 0000000000..e2a53a6ad2 --- /dev/null +++ b/workspaces/kiali/packages/backend/.eslintrc.js @@ -0,0 +1 @@ +module.exports = require('@backstage/cli/config/eslint-factory')(__dirname); diff --git a/workspaces/kiali/packages/backend/Dockerfile b/workspaces/kiali/packages/backend/Dockerfile new file mode 100644 index 0000000000..6a4c257afb --- /dev/null +++ b/workspaces/kiali/packages/backend/Dockerfile @@ -0,0 +1,66 @@ +# This dockerfile builds an image for the backend package. +# It should be executed with the root of the repo as docker context. +# +# Before building this image, be sure to have run the following commands in the repo root: +# +# yarn install --immutable +# yarn tsc +# yarn build:backend +# +# Once the commands have been run, you can build the image using `yarn build-image` + +FROM node:20-bookworm-slim + +# Set Python interpreter for `node-gyp` to use +ENV PYTHON=/usr/bin/python3 + +# Install isolate-vm dependencies, these are needed by the @backstage/plugin-scaffolder-backend. +RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \ + --mount=type=cache,target=/var/lib/apt,sharing=locked \ + apt-get update && \ + apt-get install -y --no-install-recommends python3 g++ build-essential && \ + rm -rf /var/lib/apt/lists/* + +# Install sqlite3 dependencies. You can skip this if you don't use sqlite3 in the image, +# in which case you should also move better-sqlite3 to "devDependencies" in package.json. +RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \ + --mount=type=cache,target=/var/lib/apt,sharing=locked \ + apt-get update && \ + apt-get install -y --no-install-recommends libsqlite3-dev && \ + rm -rf /var/lib/apt/lists/* + +# From here on we use the least-privileged `node` user to run the backend. +USER node + +# This should create the app dir as `node`. +# If it is instead created as `root` then the `tar` command below will fail: `can't create directory 'packages/': Permission denied`. +# If this occurs, then ensure BuildKit is enabled (`DOCKER_BUILDKIT=1`) so the app dir is correctly created as `node`. +WORKDIR /app + +# Copy files needed by Yarn +COPY --chown=node:node .yarn ./.yarn +COPY --chown=node:node .yarnrc.yml ./ + +# This switches many Node.js dependencies to production mode. +ENV NODE_ENV=production + +# This disables node snapshot for Node 20 to work with the Scaffolder +ENV NODE_OPTIONS="--no-node-snapshot" + +# Copy repo skeleton first, to avoid unnecessary docker cache invalidation. +# The skeleton contains the package.json of each package in the monorepo, +# and along with yarn.lock and the root package.json, that's enough to run yarn install. +COPY --chown=node:node yarn.lock package.json packages/backend/dist/skeleton.tar.gz ./ +RUN tar xzf skeleton.tar.gz && rm skeleton.tar.gz + +RUN --mount=type=cache,target=/home/node/.cache/yarn,sharing=locked,uid=1000,gid=1000 \ + yarn workspaces focus --all --production && rm -rf "$(yarn cache clean)" + +# This will include the examples, if you don't need these simply remove this line +COPY --chown=node:node examples ./examples + +# Then copy the rest of the backend bundle, along with any other files we might want. +COPY --chown=node:node packages/backend/dist/bundle.tar.gz app-config*.yaml ./ +RUN tar xzf bundle.tar.gz && rm bundle.tar.gz + +CMD ["node", "packages/backend", "--config", "app-config.yaml", "--config", "app-config.production.yaml"] diff --git a/workspaces/kiali/packages/backend/README.md b/workspaces/kiali/packages/backend/README.md new file mode 100644 index 0000000000..3607b0a092 --- /dev/null +++ b/workspaces/kiali/packages/backend/README.md @@ -0,0 +1,59 @@ +# example-backend + +This package is an EXAMPLE of a Backstage backend. + +The main purpose of this package is to provide a test bed for Backstage plugins +that have a backend part. Feel free to experiment locally or within your fork by +adding dependencies and routes to this backend, to try things out. + +Our goal is to eventually amend the create-app flow of the CLI, such that a +production ready version of a backend skeleton is made alongside the frontend +app. Until then, feel free to experiment here! + +## Development + +To run the example backend, first go to the project root and run + +```bash +yarn install +``` + +You should only need to do this once. + +After that, go to the `packages/backend` directory and run + +```bash +yarn start +``` + +If you want to override any configuration locally, for example adding any secrets, +you can do so in `app-config.local.yaml`. + +The backend starts up on port 7007 per default. + +## Populating The Catalog + +If you want to use the catalog functionality, you need to add so called +locations to the backend. These are places where the backend can find some +entity descriptor data to consume and serve. For more information, see +[Software Catalog Overview - Adding Components to the Catalog](https://backstage.io/docs/features/software-catalog/#adding-components-to-the-catalog). + +To get started quickly, this template already includes some statically configured example locations +in `app-config.yaml` under `catalog.locations`. You can remove and replace these locations as you +like, and also override them for local development in `app-config.local.yaml`. + +## Authentication + +We chose [Passport](http://www.passportjs.org/) as authentication platform due +to its comprehensive set of supported authentication +[strategies](http://www.passportjs.org/packages/). + +Read more about the +[auth-backend](https://github.com/backstage/backstage/blob/master/plugins/auth-backend/README.md) +and +[how to add a new provider](https://github.com/backstage/backstage/blob/master/docs/auth/add-auth-provider.md) + +## Documentation + +- [Backstage Readme](https://github.com/backstage/backstage/blob/master/README.md) +- [Backstage Documentation](https://backstage.io/docs) diff --git a/workspaces/kiali/packages/backend/package.json b/workspaces/kiali/packages/backend/package.json new file mode 100644 index 0000000000..1274f7bd9a --- /dev/null +++ b/workspaces/kiali/packages/backend/package.json @@ -0,0 +1,54 @@ +{ + "name": "backend", + "version": "0.0.0", + "main": "dist/index.cjs.js", + "types": "src/index.ts", + "private": true, + "backstage": { + "role": "backend" + }, + "scripts": { + "start": "backstage-cli package start", + "build": "backstage-cli package build", + "lint": "backstage-cli package lint", + "test": "backstage-cli package test", + "clean": "backstage-cli package clean", + "build-image": "docker build ../.. -f Dockerfile --tag backstage" + }, + "dependencies": { + "@backstage-community/plugin-kiali-backend": "workspace:^", + "@backstage/backend-defaults": "^0.5.1", + "@backstage/config": "^1.2.0", + "@backstage/plugin-app-backend": "^0.3.76", + "@backstage/plugin-auth-backend": "^0.23.1", + "@backstage/plugin-auth-backend-module-github-provider": "^0.2.1", + "@backstage/plugin-auth-backend-module-guest-provider": "^0.2.1", + "@backstage/plugin-auth-node": "^0.5.3", + "@backstage/plugin-catalog-backend": "^1.27.0", + "@backstage/plugin-catalog-backend-module-logs": "^0.1.2", + "@backstage/plugin-catalog-backend-module-scaffolder-entity-model": "^0.2.1", + "@backstage/plugin-kubernetes-backend": "^0.18.7", + "@backstage/plugin-permission-backend": "^0.5.50", + "@backstage/plugin-permission-backend-module-allow-all-policy": "^0.2.1", + "@backstage/plugin-permission-common": "^0.8.1", + "@backstage/plugin-permission-node": "^0.8.4", + "@backstage/plugin-proxy-backend": "^0.5.7", + "@backstage/plugin-scaffolder-backend": "^1.26.0", + "@backstage/plugin-search-backend": "^1.6.0", + "@backstage/plugin-search-backend-module-catalog": "^0.2.3", + "@backstage/plugin-search-backend-module-pg": "^0.5.36", + "@backstage/plugin-search-backend-module-techdocs": "^0.3.0", + "@backstage/plugin-search-backend-node": "^1.3.3", + "@backstage/plugin-techdocs-backend": "^1.11.0", + "app": "link:../app", + "better-sqlite3": "^9.0.0", + "node-gyp": "^10.0.0", + "pg": "^8.11.3" + }, + "devDependencies": { + "@backstage/cli": "^0.28.0" + }, + "files": [ + "dist" + ] +} diff --git a/workspaces/kiali/packages/backend/src/index.ts b/workspaces/kiali/packages/backend/src/index.ts new file mode 100644 index 0000000000..d5d24b7c90 --- /dev/null +++ b/workspaces/kiali/packages/backend/src/index.ts @@ -0,0 +1,65 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { createBackend } from '@backstage/backend-defaults'; + +const backend = createBackend(); + +backend.add(import('@backstage/plugin-app-backend/alpha')); +backend.add(import('@backstage/plugin-proxy-backend/alpha')); +backend.add(import('@backstage/plugin-scaffolder-backend/alpha')); +backend.add(import('@backstage/plugin-techdocs-backend/alpha')); + +// auth plugin +backend.add(import('@backstage/plugin-auth-backend')); +// See https://backstage.io/docs/backend-system/building-backends/migrating#the-auth-plugin +backend.add(import('@backstage/plugin-auth-backend-module-guest-provider')); +// See https://backstage.io/docs/auth/guest/provider + +// catalog plugin +backend.add(import('@backstage/plugin-catalog-backend/alpha')); +backend.add( + import('@backstage/plugin-catalog-backend-module-scaffolder-entity-model'), +); + +// See https://backstage.io/docs/features/software-catalog/configuration#subscribing-to-catalog-errors +backend.add(import('@backstage/plugin-catalog-backend-module-logs')); + +// permission plugin +backend.add(import('@backstage/plugin-permission-backend/alpha')); +// See https://backstage.io/docs/permissions/getting-started for how to create your own permission policy +backend.add( + import('@backstage/plugin-permission-backend-module-allow-all-policy'), +); + +// search plugin +backend.add(import('@backstage/plugin-search-backend/alpha')); + +// search engine +// See https://backstage.io/docs/features/search/search-engines +backend.add(import('@backstage/plugin-search-backend-module-pg/alpha')); + +// search collators +backend.add(import('@backstage/plugin-search-backend-module-catalog/alpha')); +backend.add(import('@backstage/plugin-search-backend-module-techdocs/alpha')); + +// kubernetes +backend.add(import('@backstage/plugin-kubernetes-backend/alpha')); + +// kiali +backend.add(import('@backstage-community/plugin-kiali-backend')); + +backend.start(); diff --git a/workspaces/kiali/plugins/kiali-backend/package.json b/workspaces/kiali/plugins/kiali-backend/package.json index cd08647ed3..a8fe89864d 100644 --- a/workspaces/kiali/plugins/kiali-backend/package.json +++ b/workspaces/kiali/plugins/kiali-backend/package.json @@ -38,9 +38,7 @@ "clean": "backstage-cli package clean", "prepack": "backstage-cli package prepack", "postpack": "backstage-cli package postpack", - "postversion": "yarn run export-dynamic", - "export-dynamic": "janus-cli package export-dynamic-plugin", - "export-dynamic:clean": "janus-cli package export-dynamic-plugin --clean" + "postversion": "yarn run export-dynamic" }, "configSchema": "config.d.ts", "dependencies": { diff --git a/workspaces/kiali/plugins/kiali/.eslintignore b/workspaces/kiali/plugins/kiali/.eslintignore new file mode 100644 index 0000000000..55289f4a23 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/.eslintignore @@ -0,0 +1,2 @@ +dist-dynamic +dist-scalprum diff --git a/workspaces/kiali/plugins/kiali/.eslintrc.js b/workspaces/kiali/plugins/kiali/.eslintrc.js new file mode 100644 index 0000000000..e2a53a6ad2 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/.eslintrc.js @@ -0,0 +1 @@ +module.exports = require('@backstage/cli/config/eslint-factory')(__dirname); diff --git a/workspaces/kiali/plugins/kiali/.prettierignore b/workspaces/kiali/plugins/kiali/.prettierignore new file mode 100644 index 0000000000..fc8357d99e --- /dev/null +++ b/workspaces/kiali/plugins/kiali/.prettierignore @@ -0,0 +1,12 @@ +dist +dist-types +coverage +.vscode +CHANGELOG.md +generated +templates +*.hbs +renovate.json +dist-dynamic +dist-scalprum +playwright-report diff --git a/workspaces/kiali/plugins/kiali/.prettierrc.js b/workspaces/kiali/plugins/kiali/.prettierrc.js new file mode 100644 index 0000000000..811bd789b2 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/.prettierrc.js @@ -0,0 +1,20 @@ +// @ts-check + +/** @type {import("@ianvs/prettier-plugin-sort-imports").PrettierConfig} */ +module.exports = { + ...require('@spotify/prettier-config'), + plugins: ['@ianvs/prettier-plugin-sort-imports'], + importOrder: [ + '^react(.*)$', + '', + '^@backstage/(.*)$', + '', + '', + '', + '^@backstage-community/(.*)$', + '', + '', + '', + '^[.]', + ], +}; diff --git a/workspaces/kiali/plugins/kiali/CHANGELOG.md b/workspaces/kiali/plugins/kiali/CHANGELOG.md new file mode 100644 index 0000000000..85f3144fcd --- /dev/null +++ b/workspaces/kiali/plugins/kiali/CHANGELOG.md @@ -0,0 +1,655 @@ +### Dependencies + +## 1.35.0 + +### Minor Changes + +- 9671df5: Bump plugins/kiali to 1.35.0 in main branch, in prep for release of 1.4.0 + +## 1.34.1 + +### Patch Changes + +- 0e6bfd3: feat: update Backstage to the latest version + + Update to Backstage 1.32.5 + +## 1.34.0 + +### Minor Changes + +- 8244f28: chore(deps): update to backstage 1.32 + +## 1.33.1 + +### Patch Changes + +- 7342e9b: chore: remove @janus-idp/cli dep and relink local packages + + This update removes `@janus-idp/cli` from all plugins, as it’s no longer necessary. Additionally, packages are now correctly linked with a specified version. + +## 1.33.0 + +### Minor Changes + +- d9551ae: feat(deps): update to backstage 1.31 + +### Patch Changes + +- d9551ae: Change local package references to a `*` +- d9551ae: pin the @janus-idp/cli package +- d9551ae: upgrade to yarn v3 + +* **@janus-idp/cli:** upgraded to 1.15.2 + +### Dependencies + +- **@janus-idp/cli:** upgraded to 1.15.1 + +### Dependencies + +- **@janus-idp/cli:** upgraded to 1.15.0 + +### Dependencies + +- **@janus-idp/cli:** upgraded to 1.14.0 + +### Dependencies + +- **@janus-idp/cli:** upgraded to 1.13.2 + +### Dependencies + +- **@janus-idp/cli:** upgraded to 1.13.1 + +## @backstage-community/plugin-kiali [1.30.0](https://github.com/janus-idp/backstage-plugins/compare/@backstage-community/plugin-kiali@1.29.0...@backstage-community/plugin-kiali@1.30.0) (2024-07-30) + +### Features + +- **kiali:** traffic graph ([#1606](https://github.com/janus-idp/backstage-plugins/issues/1606)) ([657fef9](https://github.com/janus-idp/backstage-plugins/commit/657fef97d73e8ba2ad6a3e0c5bc95379f802aa69)) + +## @backstage-community/plugin-kiali [1.29.0](https://github.com/janus-idp/backstage-plugins/compare/@backstage-community/plugin-kiali@1.28.0...@backstage-community/plugin-kiali@1.29.0) (2024-07-26) + +### Features + +- **deps:** update to backstage 1.29 ([#1900](https://github.com/janus-idp/backstage-plugins/issues/1900)) ([f53677f](https://github.com/janus-idp/backstage-plugins/commit/f53677fb02d6df43a9de98c43a9f101a6db76802)) + +## @backstage-community/plugin-kiali [1.28.0](https://github.com/janus-idp/backstage-plugins/compare/@backstage-community/plugin-kiali@1.27.0...@backstage-community/plugin-kiali@1.28.0) (2024-07-24) + +### Features + +- **deps:** update to backstage 1.28 ([#1891](https://github.com/janus-idp/backstage-plugins/issues/1891)) ([1ba1108](https://github.com/janus-idp/backstage-plugins/commit/1ba11088e0de60e90d138944267b83600dc446e5)) + +## @backstage-community/plugin-kiali [1.27.0](https://github.com/janus-idp/backstage-plugins/compare/@backstage-community/plugin-kiali@1.26.0...@backstage-community/plugin-kiali@1.27.0) (2024-07-17) + +### Features + +- **kiali:** sticky headers for tables ([#1877](https://github.com/janus-idp/backstage-plugins/issues/1877)) ([64578d9](https://github.com/janus-idp/backstage-plugins/commit/64578d9c409d5e0d5ed58a93d911ecfe29587679)) + +## @backstage-community/plugin-kiali [1.26.0](https://github.com/janus-idp/backstage-plugins/compare/@backstage-community/plugin-kiali@1.25.0...@backstage-community/plugin-kiali@1.26.0) (2024-07-10) + +### Features + +- **kiali:** revert changes to Kiali 1.86 ([#1839](https://github.com/janus-idp/backstage-plugins/issues/1839)) ([#1876](https://github.com/janus-idp/backstage-plugins/issues/1876)) ([c512b29](https://github.com/janus-idp/backstage-plugins/commit/c512b298e028d371cb8d22260cdd707e1f5b1ff7)) + +## @backstage-community/plugin-kiali [1.25.0](https://github.com/janus-idp/backstage-plugins/compare/@backstage-community/plugin-kiali@1.24.1...@backstage-community/plugin-kiali@1.25.0) (2024-07-09) + +### Features + +- **kiali:** improve styles ([#1861](https://github.com/janus-idp/backstage-plugins/issues/1861)) ([158800f](https://github.com/janus-idp/backstage-plugins/commit/158800fc3f59a4901ea43c7cc00695a6bfb86ca8)) + +## @backstage-community/plugin-kiali [1.24.1](https://github.com/janus-idp/backstage-plugins/compare/@backstage-community/plugin-kiali@1.24.0...@backstage-community/plugin-kiali@1.24.1) (2024-07-08) + +### Bug Fixes + +- **kiali:** add bearer token ([#1870](https://github.com/janus-idp/backstage-plugins/issues/1870)) ([8875276](https://github.com/janus-idp/backstage-plugins/commit/8875276d8f836111462161ef4a6e0caae9209409)) + +## @backstage-community/plugin-kiali [1.24.0](https://github.com/janus-idp/backstage-plugins/compare/@backstage-community/plugin-kiali@1.23.0...@backstage-community/plugin-kiali@1.24.0) (2024-06-28) + +### Features + +- **kiali:** changes to Kiali 1.86 ([#1839](https://github.com/janus-idp/backstage-plugins/issues/1839)) ([ab1f6bc](https://github.com/janus-idp/backstage-plugins/commit/ab1f6bcb0a803406c96ea944701e5efa94c9cbcf)) + +## @backstage-community/plugin-kiali [1.23.0](https://github.com/janus-idp/backstage-plugins/compare/@backstage-community/plugin-kiali@1.22.0...@backstage-community/plugin-kiali@1.23.0) (2024-06-26) + +### Features + +- **kiali:** add tests for the overview page ([#1790](https://github.com/janus-idp/backstage-plugins/issues/1790)) ([582cf36](https://github.com/janus-idp/backstage-plugins/commit/582cf36da48f21f7aa31075430bf566a818a3cfa)) + +## @backstage-community/plugin-kiali [1.22.0](https://github.com/janus-idp/backstage-plugins/compare/@backstage-community/plugin-kiali@1.21.0...@backstage-community/plugin-kiali@1.22.0) (2024-06-24) + +### Features + +- **kiali:** include Kiali external URL as a parameter ([#1835](https://github.com/janus-idp/backstage-plugins/issues/1835)) ([6dbe9eb](https://github.com/janus-idp/backstage-plugins/commit/6dbe9eb6cd635f682da6b893aad8bcd8ad2fb170)) + +## @backstage-community/plugin-kiali [1.21.0](https://github.com/janus-idp/backstage-plugins/compare/@backstage-community/plugin-kiali@1.20.0...@backstage-community/plugin-kiali@1.21.0) (2024-06-21) + +### Features + +- **kiali:** add banner to warn for tech preview windows ([#1829](https://github.com/janus-idp/backstage-plugins/issues/1829)) ([b0cb796](https://github.com/janus-idp/backstage-plugins/commit/b0cb7960b572dd17ec001a1afcb314219a45e656)) + +## @backstage-community/plugin-kiali [1.20.0](https://github.com/janus-idp/backstage-plugins/compare/@backstage-community/plugin-kiali@1.19.2...@backstage-community/plugin-kiali@1.20.0) (2024-06-20) + +### Features + +- **kiali:** resources card test coverage ([#1821](https://github.com/janus-idp/backstage-plugins/issues/1821)) ([4090fc2](https://github.com/janus-idp/backstage-plugins/commit/4090fc2e0a20db31fb08fc262dd290a67bd7b05e)) + +## @backstage-community/plugin-kiali [1.19.2](https://github.com/janus-idp/backstage-plugins/compare/@backstage-community/plugin-kiali@1.19.1...@backstage-community/plugin-kiali@1.19.2) (2024-06-19) + +### Dependencies + +- **@janus-idp/cli:** upgraded to 1.11.1 + +## @backstage-community/plugin-kiali [1.19.1](https://github.com/janus-idp/backstage-plugins/compare/@backstage-community/plugin-kiali@1.19.0...@backstage-community/plugin-kiali@1.19.1) (2024-06-14) + +## @backstage-community/plugin-kiali [1.19.0](https://github.com/janus-idp/backstage-plugins/compare/@backstage-community/plugin-kiali@1.18.14...@backstage-community/plugin-kiali@1.19.0) (2024-06-13) + +### Features + +- **deps:** update to backstage 1.27 ([#1683](https://github.com/janus-idp/backstage-plugins/issues/1683)) ([a14869c](https://github.com/janus-idp/backstage-plugins/commit/a14869c3f4177049cb8d6552b36c3ffd17e7997d)) + +### Dependencies + +- **@janus-idp/cli:** upgraded to 1.11.0 + +## @backstage-community/plugin-kiali [1.18.14](https://github.com/janus-idp/backstage-plugins/compare/@backstage-community/plugin-kiali@1.18.13...@backstage-community/plugin-kiali@1.18.14) (2024-06-13) + +### Dependencies + +- **@janus-idp/cli:** upgraded to 1.10.1 + +## @backstage-community/plugin-kiali [1.18.13](https://github.com/janus-idp/backstage-plugins/compare/@backstage-community/plugin-kiali@1.18.12...@backstage-community/plugin-kiali@1.18.13) (2024-06-10) + +### Bug Fixes + +- **kiali:** fix dev links ([#1801](https://github.com/janus-idp/backstage-plugins/issues/1801)) ([2a86a5e](https://github.com/janus-idp/backstage-plugins/commit/2a86a5e7ed43c520962f32a11bc1cce6d13523e3)) + +## @backstage-community/plugin-kiali [1.18.12](https://github.com/janus-idp/backstage-plugins/compare/@backstage-community/plugin-kiali@1.18.11...@backstage-community/plugin-kiali@1.18.12) (2024-06-06) + +### Bug Fixes + +- **kiali:** remove debug window ([#1793](https://github.com/janus-idp/backstage-plugins/issues/1793)) ([b5b5376](https://github.com/janus-idp/backstage-plugins/commit/b5b5376181d49074bd58bb34734561eab6ee8d2a)) + +## @backstage-community/plugin-kiali [1.18.11](https://github.com/janus-idp/backstage-plugins/compare/@backstage-community/plugin-kiali@1.18.10...@backstage-community/plugin-kiali@1.18.11) (2024-06-06) + +### Documentation + +- **kiali:** update development doc for alpha backend([#1720](https://github.com/janus-idp/backstage-plugins/issues/1720)) ([e06e9be](https://github.com/janus-idp/backstage-plugins/commit/e06e9bee0745e76beccb8d7e3810548fd46207db)) + +## @backstage-community/plugin-kiali [1.18.10](https://github.com/janus-idp/backstage-plugins/compare/@backstage-community/plugin-kiali@1.18.9...@backstage-community/plugin-kiali@1.18.10) (2024-06-06) + +### Bug Fixes + +- **kiali:** sanitize input for CWE-79 ([#1786](https://github.com/janus-idp/backstage-plugins/issues/1786)) ([9ba95bb](https://github.com/janus-idp/backstage-plugins/commit/9ba95bba7b9d5081829831e797b27f6a286971a4)) + +## @backstage-community/plugin-kiali [1.18.9](https://github.com/janus-idp/backstage-plugins/compare/@backstage-community/plugin-kiali@1.18.8...@backstage-community/plugin-kiali@1.18.9) (2024-06-05) + +### Dependencies + +- **@janus-idp/cli:** upgraded to 1.10.0 + +## @backstage-community/plugin-kiali [1.18.8](https://github.com/janus-idp/backstage-plugins/compare/@backstage-community/plugin-kiali@1.18.7...@backstage-community/plugin-kiali@1.18.8) (2024-06-04) + +## @backstage-community/plugin-kiali [1.18.7](https://github.com/janus-idp/backstage-plugins/compare/@backstage-community/plugin-kiali@1.18.6...@backstage-community/plugin-kiali@1.18.7) (2024-06-04) + +### Bug Fixes + +- **deps:** update kiali dependencies (minor) ([#1779](https://github.com/janus-idp/backstage-plugins/issues/1779)) ([ff2b421](https://github.com/janus-idp/backstage-plugins/commit/ff2b421be9206d395805f497d4e2821ca4d6edc1)) + +## @backstage-community/plugin-kiali [1.18.6](https://github.com/janus-idp/backstage-plugins/compare/@backstage-community/plugin-kiali@1.18.5...@backstage-community/plugin-kiali@1.18.6) (2024-06-03) + +### Dependencies + +- **@janus-idp/cli:** upgraded to 1.9.0 + +## @backstage-community/plugin-kiali [1.18.5](https://github.com/janus-idp/backstage-plugins/compare/@backstage-community/plugin-kiali@1.18.4...@backstage-community/plugin-kiali@1.18.5) (2024-05-31) + +## @backstage-community/plugin-kiali [1.18.4](https://github.com/janus-idp/backstage-plugins/compare/@backstage-community/plugin-kiali@1.18.3...@backstage-community/plugin-kiali@1.18.4) (2024-05-31) + +## @backstage-community/plugin-kiali [1.18.3](https://github.com/janus-idp/backstage-plugins/compare/@backstage-community/plugin-kiali@1.18.2...@backstage-community/plugin-kiali@1.18.3) (2024-05-29) + +### Dependencies + +- **@janus-idp/cli:** upgraded to 1.8.10 + +## @backstage-community/plugin-kiali [1.18.2](https://github.com/janus-idp/backstage-plugins/compare/@backstage-community/plugin-kiali@1.18.1...@backstage-community/plugin-kiali@1.18.2) (2024-05-29) + +### Dependencies + +- **@janus-idp/cli:** upgraded to 1.8.9 + +## @backstage-community/plugin-kiali [1.18.1](https://github.com/janus-idp/backstage-plugins/compare/@backstage-community/plugin-kiali@1.18.0...@backstage-community/plugin-kiali@1.18.1) (2024-05-16) + +### Dependencies + +- **@janus-idp/cli:** upgraded to 1.8.7 + +## @backstage-community/plugin-kiali [1.18.0](https://github.com/janus-idp/backstage-plugins/compare/@backstage-community/plugin-kiali@1.17.3...@backstage-community/plugin-kiali@1.18.0) (2024-05-14) + +### Features + +- **deps:** use RHDH themes in the backstage app and dev pages ([#1480](https://github.com/janus-idp/backstage-plugins/issues/1480)) ([8263bf0](https://github.com/janus-idp/backstage-plugins/commit/8263bf099736cbb0d0f2316082d338ba81fa6927)) + +## @backstage-community/plugin-kiali [1.17.3](https://github.com/janus-idp/backstage-plugins/compare/@backstage-community/plugin-kiali@1.17.2...@backstage-community/plugin-kiali@1.17.3) (2024-05-13) + +### Bug Fixes + +- **kiali:** removing unnecessary afterAll hook ([#1642](https://github.com/janus-idp/backstage-plugins/issues/1642)) ([a314607](https://github.com/janus-idp/backstage-plugins/commit/a3146073bebb17b6f990891a277323a19e3731d6)) + +## @backstage-community/plugin-kiali [1.17.2](https://github.com/janus-idp/backstage-plugins/compare/@backstage-community/plugin-kiali@1.17.1...@backstage-community/plugin-kiali@1.17.2) (2024-05-09) + +### Dependencies + +- **@janus-idp/cli:** upgraded to 1.8.6 + +## @backstage-community/plugin-kiali [1.17.1](https://github.com/janus-idp/backstage-plugins/compare/@backstage-community/plugin-kiali@1.17.0...@backstage-community/plugin-kiali@1.17.1) (2024-05-08) + +### Documentation + +- **kiali:** update rhdh docs ([#1621](https://github.com/janus-idp/backstage-plugins/issues/1621)) ([7087cba](https://github.com/janus-idp/backstage-plugins/commit/7087cbad8929708f065e0027871a337946f09881)) + +## @backstage-community/plugin-kiali [1.17.0](https://github.com/janus-idp/backstage-plugins/compare/@backstage-community/plugin-kiali@1.16.10...@backstage-community/plugin-kiali@1.17.0) (2024-05-07) + +### Features + +- **kiali:** add card for resources ([#1565](https://github.com/janus-idp/backstage-plugins/issues/1565)) ([1e727aa](https://github.com/janus-idp/backstage-plugins/commit/1e727aae0464aa55e4dce754a04e97a5708c07f9)) + +## @backstage-community/plugin-kiali [1.16.10](https://github.com/janus-idp/backstage-plugins/compare/@backstage-community/plugin-kiali@1.16.9...@backstage-community/plugin-kiali@1.16.10) (2024-05-04) + +### Bug Fixes + +- **kiali:** remove IstioConfig extra, Fix links and add kiali control ([#1452](https://github.com/janus-idp/backstage-plugins/issues/1452)) ([51a35f0](https://github.com/janus-idp/backstage-plugins/commit/51a35f0ccee8a38555079b2fa6027639ee595f9b)) + +## @backstage-community/plugin-kiali [1.16.9](https://github.com/janus-idp/backstage-plugins/compare/@backstage-community/plugin-kiali@1.16.8...@backstage-community/plugin-kiali@1.16.9) (2024-05-02) + +### Dependencies + +- **@janus-idp/cli:** upgraded to 1.8.5 + +## @backstage-community/plugin-kiali [1.16.8](https://github.com/janus-idp/backstage-plugins/compare/@backstage-community/plugin-kiali@1.16.7...@backstage-community/plugin-kiali@1.16.8) (2024-05-02) + +### Dependencies + +- **@janus-idp/cli:** upgraded to 1.8.4 + +## @backstage-community/plugin-kiali [1.16.7](https://github.com/janus-idp/backstage-plugins/compare/@backstage-community/plugin-kiali@1.16.6...@backstage-community/plugin-kiali@1.16.7) (2024-04-30) + +### Dependencies + +- **@janus-idp/cli:** upgraded to 1.8.3 + +## @backstage-community/plugin-kiali [1.16.6](https://github.com/janus-idp/backstage-plugins/compare/@backstage-community/plugin-kiali@1.16.5...@backstage-community/plugin-kiali@1.16.6) (2024-04-30) + +### Dependencies + +- **@janus-idp/cli:** upgraded to 1.8.2 + +## @backstage-community/plugin-kiali [1.16.5](https://github.com/janus-idp/backstage-plugins/compare/@backstage-community/plugin-kiali@1.16.4...@backstage-community/plugin-kiali@1.16.5) (2024-04-25) + +### Bug Fixes + +- **kiali:** update load for overview page ([#1491](https://github.com/janus-idp/backstage-plugins/issues/1491)) ([8de16e2](https://github.com/janus-idp/backstage-plugins/commit/8de16e2f08f2f02ad8001a21d7ec0511ba965a86)) + +### Dependencies + +- **@janus-idp/cli:** upgraded to 1.8.1 + +## @backstage-community/plugin-kiali [1.16.4](https://github.com/janus-idp/backstage-plugins/compare/@backstage-community/plugin-kiali@1.16.3...@backstage-community/plugin-kiali@1.16.4) (2024-04-15) + +### Dependencies + +- **@janus-idp/cli:** upgraded to 1.8.0 + +## @backstage-community/plugin-kiali [1.16.3](https://github.com/janus-idp/backstage-plugins/compare/@backstage-community/plugin-kiali@1.16.2...@backstage-community/plugin-kiali@1.16.3) (2024-04-09) + +### Dependencies + +- **@janus-idp/cli:** upgraded to 1.7.10 + +## @backstage-community/plugin-kiali [1.16.2](https://github.com/janus-idp/backstage-plugins/compare/@backstage-community/plugin-kiali@1.16.1...@backstage-community/plugin-kiali@1.16.2) (2024-04-09) + +### Dependencies + +- **@janus-idp/cli:** upgraded to 1.7.9 + +## @backstage-community/plugin-kiali [1.16.1](https://github.com/janus-idp/backstage-plugins/compare/@backstage-community/plugin-kiali@1.16.0...@backstage-community/plugin-kiali@1.16.1) (2024-04-05) + +### Dependencies + +- **@janus-idp/cli:** upgraded to 1.7.8 + +## @backstage-community/plugin-kiali [1.16.0](https://github.com/janus-idp/backstage-plugins/compare/@backstage-community/plugin-kiali@1.15.0...@backstage-community/plugin-kiali@1.16.0) (2024-04-04) + +### Features + +- **kiali:** istio config list and details ([#1326](https://github.com/janus-idp/backstage-plugins/issues/1326)) ([f8fc349](https://github.com/janus-idp/backstage-plugins/commit/f8fc349e1305b10632520c4f25f78c45b54481bb)) + +## @backstage-community/plugin-kiali [1.15.0](https://github.com/janus-idp/backstage-plugins/compare/@backstage-community/plugin-kiali@1.14.2...@backstage-community/plugin-kiali@1.15.0) (2024-04-03) + +### Features + +- **kiali:** update dark theme ([#1434](https://github.com/janus-idp/backstage-plugins/issues/1434)) ([e0d84e1](https://github.com/janus-idp/backstage-plugins/commit/e0d84e177786187e0d7a8b279d7e72f710207d91)) + +## @backstage-community/plugin-kiali [1.14.2](https://github.com/janus-idp/backstage-plugins/compare/@backstage-community/plugin-kiali@1.14.1...@backstage-community/plugin-kiali@1.14.2) (2024-04-02) + +### Dependencies + +- **@janus-idp/cli:** upgraded to 1.7.7 + +## @backstage-community/plugin-kiali [1.14.1](https://github.com/janus-idp/backstage-plugins/compare/@backstage-community/plugin-kiali@1.14.0...@backstage-community/plugin-kiali@1.14.1) (2024-03-29) + +### Dependencies + +- **@janus-idp/cli:** upgraded to 1.7.6 + +## @backstage-community/plugin-kiali [1.14.0](https://github.com/janus-idp/backstage-plugins/compare/@backstage-community/plugin-kiali@1.13.0...@backstage-community/plugin-kiali@1.14.0) (2024-03-25) + +### Features + +- **kiali:** metrics tab ([#1331](https://github.com/janus-idp/backstage-plugins/issues/1331)) ([d80e331](https://github.com/janus-idp/backstage-plugins/commit/d80e33155481730c0e95de40da99ed0280e982c8)) + +## @backstage-community/plugin-kiali [1.13.0](https://github.com/janus-idp/backstage-plugins/compare/@backstage-community/plugin-kiali@1.12.1...@backstage-community/plugin-kiali@1.13.0) (2024-03-14) + +### Features + +- **kiali:** include a new List entity view ([#1316](https://github.com/janus-idp/backstage-plugins/issues/1316)) ([f4d5e70](https://github.com/janus-idp/backstage-plugins/commit/f4d5e70ed98ceaf6277402f39feb26bd114d0d6b)) + +## @backstage-community/plugin-kiali [1.12.1](https://github.com/janus-idp/backstage-plugins/compare/@backstage-community/plugin-kiali@1.12.0...@backstage-community/plugin-kiali@1.12.1) (2024-03-11) + +### Documentation + +- **kiali:** minor update in development docs ([#820](https://github.com/janus-idp/backstage-plugins/issues/820)) ([81e79bf](https://github.com/janus-idp/backstage-plugins/commit/81e79bf59ebff745a8775dc9ac784c7889e9532c)) + +## @backstage-community/plugin-kiali [1.12.0](https://github.com/janus-idp/backstage-plugins/compare/@backstage-community/plugin-kiali@1.11.3...@backstage-community/plugin-kiali@1.12.0) (2024-03-06) + +### Features + +- **kiali:** services and apps list and details overview ([#1276](https://github.com/janus-idp/backstage-plugins/issues/1276)) ([7e4c0a5](https://github.com/janus-idp/backstage-plugins/commit/7e4c0a5fd699b42def7989155bfc377a670575db)) + +## @backstage-community/plugin-kiali [1.11.3](https://github.com/janus-idp/backstage-plugins/compare/@backstage-community/plugin-kiali@1.11.2...@backstage-community/plugin-kiali@1.11.3) (2024-03-04) + +### Dependencies + +- **@janus-idp/cli:** upgraded to 1.7.5 + +## @backstage-community/plugin-kiali [1.11.2](https://github.com/janus-idp/backstage-plugins/compare/@backstage-community/plugin-kiali@1.11.1...@backstage-community/plugin-kiali@1.11.2) (2024-02-27) + +### Dependencies + +- **@janus-idp/cli:** upgraded to 1.7.4 + +## @backstage-community/plugin-kiali [1.11.1](https://github.com/janus-idp/backstage-plugins/compare/@backstage-community/plugin-kiali@1.11.0...@backstage-community/plugin-kiali@1.11.1) (2024-02-26) + +### Dependencies + +- **@janus-idp/cli:** upgraded to 1.7.3 + +## @backstage-community/plugin-kiali [1.11.0](https://github.com/janus-idp/backstage-plugins/compare/@backstage-community/plugin-kiali@1.10.2...@backstage-community/plugin-kiali@1.11.0) (2024-02-21) + +### Features + +- **kiali:** workloads details page overview tab ([#1198](https://github.com/janus-idp/backstage-plugins/issues/1198)) ([34adc57](https://github.com/janus-idp/backstage-plugins/commit/34adc57837406e80b93a1a1657e96ff902bf24bd)) + +### Dependencies + +- **@janus-idp/cli:** upgraded to 1.7.2 + +## @backstage-community/plugin-kiali [1.10.2](https://github.com/janus-idp/backstage-plugins/compare/@backstage-community/plugin-kiali@1.10.1...@backstage-community/plugin-kiali@1.10.2) (2024-02-19) + +### Bug Fixes + +- **kiali:** update styles, remove item details links ([#1207](https://github.com/janus-idp/backstage-plugins/issues/1207)) ([c133ea7](https://github.com/janus-idp/backstage-plugins/commit/c133ea76772b44ec348c5bff3ad4609f1938fdba)) + +## @backstage-community/plugin-kiali [1.10.1](https://github.com/janus-idp/backstage-plugins/compare/@backstage-community/plugin-kiali@1.10.0...@backstage-community/plugin-kiali@1.10.1) (2024-02-14) + +### Bug Fixes + +- **kiali:** add corner cases, fix some issues and improve dev env ([#1202](https://github.com/janus-idp/backstage-plugins/issues/1202)) ([fd9a8aa](https://github.com/janus-idp/backstage-plugins/commit/fd9a8aaae4aa7f625bbfdac954e2580d0dc0e30f)) + +## @backstage-community/plugin-kiali [1.10.0](https://github.com/janus-idp/backstage-plugins/compare/@backstage-community/plugin-kiali@1.9.1...@backstage-community/plugin-kiali@1.10.0) (2024-02-12) + +### Features + +- **kiali:** workloads page list ([#1129](https://github.com/janus-idp/backstage-plugins/issues/1129)) ([1e3991b](https://github.com/janus-idp/backstage-plugins/commit/1e3991b9af35ef5da8f9987fc2d17026d438a853)) + +## @backstage-community/plugin-kiali [1.9.1](https://github.com/janus-idp/backstage-plugins/compare/@backstage-community/plugin-kiali@1.9.0...@backstage-community/plugin-kiali@1.9.1) (2024-02-08) + +### Bug Fixes + +- **kiali:** namespaceSelector is removing options ([#1186](https://github.com/janus-idp/backstage-plugins/issues/1186)) ([0195b06](https://github.com/janus-idp/backstage-plugins/commit/0195b06158327649afb298715ceab9fc0e89a07b)) + +## @backstage-community/plugin-kiali [1.9.0](https://github.com/janus-idp/backstage-plugins/compare/@backstage-community/plugin-kiali@1.8.5...@backstage-community/plugin-kiali@1.9.0) (2024-02-07) + +### Features + +- **kiali:** add KialiPage Component ([#1180](https://github.com/janus-idp/backstage-plugins/issues/1180)) ([c91bcc3](https://github.com/janus-idp/backstage-plugins/commit/c91bcc3bc13b274312de3d0656d8ea865a3af27b)) + +## @backstage-community/plugin-kiali [1.8.5](https://github.com/janus-idp/backstage-plugins/compare/@backstage-community/plugin-kiali@1.8.4...@backstage-community/plugin-kiali@1.8.5) (2024-02-05) + +### Dependencies + +- **@janus-idp/cli:** upgraded to 1.7.1 + +## @backstage-community/plugin-kiali [1.8.4](https://github.com/janus-idp/backstage-plugins/compare/@backstage-community/plugin-kiali@1.8.3...@backstage-community/plugin-kiali@1.8.4) (2024-01-31) + +### Bug Fixes + +- **kiali:** show username when auth is anonymous ([#1139](https://github.com/janus-idp/backstage-plugins/issues/1139)) ([0a04992](https://github.com/janus-idp/backstage-plugins/commit/0a04992b0581a3cb47017c0713703ed7e204ac02)) + +## @backstage-community/plugin-kiali [1.8.3](https://github.com/janus-idp/backstage-plugins/compare/@backstage-community/plugin-kiali@1.8.2...@backstage-community/plugin-kiali@1.8.3) (2024-01-30) + +### Dependencies + +- **@janus-idp/cli:** upgraded to 1.7.0 + +## @backstage-community/plugin-kiali [1.8.2](https://github.com/janus-idp/backstage-plugins/compare/@backstage-community/plugin-kiali@1.8.1...@backstage-community/plugin-kiali@1.8.2) (2024-01-25) + +### Dependencies + +- **@janus-idp/cli:** upgraded to 1.6.0 + +## @backstage-community/plugin-kiali [1.8.1](https://github.com/janus-idp/backstage-plugins/compare/@backstage-community/plugin-kiali@1.8.0...@backstage-community/plugin-kiali@1.8.1) (2024-01-24) + +### Bug Fixes + +- **kiali:** fix sessionTime configuration and tests ([#1099](https://github.com/janus-idp/backstage-plugins/issues/1099)) ([882381c](https://github.com/janus-idp/backstage-plugins/commit/882381c0b65a2bcfecc2365048f83376938a0fb8)), closes [#1100](https://github.com/janus-idp/backstage-plugins/issues/1100) + +## @backstage-community/plugin-kiali [1.8.0](https://github.com/janus-idp/backstage-plugins/compare/@backstage-community/plugin-kiali@1.7.0...@backstage-community/plugin-kiali@1.8.0) (2024-01-19) + +### Other changes + +- **kiali:** add context, remove kiali-common and refactor backend ([#855](https://github.com/janus-idp/backstage-plugins/issues/855)) ([54c7001](https://github.com/janus-idp/backstage-plugins/commit/54c70018d948912d36a4949bbaf1633763fb9ae1)) + +## @backstage-community/plugin-kiali [1.7.0](https://github.com/janus-idp/backstage-plugins/compare/@backstage-community/plugin-kiali@1.6.13...@backstage-community/plugin-kiali@1.7.0) (2024-01-18) + +### Features + +- **kiali:** add OWNERS file to kiali\* plugin ([#1082](https://github.com/janus-idp/backstage-plugins/issues/1082)) ([e2dc23b](https://github.com/janus-idp/backstage-plugins/commit/e2dc23b9db3da0384137e809795a57da118e494d)) + +## @backstage-community/plugin-kiali [1.6.13](https://github.com/janus-idp/backstage-plugins/compare/@backstage-community/plugin-kiali@1.6.12...@backstage-community/plugin-kiali@1.6.13) (2024-01-16) + +### Dependencies + +- **@janus-idp/cli:** upgraded to 1.5.0 + +## @backstage-community/plugin-kiali [1.6.12](https://github.com/janus-idp/backstage-plugins/compare/@backstage-community/plugin-kiali@1.6.11...@backstage-community/plugin-kiali@1.6.12) (2023-12-07) + +### Dependencies + +- **@janus-idp/cli:** upgraded to 1.4.7 + +## @backstage-community/plugin-kiali [1.6.11](https://github.com/janus-idp/backstage-plugins/compare/@backstage-community/plugin-kiali@1.6.10...@backstage-community/plugin-kiali@1.6.11) (2023-11-30) + +### Dependencies + +- **@janus-idp/cli:** upgraded to 1.4.6 + +## @backstage-community/plugin-kiali [1.6.10](https://github.com/janus-idp/backstage-plugins/compare/@backstage-community/plugin-kiali@1.6.9...@backstage-community/plugin-kiali@1.6.10) (2023-11-22) + +### Dependencies + +- **@janus-idp/cli:** upgraded to 1.4.5 + +## @backstage-community/plugin-kiali [1.6.9](https://github.com/janus-idp/backstage-plugins/compare/@backstage-community/plugin-kiali@1.6.8...@backstage-community/plugin-kiali@1.6.9) (2023-11-21) + +### Bug Fixes + +- sync versions in dynamic assets and publish derived packages as additional packages ([#963](https://github.com/janus-idp/backstage-plugins/issues/963)) ([7d0a386](https://github.com/janus-idp/backstage-plugins/commit/7d0a38609b4a18b54c75378a150e8b5c3ba8ff43)) + +## @backstage-community/plugin-kiali [1.6.8](https://github.com/janus-idp/backstage-plugins/compare/@backstage-community/plugin-kiali@1.6.7...@backstage-community/plugin-kiali@1.6.8) (2023-11-20) + +### Dependencies + +- **@janus-idp/cli:** upgraded to 1.4.4 + +## @backstage-community/plugin-kiali [1.6.7](https://github.com/janus-idp/backstage-plugins/compare/@backstage-community/plugin-kiali@1.6.6...@backstage-community/plugin-kiali@1.6.7) (2023-11-16) + +### Dependencies + +- **@janus-idp/cli:** upgraded to 1.4.3 + +## @backstage-community/plugin-kiali [1.6.6](https://github.com/janus-idp/backstage-plugins/compare/@backstage-community/plugin-kiali@1.6.5...@backstage-community/plugin-kiali@1.6.6) (2023-11-13) + +### Dependencies + +- **@janus-idp/cli:** upgraded to 1.4.2 + +## @backstage-community/plugin-kiali [1.6.5](https://github.com/janus-idp/backstage-plugins/compare/@backstage-community/plugin-kiali@1.6.4...@backstage-community/plugin-kiali@1.6.5) (2023-11-13) + +### Dependencies + +- **@janus-idp/cli:** upgraded to 1.4.1 + +## @backstage-community/plugin-kiali [1.6.4](https://github.com/janus-idp/backstage-plugins/compare/@backstage-community/plugin-kiali@1.6.3...@backstage-community/plugin-kiali@1.6.4) (2023-11-07) + +### Dependencies + +- **@janus-idp/cli:** upgraded to 1.4.0 + +## @backstage-community/plugin-kiali [1.6.3](https://github.com/janus-idp/backstage-plugins/compare/@backstage-community/plugin-kiali@1.6.2...@backstage-community/plugin-kiali@1.6.3) (2023-11-06) + +### Bug Fixes + +- **cli:** add default scalprum config ([#909](https://github.com/janus-idp/backstage-plugins/issues/909)) ([d74fc72](https://github.com/janus-idp/backstage-plugins/commit/d74fc72ab7e0a843da047c7b6570d8a6fbc068e1)) + +### Dependencies + +- **@janus-idp/cli:** upgraded to 1.3.3 + +## @backstage-community/plugin-kiali [1.6.2](https://github.com/janus-idp/backstage-plugins/compare/@backstage-community/plugin-kiali@1.6.1...@backstage-community/plugin-kiali@1.6.2) (2023-11-06) + +### Documentation + +- update frontend plugin docs to use EntityLayout instead of EntityPageLayout ([#907](https://github.com/janus-idp/backstage-plugins/issues/907)) ([aa91bba](https://github.com/janus-idp/backstage-plugins/commit/aa91bba4c7a43de416258eb019724e21c7cf4bb8)) + +## @backstage-community/plugin-kiali [1.6.1](https://github.com/janus-idp/backstage-plugins/compare/@backstage-community/plugin-kiali@1.6.0...@backstage-community/plugin-kiali@1.6.1) (2023-11-02) + +### Dependencies + +- **@janus-idp/cli:** upgraded to 1.3.2 + +## @backstage-community/plugin-kiali [1.6.0](https://github.com/janus-idp/backstage-plugins/compare/@backstage-community/plugin-kiali@1.5.5...@backstage-community/plugin-kiali@1.6.0) (2023-11-01) + +### Features + +- **dynamic-plugins:** publish dynamic assets for all frontend plugins ([#896](https://github.com/janus-idp/backstage-plugins/issues/896)) ([dcfb0ac](https://github.com/janus-idp/backstage-plugins/commit/dcfb0ac56769c82f6b8b2cef2726251e0b60c375)) + +## @backstage-community/plugin-kiali [1.5.5](https://github.com/janus-idp/backstage-plugins/compare/@backstage-community/plugin-kiali@1.5.4...@backstage-community/plugin-kiali@1.5.5) (2023-10-27) + +### Dependencies + +- **@backstage-community/plugin-kiali-common:** upgraded to 1.0.0 + +## @backstage-community/plugin-kiali [1.5.4](https://github.com/janus-idp/backstage-plugins/compare/@backstage-community/plugin-kiali@1.5.3...@backstage-community/plugin-kiali@1.5.4) (2023-10-25) + +### Bug Fixes + +- **kiali:** use prevState callback ([#874](https://github.com/janus-idp/backstage-plugins/issues/874)) ([13a01f7](https://github.com/janus-idp/backstage-plugins/commit/13a01f79be812fe74f71f474152c7e8fe0f4fe90)) + +## @backstage-community/plugin-kiali [1.5.3](https://github.com/janus-idp/backstage-plugins/compare/@backstage-community/plugin-kiali@1.5.2...@backstage-community/plugin-kiali@1.5.3) (2023-10-19) + +### Dependencies + +- **@backstage-community/plugin-kiali-common:** upgraded to 1.4.1 + +## @backstage-community/plugin-kiali [1.5.2](https://github.com/janus-idp/backstage-plugins/compare/@backstage-community/plugin-kiali@1.5.1...@backstage-community/plugin-kiali@1.5.2) (2023-09-22) + +## @backstage-community/plugin-kiali [1.5.1](https://github.com/janus-idp/backstage-plugins/compare/@backstage-community/plugin-kiali@1.5.0...@backstage-community/plugin-kiali@1.5.1) (2023-09-11) + +## @backstage-community/plugin-kiali [1.5.0](https://github.com/janus-idp/backstage-plugins/compare/@backstage-community/plugin-kiali@1.4.0...@backstage-community/plugin-kiali@1.5.0) (2023-08-30) + +### Features + +- **kiali:** add namespace selector ([#675](https://github.com/janus-idp/backstage-plugins/issues/675)) ([e3cfc26](https://github.com/janus-idp/backstage-plugins/commit/e3cfc26bdf550916da3ee801601196d8614471b5)) + +### Dependencies + +- **@backstage-community/plugin-kiali-common:** upgraded to 1.4.0 + +## @backstage-community/plugin-kiali [1.4.0](https://github.com/janus-idp/backstage-plugins/compare/@backstage-community/plugin-kiali@1.3.1...@backstage-community/plugin-kiali@1.4.0) (2023-08-29) + +### Features + +- **kiali:** frontend dev environment ([#687](https://github.com/janus-idp/backstage-plugins/issues/687)) ([c4f4ddd](https://github.com/janus-idp/backstage-plugins/commit/c4f4dddd1f2b6ba5b908bbf1a5f88dc9d54b93e5)) + +## @backstage-community/plugin-kiali [1.3.1](https://github.com/janus-idp/backstage-plugins/compare/@backstage-community/plugin-kiali@1.3.0...@backstage-community/plugin-kiali@1.3.1) (2023-08-29) + +### Bug Fixes + +- **kiali:** upgrade patternfly ([#673](https://github.com/janus-idp/backstage-plugins/issues/673)) ([6e5702f](https://github.com/janus-idp/backstage-plugins/commit/6e5702f196c2fbf8de888ca5083241a58548469e)) + +## @backstage-community/plugin-kiali [1.3.0](https://github.com/janus-idp/backstage-plugins/compare/@backstage-community/plugin-kiali@1.2.1...@backstage-community/plugin-kiali@1.3.0) (2023-08-28) + +### Features + +- **kiali:** show kiali information in header ([#630](https://github.com/janus-idp/backstage-plugins/issues/630)) ([b9a83b3](https://github.com/janus-idp/backstage-plugins/commit/b9a83b332ec518e60a9780961fdce070eda02d02)) + +### Dependencies + +- **@backstage-community/plugin-kiali-common:** upgraded to 1.3.0 + +## @backstage-community/plugin-kiali [1.2.1](https://github.com/janus-idp/backstage-plugins/compare/@backstage-community/plugin-kiali@1.2.0...@backstage-community/plugin-kiali@1.2.1) (2023-08-22) + +### Bug Fixes + +- **kiali:** fix code smells ([#607](https://github.com/janus-idp/backstage-plugins/issues/607)) ([ef2eecf](https://github.com/janus-idp/backstage-plugins/commit/ef2eecfa71e2a60b4442ce3105a526b3332eaa1b)) + +### Dependencies + +- **@backstage-community/plugin-kiali-common:** upgraded to 1.2.1 + +## @backstage-community/plugin-kiali [1.2.0](https://github.com/janus-idp/backstage-plugins/compare/@backstage-community/plugin-kiali@1.1.0...@backstage-community/plugin-kiali@1.2.0) (2023-08-14) + +### Features + +- **ts:** transpile each plugin separately ([#634](https://github.com/janus-idp/backstage-plugins/issues/634)) ([b94c4dc](https://github.com/janus-idp/backstage-plugins/commit/b94c4dc50ada328e5ce1bed5fb7c76f64607e1ee)) + +### Dependencies + +- **@backstage-community/plugin-kiali-common:** upgraded to 1.2.0 + +## @backstage-community/plugin-kiali [1.1.0](https://github.com/janus-idp/backstage-plugins/compare/@backstage-community/plugin-kiali@1.0.3...@backstage-community/plugin-kiali@1.1.0) (2023-07-27) + +### Features + +- **kiali:** move from node-fetch to axios ([#573](https://github.com/janus-idp/backstage-plugins/issues/573)) ([c0ed797](https://github.com/janus-idp/backstage-plugins/commit/c0ed7972ef8fa143d51b590ca5f874900e5d8bef)) + +### Dependencies + +- **@backstage-community/plugin-kiali-common:** upgraded to 1.1.0 + +## @backstage-community/plugin-kiali [1.0.3](https://github.com/janus-idp/backstage-plugins/compare/@backstage-community/plugin-kiali@1.0.2...@backstage-community/plugin-kiali@1.0.3) (2023-07-25) + +## @backstage-community/plugin-kiali [1.0.2](https://github.com/janus-idp/backstage-plugins/compare/@backstage-community/plugin-kiali@1.0.1...@backstage-community/plugin-kiali@1.0.2) (2023-07-25) + +## @backstage-community/plugin-kiali [1.0.1](https://github.com/janus-idp/backstage-plugins/compare/@backstage-community/plugin-kiali@1.0.0...@backstage-community/plugin-kiali@1.0.1) (2023-07-25) + +## @backstage-community/plugin-kiali 1.0.0 (2023-07-25) + +### Features + +- **kiali:** kiali plugin ([#371](https://github.com/janus-idp/backstage-plugins/issues/371)) ([08d5583](https://github.com/janus-idp/backstage-plugins/commit/08d5583f839a8233d7b08a7ec1eb043bf4978e91)) + +### Dependencies + +- **@backstage-community/plugin-kiali-common:** upgraded to 1.0.0 diff --git a/workspaces/kiali/plugins/kiali/README.md b/workspaces/kiali/plugins/kiali/README.md new file mode 100644 index 0000000000..8ac0e07113 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/README.md @@ -0,0 +1,4 @@ +# Kiali plugin for Backstage + +The Kiali Plugin +This plugin exposes information about your entity-specific ServiceMesh objects. diff --git a/workspaces/kiali/plugins/kiali/dev/MockProvider.tsx b/workspaces/kiali/plugins/kiali/dev/MockProvider.tsx new file mode 100644 index 0000000000..fd8ce89d72 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/MockProvider.tsx @@ -0,0 +1,574 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import React from 'react'; + +import { Entity } from '@backstage/catalog-model'; +import { Content, HeaderTabs, Page } from '@backstage/core-components'; +import { EntityProvider } from '@backstage/plugin-catalog-react'; +import { TestApiProvider } from '@backstage/test-utils'; + +import { getEntityRoutes } from '../src/components/Router'; +import { AppDetailsPage } from '../src/pages/AppDetails/AppDetailsPage'; +import { AppListPage } from '../src/pages/AppList/AppListPage'; +import { IstioConfigDetailsPage } from '../src/pages/IstioConfigDetails/IstioConfigDetailsPage'; +import { IstioConfigListPage } from '../src/pages/IstioConfigList/IstioConfigListPage'; +import { KialiNoPath } from '../src/pages/Kiali'; +import { KialiHeader } from '../src/pages/Kiali/Header/KialiHeader'; +import { OverviewPage } from '../src/pages/Overview/OverviewPage'; +import { ServiceDetailsPage } from '../src/pages/ServiceDetails/ServiceDetailsPage'; +import { ServiceListPage } from '../src/pages/ServiceList/ServiceListPage'; +import TrafficGraphPage from '../src/pages/TrafficGraph/TrafficGraphPage'; +import { WorkloadDetailsPage } from '../src/pages/WorkloadDetails/WorkloadDetailsPage'; +import { WorkloadListPage } from '../src/pages/WorkloadList/WorkloadListPage'; +import { KialiApi, kialiApiRef } from '../src/services/Api'; +import { KialiProvider } from '../src/store/KialiProvider'; +import { App, AppQuery } from '../src/types/App'; +import { AppList, AppListQuery } from '../src/types/AppList'; +import { AuthInfo } from '../src/types/Auth'; +import { CertsInfo } from '../src/types/CertsInfo'; +import { DurationInSeconds, TimeInSeconds } from '../src/types/Common'; +import { DashboardModel } from '../src/types/Dashboards'; +import { GrafanaInfo } from '../src/types/GrafanaInfo'; +import { GraphDefinition, GraphElementsQuery } from '../src/types/Graph'; +import { + AppHealth, + NamespaceAppHealth, + NamespaceServiceHealth, + NamespaceWorkloadHealth, + ServiceHealth, + WorkloadHealth, +} from '../src/types/Health'; +import { IstioConfigDetails } from '../src/types/IstioConfigDetails'; +import { IstioConfigList, IstioConfigsMap } from '../src/types/IstioConfigList'; +import { + CanaryUpgradeStatus, + OutboundTrafficPolicy, + PodLogs, + ValidationStatus, +} from '../src/types/IstioObjects'; +import { + ComponentStatus, + IstiodResourceThresholds, +} from '../src/types/IstioStatus'; +import { IstioMetricsMap } from '../src/types/Metrics'; +import { IstioMetricsOptions } from '../src/types/MetricsOptions'; +import { Namespace } from '../src/types/Namespace'; +import { KialiCrippledFeatures, ServerConfig } from '../src/types/ServerConfig'; +import { ServiceDetailsInfo } from '../src/types/ServiceInfo'; +import { ServiceList, ServiceListQuery } from '../src/types/ServiceList'; +import { StatusState } from '../src/types/StatusState'; +import { TLSStatus } from '../src/types/TLSStatus'; +import { Span, TracingQuery } from '../src/types/Tracing'; +import { + Workload, + WorkloadListItem, + WorkloadNamespaceResponse, + WorkloadOverview, + WorkloadQuery, +} from '../src/types/Workload'; +import { filterNsByAnnotation } from '../src/utils/entityFilter'; +import { kialiData } from './__fixtures__'; +import { mockEntity } from './mockEntity'; + +export class MockKialiClient implements KialiApi { + private entity?: Entity; + + constructor() { + this.entity = undefined; + } + + getGraphElements(_params: GraphElementsQuery): Promise { + return kialiData.graph; + } + + setEntity(entity?: Entity): void { + this.entity = entity; + } + + async status(): Promise { + return kialiData.status; + } + + async getAuthInfo(): Promise { + return kialiData.auth; + } + async getStatus(): Promise { + return kialiData.status; + } + + async getNamespaces(): Promise { + return filterNsByAnnotation( + kialiData.namespaces as Namespace[], + this.entity, + ); + } + + async getWorkloads( + namespace: string, + duration: number, + ): Promise { + const nsl = kialiData.workloads as WorkloadNamespaceResponse[]; + // @ts-ignore + return nsl[namespace].workloads.map( + (w: WorkloadOverview): WorkloadListItem => { + return { + name: w.name, + namespace: namespace, + cluster: w.cluster, + type: w.type, + istioSidecar: w.istioSidecar, + istioAmbient: w.istioAmbient, + additionalDetailSample: undefined, + appLabel: w.appLabel, + versionLabel: w.versionLabel, + labels: w.labels, + istioReferences: w.istioReferences, + notCoveredAuthPolicy: w.notCoveredAuthPolicy, + health: WorkloadHealth.fromJson(namespace, w.name, w.health, { + rateInterval: duration, + hasSidecar: w.istioSidecar, + hasAmbient: w.istioAmbient, + }), + }; + }, + ); + } + + async getWorkload( + namespace: string, + name: string, + _: WorkloadQuery, + __?: string, + ): Promise { + const parsedName = name.replace(/-/g, ''); + return kialiData.namespacesData[namespace].workloads[parsedName]; + } + + async getIstioConfig( + namespace: string, + _: string[], + __: boolean, + ___: string, + ____: string, + _____?: string, + ): Promise { + return kialiData.namespacesData[namespace].istioConfigList; + } + + async getServerConfig(): Promise { + return kialiData.config; + } + + async getNamespaceAppHealth( + namespace: string, + duration: DurationInSeconds, + cluster?: string, + queryTime?: TimeInSeconds, + ): Promise { + const ret: NamespaceAppHealth = {}; + const params: any = { + type: 'app', + rateInterval: `${String(duration)}s`, + queryTime: String(queryTime), + clusterName: cluster, + }; + const data = kialiData.namespacesData[namespace].health[params.type]; + Object.keys(data).forEach(k => { + ret[k] = AppHealth.fromJson(namespace, k, data[k], { + rateInterval: duration, + hasSidecar: true, + hasAmbient: false, + }); + }); + return ret; + } + + async getNamespaceServiceHealth( + namespace: string, + duration: DurationInSeconds, + cluster?: string, + queryTime?: TimeInSeconds, + ): Promise { + const ret: NamespaceServiceHealth = {}; + const params: any = { + type: 'service', + rateInterval: `${String(duration)}s`, + queryTime: String(queryTime), + clusterName: cluster, + }; + const data = kialiData.namespacesData[namespace].health[params.type]; + Object.keys(data).forEach(k => { + ret[k] = ServiceHealth.fromJson(namespace, k, data[k], { + rateInterval: duration, + hasSidecar: true, + hasAmbient: false, + }); + }); + return ret; + } + + async getNamespaceWorkloadHealth( + namespace: string, + duration: DurationInSeconds, + cluster?: string, + queryTime?: TimeInSeconds, + ): Promise { + const ret: NamespaceWorkloadHealth = {}; + const params: any = { + type: 'workload', + rateInterval: `${String(duration)}s`, + queryTime: String(queryTime), + clusterName: cluster, + }; + const data = kialiData.namespacesData[namespace].health[params.type]; + Object.keys(data).forEach(k => { + ret[k] = WorkloadHealth.fromJson(namespace, k, data[k], { + rateInterval: duration, + hasSidecar: true, + hasAmbient: false, + }); + }); + return ret; + } + + async getNamespaceTls( + namespace: string, + cluster?: string, + ): Promise { + const queryParams: any = {}; + if (cluster) { + queryParams.clusterName = cluster; + } + return kialiData.namespacesData[namespace].tls; + } + + async getMeshTls(cluster?: string): Promise { + const queryParams: any = {}; + if (cluster) { + queryParams.clusterName = cluster; + } + return kialiData.meshTls; + } + + async getOutboundTrafficPolicyMode(): Promise { + return kialiData.outboundTrafficPolicy; + } + + async getCanaryUpgradeStatus(): Promise { + return kialiData.meshCanaryStatus; + } + + async getIstiodResourceThresholds(): Promise { + return kialiData.meshIstioResourceThresholds; + } + + async getConfigValidations(cluster?: string): Promise { + const queryParams: any = {}; + if (cluster) { + queryParams.clusterName = cluster; + } + return kialiData.istioValidations; + } + + async getAllIstioConfigs( + namespaces: string[], + objects: string[], + validate: boolean, + labelSelector: string, + workloadSelector: string, + cluster?: string, + ): Promise { + const params: any = + namespaces && namespaces.length > 0 + ? { namespaces: namespaces.join(',') } + : {}; + if (objects && objects.length > 0) { + params.objects = objects.join(','); + } + if (validate) { + params.validate = validate; + } + if (labelSelector) { + params.labelSelector = labelSelector; + } + if (workloadSelector) { + params.workloadSelector = workloadSelector; + } + if (cluster) { + params.clusterName = cluster; + } + return kialiData.istioConfig; + } + + async getNamespaceMetrics( + namespace: string, + params: IstioMetricsOptions, + ): Promise> { + return kialiData.namespacesData[namespace].metrics[params.direction][ + params.duration as number + ]; + } + + async getIstioStatus(cluster?: string): Promise { + const queryParams: any = {}; + if (cluster) { + queryParams.clusterName = cluster; + } + return kialiData.istioStatus; + } + + async getIstioCertsInfo(): Promise { + return kialiData.istioCertsInfo; + } + isDevEnv(): boolean { + return true; + } + + async getPodLogs( + _: string, + __: string, + container?: string, + ___?: number, + ____?: number, + _duration?: DurationInSeconds, + _isProxy?: boolean, + _cluster?: string, + ): Promise { + if (container === 'istio-proxy') { + return kialiData.istioLogs; + } + return kialiData.logs; + } + + setPodEnvoyProxyLogLevel = async ( + _namespace: string, + _name: string, + _level: string, + _cluster?: string, + ): Promise => { + return; + }; + + async getWorkloadSpans( + _: string, + __: string, + ___: TracingQuery, + ____?: string, + ): Promise { + return kialiData.spanLogs; + } + + async getServices( + namespace: string, + _?: ServiceListQuery, + ): Promise { + return kialiData.services[namespace]; + } + + async getIstioConfigDetail( + namespace: string, + objectType: string, + object: string, + _validate: boolean, + _cluster?: string, + ): Promise { + return kialiData.namespacesData[namespace].istioConfigDetails[objectType][ + object + ]; + } + + async getServiceDetail( + namespace: string, + service: string, + _validate: boolean, + _cluster?: string, + rateInterval?: DurationInSeconds, + ): Promise { + const parsedName = service.replace(/-/g, ''); + const info: ServiceDetailsInfo = + kialiData.namespacesData[namespace].services[parsedName]; + + if (info.health) { + // Default rate interval in backend = 600s + info.health = ServiceHealth.fromJson(namespace, service, info.health, { + rateInterval: rateInterval ?? 600, + hasSidecar: info.istioSidecar, + hasAmbient: info.istioAmbient, + }); + } + return info; + } + + getApps = async ( + namespace: string, + _params: AppListQuery, + ): Promise => { + return kialiData.apps[namespace]; + }; + + getApp = async ( + namespace: string, + app: string, + _params: AppQuery, + _cluster?: string, + ): Promise => { + const parsedName = app.replace(/-/g, ''); + return kialiData.namespacesData[namespace].apps[parsedName]; + }; + + getCrippledFeatures = async (): Promise => { + return kialiData.crippledFeatures; + }; + + getWorkloadDashboard = async ( + namespace: string, + _workload: string, + _params: IstioMetricsOptions, + _cluster?: string, + ): Promise => { + return kialiData.namespacesData[namespace].dashboard; + }; + + getServiceDashboard = async ( + namespace: string, + _service: string, + _params: IstioMetricsOptions, + _cluster?: string, + ): Promise => { + return kialiData.namespacesData[namespace].dashboard; + }; + + getAppDashboard = async ( + namespace: string, + _app: string, + _params: IstioMetricsOptions, + _cluster?: string, + ): Promise => { + return kialiData.namespacesData[namespace].dashboard; + }; + + getGrafanaInfo = async (): Promise => { + return kialiData.grafanaInfo; + }; + + getAppSpans = async ( + namespace: string, + _app: string, + _params: TracingQuery, + _cluster?: string, + ): Promise => { + return kialiData.namespacesData[namespace].spans; + }; + + getServiceSpans = async ( + namespace: string, + _service: string, + _params: TracingQuery, + _cluster?: string, + ): Promise => { + return kialiData.namespacesData[namespace].spans; + }; +} + +const getSelected = (route: number) => { + const pathname = window.location.pathname.split('/'); + const paths = ['workloads', 'applications', 'services', 'istio', 'graph']; + if (pathname && paths.includes(pathname[2])) { + switch (pathname[2]) { + case 'workloads': + return ; + case 'services': + return ; + case 'applications': + return ; + case 'istio': + return ; + case 'graph': + return ; + default: + return ; + } + } + switch (route) { + case 0: + return ; + case 1: + return ; + case 2: + return ; + case 3: + return ; + case 4: + return ; + case 5: + return ; + default: + return ; + } +}; + +interface Props { + children?: React.ReactNode; + entity?: Entity; + isEntity?: boolean; +} + +export const MockProvider = (props: Props) => { + const [selectedTab, setSelectedTab] = React.useState(0); + const tabs = [ + { label: 'Overview', route: `/kiali#overview` }, + { label: 'Workloads', route: `/kiali#workloads` }, + { label: 'Services', route: `/kiali#services` }, + { label: 'Applications', route: `/kiali#applications` }, + { label: 'Istio Config', route: `/kiali#istio` }, + { label: 'Traffic Graph', route: `/kiali#graph` }, + ]; + + const content = ( + + + {!props.isEntity && ( + <> + + { + setSelectedTab(index); + }} + tabs={tabs.map(({ label }, index) => ({ + id: tabs[index].route, + label, + }))} + /> + + {getSelected(selectedTab)} + + )} + {props.isEntity && {getEntityRoutes()}} + + + ); + + const viewIfEntity = props.isEntity && ( + {content} + ); + + return ( + + {viewIfEntity || content} + + ); +}; diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/general/auth_info_anonymous.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/general/auth_info_anonymous.json new file mode 100644 index 0000000000..b66d1554cf --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/general/auth_info_anonymous.json @@ -0,0 +1 @@ +{ "strategy": "anonymous", "sessionInfo": {} } diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/general/config.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/general/config.json new file mode 100644 index 0000000000..48d358f71d --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/general/config.json @@ -0,0 +1,190 @@ +{ + "accessibleNamespaces": ["**"], + "authStrategy": "anonymous", + "ambientEnabled": true, + "clusters": { + "Kubernetes": { + "apiEndpoint": "https://10.217.4.1:443", + "isKialiHome": true, + "kialiInstances": [ + { + "namespace": "istio-system", + "operatorResource": "kiali-operator/kiali", + "serviceName": "kiali", + "url": "https://kiali-istio-system.apps-crc.testing", + "version": "dev" + } + ], + "name": "Kubernetes", + "network": "", + "secretName": "" + } + }, + "deployment": {}, + "gatewayAPIClasses": [ + { + "name": "Istio", + "className": "istio" + } + ], + "healthConfig": { + "rate": [ + { + "tolerance": [ + { + "code": "5XX", + "degraded": 0, + "failure": 10, + "protocol": "http", + "direction": ".*" + }, + { + "code": "4XX", + "degraded": 10, + "failure": 20, + "protocol": "http", + "direction": ".*" + }, + { + "code": "^[1-9]$|^1[0-6]$", + "degraded": 0, + "failure": 10, + "protocol": "grpc", + "direction": ".*" + }, + { + "code": "^-$", + "degraded": 0, + "failure": 10, + "protocol": "http|grpc", + "direction": ".*" + } + ] + }, + { + "tolerance": [ + { + "code": "5XX", + "degraded": 0, + "failure": 10, + "protocol": "http", + "direction": ".*" + }, + { + "code": "4XX", + "degraded": 10, + "failure": 20, + "protocol": "http", + "direction": ".*" + }, + { + "code": "^[1-9]$|^1[0-6]$", + "degraded": 0, + "failure": 10, + "protocol": "grpc", + "direction": ".*" + }, + { + "code": "^-$", + "degraded": 0, + "failure": 10, + "protocol": "http|grpc", + "direction": ".*" + } + ] + } + ] + }, + "istioAnnotations": { + "istioInjectionAnnotation": "sidecar.istio.io/inject" + }, + "istioCanaryRevision": {}, + "istioConfigMap": "istio", + "istioIdentityDomain": "svc.cluster.local", + "istioLabels": { + "appLabelName": "app", + "injectionLabelName": "istio-injection", + "injectionLabelRev": "istio.io/rev", + "versionLabelName": "version" + }, + "istioNamespace": "istio-system", + "istioStatusEnabled": true, + "kialiFeatureFlags": { + "certificatesInformationIndicators": { + "enabled": true, + "secrets": ["cacerts", "istio-ca-secret"] + }, + "clustering": { + "enable_exec_provider": false + }, + "istioAnnotationAction": true, + "istioInjectionAction": true, + "istioUpgradeAction": false, + "uiDefaults": { + "graph": { + "findOptions": [ + { + "description": "Find: slow edges (\u003e 1s)", + "expression": "rt \u003e 1000" + }, + { + "description": "Find: unhealthy nodes", + "expression": "! healthy" + }, + { + "description": "Find: unknown nodes", + "expression": "name = unknown" + }, + { + "description": "Find: nodes with the 2 top rankings", + "expression": "rank \u003c= 2" + } + ], + "hideOptions": [ + { + "description": "Hide: healthy nodes", + "expression": "healthy" + }, + { + "description": "Hide: unknown nodes", + "expression": "name = unknown" + }, + { + "description": "Hide: nodes ranked lower than the 2 top rankings", + "expression": "rank \u003e 2" + } + ], + "impl": "cy", + "settings": { + "fontLabel": 13, + "minFontBadge": 7, + "minFontLabel": 10 + }, + "traffic": { + "grpc": "requests", + "http": "requests", + "tcp": "sent" + } + }, + "list": { + "includeHealth": true, + "includeIstioResources": true, + "includeValidations": true, + "showIncludeToggles": false + }, + "metricsPerRefresh": "1m", + "metricsInbound": {}, + "metricsOutbound": {}, + "refreshInterval": "60s" + }, + "validations": { + "ignore": ["KIA1201"], + "SkipWildcardGatewayHosts": false + } + }, + "logLevel": "trace", + "prometheus": { + "globalScrapeInterval": 15, + "storageTsdbRetention": 1296000 + } +} diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/general/crippledFeatures.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/general/crippledFeatures.json new file mode 100644 index 0000000000..df57b3043c --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/general/crippledFeatures.json @@ -0,0 +1,11 @@ +{ + "requestSize": false, + "requestSizeAverage": false, + "requestSizePercentiles": false, + "responseSize": false, + "responseSizeAverage": false, + "responseSizePercentiles": false, + "responseTime": false, + "responseTimeAverage": false, + "responseTimePercentiles": false +} diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/general/grafana.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/general/grafana.json new file mode 100644 index 0000000000..d5c78b758a --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/general/grafana.json @@ -0,0 +1 @@ +{ "externalLinks": [] } diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/general/graph.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/general/graph.json new file mode 100644 index 0000000000..08cf71c4a0 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/general/graph.json @@ -0,0 +1,693 @@ +{ + "timestamp": 1714482372, + "duration": 600, + "graphType": "versionedApp", + "elements": { + "nodes": [ + { + "data": { + "id": "aff0da95c77e733c6c59a13e37eb7426", + "nodeType": "box", + "cluster": "Kubernetes", + "namespace": "bookinfo", + "app": "details", + "healthData": null, + "isBox": "app" + } + }, + { + "data": { + "id": "4ca2e3526d0ccf5c9504a47a8b4d0110", + "nodeType": "box", + "cluster": "Kubernetes", + "namespace": "bookinfo", + "app": "productpage", + "healthData": null, + "isBox": "app" + } + }, + { + "data": { + "id": "6378b52ac56dfbf2e3c67dbef33175e9", + "nodeType": "box", + "cluster": "Kubernetes", + "namespace": "bookinfo", + "app": "ratings", + "healthData": null, + "isBox": "app" + } + }, + { + "data": { + "id": "3e47740be8ba644276344b56d7fcec99", + "nodeType": "box", + "cluster": "Kubernetes", + "namespace": "bookinfo", + "app": "reviews", + "healthData": null, + "isBox": "app" + } + }, + { + "data": { + "id": "f57e738c232d795bebf9a44123805ce7", + "parent": "aff0da95c77e733c6c59a13e37eb7426", + "nodeType": "service", + "cluster": "Kubernetes", + "namespace": "bookinfo", + "app": "details", + "service": "details", + "destServices": [ + { + "cluster": "Kubernetes", + "namespace": "bookinfo", + "name": "details" + } + ], + "traffic": [ + { + "protocol": "http", + "rates": { + "httpIn": "1.00", + "httpOut": "1.00" + } + } + ], + "healthData": null + } + }, + { + "data": { + "id": "b04c9d1c1cc52bfef05b650959f234be", + "parent": "aff0da95c77e733c6c59a13e37eb7426", + "nodeType": "app", + "cluster": "Kubernetes", + "namespace": "bookinfo", + "workload": "details-v1", + "app": "details", + "version": "v1", + "destServices": [ + { + "cluster": "Kubernetes", + "namespace": "bookinfo", + "name": "details" + } + ], + "traffic": [ + { + "protocol": "http", + "rates": { + "httpIn": "1.00" + } + } + ], + "healthData": null + } + }, + { + "data": { + "id": "18ff9f7024139d94a8425f5d0c9fe13b", + "nodeType": "app", + "cluster": "Kubernetes", + "namespace": "bookinfo", + "workload": "kiali-traffic-generator", + "app": "kiali-traffic-generator", + "version": "unknown", + "healthData": null, + "isIdle": true + } + }, + { + "data": { + "id": "157216a5f2d59f1a81ed4b8c491bdf89", + "parent": "4ca2e3526d0ccf5c9504a47a8b4d0110", + "nodeType": "service", + "cluster": "Kubernetes", + "namespace": "bookinfo", + "app": "productpage", + "service": "productpage", + "destServices": [ + { + "cluster": "Kubernetes", + "namespace": "bookinfo", + "name": "productpage" + } + ], + "traffic": [ + { + "protocol": "http", + "rates": { + "httpIn": "1.00", + "httpOut": "1.00" + } + } + ], + "healthData": null, + "hasRequestRouting": true, + "hasVS": { + "hostnames": ["*"] + } + } + }, + { + "data": { + "id": "aee5d4295ff485ac2f2b69617d35b75b", + "parent": "4ca2e3526d0ccf5c9504a47a8b4d0110", + "nodeType": "app", + "cluster": "Kubernetes", + "namespace": "bookinfo", + "workload": "productpage-v1", + "app": "productpage", + "version": "v1", + "destServices": [ + { + "cluster": "Kubernetes", + "namespace": "bookinfo", + "name": "productpage" + } + ], + "traffic": [ + { + "protocol": "http", + "rates": { + "httpIn": "1.00", + "httpOut": "2.00" + } + } + ], + "healthData": null + } + }, + { + "data": { + "id": "0e496a9f26a918c9545cb0b362c90bd4", + "parent": "6378b52ac56dfbf2e3c67dbef33175e9", + "nodeType": "service", + "cluster": "Kubernetes", + "namespace": "bookinfo", + "app": "ratings", + "service": "ratings", + "destServices": [ + { + "cluster": "Kubernetes", + "namespace": "bookinfo", + "name": "ratings" + } + ], + "traffic": [ + { + "protocol": "http", + "rates": { + "httpIn": "0.68", + "httpOut": "0.68" + } + } + ], + "healthData": null + } + }, + { + "data": { + "id": "39784f543b4215a7e14bd3d7e8ffa5a8", + "parent": "6378b52ac56dfbf2e3c67dbef33175e9", + "nodeType": "app", + "cluster": "Kubernetes", + "namespace": "bookinfo", + "workload": "ratings-v1", + "app": "ratings", + "version": "v1", + "destServices": [ + { + "cluster": "Kubernetes", + "namespace": "bookinfo", + "name": "ratings" + } + ], + "traffic": [ + { + "protocol": "http", + "rates": { + "httpIn": "0.68" + } + } + ], + "healthData": null + } + }, + { + "data": { + "id": "6d56f1d333f1df5be1332a09c0866dd7", + "parent": "3e47740be8ba644276344b56d7fcec99", + "nodeType": "service", + "cluster": "Kubernetes", + "namespace": "bookinfo", + "app": "reviews", + "service": "reviews", + "destServices": [ + { + "cluster": "Kubernetes", + "namespace": "bookinfo", + "name": "reviews" + } + ], + "traffic": [ + { + "protocol": "http", + "rates": { + "httpIn": "1.00", + "httpOut": "1.00" + } + } + ], + "healthData": null + } + }, + { + "data": { + "id": "be64cf1064d2d8d853979c25ab5d6dfe", + "parent": "3e47740be8ba644276344b56d7fcec99", + "nodeType": "app", + "cluster": "Kubernetes", + "namespace": "bookinfo", + "workload": "reviews-v1", + "app": "reviews", + "version": "v1", + "destServices": [ + { + "cluster": "Kubernetes", + "namespace": "bookinfo", + "name": "reviews" + } + ], + "traffic": [ + { + "protocol": "http", + "rates": { + "httpIn": "0.32" + } + } + ], + "healthData": null + } + }, + { + "data": { + "id": "b2f57800ff71b31035a226dca93d7ec0", + "parent": "3e47740be8ba644276344b56d7fcec99", + "nodeType": "app", + "cluster": "Kubernetes", + "namespace": "bookinfo", + "workload": "reviews-v2", + "app": "reviews", + "version": "v2", + "destServices": [ + { + "cluster": "Kubernetes", + "namespace": "bookinfo", + "name": "reviews" + } + ], + "traffic": [ + { + "protocol": "http", + "rates": { + "httpIn": "0.33", + "httpOut": "0.33" + } + } + ], + "healthData": null + } + }, + { + "data": { + "id": "582a5e548c2511d13bc0e15cdeacf25f", + "parent": "3e47740be8ba644276344b56d7fcec99", + "nodeType": "app", + "cluster": "Kubernetes", + "namespace": "bookinfo", + "workload": "reviews-v3", + "app": "reviews", + "version": "v3", + "destServices": [ + { + "cluster": "Kubernetes", + "namespace": "bookinfo", + "name": "reviews" + } + ], + "traffic": [ + { + "protocol": "http", + "rates": { + "httpIn": "0.35", + "httpOut": "0.34" + } + } + ], + "healthData": null + } + }, + { + "data": { + "id": "a667b44b1e859fa663a3e5f4255bec01", + "nodeType": "app", + "cluster": "Kubernetes", + "namespace": "istio-system", + "workload": "istio-ingressgateway", + "app": "istio-ingressgateway", + "version": "latest", + "traffic": [ + { + "protocol": "http", + "rates": { + "httpOut": "1.00" + } + } + ], + "healthData": null, + "isGateway": { + "ingressInfo": { + "hostnames": ["*"] + }, + "egressInfo": {}, + "gatewayAPIInfo": {} + }, + "isOutside": true, + "isRoot": true + } + } + ], + "edges": [ + { + "data": { + "id": "147839a13d6141a1d94edd3bfa6215ef", + "source": "0e496a9f26a918c9545cb0b362c90bd4", + "target": "39784f543b4215a7e14bd3d7e8ffa5a8", + "destPrincipal": "spiffe://cluster.local/ns/bookinfo/sa/bookinfo-ratings", + "isMTLS": "100", + "responseTime": "4", + "sourcePrincipal": "spiffe://cluster.local/ns/bookinfo/sa/bookinfo-reviews", + "throughput": "707", + "traffic": { + "protocol": "http", + "rates": { + "http": "0.68", + "httpPercentReq": "100.0" + }, + "responses": { + "200": { + "flags": { + "-": "100.0" + }, + "hosts": { + "ratings.bookinfo.svc.cluster.local": "100.0" + } + } + } + } + } + }, + { + "data": { + "id": "5cb834e8d308810ea4eb3649215537b1", + "source": "157216a5f2d59f1a81ed4b8c491bdf89", + "target": "aee5d4295ff485ac2f2b69617d35b75b", + "destPrincipal": "spiffe://cluster.local/ns/bookinfo/sa/bookinfo-productpage", + "isMTLS": "100", + "responseTime": "46", + "sourcePrincipal": "spiffe://cluster.local/ns/istio-system/sa/istio-ingressgateway-service-account", + "throughput": "6025", + "traffic": { + "protocol": "http", + "rates": { + "http": "1.00", + "httpPercentReq": "100.0" + }, + "responses": { + "200": { + "flags": { + "-": "100.0" + }, + "hosts": { + "productpage.bookinfo.svc.cluster.local": "100.0" + } + } + } + } + } + }, + { + "data": { + "id": "93adf5c3ae2f1e4761abf3f426d80c2e", + "source": "582a5e548c2511d13bc0e15cdeacf25f", + "target": "0e496a9f26a918c9545cb0b362c90bd4", + "destPrincipal": "spiffe://cluster.local/ns/bookinfo/sa/bookinfo-ratings", + "isMTLS": "100", + "sourcePrincipal": "spiffe://cluster.local/ns/bookinfo/sa/bookinfo-reviews", + "traffic": { + "protocol": "http", + "rates": { + "http": "0.34", + "httpPercentReq": "100.0" + }, + "responses": { + "200": { + "flags": { + "-": "100.0" + }, + "hosts": { + "ratings.bookinfo.svc.cluster.local": "100.0" + } + } + } + } + } + }, + { + "data": { + "id": "406d2cca8f1dde85710e56914854db0f", + "source": "6d56f1d333f1df5be1332a09c0866dd7", + "target": "582a5e548c2511d13bc0e15cdeacf25f", + "destPrincipal": "spiffe://cluster.local/ns/bookinfo/sa/bookinfo-reviews", + "isMTLS": "100", + "responseTime": "10", + "sourcePrincipal": "spiffe://cluster.local/ns/bookinfo/sa/bookinfo-productpage", + "throughput": "501", + "traffic": { + "protocol": "http", + "rates": { + "http": "0.35", + "httpPercentReq": "35.0" + }, + "responses": { + "200": { + "flags": { + "-": "100.0" + }, + "hosts": { + "reviews.bookinfo.svc.cluster.local": "100.0" + } + } + } + } + } + }, + { + "data": { + "id": "311226f62878ee93e501c39e0f2f7e7a", + "source": "6d56f1d333f1df5be1332a09c0866dd7", + "target": "b2f57800ff71b31035a226dca93d7ec0", + "destPrincipal": "spiffe://cluster.local/ns/bookinfo/sa/bookinfo-reviews", + "isMTLS": "100", + "responseTime": "10", + "sourcePrincipal": "spiffe://cluster.local/ns/bookinfo/sa/bookinfo-productpage", + "throughput": "478", + "traffic": { + "protocol": "http", + "rates": { + "http": "0.33", + "httpPercentReq": "33.0" + }, + "responses": { + "200": { + "flags": { + "-": "100.0" + }, + "hosts": { + "reviews.bookinfo.svc.cluster.local": "100.0" + } + } + } + } + } + }, + { + "data": { + "id": "f26f9372c4ac32141a508f614fd02e65", + "source": "6d56f1d333f1df5be1332a09c0866dd7", + "target": "be64cf1064d2d8d853979c25ab5d6dfe", + "destPrincipal": "spiffe://cluster.local/ns/bookinfo/sa/bookinfo-reviews", + "isMTLS": "100", + "responseTime": "5", + "sourcePrincipal": "spiffe://cluster.local/ns/bookinfo/sa/bookinfo-productpage", + "throughput": "436", + "traffic": { + "protocol": "http", + "rates": { + "http": "0.32", + "httpPercentReq": "32.1" + }, + "responses": { + "200": { + "flags": { + "-": "100.0" + }, + "hosts": { + "reviews.bookinfo.svc.cluster.local": "100.0" + } + } + } + } + } + }, + { + "data": { + "id": "53f670e5e51ffbd71693281c6c9d72df", + "source": "a667b44b1e859fa663a3e5f4255bec01", + "target": "157216a5f2d59f1a81ed4b8c491bdf89", + "destPrincipal": "spiffe://cluster.local/ns/bookinfo/sa/bookinfo-productpage", + "isMTLS": "100", + "sourcePrincipal": "spiffe://cluster.local/ns/istio-system/sa/istio-ingressgateway-service-account", + "traffic": { + "protocol": "http", + "rates": { + "http": "1.00", + "httpPercentReq": "100.0" + }, + "responses": { + "200": { + "flags": { + "-": "100.0" + }, + "hosts": { + "productpage.bookinfo.svc.cluster.local": "100.0" + } + } + } + } + } + }, + { + "data": { + "id": "4097ccbc1355d99fd6694e553fd468c9", + "source": "aee5d4295ff485ac2f2b69617d35b75b", + "target": "6d56f1d333f1df5be1332a09c0866dd7", + "destPrincipal": "spiffe://cluster.local/ns/bookinfo/sa/bookinfo-reviews", + "isMTLS": "100", + "sourcePrincipal": "spiffe://cluster.local/ns/bookinfo/sa/bookinfo-productpage", + "traffic": { + "protocol": "http", + "rates": { + "http": "1.00", + "httpPercentReq": "50.0" + }, + "responses": { + "200": { + "flags": { + "-": "100.0" + }, + "hosts": { + "reviews.bookinfo.svc.cluster.local": "100.0" + } + } + } + } + } + }, + { + "data": { + "id": "b3538d2ad65d3a391b01812c81fd28c2", + "source": "aee5d4295ff485ac2f2b69617d35b75b", + "target": "f57e738c232d795bebf9a44123805ce7", + "destPrincipal": "spiffe://cluster.local/ns/bookinfo/sa/bookinfo-details", + "isMTLS": "100", + "sourcePrincipal": "spiffe://cluster.local/ns/bookinfo/sa/bookinfo-productpage", + "traffic": { + "protocol": "http", + "rates": { + "http": "1.00", + "httpPercentReq": "50.0" + }, + "responses": { + "200": { + "flags": { + "-": "100.0" + }, + "hosts": { + "details.bookinfo.svc.cluster.local": "100.0" + } + } + } + } + } + }, + { + "data": { + "id": "53979a75015d8a0250fe23d7dbf3e9aa", + "source": "b2f57800ff71b31035a226dca93d7ec0", + "target": "0e496a9f26a918c9545cb0b362c90bd4", + "destPrincipal": "spiffe://cluster.local/ns/bookinfo/sa/bookinfo-ratings", + "isMTLS": "100", + "sourcePrincipal": "spiffe://cluster.local/ns/bookinfo/sa/bookinfo-reviews", + "traffic": { + "protocol": "http", + "rates": { + "http": "0.33", + "httpPercentReq": "100.0" + }, + "responses": { + "200": { + "flags": { + "-": "100.0" + }, + "hosts": { + "ratings.bookinfo.svc.cluster.local": "100.0" + } + } + } + } + } + }, + { + "data": { + "id": "09ae6b99f13a2d978f17f5494e366280", + "source": "f57e738c232d795bebf9a44123805ce7", + "target": "b04c9d1c1cc52bfef05b650959f234be", + "destPrincipal": "spiffe://cluster.local/ns/bookinfo/sa/bookinfo-details", + "isMTLS": "100", + "responseTime": "5", + "sourcePrincipal": "spiffe://cluster.local/ns/bookinfo/sa/bookinfo-productpage", + "throughput": "1150", + "traffic": { + "protocol": "http", + "rates": { + "http": "1.00", + "httpPercentReq": "100.0" + }, + "responses": { + "200": { + "flags": { + "-": "100.0" + }, + "hosts": { + "details.bookinfo.svc.cluster.local": "100.0" + } + } + } + } + } + } + ] + } +} diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/general/istioCertsInfo.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/general/istioCertsInfo.json new file mode 100644 index 0000000000..eeda6f935b --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/general/istioCertsInfo.json @@ -0,0 +1,12 @@ +[ + { + "secretName": "istio-ca-secret", + "secretNamespace": "istio-system", + "dnsNames": null, + "issuer": "O=cluster.local", + "notBefore": "2023-10-09T07:01:47Z", + "notAfter": "2033-10-06T07:01:47Z", + "error": "", + "accessible": true + } +] diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/general/istioConfig.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/general/istioConfig.json new file mode 100644 index 0000000000..506c4c4372 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/general/istioConfig.json @@ -0,0 +1,533 @@ +{ + "bookinfo": { + "namespace": { + "name": "bookinfo", + "cluster": "", + "isAmbient": false, + "labels": null, + "annotations": null + }, + "destinationRules": [], + "envoyFilters": [], + "gateways": [ + { + "kind": "Gateway", + "apiVersion": "networking.istio.io/v1beta1", + "metadata": { + "name": "bookinfo-gateway", + "namespace": "bookinfo", + "uid": "6369d379-ce97-4a77-98ef-5702845ddc56", + "resourceVersion": "811259", + "generation": 3, + "creationTimestamp": "2024-03-05T14:38:05Z", + "annotations": { + "kubectl.kubernetes.io/last-applied-configuration": "{\"apiVersion\":\"networking.istio.io/v1alpha3\",\"kind\":\"Gateway\",\"metadata\":{\"annotations\":{},\"name\":\"bookinfo-gateway\",\"namespace\":\"bookinfo\"},\"spec\":{\"selector\":{\"istio\":\"ingressgateway\"},\"servers\":[{\"hosts\":[\"*\"],\"port\":{\"name\":\"http\",\"number\":8080,\"protocol\":\"HTTP\"}}]}}\n" + }, + "managedFields": [ + { + "manager": "kubectl-client-side-apply", + "operation": "Update", + "apiVersion": "networking.istio.io/v1alpha3", + "time": "2024-03-05T14:38:05Z", + "fieldsType": "FieldsV1", + "fieldsV1": { + "f:metadata": { + "f:annotations": { + ".": {}, + "f:kubectl.kubernetes.io/last-applied-configuration": {} + } + }, + "f:spec": { + ".": {}, + "f:selector": {}, + "f:servers": {} + } + } + }, + { + "manager": "kiali", + "operation": "Update", + "apiVersion": "networking.istio.io/v1beta1", + "time": "2024-03-20T12:42:26Z", + "fieldsType": "FieldsV1", + "fieldsV1": { + "f:spec": { + "f:selector": { + "f:istio": {} + } + } + } + } + ] + }, + "spec": { + "servers": [ + { + "port": { + "number": 8080, + "protocol": "HTTP", + "name": "http" + }, + "hosts": ["*"] + } + ], + "selector": { + "istio": "ingressgateway" + } + }, + "status": {} + } + ], + "serviceEntries": [], + "sidecars": [], + "virtualServices": [ + { + "kind": "VirtualService", + "apiVersion": "networking.istio.io/v1beta1", + "metadata": { + "name": "bookinfo", + "namespace": "bookinfo", + "uid": "16c9b2e6-4bc2-426c-9464-853a4148435f", + "resourceVersion": "784735", + "generation": 9, + "creationTimestamp": "2024-03-05T14:38:05Z", + "annotations": { + "kubectl.kubernetes.io/last-applied-configuration": "{\"apiVersion\":\"networking.istio.io/v1alpha3\",\"kind\":\"VirtualService\",\"metadata\":{\"annotations\":{},\"name\":\"bookinfo\",\"namespace\":\"bookinfo\"},\"spec\":{\"gateways\":[\"bookinfo-gateway\"],\"hosts\":[\"*\"],\"http\":[{\"match\":[{\"uri\":{\"exact\":\"/productpage\"}},{\"uri\":{\"prefix\":\"/static\"}},{\"uri\":{\"exact\":\"/login\"}},{\"uri\":{\"exact\":\"/logout\"}},{\"uri\":{\"prefix\":\"/api/v1/products\"}}],\"route\":[{\"destination\":{\"host\":\"productpage\",\"port\":{\"number\":9080}}}]}]}}\n" + }, + "managedFields": [ + { + "manager": "kubectl-client-side-apply", + "operation": "Update", + "apiVersion": "networking.istio.io/v1alpha3", + "time": "2024-03-05T14:38:05Z", + "fieldsType": "FieldsV1", + "fieldsV1": { + "f:metadata": { + "f:annotations": { + ".": {}, + "f:kubectl.kubernetes.io/last-applied-configuration": {} + } + }, + "f:spec": { + ".": {}, + "f:hosts": {}, + "f:http": {} + } + } + }, + { + "manager": "kiali", + "operation": "Update", + "apiVersion": "networking.istio.io/v1beta1", + "time": "2024-03-19T14:43:01Z", + "fieldsType": "FieldsV1", + "fieldsV1": { + "f:spec": { + "f:gateways": {} + } + } + } + ] + }, + "spec": { + "hosts": ["*"], + "gateways": ["bookinfo-gateway"], + "http": [ + { + "match": [ + { + "uri": { + "exact": "/productpage" + } + }, + { + "uri": { + "prefix": "/static" + } + }, + { + "uri": { + "exact": "/login" + } + }, + { + "uri": { + "exact": "/logout" + } + }, + { + "uri": { + "prefix": "/api/v1/products" + } + } + ], + "route": [ + { + "destination": { + "host": "productpage", + "port": { + "number": 9080 + } + } + } + ] + } + ] + }, + "status": {} + } + ], + "workloadEntries": [], + "workloadGroups": [], + "wasmPlugins": [], + "telemetries": [], + "k8sGateways": [], + "k8sGRPCRoutes": [], + "k8sHTTPRoutes": [], + "k8sReferenceGrants": [], + "k8sTCPRoutes": [], + "k8sTLSRoutes": [], + "authorizationPolicies": [], + "peerAuthentications": [], + "requestAuthentications": [], + "validations": {} + }, + "default": { + "namespace": { + "name": "default", + "cluster": "", + "isAmbient": false, + "labels": null, + "annotations": null + }, + "destinationRules": [], + "envoyFilters": [], + "gateways": [], + "serviceEntries": [], + "sidecars": [], + "virtualServices": [], + "workloadEntries": [], + "workloadGroups": [], + "wasmPlugins": [], + "telemetries": [], + "k8sGateways": [], + "k8sGRPCRoutes": [], + "k8sHTTPRoutes": [], + "k8sReferenceGrants": [], + "k8sTCPRoutes": [], + "k8sTLSRoutes": [], + "authorizationPolicies": [], + "peerAuthentications": [], + "requestAuthentications": [], + "validations": {} + }, + "ingress-nginx": { + "namespace": { + "name": "ingress-nginx", + "cluster": "", + "isAmbient": false, + "labels": null, + "annotations": null + }, + "destinationRules": [], + "envoyFilters": [], + "gateways": [], + "serviceEntries": [], + "sidecars": [], + "virtualServices": [], + "workloadEntries": [], + "workloadGroups": [], + "wasmPlugins": [], + "telemetries": [], + "k8sGateways": [], + "k8sGRPCRoutes": [], + "k8sHTTPRoutes": [], + "k8sReferenceGrants": [], + "k8sTCPRoutes": [], + "k8sTLSRoutes": [], + "authorizationPolicies": [], + "peerAuthentications": [], + "requestAuthentications": [], + "validations": {} + }, + "istio-system": { + "namespace": { + "name": "istio-system", + "cluster": "", + "isAmbient": false, + "labels": null, + "annotations": null + }, + "destinationRules": [], + "envoyFilters": [], + "gateways": [], + "serviceEntries": [], + "sidecars": [], + "virtualServices": [], + "workloadEntries": [], + "workloadGroups": [], + "wasmPlugins": [], + "telemetries": [], + "k8sGateways": [], + "k8sGRPCRoutes": [], + "k8sHTTPRoutes": [], + "k8sReferenceGrants": [], + "k8sTCPRoutes": [], + "k8sTLSRoutes": [], + "authorizationPolicies": [], + "peerAuthentications": [], + "requestAuthentications": [], + "validations": {} + }, + "travel-agency": { + "namespace": { + "name": "travel-agency", + "cluster": "", + "isAmbient": false, + "labels": null, + "annotations": null + }, + "destinationRules": [], + "envoyFilters": [], + "gateways": [], + "serviceEntries": [], + "sidecars": [], + "virtualServices": [], + "workloadEntries": [], + "workloadGroups": [], + "wasmPlugins": [], + "telemetries": [], + "k8sGateways": [], + "k8sGRPCRoutes": [], + "k8sHTTPRoutes": [], + "k8sReferenceGrants": [], + "k8sTCPRoutes": [], + "k8sTLSRoutes": [], + "authorizationPolicies": [], + "peerAuthentications": [], + "requestAuthentications": [], + "validations": {} + }, + "travel-control": { + "namespace": { + "name": "travel-control", + "cluster": "", + "isAmbient": false, + "labels": null, + "annotations": null + }, + "destinationRules": [ + { + "kind": "DestinationRule", + "apiVersion": "networking.istio.io/v1beta1", + "metadata": { + "name": "control", + "namespace": "travel-control", + "uid": "a89f69da-5778-46be-b200-4085b6b4c356", + "resourceVersion": "811967", + "generation": 1, + "creationTimestamp": "2024-03-20T12:45:22Z", + "labels": { + "kiali_wizard": "request_routing" + }, + "managedFields": [ + { + "manager": "kiali", + "operation": "Update", + "apiVersion": "networking.istio.io/v1beta1", + "time": "2024-03-20T12:45:22Z", + "fieldsType": "FieldsV1", + "fieldsV1": { + "f:metadata": { + "f:labels": { + ".": {}, + "f:kiali_wizard": {} + } + }, + "f:spec": { + ".": {}, + "f:host": {}, + "f:subsets": {} + } + } + } + ] + }, + "spec": { + "host": "control.travel-control.svc.cluster.local", + "subsets": [ + { + "name": "v1", + "labels": { + "version": "v1" + } + } + ] + }, + "status": {} + } + ], + "envoyFilters": [], + "gateways": [ + { + "kind": "Gateway", + "apiVersion": "networking.istio.io/v1beta1", + "metadata": { + "name": "control-gateway", + "namespace": "travel-control", + "uid": "185675fa-6cca-45ab-a194-e64a57569452", + "resourceVersion": "812011", + "generation": 2, + "creationTimestamp": "2024-03-20T12:45:22Z", + "labels": { + "kiali_wizard": "request_routing" + }, + "managedFields": [ + { + "manager": "kiali", + "operation": "Update", + "apiVersion": "networking.istio.io/v1beta1", + "time": "2024-03-20T12:45:49Z", + "fieldsType": "FieldsV1", + "fieldsV1": { + "f:metadata": { + "f:labels": { + ".": {}, + "f:kiali_wizard": {} + } + }, + "f:spec": { + ".": {}, + "f:selector": { + ".": {}, + "f:istio": {} + }, + "f:servers": {} + } + } + } + ] + }, + "spec": { + "servers": [ + { + "port": { + "number": 8080, + "protocol": "HTTP", + "name": "http" + }, + "hosts": ["*"] + } + ], + "selector": { + "istio": "ingressgateway" + } + }, + "status": {} + } + ], + "serviceEntries": [], + "sidecars": [], + "virtualServices": [ + { + "kind": "VirtualService", + "apiVersion": "networking.istio.io/v1beta1", + "metadata": { + "name": "control", + "namespace": "travel-control", + "uid": "05468816-71ed-437d-9fc5-c0120d6ab61a", + "resourceVersion": "811969", + "generation": 1, + "creationTimestamp": "2024-03-20T12:45:22Z", + "labels": { + "kiali_wizard": "request_routing" + }, + "managedFields": [ + { + "manager": "kiali", + "operation": "Update", + "apiVersion": "networking.istio.io/v1beta1", + "time": "2024-03-20T12:45:22Z", + "fieldsType": "FieldsV1", + "fieldsV1": { + "f:metadata": { + "f:labels": { + ".": {}, + "f:kiali_wizard": {} + } + }, + "f:spec": { + ".": {}, + "f:gateways": {}, + "f:hosts": {}, + "f:http": {} + } + } + } + ] + }, + "spec": { + "hosts": ["*"], + "gateways": ["travel-control/control-gateway"], + "http": [ + { + "route": [ + { + "destination": { + "host": "control.travel-control.svc.cluster.local", + "subset": "v1" + }, + "weight": 100 + } + ] + } + ] + }, + "status": {} + } + ], + "workloadEntries": [], + "workloadGroups": [], + "wasmPlugins": [], + "telemetries": [], + "k8sGateways": [], + "k8sGRPCRoutes": [], + "k8sHTTPRoutes": [], + "k8sReferenceGrants": [], + "k8sTCPRoutes": [], + "k8sTLSRoutes": [], + "authorizationPolicies": [], + "peerAuthentications": [], + "requestAuthentications": [], + "validations": {} + }, + "travel-portal": { + "namespace": { + "name": "travel-portal", + "cluster": "", + "isAmbient": false, + "labels": null, + "annotations": null + }, + "destinationRules": [], + "envoyFilters": [], + "gateways": [], + "serviceEntries": [], + "sidecars": [], + "virtualServices": [], + "workloadEntries": [], + "workloadGroups": [], + "wasmPlugins": [], + "telemetries": [], + "k8sGateways": [], + "k8sGRPCRoutes": [], + "k8sHTTPRoutes": [], + "k8sReferenceGrants": [], + "k8sTCPRoutes": [], + "k8sTLSRoutes": [], + "authorizationPolicies": [], + "peerAuthentications": [], + "requestAuthentications": [], + "validations": {} + } +} diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/general/istioLogs.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/general/istioLogs.json new file mode 100644 index 0000000000..801bf5ab0e --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/general/istioLogs.json @@ -0,0 +1,12918 @@ +{ + "entries": [ + { + "message": "2024-02-26T09:51:31.375802Z\tinfo\tFLAG: --concurrency=\"0\"", + "severity": "INFO", + "timestamp": "2024-02-26 09:51:31.375", + "timestampUnix": 1708941091375 + }, + { + "message": "2024-02-26T09:51:31.375815Z\tinfo\tFLAG: --domain=\"bookinfo.svc.cluster.local\"", + "severity": "INFO", + "timestamp": "2024-02-26 09:51:31.375", + "timestampUnix": 1708941091375 + }, + { + "message": "2024-02-26T09:51:31.375818Z\tinfo\tFLAG: --help=\"false\"", + "severity": "INFO", + "timestamp": "2024-02-26 09:51:31.375", + "timestampUnix": 1708941091375 + }, + { + "message": "2024-02-26T09:51:31.375820Z\tinfo\tFLAG: --log_as_json=\"false\"", + "severity": "INFO", + "timestamp": "2024-02-26 09:51:31.375", + "timestampUnix": 1708941091375 + }, + { + "message": "2024-02-26T09:51:31.375822Z\tinfo\tFLAG: --log_caller=\"\"", + "severity": "INFO", + "timestamp": "2024-02-26 09:51:31.375", + "timestampUnix": 1708941091375 + }, + { + "message": "2024-02-26T09:51:31.375823Z\tinfo\tFLAG: --log_output_level=\"default:info\"", + "severity": "INFO", + "timestamp": "2024-02-26 09:51:31.375", + "timestampUnix": 1708941091375 + }, + { + "message": "2024-02-26T09:51:31.375825Z\tinfo\tFLAG: --log_rotate=\"\"", + "severity": "INFO", + "timestamp": "2024-02-26 09:51:31.375", + "timestampUnix": 1708941091375 + }, + { + "message": "2024-02-26T09:51:31.375826Z\tinfo\tFLAG: --log_rotate_max_age=\"30\"", + "severity": "INFO", + "timestamp": "2024-02-26 09:51:31.375", + "timestampUnix": 1708941091375 + }, + { + "message": "2024-02-26T09:51:31.375828Z\tinfo\tFLAG: --log_rotate_max_backups=\"1000\"", + "severity": "INFO", + "timestamp": "2024-02-26 09:51:31.375", + "timestampUnix": 1708941091375 + }, + { + "message": "2024-02-26T09:51:31.375830Z\tinfo\tFLAG: --log_rotate_max_size=\"104857600\"", + "severity": "INFO", + "timestamp": "2024-02-26 09:51:31.375", + "timestampUnix": 1708941091375 + }, + { + "message": "2024-02-26T09:51:31.375832Z\tinfo\tFLAG: --log_stacktrace_level=\"default:none\"", + "severity": "TRACE", + "timestamp": "2024-02-26 09:51:31.375", + "timestampUnix": 1708941091375 + }, + { + "message": "2024-02-26T09:51:31.375839Z\tinfo\tFLAG: --log_target=\"[stdout]\"", + "severity": "INFO", + "timestamp": "2024-02-26 09:51:31.375", + "timestampUnix": 1708941091375 + }, + { + "message": "2024-02-26T09:51:31.375841Z\tinfo\tFLAG: --meshConfig=\"./etc/istio/config/mesh\"", + "severity": "INFO", + "timestamp": "2024-02-26 09:51:31.375", + "timestampUnix": 1708941091375 + }, + { + "message": "2024-02-26T09:51:31.375843Z\tinfo\tFLAG: --outlierLogPath=\"\"", + "severity": "INFO", + "timestamp": "2024-02-26 09:51:31.375", + "timestampUnix": 1708941091375 + }, + { + "message": "2024-02-26T09:51:31.375845Z\tinfo\tFLAG: --profiling=\"true\"", + "severity": "INFO", + "timestamp": "2024-02-26 09:51:31.375", + "timestampUnix": 1708941091375 + }, + { + "message": "2024-02-26T09:51:31.375846Z\tinfo\tFLAG: --proxyComponentLogLevel=\"misc:error\"", + "severity": "ERROR", + "timestamp": "2024-02-26 09:51:31.375", + "timestampUnix": 1708941091375 + }, + { + "message": "2024-02-26T09:51:31.375848Z\tinfo\tFLAG: --proxyLogLevel=\"warning\"", + "severity": "WARN", + "timestamp": "2024-02-26 09:51:31.375", + "timestampUnix": 1708941091375 + }, + { + "message": "2024-02-26T09:51:31.375849Z\tinfo\tFLAG: --serviceCluster=\"istio-proxy\"", + "severity": "INFO", + "timestamp": "2024-02-26 09:51:31.375", + "timestampUnix": 1708941091375 + }, + { + "message": "2024-02-26T09:51:31.375851Z\tinfo\tFLAG: --stsPort=\"0\"", + "severity": "INFO", + "timestamp": "2024-02-26 09:51:31.375", + "timestampUnix": 1708941091375 + }, + { + "message": "2024-02-26T09:51:31.375852Z\tinfo\tFLAG: --templateFile=\"\"", + "severity": "INFO", + "timestamp": "2024-02-26 09:51:31.375", + "timestampUnix": 1708941091375 + }, + { + "message": "2024-02-26T09:51:31.375854Z\tinfo\tFLAG: --tokenManagerPlugin=\"GoogleTokenExchange\"", + "severity": "INFO", + "timestamp": "2024-02-26 09:51:31.375", + "timestampUnix": 1708941091375 + }, + { + "message": "2024-02-26T09:51:31.375858Z\tinfo\tFLAG: --vklog=\"0\"", + "severity": "INFO", + "timestamp": "2024-02-26 09:51:31.375", + "timestampUnix": 1708941091375 + }, + { + "message": "2024-02-26T09:51:31.375861Z\tinfo\tVersion 1.21.0-rc.0-d540fd3c7a277e2d5e0b2cc401644f10cebe19b8-Clean", + "severity": "INFO", + "timestamp": "2024-02-26 09:51:31.375", + "timestampUnix": 1708941091375 + }, + { + "message": "2024-02-26T09:51:31.376984Z\tinfo\tMaximum file descriptors (ulimit -n): 1048576", + "severity": "INFO", + "timestamp": "2024-02-26 09:51:31.377", + "timestampUnix": 1708941091377 + }, + { + "message": "2024-02-26T09:51:31.377111Z\tinfo\tProxy role\tips=[10.244.0.13] type=sidecar id=productpage-v1-675fc69cf-vv5wr.bookinfo domain=bookinfo.svc.cluster.local", + "severity": "INFO", + "timestamp": "2024-02-26 09:51:31.377", + "timestampUnix": 1708941091377 + }, + { + "message": "2024-02-26T09:51:31.377154Z\tinfo\tApply proxy config from env {\"tracing\":{\"zipkin\":{\"address\":\"zipkin.istio-system:9411\"},\"sampling\":100}}", + "severity": "INFO", + "timestamp": "2024-02-26 09:51:31.377", + "timestampUnix": 1708941091377 + }, + { + "message": "2024-02-26T09:51:31.378321Z\tinfo\tcpu limit detected as 2, setting concurrency", + "severity": "INFO", + "timestamp": "2024-02-26 09:51:31.378", + "timestampUnix": 1708941091378 + }, + { + "message": "2024-02-26T09:51:31.378534Z\tinfo\tEffective config: binaryPath: /usr/local/bin/envoy", + "severity": "INFO", + "timestamp": "2024-02-26 09:51:31.378", + "timestampUnix": 1708941091378 + }, + { + "message": "concurrency: 2", + "severity": "INFO", + "timestamp": "2024-02-26 09:51:31.378", + "timestampUnix": 1708941091378 + }, + { + "message": "configPath: ./etc/istio/proxy", + "severity": "INFO", + "timestamp": "2024-02-26 09:51:31.378", + "timestampUnix": 1708941091378 + }, + { + "message": "controlPlaneAuthPolicy: MUTUAL_TLS", + "severity": "INFO", + "timestamp": "2024-02-26 09:51:31.378", + "timestampUnix": 1708941091378 + }, + { + "message": "discoveryAddress: istiod.istio-system.svc:15012", + "severity": "INFO", + "timestamp": "2024-02-26 09:51:31.378", + "timestampUnix": 1708941091378 + }, + { + "message": "drainDuration: 45s", + "severity": "INFO", + "timestamp": "2024-02-26 09:51:31.378", + "timestampUnix": 1708941091378 + }, + { + "message": "proxyAdminPort: 15000", + "severity": "INFO", + "timestamp": "2024-02-26 09:51:31.378", + "timestampUnix": 1708941091378 + }, + { + "message": "serviceCluster: istio-proxy", + "severity": "INFO", + "timestamp": "2024-02-26 09:51:31.378", + "timestampUnix": 1708941091378 + }, + { + "message": "statNameLength: 189", + "severity": "INFO", + "timestamp": "2024-02-26 09:51:31.378", + "timestampUnix": 1708941091378 + }, + { + "message": "statusPort: 15020", + "severity": "INFO", + "timestamp": "2024-02-26 09:51:31.378", + "timestampUnix": 1708941091378 + }, + { + "message": "terminationDrainDuration: 5s", + "severity": "INFO", + "timestamp": "2024-02-26 09:51:31.378", + "timestampUnix": 1708941091378 + }, + { + "message": "tracing:", + "severity": "INFO", + "timestamp": "2024-02-26 09:51:31.378", + "timestampUnix": 1708941091378 + }, + { + "message": "sampling: 100", + "severity": "INFO", + "timestamp": "2024-02-26 09:51:31.378", + "timestampUnix": 1708941091378 + }, + { + "message": "zipkin:", + "severity": "INFO", + "timestamp": "2024-02-26 09:51:31.378", + "timestampUnix": 1708941091378 + }, + { + "message": "address: zipkin.istio-system:9411", + "severity": "INFO", + "timestamp": "2024-02-26 09:51:31.378", + "timestampUnix": 1708941091378 + }, + { + "message": "2024-02-26T09:51:31.378543Z\tinfo\tJWT policy is third-party-jwt", + "severity": "INFO", + "timestamp": "2024-02-26 09:51:31.378", + "timestampUnix": 1708941091378 + }, + { + "message": "2024-02-26T09:51:31.378546Z\tinfo\tusing credential fetcher of JWT type in cluster.local trust domain", + "severity": "INFO", + "timestamp": "2024-02-26 09:51:31.378", + "timestampUnix": 1708941091378 + }, + { + "message": "2024-02-26T09:51:31.580209Z\tinfo\tPrometheus scraping configuration: {true /metrics 9080}", + "severity": "INFO", + "timestamp": "2024-02-26 09:51:31.580", + "timestampUnix": 1708941091580 + }, + { + "message": "2024-02-26T09:51:31.580282Z\tinfo\tWorkload SDS socket not found. Starting Istio SDS Server", + "severity": "INFO", + "timestamp": "2024-02-26 09:51:31.580", + "timestampUnix": 1708941091580 + }, + { + "message": "2024-02-26T09:51:31.580247Z\tinfo\tOpening status port 15020", + "severity": "INFO", + "timestamp": "2024-02-26 09:51:31.580", + "timestampUnix": 1708941091580 + }, + { + "message": "2024-02-26T09:51:31.580297Z\tinfo\tCA Endpoint istiod.istio-system.svc:15012, provider Citadel", + "severity": "INFO", + "timestamp": "2024-02-26 09:51:31.580", + "timestampUnix": 1708941091580 + }, + { + "message": "2024-02-26T09:51:31.580314Z\tinfo\tUsing CA istiod.istio-system.svc:15012 cert with certs: var/run/secrets/istio/root-cert.pem", + "severity": "INFO", + "timestamp": "2024-02-26 09:51:31.580", + "timestampUnix": 1708941091580 + }, + { + "message": "2024-02-26T09:51:31.592909Z\tinfo\tads\tAll caches have been synced up in 217.330065ms, marking server ready", + "severity": "INFO", + "timestamp": "2024-02-26 09:51:31.593", + "timestampUnix": 1708941091593 + }, + { + "message": "2024-02-26T09:51:31.593011Z\tinfo\txdsproxy\tInitializing with upstream address \"istiod.istio-system.svc:15012\" and cluster \"Kubernetes\"", + "severity": "INFO", + "timestamp": "2024-02-26 09:51:31.593", + "timestampUnix": 1708941091593 + }, + { + "message": "2024-02-26T09:51:31.594006Z\tinfo\tPilot SAN: [istiod.istio-system.svc]", + "severity": "INFO", + "timestamp": "2024-02-26 09:51:31.594", + "timestampUnix": 1708941091594 + }, + { + "message": "2024-02-26T09:51:31.594595Z\tinfo\tStarting proxy agent", + "severity": "INFO", + "timestamp": "2024-02-26 09:51:31.594", + "timestampUnix": 1708941091594 + }, + { + "message": "2024-02-26T09:51:31.594621Z\tinfo\tEnvoy command: [-c etc/istio/proxy/envoy-rev.json --drain-time-s 45 --drain-strategy immediate --local-address-ip-version v4 --file-flush-interval-msec 1000 --disable-hot-restart --allow-unknown-static-fields --log-format %Y-%m-%dT%T.%fZ\t%l\tenvoy %n %g:%#\t%v\tthread=%t -l warning --component-log-level misc:error --concurrency 2]", + "severity": "WARN", + "timestamp": "2024-02-26 09:51:31.594", + "timestampUnix": 1708941091594 + }, + { + "message": "2024-02-26T09:51:31.609075Z\tinfo\tsds\tStarting SDS grpc server", + "severity": "INFO", + "timestamp": "2024-02-26 09:51:31.609", + "timestampUnix": 1708941091609 + }, + { + "message": "2024-02-26T09:51:31.609145Z\tinfo\tstarting Http service at 127.0.0.1:15004", + "severity": "INFO", + "timestamp": "2024-02-26 09:51:31.609", + "timestampUnix": 1708941091609 + }, + { + "message": "2024-02-26T09:51:31.642466Z\tinfo\txdsproxy\tconnected to upstream XDS server[1]: istiod.istio-system.svc:15012", + "severity": "INFO", + "timestamp": "2024-02-26 09:51:31.642", + "timestampUnix": 1708941091642 + }, + { + "message": "2024-02-26T09:51:31.662440Z\tinfo\tcache\tgenerated new workload certificate\tlatency=69.375827ms ttl=23h59m59.337562845s", + "severity": "INFO", + "timestamp": "2024-02-26 09:51:31.662", + "timestampUnix": 1708941091662 + }, + { + "message": "2024-02-26T09:51:31.662463Z\tinfo\tcache\tRoot cert has changed, start rotating root cert", + "severity": "INFO", + "timestamp": "2024-02-26 09:51:31.662", + "timestampUnix": 1708941091662 + }, + { + "message": "2024-02-26T09:51:31.662480Z\tinfo\tads\tXDS: Incremental Pushing ConnectedEndpoints:0 Version:", + "severity": "INFO", + "timestamp": "2024-02-26 09:51:31.662", + "timestampUnix": 1708941091662 + }, + { + "message": "2024-02-26T09:51:31.662508Z\tinfo\tcache\treturned workload trust anchor from cache\tttl=23h59m59.337492371s", + "severity": "INFO", + "timestamp": "2024-02-26 09:51:31.662", + "timestampUnix": 1708941091662 + }, + { + "message": "2024-02-26T09:51:31.664179Z\tinfo\tads\tADS: new connection for node:productpage-v1-675fc69cf-vv5wr.bookinfo-1", + "severity": "INFO", + "timestamp": "2024-02-26 09:51:31.664", + "timestampUnix": 1708941091664 + }, + { + "message": "2024-02-26T09:51:31.664310Z\tinfo\tads\tADS: new connection for node:productpage-v1-675fc69cf-vv5wr.bookinfo-2", + "severity": "INFO", + "timestamp": "2024-02-26 09:51:31.664", + "timestampUnix": 1708941091664 + }, + { + "message": "2024-02-26T09:51:31.664409Z\tinfo\tcache\treturned workload trust anchor from cache\tttl=23h59m59.335592733s", + "severity": "INFO", + "timestamp": "2024-02-26 09:51:31.664", + "timestampUnix": 1708941091664 + }, + { + "message": "2024-02-26T09:51:31.664852Z\tinfo\tcache\treturned workload certificate from cache\tttl=23h59m59.335148794s", + "severity": "INFO", + "timestamp": "2024-02-26 09:51:31.664", + "timestampUnix": 1708941091664 + }, + { + "message": "2024-02-26T09:51:31.664884Z\tinfo\tads\tSDS: PUSH request for node:productpage-v1-675fc69cf-vv5wr.bookinfo resources:1 size:1.1kB resource:ROOTCA", + "severity": "INFO", + "timestamp": "2024-02-26 09:51:31.664", + "timestampUnix": 1708941091664 + }, + { + "message": "2024-02-26T09:51:31.664930Z\tinfo\tads\tSDS: PUSH request for node:productpage-v1-675fc69cf-vv5wr.bookinfo resources:1 size:4.0kB resource:default", + "severity": "INFO", + "timestamp": "2024-02-26 09:51:31.664", + "timestampUnix": 1708941091664 + }, + { + "message": "2024-02-26T09:51:31.792667Z\tinfo\tReadiness succeeded in 420.630314ms", + "severity": "INFO", + "timestamp": "2024-02-26 09:51:31.792", + "timestampUnix": 1708941091792 + }, + { + "message": "2024-02-26T09:51:31.792911Z\tinfo\tEnvoy proxy is ready", + "severity": "INFO", + "timestamp": "2024-02-26 09:51:31.792", + "timestampUnix": 1708941091792 + }, + { + "message": "[2024-02-26T09:51:50.057Z] \"GET /details/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 178 7 6 \"-\" \"curl/7.81.0\" \"6f5344c1-942e-9577-a4a5-8c4863254e3d\" \"details:9080\" \"10.244.0.10:9080\" outbound|9080||details.bookinfo.svc.cluster.local 10.244.0.13:60722 10.109.148.19:9080 10.244.0.13:56252 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:51:50.057", + "timestampUnix": 1708941110057, + "accessLog": { + "authority": "details:9080", + "bytes_received": "0", + "bytes_sent": "178", + "duration": "7", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "6f5344c1-942e-9577-a4a5-8c4863254e3d", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:51:50.057Z", + "upstream_service": "10.244.0.10:9080", + "upstream_service_time": "6", + "upstream_cluster": "outbound|9080||details.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:60722", + "downstream_local": "10.109.148.19:9080", + "downstream_remote": "10.244.0.13:56252", + "requested_server": "-", + "route_name": "default", + "uri_path": "/details/0", + "user_agent": "curl/7.81.0" + } + }, + { + "message": "[2024-02-26T09:51:50.069Z] \"GET /reviews/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 442 460 460 \"-\" \"curl/7.81.0\" \"6f5344c1-942e-9577-a4a5-8c4863254e3d\" \"reviews:9080\" \"10.244.0.15:9080\" outbound|9080||reviews.bookinfo.svc.cluster.local 10.244.0.13:50830 10.99.45.111:9080 10.244.0.13:33072 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:51:50.069", + "timestampUnix": 1708941110069, + "accessLog": { + "authority": "reviews:9080", + "bytes_received": "0", + "bytes_sent": "442", + "duration": "460", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "6f5344c1-942e-9577-a4a5-8c4863254e3d", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:51:50.069Z", + "upstream_service": "10.244.0.15:9080", + "upstream_service_time": "460", + "upstream_cluster": "outbound|9080||reviews.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:50830", + "downstream_local": "10.99.45.111:9080", + "downstream_remote": "10.244.0.13:33072", + "requested_server": "-", + "route_name": "default", + "uri_path": "/reviews/0", + "user_agent": "curl/7.81.0" + } + }, + { + "message": "[2024-02-26T09:51:50.052Z] \"GET /productpage HTTP/1.1\" 200 - via_upstream - \"-\" 0 5294 514 513 \"10.244.0.1\" \"curl/7.81.0\" \"6f5344c1-942e-9577-a4a5-8c4863254e3d\" \"192.168.49.2:30876\" \"10.244.0.13:9080\" inbound|9080|| 127.0.0.6:60395 10.244.0.13:9080 10.244.0.1:0 outbound_.9080_._.productpage.bookinfo.svc.cluster.local default", + "severity": "INFO", + "timestamp": "2024-02-26 09:51:50.052", + "timestampUnix": 1708941110052, + "accessLog": { + "authority": "192.168.49.2:30876", + "bytes_received": "0", + "bytes_sent": "5294", + "duration": "514", + "forwarded_for": "10.244.0.1", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "6f5344c1-942e-9577-a4a5-8c4863254e3d", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:51:50.052Z", + "upstream_service": "10.244.0.13:9080", + "upstream_service_time": "513", + "upstream_cluster": "inbound|9080||", + "upstream_local": "127.0.0.6:60395", + "downstream_local": "10.244.0.13:9080", + "downstream_remote": "10.244.0.1:0", + "requested_server": "outbound_.9080_._.productpage.bookinfo.svc.cluster.local", + "route_name": "default", + "uri_path": "/productpage", + "user_agent": "curl/7.81.0" + } + }, + { + "message": "[2024-02-26T09:52:04.277Z] \"GET /details/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 178 2 1 \"-\" \"Go-http-client/1.1\" \"a96b0771-b8b0-9444-b62c-6dc362bdd77a\" \"details:9080\" \"10.244.0.10:9080\" outbound|9080||details.bookinfo.svc.cluster.local 10.244.0.13:58492 10.109.148.19:9080 10.244.0.13:60780 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:52:04.277", + "timestampUnix": 1708941124277, + "accessLog": { + "authority": "details:9080", + "bytes_received": "0", + "bytes_sent": "178", + "duration": "2", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "a96b0771-b8b0-9444-b62c-6dc362bdd77a", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:52:04.277Z", + "upstream_service": "10.244.0.10:9080", + "upstream_service_time": "1", + "upstream_cluster": "outbound|9080||details.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:58492", + "downstream_local": "10.109.148.19:9080", + "downstream_remote": "10.244.0.13:60780", + "requested_server": "-", + "route_name": "default", + "uri_path": "/details/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:52:04.284Z] \"GET /reviews/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 358 357 356 \"-\" \"Go-http-client/1.1\" \"a96b0771-b8b0-9444-b62c-6dc362bdd77a\" \"reviews:9080\" \"10.244.0.14:9080\" outbound|9080||reviews.bookinfo.svc.cluster.local 10.244.0.13:34890 10.99.45.111:9080 10.244.0.13:56636 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:52:04.284", + "timestampUnix": 1708941124284, + "accessLog": { + "authority": "reviews:9080", + "bytes_received": "0", + "bytes_sent": "358", + "duration": "357", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "a96b0771-b8b0-9444-b62c-6dc362bdd77a", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:52:04.284Z", + "upstream_service": "10.244.0.14:9080", + "upstream_service_time": "356", + "upstream_cluster": "outbound|9080||reviews.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:34890", + "downstream_local": "10.99.45.111:9080", + "downstream_remote": "10.244.0.13:56636", + "requested_server": "-", + "route_name": "default", + "uri_path": "/reviews/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:52:04.274Z] \"GET /productpage HTTP/1.1\" 200 - via_upstream - \"-\" 0 4294 369 369 \"10.244.0.1\" \"Go-http-client/1.1\" \"a96b0771-b8b0-9444-b62c-6dc362bdd77a\" \"192.168.49.2:30876\" \"10.244.0.13:9080\" inbound|9080|| 127.0.0.6:58023 10.244.0.13:9080 10.244.0.1:0 outbound_.9080_._.productpage.bookinfo.svc.cluster.local default", + "severity": "INFO", + "timestamp": "2024-02-26 09:52:04.274", + "timestampUnix": 1708941124274, + "accessLog": { + "authority": "192.168.49.2:30876", + "bytes_received": "0", + "bytes_sent": "4294", + "duration": "369", + "forwarded_for": "10.244.0.1", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "a96b0771-b8b0-9444-b62c-6dc362bdd77a", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:52:04.274Z", + "upstream_service": "10.244.0.13:9080", + "upstream_service_time": "369", + "upstream_cluster": "inbound|9080||", + "upstream_local": "127.0.0.6:58023", + "downstream_local": "10.244.0.13:9080", + "downstream_remote": "10.244.0.1:0", + "requested_server": "outbound_.9080_._.productpage.bookinfo.svc.cluster.local", + "route_name": "default", + "uri_path": "/productpage", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:52:05.276Z] \"GET /details/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 178 1 1 \"-\" \"Go-http-client/1.1\" \"c45d3022-0ce0-9ce7-8405-72e12885885a\" \"details:9080\" \"10.244.0.10:9080\" outbound|9080||details.bookinfo.svc.cluster.local 10.244.0.13:58492 10.109.148.19:9080 10.244.0.13:60792 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:52:05.276", + "timestampUnix": 1708941125276, + "accessLog": { + "authority": "details:9080", + "bytes_received": "0", + "bytes_sent": "178", + "duration": "1", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "c45d3022-0ce0-9ce7-8405-72e12885885a", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:52:05.276Z", + "upstream_service": "10.244.0.10:9080", + "upstream_service_time": "1", + "upstream_cluster": "outbound|9080||details.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:58492", + "downstream_local": "10.109.148.19:9080", + "downstream_remote": "10.244.0.13:60792", + "requested_server": "-", + "route_name": "default", + "uri_path": "/details/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:52:05.280Z] \"GET /reviews/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 442 16 16 \"-\" \"Go-http-client/1.1\" \"c45d3022-0ce0-9ce7-8405-72e12885885a\" \"reviews:9080\" \"10.244.0.15:9080\" outbound|9080||reviews.bookinfo.svc.cluster.local 10.244.0.13:32944 10.99.45.111:9080 10.244.0.13:56648 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:52:05.28", + "timestampUnix": 1708941125280, + "accessLog": { + "authority": "reviews:9080", + "bytes_received": "0", + "bytes_sent": "442", + "duration": "16", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "c45d3022-0ce0-9ce7-8405-72e12885885a", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:52:05.280Z", + "upstream_service": "10.244.0.15:9080", + "upstream_service_time": "16", + "upstream_cluster": "outbound|9080||reviews.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:32944", + "downstream_local": "10.99.45.111:9080", + "downstream_remote": "10.244.0.13:56648", + "requested_server": "-", + "route_name": "default", + "uri_path": "/reviews/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:52:05.273Z] \"GET /productpage HTTP/1.1\" 200 - via_upstream - \"-\" 0 5294 27 27 \"10.244.0.1\" \"Go-http-client/1.1\" \"c45d3022-0ce0-9ce7-8405-72e12885885a\" \"192.168.49.2:30876\" \"10.244.0.13:9080\" inbound|9080|| 127.0.0.6:37123 10.244.0.13:9080 10.244.0.1:0 outbound_.9080_._.productpage.bookinfo.svc.cluster.local default", + "severity": "INFO", + "timestamp": "2024-02-26 09:52:05.273", + "timestampUnix": 1708941125273, + "accessLog": { + "authority": "192.168.49.2:30876", + "bytes_received": "0", + "bytes_sent": "5294", + "duration": "27", + "forwarded_for": "10.244.0.1", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "c45d3022-0ce0-9ce7-8405-72e12885885a", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:52:05.273Z", + "upstream_service": "10.244.0.13:9080", + "upstream_service_time": "27", + "upstream_cluster": "inbound|9080||", + "upstream_local": "127.0.0.6:37123", + "downstream_local": "10.244.0.13:9080", + "downstream_remote": "10.244.0.1:0", + "requested_server": "outbound_.9080_._.productpage.bookinfo.svc.cluster.local", + "route_name": "default", + "uri_path": "/productpage", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:52:06.280Z] \"GET /details/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 178 1 1 \"-\" \"Go-http-client/1.1\" \"0a545a69-2564-92d9-8c25-67a51e319ff7\" \"details:9080\" \"10.244.0.10:9080\" outbound|9080||details.bookinfo.svc.cluster.local 10.244.0.13:58492 10.109.148.19:9080 10.244.0.13:60796 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:52:06.28", + "timestampUnix": 1708941126280, + "accessLog": { + "authority": "details:9080", + "bytes_received": "0", + "bytes_sent": "178", + "duration": "1", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "0a545a69-2564-92d9-8c25-67a51e319ff7", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:52:06.280Z", + "upstream_service": "10.244.0.10:9080", + "upstream_service_time": "1", + "upstream_cluster": "outbound|9080||details.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:58492", + "downstream_local": "10.109.148.19:9080", + "downstream_remote": "10.244.0.13:60796", + "requested_server": "-", + "route_name": "default", + "uri_path": "/details/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:52:06.285Z] \"GET /reviews/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 358 3 3 \"-\" \"Go-http-client/1.1\" \"0a545a69-2564-92d9-8c25-67a51e319ff7\" \"reviews:9080\" \"10.244.0.14:9080\" outbound|9080||reviews.bookinfo.svc.cluster.local 10.244.0.13:34890 10.99.45.111:9080 10.244.0.13:56660 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:52:06.285", + "timestampUnix": 1708941126285, + "accessLog": { + "authority": "reviews:9080", + "bytes_received": "0", + "bytes_sent": "358", + "duration": "3", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "0a545a69-2564-92d9-8c25-67a51e319ff7", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:52:06.285Z", + "upstream_service": "10.244.0.14:9080", + "upstream_service_time": "3", + "upstream_cluster": "outbound|9080||reviews.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:34890", + "downstream_local": "10.99.45.111:9080", + "downstream_remote": "10.244.0.13:56660", + "requested_server": "-", + "route_name": "default", + "uri_path": "/reviews/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:52:06.274Z] \"GET /productpage HTTP/1.1\" 200 - via_upstream - \"-\" 0 4294 16 15 \"10.244.0.1\" \"Go-http-client/1.1\" \"0a545a69-2564-92d9-8c25-67a51e319ff7\" \"192.168.49.2:30876\" \"10.244.0.13:9080\" inbound|9080|| 127.0.0.6:45129 10.244.0.13:9080 10.244.0.1:0 outbound_.9080_._.productpage.bookinfo.svc.cluster.local default", + "severity": "INFO", + "timestamp": "2024-02-26 09:52:06.274", + "timestampUnix": 1708941126274, + "accessLog": { + "authority": "192.168.49.2:30876", + "bytes_received": "0", + "bytes_sent": "4294", + "duration": "16", + "forwarded_for": "10.244.0.1", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "0a545a69-2564-92d9-8c25-67a51e319ff7", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:52:06.274Z", + "upstream_service": "10.244.0.13:9080", + "upstream_service_time": "15", + "upstream_cluster": "inbound|9080||", + "upstream_local": "127.0.0.6:45129", + "downstream_local": "10.244.0.13:9080", + "downstream_remote": "10.244.0.1:0", + "requested_server": "outbound_.9080_._.productpage.bookinfo.svc.cluster.local", + "route_name": "default", + "uri_path": "/productpage", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:52:07.277Z] \"GET /details/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 178 1 1 \"-\" \"Go-http-client/1.1\" \"4128e939-240a-9bdc-a4cc-428e8fd4fb9c\" \"details:9080\" \"10.244.0.10:9080\" outbound|9080||details.bookinfo.svc.cluster.local 10.244.0.13:58492 10.109.148.19:9080 10.244.0.13:55276 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:52:07.277", + "timestampUnix": 1708941127277, + "accessLog": { + "authority": "details:9080", + "bytes_received": "0", + "bytes_sent": "178", + "duration": "1", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "4128e939-240a-9bdc-a4cc-428e8fd4fb9c", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:52:07.277Z", + "upstream_service": "10.244.0.10:9080", + "upstream_service_time": "1", + "upstream_cluster": "outbound|9080||details.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:58492", + "downstream_local": "10.109.148.19:9080", + "downstream_remote": "10.244.0.13:55276", + "requested_server": "-", + "route_name": "default", + "uri_path": "/details/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:52:07.282Z] \"GET /reviews/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 442 9 8 \"-\" \"Go-http-client/1.1\" \"4128e939-240a-9bdc-a4cc-428e8fd4fb9c\" \"reviews:9080\" \"10.244.0.15:9080\" outbound|9080||reviews.bookinfo.svc.cluster.local 10.244.0.13:32944 10.99.45.111:9080 10.244.0.13:43648 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:52:07.282", + "timestampUnix": 1708941127282, + "accessLog": { + "authority": "reviews:9080", + "bytes_received": "0", + "bytes_sent": "442", + "duration": "9", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "4128e939-240a-9bdc-a4cc-428e8fd4fb9c", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:52:07.282Z", + "upstream_service": "10.244.0.15:9080", + "upstream_service_time": "8", + "upstream_cluster": "outbound|9080||reviews.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:32944", + "downstream_local": "10.99.45.111:9080", + "downstream_remote": "10.244.0.13:43648", + "requested_server": "-", + "route_name": "default", + "uri_path": "/reviews/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:52:07.274Z] \"GET /productpage HTTP/1.1\" 200 - via_upstream - \"-\" 0 5294 18 17 \"10.244.0.1\" \"Go-http-client/1.1\" \"4128e939-240a-9bdc-a4cc-428e8fd4fb9c\" \"192.168.49.2:30876\" \"10.244.0.13:9080\" inbound|9080|| 127.0.0.6:43097 10.244.0.13:9080 10.244.0.1:0 outbound_.9080_._.productpage.bookinfo.svc.cluster.local default", + "severity": "INFO", + "timestamp": "2024-02-26 09:52:07.274", + "timestampUnix": 1708941127274, + "accessLog": { + "authority": "192.168.49.2:30876", + "bytes_received": "0", + "bytes_sent": "5294", + "duration": "18", + "forwarded_for": "10.244.0.1", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "4128e939-240a-9bdc-a4cc-428e8fd4fb9c", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:52:07.274Z", + "upstream_service": "10.244.0.13:9080", + "upstream_service_time": "17", + "upstream_cluster": "inbound|9080||", + "upstream_local": "127.0.0.6:43097", + "downstream_local": "10.244.0.13:9080", + "downstream_remote": "10.244.0.1:0", + "requested_server": "outbound_.9080_._.productpage.bookinfo.svc.cluster.local", + "route_name": "default", + "uri_path": "/productpage", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:52:08.276Z] \"GET /details/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 178 1 1 \"-\" \"Go-http-client/1.1\" \"a15e0adf-e52b-9dc2-83a5-55532d336b92\" \"details:9080\" \"10.244.0.10:9080\" outbound|9080||details.bookinfo.svc.cluster.local 10.244.0.13:60722 10.109.148.19:9080 10.244.0.13:55280 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:52:08.276", + "timestampUnix": 1708941128276, + "accessLog": { + "authority": "details:9080", + "bytes_received": "0", + "bytes_sent": "178", + "duration": "1", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "a15e0adf-e52b-9dc2-83a5-55532d336b92", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:52:08.276Z", + "upstream_service": "10.244.0.10:9080", + "upstream_service_time": "1", + "upstream_cluster": "outbound|9080||details.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:60722", + "downstream_local": "10.109.148.19:9080", + "downstream_remote": "10.244.0.13:55280", + "requested_server": "-", + "route_name": "default", + "uri_path": "/details/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:52:08.281Z] \"GET /reviews/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 437 484 484 \"-\" \"Go-http-client/1.1\" \"a15e0adf-e52b-9dc2-83a5-55532d336b92\" \"reviews:9080\" \"10.244.0.12:9080\" outbound|9080||reviews.bookinfo.svc.cluster.local 10.244.0.13:48578 10.99.45.111:9080 10.244.0.13:43650 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:52:08.281", + "timestampUnix": 1708941128281, + "accessLog": { + "authority": "reviews:9080", + "bytes_received": "0", + "bytes_sent": "437", + "duration": "484", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "a15e0adf-e52b-9dc2-83a5-55532d336b92", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:52:08.281Z", + "upstream_service": "10.244.0.12:9080", + "upstream_service_time": "484", + "upstream_cluster": "outbound|9080||reviews.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:48578", + "downstream_local": "10.99.45.111:9080", + "downstream_remote": "10.244.0.13:43650", + "requested_server": "-", + "route_name": "default", + "uri_path": "/reviews/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:52:08.273Z] \"GET /productpage HTTP/1.1\" 200 - via_upstream - \"-\" 0 5289 494 494 \"10.244.0.1\" \"Go-http-client/1.1\" \"a15e0adf-e52b-9dc2-83a5-55532d336b92\" \"192.168.49.2:30876\" \"10.244.0.13:9080\" inbound|9080|| 127.0.0.6:53219 10.244.0.13:9080 10.244.0.1:0 outbound_.9080_._.productpage.bookinfo.svc.cluster.local default", + "severity": "INFO", + "timestamp": "2024-02-26 09:52:08.273", + "timestampUnix": 1708941128273, + "accessLog": { + "authority": "192.168.49.2:30876", + "bytes_received": "0", + "bytes_sent": "5289", + "duration": "494", + "forwarded_for": "10.244.0.1", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "a15e0adf-e52b-9dc2-83a5-55532d336b92", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:52:08.273Z", + "upstream_service": "10.244.0.13:9080", + "upstream_service_time": "494", + "upstream_cluster": "inbound|9080||", + "upstream_local": "127.0.0.6:53219", + "downstream_local": "10.244.0.13:9080", + "downstream_remote": "10.244.0.1:0", + "requested_server": "outbound_.9080_._.productpage.bookinfo.svc.cluster.local", + "route_name": "default", + "uri_path": "/productpage", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:52:09.277Z] \"GET /details/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 178 2 2 \"-\" \"Go-http-client/1.1\" \"4e7bfb32-d018-9173-bb9f-9680792c3d61\" \"details:9080\" \"10.244.0.10:9080\" outbound|9080||details.bookinfo.svc.cluster.local 10.244.0.13:58492 10.109.148.19:9080 10.244.0.13:55288 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:52:09.277", + "timestampUnix": 1708941129277, + "accessLog": { + "authority": "details:9080", + "bytes_received": "0", + "bytes_sent": "178", + "duration": "2", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "4e7bfb32-d018-9173-bb9f-9680792c3d61", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:52:09.277Z", + "upstream_service": "10.244.0.10:9080", + "upstream_service_time": "2", + "upstream_cluster": "outbound|9080||details.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:58492", + "downstream_local": "10.109.148.19:9080", + "downstream_remote": "10.244.0.13:55288", + "requested_server": "-", + "route_name": "default", + "uri_path": "/details/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:52:09.282Z] \"GET /reviews/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 358 2 2 \"-\" \"Go-http-client/1.1\" \"4e7bfb32-d018-9173-bb9f-9680792c3d61\" \"reviews:9080\" \"10.244.0.14:9080\" outbound|9080||reviews.bookinfo.svc.cluster.local 10.244.0.13:34890 10.99.45.111:9080 10.244.0.13:43666 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:52:09.282", + "timestampUnix": 1708941129282, + "accessLog": { + "authority": "reviews:9080", + "bytes_received": "0", + "bytes_sent": "358", + "duration": "2", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "4e7bfb32-d018-9173-bb9f-9680792c3d61", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:52:09.282Z", + "upstream_service": "10.244.0.14:9080", + "upstream_service_time": "2", + "upstream_cluster": "outbound|9080||reviews.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:34890", + "downstream_local": "10.99.45.111:9080", + "downstream_remote": "10.244.0.13:43666", + "requested_server": "-", + "route_name": "default", + "uri_path": "/reviews/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:52:09.274Z] \"GET /productpage HTTP/1.1\" 200 - via_upstream - \"-\" 0 4294 12 12 \"10.244.0.1\" \"Go-http-client/1.1\" \"4e7bfb32-d018-9173-bb9f-9680792c3d61\" \"192.168.49.2:30876\" \"10.244.0.13:9080\" inbound|9080|| 127.0.0.6:51593 10.244.0.13:9080 10.244.0.1:0 outbound_.9080_._.productpage.bookinfo.svc.cluster.local default", + "severity": "INFO", + "timestamp": "2024-02-26 09:52:09.274", + "timestampUnix": 1708941129274, + "accessLog": { + "authority": "192.168.49.2:30876", + "bytes_received": "0", + "bytes_sent": "4294", + "duration": "12", + "forwarded_for": "10.244.0.1", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "4e7bfb32-d018-9173-bb9f-9680792c3d61", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:52:09.274Z", + "upstream_service": "10.244.0.13:9080", + "upstream_service_time": "12", + "upstream_cluster": "inbound|9080||", + "upstream_local": "127.0.0.6:51593", + "downstream_local": "10.244.0.13:9080", + "downstream_remote": "10.244.0.1:0", + "requested_server": "outbound_.9080_._.productpage.bookinfo.svc.cluster.local", + "route_name": "default", + "uri_path": "/productpage", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:52:10.276Z] \"GET /details/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 178 1 1 \"-\" \"Go-http-client/1.1\" \"3453d659-e65f-9556-b4e8-84ed7a644169\" \"details:9080\" \"10.244.0.10:9080\" outbound|9080||details.bookinfo.svc.cluster.local 10.244.0.13:58492 10.109.148.19:9080 10.244.0.13:55304 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:52:10.276", + "timestampUnix": 1708941130276, + "accessLog": { + "authority": "details:9080", + "bytes_received": "0", + "bytes_sent": "178", + "duration": "1", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "3453d659-e65f-9556-b4e8-84ed7a644169", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:52:10.276Z", + "upstream_service": "10.244.0.10:9080", + "upstream_service_time": "1", + "upstream_cluster": "outbound|9080||details.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:58492", + "downstream_local": "10.109.148.19:9080", + "downstream_remote": "10.244.0.13:55304", + "requested_server": "-", + "route_name": "default", + "uri_path": "/details/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:52:10.281Z] \"GET /reviews/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 437 9 9 \"-\" \"Go-http-client/1.1\" \"3453d659-e65f-9556-b4e8-84ed7a644169\" \"reviews:9080\" \"10.244.0.12:9080\" outbound|9080||reviews.bookinfo.svc.cluster.local 10.244.0.13:48578 10.99.45.111:9080 10.244.0.13:43678 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:52:10.281", + "timestampUnix": 1708941130281, + "accessLog": { + "authority": "reviews:9080", + "bytes_received": "0", + "bytes_sent": "437", + "duration": "9", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "3453d659-e65f-9556-b4e8-84ed7a644169", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:52:10.281Z", + "upstream_service": "10.244.0.12:9080", + "upstream_service_time": "9", + "upstream_cluster": "outbound|9080||reviews.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:48578", + "downstream_local": "10.99.45.111:9080", + "downstream_remote": "10.244.0.13:43678", + "requested_server": "-", + "route_name": "default", + "uri_path": "/reviews/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:52:10.273Z] \"GET /productpage HTTP/1.1\" 200 - via_upstream - \"-\" 0 5289 18 18 \"10.244.0.1\" \"Go-http-client/1.1\" \"3453d659-e65f-9556-b4e8-84ed7a644169\" \"192.168.49.2:30876\" \"10.244.0.13:9080\" inbound|9080|| 127.0.0.6:32827 10.244.0.13:9080 10.244.0.1:0 outbound_.9080_._.productpage.bookinfo.svc.cluster.local default", + "severity": "INFO", + "timestamp": "2024-02-26 09:52:10.273", + "timestampUnix": 1708941130273, + "accessLog": { + "authority": "192.168.49.2:30876", + "bytes_received": "0", + "bytes_sent": "5289", + "duration": "18", + "forwarded_for": "10.244.0.1", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "3453d659-e65f-9556-b4e8-84ed7a644169", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:52:10.273Z", + "upstream_service": "10.244.0.13:9080", + "upstream_service_time": "18", + "upstream_cluster": "inbound|9080||", + "upstream_local": "127.0.0.6:32827", + "downstream_local": "10.244.0.13:9080", + "downstream_remote": "10.244.0.1:0", + "requested_server": "outbound_.9080_._.productpage.bookinfo.svc.cluster.local", + "route_name": "default", + "uri_path": "/productpage", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:52:11.276Z] \"GET /details/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 178 1 1 \"-\" \"Go-http-client/1.1\" \"f62a2864-4e0a-93a7-9c55-61071c6ad3b1\" \"details:9080\" \"10.244.0.10:9080\" outbound|9080||details.bookinfo.svc.cluster.local 10.244.0.13:60722 10.109.148.19:9080 10.244.0.13:55320 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:52:11.276", + "timestampUnix": 1708941131276, + "accessLog": { + "authority": "details:9080", + "bytes_received": "0", + "bytes_sent": "178", + "duration": "1", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "f62a2864-4e0a-93a7-9c55-61071c6ad3b1", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:52:11.276Z", + "upstream_service": "10.244.0.10:9080", + "upstream_service_time": "1", + "upstream_cluster": "outbound|9080||details.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:60722", + "downstream_local": "10.109.148.19:9080", + "downstream_remote": "10.244.0.13:55320", + "requested_server": "-", + "route_name": "default", + "uri_path": "/details/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:52:11.280Z] \"GET /reviews/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 358 2 2 \"-\" \"Go-http-client/1.1\" \"f62a2864-4e0a-93a7-9c55-61071c6ad3b1\" \"reviews:9080\" \"10.244.0.14:9080\" outbound|9080||reviews.bookinfo.svc.cluster.local 10.244.0.13:34890 10.99.45.111:9080 10.244.0.13:43680 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:52:11.28", + "timestampUnix": 1708941131280, + "accessLog": { + "authority": "reviews:9080", + "bytes_received": "0", + "bytes_sent": "358", + "duration": "2", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "f62a2864-4e0a-93a7-9c55-61071c6ad3b1", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:52:11.280Z", + "upstream_service": "10.244.0.14:9080", + "upstream_service_time": "2", + "upstream_cluster": "outbound|9080||reviews.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:34890", + "downstream_local": "10.99.45.111:9080", + "downstream_remote": "10.244.0.13:43680", + "requested_server": "-", + "route_name": "default", + "uri_path": "/reviews/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:52:11.273Z] \"GET /productpage HTTP/1.1\" 200 - via_upstream - \"-\" 0 4294 11 11 \"10.244.0.1\" \"Go-http-client/1.1\" \"f62a2864-4e0a-93a7-9c55-61071c6ad3b1\" \"192.168.49.2:30876\" \"10.244.0.13:9080\" inbound|9080|| 127.0.0.6:41873 10.244.0.13:9080 10.244.0.1:0 outbound_.9080_._.productpage.bookinfo.svc.cluster.local default", + "severity": "INFO", + "timestamp": "2024-02-26 09:52:11.273", + "timestampUnix": 1708941131273, + "accessLog": { + "authority": "192.168.49.2:30876", + "bytes_received": "0", + "bytes_sent": "4294", + "duration": "11", + "forwarded_for": "10.244.0.1", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "f62a2864-4e0a-93a7-9c55-61071c6ad3b1", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:52:11.273Z", + "upstream_service": "10.244.0.13:9080", + "upstream_service_time": "11", + "upstream_cluster": "inbound|9080||", + "upstream_local": "127.0.0.6:41873", + "downstream_local": "10.244.0.13:9080", + "downstream_remote": "10.244.0.1:0", + "requested_server": "outbound_.9080_._.productpage.bookinfo.svc.cluster.local", + "route_name": "default", + "uri_path": "/productpage", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:52:12.276Z] \"GET /details/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 178 1 1 \"-\" \"Go-http-client/1.1\" \"9d85d517-6bae-998c-82cf-fd32ff74e21f\" \"details:9080\" \"10.244.0.10:9080\" outbound|9080||details.bookinfo.svc.cluster.local 10.244.0.13:58492 10.109.148.19:9080 10.244.0.13:55336 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:52:12.276", + "timestampUnix": 1708941132276, + "accessLog": { + "authority": "details:9080", + "bytes_received": "0", + "bytes_sent": "178", + "duration": "1", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "9d85d517-6bae-998c-82cf-fd32ff74e21f", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:52:12.276Z", + "upstream_service": "10.244.0.10:9080", + "upstream_service_time": "1", + "upstream_cluster": "outbound|9080||details.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:58492", + "downstream_local": "10.109.148.19:9080", + "downstream_remote": "10.244.0.13:55336", + "requested_server": "-", + "route_name": "default", + "uri_path": "/details/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:52:12.279Z] \"GET /reviews/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 442 8 7 \"-\" \"Go-http-client/1.1\" \"9d85d517-6bae-998c-82cf-fd32ff74e21f\" \"reviews:9080\" \"10.244.0.15:9080\" outbound|9080||reviews.bookinfo.svc.cluster.local 10.244.0.13:32944 10.99.45.111:9080 10.244.0.13:43690 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:52:12.279", + "timestampUnix": 1708941132279, + "accessLog": { + "authority": "reviews:9080", + "bytes_received": "0", + "bytes_sent": "442", + "duration": "8", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "9d85d517-6bae-998c-82cf-fd32ff74e21f", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:52:12.279Z", + "upstream_service": "10.244.0.15:9080", + "upstream_service_time": "7", + "upstream_cluster": "outbound|9080||reviews.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:32944", + "downstream_local": "10.99.45.111:9080", + "downstream_remote": "10.244.0.13:43690", + "requested_server": "-", + "route_name": "default", + "uri_path": "/reviews/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:52:12.273Z] \"GET /productpage HTTP/1.1\" 200 - via_upstream - \"-\" 0 5294 16 16 \"10.244.0.1\" \"Go-http-client/1.1\" \"9d85d517-6bae-998c-82cf-fd32ff74e21f\" \"192.168.49.2:30876\" \"10.244.0.13:9080\" inbound|9080|| 127.0.0.6:58679 10.244.0.13:9080 10.244.0.1:0 outbound_.9080_._.productpage.bookinfo.svc.cluster.local default", + "severity": "INFO", + "timestamp": "2024-02-26 09:52:12.273", + "timestampUnix": 1708941132273, + "accessLog": { + "authority": "192.168.49.2:30876", + "bytes_received": "0", + "bytes_sent": "5294", + "duration": "16", + "forwarded_for": "10.244.0.1", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "9d85d517-6bae-998c-82cf-fd32ff74e21f", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:52:12.273Z", + "upstream_service": "10.244.0.13:9080", + "upstream_service_time": "16", + "upstream_cluster": "inbound|9080||", + "upstream_local": "127.0.0.6:58679", + "downstream_local": "10.244.0.13:9080", + "downstream_remote": "10.244.0.1:0", + "requested_server": "outbound_.9080_._.productpage.bookinfo.svc.cluster.local", + "route_name": "default", + "uri_path": "/productpage", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:52:13.276Z] \"GET /details/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 178 1 1 \"-\" \"Go-http-client/1.1\" \"df1aa8a0-a443-902c-8d55-119bece1eeee\" \"details:9080\" \"10.244.0.10:9080\" outbound|9080||details.bookinfo.svc.cluster.local 10.244.0.13:58492 10.109.148.19:9080 10.244.0.13:55352 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:52:13.276", + "timestampUnix": 1708941133276, + "accessLog": { + "authority": "details:9080", + "bytes_received": "0", + "bytes_sent": "178", + "duration": "1", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "df1aa8a0-a443-902c-8d55-119bece1eeee", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:52:13.276Z", + "upstream_service": "10.244.0.10:9080", + "upstream_service_time": "1", + "upstream_cluster": "outbound|9080||details.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:58492", + "downstream_local": "10.109.148.19:9080", + "downstream_remote": "10.244.0.13:55352", + "requested_server": "-", + "route_name": "default", + "uri_path": "/details/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:52:13.280Z] \"GET /reviews/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 437 10 10 \"-\" \"Go-http-client/1.1\" \"df1aa8a0-a443-902c-8d55-119bece1eeee\" \"reviews:9080\" \"10.244.0.12:9080\" outbound|9080||reviews.bookinfo.svc.cluster.local 10.244.0.13:48584 10.99.45.111:9080 10.244.0.13:43692 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:52:13.28", + "timestampUnix": 1708941133280, + "accessLog": { + "authority": "reviews:9080", + "bytes_received": "0", + "bytes_sent": "437", + "duration": "10", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "df1aa8a0-a443-902c-8d55-119bece1eeee", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:52:13.280Z", + "upstream_service": "10.244.0.12:9080", + "upstream_service_time": "10", + "upstream_cluster": "outbound|9080||reviews.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:48584", + "downstream_local": "10.99.45.111:9080", + "downstream_remote": "10.244.0.13:43692", + "requested_server": "-", + "route_name": "default", + "uri_path": "/reviews/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:52:13.273Z] \"GET /productpage HTTP/1.1\" 200 - via_upstream - \"-\" 0 5289 22 21 \"10.244.0.1\" \"Go-http-client/1.1\" \"df1aa8a0-a443-902c-8d55-119bece1eeee\" \"192.168.49.2:30876\" \"10.244.0.13:9080\" inbound|9080|| 127.0.0.6:57155 10.244.0.13:9080 10.244.0.1:0 outbound_.9080_._.productpage.bookinfo.svc.cluster.local default", + "severity": "INFO", + "timestamp": "2024-02-26 09:52:13.273", + "timestampUnix": 1708941133273, + "accessLog": { + "authority": "192.168.49.2:30876", + "bytes_received": "0", + "bytes_sent": "5289", + "duration": "22", + "forwarded_for": "10.244.0.1", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "df1aa8a0-a443-902c-8d55-119bece1eeee", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:52:13.273Z", + "upstream_service": "10.244.0.13:9080", + "upstream_service_time": "21", + "upstream_cluster": "inbound|9080||", + "upstream_local": "127.0.0.6:57155", + "downstream_local": "10.244.0.13:9080", + "downstream_remote": "10.244.0.1:0", + "requested_server": "outbound_.9080_._.productpage.bookinfo.svc.cluster.local", + "route_name": "default", + "uri_path": "/productpage", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:52:14.276Z] \"GET /details/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 178 1 1 \"-\" \"Go-http-client/1.1\" \"7c11f855-cf17-90c8-8e95-535f24feee63\" \"details:9080\" \"10.244.0.10:9080\" outbound|9080||details.bookinfo.svc.cluster.local 10.244.0.13:58492 10.109.148.19:9080 10.244.0.13:55360 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:52:14.276", + "timestampUnix": 1708941134276, + "accessLog": { + "authority": "details:9080", + "bytes_received": "0", + "bytes_sent": "178", + "duration": "1", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "7c11f855-cf17-90c8-8e95-535f24feee63", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:52:14.276Z", + "upstream_service": "10.244.0.10:9080", + "upstream_service_time": "1", + "upstream_cluster": "outbound|9080||details.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:58492", + "downstream_local": "10.109.148.19:9080", + "downstream_remote": "10.244.0.13:55360", + "requested_server": "-", + "route_name": "default", + "uri_path": "/details/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:52:14.281Z] \"GET /reviews/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 437 9 8 \"-\" \"Go-http-client/1.1\" \"7c11f855-cf17-90c8-8e95-535f24feee63\" \"reviews:9080\" \"10.244.0.12:9080\" outbound|9080||reviews.bookinfo.svc.cluster.local 10.244.0.13:48584 10.99.45.111:9080 10.244.0.13:43706 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:52:14.281", + "timestampUnix": 1708941134281, + "accessLog": { + "authority": "reviews:9080", + "bytes_received": "0", + "bytes_sent": "437", + "duration": "9", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "7c11f855-cf17-90c8-8e95-535f24feee63", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:52:14.281Z", + "upstream_service": "10.244.0.12:9080", + "upstream_service_time": "8", + "upstream_cluster": "outbound|9080||reviews.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:48584", + "downstream_local": "10.99.45.111:9080", + "downstream_remote": "10.244.0.13:43706", + "requested_server": "-", + "route_name": "default", + "uri_path": "/reviews/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:52:14.273Z] \"GET /productpage HTTP/1.1\" 200 - via_upstream - \"-\" 0 5289 18 17 \"10.244.0.1\" \"Go-http-client/1.1\" \"7c11f855-cf17-90c8-8e95-535f24feee63\" \"192.168.49.2:30876\" \"10.244.0.13:9080\" inbound|9080|| 127.0.0.6:39343 10.244.0.13:9080 10.244.0.1:0 outbound_.9080_._.productpage.bookinfo.svc.cluster.local default", + "severity": "INFO", + "timestamp": "2024-02-26 09:52:14.273", + "timestampUnix": 1708941134273, + "accessLog": { + "authority": "192.168.49.2:30876", + "bytes_received": "0", + "bytes_sent": "5289", + "duration": "18", + "forwarded_for": "10.244.0.1", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "7c11f855-cf17-90c8-8e95-535f24feee63", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:52:14.273Z", + "upstream_service": "10.244.0.13:9080", + "upstream_service_time": "17", + "upstream_cluster": "inbound|9080||", + "upstream_local": "127.0.0.6:39343", + "downstream_local": "10.244.0.13:9080", + "downstream_remote": "10.244.0.1:0", + "requested_server": "outbound_.9080_._.productpage.bookinfo.svc.cluster.local", + "route_name": "default", + "uri_path": "/productpage", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:52:15.276Z] \"GET /details/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 178 1 1 \"-\" \"Go-http-client/1.1\" \"5f96656b-6dce-9728-b436-614cf04ebe93\" \"details:9080\" \"10.244.0.10:9080\" outbound|9080||details.bookinfo.svc.cluster.local 10.244.0.13:60722 10.109.148.19:9080 10.244.0.13:55364 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:52:15.276", + "timestampUnix": 1708941135276, + "accessLog": { + "authority": "details:9080", + "bytes_received": "0", + "bytes_sent": "178", + "duration": "1", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "5f96656b-6dce-9728-b436-614cf04ebe93", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:52:15.276Z", + "upstream_service": "10.244.0.10:9080", + "upstream_service_time": "1", + "upstream_cluster": "outbound|9080||details.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:60722", + "downstream_local": "10.109.148.19:9080", + "downstream_remote": "10.244.0.13:55364", + "requested_server": "-", + "route_name": "default", + "uri_path": "/details/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:52:15.281Z] \"GET /reviews/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 437 8 8 \"-\" \"Go-http-client/1.1\" \"5f96656b-6dce-9728-b436-614cf04ebe93\" \"reviews:9080\" \"10.244.0.12:9080\" outbound|9080||reviews.bookinfo.svc.cluster.local 10.244.0.13:48584 10.99.45.111:9080 10.244.0.13:43718 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:52:15.281", + "timestampUnix": 1708941135281, + "accessLog": { + "authority": "reviews:9080", + "bytes_received": "0", + "bytes_sent": "437", + "duration": "8", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "5f96656b-6dce-9728-b436-614cf04ebe93", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:52:15.281Z", + "upstream_service": "10.244.0.12:9080", + "upstream_service_time": "8", + "upstream_cluster": "outbound|9080||reviews.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:48584", + "downstream_local": "10.99.45.111:9080", + "downstream_remote": "10.244.0.13:43718", + "requested_server": "-", + "route_name": "default", + "uri_path": "/reviews/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:52:15.273Z] \"GET /productpage HTTP/1.1\" 200 - via_upstream - \"-\" 0 5289 17 17 \"10.244.0.1\" \"Go-http-client/1.1\" \"5f96656b-6dce-9728-b436-614cf04ebe93\" \"192.168.49.2:30876\" \"10.244.0.13:9080\" inbound|9080|| 127.0.0.6:51981 10.244.0.13:9080 10.244.0.1:0 outbound_.9080_._.productpage.bookinfo.svc.cluster.local default", + "severity": "INFO", + "timestamp": "2024-02-26 09:52:15.273", + "timestampUnix": 1708941135273, + "accessLog": { + "authority": "192.168.49.2:30876", + "bytes_received": "0", + "bytes_sent": "5289", + "duration": "17", + "forwarded_for": "10.244.0.1", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "5f96656b-6dce-9728-b436-614cf04ebe93", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:52:15.273Z", + "upstream_service": "10.244.0.13:9080", + "upstream_service_time": "17", + "upstream_cluster": "inbound|9080||", + "upstream_local": "127.0.0.6:51981", + "downstream_local": "10.244.0.13:9080", + "downstream_remote": "10.244.0.1:0", + "requested_server": "outbound_.9080_._.productpage.bookinfo.svc.cluster.local", + "route_name": "default", + "uri_path": "/productpage", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:52:16.276Z] \"GET /details/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 178 1 1 \"-\" \"Go-http-client/1.1\" \"448634fa-53db-9dfe-8d69-771c475772f7\" \"details:9080\" \"10.244.0.10:9080\" outbound|9080||details.bookinfo.svc.cluster.local 10.244.0.13:60722 10.109.148.19:9080 10.244.0.13:55368 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:52:16.276", + "timestampUnix": 1708941136276, + "accessLog": { + "authority": "details:9080", + "bytes_received": "0", + "bytes_sent": "178", + "duration": "1", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "448634fa-53db-9dfe-8d69-771c475772f7", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:52:16.276Z", + "upstream_service": "10.244.0.10:9080", + "upstream_service_time": "1", + "upstream_cluster": "outbound|9080||details.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:60722", + "downstream_local": "10.109.148.19:9080", + "downstream_remote": "10.244.0.13:55368", + "requested_server": "-", + "route_name": "default", + "uri_path": "/details/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:52:16.280Z] \"GET /reviews/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 437 9 8 \"-\" \"Go-http-client/1.1\" \"448634fa-53db-9dfe-8d69-771c475772f7\" \"reviews:9080\" \"10.244.0.12:9080\" outbound|9080||reviews.bookinfo.svc.cluster.local 10.244.0.13:48578 10.99.45.111:9080 10.244.0.13:43728 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:52:16.28", + "timestampUnix": 1708941136280, + "accessLog": { + "authority": "reviews:9080", + "bytes_received": "0", + "bytes_sent": "437", + "duration": "9", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "448634fa-53db-9dfe-8d69-771c475772f7", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:52:16.280Z", + "upstream_service": "10.244.0.12:9080", + "upstream_service_time": "8", + "upstream_cluster": "outbound|9080||reviews.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:48578", + "downstream_local": "10.99.45.111:9080", + "downstream_remote": "10.244.0.13:43728", + "requested_server": "-", + "route_name": "default", + "uri_path": "/reviews/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:52:16.273Z] \"GET /productpage HTTP/1.1\" 200 - via_upstream - \"-\" 0 5289 18 17 \"10.244.0.1\" \"Go-http-client/1.1\" \"448634fa-53db-9dfe-8d69-771c475772f7\" \"192.168.49.2:30876\" \"10.244.0.13:9080\" inbound|9080|| 127.0.0.6:52723 10.244.0.13:9080 10.244.0.1:0 outbound_.9080_._.productpage.bookinfo.svc.cluster.local default", + "severity": "INFO", + "timestamp": "2024-02-26 09:52:16.273", + "timestampUnix": 1708941136273, + "accessLog": { + "authority": "192.168.49.2:30876", + "bytes_received": "0", + "bytes_sent": "5289", + "duration": "18", + "forwarded_for": "10.244.0.1", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "448634fa-53db-9dfe-8d69-771c475772f7", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:52:16.273Z", + "upstream_service": "10.244.0.13:9080", + "upstream_service_time": "17", + "upstream_cluster": "inbound|9080||", + "upstream_local": "127.0.0.6:52723", + "downstream_local": "10.244.0.13:9080", + "downstream_remote": "10.244.0.1:0", + "requested_server": "outbound_.9080_._.productpage.bookinfo.svc.cluster.local", + "route_name": "default", + "uri_path": "/productpage", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:52:17.285Z] \"GET /details/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 178 4 3 \"-\" \"Go-http-client/1.1\" \"d001d62a-7056-9a28-b18e-54f7b47e0338\" \"details:9080\" \"10.244.0.10:9080\" outbound|9080||details.bookinfo.svc.cluster.local 10.244.0.13:58492 10.109.148.19:9080 10.244.0.13:52948 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:52:17.285", + "timestampUnix": 1708941137285, + "accessLog": { + "authority": "details:9080", + "bytes_received": "0", + "bytes_sent": "178", + "duration": "4", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "d001d62a-7056-9a28-b18e-54f7b47e0338", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:52:17.285Z", + "upstream_service": "10.244.0.10:9080", + "upstream_service_time": "3", + "upstream_cluster": "outbound|9080||details.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:58492", + "downstream_local": "10.109.148.19:9080", + "downstream_remote": "10.244.0.13:52948", + "requested_server": "-", + "route_name": "default", + "uri_path": "/details/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:52:17.294Z] \"GET /reviews/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 358 4 4 \"-\" \"Go-http-client/1.1\" \"d001d62a-7056-9a28-b18e-54f7b47e0338\" \"reviews:9080\" \"10.244.0.14:9080\" outbound|9080||reviews.bookinfo.svc.cluster.local 10.244.0.13:55880 10.99.45.111:9080 10.244.0.13:51636 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:52:17.294", + "timestampUnix": 1708941137294, + "accessLog": { + "authority": "reviews:9080", + "bytes_received": "0", + "bytes_sent": "358", + "duration": "4", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "d001d62a-7056-9a28-b18e-54f7b47e0338", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:52:17.294Z", + "upstream_service": "10.244.0.14:9080", + "upstream_service_time": "4", + "upstream_cluster": "outbound|9080||reviews.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:55880", + "downstream_local": "10.99.45.111:9080", + "downstream_remote": "10.244.0.13:51636", + "requested_server": "-", + "route_name": "default", + "uri_path": "/reviews/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:52:17.274Z] \"GET /productpage HTTP/1.1\" 200 - via_upstream - \"-\" 0 4294 29 29 \"10.244.0.1\" \"Go-http-client/1.1\" \"d001d62a-7056-9a28-b18e-54f7b47e0338\" \"192.168.49.2:30876\" \"10.244.0.13:9080\" inbound|9080|| 127.0.0.6:42197 10.244.0.13:9080 10.244.0.1:0 outbound_.9080_._.productpage.bookinfo.svc.cluster.local default", + "severity": "INFO", + "timestamp": "2024-02-26 09:52:17.274", + "timestampUnix": 1708941137274, + "accessLog": { + "authority": "192.168.49.2:30876", + "bytes_received": "0", + "bytes_sent": "4294", + "duration": "29", + "forwarded_for": "10.244.0.1", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "d001d62a-7056-9a28-b18e-54f7b47e0338", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:52:17.274Z", + "upstream_service": "10.244.0.13:9080", + "upstream_service_time": "29", + "upstream_cluster": "inbound|9080||", + "upstream_local": "127.0.0.6:42197", + "downstream_local": "10.244.0.13:9080", + "downstream_remote": "10.244.0.1:0", + "requested_server": "outbound_.9080_._.productpage.bookinfo.svc.cluster.local", + "route_name": "default", + "uri_path": "/productpage", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:52:18.276Z] \"GET /details/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 178 1 1 \"-\" \"Go-http-client/1.1\" \"43be4751-c7ff-9975-8d90-4edbd5f23d6b\" \"details:9080\" \"10.244.0.10:9080\" outbound|9080||details.bookinfo.svc.cluster.local 10.244.0.13:58492 10.109.148.19:9080 10.244.0.13:52960 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:52:18.276", + "timestampUnix": 1708941138276, + "accessLog": { + "authority": "details:9080", + "bytes_received": "0", + "bytes_sent": "178", + "duration": "1", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "43be4751-c7ff-9975-8d90-4edbd5f23d6b", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:52:18.276Z", + "upstream_service": "10.244.0.10:9080", + "upstream_service_time": "1", + "upstream_cluster": "outbound|9080||details.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:58492", + "downstream_local": "10.109.148.19:9080", + "downstream_remote": "10.244.0.13:52960", + "requested_server": "-", + "route_name": "default", + "uri_path": "/details/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:52:18.279Z] \"GET /reviews/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 442 13 13 \"-\" \"Go-http-client/1.1\" \"43be4751-c7ff-9975-8d90-4edbd5f23d6b\" \"reviews:9080\" \"10.244.0.15:9080\" outbound|9080||reviews.bookinfo.svc.cluster.local 10.244.0.13:50830 10.99.45.111:9080 10.244.0.13:51638 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:52:18.279", + "timestampUnix": 1708941138279, + "accessLog": { + "authority": "reviews:9080", + "bytes_received": "0", + "bytes_sent": "442", + "duration": "13", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "43be4751-c7ff-9975-8d90-4edbd5f23d6b", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:52:18.279Z", + "upstream_service": "10.244.0.15:9080", + "upstream_service_time": "13", + "upstream_cluster": "outbound|9080||reviews.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:50830", + "downstream_local": "10.99.45.111:9080", + "downstream_remote": "10.244.0.13:51638", + "requested_server": "-", + "route_name": "default", + "uri_path": "/reviews/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:52:18.273Z] \"GET /productpage HTTP/1.1\" 200 - via_upstream - \"-\" 0 5294 21 21 \"10.244.0.1\" \"Go-http-client/1.1\" \"43be4751-c7ff-9975-8d90-4edbd5f23d6b\" \"192.168.49.2:30876\" \"10.244.0.13:9080\" inbound|9080|| 127.0.0.6:46945 10.244.0.13:9080 10.244.0.1:0 outbound_.9080_._.productpage.bookinfo.svc.cluster.local default", + "severity": "INFO", + "timestamp": "2024-02-26 09:52:18.273", + "timestampUnix": 1708941138273, + "accessLog": { + "authority": "192.168.49.2:30876", + "bytes_received": "0", + "bytes_sent": "5294", + "duration": "21", + "forwarded_for": "10.244.0.1", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "43be4751-c7ff-9975-8d90-4edbd5f23d6b", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:52:18.273Z", + "upstream_service": "10.244.0.13:9080", + "upstream_service_time": "21", + "upstream_cluster": "inbound|9080||", + "upstream_local": "127.0.0.6:46945", + "downstream_local": "10.244.0.13:9080", + "downstream_remote": "10.244.0.1:0", + "requested_server": "outbound_.9080_._.productpage.bookinfo.svc.cluster.local", + "route_name": "default", + "uri_path": "/productpage", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:52:19.276Z] \"GET /details/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 178 1 1 \"-\" \"Go-http-client/1.1\" \"d8e73b76-5d8b-9c27-a8df-79dff6b2d322\" \"details:9080\" \"10.244.0.10:9080\" outbound|9080||details.bookinfo.svc.cluster.local 10.244.0.13:58492 10.109.148.19:9080 10.244.0.13:52976 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:52:19.276", + "timestampUnix": 1708941139276, + "accessLog": { + "authority": "details:9080", + "bytes_received": "0", + "bytes_sent": "178", + "duration": "1", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "d8e73b76-5d8b-9c27-a8df-79dff6b2d322", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:52:19.276Z", + "upstream_service": "10.244.0.10:9080", + "upstream_service_time": "1", + "upstream_cluster": "outbound|9080||details.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:58492", + "downstream_local": "10.109.148.19:9080", + "downstream_remote": "10.244.0.13:52976", + "requested_server": "-", + "route_name": "default", + "uri_path": "/details/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:52:19.281Z] \"GET /reviews/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 358 2 2 \"-\" \"Go-http-client/1.1\" \"d8e73b76-5d8b-9c27-a8df-79dff6b2d322\" \"reviews:9080\" \"10.244.0.14:9080\" outbound|9080||reviews.bookinfo.svc.cluster.local 10.244.0.13:34890 10.99.45.111:9080 10.244.0.13:51640 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:52:19.281", + "timestampUnix": 1708941139281, + "accessLog": { + "authority": "reviews:9080", + "bytes_received": "0", + "bytes_sent": "358", + "duration": "2", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "d8e73b76-5d8b-9c27-a8df-79dff6b2d322", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:52:19.281Z", + "upstream_service": "10.244.0.14:9080", + "upstream_service_time": "2", + "upstream_cluster": "outbound|9080||reviews.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:34890", + "downstream_local": "10.99.45.111:9080", + "downstream_remote": "10.244.0.13:51640", + "requested_server": "-", + "route_name": "default", + "uri_path": "/reviews/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:52:19.273Z] \"GET /productpage HTTP/1.1\" 200 - via_upstream - \"-\" 0 4294 11 11 \"10.244.0.1\" \"Go-http-client/1.1\" \"d8e73b76-5d8b-9c27-a8df-79dff6b2d322\" \"192.168.49.2:30876\" \"10.244.0.13:9080\" inbound|9080|| 127.0.0.6:50619 10.244.0.13:9080 10.244.0.1:0 outbound_.9080_._.productpage.bookinfo.svc.cluster.local default", + "severity": "INFO", + "timestamp": "2024-02-26 09:52:19.273", + "timestampUnix": 1708941139273, + "accessLog": { + "authority": "192.168.49.2:30876", + "bytes_received": "0", + "bytes_sent": "4294", + "duration": "11", + "forwarded_for": "10.244.0.1", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "d8e73b76-5d8b-9c27-a8df-79dff6b2d322", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:52:19.273Z", + "upstream_service": "10.244.0.13:9080", + "upstream_service_time": "11", + "upstream_cluster": "inbound|9080||", + "upstream_local": "127.0.0.6:50619", + "downstream_local": "10.244.0.13:9080", + "downstream_remote": "10.244.0.1:0", + "requested_server": "outbound_.9080_._.productpage.bookinfo.svc.cluster.local", + "route_name": "default", + "uri_path": "/productpage", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:52:20.276Z] \"GET /details/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 178 1 1 \"-\" \"Go-http-client/1.1\" \"9e7785ad-2d91-9810-8ae3-b928d105b906\" \"details:9080\" \"10.244.0.10:9080\" outbound|9080||details.bookinfo.svc.cluster.local 10.244.0.13:60722 10.109.148.19:9080 10.244.0.13:52986 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:52:20.276", + "timestampUnix": 1708941140276, + "accessLog": { + "authority": "details:9080", + "bytes_received": "0", + "bytes_sent": "178", + "duration": "1", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "9e7785ad-2d91-9810-8ae3-b928d105b906", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:52:20.276Z", + "upstream_service": "10.244.0.10:9080", + "upstream_service_time": "1", + "upstream_cluster": "outbound|9080||details.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:60722", + "downstream_local": "10.109.148.19:9080", + "downstream_remote": "10.244.0.13:52986", + "requested_server": "-", + "route_name": "default", + "uri_path": "/details/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:52:20.281Z] \"GET /reviews/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 437 8 8 \"-\" \"Go-http-client/1.1\" \"9e7785ad-2d91-9810-8ae3-b928d105b906\" \"reviews:9080\" \"10.244.0.12:9080\" outbound|9080||reviews.bookinfo.svc.cluster.local 10.244.0.13:48584 10.99.45.111:9080 10.244.0.13:51648 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:52:20.281", + "timestampUnix": 1708941140281, + "accessLog": { + "authority": "reviews:9080", + "bytes_received": "0", + "bytes_sent": "437", + "duration": "8", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "9e7785ad-2d91-9810-8ae3-b928d105b906", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:52:20.281Z", + "upstream_service": "10.244.0.12:9080", + "upstream_service_time": "8", + "upstream_cluster": "outbound|9080||reviews.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:48584", + "downstream_local": "10.99.45.111:9080", + "downstream_remote": "10.244.0.13:51648", + "requested_server": "-", + "route_name": "default", + "uri_path": "/reviews/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:52:20.273Z] \"GET /productpage HTTP/1.1\" 200 - via_upstream - \"-\" 0 5289 17 17 \"10.244.0.1\" \"Go-http-client/1.1\" \"9e7785ad-2d91-9810-8ae3-b928d105b906\" \"192.168.49.2:30876\" \"10.244.0.13:9080\" inbound|9080|| 127.0.0.6:36947 10.244.0.13:9080 10.244.0.1:0 outbound_.9080_._.productpage.bookinfo.svc.cluster.local default", + "severity": "INFO", + "timestamp": "2024-02-26 09:52:20.273", + "timestampUnix": 1708941140273, + "accessLog": { + "authority": "192.168.49.2:30876", + "bytes_received": "0", + "bytes_sent": "5289", + "duration": "17", + "forwarded_for": "10.244.0.1", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "9e7785ad-2d91-9810-8ae3-b928d105b906", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:52:20.273Z", + "upstream_service": "10.244.0.13:9080", + "upstream_service_time": "17", + "upstream_cluster": "inbound|9080||", + "upstream_local": "127.0.0.6:36947", + "downstream_local": "10.244.0.13:9080", + "downstream_remote": "10.244.0.1:0", + "requested_server": "outbound_.9080_._.productpage.bookinfo.svc.cluster.local", + "route_name": "default", + "uri_path": "/productpage", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:52:21.276Z] \"GET /details/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 178 1 1 \"-\" \"Go-http-client/1.1\" \"f0a2fd3a-2a24-9c1a-837e-d256d27283ba\" \"details:9080\" \"10.244.0.10:9080\" outbound|9080||details.bookinfo.svc.cluster.local 10.244.0.13:58492 10.109.148.19:9080 10.244.0.13:53002 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:52:21.276", + "timestampUnix": 1708941141276, + "accessLog": { + "authority": "details:9080", + "bytes_received": "0", + "bytes_sent": "178", + "duration": "1", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "f0a2fd3a-2a24-9c1a-837e-d256d27283ba", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:52:21.276Z", + "upstream_service": "10.244.0.10:9080", + "upstream_service_time": "1", + "upstream_cluster": "outbound|9080||details.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:58492", + "downstream_local": "10.109.148.19:9080", + "downstream_remote": "10.244.0.13:53002", + "requested_server": "-", + "route_name": "default", + "uri_path": "/details/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:52:21.281Z] \"GET /reviews/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 358 2 2 \"-\" \"Go-http-client/1.1\" \"f0a2fd3a-2a24-9c1a-837e-d256d27283ba\" \"reviews:9080\" \"10.244.0.14:9080\" outbound|9080||reviews.bookinfo.svc.cluster.local 10.244.0.13:55880 10.99.45.111:9080 10.244.0.13:51660 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:52:21.281", + "timestampUnix": 1708941141281, + "accessLog": { + "authority": "reviews:9080", + "bytes_received": "0", + "bytes_sent": "358", + "duration": "2", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "f0a2fd3a-2a24-9c1a-837e-d256d27283ba", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:52:21.281Z", + "upstream_service": "10.244.0.14:9080", + "upstream_service_time": "2", + "upstream_cluster": "outbound|9080||reviews.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:55880", + "downstream_local": "10.99.45.111:9080", + "downstream_remote": "10.244.0.13:51660", + "requested_server": "-", + "route_name": "default", + "uri_path": "/reviews/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:52:21.273Z] \"GET /productpage HTTP/1.1\" 200 - via_upstream - \"-\" 0 4294 11 10 \"10.244.0.1\" \"Go-http-client/1.1\" \"f0a2fd3a-2a24-9c1a-837e-d256d27283ba\" \"192.168.49.2:30876\" \"10.244.0.13:9080\" inbound|9080|| 127.0.0.6:40829 10.244.0.13:9080 10.244.0.1:0 outbound_.9080_._.productpage.bookinfo.svc.cluster.local default", + "severity": "INFO", + "timestamp": "2024-02-26 09:52:21.273", + "timestampUnix": 1708941141273, + "accessLog": { + "authority": "192.168.49.2:30876", + "bytes_received": "0", + "bytes_sent": "4294", + "duration": "11", + "forwarded_for": "10.244.0.1", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "f0a2fd3a-2a24-9c1a-837e-d256d27283ba", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:52:21.273Z", + "upstream_service": "10.244.0.13:9080", + "upstream_service_time": "10", + "upstream_cluster": "inbound|9080||", + "upstream_local": "127.0.0.6:40829", + "downstream_local": "10.244.0.13:9080", + "downstream_remote": "10.244.0.1:0", + "requested_server": "outbound_.9080_._.productpage.bookinfo.svc.cluster.local", + "route_name": "default", + "uri_path": "/productpage", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:52:22.277Z] \"GET /details/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 178 1 1 \"-\" \"Go-http-client/1.1\" \"18075c7a-2d8c-9f78-8d13-5917a302a3e5\" \"details:9080\" \"10.244.0.10:9080\" outbound|9080||details.bookinfo.svc.cluster.local 10.244.0.13:58492 10.109.148.19:9080 10.244.0.13:53018 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:52:22.277", + "timestampUnix": 1708941142277, + "accessLog": { + "authority": "details:9080", + "bytes_received": "0", + "bytes_sent": "178", + "duration": "1", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "18075c7a-2d8c-9f78-8d13-5917a302a3e5", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:52:22.277Z", + "upstream_service": "10.244.0.10:9080", + "upstream_service_time": "1", + "upstream_cluster": "outbound|9080||details.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:58492", + "downstream_local": "10.109.148.19:9080", + "downstream_remote": "10.244.0.13:53018", + "requested_server": "-", + "route_name": "default", + "uri_path": "/details/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:52:22.281Z] \"GET /reviews/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 437 12 12 \"-\" \"Go-http-client/1.1\" \"18075c7a-2d8c-9f78-8d13-5917a302a3e5\" \"reviews:9080\" \"10.244.0.12:9080\" outbound|9080||reviews.bookinfo.svc.cluster.local 10.244.0.13:48578 10.99.45.111:9080 10.244.0.13:51674 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:52:22.281", + "timestampUnix": 1708941142281, + "accessLog": { + "authority": "reviews:9080", + "bytes_received": "0", + "bytes_sent": "437", + "duration": "12", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "18075c7a-2d8c-9f78-8d13-5917a302a3e5", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:52:22.281Z", + "upstream_service": "10.244.0.12:9080", + "upstream_service_time": "12", + "upstream_cluster": "outbound|9080||reviews.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:48578", + "downstream_local": "10.99.45.111:9080", + "downstream_remote": "10.244.0.13:51674", + "requested_server": "-", + "route_name": "default", + "uri_path": "/reviews/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:52:22.273Z] \"GET /productpage HTTP/1.1\" 200 - via_upstream - \"-\" 0 5289 22 22 \"10.244.0.1\" \"Go-http-client/1.1\" \"18075c7a-2d8c-9f78-8d13-5917a302a3e5\" \"192.168.49.2:30876\" \"10.244.0.13:9080\" inbound|9080|| 127.0.0.6:56003 10.244.0.13:9080 10.244.0.1:0 outbound_.9080_._.productpage.bookinfo.svc.cluster.local default", + "severity": "INFO", + "timestamp": "2024-02-26 09:52:22.273", + "timestampUnix": 1708941142273, + "accessLog": { + "authority": "192.168.49.2:30876", + "bytes_received": "0", + "bytes_sent": "5289", + "duration": "22", + "forwarded_for": "10.244.0.1", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "18075c7a-2d8c-9f78-8d13-5917a302a3e5", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:52:22.273Z", + "upstream_service": "10.244.0.13:9080", + "upstream_service_time": "22", + "upstream_cluster": "inbound|9080||", + "upstream_local": "127.0.0.6:56003", + "downstream_local": "10.244.0.13:9080", + "downstream_remote": "10.244.0.1:0", + "requested_server": "outbound_.9080_._.productpage.bookinfo.svc.cluster.local", + "route_name": "default", + "uri_path": "/productpage", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:52:23.276Z] \"GET /details/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 178 1 1 \"-\" \"Go-http-client/1.1\" \"9550e288-9893-9d98-99a5-4296d6cb7c68\" \"details:9080\" \"10.244.0.10:9080\" outbound|9080||details.bookinfo.svc.cluster.local 10.244.0.13:60722 10.109.148.19:9080 10.244.0.13:53030 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:52:23.276", + "timestampUnix": 1708941143276, + "accessLog": { + "authority": "details:9080", + "bytes_received": "0", + "bytes_sent": "178", + "duration": "1", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "9550e288-9893-9d98-99a5-4296d6cb7c68", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:52:23.276Z", + "upstream_service": "10.244.0.10:9080", + "upstream_service_time": "1", + "upstream_cluster": "outbound|9080||details.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:60722", + "downstream_local": "10.109.148.19:9080", + "downstream_remote": "10.244.0.13:53030", + "requested_server": "-", + "route_name": "default", + "uri_path": "/details/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:52:23.280Z] \"GET /reviews/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 358 2 2 \"-\" \"Go-http-client/1.1\" \"9550e288-9893-9d98-99a5-4296d6cb7c68\" \"reviews:9080\" \"10.244.0.14:9080\" outbound|9080||reviews.bookinfo.svc.cluster.local 10.244.0.13:34890 10.99.45.111:9080 10.244.0.13:51684 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:52:23.28", + "timestampUnix": 1708941143280, + "accessLog": { + "authority": "reviews:9080", + "bytes_received": "0", + "bytes_sent": "358", + "duration": "2", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "9550e288-9893-9d98-99a5-4296d6cb7c68", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:52:23.280Z", + "upstream_service": "10.244.0.14:9080", + "upstream_service_time": "2", + "upstream_cluster": "outbound|9080||reviews.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:34890", + "downstream_local": "10.99.45.111:9080", + "downstream_remote": "10.244.0.13:51684", + "requested_server": "-", + "route_name": "default", + "uri_path": "/reviews/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:52:23.273Z] \"GET /productpage HTTP/1.1\" 200 - via_upstream - \"-\" 0 4294 11 10 \"10.244.0.1\" \"Go-http-client/1.1\" \"9550e288-9893-9d98-99a5-4296d6cb7c68\" \"192.168.49.2:30876\" \"10.244.0.13:9080\" inbound|9080|| 127.0.0.6:43005 10.244.0.13:9080 10.244.0.1:0 outbound_.9080_._.productpage.bookinfo.svc.cluster.local default", + "severity": "INFO", + "timestamp": "2024-02-26 09:52:23.273", + "timestampUnix": 1708941143273, + "accessLog": { + "authority": "192.168.49.2:30876", + "bytes_received": "0", + "bytes_sent": "4294", + "duration": "11", + "forwarded_for": "10.244.0.1", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "9550e288-9893-9d98-99a5-4296d6cb7c68", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:52:23.273Z", + "upstream_service": "10.244.0.13:9080", + "upstream_service_time": "10", + "upstream_cluster": "inbound|9080||", + "upstream_local": "127.0.0.6:43005", + "downstream_local": "10.244.0.13:9080", + "downstream_remote": "10.244.0.1:0", + "requested_server": "outbound_.9080_._.productpage.bookinfo.svc.cluster.local", + "route_name": "default", + "uri_path": "/productpage", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:52:24.280Z] \"GET /details/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 178 1 1 \"-\" \"Go-http-client/1.1\" \"4dcf812e-5f32-98a7-88cc-1f38fb559e7b\" \"details:9080\" \"10.244.0.10:9080\" outbound|9080||details.bookinfo.svc.cluster.local 10.244.0.13:60722 10.109.148.19:9080 10.244.0.13:53034 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:52:24.28", + "timestampUnix": 1708941144280, + "accessLog": { + "authority": "details:9080", + "bytes_received": "0", + "bytes_sent": "178", + "duration": "1", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "4dcf812e-5f32-98a7-88cc-1f38fb559e7b", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:52:24.280Z", + "upstream_service": "10.244.0.10:9080", + "upstream_service_time": "1", + "upstream_cluster": "outbound|9080||details.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:60722", + "downstream_local": "10.109.148.19:9080", + "downstream_remote": "10.244.0.13:53034", + "requested_server": "-", + "route_name": "default", + "uri_path": "/details/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:52:24.284Z] \"GET /reviews/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 358 2 2 \"-\" \"Go-http-client/1.1\" \"4dcf812e-5f32-98a7-88cc-1f38fb559e7b\" \"reviews:9080\" \"10.244.0.14:9080\" outbound|9080||reviews.bookinfo.svc.cluster.local 10.244.0.13:55880 10.99.45.111:9080 10.244.0.13:51692 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:52:24.284", + "timestampUnix": 1708941144284, + "accessLog": { + "authority": "reviews:9080", + "bytes_received": "0", + "bytes_sent": "358", + "duration": "2", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "4dcf812e-5f32-98a7-88cc-1f38fb559e7b", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:52:24.284Z", + "upstream_service": "10.244.0.14:9080", + "upstream_service_time": "2", + "upstream_cluster": "outbound|9080||reviews.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:55880", + "downstream_local": "10.99.45.111:9080", + "downstream_remote": "10.244.0.13:51692", + "requested_server": "-", + "route_name": "default", + "uri_path": "/reviews/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:52:24.274Z] \"GET /productpage HTTP/1.1\" 200 - via_upstream - \"-\" 0 4294 14 13 \"10.244.0.1\" \"Go-http-client/1.1\" \"4dcf812e-5f32-98a7-88cc-1f38fb559e7b\" \"192.168.49.2:30876\" \"10.244.0.13:9080\" inbound|9080|| 127.0.0.6:49679 10.244.0.13:9080 10.244.0.1:0 outbound_.9080_._.productpage.bookinfo.svc.cluster.local default", + "severity": "INFO", + "timestamp": "2024-02-26 09:52:24.274", + "timestampUnix": 1708941144274, + "accessLog": { + "authority": "192.168.49.2:30876", + "bytes_received": "0", + "bytes_sent": "4294", + "duration": "14", + "forwarded_for": "10.244.0.1", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "4dcf812e-5f32-98a7-88cc-1f38fb559e7b", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:52:24.274Z", + "upstream_service": "10.244.0.13:9080", + "upstream_service_time": "13", + "upstream_cluster": "inbound|9080||", + "upstream_local": "127.0.0.6:49679", + "downstream_local": "10.244.0.13:9080", + "downstream_remote": "10.244.0.1:0", + "requested_server": "outbound_.9080_._.productpage.bookinfo.svc.cluster.local", + "route_name": "default", + "uri_path": "/productpage", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:52:25.276Z] \"GET /details/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 178 1 1 \"-\" \"Go-http-client/1.1\" \"392dbf51-ba72-9295-bebc-2b0443d187c3\" \"details:9080\" \"10.244.0.10:9080\" outbound|9080||details.bookinfo.svc.cluster.local 10.244.0.13:58492 10.109.148.19:9080 10.244.0.13:53042 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:52:25.276", + "timestampUnix": 1708941145276, + "accessLog": { + "authority": "details:9080", + "bytes_received": "0", + "bytes_sent": "178", + "duration": "1", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "392dbf51-ba72-9295-bebc-2b0443d187c3", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:52:25.276Z", + "upstream_service": "10.244.0.10:9080", + "upstream_service_time": "1", + "upstream_cluster": "outbound|9080||details.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:58492", + "downstream_local": "10.109.148.19:9080", + "downstream_remote": "10.244.0.13:53042", + "requested_server": "-", + "route_name": "default", + "uri_path": "/details/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:52:25.281Z] \"GET /reviews/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 437 9 9 \"-\" \"Go-http-client/1.1\" \"392dbf51-ba72-9295-bebc-2b0443d187c3\" \"reviews:9080\" \"10.244.0.12:9080\" outbound|9080||reviews.bookinfo.svc.cluster.local 10.244.0.13:48584 10.99.45.111:9080 10.244.0.13:51694 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:52:25.281", + "timestampUnix": 1708941145281, + "accessLog": { + "authority": "reviews:9080", + "bytes_received": "0", + "bytes_sent": "437", + "duration": "9", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "392dbf51-ba72-9295-bebc-2b0443d187c3", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:52:25.281Z", + "upstream_service": "10.244.0.12:9080", + "upstream_service_time": "9", + "upstream_cluster": "outbound|9080||reviews.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:48584", + "downstream_local": "10.99.45.111:9080", + "downstream_remote": "10.244.0.13:51694", + "requested_server": "-", + "route_name": "default", + "uri_path": "/reviews/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:52:25.273Z] \"GET /productpage HTTP/1.1\" 200 - via_upstream - \"-\" 0 5289 19 19 \"10.244.0.1\" \"Go-http-client/1.1\" \"392dbf51-ba72-9295-bebc-2b0443d187c3\" \"192.168.49.2:30876\" \"10.244.0.13:9080\" inbound|9080|| 127.0.0.6:35995 10.244.0.13:9080 10.244.0.1:0 outbound_.9080_._.productpage.bookinfo.svc.cluster.local default", + "severity": "INFO", + "timestamp": "2024-02-26 09:52:25.273", + "timestampUnix": 1708941145273, + "accessLog": { + "authority": "192.168.49.2:30876", + "bytes_received": "0", + "bytes_sent": "5289", + "duration": "19", + "forwarded_for": "10.244.0.1", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "392dbf51-ba72-9295-bebc-2b0443d187c3", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:52:25.273Z", + "upstream_service": "10.244.0.13:9080", + "upstream_service_time": "19", + "upstream_cluster": "inbound|9080||", + "upstream_local": "127.0.0.6:35995", + "downstream_local": "10.244.0.13:9080", + "downstream_remote": "10.244.0.1:0", + "requested_server": "outbound_.9080_._.productpage.bookinfo.svc.cluster.local", + "route_name": "default", + "uri_path": "/productpage", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:52:26.277Z] \"GET /details/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 178 1 1 \"-\" \"Go-http-client/1.1\" \"a336ecc8-b5e2-9215-be1d-553e7d979d2a\" \"details:9080\" \"10.244.0.10:9080\" outbound|9080||details.bookinfo.svc.cluster.local 10.244.0.13:58492 10.109.148.19:9080 10.244.0.13:53050 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:52:26.277", + "timestampUnix": 1708941146277, + "accessLog": { + "authority": "details:9080", + "bytes_received": "0", + "bytes_sent": "178", + "duration": "1", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "a336ecc8-b5e2-9215-be1d-553e7d979d2a", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:52:26.277Z", + "upstream_service": "10.244.0.10:9080", + "upstream_service_time": "1", + "upstream_cluster": "outbound|9080||details.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:58492", + "downstream_local": "10.109.148.19:9080", + "downstream_remote": "10.244.0.13:53050", + "requested_server": "-", + "route_name": "default", + "uri_path": "/details/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:52:26.282Z] \"GET /reviews/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 437 10 10 \"-\" \"Go-http-client/1.1\" \"a336ecc8-b5e2-9215-be1d-553e7d979d2a\" \"reviews:9080\" \"10.244.0.12:9080\" outbound|9080||reviews.bookinfo.svc.cluster.local 10.244.0.13:48584 10.99.45.111:9080 10.244.0.13:51698 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:52:26.282", + "timestampUnix": 1708941146282, + "accessLog": { + "authority": "reviews:9080", + "bytes_received": "0", + "bytes_sent": "437", + "duration": "10", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "a336ecc8-b5e2-9215-be1d-553e7d979d2a", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:52:26.282Z", + "upstream_service": "10.244.0.12:9080", + "upstream_service_time": "10", + "upstream_cluster": "outbound|9080||reviews.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:48584", + "downstream_local": "10.99.45.111:9080", + "downstream_remote": "10.244.0.13:51698", + "requested_server": "-", + "route_name": "default", + "uri_path": "/reviews/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:52:26.273Z] \"GET /productpage HTTP/1.1\" 200 - via_upstream - \"-\" 0 5289 20 20 \"10.244.0.1\" \"Go-http-client/1.1\" \"a336ecc8-b5e2-9215-be1d-553e7d979d2a\" \"192.168.49.2:30876\" \"10.244.0.13:9080\" inbound|9080|| 127.0.0.6:34603 10.244.0.13:9080 10.244.0.1:0 outbound_.9080_._.productpage.bookinfo.svc.cluster.local default", + "severity": "INFO", + "timestamp": "2024-02-26 09:52:26.273", + "timestampUnix": 1708941146273, + "accessLog": { + "authority": "192.168.49.2:30876", + "bytes_received": "0", + "bytes_sent": "5289", + "duration": "20", + "forwarded_for": "10.244.0.1", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "a336ecc8-b5e2-9215-be1d-553e7d979d2a", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:52:26.273Z", + "upstream_service": "10.244.0.13:9080", + "upstream_service_time": "20", + "upstream_cluster": "inbound|9080||", + "upstream_local": "127.0.0.6:34603", + "downstream_local": "10.244.0.13:9080", + "downstream_remote": "10.244.0.1:0", + "requested_server": "outbound_.9080_._.productpage.bookinfo.svc.cluster.local", + "route_name": "default", + "uri_path": "/productpage", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:52:27.276Z] \"GET /details/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 178 1 1 \"-\" \"Go-http-client/1.1\" \"68e155fc-7728-9123-8359-b792174ae595\" \"details:9080\" \"10.244.0.10:9080\" outbound|9080||details.bookinfo.svc.cluster.local 10.244.0.13:58492 10.109.148.19:9080 10.244.0.13:52434 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:52:27.276", + "timestampUnix": 1708941147276, + "accessLog": { + "authority": "details:9080", + "bytes_received": "0", + "bytes_sent": "178", + "duration": "1", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "68e155fc-7728-9123-8359-b792174ae595", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:52:27.276Z", + "upstream_service": "10.244.0.10:9080", + "upstream_service_time": "1", + "upstream_cluster": "outbound|9080||details.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:58492", + "downstream_local": "10.109.148.19:9080", + "downstream_remote": "10.244.0.13:52434", + "requested_server": "-", + "route_name": "default", + "uri_path": "/details/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:52:27.280Z] \"GET /reviews/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 358 2 2 \"-\" \"Go-http-client/1.1\" \"68e155fc-7728-9123-8359-b792174ae595\" \"reviews:9080\" \"10.244.0.14:9080\" outbound|9080||reviews.bookinfo.svc.cluster.local 10.244.0.13:34890 10.99.45.111:9080 10.244.0.13:53872 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:52:27.28", + "timestampUnix": 1708941147280, + "accessLog": { + "authority": "reviews:9080", + "bytes_received": "0", + "bytes_sent": "358", + "duration": "2", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "68e155fc-7728-9123-8359-b792174ae595", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:52:27.280Z", + "upstream_service": "10.244.0.14:9080", + "upstream_service_time": "2", + "upstream_cluster": "outbound|9080||reviews.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:34890", + "downstream_local": "10.99.45.111:9080", + "downstream_remote": "10.244.0.13:53872", + "requested_server": "-", + "route_name": "default", + "uri_path": "/reviews/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:52:27.273Z] \"GET /productpage HTTP/1.1\" 200 - via_upstream - \"-\" 0 4294 11 11 \"10.244.0.1\" \"Go-http-client/1.1\" \"68e155fc-7728-9123-8359-b792174ae595\" \"192.168.49.2:30876\" \"10.244.0.13:9080\" inbound|9080|| 127.0.0.6:53601 10.244.0.13:9080 10.244.0.1:0 outbound_.9080_._.productpage.bookinfo.svc.cluster.local default", + "severity": "INFO", + "timestamp": "2024-02-26 09:52:27.273", + "timestampUnix": 1708941147273, + "accessLog": { + "authority": "192.168.49.2:30876", + "bytes_received": "0", + "bytes_sent": "4294", + "duration": "11", + "forwarded_for": "10.244.0.1", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "68e155fc-7728-9123-8359-b792174ae595", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:52:27.273Z", + "upstream_service": "10.244.0.13:9080", + "upstream_service_time": "11", + "upstream_cluster": "inbound|9080||", + "upstream_local": "127.0.0.6:53601", + "downstream_local": "10.244.0.13:9080", + "downstream_remote": "10.244.0.1:0", + "requested_server": "outbound_.9080_._.productpage.bookinfo.svc.cluster.local", + "route_name": "default", + "uri_path": "/productpage", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:52:28.276Z] \"GET /details/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 178 1 1 \"-\" \"Go-http-client/1.1\" \"9aaddbdf-432e-9887-bba9-64f301d1b12d\" \"details:9080\" \"10.244.0.10:9080\" outbound|9080||details.bookinfo.svc.cluster.local 10.244.0.13:60722 10.109.148.19:9080 10.244.0.13:52438 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:52:28.276", + "timestampUnix": 1708941148276, + "accessLog": { + "authority": "details:9080", + "bytes_received": "0", + "bytes_sent": "178", + "duration": "1", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "9aaddbdf-432e-9887-bba9-64f301d1b12d", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:52:28.276Z", + "upstream_service": "10.244.0.10:9080", + "upstream_service_time": "1", + "upstream_cluster": "outbound|9080||details.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:60722", + "downstream_local": "10.109.148.19:9080", + "downstream_remote": "10.244.0.13:52438", + "requested_server": "-", + "route_name": "default", + "uri_path": "/details/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:52:28.281Z] \"GET /reviews/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 437 8 8 \"-\" \"Go-http-client/1.1\" \"9aaddbdf-432e-9887-bba9-64f301d1b12d\" \"reviews:9080\" \"10.244.0.12:9080\" outbound|9080||reviews.bookinfo.svc.cluster.local 10.244.0.13:48584 10.99.45.111:9080 10.244.0.13:53888 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:52:28.281", + "timestampUnix": 1708941148281, + "accessLog": { + "authority": "reviews:9080", + "bytes_received": "0", + "bytes_sent": "437", + "duration": "8", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "9aaddbdf-432e-9887-bba9-64f301d1b12d", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:52:28.281Z", + "upstream_service": "10.244.0.12:9080", + "upstream_service_time": "8", + "upstream_cluster": "outbound|9080||reviews.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:48584", + "downstream_local": "10.99.45.111:9080", + "downstream_remote": "10.244.0.13:53888", + "requested_server": "-", + "route_name": "default", + "uri_path": "/reviews/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:52:28.273Z] \"GET /productpage HTTP/1.1\" 200 - via_upstream - \"-\" 0 5289 18 17 \"10.244.0.1\" \"Go-http-client/1.1\" \"9aaddbdf-432e-9887-bba9-64f301d1b12d\" \"192.168.49.2:30876\" \"10.244.0.13:9080\" inbound|9080|| 127.0.0.6:41643 10.244.0.13:9080 10.244.0.1:0 outbound_.9080_._.productpage.bookinfo.svc.cluster.local default", + "severity": "INFO", + "timestamp": "2024-02-26 09:52:28.273", + "timestampUnix": 1708941148273, + "accessLog": { + "authority": "192.168.49.2:30876", + "bytes_received": "0", + "bytes_sent": "5289", + "duration": "18", + "forwarded_for": "10.244.0.1", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "9aaddbdf-432e-9887-bba9-64f301d1b12d", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:52:28.273Z", + "upstream_service": "10.244.0.13:9080", + "upstream_service_time": "17", + "upstream_cluster": "inbound|9080||", + "upstream_local": "127.0.0.6:41643", + "downstream_local": "10.244.0.13:9080", + "downstream_remote": "10.244.0.1:0", + "requested_server": "outbound_.9080_._.productpage.bookinfo.svc.cluster.local", + "route_name": "default", + "uri_path": "/productpage", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:52:29.276Z] \"GET /details/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 178 1 1 \"-\" \"Go-http-client/1.1\" \"2b874344-4a76-968e-996b-0903061aafe0\" \"details:9080\" \"10.244.0.10:9080\" outbound|9080||details.bookinfo.svc.cluster.local 10.244.0.13:60722 10.109.148.19:9080 10.244.0.13:52446 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:52:29.276", + "timestampUnix": 1708941149276, + "accessLog": { + "authority": "details:9080", + "bytes_received": "0", + "bytes_sent": "178", + "duration": "1", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "2b874344-4a76-968e-996b-0903061aafe0", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:52:29.276Z", + "upstream_service": "10.244.0.10:9080", + "upstream_service_time": "1", + "upstream_cluster": "outbound|9080||details.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:60722", + "downstream_local": "10.109.148.19:9080", + "downstream_remote": "10.244.0.13:52446", + "requested_server": "-", + "route_name": "default", + "uri_path": "/details/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:52:29.280Z] \"GET /reviews/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 442 9 9 \"-\" \"Go-http-client/1.1\" \"2b874344-4a76-968e-996b-0903061aafe0\" \"reviews:9080\" \"10.244.0.15:9080\" outbound|9080||reviews.bookinfo.svc.cluster.local 10.244.0.13:32944 10.99.45.111:9080 10.244.0.13:53900 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:52:29.28", + "timestampUnix": 1708941149280, + "accessLog": { + "authority": "reviews:9080", + "bytes_received": "0", + "bytes_sent": "442", + "duration": "9", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "2b874344-4a76-968e-996b-0903061aafe0", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:52:29.280Z", + "upstream_service": "10.244.0.15:9080", + "upstream_service_time": "9", + "upstream_cluster": "outbound|9080||reviews.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:32944", + "downstream_local": "10.99.45.111:9080", + "downstream_remote": "10.244.0.13:53900", + "requested_server": "-", + "route_name": "default", + "uri_path": "/reviews/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:52:29.273Z] \"GET /productpage HTTP/1.1\" 200 - via_upstream - \"-\" 0 5294 18 18 \"10.244.0.1\" \"Go-http-client/1.1\" \"2b874344-4a76-968e-996b-0903061aafe0\" \"192.168.49.2:30876\" \"10.244.0.13:9080\" inbound|9080|| 127.0.0.6:35087 10.244.0.13:9080 10.244.0.1:0 outbound_.9080_._.productpage.bookinfo.svc.cluster.local default", + "severity": "INFO", + "timestamp": "2024-02-26 09:52:29.273", + "timestampUnix": 1708941149273, + "accessLog": { + "authority": "192.168.49.2:30876", + "bytes_received": "0", + "bytes_sent": "5294", + "duration": "18", + "forwarded_for": "10.244.0.1", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "2b874344-4a76-968e-996b-0903061aafe0", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:52:29.273Z", + "upstream_service": "10.244.0.13:9080", + "upstream_service_time": "18", + "upstream_cluster": "inbound|9080||", + "upstream_local": "127.0.0.6:35087", + "downstream_local": "10.244.0.13:9080", + "downstream_remote": "10.244.0.1:0", + "requested_server": "outbound_.9080_._.productpage.bookinfo.svc.cluster.local", + "route_name": "default", + "uri_path": "/productpage", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:52:30.276Z] \"GET /details/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 178 1 1 \"-\" \"Go-http-client/1.1\" \"3f766598-9537-9f25-9078-5692bd99a129\" \"details:9080\" \"10.244.0.10:9080\" outbound|9080||details.bookinfo.svc.cluster.local 10.244.0.13:58492 10.109.148.19:9080 10.244.0.13:52460 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:52:30.276", + "timestampUnix": 1708941150276, + "accessLog": { + "authority": "details:9080", + "bytes_received": "0", + "bytes_sent": "178", + "duration": "1", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "3f766598-9537-9f25-9078-5692bd99a129", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:52:30.276Z", + "upstream_service": "10.244.0.10:9080", + "upstream_service_time": "1", + "upstream_cluster": "outbound|9080||details.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:58492", + "downstream_local": "10.109.148.19:9080", + "downstream_remote": "10.244.0.13:52460", + "requested_server": "-", + "route_name": "default", + "uri_path": "/details/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:52:30.280Z] \"GET /reviews/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 358 2 2 \"-\" \"Go-http-client/1.1\" \"3f766598-9537-9f25-9078-5692bd99a129\" \"reviews:9080\" \"10.244.0.14:9080\" outbound|9080||reviews.bookinfo.svc.cluster.local 10.244.0.13:55880 10.99.45.111:9080 10.244.0.13:53914 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:52:30.28", + "timestampUnix": 1708941150280, + "accessLog": { + "authority": "reviews:9080", + "bytes_received": "0", + "bytes_sent": "358", + "duration": "2", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "3f766598-9537-9f25-9078-5692bd99a129", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:52:30.280Z", + "upstream_service": "10.244.0.14:9080", + "upstream_service_time": "2", + "upstream_cluster": "outbound|9080||reviews.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:55880", + "downstream_local": "10.99.45.111:9080", + "downstream_remote": "10.244.0.13:53914", + "requested_server": "-", + "route_name": "default", + "uri_path": "/reviews/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:52:30.273Z] \"GET /productpage HTTP/1.1\" 200 - via_upstream - \"-\" 0 4294 10 9 \"10.244.0.1\" \"Go-http-client/1.1\" \"3f766598-9537-9f25-9078-5692bd99a129\" \"192.168.49.2:30876\" \"10.244.0.13:9080\" inbound|9080|| 127.0.0.6:51073 10.244.0.13:9080 10.244.0.1:0 outbound_.9080_._.productpage.bookinfo.svc.cluster.local default", + "severity": "INFO", + "timestamp": "2024-02-26 09:52:30.273", + "timestampUnix": 1708941150273, + "accessLog": { + "authority": "192.168.49.2:30876", + "bytes_received": "0", + "bytes_sent": "4294", + "duration": "10", + "forwarded_for": "10.244.0.1", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "3f766598-9537-9f25-9078-5692bd99a129", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:52:30.273Z", + "upstream_service": "10.244.0.13:9080", + "upstream_service_time": "9", + "upstream_cluster": "inbound|9080||", + "upstream_local": "127.0.0.6:51073", + "downstream_local": "10.244.0.13:9080", + "downstream_remote": "10.244.0.1:0", + "requested_server": "outbound_.9080_._.productpage.bookinfo.svc.cluster.local", + "route_name": "default", + "uri_path": "/productpage", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:52:31.277Z] \"GET /details/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 178 1 1 \"-\" \"Go-http-client/1.1\" \"331762ab-8590-9ada-8a06-4aaabff0fdc7\" \"details:9080\" \"10.244.0.10:9080\" outbound|9080||details.bookinfo.svc.cluster.local 10.244.0.13:60722 10.109.148.19:9080 10.244.0.13:52474 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:52:31.277", + "timestampUnix": 1708941151277, + "accessLog": { + "authority": "details:9080", + "bytes_received": "0", + "bytes_sent": "178", + "duration": "1", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "331762ab-8590-9ada-8a06-4aaabff0fdc7", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:52:31.277Z", + "upstream_service": "10.244.0.10:9080", + "upstream_service_time": "1", + "upstream_cluster": "outbound|9080||details.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:60722", + "downstream_local": "10.109.148.19:9080", + "downstream_remote": "10.244.0.13:52474", + "requested_server": "-", + "route_name": "default", + "uri_path": "/details/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:52:31.281Z] \"GET /reviews/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 442 7 7 \"-\" \"Go-http-client/1.1\" \"331762ab-8590-9ada-8a06-4aaabff0fdc7\" \"reviews:9080\" \"10.244.0.15:9080\" outbound|9080||reviews.bookinfo.svc.cluster.local 10.244.0.13:50830 10.99.45.111:9080 10.244.0.13:53924 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:52:31.281", + "timestampUnix": 1708941151281, + "accessLog": { + "authority": "reviews:9080", + "bytes_received": "0", + "bytes_sent": "442", + "duration": "7", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "331762ab-8590-9ada-8a06-4aaabff0fdc7", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:52:31.281Z", + "upstream_service": "10.244.0.15:9080", + "upstream_service_time": "7", + "upstream_cluster": "outbound|9080||reviews.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:50830", + "downstream_local": "10.99.45.111:9080", + "downstream_remote": "10.244.0.13:53924", + "requested_server": "-", + "route_name": "default", + "uri_path": "/reviews/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:52:31.273Z] \"GET /productpage HTTP/1.1\" 200 - via_upstream - \"-\" 0 5294 16 16 \"10.244.0.1\" \"Go-http-client/1.1\" \"331762ab-8590-9ada-8a06-4aaabff0fdc7\" \"192.168.49.2:30876\" \"10.244.0.13:9080\" inbound|9080|| 127.0.0.6:44429 10.244.0.13:9080 10.244.0.1:0 outbound_.9080_._.productpage.bookinfo.svc.cluster.local default", + "severity": "INFO", + "timestamp": "2024-02-26 09:52:31.273", + "timestampUnix": 1708941151273, + "accessLog": { + "authority": "192.168.49.2:30876", + "bytes_received": "0", + "bytes_sent": "5294", + "duration": "16", + "forwarded_for": "10.244.0.1", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "331762ab-8590-9ada-8a06-4aaabff0fdc7", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:52:31.273Z", + "upstream_service": "10.244.0.13:9080", + "upstream_service_time": "16", + "upstream_cluster": "inbound|9080||", + "upstream_local": "127.0.0.6:44429", + "downstream_local": "10.244.0.13:9080", + "downstream_remote": "10.244.0.1:0", + "requested_server": "outbound_.9080_._.productpage.bookinfo.svc.cluster.local", + "route_name": "default", + "uri_path": "/productpage", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:52:32.276Z] \"GET /details/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 178 1 1 \"-\" \"Go-http-client/1.1\" \"0c2b795e-b336-919f-8d59-06e8c901c884\" \"details:9080\" \"10.244.0.10:9080\" outbound|9080||details.bookinfo.svc.cluster.local 10.244.0.13:58492 10.109.148.19:9080 10.244.0.13:52486 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:52:32.276", + "timestampUnix": 1708941152276, + "accessLog": { + "authority": "details:9080", + "bytes_received": "0", + "bytes_sent": "178", + "duration": "1", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "0c2b795e-b336-919f-8d59-06e8c901c884", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:52:32.276Z", + "upstream_service": "10.244.0.10:9080", + "upstream_service_time": "1", + "upstream_cluster": "outbound|9080||details.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:58492", + "downstream_local": "10.109.148.19:9080", + "downstream_remote": "10.244.0.13:52486", + "requested_server": "-", + "route_name": "default", + "uri_path": "/details/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:52:32.280Z] \"GET /reviews/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 442 7 7 \"-\" \"Go-http-client/1.1\" \"0c2b795e-b336-919f-8d59-06e8c901c884\" \"reviews:9080\" \"10.244.0.15:9080\" outbound|9080||reviews.bookinfo.svc.cluster.local 10.244.0.13:32944 10.99.45.111:9080 10.244.0.13:53932 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:52:32.28", + "timestampUnix": 1708941152280, + "accessLog": { + "authority": "reviews:9080", + "bytes_received": "0", + "bytes_sent": "442", + "duration": "7", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "0c2b795e-b336-919f-8d59-06e8c901c884", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:52:32.280Z", + "upstream_service": "10.244.0.15:9080", + "upstream_service_time": "7", + "upstream_cluster": "outbound|9080||reviews.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:32944", + "downstream_local": "10.99.45.111:9080", + "downstream_remote": "10.244.0.13:53932", + "requested_server": "-", + "route_name": "default", + "uri_path": "/reviews/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:52:32.273Z] \"GET /productpage HTTP/1.1\" 200 - via_upstream - \"-\" 0 5294 15 15 \"10.244.0.1\" \"Go-http-client/1.1\" \"0c2b795e-b336-919f-8d59-06e8c901c884\" \"192.168.49.2:30876\" \"10.244.0.13:9080\" inbound|9080|| 127.0.0.6:47071 10.244.0.13:9080 10.244.0.1:0 outbound_.9080_._.productpage.bookinfo.svc.cluster.local default", + "severity": "INFO", + "timestamp": "2024-02-26 09:52:32.273", + "timestampUnix": 1708941152273, + "accessLog": { + "authority": "192.168.49.2:30876", + "bytes_received": "0", + "bytes_sent": "5294", + "duration": "15", + "forwarded_for": "10.244.0.1", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "0c2b795e-b336-919f-8d59-06e8c901c884", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:52:32.273Z", + "upstream_service": "10.244.0.13:9080", + "upstream_service_time": "15", + "upstream_cluster": "inbound|9080||", + "upstream_local": "127.0.0.6:47071", + "downstream_local": "10.244.0.13:9080", + "downstream_remote": "10.244.0.1:0", + "requested_server": "outbound_.9080_._.productpage.bookinfo.svc.cluster.local", + "route_name": "default", + "uri_path": "/productpage", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:52:33.277Z] \"GET /details/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 178 1 1 \"-\" \"Go-http-client/1.1\" \"5a4d6a2f-9612-9cab-ab08-e7fc011a450f\" \"details:9080\" \"10.244.0.10:9080\" outbound|9080||details.bookinfo.svc.cluster.local 10.244.0.13:60722 10.109.148.19:9080 10.244.0.13:52494 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:52:33.277", + "timestampUnix": 1708941153277, + "accessLog": { + "authority": "details:9080", + "bytes_received": "0", + "bytes_sent": "178", + "duration": "1", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "5a4d6a2f-9612-9cab-ab08-e7fc011a450f", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:52:33.277Z", + "upstream_service": "10.244.0.10:9080", + "upstream_service_time": "1", + "upstream_cluster": "outbound|9080||details.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:60722", + "downstream_local": "10.109.148.19:9080", + "downstream_remote": "10.244.0.13:52494", + "requested_server": "-", + "route_name": "default", + "uri_path": "/details/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:52:33.281Z] \"GET /reviews/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 437 8 8 \"-\" \"Go-http-client/1.1\" \"5a4d6a2f-9612-9cab-ab08-e7fc011a450f\" \"reviews:9080\" \"10.244.0.12:9080\" outbound|9080||reviews.bookinfo.svc.cluster.local 10.244.0.13:48578 10.99.45.111:9080 10.244.0.13:53944 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:52:33.281", + "timestampUnix": 1708941153281, + "accessLog": { + "authority": "reviews:9080", + "bytes_received": "0", + "bytes_sent": "437", + "duration": "8", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "5a4d6a2f-9612-9cab-ab08-e7fc011a450f", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:52:33.281Z", + "upstream_service": "10.244.0.12:9080", + "upstream_service_time": "8", + "upstream_cluster": "outbound|9080||reviews.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:48578", + "downstream_local": "10.99.45.111:9080", + "downstream_remote": "10.244.0.13:53944", + "requested_server": "-", + "route_name": "default", + "uri_path": "/reviews/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:52:33.273Z] \"GET /productpage HTTP/1.1\" 200 - via_upstream - \"-\" 0 5289 17 16 \"10.244.0.1\" \"Go-http-client/1.1\" \"5a4d6a2f-9612-9cab-ab08-e7fc011a450f\" \"192.168.49.2:30876\" \"10.244.0.13:9080\" inbound|9080|| 127.0.0.6:34797 10.244.0.13:9080 10.244.0.1:0 outbound_.9080_._.productpage.bookinfo.svc.cluster.local default", + "severity": "INFO", + "timestamp": "2024-02-26 09:52:33.273", + "timestampUnix": 1708941153273, + "accessLog": { + "authority": "192.168.49.2:30876", + "bytes_received": "0", + "bytes_sent": "5289", + "duration": "17", + "forwarded_for": "10.244.0.1", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "5a4d6a2f-9612-9cab-ab08-e7fc011a450f", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:52:33.273Z", + "upstream_service": "10.244.0.13:9080", + "upstream_service_time": "16", + "upstream_cluster": "inbound|9080||", + "upstream_local": "127.0.0.6:34797", + "downstream_local": "10.244.0.13:9080", + "downstream_remote": "10.244.0.1:0", + "requested_server": "outbound_.9080_._.productpage.bookinfo.svc.cluster.local", + "route_name": "default", + "uri_path": "/productpage", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:52:34.276Z] \"GET /details/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 178 1 1 \"-\" \"Go-http-client/1.1\" \"6661c1ad-495b-9f52-bfda-664874dacbaf\" \"details:9080\" \"10.244.0.10:9080\" outbound|9080||details.bookinfo.svc.cluster.local 10.244.0.13:60722 10.109.148.19:9080 10.244.0.13:52498 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:52:34.276", + "timestampUnix": 1708941154276, + "accessLog": { + "authority": "details:9080", + "bytes_received": "0", + "bytes_sent": "178", + "duration": "1", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "6661c1ad-495b-9f52-bfda-664874dacbaf", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:52:34.276Z", + "upstream_service": "10.244.0.10:9080", + "upstream_service_time": "1", + "upstream_cluster": "outbound|9080||details.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:60722", + "downstream_local": "10.109.148.19:9080", + "downstream_remote": "10.244.0.13:52498", + "requested_server": "-", + "route_name": "default", + "uri_path": "/details/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:52:34.281Z] \"GET /reviews/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 442 9 9 \"-\" \"Go-http-client/1.1\" \"6661c1ad-495b-9f52-bfda-664874dacbaf\" \"reviews:9080\" \"10.244.0.15:9080\" outbound|9080||reviews.bookinfo.svc.cluster.local 10.244.0.13:32944 10.99.45.111:9080 10.244.0.13:53948 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:52:34.281", + "timestampUnix": 1708941154281, + "accessLog": { + "authority": "reviews:9080", + "bytes_received": "0", + "bytes_sent": "442", + "duration": "9", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "6661c1ad-495b-9f52-bfda-664874dacbaf", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:52:34.281Z", + "upstream_service": "10.244.0.15:9080", + "upstream_service_time": "9", + "upstream_cluster": "outbound|9080||reviews.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:32944", + "downstream_local": "10.99.45.111:9080", + "downstream_remote": "10.244.0.13:53948", + "requested_server": "-", + "route_name": "default", + "uri_path": "/reviews/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:52:34.273Z] \"GET /productpage HTTP/1.1\" 200 - via_upstream - \"-\" 0 5294 19 19 \"10.244.0.1\" \"Go-http-client/1.1\" \"6661c1ad-495b-9f52-bfda-664874dacbaf\" \"192.168.49.2:30876\" \"10.244.0.13:9080\" inbound|9080|| 127.0.0.6:40827 10.244.0.13:9080 10.244.0.1:0 outbound_.9080_._.productpage.bookinfo.svc.cluster.local default", + "severity": "INFO", + "timestamp": "2024-02-26 09:52:34.273", + "timestampUnix": 1708941154273, + "accessLog": { + "authority": "192.168.49.2:30876", + "bytes_received": "0", + "bytes_sent": "5294", + "duration": "19", + "forwarded_for": "10.244.0.1", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "6661c1ad-495b-9f52-bfda-664874dacbaf", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:52:34.273Z", + "upstream_service": "10.244.0.13:9080", + "upstream_service_time": "19", + "upstream_cluster": "inbound|9080||", + "upstream_local": "127.0.0.6:40827", + "downstream_local": "10.244.0.13:9080", + "downstream_remote": "10.244.0.1:0", + "requested_server": "outbound_.9080_._.productpage.bookinfo.svc.cluster.local", + "route_name": "default", + "uri_path": "/productpage", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:52:35.277Z] \"GET /details/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 178 1 1 \"-\" \"Go-http-client/1.1\" \"ed6fa9de-cb72-9aa8-9b82-07fb8c1374cd\" \"details:9080\" \"10.244.0.10:9080\" outbound|9080||details.bookinfo.svc.cluster.local 10.244.0.13:60722 10.109.148.19:9080 10.244.0.13:52506 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:52:35.277", + "timestampUnix": 1708941155277, + "accessLog": { + "authority": "details:9080", + "bytes_received": "0", + "bytes_sent": "178", + "duration": "1", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "ed6fa9de-cb72-9aa8-9b82-07fb8c1374cd", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:52:35.277Z", + "upstream_service": "10.244.0.10:9080", + "upstream_service_time": "1", + "upstream_cluster": "outbound|9080||details.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:60722", + "downstream_local": "10.109.148.19:9080", + "downstream_remote": "10.244.0.13:52506", + "requested_server": "-", + "route_name": "default", + "uri_path": "/details/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:52:35.281Z] \"GET /reviews/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 358 2 2 \"-\" \"Go-http-client/1.1\" \"ed6fa9de-cb72-9aa8-9b82-07fb8c1374cd\" \"reviews:9080\" \"10.244.0.14:9080\" outbound|9080||reviews.bookinfo.svc.cluster.local 10.244.0.13:55880 10.99.45.111:9080 10.244.0.13:53954 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:52:35.281", + "timestampUnix": 1708941155281, + "accessLog": { + "authority": "reviews:9080", + "bytes_received": "0", + "bytes_sent": "358", + "duration": "2", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "ed6fa9de-cb72-9aa8-9b82-07fb8c1374cd", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:52:35.281Z", + "upstream_service": "10.244.0.14:9080", + "upstream_service_time": "2", + "upstream_cluster": "outbound|9080||reviews.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:55880", + "downstream_local": "10.99.45.111:9080", + "downstream_remote": "10.244.0.13:53954", + "requested_server": "-", + "route_name": "default", + "uri_path": "/reviews/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:52:35.273Z] \"GET /productpage HTTP/1.1\" 200 - via_upstream - \"-\" 0 4294 12 11 \"10.244.0.1\" \"Go-http-client/1.1\" \"ed6fa9de-cb72-9aa8-9b82-07fb8c1374cd\" \"192.168.49.2:30876\" \"10.244.0.13:9080\" inbound|9080|| 127.0.0.6:56867 10.244.0.13:9080 10.244.0.1:0 outbound_.9080_._.productpage.bookinfo.svc.cluster.local default", + "severity": "INFO", + "timestamp": "2024-02-26 09:52:35.273", + "timestampUnix": 1708941155273, + "accessLog": { + "authority": "192.168.49.2:30876", + "bytes_received": "0", + "bytes_sent": "4294", + "duration": "12", + "forwarded_for": "10.244.0.1", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "ed6fa9de-cb72-9aa8-9b82-07fb8c1374cd", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:52:35.273Z", + "upstream_service": "10.244.0.13:9080", + "upstream_service_time": "11", + "upstream_cluster": "inbound|9080||", + "upstream_local": "127.0.0.6:56867", + "downstream_local": "10.244.0.13:9080", + "downstream_remote": "10.244.0.1:0", + "requested_server": "outbound_.9080_._.productpage.bookinfo.svc.cluster.local", + "route_name": "default", + "uri_path": "/productpage", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:52:36.277Z] \"GET /details/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 178 1 1 \"-\" \"Go-http-client/1.1\" \"e6603959-a4db-9996-b8e0-7c42d45c97c4\" \"details:9080\" \"10.244.0.10:9080\" outbound|9080||details.bookinfo.svc.cluster.local 10.244.0.13:60722 10.109.148.19:9080 10.244.0.13:52516 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:52:36.277", + "timestampUnix": 1708941156277, + "accessLog": { + "authority": "details:9080", + "bytes_received": "0", + "bytes_sent": "178", + "duration": "1", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "e6603959-a4db-9996-b8e0-7c42d45c97c4", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:52:36.277Z", + "upstream_service": "10.244.0.10:9080", + "upstream_service_time": "1", + "upstream_cluster": "outbound|9080||details.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:60722", + "downstream_local": "10.109.148.19:9080", + "downstream_remote": "10.244.0.13:52516", + "requested_server": "-", + "route_name": "default", + "uri_path": "/details/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:52:36.282Z] \"GET /reviews/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 437 7 7 \"-\" \"Go-http-client/1.1\" \"e6603959-a4db-9996-b8e0-7c42d45c97c4\" \"reviews:9080\" \"10.244.0.12:9080\" outbound|9080||reviews.bookinfo.svc.cluster.local 10.244.0.13:48584 10.99.45.111:9080 10.244.0.13:53962 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:52:36.282", + "timestampUnix": 1708941156282, + "accessLog": { + "authority": "reviews:9080", + "bytes_received": "0", + "bytes_sent": "437", + "duration": "7", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "e6603959-a4db-9996-b8e0-7c42d45c97c4", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:52:36.282Z", + "upstream_service": "10.244.0.12:9080", + "upstream_service_time": "7", + "upstream_cluster": "outbound|9080||reviews.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:48584", + "downstream_local": "10.99.45.111:9080", + "downstream_remote": "10.244.0.13:53962", + "requested_server": "-", + "route_name": "default", + "uri_path": "/reviews/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:52:36.273Z] \"GET /productpage HTTP/1.1\" 200 - via_upstream - \"-\" 0 5289 19 18 \"10.244.0.1\" \"Go-http-client/1.1\" \"e6603959-a4db-9996-b8e0-7c42d45c97c4\" \"192.168.49.2:30876\" \"10.244.0.13:9080\" inbound|9080|| 127.0.0.6:47341 10.244.0.13:9080 10.244.0.1:0 outbound_.9080_._.productpage.bookinfo.svc.cluster.local default", + "severity": "INFO", + "timestamp": "2024-02-26 09:52:36.273", + "timestampUnix": 1708941156273, + "accessLog": { + "authority": "192.168.49.2:30876", + "bytes_received": "0", + "bytes_sent": "5289", + "duration": "19", + "forwarded_for": "10.244.0.1", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "e6603959-a4db-9996-b8e0-7c42d45c97c4", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:52:36.273Z", + "upstream_service": "10.244.0.13:9080", + "upstream_service_time": "18", + "upstream_cluster": "inbound|9080||", + "upstream_local": "127.0.0.6:47341", + "downstream_local": "10.244.0.13:9080", + "downstream_remote": "10.244.0.1:0", + "requested_server": "outbound_.9080_._.productpage.bookinfo.svc.cluster.local", + "route_name": "default", + "uri_path": "/productpage", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:52:37.276Z] \"GET /details/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 178 1 1 \"-\" \"Go-http-client/1.1\" \"3327034b-b5d7-939e-bbf0-fd4e12f5c692\" \"details:9080\" \"10.244.0.10:9080\" outbound|9080||details.bookinfo.svc.cluster.local 10.244.0.13:60722 10.109.148.19:9080 10.244.0.13:36258 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:52:37.276", + "timestampUnix": 1708941157276, + "accessLog": { + "authority": "details:9080", + "bytes_received": "0", + "bytes_sent": "178", + "duration": "1", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "3327034b-b5d7-939e-bbf0-fd4e12f5c692", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:52:37.276Z", + "upstream_service": "10.244.0.10:9080", + "upstream_service_time": "1", + "upstream_cluster": "outbound|9080||details.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:60722", + "downstream_local": "10.109.148.19:9080", + "downstream_remote": "10.244.0.13:36258", + "requested_server": "-", + "route_name": "default", + "uri_path": "/details/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:52:37.280Z] \"GET /reviews/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 442 7 6 \"-\" \"Go-http-client/1.1\" \"3327034b-b5d7-939e-bbf0-fd4e12f5c692\" \"reviews:9080\" \"10.244.0.15:9080\" outbound|9080||reviews.bookinfo.svc.cluster.local 10.244.0.13:32944 10.99.45.111:9080 10.244.0.13:47750 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:52:37.28", + "timestampUnix": 1708941157280, + "accessLog": { + "authority": "reviews:9080", + "bytes_received": "0", + "bytes_sent": "442", + "duration": "7", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "3327034b-b5d7-939e-bbf0-fd4e12f5c692", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:52:37.280Z", + "upstream_service": "10.244.0.15:9080", + "upstream_service_time": "6", + "upstream_cluster": "outbound|9080||reviews.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:32944", + "downstream_local": "10.99.45.111:9080", + "downstream_remote": "10.244.0.13:47750", + "requested_server": "-", + "route_name": "default", + "uri_path": "/reviews/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:52:37.273Z] \"GET /productpage HTTP/1.1\" 200 - via_upstream - \"-\" 0 5294 15 15 \"10.244.0.1\" \"Go-http-client/1.1\" \"3327034b-b5d7-939e-bbf0-fd4e12f5c692\" \"192.168.49.2:30876\" \"10.244.0.13:9080\" inbound|9080|| 127.0.0.6:54975 10.244.0.13:9080 10.244.0.1:0 outbound_.9080_._.productpage.bookinfo.svc.cluster.local default", + "severity": "INFO", + "timestamp": "2024-02-26 09:52:37.273", + "timestampUnix": 1708941157273, + "accessLog": { + "authority": "192.168.49.2:30876", + "bytes_received": "0", + "bytes_sent": "5294", + "duration": "15", + "forwarded_for": "10.244.0.1", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "3327034b-b5d7-939e-bbf0-fd4e12f5c692", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:52:37.273Z", + "upstream_service": "10.244.0.13:9080", + "upstream_service_time": "15", + "upstream_cluster": "inbound|9080||", + "upstream_local": "127.0.0.6:54975", + "downstream_local": "10.244.0.13:9080", + "downstream_remote": "10.244.0.1:0", + "requested_server": "outbound_.9080_._.productpage.bookinfo.svc.cluster.local", + "route_name": "default", + "uri_path": "/productpage", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:52:38.276Z] \"GET /details/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 178 1 1 \"-\" \"Go-http-client/1.1\" \"a2739382-fdba-95dc-b267-8ff8ccb2f6e7\" \"details:9080\" \"10.244.0.10:9080\" outbound|9080||details.bookinfo.svc.cluster.local 10.244.0.13:60722 10.109.148.19:9080 10.244.0.13:36260 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:52:38.276", + "timestampUnix": 1708941158276, + "accessLog": { + "authority": "details:9080", + "bytes_received": "0", + "bytes_sent": "178", + "duration": "1", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "a2739382-fdba-95dc-b267-8ff8ccb2f6e7", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:52:38.276Z", + "upstream_service": "10.244.0.10:9080", + "upstream_service_time": "1", + "upstream_cluster": "outbound|9080||details.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:60722", + "downstream_local": "10.109.148.19:9080", + "downstream_remote": "10.244.0.13:36260", + "requested_server": "-", + "route_name": "default", + "uri_path": "/details/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:52:38.280Z] \"GET /reviews/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 442 7 7 \"-\" \"Go-http-client/1.1\" \"a2739382-fdba-95dc-b267-8ff8ccb2f6e7\" \"reviews:9080\" \"10.244.0.15:9080\" outbound|9080||reviews.bookinfo.svc.cluster.local 10.244.0.13:50830 10.99.45.111:9080 10.244.0.13:47754 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:52:38.28", + "timestampUnix": 1708941158280, + "accessLog": { + "authority": "reviews:9080", + "bytes_received": "0", + "bytes_sent": "442", + "duration": "7", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "a2739382-fdba-95dc-b267-8ff8ccb2f6e7", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:52:38.280Z", + "upstream_service": "10.244.0.15:9080", + "upstream_service_time": "7", + "upstream_cluster": "outbound|9080||reviews.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:50830", + "downstream_local": "10.99.45.111:9080", + "downstream_remote": "10.244.0.13:47754", + "requested_server": "-", + "route_name": "default", + "uri_path": "/reviews/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:52:38.273Z] \"GET /productpage HTTP/1.1\" 200 - via_upstream - \"-\" 0 5294 17 16 \"10.244.0.1\" \"Go-http-client/1.1\" \"a2739382-fdba-95dc-b267-8ff8ccb2f6e7\" \"192.168.49.2:30876\" \"10.244.0.13:9080\" inbound|9080|| 127.0.0.6:33065 10.244.0.13:9080 10.244.0.1:0 outbound_.9080_._.productpage.bookinfo.svc.cluster.local default", + "severity": "INFO", + "timestamp": "2024-02-26 09:52:38.273", + "timestampUnix": 1708941158273, + "accessLog": { + "authority": "192.168.49.2:30876", + "bytes_received": "0", + "bytes_sent": "5294", + "duration": "17", + "forwarded_for": "10.244.0.1", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "a2739382-fdba-95dc-b267-8ff8ccb2f6e7", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:52:38.273Z", + "upstream_service": "10.244.0.13:9080", + "upstream_service_time": "16", + "upstream_cluster": "inbound|9080||", + "upstream_local": "127.0.0.6:33065", + "downstream_local": "10.244.0.13:9080", + "downstream_remote": "10.244.0.1:0", + "requested_server": "outbound_.9080_._.productpage.bookinfo.svc.cluster.local", + "route_name": "default", + "uri_path": "/productpage", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:52:39.277Z] \"GET /details/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 178 1 1 \"-\" \"Go-http-client/1.1\" \"4789a5cd-a231-9072-a07b-2c8b0e34c926\" \"details:9080\" \"10.244.0.10:9080\" outbound|9080||details.bookinfo.svc.cluster.local 10.244.0.13:58492 10.109.148.19:9080 10.244.0.13:36262 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:52:39.277", + "timestampUnix": 1708941159277, + "accessLog": { + "authority": "details:9080", + "bytes_received": "0", + "bytes_sent": "178", + "duration": "1", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "4789a5cd-a231-9072-a07b-2c8b0e34c926", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:52:39.277Z", + "upstream_service": "10.244.0.10:9080", + "upstream_service_time": "1", + "upstream_cluster": "outbound|9080||details.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:58492", + "downstream_local": "10.109.148.19:9080", + "downstream_remote": "10.244.0.13:36262", + "requested_server": "-", + "route_name": "default", + "uri_path": "/details/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:52:39.281Z] \"GET /reviews/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 442 6 6 \"-\" \"Go-http-client/1.1\" \"4789a5cd-a231-9072-a07b-2c8b0e34c926\" \"reviews:9080\" \"10.244.0.15:9080\" outbound|9080||reviews.bookinfo.svc.cluster.local 10.244.0.13:32944 10.99.45.111:9080 10.244.0.13:47762 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:52:39.281", + "timestampUnix": 1708941159281, + "accessLog": { + "authority": "reviews:9080", + "bytes_received": "0", + "bytes_sent": "442", + "duration": "6", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "4789a5cd-a231-9072-a07b-2c8b0e34c926", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:52:39.281Z", + "upstream_service": "10.244.0.15:9080", + "upstream_service_time": "6", + "upstream_cluster": "outbound|9080||reviews.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:32944", + "downstream_local": "10.99.45.111:9080", + "downstream_remote": "10.244.0.13:47762", + "requested_server": "-", + "route_name": "default", + "uri_path": "/reviews/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:52:39.274Z] \"GET /productpage HTTP/1.1\" 200 - via_upstream - \"-\" 0 5294 15 15 \"10.244.0.1\" \"Go-http-client/1.1\" \"4789a5cd-a231-9072-a07b-2c8b0e34c926\" \"192.168.49.2:30876\" \"10.244.0.13:9080\" inbound|9080|| 127.0.0.6:45941 10.244.0.13:9080 10.244.0.1:0 outbound_.9080_._.productpage.bookinfo.svc.cluster.local default", + "severity": "INFO", + "timestamp": "2024-02-26 09:52:39.274", + "timestampUnix": 1708941159274, + "accessLog": { + "authority": "192.168.49.2:30876", + "bytes_received": "0", + "bytes_sent": "5294", + "duration": "15", + "forwarded_for": "10.244.0.1", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "4789a5cd-a231-9072-a07b-2c8b0e34c926", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:52:39.274Z", + "upstream_service": "10.244.0.13:9080", + "upstream_service_time": "15", + "upstream_cluster": "inbound|9080||", + "upstream_local": "127.0.0.6:45941", + "downstream_local": "10.244.0.13:9080", + "downstream_remote": "10.244.0.1:0", + "requested_server": "outbound_.9080_._.productpage.bookinfo.svc.cluster.local", + "route_name": "default", + "uri_path": "/productpage", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:52:40.276Z] \"GET /details/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 178 1 1 \"-\" \"Go-http-client/1.1\" \"90cde761-8afc-9dd1-8e7d-56bbc56c9b3d\" \"details:9080\" \"10.244.0.10:9080\" outbound|9080||details.bookinfo.svc.cluster.local 10.244.0.13:58492 10.109.148.19:9080 10.244.0.13:36276 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:52:40.276", + "timestampUnix": 1708941160276, + "accessLog": { + "authority": "details:9080", + "bytes_received": "0", + "bytes_sent": "178", + "duration": "1", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "90cde761-8afc-9dd1-8e7d-56bbc56c9b3d", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:52:40.276Z", + "upstream_service": "10.244.0.10:9080", + "upstream_service_time": "1", + "upstream_cluster": "outbound|9080||details.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:58492", + "downstream_local": "10.109.148.19:9080", + "downstream_remote": "10.244.0.13:36276", + "requested_server": "-", + "route_name": "default", + "uri_path": "/details/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:52:40.281Z] \"GET /reviews/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 437 8 8 \"-\" \"Go-http-client/1.1\" \"90cde761-8afc-9dd1-8e7d-56bbc56c9b3d\" \"reviews:9080\" \"10.244.0.12:9080\" outbound|9080||reviews.bookinfo.svc.cluster.local 10.244.0.13:48578 10.99.45.111:9080 10.244.0.13:47766 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:52:40.281", + "timestampUnix": 1708941160281, + "accessLog": { + "authority": "reviews:9080", + "bytes_received": "0", + "bytes_sent": "437", + "duration": "8", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "90cde761-8afc-9dd1-8e7d-56bbc56c9b3d", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:52:40.281Z", + "upstream_service": "10.244.0.12:9080", + "upstream_service_time": "8", + "upstream_cluster": "outbound|9080||reviews.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:48578", + "downstream_local": "10.99.45.111:9080", + "downstream_remote": "10.244.0.13:47766", + "requested_server": "-", + "route_name": "default", + "uri_path": "/reviews/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:52:40.273Z] \"GET /productpage HTTP/1.1\" 200 - via_upstream - \"-\" 0 5289 17 16 \"10.244.0.1\" \"Go-http-client/1.1\" \"90cde761-8afc-9dd1-8e7d-56bbc56c9b3d\" \"192.168.49.2:30876\" \"10.244.0.13:9080\" inbound|9080|| 127.0.0.6:60957 10.244.0.13:9080 10.244.0.1:0 outbound_.9080_._.productpage.bookinfo.svc.cluster.local default", + "severity": "INFO", + "timestamp": "2024-02-26 09:52:40.273", + "timestampUnix": 1708941160273, + "accessLog": { + "authority": "192.168.49.2:30876", + "bytes_received": "0", + "bytes_sent": "5289", + "duration": "17", + "forwarded_for": "10.244.0.1", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "90cde761-8afc-9dd1-8e7d-56bbc56c9b3d", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:52:40.273Z", + "upstream_service": "10.244.0.13:9080", + "upstream_service_time": "16", + "upstream_cluster": "inbound|9080||", + "upstream_local": "127.0.0.6:60957", + "downstream_local": "10.244.0.13:9080", + "downstream_remote": "10.244.0.1:0", + "requested_server": "outbound_.9080_._.productpage.bookinfo.svc.cluster.local", + "route_name": "default", + "uri_path": "/productpage", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:52:41.285Z] \"GET /details/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 178 1 1 \"-\" \"Go-http-client/1.1\" \"e20aba9b-ffcd-9658-835f-3e4855b16cc7\" \"details:9080\" \"10.244.0.10:9080\" outbound|9080||details.bookinfo.svc.cluster.local 10.244.0.13:60722 10.109.148.19:9080 10.244.0.13:36288 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:52:41.285", + "timestampUnix": 1708941161285, + "accessLog": { + "authority": "details:9080", + "bytes_received": "0", + "bytes_sent": "178", + "duration": "1", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "e20aba9b-ffcd-9658-835f-3e4855b16cc7", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:52:41.285Z", + "upstream_service": "10.244.0.10:9080", + "upstream_service_time": "1", + "upstream_cluster": "outbound|9080||details.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:60722", + "downstream_local": "10.109.148.19:9080", + "downstream_remote": "10.244.0.13:36288", + "requested_server": "-", + "route_name": "default", + "uri_path": "/details/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:52:41.289Z] \"GET /reviews/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 358 2 2 \"-\" \"Go-http-client/1.1\" \"e20aba9b-ffcd-9658-835f-3e4855b16cc7\" \"reviews:9080\" \"10.244.0.14:9080\" outbound|9080||reviews.bookinfo.svc.cluster.local 10.244.0.13:34890 10.99.45.111:9080 10.244.0.13:47770 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:52:41.289", + "timestampUnix": 1708941161289, + "accessLog": { + "authority": "reviews:9080", + "bytes_received": "0", + "bytes_sent": "358", + "duration": "2", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "e20aba9b-ffcd-9658-835f-3e4855b16cc7", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:52:41.289Z", + "upstream_service": "10.244.0.14:9080", + "upstream_service_time": "2", + "upstream_cluster": "outbound|9080||reviews.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:34890", + "downstream_local": "10.99.45.111:9080", + "downstream_remote": "10.244.0.13:47770", + "requested_server": "-", + "route_name": "default", + "uri_path": "/reviews/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:52:41.274Z] \"GET /productpage HTTP/1.1\" 200 - via_upstream - \"-\" 0 4294 19 18 \"10.244.0.1\" \"Go-http-client/1.1\" \"e20aba9b-ffcd-9658-835f-3e4855b16cc7\" \"192.168.49.2:30876\" \"10.244.0.13:9080\" inbound|9080|| 127.0.0.6:44687 10.244.0.13:9080 10.244.0.1:0 outbound_.9080_._.productpage.bookinfo.svc.cluster.local default", + "severity": "INFO", + "timestamp": "2024-02-26 09:52:41.274", + "timestampUnix": 1708941161274, + "accessLog": { + "authority": "192.168.49.2:30876", + "bytes_received": "0", + "bytes_sent": "4294", + "duration": "19", + "forwarded_for": "10.244.0.1", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "e20aba9b-ffcd-9658-835f-3e4855b16cc7", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:52:41.274Z", + "upstream_service": "10.244.0.13:9080", + "upstream_service_time": "18", + "upstream_cluster": "inbound|9080||", + "upstream_local": "127.0.0.6:44687", + "downstream_local": "10.244.0.13:9080", + "downstream_remote": "10.244.0.1:0", + "requested_server": "outbound_.9080_._.productpage.bookinfo.svc.cluster.local", + "route_name": "default", + "uri_path": "/productpage", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:52:42.277Z] \"GET /details/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 178 1 1 \"-\" \"Go-http-client/1.1\" \"29493d81-0194-9968-9937-b313fd852931\" \"details:9080\" \"10.244.0.10:9080\" outbound|9080||details.bookinfo.svc.cluster.local 10.244.0.13:58492 10.109.148.19:9080 10.244.0.13:36302 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:52:42.277", + "timestampUnix": 1708941162277, + "accessLog": { + "authority": "details:9080", + "bytes_received": "0", + "bytes_sent": "178", + "duration": "1", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "29493d81-0194-9968-9937-b313fd852931", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:52:42.277Z", + "upstream_service": "10.244.0.10:9080", + "upstream_service_time": "1", + "upstream_cluster": "outbound|9080||details.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:58492", + "downstream_local": "10.109.148.19:9080", + "downstream_remote": "10.244.0.13:36302", + "requested_server": "-", + "route_name": "default", + "uri_path": "/details/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:52:42.281Z] \"GET /reviews/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 437 8 8 \"-\" \"Go-http-client/1.1\" \"29493d81-0194-9968-9937-b313fd852931\" \"reviews:9080\" \"10.244.0.12:9080\" outbound|9080||reviews.bookinfo.svc.cluster.local 10.244.0.13:48578 10.99.45.111:9080 10.244.0.13:47774 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:52:42.281", + "timestampUnix": 1708941162281, + "accessLog": { + "authority": "reviews:9080", + "bytes_received": "0", + "bytes_sent": "437", + "duration": "8", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "29493d81-0194-9968-9937-b313fd852931", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:52:42.281Z", + "upstream_service": "10.244.0.12:9080", + "upstream_service_time": "8", + "upstream_cluster": "outbound|9080||reviews.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:48578", + "downstream_local": "10.99.45.111:9080", + "downstream_remote": "10.244.0.13:47774", + "requested_server": "-", + "route_name": "default", + "uri_path": "/reviews/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:52:42.273Z] \"GET /productpage HTTP/1.1\" 200 - via_upstream - \"-\" 0 5289 17 17 \"10.244.0.1\" \"Go-http-client/1.1\" \"29493d81-0194-9968-9937-b313fd852931\" \"192.168.49.2:30876\" \"10.244.0.13:9080\" inbound|9080|| 127.0.0.6:40649 10.244.0.13:9080 10.244.0.1:0 outbound_.9080_._.productpage.bookinfo.svc.cluster.local default", + "severity": "INFO", + "timestamp": "2024-02-26 09:52:42.273", + "timestampUnix": 1708941162273, + "accessLog": { + "authority": "192.168.49.2:30876", + "bytes_received": "0", + "bytes_sent": "5289", + "duration": "17", + "forwarded_for": "10.244.0.1", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "29493d81-0194-9968-9937-b313fd852931", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:52:42.273Z", + "upstream_service": "10.244.0.13:9080", + "upstream_service_time": "17", + "upstream_cluster": "inbound|9080||", + "upstream_local": "127.0.0.6:40649", + "downstream_local": "10.244.0.13:9080", + "downstream_remote": "10.244.0.1:0", + "requested_server": "outbound_.9080_._.productpage.bookinfo.svc.cluster.local", + "route_name": "default", + "uri_path": "/productpage", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:52:43.277Z] \"GET /details/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 178 1 1 \"-\" \"Go-http-client/1.1\" \"b1d0530e-1a61-9124-8789-f5d49056b333\" \"details:9080\" \"10.244.0.10:9080\" outbound|9080||details.bookinfo.svc.cluster.local 10.244.0.13:58492 10.109.148.19:9080 10.244.0.13:36306 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:52:43.277", + "timestampUnix": 1708941163277, + "accessLog": { + "authority": "details:9080", + "bytes_received": "0", + "bytes_sent": "178", + "duration": "1", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "b1d0530e-1a61-9124-8789-f5d49056b333", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:52:43.277Z", + "upstream_service": "10.244.0.10:9080", + "upstream_service_time": "1", + "upstream_cluster": "outbound|9080||details.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:58492", + "downstream_local": "10.109.148.19:9080", + "downstream_remote": "10.244.0.13:36306", + "requested_server": "-", + "route_name": "default", + "uri_path": "/details/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:52:43.281Z] \"GET /reviews/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 358 3 2 \"-\" \"Go-http-client/1.1\" \"b1d0530e-1a61-9124-8789-f5d49056b333\" \"reviews:9080\" \"10.244.0.14:9080\" outbound|9080||reviews.bookinfo.svc.cluster.local 10.244.0.13:34890 10.99.45.111:9080 10.244.0.13:47788 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:52:43.281", + "timestampUnix": 1708941163281, + "accessLog": { + "authority": "reviews:9080", + "bytes_received": "0", + "bytes_sent": "358", + "duration": "3", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "b1d0530e-1a61-9124-8789-f5d49056b333", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:52:43.281Z", + "upstream_service": "10.244.0.14:9080", + "upstream_service_time": "2", + "upstream_cluster": "outbound|9080||reviews.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:34890", + "downstream_local": "10.99.45.111:9080", + "downstream_remote": "10.244.0.13:47788", + "requested_server": "-", + "route_name": "default", + "uri_path": "/reviews/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:52:43.274Z] \"GET /productpage HTTP/1.1\" 200 - via_upstream - \"-\" 0 4294 11 11 \"10.244.0.1\" \"Go-http-client/1.1\" \"b1d0530e-1a61-9124-8789-f5d49056b333\" \"192.168.49.2:30876\" \"10.244.0.13:9080\" inbound|9080|| 127.0.0.6:47697 10.244.0.13:9080 10.244.0.1:0 outbound_.9080_._.productpage.bookinfo.svc.cluster.local default", + "severity": "INFO", + "timestamp": "2024-02-26 09:52:43.274", + "timestampUnix": 1708941163274, + "accessLog": { + "authority": "192.168.49.2:30876", + "bytes_received": "0", + "bytes_sent": "4294", + "duration": "11", + "forwarded_for": "10.244.0.1", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "b1d0530e-1a61-9124-8789-f5d49056b333", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:52:43.274Z", + "upstream_service": "10.244.0.13:9080", + "upstream_service_time": "11", + "upstream_cluster": "inbound|9080||", + "upstream_local": "127.0.0.6:47697", + "downstream_local": "10.244.0.13:9080", + "downstream_remote": "10.244.0.1:0", + "requested_server": "outbound_.9080_._.productpage.bookinfo.svc.cluster.local", + "route_name": "default", + "uri_path": "/productpage", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:52:44.276Z] \"GET /details/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 178 1 1 \"-\" \"Go-http-client/1.1\" \"56928139-daf5-9e28-ab17-21289da439a5\" \"details:9080\" \"10.244.0.10:9080\" outbound|9080||details.bookinfo.svc.cluster.local 10.244.0.13:58492 10.109.148.19:9080 10.244.0.13:36310 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:52:44.276", + "timestampUnix": 1708941164276, + "accessLog": { + "authority": "details:9080", + "bytes_received": "0", + "bytes_sent": "178", + "duration": "1", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "56928139-daf5-9e28-ab17-21289da439a5", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:52:44.276Z", + "upstream_service": "10.244.0.10:9080", + "upstream_service_time": "1", + "upstream_cluster": "outbound|9080||details.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:58492", + "downstream_local": "10.109.148.19:9080", + "downstream_remote": "10.244.0.13:36310", + "requested_server": "-", + "route_name": "default", + "uri_path": "/details/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:52:44.280Z] \"GET /reviews/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 442 7 7 \"-\" \"Go-http-client/1.1\" \"56928139-daf5-9e28-ab17-21289da439a5\" \"reviews:9080\" \"10.244.0.15:9080\" outbound|9080||reviews.bookinfo.svc.cluster.local 10.244.0.13:32944 10.99.45.111:9080 10.244.0.13:47802 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:52:44.28", + "timestampUnix": 1708941164280, + "accessLog": { + "authority": "reviews:9080", + "bytes_received": "0", + "bytes_sent": "442", + "duration": "7", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "56928139-daf5-9e28-ab17-21289da439a5", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:52:44.280Z", + "upstream_service": "10.244.0.15:9080", + "upstream_service_time": "7", + "upstream_cluster": "outbound|9080||reviews.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:32944", + "downstream_local": "10.99.45.111:9080", + "downstream_remote": "10.244.0.13:47802", + "requested_server": "-", + "route_name": "default", + "uri_path": "/reviews/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:52:44.273Z] \"GET /productpage HTTP/1.1\" 200 - via_upstream - \"-\" 0 5294 15 15 \"10.244.0.1\" \"Go-http-client/1.1\" \"56928139-daf5-9e28-ab17-21289da439a5\" \"192.168.49.2:30876\" \"10.244.0.13:9080\" inbound|9080|| 127.0.0.6:54417 10.244.0.13:9080 10.244.0.1:0 outbound_.9080_._.productpage.bookinfo.svc.cluster.local default", + "severity": "INFO", + "timestamp": "2024-02-26 09:52:44.273", + "timestampUnix": 1708941164273, + "accessLog": { + "authority": "192.168.49.2:30876", + "bytes_received": "0", + "bytes_sent": "5294", + "duration": "15", + "forwarded_for": "10.244.0.1", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "56928139-daf5-9e28-ab17-21289da439a5", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:52:44.273Z", + "upstream_service": "10.244.0.13:9080", + "upstream_service_time": "15", + "upstream_cluster": "inbound|9080||", + "upstream_local": "127.0.0.6:54417", + "downstream_local": "10.244.0.13:9080", + "downstream_remote": "10.244.0.1:0", + "requested_server": "outbound_.9080_._.productpage.bookinfo.svc.cluster.local", + "route_name": "default", + "uri_path": "/productpage", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:52:45.276Z] \"GET /details/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 178 1 1 \"-\" \"Go-http-client/1.1\" \"90bcac0a-c040-9da4-a794-a44392b79c61\" \"details:9080\" \"10.244.0.10:9080\" outbound|9080||details.bookinfo.svc.cluster.local 10.244.0.13:58492 10.109.148.19:9080 10.244.0.13:36326 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:52:45.276", + "timestampUnix": 1708941165276, + "accessLog": { + "authority": "details:9080", + "bytes_received": "0", + "bytes_sent": "178", + "duration": "1", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "90bcac0a-c040-9da4-a794-a44392b79c61", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:52:45.276Z", + "upstream_service": "10.244.0.10:9080", + "upstream_service_time": "1", + "upstream_cluster": "outbound|9080||details.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:58492", + "downstream_local": "10.109.148.19:9080", + "downstream_remote": "10.244.0.13:36326", + "requested_server": "-", + "route_name": "default", + "uri_path": "/details/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:52:45.280Z] \"GET /reviews/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 442 7 7 \"-\" \"Go-http-client/1.1\" \"90bcac0a-c040-9da4-a794-a44392b79c61\" \"reviews:9080\" \"10.244.0.15:9080\" outbound|9080||reviews.bookinfo.svc.cluster.local 10.244.0.13:50830 10.99.45.111:9080 10.244.0.13:47808 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:52:45.28", + "timestampUnix": 1708941165280, + "accessLog": { + "authority": "reviews:9080", + "bytes_received": "0", + "bytes_sent": "442", + "duration": "7", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "90bcac0a-c040-9da4-a794-a44392b79c61", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:52:45.280Z", + "upstream_service": "10.244.0.15:9080", + "upstream_service_time": "7", + "upstream_cluster": "outbound|9080||reviews.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:50830", + "downstream_local": "10.99.45.111:9080", + "downstream_remote": "10.244.0.13:47808", + "requested_server": "-", + "route_name": "default", + "uri_path": "/reviews/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:52:45.273Z] \"GET /productpage HTTP/1.1\" 200 - via_upstream - \"-\" 0 5294 15 15 \"10.244.0.1\" \"Go-http-client/1.1\" \"90bcac0a-c040-9da4-a794-a44392b79c61\" \"192.168.49.2:30876\" \"10.244.0.13:9080\" inbound|9080|| 127.0.0.6:35919 10.244.0.13:9080 10.244.0.1:0 outbound_.9080_._.productpage.bookinfo.svc.cluster.local default", + "severity": "INFO", + "timestamp": "2024-02-26 09:52:45.273", + "timestampUnix": 1708941165273, + "accessLog": { + "authority": "192.168.49.2:30876", + "bytes_received": "0", + "bytes_sent": "5294", + "duration": "15", + "forwarded_for": "10.244.0.1", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "90bcac0a-c040-9da4-a794-a44392b79c61", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:52:45.273Z", + "upstream_service": "10.244.0.13:9080", + "upstream_service_time": "15", + "upstream_cluster": "inbound|9080||", + "upstream_local": "127.0.0.6:35919", + "downstream_local": "10.244.0.13:9080", + "downstream_remote": "10.244.0.1:0", + "requested_server": "outbound_.9080_._.productpage.bookinfo.svc.cluster.local", + "route_name": "default", + "uri_path": "/productpage", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:52:46.276Z] \"GET /details/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 178 1 1 \"-\" \"Go-http-client/1.1\" \"a3db867a-0091-942a-9124-799723a97891\" \"details:9080\" \"10.244.0.10:9080\" outbound|9080||details.bookinfo.svc.cluster.local 10.244.0.13:58492 10.109.148.19:9080 10.244.0.13:36332 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:52:46.276", + "timestampUnix": 1708941166276, + "accessLog": { + "authority": "details:9080", + "bytes_received": "0", + "bytes_sent": "178", + "duration": "1", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "a3db867a-0091-942a-9124-799723a97891", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:52:46.276Z", + "upstream_service": "10.244.0.10:9080", + "upstream_service_time": "1", + "upstream_cluster": "outbound|9080||details.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:58492", + "downstream_local": "10.109.148.19:9080", + "downstream_remote": "10.244.0.13:36332", + "requested_server": "-", + "route_name": "default", + "uri_path": "/details/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:52:46.280Z] \"GET /reviews/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 442 15 15 \"-\" \"Go-http-client/1.1\" \"a3db867a-0091-942a-9124-799723a97891\" \"reviews:9080\" \"10.244.0.15:9080\" outbound|9080||reviews.bookinfo.svc.cluster.local 10.244.0.13:32944 10.99.45.111:9080 10.244.0.13:47812 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:52:46.28", + "timestampUnix": 1708941166280, + "accessLog": { + "authority": "reviews:9080", + "bytes_received": "0", + "bytes_sent": "442", + "duration": "15", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "a3db867a-0091-942a-9124-799723a97891", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:52:46.280Z", + "upstream_service": "10.244.0.15:9080", + "upstream_service_time": "15", + "upstream_cluster": "outbound|9080||reviews.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:32944", + "downstream_local": "10.99.45.111:9080", + "downstream_remote": "10.244.0.13:47812", + "requested_server": "-", + "route_name": "default", + "uri_path": "/reviews/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:52:46.273Z] \"GET /productpage HTTP/1.1\" 200 - via_upstream - \"-\" 0 5294 23 23 \"10.244.0.1\" \"Go-http-client/1.1\" \"a3db867a-0091-942a-9124-799723a97891\" \"192.168.49.2:30876\" \"10.244.0.13:9080\" inbound|9080|| 127.0.0.6:39021 10.244.0.13:9080 10.244.0.1:0 outbound_.9080_._.productpage.bookinfo.svc.cluster.local default", + "severity": "INFO", + "timestamp": "2024-02-26 09:52:46.273", + "timestampUnix": 1708941166273, + "accessLog": { + "authority": "192.168.49.2:30876", + "bytes_received": "0", + "bytes_sent": "5294", + "duration": "23", + "forwarded_for": "10.244.0.1", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "a3db867a-0091-942a-9124-799723a97891", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:52:46.273Z", + "upstream_service": "10.244.0.13:9080", + "upstream_service_time": "23", + "upstream_cluster": "inbound|9080||", + "upstream_local": "127.0.0.6:39021", + "downstream_local": "10.244.0.13:9080", + "downstream_remote": "10.244.0.1:0", + "requested_server": "outbound_.9080_._.productpage.bookinfo.svc.cluster.local", + "route_name": "default", + "uri_path": "/productpage", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:52:47.276Z] \"GET /details/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 178 1 1 \"-\" \"Go-http-client/1.1\" \"d45a4efd-c9aa-9474-be2a-aa568bd67cea\" \"details:9080\" \"10.244.0.10:9080\" outbound|9080||details.bookinfo.svc.cluster.local 10.244.0.13:58492 10.109.148.19:9080 10.244.0.13:49358 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:52:47.276", + "timestampUnix": 1708941167276, + "accessLog": { + "authority": "details:9080", + "bytes_received": "0", + "bytes_sent": "178", + "duration": "1", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "d45a4efd-c9aa-9474-be2a-aa568bd67cea", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:52:47.276Z", + "upstream_service": "10.244.0.10:9080", + "upstream_service_time": "1", + "upstream_cluster": "outbound|9080||details.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:58492", + "downstream_local": "10.109.148.19:9080", + "downstream_remote": "10.244.0.13:49358", + "requested_server": "-", + "route_name": "default", + "uri_path": "/details/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:52:47.280Z] \"GET /reviews/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 437 8 8 \"-\" \"Go-http-client/1.1\" \"d45a4efd-c9aa-9474-be2a-aa568bd67cea\" \"reviews:9080\" \"10.244.0.12:9080\" outbound|9080||reviews.bookinfo.svc.cluster.local 10.244.0.13:48578 10.99.45.111:9080 10.244.0.13:50250 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:52:47.28", + "timestampUnix": 1708941167280, + "accessLog": { + "authority": "reviews:9080", + "bytes_received": "0", + "bytes_sent": "437", + "duration": "8", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "d45a4efd-c9aa-9474-be2a-aa568bd67cea", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:52:47.280Z", + "upstream_service": "10.244.0.12:9080", + "upstream_service_time": "8", + "upstream_cluster": "outbound|9080||reviews.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:48578", + "downstream_local": "10.99.45.111:9080", + "downstream_remote": "10.244.0.13:50250", + "requested_server": "-", + "route_name": "default", + "uri_path": "/reviews/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:52:47.273Z] \"GET /productpage HTTP/1.1\" 200 - via_upstream - \"-\" 0 5289 16 16 \"10.244.0.1\" \"Go-http-client/1.1\" \"d45a4efd-c9aa-9474-be2a-aa568bd67cea\" \"192.168.49.2:30876\" \"10.244.0.13:9080\" inbound|9080|| 127.0.0.6:34859 10.244.0.13:9080 10.244.0.1:0 outbound_.9080_._.productpage.bookinfo.svc.cluster.local default", + "severity": "INFO", + "timestamp": "2024-02-26 09:52:47.273", + "timestampUnix": 1708941167273, + "accessLog": { + "authority": "192.168.49.2:30876", + "bytes_received": "0", + "bytes_sent": "5289", + "duration": "16", + "forwarded_for": "10.244.0.1", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "d45a4efd-c9aa-9474-be2a-aa568bd67cea", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:52:47.273Z", + "upstream_service": "10.244.0.13:9080", + "upstream_service_time": "16", + "upstream_cluster": "inbound|9080||", + "upstream_local": "127.0.0.6:34859", + "downstream_local": "10.244.0.13:9080", + "downstream_remote": "10.244.0.1:0", + "requested_server": "outbound_.9080_._.productpage.bookinfo.svc.cluster.local", + "route_name": "default", + "uri_path": "/productpage", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:52:48.276Z] \"GET /details/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 178 1 1 \"-\" \"Go-http-client/1.1\" \"3f34a5f0-8536-9acc-b209-d14e07ebafc1\" \"details:9080\" \"10.244.0.10:9080\" outbound|9080||details.bookinfo.svc.cluster.local 10.244.0.13:60722 10.109.148.19:9080 10.244.0.13:49362 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:52:48.276", + "timestampUnix": 1708941168276, + "accessLog": { + "authority": "details:9080", + "bytes_received": "0", + "bytes_sent": "178", + "duration": "1", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "3f34a5f0-8536-9acc-b209-d14e07ebafc1", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:52:48.276Z", + "upstream_service": "10.244.0.10:9080", + "upstream_service_time": "1", + "upstream_cluster": "outbound|9080||details.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:60722", + "downstream_local": "10.109.148.19:9080", + "downstream_remote": "10.244.0.13:49362", + "requested_server": "-", + "route_name": "default", + "uri_path": "/details/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:52:48.280Z] \"GET /reviews/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 437 7 7 \"-\" \"Go-http-client/1.1\" \"3f34a5f0-8536-9acc-b209-d14e07ebafc1\" \"reviews:9080\" \"10.244.0.12:9080\" outbound|9080||reviews.bookinfo.svc.cluster.local 10.244.0.13:48578 10.99.45.111:9080 10.244.0.13:50262 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:52:48.28", + "timestampUnix": 1708941168280, + "accessLog": { + "authority": "reviews:9080", + "bytes_received": "0", + "bytes_sent": "437", + "duration": "7", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "3f34a5f0-8536-9acc-b209-d14e07ebafc1", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:52:48.280Z", + "upstream_service": "10.244.0.12:9080", + "upstream_service_time": "7", + "upstream_cluster": "outbound|9080||reviews.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:48578", + "downstream_local": "10.99.45.111:9080", + "downstream_remote": "10.244.0.13:50262", + "requested_server": "-", + "route_name": "default", + "uri_path": "/reviews/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:52:48.273Z] \"GET /productpage HTTP/1.1\" 200 - via_upstream - \"-\" 0 5289 15 15 \"10.244.0.1\" \"Go-http-client/1.1\" \"3f34a5f0-8536-9acc-b209-d14e07ebafc1\" \"192.168.49.2:30876\" \"10.244.0.13:9080\" inbound|9080|| 127.0.0.6:59153 10.244.0.13:9080 10.244.0.1:0 outbound_.9080_._.productpage.bookinfo.svc.cluster.local default", + "severity": "INFO", + "timestamp": "2024-02-26 09:52:48.273", + "timestampUnix": 1708941168273, + "accessLog": { + "authority": "192.168.49.2:30876", + "bytes_received": "0", + "bytes_sent": "5289", + "duration": "15", + "forwarded_for": "10.244.0.1", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "3f34a5f0-8536-9acc-b209-d14e07ebafc1", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:52:48.273Z", + "upstream_service": "10.244.0.13:9080", + "upstream_service_time": "15", + "upstream_cluster": "inbound|9080||", + "upstream_local": "127.0.0.6:59153", + "downstream_local": "10.244.0.13:9080", + "downstream_remote": "10.244.0.1:0", + "requested_server": "outbound_.9080_._.productpage.bookinfo.svc.cluster.local", + "route_name": "default", + "uri_path": "/productpage", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:52:49.276Z] \"GET /details/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 178 1 1 \"-\" \"Go-http-client/1.1\" \"7b80d515-0d94-985a-b8ad-3171a0a189f3\" \"details:9080\" \"10.244.0.10:9080\" outbound|9080||details.bookinfo.svc.cluster.local 10.244.0.13:58492 10.109.148.19:9080 10.244.0.13:49376 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:52:49.276", + "timestampUnix": 1708941169276, + "accessLog": { + "authority": "details:9080", + "bytes_received": "0", + "bytes_sent": "178", + "duration": "1", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "7b80d515-0d94-985a-b8ad-3171a0a189f3", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:52:49.276Z", + "upstream_service": "10.244.0.10:9080", + "upstream_service_time": "1", + "upstream_cluster": "outbound|9080||details.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:58492", + "downstream_local": "10.109.148.19:9080", + "downstream_remote": "10.244.0.13:49376", + "requested_server": "-", + "route_name": "default", + "uri_path": "/details/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:52:49.281Z] \"GET /reviews/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 442 8 8 \"-\" \"Go-http-client/1.1\" \"7b80d515-0d94-985a-b8ad-3171a0a189f3\" \"reviews:9080\" \"10.244.0.15:9080\" outbound|9080||reviews.bookinfo.svc.cluster.local 10.244.0.13:32944 10.99.45.111:9080 10.244.0.13:50278 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:52:49.281", + "timestampUnix": 1708941169281, + "accessLog": { + "authority": "reviews:9080", + "bytes_received": "0", + "bytes_sent": "442", + "duration": "8", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "7b80d515-0d94-985a-b8ad-3171a0a189f3", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:52:49.281Z", + "upstream_service": "10.244.0.15:9080", + "upstream_service_time": "8", + "upstream_cluster": "outbound|9080||reviews.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:32944", + "downstream_local": "10.99.45.111:9080", + "downstream_remote": "10.244.0.13:50278", + "requested_server": "-", + "route_name": "default", + "uri_path": "/reviews/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:52:49.273Z] \"GET /productpage HTTP/1.1\" 200 - via_upstream - \"-\" 0 5294 17 17 \"10.244.0.1\" \"Go-http-client/1.1\" \"7b80d515-0d94-985a-b8ad-3171a0a189f3\" \"192.168.49.2:30876\" \"10.244.0.13:9080\" inbound|9080|| 127.0.0.6:49987 10.244.0.13:9080 10.244.0.1:0 outbound_.9080_._.productpage.bookinfo.svc.cluster.local default", + "severity": "INFO", + "timestamp": "2024-02-26 09:52:49.273", + "timestampUnix": 1708941169273, + "accessLog": { + "authority": "192.168.49.2:30876", + "bytes_received": "0", + "bytes_sent": "5294", + "duration": "17", + "forwarded_for": "10.244.0.1", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "7b80d515-0d94-985a-b8ad-3171a0a189f3", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:52:49.273Z", + "upstream_service": "10.244.0.13:9080", + "upstream_service_time": "17", + "upstream_cluster": "inbound|9080||", + "upstream_local": "127.0.0.6:49987", + "downstream_local": "10.244.0.13:9080", + "downstream_remote": "10.244.0.1:0", + "requested_server": "outbound_.9080_._.productpage.bookinfo.svc.cluster.local", + "route_name": "default", + "uri_path": "/productpage", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:52:50.277Z] \"GET /details/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 178 1 1 \"-\" \"Go-http-client/1.1\" \"56d48aba-3de1-9709-8769-eddbb500f154\" \"details:9080\" \"10.244.0.10:9080\" outbound|9080||details.bookinfo.svc.cluster.local 10.244.0.13:60722 10.109.148.19:9080 10.244.0.13:49388 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:52:50.277", + "timestampUnix": 1708941170277, + "accessLog": { + "authority": "details:9080", + "bytes_received": "0", + "bytes_sent": "178", + "duration": "1", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "56d48aba-3de1-9709-8769-eddbb500f154", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:52:50.277Z", + "upstream_service": "10.244.0.10:9080", + "upstream_service_time": "1", + "upstream_cluster": "outbound|9080||details.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:60722", + "downstream_local": "10.109.148.19:9080", + "downstream_remote": "10.244.0.13:49388", + "requested_server": "-", + "route_name": "default", + "uri_path": "/details/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:52:50.280Z] \"GET /reviews/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 442 8 8 \"-\" \"Go-http-client/1.1\" \"56d48aba-3de1-9709-8769-eddbb500f154\" \"reviews:9080\" \"10.244.0.15:9080\" outbound|9080||reviews.bookinfo.svc.cluster.local 10.244.0.13:32944 10.99.45.111:9080 10.244.0.13:50282 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:52:50.28", + "timestampUnix": 1708941170280, + "accessLog": { + "authority": "reviews:9080", + "bytes_received": "0", + "bytes_sent": "442", + "duration": "8", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "56d48aba-3de1-9709-8769-eddbb500f154", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:52:50.280Z", + "upstream_service": "10.244.0.15:9080", + "upstream_service_time": "8", + "upstream_cluster": "outbound|9080||reviews.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:32944", + "downstream_local": "10.99.45.111:9080", + "downstream_remote": "10.244.0.13:50282", + "requested_server": "-", + "route_name": "default", + "uri_path": "/reviews/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:52:50.273Z] \"GET /productpage HTTP/1.1\" 200 - via_upstream - \"-\" 0 5294 17 17 \"10.244.0.1\" \"Go-http-client/1.1\" \"56d48aba-3de1-9709-8769-eddbb500f154\" \"192.168.49.2:30876\" \"10.244.0.13:9080\" inbound|9080|| 127.0.0.6:37267 10.244.0.13:9080 10.244.0.1:0 outbound_.9080_._.productpage.bookinfo.svc.cluster.local default", + "severity": "INFO", + "timestamp": "2024-02-26 09:52:50.273", + "timestampUnix": 1708941170273, + "accessLog": { + "authority": "192.168.49.2:30876", + "bytes_received": "0", + "bytes_sent": "5294", + "duration": "17", + "forwarded_for": "10.244.0.1", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "56d48aba-3de1-9709-8769-eddbb500f154", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:52:50.273Z", + "upstream_service": "10.244.0.13:9080", + "upstream_service_time": "17", + "upstream_cluster": "inbound|9080||", + "upstream_local": "127.0.0.6:37267", + "downstream_local": "10.244.0.13:9080", + "downstream_remote": "10.244.0.1:0", + "requested_server": "outbound_.9080_._.productpage.bookinfo.svc.cluster.local", + "route_name": "default", + "uri_path": "/productpage", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:52:51.276Z] \"GET /details/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 178 1 1 \"-\" \"Go-http-client/1.1\" \"c568a82b-8ea2-969d-a300-33ddd86140b8\" \"details:9080\" \"10.244.0.10:9080\" outbound|9080||details.bookinfo.svc.cluster.local 10.244.0.13:60722 10.109.148.19:9080 10.244.0.13:49402 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:52:51.276", + "timestampUnix": 1708941171276, + "accessLog": { + "authority": "details:9080", + "bytes_received": "0", + "bytes_sent": "178", + "duration": "1", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "c568a82b-8ea2-969d-a300-33ddd86140b8", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:52:51.276Z", + "upstream_service": "10.244.0.10:9080", + "upstream_service_time": "1", + "upstream_cluster": "outbound|9080||details.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:60722", + "downstream_local": "10.109.148.19:9080", + "downstream_remote": "10.244.0.13:49402", + "requested_server": "-", + "route_name": "default", + "uri_path": "/details/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:52:51.280Z] \"GET /reviews/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 358 2 2 \"-\" \"Go-http-client/1.1\" \"c568a82b-8ea2-969d-a300-33ddd86140b8\" \"reviews:9080\" \"10.244.0.14:9080\" outbound|9080||reviews.bookinfo.svc.cluster.local 10.244.0.13:55880 10.99.45.111:9080 10.244.0.13:50286 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:52:51.28", + "timestampUnix": 1708941171280, + "accessLog": { + "authority": "reviews:9080", + "bytes_received": "0", + "bytes_sent": "358", + "duration": "2", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "c568a82b-8ea2-969d-a300-33ddd86140b8", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:52:51.280Z", + "upstream_service": "10.244.0.14:9080", + "upstream_service_time": "2", + "upstream_cluster": "outbound|9080||reviews.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:55880", + "downstream_local": "10.99.45.111:9080", + "downstream_remote": "10.244.0.13:50286", + "requested_server": "-", + "route_name": "default", + "uri_path": "/reviews/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:52:51.273Z] \"GET /productpage HTTP/1.1\" 200 - via_upstream - \"-\" 0 4294 11 11 \"10.244.0.1\" \"Go-http-client/1.1\" \"c568a82b-8ea2-969d-a300-33ddd86140b8\" \"192.168.49.2:30876\" \"10.244.0.13:9080\" inbound|9080|| 127.0.0.6:47541 10.244.0.13:9080 10.244.0.1:0 outbound_.9080_._.productpage.bookinfo.svc.cluster.local default", + "severity": "INFO", + "timestamp": "2024-02-26 09:52:51.273", + "timestampUnix": 1708941171273, + "accessLog": { + "authority": "192.168.49.2:30876", + "bytes_received": "0", + "bytes_sent": "4294", + "duration": "11", + "forwarded_for": "10.244.0.1", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "c568a82b-8ea2-969d-a300-33ddd86140b8", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:52:51.273Z", + "upstream_service": "10.244.0.13:9080", + "upstream_service_time": "11", + "upstream_cluster": "inbound|9080||", + "upstream_local": "127.0.0.6:47541", + "downstream_local": "10.244.0.13:9080", + "downstream_remote": "10.244.0.1:0", + "requested_server": "outbound_.9080_._.productpage.bookinfo.svc.cluster.local", + "route_name": "default", + "uri_path": "/productpage", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:52:52.276Z] \"GET /details/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 178 1 1 \"-\" \"Go-http-client/1.1\" \"4c0af64c-297c-95f2-8f45-200d6c7e7010\" \"details:9080\" \"10.244.0.10:9080\" outbound|9080||details.bookinfo.svc.cluster.local 10.244.0.13:58492 10.109.148.19:9080 10.244.0.13:49418 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:52:52.276", + "timestampUnix": 1708941172276, + "accessLog": { + "authority": "details:9080", + "bytes_received": "0", + "bytes_sent": "178", + "duration": "1", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "4c0af64c-297c-95f2-8f45-200d6c7e7010", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:52:52.276Z", + "upstream_service": "10.244.0.10:9080", + "upstream_service_time": "1", + "upstream_cluster": "outbound|9080||details.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:58492", + "downstream_local": "10.109.148.19:9080", + "downstream_remote": "10.244.0.13:49418", + "requested_server": "-", + "route_name": "default", + "uri_path": "/details/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:52:52.280Z] \"GET /reviews/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 358 3 3 \"-\" \"Go-http-client/1.1\" \"4c0af64c-297c-95f2-8f45-200d6c7e7010\" \"reviews:9080\" \"10.244.0.14:9080\" outbound|9080||reviews.bookinfo.svc.cluster.local 10.244.0.13:34890 10.99.45.111:9080 10.244.0.13:50294 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:52:52.28", + "timestampUnix": 1708941172280, + "accessLog": { + "authority": "reviews:9080", + "bytes_received": "0", + "bytes_sent": "358", + "duration": "3", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "4c0af64c-297c-95f2-8f45-200d6c7e7010", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:52:52.280Z", + "upstream_service": "10.244.0.14:9080", + "upstream_service_time": "3", + "upstream_cluster": "outbound|9080||reviews.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:34890", + "downstream_local": "10.99.45.111:9080", + "downstream_remote": "10.244.0.13:50294", + "requested_server": "-", + "route_name": "default", + "uri_path": "/reviews/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:52:52.273Z] \"GET /productpage HTTP/1.1\" 200 - via_upstream - \"-\" 0 4294 12 11 \"10.244.0.1\" \"Go-http-client/1.1\" \"4c0af64c-297c-95f2-8f45-200d6c7e7010\" \"192.168.49.2:30876\" \"10.244.0.13:9080\" inbound|9080|| 127.0.0.6:35735 10.244.0.13:9080 10.244.0.1:0 outbound_.9080_._.productpage.bookinfo.svc.cluster.local default", + "severity": "INFO", + "timestamp": "2024-02-26 09:52:52.273", + "timestampUnix": 1708941172273, + "accessLog": { + "authority": "192.168.49.2:30876", + "bytes_received": "0", + "bytes_sent": "4294", + "duration": "12", + "forwarded_for": "10.244.0.1", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "4c0af64c-297c-95f2-8f45-200d6c7e7010", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:52:52.273Z", + "upstream_service": "10.244.0.13:9080", + "upstream_service_time": "11", + "upstream_cluster": "inbound|9080||", + "upstream_local": "127.0.0.6:35735", + "downstream_local": "10.244.0.13:9080", + "downstream_remote": "10.244.0.1:0", + "requested_server": "outbound_.9080_._.productpage.bookinfo.svc.cluster.local", + "route_name": "default", + "uri_path": "/productpage", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:52:53.276Z] \"GET /details/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 178 1 1 \"-\" \"Go-http-client/1.1\" \"49111c61-f783-9bec-ae57-35dce93bd8d9\" \"details:9080\" \"10.244.0.10:9080\" outbound|9080||details.bookinfo.svc.cluster.local 10.244.0.13:58492 10.109.148.19:9080 10.244.0.13:49426 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:52:53.276", + "timestampUnix": 1708941173276, + "accessLog": { + "authority": "details:9080", + "bytes_received": "0", + "bytes_sent": "178", + "duration": "1", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "49111c61-f783-9bec-ae57-35dce93bd8d9", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:52:53.276Z", + "upstream_service": "10.244.0.10:9080", + "upstream_service_time": "1", + "upstream_cluster": "outbound|9080||details.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:58492", + "downstream_local": "10.109.148.19:9080", + "downstream_remote": "10.244.0.13:49426", + "requested_server": "-", + "route_name": "default", + "uri_path": "/details/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:52:53.280Z] \"GET /reviews/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 437 7 6 \"-\" \"Go-http-client/1.1\" \"49111c61-f783-9bec-ae57-35dce93bd8d9\" \"reviews:9080\" \"10.244.0.12:9080\" outbound|9080||reviews.bookinfo.svc.cluster.local 10.244.0.13:48584 10.99.45.111:9080 10.244.0.13:50308 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:52:53.28", + "timestampUnix": 1708941173280, + "accessLog": { + "authority": "reviews:9080", + "bytes_received": "0", + "bytes_sent": "437", + "duration": "7", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "49111c61-f783-9bec-ae57-35dce93bd8d9", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:52:53.280Z", + "upstream_service": "10.244.0.12:9080", + "upstream_service_time": "6", + "upstream_cluster": "outbound|9080||reviews.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:48584", + "downstream_local": "10.99.45.111:9080", + "downstream_remote": "10.244.0.13:50308", + "requested_server": "-", + "route_name": "default", + "uri_path": "/reviews/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:52:53.273Z] \"GET /productpage HTTP/1.1\" 200 - via_upstream - \"-\" 0 5289 15 15 \"10.244.0.1\" \"Go-http-client/1.1\" \"49111c61-f783-9bec-ae57-35dce93bd8d9\" \"192.168.49.2:30876\" \"10.244.0.13:9080\" inbound|9080|| 127.0.0.6:54011 10.244.0.13:9080 10.244.0.1:0 outbound_.9080_._.productpage.bookinfo.svc.cluster.local default", + "severity": "INFO", + "timestamp": "2024-02-26 09:52:53.273", + "timestampUnix": 1708941173273, + "accessLog": { + "authority": "192.168.49.2:30876", + "bytes_received": "0", + "bytes_sent": "5289", + "duration": "15", + "forwarded_for": "10.244.0.1", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "49111c61-f783-9bec-ae57-35dce93bd8d9", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:52:53.273Z", + "upstream_service": "10.244.0.13:9080", + "upstream_service_time": "15", + "upstream_cluster": "inbound|9080||", + "upstream_local": "127.0.0.6:54011", + "downstream_local": "10.244.0.13:9080", + "downstream_remote": "10.244.0.1:0", + "requested_server": "outbound_.9080_._.productpage.bookinfo.svc.cluster.local", + "route_name": "default", + "uri_path": "/productpage", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:52:54.277Z] \"GET /details/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 178 1 1 \"-\" \"Go-http-client/1.1\" \"b2ac1cb7-f24f-9927-bcff-9778252c8093\" \"details:9080\" \"10.244.0.10:9080\" outbound|9080||details.bookinfo.svc.cluster.local 10.244.0.13:60722 10.109.148.19:9080 10.244.0.13:49434 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:52:54.277", + "timestampUnix": 1708941174277, + "accessLog": { + "authority": "details:9080", + "bytes_received": "0", + "bytes_sent": "178", + "duration": "1", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "b2ac1cb7-f24f-9927-bcff-9778252c8093", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:52:54.277Z", + "upstream_service": "10.244.0.10:9080", + "upstream_service_time": "1", + "upstream_cluster": "outbound|9080||details.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:60722", + "downstream_local": "10.109.148.19:9080", + "downstream_remote": "10.244.0.13:49434", + "requested_server": "-", + "route_name": "default", + "uri_path": "/details/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:52:54.281Z] \"GET /reviews/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 358 3 3 \"-\" \"Go-http-client/1.1\" \"b2ac1cb7-f24f-9927-bcff-9778252c8093\" \"reviews:9080\" \"10.244.0.14:9080\" outbound|9080||reviews.bookinfo.svc.cluster.local 10.244.0.13:55880 10.99.45.111:9080 10.244.0.13:50322 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:52:54.281", + "timestampUnix": 1708941174281, + "accessLog": { + "authority": "reviews:9080", + "bytes_received": "0", + "bytes_sent": "358", + "duration": "3", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "b2ac1cb7-f24f-9927-bcff-9778252c8093", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:52:54.281Z", + "upstream_service": "10.244.0.14:9080", + "upstream_service_time": "3", + "upstream_cluster": "outbound|9080||reviews.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:55880", + "downstream_local": "10.99.45.111:9080", + "downstream_remote": "10.244.0.13:50322", + "requested_server": "-", + "route_name": "default", + "uri_path": "/reviews/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:52:54.274Z] \"GET /productpage HTTP/1.1\" 200 - via_upstream - \"-\" 0 4294 12 12 \"10.244.0.1\" \"Go-http-client/1.1\" \"b2ac1cb7-f24f-9927-bcff-9778252c8093\" \"192.168.49.2:30876\" \"10.244.0.13:9080\" inbound|9080|| 127.0.0.6:52947 10.244.0.13:9080 10.244.0.1:0 outbound_.9080_._.productpage.bookinfo.svc.cluster.local default", + "severity": "INFO", + "timestamp": "2024-02-26 09:52:54.274", + "timestampUnix": 1708941174274, + "accessLog": { + "authority": "192.168.49.2:30876", + "bytes_received": "0", + "bytes_sent": "4294", + "duration": "12", + "forwarded_for": "10.244.0.1", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "b2ac1cb7-f24f-9927-bcff-9778252c8093", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:52:54.274Z", + "upstream_service": "10.244.0.13:9080", + "upstream_service_time": "12", + "upstream_cluster": "inbound|9080||", + "upstream_local": "127.0.0.6:52947", + "downstream_local": "10.244.0.13:9080", + "downstream_remote": "10.244.0.1:0", + "requested_server": "outbound_.9080_._.productpage.bookinfo.svc.cluster.local", + "route_name": "default", + "uri_path": "/productpage", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:52:55.277Z] \"GET /details/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 178 1 1 \"-\" \"Go-http-client/1.1\" \"8c17821a-364c-9116-8106-179b6500d05d\" \"details:9080\" \"10.244.0.10:9080\" outbound|9080||details.bookinfo.svc.cluster.local 10.244.0.13:60722 10.109.148.19:9080 10.244.0.13:49438 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:52:55.277", + "timestampUnix": 1708941175277, + "accessLog": { + "authority": "details:9080", + "bytes_received": "0", + "bytes_sent": "178", + "duration": "1", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "8c17821a-364c-9116-8106-179b6500d05d", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:52:55.277Z", + "upstream_service": "10.244.0.10:9080", + "upstream_service_time": "1", + "upstream_cluster": "outbound|9080||details.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:60722", + "downstream_local": "10.109.148.19:9080", + "downstream_remote": "10.244.0.13:49438", + "requested_server": "-", + "route_name": "default", + "uri_path": "/details/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:52:55.281Z] \"GET /reviews/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 442 8 7 \"-\" \"Go-http-client/1.1\" \"8c17821a-364c-9116-8106-179b6500d05d\" \"reviews:9080\" \"10.244.0.15:9080\" outbound|9080||reviews.bookinfo.svc.cluster.local 10.244.0.13:32944 10.99.45.111:9080 10.244.0.13:50336 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:52:55.281", + "timestampUnix": 1708941175281, + "accessLog": { + "authority": "reviews:9080", + "bytes_received": "0", + "bytes_sent": "442", + "duration": "8", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "8c17821a-364c-9116-8106-179b6500d05d", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:52:55.281Z", + "upstream_service": "10.244.0.15:9080", + "upstream_service_time": "7", + "upstream_cluster": "outbound|9080||reviews.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:32944", + "downstream_local": "10.99.45.111:9080", + "downstream_remote": "10.244.0.13:50336", + "requested_server": "-", + "route_name": "default", + "uri_path": "/reviews/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:52:55.273Z] \"GET /productpage HTTP/1.1\" 200 - via_upstream - \"-\" 0 5294 17 17 \"10.244.0.1\" \"Go-http-client/1.1\" \"8c17821a-364c-9116-8106-179b6500d05d\" \"192.168.49.2:30876\" \"10.244.0.13:9080\" inbound|9080|| 127.0.0.6:45711 10.244.0.13:9080 10.244.0.1:0 outbound_.9080_._.productpage.bookinfo.svc.cluster.local default", + "severity": "INFO", + "timestamp": "2024-02-26 09:52:55.273", + "timestampUnix": 1708941175273, + "accessLog": { + "authority": "192.168.49.2:30876", + "bytes_received": "0", + "bytes_sent": "5294", + "duration": "17", + "forwarded_for": "10.244.0.1", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "8c17821a-364c-9116-8106-179b6500d05d", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:52:55.273Z", + "upstream_service": "10.244.0.13:9080", + "upstream_service_time": "17", + "upstream_cluster": "inbound|9080||", + "upstream_local": "127.0.0.6:45711", + "downstream_local": "10.244.0.13:9080", + "downstream_remote": "10.244.0.1:0", + "requested_server": "outbound_.9080_._.productpage.bookinfo.svc.cluster.local", + "route_name": "default", + "uri_path": "/productpage", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:52:56.276Z] \"GET /details/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 178 1 1 \"-\" \"Go-http-client/1.1\" \"352bcb01-6788-987b-b04a-5df77a875a7a\" \"details:9080\" \"10.244.0.10:9080\" outbound|9080||details.bookinfo.svc.cluster.local 10.244.0.13:58492 10.109.148.19:9080 10.244.0.13:49450 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:52:56.276", + "timestampUnix": 1708941176276, + "accessLog": { + "authority": "details:9080", + "bytes_received": "0", + "bytes_sent": "178", + "duration": "1", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "352bcb01-6788-987b-b04a-5df77a875a7a", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:52:56.276Z", + "upstream_service": "10.244.0.10:9080", + "upstream_service_time": "1", + "upstream_cluster": "outbound|9080||details.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:58492", + "downstream_local": "10.109.148.19:9080", + "downstream_remote": "10.244.0.13:49450", + "requested_server": "-", + "route_name": "default", + "uri_path": "/details/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:52:56.281Z] \"GET /reviews/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 358 2 2 \"-\" \"Go-http-client/1.1\" \"352bcb01-6788-987b-b04a-5df77a875a7a\" \"reviews:9080\" \"10.244.0.14:9080\" outbound|9080||reviews.bookinfo.svc.cluster.local 10.244.0.13:34890 10.99.45.111:9080 10.244.0.13:50342 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:52:56.281", + "timestampUnix": 1708941176281, + "accessLog": { + "authority": "reviews:9080", + "bytes_received": "0", + "bytes_sent": "358", + "duration": "2", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "352bcb01-6788-987b-b04a-5df77a875a7a", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:52:56.281Z", + "upstream_service": "10.244.0.14:9080", + "upstream_service_time": "2", + "upstream_cluster": "outbound|9080||reviews.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:34890", + "downstream_local": "10.99.45.111:9080", + "downstream_remote": "10.244.0.13:50342", + "requested_server": "-", + "route_name": "default", + "uri_path": "/reviews/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:52:56.273Z] \"GET /productpage HTTP/1.1\" 200 - via_upstream - \"-\" 0 4294 11 11 \"10.244.0.1\" \"Go-http-client/1.1\" \"352bcb01-6788-987b-b04a-5df77a875a7a\" \"192.168.49.2:30876\" \"10.244.0.13:9080\" inbound|9080|| 127.0.0.6:38511 10.244.0.13:9080 10.244.0.1:0 outbound_.9080_._.productpage.bookinfo.svc.cluster.local default", + "severity": "INFO", + "timestamp": "2024-02-26 09:52:56.273", + "timestampUnix": 1708941176273, + "accessLog": { + "authority": "192.168.49.2:30876", + "bytes_received": "0", + "bytes_sent": "4294", + "duration": "11", + "forwarded_for": "10.244.0.1", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "352bcb01-6788-987b-b04a-5df77a875a7a", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:52:56.273Z", + "upstream_service": "10.244.0.13:9080", + "upstream_service_time": "11", + "upstream_cluster": "inbound|9080||", + "upstream_local": "127.0.0.6:38511", + "downstream_local": "10.244.0.13:9080", + "downstream_remote": "10.244.0.1:0", + "requested_server": "outbound_.9080_._.productpage.bookinfo.svc.cluster.local", + "route_name": "default", + "uri_path": "/productpage", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:52:57.276Z] \"GET /details/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 178 1 1 \"-\" \"Go-http-client/1.1\" \"fae4fb87-541c-952d-99f0-a02f36a2985d\" \"details:9080\" \"10.244.0.10:9080\" outbound|9080||details.bookinfo.svc.cluster.local 10.244.0.13:58492 10.109.148.19:9080 10.244.0.13:55938 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:52:57.276", + "timestampUnix": 1708941177276, + "accessLog": { + "authority": "details:9080", + "bytes_received": "0", + "bytes_sent": "178", + "duration": "1", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "fae4fb87-541c-952d-99f0-a02f36a2985d", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:52:57.276Z", + "upstream_service": "10.244.0.10:9080", + "upstream_service_time": "1", + "upstream_cluster": "outbound|9080||details.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:58492", + "downstream_local": "10.109.148.19:9080", + "downstream_remote": "10.244.0.13:55938", + "requested_server": "-", + "route_name": "default", + "uri_path": "/details/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:52:57.280Z] \"GET /reviews/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 358 2 2 \"-\" \"Go-http-client/1.1\" \"fae4fb87-541c-952d-99f0-a02f36a2985d\" \"reviews:9080\" \"10.244.0.14:9080\" outbound|9080||reviews.bookinfo.svc.cluster.local 10.244.0.13:34890 10.99.45.111:9080 10.244.0.13:34918 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:52:57.28", + "timestampUnix": 1708941177280, + "accessLog": { + "authority": "reviews:9080", + "bytes_received": "0", + "bytes_sent": "358", + "duration": "2", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "fae4fb87-541c-952d-99f0-a02f36a2985d", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:52:57.280Z", + "upstream_service": "10.244.0.14:9080", + "upstream_service_time": "2", + "upstream_cluster": "outbound|9080||reviews.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:34890", + "downstream_local": "10.99.45.111:9080", + "downstream_remote": "10.244.0.13:34918", + "requested_server": "-", + "route_name": "default", + "uri_path": "/reviews/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:52:57.273Z] \"GET /productpage HTTP/1.1\" 200 - via_upstream - \"-\" 0 4294 10 10 \"10.244.0.1\" \"Go-http-client/1.1\" \"fae4fb87-541c-952d-99f0-a02f36a2985d\" \"192.168.49.2:30876\" \"10.244.0.13:9080\" inbound|9080|| 127.0.0.6:38637 10.244.0.13:9080 10.244.0.1:0 outbound_.9080_._.productpage.bookinfo.svc.cluster.local default", + "severity": "INFO", + "timestamp": "2024-02-26 09:52:57.273", + "timestampUnix": 1708941177273, + "accessLog": { + "authority": "192.168.49.2:30876", + "bytes_received": "0", + "bytes_sent": "4294", + "duration": "10", + "forwarded_for": "10.244.0.1", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "fae4fb87-541c-952d-99f0-a02f36a2985d", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:52:57.273Z", + "upstream_service": "10.244.0.13:9080", + "upstream_service_time": "10", + "upstream_cluster": "inbound|9080||", + "upstream_local": "127.0.0.6:38637", + "downstream_local": "10.244.0.13:9080", + "downstream_remote": "10.244.0.1:0", + "requested_server": "outbound_.9080_._.productpage.bookinfo.svc.cluster.local", + "route_name": "default", + "uri_path": "/productpage", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:52:58.276Z] \"GET /details/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 178 1 1 \"-\" \"Go-http-client/1.1\" \"04e545c6-8a28-9b46-8182-6c6158533c48\" \"details:9080\" \"10.244.0.10:9080\" outbound|9080||details.bookinfo.svc.cluster.local 10.244.0.13:60722 10.109.148.19:9080 10.244.0.13:55946 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:52:58.276", + "timestampUnix": 1708941178276, + "accessLog": { + "authority": "details:9080", + "bytes_received": "0", + "bytes_sent": "178", + "duration": "1", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "04e545c6-8a28-9b46-8182-6c6158533c48", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:52:58.276Z", + "upstream_service": "10.244.0.10:9080", + "upstream_service_time": "1", + "upstream_cluster": "outbound|9080||details.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:60722", + "downstream_local": "10.109.148.19:9080", + "downstream_remote": "10.244.0.13:55946", + "requested_server": "-", + "route_name": "default", + "uri_path": "/details/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:52:58.281Z] \"GET /reviews/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 437 7 7 \"-\" \"Go-http-client/1.1\" \"04e545c6-8a28-9b46-8182-6c6158533c48\" \"reviews:9080\" \"10.244.0.12:9080\" outbound|9080||reviews.bookinfo.svc.cluster.local 10.244.0.13:48578 10.99.45.111:9080 10.244.0.13:34928 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:52:58.281", + "timestampUnix": 1708941178281, + "accessLog": { + "authority": "reviews:9080", + "bytes_received": "0", + "bytes_sent": "437", + "duration": "7", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "04e545c6-8a28-9b46-8182-6c6158533c48", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:52:58.281Z", + "upstream_service": "10.244.0.12:9080", + "upstream_service_time": "7", + "upstream_cluster": "outbound|9080||reviews.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:48578", + "downstream_local": "10.99.45.111:9080", + "downstream_remote": "10.244.0.13:34928", + "requested_server": "-", + "route_name": "default", + "uri_path": "/reviews/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:52:58.273Z] \"GET /productpage HTTP/1.1\" 200 - via_upstream - \"-\" 0 5289 16 15 \"10.244.0.1\" \"Go-http-client/1.1\" \"04e545c6-8a28-9b46-8182-6c6158533c48\" \"192.168.49.2:30876\" \"10.244.0.13:9080\" inbound|9080|| 127.0.0.6:38917 10.244.0.13:9080 10.244.0.1:0 outbound_.9080_._.productpage.bookinfo.svc.cluster.local default", + "severity": "INFO", + "timestamp": "2024-02-26 09:52:58.273", + "timestampUnix": 1708941178273, + "accessLog": { + "authority": "192.168.49.2:30876", + "bytes_received": "0", + "bytes_sent": "5289", + "duration": "16", + "forwarded_for": "10.244.0.1", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "04e545c6-8a28-9b46-8182-6c6158533c48", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:52:58.273Z", + "upstream_service": "10.244.0.13:9080", + "upstream_service_time": "15", + "upstream_cluster": "inbound|9080||", + "upstream_local": "127.0.0.6:38917", + "downstream_local": "10.244.0.13:9080", + "downstream_remote": "10.244.0.1:0", + "requested_server": "outbound_.9080_._.productpage.bookinfo.svc.cluster.local", + "route_name": "default", + "uri_path": "/productpage", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:52:59.276Z] \"GET /details/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 178 1 1 \"-\" \"Go-http-client/1.1\" \"5bde9f6c-0c4d-99c7-84a4-343c0c0f6193\" \"details:9080\" \"10.244.0.10:9080\" outbound|9080||details.bookinfo.svc.cluster.local 10.244.0.13:58492 10.109.148.19:9080 10.244.0.13:55960 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:52:59.276", + "timestampUnix": 1708941179276, + "accessLog": { + "authority": "details:9080", + "bytes_received": "0", + "bytes_sent": "178", + "duration": "1", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "5bde9f6c-0c4d-99c7-84a4-343c0c0f6193", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:52:59.276Z", + "upstream_service": "10.244.0.10:9080", + "upstream_service_time": "1", + "upstream_cluster": "outbound|9080||details.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:58492", + "downstream_local": "10.109.148.19:9080", + "downstream_remote": "10.244.0.13:55960", + "requested_server": "-", + "route_name": "default", + "uri_path": "/details/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:52:59.280Z] \"GET /reviews/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 358 2 2 \"-\" \"Go-http-client/1.1\" \"5bde9f6c-0c4d-99c7-84a4-343c0c0f6193\" \"reviews:9080\" \"10.244.0.14:9080\" outbound|9080||reviews.bookinfo.svc.cluster.local 10.244.0.13:55880 10.99.45.111:9080 10.244.0.13:34938 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:52:59.28", + "timestampUnix": 1708941179280, + "accessLog": { + "authority": "reviews:9080", + "bytes_received": "0", + "bytes_sent": "358", + "duration": "2", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "5bde9f6c-0c4d-99c7-84a4-343c0c0f6193", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:52:59.280Z", + "upstream_service": "10.244.0.14:9080", + "upstream_service_time": "2", + "upstream_cluster": "outbound|9080||reviews.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:55880", + "downstream_local": "10.99.45.111:9080", + "downstream_remote": "10.244.0.13:34938", + "requested_server": "-", + "route_name": "default", + "uri_path": "/reviews/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:52:59.273Z] \"GET /productpage HTTP/1.1\" 200 - via_upstream - \"-\" 0 4294 10 10 \"10.244.0.1\" \"Go-http-client/1.1\" \"5bde9f6c-0c4d-99c7-84a4-343c0c0f6193\" \"192.168.49.2:30876\" \"10.244.0.13:9080\" inbound|9080|| 127.0.0.6:50727 10.244.0.13:9080 10.244.0.1:0 outbound_.9080_._.productpage.bookinfo.svc.cluster.local default", + "severity": "INFO", + "timestamp": "2024-02-26 09:52:59.273", + "timestampUnix": 1708941179273, + "accessLog": { + "authority": "192.168.49.2:30876", + "bytes_received": "0", + "bytes_sent": "4294", + "duration": "10", + "forwarded_for": "10.244.0.1", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "5bde9f6c-0c4d-99c7-84a4-343c0c0f6193", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:52:59.273Z", + "upstream_service": "10.244.0.13:9080", + "upstream_service_time": "10", + "upstream_cluster": "inbound|9080||", + "upstream_local": "127.0.0.6:50727", + "downstream_local": "10.244.0.13:9080", + "downstream_remote": "10.244.0.1:0", + "requested_server": "outbound_.9080_._.productpage.bookinfo.svc.cluster.local", + "route_name": "default", + "uri_path": "/productpage", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:53:00.277Z] \"GET /details/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 178 1 1 \"-\" \"Go-http-client/1.1\" \"29e0baaa-cc79-9819-bcc7-26921a95b2cf\" \"details:9080\" \"10.244.0.10:9080\" outbound|9080||details.bookinfo.svc.cluster.local 10.244.0.13:60722 10.109.148.19:9080 10.244.0.13:55966 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:53:00.277", + "timestampUnix": 1708941180277, + "accessLog": { + "authority": "details:9080", + "bytes_received": "0", + "bytes_sent": "178", + "duration": "1", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "29e0baaa-cc79-9819-bcc7-26921a95b2cf", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:53:00.277Z", + "upstream_service": "10.244.0.10:9080", + "upstream_service_time": "1", + "upstream_cluster": "outbound|9080||details.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:60722", + "downstream_local": "10.109.148.19:9080", + "downstream_remote": "10.244.0.13:55966", + "requested_server": "-", + "route_name": "default", + "uri_path": "/details/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:53:00.280Z] \"GET /reviews/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 442 7 6 \"-\" \"Go-http-client/1.1\" \"29e0baaa-cc79-9819-bcc7-26921a95b2cf\" \"reviews:9080\" \"10.244.0.15:9080\" outbound|9080||reviews.bookinfo.svc.cluster.local 10.244.0.13:50830 10.99.45.111:9080 10.244.0.13:34948 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:53:00.28", + "timestampUnix": 1708941180280, + "accessLog": { + "authority": "reviews:9080", + "bytes_received": "0", + "bytes_sent": "442", + "duration": "7", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "29e0baaa-cc79-9819-bcc7-26921a95b2cf", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:53:00.280Z", + "upstream_service": "10.244.0.15:9080", + "upstream_service_time": "6", + "upstream_cluster": "outbound|9080||reviews.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:50830", + "downstream_local": "10.99.45.111:9080", + "downstream_remote": "10.244.0.13:34948", + "requested_server": "-", + "route_name": "default", + "uri_path": "/reviews/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:53:00.273Z] \"GET /productpage HTTP/1.1\" 200 - via_upstream - \"-\" 0 5294 16 15 \"10.244.0.1\" \"Go-http-client/1.1\" \"29e0baaa-cc79-9819-bcc7-26921a95b2cf\" \"192.168.49.2:30876\" \"10.244.0.13:9080\" inbound|9080|| 127.0.0.6:54287 10.244.0.13:9080 10.244.0.1:0 outbound_.9080_._.productpage.bookinfo.svc.cluster.local default", + "severity": "INFO", + "timestamp": "2024-02-26 09:53:00.273", + "timestampUnix": 1708941180273, + "accessLog": { + "authority": "192.168.49.2:30876", + "bytes_received": "0", + "bytes_sent": "5294", + "duration": "16", + "forwarded_for": "10.244.0.1", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "29e0baaa-cc79-9819-bcc7-26921a95b2cf", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:53:00.273Z", + "upstream_service": "10.244.0.13:9080", + "upstream_service_time": "15", + "upstream_cluster": "inbound|9080||", + "upstream_local": "127.0.0.6:54287", + "downstream_local": "10.244.0.13:9080", + "downstream_remote": "10.244.0.1:0", + "requested_server": "outbound_.9080_._.productpage.bookinfo.svc.cluster.local", + "route_name": "default", + "uri_path": "/productpage", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:53:01.277Z] \"GET /details/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 178 1 1 \"-\" \"Go-http-client/1.1\" \"5145e172-84ed-92d0-a61f-f99b2d6210fc\" \"details:9080\" \"10.244.0.10:9080\" outbound|9080||details.bookinfo.svc.cluster.local 10.244.0.13:58492 10.109.148.19:9080 10.244.0.13:55974 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:53:01.277", + "timestampUnix": 1708941181277, + "accessLog": { + "authority": "details:9080", + "bytes_received": "0", + "bytes_sent": "178", + "duration": "1", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "5145e172-84ed-92d0-a61f-f99b2d6210fc", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:53:01.277Z", + "upstream_service": "10.244.0.10:9080", + "upstream_service_time": "1", + "upstream_cluster": "outbound|9080||details.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:58492", + "downstream_local": "10.109.148.19:9080", + "downstream_remote": "10.244.0.13:55974", + "requested_server": "-", + "route_name": "default", + "uri_path": "/details/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:53:01.281Z] \"GET /reviews/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 358 3 3 \"-\" \"Go-http-client/1.1\" \"5145e172-84ed-92d0-a61f-f99b2d6210fc\" \"reviews:9080\" \"10.244.0.14:9080\" outbound|9080||reviews.bookinfo.svc.cluster.local 10.244.0.13:55880 10.99.45.111:9080 10.244.0.13:34960 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:53:01.281", + "timestampUnix": 1708941181281, + "accessLog": { + "authority": "reviews:9080", + "bytes_received": "0", + "bytes_sent": "358", + "duration": "3", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "5145e172-84ed-92d0-a61f-f99b2d6210fc", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:53:01.281Z", + "upstream_service": "10.244.0.14:9080", + "upstream_service_time": "3", + "upstream_cluster": "outbound|9080||reviews.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:55880", + "downstream_local": "10.99.45.111:9080", + "downstream_remote": "10.244.0.13:34960", + "requested_server": "-", + "route_name": "default", + "uri_path": "/reviews/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:53:01.273Z] \"GET /productpage HTTP/1.1\" 200 - via_upstream - \"-\" 0 4294 12 11 \"10.244.0.1\" \"Go-http-client/1.1\" \"5145e172-84ed-92d0-a61f-f99b2d6210fc\" \"192.168.49.2:30876\" \"10.244.0.13:9080\" inbound|9080|| 127.0.0.6:50283 10.244.0.13:9080 10.244.0.1:0 outbound_.9080_._.productpage.bookinfo.svc.cluster.local default", + "severity": "INFO", + "timestamp": "2024-02-26 09:53:01.273", + "timestampUnix": 1708941181273, + "accessLog": { + "authority": "192.168.49.2:30876", + "bytes_received": "0", + "bytes_sent": "4294", + "duration": "12", + "forwarded_for": "10.244.0.1", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "5145e172-84ed-92d0-a61f-f99b2d6210fc", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:53:01.273Z", + "upstream_service": "10.244.0.13:9080", + "upstream_service_time": "11", + "upstream_cluster": "inbound|9080||", + "upstream_local": "127.0.0.6:50283", + "downstream_local": "10.244.0.13:9080", + "downstream_remote": "10.244.0.1:0", + "requested_server": "outbound_.9080_._.productpage.bookinfo.svc.cluster.local", + "route_name": "default", + "uri_path": "/productpage", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:53:02.277Z] \"GET /details/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 178 1 1 \"-\" \"Go-http-client/1.1\" \"6c3d180c-bce7-929c-8fc3-cdb5fcc1d8af\" \"details:9080\" \"10.244.0.10:9080\" outbound|9080||details.bookinfo.svc.cluster.local 10.244.0.13:58492 10.109.148.19:9080 10.244.0.13:55986 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:53:02.277", + "timestampUnix": 1708941182277, + "accessLog": { + "authority": "details:9080", + "bytes_received": "0", + "bytes_sent": "178", + "duration": "1", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "6c3d180c-bce7-929c-8fc3-cdb5fcc1d8af", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:53:02.277Z", + "upstream_service": "10.244.0.10:9080", + "upstream_service_time": "1", + "upstream_cluster": "outbound|9080||details.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:58492", + "downstream_local": "10.109.148.19:9080", + "downstream_remote": "10.244.0.13:55986", + "requested_server": "-", + "route_name": "default", + "uri_path": "/details/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:53:02.281Z] \"GET /reviews/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 358 2 2 \"-\" \"Go-http-client/1.1\" \"6c3d180c-bce7-929c-8fc3-cdb5fcc1d8af\" \"reviews:9080\" \"10.244.0.14:9080\" outbound|9080||reviews.bookinfo.svc.cluster.local 10.244.0.13:34890 10.99.45.111:9080 10.244.0.13:34974 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:53:02.281", + "timestampUnix": 1708941182281, + "accessLog": { + "authority": "reviews:9080", + "bytes_received": "0", + "bytes_sent": "358", + "duration": "2", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "6c3d180c-bce7-929c-8fc3-cdb5fcc1d8af", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:53:02.281Z", + "upstream_service": "10.244.0.14:9080", + "upstream_service_time": "2", + "upstream_cluster": "outbound|9080||reviews.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:34890", + "downstream_local": "10.99.45.111:9080", + "downstream_remote": "10.244.0.13:34974", + "requested_server": "-", + "route_name": "default", + "uri_path": "/reviews/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:53:02.273Z] \"GET /productpage HTTP/1.1\" 200 - via_upstream - \"-\" 0 4294 11 11 \"10.244.0.1\" \"Go-http-client/1.1\" \"6c3d180c-bce7-929c-8fc3-cdb5fcc1d8af\" \"192.168.49.2:30876\" \"10.244.0.13:9080\" inbound|9080|| 127.0.0.6:48827 10.244.0.13:9080 10.244.0.1:0 outbound_.9080_._.productpage.bookinfo.svc.cluster.local default", + "severity": "INFO", + "timestamp": "2024-02-26 09:53:02.273", + "timestampUnix": 1708941182273, + "accessLog": { + "authority": "192.168.49.2:30876", + "bytes_received": "0", + "bytes_sent": "4294", + "duration": "11", + "forwarded_for": "10.244.0.1", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "6c3d180c-bce7-929c-8fc3-cdb5fcc1d8af", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:53:02.273Z", + "upstream_service": "10.244.0.13:9080", + "upstream_service_time": "11", + "upstream_cluster": "inbound|9080||", + "upstream_local": "127.0.0.6:48827", + "downstream_local": "10.244.0.13:9080", + "downstream_remote": "10.244.0.1:0", + "requested_server": "outbound_.9080_._.productpage.bookinfo.svc.cluster.local", + "route_name": "default", + "uri_path": "/productpage", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:53:03.276Z] \"GET /details/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 178 1 1 \"-\" \"Go-http-client/1.1\" \"124dafab-4b27-9c60-b3de-9cc269b685b6\" \"details:9080\" \"10.244.0.10:9080\" outbound|9080||details.bookinfo.svc.cluster.local 10.244.0.13:58492 10.109.148.19:9080 10.244.0.13:55992 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:53:03.276", + "timestampUnix": 1708941183276, + "accessLog": { + "authority": "details:9080", + "bytes_received": "0", + "bytes_sent": "178", + "duration": "1", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "124dafab-4b27-9c60-b3de-9cc269b685b6", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:53:03.276Z", + "upstream_service": "10.244.0.10:9080", + "upstream_service_time": "1", + "upstream_cluster": "outbound|9080||details.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:58492", + "downstream_local": "10.109.148.19:9080", + "downstream_remote": "10.244.0.13:55992", + "requested_server": "-", + "route_name": "default", + "uri_path": "/details/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:53:03.281Z] \"GET /reviews/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 437 7 6 \"-\" \"Go-http-client/1.1\" \"124dafab-4b27-9c60-b3de-9cc269b685b6\" \"reviews:9080\" \"10.244.0.12:9080\" outbound|9080||reviews.bookinfo.svc.cluster.local 10.244.0.13:48584 10.99.45.111:9080 10.244.0.13:34978 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:53:03.281", + "timestampUnix": 1708941183281, + "accessLog": { + "authority": "reviews:9080", + "bytes_received": "0", + "bytes_sent": "437", + "duration": "7", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "124dafab-4b27-9c60-b3de-9cc269b685b6", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:53:03.281Z", + "upstream_service": "10.244.0.12:9080", + "upstream_service_time": "6", + "upstream_cluster": "outbound|9080||reviews.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:48584", + "downstream_local": "10.99.45.111:9080", + "downstream_remote": "10.244.0.13:34978", + "requested_server": "-", + "route_name": "default", + "uri_path": "/reviews/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:53:03.273Z] \"GET /productpage HTTP/1.1\" 200 - via_upstream - \"-\" 0 5289 16 15 \"10.244.0.1\" \"Go-http-client/1.1\" \"124dafab-4b27-9c60-b3de-9cc269b685b6\" \"192.168.49.2:30876\" \"10.244.0.13:9080\" inbound|9080|| 127.0.0.6:35833 10.244.0.13:9080 10.244.0.1:0 outbound_.9080_._.productpage.bookinfo.svc.cluster.local default", + "severity": "INFO", + "timestamp": "2024-02-26 09:53:03.273", + "timestampUnix": 1708941183273, + "accessLog": { + "authority": "192.168.49.2:30876", + "bytes_received": "0", + "bytes_sent": "5289", + "duration": "16", + "forwarded_for": "10.244.0.1", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "124dafab-4b27-9c60-b3de-9cc269b685b6", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:53:03.273Z", + "upstream_service": "10.244.0.13:9080", + "upstream_service_time": "15", + "upstream_cluster": "inbound|9080||", + "upstream_local": "127.0.0.6:35833", + "downstream_local": "10.244.0.13:9080", + "downstream_remote": "10.244.0.1:0", + "requested_server": "outbound_.9080_._.productpage.bookinfo.svc.cluster.local", + "route_name": "default", + "uri_path": "/productpage", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:53:04.276Z] \"GET /details/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 178 1 1 \"-\" \"Go-http-client/1.1\" \"8696ae10-9a47-93df-945d-0d4db3cbb8c3\" \"details:9080\" \"10.244.0.10:9080\" outbound|9080||details.bookinfo.svc.cluster.local 10.244.0.13:60722 10.109.148.19:9080 10.244.0.13:55998 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:53:04.276", + "timestampUnix": 1708941184276, + "accessLog": { + "authority": "details:9080", + "bytes_received": "0", + "bytes_sent": "178", + "duration": "1", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "8696ae10-9a47-93df-945d-0d4db3cbb8c3", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:53:04.276Z", + "upstream_service": "10.244.0.10:9080", + "upstream_service_time": "1", + "upstream_cluster": "outbound|9080||details.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:60722", + "downstream_local": "10.109.148.19:9080", + "downstream_remote": "10.244.0.13:55998", + "requested_server": "-", + "route_name": "default", + "uri_path": "/details/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:53:04.280Z] \"GET /reviews/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 442 7 6 \"-\" \"Go-http-client/1.1\" \"8696ae10-9a47-93df-945d-0d4db3cbb8c3\" \"reviews:9080\" \"10.244.0.15:9080\" outbound|9080||reviews.bookinfo.svc.cluster.local 10.244.0.13:32944 10.99.45.111:9080 10.244.0.13:34982 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:53:04.28", + "timestampUnix": 1708941184280, + "accessLog": { + "authority": "reviews:9080", + "bytes_received": "0", + "bytes_sent": "442", + "duration": "7", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "8696ae10-9a47-93df-945d-0d4db3cbb8c3", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:53:04.280Z", + "upstream_service": "10.244.0.15:9080", + "upstream_service_time": "6", + "upstream_cluster": "outbound|9080||reviews.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:32944", + "downstream_local": "10.99.45.111:9080", + "downstream_remote": "10.244.0.13:34982", + "requested_server": "-", + "route_name": "default", + "uri_path": "/reviews/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:53:04.273Z] \"GET /productpage HTTP/1.1\" 200 - via_upstream - \"-\" 0 5294 16 15 \"10.244.0.1\" \"Go-http-client/1.1\" \"8696ae10-9a47-93df-945d-0d4db3cbb8c3\" \"192.168.49.2:30876\" \"10.244.0.13:9080\" inbound|9080|| 127.0.0.6:43915 10.244.0.13:9080 10.244.0.1:0 outbound_.9080_._.productpage.bookinfo.svc.cluster.local default", + "severity": "INFO", + "timestamp": "2024-02-26 09:53:04.273", + "timestampUnix": 1708941184273, + "accessLog": { + "authority": "192.168.49.2:30876", + "bytes_received": "0", + "bytes_sent": "5294", + "duration": "16", + "forwarded_for": "10.244.0.1", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "8696ae10-9a47-93df-945d-0d4db3cbb8c3", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:53:04.273Z", + "upstream_service": "10.244.0.13:9080", + "upstream_service_time": "15", + "upstream_cluster": "inbound|9080||", + "upstream_local": "127.0.0.6:43915", + "downstream_local": "10.244.0.13:9080", + "downstream_remote": "10.244.0.1:0", + "requested_server": "outbound_.9080_._.productpage.bookinfo.svc.cluster.local", + "route_name": "default", + "uri_path": "/productpage", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:53:05.276Z] \"GET /details/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 178 1 1 \"-\" \"Go-http-client/1.1\" \"d37a432c-879d-9909-9993-942d5546ca6b\" \"details:9080\" \"10.244.0.10:9080\" outbound|9080||details.bookinfo.svc.cluster.local 10.244.0.13:60722 10.109.148.19:9080 10.244.0.13:56004 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:53:05.276", + "timestampUnix": 1708941185276, + "accessLog": { + "authority": "details:9080", + "bytes_received": "0", + "bytes_sent": "178", + "duration": "1", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "d37a432c-879d-9909-9993-942d5546ca6b", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:53:05.276Z", + "upstream_service": "10.244.0.10:9080", + "upstream_service_time": "1", + "upstream_cluster": "outbound|9080||details.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:60722", + "downstream_local": "10.109.148.19:9080", + "downstream_remote": "10.244.0.13:56004", + "requested_server": "-", + "route_name": "default", + "uri_path": "/details/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:53:05.280Z] \"GET /reviews/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 358 2 2 \"-\" \"Go-http-client/1.1\" \"d37a432c-879d-9909-9993-942d5546ca6b\" \"reviews:9080\" \"10.244.0.14:9080\" outbound|9080||reviews.bookinfo.svc.cluster.local 10.244.0.13:55880 10.99.45.111:9080 10.244.0.13:34998 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:53:05.28", + "timestampUnix": 1708941185280, + "accessLog": { + "authority": "reviews:9080", + "bytes_received": "0", + "bytes_sent": "358", + "duration": "2", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "d37a432c-879d-9909-9993-942d5546ca6b", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:53:05.280Z", + "upstream_service": "10.244.0.14:9080", + "upstream_service_time": "2", + "upstream_cluster": "outbound|9080||reviews.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:55880", + "downstream_local": "10.99.45.111:9080", + "downstream_remote": "10.244.0.13:34998", + "requested_server": "-", + "route_name": "default", + "uri_path": "/reviews/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:53:05.273Z] \"GET /productpage HTTP/1.1\" 200 - via_upstream - \"-\" 0 4294 10 10 \"10.244.0.1\" \"Go-http-client/1.1\" \"d37a432c-879d-9909-9993-942d5546ca6b\" \"192.168.49.2:30876\" \"10.244.0.13:9080\" inbound|9080|| 127.0.0.6:35205 10.244.0.13:9080 10.244.0.1:0 outbound_.9080_._.productpage.bookinfo.svc.cluster.local default", + "severity": "INFO", + "timestamp": "2024-02-26 09:53:05.273", + "timestampUnix": 1708941185273, + "accessLog": { + "authority": "192.168.49.2:30876", + "bytes_received": "0", + "bytes_sent": "4294", + "duration": "10", + "forwarded_for": "10.244.0.1", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "d37a432c-879d-9909-9993-942d5546ca6b", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:53:05.273Z", + "upstream_service": "10.244.0.13:9080", + "upstream_service_time": "10", + "upstream_cluster": "inbound|9080||", + "upstream_local": "127.0.0.6:35205", + "downstream_local": "10.244.0.13:9080", + "downstream_remote": "10.244.0.1:0", + "requested_server": "outbound_.9080_._.productpage.bookinfo.svc.cluster.local", + "route_name": "default", + "uri_path": "/productpage", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:53:06.277Z] \"GET /details/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 178 1 1 \"-\" \"Go-http-client/1.1\" \"3fa278f8-9c9d-9122-a77b-c40f991fad95\" \"details:9080\" \"10.244.0.10:9080\" outbound|9080||details.bookinfo.svc.cluster.local 10.244.0.13:60722 10.109.148.19:9080 10.244.0.13:56012 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:53:06.277", + "timestampUnix": 1708941186277, + "accessLog": { + "authority": "details:9080", + "bytes_received": "0", + "bytes_sent": "178", + "duration": "1", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "3fa278f8-9c9d-9122-a77b-c40f991fad95", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:53:06.277Z", + "upstream_service": "10.244.0.10:9080", + "upstream_service_time": "1", + "upstream_cluster": "outbound|9080||details.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:60722", + "downstream_local": "10.109.148.19:9080", + "downstream_remote": "10.244.0.13:56012", + "requested_server": "-", + "route_name": "default", + "uri_path": "/details/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:53:06.281Z] \"GET /reviews/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 358 2 2 \"-\" \"Go-http-client/1.1\" \"3fa278f8-9c9d-9122-a77b-c40f991fad95\" \"reviews:9080\" \"10.244.0.14:9080\" outbound|9080||reviews.bookinfo.svc.cluster.local 10.244.0.13:34890 10.99.45.111:9080 10.244.0.13:35010 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:53:06.281", + "timestampUnix": 1708941186281, + "accessLog": { + "authority": "reviews:9080", + "bytes_received": "0", + "bytes_sent": "358", + "duration": "2", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "3fa278f8-9c9d-9122-a77b-c40f991fad95", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:53:06.281Z", + "upstream_service": "10.244.0.14:9080", + "upstream_service_time": "2", + "upstream_cluster": "outbound|9080||reviews.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:34890", + "downstream_local": "10.99.45.111:9080", + "downstream_remote": "10.244.0.13:35010", + "requested_server": "-", + "route_name": "default", + "uri_path": "/reviews/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:53:06.273Z] \"GET /productpage HTTP/1.1\" 200 - via_upstream - \"-\" 0 4294 11 10 \"10.244.0.1\" \"Go-http-client/1.1\" \"3fa278f8-9c9d-9122-a77b-c40f991fad95\" \"192.168.49.2:30876\" \"10.244.0.13:9080\" inbound|9080|| 127.0.0.6:58747 10.244.0.13:9080 10.244.0.1:0 outbound_.9080_._.productpage.bookinfo.svc.cluster.local default", + "severity": "INFO", + "timestamp": "2024-02-26 09:53:06.273", + "timestampUnix": 1708941186273, + "accessLog": { + "authority": "192.168.49.2:30876", + "bytes_received": "0", + "bytes_sent": "4294", + "duration": "11", + "forwarded_for": "10.244.0.1", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "3fa278f8-9c9d-9122-a77b-c40f991fad95", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:53:06.273Z", + "upstream_service": "10.244.0.13:9080", + "upstream_service_time": "10", + "upstream_cluster": "inbound|9080||", + "upstream_local": "127.0.0.6:58747", + "downstream_local": "10.244.0.13:9080", + "downstream_remote": "10.244.0.1:0", + "requested_server": "outbound_.9080_._.productpage.bookinfo.svc.cluster.local", + "route_name": "default", + "uri_path": "/productpage", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:53:07.277Z] \"GET /details/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 178 1 1 \"-\" \"Go-http-client/1.1\" \"ce8401cb-d7cd-95e3-b4c3-420093b3b94c\" \"details:9080\" \"10.244.0.10:9080\" outbound|9080||details.bookinfo.svc.cluster.local 10.244.0.13:58492 10.109.148.19:9080 10.244.0.13:38230 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:53:07.277", + "timestampUnix": 1708941187277, + "accessLog": { + "authority": "details:9080", + "bytes_received": "0", + "bytes_sent": "178", + "duration": "1", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "ce8401cb-d7cd-95e3-b4c3-420093b3b94c", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:53:07.277Z", + "upstream_service": "10.244.0.10:9080", + "upstream_service_time": "1", + "upstream_cluster": "outbound|9080||details.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:58492", + "downstream_local": "10.109.148.19:9080", + "downstream_remote": "10.244.0.13:38230", + "requested_server": "-", + "route_name": "default", + "uri_path": "/details/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:53:07.281Z] \"GET /reviews/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 437 6 6 \"-\" \"Go-http-client/1.1\" \"ce8401cb-d7cd-95e3-b4c3-420093b3b94c\" \"reviews:9080\" \"10.244.0.12:9080\" outbound|9080||reviews.bookinfo.svc.cluster.local 10.244.0.13:48584 10.99.45.111:9080 10.244.0.13:39092 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:53:07.281", + "timestampUnix": 1708941187281, + "accessLog": { + "authority": "reviews:9080", + "bytes_received": "0", + "bytes_sent": "437", + "duration": "6", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "ce8401cb-d7cd-95e3-b4c3-420093b3b94c", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:53:07.281Z", + "upstream_service": "10.244.0.12:9080", + "upstream_service_time": "6", + "upstream_cluster": "outbound|9080||reviews.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:48584", + "downstream_local": "10.99.45.111:9080", + "downstream_remote": "10.244.0.13:39092", + "requested_server": "-", + "route_name": "default", + "uri_path": "/reviews/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:53:07.274Z] \"GET /productpage HTTP/1.1\" 200 - via_upstream - \"-\" 0 5289 15 14 \"10.244.0.1\" \"Go-http-client/1.1\" \"ce8401cb-d7cd-95e3-b4c3-420093b3b94c\" \"192.168.49.2:30876\" \"10.244.0.13:9080\" inbound|9080|| 127.0.0.6:43525 10.244.0.13:9080 10.244.0.1:0 outbound_.9080_._.productpage.bookinfo.svc.cluster.local default", + "severity": "INFO", + "timestamp": "2024-02-26 09:53:07.274", + "timestampUnix": 1708941187274, + "accessLog": { + "authority": "192.168.49.2:30876", + "bytes_received": "0", + "bytes_sent": "5289", + "duration": "15", + "forwarded_for": "10.244.0.1", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "ce8401cb-d7cd-95e3-b4c3-420093b3b94c", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:53:07.274Z", + "upstream_service": "10.244.0.13:9080", + "upstream_service_time": "14", + "upstream_cluster": "inbound|9080||", + "upstream_local": "127.0.0.6:43525", + "downstream_local": "10.244.0.13:9080", + "downstream_remote": "10.244.0.1:0", + "requested_server": "outbound_.9080_._.productpage.bookinfo.svc.cluster.local", + "route_name": "default", + "uri_path": "/productpage", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:53:08.277Z] \"GET /details/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 178 1 1 \"-\" \"Go-http-client/1.1\" \"fe0ab3e7-6c20-9be2-b75d-8e7a56553375\" \"details:9080\" \"10.244.0.10:9080\" outbound|9080||details.bookinfo.svc.cluster.local 10.244.0.13:58492 10.109.148.19:9080 10.244.0.13:38238 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:53:08.277", + "timestampUnix": 1708941188277, + "accessLog": { + "authority": "details:9080", + "bytes_received": "0", + "bytes_sent": "178", + "duration": "1", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "fe0ab3e7-6c20-9be2-b75d-8e7a56553375", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:53:08.277Z", + "upstream_service": "10.244.0.10:9080", + "upstream_service_time": "1", + "upstream_cluster": "outbound|9080||details.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:58492", + "downstream_local": "10.109.148.19:9080", + "downstream_remote": "10.244.0.13:38238", + "requested_server": "-", + "route_name": "default", + "uri_path": "/details/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:53:08.280Z] \"GET /reviews/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 437 7 7 \"-\" \"Go-http-client/1.1\" \"fe0ab3e7-6c20-9be2-b75d-8e7a56553375\" \"reviews:9080\" \"10.244.0.12:9080\" outbound|9080||reviews.bookinfo.svc.cluster.local 10.244.0.13:48578 10.99.45.111:9080 10.244.0.13:39104 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:53:08.28", + "timestampUnix": 1708941188280, + "accessLog": { + "authority": "reviews:9080", + "bytes_received": "0", + "bytes_sent": "437", + "duration": "7", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "fe0ab3e7-6c20-9be2-b75d-8e7a56553375", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:53:08.280Z", + "upstream_service": "10.244.0.12:9080", + "upstream_service_time": "7", + "upstream_cluster": "outbound|9080||reviews.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:48578", + "downstream_local": "10.99.45.111:9080", + "downstream_remote": "10.244.0.13:39104", + "requested_server": "-", + "route_name": "default", + "uri_path": "/reviews/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:53:08.273Z] \"GET /productpage HTTP/1.1\" 200 - via_upstream - \"-\" 0 5289 15 15 \"10.244.0.1\" \"Go-http-client/1.1\" \"fe0ab3e7-6c20-9be2-b75d-8e7a56553375\" \"192.168.49.2:30876\" \"10.244.0.13:9080\" inbound|9080|| 127.0.0.6:57771 10.244.0.13:9080 10.244.0.1:0 outbound_.9080_._.productpage.bookinfo.svc.cluster.local default", + "severity": "INFO", + "timestamp": "2024-02-26 09:53:08.273", + "timestampUnix": 1708941188273, + "accessLog": { + "authority": "192.168.49.2:30876", + "bytes_received": "0", + "bytes_sent": "5289", + "duration": "15", + "forwarded_for": "10.244.0.1", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "fe0ab3e7-6c20-9be2-b75d-8e7a56553375", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:53:08.273Z", + "upstream_service": "10.244.0.13:9080", + "upstream_service_time": "15", + "upstream_cluster": "inbound|9080||", + "upstream_local": "127.0.0.6:57771", + "downstream_local": "10.244.0.13:9080", + "downstream_remote": "10.244.0.1:0", + "requested_server": "outbound_.9080_._.productpage.bookinfo.svc.cluster.local", + "route_name": "default", + "uri_path": "/productpage", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:53:09.277Z] \"GET /details/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 178 1 1 \"-\" \"Go-http-client/1.1\" \"4389635a-7b2c-9048-a000-09c76c140f4c\" \"details:9080\" \"10.244.0.10:9080\" outbound|9080||details.bookinfo.svc.cluster.local 10.244.0.13:60722 10.109.148.19:9080 10.244.0.13:38240 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:53:09.277", + "timestampUnix": 1708941189277, + "accessLog": { + "authority": "details:9080", + "bytes_received": "0", + "bytes_sent": "178", + "duration": "1", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "4389635a-7b2c-9048-a000-09c76c140f4c", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:53:09.277Z", + "upstream_service": "10.244.0.10:9080", + "upstream_service_time": "1", + "upstream_cluster": "outbound|9080||details.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:60722", + "downstream_local": "10.109.148.19:9080", + "downstream_remote": "10.244.0.13:38240", + "requested_server": "-", + "route_name": "default", + "uri_path": "/details/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:53:09.281Z] \"GET /reviews/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 437 7 7 \"-\" \"Go-http-client/1.1\" \"4389635a-7b2c-9048-a000-09c76c140f4c\" \"reviews:9080\" \"10.244.0.12:9080\" outbound|9080||reviews.bookinfo.svc.cluster.local 10.244.0.13:48578 10.99.45.111:9080 10.244.0.13:39118 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:53:09.281", + "timestampUnix": 1708941189281, + "accessLog": { + "authority": "reviews:9080", + "bytes_received": "0", + "bytes_sent": "437", + "duration": "7", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "4389635a-7b2c-9048-a000-09c76c140f4c", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:53:09.281Z", + "upstream_service": "10.244.0.12:9080", + "upstream_service_time": "7", + "upstream_cluster": "outbound|9080||reviews.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:48578", + "downstream_local": "10.99.45.111:9080", + "downstream_remote": "10.244.0.13:39118", + "requested_server": "-", + "route_name": "default", + "uri_path": "/reviews/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:53:09.273Z] \"GET /productpage HTTP/1.1\" 200 - via_upstream - \"-\" 0 5289 16 16 \"10.244.0.1\" \"Go-http-client/1.1\" \"4389635a-7b2c-9048-a000-09c76c140f4c\" \"192.168.49.2:30876\" \"10.244.0.13:9080\" inbound|9080|| 127.0.0.6:56273 10.244.0.13:9080 10.244.0.1:0 outbound_.9080_._.productpage.bookinfo.svc.cluster.local default", + "severity": "INFO", + "timestamp": "2024-02-26 09:53:09.273", + "timestampUnix": 1708941189273, + "accessLog": { + "authority": "192.168.49.2:30876", + "bytes_received": "0", + "bytes_sent": "5289", + "duration": "16", + "forwarded_for": "10.244.0.1", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "4389635a-7b2c-9048-a000-09c76c140f4c", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:53:09.273Z", + "upstream_service": "10.244.0.13:9080", + "upstream_service_time": "16", + "upstream_cluster": "inbound|9080||", + "upstream_local": "127.0.0.6:56273", + "downstream_local": "10.244.0.13:9080", + "downstream_remote": "10.244.0.1:0", + "requested_server": "outbound_.9080_._.productpage.bookinfo.svc.cluster.local", + "route_name": "default", + "uri_path": "/productpage", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:53:10.277Z] \"GET /details/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 178 1 1 \"-\" \"Go-http-client/1.1\" \"0e5217e6-0788-9bba-b389-2df2c97cb759\" \"details:9080\" \"10.244.0.10:9080\" outbound|9080||details.bookinfo.svc.cluster.local 10.244.0.13:58492 10.109.148.19:9080 10.244.0.13:38250 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:53:10.277", + "timestampUnix": 1708941190277, + "accessLog": { + "authority": "details:9080", + "bytes_received": "0", + "bytes_sent": "178", + "duration": "1", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "0e5217e6-0788-9bba-b389-2df2c97cb759", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:53:10.277Z", + "upstream_service": "10.244.0.10:9080", + "upstream_service_time": "1", + "upstream_cluster": "outbound|9080||details.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:58492", + "downstream_local": "10.109.148.19:9080", + "downstream_remote": "10.244.0.13:38250", + "requested_server": "-", + "route_name": "default", + "uri_path": "/details/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:53:10.281Z] \"GET /reviews/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 437 7 6 \"-\" \"Go-http-client/1.1\" \"0e5217e6-0788-9bba-b389-2df2c97cb759\" \"reviews:9080\" \"10.244.0.12:9080\" outbound|9080||reviews.bookinfo.svc.cluster.local 10.244.0.13:48584 10.99.45.111:9080 10.244.0.13:39128 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:53:10.281", + "timestampUnix": 1708941190281, + "accessLog": { + "authority": "reviews:9080", + "bytes_received": "0", + "bytes_sent": "437", + "duration": "7", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "0e5217e6-0788-9bba-b389-2df2c97cb759", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:53:10.281Z", + "upstream_service": "10.244.0.12:9080", + "upstream_service_time": "6", + "upstream_cluster": "outbound|9080||reviews.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:48584", + "downstream_local": "10.99.45.111:9080", + "downstream_remote": "10.244.0.13:39128", + "requested_server": "-", + "route_name": "default", + "uri_path": "/reviews/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:53:10.273Z] \"GET /productpage HTTP/1.1\" 200 - via_upstream - \"-\" 0 5289 16 16 \"10.244.0.1\" \"Go-http-client/1.1\" \"0e5217e6-0788-9bba-b389-2df2c97cb759\" \"192.168.49.2:30876\" \"10.244.0.13:9080\" inbound|9080|| 127.0.0.6:51161 10.244.0.13:9080 10.244.0.1:0 outbound_.9080_._.productpage.bookinfo.svc.cluster.local default", + "severity": "INFO", + "timestamp": "2024-02-26 09:53:10.273", + "timestampUnix": 1708941190273, + "accessLog": { + "authority": "192.168.49.2:30876", + "bytes_received": "0", + "bytes_sent": "5289", + "duration": "16", + "forwarded_for": "10.244.0.1", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "0e5217e6-0788-9bba-b389-2df2c97cb759", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:53:10.273Z", + "upstream_service": "10.244.0.13:9080", + "upstream_service_time": "16", + "upstream_cluster": "inbound|9080||", + "upstream_local": "127.0.0.6:51161", + "downstream_local": "10.244.0.13:9080", + "downstream_remote": "10.244.0.1:0", + "requested_server": "outbound_.9080_._.productpage.bookinfo.svc.cluster.local", + "route_name": "default", + "uri_path": "/productpage", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:53:11.284Z] \"GET /details/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 178 4 3 \"-\" \"Go-http-client/1.1\" \"af08c1cb-352d-9e90-8847-5613f73e7830\" \"details:9080\" \"10.244.0.10:9080\" outbound|9080||details.bookinfo.svc.cluster.local 10.244.0.13:60722 10.109.148.19:9080 10.244.0.13:38262 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:53:11.284", + "timestampUnix": 1708941191284, + "accessLog": { + "authority": "details:9080", + "bytes_received": "0", + "bytes_sent": "178", + "duration": "4", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "af08c1cb-352d-9e90-8847-5613f73e7830", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:53:11.284Z", + "upstream_service": "10.244.0.10:9080", + "upstream_service_time": "3", + "upstream_cluster": "outbound|9080||details.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:60722", + "downstream_local": "10.109.148.19:9080", + "downstream_remote": "10.244.0.13:38262", + "requested_server": "-", + "route_name": "default", + "uri_path": "/details/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:53:11.292Z] \"GET /reviews/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 358 2 2 \"-\" \"Go-http-client/1.1\" \"af08c1cb-352d-9e90-8847-5613f73e7830\" \"reviews:9080\" \"10.244.0.14:9080\" outbound|9080||reviews.bookinfo.svc.cluster.local 10.244.0.13:34890 10.99.45.111:9080 10.244.0.13:39134 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:53:11.292", + "timestampUnix": 1708941191292, + "accessLog": { + "authority": "reviews:9080", + "bytes_received": "0", + "bytes_sent": "358", + "duration": "2", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "af08c1cb-352d-9e90-8847-5613f73e7830", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:53:11.292Z", + "upstream_service": "10.244.0.14:9080", + "upstream_service_time": "2", + "upstream_cluster": "outbound|9080||reviews.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:34890", + "downstream_local": "10.99.45.111:9080", + "downstream_remote": "10.244.0.13:39134", + "requested_server": "-", + "route_name": "default", + "uri_path": "/reviews/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:53:11.274Z] \"GET /productpage HTTP/1.1\" 200 - via_upstream - \"-\" 0 4294 22 21 \"10.244.0.1\" \"Go-http-client/1.1\" \"af08c1cb-352d-9e90-8847-5613f73e7830\" \"192.168.49.2:30876\" \"10.244.0.13:9080\" inbound|9080|| 127.0.0.6:37767 10.244.0.13:9080 10.244.0.1:0 outbound_.9080_._.productpage.bookinfo.svc.cluster.local default", + "severity": "INFO", + "timestamp": "2024-02-26 09:53:11.274", + "timestampUnix": 1708941191274, + "accessLog": { + "authority": "192.168.49.2:30876", + "bytes_received": "0", + "bytes_sent": "4294", + "duration": "22", + "forwarded_for": "10.244.0.1", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "af08c1cb-352d-9e90-8847-5613f73e7830", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:53:11.274Z", + "upstream_service": "10.244.0.13:9080", + "upstream_service_time": "21", + "upstream_cluster": "inbound|9080||", + "upstream_local": "127.0.0.6:37767", + "downstream_local": "10.244.0.13:9080", + "downstream_remote": "10.244.0.1:0", + "requested_server": "outbound_.9080_._.productpage.bookinfo.svc.cluster.local", + "route_name": "default", + "uri_path": "/productpage", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:53:12.277Z] \"GET /details/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 178 1 1 \"-\" \"Go-http-client/1.1\" \"3e662a27-c890-9a28-958c-0bb5ac8f1063\" \"details:9080\" \"10.244.0.10:9080\" outbound|9080||details.bookinfo.svc.cluster.local 10.244.0.13:60722 10.109.148.19:9080 10.244.0.13:38272 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:53:12.277", + "timestampUnix": 1708941192277, + "accessLog": { + "authority": "details:9080", + "bytes_received": "0", + "bytes_sent": "178", + "duration": "1", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "3e662a27-c890-9a28-958c-0bb5ac8f1063", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:53:12.277Z", + "upstream_service": "10.244.0.10:9080", + "upstream_service_time": "1", + "upstream_cluster": "outbound|9080||details.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:60722", + "downstream_local": "10.109.148.19:9080", + "downstream_remote": "10.244.0.13:38272", + "requested_server": "-", + "route_name": "default", + "uri_path": "/details/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:53:12.280Z] \"GET /reviews/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 358 2 2 \"-\" \"Go-http-client/1.1\" \"3e662a27-c890-9a28-958c-0bb5ac8f1063\" \"reviews:9080\" \"10.244.0.14:9080\" outbound|9080||reviews.bookinfo.svc.cluster.local 10.244.0.13:34890 10.99.45.111:9080 10.244.0.13:39140 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:53:12.28", + "timestampUnix": 1708941192280, + "accessLog": { + "authority": "reviews:9080", + "bytes_received": "0", + "bytes_sent": "358", + "duration": "2", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "3e662a27-c890-9a28-958c-0bb5ac8f1063", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:53:12.280Z", + "upstream_service": "10.244.0.14:9080", + "upstream_service_time": "2", + "upstream_cluster": "outbound|9080||reviews.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:34890", + "downstream_local": "10.99.45.111:9080", + "downstream_remote": "10.244.0.13:39140", + "requested_server": "-", + "route_name": "default", + "uri_path": "/reviews/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:53:12.273Z] \"GET /productpage HTTP/1.1\" 200 - via_upstream - \"-\" 0 4294 11 11 \"10.244.0.1\" \"Go-http-client/1.1\" \"3e662a27-c890-9a28-958c-0bb5ac8f1063\" \"192.168.49.2:30876\" \"10.244.0.13:9080\" inbound|9080|| 127.0.0.6:53589 10.244.0.13:9080 10.244.0.1:0 outbound_.9080_._.productpage.bookinfo.svc.cluster.local default", + "severity": "INFO", + "timestamp": "2024-02-26 09:53:12.273", + "timestampUnix": 1708941192273, + "accessLog": { + "authority": "192.168.49.2:30876", + "bytes_received": "0", + "bytes_sent": "4294", + "duration": "11", + "forwarded_for": "10.244.0.1", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "3e662a27-c890-9a28-958c-0bb5ac8f1063", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:53:12.273Z", + "upstream_service": "10.244.0.13:9080", + "upstream_service_time": "11", + "upstream_cluster": "inbound|9080||", + "upstream_local": "127.0.0.6:53589", + "downstream_local": "10.244.0.13:9080", + "downstream_remote": "10.244.0.1:0", + "requested_server": "outbound_.9080_._.productpage.bookinfo.svc.cluster.local", + "route_name": "default", + "uri_path": "/productpage", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:53:13.277Z] \"GET /details/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 178 1 1 \"-\" \"Go-http-client/1.1\" \"22ac3905-5281-91d6-bf4a-ef655443a323\" \"details:9080\" \"10.244.0.10:9080\" outbound|9080||details.bookinfo.svc.cluster.local 10.244.0.13:58492 10.109.148.19:9080 10.244.0.13:38284 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:53:13.277", + "timestampUnix": 1708941193277, + "accessLog": { + "authority": "details:9080", + "bytes_received": "0", + "bytes_sent": "178", + "duration": "1", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "22ac3905-5281-91d6-bf4a-ef655443a323", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:53:13.277Z", + "upstream_service": "10.244.0.10:9080", + "upstream_service_time": "1", + "upstream_cluster": "outbound|9080||details.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:58492", + "downstream_local": "10.109.148.19:9080", + "downstream_remote": "10.244.0.13:38284", + "requested_server": "-", + "route_name": "default", + "uri_path": "/details/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:53:13.281Z] \"GET /reviews/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 442 7 7 \"-\" \"Go-http-client/1.1\" \"22ac3905-5281-91d6-bf4a-ef655443a323\" \"reviews:9080\" \"10.244.0.15:9080\" outbound|9080||reviews.bookinfo.svc.cluster.local 10.244.0.13:32944 10.99.45.111:9080 10.244.0.13:39146 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:53:13.281", + "timestampUnix": 1708941193281, + "accessLog": { + "authority": "reviews:9080", + "bytes_received": "0", + "bytes_sent": "442", + "duration": "7", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "22ac3905-5281-91d6-bf4a-ef655443a323", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:53:13.281Z", + "upstream_service": "10.244.0.15:9080", + "upstream_service_time": "7", + "upstream_cluster": "outbound|9080||reviews.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:32944", + "downstream_local": "10.99.45.111:9080", + "downstream_remote": "10.244.0.13:39146", + "requested_server": "-", + "route_name": "default", + "uri_path": "/reviews/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:53:13.273Z] \"GET /productpage HTTP/1.1\" 200 - via_upstream - \"-\" 0 5294 18 18 \"10.244.0.1\" \"Go-http-client/1.1\" \"22ac3905-5281-91d6-bf4a-ef655443a323\" \"192.168.49.2:30876\" \"10.244.0.13:9080\" inbound|9080|| 127.0.0.6:55713 10.244.0.13:9080 10.244.0.1:0 outbound_.9080_._.productpage.bookinfo.svc.cluster.local default", + "severity": "INFO", + "timestamp": "2024-02-26 09:53:13.273", + "timestampUnix": 1708941193273, + "accessLog": { + "authority": "192.168.49.2:30876", + "bytes_received": "0", + "bytes_sent": "5294", + "duration": "18", + "forwarded_for": "10.244.0.1", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "22ac3905-5281-91d6-bf4a-ef655443a323", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:53:13.273Z", + "upstream_service": "10.244.0.13:9080", + "upstream_service_time": "18", + "upstream_cluster": "inbound|9080||", + "upstream_local": "127.0.0.6:55713", + "downstream_local": "10.244.0.13:9080", + "downstream_remote": "10.244.0.1:0", + "requested_server": "outbound_.9080_._.productpage.bookinfo.svc.cluster.local", + "route_name": "default", + "uri_path": "/productpage", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:53:14.276Z] \"GET /details/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 178 1 1 \"-\" \"Go-http-client/1.1\" \"00f2c1d5-c8ee-998b-856d-d65974488f9e\" \"details:9080\" \"10.244.0.10:9080\" outbound|9080||details.bookinfo.svc.cluster.local 10.244.0.13:58492 10.109.148.19:9080 10.244.0.13:38292 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:53:14.276", + "timestampUnix": 1708941194276, + "accessLog": { + "authority": "details:9080", + "bytes_received": "0", + "bytes_sent": "178", + "duration": "1", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "00f2c1d5-c8ee-998b-856d-d65974488f9e", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:53:14.276Z", + "upstream_service": "10.244.0.10:9080", + "upstream_service_time": "1", + "upstream_cluster": "outbound|9080||details.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:58492", + "downstream_local": "10.109.148.19:9080", + "downstream_remote": "10.244.0.13:38292", + "requested_server": "-", + "route_name": "default", + "uri_path": "/details/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:53:14.279Z] \"GET /reviews/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 358 2 2 \"-\" \"Go-http-client/1.1\" \"00f2c1d5-c8ee-998b-856d-d65974488f9e\" \"reviews:9080\" \"10.244.0.14:9080\" outbound|9080||reviews.bookinfo.svc.cluster.local 10.244.0.13:55880 10.99.45.111:9080 10.244.0.13:39156 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:53:14.279", + "timestampUnix": 1708941194279, + "accessLog": { + "authority": "reviews:9080", + "bytes_received": "0", + "bytes_sent": "358", + "duration": "2", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "00f2c1d5-c8ee-998b-856d-d65974488f9e", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:53:14.279Z", + "upstream_service": "10.244.0.14:9080", + "upstream_service_time": "2", + "upstream_cluster": "outbound|9080||reviews.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:55880", + "downstream_local": "10.99.45.111:9080", + "downstream_remote": "10.244.0.13:39156", + "requested_server": "-", + "route_name": "default", + "uri_path": "/reviews/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:53:14.273Z] \"GET /productpage HTTP/1.1\" 200 - via_upstream - \"-\" 0 4294 10 10 \"10.244.0.1\" \"Go-http-client/1.1\" \"00f2c1d5-c8ee-998b-856d-d65974488f9e\" \"192.168.49.2:30876\" \"10.244.0.13:9080\" inbound|9080|| 127.0.0.6:38311 10.244.0.13:9080 10.244.0.1:0 outbound_.9080_._.productpage.bookinfo.svc.cluster.local default", + "severity": "INFO", + "timestamp": "2024-02-26 09:53:14.273", + "timestampUnix": 1708941194273, + "accessLog": { + "authority": "192.168.49.2:30876", + "bytes_received": "0", + "bytes_sent": "4294", + "duration": "10", + "forwarded_for": "10.244.0.1", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "00f2c1d5-c8ee-998b-856d-d65974488f9e", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:53:14.273Z", + "upstream_service": "10.244.0.13:9080", + "upstream_service_time": "10", + "upstream_cluster": "inbound|9080||", + "upstream_local": "127.0.0.6:38311", + "downstream_local": "10.244.0.13:9080", + "downstream_remote": "10.244.0.1:0", + "requested_server": "outbound_.9080_._.productpage.bookinfo.svc.cluster.local", + "route_name": "default", + "uri_path": "/productpage", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:53:15.277Z] \"GET /details/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 178 1 1 \"-\" \"Go-http-client/1.1\" \"43f95c86-a5f3-924a-af84-513177d8dbc5\" \"details:9080\" \"10.244.0.10:9080\" outbound|9080||details.bookinfo.svc.cluster.local 10.244.0.13:60722 10.109.148.19:9080 10.244.0.13:38298 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:53:15.277", + "timestampUnix": 1708941195277, + "accessLog": { + "authority": "details:9080", + "bytes_received": "0", + "bytes_sent": "178", + "duration": "1", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "43f95c86-a5f3-924a-af84-513177d8dbc5", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:53:15.277Z", + "upstream_service": "10.244.0.10:9080", + "upstream_service_time": "1", + "upstream_cluster": "outbound|9080||details.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:60722", + "downstream_local": "10.109.148.19:9080", + "downstream_remote": "10.244.0.13:38298", + "requested_server": "-", + "route_name": "default", + "uri_path": "/details/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:53:15.280Z] \"GET /reviews/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 437 6 6 \"-\" \"Go-http-client/1.1\" \"43f95c86-a5f3-924a-af84-513177d8dbc5\" \"reviews:9080\" \"10.244.0.12:9080\" outbound|9080||reviews.bookinfo.svc.cluster.local 10.244.0.13:48584 10.99.45.111:9080 10.244.0.13:39158 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:53:15.28", + "timestampUnix": 1708941195280, + "accessLog": { + "authority": "reviews:9080", + "bytes_received": "0", + "bytes_sent": "437", + "duration": "6", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "43f95c86-a5f3-924a-af84-513177d8dbc5", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:53:15.280Z", + "upstream_service": "10.244.0.12:9080", + "upstream_service_time": "6", + "upstream_cluster": "outbound|9080||reviews.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:48584", + "downstream_local": "10.99.45.111:9080", + "downstream_remote": "10.244.0.13:39158", + "requested_server": "-", + "route_name": "default", + "uri_path": "/reviews/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:53:15.273Z] \"GET /productpage HTTP/1.1\" 200 - via_upstream - \"-\" 0 5289 15 15 \"10.244.0.1\" \"Go-http-client/1.1\" \"43f95c86-a5f3-924a-af84-513177d8dbc5\" \"192.168.49.2:30876\" \"10.244.0.13:9080\" inbound|9080|| 127.0.0.6:56609 10.244.0.13:9080 10.244.0.1:0 outbound_.9080_._.productpage.bookinfo.svc.cluster.local default", + "severity": "INFO", + "timestamp": "2024-02-26 09:53:15.273", + "timestampUnix": 1708941195273, + "accessLog": { + "authority": "192.168.49.2:30876", + "bytes_received": "0", + "bytes_sent": "5289", + "duration": "15", + "forwarded_for": "10.244.0.1", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "43f95c86-a5f3-924a-af84-513177d8dbc5", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:53:15.273Z", + "upstream_service": "10.244.0.13:9080", + "upstream_service_time": "15", + "upstream_cluster": "inbound|9080||", + "upstream_local": "127.0.0.6:56609", + "downstream_local": "10.244.0.13:9080", + "downstream_remote": "10.244.0.1:0", + "requested_server": "outbound_.9080_._.productpage.bookinfo.svc.cluster.local", + "route_name": "default", + "uri_path": "/productpage", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:53:16.277Z] \"GET /details/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 178 1 1 \"-\" \"Go-http-client/1.1\" \"26bb1d35-6237-9267-9f59-64a65a1dbd98\" \"details:9080\" \"10.244.0.10:9080\" outbound|9080||details.bookinfo.svc.cluster.local 10.244.0.13:58492 10.109.148.19:9080 10.244.0.13:38312 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:53:16.277", + "timestampUnix": 1708941196277, + "accessLog": { + "authority": "details:9080", + "bytes_received": "0", + "bytes_sent": "178", + "duration": "1", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "26bb1d35-6237-9267-9f59-64a65a1dbd98", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:53:16.277Z", + "upstream_service": "10.244.0.10:9080", + "upstream_service_time": "1", + "upstream_cluster": "outbound|9080||details.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:58492", + "downstream_local": "10.109.148.19:9080", + "downstream_remote": "10.244.0.13:38312", + "requested_server": "-", + "route_name": "default", + "uri_path": "/details/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:53:16.280Z] \"GET /reviews/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 358 2 2 \"-\" \"Go-http-client/1.1\" \"26bb1d35-6237-9267-9f59-64a65a1dbd98\" \"reviews:9080\" \"10.244.0.14:9080\" outbound|9080||reviews.bookinfo.svc.cluster.local 10.244.0.13:55880 10.99.45.111:9080 10.244.0.13:39160 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:53:16.28", + "timestampUnix": 1708941196280, + "accessLog": { + "authority": "reviews:9080", + "bytes_received": "0", + "bytes_sent": "358", + "duration": "2", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "26bb1d35-6237-9267-9f59-64a65a1dbd98", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:53:16.280Z", + "upstream_service": "10.244.0.14:9080", + "upstream_service_time": "2", + "upstream_cluster": "outbound|9080||reviews.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:55880", + "downstream_local": "10.99.45.111:9080", + "downstream_remote": "10.244.0.13:39160", + "requested_server": "-", + "route_name": "default", + "uri_path": "/reviews/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:53:16.273Z] \"GET /productpage HTTP/1.1\" 200 - via_upstream - \"-\" 0 4294 11 11 \"10.244.0.1\" \"Go-http-client/1.1\" \"26bb1d35-6237-9267-9f59-64a65a1dbd98\" \"192.168.49.2:30876\" \"10.244.0.13:9080\" inbound|9080|| 127.0.0.6:33597 10.244.0.13:9080 10.244.0.1:0 outbound_.9080_._.productpage.bookinfo.svc.cluster.local default", + "severity": "INFO", + "timestamp": "2024-02-26 09:53:16.273", + "timestampUnix": 1708941196273, + "accessLog": { + "authority": "192.168.49.2:30876", + "bytes_received": "0", + "bytes_sent": "4294", + "duration": "11", + "forwarded_for": "10.244.0.1", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "26bb1d35-6237-9267-9f59-64a65a1dbd98", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:53:16.273Z", + "upstream_service": "10.244.0.13:9080", + "upstream_service_time": "11", + "upstream_cluster": "inbound|9080||", + "upstream_local": "127.0.0.6:33597", + "downstream_local": "10.244.0.13:9080", + "downstream_remote": "10.244.0.1:0", + "requested_server": "outbound_.9080_._.productpage.bookinfo.svc.cluster.local", + "route_name": "default", + "uri_path": "/productpage", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:53:17.284Z] \"GET /details/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 178 1 1 \"-\" \"Go-http-client/1.1\" \"11dbdb20-da76-9460-a99b-c7af0376f646\" \"details:9080\" \"10.244.0.10:9080\" outbound|9080||details.bookinfo.svc.cluster.local 10.244.0.13:60722 10.109.148.19:9080 10.244.0.13:60230 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:53:17.284", + "timestampUnix": 1708941197284, + "accessLog": { + "authority": "details:9080", + "bytes_received": "0", + "bytes_sent": "178", + "duration": "1", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "11dbdb20-da76-9460-a99b-c7af0376f646", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:53:17.284Z", + "upstream_service": "10.244.0.10:9080", + "upstream_service_time": "1", + "upstream_cluster": "outbound|9080||details.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:60722", + "downstream_local": "10.109.148.19:9080", + "downstream_remote": "10.244.0.13:60230", + "requested_server": "-", + "route_name": "default", + "uri_path": "/details/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:53:17.289Z] \"GET /reviews/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 442 8 7 \"-\" \"Go-http-client/1.1\" \"11dbdb20-da76-9460-a99b-c7af0376f646\" \"reviews:9080\" \"10.244.0.15:9080\" outbound|9080||reviews.bookinfo.svc.cluster.local 10.244.0.13:50830 10.99.45.111:9080 10.244.0.13:46058 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:53:17.289", + "timestampUnix": 1708941197289, + "accessLog": { + "authority": "reviews:9080", + "bytes_received": "0", + "bytes_sent": "442", + "duration": "8", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "11dbdb20-da76-9460-a99b-c7af0376f646", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:53:17.289Z", + "upstream_service": "10.244.0.15:9080", + "upstream_service_time": "7", + "upstream_cluster": "outbound|9080||reviews.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:50830", + "downstream_local": "10.99.45.111:9080", + "downstream_remote": "10.244.0.13:46058", + "requested_server": "-", + "route_name": "default", + "uri_path": "/reviews/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:53:17.273Z] \"GET /productpage HTTP/1.1\" 200 - via_upstream - \"-\" 0 5294 25 24 \"10.244.0.1\" \"Go-http-client/1.1\" \"11dbdb20-da76-9460-a99b-c7af0376f646\" \"192.168.49.2:30876\" \"10.244.0.13:9080\" inbound|9080|| 127.0.0.6:48107 10.244.0.13:9080 10.244.0.1:0 outbound_.9080_._.productpage.bookinfo.svc.cluster.local default", + "severity": "INFO", + "timestamp": "2024-02-26 09:53:17.273", + "timestampUnix": 1708941197273, + "accessLog": { + "authority": "192.168.49.2:30876", + "bytes_received": "0", + "bytes_sent": "5294", + "duration": "25", + "forwarded_for": "10.244.0.1", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "11dbdb20-da76-9460-a99b-c7af0376f646", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:53:17.273Z", + "upstream_service": "10.244.0.13:9080", + "upstream_service_time": "24", + "upstream_cluster": "inbound|9080||", + "upstream_local": "127.0.0.6:48107", + "downstream_local": "10.244.0.13:9080", + "downstream_remote": "10.244.0.1:0", + "requested_server": "outbound_.9080_._.productpage.bookinfo.svc.cluster.local", + "route_name": "default", + "uri_path": "/productpage", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:53:18.277Z] \"GET /details/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 178 1 1 \"-\" \"Go-http-client/1.1\" \"7723ff2e-eb6f-9c09-828b-0cfbf8b68c66\" \"details:9080\" \"10.244.0.10:9080\" outbound|9080||details.bookinfo.svc.cluster.local 10.244.0.13:58492 10.109.148.19:9080 10.244.0.13:60232 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:53:18.277", + "timestampUnix": 1708941198277, + "accessLog": { + "authority": "details:9080", + "bytes_received": "0", + "bytes_sent": "178", + "duration": "1", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "7723ff2e-eb6f-9c09-828b-0cfbf8b68c66", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:53:18.277Z", + "upstream_service": "10.244.0.10:9080", + "upstream_service_time": "1", + "upstream_cluster": "outbound|9080||details.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:58492", + "downstream_local": "10.109.148.19:9080", + "downstream_remote": "10.244.0.13:60232", + "requested_server": "-", + "route_name": "default", + "uri_path": "/details/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:53:18.281Z] \"GET /reviews/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 358 2 2 \"-\" \"Go-http-client/1.1\" \"7723ff2e-eb6f-9c09-828b-0cfbf8b68c66\" \"reviews:9080\" \"10.244.0.14:9080\" outbound|9080||reviews.bookinfo.svc.cluster.local 10.244.0.13:34890 10.99.45.111:9080 10.244.0.13:46074 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:53:18.281", + "timestampUnix": 1708941198281, + "accessLog": { + "authority": "reviews:9080", + "bytes_received": "0", + "bytes_sent": "358", + "duration": "2", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "7723ff2e-eb6f-9c09-828b-0cfbf8b68c66", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:53:18.281Z", + "upstream_service": "10.244.0.14:9080", + "upstream_service_time": "2", + "upstream_cluster": "outbound|9080||reviews.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:34890", + "downstream_local": "10.99.45.111:9080", + "downstream_remote": "10.244.0.13:46074", + "requested_server": "-", + "route_name": "default", + "uri_path": "/reviews/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:53:18.273Z] \"GET /productpage HTTP/1.1\" 200 - via_upstream - \"-\" 0 4294 12 11 \"10.244.0.1\" \"Go-http-client/1.1\" \"7723ff2e-eb6f-9c09-828b-0cfbf8b68c66\" \"192.168.49.2:30876\" \"10.244.0.13:9080\" inbound|9080|| 127.0.0.6:40879 10.244.0.13:9080 10.244.0.1:0 outbound_.9080_._.productpage.bookinfo.svc.cluster.local default", + "severity": "INFO", + "timestamp": "2024-02-26 09:53:18.273", + "timestampUnix": 1708941198273, + "accessLog": { + "authority": "192.168.49.2:30876", + "bytes_received": "0", + "bytes_sent": "4294", + "duration": "12", + "forwarded_for": "10.244.0.1", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "7723ff2e-eb6f-9c09-828b-0cfbf8b68c66", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:53:18.273Z", + "upstream_service": "10.244.0.13:9080", + "upstream_service_time": "11", + "upstream_cluster": "inbound|9080||", + "upstream_local": "127.0.0.6:40879", + "downstream_local": "10.244.0.13:9080", + "downstream_remote": "10.244.0.1:0", + "requested_server": "outbound_.9080_._.productpage.bookinfo.svc.cluster.local", + "route_name": "default", + "uri_path": "/productpage", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:53:19.277Z] \"GET /details/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 178 1 1 \"-\" \"Go-http-client/1.1\" \"2a306c58-0a3a-98d0-8319-d4f124cc10e0\" \"details:9080\" \"10.244.0.10:9080\" outbound|9080||details.bookinfo.svc.cluster.local 10.244.0.13:60722 10.109.148.19:9080 10.244.0.13:60234 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:53:19.277", + "timestampUnix": 1708941199277, + "accessLog": { + "authority": "details:9080", + "bytes_received": "0", + "bytes_sent": "178", + "duration": "1", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "2a306c58-0a3a-98d0-8319-d4f124cc10e0", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:53:19.277Z", + "upstream_service": "10.244.0.10:9080", + "upstream_service_time": "1", + "upstream_cluster": "outbound|9080||details.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:60722", + "downstream_local": "10.109.148.19:9080", + "downstream_remote": "10.244.0.13:60234", + "requested_server": "-", + "route_name": "default", + "uri_path": "/details/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:53:19.281Z] \"GET /reviews/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 442 6 6 \"-\" \"Go-http-client/1.1\" \"2a306c58-0a3a-98d0-8319-d4f124cc10e0\" \"reviews:9080\" \"10.244.0.15:9080\" outbound|9080||reviews.bookinfo.svc.cluster.local 10.244.0.13:50830 10.99.45.111:9080 10.244.0.13:46078 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:53:19.281", + "timestampUnix": 1708941199281, + "accessLog": { + "authority": "reviews:9080", + "bytes_received": "0", + "bytes_sent": "442", + "duration": "6", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "2a306c58-0a3a-98d0-8319-d4f124cc10e0", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:53:19.281Z", + "upstream_service": "10.244.0.15:9080", + "upstream_service_time": "6", + "upstream_cluster": "outbound|9080||reviews.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:50830", + "downstream_local": "10.99.45.111:9080", + "downstream_remote": "10.244.0.13:46078", + "requested_server": "-", + "route_name": "default", + "uri_path": "/reviews/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:53:19.273Z] \"GET /productpage HTTP/1.1\" 200 - via_upstream - \"-\" 0 5294 15 15 \"10.244.0.1\" \"Go-http-client/1.1\" \"2a306c58-0a3a-98d0-8319-d4f124cc10e0\" \"192.168.49.2:30876\" \"10.244.0.13:9080\" inbound|9080|| 127.0.0.6:53127 10.244.0.13:9080 10.244.0.1:0 outbound_.9080_._.productpage.bookinfo.svc.cluster.local default", + "severity": "INFO", + "timestamp": "2024-02-26 09:53:19.273", + "timestampUnix": 1708941199273, + "accessLog": { + "authority": "192.168.49.2:30876", + "bytes_received": "0", + "bytes_sent": "5294", + "duration": "15", + "forwarded_for": "10.244.0.1", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "2a306c58-0a3a-98d0-8319-d4f124cc10e0", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:53:19.273Z", + "upstream_service": "10.244.0.13:9080", + "upstream_service_time": "15", + "upstream_cluster": "inbound|9080||", + "upstream_local": "127.0.0.6:53127", + "downstream_local": "10.244.0.13:9080", + "downstream_remote": "10.244.0.1:0", + "requested_server": "outbound_.9080_._.productpage.bookinfo.svc.cluster.local", + "route_name": "default", + "uri_path": "/productpage", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:53:20.276Z] \"GET /details/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 178 1 1 \"-\" \"Go-http-client/1.1\" \"35c20061-ed68-9928-a679-b466cd0aa7e1\" \"details:9080\" \"10.244.0.10:9080\" outbound|9080||details.bookinfo.svc.cluster.local 10.244.0.13:60722 10.109.148.19:9080 10.244.0.13:60242 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:53:20.276", + "timestampUnix": 1708941200276, + "accessLog": { + "authority": "details:9080", + "bytes_received": "0", + "bytes_sent": "178", + "duration": "1", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "35c20061-ed68-9928-a679-b466cd0aa7e1", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:53:20.276Z", + "upstream_service": "10.244.0.10:9080", + "upstream_service_time": "1", + "upstream_cluster": "outbound|9080||details.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:60722", + "downstream_local": "10.109.148.19:9080", + "downstream_remote": "10.244.0.13:60242", + "requested_server": "-", + "route_name": "default", + "uri_path": "/details/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:53:20.280Z] \"GET /reviews/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 437 6 6 \"-\" \"Go-http-client/1.1\" \"35c20061-ed68-9928-a679-b466cd0aa7e1\" \"reviews:9080\" \"10.244.0.12:9080\" outbound|9080||reviews.bookinfo.svc.cluster.local 10.244.0.13:48578 10.99.45.111:9080 10.244.0.13:46094 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:53:20.28", + "timestampUnix": 1708941200280, + "accessLog": { + "authority": "reviews:9080", + "bytes_received": "0", + "bytes_sent": "437", + "duration": "6", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "35c20061-ed68-9928-a679-b466cd0aa7e1", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:53:20.280Z", + "upstream_service": "10.244.0.12:9080", + "upstream_service_time": "6", + "upstream_cluster": "outbound|9080||reviews.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:48578", + "downstream_local": "10.99.45.111:9080", + "downstream_remote": "10.244.0.13:46094", + "requested_server": "-", + "route_name": "default", + "uri_path": "/reviews/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:53:20.273Z] \"GET /productpage HTTP/1.1\" 200 - via_upstream - \"-\" 0 5289 14 14 \"10.244.0.1\" \"Go-http-client/1.1\" \"35c20061-ed68-9928-a679-b466cd0aa7e1\" \"192.168.49.2:30876\" \"10.244.0.13:9080\" inbound|9080|| 127.0.0.6:44015 10.244.0.13:9080 10.244.0.1:0 outbound_.9080_._.productpage.bookinfo.svc.cluster.local default", + "severity": "INFO", + "timestamp": "2024-02-26 09:53:20.273", + "timestampUnix": 1708941200273, + "accessLog": { + "authority": "192.168.49.2:30876", + "bytes_received": "0", + "bytes_sent": "5289", + "duration": "14", + "forwarded_for": "10.244.0.1", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "35c20061-ed68-9928-a679-b466cd0aa7e1", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:53:20.273Z", + "upstream_service": "10.244.0.13:9080", + "upstream_service_time": "14", + "upstream_cluster": "inbound|9080||", + "upstream_local": "127.0.0.6:44015", + "downstream_local": "10.244.0.13:9080", + "downstream_remote": "10.244.0.1:0", + "requested_server": "outbound_.9080_._.productpage.bookinfo.svc.cluster.local", + "route_name": "default", + "uri_path": "/productpage", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:53:21.276Z] \"GET /details/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 178 1 0 \"-\" \"Go-http-client/1.1\" \"40146bc8-c01b-9ca9-b119-7b43f9c96014\" \"details:9080\" \"10.244.0.10:9080\" outbound|9080||details.bookinfo.svc.cluster.local 10.244.0.13:58492 10.109.148.19:9080 10.244.0.13:60248 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:53:21.276", + "timestampUnix": 1708941201276, + "accessLog": { + "authority": "details:9080", + "bytes_received": "0", + "bytes_sent": "178", + "duration": "1", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "40146bc8-c01b-9ca9-b119-7b43f9c96014", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:53:21.276Z", + "upstream_service": "10.244.0.10:9080", + "upstream_service_time": "0", + "upstream_cluster": "outbound|9080||details.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:58492", + "downstream_local": "10.109.148.19:9080", + "downstream_remote": "10.244.0.13:60248", + "requested_server": "-", + "route_name": "default", + "uri_path": "/details/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:53:21.280Z] \"GET /reviews/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 437 6 6 \"-\" \"Go-http-client/1.1\" \"40146bc8-c01b-9ca9-b119-7b43f9c96014\" \"reviews:9080\" \"10.244.0.12:9080\" outbound|9080||reviews.bookinfo.svc.cluster.local 10.244.0.13:48584 10.99.45.111:9080 10.244.0.13:46104 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:53:21.28", + "timestampUnix": 1708941201280, + "accessLog": { + "authority": "reviews:9080", + "bytes_received": "0", + "bytes_sent": "437", + "duration": "6", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "40146bc8-c01b-9ca9-b119-7b43f9c96014", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:53:21.280Z", + "upstream_service": "10.244.0.12:9080", + "upstream_service_time": "6", + "upstream_cluster": "outbound|9080||reviews.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:48584", + "downstream_local": "10.99.45.111:9080", + "downstream_remote": "10.244.0.13:46104", + "requested_server": "-", + "route_name": "default", + "uri_path": "/reviews/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:53:21.274Z] \"GET /productpage HTTP/1.1\" 200 - via_upstream - \"-\" 0 5289 14 13 \"10.244.0.1\" \"Go-http-client/1.1\" \"40146bc8-c01b-9ca9-b119-7b43f9c96014\" \"192.168.49.2:30876\" \"10.244.0.13:9080\" inbound|9080|| 127.0.0.6:35153 10.244.0.13:9080 10.244.0.1:0 outbound_.9080_._.productpage.bookinfo.svc.cluster.local default", + "severity": "INFO", + "timestamp": "2024-02-26 09:53:21.274", + "timestampUnix": 1708941201274, + "accessLog": { + "authority": "192.168.49.2:30876", + "bytes_received": "0", + "bytes_sent": "5289", + "duration": "14", + "forwarded_for": "10.244.0.1", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "40146bc8-c01b-9ca9-b119-7b43f9c96014", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:53:21.274Z", + "upstream_service": "10.244.0.13:9080", + "upstream_service_time": "13", + "upstream_cluster": "inbound|9080||", + "upstream_local": "127.0.0.6:35153", + "downstream_local": "10.244.0.13:9080", + "downstream_remote": "10.244.0.1:0", + "requested_server": "outbound_.9080_._.productpage.bookinfo.svc.cluster.local", + "route_name": "default", + "uri_path": "/productpage", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:53:22.285Z] \"GET /details/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 178 4 3 \"-\" \"Go-http-client/1.1\" \"287df2f7-1d24-99ff-a775-6754c57c8c6b\" \"details:9080\" \"10.244.0.10:9080\" outbound|9080||details.bookinfo.svc.cluster.local 10.244.0.13:60722 10.109.148.19:9080 10.244.0.13:60250 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:53:22.285", + "timestampUnix": 1708941202285, + "accessLog": { + "authority": "details:9080", + "bytes_received": "0", + "bytes_sent": "178", + "duration": "4", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "287df2f7-1d24-99ff-a775-6754c57c8c6b", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:53:22.285Z", + "upstream_service": "10.244.0.10:9080", + "upstream_service_time": "3", + "upstream_cluster": "outbound|9080||details.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:60722", + "downstream_local": "10.109.148.19:9080", + "downstream_remote": "10.244.0.13:60250", + "requested_server": "-", + "route_name": "default", + "uri_path": "/details/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:53:22.298Z] \"GET /reviews/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 358 6 5 \"-\" \"Go-http-client/1.1\" \"287df2f7-1d24-99ff-a775-6754c57c8c6b\" \"reviews:9080\" \"10.244.0.14:9080\" outbound|9080||reviews.bookinfo.svc.cluster.local 10.244.0.13:55880 10.99.45.111:9080 10.244.0.13:46114 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:53:22.298", + "timestampUnix": 1708941202298, + "accessLog": { + "authority": "reviews:9080", + "bytes_received": "0", + "bytes_sent": "358", + "duration": "6", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "287df2f7-1d24-99ff-a775-6754c57c8c6b", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:53:22.298Z", + "upstream_service": "10.244.0.14:9080", + "upstream_service_time": "5", + "upstream_cluster": "outbound|9080||reviews.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:55880", + "downstream_local": "10.99.45.111:9080", + "downstream_remote": "10.244.0.13:46114", + "requested_server": "-", + "route_name": "default", + "uri_path": "/reviews/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:53:22.274Z] \"GET /productpage HTTP/1.1\" 200 - via_upstream - \"-\" 0 4294 33 32 \"10.244.0.1\" \"Go-http-client/1.1\" \"287df2f7-1d24-99ff-a775-6754c57c8c6b\" \"192.168.49.2:30876\" \"10.244.0.13:9080\" inbound|9080|| 127.0.0.6:55911 10.244.0.13:9080 10.244.0.1:0 outbound_.9080_._.productpage.bookinfo.svc.cluster.local default", + "severity": "INFO", + "timestamp": "2024-02-26 09:53:22.274", + "timestampUnix": 1708941202274, + "accessLog": { + "authority": "192.168.49.2:30876", + "bytes_received": "0", + "bytes_sent": "4294", + "duration": "33", + "forwarded_for": "10.244.0.1", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "287df2f7-1d24-99ff-a775-6754c57c8c6b", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:53:22.274Z", + "upstream_service": "10.244.0.13:9080", + "upstream_service_time": "32", + "upstream_cluster": "inbound|9080||", + "upstream_local": "127.0.0.6:55911", + "downstream_local": "10.244.0.13:9080", + "downstream_remote": "10.244.0.1:0", + "requested_server": "outbound_.9080_._.productpage.bookinfo.svc.cluster.local", + "route_name": "default", + "uri_path": "/productpage", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:53:23.276Z] \"GET /details/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 178 1 1 \"-\" \"Go-http-client/1.1\" \"b540c058-9519-996e-9536-834e7ccbbd4e\" \"details:9080\" \"10.244.0.10:9080\" outbound|9080||details.bookinfo.svc.cluster.local 10.244.0.13:58492 10.109.148.19:9080 10.244.0.13:60252 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:53:23.276", + "timestampUnix": 1708941203276, + "accessLog": { + "authority": "details:9080", + "bytes_received": "0", + "bytes_sent": "178", + "duration": "1", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "b540c058-9519-996e-9536-834e7ccbbd4e", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:53:23.276Z", + "upstream_service": "10.244.0.10:9080", + "upstream_service_time": "1", + "upstream_cluster": "outbound|9080||details.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:58492", + "downstream_local": "10.109.148.19:9080", + "downstream_remote": "10.244.0.13:60252", + "requested_server": "-", + "route_name": "default", + "uri_path": "/details/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:53:23.280Z] \"GET /reviews/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 358 2 2 \"-\" \"Go-http-client/1.1\" \"b540c058-9519-996e-9536-834e7ccbbd4e\" \"reviews:9080\" \"10.244.0.14:9080\" outbound|9080||reviews.bookinfo.svc.cluster.local 10.244.0.13:55880 10.99.45.111:9080 10.244.0.13:46116 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:53:23.28", + "timestampUnix": 1708941203280, + "accessLog": { + "authority": "reviews:9080", + "bytes_received": "0", + "bytes_sent": "358", + "duration": "2", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "b540c058-9519-996e-9536-834e7ccbbd4e", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:53:23.280Z", + "upstream_service": "10.244.0.14:9080", + "upstream_service_time": "2", + "upstream_cluster": "outbound|9080||reviews.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:55880", + "downstream_local": "10.99.45.111:9080", + "downstream_remote": "10.244.0.13:46116", + "requested_server": "-", + "route_name": "default", + "uri_path": "/reviews/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:53:23.273Z] \"GET /productpage HTTP/1.1\" 200 - via_upstream - \"-\" 0 4294 10 10 \"10.244.0.1\" \"Go-http-client/1.1\" \"b540c058-9519-996e-9536-834e7ccbbd4e\" \"192.168.49.2:30876\" \"10.244.0.13:9080\" inbound|9080|| 127.0.0.6:42933 10.244.0.13:9080 10.244.0.1:0 outbound_.9080_._.productpage.bookinfo.svc.cluster.local default", + "severity": "INFO", + "timestamp": "2024-02-26 09:53:23.273", + "timestampUnix": 1708941203273, + "accessLog": { + "authority": "192.168.49.2:30876", + "bytes_received": "0", + "bytes_sent": "4294", + "duration": "10", + "forwarded_for": "10.244.0.1", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "b540c058-9519-996e-9536-834e7ccbbd4e", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:53:23.273Z", + "upstream_service": "10.244.0.13:9080", + "upstream_service_time": "10", + "upstream_cluster": "inbound|9080||", + "upstream_local": "127.0.0.6:42933", + "downstream_local": "10.244.0.13:9080", + "downstream_remote": "10.244.0.1:0", + "requested_server": "outbound_.9080_._.productpage.bookinfo.svc.cluster.local", + "route_name": "default", + "uri_path": "/productpage", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:53:24.276Z] \"GET /details/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 178 1 1 \"-\" \"Go-http-client/1.1\" \"d14e30b9-0e28-93c9-86f9-3a9275655b8d\" \"details:9080\" \"10.244.0.10:9080\" outbound|9080||details.bookinfo.svc.cluster.local 10.244.0.13:58492 10.109.148.19:9080 10.244.0.13:60254 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:53:24.276", + "timestampUnix": 1708941204276, + "accessLog": { + "authority": "details:9080", + "bytes_received": "0", + "bytes_sent": "178", + "duration": "1", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "d14e30b9-0e28-93c9-86f9-3a9275655b8d", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:53:24.276Z", + "upstream_service": "10.244.0.10:9080", + "upstream_service_time": "1", + "upstream_cluster": "outbound|9080||details.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:58492", + "downstream_local": "10.109.148.19:9080", + "downstream_remote": "10.244.0.13:60254", + "requested_server": "-", + "route_name": "default", + "uri_path": "/details/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:53:24.280Z] \"GET /reviews/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 442 6 6 \"-\" \"Go-http-client/1.1\" \"d14e30b9-0e28-93c9-86f9-3a9275655b8d\" \"reviews:9080\" \"10.244.0.15:9080\" outbound|9080||reviews.bookinfo.svc.cluster.local 10.244.0.13:32944 10.99.45.111:9080 10.244.0.13:46122 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:53:24.28", + "timestampUnix": 1708941204280, + "accessLog": { + "authority": "reviews:9080", + "bytes_received": "0", + "bytes_sent": "442", + "duration": "6", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "d14e30b9-0e28-93c9-86f9-3a9275655b8d", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:53:24.280Z", + "upstream_service": "10.244.0.15:9080", + "upstream_service_time": "6", + "upstream_cluster": "outbound|9080||reviews.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:32944", + "downstream_local": "10.99.45.111:9080", + "downstream_remote": "10.244.0.13:46122", + "requested_server": "-", + "route_name": "default", + "uri_path": "/reviews/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:53:24.273Z] \"GET /productpage HTTP/1.1\" 200 - via_upstream - \"-\" 0 5294 14 14 \"10.244.0.1\" \"Go-http-client/1.1\" \"d14e30b9-0e28-93c9-86f9-3a9275655b8d\" \"192.168.49.2:30876\" \"10.244.0.13:9080\" inbound|9080|| 127.0.0.6:49341 10.244.0.13:9080 10.244.0.1:0 outbound_.9080_._.productpage.bookinfo.svc.cluster.local default", + "severity": "INFO", + "timestamp": "2024-02-26 09:53:24.273", + "timestampUnix": 1708941204273, + "accessLog": { + "authority": "192.168.49.2:30876", + "bytes_received": "0", + "bytes_sent": "5294", + "duration": "14", + "forwarded_for": "10.244.0.1", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "d14e30b9-0e28-93c9-86f9-3a9275655b8d", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:53:24.273Z", + "upstream_service": "10.244.0.13:9080", + "upstream_service_time": "14", + "upstream_cluster": "inbound|9080||", + "upstream_local": "127.0.0.6:49341", + "downstream_local": "10.244.0.13:9080", + "downstream_remote": "10.244.0.1:0", + "requested_server": "outbound_.9080_._.productpage.bookinfo.svc.cluster.local", + "route_name": "default", + "uri_path": "/productpage", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:53:25.276Z] \"GET /details/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 178 1 1 \"-\" \"Go-http-client/1.1\" \"f9c1158e-40e8-9ad8-99e5-c8dfd5c9541e\" \"details:9080\" \"10.244.0.10:9080\" outbound|9080||details.bookinfo.svc.cluster.local 10.244.0.13:58492 10.109.148.19:9080 10.244.0.13:60256 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:53:25.276", + "timestampUnix": 1708941205276, + "accessLog": { + "authority": "details:9080", + "bytes_received": "0", + "bytes_sent": "178", + "duration": "1", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "f9c1158e-40e8-9ad8-99e5-c8dfd5c9541e", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:53:25.276Z", + "upstream_service": "10.244.0.10:9080", + "upstream_service_time": "1", + "upstream_cluster": "outbound|9080||details.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:58492", + "downstream_local": "10.109.148.19:9080", + "downstream_remote": "10.244.0.13:60256", + "requested_server": "-", + "route_name": "default", + "uri_path": "/details/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:53:25.281Z] \"GET /reviews/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 437 8 8 \"-\" \"Go-http-client/1.1\" \"f9c1158e-40e8-9ad8-99e5-c8dfd5c9541e\" \"reviews:9080\" \"10.244.0.12:9080\" outbound|9080||reviews.bookinfo.svc.cluster.local 10.244.0.13:48584 10.99.45.111:9080 10.244.0.13:46134 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:53:25.281", + "timestampUnix": 1708941205281, + "accessLog": { + "authority": "reviews:9080", + "bytes_received": "0", + "bytes_sent": "437", + "duration": "8", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "f9c1158e-40e8-9ad8-99e5-c8dfd5c9541e", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:53:25.281Z", + "upstream_service": "10.244.0.12:9080", + "upstream_service_time": "8", + "upstream_cluster": "outbound|9080||reviews.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:48584", + "downstream_local": "10.99.45.111:9080", + "downstream_remote": "10.244.0.13:46134", + "requested_server": "-", + "route_name": "default", + "uri_path": "/reviews/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:53:25.273Z] \"GET /productpage HTTP/1.1\" 200 - via_upstream - \"-\" 0 5289 18 17 \"10.244.0.1\" \"Go-http-client/1.1\" \"f9c1158e-40e8-9ad8-99e5-c8dfd5c9541e\" \"192.168.49.2:30876\" \"10.244.0.13:9080\" inbound|9080|| 127.0.0.6:53913 10.244.0.13:9080 10.244.0.1:0 outbound_.9080_._.productpage.bookinfo.svc.cluster.local default", + "severity": "INFO", + "timestamp": "2024-02-26 09:53:25.273", + "timestampUnix": 1708941205273, + "accessLog": { + "authority": "192.168.49.2:30876", + "bytes_received": "0", + "bytes_sent": "5289", + "duration": "18", + "forwarded_for": "10.244.0.1", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "f9c1158e-40e8-9ad8-99e5-c8dfd5c9541e", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:53:25.273Z", + "upstream_service": "10.244.0.13:9080", + "upstream_service_time": "17", + "upstream_cluster": "inbound|9080||", + "upstream_local": "127.0.0.6:53913", + "downstream_local": "10.244.0.13:9080", + "downstream_remote": "10.244.0.1:0", + "requested_server": "outbound_.9080_._.productpage.bookinfo.svc.cluster.local", + "route_name": "default", + "uri_path": "/productpage", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:53:26.285Z] \"GET /details/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 178 4 3 \"-\" \"Go-http-client/1.1\" \"62479e79-06d0-9fe9-805d-a98787d7108b\" \"details:9080\" \"10.244.0.10:9080\" outbound|9080||details.bookinfo.svc.cluster.local 10.244.0.13:60722 10.109.148.19:9080 10.244.0.13:60268 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:53:26.285", + "timestampUnix": 1708941206285, + "accessLog": { + "authority": "details:9080", + "bytes_received": "0", + "bytes_sent": "178", + "duration": "4", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "62479e79-06d0-9fe9-805d-a98787d7108b", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:53:26.285Z", + "upstream_service": "10.244.0.10:9080", + "upstream_service_time": "3", + "upstream_cluster": "outbound|9080||details.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:60722", + "downstream_local": "10.109.148.19:9080", + "downstream_remote": "10.244.0.13:60268", + "requested_server": "-", + "route_name": "default", + "uri_path": "/details/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:53:26.293Z] \"GET /reviews/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 358 3 3 \"-\" \"Go-http-client/1.1\" \"62479e79-06d0-9fe9-805d-a98787d7108b\" \"reviews:9080\" \"10.244.0.14:9080\" outbound|9080||reviews.bookinfo.svc.cluster.local 10.244.0.13:55880 10.99.45.111:9080 10.244.0.13:46146 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:53:26.293", + "timestampUnix": 1708941206293, + "accessLog": { + "authority": "reviews:9080", + "bytes_received": "0", + "bytes_sent": "358", + "duration": "3", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "62479e79-06d0-9fe9-805d-a98787d7108b", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:53:26.293Z", + "upstream_service": "10.244.0.14:9080", + "upstream_service_time": "3", + "upstream_cluster": "outbound|9080||reviews.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:55880", + "downstream_local": "10.99.45.111:9080", + "downstream_remote": "10.244.0.13:46146", + "requested_server": "-", + "route_name": "default", + "uri_path": "/reviews/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:53:26.274Z] \"GET /productpage HTTP/1.1\" 200 - via_upstream - \"-\" 0 4294 24 23 \"10.244.0.1\" \"Go-http-client/1.1\" \"62479e79-06d0-9fe9-805d-a98787d7108b\" \"192.168.49.2:30876\" \"10.244.0.13:9080\" inbound|9080|| 127.0.0.6:56453 10.244.0.13:9080 10.244.0.1:0 outbound_.9080_._.productpage.bookinfo.svc.cluster.local default", + "severity": "INFO", + "timestamp": "2024-02-26 09:53:26.274", + "timestampUnix": 1708941206274, + "accessLog": { + "authority": "192.168.49.2:30876", + "bytes_received": "0", + "bytes_sent": "4294", + "duration": "24", + "forwarded_for": "10.244.0.1", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "62479e79-06d0-9fe9-805d-a98787d7108b", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:53:26.274Z", + "upstream_service": "10.244.0.13:9080", + "upstream_service_time": "23", + "upstream_cluster": "inbound|9080||", + "upstream_local": "127.0.0.6:56453", + "downstream_local": "10.244.0.13:9080", + "downstream_remote": "10.244.0.1:0", + "requested_server": "outbound_.9080_._.productpage.bookinfo.svc.cluster.local", + "route_name": "default", + "uri_path": "/productpage", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:53:27.276Z] \"GET /details/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 178 1 1 \"-\" \"Go-http-client/1.1\" \"900def43-544e-983d-af08-a79de3f7a3de\" \"details:9080\" \"10.244.0.10:9080\" outbound|9080||details.bookinfo.svc.cluster.local 10.244.0.13:58492 10.109.148.19:9080 10.244.0.13:50696 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:53:27.276", + "timestampUnix": 1708941207276, + "accessLog": { + "authority": "details:9080", + "bytes_received": "0", + "bytes_sent": "178", + "duration": "1", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "900def43-544e-983d-af08-a79de3f7a3de", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:53:27.276Z", + "upstream_service": "10.244.0.10:9080", + "upstream_service_time": "1", + "upstream_cluster": "outbound|9080||details.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:58492", + "downstream_local": "10.109.148.19:9080", + "downstream_remote": "10.244.0.13:50696", + "requested_server": "-", + "route_name": "default", + "uri_path": "/details/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:53:27.279Z] \"GET /reviews/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 358 2 2 \"-\" \"Go-http-client/1.1\" \"900def43-544e-983d-af08-a79de3f7a3de\" \"reviews:9080\" \"10.244.0.14:9080\" outbound|9080||reviews.bookinfo.svc.cluster.local 10.244.0.13:55880 10.99.45.111:9080 10.244.0.13:50934 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:53:27.279", + "timestampUnix": 1708941207279, + "accessLog": { + "authority": "reviews:9080", + "bytes_received": "0", + "bytes_sent": "358", + "duration": "2", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "900def43-544e-983d-af08-a79de3f7a3de", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:53:27.279Z", + "upstream_service": "10.244.0.14:9080", + "upstream_service_time": "2", + "upstream_cluster": "outbound|9080||reviews.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:55880", + "downstream_local": "10.99.45.111:9080", + "downstream_remote": "10.244.0.13:50934", + "requested_server": "-", + "route_name": "default", + "uri_path": "/reviews/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:53:27.273Z] \"GET /productpage HTTP/1.1\" 200 - via_upstream - \"-\" 0 4294 10 9 \"10.244.0.1\" \"Go-http-client/1.1\" \"900def43-544e-983d-af08-a79de3f7a3de\" \"192.168.49.2:30876\" \"10.244.0.13:9080\" inbound|9080|| 127.0.0.6:38797 10.244.0.13:9080 10.244.0.1:0 outbound_.9080_._.productpage.bookinfo.svc.cluster.local default", + "severity": "INFO", + "timestamp": "2024-02-26 09:53:27.273", + "timestampUnix": 1708941207273, + "accessLog": { + "authority": "192.168.49.2:30876", + "bytes_received": "0", + "bytes_sent": "4294", + "duration": "10", + "forwarded_for": "10.244.0.1", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "900def43-544e-983d-af08-a79de3f7a3de", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:53:27.273Z", + "upstream_service": "10.244.0.13:9080", + "upstream_service_time": "9", + "upstream_cluster": "inbound|9080||", + "upstream_local": "127.0.0.6:38797", + "downstream_local": "10.244.0.13:9080", + "downstream_remote": "10.244.0.1:0", + "requested_server": "outbound_.9080_._.productpage.bookinfo.svc.cluster.local", + "route_name": "default", + "uri_path": "/productpage", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:53:28.276Z] \"GET /details/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 178 1 1 \"-\" \"Go-http-client/1.1\" \"f5412b74-2e69-9eb1-afc6-fb738a104045\" \"details:9080\" \"10.244.0.10:9080\" outbound|9080||details.bookinfo.svc.cluster.local 10.244.0.13:60722 10.109.148.19:9080 10.244.0.13:50706 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:53:28.276", + "timestampUnix": 1708941208276, + "accessLog": { + "authority": "details:9080", + "bytes_received": "0", + "bytes_sent": "178", + "duration": "1", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "f5412b74-2e69-9eb1-afc6-fb738a104045", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:53:28.276Z", + "upstream_service": "10.244.0.10:9080", + "upstream_service_time": "1", + "upstream_cluster": "outbound|9080||details.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:60722", + "downstream_local": "10.109.148.19:9080", + "downstream_remote": "10.244.0.13:50706", + "requested_server": "-", + "route_name": "default", + "uri_path": "/details/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:53:28.280Z] \"GET /reviews/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 437 6 5 \"-\" \"Go-http-client/1.1\" \"f5412b74-2e69-9eb1-afc6-fb738a104045\" \"reviews:9080\" \"10.244.0.12:9080\" outbound|9080||reviews.bookinfo.svc.cluster.local 10.244.0.13:48578 10.99.45.111:9080 10.244.0.13:50936 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:53:28.28", + "timestampUnix": 1708941208280, + "accessLog": { + "authority": "reviews:9080", + "bytes_received": "0", + "bytes_sent": "437", + "duration": "6", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "f5412b74-2e69-9eb1-afc6-fb738a104045", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:53:28.280Z", + "upstream_service": "10.244.0.12:9080", + "upstream_service_time": "5", + "upstream_cluster": "outbound|9080||reviews.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:48578", + "downstream_local": "10.99.45.111:9080", + "downstream_remote": "10.244.0.13:50936", + "requested_server": "-", + "route_name": "default", + "uri_path": "/reviews/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:53:28.273Z] \"GET /productpage HTTP/1.1\" 200 - via_upstream - \"-\" 0 5289 14 14 \"10.244.0.1\" \"Go-http-client/1.1\" \"f5412b74-2e69-9eb1-afc6-fb738a104045\" \"192.168.49.2:30876\" \"10.244.0.13:9080\" inbound|9080|| 127.0.0.6:44211 10.244.0.13:9080 10.244.0.1:0 outbound_.9080_._.productpage.bookinfo.svc.cluster.local default", + "severity": "INFO", + "timestamp": "2024-02-26 09:53:28.273", + "timestampUnix": 1708941208273, + "accessLog": { + "authority": "192.168.49.2:30876", + "bytes_received": "0", + "bytes_sent": "5289", + "duration": "14", + "forwarded_for": "10.244.0.1", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "f5412b74-2e69-9eb1-afc6-fb738a104045", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:53:28.273Z", + "upstream_service": "10.244.0.13:9080", + "upstream_service_time": "14", + "upstream_cluster": "inbound|9080||", + "upstream_local": "127.0.0.6:44211", + "downstream_local": "10.244.0.13:9080", + "downstream_remote": "10.244.0.1:0", + "requested_server": "outbound_.9080_._.productpage.bookinfo.svc.cluster.local", + "route_name": "default", + "uri_path": "/productpage", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:53:29.276Z] \"GET /details/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 178 1 1 \"-\" \"Go-http-client/1.1\" \"50b9aa86-0a21-9aab-b404-27de8eb66287\" \"details:9080\" \"10.244.0.10:9080\" outbound|9080||details.bookinfo.svc.cluster.local 10.244.0.13:60722 10.109.148.19:9080 10.244.0.13:50710 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:53:29.276", + "timestampUnix": 1708941209276, + "accessLog": { + "authority": "details:9080", + "bytes_received": "0", + "bytes_sent": "178", + "duration": "1", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "50b9aa86-0a21-9aab-b404-27de8eb66287", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:53:29.276Z", + "upstream_service": "10.244.0.10:9080", + "upstream_service_time": "1", + "upstream_cluster": "outbound|9080||details.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:60722", + "downstream_local": "10.109.148.19:9080", + "downstream_remote": "10.244.0.13:50710", + "requested_server": "-", + "route_name": "default", + "uri_path": "/details/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:53:29.280Z] \"GET /reviews/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 442 6 6 \"-\" \"Go-http-client/1.1\" \"50b9aa86-0a21-9aab-b404-27de8eb66287\" \"reviews:9080\" \"10.244.0.15:9080\" outbound|9080||reviews.bookinfo.svc.cluster.local 10.244.0.13:50830 10.99.45.111:9080 10.244.0.13:50944 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:53:29.28", + "timestampUnix": 1708941209280, + "accessLog": { + "authority": "reviews:9080", + "bytes_received": "0", + "bytes_sent": "442", + "duration": "6", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "50b9aa86-0a21-9aab-b404-27de8eb66287", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:53:29.280Z", + "upstream_service": "10.244.0.15:9080", + "upstream_service_time": "6", + "upstream_cluster": "outbound|9080||reviews.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:50830", + "downstream_local": "10.99.45.111:9080", + "downstream_remote": "10.244.0.13:50944", + "requested_server": "-", + "route_name": "default", + "uri_path": "/reviews/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:53:29.273Z] \"GET /productpage HTTP/1.1\" 200 - via_upstream - \"-\" 0 5294 14 13 \"10.244.0.1\" \"Go-http-client/1.1\" \"50b9aa86-0a21-9aab-b404-27de8eb66287\" \"192.168.49.2:30876\" \"10.244.0.13:9080\" inbound|9080|| 127.0.0.6:53307 10.244.0.13:9080 10.244.0.1:0 outbound_.9080_._.productpage.bookinfo.svc.cluster.local default", + "severity": "INFO", + "timestamp": "2024-02-26 09:53:29.273", + "timestampUnix": 1708941209273, + "accessLog": { + "authority": "192.168.49.2:30876", + "bytes_received": "0", + "bytes_sent": "5294", + "duration": "14", + "forwarded_for": "10.244.0.1", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "50b9aa86-0a21-9aab-b404-27de8eb66287", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:53:29.273Z", + "upstream_service": "10.244.0.13:9080", + "upstream_service_time": "13", + "upstream_cluster": "inbound|9080||", + "upstream_local": "127.0.0.6:53307", + "downstream_local": "10.244.0.13:9080", + "downstream_remote": "10.244.0.1:0", + "requested_server": "outbound_.9080_._.productpage.bookinfo.svc.cluster.local", + "route_name": "default", + "uri_path": "/productpage", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:53:30.276Z] \"GET /details/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 178 1 1 \"-\" \"Go-http-client/1.1\" \"353627b4-a80f-93d1-9f99-7d4bd9fcb20e\" \"details:9080\" \"10.244.0.10:9080\" outbound|9080||details.bookinfo.svc.cluster.local 10.244.0.13:58492 10.109.148.19:9080 10.244.0.13:50724 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:53:30.276", + "timestampUnix": 1708941210276, + "accessLog": { + "authority": "details:9080", + "bytes_received": "0", + "bytes_sent": "178", + "duration": "1", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "353627b4-a80f-93d1-9f99-7d4bd9fcb20e", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:53:30.276Z", + "upstream_service": "10.244.0.10:9080", + "upstream_service_time": "1", + "upstream_cluster": "outbound|9080||details.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:58492", + "downstream_local": "10.109.148.19:9080", + "downstream_remote": "10.244.0.13:50724", + "requested_server": "-", + "route_name": "default", + "uri_path": "/details/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:53:30.280Z] \"GET /reviews/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 358 2 2 \"-\" \"Go-http-client/1.1\" \"353627b4-a80f-93d1-9f99-7d4bd9fcb20e\" \"reviews:9080\" \"10.244.0.14:9080\" outbound|9080||reviews.bookinfo.svc.cluster.local 10.244.0.13:34890 10.99.45.111:9080 10.244.0.13:50956 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:53:30.28", + "timestampUnix": 1708941210280, + "accessLog": { + "authority": "reviews:9080", + "bytes_received": "0", + "bytes_sent": "358", + "duration": "2", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "353627b4-a80f-93d1-9f99-7d4bd9fcb20e", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:53:30.280Z", + "upstream_service": "10.244.0.14:9080", + "upstream_service_time": "2", + "upstream_cluster": "outbound|9080||reviews.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:34890", + "downstream_local": "10.99.45.111:9080", + "downstream_remote": "10.244.0.13:50956", + "requested_server": "-", + "route_name": "default", + "uri_path": "/reviews/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:53:30.273Z] \"GET /productpage HTTP/1.1\" 200 - via_upstream - \"-\" 0 4294 11 10 \"10.244.0.1\" \"Go-http-client/1.1\" \"353627b4-a80f-93d1-9f99-7d4bd9fcb20e\" \"192.168.49.2:30876\" \"10.244.0.13:9080\" inbound|9080|| 127.0.0.6:39209 10.244.0.13:9080 10.244.0.1:0 outbound_.9080_._.productpage.bookinfo.svc.cluster.local default", + "severity": "INFO", + "timestamp": "2024-02-26 09:53:30.273", + "timestampUnix": 1708941210273, + "accessLog": { + "authority": "192.168.49.2:30876", + "bytes_received": "0", + "bytes_sent": "4294", + "duration": "11", + "forwarded_for": "10.244.0.1", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "353627b4-a80f-93d1-9f99-7d4bd9fcb20e", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:53:30.273Z", + "upstream_service": "10.244.0.13:9080", + "upstream_service_time": "10", + "upstream_cluster": "inbound|9080||", + "upstream_local": "127.0.0.6:39209", + "downstream_local": "10.244.0.13:9080", + "downstream_remote": "10.244.0.1:0", + "requested_server": "outbound_.9080_._.productpage.bookinfo.svc.cluster.local", + "route_name": "default", + "uri_path": "/productpage", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:53:31.276Z] \"GET /details/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 178 1 1 \"-\" \"Go-http-client/1.1\" \"847ee4a0-8e21-91cb-ba14-a23c88f75496\" \"details:9080\" \"10.244.0.10:9080\" outbound|9080||details.bookinfo.svc.cluster.local 10.244.0.13:60722 10.109.148.19:9080 10.244.0.13:50736 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:53:31.276", + "timestampUnix": 1708941211276, + "accessLog": { + "authority": "details:9080", + "bytes_received": "0", + "bytes_sent": "178", + "duration": "1", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "847ee4a0-8e21-91cb-ba14-a23c88f75496", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:53:31.276Z", + "upstream_service": "10.244.0.10:9080", + "upstream_service_time": "1", + "upstream_cluster": "outbound|9080||details.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:60722", + "downstream_local": "10.109.148.19:9080", + "downstream_remote": "10.244.0.13:50736", + "requested_server": "-", + "route_name": "default", + "uri_path": "/details/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:53:31.280Z] \"GET /reviews/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 437 5 5 \"-\" \"Go-http-client/1.1\" \"847ee4a0-8e21-91cb-ba14-a23c88f75496\" \"reviews:9080\" \"10.244.0.12:9080\" outbound|9080||reviews.bookinfo.svc.cluster.local 10.244.0.13:48584 10.99.45.111:9080 10.244.0.13:50958 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:53:31.28", + "timestampUnix": 1708941211280, + "accessLog": { + "authority": "reviews:9080", + "bytes_received": "0", + "bytes_sent": "437", + "duration": "5", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "847ee4a0-8e21-91cb-ba14-a23c88f75496", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:53:31.280Z", + "upstream_service": "10.244.0.12:9080", + "upstream_service_time": "5", + "upstream_cluster": "outbound|9080||reviews.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:48584", + "downstream_local": "10.99.45.111:9080", + "downstream_remote": "10.244.0.13:50958", + "requested_server": "-", + "route_name": "default", + "uri_path": "/reviews/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:53:31.273Z] \"GET /productpage HTTP/1.1\" 200 - via_upstream - \"-\" 0 5289 13 13 \"10.244.0.1\" \"Go-http-client/1.1\" \"847ee4a0-8e21-91cb-ba14-a23c88f75496\" \"192.168.49.2:30876\" \"10.244.0.13:9080\" inbound|9080|| 127.0.0.6:37951 10.244.0.13:9080 10.244.0.1:0 outbound_.9080_._.productpage.bookinfo.svc.cluster.local default", + "severity": "INFO", + "timestamp": "2024-02-26 09:53:31.273", + "timestampUnix": 1708941211273, + "accessLog": { + "authority": "192.168.49.2:30876", + "bytes_received": "0", + "bytes_sent": "5289", + "duration": "13", + "forwarded_for": "10.244.0.1", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "847ee4a0-8e21-91cb-ba14-a23c88f75496", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:53:31.273Z", + "upstream_service": "10.244.0.13:9080", + "upstream_service_time": "13", + "upstream_cluster": "inbound|9080||", + "upstream_local": "127.0.0.6:37951", + "downstream_local": "10.244.0.13:9080", + "downstream_remote": "10.244.0.1:0", + "requested_server": "outbound_.9080_._.productpage.bookinfo.svc.cluster.local", + "route_name": "default", + "uri_path": "/productpage", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:53:32.276Z] \"GET /details/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 178 1 1 \"-\" \"Go-http-client/1.1\" \"69f04fa5-ce5b-920e-bb89-fa78a69d618e\" \"details:9080\" \"10.244.0.10:9080\" outbound|9080||details.bookinfo.svc.cluster.local 10.244.0.13:60722 10.109.148.19:9080 10.244.0.13:50748 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:53:32.276", + "timestampUnix": 1708941212276, + "accessLog": { + "authority": "details:9080", + "bytes_received": "0", + "bytes_sent": "178", + "duration": "1", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "69f04fa5-ce5b-920e-bb89-fa78a69d618e", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:53:32.276Z", + "upstream_service": "10.244.0.10:9080", + "upstream_service_time": "1", + "upstream_cluster": "outbound|9080||details.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:60722", + "downstream_local": "10.109.148.19:9080", + "downstream_remote": "10.244.0.13:50748", + "requested_server": "-", + "route_name": "default", + "uri_path": "/details/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:53:32.280Z] \"GET /reviews/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 442 6 6 \"-\" \"Go-http-client/1.1\" \"69f04fa5-ce5b-920e-bb89-fa78a69d618e\" \"reviews:9080\" \"10.244.0.15:9080\" outbound|9080||reviews.bookinfo.svc.cluster.local 10.244.0.13:32944 10.99.45.111:9080 10.244.0.13:50968 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:53:32.28", + "timestampUnix": 1708941212280, + "accessLog": { + "authority": "reviews:9080", + "bytes_received": "0", + "bytes_sent": "442", + "duration": "6", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "69f04fa5-ce5b-920e-bb89-fa78a69d618e", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:53:32.280Z", + "upstream_service": "10.244.0.15:9080", + "upstream_service_time": "6", + "upstream_cluster": "outbound|9080||reviews.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:32944", + "downstream_local": "10.99.45.111:9080", + "downstream_remote": "10.244.0.13:50968", + "requested_server": "-", + "route_name": "default", + "uri_path": "/reviews/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:53:32.273Z] \"GET /productpage HTTP/1.1\" 200 - via_upstream - \"-\" 0 5294 15 14 \"10.244.0.1\" \"Go-http-client/1.1\" \"69f04fa5-ce5b-920e-bb89-fa78a69d618e\" \"192.168.49.2:30876\" \"10.244.0.13:9080\" inbound|9080|| 127.0.0.6:46601 10.244.0.13:9080 10.244.0.1:0 outbound_.9080_._.productpage.bookinfo.svc.cluster.local default", + "severity": "INFO", + "timestamp": "2024-02-26 09:53:32.273", + "timestampUnix": 1708941212273, + "accessLog": { + "authority": "192.168.49.2:30876", + "bytes_received": "0", + "bytes_sent": "5294", + "duration": "15", + "forwarded_for": "10.244.0.1", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "69f04fa5-ce5b-920e-bb89-fa78a69d618e", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:53:32.273Z", + "upstream_service": "10.244.0.13:9080", + "upstream_service_time": "14", + "upstream_cluster": "inbound|9080||", + "upstream_local": "127.0.0.6:46601", + "downstream_local": "10.244.0.13:9080", + "downstream_remote": "10.244.0.1:0", + "requested_server": "outbound_.9080_._.productpage.bookinfo.svc.cluster.local", + "route_name": "default", + "uri_path": "/productpage", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:53:33.276Z] \"GET /details/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 178 1 1 \"-\" \"Go-http-client/1.1\" \"4efe4b58-4c0e-94f4-b10e-a93e526c97d7\" \"details:9080\" \"10.244.0.10:9080\" outbound|9080||details.bookinfo.svc.cluster.local 10.244.0.13:60722 10.109.148.19:9080 10.244.0.13:50752 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:53:33.276", + "timestampUnix": 1708941213276, + "accessLog": { + "authority": "details:9080", + "bytes_received": "0", + "bytes_sent": "178", + "duration": "1", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "4efe4b58-4c0e-94f4-b10e-a93e526c97d7", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:53:33.276Z", + "upstream_service": "10.244.0.10:9080", + "upstream_service_time": "1", + "upstream_cluster": "outbound|9080||details.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:60722", + "downstream_local": "10.109.148.19:9080", + "downstream_remote": "10.244.0.13:50752", + "requested_server": "-", + "route_name": "default", + "uri_path": "/details/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:53:33.281Z] \"GET /reviews/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 442 6 6 \"-\" \"Go-http-client/1.1\" \"4efe4b58-4c0e-94f4-b10e-a93e526c97d7\" \"reviews:9080\" \"10.244.0.15:9080\" outbound|9080||reviews.bookinfo.svc.cluster.local 10.244.0.13:50830 10.99.45.111:9080 10.244.0.13:50982 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:53:33.281", + "timestampUnix": 1708941213281, + "accessLog": { + "authority": "reviews:9080", + "bytes_received": "0", + "bytes_sent": "442", + "duration": "6", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "4efe4b58-4c0e-94f4-b10e-a93e526c97d7", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:53:33.281Z", + "upstream_service": "10.244.0.15:9080", + "upstream_service_time": "6", + "upstream_cluster": "outbound|9080||reviews.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:50830", + "downstream_local": "10.99.45.111:9080", + "downstream_remote": "10.244.0.13:50982", + "requested_server": "-", + "route_name": "default", + "uri_path": "/reviews/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:53:33.273Z] \"GET /productpage HTTP/1.1\" 200 - via_upstream - \"-\" 0 5294 15 15 \"10.244.0.1\" \"Go-http-client/1.1\" \"4efe4b58-4c0e-94f4-b10e-a93e526c97d7\" \"192.168.49.2:30876\" \"10.244.0.13:9080\" inbound|9080|| 127.0.0.6:60037 10.244.0.13:9080 10.244.0.1:0 outbound_.9080_._.productpage.bookinfo.svc.cluster.local default", + "severity": "INFO", + "timestamp": "2024-02-26 09:53:33.273", + "timestampUnix": 1708941213273, + "accessLog": { + "authority": "192.168.49.2:30876", + "bytes_received": "0", + "bytes_sent": "5294", + "duration": "15", + "forwarded_for": "10.244.0.1", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "4efe4b58-4c0e-94f4-b10e-a93e526c97d7", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:53:33.273Z", + "upstream_service": "10.244.0.13:9080", + "upstream_service_time": "15", + "upstream_cluster": "inbound|9080||", + "upstream_local": "127.0.0.6:60037", + "downstream_local": "10.244.0.13:9080", + "downstream_remote": "10.244.0.1:0", + "requested_server": "outbound_.9080_._.productpage.bookinfo.svc.cluster.local", + "route_name": "default", + "uri_path": "/productpage", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:53:34.276Z] \"GET /details/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 178 1 1 \"-\" \"Go-http-client/1.1\" \"2f640aea-994a-9aff-b9f3-fb6f96bfcadb\" \"details:9080\" \"10.244.0.10:9080\" outbound|9080||details.bookinfo.svc.cluster.local 10.244.0.13:60722 10.109.148.19:9080 10.244.0.13:50766 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:53:34.276", + "timestampUnix": 1708941214276, + "accessLog": { + "authority": "details:9080", + "bytes_received": "0", + "bytes_sent": "178", + "duration": "1", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "2f640aea-994a-9aff-b9f3-fb6f96bfcadb", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:53:34.276Z", + "upstream_service": "10.244.0.10:9080", + "upstream_service_time": "1", + "upstream_cluster": "outbound|9080||details.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:60722", + "downstream_local": "10.109.148.19:9080", + "downstream_remote": "10.244.0.13:50766", + "requested_server": "-", + "route_name": "default", + "uri_path": "/details/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:53:34.280Z] \"GET /reviews/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 442 6 6 \"-\" \"Go-http-client/1.1\" \"2f640aea-994a-9aff-b9f3-fb6f96bfcadb\" \"reviews:9080\" \"10.244.0.15:9080\" outbound|9080||reviews.bookinfo.svc.cluster.local 10.244.0.13:32944 10.99.45.111:9080 10.244.0.13:50998 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:53:34.28", + "timestampUnix": 1708941214280, + "accessLog": { + "authority": "reviews:9080", + "bytes_received": "0", + "bytes_sent": "442", + "duration": "6", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "2f640aea-994a-9aff-b9f3-fb6f96bfcadb", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:53:34.280Z", + "upstream_service": "10.244.0.15:9080", + "upstream_service_time": "6", + "upstream_cluster": "outbound|9080||reviews.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:32944", + "downstream_local": "10.99.45.111:9080", + "downstream_remote": "10.244.0.13:50998", + "requested_server": "-", + "route_name": "default", + "uri_path": "/reviews/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:53:34.273Z] \"GET /productpage HTTP/1.1\" 200 - via_upstream - \"-\" 0 5294 14 14 \"10.244.0.1\" \"Go-http-client/1.1\" \"2f640aea-994a-9aff-b9f3-fb6f96bfcadb\" \"192.168.49.2:30876\" \"10.244.0.13:9080\" inbound|9080|| 127.0.0.6:54949 10.244.0.13:9080 10.244.0.1:0 outbound_.9080_._.productpage.bookinfo.svc.cluster.local default", + "severity": "INFO", + "timestamp": "2024-02-26 09:53:34.273", + "timestampUnix": 1708941214273, + "accessLog": { + "authority": "192.168.49.2:30876", + "bytes_received": "0", + "bytes_sent": "5294", + "duration": "14", + "forwarded_for": "10.244.0.1", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "2f640aea-994a-9aff-b9f3-fb6f96bfcadb", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:53:34.273Z", + "upstream_service": "10.244.0.13:9080", + "upstream_service_time": "14", + "upstream_cluster": "inbound|9080||", + "upstream_local": "127.0.0.6:54949", + "downstream_local": "10.244.0.13:9080", + "downstream_remote": "10.244.0.1:0", + "requested_server": "outbound_.9080_._.productpage.bookinfo.svc.cluster.local", + "route_name": "default", + "uri_path": "/productpage", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:53:35.285Z] \"GET /details/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 178 3 3 \"-\" \"Go-http-client/1.1\" \"84b35dc0-2ddc-9f0c-bfd5-f3736c665ff3\" \"details:9080\" \"10.244.0.10:9080\" outbound|9080||details.bookinfo.svc.cluster.local 10.244.0.13:58492 10.109.148.19:9080 10.244.0.13:50774 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:53:35.285", + "timestampUnix": 1708941215285, + "accessLog": { + "authority": "details:9080", + "bytes_received": "0", + "bytes_sent": "178", + "duration": "3", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "84b35dc0-2ddc-9f0c-bfd5-f3736c665ff3", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:53:35.285Z", + "upstream_service": "10.244.0.10:9080", + "upstream_service_time": "3", + "upstream_cluster": "outbound|9080||details.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:58492", + "downstream_local": "10.109.148.19:9080", + "downstream_remote": "10.244.0.13:50774", + "requested_server": "-", + "route_name": "default", + "uri_path": "/details/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:53:35.297Z] \"GET /reviews/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 358 9 9 \"-\" \"Go-http-client/1.1\" \"84b35dc0-2ddc-9f0c-bfd5-f3736c665ff3\" \"reviews:9080\" \"10.244.0.14:9080\" outbound|9080||reviews.bookinfo.svc.cluster.local 10.244.0.13:55880 10.99.45.111:9080 10.244.0.13:51014 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:53:35.297", + "timestampUnix": 1708941215297, + "accessLog": { + "authority": "reviews:9080", + "bytes_received": "0", + "bytes_sent": "358", + "duration": "9", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "84b35dc0-2ddc-9f0c-bfd5-f3736c665ff3", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:53:35.297Z", + "upstream_service": "10.244.0.14:9080", + "upstream_service_time": "9", + "upstream_cluster": "outbound|9080||reviews.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:55880", + "downstream_local": "10.99.45.111:9080", + "downstream_remote": "10.244.0.13:51014", + "requested_server": "-", + "route_name": "default", + "uri_path": "/reviews/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:53:35.274Z] \"GET /productpage HTTP/1.1\" 200 - via_upstream - \"-\" 0 4294 38 37 \"10.244.0.1\" \"Go-http-client/1.1\" \"84b35dc0-2ddc-9f0c-bfd5-f3736c665ff3\" \"192.168.49.2:30876\" \"10.244.0.13:9080\" inbound|9080|| 127.0.0.6:40149 10.244.0.13:9080 10.244.0.1:0 outbound_.9080_._.productpage.bookinfo.svc.cluster.local default", + "severity": "INFO", + "timestamp": "2024-02-26 09:53:35.274", + "timestampUnix": 1708941215274, + "accessLog": { + "authority": "192.168.49.2:30876", + "bytes_received": "0", + "bytes_sent": "4294", + "duration": "38", + "forwarded_for": "10.244.0.1", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "84b35dc0-2ddc-9f0c-bfd5-f3736c665ff3", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:53:35.274Z", + "upstream_service": "10.244.0.13:9080", + "upstream_service_time": "37", + "upstream_cluster": "inbound|9080||", + "upstream_local": "127.0.0.6:40149", + "downstream_local": "10.244.0.13:9080", + "downstream_remote": "10.244.0.1:0", + "requested_server": "outbound_.9080_._.productpage.bookinfo.svc.cluster.local", + "route_name": "default", + "uri_path": "/productpage", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:53:36.276Z] \"GET /details/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 178 1 1 \"-\" \"Go-http-client/1.1\" \"6071e448-79c6-947c-828a-a29900847571\" \"details:9080\" \"10.244.0.10:9080\" outbound|9080||details.bookinfo.svc.cluster.local 10.244.0.13:60722 10.109.148.19:9080 10.244.0.13:50780 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:53:36.276", + "timestampUnix": 1708941216276, + "accessLog": { + "authority": "details:9080", + "bytes_received": "0", + "bytes_sent": "178", + "duration": "1", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "6071e448-79c6-947c-828a-a29900847571", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:53:36.276Z", + "upstream_service": "10.244.0.10:9080", + "upstream_service_time": "1", + "upstream_cluster": "outbound|9080||details.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:60722", + "downstream_local": "10.109.148.19:9080", + "downstream_remote": "10.244.0.13:50780", + "requested_server": "-", + "route_name": "default", + "uri_path": "/details/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:53:36.280Z] \"GET /reviews/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 437 6 6 \"-\" \"Go-http-client/1.1\" \"6071e448-79c6-947c-828a-a29900847571\" \"reviews:9080\" \"10.244.0.12:9080\" outbound|9080||reviews.bookinfo.svc.cluster.local 10.244.0.13:48584 10.99.45.111:9080 10.244.0.13:51022 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:53:36.28", + "timestampUnix": 1708941216280, + "accessLog": { + "authority": "reviews:9080", + "bytes_received": "0", + "bytes_sent": "437", + "duration": "6", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "6071e448-79c6-947c-828a-a29900847571", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:53:36.280Z", + "upstream_service": "10.244.0.12:9080", + "upstream_service_time": "6", + "upstream_cluster": "outbound|9080||reviews.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:48584", + "downstream_local": "10.99.45.111:9080", + "downstream_remote": "10.244.0.13:51022", + "requested_server": "-", + "route_name": "default", + "uri_path": "/reviews/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:53:36.273Z] \"GET /productpage HTTP/1.1\" 200 - via_upstream - \"-\" 0 5289 14 14 \"10.244.0.1\" \"Go-http-client/1.1\" \"6071e448-79c6-947c-828a-a29900847571\" \"192.168.49.2:30876\" \"10.244.0.13:9080\" inbound|9080|| 127.0.0.6:52429 10.244.0.13:9080 10.244.0.1:0 outbound_.9080_._.productpage.bookinfo.svc.cluster.local default", + "severity": "INFO", + "timestamp": "2024-02-26 09:53:36.273", + "timestampUnix": 1708941216273, + "accessLog": { + "authority": "192.168.49.2:30876", + "bytes_received": "0", + "bytes_sent": "5289", + "duration": "14", + "forwarded_for": "10.244.0.1", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "6071e448-79c6-947c-828a-a29900847571", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:53:36.273Z", + "upstream_service": "10.244.0.13:9080", + "upstream_service_time": "14", + "upstream_cluster": "inbound|9080||", + "upstream_local": "127.0.0.6:52429", + "downstream_local": "10.244.0.13:9080", + "downstream_remote": "10.244.0.1:0", + "requested_server": "outbound_.9080_._.productpage.bookinfo.svc.cluster.local", + "route_name": "default", + "uri_path": "/productpage", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:53:37.276Z] \"GET /details/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 178 1 1 \"-\" \"Go-http-client/1.1\" \"171ec3f1-0c5f-9a23-b4c0-b04bc5cee805\" \"details:9080\" \"10.244.0.10:9080\" outbound|9080||details.bookinfo.svc.cluster.local 10.244.0.13:58492 10.109.148.19:9080 10.244.0.13:49818 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:53:37.276", + "timestampUnix": 1708941217276, + "accessLog": { + "authority": "details:9080", + "bytes_received": "0", + "bytes_sent": "178", + "duration": "1", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "171ec3f1-0c5f-9a23-b4c0-b04bc5cee805", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:53:37.276Z", + "upstream_service": "10.244.0.10:9080", + "upstream_service_time": "1", + "upstream_cluster": "outbound|9080||details.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:58492", + "downstream_local": "10.109.148.19:9080", + "downstream_remote": "10.244.0.13:49818", + "requested_server": "-", + "route_name": "default", + "uri_path": "/details/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:53:37.280Z] \"GET /reviews/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 442 6 6 \"-\" \"Go-http-client/1.1\" \"171ec3f1-0c5f-9a23-b4c0-b04bc5cee805\" \"reviews:9080\" \"10.244.0.15:9080\" outbound|9080||reviews.bookinfo.svc.cluster.local 10.244.0.13:32944 10.99.45.111:9080 10.244.0.13:49032 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:53:37.28", + "timestampUnix": 1708941217280, + "accessLog": { + "authority": "reviews:9080", + "bytes_received": "0", + "bytes_sent": "442", + "duration": "6", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "171ec3f1-0c5f-9a23-b4c0-b04bc5cee805", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:53:37.280Z", + "upstream_service": "10.244.0.15:9080", + "upstream_service_time": "6", + "upstream_cluster": "outbound|9080||reviews.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:32944", + "downstream_local": "10.99.45.111:9080", + "downstream_remote": "10.244.0.13:49032", + "requested_server": "-", + "route_name": "default", + "uri_path": "/reviews/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:53:37.273Z] \"GET /productpage HTTP/1.1\" 200 - via_upstream - \"-\" 0 5294 14 13 \"10.244.0.1\" \"Go-http-client/1.1\" \"171ec3f1-0c5f-9a23-b4c0-b04bc5cee805\" \"192.168.49.2:30876\" \"10.244.0.13:9080\" inbound|9080|| 127.0.0.6:56911 10.244.0.13:9080 10.244.0.1:0 outbound_.9080_._.productpage.bookinfo.svc.cluster.local default", + "severity": "INFO", + "timestamp": "2024-02-26 09:53:37.273", + "timestampUnix": 1708941217273, + "accessLog": { + "authority": "192.168.49.2:30876", + "bytes_received": "0", + "bytes_sent": "5294", + "duration": "14", + "forwarded_for": "10.244.0.1", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "171ec3f1-0c5f-9a23-b4c0-b04bc5cee805", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:53:37.273Z", + "upstream_service": "10.244.0.13:9080", + "upstream_service_time": "13", + "upstream_cluster": "inbound|9080||", + "upstream_local": "127.0.0.6:56911", + "downstream_local": "10.244.0.13:9080", + "downstream_remote": "10.244.0.1:0", + "requested_server": "outbound_.9080_._.productpage.bookinfo.svc.cluster.local", + "route_name": "default", + "uri_path": "/productpage", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:53:38.277Z] \"GET /details/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 178 1 1 \"-\" \"Go-http-client/1.1\" \"08c44da1-24f3-98fc-ab21-49dccbd56457\" \"details:9080\" \"10.244.0.10:9080\" outbound|9080||details.bookinfo.svc.cluster.local 10.244.0.13:58492 10.109.148.19:9080 10.244.0.13:49822 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:53:38.277", + "timestampUnix": 1708941218277, + "accessLog": { + "authority": "details:9080", + "bytes_received": "0", + "bytes_sent": "178", + "duration": "1", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "08c44da1-24f3-98fc-ab21-49dccbd56457", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:53:38.277Z", + "upstream_service": "10.244.0.10:9080", + "upstream_service_time": "1", + "upstream_cluster": "outbound|9080||details.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:58492", + "downstream_local": "10.109.148.19:9080", + "downstream_remote": "10.244.0.13:49822", + "requested_server": "-", + "route_name": "default", + "uri_path": "/details/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:53:38.280Z] \"GET /reviews/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 442 6 6 \"-\" \"Go-http-client/1.1\" \"08c44da1-24f3-98fc-ab21-49dccbd56457\" \"reviews:9080\" \"10.244.0.15:9080\" outbound|9080||reviews.bookinfo.svc.cluster.local 10.244.0.13:50830 10.99.45.111:9080 10.244.0.13:49034 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:53:38.28", + "timestampUnix": 1708941218280, + "accessLog": { + "authority": "reviews:9080", + "bytes_received": "0", + "bytes_sent": "442", + "duration": "6", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "08c44da1-24f3-98fc-ab21-49dccbd56457", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:53:38.280Z", + "upstream_service": "10.244.0.15:9080", + "upstream_service_time": "6", + "upstream_cluster": "outbound|9080||reviews.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:50830", + "downstream_local": "10.99.45.111:9080", + "downstream_remote": "10.244.0.13:49034", + "requested_server": "-", + "route_name": "default", + "uri_path": "/reviews/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:53:38.273Z] \"GET /productpage HTTP/1.1\" 200 - via_upstream - \"-\" 0 5294 15 14 \"10.244.0.1\" \"Go-http-client/1.1\" \"08c44da1-24f3-98fc-ab21-49dccbd56457\" \"192.168.49.2:30876\" \"10.244.0.13:9080\" inbound|9080|| 127.0.0.6:53383 10.244.0.13:9080 10.244.0.1:0 outbound_.9080_._.productpage.bookinfo.svc.cluster.local default", + "severity": "INFO", + "timestamp": "2024-02-26 09:53:38.273", + "timestampUnix": 1708941218273, + "accessLog": { + "authority": "192.168.49.2:30876", + "bytes_received": "0", + "bytes_sent": "5294", + "duration": "15", + "forwarded_for": "10.244.0.1", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "08c44da1-24f3-98fc-ab21-49dccbd56457", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:53:38.273Z", + "upstream_service": "10.244.0.13:9080", + "upstream_service_time": "14", + "upstream_cluster": "inbound|9080||", + "upstream_local": "127.0.0.6:53383", + "downstream_local": "10.244.0.13:9080", + "downstream_remote": "10.244.0.1:0", + "requested_server": "outbound_.9080_._.productpage.bookinfo.svc.cluster.local", + "route_name": "default", + "uri_path": "/productpage", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:53:39.276Z] \"GET /details/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 178 1 1 \"-\" \"Go-http-client/1.1\" \"4eef8285-47da-9251-bbe2-6dae2047b0cc\" \"details:9080\" \"10.244.0.10:9080\" outbound|9080||details.bookinfo.svc.cluster.local 10.244.0.13:58492 10.109.148.19:9080 10.244.0.13:49836 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:53:39.276", + "timestampUnix": 1708941219276, + "accessLog": { + "authority": "details:9080", + "bytes_received": "0", + "bytes_sent": "178", + "duration": "1", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "4eef8285-47da-9251-bbe2-6dae2047b0cc", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:53:39.276Z", + "upstream_service": "10.244.0.10:9080", + "upstream_service_time": "1", + "upstream_cluster": "outbound|9080||details.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:58492", + "downstream_local": "10.109.148.19:9080", + "downstream_remote": "10.244.0.13:49836", + "requested_server": "-", + "route_name": "default", + "uri_path": "/details/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:53:39.280Z] \"GET /reviews/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 358 2 2 \"-\" \"Go-http-client/1.1\" \"4eef8285-47da-9251-bbe2-6dae2047b0cc\" \"reviews:9080\" \"10.244.0.14:9080\" outbound|9080||reviews.bookinfo.svc.cluster.local 10.244.0.13:34890 10.99.45.111:9080 10.244.0.13:49048 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:53:39.28", + "timestampUnix": 1708941219280, + "accessLog": { + "authority": "reviews:9080", + "bytes_received": "0", + "bytes_sent": "358", + "duration": "2", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "4eef8285-47da-9251-bbe2-6dae2047b0cc", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:53:39.280Z", + "upstream_service": "10.244.0.14:9080", + "upstream_service_time": "2", + "upstream_cluster": "outbound|9080||reviews.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:34890", + "downstream_local": "10.99.45.111:9080", + "downstream_remote": "10.244.0.13:49048", + "requested_server": "-", + "route_name": "default", + "uri_path": "/reviews/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:53:39.273Z] \"GET /productpage HTTP/1.1\" 200 - via_upstream - \"-\" 0 4294 10 9 \"10.244.0.1\" \"Go-http-client/1.1\" \"4eef8285-47da-9251-bbe2-6dae2047b0cc\" \"192.168.49.2:30876\" \"10.244.0.13:9080\" inbound|9080|| 127.0.0.6:38081 10.244.0.13:9080 10.244.0.1:0 outbound_.9080_._.productpage.bookinfo.svc.cluster.local default", + "severity": "INFO", + "timestamp": "2024-02-26 09:53:39.273", + "timestampUnix": 1708941219273, + "accessLog": { + "authority": "192.168.49.2:30876", + "bytes_received": "0", + "bytes_sent": "4294", + "duration": "10", + "forwarded_for": "10.244.0.1", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "4eef8285-47da-9251-bbe2-6dae2047b0cc", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:53:39.273Z", + "upstream_service": "10.244.0.13:9080", + "upstream_service_time": "9", + "upstream_cluster": "inbound|9080||", + "upstream_local": "127.0.0.6:38081", + "downstream_local": "10.244.0.13:9080", + "downstream_remote": "10.244.0.1:0", + "requested_server": "outbound_.9080_._.productpage.bookinfo.svc.cluster.local", + "route_name": "default", + "uri_path": "/productpage", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:53:40.276Z] \"GET /details/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 178 1 1 \"-\" \"Go-http-client/1.1\" \"b7af2316-049e-96b1-81d3-2b4bbae8f885\" \"details:9080\" \"10.244.0.10:9080\" outbound|9080||details.bookinfo.svc.cluster.local 10.244.0.13:58492 10.109.148.19:9080 10.244.0.13:49846 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:53:40.276", + "timestampUnix": 1708941220276, + "accessLog": { + "authority": "details:9080", + "bytes_received": "0", + "bytes_sent": "178", + "duration": "1", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "b7af2316-049e-96b1-81d3-2b4bbae8f885", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:53:40.276Z", + "upstream_service": "10.244.0.10:9080", + "upstream_service_time": "1", + "upstream_cluster": "outbound|9080||details.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:58492", + "downstream_local": "10.109.148.19:9080", + "downstream_remote": "10.244.0.13:49846", + "requested_server": "-", + "route_name": "default", + "uri_path": "/details/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:53:40.280Z] \"GET /reviews/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 358 2 1 \"-\" \"Go-http-client/1.1\" \"b7af2316-049e-96b1-81d3-2b4bbae8f885\" \"reviews:9080\" \"10.244.0.14:9080\" outbound|9080||reviews.bookinfo.svc.cluster.local 10.244.0.13:34890 10.99.45.111:9080 10.244.0.13:49058 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:53:40.28", + "timestampUnix": 1708941220280, + "accessLog": { + "authority": "reviews:9080", + "bytes_received": "0", + "bytes_sent": "358", + "duration": "2", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "b7af2316-049e-96b1-81d3-2b4bbae8f885", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:53:40.280Z", + "upstream_service": "10.244.0.14:9080", + "upstream_service_time": "1", + "upstream_cluster": "outbound|9080||reviews.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:34890", + "downstream_local": "10.99.45.111:9080", + "downstream_remote": "10.244.0.13:49058", + "requested_server": "-", + "route_name": "default", + "uri_path": "/reviews/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:53:40.273Z] \"GET /productpage HTTP/1.1\" 200 - via_upstream - \"-\" 0 4294 10 10 \"10.244.0.1\" \"Go-http-client/1.1\" \"b7af2316-049e-96b1-81d3-2b4bbae8f885\" \"192.168.49.2:30876\" \"10.244.0.13:9080\" inbound|9080|| 127.0.0.6:54179 10.244.0.13:9080 10.244.0.1:0 outbound_.9080_._.productpage.bookinfo.svc.cluster.local default", + "severity": "INFO", + "timestamp": "2024-02-26 09:53:40.273", + "timestampUnix": 1708941220273, + "accessLog": { + "authority": "192.168.49.2:30876", + "bytes_received": "0", + "bytes_sent": "4294", + "duration": "10", + "forwarded_for": "10.244.0.1", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "b7af2316-049e-96b1-81d3-2b4bbae8f885", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:53:40.273Z", + "upstream_service": "10.244.0.13:9080", + "upstream_service_time": "10", + "upstream_cluster": "inbound|9080||", + "upstream_local": "127.0.0.6:54179", + "downstream_local": "10.244.0.13:9080", + "downstream_remote": "10.244.0.1:0", + "requested_server": "outbound_.9080_._.productpage.bookinfo.svc.cluster.local", + "route_name": "default", + "uri_path": "/productpage", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:53:41.282Z] \"GET /details/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 178 1 1 \"-\" \"Go-http-client/1.1\" \"ebdbdf91-8364-9582-8737-52ab7ba3ca4a\" \"details:9080\" \"10.244.0.10:9080\" outbound|9080||details.bookinfo.svc.cluster.local 10.244.0.13:58492 10.109.148.19:9080 10.244.0.13:49858 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:53:41.282", + "timestampUnix": 1708941221282, + "accessLog": { + "authority": "details:9080", + "bytes_received": "0", + "bytes_sent": "178", + "duration": "1", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "ebdbdf91-8364-9582-8737-52ab7ba3ca4a", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:53:41.282Z", + "upstream_service": "10.244.0.10:9080", + "upstream_service_time": "1", + "upstream_cluster": "outbound|9080||details.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:58492", + "downstream_local": "10.109.148.19:9080", + "downstream_remote": "10.244.0.13:49858", + "requested_server": "-", + "route_name": "default", + "uri_path": "/details/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:53:41.286Z] \"GET /reviews/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 358 2 2 \"-\" \"Go-http-client/1.1\" \"ebdbdf91-8364-9582-8737-52ab7ba3ca4a\" \"reviews:9080\" \"10.244.0.14:9080\" outbound|9080||reviews.bookinfo.svc.cluster.local 10.244.0.13:55880 10.99.45.111:9080 10.244.0.13:49072 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:53:41.286", + "timestampUnix": 1708941221286, + "accessLog": { + "authority": "reviews:9080", + "bytes_received": "0", + "bytes_sent": "358", + "duration": "2", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "ebdbdf91-8364-9582-8737-52ab7ba3ca4a", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:53:41.286Z", + "upstream_service": "10.244.0.14:9080", + "upstream_service_time": "2", + "upstream_cluster": "outbound|9080||reviews.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:55880", + "downstream_local": "10.99.45.111:9080", + "downstream_remote": "10.244.0.13:49072", + "requested_server": "-", + "route_name": "default", + "uri_path": "/reviews/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:53:41.274Z] \"GET /productpage HTTP/1.1\" 200 - via_upstream - \"-\" 0 4294 16 16 \"10.244.0.1\" \"Go-http-client/1.1\" \"ebdbdf91-8364-9582-8737-52ab7ba3ca4a\" \"192.168.49.2:30876\" \"10.244.0.13:9080\" inbound|9080|| 127.0.0.6:56631 10.244.0.13:9080 10.244.0.1:0 outbound_.9080_._.productpage.bookinfo.svc.cluster.local default", + "severity": "INFO", + "timestamp": "2024-02-26 09:53:41.274", + "timestampUnix": 1708941221274, + "accessLog": { + "authority": "192.168.49.2:30876", + "bytes_received": "0", + "bytes_sent": "4294", + "duration": "16", + "forwarded_for": "10.244.0.1", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "ebdbdf91-8364-9582-8737-52ab7ba3ca4a", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:53:41.274Z", + "upstream_service": "10.244.0.13:9080", + "upstream_service_time": "16", + "upstream_cluster": "inbound|9080||", + "upstream_local": "127.0.0.6:56631", + "downstream_local": "10.244.0.13:9080", + "downstream_remote": "10.244.0.1:0", + "requested_server": "outbound_.9080_._.productpage.bookinfo.svc.cluster.local", + "route_name": "default", + "uri_path": "/productpage", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:53:42.285Z] \"GET /details/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 178 1 1 \"-\" \"Go-http-client/1.1\" \"15c491f8-b840-9f02-8ba5-9b625c9e645c\" \"details:9080\" \"10.244.0.10:9080\" outbound|9080||details.bookinfo.svc.cluster.local 10.244.0.13:58492 10.109.148.19:9080 10.244.0.13:49860 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:53:42.285", + "timestampUnix": 1708941222285, + "accessLog": { + "authority": "details:9080", + "bytes_received": "0", + "bytes_sent": "178", + "duration": "1", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "15c491f8-b840-9f02-8ba5-9b625c9e645c", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:53:42.285Z", + "upstream_service": "10.244.0.10:9080", + "upstream_service_time": "1", + "upstream_cluster": "outbound|9080||details.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:58492", + "downstream_local": "10.109.148.19:9080", + "downstream_remote": "10.244.0.13:49860", + "requested_server": "-", + "route_name": "default", + "uri_path": "/details/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:53:42.289Z] \"GET /reviews/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 358 2 2 \"-\" \"Go-http-client/1.1\" \"15c491f8-b840-9f02-8ba5-9b625c9e645c\" \"reviews:9080\" \"10.244.0.14:9080\" outbound|9080||reviews.bookinfo.svc.cluster.local 10.244.0.13:34890 10.99.45.111:9080 10.244.0.13:49086 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:53:42.289", + "timestampUnix": 1708941222289, + "accessLog": { + "authority": "reviews:9080", + "bytes_received": "0", + "bytes_sent": "358", + "duration": "2", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "15c491f8-b840-9f02-8ba5-9b625c9e645c", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:53:42.289Z", + "upstream_service": "10.244.0.14:9080", + "upstream_service_time": "2", + "upstream_cluster": "outbound|9080||reviews.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:34890", + "downstream_local": "10.99.45.111:9080", + "downstream_remote": "10.244.0.13:49086", + "requested_server": "-", + "route_name": "default", + "uri_path": "/reviews/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:53:42.274Z] \"GET /productpage HTTP/1.1\" 200 - via_upstream - \"-\" 0 4294 19 18 \"10.244.0.1\" \"Go-http-client/1.1\" \"15c491f8-b840-9f02-8ba5-9b625c9e645c\" \"192.168.49.2:30876\" \"10.244.0.13:9080\" inbound|9080|| 127.0.0.6:35245 10.244.0.13:9080 10.244.0.1:0 outbound_.9080_._.productpage.bookinfo.svc.cluster.local default", + "severity": "INFO", + "timestamp": "2024-02-26 09:53:42.274", + "timestampUnix": 1708941222274, + "accessLog": { + "authority": "192.168.49.2:30876", + "bytes_received": "0", + "bytes_sent": "4294", + "duration": "19", + "forwarded_for": "10.244.0.1", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "15c491f8-b840-9f02-8ba5-9b625c9e645c", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:53:42.274Z", + "upstream_service": "10.244.0.13:9080", + "upstream_service_time": "18", + "upstream_cluster": "inbound|9080||", + "upstream_local": "127.0.0.6:35245", + "downstream_local": "10.244.0.13:9080", + "downstream_remote": "10.244.0.1:0", + "requested_server": "outbound_.9080_._.productpage.bookinfo.svc.cluster.local", + "route_name": "default", + "uri_path": "/productpage", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:53:43.285Z] \"GET /details/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 178 2 2 \"-\" \"Go-http-client/1.1\" \"1e6125ec-f9e9-9a10-8dfb-5b9bac62bb01\" \"details:9080\" \"10.244.0.10:9080\" outbound|9080||details.bookinfo.svc.cluster.local 10.244.0.13:58492 10.109.148.19:9080 10.244.0.13:49872 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:53:43.285", + "timestampUnix": 1708941223285, + "accessLog": { + "authority": "details:9080", + "bytes_received": "0", + "bytes_sent": "178", + "duration": "2", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "1e6125ec-f9e9-9a10-8dfb-5b9bac62bb01", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:53:43.285Z", + "upstream_service": "10.244.0.10:9080", + "upstream_service_time": "2", + "upstream_cluster": "outbound|9080||details.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:58492", + "downstream_local": "10.109.148.19:9080", + "downstream_remote": "10.244.0.13:49872", + "requested_server": "-", + "route_name": "default", + "uri_path": "/details/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:53:43.290Z] \"GET /reviews/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 437 8 7 \"-\" \"Go-http-client/1.1\" \"1e6125ec-f9e9-9a10-8dfb-5b9bac62bb01\" \"reviews:9080\" \"10.244.0.12:9080\" outbound|9080||reviews.bookinfo.svc.cluster.local 10.244.0.13:48578 10.99.45.111:9080 10.244.0.13:49094 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:53:43.29", + "timestampUnix": 1708941223290, + "accessLog": { + "authority": "reviews:9080", + "bytes_received": "0", + "bytes_sent": "437", + "duration": "8", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "1e6125ec-f9e9-9a10-8dfb-5b9bac62bb01", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:53:43.290Z", + "upstream_service": "10.244.0.12:9080", + "upstream_service_time": "7", + "upstream_cluster": "outbound|9080||reviews.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:48578", + "downstream_local": "10.99.45.111:9080", + "downstream_remote": "10.244.0.13:49094", + "requested_server": "-", + "route_name": "default", + "uri_path": "/reviews/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:53:43.274Z] \"GET /productpage HTTP/1.1\" 200 - via_upstream - \"-\" 0 5289 25 25 \"10.244.0.1\" \"Go-http-client/1.1\" \"1e6125ec-f9e9-9a10-8dfb-5b9bac62bb01\" \"192.168.49.2:30876\" \"10.244.0.13:9080\" inbound|9080|| 127.0.0.6:37155 10.244.0.13:9080 10.244.0.1:0 outbound_.9080_._.productpage.bookinfo.svc.cluster.local default", + "severity": "INFO", + "timestamp": "2024-02-26 09:53:43.274", + "timestampUnix": 1708941223274, + "accessLog": { + "authority": "192.168.49.2:30876", + "bytes_received": "0", + "bytes_sent": "5289", + "duration": "25", + "forwarded_for": "10.244.0.1", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "1e6125ec-f9e9-9a10-8dfb-5b9bac62bb01", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:53:43.274Z", + "upstream_service": "10.244.0.13:9080", + "upstream_service_time": "25", + "upstream_cluster": "inbound|9080||", + "upstream_local": "127.0.0.6:37155", + "downstream_local": "10.244.0.13:9080", + "downstream_remote": "10.244.0.1:0", + "requested_server": "outbound_.9080_._.productpage.bookinfo.svc.cluster.local", + "route_name": "default", + "uri_path": "/productpage", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:53:44.276Z] \"GET /details/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 178 1 1 \"-\" \"Go-http-client/1.1\" \"aa84e5cb-58c7-96cc-97ed-1650673babdb\" \"details:9080\" \"10.244.0.10:9080\" outbound|9080||details.bookinfo.svc.cluster.local 10.244.0.13:60722 10.109.148.19:9080 10.244.0.13:49888 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:53:44.276", + "timestampUnix": 1708941224276, + "accessLog": { + "authority": "details:9080", + "bytes_received": "0", + "bytes_sent": "178", + "duration": "1", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "aa84e5cb-58c7-96cc-97ed-1650673babdb", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:53:44.276Z", + "upstream_service": "10.244.0.10:9080", + "upstream_service_time": "1", + "upstream_cluster": "outbound|9080||details.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:60722", + "downstream_local": "10.109.148.19:9080", + "downstream_remote": "10.244.0.13:49888", + "requested_server": "-", + "route_name": "default", + "uri_path": "/details/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:53:44.280Z] \"GET /reviews/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 358 2 2 \"-\" \"Go-http-client/1.1\" \"aa84e5cb-58c7-96cc-97ed-1650673babdb\" \"reviews:9080\" \"10.244.0.14:9080\" outbound|9080||reviews.bookinfo.svc.cluster.local 10.244.0.13:55880 10.99.45.111:9080 10.244.0.13:49104 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:53:44.28", + "timestampUnix": 1708941224280, + "accessLog": { + "authority": "reviews:9080", + "bytes_received": "0", + "bytes_sent": "358", + "duration": "2", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "aa84e5cb-58c7-96cc-97ed-1650673babdb", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:53:44.280Z", + "upstream_service": "10.244.0.14:9080", + "upstream_service_time": "2", + "upstream_cluster": "outbound|9080||reviews.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:55880", + "downstream_local": "10.99.45.111:9080", + "downstream_remote": "10.244.0.13:49104", + "requested_server": "-", + "route_name": "default", + "uri_path": "/reviews/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:53:44.273Z] \"GET /productpage HTTP/1.1\" 200 - via_upstream - \"-\" 0 4294 10 10 \"10.244.0.1\" \"Go-http-client/1.1\" \"aa84e5cb-58c7-96cc-97ed-1650673babdb\" \"192.168.49.2:30876\" \"10.244.0.13:9080\" inbound|9080|| 127.0.0.6:43337 10.244.0.13:9080 10.244.0.1:0 outbound_.9080_._.productpage.bookinfo.svc.cluster.local default", + "severity": "INFO", + "timestamp": "2024-02-26 09:53:44.273", + "timestampUnix": 1708941224273, + "accessLog": { + "authority": "192.168.49.2:30876", + "bytes_received": "0", + "bytes_sent": "4294", + "duration": "10", + "forwarded_for": "10.244.0.1", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "aa84e5cb-58c7-96cc-97ed-1650673babdb", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:53:44.273Z", + "upstream_service": "10.244.0.13:9080", + "upstream_service_time": "10", + "upstream_cluster": "inbound|9080||", + "upstream_local": "127.0.0.6:43337", + "downstream_local": "10.244.0.13:9080", + "downstream_remote": "10.244.0.1:0", + "requested_server": "outbound_.9080_._.productpage.bookinfo.svc.cluster.local", + "route_name": "default", + "uri_path": "/productpage", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:53:45.276Z] \"GET /details/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 178 1 1 \"-\" \"Go-http-client/1.1\" \"6bf241ba-a06c-9cd7-8e56-42eea33bad45\" \"details:9080\" \"10.244.0.10:9080\" outbound|9080||details.bookinfo.svc.cluster.local 10.244.0.13:60722 10.109.148.19:9080 10.244.0.13:49894 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:53:45.276", + "timestampUnix": 1708941225276, + "accessLog": { + "authority": "details:9080", + "bytes_received": "0", + "bytes_sent": "178", + "duration": "1", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "6bf241ba-a06c-9cd7-8e56-42eea33bad45", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:53:45.276Z", + "upstream_service": "10.244.0.10:9080", + "upstream_service_time": "1", + "upstream_cluster": "outbound|9080||details.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:60722", + "downstream_local": "10.109.148.19:9080", + "downstream_remote": "10.244.0.13:49894", + "requested_server": "-", + "route_name": "default", + "uri_path": "/details/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:53:45.280Z] \"GET /reviews/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 358 1 1 \"-\" \"Go-http-client/1.1\" \"6bf241ba-a06c-9cd7-8e56-42eea33bad45\" \"reviews:9080\" \"10.244.0.14:9080\" outbound|9080||reviews.bookinfo.svc.cluster.local 10.244.0.13:34890 10.99.45.111:9080 10.244.0.13:49108 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:53:45.28", + "timestampUnix": 1708941225280, + "accessLog": { + "authority": "reviews:9080", + "bytes_received": "0", + "bytes_sent": "358", + "duration": "1", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "6bf241ba-a06c-9cd7-8e56-42eea33bad45", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:53:45.280Z", + "upstream_service": "10.244.0.14:9080", + "upstream_service_time": "1", + "upstream_cluster": "outbound|9080||reviews.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:34890", + "downstream_local": "10.99.45.111:9080", + "downstream_remote": "10.244.0.13:49108", + "requested_server": "-", + "route_name": "default", + "uri_path": "/reviews/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:53:45.273Z] \"GET /productpage HTTP/1.1\" 200 - via_upstream - \"-\" 0 4294 9 9 \"10.244.0.1\" \"Go-http-client/1.1\" \"6bf241ba-a06c-9cd7-8e56-42eea33bad45\" \"192.168.49.2:30876\" \"10.244.0.13:9080\" inbound|9080|| 127.0.0.6:46593 10.244.0.13:9080 10.244.0.1:0 outbound_.9080_._.productpage.bookinfo.svc.cluster.local default", + "severity": "INFO", + "timestamp": "2024-02-26 09:53:45.273", + "timestampUnix": 1708941225273, + "accessLog": { + "authority": "192.168.49.2:30876", + "bytes_received": "0", + "bytes_sent": "4294", + "duration": "9", + "forwarded_for": "10.244.0.1", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "6bf241ba-a06c-9cd7-8e56-42eea33bad45", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:53:45.273Z", + "upstream_service": "10.244.0.13:9080", + "upstream_service_time": "9", + "upstream_cluster": "inbound|9080||", + "upstream_local": "127.0.0.6:46593", + "downstream_local": "10.244.0.13:9080", + "downstream_remote": "10.244.0.1:0", + "requested_server": "outbound_.9080_._.productpage.bookinfo.svc.cluster.local", + "route_name": "default", + "uri_path": "/productpage", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:53:46.278Z] \"GET /details/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 178 1 1 \"-\" \"Go-http-client/1.1\" \"8c2cf9f1-a71f-9321-a576-39ffb56421b8\" \"details:9080\" \"10.244.0.10:9080\" outbound|9080||details.bookinfo.svc.cluster.local 10.244.0.13:60722 10.109.148.19:9080 10.244.0.13:49898 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:53:46.278", + "timestampUnix": 1708941226278, + "accessLog": { + "authority": "details:9080", + "bytes_received": "0", + "bytes_sent": "178", + "duration": "1", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "8c2cf9f1-a71f-9321-a576-39ffb56421b8", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:53:46.278Z", + "upstream_service": "10.244.0.10:9080", + "upstream_service_time": "1", + "upstream_cluster": "outbound|9080||details.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:60722", + "downstream_local": "10.109.148.19:9080", + "downstream_remote": "10.244.0.13:49898", + "requested_server": "-", + "route_name": "default", + "uri_path": "/details/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:53:46.282Z] \"GET /reviews/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 442 7 7 \"-\" \"Go-http-client/1.1\" \"8c2cf9f1-a71f-9321-a576-39ffb56421b8\" \"reviews:9080\" \"10.244.0.15:9080\" outbound|9080||reviews.bookinfo.svc.cluster.local 10.244.0.13:32944 10.99.45.111:9080 10.244.0.13:49114 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:53:46.282", + "timestampUnix": 1708941226282, + "accessLog": { + "authority": "reviews:9080", + "bytes_received": "0", + "bytes_sent": "442", + "duration": "7", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "8c2cf9f1-a71f-9321-a576-39ffb56421b8", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:53:46.282Z", + "upstream_service": "10.244.0.15:9080", + "upstream_service_time": "7", + "upstream_cluster": "outbound|9080||reviews.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:32944", + "downstream_local": "10.99.45.111:9080", + "downstream_remote": "10.244.0.13:49114", + "requested_server": "-", + "route_name": "default", + "uri_path": "/reviews/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:53:46.274Z] \"GET /productpage HTTP/1.1\" 200 - via_upstream - \"-\" 0 5294 17 16 \"10.244.0.1\" \"Go-http-client/1.1\" \"8c2cf9f1-a71f-9321-a576-39ffb56421b8\" \"192.168.49.2:30876\" \"10.244.0.13:9080\" inbound|9080|| 127.0.0.6:54017 10.244.0.13:9080 10.244.0.1:0 outbound_.9080_._.productpage.bookinfo.svc.cluster.local default", + "severity": "INFO", + "timestamp": "2024-02-26 09:53:46.274", + "timestampUnix": 1708941226274, + "accessLog": { + "authority": "192.168.49.2:30876", + "bytes_received": "0", + "bytes_sent": "5294", + "duration": "17", + "forwarded_for": "10.244.0.1", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "8c2cf9f1-a71f-9321-a576-39ffb56421b8", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:53:46.274Z", + "upstream_service": "10.244.0.13:9080", + "upstream_service_time": "16", + "upstream_cluster": "inbound|9080||", + "upstream_local": "127.0.0.6:54017", + "downstream_local": "10.244.0.13:9080", + "downstream_remote": "10.244.0.1:0", + "requested_server": "outbound_.9080_._.productpage.bookinfo.svc.cluster.local", + "route_name": "default", + "uri_path": "/productpage", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:53:47.276Z] \"GET /details/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 178 1 1 \"-\" \"Go-http-client/1.1\" \"c990a7e2-302b-9be2-9827-ca0ac86f3396\" \"details:9080\" \"10.244.0.10:9080\" outbound|9080||details.bookinfo.svc.cluster.local 10.244.0.13:60722 10.109.148.19:9080 10.244.0.13:60292 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:53:47.276", + "timestampUnix": 1708941227276, + "accessLog": { + "authority": "details:9080", + "bytes_received": "0", + "bytes_sent": "178", + "duration": "1", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "c990a7e2-302b-9be2-9827-ca0ac86f3396", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:53:47.276Z", + "upstream_service": "10.244.0.10:9080", + "upstream_service_time": "1", + "upstream_cluster": "outbound|9080||details.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:60722", + "downstream_local": "10.109.148.19:9080", + "downstream_remote": "10.244.0.13:60292", + "requested_server": "-", + "route_name": "default", + "uri_path": "/details/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:53:47.279Z] \"GET /reviews/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 442 5 5 \"-\" \"Go-http-client/1.1\" \"c990a7e2-302b-9be2-9827-ca0ac86f3396\" \"reviews:9080\" \"10.244.0.15:9080\" outbound|9080||reviews.bookinfo.svc.cluster.local 10.244.0.13:50830 10.99.45.111:9080 10.244.0.13:58162 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:53:47.279", + "timestampUnix": 1708941227279, + "accessLog": { + "authority": "reviews:9080", + "bytes_received": "0", + "bytes_sent": "442", + "duration": "5", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "c990a7e2-302b-9be2-9827-ca0ac86f3396", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:53:47.279Z", + "upstream_service": "10.244.0.15:9080", + "upstream_service_time": "5", + "upstream_cluster": "outbound|9080||reviews.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:50830", + "downstream_local": "10.99.45.111:9080", + "downstream_remote": "10.244.0.13:58162", + "requested_server": "-", + "route_name": "default", + "uri_path": "/reviews/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:53:47.273Z] \"GET /productpage HTTP/1.1\" 200 - via_upstream - \"-\" 0 5294 14 13 \"10.244.0.1\" \"Go-http-client/1.1\" \"c990a7e2-302b-9be2-9827-ca0ac86f3396\" \"192.168.49.2:30876\" \"10.244.0.13:9080\" inbound|9080|| 127.0.0.6:48137 10.244.0.13:9080 10.244.0.1:0 outbound_.9080_._.productpage.bookinfo.svc.cluster.local default", + "severity": "INFO", + "timestamp": "2024-02-26 09:53:47.273", + "timestampUnix": 1708941227273, + "accessLog": { + "authority": "192.168.49.2:30876", + "bytes_received": "0", + "bytes_sent": "5294", + "duration": "14", + "forwarded_for": "10.244.0.1", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "c990a7e2-302b-9be2-9827-ca0ac86f3396", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:53:47.273Z", + "upstream_service": "10.244.0.13:9080", + "upstream_service_time": "13", + "upstream_cluster": "inbound|9080||", + "upstream_local": "127.0.0.6:48137", + "downstream_local": "10.244.0.13:9080", + "downstream_remote": "10.244.0.1:0", + "requested_server": "outbound_.9080_._.productpage.bookinfo.svc.cluster.local", + "route_name": "default", + "uri_path": "/productpage", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:53:48.276Z] \"GET /details/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 178 1 1 \"-\" \"Go-http-client/1.1\" \"39af5e4e-a4a6-9d47-a7f0-565b116f4dcc\" \"details:9080\" \"10.244.0.10:9080\" outbound|9080||details.bookinfo.svc.cluster.local 10.244.0.13:58492 10.109.148.19:9080 10.244.0.13:60294 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:53:48.276", + "timestampUnix": 1708941228276, + "accessLog": { + "authority": "details:9080", + "bytes_received": "0", + "bytes_sent": "178", + "duration": "1", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "39af5e4e-a4a6-9d47-a7f0-565b116f4dcc", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:53:48.276Z", + "upstream_service": "10.244.0.10:9080", + "upstream_service_time": "1", + "upstream_cluster": "outbound|9080||details.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:58492", + "downstream_local": "10.109.148.19:9080", + "downstream_remote": "10.244.0.13:60294", + "requested_server": "-", + "route_name": "default", + "uri_path": "/details/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:53:48.279Z] \"GET /reviews/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 442 6 6 \"-\" \"Go-http-client/1.1\" \"39af5e4e-a4a6-9d47-a7f0-565b116f4dcc\" \"reviews:9080\" \"10.244.0.15:9080\" outbound|9080||reviews.bookinfo.svc.cluster.local 10.244.0.13:50830 10.99.45.111:9080 10.244.0.13:58174 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:53:48.279", + "timestampUnix": 1708941228279, + "accessLog": { + "authority": "reviews:9080", + "bytes_received": "0", + "bytes_sent": "442", + "duration": "6", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "39af5e4e-a4a6-9d47-a7f0-565b116f4dcc", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:53:48.279Z", + "upstream_service": "10.244.0.15:9080", + "upstream_service_time": "6", + "upstream_cluster": "outbound|9080||reviews.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:50830", + "downstream_local": "10.99.45.111:9080", + "downstream_remote": "10.244.0.13:58174", + "requested_server": "-", + "route_name": "default", + "uri_path": "/reviews/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:53:48.273Z] \"GET /productpage HTTP/1.1\" 200 - via_upstream - \"-\" 0 5294 14 14 \"10.244.0.1\" \"Go-http-client/1.1\" \"39af5e4e-a4a6-9d47-a7f0-565b116f4dcc\" \"192.168.49.2:30876\" \"10.244.0.13:9080\" inbound|9080|| 127.0.0.6:38003 10.244.0.13:9080 10.244.0.1:0 outbound_.9080_._.productpage.bookinfo.svc.cluster.local default", + "severity": "INFO", + "timestamp": "2024-02-26 09:53:48.273", + "timestampUnix": 1708941228273, + "accessLog": { + "authority": "192.168.49.2:30876", + "bytes_received": "0", + "bytes_sent": "5294", + "duration": "14", + "forwarded_for": "10.244.0.1", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "39af5e4e-a4a6-9d47-a7f0-565b116f4dcc", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:53:48.273Z", + "upstream_service": "10.244.0.13:9080", + "upstream_service_time": "14", + "upstream_cluster": "inbound|9080||", + "upstream_local": "127.0.0.6:38003", + "downstream_local": "10.244.0.13:9080", + "downstream_remote": "10.244.0.1:0", + "requested_server": "outbound_.9080_._.productpage.bookinfo.svc.cluster.local", + "route_name": "default", + "uri_path": "/productpage", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:53:49.277Z] \"GET /details/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 178 1 1 \"-\" \"Go-http-client/1.1\" \"4f77bb20-13b3-9b34-b473-c3f0967a20d2\" \"details:9080\" \"10.244.0.10:9080\" outbound|9080||details.bookinfo.svc.cluster.local 10.244.0.13:58492 10.109.148.19:9080 10.244.0.13:60306 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:53:49.277", + "timestampUnix": 1708941229277, + "accessLog": { + "authority": "details:9080", + "bytes_received": "0", + "bytes_sent": "178", + "duration": "1", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "4f77bb20-13b3-9b34-b473-c3f0967a20d2", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:53:49.277Z", + "upstream_service": "10.244.0.10:9080", + "upstream_service_time": "1", + "upstream_cluster": "outbound|9080||details.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:58492", + "downstream_local": "10.109.148.19:9080", + "downstream_remote": "10.244.0.13:60306", + "requested_server": "-", + "route_name": "default", + "uri_path": "/details/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:53:49.280Z] \"GET /reviews/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 437 6 6 \"-\" \"Go-http-client/1.1\" \"4f77bb20-13b3-9b34-b473-c3f0967a20d2\" \"reviews:9080\" \"10.244.0.12:9080\" outbound|9080||reviews.bookinfo.svc.cluster.local 10.244.0.13:48578 10.99.45.111:9080 10.244.0.13:58190 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:53:49.28", + "timestampUnix": 1708941229280, + "accessLog": { + "authority": "reviews:9080", + "bytes_received": "0", + "bytes_sent": "437", + "duration": "6", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "4f77bb20-13b3-9b34-b473-c3f0967a20d2", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:53:49.280Z", + "upstream_service": "10.244.0.12:9080", + "upstream_service_time": "6", + "upstream_cluster": "outbound|9080||reviews.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:48578", + "downstream_local": "10.99.45.111:9080", + "downstream_remote": "10.244.0.13:58190", + "requested_server": "-", + "route_name": "default", + "uri_path": "/reviews/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:53:49.273Z] \"GET /productpage HTTP/1.1\" 200 - via_upstream - \"-\" 0 5289 15 15 \"10.244.0.1\" \"Go-http-client/1.1\" \"4f77bb20-13b3-9b34-b473-c3f0967a20d2\" \"192.168.49.2:30876\" \"10.244.0.13:9080\" inbound|9080|| 127.0.0.6:36093 10.244.0.13:9080 10.244.0.1:0 outbound_.9080_._.productpage.bookinfo.svc.cluster.local default", + "severity": "INFO", + "timestamp": "2024-02-26 09:53:49.273", + "timestampUnix": 1708941229273, + "accessLog": { + "authority": "192.168.49.2:30876", + "bytes_received": "0", + "bytes_sent": "5289", + "duration": "15", + "forwarded_for": "10.244.0.1", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "4f77bb20-13b3-9b34-b473-c3f0967a20d2", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:53:49.273Z", + "upstream_service": "10.244.0.13:9080", + "upstream_service_time": "15", + "upstream_cluster": "inbound|9080||", + "upstream_local": "127.0.0.6:36093", + "downstream_local": "10.244.0.13:9080", + "downstream_remote": "10.244.0.1:0", + "requested_server": "outbound_.9080_._.productpage.bookinfo.svc.cluster.local", + "route_name": "default", + "uri_path": "/productpage", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:53:50.276Z] \"GET /details/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 178 1 1 \"-\" \"Go-http-client/1.1\" \"d7b36f5c-24b3-9c33-812d-15cc725003fa\" \"details:9080\" \"10.244.0.10:9080\" outbound|9080||details.bookinfo.svc.cluster.local 10.244.0.13:58492 10.109.148.19:9080 10.244.0.13:60314 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:53:50.276", + "timestampUnix": 1708941230276, + "accessLog": { + "authority": "details:9080", + "bytes_received": "0", + "bytes_sent": "178", + "duration": "1", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "d7b36f5c-24b3-9c33-812d-15cc725003fa", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:53:50.276Z", + "upstream_service": "10.244.0.10:9080", + "upstream_service_time": "1", + "upstream_cluster": "outbound|9080||details.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:58492", + "downstream_local": "10.109.148.19:9080", + "downstream_remote": "10.244.0.13:60314", + "requested_server": "-", + "route_name": "default", + "uri_path": "/details/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:53:50.280Z] \"GET /reviews/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 442 7 6 \"-\" \"Go-http-client/1.1\" \"d7b36f5c-24b3-9c33-812d-15cc725003fa\" \"reviews:9080\" \"10.244.0.15:9080\" outbound|9080||reviews.bookinfo.svc.cluster.local 10.244.0.13:50830 10.99.45.111:9080 10.244.0.13:58196 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:53:50.28", + "timestampUnix": 1708941230280, + "accessLog": { + "authority": "reviews:9080", + "bytes_received": "0", + "bytes_sent": "442", + "duration": "7", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "d7b36f5c-24b3-9c33-812d-15cc725003fa", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:53:50.280Z", + "upstream_service": "10.244.0.15:9080", + "upstream_service_time": "6", + "upstream_cluster": "outbound|9080||reviews.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:50830", + "downstream_local": "10.99.45.111:9080", + "downstream_remote": "10.244.0.13:58196", + "requested_server": "-", + "route_name": "default", + "uri_path": "/reviews/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:53:50.273Z] \"GET /productpage HTTP/1.1\" 200 - via_upstream - \"-\" 0 5294 15 15 \"10.244.0.1\" \"Go-http-client/1.1\" \"d7b36f5c-24b3-9c33-812d-15cc725003fa\" \"192.168.49.2:30876\" \"10.244.0.13:9080\" inbound|9080|| 127.0.0.6:52815 10.244.0.13:9080 10.244.0.1:0 outbound_.9080_._.productpage.bookinfo.svc.cluster.local default", + "severity": "INFO", + "timestamp": "2024-02-26 09:53:50.273", + "timestampUnix": 1708941230273, + "accessLog": { + "authority": "192.168.49.2:30876", + "bytes_received": "0", + "bytes_sent": "5294", + "duration": "15", + "forwarded_for": "10.244.0.1", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "d7b36f5c-24b3-9c33-812d-15cc725003fa", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:53:50.273Z", + "upstream_service": "10.244.0.13:9080", + "upstream_service_time": "15", + "upstream_cluster": "inbound|9080||", + "upstream_local": "127.0.0.6:52815", + "downstream_local": "10.244.0.13:9080", + "downstream_remote": "10.244.0.1:0", + "requested_server": "outbound_.9080_._.productpage.bookinfo.svc.cluster.local", + "route_name": "default", + "uri_path": "/productpage", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:53:51.276Z] \"GET /details/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 178 1 0 \"-\" \"Go-http-client/1.1\" \"fb29b533-9eaf-9295-88d7-8ac0507bd0a2\" \"details:9080\" \"10.244.0.10:9080\" outbound|9080||details.bookinfo.svc.cluster.local 10.244.0.13:60722 10.109.148.19:9080 10.244.0.13:60328 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:53:51.276", + "timestampUnix": 1708941231276, + "accessLog": { + "authority": "details:9080", + "bytes_received": "0", + "bytes_sent": "178", + "duration": "1", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "fb29b533-9eaf-9295-88d7-8ac0507bd0a2", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:53:51.276Z", + "upstream_service": "10.244.0.10:9080", + "upstream_service_time": "0", + "upstream_cluster": "outbound|9080||details.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:60722", + "downstream_local": "10.109.148.19:9080", + "downstream_remote": "10.244.0.13:60328", + "requested_server": "-", + "route_name": "default", + "uri_path": "/details/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:53:51.279Z] \"GET /reviews/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 437 5 5 \"-\" \"Go-http-client/1.1\" \"fb29b533-9eaf-9295-88d7-8ac0507bd0a2\" \"reviews:9080\" \"10.244.0.12:9080\" outbound|9080||reviews.bookinfo.svc.cluster.local 10.244.0.13:48584 10.99.45.111:9080 10.244.0.13:58204 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:53:51.279", + "timestampUnix": 1708941231279, + "accessLog": { + "authority": "reviews:9080", + "bytes_received": "0", + "bytes_sent": "437", + "duration": "5", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "fb29b533-9eaf-9295-88d7-8ac0507bd0a2", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:53:51.279Z", + "upstream_service": "10.244.0.12:9080", + "upstream_service_time": "5", + "upstream_cluster": "outbound|9080||reviews.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:48584", + "downstream_local": "10.99.45.111:9080", + "downstream_remote": "10.244.0.13:58204", + "requested_server": "-", + "route_name": "default", + "uri_path": "/reviews/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:53:51.273Z] \"GET /productpage HTTP/1.1\" 200 - via_upstream - \"-\" 0 5289 13 13 \"10.244.0.1\" \"Go-http-client/1.1\" \"fb29b533-9eaf-9295-88d7-8ac0507bd0a2\" \"192.168.49.2:30876\" \"10.244.0.13:9080\" inbound|9080|| 127.0.0.6:39271 10.244.0.13:9080 10.244.0.1:0 outbound_.9080_._.productpage.bookinfo.svc.cluster.local default", + "severity": "INFO", + "timestamp": "2024-02-26 09:53:51.273", + "timestampUnix": 1708941231273, + "accessLog": { + "authority": "192.168.49.2:30876", + "bytes_received": "0", + "bytes_sent": "5289", + "duration": "13", + "forwarded_for": "10.244.0.1", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "fb29b533-9eaf-9295-88d7-8ac0507bd0a2", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:53:51.273Z", + "upstream_service": "10.244.0.13:9080", + "upstream_service_time": "13", + "upstream_cluster": "inbound|9080||", + "upstream_local": "127.0.0.6:39271", + "downstream_local": "10.244.0.13:9080", + "downstream_remote": "10.244.0.1:0", + "requested_server": "outbound_.9080_._.productpage.bookinfo.svc.cluster.local", + "route_name": "default", + "uri_path": "/productpage", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:53:52.285Z] \"GET /details/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 178 3 3 \"-\" \"Go-http-client/1.1\" \"b4208e96-911b-99e5-aa55-0393faa1eedb\" \"details:9080\" \"10.244.0.10:9080\" outbound|9080||details.bookinfo.svc.cluster.local 10.244.0.13:60722 10.109.148.19:9080 10.244.0.13:60338 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:53:52.285", + "timestampUnix": 1708941232285, + "accessLog": { + "authority": "details:9080", + "bytes_received": "0", + "bytes_sent": "178", + "duration": "3", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "b4208e96-911b-99e5-aa55-0393faa1eedb", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:53:52.285Z", + "upstream_service": "10.244.0.10:9080", + "upstream_service_time": "3", + "upstream_cluster": "outbound|9080||details.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:60722", + "downstream_local": "10.109.148.19:9080", + "downstream_remote": "10.244.0.13:60338", + "requested_server": "-", + "route_name": "default", + "uri_path": "/details/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:53:52.298Z] \"GET /reviews/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 358 3 2 \"-\" \"Go-http-client/1.1\" \"b4208e96-911b-99e5-aa55-0393faa1eedb\" \"reviews:9080\" \"10.244.0.14:9080\" outbound|9080||reviews.bookinfo.svc.cluster.local 10.244.0.13:34890 10.99.45.111:9080 10.244.0.13:58218 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:53:52.298", + "timestampUnix": 1708941232298, + "accessLog": { + "authority": "reviews:9080", + "bytes_received": "0", + "bytes_sent": "358", + "duration": "3", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "b4208e96-911b-99e5-aa55-0393faa1eedb", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:53:52.298Z", + "upstream_service": "10.244.0.14:9080", + "upstream_service_time": "2", + "upstream_cluster": "outbound|9080||reviews.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:34890", + "downstream_local": "10.99.45.111:9080", + "downstream_remote": "10.244.0.13:58218", + "requested_server": "-", + "route_name": "default", + "uri_path": "/reviews/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:53:52.274Z] \"GET /productpage HTTP/1.1\" 200 - via_upstream - \"-\" 0 4294 27 27 \"10.244.0.1\" \"Go-http-client/1.1\" \"b4208e96-911b-99e5-aa55-0393faa1eedb\" \"192.168.49.2:30876\" \"10.244.0.13:9080\" inbound|9080|| 127.0.0.6:37523 10.244.0.13:9080 10.244.0.1:0 outbound_.9080_._.productpage.bookinfo.svc.cluster.local default", + "severity": "INFO", + "timestamp": "2024-02-26 09:53:52.274", + "timestampUnix": 1708941232274, + "accessLog": { + "authority": "192.168.49.2:30876", + "bytes_received": "0", + "bytes_sent": "4294", + "duration": "27", + "forwarded_for": "10.244.0.1", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "b4208e96-911b-99e5-aa55-0393faa1eedb", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:53:52.274Z", + "upstream_service": "10.244.0.13:9080", + "upstream_service_time": "27", + "upstream_cluster": "inbound|9080||", + "upstream_local": "127.0.0.6:37523", + "downstream_local": "10.244.0.13:9080", + "downstream_remote": "10.244.0.1:0", + "requested_server": "outbound_.9080_._.productpage.bookinfo.svc.cluster.local", + "route_name": "default", + "uri_path": "/productpage", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:53:53.276Z] \"GET /details/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 178 1 1 \"-\" \"Go-http-client/1.1\" \"2ff92b70-42ee-9d0e-a032-562903fd3352\" \"details:9080\" \"10.244.0.10:9080\" outbound|9080||details.bookinfo.svc.cluster.local 10.244.0.13:58492 10.109.148.19:9080 10.244.0.13:60346 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:53:53.276", + "timestampUnix": 1708941233276, + "accessLog": { + "authority": "details:9080", + "bytes_received": "0", + "bytes_sent": "178", + "duration": "1", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "2ff92b70-42ee-9d0e-a032-562903fd3352", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:53:53.276Z", + "upstream_service": "10.244.0.10:9080", + "upstream_service_time": "1", + "upstream_cluster": "outbound|9080||details.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:58492", + "downstream_local": "10.109.148.19:9080", + "downstream_remote": "10.244.0.13:60346", + "requested_server": "-", + "route_name": "default", + "uri_path": "/details/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:53:53.279Z] \"GET /reviews/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 442 6 6 \"-\" \"Go-http-client/1.1\" \"2ff92b70-42ee-9d0e-a032-562903fd3352\" \"reviews:9080\" \"10.244.0.15:9080\" outbound|9080||reviews.bookinfo.svc.cluster.local 10.244.0.13:50830 10.99.45.111:9080 10.244.0.13:58220 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:53:53.279", + "timestampUnix": 1708941233279, + "accessLog": { + "authority": "reviews:9080", + "bytes_received": "0", + "bytes_sent": "442", + "duration": "6", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "2ff92b70-42ee-9d0e-a032-562903fd3352", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:53:53.279Z", + "upstream_service": "10.244.0.15:9080", + "upstream_service_time": "6", + "upstream_cluster": "outbound|9080||reviews.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:50830", + "downstream_local": "10.99.45.111:9080", + "downstream_remote": "10.244.0.13:58220", + "requested_server": "-", + "route_name": "default", + "uri_path": "/reviews/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:53:53.273Z] \"GET /productpage HTTP/1.1\" 200 - via_upstream - \"-\" 0 5294 13 13 \"10.244.0.1\" \"Go-http-client/1.1\" \"2ff92b70-42ee-9d0e-a032-562903fd3352\" \"192.168.49.2:30876\" \"10.244.0.13:9080\" inbound|9080|| 127.0.0.6:40733 10.244.0.13:9080 10.244.0.1:0 outbound_.9080_._.productpage.bookinfo.svc.cluster.local default", + "severity": "INFO", + "timestamp": "2024-02-26 09:53:53.273", + "timestampUnix": 1708941233273, + "accessLog": { + "authority": "192.168.49.2:30876", + "bytes_received": "0", + "bytes_sent": "5294", + "duration": "13", + "forwarded_for": "10.244.0.1", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "2ff92b70-42ee-9d0e-a032-562903fd3352", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:53:53.273Z", + "upstream_service": "10.244.0.13:9080", + "upstream_service_time": "13", + "upstream_cluster": "inbound|9080||", + "upstream_local": "127.0.0.6:40733", + "downstream_local": "10.244.0.13:9080", + "downstream_remote": "10.244.0.1:0", + "requested_server": "outbound_.9080_._.productpage.bookinfo.svc.cluster.local", + "route_name": "default", + "uri_path": "/productpage", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:53:54.276Z] \"GET /details/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 178 1 0 \"-\" \"Go-http-client/1.1\" \"57090eef-746b-95e2-9c51-deedee81a674\" \"details:9080\" \"10.244.0.10:9080\" outbound|9080||details.bookinfo.svc.cluster.local 10.244.0.13:58492 10.109.148.19:9080 10.244.0.13:60358 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:53:54.276", + "timestampUnix": 1708941234276, + "accessLog": { + "authority": "details:9080", + "bytes_received": "0", + "bytes_sent": "178", + "duration": "1", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "57090eef-746b-95e2-9c51-deedee81a674", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:53:54.276Z", + "upstream_service": "10.244.0.10:9080", + "upstream_service_time": "0", + "upstream_cluster": "outbound|9080||details.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:58492", + "downstream_local": "10.109.148.19:9080", + "downstream_remote": "10.244.0.13:60358", + "requested_server": "-", + "route_name": "default", + "uri_path": "/details/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:53:54.279Z] \"GET /reviews/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 358 1 1 \"-\" \"Go-http-client/1.1\" \"57090eef-746b-95e2-9c51-deedee81a674\" \"reviews:9080\" \"10.244.0.14:9080\" outbound|9080||reviews.bookinfo.svc.cluster.local 10.244.0.13:55880 10.99.45.111:9080 10.244.0.13:58234 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:53:54.279", + "timestampUnix": 1708941234279, + "accessLog": { + "authority": "reviews:9080", + "bytes_received": "0", + "bytes_sent": "358", + "duration": "1", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "57090eef-746b-95e2-9c51-deedee81a674", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:53:54.279Z", + "upstream_service": "10.244.0.14:9080", + "upstream_service_time": "1", + "upstream_cluster": "outbound|9080||reviews.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:55880", + "downstream_local": "10.99.45.111:9080", + "downstream_remote": "10.244.0.13:58234", + "requested_server": "-", + "route_name": "default", + "uri_path": "/reviews/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:53:54.273Z] \"GET /productpage HTTP/1.1\" 200 - via_upstream - \"-\" 0 4294 9 9 \"10.244.0.1\" \"Go-http-client/1.1\" \"57090eef-746b-95e2-9c51-deedee81a674\" \"192.168.49.2:30876\" \"10.244.0.13:9080\" inbound|9080|| 127.0.0.6:36413 10.244.0.13:9080 10.244.0.1:0 outbound_.9080_._.productpage.bookinfo.svc.cluster.local default", + "severity": "INFO", + "timestamp": "2024-02-26 09:53:54.273", + "timestampUnix": 1708941234273, + "accessLog": { + "authority": "192.168.49.2:30876", + "bytes_received": "0", + "bytes_sent": "4294", + "duration": "9", + "forwarded_for": "10.244.0.1", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "57090eef-746b-95e2-9c51-deedee81a674", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:53:54.273Z", + "upstream_service": "10.244.0.13:9080", + "upstream_service_time": "9", + "upstream_cluster": "inbound|9080||", + "upstream_local": "127.0.0.6:36413", + "downstream_local": "10.244.0.13:9080", + "downstream_remote": "10.244.0.1:0", + "requested_server": "outbound_.9080_._.productpage.bookinfo.svc.cluster.local", + "route_name": "default", + "uri_path": "/productpage", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:53:55.276Z] \"GET /details/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 178 1 1 \"-\" \"Go-http-client/1.1\" \"3d817c77-de4c-9758-8bb6-f0236aee20f3\" \"details:9080\" \"10.244.0.10:9080\" outbound|9080||details.bookinfo.svc.cluster.local 10.244.0.13:58492 10.109.148.19:9080 10.244.0.13:60372 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:53:55.276", + "timestampUnix": 1708941235276, + "accessLog": { + "authority": "details:9080", + "bytes_received": "0", + "bytes_sent": "178", + "duration": "1", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "3d817c77-de4c-9758-8bb6-f0236aee20f3", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:53:55.276Z", + "upstream_service": "10.244.0.10:9080", + "upstream_service_time": "1", + "upstream_cluster": "outbound|9080||details.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:58492", + "downstream_local": "10.109.148.19:9080", + "downstream_remote": "10.244.0.13:60372", + "requested_server": "-", + "route_name": "default", + "uri_path": "/details/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:53:55.281Z] \"GET /reviews/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 437 6 6 \"-\" \"Go-http-client/1.1\" \"3d817c77-de4c-9758-8bb6-f0236aee20f3\" \"reviews:9080\" \"10.244.0.12:9080\" outbound|9080||reviews.bookinfo.svc.cluster.local 10.244.0.13:48578 10.99.45.111:9080 10.244.0.13:58240 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:53:55.281", + "timestampUnix": 1708941235281, + "accessLog": { + "authority": "reviews:9080", + "bytes_received": "0", + "bytes_sent": "437", + "duration": "6", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "3d817c77-de4c-9758-8bb6-f0236aee20f3", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:53:55.281Z", + "upstream_service": "10.244.0.12:9080", + "upstream_service_time": "6", + "upstream_cluster": "outbound|9080||reviews.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:48578", + "downstream_local": "10.99.45.111:9080", + "downstream_remote": "10.244.0.13:58240", + "requested_server": "-", + "route_name": "default", + "uri_path": "/reviews/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:53:55.273Z] \"GET /productpage HTTP/1.1\" 200 - via_upstream - \"-\" 0 5289 16 15 \"10.244.0.1\" \"Go-http-client/1.1\" \"3d817c77-de4c-9758-8bb6-f0236aee20f3\" \"192.168.49.2:30876\" \"10.244.0.13:9080\" inbound|9080|| 127.0.0.6:54349 10.244.0.13:9080 10.244.0.1:0 outbound_.9080_._.productpage.bookinfo.svc.cluster.local default", + "severity": "INFO", + "timestamp": "2024-02-26 09:53:55.273", + "timestampUnix": 1708941235273, + "accessLog": { + "authority": "192.168.49.2:30876", + "bytes_received": "0", + "bytes_sent": "5289", + "duration": "16", + "forwarded_for": "10.244.0.1", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "3d817c77-de4c-9758-8bb6-f0236aee20f3", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:53:55.273Z", + "upstream_service": "10.244.0.13:9080", + "upstream_service_time": "15", + "upstream_cluster": "inbound|9080||", + "upstream_local": "127.0.0.6:54349", + "downstream_local": "10.244.0.13:9080", + "downstream_remote": "10.244.0.1:0", + "requested_server": "outbound_.9080_._.productpage.bookinfo.svc.cluster.local", + "route_name": "default", + "uri_path": "/productpage", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:53:56.277Z] \"GET /details/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 178 1 1 \"-\" \"Go-http-client/1.1\" \"e5b5ef76-cad3-96bc-87b0-e2fbf300ab72\" \"details:9080\" \"10.244.0.10:9080\" outbound|9080||details.bookinfo.svc.cluster.local 10.244.0.13:58492 10.109.148.19:9080 10.244.0.13:60376 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:53:56.277", + "timestampUnix": 1708941236277, + "accessLog": { + "authority": "details:9080", + "bytes_received": "0", + "bytes_sent": "178", + "duration": "1", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "e5b5ef76-cad3-96bc-87b0-e2fbf300ab72", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:53:56.277Z", + "upstream_service": "10.244.0.10:9080", + "upstream_service_time": "1", + "upstream_cluster": "outbound|9080||details.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:58492", + "downstream_local": "10.109.148.19:9080", + "downstream_remote": "10.244.0.13:60376", + "requested_server": "-", + "route_name": "default", + "uri_path": "/details/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:53:56.282Z] \"GET /reviews/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 358 2 2 \"-\" \"Go-http-client/1.1\" \"e5b5ef76-cad3-96bc-87b0-e2fbf300ab72\" \"reviews:9080\" \"10.244.0.14:9080\" outbound|9080||reviews.bookinfo.svc.cluster.local 10.244.0.13:55880 10.99.45.111:9080 10.244.0.13:58244 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:53:56.282", + "timestampUnix": 1708941236282, + "accessLog": { + "authority": "reviews:9080", + "bytes_received": "0", + "bytes_sent": "358", + "duration": "2", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "e5b5ef76-cad3-96bc-87b0-e2fbf300ab72", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:53:56.282Z", + "upstream_service": "10.244.0.14:9080", + "upstream_service_time": "2", + "upstream_cluster": "outbound|9080||reviews.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:55880", + "downstream_local": "10.99.45.111:9080", + "downstream_remote": "10.244.0.13:58244", + "requested_server": "-", + "route_name": "default", + "uri_path": "/reviews/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:53:56.273Z] \"GET /productpage HTTP/1.1\" 200 - via_upstream - \"-\" 0 4294 12 11 \"10.244.0.1\" \"Go-http-client/1.1\" \"e5b5ef76-cad3-96bc-87b0-e2fbf300ab72\" \"192.168.49.2:30876\" \"10.244.0.13:9080\" inbound|9080|| 127.0.0.6:33399 10.244.0.13:9080 10.244.0.1:0 outbound_.9080_._.productpage.bookinfo.svc.cluster.local default", + "severity": "INFO", + "timestamp": "2024-02-26 09:53:56.273", + "timestampUnix": 1708941236273, + "accessLog": { + "authority": "192.168.49.2:30876", + "bytes_received": "0", + "bytes_sent": "4294", + "duration": "12", + "forwarded_for": "10.244.0.1", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "e5b5ef76-cad3-96bc-87b0-e2fbf300ab72", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:53:56.273Z", + "upstream_service": "10.244.0.13:9080", + "upstream_service_time": "11", + "upstream_cluster": "inbound|9080||", + "upstream_local": "127.0.0.6:33399", + "downstream_local": "10.244.0.13:9080", + "downstream_remote": "10.244.0.1:0", + "requested_server": "outbound_.9080_._.productpage.bookinfo.svc.cluster.local", + "route_name": "default", + "uri_path": "/productpage", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:53:57.276Z] \"GET /details/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 178 1 1 \"-\" \"Go-http-client/1.1\" \"513d5f2c-c902-9ee2-8cf9-f2635c53e62b\" \"details:9080\" \"10.244.0.10:9080\" outbound|9080||details.bookinfo.svc.cluster.local 10.244.0.13:58492 10.109.148.19:9080 10.244.0.13:45950 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:53:57.276", + "timestampUnix": 1708941237276, + "accessLog": { + "authority": "details:9080", + "bytes_received": "0", + "bytes_sent": "178", + "duration": "1", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "513d5f2c-c902-9ee2-8cf9-f2635c53e62b", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:53:57.276Z", + "upstream_service": "10.244.0.10:9080", + "upstream_service_time": "1", + "upstream_cluster": "outbound|9080||details.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:58492", + "downstream_local": "10.109.148.19:9080", + "downstream_remote": "10.244.0.13:45950", + "requested_server": "-", + "route_name": "default", + "uri_path": "/details/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:53:57.280Z] \"GET /reviews/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 442 6 5 \"-\" \"Go-http-client/1.1\" \"513d5f2c-c902-9ee2-8cf9-f2635c53e62b\" \"reviews:9080\" \"10.244.0.15:9080\" outbound|9080||reviews.bookinfo.svc.cluster.local 10.244.0.13:50830 10.99.45.111:9080 10.244.0.13:42916 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:53:57.28", + "timestampUnix": 1708941237280, + "accessLog": { + "authority": "reviews:9080", + "bytes_received": "0", + "bytes_sent": "442", + "duration": "6", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "513d5f2c-c902-9ee2-8cf9-f2635c53e62b", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:53:57.280Z", + "upstream_service": "10.244.0.15:9080", + "upstream_service_time": "5", + "upstream_cluster": "outbound|9080||reviews.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:50830", + "downstream_local": "10.99.45.111:9080", + "downstream_remote": "10.244.0.13:42916", + "requested_server": "-", + "route_name": "default", + "uri_path": "/reviews/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:53:57.273Z] \"GET /productpage HTTP/1.1\" 200 - via_upstream - \"-\" 0 5294 13 13 \"10.244.0.1\" \"Go-http-client/1.1\" \"513d5f2c-c902-9ee2-8cf9-f2635c53e62b\" \"192.168.49.2:30876\" \"10.244.0.13:9080\" inbound|9080|| 127.0.0.6:57505 10.244.0.13:9080 10.244.0.1:0 outbound_.9080_._.productpage.bookinfo.svc.cluster.local default", + "severity": "INFO", + "timestamp": "2024-02-26 09:53:57.273", + "timestampUnix": 1708941237273, + "accessLog": { + "authority": "192.168.49.2:30876", + "bytes_received": "0", + "bytes_sent": "5294", + "duration": "13", + "forwarded_for": "10.244.0.1", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "513d5f2c-c902-9ee2-8cf9-f2635c53e62b", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:53:57.273Z", + "upstream_service": "10.244.0.13:9080", + "upstream_service_time": "13", + "upstream_cluster": "inbound|9080||", + "upstream_local": "127.0.0.6:57505", + "downstream_local": "10.244.0.13:9080", + "downstream_remote": "10.244.0.1:0", + "requested_server": "outbound_.9080_._.productpage.bookinfo.svc.cluster.local", + "route_name": "default", + "uri_path": "/productpage", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:53:58.279Z] \"GET /details/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 178 1 1 \"-\" \"Go-http-client/1.1\" \"d7531ca4-cb43-9cc4-9e9c-d177af3988b6\" \"details:9080\" \"10.244.0.10:9080\" outbound|9080||details.bookinfo.svc.cluster.local 10.244.0.13:60722 10.109.148.19:9080 10.244.0.13:45960 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:53:58.279", + "timestampUnix": 1708941238279, + "accessLog": { + "authority": "details:9080", + "bytes_received": "0", + "bytes_sent": "178", + "duration": "1", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "d7531ca4-cb43-9cc4-9e9c-d177af3988b6", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:53:58.279Z", + "upstream_service": "10.244.0.10:9080", + "upstream_service_time": "1", + "upstream_cluster": "outbound|9080||details.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:60722", + "downstream_local": "10.109.148.19:9080", + "downstream_remote": "10.244.0.13:45960", + "requested_server": "-", + "route_name": "default", + "uri_path": "/details/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:53:58.283Z] \"GET /reviews/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 358 2 2 \"-\" \"Go-http-client/1.1\" \"d7531ca4-cb43-9cc4-9e9c-d177af3988b6\" \"reviews:9080\" \"10.244.0.14:9080\" outbound|9080||reviews.bookinfo.svc.cluster.local 10.244.0.13:55880 10.99.45.111:9080 10.244.0.13:42924 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:53:58.283", + "timestampUnix": 1708941238283, + "accessLog": { + "authority": "reviews:9080", + "bytes_received": "0", + "bytes_sent": "358", + "duration": "2", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "d7531ca4-cb43-9cc4-9e9c-d177af3988b6", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:53:58.283Z", + "upstream_service": "10.244.0.14:9080", + "upstream_service_time": "2", + "upstream_cluster": "outbound|9080||reviews.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:55880", + "downstream_local": "10.99.45.111:9080", + "downstream_remote": "10.244.0.13:42924", + "requested_server": "-", + "route_name": "default", + "uri_path": "/reviews/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:53:58.274Z] \"GET /productpage HTTP/1.1\" 200 - via_upstream - \"-\" 0 4294 13 12 \"10.244.0.1\" \"Go-http-client/1.1\" \"d7531ca4-cb43-9cc4-9e9c-d177af3988b6\" \"192.168.49.2:30876\" \"10.244.0.13:9080\" inbound|9080|| 127.0.0.6:35337 10.244.0.13:9080 10.244.0.1:0 outbound_.9080_._.productpage.bookinfo.svc.cluster.local default", + "severity": "INFO", + "timestamp": "2024-02-26 09:53:58.274", + "timestampUnix": 1708941238274, + "accessLog": { + "authority": "192.168.49.2:30876", + "bytes_received": "0", + "bytes_sent": "4294", + "duration": "13", + "forwarded_for": "10.244.0.1", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "d7531ca4-cb43-9cc4-9e9c-d177af3988b6", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:53:58.274Z", + "upstream_service": "10.244.0.13:9080", + "upstream_service_time": "12", + "upstream_cluster": "inbound|9080||", + "upstream_local": "127.0.0.6:35337", + "downstream_local": "10.244.0.13:9080", + "downstream_remote": "10.244.0.1:0", + "requested_server": "outbound_.9080_._.productpage.bookinfo.svc.cluster.local", + "route_name": "default", + "uri_path": "/productpage", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:53:59.276Z] \"GET /details/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 178 1 1 \"-\" \"Go-http-client/1.1\" \"9e1e32d1-7fb4-9eea-a9b2-32764b5a3519\" \"details:9080\" \"10.244.0.10:9080\" outbound|9080||details.bookinfo.svc.cluster.local 10.244.0.13:58492 10.109.148.19:9080 10.244.0.13:45966 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:53:59.276", + "timestampUnix": 1708941239276, + "accessLog": { + "authority": "details:9080", + "bytes_received": "0", + "bytes_sent": "178", + "duration": "1", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "9e1e32d1-7fb4-9eea-a9b2-32764b5a3519", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:53:59.276Z", + "upstream_service": "10.244.0.10:9080", + "upstream_service_time": "1", + "upstream_cluster": "outbound|9080||details.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:58492", + "downstream_local": "10.109.148.19:9080", + "downstream_remote": "10.244.0.13:45966", + "requested_server": "-", + "route_name": "default", + "uri_path": "/details/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:53:59.280Z] \"GET /reviews/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 437 5 5 \"-\" \"Go-http-client/1.1\" \"9e1e32d1-7fb4-9eea-a9b2-32764b5a3519\" \"reviews:9080\" \"10.244.0.12:9080\" outbound|9080||reviews.bookinfo.svc.cluster.local 10.244.0.13:48578 10.99.45.111:9080 10.244.0.13:42926 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:53:59.28", + "timestampUnix": 1708941239280, + "accessLog": { + "authority": "reviews:9080", + "bytes_received": "0", + "bytes_sent": "437", + "duration": "5", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "9e1e32d1-7fb4-9eea-a9b2-32764b5a3519", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:53:59.280Z", + "upstream_service": "10.244.0.12:9080", + "upstream_service_time": "5", + "upstream_cluster": "outbound|9080||reviews.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:48578", + "downstream_local": "10.99.45.111:9080", + "downstream_remote": "10.244.0.13:42926", + "requested_server": "-", + "route_name": "default", + "uri_path": "/reviews/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:53:59.273Z] \"GET /productpage HTTP/1.1\" 200 - via_upstream - \"-\" 0 5289 14 13 \"10.244.0.1\" \"Go-http-client/1.1\" \"9e1e32d1-7fb4-9eea-a9b2-32764b5a3519\" \"192.168.49.2:30876\" \"10.244.0.13:9080\" inbound|9080|| 127.0.0.6:40853 10.244.0.13:9080 10.244.0.1:0 outbound_.9080_._.productpage.bookinfo.svc.cluster.local default", + "severity": "INFO", + "timestamp": "2024-02-26 09:53:59.273", + "timestampUnix": 1708941239273, + "accessLog": { + "authority": "192.168.49.2:30876", + "bytes_received": "0", + "bytes_sent": "5289", + "duration": "14", + "forwarded_for": "10.244.0.1", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "9e1e32d1-7fb4-9eea-a9b2-32764b5a3519", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:53:59.273Z", + "upstream_service": "10.244.0.13:9080", + "upstream_service_time": "13", + "upstream_cluster": "inbound|9080||", + "upstream_local": "127.0.0.6:40853", + "downstream_local": "10.244.0.13:9080", + "downstream_remote": "10.244.0.1:0", + "requested_server": "outbound_.9080_._.productpage.bookinfo.svc.cluster.local", + "route_name": "default", + "uri_path": "/productpage", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:54:00.284Z] \"GET /details/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 178 2 2 \"-\" \"Go-http-client/1.1\" \"405adb5d-3028-973a-bb7f-802b6f2deafd\" \"details:9080\" \"10.244.0.10:9080\" outbound|9080||details.bookinfo.svc.cluster.local 10.244.0.13:58492 10.109.148.19:9080 10.244.0.13:45970 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:54:00.284", + "timestampUnix": 1708941240284, + "accessLog": { + "authority": "details:9080", + "bytes_received": "0", + "bytes_sent": "178", + "duration": "2", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "405adb5d-3028-973a-bb7f-802b6f2deafd", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:54:00.284Z", + "upstream_service": "10.244.0.10:9080", + "upstream_service_time": "2", + "upstream_cluster": "outbound|9080||details.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:58492", + "downstream_local": "10.109.148.19:9080", + "downstream_remote": "10.244.0.13:45970", + "requested_server": "-", + "route_name": "default", + "uri_path": "/details/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:54:00.290Z] \"GET /reviews/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 442 7 6 \"-\" \"Go-http-client/1.1\" \"405adb5d-3028-973a-bb7f-802b6f2deafd\" \"reviews:9080\" \"10.244.0.15:9080\" outbound|9080||reviews.bookinfo.svc.cluster.local 10.244.0.13:32944 10.99.45.111:9080 10.244.0.13:42940 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:54:00.29", + "timestampUnix": 1708941240290, + "accessLog": { + "authority": "reviews:9080", + "bytes_received": "0", + "bytes_sent": "442", + "duration": "7", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "405adb5d-3028-973a-bb7f-802b6f2deafd", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:54:00.290Z", + "upstream_service": "10.244.0.15:9080", + "upstream_service_time": "6", + "upstream_cluster": "outbound|9080||reviews.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:32944", + "downstream_local": "10.99.45.111:9080", + "downstream_remote": "10.244.0.13:42940", + "requested_server": "-", + "route_name": "default", + "uri_path": "/reviews/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:54:00.274Z] \"GET /productpage HTTP/1.1\" 200 - via_upstream - \"-\" 0 5294 24 23 \"10.244.0.1\" \"Go-http-client/1.1\" \"405adb5d-3028-973a-bb7f-802b6f2deafd\" \"192.168.49.2:30876\" \"10.244.0.13:9080\" inbound|9080|| 127.0.0.6:39693 10.244.0.13:9080 10.244.0.1:0 outbound_.9080_._.productpage.bookinfo.svc.cluster.local default", + "severity": "INFO", + "timestamp": "2024-02-26 09:54:00.274", + "timestampUnix": 1708941240274, + "accessLog": { + "authority": "192.168.49.2:30876", + "bytes_received": "0", + "bytes_sent": "5294", + "duration": "24", + "forwarded_for": "10.244.0.1", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "405adb5d-3028-973a-bb7f-802b6f2deafd", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:54:00.274Z", + "upstream_service": "10.244.0.13:9080", + "upstream_service_time": "23", + "upstream_cluster": "inbound|9080||", + "upstream_local": "127.0.0.6:39693", + "downstream_local": "10.244.0.13:9080", + "downstream_remote": "10.244.0.1:0", + "requested_server": "outbound_.9080_._.productpage.bookinfo.svc.cluster.local", + "route_name": "default", + "uri_path": "/productpage", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:54:01.276Z] \"GET /details/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 178 1 1 \"-\" \"Go-http-client/1.1\" \"37e6c235-fb19-9ad2-95a8-0b1ca28f61d2\" \"details:9080\" \"10.244.0.10:9080\" outbound|9080||details.bookinfo.svc.cluster.local 10.244.0.13:60722 10.109.148.19:9080 10.244.0.13:45978 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:54:01.276", + "timestampUnix": 1708941241276, + "accessLog": { + "authority": "details:9080", + "bytes_received": "0", + "bytes_sent": "178", + "duration": "1", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "37e6c235-fb19-9ad2-95a8-0b1ca28f61d2", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:54:01.276Z", + "upstream_service": "10.244.0.10:9080", + "upstream_service_time": "1", + "upstream_cluster": "outbound|9080||details.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:60722", + "downstream_local": "10.109.148.19:9080", + "downstream_remote": "10.244.0.13:45978", + "requested_server": "-", + "route_name": "default", + "uri_path": "/details/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:54:01.280Z] \"GET /reviews/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 437 5 5 \"-\" \"Go-http-client/1.1\" \"37e6c235-fb19-9ad2-95a8-0b1ca28f61d2\" \"reviews:9080\" \"10.244.0.12:9080\" outbound|9080||reviews.bookinfo.svc.cluster.local 10.244.0.13:48584 10.99.45.111:9080 10.244.0.13:42950 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:54:01.28", + "timestampUnix": 1708941241280, + "accessLog": { + "authority": "reviews:9080", + "bytes_received": "0", + "bytes_sent": "437", + "duration": "5", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "37e6c235-fb19-9ad2-95a8-0b1ca28f61d2", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:54:01.280Z", + "upstream_service": "10.244.0.12:9080", + "upstream_service_time": "5", + "upstream_cluster": "outbound|9080||reviews.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:48584", + "downstream_local": "10.99.45.111:9080", + "downstream_remote": "10.244.0.13:42950", + "requested_server": "-", + "route_name": "default", + "uri_path": "/reviews/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:54:01.273Z] \"GET /productpage HTTP/1.1\" 200 - via_upstream - \"-\" 0 5289 13 13 \"10.244.0.1\" \"Go-http-client/1.1\" \"37e6c235-fb19-9ad2-95a8-0b1ca28f61d2\" \"192.168.49.2:30876\" \"10.244.0.13:9080\" inbound|9080|| 127.0.0.6:55295 10.244.0.13:9080 10.244.0.1:0 outbound_.9080_._.productpage.bookinfo.svc.cluster.local default", + "severity": "INFO", + "timestamp": "2024-02-26 09:54:01.273", + "timestampUnix": 1708941241273, + "accessLog": { + "authority": "192.168.49.2:30876", + "bytes_received": "0", + "bytes_sent": "5289", + "duration": "13", + "forwarded_for": "10.244.0.1", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "37e6c235-fb19-9ad2-95a8-0b1ca28f61d2", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:54:01.273Z", + "upstream_service": "10.244.0.13:9080", + "upstream_service_time": "13", + "upstream_cluster": "inbound|9080||", + "upstream_local": "127.0.0.6:55295", + "downstream_local": "10.244.0.13:9080", + "downstream_remote": "10.244.0.1:0", + "requested_server": "outbound_.9080_._.productpage.bookinfo.svc.cluster.local", + "route_name": "default", + "uri_path": "/productpage", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:54:02.277Z] \"GET /details/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 178 1 1 \"-\" \"Go-http-client/1.1\" \"72c857dd-476a-919c-868c-dbb10a2a52dd\" \"details:9080\" \"10.244.0.10:9080\" outbound|9080||details.bookinfo.svc.cluster.local 10.244.0.13:60722 10.109.148.19:9080 10.244.0.13:45986 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:54:02.277", + "timestampUnix": 1708941242277, + "accessLog": { + "authority": "details:9080", + "bytes_received": "0", + "bytes_sent": "178", + "duration": "1", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "72c857dd-476a-919c-868c-dbb10a2a52dd", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:54:02.277Z", + "upstream_service": "10.244.0.10:9080", + "upstream_service_time": "1", + "upstream_cluster": "outbound|9080||details.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:60722", + "downstream_local": "10.109.148.19:9080", + "downstream_remote": "10.244.0.13:45986", + "requested_server": "-", + "route_name": "default", + "uri_path": "/details/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:54:02.281Z] \"GET /reviews/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 442 6 6 \"-\" \"Go-http-client/1.1\" \"72c857dd-476a-919c-868c-dbb10a2a52dd\" \"reviews:9080\" \"10.244.0.15:9080\" outbound|9080||reviews.bookinfo.svc.cluster.local 10.244.0.13:32944 10.99.45.111:9080 10.244.0.13:42952 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:54:02.281", + "timestampUnix": 1708941242281, + "accessLog": { + "authority": "reviews:9080", + "bytes_received": "0", + "bytes_sent": "442", + "duration": "6", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "72c857dd-476a-919c-868c-dbb10a2a52dd", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:54:02.281Z", + "upstream_service": "10.244.0.15:9080", + "upstream_service_time": "6", + "upstream_cluster": "outbound|9080||reviews.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:32944", + "downstream_local": "10.99.45.111:9080", + "downstream_remote": "10.244.0.13:42952", + "requested_server": "-", + "route_name": "default", + "uri_path": "/reviews/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:54:02.273Z] \"GET /productpage HTTP/1.1\" 200 - via_upstream - \"-\" 0 5294 15 15 \"10.244.0.1\" \"Go-http-client/1.1\" \"72c857dd-476a-919c-868c-dbb10a2a52dd\" \"192.168.49.2:30876\" \"10.244.0.13:9080\" inbound|9080|| 127.0.0.6:57129 10.244.0.13:9080 10.244.0.1:0 outbound_.9080_._.productpage.bookinfo.svc.cluster.local default", + "severity": "INFO", + "timestamp": "2024-02-26 09:54:02.273", + "timestampUnix": 1708941242273, + "accessLog": { + "authority": "192.168.49.2:30876", + "bytes_received": "0", + "bytes_sent": "5294", + "duration": "15", + "forwarded_for": "10.244.0.1", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "72c857dd-476a-919c-868c-dbb10a2a52dd", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:54:02.273Z", + "upstream_service": "10.244.0.13:9080", + "upstream_service_time": "15", + "upstream_cluster": "inbound|9080||", + "upstream_local": "127.0.0.6:57129", + "downstream_local": "10.244.0.13:9080", + "downstream_remote": "10.244.0.1:0", + "requested_server": "outbound_.9080_._.productpage.bookinfo.svc.cluster.local", + "route_name": "default", + "uri_path": "/productpage", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:54:03.276Z] \"GET /details/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 178 1 1 \"-\" \"Go-http-client/1.1\" \"b7127060-66b8-9b68-b8c1-77e0834a99ab\" \"details:9080\" \"10.244.0.10:9080\" outbound|9080||details.bookinfo.svc.cluster.local 10.244.0.13:60722 10.109.148.19:9080 10.244.0.13:46000 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:54:03.276", + "timestampUnix": 1708941243276, + "accessLog": { + "authority": "details:9080", + "bytes_received": "0", + "bytes_sent": "178", + "duration": "1", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "b7127060-66b8-9b68-b8c1-77e0834a99ab", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:54:03.276Z", + "upstream_service": "10.244.0.10:9080", + "upstream_service_time": "1", + "upstream_cluster": "outbound|9080||details.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:60722", + "downstream_local": "10.109.148.19:9080", + "downstream_remote": "10.244.0.13:46000", + "requested_server": "-", + "route_name": "default", + "uri_path": "/details/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:54:03.281Z] \"GET /reviews/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 442 6 6 \"-\" \"Go-http-client/1.1\" \"b7127060-66b8-9b68-b8c1-77e0834a99ab\" \"reviews:9080\" \"10.244.0.15:9080\" outbound|9080||reviews.bookinfo.svc.cluster.local 10.244.0.13:32944 10.99.45.111:9080 10.244.0.13:42956 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:54:03.281", + "timestampUnix": 1708941243281, + "accessLog": { + "authority": "reviews:9080", + "bytes_received": "0", + "bytes_sent": "442", + "duration": "6", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "b7127060-66b8-9b68-b8c1-77e0834a99ab", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:54:03.281Z", + "upstream_service": "10.244.0.15:9080", + "upstream_service_time": "6", + "upstream_cluster": "outbound|9080||reviews.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:32944", + "downstream_local": "10.99.45.111:9080", + "downstream_remote": "10.244.0.13:42956", + "requested_server": "-", + "route_name": "default", + "uri_path": "/reviews/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:54:03.273Z] \"GET /productpage HTTP/1.1\" 200 - via_upstream - \"-\" 0 5294 16 16 \"10.244.0.1\" \"Go-http-client/1.1\" \"b7127060-66b8-9b68-b8c1-77e0834a99ab\" \"192.168.49.2:30876\" \"10.244.0.13:9080\" inbound|9080|| 127.0.0.6:43729 10.244.0.13:9080 10.244.0.1:0 outbound_.9080_._.productpage.bookinfo.svc.cluster.local default", + "severity": "INFO", + "timestamp": "2024-02-26 09:54:03.273", + "timestampUnix": 1708941243273, + "accessLog": { + "authority": "192.168.49.2:30876", + "bytes_received": "0", + "bytes_sent": "5294", + "duration": "16", + "forwarded_for": "10.244.0.1", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "b7127060-66b8-9b68-b8c1-77e0834a99ab", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:54:03.273Z", + "upstream_service": "10.244.0.13:9080", + "upstream_service_time": "16", + "upstream_cluster": "inbound|9080||", + "upstream_local": "127.0.0.6:43729", + "downstream_local": "10.244.0.13:9080", + "downstream_remote": "10.244.0.1:0", + "requested_server": "outbound_.9080_._.productpage.bookinfo.svc.cluster.local", + "route_name": "default", + "uri_path": "/productpage", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:54:04.277Z] \"GET /details/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 178 1 1 \"-\" \"Go-http-client/1.1\" \"36022395-872e-91c6-bb48-5c1edf9061bb\" \"details:9080\" \"10.244.0.10:9080\" outbound|9080||details.bookinfo.svc.cluster.local 10.244.0.13:60722 10.109.148.19:9080 10.244.0.13:46004 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:54:04.277", + "timestampUnix": 1708941244277, + "accessLog": { + "authority": "details:9080", + "bytes_received": "0", + "bytes_sent": "178", + "duration": "1", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "36022395-872e-91c6-bb48-5c1edf9061bb", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:54:04.277Z", + "upstream_service": "10.244.0.10:9080", + "upstream_service_time": "1", + "upstream_cluster": "outbound|9080||details.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:60722", + "downstream_local": "10.109.148.19:9080", + "downstream_remote": "10.244.0.13:46004", + "requested_server": "-", + "route_name": "default", + "uri_path": "/details/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:54:04.280Z] \"GET /reviews/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 437 6 6 \"-\" \"Go-http-client/1.1\" \"36022395-872e-91c6-bb48-5c1edf9061bb\" \"reviews:9080\" \"10.244.0.12:9080\" outbound|9080||reviews.bookinfo.svc.cluster.local 10.244.0.13:48584 10.99.45.111:9080 10.244.0.13:42958 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:54:04.28", + "timestampUnix": 1708941244280, + "accessLog": { + "authority": "reviews:9080", + "bytes_received": "0", + "bytes_sent": "437", + "duration": "6", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "36022395-872e-91c6-bb48-5c1edf9061bb", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:54:04.280Z", + "upstream_service": "10.244.0.12:9080", + "upstream_service_time": "6", + "upstream_cluster": "outbound|9080||reviews.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:48584", + "downstream_local": "10.99.45.111:9080", + "downstream_remote": "10.244.0.13:42958", + "requested_server": "-", + "route_name": "default", + "uri_path": "/reviews/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:54:04.273Z] \"GET /productpage HTTP/1.1\" 200 - via_upstream - \"-\" 0 5289 14 14 \"10.244.0.1\" \"Go-http-client/1.1\" \"36022395-872e-91c6-bb48-5c1edf9061bb\" \"192.168.49.2:30876\" \"10.244.0.13:9080\" inbound|9080|| 127.0.0.6:38113 10.244.0.13:9080 10.244.0.1:0 outbound_.9080_._.productpage.bookinfo.svc.cluster.local default", + "severity": "INFO", + "timestamp": "2024-02-26 09:54:04.273", + "timestampUnix": 1708941244273, + "accessLog": { + "authority": "192.168.49.2:30876", + "bytes_received": "0", + "bytes_sent": "5289", + "duration": "14", + "forwarded_for": "10.244.0.1", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "36022395-872e-91c6-bb48-5c1edf9061bb", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:54:04.273Z", + "upstream_service": "10.244.0.13:9080", + "upstream_service_time": "14", + "upstream_cluster": "inbound|9080||", + "upstream_local": "127.0.0.6:38113", + "downstream_local": "10.244.0.13:9080", + "downstream_remote": "10.244.0.1:0", + "requested_server": "outbound_.9080_._.productpage.bookinfo.svc.cluster.local", + "route_name": "default", + "uri_path": "/productpage", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:54:05.276Z] \"GET /details/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 178 1 1 \"-\" \"Go-http-client/1.1\" \"7f24337f-85cf-9167-bea9-1f7afdc6f117\" \"details:9080\" \"10.244.0.10:9080\" outbound|9080||details.bookinfo.svc.cluster.local 10.244.0.13:60722 10.109.148.19:9080 10.244.0.13:46018 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:54:05.276", + "timestampUnix": 1708941245276, + "accessLog": { + "authority": "details:9080", + "bytes_received": "0", + "bytes_sent": "178", + "duration": "1", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "7f24337f-85cf-9167-bea9-1f7afdc6f117", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:54:05.276Z", + "upstream_service": "10.244.0.10:9080", + "upstream_service_time": "1", + "upstream_cluster": "outbound|9080||details.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:60722", + "downstream_local": "10.109.148.19:9080", + "downstream_remote": "10.244.0.13:46018", + "requested_server": "-", + "route_name": "default", + "uri_path": "/details/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:54:05.280Z] \"GET /reviews/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 442 6 6 \"-\" \"Go-http-client/1.1\" \"7f24337f-85cf-9167-bea9-1f7afdc6f117\" \"reviews:9080\" \"10.244.0.15:9080\" outbound|9080||reviews.bookinfo.svc.cluster.local 10.244.0.13:32944 10.99.45.111:9080 10.244.0.13:42968 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:54:05.28", + "timestampUnix": 1708941245280, + "accessLog": { + "authority": "reviews:9080", + "bytes_received": "0", + "bytes_sent": "442", + "duration": "6", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "7f24337f-85cf-9167-bea9-1f7afdc6f117", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:54:05.280Z", + "upstream_service": "10.244.0.15:9080", + "upstream_service_time": "6", + "upstream_cluster": "outbound|9080||reviews.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:32944", + "downstream_local": "10.99.45.111:9080", + "downstream_remote": "10.244.0.13:42968", + "requested_server": "-", + "route_name": "default", + "uri_path": "/reviews/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:54:05.273Z] \"GET /productpage HTTP/1.1\" 200 - via_upstream - \"-\" 0 5294 15 14 \"10.244.0.1\" \"Go-http-client/1.1\" \"7f24337f-85cf-9167-bea9-1f7afdc6f117\" \"192.168.49.2:30876\" \"10.244.0.13:9080\" inbound|9080|| 127.0.0.6:52717 10.244.0.13:9080 10.244.0.1:0 outbound_.9080_._.productpage.bookinfo.svc.cluster.local default", + "severity": "INFO", + "timestamp": "2024-02-26 09:54:05.273", + "timestampUnix": 1708941245273, + "accessLog": { + "authority": "192.168.49.2:30876", + "bytes_received": "0", + "bytes_sent": "5294", + "duration": "15", + "forwarded_for": "10.244.0.1", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "7f24337f-85cf-9167-bea9-1f7afdc6f117", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:54:05.273Z", + "upstream_service": "10.244.0.13:9080", + "upstream_service_time": "14", + "upstream_cluster": "inbound|9080||", + "upstream_local": "127.0.0.6:52717", + "downstream_local": "10.244.0.13:9080", + "downstream_remote": "10.244.0.1:0", + "requested_server": "outbound_.9080_._.productpage.bookinfo.svc.cluster.local", + "route_name": "default", + "uri_path": "/productpage", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:54:06.276Z] \"GET /details/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 178 1 1 \"-\" \"Go-http-client/1.1\" \"878fa4a7-7f87-9b21-97ff-35b94849996e\" \"details:9080\" \"10.244.0.10:9080\" outbound|9080||details.bookinfo.svc.cluster.local 10.244.0.13:58492 10.109.148.19:9080 10.244.0.13:46024 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:54:06.276", + "timestampUnix": 1708941246276, + "accessLog": { + "authority": "details:9080", + "bytes_received": "0", + "bytes_sent": "178", + "duration": "1", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "878fa4a7-7f87-9b21-97ff-35b94849996e", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:54:06.276Z", + "upstream_service": "10.244.0.10:9080", + "upstream_service_time": "1", + "upstream_cluster": "outbound|9080||details.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:58492", + "downstream_local": "10.109.148.19:9080", + "downstream_remote": "10.244.0.13:46024", + "requested_server": "-", + "route_name": "default", + "uri_path": "/details/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:54:06.280Z] \"GET /reviews/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 437 5 5 \"-\" \"Go-http-client/1.1\" \"878fa4a7-7f87-9b21-97ff-35b94849996e\" \"reviews:9080\" \"10.244.0.12:9080\" outbound|9080||reviews.bookinfo.svc.cluster.local 10.244.0.13:48584 10.99.45.111:9080 10.244.0.13:42972 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:54:06.28", + "timestampUnix": 1708941246280, + "accessLog": { + "authority": "reviews:9080", + "bytes_received": "0", + "bytes_sent": "437", + "duration": "5", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "878fa4a7-7f87-9b21-97ff-35b94849996e", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:54:06.280Z", + "upstream_service": "10.244.0.12:9080", + "upstream_service_time": "5", + "upstream_cluster": "outbound|9080||reviews.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:48584", + "downstream_local": "10.99.45.111:9080", + "downstream_remote": "10.244.0.13:42972", + "requested_server": "-", + "route_name": "default", + "uri_path": "/reviews/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:54:06.273Z] \"GET /productpage HTTP/1.1\" 200 - via_upstream - \"-\" 0 5289 13 13 \"10.244.0.1\" \"Go-http-client/1.1\" \"878fa4a7-7f87-9b21-97ff-35b94849996e\" \"192.168.49.2:30876\" \"10.244.0.13:9080\" inbound|9080|| 127.0.0.6:52227 10.244.0.13:9080 10.244.0.1:0 outbound_.9080_._.productpage.bookinfo.svc.cluster.local default", + "severity": "INFO", + "timestamp": "2024-02-26 09:54:06.273", + "timestampUnix": 1708941246273, + "accessLog": { + "authority": "192.168.49.2:30876", + "bytes_received": "0", + "bytes_sent": "5289", + "duration": "13", + "forwarded_for": "10.244.0.1", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "878fa4a7-7f87-9b21-97ff-35b94849996e", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:54:06.273Z", + "upstream_service": "10.244.0.13:9080", + "upstream_service_time": "13", + "upstream_cluster": "inbound|9080||", + "upstream_local": "127.0.0.6:52227", + "downstream_local": "10.244.0.13:9080", + "downstream_remote": "10.244.0.1:0", + "requested_server": "outbound_.9080_._.productpage.bookinfo.svc.cluster.local", + "route_name": "default", + "uri_path": "/productpage", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:54:07.276Z] \"GET /details/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 178 1 1 \"-\" \"Go-http-client/1.1\" \"29cb007d-688b-9c6f-91ad-28c4f3aceec0\" \"details:9080\" \"10.244.0.10:9080\" outbound|9080||details.bookinfo.svc.cluster.local 10.244.0.13:58492 10.109.148.19:9080 10.244.0.13:38892 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:54:07.276", + "timestampUnix": 1708941247276, + "accessLog": { + "authority": "details:9080", + "bytes_received": "0", + "bytes_sent": "178", + "duration": "1", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "29cb007d-688b-9c6f-91ad-28c4f3aceec0", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:54:07.276Z", + "upstream_service": "10.244.0.10:9080", + "upstream_service_time": "1", + "upstream_cluster": "outbound|9080||details.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:58492", + "downstream_local": "10.109.148.19:9080", + "downstream_remote": "10.244.0.13:38892", + "requested_server": "-", + "route_name": "default", + "uri_path": "/details/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:54:07.279Z] \"GET /reviews/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 437 7 6 \"-\" \"Go-http-client/1.1\" \"29cb007d-688b-9c6f-91ad-28c4f3aceec0\" \"reviews:9080\" \"10.244.0.12:9080\" outbound|9080||reviews.bookinfo.svc.cluster.local 10.244.0.13:48584 10.99.45.111:9080 10.244.0.13:48382 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:54:07.279", + "timestampUnix": 1708941247279, + "accessLog": { + "authority": "reviews:9080", + "bytes_received": "0", + "bytes_sent": "437", + "duration": "7", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "29cb007d-688b-9c6f-91ad-28c4f3aceec0", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:54:07.279Z", + "upstream_service": "10.244.0.12:9080", + "upstream_service_time": "6", + "upstream_cluster": "outbound|9080||reviews.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:48584", + "downstream_local": "10.99.45.111:9080", + "downstream_remote": "10.244.0.13:48382", + "requested_server": "-", + "route_name": "default", + "uri_path": "/reviews/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:54:07.273Z] \"GET /productpage HTTP/1.1\" 200 - via_upstream - \"-\" 0 5289 14 14 \"10.244.0.1\" \"Go-http-client/1.1\" \"29cb007d-688b-9c6f-91ad-28c4f3aceec0\" \"192.168.49.2:30876\" \"10.244.0.13:9080\" inbound|9080|| 127.0.0.6:47307 10.244.0.13:9080 10.244.0.1:0 outbound_.9080_._.productpage.bookinfo.svc.cluster.local default", + "severity": "INFO", + "timestamp": "2024-02-26 09:54:07.273", + "timestampUnix": 1708941247273, + "accessLog": { + "authority": "192.168.49.2:30876", + "bytes_received": "0", + "bytes_sent": "5289", + "duration": "14", + "forwarded_for": "10.244.0.1", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "29cb007d-688b-9c6f-91ad-28c4f3aceec0", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:54:07.273Z", + "upstream_service": "10.244.0.13:9080", + "upstream_service_time": "14", + "upstream_cluster": "inbound|9080||", + "upstream_local": "127.0.0.6:47307", + "downstream_local": "10.244.0.13:9080", + "downstream_remote": "10.244.0.1:0", + "requested_server": "outbound_.9080_._.productpage.bookinfo.svc.cluster.local", + "route_name": "default", + "uri_path": "/productpage", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:54:08.276Z] \"GET /details/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 178 1 1 \"-\" \"Go-http-client/1.1\" \"0ab4bb30-c83c-9fca-8aea-5377d4716ccd\" \"details:9080\" \"10.244.0.10:9080\" outbound|9080||details.bookinfo.svc.cluster.local 10.244.0.13:58492 10.109.148.19:9080 10.244.0.13:38898 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:54:08.276", + "timestampUnix": 1708941248276, + "accessLog": { + "authority": "details:9080", + "bytes_received": "0", + "bytes_sent": "178", + "duration": "1", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "0ab4bb30-c83c-9fca-8aea-5377d4716ccd", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:54:08.276Z", + "upstream_service": "10.244.0.10:9080", + "upstream_service_time": "1", + "upstream_cluster": "outbound|9080||details.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:58492", + "downstream_local": "10.109.148.19:9080", + "downstream_remote": "10.244.0.13:38898", + "requested_server": "-", + "route_name": "default", + "uri_path": "/details/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:54:08.281Z] \"GET /reviews/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 442 7 6 \"-\" \"Go-http-client/1.1\" \"0ab4bb30-c83c-9fca-8aea-5377d4716ccd\" \"reviews:9080\" \"10.244.0.15:9080\" outbound|9080||reviews.bookinfo.svc.cluster.local 10.244.0.13:32944 10.99.45.111:9080 10.244.0.13:48388 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:54:08.281", + "timestampUnix": 1708941248281, + "accessLog": { + "authority": "reviews:9080", + "bytes_received": "0", + "bytes_sent": "442", + "duration": "7", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "0ab4bb30-c83c-9fca-8aea-5377d4716ccd", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:54:08.281Z", + "upstream_service": "10.244.0.15:9080", + "upstream_service_time": "6", + "upstream_cluster": "outbound|9080||reviews.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:32944", + "downstream_local": "10.99.45.111:9080", + "downstream_remote": "10.244.0.13:48388", + "requested_server": "-", + "route_name": "default", + "uri_path": "/reviews/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:54:08.273Z] \"GET /productpage HTTP/1.1\" 200 - via_upstream - \"-\" 0 5294 16 16 \"10.244.0.1\" \"Go-http-client/1.1\" \"0ab4bb30-c83c-9fca-8aea-5377d4716ccd\" \"192.168.49.2:30876\" \"10.244.0.13:9080\" inbound|9080|| 127.0.0.6:55565 10.244.0.13:9080 10.244.0.1:0 outbound_.9080_._.productpage.bookinfo.svc.cluster.local default", + "severity": "INFO", + "timestamp": "2024-02-26 09:54:08.273", + "timestampUnix": 1708941248273, + "accessLog": { + "authority": "192.168.49.2:30876", + "bytes_received": "0", + "bytes_sent": "5294", + "duration": "16", + "forwarded_for": "10.244.0.1", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "0ab4bb30-c83c-9fca-8aea-5377d4716ccd", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:54:08.273Z", + "upstream_service": "10.244.0.13:9080", + "upstream_service_time": "16", + "upstream_cluster": "inbound|9080||", + "upstream_local": "127.0.0.6:55565", + "downstream_local": "10.244.0.13:9080", + "downstream_remote": "10.244.0.1:0", + "requested_server": "outbound_.9080_._.productpage.bookinfo.svc.cluster.local", + "route_name": "default", + "uri_path": "/productpage", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:54:09.284Z] \"GET /details/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 178 4 3 \"-\" \"Go-http-client/1.1\" \"3638d680-e668-91dc-a991-f03fc634b730\" \"details:9080\" \"10.244.0.10:9080\" outbound|9080||details.bookinfo.svc.cluster.local 10.244.0.13:58492 10.109.148.19:9080 10.244.0.13:38904 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:54:09.284", + "timestampUnix": 1708941249284, + "accessLog": { + "authority": "details:9080", + "bytes_received": "0", + "bytes_sent": "178", + "duration": "4", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "3638d680-e668-91dc-a991-f03fc634b730", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:54:09.284Z", + "upstream_service": "10.244.0.10:9080", + "upstream_service_time": "3", + "upstream_cluster": "outbound|9080||details.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:58492", + "downstream_local": "10.109.148.19:9080", + "downstream_remote": "10.244.0.13:38904", + "requested_server": "-", + "route_name": "default", + "uri_path": "/details/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:54:09.297Z] \"GET /reviews/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 437 8 7 \"-\" \"Go-http-client/1.1\" \"3638d680-e668-91dc-a991-f03fc634b730\" \"reviews:9080\" \"10.244.0.12:9080\" outbound|9080||reviews.bookinfo.svc.cluster.local 10.244.0.13:48584 10.99.45.111:9080 10.244.0.13:48392 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:54:09.297", + "timestampUnix": 1708941249297, + "accessLog": { + "authority": "reviews:9080", + "bytes_received": "0", + "bytes_sent": "437", + "duration": "8", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "3638d680-e668-91dc-a991-f03fc634b730", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:54:09.297Z", + "upstream_service": "10.244.0.12:9080", + "upstream_service_time": "7", + "upstream_cluster": "outbound|9080||reviews.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:48584", + "downstream_local": "10.99.45.111:9080", + "downstream_remote": "10.244.0.13:48392", + "requested_server": "-", + "route_name": "default", + "uri_path": "/reviews/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:54:09.274Z] \"GET /productpage HTTP/1.1\" 200 - via_upstream - \"-\" 0 5289 33 32 \"10.244.0.1\" \"Go-http-client/1.1\" \"3638d680-e668-91dc-a991-f03fc634b730\" \"192.168.49.2:30876\" \"10.244.0.13:9080\" inbound|9080|| 127.0.0.6:59393 10.244.0.13:9080 10.244.0.1:0 outbound_.9080_._.productpage.bookinfo.svc.cluster.local default", + "severity": "INFO", + "timestamp": "2024-02-26 09:54:09.274", + "timestampUnix": 1708941249274, + "accessLog": { + "authority": "192.168.49.2:30876", + "bytes_received": "0", + "bytes_sent": "5289", + "duration": "33", + "forwarded_for": "10.244.0.1", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "3638d680-e668-91dc-a991-f03fc634b730", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:54:09.274Z", + "upstream_service": "10.244.0.13:9080", + "upstream_service_time": "32", + "upstream_cluster": "inbound|9080||", + "upstream_local": "127.0.0.6:59393", + "downstream_local": "10.244.0.13:9080", + "downstream_remote": "10.244.0.1:0", + "requested_server": "outbound_.9080_._.productpage.bookinfo.svc.cluster.local", + "route_name": "default", + "uri_path": "/productpage", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:54:10.276Z] \"GET /details/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 178 1 1 \"-\" \"Go-http-client/1.1\" \"6de70e73-2ffc-992d-9ac1-1e885ab6a574\" \"details:9080\" \"10.244.0.10:9080\" outbound|9080||details.bookinfo.svc.cluster.local 10.244.0.13:60722 10.109.148.19:9080 10.244.0.13:38914 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:54:10.276", + "timestampUnix": 1708941250276, + "accessLog": { + "authority": "details:9080", + "bytes_received": "0", + "bytes_sent": "178", + "duration": "1", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "6de70e73-2ffc-992d-9ac1-1e885ab6a574", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:54:10.276Z", + "upstream_service": "10.244.0.10:9080", + "upstream_service_time": "1", + "upstream_cluster": "outbound|9080||details.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:60722", + "downstream_local": "10.109.148.19:9080", + "downstream_remote": "10.244.0.13:38914", + "requested_server": "-", + "route_name": "default", + "uri_path": "/details/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:54:10.280Z] \"GET /reviews/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 442 6 5 \"-\" \"Go-http-client/1.1\" \"6de70e73-2ffc-992d-9ac1-1e885ab6a574\" \"reviews:9080\" \"10.244.0.15:9080\" outbound|9080||reviews.bookinfo.svc.cluster.local 10.244.0.13:32944 10.99.45.111:9080 10.244.0.13:48394 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:54:10.28", + "timestampUnix": 1708941250280, + "accessLog": { + "authority": "reviews:9080", + "bytes_received": "0", + "bytes_sent": "442", + "duration": "6", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "6de70e73-2ffc-992d-9ac1-1e885ab6a574", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:54:10.280Z", + "upstream_service": "10.244.0.15:9080", + "upstream_service_time": "5", + "upstream_cluster": "outbound|9080||reviews.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:32944", + "downstream_local": "10.99.45.111:9080", + "downstream_remote": "10.244.0.13:48394", + "requested_server": "-", + "route_name": "default", + "uri_path": "/reviews/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:54:10.273Z] \"GET /productpage HTTP/1.1\" 200 - via_upstream - \"-\" 0 5294 15 14 \"10.244.0.1\" \"Go-http-client/1.1\" \"6de70e73-2ffc-992d-9ac1-1e885ab6a574\" \"192.168.49.2:30876\" \"10.244.0.13:9080\" inbound|9080|| 127.0.0.6:45463 10.244.0.13:9080 10.244.0.1:0 outbound_.9080_._.productpage.bookinfo.svc.cluster.local default", + "severity": "INFO", + "timestamp": "2024-02-26 09:54:10.273", + "timestampUnix": 1708941250273, + "accessLog": { + "authority": "192.168.49.2:30876", + "bytes_received": "0", + "bytes_sent": "5294", + "duration": "15", + "forwarded_for": "10.244.0.1", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "6de70e73-2ffc-992d-9ac1-1e885ab6a574", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:54:10.273Z", + "upstream_service": "10.244.0.13:9080", + "upstream_service_time": "14", + "upstream_cluster": "inbound|9080||", + "upstream_local": "127.0.0.6:45463", + "downstream_local": "10.244.0.13:9080", + "downstream_remote": "10.244.0.1:0", + "requested_server": "outbound_.9080_._.productpage.bookinfo.svc.cluster.local", + "route_name": "default", + "uri_path": "/productpage", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:54:11.276Z] \"GET /details/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 178 1 1 \"-\" \"Go-http-client/1.1\" \"3990b111-40eb-90cc-9669-d6a534fabcbd\" \"details:9080\" \"10.244.0.10:9080\" outbound|9080||details.bookinfo.svc.cluster.local 10.244.0.13:60722 10.109.148.19:9080 10.244.0.13:38916 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:54:11.276", + "timestampUnix": 1708941251276, + "accessLog": { + "authority": "details:9080", + "bytes_received": "0", + "bytes_sent": "178", + "duration": "1", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "3990b111-40eb-90cc-9669-d6a534fabcbd", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:54:11.276Z", + "upstream_service": "10.244.0.10:9080", + "upstream_service_time": "1", + "upstream_cluster": "outbound|9080||details.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:60722", + "downstream_local": "10.109.148.19:9080", + "downstream_remote": "10.244.0.13:38916", + "requested_server": "-", + "route_name": "default", + "uri_path": "/details/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:54:11.280Z] \"GET /reviews/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 442 6 5 \"-\" \"Go-http-client/1.1\" \"3990b111-40eb-90cc-9669-d6a534fabcbd\" \"reviews:9080\" \"10.244.0.15:9080\" outbound|9080||reviews.bookinfo.svc.cluster.local 10.244.0.13:50830 10.99.45.111:9080 10.244.0.13:48410 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:54:11.28", + "timestampUnix": 1708941251280, + "accessLog": { + "authority": "reviews:9080", + "bytes_received": "0", + "bytes_sent": "442", + "duration": "6", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "3990b111-40eb-90cc-9669-d6a534fabcbd", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:54:11.280Z", + "upstream_service": "10.244.0.15:9080", + "upstream_service_time": "5", + "upstream_cluster": "outbound|9080||reviews.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:50830", + "downstream_local": "10.99.45.111:9080", + "downstream_remote": "10.244.0.13:48410", + "requested_server": "-", + "route_name": "default", + "uri_path": "/reviews/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:54:11.273Z] \"GET /productpage HTTP/1.1\" 200 - via_upstream - \"-\" 0 5294 14 14 \"10.244.0.1\" \"Go-http-client/1.1\" \"3990b111-40eb-90cc-9669-d6a534fabcbd\" \"192.168.49.2:30876\" \"10.244.0.13:9080\" inbound|9080|| 127.0.0.6:57635 10.244.0.13:9080 10.244.0.1:0 outbound_.9080_._.productpage.bookinfo.svc.cluster.local default", + "severity": "INFO", + "timestamp": "2024-02-26 09:54:11.273", + "timestampUnix": 1708941251273, + "accessLog": { + "authority": "192.168.49.2:30876", + "bytes_received": "0", + "bytes_sent": "5294", + "duration": "14", + "forwarded_for": "10.244.0.1", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "3990b111-40eb-90cc-9669-d6a534fabcbd", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:54:11.273Z", + "upstream_service": "10.244.0.13:9080", + "upstream_service_time": "14", + "upstream_cluster": "inbound|9080||", + "upstream_local": "127.0.0.6:57635", + "downstream_local": "10.244.0.13:9080", + "downstream_remote": "10.244.0.1:0", + "requested_server": "outbound_.9080_._.productpage.bookinfo.svc.cluster.local", + "route_name": "default", + "uri_path": "/productpage", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:54:12.277Z] \"GET /details/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 178 1 1 \"-\" \"Go-http-client/1.1\" \"04439ef0-4687-9bcb-9049-107c8d212136\" \"details:9080\" \"10.244.0.10:9080\" outbound|9080||details.bookinfo.svc.cluster.local 10.244.0.13:60722 10.109.148.19:9080 10.244.0.13:38926 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:54:12.277", + "timestampUnix": 1708941252277, + "accessLog": { + "authority": "details:9080", + "bytes_received": "0", + "bytes_sent": "178", + "duration": "1", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "04439ef0-4687-9bcb-9049-107c8d212136", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:54:12.277Z", + "upstream_service": "10.244.0.10:9080", + "upstream_service_time": "1", + "upstream_cluster": "outbound|9080||details.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:60722", + "downstream_local": "10.109.148.19:9080", + "downstream_remote": "10.244.0.13:38926", + "requested_server": "-", + "route_name": "default", + "uri_path": "/details/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:54:12.281Z] \"GET /reviews/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 437 7 7 \"-\" \"Go-http-client/1.1\" \"04439ef0-4687-9bcb-9049-107c8d212136\" \"reviews:9080\" \"10.244.0.12:9080\" outbound|9080||reviews.bookinfo.svc.cluster.local 10.244.0.13:48584 10.99.45.111:9080 10.244.0.13:48412 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:54:12.281", + "timestampUnix": 1708941252281, + "accessLog": { + "authority": "reviews:9080", + "bytes_received": "0", + "bytes_sent": "437", + "duration": "7", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "04439ef0-4687-9bcb-9049-107c8d212136", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:54:12.281Z", + "upstream_service": "10.244.0.12:9080", + "upstream_service_time": "7", + "upstream_cluster": "outbound|9080||reviews.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:48584", + "downstream_local": "10.99.45.111:9080", + "downstream_remote": "10.244.0.13:48412", + "requested_server": "-", + "route_name": "default", + "uri_path": "/reviews/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:54:12.273Z] \"GET /productpage HTTP/1.1\" 200 - via_upstream - \"-\" 0 5289 17 16 \"10.244.0.1\" \"Go-http-client/1.1\" \"04439ef0-4687-9bcb-9049-107c8d212136\" \"192.168.49.2:30876\" \"10.244.0.13:9080\" inbound|9080|| 127.0.0.6:54141 10.244.0.13:9080 10.244.0.1:0 outbound_.9080_._.productpage.bookinfo.svc.cluster.local default", + "severity": "INFO", + "timestamp": "2024-02-26 09:54:12.273", + "timestampUnix": 1708941252273, + "accessLog": { + "authority": "192.168.49.2:30876", + "bytes_received": "0", + "bytes_sent": "5289", + "duration": "17", + "forwarded_for": "10.244.0.1", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "04439ef0-4687-9bcb-9049-107c8d212136", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:54:12.273Z", + "upstream_service": "10.244.0.13:9080", + "upstream_service_time": "16", + "upstream_cluster": "inbound|9080||", + "upstream_local": "127.0.0.6:54141", + "downstream_local": "10.244.0.13:9080", + "downstream_remote": "10.244.0.1:0", + "requested_server": "outbound_.9080_._.productpage.bookinfo.svc.cluster.local", + "route_name": "default", + "uri_path": "/productpage", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:54:13.276Z] \"GET /details/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 178 1 1 \"-\" \"Go-http-client/1.1\" \"6e8825df-1a68-9cb7-8403-ea618307288e\" \"details:9080\" \"10.244.0.10:9080\" outbound|9080||details.bookinfo.svc.cluster.local 10.244.0.13:58492 10.109.148.19:9080 10.244.0.13:38936 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:54:13.276", + "timestampUnix": 1708941253276, + "accessLog": { + "authority": "details:9080", + "bytes_received": "0", + "bytes_sent": "178", + "duration": "1", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "6e8825df-1a68-9cb7-8403-ea618307288e", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:54:13.276Z", + "upstream_service": "10.244.0.10:9080", + "upstream_service_time": "1", + "upstream_cluster": "outbound|9080||details.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:58492", + "downstream_local": "10.109.148.19:9080", + "downstream_remote": "10.244.0.13:38936", + "requested_server": "-", + "route_name": "default", + "uri_path": "/details/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:54:13.280Z] \"GET /reviews/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 358 2 2 \"-\" \"Go-http-client/1.1\" \"6e8825df-1a68-9cb7-8403-ea618307288e\" \"reviews:9080\" \"10.244.0.14:9080\" outbound|9080||reviews.bookinfo.svc.cluster.local 10.244.0.13:55880 10.99.45.111:9080 10.244.0.13:48422 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:54:13.28", + "timestampUnix": 1708941253280, + "accessLog": { + "authority": "reviews:9080", + "bytes_received": "0", + "bytes_sent": "358", + "duration": "2", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "6e8825df-1a68-9cb7-8403-ea618307288e", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:54:13.280Z", + "upstream_service": "10.244.0.14:9080", + "upstream_service_time": "2", + "upstream_cluster": "outbound|9080||reviews.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:55880", + "downstream_local": "10.99.45.111:9080", + "downstream_remote": "10.244.0.13:48422", + "requested_server": "-", + "route_name": "default", + "uri_path": "/reviews/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:54:13.273Z] \"GET /productpage HTTP/1.1\" 200 - via_upstream - \"-\" 0 4294 10 10 \"10.244.0.1\" \"Go-http-client/1.1\" \"6e8825df-1a68-9cb7-8403-ea618307288e\" \"192.168.49.2:30876\" \"10.244.0.13:9080\" inbound|9080|| 127.0.0.6:34053 10.244.0.13:9080 10.244.0.1:0 outbound_.9080_._.productpage.bookinfo.svc.cluster.local default", + "severity": "INFO", + "timestamp": "2024-02-26 09:54:13.273", + "timestampUnix": 1708941253273, + "accessLog": { + "authority": "192.168.49.2:30876", + "bytes_received": "0", + "bytes_sent": "4294", + "duration": "10", + "forwarded_for": "10.244.0.1", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "6e8825df-1a68-9cb7-8403-ea618307288e", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:54:13.273Z", + "upstream_service": "10.244.0.13:9080", + "upstream_service_time": "10", + "upstream_cluster": "inbound|9080||", + "upstream_local": "127.0.0.6:34053", + "downstream_local": "10.244.0.13:9080", + "downstream_remote": "10.244.0.1:0", + "requested_server": "outbound_.9080_._.productpage.bookinfo.svc.cluster.local", + "route_name": "default", + "uri_path": "/productpage", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:54:14.276Z] \"GET /details/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 178 1 1 \"-\" \"Go-http-client/1.1\" \"f26b1157-a947-9842-b4f2-b90c06300011\" \"details:9080\" \"10.244.0.10:9080\" outbound|9080||details.bookinfo.svc.cluster.local 10.244.0.13:58492 10.109.148.19:9080 10.244.0.13:38946 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:54:14.276", + "timestampUnix": 1708941254276, + "accessLog": { + "authority": "details:9080", + "bytes_received": "0", + "bytes_sent": "178", + "duration": "1", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "f26b1157-a947-9842-b4f2-b90c06300011", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:54:14.276Z", + "upstream_service": "10.244.0.10:9080", + "upstream_service_time": "1", + "upstream_cluster": "outbound|9080||details.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:58492", + "downstream_local": "10.109.148.19:9080", + "downstream_remote": "10.244.0.13:38946", + "requested_server": "-", + "route_name": "default", + "uri_path": "/details/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:54:14.280Z] \"GET /reviews/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 437 5 5 \"-\" \"Go-http-client/1.1\" \"f26b1157-a947-9842-b4f2-b90c06300011\" \"reviews:9080\" \"10.244.0.12:9080\" outbound|9080||reviews.bookinfo.svc.cluster.local 10.244.0.13:48584 10.99.45.111:9080 10.244.0.13:48438 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:54:14.28", + "timestampUnix": 1708941254280, + "accessLog": { + "authority": "reviews:9080", + "bytes_received": "0", + "bytes_sent": "437", + "duration": "5", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "f26b1157-a947-9842-b4f2-b90c06300011", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:54:14.280Z", + "upstream_service": "10.244.0.12:9080", + "upstream_service_time": "5", + "upstream_cluster": "outbound|9080||reviews.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:48584", + "downstream_local": "10.99.45.111:9080", + "downstream_remote": "10.244.0.13:48438", + "requested_server": "-", + "route_name": "default", + "uri_path": "/reviews/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:54:14.273Z] \"GET /productpage HTTP/1.1\" 200 - via_upstream - \"-\" 0 5289 15 14 \"10.244.0.1\" \"Go-http-client/1.1\" \"f26b1157-a947-9842-b4f2-b90c06300011\" \"192.168.49.2:30876\" \"10.244.0.13:9080\" inbound|9080|| 127.0.0.6:38529 10.244.0.13:9080 10.244.0.1:0 outbound_.9080_._.productpage.bookinfo.svc.cluster.local default", + "severity": "INFO", + "timestamp": "2024-02-26 09:54:14.273", + "timestampUnix": 1708941254273, + "accessLog": { + "authority": "192.168.49.2:30876", + "bytes_received": "0", + "bytes_sent": "5289", + "duration": "15", + "forwarded_for": "10.244.0.1", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "f26b1157-a947-9842-b4f2-b90c06300011", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:54:14.273Z", + "upstream_service": "10.244.0.13:9080", + "upstream_service_time": "14", + "upstream_cluster": "inbound|9080||", + "upstream_local": "127.0.0.6:38529", + "downstream_local": "10.244.0.13:9080", + "downstream_remote": "10.244.0.1:0", + "requested_server": "outbound_.9080_._.productpage.bookinfo.svc.cluster.local", + "route_name": "default", + "uri_path": "/productpage", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:54:15.275Z] \"GET /details/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 178 1 1 \"-\" \"Go-http-client/1.1\" \"e3914026-1737-9c41-8626-20d7c6334853\" \"details:9080\" \"10.244.0.10:9080\" outbound|9080||details.bookinfo.svc.cluster.local 10.244.0.13:60722 10.109.148.19:9080 10.244.0.13:38962 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:54:15.275", + "timestampUnix": 1708941255275, + "accessLog": { + "authority": "details:9080", + "bytes_received": "0", + "bytes_sent": "178", + "duration": "1", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "e3914026-1737-9c41-8626-20d7c6334853", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:54:15.275Z", + "upstream_service": "10.244.0.10:9080", + "upstream_service_time": "1", + "upstream_cluster": "outbound|9080||details.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:60722", + "downstream_local": "10.109.148.19:9080", + "downstream_remote": "10.244.0.13:38962", + "requested_server": "-", + "route_name": "default", + "uri_path": "/details/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:54:15.279Z] \"GET /reviews/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 442 5 5 \"-\" \"Go-http-client/1.1\" \"e3914026-1737-9c41-8626-20d7c6334853\" \"reviews:9080\" \"10.244.0.15:9080\" outbound|9080||reviews.bookinfo.svc.cluster.local 10.244.0.13:50830 10.99.45.111:9080 10.244.0.13:48446 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:54:15.279", + "timestampUnix": 1708941255279, + "accessLog": { + "authority": "reviews:9080", + "bytes_received": "0", + "bytes_sent": "442", + "duration": "5", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "e3914026-1737-9c41-8626-20d7c6334853", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:54:15.279Z", + "upstream_service": "10.244.0.15:9080", + "upstream_service_time": "5", + "upstream_cluster": "outbound|9080||reviews.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:50830", + "downstream_local": "10.99.45.111:9080", + "downstream_remote": "10.244.0.13:48446", + "requested_server": "-", + "route_name": "default", + "uri_path": "/reviews/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:54:15.273Z] \"GET /productpage HTTP/1.1\" 200 - via_upstream - \"-\" 0 5294 13 13 \"10.244.0.1\" \"Go-http-client/1.1\" \"e3914026-1737-9c41-8626-20d7c6334853\" \"192.168.49.2:30876\" \"10.244.0.13:9080\" inbound|9080|| 127.0.0.6:53571 10.244.0.13:9080 10.244.0.1:0 outbound_.9080_._.productpage.bookinfo.svc.cluster.local default", + "severity": "INFO", + "timestamp": "2024-02-26 09:54:15.273", + "timestampUnix": 1708941255273, + "accessLog": { + "authority": "192.168.49.2:30876", + "bytes_received": "0", + "bytes_sent": "5294", + "duration": "13", + "forwarded_for": "10.244.0.1", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "e3914026-1737-9c41-8626-20d7c6334853", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:54:15.273Z", + "upstream_service": "10.244.0.13:9080", + "upstream_service_time": "13", + "upstream_cluster": "inbound|9080||", + "upstream_local": "127.0.0.6:53571", + "downstream_local": "10.244.0.13:9080", + "downstream_remote": "10.244.0.1:0", + "requested_server": "outbound_.9080_._.productpage.bookinfo.svc.cluster.local", + "route_name": "default", + "uri_path": "/productpage", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:54:16.277Z] \"GET /details/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 178 1 1 \"-\" \"Go-http-client/1.1\" \"2c7863e9-184d-924a-83e8-fd11c26e4cd8\" \"details:9080\" \"10.244.0.10:9080\" outbound|9080||details.bookinfo.svc.cluster.local 10.244.0.13:58492 10.109.148.19:9080 10.244.0.13:38978 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:54:16.277", + "timestampUnix": 1708941256277, + "accessLog": { + "authority": "details:9080", + "bytes_received": "0", + "bytes_sent": "178", + "duration": "1", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "2c7863e9-184d-924a-83e8-fd11c26e4cd8", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:54:16.277Z", + "upstream_service": "10.244.0.10:9080", + "upstream_service_time": "1", + "upstream_cluster": "outbound|9080||details.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:58492", + "downstream_local": "10.109.148.19:9080", + "downstream_remote": "10.244.0.13:38978", + "requested_server": "-", + "route_name": "default", + "uri_path": "/details/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:54:16.281Z] \"GET /reviews/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 442 6 5 \"-\" \"Go-http-client/1.1\" \"2c7863e9-184d-924a-83e8-fd11c26e4cd8\" \"reviews:9080\" \"10.244.0.15:9080\" outbound|9080||reviews.bookinfo.svc.cluster.local 10.244.0.13:50830 10.99.45.111:9080 10.244.0.13:48452 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:54:16.281", + "timestampUnix": 1708941256281, + "accessLog": { + "authority": "reviews:9080", + "bytes_received": "0", + "bytes_sent": "442", + "duration": "6", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "2c7863e9-184d-924a-83e8-fd11c26e4cd8", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:54:16.281Z", + "upstream_service": "10.244.0.15:9080", + "upstream_service_time": "5", + "upstream_cluster": "outbound|9080||reviews.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:50830", + "downstream_local": "10.99.45.111:9080", + "downstream_remote": "10.244.0.13:48452", + "requested_server": "-", + "route_name": "default", + "uri_path": "/reviews/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:54:16.273Z] \"GET /productpage HTTP/1.1\" 200 - via_upstream - \"-\" 0 5294 15 15 \"10.244.0.1\" \"Go-http-client/1.1\" \"2c7863e9-184d-924a-83e8-fd11c26e4cd8\" \"192.168.49.2:30876\" \"10.244.0.13:9080\" inbound|9080|| 127.0.0.6:32825 10.244.0.13:9080 10.244.0.1:0 outbound_.9080_._.productpage.bookinfo.svc.cluster.local default", + "severity": "INFO", + "timestamp": "2024-02-26 09:54:16.273", + "timestampUnix": 1708941256273, + "accessLog": { + "authority": "192.168.49.2:30876", + "bytes_received": "0", + "bytes_sent": "5294", + "duration": "15", + "forwarded_for": "10.244.0.1", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "2c7863e9-184d-924a-83e8-fd11c26e4cd8", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:54:16.273Z", + "upstream_service": "10.244.0.13:9080", + "upstream_service_time": "15", + "upstream_cluster": "inbound|9080||", + "upstream_local": "127.0.0.6:32825", + "downstream_local": "10.244.0.13:9080", + "downstream_remote": "10.244.0.1:0", + "requested_server": "outbound_.9080_._.productpage.bookinfo.svc.cluster.local", + "route_name": "default", + "uri_path": "/productpage", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:54:17.276Z] \"GET /details/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 178 1 1 \"-\" \"Go-http-client/1.1\" \"166c2feb-3d8d-9ac4-b837-e7a7775364dc\" \"details:9080\" \"10.244.0.10:9080\" outbound|9080||details.bookinfo.svc.cluster.local 10.244.0.13:60722 10.109.148.19:9080 10.244.0.13:45918 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:54:17.276", + "timestampUnix": 1708941257276, + "accessLog": { + "authority": "details:9080", + "bytes_received": "0", + "bytes_sent": "178", + "duration": "1", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "166c2feb-3d8d-9ac4-b837-e7a7775364dc", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:54:17.276Z", + "upstream_service": "10.244.0.10:9080", + "upstream_service_time": "1", + "upstream_cluster": "outbound|9080||details.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:60722", + "downstream_local": "10.109.148.19:9080", + "downstream_remote": "10.244.0.13:45918", + "requested_server": "-", + "route_name": "default", + "uri_path": "/details/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:54:17.280Z] \"GET /reviews/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 437 6 5 \"-\" \"Go-http-client/1.1\" \"166c2feb-3d8d-9ac4-b837-e7a7775364dc\" \"reviews:9080\" \"10.244.0.12:9080\" outbound|9080||reviews.bookinfo.svc.cluster.local 10.244.0.13:48578 10.99.45.111:9080 10.244.0.13:34690 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:54:17.28", + "timestampUnix": 1708941257280, + "accessLog": { + "authority": "reviews:9080", + "bytes_received": "0", + "bytes_sent": "437", + "duration": "6", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "166c2feb-3d8d-9ac4-b837-e7a7775364dc", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:54:17.280Z", + "upstream_service": "10.244.0.12:9080", + "upstream_service_time": "5", + "upstream_cluster": "outbound|9080||reviews.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:48578", + "downstream_local": "10.99.45.111:9080", + "downstream_remote": "10.244.0.13:34690", + "requested_server": "-", + "route_name": "default", + "uri_path": "/reviews/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:54:17.273Z] \"GET /productpage HTTP/1.1\" 200 - via_upstream - \"-\" 0 5289 14 13 \"10.244.0.1\" \"Go-http-client/1.1\" \"166c2feb-3d8d-9ac4-b837-e7a7775364dc\" \"192.168.49.2:30876\" \"10.244.0.13:9080\" inbound|9080|| 127.0.0.6:43473 10.244.0.13:9080 10.244.0.1:0 outbound_.9080_._.productpage.bookinfo.svc.cluster.local default", + "severity": "INFO", + "timestamp": "2024-02-26 09:54:17.273", + "timestampUnix": 1708941257273, + "accessLog": { + "authority": "192.168.49.2:30876", + "bytes_received": "0", + "bytes_sent": "5289", + "duration": "14", + "forwarded_for": "10.244.0.1", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "166c2feb-3d8d-9ac4-b837-e7a7775364dc", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:54:17.273Z", + "upstream_service": "10.244.0.13:9080", + "upstream_service_time": "13", + "upstream_cluster": "inbound|9080||", + "upstream_local": "127.0.0.6:43473", + "downstream_local": "10.244.0.13:9080", + "downstream_remote": "10.244.0.1:0", + "requested_server": "outbound_.9080_._.productpage.bookinfo.svc.cluster.local", + "route_name": "default", + "uri_path": "/productpage", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:54:18.276Z] \"GET /details/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 178 1 1 \"-\" \"Go-http-client/1.1\" \"7c3cff33-2ced-9f7b-97df-71c4995f906f\" \"details:9080\" \"10.244.0.10:9080\" outbound|9080||details.bookinfo.svc.cluster.local 10.244.0.13:58492 10.109.148.19:9080 10.244.0.13:45932 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:54:18.276", + "timestampUnix": 1708941258276, + "accessLog": { + "authority": "details:9080", + "bytes_received": "0", + "bytes_sent": "178", + "duration": "1", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "7c3cff33-2ced-9f7b-97df-71c4995f906f", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:54:18.276Z", + "upstream_service": "10.244.0.10:9080", + "upstream_service_time": "1", + "upstream_cluster": "outbound|9080||details.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:58492", + "downstream_local": "10.109.148.19:9080", + "downstream_remote": "10.244.0.13:45932", + "requested_server": "-", + "route_name": "default", + "uri_path": "/details/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:54:18.281Z] \"GET /reviews/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 437 6 5 \"-\" \"Go-http-client/1.1\" \"7c3cff33-2ced-9f7b-97df-71c4995f906f\" \"reviews:9080\" \"10.244.0.12:9080\" outbound|9080||reviews.bookinfo.svc.cluster.local 10.244.0.13:48584 10.99.45.111:9080 10.244.0.13:34702 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:54:18.281", + "timestampUnix": 1708941258281, + "accessLog": { + "authority": "reviews:9080", + "bytes_received": "0", + "bytes_sent": "437", + "duration": "6", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "7c3cff33-2ced-9f7b-97df-71c4995f906f", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:54:18.281Z", + "upstream_service": "10.244.0.12:9080", + "upstream_service_time": "5", + "upstream_cluster": "outbound|9080||reviews.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:48584", + "downstream_local": "10.99.45.111:9080", + "downstream_remote": "10.244.0.13:34702", + "requested_server": "-", + "route_name": "default", + "uri_path": "/reviews/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:54:18.273Z] \"GET /productpage HTTP/1.1\" 200 - via_upstream - \"-\" 0 5289 15 14 \"10.244.0.1\" \"Go-http-client/1.1\" \"7c3cff33-2ced-9f7b-97df-71c4995f906f\" \"192.168.49.2:30876\" \"10.244.0.13:9080\" inbound|9080|| 127.0.0.6:50065 10.244.0.13:9080 10.244.0.1:0 outbound_.9080_._.productpage.bookinfo.svc.cluster.local default", + "severity": "INFO", + "timestamp": "2024-02-26 09:54:18.273", + "timestampUnix": 1708941258273, + "accessLog": { + "authority": "192.168.49.2:30876", + "bytes_received": "0", + "bytes_sent": "5289", + "duration": "15", + "forwarded_for": "10.244.0.1", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "7c3cff33-2ced-9f7b-97df-71c4995f906f", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:54:18.273Z", + "upstream_service": "10.244.0.13:9080", + "upstream_service_time": "14", + "upstream_cluster": "inbound|9080||", + "upstream_local": "127.0.0.6:50065", + "downstream_local": "10.244.0.13:9080", + "downstream_remote": "10.244.0.1:0", + "requested_server": "outbound_.9080_._.productpage.bookinfo.svc.cluster.local", + "route_name": "default", + "uri_path": "/productpage", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:54:19.276Z] \"GET /details/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 178 1 1 \"-\" \"Go-http-client/1.1\" \"c73a28ab-6317-90fc-b747-7e076710d842\" \"details:9080\" \"10.244.0.10:9080\" outbound|9080||details.bookinfo.svc.cluster.local 10.244.0.13:60722 10.109.148.19:9080 10.244.0.13:45946 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:54:19.276", + "timestampUnix": 1708941259276, + "accessLog": { + "authority": "details:9080", + "bytes_received": "0", + "bytes_sent": "178", + "duration": "1", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "c73a28ab-6317-90fc-b747-7e076710d842", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:54:19.276Z", + "upstream_service": "10.244.0.10:9080", + "upstream_service_time": "1", + "upstream_cluster": "outbound|9080||details.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:60722", + "downstream_local": "10.109.148.19:9080", + "downstream_remote": "10.244.0.13:45946", + "requested_server": "-", + "route_name": "default", + "uri_path": "/details/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:54:19.280Z] \"GET /reviews/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 442 6 6 \"-\" \"Go-http-client/1.1\" \"c73a28ab-6317-90fc-b747-7e076710d842\" \"reviews:9080\" \"10.244.0.15:9080\" outbound|9080||reviews.bookinfo.svc.cluster.local 10.244.0.13:32944 10.99.45.111:9080 10.244.0.13:34706 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:54:19.28", + "timestampUnix": 1708941259280, + "accessLog": { + "authority": "reviews:9080", + "bytes_received": "0", + "bytes_sent": "442", + "duration": "6", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "c73a28ab-6317-90fc-b747-7e076710d842", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:54:19.280Z", + "upstream_service": "10.244.0.15:9080", + "upstream_service_time": "6", + "upstream_cluster": "outbound|9080||reviews.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:32944", + "downstream_local": "10.99.45.111:9080", + "downstream_remote": "10.244.0.13:34706", + "requested_server": "-", + "route_name": "default", + "uri_path": "/reviews/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:54:19.273Z] \"GET /productpage HTTP/1.1\" 200 - via_upstream - \"-\" 0 5294 14 14 \"10.244.0.1\" \"Go-http-client/1.1\" \"c73a28ab-6317-90fc-b747-7e076710d842\" \"192.168.49.2:30876\" \"10.244.0.13:9080\" inbound|9080|| 127.0.0.6:56709 10.244.0.13:9080 10.244.0.1:0 outbound_.9080_._.productpage.bookinfo.svc.cluster.local default", + "severity": "INFO", + "timestamp": "2024-02-26 09:54:19.273", + "timestampUnix": 1708941259273, + "accessLog": { + "authority": "192.168.49.2:30876", + "bytes_received": "0", + "bytes_sent": "5294", + "duration": "14", + "forwarded_for": "10.244.0.1", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "c73a28ab-6317-90fc-b747-7e076710d842", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:54:19.273Z", + "upstream_service": "10.244.0.13:9080", + "upstream_service_time": "14", + "upstream_cluster": "inbound|9080||", + "upstream_local": "127.0.0.6:56709", + "downstream_local": "10.244.0.13:9080", + "downstream_remote": "10.244.0.1:0", + "requested_server": "outbound_.9080_._.productpage.bookinfo.svc.cluster.local", + "route_name": "default", + "uri_path": "/productpage", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:54:20.277Z] \"GET /details/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 178 1 1 \"-\" \"Go-http-client/1.1\" \"825b5973-aa69-94b2-af87-c469c65a14fd\" \"details:9080\" \"10.244.0.10:9080\" outbound|9080||details.bookinfo.svc.cluster.local 10.244.0.13:60722 10.109.148.19:9080 10.244.0.13:45962 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:54:20.277", + "timestampUnix": 1708941260277, + "accessLog": { + "authority": "details:9080", + "bytes_received": "0", + "bytes_sent": "178", + "duration": "1", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "825b5973-aa69-94b2-af87-c469c65a14fd", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:54:20.277Z", + "upstream_service": "10.244.0.10:9080", + "upstream_service_time": "1", + "upstream_cluster": "outbound|9080||details.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:60722", + "downstream_local": "10.109.148.19:9080", + "downstream_remote": "10.244.0.13:45962", + "requested_server": "-", + "route_name": "default", + "uri_path": "/details/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:54:20.281Z] \"GET /reviews/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 358 2 2 \"-\" \"Go-http-client/1.1\" \"825b5973-aa69-94b2-af87-c469c65a14fd\" \"reviews:9080\" \"10.244.0.14:9080\" outbound|9080||reviews.bookinfo.svc.cluster.local 10.244.0.13:55880 10.99.45.111:9080 10.244.0.13:34708 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:54:20.281", + "timestampUnix": 1708941260281, + "accessLog": { + "authority": "reviews:9080", + "bytes_received": "0", + "bytes_sent": "358", + "duration": "2", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "825b5973-aa69-94b2-af87-c469c65a14fd", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:54:20.281Z", + "upstream_service": "10.244.0.14:9080", + "upstream_service_time": "2", + "upstream_cluster": "outbound|9080||reviews.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:55880", + "downstream_local": "10.99.45.111:9080", + "downstream_remote": "10.244.0.13:34708", + "requested_server": "-", + "route_name": "default", + "uri_path": "/reviews/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:54:20.273Z] \"GET /productpage HTTP/1.1\" 200 - via_upstream - \"-\" 0 4294 10 10 \"10.244.0.1\" \"Go-http-client/1.1\" \"825b5973-aa69-94b2-af87-c469c65a14fd\" \"192.168.49.2:30876\" \"10.244.0.13:9080\" inbound|9080|| 127.0.0.6:43509 10.244.0.13:9080 10.244.0.1:0 outbound_.9080_._.productpage.bookinfo.svc.cluster.local default", + "severity": "INFO", + "timestamp": "2024-02-26 09:54:20.273", + "timestampUnix": 1708941260273, + "accessLog": { + "authority": "192.168.49.2:30876", + "bytes_received": "0", + "bytes_sent": "4294", + "duration": "10", + "forwarded_for": "10.244.0.1", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "825b5973-aa69-94b2-af87-c469c65a14fd", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:54:20.273Z", + "upstream_service": "10.244.0.13:9080", + "upstream_service_time": "10", + "upstream_cluster": "inbound|9080||", + "upstream_local": "127.0.0.6:43509", + "downstream_local": "10.244.0.13:9080", + "downstream_remote": "10.244.0.1:0", + "requested_server": "outbound_.9080_._.productpage.bookinfo.svc.cluster.local", + "route_name": "default", + "uri_path": "/productpage", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:54:21.276Z] \"GET /details/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 178 1 1 \"-\" \"Go-http-client/1.1\" \"c4c7eb68-824e-9ce1-bbd8-45dcdbb04b20\" \"details:9080\" \"10.244.0.10:9080\" outbound|9080||details.bookinfo.svc.cluster.local 10.244.0.13:58492 10.109.148.19:9080 10.244.0.13:45976 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:54:21.276", + "timestampUnix": 1708941261276, + "accessLog": { + "authority": "details:9080", + "bytes_received": "0", + "bytes_sent": "178", + "duration": "1", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "c4c7eb68-824e-9ce1-bbd8-45dcdbb04b20", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:54:21.276Z", + "upstream_service": "10.244.0.10:9080", + "upstream_service_time": "1", + "upstream_cluster": "outbound|9080||details.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:58492", + "downstream_local": "10.109.148.19:9080", + "downstream_remote": "10.244.0.13:45976", + "requested_server": "-", + "route_name": "default", + "uri_path": "/details/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:54:21.280Z] \"GET /reviews/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 358 2 2 \"-\" \"Go-http-client/1.1\" \"c4c7eb68-824e-9ce1-bbd8-45dcdbb04b20\" \"reviews:9080\" \"10.244.0.14:9080\" outbound|9080||reviews.bookinfo.svc.cluster.local 10.244.0.13:55880 10.99.45.111:9080 10.244.0.13:34718 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:54:21.28", + "timestampUnix": 1708941261280, + "accessLog": { + "authority": "reviews:9080", + "bytes_received": "0", + "bytes_sent": "358", + "duration": "2", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "c4c7eb68-824e-9ce1-bbd8-45dcdbb04b20", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:54:21.280Z", + "upstream_service": "10.244.0.14:9080", + "upstream_service_time": "2", + "upstream_cluster": "outbound|9080||reviews.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:55880", + "downstream_local": "10.99.45.111:9080", + "downstream_remote": "10.244.0.13:34718", + "requested_server": "-", + "route_name": "default", + "uri_path": "/reviews/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:54:21.273Z] \"GET /productpage HTTP/1.1\" 200 - via_upstream - \"-\" 0 4294 10 10 \"10.244.0.1\" \"Go-http-client/1.1\" \"c4c7eb68-824e-9ce1-bbd8-45dcdbb04b20\" \"192.168.49.2:30876\" \"10.244.0.13:9080\" inbound|9080|| 127.0.0.6:52477 10.244.0.13:9080 10.244.0.1:0 outbound_.9080_._.productpage.bookinfo.svc.cluster.local default", + "severity": "INFO", + "timestamp": "2024-02-26 09:54:21.273", + "timestampUnix": 1708941261273, + "accessLog": { + "authority": "192.168.49.2:30876", + "bytes_received": "0", + "bytes_sent": "4294", + "duration": "10", + "forwarded_for": "10.244.0.1", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "c4c7eb68-824e-9ce1-bbd8-45dcdbb04b20", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:54:21.273Z", + "upstream_service": "10.244.0.13:9080", + "upstream_service_time": "10", + "upstream_cluster": "inbound|9080||", + "upstream_local": "127.0.0.6:52477", + "downstream_local": "10.244.0.13:9080", + "downstream_remote": "10.244.0.1:0", + "requested_server": "outbound_.9080_._.productpage.bookinfo.svc.cluster.local", + "route_name": "default", + "uri_path": "/productpage", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:54:22.276Z] \"GET /details/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 178 1 1 \"-\" \"Go-http-client/1.1\" \"b5c2ff04-7bbb-94d2-95fc-8e85d74fef0e\" \"details:9080\" \"10.244.0.10:9080\" outbound|9080||details.bookinfo.svc.cluster.local 10.244.0.13:58492 10.109.148.19:9080 10.244.0.13:45982 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:54:22.276", + "timestampUnix": 1708941262276, + "accessLog": { + "authority": "details:9080", + "bytes_received": "0", + "bytes_sent": "178", + "duration": "1", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "b5c2ff04-7bbb-94d2-95fc-8e85d74fef0e", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:54:22.276Z", + "upstream_service": "10.244.0.10:9080", + "upstream_service_time": "1", + "upstream_cluster": "outbound|9080||details.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:58492", + "downstream_local": "10.109.148.19:9080", + "downstream_remote": "10.244.0.13:45982", + "requested_server": "-", + "route_name": "default", + "uri_path": "/details/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:54:22.280Z] \"GET /reviews/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 437 6 6 \"-\" \"Go-http-client/1.1\" \"b5c2ff04-7bbb-94d2-95fc-8e85d74fef0e\" \"reviews:9080\" \"10.244.0.12:9080\" outbound|9080||reviews.bookinfo.svc.cluster.local 10.244.0.13:48578 10.99.45.111:9080 10.244.0.13:34730 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:54:22.28", + "timestampUnix": 1708941262280, + "accessLog": { + "authority": "reviews:9080", + "bytes_received": "0", + "bytes_sent": "437", + "duration": "6", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "b5c2ff04-7bbb-94d2-95fc-8e85d74fef0e", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:54:22.280Z", + "upstream_service": "10.244.0.12:9080", + "upstream_service_time": "6", + "upstream_cluster": "outbound|9080||reviews.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:48578", + "downstream_local": "10.99.45.111:9080", + "downstream_remote": "10.244.0.13:34730", + "requested_server": "-", + "route_name": "default", + "uri_path": "/reviews/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:54:22.273Z] \"GET /productpage HTTP/1.1\" 200 - via_upstream - \"-\" 0 5289 14 14 \"10.244.0.1\" \"Go-http-client/1.1\" \"b5c2ff04-7bbb-94d2-95fc-8e85d74fef0e\" \"192.168.49.2:30876\" \"10.244.0.13:9080\" inbound|9080|| 127.0.0.6:41637 10.244.0.13:9080 10.244.0.1:0 outbound_.9080_._.productpage.bookinfo.svc.cluster.local default", + "severity": "INFO", + "timestamp": "2024-02-26 09:54:22.273", + "timestampUnix": 1708941262273, + "accessLog": { + "authority": "192.168.49.2:30876", + "bytes_received": "0", + "bytes_sent": "5289", + "duration": "14", + "forwarded_for": "10.244.0.1", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "b5c2ff04-7bbb-94d2-95fc-8e85d74fef0e", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:54:22.273Z", + "upstream_service": "10.244.0.13:9080", + "upstream_service_time": "14", + "upstream_cluster": "inbound|9080||", + "upstream_local": "127.0.0.6:41637", + "downstream_local": "10.244.0.13:9080", + "downstream_remote": "10.244.0.1:0", + "requested_server": "outbound_.9080_._.productpage.bookinfo.svc.cluster.local", + "route_name": "default", + "uri_path": "/productpage", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:54:23.285Z] \"GET /details/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 178 6 5 \"-\" \"Go-http-client/1.1\" \"7d13494a-3d0b-94c1-8817-22358f3ce520\" \"details:9080\" \"10.244.0.10:9080\" outbound|9080||details.bookinfo.svc.cluster.local 10.244.0.13:58492 10.109.148.19:9080 10.244.0.13:45988 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:54:23.285", + "timestampUnix": 1708941263285, + "accessLog": { + "authority": "details:9080", + "bytes_received": "0", + "bytes_sent": "178", + "duration": "6", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "7d13494a-3d0b-94c1-8817-22358f3ce520", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:54:23.285Z", + "upstream_service": "10.244.0.10:9080", + "upstream_service_time": "5", + "upstream_cluster": "outbound|9080||details.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:58492", + "downstream_local": "10.109.148.19:9080", + "downstream_remote": "10.244.0.13:45988", + "requested_server": "-", + "route_name": "default", + "uri_path": "/details/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:54:23.301Z] \"GET /reviews/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 442 10 9 \"-\" \"Go-http-client/1.1\" \"7d13494a-3d0b-94c1-8817-22358f3ce520\" \"reviews:9080\" \"10.244.0.15:9080\" outbound|9080||reviews.bookinfo.svc.cluster.local 10.244.0.13:32944 10.99.45.111:9080 10.244.0.13:34742 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:54:23.301", + "timestampUnix": 1708941263301, + "accessLog": { + "authority": "reviews:9080", + "bytes_received": "0", + "bytes_sent": "442", + "duration": "10", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "7d13494a-3d0b-94c1-8817-22358f3ce520", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:54:23.301Z", + "upstream_service": "10.244.0.15:9080", + "upstream_service_time": "9", + "upstream_cluster": "outbound|9080||reviews.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:32944", + "downstream_local": "10.99.45.111:9080", + "downstream_remote": "10.244.0.13:34742", + "requested_server": "-", + "route_name": "default", + "uri_path": "/reviews/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:54:23.274Z] \"GET /productpage HTTP/1.1\" 200 - via_upstream - \"-\" 0 5294 38 37 \"10.244.0.1\" \"Go-http-client/1.1\" \"7d13494a-3d0b-94c1-8817-22358f3ce520\" \"192.168.49.2:30876\" \"10.244.0.13:9080\" inbound|9080|| 127.0.0.6:56723 10.244.0.13:9080 10.244.0.1:0 outbound_.9080_._.productpage.bookinfo.svc.cluster.local default", + "severity": "INFO", + "timestamp": "2024-02-26 09:54:23.274", + "timestampUnix": 1708941263274, + "accessLog": { + "authority": "192.168.49.2:30876", + "bytes_received": "0", + "bytes_sent": "5294", + "duration": "38", + "forwarded_for": "10.244.0.1", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "7d13494a-3d0b-94c1-8817-22358f3ce520", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:54:23.274Z", + "upstream_service": "10.244.0.13:9080", + "upstream_service_time": "37", + "upstream_cluster": "inbound|9080||", + "upstream_local": "127.0.0.6:56723", + "downstream_local": "10.244.0.13:9080", + "downstream_remote": "10.244.0.1:0", + "requested_server": "outbound_.9080_._.productpage.bookinfo.svc.cluster.local", + "route_name": "default", + "uri_path": "/productpage", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:54:24.278Z] \"GET /details/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 178 1 1 \"-\" \"Go-http-client/1.1\" \"5ec03791-b423-98a0-9b72-7eb845c25c54\" \"details:9080\" \"10.244.0.10:9080\" outbound|9080||details.bookinfo.svc.cluster.local 10.244.0.13:60722 10.109.148.19:9080 10.244.0.13:45998 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:54:24.278", + "timestampUnix": 1708941264278, + "accessLog": { + "authority": "details:9080", + "bytes_received": "0", + "bytes_sent": "178", + "duration": "1", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "5ec03791-b423-98a0-9b72-7eb845c25c54", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:54:24.278Z", + "upstream_service": "10.244.0.10:9080", + "upstream_service_time": "1", + "upstream_cluster": "outbound|9080||details.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:60722", + "downstream_local": "10.109.148.19:9080", + "downstream_remote": "10.244.0.13:45998", + "requested_server": "-", + "route_name": "default", + "uri_path": "/details/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:54:24.281Z] \"GET /reviews/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 442 6 5 \"-\" \"Go-http-client/1.1\" \"5ec03791-b423-98a0-9b72-7eb845c25c54\" \"reviews:9080\" \"10.244.0.15:9080\" outbound|9080||reviews.bookinfo.svc.cluster.local 10.244.0.13:32944 10.99.45.111:9080 10.244.0.13:34752 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:54:24.281", + "timestampUnix": 1708941264281, + "accessLog": { + "authority": "reviews:9080", + "bytes_received": "0", + "bytes_sent": "442", + "duration": "6", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "5ec03791-b423-98a0-9b72-7eb845c25c54", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:54:24.281Z", + "upstream_service": "10.244.0.15:9080", + "upstream_service_time": "5", + "upstream_cluster": "outbound|9080||reviews.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:32944", + "downstream_local": "10.99.45.111:9080", + "downstream_remote": "10.244.0.13:34752", + "requested_server": "-", + "route_name": "default", + "uri_path": "/reviews/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:54:24.274Z] \"GET /productpage HTTP/1.1\" 200 - via_upstream - \"-\" 0 5294 15 15 \"10.244.0.1\" \"Go-http-client/1.1\" \"5ec03791-b423-98a0-9b72-7eb845c25c54\" \"192.168.49.2:30876\" \"10.244.0.13:9080\" inbound|9080|| 127.0.0.6:35649 10.244.0.13:9080 10.244.0.1:0 outbound_.9080_._.productpage.bookinfo.svc.cluster.local default", + "severity": "INFO", + "timestamp": "2024-02-26 09:54:24.274", + "timestampUnix": 1708941264274, + "accessLog": { + "authority": "192.168.49.2:30876", + "bytes_received": "0", + "bytes_sent": "5294", + "duration": "15", + "forwarded_for": "10.244.0.1", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "5ec03791-b423-98a0-9b72-7eb845c25c54", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:54:24.274Z", + "upstream_service": "10.244.0.13:9080", + "upstream_service_time": "15", + "upstream_cluster": "inbound|9080||", + "upstream_local": "127.0.0.6:35649", + "downstream_local": "10.244.0.13:9080", + "downstream_remote": "10.244.0.1:0", + "requested_server": "outbound_.9080_._.productpage.bookinfo.svc.cluster.local", + "route_name": "default", + "uri_path": "/productpage", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:54:25.277Z] \"GET /details/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 178 1 1 \"-\" \"Go-http-client/1.1\" \"c588bb09-dd7d-9d54-ad88-f8ffc813f8a1\" \"details:9080\" \"10.244.0.10:9080\" outbound|9080||details.bookinfo.svc.cluster.local 10.244.0.13:58492 10.109.148.19:9080 10.244.0.13:46014 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:54:25.277", + "timestampUnix": 1708941265277, + "accessLog": { + "authority": "details:9080", + "bytes_received": "0", + "bytes_sent": "178", + "duration": "1", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "c588bb09-dd7d-9d54-ad88-f8ffc813f8a1", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:54:25.277Z", + "upstream_service": "10.244.0.10:9080", + "upstream_service_time": "1", + "upstream_cluster": "outbound|9080||details.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:58492", + "downstream_local": "10.109.148.19:9080", + "downstream_remote": "10.244.0.13:46014", + "requested_server": "-", + "route_name": "default", + "uri_path": "/details/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:54:25.281Z] \"GET /reviews/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 437 6 6 \"-\" \"Go-http-client/1.1\" \"c588bb09-dd7d-9d54-ad88-f8ffc813f8a1\" \"reviews:9080\" \"10.244.0.12:9080\" outbound|9080||reviews.bookinfo.svc.cluster.local 10.244.0.13:48584 10.99.45.111:9080 10.244.0.13:34766 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:54:25.281", + "timestampUnix": 1708941265281, + "accessLog": { + "authority": "reviews:9080", + "bytes_received": "0", + "bytes_sent": "437", + "duration": "6", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "c588bb09-dd7d-9d54-ad88-f8ffc813f8a1", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:54:25.281Z", + "upstream_service": "10.244.0.12:9080", + "upstream_service_time": "6", + "upstream_cluster": "outbound|9080||reviews.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:48584", + "downstream_local": "10.99.45.111:9080", + "downstream_remote": "10.244.0.13:34766", + "requested_server": "-", + "route_name": "default", + "uri_path": "/reviews/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:54:25.274Z] \"GET /productpage HTTP/1.1\" 200 - via_upstream - \"-\" 0 5289 16 16 \"10.244.0.1\" \"Go-http-client/1.1\" \"c588bb09-dd7d-9d54-ad88-f8ffc813f8a1\" \"192.168.49.2:30876\" \"10.244.0.13:9080\" inbound|9080|| 127.0.0.6:38341 10.244.0.13:9080 10.244.0.1:0 outbound_.9080_._.productpage.bookinfo.svc.cluster.local default", + "severity": "INFO", + "timestamp": "2024-02-26 09:54:25.274", + "timestampUnix": 1708941265274, + "accessLog": { + "authority": "192.168.49.2:30876", + "bytes_received": "0", + "bytes_sent": "5289", + "duration": "16", + "forwarded_for": "10.244.0.1", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "c588bb09-dd7d-9d54-ad88-f8ffc813f8a1", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:54:25.274Z", + "upstream_service": "10.244.0.13:9080", + "upstream_service_time": "16", + "upstream_cluster": "inbound|9080||", + "upstream_local": "127.0.0.6:38341", + "downstream_local": "10.244.0.13:9080", + "downstream_remote": "10.244.0.1:0", + "requested_server": "outbound_.9080_._.productpage.bookinfo.svc.cluster.local", + "route_name": "default", + "uri_path": "/productpage", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:54:26.276Z] \"GET /details/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 178 1 1 \"-\" \"Go-http-client/1.1\" \"ed66ccc1-bdd1-9677-acad-753e18a62198\" \"details:9080\" \"10.244.0.10:9080\" outbound|9080||details.bookinfo.svc.cluster.local 10.244.0.13:58492 10.109.148.19:9080 10.244.0.13:46028 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:54:26.276", + "timestampUnix": 1708941266276, + "accessLog": { + "authority": "details:9080", + "bytes_received": "0", + "bytes_sent": "178", + "duration": "1", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "ed66ccc1-bdd1-9677-acad-753e18a62198", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:54:26.276Z", + "upstream_service": "10.244.0.10:9080", + "upstream_service_time": "1", + "upstream_cluster": "outbound|9080||details.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:58492", + "downstream_local": "10.109.148.19:9080", + "downstream_remote": "10.244.0.13:46028", + "requested_server": "-", + "route_name": "default", + "uri_path": "/details/0", + "user_agent": "Go-http-client/1.1" + } + }, + { + "message": "[2024-02-26T09:54:26.280Z] \"GET /reviews/0 HTTP/1.1\" 200 - via_upstream - \"-\" 0 442 5 5 \"-\" \"Go-http-client/1.1\" \"ed66ccc1-bdd1-9677-acad-753e18a62198\" \"reviews:9080\" \"10.244.0.15:9080\" outbound|9080||reviews.bookinfo.svc.cluster.local 10.244.0.13:32944 10.99.45.111:9080 10.244.0.13:34774 - default", + "severity": "INFO", + "timestamp": "2024-02-26 09:54:26.28", + "timestampUnix": 1708941266280, + "accessLog": { + "authority": "reviews:9080", + "bytes_received": "0", + "bytes_sent": "442", + "duration": "5", + "forwarded_for": "-", + "method": "GET", + "protocol": "HTTP/1.1", + "request_id": "ed66ccc1-bdd1-9677-acad-753e18a62198", + "response_flags": "- via_upstream -", + "status_code": "200", + "timestamp": "2024-02-26T09:54:26.280Z", + "upstream_service": "10.244.0.15:9080", + "upstream_service_time": "5", + "upstream_cluster": "outbound|9080||reviews.bookinfo.svc.cluster.local", + "upstream_local": "10.244.0.13:32944", + "downstream_local": "10.99.45.111:9080", + "downstream_remote": "10.244.0.13:34774", + "requested_server": "-", + "route_name": "default", + "uri_path": "/reviews/0", + "user_agent": "Go-http-client/1.1" + } + } + ], + "linesTruncated": true +} diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/general/istioStatus.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/general/istioStatus.json new file mode 100644 index 0000000000..accf21fb5c --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/general/istioStatus.json @@ -0,0 +1,7 @@ +[ + { "name": "istiod-7548d4ff85-fj8tb", "status": "Healthy", "is_core": true }, + { "name": "istiod-2", "status": "NotFound", "is_core": true }, + { "name": "istiod-3", "status": "Unhealthy", "is_core": true }, + { "name": "istiod-4", "status": "Unreachable", "is_core": true }, + { "name": "istiod-5", "status": "NotReady", "is_core": true } +] diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/general/istioValidations.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/general/istioValidations.json new file mode 100644 index 0000000000..612b8f42d7 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/general/istioValidations.json @@ -0,0 +1,44 @@ +{ + "Kubernetes": { + "bookinfo": { + "errors": 1, + "objectCount": 2, + "warnings": 1 + }, + "default": { + "errors": 0, + "objectCount": 0, + "warnings": 0 + }, + "hostpath-provisioner": { + "errors": 0, + "objectCount": 0, + "warnings": 0 + }, + "istio-system": { + "errors": 0, + "objectCount": 0, + "warnings": 0 + }, + "kiali": { + "errors": 0, + "objectCount": 0, + "warnings": 0 + }, + "travel-agency": { + "errors": 0, + "objectCount": 2, + "warnings": 0 + }, + "travel-control": { + "errors": 0, + "objectCount": 1, + "warnings": 1 + }, + "travel-portal": { + "errors": 0, + "objectCount": 0, + "warnings": 0 + } + } +} diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/general/logSpan.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/general/logSpan.json new file mode 100644 index 0000000000..92d2c76d0a --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/general/logSpan.json @@ -0,0 +1,64122 @@ +[ + { + "traceID": "e90f7b2f7e67702a2a302ee34c7652a8", + "spanID": "a3b5978b12e538c6", + "operationName": "productpage.bookinfo.svc.cluster.local:9080/productpage", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "e90f7b2f7e67702a2a302ee34c7652a8", + "spanID": "2a302ee34c7652a8" + } + ], + "startTime": 1708939371377105, + "duration": 11506, + "tags": [ + { + "key": "guid:x-request-id", + "type": "string", + "value": "b1b8802d-0d3e-9be0-a475-38335ec577a0" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "http.url", + "type": "string", + "value": "http://192.168.49.2:31793/productpage" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "response_size", + "type": "string", + "value": "5294" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "peer.address", + "type": "string", + "value": "envoy://internal_client_address/" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p2", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "e90f7b2f7e67702a2a302ee34c7652a8", + "spanID": "7efeef7fdd05a1fd", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "e90f7b2f7e67702a2a302ee34c7652a8", + "spanID": "a3b5978b12e538c6" + } + ], + "startTime": 1708939371379840, + "duration": 1535, + "tags": [ + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "b1b8802d-0d3e-9be0-a475-38335ec577a0" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p3", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "e90f7b2f7e67702a2a302ee34c7652a8", + "spanID": "b73f2fe4550b78b2", + "operationName": "reviews.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "e90f7b2f7e67702a2a302ee34c7652a8", + "spanID": "a3b5978b12e538c6" + } + ], + "startTime": 1708939371383684, + "duration": 3215, + "tags": [ + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "b1b8802d-0d3e-9be0-a475-38335ec577a0" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "http.url", + "type": "string", + "value": "http://reviews:9080/reviews/0" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "response_size", + "type": "string", + "value": "442" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p5", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "a08d526b9094f68a302c56b5aa72ecee", + "spanID": "a8c590e81cc47a74", + "operationName": "productpage.bookinfo.svc.cluster.local:9080/productpage", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "a08d526b9094f68a302c56b5aa72ecee", + "spanID": "302c56b5aa72ecee" + } + ], + "startTime": 1708939402376573, + "duration": 11472, + "tags": [ + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "http.url", + "type": "string", + "value": "http://192.168.49.2:31793/productpage" + }, + { + "key": "response_size", + "type": "string", + "value": "5289" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "8fe7b154-bded-947d-b6c6-c2055ed27334" + }, + { + "key": "peer.address", + "type": "string", + "value": "envoy://internal_client_address/" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p2", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "a08d526b9094f68a302c56b5aa72ecee", + "spanID": "3186d8fdd6c687b2", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "a08d526b9094f68a302c56b5aa72ecee", + "spanID": "a8c590e81cc47a74" + } + ], + "startTime": 1708939402379693, + "duration": 1462, + "tags": [ + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "8fe7b154-bded-947d-b6c6-c2055ed27334" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p3", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "a08d526b9094f68a302c56b5aa72ecee", + "spanID": "0f5f8909ca4eb4c1", + "operationName": "reviews.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "a08d526b9094f68a302c56b5aa72ecee", + "spanID": "a8c590e81cc47a74" + } + ], + "startTime": 1708939402383686, + "duration": 2686, + "tags": [ + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "8fe7b154-bded-947d-b6c6-c2055ed27334" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "response_size", + "type": "string", + "value": "437" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "http.url", + "type": "string", + "value": "http://reviews:9080/reviews/0" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p5", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "da52c4d5c8446db7caff81dadec07901", + "spanID": "780c43d676d3bbe4", + "operationName": "productpage.bookinfo.svc.cluster.local:9080/productpage", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "da52c4d5c8446db7caff81dadec07901", + "spanID": "caff81dadec07901" + } + ], + "startTime": 1708939401376769, + "duration": 21296, + "tags": [ + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "866037b8-40a7-9a4e-a860-91032967de6b" + }, + { + "key": "response_size", + "type": "string", + "value": "5294" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "http.url", + "type": "string", + "value": "http://192.168.49.2:31793/productpage" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "peer.address", + "type": "string", + "value": "envoy://internal_client_address/" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p2", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "da52c4d5c8446db7caff81dadec07901", + "spanID": "51c095ac70c77e8d", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "da52c4d5c8446db7caff81dadec07901", + "spanID": "780c43d676d3bbe4" + } + ], + "startTime": 1708939401382079, + "duration": 2968, + "tags": [ + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "866037b8-40a7-9a4e-a860-91032967de6b" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p3", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "da52c4d5c8446db7caff81dadec07901", + "spanID": "0a21f5ca337397e7", + "operationName": "reviews.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "da52c4d5c8446db7caff81dadec07901", + "spanID": "780c43d676d3bbe4" + } + ], + "startTime": 1708939401389773, + "duration": 4823, + "tags": [ + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "response_size", + "type": "string", + "value": "442" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "866037b8-40a7-9a4e-a860-91032967de6b" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "http.url", + "type": "string", + "value": "http://reviews:9080/reviews/0" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p5", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "229d603a181718e8c9d214b4efcec203", + "spanID": "ab96c9698d7c272a", + "operationName": "productpage.bookinfo.svc.cluster.local:9080/productpage", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "229d603a181718e8c9d214b4efcec203", + "spanID": "c9d214b4efcec203" + } + ], + "startTime": 1708939386376564, + "duration": 12909, + "tags": [ + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "peer.address", + "type": "string", + "value": "envoy://internal_client_address/" + }, + { + "key": "http.url", + "type": "string", + "value": "http://192.168.49.2:31793/productpage" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "8d351194-4096-931a-9013-bce501df49ae" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "response_size", + "type": "string", + "value": "5294" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p2", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "229d603a181718e8c9d214b4efcec203", + "spanID": "5a03466000acfa94", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "229d603a181718e8c9d214b4efcec203", + "spanID": "ab96c9698d7c272a" + } + ], + "startTime": 1708939386379973, + "duration": 1700, + "tags": [ + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "8d351194-4096-931a-9013-bce501df49ae" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p3", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "229d603a181718e8c9d214b4efcec203", + "spanID": "ded0c64c5eed6962", + "operationName": "reviews.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "229d603a181718e8c9d214b4efcec203", + "spanID": "ab96c9698d7c272a" + } + ], + "startTime": 1708939386385035, + "duration": 2787, + "tags": [ + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "http.url", + "type": "string", + "value": "http://reviews:9080/reviews/0" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "8d351194-4096-931a-9013-bce501df49ae" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "response_size", + "type": "string", + "value": "442" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p5", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "b63c051d470eb8027c912e05425193ea", + "spanID": "35d6964cdfcb6424", + "operationName": "productpage.bookinfo.svc.cluster.local:9080/productpage", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "b63c051d470eb8027c912e05425193ea", + "spanID": "7c912e05425193ea" + } + ], + "startTime": 1708939364376561, + "duration": 14481, + "tags": [ + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "peer.address", + "type": "string", + "value": "envoy://internal_client_address/" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "http.url", + "type": "string", + "value": "http://192.168.49.2:31793/productpage" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "response_size", + "type": "string", + "value": "5294" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "8b767d5c-665d-90d7-b81e-7c6cdf7f7440" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p2", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "b63c051d470eb8027c912e05425193ea", + "spanID": "54aa7d734b86d0e2", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "b63c051d470eb8027c912e05425193ea", + "spanID": "35d6964cdfcb6424" + } + ], + "startTime": 1708939364380460, + "duration": 1332, + "tags": [ + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "8b767d5c-665d-90d7-b81e-7c6cdf7f7440" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p3", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "b63c051d470eb8027c912e05425193ea", + "spanID": "fd646295b95b0542", + "operationName": "reviews.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "b63c051d470eb8027c912e05425193ea", + "spanID": "35d6964cdfcb6424" + } + ], + "startTime": 1708939364385543, + "duration": 3296, + "tags": [ + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "response_size", + "type": "string", + "value": "442" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "8b767d5c-665d-90d7-b81e-7c6cdf7f7440" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "http.url", + "type": "string", + "value": "http://reviews:9080/reviews/0" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p5", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "d4ccdfc00d63ed779e2bccef18cb294e", + "spanID": "8e06fcb708431dbb", + "operationName": "productpage.bookinfo.svc.cluster.local:9080/productpage", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "d4ccdfc00d63ed779e2bccef18cb294e", + "spanID": "9e2bccef18cb294e" + } + ], + "startTime": 1708939360377231, + "duration": 11522, + "tags": [ + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "e8b47c8f-ec2d-9fb9-8827-93103fcf51c0" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "response_size", + "type": "string", + "value": "5294" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "http.url", + "type": "string", + "value": "http://192.168.49.2:31793/productpage" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "peer.address", + "type": "string", + "value": "envoy://internal_client_address/" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p2", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "d4ccdfc00d63ed779e2bccef18cb294e", + "spanID": "e35c78569b3b5017", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "d4ccdfc00d63ed779e2bccef18cb294e", + "spanID": "8e06fcb708431dbb" + } + ], + "startTime": 1708939360380135, + "duration": 1337, + "tags": [ + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "e8b47c8f-ec2d-9fb9-8827-93103fcf51c0" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p3", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "d4ccdfc00d63ed779e2bccef18cb294e", + "spanID": "1af69989a527c7a2", + "operationName": "reviews.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "d4ccdfc00d63ed779e2bccef18cb294e", + "spanID": "8e06fcb708431dbb" + } + ], + "startTime": 1708939360383841, + "duration": 2871, + "tags": [ + { + "key": "guid:x-request-id", + "type": "string", + "value": "e8b47c8f-ec2d-9fb9-8827-93103fcf51c0" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "http.url", + "type": "string", + "value": "http://reviews:9080/reviews/0" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "response_size", + "type": "string", + "value": "442" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p5", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "a22b4c9771b27f32caf9f55be22b6022", + "spanID": "7eb6ff4846bd7156", + "operationName": "productpage.bookinfo.svc.cluster.local:9080/productpage", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "a22b4c9771b27f32caf9f55be22b6022", + "spanID": "caf9f55be22b6022" + } + ], + "startTime": 1708939387377596, + "duration": 21830, + "tags": [ + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "http.url", + "type": "string", + "value": "http://192.168.49.2:31793/productpage" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "peer.address", + "type": "string", + "value": "envoy://internal_client_address/" + }, + { + "key": "response_size", + "type": "string", + "value": "4294" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "77b503bb-ba8d-97f6-86cb-e90d4ef40357" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p2", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "a22b4c9771b27f32caf9f55be22b6022", + "spanID": "e0083e8c09590a89", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "a22b4c9771b27f32caf9f55be22b6022", + "spanID": "7eb6ff4846bd7156" + } + ], + "startTime": 1708939387388258, + "duration": 4297, + "tags": [ + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "77b503bb-ba8d-97f6-86cb-e90d4ef40357" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p3", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "a22b4c9771b27f32caf9f55be22b6022", + "spanID": "6b506be5c81eb717", + "operationName": "reviews.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "a22b4c9771b27f32caf9f55be22b6022", + "spanID": "7eb6ff4846bd7156" + } + ], + "startTime": 1708939387396915, + "duration": 1186, + "tags": [ + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "77b503bb-ba8d-97f6-86cb-e90d4ef40357" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "http.url", + "type": "string", + "value": "http://reviews:9080/reviews/0" + }, + { + "key": "response_size", + "type": "string", + "value": "358" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p5", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "7ff196474b28ecc6483c70ef15a0a9ec", + "spanID": "19b77b6a8ac76719", + "operationName": "productpage.bookinfo.svc.cluster.local:9080/productpage", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "7ff196474b28ecc6483c70ef15a0a9ec", + "spanID": "483c70ef15a0a9ec" + } + ], + "startTime": 1708939367376660, + "duration": 13728, + "tags": [ + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "34b1190c-ed22-91cc-ae52-8374f2c7f1a0" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "http.url", + "type": "string", + "value": "http://192.168.49.2:31793/productpage" + }, + { + "key": "response_size", + "type": "string", + "value": "5294" + }, + { + "key": "peer.address", + "type": "string", + "value": "envoy://internal_client_address/" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p2", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "7ff196474b28ecc6483c70ef15a0a9ec", + "spanID": "2eeaf6ec1ee9d4e1", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "7ff196474b28ecc6483c70ef15a0a9ec", + "spanID": "19b77b6a8ac76719" + } + ], + "startTime": 1708939367380246, + "duration": 1855, + "tags": [ + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "34b1190c-ed22-91cc-ae52-8374f2c7f1a0" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p3", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "7ff196474b28ecc6483c70ef15a0a9ec", + "spanID": "0b21ed825e9b281b", + "operationName": "reviews.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "7ff196474b28ecc6483c70ef15a0a9ec", + "spanID": "19b77b6a8ac76719" + } + ], + "startTime": 1708939367385203, + "duration": 3262, + "tags": [ + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "response_size", + "type": "string", + "value": "442" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "34b1190c-ed22-91cc-ae52-8374f2c7f1a0" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "http.url", + "type": "string", + "value": "http://reviews:9080/reviews/0" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p5", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "b199d73d2de11d3c020971279bd88b76", + "spanID": "38146f6c42090804", + "operationName": "productpage.bookinfo.svc.cluster.local:9080/productpage", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "b199d73d2de11d3c020971279bd88b76", + "spanID": "020971279bd88b76" + } + ], + "startTime": 1708939365376597, + "duration": 13277, + "tags": [ + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "peer.address", + "type": "string", + "value": "envoy://internal_client_address/" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "7991a821-a6dc-989c-b38a-e40b2d9d2177" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "http.url", + "type": "string", + "value": "http://192.168.49.2:31793/productpage" + }, + { + "key": "response_size", + "type": "string", + "value": "5289" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p2", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "b199d73d2de11d3c020971279bd88b76", + "spanID": "09f094ae8c052d85", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "b199d73d2de11d3c020971279bd88b76", + "spanID": "38146f6c42090804" + } + ], + "startTime": 1708939365380656, + "duration": 1645, + "tags": [ + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "7991a821-a6dc-989c-b38a-e40b2d9d2177" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p3", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "b199d73d2de11d3c020971279bd88b76", + "spanID": "366c926950a416f8", + "operationName": "reviews.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "b199d73d2de11d3c020971279bd88b76", + "spanID": "38146f6c42090804" + } + ], + "startTime": 1708939365385119, + "duration": 3100, + "tags": [ + { + "key": "guid:x-request-id", + "type": "string", + "value": "7991a821-a6dc-989c-b38a-e40b2d9d2177" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "http.url", + "type": "string", + "value": "http://reviews:9080/reviews/0" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "response_size", + "type": "string", + "value": "437" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p5", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "79d65f821ad2b8a61ef9d98218cb7f42", + "spanID": "dc67abdfccf200b4", + "operationName": "productpage.bookinfo.svc.cluster.local:9080/productpage", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "79d65f821ad2b8a61ef9d98218cb7f42", + "spanID": "1ef9d98218cb7f42" + } + ], + "startTime": 1708939409376681, + "duration": 14562, + "tags": [ + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "http.url", + "type": "string", + "value": "http://192.168.49.2:31793/productpage" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "response_size", + "type": "string", + "value": "5294" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "a2fff0f4-6ed7-966e-9d5f-ceefbdcf489a" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "peer.address", + "type": "string", + "value": "envoy://internal_client_address/" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p2", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "79d65f821ad2b8a61ef9d98218cb7f42", + "spanID": "32733cd6362753f8", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "79d65f821ad2b8a61ef9d98218cb7f42", + "spanID": "dc67abdfccf200b4" + } + ], + "startTime": 1708939409380318, + "duration": 1727, + "tags": [ + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "a2fff0f4-6ed7-966e-9d5f-ceefbdcf489a" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p3", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "79d65f821ad2b8a61ef9d98218cb7f42", + "spanID": "a569028fbf6b6967", + "operationName": "reviews.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "79d65f821ad2b8a61ef9d98218cb7f42", + "spanID": "dc67abdfccf200b4" + } + ], + "startTime": 1708939409384964, + "duration": 3675, + "tags": [ + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "response_size", + "type": "string", + "value": "442" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "a2fff0f4-6ed7-966e-9d5f-ceefbdcf489a" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "http.url", + "type": "string", + "value": "http://reviews:9080/reviews/0" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p5", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "552b803ec64e391457187c9af78121de", + "spanID": "65295eadbb979dd9", + "operationName": "productpage.bookinfo.svc.cluster.local:9080/productpage", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "552b803ec64e391457187c9af78121de", + "spanID": "57187c9af78121de" + } + ], + "startTime": 1708939395376630, + "duration": 13761, + "tags": [ + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "1e3c7327-5e7a-9966-b61e-036a2cbdcb53" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "peer.address", + "type": "string", + "value": "envoy://internal_client_address/" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "response_size", + "type": "string", + "value": "5289" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "http.url", + "type": "string", + "value": "http://192.168.49.2:31793/productpage" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p2", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "552b803ec64e391457187c9af78121de", + "spanID": "f0803a75fe99ecab", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "552b803ec64e391457187c9af78121de", + "spanID": "65295eadbb979dd9" + } + ], + "startTime": 1708939395379981, + "duration": 1858, + "tags": [ + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "1e3c7327-5e7a-9966-b61e-036a2cbdcb53" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p3", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "552b803ec64e391457187c9af78121de", + "spanID": "9a592335a04b9acd", + "operationName": "reviews.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "552b803ec64e391457187c9af78121de", + "spanID": "65295eadbb979dd9" + } + ], + "startTime": 1708939395384674, + "duration": 3800, + "tags": [ + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "http.url", + "type": "string", + "value": "http://reviews:9080/reviews/0" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "response_size", + "type": "string", + "value": "437" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "1e3c7327-5e7a-9966-b61e-036a2cbdcb53" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p5", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "8da83bec91fd2dd093fa1adf56b8744e", + "spanID": "befd8872da74c1b1", + "operationName": "productpage.bookinfo.svc.cluster.local:9080/productpage", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "8da83bec91fd2dd093fa1adf56b8744e", + "spanID": "93fa1adf56b8744e" + } + ], + "startTime": 1708939384377523, + "duration": 19059, + "tags": [ + { + "key": "peer.address", + "type": "string", + "value": "envoy://internal_client_address/" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "http.url", + "type": "string", + "value": "http://192.168.49.2:31793/productpage" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "response_size", + "type": "string", + "value": "4294" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "46001b5e-ad7f-9d65-ae9a-473e1d300dab" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p2", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "8da83bec91fd2dd093fa1adf56b8744e", + "spanID": "97b6e661f3a287e9", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "8da83bec91fd2dd093fa1adf56b8744e", + "spanID": "befd8872da74c1b1" + } + ], + "startTime": 1708939384387864, + "duration": 2308, + "tags": [ + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "46001b5e-ad7f-9d65-ae9a-473e1d300dab" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p3", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "8da83bec91fd2dd093fa1adf56b8744e", + "spanID": "e7561c96dbafcc8c", + "operationName": "reviews.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "8da83bec91fd2dd093fa1adf56b8744e", + "spanID": "befd8872da74c1b1" + } + ], + "startTime": 1708939384393446, + "duration": 1082, + "tags": [ + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "46001b5e-ad7f-9d65-ae9a-473e1d300dab" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "http.url", + "type": "string", + "value": "http://reviews:9080/reviews/0" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "response_size", + "type": "string", + "value": "358" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p5", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "46d5aee1a6a9d4ffb42a8b4833ef7146", + "spanID": "5b07c4df7f5ae135", + "operationName": "productpage.bookinfo.svc.cluster.local:9080/productpage", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "46d5aee1a6a9d4ffb42a8b4833ef7146", + "spanID": "b42a8b4833ef7146" + } + ], + "startTime": 1708939356376514, + "duration": 13957, + "tags": [ + { + "key": "guid:x-request-id", + "type": "string", + "value": "5f6b3abc-5677-9902-b70d-3d71fbf00ec6" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "response_size", + "type": "string", + "value": "5289" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "http.url", + "type": "string", + "value": "http://192.168.49.2:31793/productpage" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "peer.address", + "type": "string", + "value": "envoy://internal_client_address/" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p2", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "46d5aee1a6a9d4ffb42a8b4833ef7146", + "spanID": "ad005038f87769f9", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "46d5aee1a6a9d4ffb42a8b4833ef7146", + "spanID": "5b07c4df7f5ae135" + } + ], + "startTime": 1708939356379643, + "duration": 1957, + "tags": [ + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "5f6b3abc-5677-9902-b70d-3d71fbf00ec6" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p3", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "46d5aee1a6a9d4ffb42a8b4833ef7146", + "spanID": "b5d7b45d81503728", + "operationName": "reviews.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "46d5aee1a6a9d4ffb42a8b4833ef7146", + "spanID": "5b07c4df7f5ae135" + } + ], + "startTime": 1708939356384408, + "duration": 3549, + "tags": [ + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "http.url", + "type": "string", + "value": "http://reviews:9080/reviews/0" + }, + { + "key": "response_size", + "type": "string", + "value": "437" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "5f6b3abc-5677-9902-b70d-3d71fbf00ec6" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p5", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "e5cf3e96bbc9d3dadfec3265bf4957a6", + "spanID": "c84a05a4cfc268f5", + "operationName": "productpage.bookinfo.svc.cluster.local:9080/productpage", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "e5cf3e96bbc9d3dadfec3265bf4957a6", + "spanID": "dfec3265bf4957a6" + } + ], + "startTime": 1708939354376542, + "duration": 11093, + "tags": [ + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "43548773-4a7b-9243-811a-275578ef08a5" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "peer.address", + "type": "string", + "value": "envoy://internal_client_address/" + }, + { + "key": "http.url", + "type": "string", + "value": "http://192.168.49.2:31793/productpage" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "response_size", + "type": "string", + "value": "5294" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p2", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "e5cf3e96bbc9d3dadfec3265bf4957a6", + "spanID": "bd5db4257f8d6270", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "e5cf3e96bbc9d3dadfec3265bf4957a6", + "spanID": "c84a05a4cfc268f5" + } + ], + "startTime": 1708939354379466, + "duration": 1301, + "tags": [ + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "43548773-4a7b-9243-811a-275578ef08a5" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p3", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "e5cf3e96bbc9d3dadfec3265bf4957a6", + "spanID": "85afa3b9de5968f9", + "operationName": "reviews.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "e5cf3e96bbc9d3dadfec3265bf4957a6", + "spanID": "c84a05a4cfc268f5" + } + ], + "startTime": 1708939354383231, + "duration": 2852, + "tags": [ + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "response_size", + "type": "string", + "value": "442" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "43548773-4a7b-9243-811a-275578ef08a5" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "http.url", + "type": "string", + "value": "http://reviews:9080/reviews/0" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p5", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "a2a0e1121c94facf63106c0edf03b4b4", + "spanID": "4a4847d36153b75d", + "operationName": "productpage.bookinfo.svc.cluster.local:9080/productpage", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "a2a0e1121c94facf63106c0edf03b4b4", + "spanID": "63106c0edf03b4b4" + } + ], + "startTime": 1708939423376763, + "duration": 15339, + "tags": [ + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "b53481cd-8fca-99b2-906a-0f68a712915d" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "response_size", + "type": "string", + "value": "5289" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "http.url", + "type": "string", + "value": "http://192.168.49.2:31793/productpage" + }, + { + "key": "peer.address", + "type": "string", + "value": "envoy://internal_client_address/" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p2", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "a2a0e1121c94facf63106c0edf03b4b4", + "spanID": "3e332c6ed27361bf", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "a2a0e1121c94facf63106c0edf03b4b4", + "spanID": "4a4847d36153b75d" + } + ], + "startTime": 1708939423380183, + "duration": 1965, + "tags": [ + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "b53481cd-8fca-99b2-906a-0f68a712915d" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p3", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "a2a0e1121c94facf63106c0edf03b4b4", + "spanID": "b72c860db4d0e6c8", + "operationName": "reviews.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "a2a0e1121c94facf63106c0edf03b4b4", + "spanID": "4a4847d36153b75d" + } + ], + "startTime": 1708939423385514, + "duration": 3847, + "tags": [ + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "b53481cd-8fca-99b2-906a-0f68a712915d" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "response_size", + "type": "string", + "value": "437" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "http.url", + "type": "string", + "value": "http://reviews:9080/reviews/0" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p5", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "1fa474fbc50b6bc8299d02a2e7deb327", + "spanID": "d1ae99e4291e9eeb", + "operationName": "productpage.bookinfo.svc.cluster.local:9080/productpage", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "1fa474fbc50b6bc8299d02a2e7deb327", + "spanID": "299d02a2e7deb327" + } + ], + "startTime": 1708939420376567, + "duration": 12121, + "tags": [ + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "0af13113-d91d-9077-8756-f98beeffd579" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "response_size", + "type": "string", + "value": "5289" + }, + { + "key": "http.url", + "type": "string", + "value": "http://192.168.49.2:31793/productpage" + }, + { + "key": "peer.address", + "type": "string", + "value": "envoy://internal_client_address/" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p2", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "1fa474fbc50b6bc8299d02a2e7deb327", + "spanID": "36099a8a8fce3703", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "1fa474fbc50b6bc8299d02a2e7deb327", + "spanID": "d1ae99e4291e9eeb" + } + ], + "startTime": 1708939420379622, + "duration": 1371, + "tags": [ + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "0af13113-d91d-9077-8756-f98beeffd579" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p3", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "1fa474fbc50b6bc8299d02a2e7deb327", + "spanID": "74b7139e2e76da4f", + "operationName": "reviews.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "1fa474fbc50b6bc8299d02a2e7deb327", + "spanID": "d1ae99e4291e9eeb" + } + ], + "startTime": 1708939420383826, + "duration": 3256, + "tags": [ + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "0af13113-d91d-9077-8756-f98beeffd579" + }, + { + "key": "response_size", + "type": "string", + "value": "437" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "http.url", + "type": "string", + "value": "http://reviews:9080/reviews/0" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p5", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "de47c7e9653b269579b01ab69d1d1369", + "spanID": "75ad337494388a47", + "operationName": "productpage.bookinfo.svc.cluster.local:9080/productpage", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "de47c7e9653b269579b01ab69d1d1369", + "spanID": "79b01ab69d1d1369" + } + ], + "startTime": 1708939417377102, + "duration": 13505, + "tags": [ + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "dfb97aac-1f3f-9cf9-9fd7-9504c6ce35d6" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "peer.address", + "type": "string", + "value": "envoy://internal_client_address/" + }, + { + "key": "http.url", + "type": "string", + "value": "http://192.168.49.2:31793/productpage" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "response_size", + "type": "string", + "value": "5294" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p2", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "de47c7e9653b269579b01ab69d1d1369", + "spanID": "20a7e9aafa63c542", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "de47c7e9653b269579b01ab69d1d1369", + "spanID": "75ad337494388a47" + } + ], + "startTime": 1708939417381129, + "duration": 1429, + "tags": [ + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "dfb97aac-1f3f-9cf9-9fd7-9504c6ce35d6" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p3", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "de47c7e9653b269579b01ab69d1d1369", + "spanID": "99c60bf8c65a75eb", + "operationName": "reviews.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "de47c7e9653b269579b01ab69d1d1369", + "spanID": "75ad337494388a47" + } + ], + "startTime": 1708939417385906, + "duration": 3026, + "tags": [ + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "dfb97aac-1f3f-9cf9-9fd7-9504c6ce35d6" + }, + { + "key": "http.url", + "type": "string", + "value": "http://reviews:9080/reviews/0" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "response_size", + "type": "string", + "value": "442" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p5", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "f8d909a143daf750f2796f8f6f2bb563", + "spanID": "0778d2b29b643225", + "operationName": "productpage.bookinfo.svc.cluster.local:9080/productpage", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "f8d909a143daf750f2796f8f6f2bb563", + "spanID": "f2796f8f6f2bb563" + } + ], + "startTime": 1708939349376481, + "duration": 8781, + "tags": [ + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "response_size", + "type": "string", + "value": "4294" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "d1447bd7-8c19-9754-a168-67d4400b8466" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "http.url", + "type": "string", + "value": "http://192.168.49.2:31793/productpage" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "peer.address", + "type": "string", + "value": "envoy://internal_client_address/" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p2", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "f8d909a143daf750f2796f8f6f2bb563", + "spanID": "b31fc849fd7b58af", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "f8d909a143daf750f2796f8f6f2bb563", + "spanID": "0778d2b29b643225" + } + ], + "startTime": 1708939349379388, + "duration": 1200, + "tags": [ + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "d1447bd7-8c19-9754-a168-67d4400b8466" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p3", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "f8d909a143daf750f2796f8f6f2bb563", + "spanID": "b71c75f3f4e28db9", + "operationName": "reviews.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "f8d909a143daf750f2796f8f6f2bb563", + "spanID": "0778d2b29b643225" + } + ], + "startTime": 1708939349382906, + "duration": 914, + "tags": [ + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "response_size", + "type": "string", + "value": "358" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "http.url", + "type": "string", + "value": "http://reviews:9080/reviews/0" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "d1447bd7-8c19-9754-a168-67d4400b8466" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p5", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "91619d25ce479f1f4b03e1054299497d", + "spanID": "037432dc76fffde0", + "operationName": "productpage.bookinfo.svc.cluster.local:9080/productpage", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "91619d25ce479f1f4b03e1054299497d", + "spanID": "4b03e1054299497d" + } + ], + "startTime": 1708939336376721, + "duration": 30447, + "tags": [ + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "http.url", + "type": "string", + "value": "http://192.168.49.2:31793/productpage" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "peer.address", + "type": "string", + "value": "envoy://internal_client_address/" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "4f6cf07c-7e42-90de-a822-54ced0730dbf" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "response_size", + "type": "string", + "value": "4294" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p2", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "91619d25ce479f1f4b03e1054299497d", + "spanID": "7bc088ec03c142b2", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "91619d25ce479f1f4b03e1054299497d", + "spanID": "037432dc76fffde0" + } + ], + "startTime": 1708939336382508, + "duration": 9888, + "tags": [ + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "4f6cf07c-7e42-90de-a822-54ced0730dbf" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p3", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "91619d25ce479f1f4b03e1054299497d", + "spanID": "35d1a0c75aa33fd3", + "operationName": "reviews.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "91619d25ce479f1f4b03e1054299497d", + "spanID": "037432dc76fffde0" + } + ], + "startTime": 1708939336398504, + "duration": 1735, + "tags": [ + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "http.url", + "type": "string", + "value": "http://reviews:9080/reviews/0" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "response_size", + "type": "string", + "value": "358" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "4f6cf07c-7e42-90de-a822-54ced0730dbf" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p5", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "573d0b74b1daa5e604eb7aed24fbb535", + "spanID": "eebcdf11032bad18", + "operationName": "productpage.bookinfo.svc.cluster.local:9080/productpage", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "573d0b74b1daa5e604eb7aed24fbb535", + "spanID": "04eb7aed24fbb535" + } + ], + "startTime": 1708939411376848, + "duration": 19570, + "tags": [ + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "72efed78-9568-98d3-98db-7caf26b63570" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "response_size", + "type": "string", + "value": "5294" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "peer.address", + "type": "string", + "value": "envoy://internal_client_address/" + }, + { + "key": "http.url", + "type": "string", + "value": "http://192.168.49.2:31793/productpage" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p2", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "573d0b74b1daa5e604eb7aed24fbb535", + "spanID": "92e4cd9514c8b5c4", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "573d0b74b1daa5e604eb7aed24fbb535", + "spanID": "eebcdf11032bad18" + } + ], + "startTime": 1708939411382843, + "duration": 2135, + "tags": [ + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "72efed78-9568-98d3-98db-7caf26b63570" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p3", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "573d0b74b1daa5e604eb7aed24fbb535", + "spanID": "d97bcee860cf8926", + "operationName": "reviews.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "573d0b74b1daa5e604eb7aed24fbb535", + "spanID": "eebcdf11032bad18" + } + ], + "startTime": 1708939411389518, + "duration": 4267, + "tags": [ + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "72efed78-9568-98d3-98db-7caf26b63570" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "response_size", + "type": "string", + "value": "442" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "http.url", + "type": "string", + "value": "http://reviews:9080/reviews/0" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p5", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "32493ca86f7cccf67c107aa120c83d96", + "spanID": "bc88dbf7508c76a7", + "operationName": "productpage.bookinfo.svc.cluster.local:9080/productpage", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "32493ca86f7cccf67c107aa120c83d96", + "spanID": "7c107aa120c83d96" + } + ], + "startTime": 1708939363376581, + "duration": 17086, + "tags": [ + { + "key": "guid:x-request-id", + "type": "string", + "value": "c8ee1a23-09a2-9893-8712-315693160601" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "peer.address", + "type": "string", + "value": "envoy://internal_client_address/" + }, + { + "key": "response_size", + "type": "string", + "value": "5289" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "http.url", + "type": "string", + "value": "http://192.168.49.2:31793/productpage" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p2", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "32493ca86f7cccf67c107aa120c83d96", + "spanID": "aa7b9a5341432e7e", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "32493ca86f7cccf67c107aa120c83d96", + "spanID": "bc88dbf7508c76a7" + } + ], + "startTime": 1708939363381356, + "duration": 1851, + "tags": [ + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "c8ee1a23-09a2-9893-8712-315693160601" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p3", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "32493ca86f7cccf67c107aa120c83d96", + "spanID": "9b1f1382c72ae227", + "operationName": "reviews.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "32493ca86f7cccf67c107aa120c83d96", + "spanID": "bc88dbf7508c76a7" + } + ], + "startTime": 1708939363387385, + "duration": 3821, + "tags": [ + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "response_size", + "type": "string", + "value": "437" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "c8ee1a23-09a2-9893-8712-315693160601" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "http.url", + "type": "string", + "value": "http://reviews:9080/reviews/0" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p5", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "63f691447987972ee4ba6d85e2733b55", + "spanID": "2c06811db753414b", + "operationName": "productpage.bookinfo.svc.cluster.local:9080/productpage", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "63f691447987972ee4ba6d85e2733b55", + "spanID": "e4ba6d85e2733b55" + } + ], + "startTime": 1708939359376644, + "duration": 14454, + "tags": [ + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "http.url", + "type": "string", + "value": "http://192.168.49.2:31793/productpage" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "e634fbbe-5aa3-94c6-8959-bba009508515" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "response_size", + "type": "string", + "value": "5289" + }, + { + "key": "peer.address", + "type": "string", + "value": "envoy://internal_client_address/" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p2", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "63f691447987972ee4ba6d85e2733b55", + "spanID": "43d5a3177794a221", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "63f691447987972ee4ba6d85e2733b55", + "spanID": "2c06811db753414b" + } + ], + "startTime": 1708939359380087, + "duration": 1554, + "tags": [ + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "e634fbbe-5aa3-94c6-8959-bba009508515" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p3", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "63f691447987972ee4ba6d85e2733b55", + "spanID": "271c23b4fd3bd966", + "operationName": "reviews.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "63f691447987972ee4ba6d85e2733b55", + "spanID": "2c06811db753414b" + } + ], + "startTime": 1708939359384594, + "duration": 3832, + "tags": [ + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "http.url", + "type": "string", + "value": "http://reviews:9080/reviews/0" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "e634fbbe-5aa3-94c6-8959-bba009508515" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "response_size", + "type": "string", + "value": "437" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p5", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "27c2e3735de76ff474c26ee05f642214", + "spanID": "f20c01cbb8231890", + "operationName": "productpage.bookinfo.svc.cluster.local:9080/productpage", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "27c2e3735de76ff474c26ee05f642214", + "spanID": "74c26ee05f642214" + } + ], + "startTime": 1708939428376583, + "duration": 11401, + "tags": [ + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "response_size", + "type": "string", + "value": "5294" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "235ed647-99c2-9a21-b412-7303c570b3e9" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "http.url", + "type": "string", + "value": "http://192.168.49.2:31793/productpage" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "peer.address", + "type": "string", + "value": "envoy://internal_client_address/" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p2", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "27c2e3735de76ff474c26ee05f642214", + "spanID": "1347d8d975cb5cfb", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "27c2e3735de76ff474c26ee05f642214", + "spanID": "f20c01cbb8231890" + } + ], + "startTime": 1708939428379644, + "duration": 1325, + "tags": [ + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "235ed647-99c2-9a21-b412-7303c570b3e9" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p3", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "27c2e3735de76ff474c26ee05f642214", + "spanID": "478dd1e54b013a44", + "operationName": "reviews.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "27c2e3735de76ff474c26ee05f642214", + "spanID": "f20c01cbb8231890" + } + ], + "startTime": 1708939428383295, + "duration": 3096, + "tags": [ + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "http.url", + "type": "string", + "value": "http://reviews:9080/reviews/0" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "response_size", + "type": "string", + "value": "442" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "235ed647-99c2-9a21-b412-7303c570b3e9" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p5", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "cd06424c24fb8a24e2eac6203b2c2ea7", + "spanID": "19f31787fe36d009", + "operationName": "productpage.bookinfo.svc.cluster.local:9080/productpage", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "cd06424c24fb8a24e2eac6203b2c2ea7", + "spanID": "e2eac6203b2c2ea7" + } + ], + "startTime": 1708939414376561, + "duration": 14624, + "tags": [ + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "26598813-b25a-9ea8-a1e7-8296d91ddf53" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "response_size", + "type": "string", + "value": "5294" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "http.url", + "type": "string", + "value": "http://192.168.49.2:31793/productpage" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "peer.address", + "type": "string", + "value": "envoy://internal_client_address/" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p2", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "cd06424c24fb8a24e2eac6203b2c2ea7", + "spanID": "d4fbca54a9c792de", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "cd06424c24fb8a24e2eac6203b2c2ea7", + "spanID": "19f31787fe36d009" + } + ], + "startTime": 1708939414380264, + "duration": 1538, + "tags": [ + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "26598813-b25a-9ea8-a1e7-8296d91ddf53" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p3", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "cd06424c24fb8a24e2eac6203b2c2ea7", + "spanID": "55c80bfebf9417b5", + "operationName": "reviews.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "cd06424c24fb8a24e2eac6203b2c2ea7", + "spanID": "19f31787fe36d009" + } + ], + "startTime": 1708939414385827, + "duration": 3190, + "tags": [ + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "http.url", + "type": "string", + "value": "http://reviews:9080/reviews/0" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "26598813-b25a-9ea8-a1e7-8296d91ddf53" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "response_size", + "type": "string", + "value": "442" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p5", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "4f390cde1dda0627109592f88220fb22", + "spanID": "a5fa9f6e831d0e7f", + "operationName": "productpage.bookinfo.svc.cluster.local:9080/productpage", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "4f390cde1dda0627109592f88220fb22", + "spanID": "109592f88220fb22" + } + ], + "startTime": 1708939413376577, + "duration": 13909, + "tags": [ + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "response_size", + "type": "string", + "value": "5294" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "e7ada8e0-8f4c-9f06-95ed-243b62a170fb" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "http.url", + "type": "string", + "value": "http://192.168.49.2:31793/productpage" + }, + { + "key": "peer.address", + "type": "string", + "value": "envoy://internal_client_address/" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p2", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "4f390cde1dda0627109592f88220fb22", + "spanID": "06d2de2a28a55af5", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "4f390cde1dda0627109592f88220fb22", + "spanID": "a5fa9f6e831d0e7f" + } + ], + "startTime": 1708939413379474, + "duration": 1281, + "tags": [ + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "e7ada8e0-8f4c-9f06-95ed-243b62a170fb" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p3", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "4f390cde1dda0627109592f88220fb22", + "spanID": "6594c0a5f8150ffc", + "operationName": "reviews.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "4f390cde1dda0627109592f88220fb22", + "spanID": "a5fa9f6e831d0e7f" + } + ], + "startTime": 1708939413383093, + "duration": 3459, + "tags": [ + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "e7ada8e0-8f4c-9f06-95ed-243b62a170fb" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "http.url", + "type": "string", + "value": "http://reviews:9080/reviews/0" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "response_size", + "type": "string", + "value": "442" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p5", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "c59e5795ceb350d9c372706eb6b4f4c0", + "spanID": "c00cb777bcb68616", + "operationName": "productpage.bookinfo.svc.cluster.local:9080/productpage", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "c59e5795ceb350d9c372706eb6b4f4c0", + "spanID": "c372706eb6b4f4c0" + } + ], + "startTime": 1708939366376733, + "duration": 19658, + "tags": [ + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "peer.address", + "type": "string", + "value": "envoy://internal_client_address/" + }, + { + "key": "response_size", + "type": "string", + "value": "4294" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "46b9eb75-a21e-97cc-b44c-b21df438a024" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "http.url", + "type": "string", + "value": "http://192.168.49.2:31793/productpage" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p2", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "c59e5795ceb350d9c372706eb6b4f4c0", + "spanID": "cab763e31c769e8b", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "c59e5795ceb350d9c372706eb6b4f4c0", + "spanID": "c00cb777bcb68616" + } + ], + "startTime": 1708939366382661, + "duration": 3977, + "tags": [ + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "46b9eb75-a21e-97cc-b44c-b21df438a024" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p3", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "c59e5795ceb350d9c372706eb6b4f4c0", + "spanID": "2989858e695b34a8", + "operationName": "reviews.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "c59e5795ceb350d9c372706eb6b4f4c0", + "spanID": "c00cb777bcb68616" + } + ], + "startTime": 1708939366391632, + "duration": 1463, + "tags": [ + { + "key": "guid:x-request-id", + "type": "string", + "value": "46b9eb75-a21e-97cc-b44c-b21df438a024" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "http.url", + "type": "string", + "value": "http://reviews:9080/reviews/0" + }, + { + "key": "response_size", + "type": "string", + "value": "358" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p5", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "f1ecb5283b5b57cabe044218d8193318", + "spanID": "c0c5c657a261b254", + "operationName": "productpage.bookinfo.svc.cluster.local:9080/productpage", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "f1ecb5283b5b57cabe044218d8193318", + "spanID": "be044218d8193318" + } + ], + "startTime": 1708939344376532, + "duration": 10442, + "tags": [ + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "http.url", + "type": "string", + "value": "http://192.168.49.2:31793/productpage" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "peer.address", + "type": "string", + "value": "envoy://internal_client_address/" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "26de06a2-2243-97dc-a157-c5b8a67a5d19" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "response_size", + "type": "string", + "value": "4294" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p2", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "f1ecb5283b5b57cabe044218d8193318", + "spanID": "ca358f7d92160343", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "f1ecb5283b5b57cabe044218d8193318", + "spanID": "c0c5c657a261b254" + } + ], + "startTime": 1708939344379888, + "duration": 1455, + "tags": [ + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "26de06a2-2243-97dc-a157-c5b8a67a5d19" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p3", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "f1ecb5283b5b57cabe044218d8193318", + "spanID": "9763dd32d7910e21", + "operationName": "reviews.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "f1ecb5283b5b57cabe044218d8193318", + "spanID": "c0c5c657a261b254" + } + ], + "startTime": 1708939344384183, + "duration": 1139, + "tags": [ + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "http.url", + "type": "string", + "value": "http://reviews:9080/reviews/0" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "26de06a2-2243-97dc-a157-c5b8a67a5d19" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "response_size", + "type": "string", + "value": "358" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p5", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "9354a2dfaa830456eb4523e37ca98c57", + "spanID": "4b48f191dd049d90", + "operationName": "productpage.bookinfo.svc.cluster.local:9080/productpage", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "9354a2dfaa830456eb4523e37ca98c57", + "spanID": "eb4523e37ca98c57" + } + ], + "startTime": 1708939338379876, + "duration": 30562, + "tags": [ + { + "key": "guid:x-request-id", + "type": "string", + "value": "0f2f708c-35a9-902f-aced-b178c7cd7f44" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "http.url", + "type": "string", + "value": "http://192.168.49.2:31793/productpage" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "peer.address", + "type": "string", + "value": "envoy://internal_client_address/" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "response_size", + "type": "string", + "value": "4294" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p2", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "9354a2dfaa830456eb4523e37ca98c57", + "spanID": "bb6fff4271400feb", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "9354a2dfaa830456eb4523e37ca98c57", + "spanID": "4b48f191dd049d90" + } + ], + "startTime": 1708939338393439, + "duration": 4228, + "tags": [ + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "0f2f708c-35a9-902f-aced-b178c7cd7f44" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p3", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "9354a2dfaa830456eb4523e37ca98c57", + "spanID": "9fee170dfe993585", + "operationName": "reviews.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "9354a2dfaa830456eb4523e37ca98c57", + "spanID": "4b48f191dd049d90" + } + ], + "startTime": 1708939338403980, + "duration": 3541, + "tags": [ + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "response_size", + "type": "string", + "value": "358" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "0f2f708c-35a9-902f-aced-b178c7cd7f44" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "http.url", + "type": "string", + "value": "http://reviews:9080/reviews/0" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p5", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "a6c8b654bd28d8e15ce447845b830ca9", + "spanID": "67ffea69dc96015d", + "operationName": "productpage.bookinfo.svc.cluster.local:9080/productpage", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "a6c8b654bd28d8e15ce447845b830ca9", + "spanID": "5ce447845b830ca9" + } + ], + "startTime": 1708939425376574, + "duration": 12394, + "tags": [ + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "peer.address", + "type": "string", + "value": "envoy://internal_client_address/" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "1276aacd-5c61-91df-89ef-cc446e61563d" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "http.url", + "type": "string", + "value": "http://192.168.49.2:31793/productpage" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "response_size", + "type": "string", + "value": "5289" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p2", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "a6c8b654bd28d8e15ce447845b830ca9", + "spanID": "854b74fe3e2fcf1a", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "a6c8b654bd28d8e15ce447845b830ca9", + "spanID": "67ffea69dc96015d" + } + ], + "startTime": 1708939425380073, + "duration": 1276, + "tags": [ + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "1276aacd-5c61-91df-89ef-cc446e61563d" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p3", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "a6c8b654bd28d8e15ce447845b830ca9", + "spanID": "b6d0675baac5746c", + "operationName": "reviews.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "a6c8b654bd28d8e15ce447845b830ca9", + "spanID": "67ffea69dc96015d" + } + ], + "startTime": 1708939425383919, + "duration": 3131, + "tags": [ + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "http.url", + "type": "string", + "value": "http://reviews:9080/reviews/0" + }, + { + "key": "response_size", + "type": "string", + "value": "437" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "1276aacd-5c61-91df-89ef-cc446e61563d" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p5", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "d9b7878ea6dd517fcb78cb011c518131", + "spanID": "e178e94051d4452f", + "operationName": "productpage.bookinfo.svc.cluster.local:9080/productpage", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "d9b7878ea6dd517fcb78cb011c518131", + "spanID": "cb78cb011c518131" + } + ], + "startTime": 1708939388376598, + "duration": 8952, + "tags": [ + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "http.url", + "type": "string", + "value": "http://192.168.49.2:31793/productpage" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "peer.address", + "type": "string", + "value": "envoy://internal_client_address/" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "016bb45a-0fbf-9112-9a38-52d016771505" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "response_size", + "type": "string", + "value": "4294" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p2", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "d9b7878ea6dd517fcb78cb011c518131", + "spanID": "9e4fa97235d5e1fc", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "d9b7878ea6dd517fcb78cb011c518131", + "spanID": "e178e94051d4452f" + } + ], + "startTime": 1708939388379716, + "duration": 1229, + "tags": [ + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "016bb45a-0fbf-9112-9a38-52d016771505" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p3", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "d9b7878ea6dd517fcb78cb011c518131", + "spanID": "9ebb4ceea8fa0df6", + "operationName": "reviews.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "d9b7878ea6dd517fcb78cb011c518131", + "spanID": "e178e94051d4452f" + } + ], + "startTime": 1708939388383318, + "duration": 926, + "tags": [ + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "016bb45a-0fbf-9112-9a38-52d016771505" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "http.url", + "type": "string", + "value": "http://reviews:9080/reviews/0" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "response_size", + "type": "string", + "value": "358" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p5", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "c8a264a3584b209597b1f62934ae58e3", + "spanID": "5d5f216e8327e795", + "operationName": "productpage.bookinfo.svc.cluster.local:9080/productpage", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "c8a264a3584b209597b1f62934ae58e3", + "spanID": "97b1f62934ae58e3" + } + ], + "startTime": 1708939379376501, + "duration": 8993, + "tags": [ + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "http.url", + "type": "string", + "value": "http://192.168.49.2:31793/productpage" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "response_size", + "type": "string", + "value": "4294" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "c2cb9089-0d03-9e1f-a35d-8c50c64401a3" + }, + { + "key": "peer.address", + "type": "string", + "value": "envoy://internal_client_address/" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p2", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "c8a264a3584b209597b1f62934ae58e3", + "spanID": "d9bc37c64417ebb5", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "c8a264a3584b209597b1f62934ae58e3", + "spanID": "5d5f216e8327e795" + } + ], + "startTime": 1708939379379645, + "duration": 1300, + "tags": [ + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "c2cb9089-0d03-9e1f-a35d-8c50c64401a3" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p3", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "c8a264a3584b209597b1f62934ae58e3", + "spanID": "ffe2880966049d42", + "operationName": "reviews.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "c8a264a3584b209597b1f62934ae58e3", + "spanID": "5d5f216e8327e795" + } + ], + "startTime": 1708939379383241, + "duration": 980, + "tags": [ + { + "key": "http.url", + "type": "string", + "value": "http://reviews:9080/reviews/0" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "response_size", + "type": "string", + "value": "358" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "c2cb9089-0d03-9e1f-a35d-8c50c64401a3" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p5", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "f48fc902df4bafcf5927c9e37fe8b632", + "spanID": "db54bd4feb3538e1", + "operationName": "productpage.bookinfo.svc.cluster.local:9080/productpage", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "f48fc902df4bafcf5927c9e37fe8b632", + "spanID": "5927c9e37fe8b632" + } + ], + "startTime": 1708939380377354, + "duration": 16518, + "tags": [ + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "peer.address", + "type": "string", + "value": "envoy://internal_client_address/" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "http.url", + "type": "string", + "value": "http://192.168.49.2:31793/productpage" + }, + { + "key": "response_size", + "type": "string", + "value": "5294" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "e20d538e-0928-9179-8546-b7419536b553" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p2", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "f48fc902df4bafcf5927c9e37fe8b632", + "spanID": "83f3fcc59464c390", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "f48fc902df4bafcf5927c9e37fe8b632", + "spanID": "db54bd4feb3538e1" + } + ], + "startTime": 1708939380383753, + "duration": 2277, + "tags": [ + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "e20d538e-0928-9179-8546-b7419536b553" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p3", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "f48fc902df4bafcf5927c9e37fe8b632", + "spanID": "2208f7112d2778f2", + "operationName": "reviews.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "f48fc902df4bafcf5927c9e37fe8b632", + "spanID": "db54bd4feb3538e1" + } + ], + "startTime": 1708939380388804, + "duration": 2883, + "tags": [ + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "e20d538e-0928-9179-8546-b7419536b553" + }, + { + "key": "http.url", + "type": "string", + "value": "http://reviews:9080/reviews/0" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "response_size", + "type": "string", + "value": "442" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p5", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "e8307e78c4ee4263ab437aed408f3df4", + "spanID": "af4af8cd6d15bc92", + "operationName": "productpage.bookinfo.svc.cluster.local:9080/productpage", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "e8307e78c4ee4263ab437aed408f3df4", + "spanID": "ab437aed408f3df4" + } + ], + "startTime": 1708939378376592, + "duration": 11848, + "tags": [ + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "peer.address", + "type": "string", + "value": "envoy://internal_client_address/" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "eb7fc848-8f58-9079-95f2-fc5551c532a9" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "response_size", + "type": "string", + "value": "5289" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "http.url", + "type": "string", + "value": "http://192.168.49.2:31793/productpage" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p2", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "e8307e78c4ee4263ab437aed408f3df4", + "spanID": "ebacb547ad524443", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "e8307e78c4ee4263ab437aed408f3df4", + "spanID": "af4af8cd6d15bc92" + } + ], + "startTime": 1708939378379784, + "duration": 1506, + "tags": [ + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "eb7fc848-8f58-9079-95f2-fc5551c532a9" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p3", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "e8307e78c4ee4263ab437aed408f3df4", + "spanID": "e6473f73bc4a78bd", + "operationName": "reviews.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "e8307e78c4ee4263ab437aed408f3df4", + "spanID": "af4af8cd6d15bc92" + } + ], + "startTime": 1708939378383756, + "duration": 3095, + "tags": [ + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "response_size", + "type": "string", + "value": "437" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "http.url", + "type": "string", + "value": "http://reviews:9080/reviews/0" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "eb7fc848-8f58-9079-95f2-fc5551c532a9" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p5", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "4b78fa4c5c38264d7f386d0d1f9214e4", + "spanID": "1509b1fc165d6f59", + "operationName": "productpage.bookinfo.svc.cluster.local:9080/productpage", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "4b78fa4c5c38264d7f386d0d1f9214e4", + "spanID": "7f386d0d1f9214e4" + } + ], + "startTime": 1708939373376566, + "duration": 11708, + "tags": [ + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "http.url", + "type": "string", + "value": "http://192.168.49.2:31793/productpage" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "289abf1a-195b-98d0-afd1-3b76e8b5b0fe" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "response_size", + "type": "string", + "value": "5289" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "peer.address", + "type": "string", + "value": "envoy://internal_client_address/" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p2", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "4b78fa4c5c38264d7f386d0d1f9214e4", + "spanID": "ec4c12edd158ba45", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "4b78fa4c5c38264d7f386d0d1f9214e4", + "spanID": "1509b1fc165d6f59" + } + ], + "startTime": 1708939373379637, + "duration": 1267, + "tags": [ + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "289abf1a-195b-98d0-afd1-3b76e8b5b0fe" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p3", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "4b78fa4c5c38264d7f386d0d1f9214e4", + "spanID": "31894fe57f043996", + "operationName": "reviews.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "4b78fa4c5c38264d7f386d0d1f9214e4", + "spanID": "1509b1fc165d6f59" + } + ], + "startTime": 1708939373383284, + "duration": 3111, + "tags": [ + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "response_size", + "type": "string", + "value": "437" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "http.url", + "type": "string", + "value": "http://reviews:9080/reviews/0" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "289abf1a-195b-98d0-afd1-3b76e8b5b0fe" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p5", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "19df6c1d62906a401c0293b848653cdd", + "spanID": "b73940e352925bdd", + "operationName": "productpage.bookinfo.svc.cluster.local:9080/productpage", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "19df6c1d62906a401c0293b848653cdd", + "spanID": "1c0293b848653cdd" + } + ], + "startTime": 1708939370376577, + "duration": 14353, + "tags": [ + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "peer.address", + "type": "string", + "value": "envoy://internal_client_address/" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "http.url", + "type": "string", + "value": "http://192.168.49.2:31793/productpage" + }, + { + "key": "response_size", + "type": "string", + "value": "5294" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "2b109521-16a3-9acf-a86f-53df427aca39" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p2", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "19df6c1d62906a401c0293b848653cdd", + "spanID": "faf24819946a8d7a", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "19df6c1d62906a401c0293b848653cdd", + "spanID": "b73940e352925bdd" + } + ], + "startTime": 1708939370380241, + "duration": 1363, + "tags": [ + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "2b109521-16a3-9acf-a86f-53df427aca39" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p3", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "19df6c1d62906a401c0293b848653cdd", + "spanID": "3229477feba4a46c", + "operationName": "reviews.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "19df6c1d62906a401c0293b848653cdd", + "spanID": "b73940e352925bdd" + } + ], + "startTime": 1708939370384392, + "duration": 3301, + "tags": [ + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "http.url", + "type": "string", + "value": "http://reviews:9080/reviews/0" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "2b109521-16a3-9acf-a86f-53df427aca39" + }, + { + "key": "response_size", + "type": "string", + "value": "442" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p5", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "c0917d63c64c832366a7bf30c68b7cf9", + "spanID": "30c928d84cc4884a", + "operationName": "productpage.bookinfo.svc.cluster.local:9080/productpage", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "c0917d63c64c832366a7bf30c68b7cf9", + "spanID": "66a7bf30c68b7cf9" + } + ], + "startTime": 1708939342376532, + "duration": 11175, + "tags": [ + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "peer.address", + "type": "string", + "value": "envoy://internal_client_address/" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "ba810d5c-34de-9ad5-a441-eb2df3336071" + }, + { + "key": "response_size", + "type": "string", + "value": "4294" + }, + { + "key": "http.url", + "type": "string", + "value": "http://192.168.49.2:31793/productpage" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p2", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "c0917d63c64c832366a7bf30c68b7cf9", + "spanID": "0d7471ac857af449", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "c0917d63c64c832366a7bf30c68b7cf9", + "spanID": "30c928d84cc4884a" + } + ], + "startTime": 1708939342379747, + "duration": 1906, + "tags": [ + { + "key": "guid:x-request-id", + "type": "string", + "value": "ba810d5c-34de-9ad5-a441-eb2df3336071" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p3", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "c0917d63c64c832366a7bf30c68b7cf9", + "spanID": "0d29bb27bcc33e8d", + "operationName": "reviews.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "c0917d63c64c832366a7bf30c68b7cf9", + "spanID": "30c928d84cc4884a" + } + ], + "startTime": 1708939342384839, + "duration": 1221, + "tags": [ + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "ba810d5c-34de-9ad5-a441-eb2df3336071" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "response_size", + "type": "string", + "value": "358" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "http.url", + "type": "string", + "value": "http://reviews:9080/reviews/0" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p5", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "24a1aa1bad4e6d3d17ff51f60ab97f2e", + "spanID": "a785055f3547106d", + "operationName": "productpage.bookinfo.svc.cluster.local:9080/productpage", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "24a1aa1bad4e6d3d17ff51f60ab97f2e", + "spanID": "17ff51f60ab97f2e" + } + ], + "startTime": 1708939404376617, + "duration": 13397, + "tags": [ + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "http.url", + "type": "string", + "value": "http://192.168.49.2:31793/productpage" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "peer.address", + "type": "string", + "value": "envoy://internal_client_address/" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "7c9967e0-b483-9eb9-bcc2-8ece739420a3" + }, + { + "key": "response_size", + "type": "string", + "value": "5289" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p2", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "24a1aa1bad4e6d3d17ff51f60ab97f2e", + "spanID": "49ca982a18ad0f44", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "24a1aa1bad4e6d3d17ff51f60ab97f2e", + "spanID": "a785055f3547106d" + } + ], + "startTime": 1708939404380188, + "duration": 1523, + "tags": [ + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "7c9967e0-b483-9eb9-bcc2-8ece739420a3" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p3", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "24a1aa1bad4e6d3d17ff51f60ab97f2e", + "spanID": "02539d19d1636832", + "operationName": "reviews.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "24a1aa1bad4e6d3d17ff51f60ab97f2e", + "spanID": "a785055f3547106d" + } + ], + "startTime": 1708939404384555, + "duration": 2951, + "tags": [ + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "7c9967e0-b483-9eb9-bcc2-8ece739420a3" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "response_size", + "type": "string", + "value": "437" + }, + { + "key": "http.url", + "type": "string", + "value": "http://reviews:9080/reviews/0" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p5", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "fccf0c3d89b4b884cd4237c9d85b79f5", + "spanID": "1ae69aa0d5df2418", + "operationName": "productpage.bookinfo.svc.cluster.local:9080/productpage", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "fccf0c3d89b4b884cd4237c9d85b79f5", + "spanID": "cd4237c9d85b79f5" + } + ], + "startTime": 1708939391376679, + "duration": 15686, + "tags": [ + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "http.url", + "type": "string", + "value": "http://192.168.49.2:31793/productpage" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "46227d12-7ab8-939c-a117-01e0bbfcfc8e" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "peer.address", + "type": "string", + "value": "envoy://internal_client_address/" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "response_size", + "type": "string", + "value": "4294" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p2", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "fccf0c3d89b4b884cd4237c9d85b79f5", + "spanID": "592341ed1d268963", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "fccf0c3d89b4b884cd4237c9d85b79f5", + "spanID": "1ae69aa0d5df2418" + } + ], + "startTime": 1708939391380885, + "duration": 2469, + "tags": [ + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "46227d12-7ab8-939c-a117-01e0bbfcfc8e" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p3", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "fccf0c3d89b4b884cd4237c9d85b79f5", + "spanID": "d3d74c964cf9d1c8", + "operationName": "reviews.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "fccf0c3d89b4b884cd4237c9d85b79f5", + "spanID": "1ae69aa0d5df2418" + } + ], + "startTime": 1708939391388627, + "duration": 1552, + "tags": [ + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "response_size", + "type": "string", + "value": "358" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "http.url", + "type": "string", + "value": "http://reviews:9080/reviews/0" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "46227d12-7ab8-939c-a117-01e0bbfcfc8e" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p5", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "7f7417e0093f226fc084660f8604a0b1", + "spanID": "897d8dab9f85acf3", + "operationName": "productpage.bookinfo.svc.cluster.local:9080/productpage", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "7f7417e0093f226fc084660f8604a0b1", + "spanID": "c084660f8604a0b1" + } + ], + "startTime": 1708939389377290, + "duration": 21047, + "tags": [ + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "397f56d5-3fb9-9988-b97a-ac30f61983d6" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "http.url", + "type": "string", + "value": "http://192.168.49.2:31793/productpage" + }, + { + "key": "peer.address", + "type": "string", + "value": "envoy://internal_client_address/" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "response_size", + "type": "string", + "value": "4294" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p2", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "7f7417e0093f226fc084660f8604a0b1", + "spanID": "a0b8d1c082880be0", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "7f7417e0093f226fc084660f8604a0b1", + "spanID": "897d8dab9f85acf3" + } + ], + "startTime": 1708939389386177, + "duration": 2766, + "tags": [ + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "397f56d5-3fb9-9988-b97a-ac30f61983d6" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p3", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "7f7417e0093f226fc084660f8604a0b1", + "spanID": "c943d3553a6d92a3", + "operationName": "reviews.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "7f7417e0093f226fc084660f8604a0b1", + "spanID": "897d8dab9f85acf3" + } + ], + "startTime": 1708939389393971, + "duration": 1622, + "tags": [ + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "http.url", + "type": "string", + "value": "http://reviews:9080/reviews/0" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "response_size", + "type": "string", + "value": "358" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "397f56d5-3fb9-9988-b97a-ac30f61983d6" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p5", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "59d4b0d526c01e1d01dc19de5e8ccdc3", + "spanID": "9a7b15f6b4a095bc", + "operationName": "productpage.bookinfo.svc.cluster.local:9080/productpage", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "59d4b0d526c01e1d01dc19de5e8ccdc3", + "spanID": "01dc19de5e8ccdc3" + } + ], + "startTime": 1708939376376554, + "duration": 12120, + "tags": [ + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "def779b7-ca65-9666-a7ee-cdb11be383b4" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "http.url", + "type": "string", + "value": "http://192.168.49.2:31793/productpage" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "peer.address", + "type": "string", + "value": "envoy://internal_client_address/" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "response_size", + "type": "string", + "value": "5289" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p2", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "59d4b0d526c01e1d01dc19de5e8ccdc3", + "spanID": "543977b7f199022c", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "59d4b0d526c01e1d01dc19de5e8ccdc3", + "spanID": "9a7b15f6b4a095bc" + } + ], + "startTime": 1708939376379740, + "duration": 1786, + "tags": [ + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "def779b7-ca65-9666-a7ee-cdb11be383b4" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p3", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "59d4b0d526c01e1d01dc19de5e8ccdc3", + "spanID": "cadbe6b5bb709204", + "operationName": "reviews.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "59d4b0d526c01e1d01dc19de5e8ccdc3", + "spanID": "9a7b15f6b4a095bc" + } + ], + "startTime": 1708939376384030, + "duration": 2876, + "tags": [ + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "http.url", + "type": "string", + "value": "http://reviews:9080/reviews/0" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "response_size", + "type": "string", + "value": "437" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "def779b7-ca65-9666-a7ee-cdb11be383b4" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p5", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "4f946e24263fb7184f655f09133e1f9a", + "spanID": "71eb5ba7b3f3ad4c", + "operationName": "productpage.bookinfo.svc.cluster.local:9080/productpage", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "4f946e24263fb7184f655f09133e1f9a", + "spanID": "4f655f09133e1f9a" + } + ], + "startTime": 1708939368376632, + "duration": 16646, + "tags": [ + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "http.url", + "type": "string", + "value": "http://192.168.49.2:31793/productpage" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "peer.address", + "type": "string", + "value": "envoy://internal_client_address/" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "630f40f2-9584-9f4f-9c01-f0910515b498" + }, + { + "key": "response_size", + "type": "string", + "value": "5289" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p2", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "4f946e24263fb7184f655f09133e1f9a", + "spanID": "7a02dd01a450eaad", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "4f946e24263fb7184f655f09133e1f9a", + "spanID": "71eb5ba7b3f3ad4c" + } + ], + "startTime": 1708939368380942, + "duration": 1774, + "tags": [ + { + "key": "guid:x-request-id", + "type": "string", + "value": "630f40f2-9584-9f4f-9c01-f0910515b498" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p3", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "4f946e24263fb7184f655f09133e1f9a", + "spanID": "12c490e8334e6bee", + "operationName": "reviews.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "4f946e24263fb7184f655f09133e1f9a", + "spanID": "71eb5ba7b3f3ad4c" + } + ], + "startTime": 1708939368386672, + "duration": 4492, + "tags": [ + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "630f40f2-9584-9f4f-9c01-f0910515b498" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "response_size", + "type": "string", + "value": "437" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "http.url", + "type": "string", + "value": "http://reviews:9080/reviews/0" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p5", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "9bc1e5e16405bfd39800885928b75201", + "spanID": "e94247df6814e698", + "operationName": "productpage.bookinfo.svc.cluster.local:9080/productpage", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "9bc1e5e16405bfd39800885928b75201", + "spanID": "9800885928b75201" + } + ], + "startTime": 1708939362377035, + "duration": 13295, + "tags": [ + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "d2c9b88d-b8b7-9865-bf9a-be71e460d2a5" + }, + { + "key": "peer.address", + "type": "string", + "value": "envoy://internal_client_address/" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "response_size", + "type": "string", + "value": "5294" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "http.url", + "type": "string", + "value": "http://192.168.49.2:31793/productpage" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p2", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "9bc1e5e16405bfd39800885928b75201", + "spanID": "55fb4cb6394f1d17", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "9bc1e5e16405bfd39800885928b75201", + "spanID": "e94247df6814e698" + } + ], + "startTime": 1708939362381850, + "duration": 1473, + "tags": [ + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "d2c9b88d-b8b7-9865-bf9a-be71e460d2a5" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p3", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "9bc1e5e16405bfd39800885928b75201", + "spanID": "54e2fb6453ffbc6e", + "operationName": "reviews.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "9bc1e5e16405bfd39800885928b75201", + "spanID": "e94247df6814e698" + } + ], + "startTime": 1708939362385867, + "duration": 2789, + "tags": [ + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "http.url", + "type": "string", + "value": "http://reviews:9080/reviews/0" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "d2c9b88d-b8b7-9865-bf9a-be71e460d2a5" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "response_size", + "type": "string", + "value": "442" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p5", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "8c1e1bccd0a3880c73cf5e7a62dff60e", + "spanID": "d1060c97ad1a4fe5", + "operationName": "productpage.bookinfo.svc.cluster.local:9080/productpage", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "8c1e1bccd0a3880c73cf5e7a62dff60e", + "spanID": "73cf5e7a62dff60e" + } + ], + "startTime": 1708939343376517, + "duration": 11675, + "tags": [ + { + "key": "http.url", + "type": "string", + "value": "http://192.168.49.2:31793/productpage" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "peer.address", + "type": "string", + "value": "envoy://internal_client_address/" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "5eb9e3c2-8fe0-9487-8527-e854b0d2181c" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "response_size", + "type": "string", + "value": "4294" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p2", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "8c1e1bccd0a3880c73cf5e7a62dff60e", + "spanID": "e43947d762be0725", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "8c1e1bccd0a3880c73cf5e7a62dff60e", + "spanID": "d1060c97ad1a4fe5" + } + ], + "startTime": 1708939343379483, + "duration": 1658, + "tags": [ + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "5eb9e3c2-8fe0-9487-8527-e854b0d2181c" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p3", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "8c1e1bccd0a3880c73cf5e7a62dff60e", + "spanID": "cba775e2513a765e", + "operationName": "reviews.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "8c1e1bccd0a3880c73cf5e7a62dff60e", + "spanID": "d1060c97ad1a4fe5" + } + ], + "startTime": 1708939343384291, + "duration": 1443, + "tags": [ + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "response_size", + "type": "string", + "value": "358" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "http.url", + "type": "string", + "value": "http://reviews:9080/reviews/0" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "5eb9e3c2-8fe0-9487-8527-e854b0d2181c" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p5", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "27f925251ece15804223cca0220f1b89", + "spanID": "02078e1219ef885a", + "operationName": "productpage.bookinfo.svc.cluster.local:9080/productpage", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "27f925251ece15804223cca0220f1b89", + "spanID": "4223cca0220f1b89" + } + ], + "startTime": 1708939335377652, + "duration": 15982, + "tags": [ + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "peer.address", + "type": "string", + "value": "envoy://internal_client_address/" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "response_size", + "type": "string", + "value": "5289" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "f59ec7b8-a4d1-9c9e-898e-7649cf1b58e8" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "http.url", + "type": "string", + "value": "http://192.168.49.2:31793/productpage" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p2", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "27f925251ece15804223cca0220f1b89", + "spanID": "767542b7eb02289d", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "27f925251ece15804223cca0220f1b89", + "spanID": "02078e1219ef885a" + } + ], + "startTime": 1708939335382404, + "duration": 1469, + "tags": [ + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "f59ec7b8-a4d1-9c9e-898e-7649cf1b58e8" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p3", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "27f925251ece15804223cca0220f1b89", + "spanID": "7175c884465c7978", + "operationName": "reviews.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "27f925251ece15804223cca0220f1b89", + "spanID": "02078e1219ef885a" + } + ], + "startTime": 1708939335387255, + "duration": 3797, + "tags": [ + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "response_size", + "type": "string", + "value": "437" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "http.url", + "type": "string", + "value": "http://reviews:9080/reviews/0" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "f59ec7b8-a4d1-9c9e-898e-7649cf1b58e8" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p5", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "9828e70b19480018bcabdb8d14f89420", + "spanID": "f9e803f199b6dd58", + "operationName": "productpage.bookinfo.svc.cluster.local:9080/productpage", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "9828e70b19480018bcabdb8d14f89420", + "spanID": "bcabdb8d14f89420" + } + ], + "startTime": 1708939434376526, + "duration": 16484, + "tags": [ + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "http.url", + "type": "string", + "value": "http://192.168.49.2:31793/productpage" + }, + { + "key": "response_size", + "type": "string", + "value": "5294" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "peer.address", + "type": "string", + "value": "envoy://internal_client_address/" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "d4ed7388-2188-902c-be79-57d63481fb93" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p1", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 2 + }, + { + "traceID": "9828e70b19480018bcabdb8d14f89420", + "spanID": "70b280aeb1329734", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "9828e70b19480018bcabdb8d14f89420", + "spanID": "f9e803f199b6dd58" + } + ], + "startTime": 1708939434380144, + "duration": 1755, + "tags": [ + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "d4ed7388-2188-902c-be79-57d63481fb93" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p2", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 2 + }, + { + "traceID": "5291419d276a76d2b5d516e79e85697c", + "spanID": "a5e6afaa4b4203b7", + "operationName": "productpage.bookinfo.svc.cluster.local:9080/productpage", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "5291419d276a76d2b5d516e79e85697c", + "spanID": "b5d516e79e85697c" + } + ], + "startTime": 1708939418376521, + "duration": 10087, + "tags": [ + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "http.url", + "type": "string", + "value": "http://192.168.49.2:31793/productpage" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "bc549029-1e06-9e33-ac3a-e3565652bff1" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "response_size", + "type": "string", + "value": "4294" + }, + { + "key": "peer.address", + "type": "string", + "value": "envoy://internal_client_address/" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p2", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "5291419d276a76d2b5d516e79e85697c", + "spanID": "9fe12c9bc4aecece", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "5291419d276a76d2b5d516e79e85697c", + "spanID": "a5e6afaa4b4203b7" + } + ], + "startTime": 1708939418379949, + "duration": 1318, + "tags": [ + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "bc549029-1e06-9e33-ac3a-e3565652bff1" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p3", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "5291419d276a76d2b5d516e79e85697c", + "spanID": "4e3c4d6f06f8c004", + "operationName": "reviews.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "5291419d276a76d2b5d516e79e85697c", + "spanID": "a5e6afaa4b4203b7" + } + ], + "startTime": 1708939418384031, + "duration": 1060, + "tags": [ + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "response_size", + "type": "string", + "value": "358" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "bc549029-1e06-9e33-ac3a-e3565652bff1" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "http.url", + "type": "string", + "value": "http://reviews:9080/reviews/0" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p5", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "415a4bc97c47fa15a468448c7df5b1d9", + "spanID": "636b6a6d45cff9c5", + "operationName": "productpage.bookinfo.svc.cluster.local:9080/productpage", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "415a4bc97c47fa15a468448c7df5b1d9", + "spanID": "a468448c7df5b1d9" + } + ], + "startTime": 1708939412380134, + "duration": 36026, + "tags": [ + { + "key": "peer.address", + "type": "string", + "value": "envoy://internal_client_address/" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "response_size", + "type": "string", + "value": "4294" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "http.url", + "type": "string", + "value": "http://192.168.49.2:31793/productpage" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "3804560d-afb2-9446-b126-4bd070b6114c" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p2", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "415a4bc97c47fa15a468448c7df5b1d9", + "spanID": "c6c9d7676afa2f06", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "415a4bc97c47fa15a468448c7df5b1d9", + "spanID": "636b6a6d45cff9c5" + } + ], + "startTime": 1708939412388620, + "duration": 9480, + "tags": [ + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "3804560d-afb2-9446-b126-4bd070b6114c" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p3", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "415a4bc97c47fa15a468448c7df5b1d9", + "spanID": "41b666965ec58a3c", + "operationName": "reviews.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "415a4bc97c47fa15a468448c7df5b1d9", + "spanID": "636b6a6d45cff9c5" + } + ], + "startTime": 1708939412405918, + "duration": 3961, + "tags": [ + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "response_size", + "type": "string", + "value": "358" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "3804560d-afb2-9446-b126-4bd070b6114c" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "http.url", + "type": "string", + "value": "http://reviews:9080/reviews/0" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p5", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "939f5fd73f9105ef65197a37db62daf1", + "spanID": "0392c37b0b6a8614", + "operationName": "productpage.bookinfo.svc.cluster.local:9080/productpage", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "939f5fd73f9105ef65197a37db62daf1", + "spanID": "65197a37db62daf1" + } + ], + "startTime": 1708939415376497, + "duration": 12762, + "tags": [ + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "http.url", + "type": "string", + "value": "http://192.168.49.2:31793/productpage" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "peer.address", + "type": "string", + "value": "envoy://internal_client_address/" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "response_size", + "type": "string", + "value": "5294" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "3c0f2c8e-7c7f-98ba-a809-3704429eb3e8" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p2", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "939f5fd73f9105ef65197a37db62daf1", + "spanID": "08ed7acbec223a77", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "939f5fd73f9105ef65197a37db62daf1", + "spanID": "0392c37b0b6a8614" + } + ], + "startTime": 1708939415380573, + "duration": 1372, + "tags": [ + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "3c0f2c8e-7c7f-98ba-a809-3704429eb3e8" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p3", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "939f5fd73f9105ef65197a37db62daf1", + "spanID": "7783eb0bed4e86db", + "operationName": "reviews.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "939f5fd73f9105ef65197a37db62daf1", + "spanID": "0392c37b0b6a8614" + } + ], + "startTime": 1708939415384553, + "duration": 2694, + "tags": [ + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "response_size", + "type": "string", + "value": "442" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "http.url", + "type": "string", + "value": "http://reviews:9080/reviews/0" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "3c0f2c8e-7c7f-98ba-a809-3704429eb3e8" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p5", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "ea21a4cc947ed62d635a4d72b0ed8d73", + "spanID": "7e6f5236f1183439", + "operationName": "productpage.bookinfo.svc.cluster.local:9080/productpage", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "ea21a4cc947ed62d635a4d72b0ed8d73", + "spanID": "635a4d72b0ed8d73" + } + ], + "startTime": 1708939393376662, + "duration": 13998, + "tags": [ + { + "key": "guid:x-request-id", + "type": "string", + "value": "25845381-7910-9c2e-9e00-0ec6e27c34b1" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "peer.address", + "type": "string", + "value": "envoy://internal_client_address/" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "response_size", + "type": "string", + "value": "5289" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "http.url", + "type": "string", + "value": "http://192.168.49.2:31793/productpage" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p2", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "ea21a4cc947ed62d635a4d72b0ed8d73", + "spanID": "abef7aa3d2655229", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "ea21a4cc947ed62d635a4d72b0ed8d73", + "spanID": "7e6f5236f1183439" + } + ], + "startTime": 1708939393380193, + "duration": 1649, + "tags": [ + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "25845381-7910-9c2e-9e00-0ec6e27c34b1" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p3", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "ea21a4cc947ed62d635a4d72b0ed8d73", + "spanID": "79966a7a668ba249", + "operationName": "reviews.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "ea21a4cc947ed62d635a4d72b0ed8d73", + "spanID": "7e6f5236f1183439" + } + ], + "startTime": 1708939393384966, + "duration": 3810, + "tags": [ + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "25845381-7910-9c2e-9e00-0ec6e27c34b1" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "response_size", + "type": "string", + "value": "437" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "http.url", + "type": "string", + "value": "http://reviews:9080/reviews/0" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p5", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "9f3023c8002b4e07885e7907b290a676", + "spanID": "772ff5b0474f4b78", + "operationName": "productpage.bookinfo.svc.cluster.local:9080/productpage", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "9f3023c8002b4e07885e7907b290a676", + "spanID": "885e7907b290a676" + } + ], + "startTime": 1708939341376887, + "duration": 21626, + "tags": [ + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "http.url", + "type": "string", + "value": "http://192.168.49.2:31793/productpage" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "peer.address", + "type": "string", + "value": "envoy://internal_client_address/" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "response_size", + "type": "string", + "value": "4294" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "080659b5-57bb-9348-a204-abcc9a77ec56" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p2", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "9f3023c8002b4e07885e7907b290a676", + "spanID": "722670020556ba70", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "9f3023c8002b4e07885e7907b290a676", + "spanID": "772ff5b0474f4b78" + } + ], + "startTime": 1708939341383117, + "duration": 2994, + "tags": [ + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "080659b5-57bb-9348-a204-abcc9a77ec56" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p3", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "9f3023c8002b4e07885e7907b290a676", + "spanID": "27ab9a98e7535907", + "operationName": "reviews.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "9f3023c8002b4e07885e7907b290a676", + "spanID": "772ff5b0474f4b78" + } + ], + "startTime": 1708939341391729, + "duration": 3693, + "tags": [ + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "080659b5-57bb-9348-a204-abcc9a77ec56" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "response_size", + "type": "string", + "value": "358" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "http.url", + "type": "string", + "value": "http://reviews:9080/reviews/0" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p5", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "a1c6543de7c9cc3ad01b598d1f0e74d2", + "spanID": "1a2ecddf0c01d4d1", + "operationName": "productpage.bookinfo.svc.cluster.local:9080/productpage", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "a1c6543de7c9cc3ad01b598d1f0e74d2", + "spanID": "d01b598d1f0e74d2" + } + ], + "startTime": 1708939400376796, + "duration": 20046, + "tags": [ + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "37a38011-13ae-9fda-aead-e4edb16febf7" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "http.url", + "type": "string", + "value": "http://192.168.49.2:31793/productpage" + }, + { + "key": "response_size", + "type": "string", + "value": "5289" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "peer.address", + "type": "string", + "value": "envoy://internal_client_address/" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p2", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "a1c6543de7c9cc3ad01b598d1f0e74d2", + "spanID": "e26ab626bc587d4a", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "a1c6543de7c9cc3ad01b598d1f0e74d2", + "spanID": "1a2ecddf0c01d4d1" + } + ], + "startTime": 1708939400382308, + "duration": 2568, + "tags": [ + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "37a38011-13ae-9fda-aead-e4edb16febf7" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p3", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "a1c6543de7c9cc3ad01b598d1f0e74d2", + "spanID": "fc575ddb4080330f", + "operationName": "reviews.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "a1c6543de7c9cc3ad01b598d1f0e74d2", + "spanID": "1a2ecddf0c01d4d1" + } + ], + "startTime": 1708939400389544, + "duration": 4554, + "tags": [ + { + "key": "http.url", + "type": "string", + "value": "http://reviews:9080/reviews/0" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "37a38011-13ae-9fda-aead-e4edb16febf7" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "response_size", + "type": "string", + "value": "437" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p5", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "159d9418e7e8f3f141caa905708c384a", + "spanID": "7c3c60e49f34ea63", + "operationName": "productpage.bookinfo.svc.cluster.local:9080/productpage", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "159d9418e7e8f3f141caa905708c384a", + "spanID": "41caa905708c384a" + } + ], + "startTime": 1708939372376447, + "duration": 11180, + "tags": [ + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "8ea302a0-3204-99a2-8547-c93e41d69419" + }, + { + "key": "http.url", + "type": "string", + "value": "http://192.168.49.2:31793/productpage" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "response_size", + "type": "string", + "value": "5294" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "peer.address", + "type": "string", + "value": "envoy://internal_client_address/" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p2", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "159d9418e7e8f3f141caa905708c384a", + "spanID": "f1a2d6726e91f8e6", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "159d9418e7e8f3f141caa905708c384a", + "spanID": "7c3c60e49f34ea63" + } + ], + "startTime": 1708939372379324, + "duration": 1377, + "tags": [ + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "8ea302a0-3204-99a2-8547-c93e41d69419" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p3", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "159d9418e7e8f3f141caa905708c384a", + "spanID": "ca33ef32273d29f5", + "operationName": "reviews.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "159d9418e7e8f3f141caa905708c384a", + "spanID": "7c3c60e49f34ea63" + } + ], + "startTime": 1708939372383218, + "duration": 2784, + "tags": [ + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "response_size", + "type": "string", + "value": "442" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "8ea302a0-3204-99a2-8547-c93e41d69419" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "http.url", + "type": "string", + "value": "http://reviews:9080/reviews/0" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p5", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "424afb3d0e7f8dfb561ede8a9c00351d", + "spanID": "599e29410857fd71", + "operationName": "productpage.bookinfo.svc.cluster.local:9080/productpage", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "424afb3d0e7f8dfb561ede8a9c00351d", + "spanID": "561ede8a9c00351d" + } + ], + "startTime": 1708939433377274, + "duration": 17718, + "tags": [ + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "peer.address", + "type": "string", + "value": "envoy://internal_client_address/" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "http.url", + "type": "string", + "value": "http://192.168.49.2:31793/productpage" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "response_size", + "type": "string", + "value": "4294" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "2c1346d1-7d74-9b3f-818b-e33e6b60fd46" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p1", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 1 + }, + { + "traceID": "a821cfc9ff2dad19bdf7c1ce42765035", + "spanID": "25333f595deaf126", + "operationName": "productpage.bookinfo.svc.cluster.local:9080/productpage", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "a821cfc9ff2dad19bdf7c1ce42765035", + "spanID": "bdf7c1ce42765035" + } + ], + "startTime": 1708939431376554, + "duration": 11633, + "tags": [ + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "peer.address", + "type": "string", + "value": "envoy://internal_client_address/" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "770c8af8-0af9-9fc4-87b7-6a50c3c61007" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "response_size", + "type": "string", + "value": "5289" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "http.url", + "type": "string", + "value": "http://192.168.49.2:31793/productpage" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p2", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "a821cfc9ff2dad19bdf7c1ce42765035", + "spanID": "cb8affa615ccb4fe", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "a821cfc9ff2dad19bdf7c1ce42765035", + "spanID": "25333f595deaf126" + } + ], + "startTime": 1708939431379471, + "duration": 1671, + "tags": [ + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "770c8af8-0af9-9fc4-87b7-6a50c3c61007" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p3", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "a821cfc9ff2dad19bdf7c1ce42765035", + "spanID": "e968d55c141841c1", + "operationName": "reviews.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "a821cfc9ff2dad19bdf7c1ce42765035", + "spanID": "25333f595deaf126" + } + ], + "startTime": 1708939431383618, + "duration": 2652, + "tags": [ + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "response_size", + "type": "string", + "value": "437" + }, + { + "key": "http.url", + "type": "string", + "value": "http://reviews:9080/reviews/0" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "770c8af8-0af9-9fc4-87b7-6a50c3c61007" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p5", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "b0c33c7452f0cb2bd2da6404e3838ccd", + "spanID": "ba9277713a387240", + "operationName": "productpage.bookinfo.svc.cluster.local:9080/productpage", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "b0c33c7452f0cb2bd2da6404e3838ccd", + "spanID": "d2da6404e3838ccd" + } + ], + "startTime": 1708939383377461, + "duration": 12232, + "tags": [ + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "http.url", + "type": "string", + "value": "http://192.168.49.2:31793/productpage" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "peer.address", + "type": "string", + "value": "envoy://internal_client_address/" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "response_size", + "type": "string", + "value": "5289" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "78602d4e-a6c1-9728-a931-ee9b8e121634" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p2", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 9 + }, + { + "traceID": "b0c33c7452f0cb2bd2da6404e3838ccd", + "spanID": "4455e71d4c1146c8", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "b0c33c7452f0cb2bd2da6404e3838ccd", + "spanID": "ba9277713a387240" + } + ], + "startTime": 1708939383380441, + "duration": 1175, + "tags": [ + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "78602d4e-a6c1-9728-a931-ee9b8e121634" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p3", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 9 + }, + { + "traceID": "b0c33c7452f0cb2bd2da6404e3838ccd", + "spanID": "725c30c66a55eceb", + "operationName": "reviews.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "b0c33c7452f0cb2bd2da6404e3838ccd", + "spanID": "ba9277713a387240" + } + ], + "startTime": 1708939383383917, + "duration": 4142, + "tags": [ + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "http.url", + "type": "string", + "value": "http://reviews:9080/reviews/0" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "78602d4e-a6c1-9728-a931-ee9b8e121634" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "response_size", + "type": "string", + "value": "437" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p5", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 9 + }, + { + "traceID": "4c322fa710e613d6e61b133c3e818b50", + "spanID": "bf412189f1729765", + "operationName": "productpage.bookinfo.svc.cluster.local:9080/productpage", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "4c322fa710e613d6e61b133c3e818b50", + "spanID": "e61b133c3e818b50" + } + ], + "startTime": 1708939377376863, + "duration": 10921, + "tags": [ + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "fb2405f0-ba96-9975-b54f-04918cd50e95" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "peer.address", + "type": "string", + "value": "envoy://internal_client_address/" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "http.url", + "type": "string", + "value": "http://192.168.49.2:31793/productpage" + }, + { + "key": "response_size", + "type": "string", + "value": "5294" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p2", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "4c322fa710e613d6e61b133c3e818b50", + "spanID": "fdc047fcf31fa5bb", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "4c322fa710e613d6e61b133c3e818b50", + "spanID": "bf412189f1729765" + } + ], + "startTime": 1708939377379820, + "duration": 1240, + "tags": [ + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "fb2405f0-ba96-9975-b54f-04918cd50e95" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p3", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "4c322fa710e613d6e61b133c3e818b50", + "spanID": "9a7b063c37bc8fc0", + "operationName": "reviews.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "4c322fa710e613d6e61b133c3e818b50", + "spanID": "bf412189f1729765" + } + ], + "startTime": 1708939377383449, + "duration": 2741, + "tags": [ + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "fb2405f0-ba96-9975-b54f-04918cd50e95" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "http.url", + "type": "string", + "value": "http://reviews:9080/reviews/0" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "response_size", + "type": "string", + "value": "442" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p5", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "7f26b73d8c975f62be6847f65db252dd", + "spanID": "77528dbc073a1ae0", + "operationName": "productpage.bookinfo.svc.cluster.local:9080/productpage", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "7f26b73d8c975f62be6847f65db252dd", + "spanID": "be6847f65db252dd" + } + ], + "startTime": 1708939361376823, + "duration": 15404, + "tags": [ + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "response_size", + "type": "string", + "value": "5294" + }, + { + "key": "peer.address", + "type": "string", + "value": "envoy://internal_client_address/" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "c8ab30f1-2747-92d3-83f8-e6413ae1e20d" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "http.url", + "type": "string", + "value": "http://192.168.49.2:31793/productpage" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p2", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "7f26b73d8c975f62be6847f65db252dd", + "spanID": "31b7f56de6bf5d76", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "7f26b73d8c975f62be6847f65db252dd", + "spanID": "77528dbc073a1ae0" + } + ], + "startTime": 1708939361380693, + "duration": 2671, + "tags": [ + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "c8ab30f1-2747-92d3-83f8-e6413ae1e20d" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p3", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "7f26b73d8c975f62be6847f65db252dd", + "spanID": "8225df1e97b2067a", + "operationName": "reviews.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "7f26b73d8c975f62be6847f65db252dd", + "spanID": "77528dbc073a1ae0" + } + ], + "startTime": 1708939361387105, + "duration": 3266, + "tags": [ + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "http.url", + "type": "string", + "value": "http://reviews:9080/reviews/0" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "response_size", + "type": "string", + "value": "442" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "c8ab30f1-2747-92d3-83f8-e6413ae1e20d" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p5", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "33cfbfcc430c74627b6a72de902dce64", + "spanID": "48730279f431c87b", + "operationName": "productpage.bookinfo.svc.cluster.local:9080/productpage", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "33cfbfcc430c74627b6a72de902dce64", + "spanID": "7b6a72de902dce64" + } + ], + "startTime": 1708939352376548, + "duration": 12672, + "tags": [ + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "ad092ec6-0936-99fb-bf18-9fec1286db57" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "peer.address", + "type": "string", + "value": "envoy://internal_client_address/" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "http.url", + "type": "string", + "value": "http://192.168.49.2:31793/productpage" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "response_size", + "type": "string", + "value": "5289" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p2", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "33cfbfcc430c74627b6a72de902dce64", + "spanID": "b149210e4b498ee0", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "33cfbfcc430c74627b6a72de902dce64", + "spanID": "48730279f431c87b" + } + ], + "startTime": 1708939352379792, + "duration": 1748, + "tags": [ + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "ad092ec6-0936-99fb-bf18-9fec1286db57" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p3", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "33cfbfcc430c74627b6a72de902dce64", + "spanID": "bc8659e93bb30b78", + "operationName": "reviews.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "33cfbfcc430c74627b6a72de902dce64", + "spanID": "48730279f431c87b" + } + ], + "startTime": 1708939352384369, + "duration": 3170, + "tags": [ + { + "key": "http.url", + "type": "string", + "value": "http://reviews:9080/reviews/0" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "response_size", + "type": "string", + "value": "437" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "ad092ec6-0936-99fb-bf18-9fec1286db57" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p5", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "1e8e779b03d977a543045b0b3f9179e7", + "spanID": "fce791e06668f11f", + "operationName": "productpage.bookinfo.svc.cluster.local:9080/productpage", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "1e8e779b03d977a543045b0b3f9179e7", + "spanID": "43045b0b3f9179e7" + } + ], + "startTime": 1708939347376785, + "duration": 17804, + "tags": [ + { + "key": "guid:x-request-id", + "type": "string", + "value": "bd34e5ee-7f4b-9fa7-8a4b-9495119ebe76" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "peer.address", + "type": "string", + "value": "envoy://internal_client_address/" + }, + { + "key": "http.url", + "type": "string", + "value": "http://192.168.49.2:31793/productpage" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "response_size", + "type": "string", + "value": "5294" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p2", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "1e8e779b03d977a543045b0b3f9179e7", + "spanID": "860bdad28f9c8ecc", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "1e8e779b03d977a543045b0b3f9179e7", + "spanID": "fce791e06668f11f" + } + ], + "startTime": 1708939347381955, + "duration": 1695, + "tags": [ + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "bd34e5ee-7f4b-9fa7-8a4b-9495119ebe76" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p3", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "1e8e779b03d977a543045b0b3f9179e7", + "spanID": "b4c8a514e335c6c9", + "operationName": "reviews.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "1e8e779b03d977a543045b0b3f9179e7", + "spanID": "fce791e06668f11f" + } + ], + "startTime": 1708939347387950, + "duration": 3876, + "tags": [ + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "response_size", + "type": "string", + "value": "442" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "http.url", + "type": "string", + "value": "http://reviews:9080/reviews/0" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "bd34e5ee-7f4b-9fa7-8a4b-9495119ebe76" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p5", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "9b695d7c9bf284b05efd630008f0eef0", + "spanID": "907a0a0b1a8946d0", + "operationName": "productpage.bookinfo.svc.cluster.local:9080/productpage", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "9b695d7c9bf284b05efd630008f0eef0", + "spanID": "5efd630008f0eef0" + } + ], + "startTime": 1708939427376512, + "duration": 14871, + "tags": [ + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "http.url", + "type": "string", + "value": "http://192.168.49.2:31793/productpage" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "peer.address", + "type": "string", + "value": "envoy://internal_client_address/" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "aa61cc62-24f5-94e1-8978-92c2be1bd01a" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "response_size", + "type": "string", + "value": "5289" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p2", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "9b695d7c9bf284b05efd630008f0eef0", + "spanID": "a9a91de5dd1c1224", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "9b695d7c9bf284b05efd630008f0eef0", + "spanID": "907a0a0b1a8946d0" + } + ], + "startTime": 1708939427380317, + "duration": 1637, + "tags": [ + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "aa61cc62-24f5-94e1-8978-92c2be1bd01a" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p3", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "9b695d7c9bf284b05efd630008f0eef0", + "spanID": "b19b276c9a08955a", + "operationName": "reviews.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "9b695d7c9bf284b05efd630008f0eef0", + "spanID": "907a0a0b1a8946d0" + } + ], + "startTime": 1708939427385898, + "duration": 3175, + "tags": [ + { + "key": "http.url", + "type": "string", + "value": "http://reviews:9080/reviews/0" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "aa61cc62-24f5-94e1-8978-92c2be1bd01a" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "response_size", + "type": "string", + "value": "437" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p5", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "1543f67ab953a0264acd4fc037874f21", + "spanID": "354391ee7ca75a84", + "operationName": "productpage.bookinfo.svc.cluster.local:9080/productpage", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "1543f67ab953a0264acd4fc037874f21", + "spanID": "4acd4fc037874f21" + } + ], + "startTime": 1708939407376727, + "duration": 15219, + "tags": [ + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "2e085a24-8180-9709-990d-84a5ab69c364" + }, + { + "key": "peer.address", + "type": "string", + "value": "envoy://internal_client_address/" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "http.url", + "type": "string", + "value": "http://192.168.49.2:31793/productpage" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "response_size", + "type": "string", + "value": "5294" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p2", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "1543f67ab953a0264acd4fc037874f21", + "spanID": "05f569a205b5c5c0", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "1543f67ab953a0264acd4fc037874f21", + "spanID": "354391ee7ca75a84" + } + ], + "startTime": 1708939407380722, + "duration": 1778, + "tags": [ + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "2e085a24-8180-9709-990d-84a5ab69c364" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p3", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "1543f67ab953a0264acd4fc037874f21", + "spanID": "f6ee1ac643cd925c", + "operationName": "reviews.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "1543f67ab953a0264acd4fc037874f21", + "spanID": "354391ee7ca75a84" + } + ], + "startTime": 1708939407385637, + "duration": 3718, + "tags": [ + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "2e085a24-8180-9709-990d-84a5ab69c364" + }, + { + "key": "response_size", + "type": "string", + "value": "442" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "http.url", + "type": "string", + "value": "http://reviews:9080/reviews/0" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p5", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "c2ba032c4e892ea6016624575d9cddda", + "spanID": "1c537a184e0e608d", + "operationName": "productpage.bookinfo.svc.cluster.local:9080/productpage", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "c2ba032c4e892ea6016624575d9cddda", + "spanID": "016624575d9cddda" + } + ], + "startTime": 1708939394376705, + "duration": 13853, + "tags": [ + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "http.url", + "type": "string", + "value": "http://192.168.49.2:31793/productpage" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "response_size", + "type": "string", + "value": "4294" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "peer.address", + "type": "string", + "value": "envoy://internal_client_address/" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "9f187fc9-4b36-9680-a857-a25f487b466c" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p2", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "c2ba032c4e892ea6016624575d9cddda", + "spanID": "56def89779bcab91", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "c2ba032c4e892ea6016624575d9cddda", + "spanID": "1c537a184e0e608d" + } + ], + "startTime": 1708939394380709, + "duration": 1903, + "tags": [ + { + "key": "guid:x-request-id", + "type": "string", + "value": "9f187fc9-4b36-9680-a857-a25f487b466c" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p3", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "c2ba032c4e892ea6016624575d9cddda", + "spanID": "41eebb2fdce85ab4", + "operationName": "reviews.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "c2ba032c4e892ea6016624575d9cddda", + "spanID": "1c537a184e0e608d" + } + ], + "startTime": 1708939394387224, + "duration": 1360, + "tags": [ + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "9f187fc9-4b36-9680-a857-a25f487b466c" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "http.url", + "type": "string", + "value": "http://reviews:9080/reviews/0" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "response_size", + "type": "string", + "value": "358" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p5", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "8ae13d6af5ae744085356dea3709ef79", + "spanID": "105a7337e0e27532", + "operationName": "productpage.bookinfo.svc.cluster.local:9080/productpage", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "8ae13d6af5ae744085356dea3709ef79", + "spanID": "85356dea3709ef79" + } + ], + "startTime": 1708939340376816, + "duration": 19142, + "tags": [ + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "6383cf8f-6af6-95c2-8919-20a99bb50e40" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "response_size", + "type": "string", + "value": "5294" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "http.url", + "type": "string", + "value": "http://192.168.49.2:31793/productpage" + }, + { + "key": "peer.address", + "type": "string", + "value": "envoy://internal_client_address/" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p2", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "8ae13d6af5ae744085356dea3709ef79", + "spanID": "6c02500855a5ebf2", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "8ae13d6af5ae744085356dea3709ef79", + "spanID": "105a7337e0e27532" + } + ], + "startTime": 1708939340382203, + "duration": 2110, + "tags": [ + { + "key": "guid:x-request-id", + "type": "string", + "value": "6383cf8f-6af6-95c2-8919-20a99bb50e40" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p3", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "8ae13d6af5ae744085356dea3709ef79", + "spanID": "2454599d1da86f37", + "operationName": "reviews.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "8ae13d6af5ae744085356dea3709ef79", + "spanID": "105a7337e0e27532" + } + ], + "startTime": 1708939340388389, + "duration": 4550, + "tags": [ + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "6383cf8f-6af6-95c2-8919-20a99bb50e40" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "http.url", + "type": "string", + "value": "http://reviews:9080/reviews/0" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "response_size", + "type": "string", + "value": "442" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p5", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "6a7bd9bf45a889f1b881da05eaea7a50", + "spanID": "fbdfdcca5d59f2cf", + "operationName": "productpage.bookinfo.svc.cluster.local:9080/productpage", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "6a7bd9bf45a889f1b881da05eaea7a50", + "spanID": "b881da05eaea7a50" + } + ], + "startTime": 1708939397377352, + "duration": 10384, + "tags": [ + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "http.url", + "type": "string", + "value": "http://192.168.49.2:31793/productpage" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "peer.address", + "type": "string", + "value": "envoy://internal_client_address/" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "response_size", + "type": "string", + "value": "4294" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "91dbbb77-144f-9924-9486-ebdba135be12" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p2", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "6a7bd9bf45a889f1b881da05eaea7a50", + "spanID": "fa3011bda4f65043", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "6a7bd9bf45a889f1b881da05eaea7a50", + "spanID": "fbdfdcca5d59f2cf" + } + ], + "startTime": 1708939397380580, + "duration": 1412, + "tags": [ + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "91dbbb77-144f-9924-9486-ebdba135be12" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p3", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "6a7bd9bf45a889f1b881da05eaea7a50", + "spanID": "726dca338218d907", + "operationName": "reviews.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "6a7bd9bf45a889f1b881da05eaea7a50", + "spanID": "fbdfdcca5d59f2cf" + } + ], + "startTime": 1708939397384853, + "duration": 1173, + "tags": [ + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "response_size", + "type": "string", + "value": "358" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "http.url", + "type": "string", + "value": "http://reviews:9080/reviews/0" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "91dbbb77-144f-9924-9486-ebdba135be12" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p5", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "76e5d2de3f23ce0add7d9828a43ad08c", + "spanID": "e1c9c3f98875451d", + "operationName": "productpage.bookinfo.svc.cluster.local:9080/productpage", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "76e5d2de3f23ce0add7d9828a43ad08c", + "spanID": "dd7d9828a43ad08c" + } + ], + "startTime": 1708939390376667, + "duration": 15595, + "tags": [ + { + "key": "http.url", + "type": "string", + "value": "http://192.168.49.2:31793/productpage" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "30af6a37-fe52-97cf-8e55-a858638c9bed" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "peer.address", + "type": "string", + "value": "envoy://internal_client_address/" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "response_size", + "type": "string", + "value": "5294" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p2", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "76e5d2de3f23ce0add7d9828a43ad08c", + "spanID": "c60107034f1a7aae", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "76e5d2de3f23ce0add7d9828a43ad08c", + "spanID": "e1c9c3f98875451d" + } + ], + "startTime": 1708939390380894, + "duration": 1651, + "tags": [ + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "30af6a37-fe52-97cf-8e55-a858638c9bed" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p3", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "76e5d2de3f23ce0add7d9828a43ad08c", + "spanID": "4f3835004936b67e", + "operationName": "reviews.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "76e5d2de3f23ce0add7d9828a43ad08c", + "spanID": "e1c9c3f98875451d" + } + ], + "startTime": 1708939390385945, + "duration": 3678, + "tags": [ + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "http.url", + "type": "string", + "value": "http://reviews:9080/reviews/0" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "30af6a37-fe52-97cf-8e55-a858638c9bed" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "response_size", + "type": "string", + "value": "442" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p5", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "e0601ce312c0b4e6273c10610b846ab1", + "spanID": "21f82f33f952896a", + "operationName": "productpage.bookinfo.svc.cluster.local:9080/productpage", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "e0601ce312c0b4e6273c10610b846ab1", + "spanID": "273c10610b846ab1" + } + ], + "startTime": 1708939385377555, + "duration": 13110, + "tags": [ + { + "key": "response_size", + "type": "string", + "value": "5289" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "peer.address", + "type": "string", + "value": "envoy://internal_client_address/" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "http.url", + "type": "string", + "value": "http://192.168.49.2:31793/productpage" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "7005a816-adbe-93d6-bd34-0dcf8f28b08b" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p2", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "e0601ce312c0b4e6273c10610b846ab1", + "spanID": "e10385f6e531f467", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "e0601ce312c0b4e6273c10610b846ab1", + "spanID": "21f82f33f952896a" + } + ], + "startTime": 1708939385381183, + "duration": 1440, + "tags": [ + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "7005a816-adbe-93d6-bd34-0dcf8f28b08b" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p3", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "e0601ce312c0b4e6273c10610b846ab1", + "spanID": "c4458004d6fe75d2", + "operationName": "reviews.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "e0601ce312c0b4e6273c10610b846ab1", + "spanID": "21f82f33f952896a" + } + ], + "startTime": 1708939385385479, + "duration": 3322, + "tags": [ + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "7005a816-adbe-93d6-bd34-0dcf8f28b08b" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "response_size", + "type": "string", + "value": "437" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "http.url", + "type": "string", + "value": "http://reviews:9080/reviews/0" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p5", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "90a201d5d4fa8a3c8565358038d4f60f", + "spanID": "ad930dfbe654c740", + "operationName": "productpage.bookinfo.svc.cluster.local:9080/productpage", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "90a201d5d4fa8a3c8565358038d4f60f", + "spanID": "8565358038d4f60f" + } + ], + "startTime": 1708939381377534, + "duration": 20131, + "tags": [ + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "response_size", + "type": "string", + "value": "5294" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "http.url", + "type": "string", + "value": "http://192.168.49.2:31793/productpage" + }, + { + "key": "peer.address", + "type": "string", + "value": "envoy://internal_client_address/" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "84df58e5-e9d8-93b3-8b78-9004586407a8" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p2", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "90a201d5d4fa8a3c8565358038d4f60f", + "spanID": "6a499c3004e94948", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "90a201d5d4fa8a3c8565358038d4f60f", + "spanID": "ad930dfbe654c740" + } + ], + "startTime": 1708939381387266, + "duration": 2022, + "tags": [ + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "84df58e5-e9d8-93b3-8b78-9004586407a8" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p3", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "90a201d5d4fa8a3c8565358038d4f60f", + "spanID": "f99c14134db62f73", + "operationName": "reviews.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "90a201d5d4fa8a3c8565358038d4f60f", + "spanID": "ad930dfbe654c740" + } + ], + "startTime": 1708939381392326, + "duration": 3511, + "tags": [ + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "84df58e5-e9d8-93b3-8b78-9004586407a8" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "response_size", + "type": "string", + "value": "442" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "http.url", + "type": "string", + "value": "http://reviews:9080/reviews/0" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p5", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "e3a2d426ab59d9e5ed481fc5e3e85d7d", + "spanID": "64fe92623130cf1c", + "operationName": "productpage.bookinfo.svc.cluster.local:9080/productpage", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "e3a2d426ab59d9e5ed481fc5e3e85d7d", + "spanID": "ed481fc5e3e85d7d" + } + ], + "startTime": 1708939339376801, + "duration": 9753, + "tags": [ + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "peer.address", + "type": "string", + "value": "envoy://internal_client_address/" + }, + { + "key": "http.url", + "type": "string", + "value": "http://192.168.49.2:31793/productpage" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "9c5a9634-adbd-9d9d-8de6-607688910c6e" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "response_size", + "type": "string", + "value": "4294" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p2", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "e3a2d426ab59d9e5ed481fc5e3e85d7d", + "spanID": "079ff52a335312ee", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "e3a2d426ab59d9e5ed481fc5e3e85d7d", + "spanID": "64fe92623130cf1c" + } + ], + "startTime": 1708939339379876, + "duration": 1323, + "tags": [ + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "9c5a9634-adbd-9d9d-8de6-607688910c6e" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p3", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "e3a2d426ab59d9e5ed481fc5e3e85d7d", + "spanID": "8a65e1cd0213dba1", + "operationName": "reviews.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "e3a2d426ab59d9e5ed481fc5e3e85d7d", + "spanID": "64fe92623130cf1c" + } + ], + "startTime": 1708939339383887, + "duration": 1013, + "tags": [ + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "response_size", + "type": "string", + "value": "358" + }, + { + "key": "http.url", + "type": "string", + "value": "http://reviews:9080/reviews/0" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "9c5a9634-adbd-9d9d-8de6-607688910c6e" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p5", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "202587b106303d025d97620cb5fd02ca", + "spanID": "43c2b2ca727e4ba0", + "operationName": "productpage.bookinfo.svc.cluster.local:9080/productpage", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "202587b106303d025d97620cb5fd02ca", + "spanID": "5d97620cb5fd02ca" + } + ], + "startTime": 1708939424376622, + "duration": 9777, + "tags": [ + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "peer.address", + "type": "string", + "value": "envoy://internal_client_address/" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "06f30e4a-747f-9471-8eea-15b2f253a536" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "response_size", + "type": "string", + "value": "4294" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "http.url", + "type": "string", + "value": "http://192.168.49.2:31793/productpage" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p2", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "202587b106303d025d97620cb5fd02ca", + "spanID": "3ca6dbcc98a69b59", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "202587b106303d025d97620cb5fd02ca", + "spanID": "43c2b2ca727e4ba0" + } + ], + "startTime": 1708939424379704, + "duration": 1308, + "tags": [ + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "06f30e4a-747f-9471-8eea-15b2f253a536" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p3", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "202587b106303d025d97620cb5fd02ca", + "spanID": "7c5c60debb77afcc", + "operationName": "reviews.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "202587b106303d025d97620cb5fd02ca", + "spanID": "43c2b2ca727e4ba0" + } + ], + "startTime": 1708939424383484, + "duration": 1079, + "tags": [ + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "http.url", + "type": "string", + "value": "http://reviews:9080/reviews/0" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "06f30e4a-747f-9471-8eea-15b2f253a536" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "response_size", + "type": "string", + "value": "358" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p5", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "a9cecf286609c29f02cbede8185f8a95", + "spanID": "9b12212293940b51", + "operationName": "productpage.bookinfo.svc.cluster.local:9080/productpage", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "a9cecf286609c29f02cbede8185f8a95", + "spanID": "02cbede8185f8a95" + } + ], + "startTime": 1708939408376801, + "duration": 10429, + "tags": [ + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "response_size", + "type": "string", + "value": "4294" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "http.url", + "type": "string", + "value": "http://192.168.49.2:31793/productpage" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "peer.address", + "type": "string", + "value": "envoy://internal_client_address/" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "d948546b-eba5-93b4-a309-6252eb385060" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p2", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "a9cecf286609c29f02cbede8185f8a95", + "spanID": "31795cf07c7ea67e", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "a9cecf286609c29f02cbede8185f8a95", + "spanID": "9b12212293940b51" + } + ], + "startTime": 1708939408380122, + "duration": 1481, + "tags": [ + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "d948546b-eba5-93b4-a309-6252eb385060" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p3", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "a9cecf286609c29f02cbede8185f8a95", + "spanID": "93231c449ed575fe", + "operationName": "reviews.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "a9cecf286609c29f02cbede8185f8a95", + "spanID": "9b12212293940b51" + } + ], + "startTime": 1708939408384435, + "duration": 1104, + "tags": [ + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "response_size", + "type": "string", + "value": "358" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "d948546b-eba5-93b4-a309-6252eb385060" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "http.url", + "type": "string", + "value": "http://reviews:9080/reviews/0" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p5", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "84692823d681569b82f6db9d96ec2bd4", + "spanID": "0f6c94d61ee9e5ab", + "operationName": "productpage.bookinfo.svc.cluster.local:9080/productpage", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "84692823d681569b82f6db9d96ec2bd4", + "spanID": "82f6db9d96ec2bd4" + } + ], + "startTime": 1708939406376522, + "duration": 9609, + "tags": [ + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "5ff704a8-d6f9-9e1f-906a-b766d8f7bb2f" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "peer.address", + "type": "string", + "value": "envoy://internal_client_address/" + }, + { + "key": "http.url", + "type": "string", + "value": "http://192.168.49.2:31793/productpage" + }, + { + "key": "response_size", + "type": "string", + "value": "4294" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p2", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "84692823d681569b82f6db9d96ec2bd4", + "spanID": "79d938681ddfa37a", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "84692823d681569b82f6db9d96ec2bd4", + "spanID": "0f6c94d61ee9e5ab" + } + ], + "startTime": 1708939406379635, + "duration": 1719, + "tags": [ + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "5ff704a8-d6f9-9e1f-906a-b766d8f7bb2f" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p3", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "84692823d681569b82f6db9d96ec2bd4", + "spanID": "057ee4f26d3769b6", + "operationName": "reviews.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "84692823d681569b82f6db9d96ec2bd4", + "spanID": "0f6c94d61ee9e5ab" + } + ], + "startTime": 1708939406383829, + "duration": 964, + "tags": [ + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "response_size", + "type": "string", + "value": "358" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "5ff704a8-d6f9-9e1f-906a-b766d8f7bb2f" + }, + { + "key": "http.url", + "type": "string", + "value": "http://reviews:9080/reviews/0" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p5", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "b02b8e32ee23c653fcb2db88a43a37d9", + "spanID": "63728c8ba61e2e79", + "operationName": "productpage.bookinfo.svc.cluster.local:9080/productpage", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "b02b8e32ee23c653fcb2db88a43a37d9", + "spanID": "fcb2db88a43a37d9" + } + ], + "startTime": 1708939419376619, + "duration": 11631, + "tags": [ + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "peer.address", + "type": "string", + "value": "envoy://internal_client_address/" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "7f5fa988-82b2-92e5-abac-a0b7949afd73" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "response_size", + "type": "string", + "value": "4294" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "http.url", + "type": "string", + "value": "http://192.168.49.2:31793/productpage" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p2", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "b02b8e32ee23c653fcb2db88a43a37d9", + "spanID": "ed7aed0f3b78114b", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "b02b8e32ee23c653fcb2db88a43a37d9", + "spanID": "63728c8ba61e2e79" + } + ], + "startTime": 1708939419380185, + "duration": 2171, + "tags": [ + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "7f5fa988-82b2-92e5-abac-a0b7949afd73" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p3", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "b02b8e32ee23c653fcb2db88a43a37d9", + "spanID": "be22dbfcfe734a6e", + "operationName": "reviews.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "b02b8e32ee23c653fcb2db88a43a37d9", + "spanID": "63728c8ba61e2e79" + } + ], + "startTime": 1708939419385528, + "duration": 1041, + "tags": [ + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "7f5fa988-82b2-92e5-abac-a0b7949afd73" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "http.url", + "type": "string", + "value": "http://reviews:9080/reviews/0" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "response_size", + "type": "string", + "value": "358" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p5", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "095ba676a2eed7d8296282ac2bb3e73d", + "spanID": "0b9504e20071eeaa", + "operationName": "productpage.bookinfo.svc.cluster.local:9080/productpage", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "095ba676a2eed7d8296282ac2bb3e73d", + "spanID": "296282ac2bb3e73d" + } + ], + "startTime": 1708939416376661, + "duration": 13699, + "tags": [ + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "response_size", + "type": "string", + "value": "5289" + }, + { + "key": "http.url", + "type": "string", + "value": "http://192.168.49.2:31793/productpage" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "peer.address", + "type": "string", + "value": "envoy://internal_client_address/" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "dde90a96-077e-931f-84f3-ecd08fa47222" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p2", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 2 + }, + { + "traceID": "3a75a7b58bda8168f9a5e7b85543c194", + "spanID": "4d7d85914a914b8f", + "operationName": "productpage.bookinfo.svc.cluster.local:9080/productpage", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "3a75a7b58bda8168f9a5e7b85543c194", + "spanID": "f9a5e7b85543c194" + } + ], + "startTime": 1708939403376949, + "duration": 12773, + "tags": [ + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "response_size", + "type": "string", + "value": "4294" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "http.url", + "type": "string", + "value": "http://192.168.49.2:31793/productpage" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "07b2a4a9-2a46-9d96-973f-4b5f5836ecbe" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "peer.address", + "type": "string", + "value": "envoy://internal_client_address/" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p2", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "3a75a7b58bda8168f9a5e7b85543c194", + "spanID": "113afba5d70a140e", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "3a75a7b58bda8168f9a5e7b85543c194", + "spanID": "4d7d85914a914b8f" + } + ], + "startTime": 1708939403381298, + "duration": 1628, + "tags": [ + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "07b2a4a9-2a46-9d96-973f-4b5f5836ecbe" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p3", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "3a75a7b58bda8168f9a5e7b85543c194", + "spanID": "f77b75504cfc7c56", + "operationName": "reviews.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "3a75a7b58bda8168f9a5e7b85543c194", + "spanID": "4d7d85914a914b8f" + } + ], + "startTime": 1708939403386434, + "duration": 1356, + "tags": [ + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "07b2a4a9-2a46-9d96-973f-4b5f5836ecbe" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "http.url", + "type": "string", + "value": "http://reviews:9080/reviews/0" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "response_size", + "type": "string", + "value": "358" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p5", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "88cf9e62a0124dd446d3d8b55794db5d", + "spanID": "b1d1fd1b8bd1dbda", + "operationName": "productpage.bookinfo.svc.cluster.local:9080/productpage", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "88cf9e62a0124dd446d3d8b55794db5d", + "spanID": "46d3d8b55794db5d" + } + ], + "startTime": 1708939398377453, + "duration": 26879, + "tags": [ + { + "key": "peer.address", + "type": "string", + "value": "envoy://internal_client_address/" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "http.url", + "type": "string", + "value": "http://192.168.49.2:31793/productpage" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "response_size", + "type": "string", + "value": "4294" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "b0812bb2-364c-9136-ad6e-f1356630897e" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p2", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "88cf9e62a0124dd446d3d8b55794db5d", + "spanID": "c50f3029f254c466", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "88cf9e62a0124dd446d3d8b55794db5d", + "spanID": "b1d1fd1b8bd1dbda" + } + ], + "startTime": 1708939398383817, + "duration": 2765, + "tags": [ + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "b0812bb2-364c-9136-ad6e-f1356630897e" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p3", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "88cf9e62a0124dd446d3d8b55794db5d", + "spanID": "283cb12bd1588f58", + "operationName": "reviews.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "88cf9e62a0124dd446d3d8b55794db5d", + "spanID": "b1d1fd1b8bd1dbda" + } + ], + "startTime": 1708939398394143, + "duration": 6466, + "tags": [ + { + "key": "guid:x-request-id", + "type": "string", + "value": "b0812bb2-364c-9136-ad6e-f1356630897e" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "response_size", + "type": "string", + "value": "358" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "http.url", + "type": "string", + "value": "http://reviews:9080/reviews/0" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p5", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "e13bf4628f7372d3e7e0a5e10f036b95", + "spanID": "59f73930a3dba616", + "operationName": "productpage.bookinfo.svc.cluster.local:9080/productpage", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "e13bf4628f7372d3e7e0a5e10f036b95", + "spanID": "e7e0a5e10f036b95" + } + ], + "startTime": 1708939374377425, + "duration": 10726, + "tags": [ + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "response_size", + "type": "string", + "value": "4294" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "http.url", + "type": "string", + "value": "http://192.168.49.2:31793/productpage" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "8faf569b-ebb4-96c3-a05b-184857a8c1f4" + }, + { + "key": "peer.address", + "type": "string", + "value": "envoy://internal_client_address/" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p2", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "e13bf4628f7372d3e7e0a5e10f036b95", + "spanID": "52a35d25432740e9", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "e13bf4628f7372d3e7e0a5e10f036b95", + "spanID": "59f73930a3dba616" + } + ], + "startTime": 1708939374381945, + "duration": 1359, + "tags": [ + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "8faf569b-ebb4-96c3-a05b-184857a8c1f4" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p3", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "e13bf4628f7372d3e7e0a5e10f036b95", + "spanID": "29edf7cdb1edc91a", + "operationName": "reviews.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "e13bf4628f7372d3e7e0a5e10f036b95", + "spanID": "59f73930a3dba616" + } + ], + "startTime": 1708939374385846, + "duration": 1013, + "tags": [ + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "8faf569b-ebb4-96c3-a05b-184857a8c1f4" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "response_size", + "type": "string", + "value": "358" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "http.url", + "type": "string", + "value": "http://reviews:9080/reviews/0" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p5", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "1d5ebe8e5392bb6c27b0d28198e19fde", + "spanID": "fd5299cab671f8a8", + "operationName": "productpage.bookinfo.svc.cluster.local:9080/productpage", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "1d5ebe8e5392bb6c27b0d28198e19fde", + "spanID": "27b0d28198e19fde" + } + ], + "startTime": 1708939429376526, + "duration": 12698, + "tags": [ + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "http.url", + "type": "string", + "value": "http://192.168.49.2:31793/productpage" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "14fc3dc5-7c1d-9cf7-b0a4-44fea234cffc" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "response_size", + "type": "string", + "value": "4294" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "peer.address", + "type": "string", + "value": "envoy://internal_client_address/" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p2", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "1d5ebe8e5392bb6c27b0d28198e19fde", + "spanID": "f8f7b525aa5b7c41", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "1d5ebe8e5392bb6c27b0d28198e19fde", + "spanID": "fd5299cab671f8a8" + } + ], + "startTime": 1708939429379917, + "duration": 1793, + "tags": [ + { + "key": "guid:x-request-id", + "type": "string", + "value": "14fc3dc5-7c1d-9cf7-b0a4-44fea234cffc" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p3", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "1d5ebe8e5392bb6c27b0d28198e19fde", + "spanID": "fa6c518cb75017e9", + "operationName": "reviews.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "1d5ebe8e5392bb6c27b0d28198e19fde", + "spanID": "fd5299cab671f8a8" + } + ], + "startTime": 1708939429385366, + "duration": 1508, + "tags": [ + { + "key": "http.url", + "type": "string", + "value": "http://reviews:9080/reviews/0" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "14fc3dc5-7c1d-9cf7-b0a4-44fea234cffc" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "response_size", + "type": "string", + "value": "358" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p5", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "9f7fcbbc5b40e53359ce4e5fb9787447", + "spanID": "97a7b9882576f046", + "operationName": "productpage.bookinfo.svc.cluster.local:9080/productpage", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "9f7fcbbc5b40e53359ce4e5fb9787447", + "spanID": "59ce4e5fb9787447" + } + ], + "startTime": 1708939426377083, + "duration": 13085, + "tags": [ + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "332540e7-2dc3-9f46-8cb9-104519f3eb4d" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "peer.address", + "type": "string", + "value": "envoy://internal_client_address/" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "response_size", + "type": "string", + "value": "5289" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "http.url", + "type": "string", + "value": "http://192.168.49.2:31793/productpage" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p2", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "9f7fcbbc5b40e53359ce4e5fb9787447", + "spanID": "6d0180f1517b18e1", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "9f7fcbbc5b40e53359ce4e5fb9787447", + "spanID": "97a7b9882576f046" + } + ], + "startTime": 1708939426380270, + "duration": 1752, + "tags": [ + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "332540e7-2dc3-9f46-8cb9-104519f3eb4d" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p3", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "9f7fcbbc5b40e53359ce4e5fb9787447", + "spanID": "ba2df5fce4118209", + "operationName": "reviews.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "9f7fcbbc5b40e53359ce4e5fb9787447", + "spanID": "97a7b9882576f046" + } + ], + "startTime": 1708939426385321, + "duration": 3129, + "tags": [ + { + "key": "response_size", + "type": "string", + "value": "437" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "http.url", + "type": "string", + "value": "http://reviews:9080/reviews/0" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "332540e7-2dc3-9f46-8cb9-104519f3eb4d" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p5", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "060a37f2126c2957ed961c384cc22399", + "spanID": "c696ad381cecb34b", + "operationName": "productpage.bookinfo.svc.cluster.local:9080/productpage", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "060a37f2126c2957ed961c384cc22399", + "spanID": "ed961c384cc22399" + } + ], + "startTime": 1708939421376686, + "duration": 16246, + "tags": [ + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "f771d85b-a569-9d36-96ab-d1c596b56a11" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "peer.address", + "type": "string", + "value": "envoy://internal_client_address/" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "response_size", + "type": "string", + "value": "4294" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "http.url", + "type": "string", + "value": "http://192.168.49.2:31793/productpage" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p2", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 2 + }, + { + "traceID": "61f707b2186ac5ca97026c2826364983", + "spanID": "14e6667ec7cac4c8", + "operationName": "productpage.bookinfo.svc.cluster.local:9080/productpage", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "61f707b2186ac5ca97026c2826364983", + "spanID": "97026c2826364983" + } + ], + "startTime": 1708939350376636, + "duration": 13458, + "tags": [ + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "peer.address", + "type": "string", + "value": "envoy://internal_client_address/" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "response_size", + "type": "string", + "value": "5289" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "48d32f4e-e5f8-9fde-967c-848b9f0b10fa" + }, + { + "key": "http.url", + "type": "string", + "value": "http://192.168.49.2:31793/productpage" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p2", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "61f707b2186ac5ca97026c2826364983", + "spanID": "722b2548e0cf3c8c", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "61f707b2186ac5ca97026c2826364983", + "spanID": "14e6667ec7cac4c8" + } + ], + "startTime": 1708939350380113, + "duration": 1412, + "tags": [ + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "48d32f4e-e5f8-9fde-967c-848b9f0b10fa" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p3", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "61f707b2186ac5ca97026c2826364983", + "spanID": "4cce833239a52c7e", + "operationName": "reviews.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "61f707b2186ac5ca97026c2826364983", + "spanID": "14e6667ec7cac4c8" + } + ], + "startTime": 1708939350384466, + "duration": 3193, + "tags": [ + { + "key": "guid:x-request-id", + "type": "string", + "value": "48d32f4e-e5f8-9fde-967c-848b9f0b10fa" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "response_size", + "type": "string", + "value": "437" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "http.url", + "type": "string", + "value": "http://reviews:9080/reviews/0" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p5", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "b5551f6bc909d6170f369be3da92e967", + "spanID": "5926d502676f0a93", + "operationName": "productpage.bookinfo.svc.cluster.local:9080/productpage", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "b5551f6bc909d6170f369be3da92e967", + "spanID": "0f369be3da92e967" + } + ], + "startTime": 1708939358376486, + "duration": 9139, + "tags": [ + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "http.url", + "type": "string", + "value": "http://192.168.49.2:31793/productpage" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "8069a023-5172-93a2-a1ba-b3439dab9a01" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "response_size", + "type": "string", + "value": "4294" + }, + { + "key": "peer.address", + "type": "string", + "value": "envoy://internal_client_address/" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p2", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "b5551f6bc909d6170f369be3da92e967", + "spanID": "c256b5f50a71d791", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "b5551f6bc909d6170f369be3da92e967", + "spanID": "5926d502676f0a93" + } + ], + "startTime": 1708939358379448, + "duration": 1400, + "tags": [ + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "8069a023-5172-93a2-a1ba-b3439dab9a01" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p3", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "b5551f6bc909d6170f369be3da92e967", + "spanID": "4b11c06f486e5e29", + "operationName": "reviews.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "b5551f6bc909d6170f369be3da92e967", + "spanID": "5926d502676f0a93" + } + ], + "startTime": 1708939358383204, + "duration": 1051, + "tags": [ + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "response_size", + "type": "string", + "value": "358" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "8069a023-5172-93a2-a1ba-b3439dab9a01" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "http.url", + "type": "string", + "value": "http://reviews:9080/reviews/0" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p5", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "a83d4eadd86106c8b470c08961394284", + "spanID": "feefc55ee0f36431", + "operationName": "productpage.bookinfo.svc.cluster.local:9080/productpage", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "a83d4eadd86106c8b470c08961394284", + "spanID": "b470c08961394284" + } + ], + "startTime": 1708939357376889, + "duration": 18915, + "tags": [ + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "http.url", + "type": "string", + "value": "http://192.168.49.2:31793/productpage" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "response_size", + "type": "string", + "value": "5289" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "b1aa7eed-f52a-9e0d-8a13-463e9bb9ace7" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "peer.address", + "type": "string", + "value": "envoy://internal_client_address/" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p2", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "a83d4eadd86106c8b470c08961394284", + "spanID": "6612e7e0a2b7bd8a", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "a83d4eadd86106c8b470c08961394284", + "spanID": "feefc55ee0f36431" + } + ], + "startTime": 1708939357383050, + "duration": 2459, + "tags": [ + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "b1aa7eed-f52a-9e0d-8a13-463e9bb9ace7" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p3", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "a83d4eadd86106c8b470c08961394284", + "spanID": "d5587315d26899c1", + "operationName": "reviews.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "a83d4eadd86106c8b470c08961394284", + "spanID": "feefc55ee0f36431" + } + ], + "startTime": 1708939357389321, + "duration": 3736, + "tags": [ + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "response_size", + "type": "string", + "value": "437" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "b1aa7eed-f52a-9e0d-8a13-463e9bb9ace7" + }, + { + "key": "http.url", + "type": "string", + "value": "http://reviews:9080/reviews/0" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p5", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "4626a29a13b4af2e95cbb58b24b20db0", + "spanID": "7e5605b598c264de", + "operationName": "productpage.bookinfo.svc.cluster.local:9080/productpage", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "4626a29a13b4af2e95cbb58b24b20db0", + "spanID": "95cbb58b24b20db0" + } + ], + "startTime": 1708939353376398, + "duration": 10369, + "tags": [ + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "9e74e63b-803e-9375-9f3f-08e74bfcf0ba" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "http.url", + "type": "string", + "value": "http://192.168.49.2:31793/productpage" + }, + { + "key": "peer.address", + "type": "string", + "value": "envoy://internal_client_address/" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "response_size", + "type": "string", + "value": "5289" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p2", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "4626a29a13b4af2e95cbb58b24b20db0", + "spanID": "0dfbb2fc5395dca8", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "4626a29a13b4af2e95cbb58b24b20db0", + "spanID": "7e5605b598c264de" + } + ], + "startTime": 1708939353379212, + "duration": 1227, + "tags": [ + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "9e74e63b-803e-9375-9f3f-08e74bfcf0ba" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p3", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "4626a29a13b4af2e95cbb58b24b20db0", + "spanID": "726443d72c17a469", + "operationName": "reviews.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "4626a29a13b4af2e95cbb58b24b20db0", + "spanID": "7e5605b598c264de" + } + ], + "startTime": 1708939353382637, + "duration": 2716, + "tags": [ + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "9e74e63b-803e-9375-9f3f-08e74bfcf0ba" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "response_size", + "type": "string", + "value": "437" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "http.url", + "type": "string", + "value": "http://reviews:9080/reviews/0" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p5", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "400990b7c1715a8a05341aa3dc87476a", + "spanID": "49548d573b8b6e0a", + "operationName": "productpage.bookinfo.svc.cluster.local:9080/productpage", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "400990b7c1715a8a05341aa3dc87476a", + "spanID": "05341aa3dc87476a" + } + ], + "startTime": 1708939375376543, + "duration": 8795, + "tags": [ + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "response_size", + "type": "string", + "value": "4294" + }, + { + "key": "peer.address", + "type": "string", + "value": "envoy://internal_client_address/" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "88d7894b-0680-9718-8f1f-0bc410d0a7d0" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "http.url", + "type": "string", + "value": "http://192.168.49.2:31793/productpage" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p2", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "400990b7c1715a8a05341aa3dc87476a", + "spanID": "1d1c9f3bbf5d0b41", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "400990b7c1715a8a05341aa3dc87476a", + "spanID": "49548d573b8b6e0a" + } + ], + "startTime": 1708939375379719, + "duration": 1282, + "tags": [ + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "88d7894b-0680-9718-8f1f-0bc410d0a7d0" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p3", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "400990b7c1715a8a05341aa3dc87476a", + "spanID": "5511554c4852bc6b", + "operationName": "reviews.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "400990b7c1715a8a05341aa3dc87476a", + "spanID": "49548d573b8b6e0a" + } + ], + "startTime": 1708939375383272, + "duration": 874, + "tags": [ + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "response_size", + "type": "string", + "value": "358" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "88d7894b-0680-9718-8f1f-0bc410d0a7d0" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "http.url", + "type": "string", + "value": "http://reviews:9080/reviews/0" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p5", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "7ce1862cc82fc0a65ccb6133b121ddab", + "spanID": "cdac18dd5f91ca2b", + "operationName": "productpage.bookinfo.svc.cluster.local:9080/productpage", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "7ce1862cc82fc0a65ccb6133b121ddab", + "spanID": "5ccb6133b121ddab" + } + ], + "startTime": 1708939369376599, + "duration": 10656, + "tags": [ + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "response_size", + "type": "string", + "value": "4294" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "peer.address", + "type": "string", + "value": "envoy://internal_client_address/" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "http.url", + "type": "string", + "value": "http://192.168.49.2:31793/productpage" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "c60ffbe5-6ecf-9e8c-ba08-9737f1ab2a13" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p2", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "7ce1862cc82fc0a65ccb6133b121ddab", + "spanID": "1705c0b851b3b70a", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "7ce1862cc82fc0a65ccb6133b121ddab", + "spanID": "cdac18dd5f91ca2b" + } + ], + "startTime": 1708939369379907, + "duration": 1602, + "tags": [ + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "c60ffbe5-6ecf-9e8c-ba08-9737f1ab2a13" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p3", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "7ce1862cc82fc0a65ccb6133b121ddab", + "spanID": "392202f2f041004c", + "operationName": "reviews.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "7ce1862cc82fc0a65ccb6133b121ddab", + "spanID": "cdac18dd5f91ca2b" + } + ], + "startTime": 1708939369384312, + "duration": 1103, + "tags": [ + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "response_size", + "type": "string", + "value": "358" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "c60ffbe5-6ecf-9e8c-ba08-9737f1ab2a13" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "http.url", + "type": "string", + "value": "http://reviews:9080/reviews/0" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p5", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "a1e002e77ca8bdf7b84e0c6325f1613d", + "spanID": "0efb64f535795741", + "operationName": "productpage.bookinfo.svc.cluster.local:9080/productpage", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "a1e002e77ca8bdf7b84e0c6325f1613d", + "spanID": "b84e0c6325f1613d" + } + ], + "startTime": 1708939355376602, + "duration": 10809, + "tags": [ + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "57ed9e64-9b22-9991-a6bd-d03e4cd4e890" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "peer.address", + "type": "string", + "value": "envoy://internal_client_address/" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "response_size", + "type": "string", + "value": "4294" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "http.url", + "type": "string", + "value": "http://192.168.49.2:31793/productpage" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p2", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "a1e002e77ca8bdf7b84e0c6325f1613d", + "spanID": "aa24b9fbc2433953", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "a1e002e77ca8bdf7b84e0c6325f1613d", + "spanID": "0efb64f535795741" + } + ], + "startTime": 1708939355380512, + "duration": 1700, + "tags": [ + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "57ed9e64-9b22-9991-a6bd-d03e4cd4e890" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p3", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "a1e002e77ca8bdf7b84e0c6325f1613d", + "spanID": "7a3db6310da4299e", + "operationName": "reviews.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "a1e002e77ca8bdf7b84e0c6325f1613d", + "spanID": "0efb64f535795741" + } + ], + "startTime": 1708939355384899, + "duration": 1078, + "tags": [ + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "response_size", + "type": "string", + "value": "358" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "57ed9e64-9b22-9991-a6bd-d03e4cd4e890" + }, + { + "key": "http.url", + "type": "string", + "value": "http://reviews:9080/reviews/0" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p5", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "8bf020377b5856c5310e3a2cba2847aa", + "spanID": "2b05df871eacf2c2", + "operationName": "productpage.bookinfo.svc.cluster.local:9080/productpage", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "8bf020377b5856c5310e3a2cba2847aa", + "spanID": "310e3a2cba2847aa" + } + ], + "startTime": 1708939345377260, + "duration": 15544, + "tags": [ + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "response_size", + "type": "string", + "value": "4294" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "peer.address", + "type": "string", + "value": "envoy://internal_client_address/" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "a397b3ca-4c97-9e50-bed1-afa95a51f9f6" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "http.url", + "type": "string", + "value": "http://192.168.49.2:31793/productpage" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p2", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "8bf020377b5856c5310e3a2cba2847aa", + "spanID": "8a87d509aad25fe7", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "8bf020377b5856c5310e3a2cba2847aa", + "spanID": "2b05df871eacf2c2" + } + ], + "startTime": 1708939345382088, + "duration": 2143, + "tags": [ + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "a397b3ca-4c97-9e50-bed1-afa95a51f9f6" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p3", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "8bf020377b5856c5310e3a2cba2847aa", + "spanID": "0e316b3f0ec1bc4b", + "operationName": "reviews.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "8bf020377b5856c5310e3a2cba2847aa", + "spanID": "2b05df871eacf2c2" + } + ], + "startTime": 1708939345388452, + "duration": 1293, + "tags": [ + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "http.url", + "type": "string", + "value": "http://reviews:9080/reviews/0" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "response_size", + "type": "string", + "value": "358" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "a397b3ca-4c97-9e50-bed1-afa95a51f9f6" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p5", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "e2c48d761cece2c31ba7a8c289eccebb", + "spanID": "b106bef670c0d0bf", + "operationName": "productpage.bookinfo.svc.cluster.local:9080/productpage", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "e2c48d761cece2c31ba7a8c289eccebb", + "spanID": "1ba7a8c289eccebb" + } + ], + "startTime": 1708939337376965, + "duration": 23339, + "tags": [ + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "http.url", + "type": "string", + "value": "http://192.168.49.2:31793/productpage" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "880a8c71-4312-9448-af0d-bf19496de6f6" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "peer.address", + "type": "string", + "value": "envoy://internal_client_address/" + }, + { + "key": "response_size", + "type": "string", + "value": "4294" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p2", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "e2c48d761cece2c31ba7a8c289eccebb", + "spanID": "35fde9e75e9ae508", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "e2c48d761cece2c31ba7a8c289eccebb", + "spanID": "b106bef670c0d0bf" + } + ], + "startTime": 1708939337383443, + "duration": 5862, + "tags": [ + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "880a8c71-4312-9448-af0d-bf19496de6f6" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p3", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "e2c48d761cece2c31ba7a8c289eccebb", + "spanID": "fba58dee8baf7228", + "operationName": "reviews.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "e2c48d761cece2c31ba7a8c289eccebb", + "spanID": "b106bef670c0d0bf" + } + ], + "startTime": 1708939337394965, + "duration": 2633, + "tags": [ + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "http.url", + "type": "string", + "value": "http://reviews:9080/reviews/0" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "response_size", + "type": "string", + "value": "358" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "880a8c71-4312-9448-af0d-bf19496de6f6" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p5", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "3058a61bdc775ab34e9d0ffb83c8e184", + "spanID": "8f28a49a566f2488", + "operationName": "productpage.bookinfo.svc.cluster.local:9080/productpage", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "3058a61bdc775ab34e9d0ffb83c8e184", + "spanID": "4e9d0ffb83c8e184" + } + ], + "startTime": 1708939432376743, + "duration": 13376, + "tags": [ + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "peer.address", + "type": "string", + "value": "envoy://internal_client_address/" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "response_size", + "type": "string", + "value": "5289" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "http.url", + "type": "string", + "value": "http://192.168.49.2:31793/productpage" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "b160815d-0a68-9374-bd6f-9ba3123998f2" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p1", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 2 + }, + { + "traceID": "3058a61bdc775ab34e9d0ffb83c8e184", + "spanID": "72cfe8adf53071f6", + "operationName": "reviews.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "3058a61bdc775ab34e9d0ffb83c8e184", + "spanID": "8f28a49a566f2488" + } + ], + "startTime": 1708939432384698, + "duration": 3635, + "tags": [ + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "http.url", + "type": "string", + "value": "http://reviews:9080/reviews/0" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "b160815d-0a68-9374-bd6f-9ba3123998f2" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "response_size", + "type": "string", + "value": "437" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p2", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 2 + }, + { + "traceID": "4d16603d647501ee5a0262312ec07251", + "spanID": "17f20c5182a2788d", + "operationName": "productpage.bookinfo.svc.cluster.local:9080/productpage", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "4d16603d647501ee5a0262312ec07251", + "spanID": "5a0262312ec07251" + } + ], + "startTime": 1708939405377306, + "duration": 14311, + "tags": [ + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "http.url", + "type": "string", + "value": "http://192.168.49.2:31793/productpage" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "b5fef259-fc02-9061-8eae-699b983f3b1e" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "response_size", + "type": "string", + "value": "5294" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "peer.address", + "type": "string", + "value": "envoy://internal_client_address/" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p2", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "4d16603d647501ee5a0262312ec07251", + "spanID": "6f91cb4d68e1758b", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "4d16603d647501ee5a0262312ec07251", + "spanID": "17f20c5182a2788d" + } + ], + "startTime": 1708939405381161, + "duration": 1438, + "tags": [ + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "b5fef259-fc02-9061-8eae-699b983f3b1e" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p3", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "4d16603d647501ee5a0262312ec07251", + "spanID": "9fc5c6a432353054", + "operationName": "reviews.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "4d16603d647501ee5a0262312ec07251", + "spanID": "17f20c5182a2788d" + } + ], + "startTime": 1708939405385585, + "duration": 3261, + "tags": [ + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "response_size", + "type": "string", + "value": "442" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "b5fef259-fc02-9061-8eae-699b983f3b1e" + }, + { + "key": "http.url", + "type": "string", + "value": "http://reviews:9080/reviews/0" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p5", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "3d2c717ed473f64c88f82e85878256e6", + "spanID": "822939f0b5d45ced", + "operationName": "productpage.bookinfo.svc.cluster.local:9080/productpage", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "3d2c717ed473f64c88f82e85878256e6", + "spanID": "88f82e85878256e6" + } + ], + "startTime": 1708939399376582, + "duration": 13287, + "tags": [ + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "http.url", + "type": "string", + "value": "http://192.168.49.2:31793/productpage" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "peer.address", + "type": "string", + "value": "envoy://internal_client_address/" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "response_size", + "type": "string", + "value": "5289" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "c3da86b3-bd1f-976c-9122-74f7454b9b47" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p2", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "3d2c717ed473f64c88f82e85878256e6", + "spanID": "e5a52f32df3f9c5a", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "3d2c717ed473f64c88f82e85878256e6", + "spanID": "822939f0b5d45ced" + } + ], + "startTime": 1708939399379686, + "duration": 1486, + "tags": [ + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "c3da86b3-bd1f-976c-9122-74f7454b9b47" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p3", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "3d2c717ed473f64c88f82e85878256e6", + "spanID": "34a442b29362773b", + "operationName": "reviews.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "3d2c717ed473f64c88f82e85878256e6", + "spanID": "822939f0b5d45ced" + } + ], + "startTime": 1708939399384575, + "duration": 3527, + "tags": [ + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "http.url", + "type": "string", + "value": "http://reviews:9080/reviews/0" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "c3da86b3-bd1f-976c-9122-74f7454b9b47" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "response_size", + "type": "string", + "value": "437" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p5", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "c8bc6c6862e5f1f4db2b06b7b258a5d6", + "spanID": "78dc95e6eb715b4e", + "operationName": "productpage.bookinfo.svc.cluster.local:9080/productpage", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "c8bc6c6862e5f1f4db2b06b7b258a5d6", + "spanID": "db2b06b7b258a5d6" + } + ], + "startTime": 1708939351376599, + "duration": 12074, + "tags": [ + { + "key": "peer.address", + "type": "string", + "value": "envoy://internal_client_address/" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "response_size", + "type": "string", + "value": "5289" + }, + { + "key": "http.url", + "type": "string", + "value": "http://192.168.49.2:31793/productpage" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "070825c1-2a49-91dd-98a3-b970bec0589b" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p2", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "c8bc6c6862e5f1f4db2b06b7b258a5d6", + "spanID": "ea323ca3bfa86ca9", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "c8bc6c6862e5f1f4db2b06b7b258a5d6", + "spanID": "78dc95e6eb715b4e" + } + ], + "startTime": 1708939351379638, + "duration": 1831, + "tags": [ + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "070825c1-2a49-91dd-98a3-b970bec0589b" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p3", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "c8bc6c6862e5f1f4db2b06b7b258a5d6", + "spanID": "8338d769105a83fe", + "operationName": "reviews.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "c8bc6c6862e5f1f4db2b06b7b258a5d6", + "spanID": "78dc95e6eb715b4e" + } + ], + "startTime": 1708939351384076, + "duration": 3016, + "tags": [ + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "http.url", + "type": "string", + "value": "http://reviews:9080/reviews/0" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "070825c1-2a49-91dd-98a3-b970bec0589b" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "response_size", + "type": "string", + "value": "437" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p5", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "559247d952229657947c65f73ee86522", + "spanID": "d3809c08c543e3bb", + "operationName": "productpage.bookinfo.svc.cluster.local:9080/productpage", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "559247d952229657947c65f73ee86522", + "spanID": "947c65f73ee86522" + } + ], + "startTime": 1708939348376470, + "duration": 8934, + "tags": [ + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "http.url", + "type": "string", + "value": "http://192.168.49.2:31793/productpage" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "00bb5663-2aac-999c-b708-7f87da32bda2" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "response_size", + "type": "string", + "value": "4294" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "peer.address", + "type": "string", + "value": "envoy://internal_client_address/" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p2", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "559247d952229657947c65f73ee86522", + "spanID": "b17c50fdcf1c37ca", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "559247d952229657947c65f73ee86522", + "spanID": "d3809c08c543e3bb" + } + ], + "startTime": 1708939348379408, + "duration": 1426, + "tags": [ + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "00bb5663-2aac-999c-b708-7f87da32bda2" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p3", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "559247d952229657947c65f73ee86522", + "spanID": "dd5d72eb93883443", + "operationName": "reviews.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "559247d952229657947c65f73ee86522", + "spanID": "d3809c08c543e3bb" + } + ], + "startTime": 1708939348383228, + "duration": 895, + "tags": [ + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "response_size", + "type": "string", + "value": "358" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "http.url", + "type": "string", + "value": "http://reviews:9080/reviews/0" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "00bb5663-2aac-999c-b708-7f87da32bda2" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p5", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "fffe4ca6bb1bdb36276bf733834c29a5", + "spanID": "2c9095ce0aa6fe87", + "operationName": "productpage.bookinfo.svc.cluster.local:9080/productpage", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "fffe4ca6bb1bdb36276bf733834c29a5", + "spanID": "276bf733834c29a5" + } + ], + "startTime": 1708939346376661, + "duration": 17406, + "tags": [ + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "response_size", + "type": "string", + "value": "5289" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "peer.address", + "type": "string", + "value": "envoy://internal_client_address/" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "cc4033a7-6a16-95ca-935e-b05f7df68dfa" + }, + { + "key": "http.url", + "type": "string", + "value": "http://192.168.49.2:31793/productpage" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p2", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "fffe4ca6bb1bdb36276bf733834c29a5", + "spanID": "18a8c2eeda7292cb", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "fffe4ca6bb1bdb36276bf733834c29a5", + "spanID": "2c9095ce0aa6fe87" + } + ], + "startTime": 1708939346380544, + "duration": 2267, + "tags": [ + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "cc4033a7-6a16-95ca-935e-b05f7df68dfa" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p3", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "fffe4ca6bb1bdb36276bf733834c29a5", + "spanID": "b8fd42fd7e432771", + "operationName": "reviews.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "fffe4ca6bb1bdb36276bf733834c29a5", + "spanID": "2c9095ce0aa6fe87" + } + ], + "startTime": 1708939346387191, + "duration": 4823, + "tags": [ + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "response_size", + "type": "string", + "value": "437" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "cc4033a7-6a16-95ca-935e-b05f7df68dfa" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "http.url", + "type": "string", + "value": "http://reviews:9080/reviews/0" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p5", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "0f085485286d9d49a53eab19925535d1", + "spanID": "014d807bd83b1dd2", + "operationName": "productpage.bookinfo.svc.cluster.local:9080/productpage", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "0f085485286d9d49a53eab19925535d1", + "spanID": "a53eab19925535d1" + } + ], + "startTime": 1708939410376661, + "duration": 16517, + "tags": [ + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "peer.address", + "type": "string", + "value": "envoy://internal_client_address/" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "http.url", + "type": "string", + "value": "http://192.168.49.2:31793/productpage" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "a5af8aae-5eeb-919a-aa83-02ac3e68160f" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "response_size", + "type": "string", + "value": "5294" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p2", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 2 + }, + { + "traceID": "58a2e14b8fd1f8457537c255eaaccfde", + "spanID": "4702ac567d18edcc", + "operationName": "productpage.bookinfo.svc.cluster.local:9080/productpage", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "58a2e14b8fd1f8457537c255eaaccfde", + "spanID": "7537c255eaaccfde" + } + ], + "startTime": 1708939396376621, + "duration": 15862, + "tags": [ + { + "key": "http.url", + "type": "string", + "value": "http://192.168.49.2:31793/productpage" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "response_size", + "type": "string", + "value": "5289" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "peer.address", + "type": "string", + "value": "envoy://internal_client_address/" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "31ede79b-9955-9150-921d-ad2e1ed63d3a" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p2", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "58a2e14b8fd1f8457537c255eaaccfde", + "spanID": "f7dd7ec04196cc5d", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "58a2e14b8fd1f8457537c255eaaccfde", + "spanID": "4702ac567d18edcc" + } + ], + "startTime": 1708939396380396, + "duration": 2326, + "tags": [ + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "31ede79b-9955-9150-921d-ad2e1ed63d3a" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p3", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "58a2e14b8fd1f8457537c255eaaccfde", + "spanID": "001d3b4a247b6d48", + "operationName": "reviews.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "58a2e14b8fd1f8457537c255eaaccfde", + "spanID": "4702ac567d18edcc" + } + ], + "startTime": 1708939396387118, + "duration": 3361, + "tags": [ + { + "key": "http.url", + "type": "string", + "value": "http://reviews:9080/reviews/0" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "31ede79b-9955-9150-921d-ad2e1ed63d3a" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "response_size", + "type": "string", + "value": "437" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p5", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "201998336c615ec1a685d80212a3c75f", + "spanID": "a4d27897c147ab87", + "operationName": "productpage.bookinfo.svc.cluster.local:9080/productpage", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "201998336c615ec1a685d80212a3c75f", + "spanID": "a685d80212a3c75f" + } + ], + "startTime": 1708939392376524, + "duration": 12362, + "tags": [ + { + "key": "guid:x-request-id", + "type": "string", + "value": "337ec49f-b3bf-978a-92fc-e94d5b0bc891" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "http.url", + "type": "string", + "value": "http://192.168.49.2:31793/productpage" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "response_size", + "type": "string", + "value": "5289" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "peer.address", + "type": "string", + "value": "envoy://internal_client_address/" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p2", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "201998336c615ec1a685d80212a3c75f", + "spanID": "15dd4d6a6d54014e", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "201998336c615ec1a685d80212a3c75f", + "spanID": "a4d27897c147ab87" + } + ], + "startTime": 1708939392379572, + "duration": 1267, + "tags": [ + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "337ec49f-b3bf-978a-92fc-e94d5b0bc891" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p3", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "201998336c615ec1a685d80212a3c75f", + "spanID": "b4cd08c2a870479b", + "operationName": "reviews.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "201998336c615ec1a685d80212a3c75f", + "spanID": "a4d27897c147ab87" + } + ], + "startTime": 1708939392383365, + "duration": 3802, + "tags": [ + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "337ec49f-b3bf-978a-92fc-e94d5b0bc891" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "http.url", + "type": "string", + "value": "http://reviews:9080/reviews/0" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "response_size", + "type": "string", + "value": "437" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p5", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "83522588c19f3784f744cec4295c63c1", + "spanID": "ff7dd1e9be798dc9", + "operationName": "productpage.bookinfo.svc.cluster.local:9080/productpage", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "83522588c19f3784f744cec4295c63c1", + "spanID": "f744cec4295c63c1" + } + ], + "startTime": 1708939430376481, + "duration": 8821, + "tags": [ + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "http.url", + "type": "string", + "value": "http://192.168.49.2:31793/productpage" + }, + { + "key": "peer.address", + "type": "string", + "value": "envoy://internal_client_address/" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "response_size", + "type": "string", + "value": "4294" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "226a52d5-56cb-9dd4-85f9-401d1689a583" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p2", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "83522588c19f3784f744cec4295c63c1", + "spanID": "690807ceb87e193a", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "83522588c19f3784f744cec4295c63c1", + "spanID": "ff7dd1e9be798dc9" + } + ], + "startTime": 1708939430379512, + "duration": 1249, + "tags": [ + { + "key": "guid:x-request-id", + "type": "string", + "value": "226a52d5-56cb-9dd4-85f9-401d1689a583" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p3", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "83522588c19f3784f744cec4295c63c1", + "spanID": "44ba1e7479493382", + "operationName": "reviews.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "83522588c19f3784f744cec4295c63c1", + "spanID": "ff7dd1e9be798dc9" + } + ], + "startTime": 1708939430383155, + "duration": 887, + "tags": [ + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "response_size", + "type": "string", + "value": "358" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "http.url", + "type": "string", + "value": "http://reviews:9080/reviews/0" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "226a52d5-56cb-9dd4-85f9-401d1689a583" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p5", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "3747f5b0c0eabe5009f3b0720886fa5e", + "spanID": "f90c3ddabd628388", + "operationName": "productpage.bookinfo.svc.cluster.local:9080/productpage", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "3747f5b0c0eabe5009f3b0720886fa5e", + "spanID": "09f3b0720886fa5e" + } + ], + "startTime": 1708939422376904, + "duration": 19574, + "tags": [ + { + "key": "response_size", + "type": "string", + "value": "5289" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "8dc88323-71fa-9593-92e3-efb886b3d983" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "peer.address", + "type": "string", + "value": "envoy://internal_client_address/" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "http.url", + "type": "string", + "value": "http://192.168.49.2:31793/productpage" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p2", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "3747f5b0c0eabe5009f3b0720886fa5e", + "spanID": "e81139ac4e6095fb", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "3747f5b0c0eabe5009f3b0720886fa5e", + "spanID": "f90c3ddabd628388" + } + ], + "startTime": 1708939422382474, + "duration": 2059, + "tags": [ + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "8dc88323-71fa-9593-92e3-efb886b3d983" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p3", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "3747f5b0c0eabe5009f3b0720886fa5e", + "spanID": "c79392571119dc8b", + "operationName": "reviews.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "3747f5b0c0eabe5009f3b0720886fa5e", + "spanID": "f90c3ddabd628388" + } + ], + "startTime": 1708939422389136, + "duration": 4747, + "tags": [ + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "http.url", + "type": "string", + "value": "http://reviews:9080/reviews/0" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "8dc88323-71fa-9593-92e3-efb886b3d983" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "response_size", + "type": "string", + "value": "437" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p5", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "ea8d98f22898ca9230aece58c52bfc1a", + "spanID": "b54b20fe3c0cf366", + "operationName": "productpage.bookinfo.svc.cluster.local:9080/productpage", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "ea8d98f22898ca9230aece58c52bfc1a", + "spanID": "30aece58c52bfc1a" + } + ], + "startTime": 1708939382376541, + "duration": 10754, + "tags": [ + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "peer.address", + "type": "string", + "value": "envoy://internal_client_address/" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "e7b08333-9d8b-9efc-9fe9-777e5e420b26" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "http.url", + "type": "string", + "value": "http://192.168.49.2:31793/productpage" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "response_size", + "type": "string", + "value": "5294" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p2", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "ea8d98f22898ca9230aece58c52bfc1a", + "spanID": "7e55ac755ab4a93b", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "ea8d98f22898ca9230aece58c52bfc1a", + "spanID": "b54b20fe3c0cf366" + } + ], + "startTime": 1708939382379630, + "duration": 1283, + "tags": [ + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "e7b08333-9d8b-9efc-9fe9-777e5e420b26" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p3", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "ea8d98f22898ca9230aece58c52bfc1a", + "spanID": "c8ec7eee3e24aae1", + "operationName": "reviews.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "ea8d98f22898ca9230aece58c52bfc1a", + "spanID": "b54b20fe3c0cf366" + } + ], + "startTime": 1708939382383177, + "duration": 2580, + "tags": [ + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "http.url", + "type": "string", + "value": "http://reviews:9080/reviews/0" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "e7b08333-9d8b-9efc-9fe9-777e5e420b26" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "response_size", + "type": "string", + "value": "442" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p5", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "b70e0ead4bb9bae119c088908f6241c5", + "spanID": "885f8a77b94bc8d6", + "operationName": "productpage.bookinfo.svc.cluster.local:9080/productpage", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "b70e0ead4bb9bae119c088908f6241c5", + "spanID": "19c088908f6241c5" + } + ], + "startTime": 1708932954898096, + "duration": 12021, + "tags": [ + { + "key": "response_size", + "type": "string", + "value": "5294" + }, + { + "key": "http.url", + "type": "string", + "value": "http://192.168.49.2:31793/productpage" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "peer.address", + "type": "string", + "value": "envoy://internal_client_address/" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "82a10b35-b8ec-9b41-9666-6425396d1fc1" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p2", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "b70e0ead4bb9bae119c088908f6241c5", + "spanID": "ac7f0e5f8cc1821f", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "b70e0ead4bb9bae119c088908f6241c5", + "spanID": "885f8a77b94bc8d6" + } + ], + "startTime": 1708932954901446, + "duration": 1373, + "tags": [ + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "82a10b35-b8ec-9b41-9666-6425396d1fc1" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p3", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "b70e0ead4bb9bae119c088908f6241c5", + "spanID": "c06542608b318c5f", + "operationName": "reviews.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "b70e0ead4bb9bae119c088908f6241c5", + "spanID": "885f8a77b94bc8d6" + } + ], + "startTime": 1708932954905374, + "duration": 2748, + "tags": [ + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "response_size", + "type": "string", + "value": "442" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "82a10b35-b8ec-9b41-9666-6425396d1fc1" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "http.url", + "type": "string", + "value": "http://reviews:9080/reviews/0" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p5", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "1470807f33894aefab9343932b643fce", + "spanID": "883f08516d561dab", + "operationName": "productpage.bookinfo.svc.cluster.local:9080/productpage", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "1470807f33894aefab9343932b643fce", + "spanID": "ab9343932b643fce" + } + ], + "startTime": 1708932950898974, + "duration": 13270, + "tags": [ + { + "key": "peer.address", + "type": "string", + "value": "envoy://internal_client_address/" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "549961cd-e939-9ae2-ab16-16969b10ad47" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "http.url", + "type": "string", + "value": "http://192.168.49.2:31793/productpage" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "response_size", + "type": "string", + "value": "5294" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p2", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "1470807f33894aefab9343932b643fce", + "spanID": "f41e6f7c7cf93c02", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "1470807f33894aefab9343932b643fce", + "spanID": "883f08516d561dab" + } + ], + "startTime": 1708932950902695, + "duration": 2035, + "tags": [ + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "549961cd-e939-9ae2-ab16-16969b10ad47" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p3", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "1470807f33894aefab9343932b643fce", + "spanID": "21ccfd4e89b3cf4d", + "operationName": "reviews.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "1470807f33894aefab9343932b643fce", + "spanID": "883f08516d561dab" + } + ], + "startTime": 1708932950907586, + "duration": 3122, + "tags": [ + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "response_size", + "type": "string", + "value": "442" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "http.url", + "type": "string", + "value": "http://reviews:9080/reviews/0" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "549961cd-e939-9ae2-ab16-16969b10ad47" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p5", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "5cd4de2fad1c4bc49b21b2355b3caa64", + "spanID": "59b89e2f79645d00", + "operationName": "productpage.bookinfo.svc.cluster.local:9080/productpage", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "5cd4de2fad1c4bc49b21b2355b3caa64", + "spanID": "9b21b2355b3caa64" + } + ], + "startTime": 1708932947898180, + "duration": 10692, + "tags": [ + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "peer.address", + "type": "string", + "value": "envoy://internal_client_address/" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "404e85a5-547c-9a38-818f-3c8666b63db6" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "response_size", + "type": "string", + "value": "4294" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "http.url", + "type": "string", + "value": "http://192.168.49.2:31793/productpage" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p2", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "5cd4de2fad1c4bc49b21b2355b3caa64", + "spanID": "bbc0e60adb273dce", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "5cd4de2fad1c4bc49b21b2355b3caa64", + "spanID": "59b89e2f79645d00" + } + ], + "startTime": 1708932947902322, + "duration": 1396, + "tags": [ + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "404e85a5-547c-9a38-818f-3c8666b63db6" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p3", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "5cd4de2fad1c4bc49b21b2355b3caa64", + "spanID": "994a362994a77091", + "operationName": "reviews.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "5cd4de2fad1c4bc49b21b2355b3caa64", + "spanID": "59b89e2f79645d00" + } + ], + "startTime": 1708932947906525, + "duration": 992, + "tags": [ + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "404e85a5-547c-9a38-818f-3c8666b63db6" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "http.url", + "type": "string", + "value": "http://reviews:9080/reviews/0" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "response_size", + "type": "string", + "value": "358" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p5", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "5585ab417863bccc9a5f952ee2ff332e", + "spanID": "5114cd23b6bbe2b0", + "operationName": "productpage.bookinfo.svc.cluster.local:9080/productpage", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "5585ab417863bccc9a5f952ee2ff332e", + "spanID": "9a5f952ee2ff332e" + } + ], + "startTime": 1708932946899181, + "duration": 38274, + "tags": [ + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "e218eb6a-2be0-92a6-b2ae-2d2c789b3a49" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "response_size", + "type": "string", + "value": "5294" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "peer.address", + "type": "string", + "value": "envoy://internal_client_address/" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "http.url", + "type": "string", + "value": "http://192.168.49.2:31793/productpage" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p2", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "5585ab417863bccc9a5f952ee2ff332e", + "spanID": "3c5a9622cc854f42", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "5585ab417863bccc9a5f952ee2ff332e", + "spanID": "5114cd23b6bbe2b0" + } + ], + "startTime": 1708932946909824, + "duration": 3921, + "tags": [ + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "e218eb6a-2be0-92a6-b2ae-2d2c789b3a49" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p3", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "5585ab417863bccc9a5f952ee2ff332e", + "spanID": "e13056fa5966b814", + "operationName": "reviews.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "5585ab417863bccc9a5f952ee2ff332e", + "spanID": "5114cd23b6bbe2b0" + } + ], + "startTime": 1708932946923137, + "duration": 8748, + "tags": [ + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "http.url", + "type": "string", + "value": "http://reviews:9080/reviews/0" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "e218eb6a-2be0-92a6-b2ae-2d2c789b3a49" + }, + { + "key": "response_size", + "type": "string", + "value": "442" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p5", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "db0e271c9ececcb977c6f1978adcdb11", + "spanID": "f18ae48068dc62dd", + "operationName": "productpage.bookinfo.svc.cluster.local:9080/productpage", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "db0e271c9ececcb977c6f1978adcdb11", + "spanID": "77c6f1978adcdb11" + } + ], + "startTime": 1708932945899092, + "duration": 17017, + "tags": [ + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "1675da3f-56eb-984a-b624-72c0f2fbd409" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "peer.address", + "type": "string", + "value": "envoy://internal_client_address/" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "http.url", + "type": "string", + "value": "http://192.168.49.2:31793/productpage" + }, + { + "key": "response_size", + "type": "string", + "value": "5294" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p2", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "db0e271c9ececcb977c6f1978adcdb11", + "spanID": "e645869d427a137c", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "db0e271c9ececcb977c6f1978adcdb11", + "spanID": "f18ae48068dc62dd" + } + ], + "startTime": 1708932945907273, + "duration": 1294, + "tags": [ + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "1675da3f-56eb-984a-b624-72c0f2fbd409" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p3", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "db0e271c9ececcb977c6f1978adcdb11", + "spanID": "7f8a6f5c566b2c3f", + "operationName": "reviews.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "db0e271c9ececcb977c6f1978adcdb11", + "spanID": "f18ae48068dc62dd" + } + ], + "startTime": 1708932945911264, + "duration": 2763, + "tags": [ + { + "key": "guid:x-request-id", + "type": "string", + "value": "1675da3f-56eb-984a-b624-72c0f2fbd409" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "http.url", + "type": "string", + "value": "http://reviews:9080/reviews/0" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "response_size", + "type": "string", + "value": "442" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p5", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "2b8edcd8be25e3f5b5604d4ae53845c7", + "spanID": "daefd561eee31273", + "operationName": "productpage.bookinfo.svc.cluster.local:9080/productpage", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "2b8edcd8be25e3f5b5604d4ae53845c7", + "spanID": "b5604d4ae53845c7" + } + ], + "startTime": 1708932953899212, + "duration": 26523, + "tags": [ + { + "key": "guid:x-request-id", + "type": "string", + "value": "d6cabcc2-c55a-9935-953e-9931c7414336" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "peer.address", + "type": "string", + "value": "envoy://internal_client_address/" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "http.url", + "type": "string", + "value": "http://192.168.49.2:31793/productpage" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "response_size", + "type": "string", + "value": "5289" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p2", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "2b8edcd8be25e3f5b5604d4ae53845c7", + "spanID": "878246bc732d24d6", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "2b8edcd8be25e3f5b5604d4ae53845c7", + "spanID": "daefd561eee31273" + } + ], + "startTime": 1708932953910141, + "duration": 3776, + "tags": [ + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "d6cabcc2-c55a-9935-953e-9931c7414336" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p3", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "2b8edcd8be25e3f5b5604d4ae53845c7", + "spanID": "05473012045d0d15", + "operationName": "reviews.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "2b8edcd8be25e3f5b5604d4ae53845c7", + "spanID": "daefd561eee31273" + } + ], + "startTime": 1708932953920977, + "duration": 3129, + "tags": [ + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "d6cabcc2-c55a-9935-953e-9931c7414336" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "response_size", + "type": "string", + "value": "437" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "http.url", + "type": "string", + "value": "http://reviews:9080/reviews/0" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p5", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "41d4c4da57ef0f20376f583ac073aeae", + "spanID": "ddd90b12f295d7ba", + "operationName": "productpage.bookinfo.svc.cluster.local:9080/productpage", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "41d4c4da57ef0f20376f583ac073aeae", + "spanID": "376f583ac073aeae" + } + ], + "startTime": 1708932952898632, + "duration": 15825, + "tags": [ + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "http.url", + "type": "string", + "value": "http://192.168.49.2:31793/productpage" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "response_size", + "type": "string", + "value": "5289" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "peer.address", + "type": "string", + "value": "envoy://internal_client_address/" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "2221f8a4-fd88-99e4-bb39-baaef52af18f" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p2", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "41d4c4da57ef0f20376f583ac073aeae", + "spanID": "795fde5b9b8d9c60", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "41d4c4da57ef0f20376f583ac073aeae", + "spanID": "ddd90b12f295d7ba" + } + ], + "startTime": 1708932952903165, + "duration": 2007, + "tags": [ + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "2221f8a4-fd88-99e4-bb39-baaef52af18f" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p3", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "41d4c4da57ef0f20376f583ac073aeae", + "spanID": "5dc2f0b27d799745", + "operationName": "reviews.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "41d4c4da57ef0f20376f583ac073aeae", + "spanID": "ddd90b12f295d7ba" + } + ], + "startTime": 1708932952909310, + "duration": 3505, + "tags": [ + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "http.url", + "type": "string", + "value": "http://reviews:9080/reviews/0" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "response_size", + "type": "string", + "value": "437" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "2221f8a4-fd88-99e4-bb39-baaef52af18f" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p5", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "0f395016b909f39c5be9a950bab71c2b", + "spanID": "86f6b9c1a7f97554", + "operationName": "productpage.bookinfo.svc.cluster.local:9080/productpage", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "0f395016b909f39c5be9a950bab71c2b", + "spanID": "5be9a950bab71c2b" + } + ], + "startTime": 1708932951899132, + "duration": 12570, + "tags": [ + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "1ec7d60c-0b4f-9d6c-8727-a2bdeb7972ba" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "peer.address", + "type": "string", + "value": "envoy://internal_client_address/" + }, + { + "key": "response_size", + "type": "string", + "value": "5289" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "http.url", + "type": "string", + "value": "http://192.168.49.2:31793/productpage" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p2", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 2 + }, + { + "traceID": "b37b8a22596974d9ae6761da74180891", + "spanID": "72a587022dd714a5", + "operationName": "productpage.bookinfo.svc.cluster.local:9080/productpage", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "b37b8a22596974d9ae6761da74180891", + "spanID": "ae6761da74180891" + } + ], + "startTime": 1708932949898085, + "duration": 9210, + "tags": [ + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "1be4c875-e1b0-9404-a04d-98dbdb6a67e1" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "http.url", + "type": "string", + "value": "http://192.168.49.2:31793/productpage" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "peer.address", + "type": "string", + "value": "envoy://internal_client_address/" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "response_size", + "type": "string", + "value": "4294" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p2", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "b37b8a22596974d9ae6761da74180891", + "spanID": "509ec55212516f6c", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "b37b8a22596974d9ae6761da74180891", + "spanID": "72a587022dd714a5" + } + ], + "startTime": 1708932949901209, + "duration": 1170, + "tags": [ + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "1be4c875-e1b0-9404-a04d-98dbdb6a67e1" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p3", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "b37b8a22596974d9ae6761da74180891", + "spanID": "014485a094e669ea", + "operationName": "reviews.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "b37b8a22596974d9ae6761da74180891", + "spanID": "72a587022dd714a5" + } + ], + "startTime": 1708932949904980, + "duration": 1013, + "tags": [ + { + "key": "http.url", + "type": "string", + "value": "http://reviews:9080/reviews/0" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "1be4c875-e1b0-9404-a04d-98dbdb6a67e1" + }, + { + "key": "response_size", + "type": "string", + "value": "358" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p5", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "dc8bf53b633752e382ac4e6a0b75f31b", + "spanID": "b40eb4ef7ce31d6b", + "operationName": "productpage.bookinfo.svc.cluster.local:9080/productpage", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "dc8bf53b633752e382ac4e6a0b75f31b", + "spanID": "82ac4e6a0b75f31b" + } + ], + "startTime": 1708932948899191, + "duration": 25410, + "tags": [ + { + "key": "guid:x-request-id", + "type": "string", + "value": "b203d98f-f918-9004-a86e-4060c0280373" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "http.url", + "type": "string", + "value": "http://192.168.49.2:31793/productpage" + }, + { + "key": "response_size", + "type": "string", + "value": "5289" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "peer.address", + "type": "string", + "value": "envoy://internal_client_address/" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p2", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "dc8bf53b633752e382ac4e6a0b75f31b", + "spanID": "73d8f742bb575528", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "dc8bf53b633752e382ac4e6a0b75f31b", + "spanID": "b40eb4ef7ce31d6b" + } + ], + "startTime": 1708932948909832, + "duration": 3987, + "tags": [ + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "b203d98f-f918-9004-a86e-4060c0280373" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p3", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "dc8bf53b633752e382ac4e6a0b75f31b", + "spanID": "12a52b8d63d87bf5", + "operationName": "reviews.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "dc8bf53b633752e382ac4e6a0b75f31b", + "spanID": "b40eb4ef7ce31d6b" + } + ], + "startTime": 1708932948919616, + "duration": 3545, + "tags": [ + { + "key": "response_size", + "type": "string", + "value": "437" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "b203d98f-f918-9004-a86e-4060c0280373" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "http.url", + "type": "string", + "value": "http://reviews:9080/reviews/0" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p5", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "29d46ca0655c99af9c61d6c6262fad61", + "spanID": "9fd61e6b2a38cf93", + "operationName": "productpage.bookinfo.svc.cluster.local:9080/productpage", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "29d46ca0655c99af9c61d6c6262fad61", + "spanID": "9c61d6c6262fad61" + } + ], + "startTime": 1708935114377203, + "duration": 12817, + "tags": [ + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "http.url", + "type": "string", + "value": "http://192.168.49.2:31793/productpage" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "2d01df41-2418-9210-bf2a-8e53b772b304" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "peer.address", + "type": "string", + "value": "envoy://internal_client_address/" + }, + { + "key": "response_size", + "type": "string", + "value": "5289" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p2", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "29d46ca0655c99af9c61d6c6262fad61", + "spanID": "e0d3057bf47081e6", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "29d46ca0655c99af9c61d6c6262fad61", + "spanID": "9fd61e6b2a38cf93" + } + ], + "startTime": 1708935114380853, + "duration": 1378, + "tags": [ + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "2d01df41-2418-9210-bf2a-8e53b772b304" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p3", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "29d46ca0655c99af9c61d6c6262fad61", + "spanID": "493cbb60ac987ab4", + "operationName": "reviews.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "29d46ca0655c99af9c61d6c6262fad61", + "spanID": "9fd61e6b2a38cf93" + } + ], + "startTime": 1708935114385467, + "duration": 2850, + "tags": [ + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "2d01df41-2418-9210-bf2a-8e53b772b304" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "http.url", + "type": "string", + "value": "http://reviews:9080/reviews/0" + }, + { + "key": "response_size", + "type": "string", + "value": "437" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p5", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "d7a7fa2b2f589f8b959d8f6282e006c7", + "spanID": "b07467d1b3b74a0e", + "operationName": "productpage.bookinfo.svc.cluster.local:9080/productpage", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "d7a7fa2b2f589f8b959d8f6282e006c7", + "spanID": "959d8f6282e006c7" + } + ], + "startTime": 1708935112377525, + "duration": 13148, + "tags": [ + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "57b4a3c3-aefd-9128-9083-9b82fdcfe975" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "http.url", + "type": "string", + "value": "http://192.168.49.2:31793/productpage" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "response_size", + "type": "string", + "value": "5294" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "peer.address", + "type": "string", + "value": "envoy://internal_client_address/" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p2", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "d7a7fa2b2f589f8b959d8f6282e006c7", + "spanID": "e3535cb94fd0466e", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "d7a7fa2b2f589f8b959d8f6282e006c7", + "spanID": "b07467d1b3b74a0e" + } + ], + "startTime": 1708935112381274, + "duration": 1511, + "tags": [ + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "57b4a3c3-aefd-9128-9083-9b82fdcfe975" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p3", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "d7a7fa2b2f589f8b959d8f6282e006c7", + "spanID": "876a067e28bbc26d", + "operationName": "reviews.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "d7a7fa2b2f589f8b959d8f6282e006c7", + "spanID": "b07467d1b3b74a0e" + } + ], + "startTime": 1708935112385749, + "duration": 3175, + "tags": [ + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "response_size", + "type": "string", + "value": "442" + }, + { + "key": "http.url", + "type": "string", + "value": "http://reviews:9080/reviews/0" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "57b4a3c3-aefd-9128-9083-9b82fdcfe975" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p5", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "6038d1adf221f32ebf482de06048e15c", + "spanID": "72caada018f5e741", + "operationName": "productpage.bookinfo.svc.cluster.local:9080/productpage", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "6038d1adf221f32ebf482de06048e15c", + "spanID": "bf482de06048e15c" + } + ], + "startTime": 1708935111376682, + "duration": 11584, + "tags": [ + { + "key": "response_size", + "type": "string", + "value": "5289" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "peer.address", + "type": "string", + "value": "envoy://internal_client_address/" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "a11021a4-84ce-9859-a2a0-b29cd030edf4" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "http.url", + "type": "string", + "value": "http://192.168.49.2:31793/productpage" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p2", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "6038d1adf221f32ebf482de06048e15c", + "spanID": "6b2ccc0e2cdc5ac8", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "6038d1adf221f32ebf482de06048e15c", + "spanID": "72caada018f5e741" + } + ], + "startTime": 1708935111380399, + "duration": 1209, + "tags": [ + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "a11021a4-84ce-9859-a2a0-b29cd030edf4" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p3", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "6038d1adf221f32ebf482de06048e15c", + "spanID": "27c4555535b4907c", + "operationName": "reviews.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "6038d1adf221f32ebf482de06048e15c", + "spanID": "72caada018f5e741" + } + ], + "startTime": 1708935111384081, + "duration": 2602, + "tags": [ + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "response_size", + "type": "string", + "value": "437" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "http.url", + "type": "string", + "value": "http://reviews:9080/reviews/0" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "a11021a4-84ce-9859-a2a0-b29cd030edf4" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p5", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "d01d5b819a1d1777a0e7f4f588660f5f", + "spanID": "8ec1ce878641b827", + "operationName": "productpage.bookinfo.svc.cluster.local:9080/productpage", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "d01d5b819a1d1777a0e7f4f588660f5f", + "spanID": "a0e7f4f588660f5f" + } + ], + "startTime": 1708935107377528, + "duration": 37099, + "tags": [ + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "peer.address", + "type": "string", + "value": "envoy://internal_client_address/" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "http.url", + "type": "string", + "value": "http://192.168.49.2:31793/productpage" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "f4b5f16c-b0a5-973f-8f5c-16fdee5b065f" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "response_size", + "type": "string", + "value": "5294" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p2", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "d01d5b819a1d1777a0e7f4f588660f5f", + "spanID": "353956c2157fadbc", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "d01d5b819a1d1777a0e7f4f588660f5f", + "spanID": "8ec1ce878641b827" + } + ], + "startTime": 1708935107387819, + "duration": 4066, + "tags": [ + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "f4b5f16c-b0a5-973f-8f5c-16fdee5b065f" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p3", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "d01d5b819a1d1777a0e7f4f588660f5f", + "spanID": "af13ed892d4aa091", + "operationName": "reviews.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "d01d5b819a1d1777a0e7f4f588660f5f", + "spanID": "8ec1ce878641b827" + } + ], + "startTime": 1708935107400718, + "duration": 8717, + "tags": [ + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "response_size", + "type": "string", + "value": "442" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "http.url", + "type": "string", + "value": "http://reviews:9080/reviews/0" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "f4b5f16c-b0a5-973f-8f5c-16fdee5b065f" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p5", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "87832b5dda2fe4e481513eaa602de08b", + "spanID": "27b267c32855bbc3", + "operationName": "productpage.bookinfo.svc.cluster.local:9080/productpage", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "87832b5dda2fe4e481513eaa602de08b", + "spanID": "81513eaa602de08b" + } + ], + "startTime": 1708935106377579, + "duration": 15215, + "tags": [ + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "peer.address", + "type": "string", + "value": "envoy://internal_client_address/" + }, + { + "key": "response_size", + "type": "string", + "value": "5294" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "6aae8133-2445-94b2-81f9-66b79614f2d8" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "http.url", + "type": "string", + "value": "http://192.168.49.2:31793/productpage" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p2", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "87832b5dda2fe4e481513eaa602de08b", + "spanID": "29b5c062cd5c7490", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "87832b5dda2fe4e481513eaa602de08b", + "spanID": "27b267c32855bbc3" + } + ], + "startTime": 1708935106381671, + "duration": 2349, + "tags": [ + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "6aae8133-2445-94b2-81f9-66b79614f2d8" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p3", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "87832b5dda2fe4e481513eaa602de08b", + "spanID": "ba8eeaf0c1ba0b31", + "operationName": "reviews.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "87832b5dda2fe4e481513eaa602de08b", + "spanID": "27b267c32855bbc3" + } + ], + "startTime": 1708935106387130, + "duration": 3920, + "tags": [ + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "6aae8133-2445-94b2-81f9-66b79614f2d8" + }, + { + "key": "http.url", + "type": "string", + "value": "http://reviews:9080/reviews/0" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "response_size", + "type": "string", + "value": "442" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p5", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "cf97eae00c2f41ba36fd37cc6064de37", + "spanID": "97101dcf3b35f8db", + "operationName": "productpage.bookinfo.svc.cluster.local:9080/productpage", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "cf97eae00c2f41ba36fd37cc6064de37", + "spanID": "36fd37cc6064de37" + } + ], + "startTime": 1708935105376452, + "duration": 8951, + "tags": [ + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "peer.address", + "type": "string", + "value": "envoy://internal_client_address/" + }, + { + "key": "http.url", + "type": "string", + "value": "http://192.168.49.2:31793/productpage" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "8e507c3f-9474-9b63-818f-9315c99c4746" + }, + { + "key": "response_size", + "type": "string", + "value": "4294" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p2", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "cf97eae00c2f41ba36fd37cc6064de37", + "spanID": "09d0c6a0db94443e", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "cf97eae00c2f41ba36fd37cc6064de37", + "spanID": "97101dcf3b35f8db" + } + ], + "startTime": 1708935105379251, + "duration": 1267, + "tags": [ + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "8e507c3f-9474-9b63-818f-9315c99c4746" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p3", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "cf97eae00c2f41ba36fd37cc6064de37", + "spanID": "53ef1174ecce89c0", + "operationName": "reviews.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "cf97eae00c2f41ba36fd37cc6064de37", + "spanID": "97101dcf3b35f8db" + } + ], + "startTime": 1708935105383271, + "duration": 916, + "tags": [ + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "response_size", + "type": "string", + "value": "358" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "http.url", + "type": "string", + "value": "http://reviews:9080/reviews/0" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "8e507c3f-9474-9b63-818f-9315c99c4746" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p5", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "7fc058470d66fa276ffbaa33d0608026", + "spanID": "b93ad6f8ab5c1dc0", + "operationName": "productpage.bookinfo.svc.cluster.local:9080/productpage", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "7fc058470d66fa276ffbaa33d0608026", + "spanID": "6ffbaa33d0608026" + } + ], + "startTime": 1708935113377604, + "duration": 17550, + "tags": [ + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "7fcf947b-ca8a-994d-9377-4131b6b47771" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "response_size", + "type": "string", + "value": "5289" + }, + { + "key": "http.url", + "type": "string", + "value": "http://192.168.49.2:31793/productpage" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "peer.address", + "type": "string", + "value": "envoy://internal_client_address/" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p2", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "7fc058470d66fa276ffbaa33d0608026", + "spanID": "9dc77d3e4ae9046e", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "7fc058470d66fa276ffbaa33d0608026", + "spanID": "b93ad6f8ab5c1dc0" + } + ], + "startTime": 1708935113386386, + "duration": 1471, + "tags": [ + { + "key": "guid:x-request-id", + "type": "string", + "value": "7fcf947b-ca8a-994d-9377-4131b6b47771" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p3", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "7fc058470d66fa276ffbaa33d0608026", + "spanID": "3663070327b7811b", + "operationName": "reviews.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "7fc058470d66fa276ffbaa33d0608026", + "spanID": "b93ad6f8ab5c1dc0" + } + ], + "startTime": 1708935113390545, + "duration": 3033, + "tags": [ + { + "key": "http.url", + "type": "string", + "value": "http://reviews:9080/reviews/0" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "7fcf947b-ca8a-994d-9377-4131b6b47771" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "response_size", + "type": "string", + "value": "437" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p5", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "08eb7aa2be69060237a5470dda3f300e", + "spanID": "9572e5ba08724866", + "operationName": "productpage.bookinfo.svc.cluster.local:9080/productpage", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "08eb7aa2be69060237a5470dda3f300e", + "spanID": "37a5470dda3f300e" + } + ], + "startTime": 1708935110376654, + "duration": 10548, + "tags": [ + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "peer.address", + "type": "string", + "value": "envoy://internal_client_address/" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "http.url", + "type": "string", + "value": "http://192.168.49.2:31793/productpage" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "0be0a7f5-31a8-9e37-ae99-69888d481e3b" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "response_size", + "type": "string", + "value": "4294" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p2", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 2 + }, + { + "traceID": "cb5d0cb464db5ff9a4b2e127091802b7", + "spanID": "ad2f862f58e4a3a2", + "operationName": "productpage.bookinfo.svc.cluster.local:9080/productpage", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "cb5d0cb464db5ff9a4b2e127091802b7", + "spanID": "a4b2e127091802b7" + } + ], + "startTime": 1708935109376442, + "duration": 10243, + "tags": [ + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "peer.address", + "type": "string", + "value": "envoy://internal_client_address/" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "response_size", + "type": "string", + "value": "5294" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "0319305c-49da-94c9-97b3-5355f9802bff" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "http.url", + "type": "string", + "value": "http://192.168.49.2:31793/productpage" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p2", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "cb5d0cb464db5ff9a4b2e127091802b7", + "spanID": "f5da722bdfc1b74a", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "cb5d0cb464db5ff9a4b2e127091802b7", + "spanID": "ad2f862f58e4a3a2" + } + ], + "startTime": 1708935109379353, + "duration": 1219, + "tags": [ + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "0319305c-49da-94c9-97b3-5355f9802bff" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p3", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "cb5d0cb464db5ff9a4b2e127091802b7", + "spanID": "b13cf2e847d29f45", + "operationName": "reviews.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "cb5d0cb464db5ff9a4b2e127091802b7", + "spanID": "ad2f862f58e4a3a2" + } + ], + "startTime": 1708935109382695, + "duration": 2608, + "tags": [ + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "0319305c-49da-94c9-97b3-5355f9802bff" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "http.url", + "type": "string", + "value": "http://reviews:9080/reviews/0" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "response_size", + "type": "string", + "value": "442" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p5", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "0d35560d5150e2f5983438f21a6bec40", + "spanID": "86c321a4cb5160ae", + "operationName": "productpage.bookinfo.svc.cluster.local:9080/productpage", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "0d35560d5150e2f5983438f21a6bec40", + "spanID": "983438f21a6bec40" + } + ], + "startTime": 1708935108377463, + "duration": 14631, + "tags": [ + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "peer.address", + "type": "string", + "value": "envoy://internal_client_address/" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "http.url", + "type": "string", + "value": "http://192.168.49.2:31793/productpage" + }, + { + "key": "response_size", + "type": "string", + "value": "5289" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "1451319a-5e17-937f-8f59-f35cba32d09f" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p2", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 2 + }, + { + "traceID": "8b98dcc91bcf80119f3b535eec4b9810", + "spanID": "23bd7acaa1ef8a5d", + "operationName": "productpage.bookinfo.svc.cluster.local:9080/productpage", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "8b98dcc91bcf80119f3b535eec4b9810", + "spanID": "9f3b535eec4b9810" + } + ], + "startTime": 1708936188377560, + "duration": 14247, + "tags": [ + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "response_size", + "type": "string", + "value": "5294" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "http.url", + "type": "string", + "value": "http://192.168.49.2:31793/productpage" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "peer.address", + "type": "string", + "value": "envoy://internal_client_address/" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "0e4d9369-24da-9ed7-8249-817976d6a432" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p2", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "8b98dcc91bcf80119f3b535eec4b9810", + "spanID": "28f942ca4931139d", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "8b98dcc91bcf80119f3b535eec4b9810", + "spanID": "23bd7acaa1ef8a5d" + } + ], + "startTime": 1708936188382221, + "duration": 1407, + "tags": [ + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "0e4d9369-24da-9ed7-8249-817976d6a432" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p3", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "8b98dcc91bcf80119f3b535eec4b9810", + "spanID": "612ce6a9447ac5c5", + "operationName": "reviews.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "8b98dcc91bcf80119f3b535eec4b9810", + "spanID": "23bd7acaa1ef8a5d" + } + ], + "startTime": 1708936188386561, + "duration": 3610, + "tags": [ + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "response_size", + "type": "string", + "value": "442" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "0e4d9369-24da-9ed7-8249-817976d6a432" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "http.url", + "type": "string", + "value": "http://reviews:9080/reviews/0" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p5", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "8beba8a61597bb4b0b6a8a48f406225a", + "spanID": "02b902ac27d7eeb5", + "operationName": "productpage.bookinfo.svc.cluster.local:9080/productpage", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "8beba8a61597bb4b0b6a8a48f406225a", + "spanID": "0b6a8a48f406225a" + } + ], + "startTime": 1708936186376767, + "duration": 11871, + "tags": [ + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "response_size", + "type": "string", + "value": "5289" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "http.url", + "type": "string", + "value": "http://192.168.49.2:31793/productpage" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "a84f7f7a-3c2b-92be-9ad3-ce03c6ff0731" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "peer.address", + "type": "string", + "value": "envoy://internal_client_address/" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p2", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "8beba8a61597bb4b0b6a8a48f406225a", + "spanID": "4d3dfebe2fa6a0cd", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "8beba8a61597bb4b0b6a8a48f406225a", + "spanID": "02b902ac27d7eeb5" + } + ], + "startTime": 1708936186380046, + "duration": 1658, + "tags": [ + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "a84f7f7a-3c2b-92be-9ad3-ce03c6ff0731" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p3", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "8beba8a61597bb4b0b6a8a48f406225a", + "spanID": "9ca8504b6f7ed8eb", + "operationName": "reviews.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "8beba8a61597bb4b0b6a8a48f406225a", + "spanID": "02b902ac27d7eeb5" + } + ], + "startTime": 1708936186384230, + "duration": 2838, + "tags": [ + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "http.url", + "type": "string", + "value": "http://reviews:9080/reviews/0" + }, + { + "key": "response_size", + "type": "string", + "value": "437" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "a84f7f7a-3c2b-92be-9ad3-ce03c6ff0731" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p5", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "b70fc366e55282c7e36838a2d00ac38d", + "spanID": "80d0f9a2abbcb8ec", + "operationName": "productpage.bookinfo.svc.cluster.local:9080/productpage", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "b70fc366e55282c7e36838a2d00ac38d", + "spanID": "e36838a2d00ac38d" + } + ], + "startTime": 1708936185377435, + "duration": 9062, + "tags": [ + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "peer.address", + "type": "string", + "value": "envoy://internal_client_address/" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "http.url", + "type": "string", + "value": "http://192.168.49.2:31793/productpage" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "response_size", + "type": "string", + "value": "4294" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "cfd0ece4-15ea-9e17-b6da-6bad9c390c59" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p2", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "b70fc366e55282c7e36838a2d00ac38d", + "spanID": "32136afbed4e659e", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "b70fc366e55282c7e36838a2d00ac38d", + "spanID": "80d0f9a2abbcb8ec" + } + ], + "startTime": 1708936185380571, + "duration": 1311, + "tags": [ + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "cfd0ece4-15ea-9e17-b6da-6bad9c390c59" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p3", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "b70fc366e55282c7e36838a2d00ac38d", + "spanID": "6a597d849fc0ddd7", + "operationName": "reviews.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "b70fc366e55282c7e36838a2d00ac38d", + "spanID": "80d0f9a2abbcb8ec" + } + ], + "startTime": 1708936185384248, + "duration": 996, + "tags": [ + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "cfd0ece4-15ea-9e17-b6da-6bad9c390c59" + }, + { + "key": "response_size", + "type": "string", + "value": "358" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "http.url", + "type": "string", + "value": "http://reviews:9080/reviews/0" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p5", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "13121a0bff1754358d4ae5dd2e9655f2", + "spanID": "d0c4ff20cdeb2010", + "operationName": "productpage.bookinfo.svc.cluster.local:9080/productpage", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "13121a0bff1754358d4ae5dd2e9655f2", + "spanID": "8d4ae5dd2e9655f2" + } + ], + "startTime": 1708936194376591, + "duration": 8561, + "tags": [ + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "response_size", + "type": "string", + "value": "4294" + }, + { + "key": "http.url", + "type": "string", + "value": "http://192.168.49.2:31793/productpage" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "68662b95-d30e-9818-9ced-215ff13a80a4" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "peer.address", + "type": "string", + "value": "envoy://internal_client_address/" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p2", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "13121a0bff1754358d4ae5dd2e9655f2", + "spanID": "ea6be86c64afad5f", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "13121a0bff1754358d4ae5dd2e9655f2", + "spanID": "d0c4ff20cdeb2010" + } + ], + "startTime": 1708936194379493, + "duration": 1203, + "tags": [ + { + "key": "guid:x-request-id", + "type": "string", + "value": "68662b95-d30e-9818-9ced-215ff13a80a4" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p3", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "13121a0bff1754358d4ae5dd2e9655f2", + "spanID": "e5b3ce64723d0827", + "operationName": "reviews.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "13121a0bff1754358d4ae5dd2e9655f2", + "spanID": "d0c4ff20cdeb2010" + } + ], + "startTime": 1708936194382878, + "duration": 1007, + "tags": [ + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "response_size", + "type": "string", + "value": "358" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "http.url", + "type": "string", + "value": "http://reviews:9080/reviews/0" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "68662b95-d30e-9818-9ced-215ff13a80a4" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p5", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "217cc8811b1f69886009762f8b231e95", + "spanID": "3ef57d51e79a802f", + "operationName": "productpage.bookinfo.svc.cluster.local:9080/productpage", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "217cc8811b1f69886009762f8b231e95", + "spanID": "6009762f8b231e95" + } + ], + "startTime": 1708936193376614, + "duration": 8717, + "tags": [ + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "1f6ff72c-6cb6-958e-973d-4572aa78ca56" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "response_size", + "type": "string", + "value": "4294" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "http.url", + "type": "string", + "value": "http://192.168.49.2:31793/productpage" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "peer.address", + "type": "string", + "value": "envoy://internal_client_address/" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p2", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "217cc8811b1f69886009762f8b231e95", + "spanID": "ec21c37f85c9bb74", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "217cc8811b1f69886009762f8b231e95", + "spanID": "3ef57d51e79a802f" + } + ], + "startTime": 1708936193379635, + "duration": 1267, + "tags": [ + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "1f6ff72c-6cb6-958e-973d-4572aa78ca56" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p3", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "217cc8811b1f69886009762f8b231e95", + "spanID": "5d9a224eb8d1ad1f", + "operationName": "reviews.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "217cc8811b1f69886009762f8b231e95", + "spanID": "3ef57d51e79a802f" + } + ], + "startTime": 1708936193383157, + "duration": 920, + "tags": [ + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "http.url", + "type": "string", + "value": "http://reviews:9080/reviews/0" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "response_size", + "type": "string", + "value": "358" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "1f6ff72c-6cb6-958e-973d-4572aa78ca56" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p5", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "643cc0f6e5392dd9df8b05e8c0e67917", + "spanID": "45e96ec3e2b18a13", + "operationName": "productpage.bookinfo.svc.cluster.local:9080/productpage", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "643cc0f6e5392dd9df8b05e8c0e67917", + "spanID": "df8b05e8c0e67917" + } + ], + "startTime": 1708936190377548, + "duration": 16067, + "tags": [ + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "peer.address", + "type": "string", + "value": "envoy://internal_client_address/" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "http.url", + "type": "string", + "value": "http://192.168.49.2:31793/productpage" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "3383338f-b28e-9fc5-b7c4-792165378e56" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "response_size", + "type": "string", + "value": "5289" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p2", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "643cc0f6e5392dd9df8b05e8c0e67917", + "spanID": "d1bcd472bfb6c01e", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "643cc0f6e5392dd9df8b05e8c0e67917", + "spanID": "45e96ec3e2b18a13" + } + ], + "startTime": 1708936190383636, + "duration": 1653, + "tags": [ + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "3383338f-b28e-9fc5-b7c4-792165378e56" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p3", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "643cc0f6e5392dd9df8b05e8c0e67917", + "spanID": "bc89c6dbdd26dd5f", + "operationName": "reviews.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "643cc0f6e5392dd9df8b05e8c0e67917", + "spanID": "45e96ec3e2b18a13" + } + ], + "startTime": 1708936190388174, + "duration": 3645, + "tags": [ + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "3383338f-b28e-9fc5-b7c4-792165378e56" + }, + { + "key": "response_size", + "type": "string", + "value": "437" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "http.url", + "type": "string", + "value": "http://reviews:9080/reviews/0" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p5", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "4a172c8fb80da63d15834c2e339bfbed", + "spanID": "0678c3f4a308835d", + "operationName": "productpage.bookinfo.svc.cluster.local:9080/productpage", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "4a172c8fb80da63d15834c2e339bfbed", + "spanID": "15834c2e339bfbed" + } + ], + "startTime": 1708936189376456, + "duration": 12069, + "tags": [ + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "984ada7c-7e93-917a-8920-e4088fead5fe" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "http.url", + "type": "string", + "value": "http://192.168.49.2:31793/productpage" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "peer.address", + "type": "string", + "value": "envoy://internal_client_address/" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "response_size", + "type": "string", + "value": "5289" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p2", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "4a172c8fb80da63d15834c2e339bfbed", + "spanID": "bb200ee9a657cf2c", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "4a172c8fb80da63d15834c2e339bfbed", + "spanID": "0678c3f4a308835d" + } + ], + "startTime": 1708936189379380, + "duration": 1390, + "tags": [ + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "984ada7c-7e93-917a-8920-e4088fead5fe" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p3", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "4a172c8fb80da63d15834c2e339bfbed", + "spanID": "8ec0ae0a40ddee6b", + "operationName": "reviews.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "4a172c8fb80da63d15834c2e339bfbed", + "spanID": "0678c3f4a308835d" + } + ], + "startTime": 1708936189383286, + "duration": 2921, + "tags": [ + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "http.url", + "type": "string", + "value": "http://reviews:9080/reviews/0" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "984ada7c-7e93-917a-8920-e4088fead5fe" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "response_size", + "type": "string", + "value": "437" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p5", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "beadd6993690665fa2b01a138c73e10a", + "spanID": "5b52ad66a4cdce54", + "operationName": "productpage.bookinfo.svc.cluster.local:9080/productpage", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "beadd6993690665fa2b01a138c73e10a", + "spanID": "a2b01a138c73e10a" + } + ], + "startTime": 1708936192376774, + "duration": 10540, + "tags": [ + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "peer.address", + "type": "string", + "value": "envoy://internal_client_address/" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "8d1e3f4a-e897-98ca-98ec-90da83a10fe2" + }, + { + "key": "http.url", + "type": "string", + "value": "http://192.168.49.2:31793/productpage" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "response_size", + "type": "string", + "value": "4294" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p2", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "beadd6993690665fa2b01a138c73e10a", + "spanID": "418a10142c36cc0a", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "beadd6993690665fa2b01a138c73e10a", + "spanID": "5b52ad66a4cdce54" + } + ], + "startTime": 1708936192380812, + "duration": 1414, + "tags": [ + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "8d1e3f4a-e897-98ca-98ec-90da83a10fe2" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p3", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "beadd6993690665fa2b01a138c73e10a", + "spanID": "bf8c20e6635fc4b8", + "operationName": "reviews.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "beadd6993690665fa2b01a138c73e10a", + "spanID": "5b52ad66a4cdce54" + } + ], + "startTime": 1708936192384949, + "duration": 987, + "tags": [ + { + "key": "guid:x-request-id", + "type": "string", + "value": "8d1e3f4a-e897-98ca-98ec-90da83a10fe2" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "response_size", + "type": "string", + "value": "358" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "http.url", + "type": "string", + "value": "http://reviews:9080/reviews/0" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p5", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "94484a77d1f3abb3c5305124c860900f", + "spanID": "80d80695fdec8610", + "operationName": "productpage.bookinfo.svc.cluster.local:9080/productpage", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "94484a77d1f3abb3c5305124c860900f", + "spanID": "c5305124c860900f" + } + ], + "startTime": 1708936191376589, + "duration": 8786, + "tags": [ + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "http.url", + "type": "string", + "value": "http://192.168.49.2:31793/productpage" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "peer.address", + "type": "string", + "value": "envoy://internal_client_address/" + }, + { + "key": "response_size", + "type": "string", + "value": "4294" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "ea04b37e-7eaa-97f0-8018-ecc592a6f4f6" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p2", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "94484a77d1f3abb3c5305124c860900f", + "spanID": "ae94e95d8f88b714", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "94484a77d1f3abb3c5305124c860900f", + "spanID": "80d80695fdec8610" + } + ], + "startTime": 1708936191379369, + "duration": 1624, + "tags": [ + { + "key": "guid:x-request-id", + "type": "string", + "value": "ea04b37e-7eaa-97f0-8018-ecc592a6f4f6" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p3", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "94484a77d1f3abb3c5305124c860900f", + "spanID": "02e2d25a14f551a6", + "operationName": "reviews.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "94484a77d1f3abb3c5305124c860900f", + "spanID": "80d80695fdec8610" + } + ], + "startTime": 1708936191383195, + "duration": 873, + "tags": [ + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "ea04b37e-7eaa-97f0-8018-ecc592a6f4f6" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "http.url", + "type": "string", + "value": "http://reviews:9080/reviews/0" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "response_size", + "type": "string", + "value": "358" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p5", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "9b0c948d1587e2be1a1a7ff58d5ac745", + "spanID": "a104674d3a746745", + "operationName": "productpage.bookinfo.svc.cluster.local:9080/productpage", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "9b0c948d1587e2be1a1a7ff58d5ac745", + "spanID": "1a1a7ff58d5ac745" + } + ], + "startTime": 1708936187377038, + "duration": 13588, + "tags": [ + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "b1dedd36-4ed3-9534-a15d-c8b9ebe0006c" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "http.url", + "type": "string", + "value": "http://192.168.49.2:31793/productpage" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "response_size", + "type": "string", + "value": "5289" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "peer.address", + "type": "string", + "value": "envoy://internal_client_address/" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p2", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "9b0c948d1587e2be1a1a7ff58d5ac745", + "spanID": "c1d9d14357c61886", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "9b0c948d1587e2be1a1a7ff58d5ac745", + "spanID": "a104674d3a746745" + } + ], + "startTime": 1708936187381437, + "duration": 1474, + "tags": [ + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "b1dedd36-4ed3-9534-a15d-c8b9ebe0006c" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p3", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "9b0c948d1587e2be1a1a7ff58d5ac745", + "spanID": "785c080d3525952e", + "operationName": "reviews.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "9b0c948d1587e2be1a1a7ff58d5ac745", + "spanID": "a104674d3a746745" + } + ], + "startTime": 1708936187385698, + "duration": 3229, + "tags": [ + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "response_size", + "type": "string", + "value": "437" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "b1dedd36-4ed3-9534-a15d-c8b9ebe0006c" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "http.url", + "type": "string", + "value": "http://reviews:9080/reviews/0" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p5", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "077ab779868da060d887fe8ab0580e2a", + "spanID": "e089be1cb383ec44", + "operationName": "productpage.bookinfo.svc.cluster.local:9080/productpage", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "077ab779868da060d887fe8ab0580e2a", + "spanID": "d887fe8ab0580e2a" + } + ], + "startTime": 1708934034898231, + "duration": 13878, + "tags": [ + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "peer.address", + "type": "string", + "value": "envoy://internal_client_address/" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "response_size", + "type": "string", + "value": "4294" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "http.url", + "type": "string", + "value": "http://192.168.49.2:31793/productpage" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "ab7a6c8e-03d7-9b7d-b566-7645cda8ab12" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p2", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 2 + }, + { + "traceID": "bc48e08123a75ab7925eebb5e60a0457", + "spanID": "442f074bbc55c724", + "operationName": "productpage.bookinfo.svc.cluster.local:9080/productpage", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "bc48e08123a75ab7925eebb5e60a0457", + "spanID": "925eebb5e60a0457" + } + ], + "startTime": 1708934030899294, + "duration": 19141, + "tags": [ + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "response_size", + "type": "string", + "value": "5294" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "http.url", + "type": "string", + "value": "http://192.168.49.2:31793/productpage" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "peer.address", + "type": "string", + "value": "envoy://internal_client_address/" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "8670b084-be5c-9040-af05-61ef21e1f836" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p2", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "bc48e08123a75ab7925eebb5e60a0457", + "spanID": "04dcbb09d2f69b26", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "bc48e08123a75ab7925eebb5e60a0457", + "spanID": "442f074bbc55c724" + } + ], + "startTime": 1708934030909019, + "duration": 1522, + "tags": [ + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "8670b084-be5c-9040-af05-61ef21e1f836" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p3", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "bc48e08123a75ab7925eebb5e60a0457", + "spanID": "ff2cc52bed8eafb0", + "operationName": "reviews.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "bc48e08123a75ab7925eebb5e60a0457", + "spanID": "442f074bbc55c724" + } + ], + "startTime": 1708934030913312, + "duration": 2940, + "tags": [ + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "response_size", + "type": "string", + "value": "442" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "http.url", + "type": "string", + "value": "http://reviews:9080/reviews/0" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "8670b084-be5c-9040-af05-61ef21e1f836" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p5", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "0fb9ced8e58cfaf678e84dd282523fec", + "spanID": "4c10e65e75605eca", + "operationName": "productpage.bookinfo.svc.cluster.local:9080/productpage", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "0fb9ced8e58cfaf678e84dd282523fec", + "spanID": "78e84dd282523fec" + } + ], + "startTime": 1708934026899105, + "duration": 15095, + "tags": [ + { + "key": "response_size", + "type": "string", + "value": "4294" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "485370a1-caaa-94c9-930d-9aefc2d1f2e3" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "peer.address", + "type": "string", + "value": "envoy://internal_client_address/" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "http.url", + "type": "string", + "value": "http://192.168.49.2:31793/productpage" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p2", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 2 + }, + { + "traceID": "8e0e1e162b895a0cbb231e6754a40a4d", + "spanID": "daa530ef7111fedd", + "operationName": "productpage.bookinfo.svc.cluster.local:9080/productpage", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "8e0e1e162b895a0cbb231e6754a40a4d", + "spanID": "bb231e6754a40a4d" + } + ], + "startTime": 1708934033898458, + "duration": 20443, + "tags": [ + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "http.url", + "type": "string", + "value": "http://192.168.49.2:31793/productpage" + }, + { + "key": "peer.address", + "type": "string", + "value": "envoy://internal_client_address/" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "response_size", + "type": "string", + "value": "5294" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "4ab66995-eced-9233-8f3b-553b5f3ba8b7" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p2", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "8e0e1e162b895a0cbb231e6754a40a4d", + "spanID": "f4f355f9ec7a0bf7", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "8e0e1e162b895a0cbb231e6754a40a4d", + "spanID": "daa530ef7111fedd" + } + ], + "startTime": 1708934033903971, + "duration": 2327, + "tags": [ + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "4ab66995-eced-9233-8f3b-553b5f3ba8b7" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p3", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "8e0e1e162b895a0cbb231e6754a40a4d", + "spanID": "34d332596daf6912", + "operationName": "reviews.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "8e0e1e162b895a0cbb231e6754a40a4d", + "spanID": "daa530ef7111fedd" + } + ], + "startTime": 1708934033911110, + "duration": 5180, + "tags": [ + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "http.url", + "type": "string", + "value": "http://reviews:9080/reviews/0" + }, + { + "key": "response_size", + "type": "string", + "value": "442" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "4ab66995-eced-9233-8f3b-553b5f3ba8b7" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p5", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "0ce2364b2518cd64e9ca84d2188b3089", + "spanID": "b3ee7daedac71002", + "operationName": "productpage.bookinfo.svc.cluster.local:9080/productpage", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "0ce2364b2518cd64e9ca84d2188b3089", + "spanID": "e9ca84d2188b3089" + } + ], + "startTime": 1708934032899052, + "duration": 20442, + "tags": [ + { + "key": "peer.address", + "type": "string", + "value": "envoy://internal_client_address/" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "http.url", + "type": "string", + "value": "http://192.168.49.2:31793/productpage" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "5e95fdc0-87ef-9a0f-bff2-090bceff0975" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "response_size", + "type": "string", + "value": "5294" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p2", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 2 + }, + { + "traceID": "bddc509357bdaa308a2ffd082e7bb248", + "spanID": "3940601871a28687", + "operationName": "productpage.bookinfo.svc.cluster.local:9080/productpage", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "bddc509357bdaa308a2ffd082e7bb248", + "spanID": "8a2ffd082e7bb248" + } + ], + "startTime": 1708934031899173, + "duration": 14678, + "tags": [ + { + "key": "guid:x-request-id", + "type": "string", + "value": "52ca91ec-e9f6-911d-b790-a3f55ef53eba" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "http.url", + "type": "string", + "value": "http://192.168.49.2:31793/productpage" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "response_size", + "type": "string", + "value": "4294" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "peer.address", + "type": "string", + "value": "envoy://internal_client_address/" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p2", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "bddc509357bdaa308a2ffd082e7bb248", + "spanID": "b2801364323e1126", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "bddc509357bdaa308a2ffd082e7bb248", + "spanID": "3940601871a28687" + } + ], + "startTime": 1708934031906981, + "duration": 1510, + "tags": [ + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "52ca91ec-e9f6-911d-b790-a3f55ef53eba" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p3", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "bddc509357bdaa308a2ffd082e7bb248", + "spanID": "5158a0a5e8752ea0", + "operationName": "reviews.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "bddc509357bdaa308a2ffd082e7bb248", + "spanID": "3940601871a28687" + } + ], + "startTime": 1708934031911331, + "duration": 1061, + "tags": [ + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "52ca91ec-e9f6-911d-b790-a3f55ef53eba" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "response_size", + "type": "string", + "value": "358" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "http.url", + "type": "string", + "value": "http://reviews:9080/reviews/0" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p5", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "e3501761322628e54ebe7e5c2cebb08b", + "spanID": "0b46b69d100bbba2", + "operationName": "productpage.bookinfo.svc.cluster.local:9080/productpage", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "e3501761322628e54ebe7e5c2cebb08b", + "spanID": "4ebe7e5c2cebb08b" + } + ], + "startTime": 1708934029898145, + "duration": 11296, + "tags": [ + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "response_size", + "type": "string", + "value": "5294" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "92bf73e4-d4cd-967b-9980-559f2af6e581" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "http.url", + "type": "string", + "value": "http://192.168.49.2:31793/productpage" + }, + { + "key": "peer.address", + "type": "string", + "value": "envoy://internal_client_address/" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p2", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "e3501761322628e54ebe7e5c2cebb08b", + "spanID": "2dc92c5ddaa5756a", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "e3501761322628e54ebe7e5c2cebb08b", + "spanID": "0b46b69d100bbba2" + } + ], + "startTime": 1708934029901203, + "duration": 1239, + "tags": [ + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "92bf73e4-d4cd-967b-9980-559f2af6e581" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p3", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "e3501761322628e54ebe7e5c2cebb08b", + "spanID": "babb2aafa227ce06", + "operationName": "reviews.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "e3501761322628e54ebe7e5c2cebb08b", + "spanID": "0b46b69d100bbba2" + } + ], + "startTime": 1708934029904759, + "duration": 3155, + "tags": [ + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "http.url", + "type": "string", + "value": "http://reviews:9080/reviews/0" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "response_size", + "type": "string", + "value": "442" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "92bf73e4-d4cd-967b-9980-559f2af6e581" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p5", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "4744956a29a0b1373403d24eb45a4eb0", + "spanID": "39fea0853c0a57f8", + "operationName": "productpage.bookinfo.svc.cluster.local:9080/productpage", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "4744956a29a0b1373403d24eb45a4eb0", + "spanID": "3403d24eb45a4eb0" + } + ], + "startTime": 1708934028898453, + "duration": 14418, + "tags": [ + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "peer.address", + "type": "string", + "value": "envoy://internal_client_address/" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "6117da20-3dc5-99f5-8869-1ae75c1d0b86" + }, + { + "key": "response_size", + "type": "string", + "value": "4294" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "http.url", + "type": "string", + "value": "http://192.168.49.2:31793/productpage" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p2", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "4744956a29a0b1373403d24eb45a4eb0", + "spanID": "3e4971e7dbee1ca4", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "4744956a29a0b1373403d24eb45a4eb0", + "spanID": "39fea0853c0a57f8" + } + ], + "startTime": 1708934028903800, + "duration": 2543, + "tags": [ + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "6117da20-3dc5-99f5-8869-1ae75c1d0b86" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p3", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "4744956a29a0b1373403d24eb45a4eb0", + "spanID": "f63821e99aac1e79", + "operationName": "reviews.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "4744956a29a0b1373403d24eb45a4eb0", + "spanID": "39fea0853c0a57f8" + } + ], + "startTime": 1708934028910290, + "duration": 1109, + "tags": [ + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "response_size", + "type": "string", + "value": "358" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "6117da20-3dc5-99f5-8869-1ae75c1d0b86" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "http.url", + "type": "string", + "value": "http://reviews:9080/reviews/0" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p5", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "3b8b65065a0679d0779fae29a5eb188f", + "spanID": "d7906b2829f75579", + "operationName": "productpage.bookinfo.svc.cluster.local:9080/productpage", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "3b8b65065a0679d0779fae29a5eb188f", + "spanID": "779fae29a5eb188f" + } + ], + "startTime": 1708934027898114, + "duration": 9064, + "tags": [ + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "response_size", + "type": "string", + "value": "4294" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "http.url", + "type": "string", + "value": "http://192.168.49.2:31793/productpage" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "25f24dc1-4714-938f-829c-0f857cbfafcc" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "peer.address", + "type": "string", + "value": "envoy://internal_client_address/" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p2", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "3b8b65065a0679d0779fae29a5eb188f", + "spanID": "148168d810c1e176", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "3b8b65065a0679d0779fae29a5eb188f", + "spanID": "d7906b2829f75579" + } + ], + "startTime": 1708934027901120, + "duration": 1267, + "tags": [ + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "25f24dc1-4714-938f-829c-0f857cbfafcc" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p3", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "3b8b65065a0679d0779fae29a5eb188f", + "spanID": "e9cbe90093597825", + "operationName": "reviews.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "3b8b65065a0679d0779fae29a5eb188f", + "spanID": "d7906b2829f75579" + } + ], + "startTime": 1708934027904796, + "duration": 980, + "tags": [ + { + "key": "response_size", + "type": "string", + "value": "358" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "25f24dc1-4714-938f-829c-0f857cbfafcc" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "http.url", + "type": "string", + "value": "http://reviews:9080/reviews/0" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p5", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "f1760e2ac82eb67287ebfbab2b03b07f", + "spanID": "41a7813c261274d0", + "operationName": "productpage.bookinfo.svc.cluster.local:9080/productpage", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "f1760e2ac82eb67287ebfbab2b03b07f", + "spanID": "87ebfbab2b03b07f" + } + ], + "startTime": 1708934025898112, + "duration": 9136, + "tags": [ + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "http.url", + "type": "string", + "value": "http://192.168.49.2:31793/productpage" + }, + { + "key": "response_size", + "type": "string", + "value": "4294" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "peer.address", + "type": "string", + "value": "envoy://internal_client_address/" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "ae9848f8-b223-9e43-bc06-703adf3d16b7" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p2", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "f1760e2ac82eb67287ebfbab2b03b07f", + "spanID": "c249db9100b46027", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "f1760e2ac82eb67287ebfbab2b03b07f", + "spanID": "41a7813c261274d0" + } + ], + "startTime": 1708934025900828, + "duration": 1590, + "tags": [ + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "ae9848f8-b223-9e43-bc06-703adf3d16b7" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p3", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "f1760e2ac82eb67287ebfbab2b03b07f", + "spanID": "afc1841bf842754c", + "operationName": "reviews.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "f1760e2ac82eb67287ebfbab2b03b07f", + "spanID": "41a7813c261274d0" + } + ], + "startTime": 1708934025904686, + "duration": 887, + "tags": [ + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "ae9848f8-b223-9e43-bc06-703adf3d16b7" + }, + { + "key": "http.url", + "type": "string", + "value": "http://reviews:9080/reviews/0" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "response_size", + "type": "string", + "value": "358" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p5", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "980874b3b561cf285dc6ba13aa719862", + "spanID": "ff8442c2e88fd74a", + "operationName": "productpage.bookinfo.svc.cluster.local:9080/productpage", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "980874b3b561cf285dc6ba13aa719862", + "spanID": "5dc6ba13aa719862" + } + ], + "startTime": 1708937268376442, + "duration": 10965, + "tags": [ + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "peer.address", + "type": "string", + "value": "envoy://internal_client_address/" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "response_size", + "type": "string", + "value": "5289" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "0808b41d-d0f4-93cd-a847-e09fdead03c1" + }, + { + "key": "http.url", + "type": "string", + "value": "http://192.168.49.2:31793/productpage" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p2", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "980874b3b561cf285dc6ba13aa719862", + "spanID": "7a10591d5e86ce74", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "980874b3b561cf285dc6ba13aa719862", + "spanID": "ff8442c2e88fd74a" + } + ], + "startTime": 1708937268379427, + "duration": 1246, + "tags": [ + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "0808b41d-d0f4-93cd-a847-e09fdead03c1" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p3", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "980874b3b561cf285dc6ba13aa719862", + "spanID": "aed1fa7740e39504", + "operationName": "reviews.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "980874b3b561cf285dc6ba13aa719862", + "spanID": "ff8442c2e88fd74a" + } + ], + "startTime": 1708937268383043, + "duration": 2904, + "tags": [ + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "0808b41d-d0f4-93cd-a847-e09fdead03c1" + }, + { + "key": "response_size", + "type": "string", + "value": "437" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "http.url", + "type": "string", + "value": "http://reviews:9080/reviews/0" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p5", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "4f957a617438f3f90747356ef834b3ac", + "spanID": "78ed3c3b6597d851", + "operationName": "productpage.bookinfo.svc.cluster.local:9080/productpage", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "4f957a617438f3f90747356ef834b3ac", + "spanID": "0747356ef834b3ac" + } + ], + "startTime": 1708937267377540, + "duration": 23558, + "tags": [ + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "peer.address", + "type": "string", + "value": "envoy://internal_client_address/" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "response_size", + "type": "string", + "value": "5294" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "f338e37e-4c34-9a2a-97e8-07f7cbbab2a1" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "http.url", + "type": "string", + "value": "http://192.168.49.2:31793/productpage" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p2", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "4f957a617438f3f90747356ef834b3ac", + "spanID": "098b1851f9feea3c", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "4f957a617438f3f90747356ef834b3ac", + "spanID": "78ed3c3b6597d851" + } + ], + "startTime": 1708937267387671, + "duration": 4035, + "tags": [ + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "f338e37e-4c34-9a2a-97e8-07f7cbbab2a1" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p3", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "4f957a617438f3f90747356ef834b3ac", + "spanID": "05eda1b3b5af774e", + "operationName": "reviews.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "4f957a617438f3f90747356ef834b3ac", + "spanID": "78ed3c3b6597d851" + } + ], + "startTime": 1708937267396677, + "duration": 2967, + "tags": [ + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "f338e37e-4c34-9a2a-97e8-07f7cbbab2a1" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "http.url", + "type": "string", + "value": "http://reviews:9080/reviews/0" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "response_size", + "type": "string", + "value": "442" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p5", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "aef242c3f0ef23b42d51e713dfc5a293", + "spanID": "0ea09c6a8fa79cf8", + "operationName": "productpage.bookinfo.svc.cluster.local:9080/productpage", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "aef242c3f0ef23b42d51e713dfc5a293", + "spanID": "2d51e713dfc5a293" + } + ], + "startTime": 1708937266377536, + "duration": 17626, + "tags": [ + { + "key": "http.url", + "type": "string", + "value": "http://192.168.49.2:31793/productpage" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "peer.address", + "type": "string", + "value": "envoy://internal_client_address/" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "response_size", + "type": "string", + "value": "5294" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "fb2e2d67-8933-9fe1-b77c-9beaad9de376" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p2", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "aef242c3f0ef23b42d51e713dfc5a293", + "spanID": "6109ea8c90cad1a2", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "aef242c3f0ef23b42d51e713dfc5a293", + "spanID": "0ea09c6a8fa79cf8" + } + ], + "startTime": 1708937266384616, + "duration": 2039, + "tags": [ + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "fb2e2d67-8933-9fe1-b77c-9beaad9de376" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p3", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "aef242c3f0ef23b42d51e713dfc5a293", + "spanID": "7cd6063d9a5c3952", + "operationName": "reviews.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "aef242c3f0ef23b42d51e713dfc5a293", + "spanID": "0ea09c6a8fa79cf8" + } + ], + "startTime": 1708937266389897, + "duration": 3036, + "tags": [ + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "http.url", + "type": "string", + "value": "http://reviews:9080/reviews/0" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "fb2e2d67-8933-9fe1-b77c-9beaad9de376" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "response_size", + "type": "string", + "value": "442" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p5", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "235b6d12d7fb83b748d382eb0e7b225b", + "spanID": "f1aa8a5b6a8c3ed6", + "operationName": "productpage.bookinfo.svc.cluster.local:9080/productpage", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "235b6d12d7fb83b748d382eb0e7b225b", + "spanID": "48d382eb0e7b225b" + } + ], + "startTime": 1708937265376432, + "duration": 10260, + "tags": [ + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "response_size", + "type": "string", + "value": "5294" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "http.url", + "type": "string", + "value": "http://192.168.49.2:31793/productpage" + }, + { + "key": "peer.address", + "type": "string", + "value": "envoy://internal_client_address/" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "c7f7fdde-9cba-9941-b3c9-b8b820be4810" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p2", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "235b6d12d7fb83b748d382eb0e7b225b", + "spanID": "bff22a2dfebc3659", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "235b6d12d7fb83b748d382eb0e7b225b", + "spanID": "f1aa8a5b6a8c3ed6" + } + ], + "startTime": 1708937265379319, + "duration": 1192, + "tags": [ + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "c7f7fdde-9cba-9941-b3c9-b8b820be4810" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p3", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "235b6d12d7fb83b748d382eb0e7b225b", + "spanID": "017a328de624b513", + "operationName": "reviews.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "235b6d12d7fb83b748d382eb0e7b225b", + "spanID": "f1aa8a5b6a8c3ed6" + } + ], + "startTime": 1708937265382699, + "duration": 2623, + "tags": [ + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "c7f7fdde-9cba-9941-b3c9-b8b820be4810" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "response_size", + "type": "string", + "value": "442" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "http.url", + "type": "string", + "value": "http://reviews:9080/reviews/0" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p5", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "cda6ec43ec9174e97be6c9a2e1caf135", + "spanID": "ec0fa755d44ba7fc", + "operationName": "productpage.bookinfo.svc.cluster.local:9080/productpage", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "cda6ec43ec9174e97be6c9a2e1caf135", + "spanID": "7be6c9a2e1caf135" + } + ], + "startTime": 1708937270376533, + "duration": 11411, + "tags": [ + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "peer.address", + "type": "string", + "value": "envoy://internal_client_address/" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "http.url", + "type": "string", + "value": "http://192.168.49.2:31793/productpage" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "ce96c402-c9c9-9371-ad03-717187a86a8b" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "response_size", + "type": "string", + "value": "5294" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p2", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "cda6ec43ec9174e97be6c9a2e1caf135", + "spanID": "4a186d760abcc996", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "cda6ec43ec9174e97be6c9a2e1caf135", + "spanID": "ec0fa755d44ba7fc" + } + ], + "startTime": 1708937270379631, + "duration": 1317, + "tags": [ + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "ce96c402-c9c9-9371-ad03-717187a86a8b" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p3", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "cda6ec43ec9174e97be6c9a2e1caf135", + "spanID": "50d11e7899d76d2b", + "operationName": "reviews.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "cda6ec43ec9174e97be6c9a2e1caf135", + "spanID": "ec0fa755d44ba7fc" + } + ], + "startTime": 1708937270383907, + "duration": 2510, + "tags": [ + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "http.url", + "type": "string", + "value": "http://reviews:9080/reviews/0" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "response_size", + "type": "string", + "value": "442" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "ce96c402-c9c9-9371-ad03-717187a86a8b" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p5", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "c29fee442c7bf495b588bc4437949b9a", + "spanID": "36533e154e9bed3d", + "operationName": "productpage.bookinfo.svc.cluster.local:9080/productpage", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "c29fee442c7bf495b588bc4437949b9a", + "spanID": "b588bc4437949b9a" + } + ], + "startTime": 1708937273378284, + "duration": 31143, + "tags": [ + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "1d3ccdfe-4f86-9177-9572-1496db565c8b" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "response_size", + "type": "string", + "value": "4294" + }, + { + "key": "peer.address", + "type": "string", + "value": "envoy://internal_client_address/" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "http.url", + "type": "string", + "value": "http://192.168.49.2:31793/productpage" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p2", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "c29fee442c7bf495b588bc4437949b9a", + "spanID": "cd5967984ecae512", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "c29fee442c7bf495b588bc4437949b9a", + "spanID": "36533e154e9bed3d" + } + ], + "startTime": 1708937273388688, + "duration": 4040, + "tags": [ + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "1d3ccdfe-4f86-9177-9572-1496db565c8b" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p3", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "c29fee442c7bf495b588bc4437949b9a", + "spanID": "0652251af6623647", + "operationName": "reviews.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "c29fee442c7bf495b588bc4437949b9a", + "spanID": "36533e154e9bed3d" + } + ], + "startTime": 1708937273401903, + "duration": 2988, + "tags": [ + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "http.url", + "type": "string", + "value": "http://reviews:9080/reviews/0" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "1d3ccdfe-4f86-9177-9572-1496db565c8b" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "response_size", + "type": "string", + "value": "358" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p5", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "b7a7f6727f95d16877defc37153616ab", + "spanID": "7555974a52f34538", + "operationName": "productpage.bookinfo.svc.cluster.local:9080/productpage", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "b7a7f6727f95d16877defc37153616ab", + "spanID": "77defc37153616ab" + } + ], + "startTime": 1708937272377550, + "duration": 17353, + "tags": [ + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "9ad639f4-0ecf-927c-93c7-1dcc97b649fa" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "response_size", + "type": "string", + "value": "5294" + }, + { + "key": "http.url", + "type": "string", + "value": "http://192.168.49.2:31793/productpage" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "peer.address", + "type": "string", + "value": "envoy://internal_client_address/" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p2", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "b7a7f6727f95d16877defc37153616ab", + "spanID": "f964fd1c32b04ef9", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "b7a7f6727f95d16877defc37153616ab", + "spanID": "7555974a52f34538" + } + ], + "startTime": 1708937272385211, + "duration": 1486, + "tags": [ + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "9ad639f4-0ecf-927c-93c7-1dcc97b649fa" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p3", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "b7a7f6727f95d16877defc37153616ab", + "spanID": "52e55489ab62dcd5", + "operationName": "reviews.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "b7a7f6727f95d16877defc37153616ab", + "spanID": "7555974a52f34538" + } + ], + "startTime": 1708937272389789, + "duration": 3345, + "tags": [ + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "http.url", + "type": "string", + "value": "http://reviews:9080/reviews/0" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "9ad639f4-0ecf-927c-93c7-1dcc97b649fa" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "response_size", + "type": "string", + "value": "442" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p5", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "51880aaec0abcac7a1cd7bc2e8a60264", + "spanID": "0c1f09f7a222eb98", + "operationName": "productpage.bookinfo.svc.cluster.local:9080/productpage", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "51880aaec0abcac7a1cd7bc2e8a60264", + "spanID": "a1cd7bc2e8a60264" + } + ], + "startTime": 1708937271377672, + "duration": 19636, + "tags": [ + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "http.url", + "type": "string", + "value": "http://192.168.49.2:31793/productpage" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "response_size", + "type": "string", + "value": "5289" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "c6edb720-79c7-9e8b-a74e-92fa5e447d9d" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "peer.address", + "type": "string", + "value": "envoy://internal_client_address/" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p2", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "51880aaec0abcac7a1cd7bc2e8a60264", + "spanID": "52d93b4f4c795179", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "51880aaec0abcac7a1cd7bc2e8a60264", + "spanID": "0c1f09f7a222eb98" + } + ], + "startTime": 1708937271386725, + "duration": 2121, + "tags": [ + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "c6edb720-79c7-9e8b-a74e-92fa5e447d9d" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p3", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "51880aaec0abcac7a1cd7bc2e8a60264", + "spanID": "82dcede6ad1470bd", + "operationName": "reviews.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "51880aaec0abcac7a1cd7bc2e8a60264", + "spanID": "0c1f09f7a222eb98" + } + ], + "startTime": 1708937271391822, + "duration": 3787, + "tags": [ + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "http.url", + "type": "string", + "value": "http://reviews:9080/reviews/0" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "c6edb720-79c7-9e8b-a74e-92fa5e447d9d" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "response_size", + "type": "string", + "value": "437" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p5", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "1b5b63a058a116c0ad8f43410097c756", + "spanID": "8f84949862402420", + "operationName": "productpage.bookinfo.svc.cluster.local:9080/productpage", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "1b5b63a058a116c0ad8f43410097c756", + "spanID": "ad8f43410097c756" + } + ], + "startTime": 1708937269376689, + "duration": 13463, + "tags": [ + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "peer.address", + "type": "string", + "value": "envoy://internal_client_address/" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "http.url", + "type": "string", + "value": "http://192.168.49.2:31793/productpage" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "response_size", + "type": "string", + "value": "5289" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "416febd1-66a7-9610-99a6-c86724881cb6" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p2", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "1b5b63a058a116c0ad8f43410097c756", + "spanID": "73f7e887e5e247d3", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "1b5b63a058a116c0ad8f43410097c756", + "spanID": "8f84949862402420" + } + ], + "startTime": 1708937269380106, + "duration": 1454, + "tags": [ + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "416febd1-66a7-9610-99a6-c86724881cb6" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p3", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "1b5b63a058a116c0ad8f43410097c756", + "spanID": "b85f7d77200c73b0", + "operationName": "reviews.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "1b5b63a058a116c0ad8f43410097c756", + "spanID": "8f84949862402420" + } + ], + "startTime": 1708937269384401, + "duration": 3547, + "tags": [ + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "http.url", + "type": "string", + "value": "http://reviews:9080/reviews/0" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "response_size", + "type": "string", + "value": "437" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "416febd1-66a7-9610-99a6-c86724881cb6" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p5", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "4cd15a179c0f853b3d97e7c40226a233", + "spanID": "954ab7fba2265048", + "operationName": "productpage.bookinfo.svc.cluster.local:9080/productpage", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "4cd15a179c0f853b3d97e7c40226a233", + "spanID": "3d97e7c40226a233" + } + ], + "startTime": 1708937274376851, + "duration": 15865, + "tags": [ + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "response_size", + "type": "string", + "value": "4294" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "peer.address", + "type": "string", + "value": "envoy://internal_client_address/" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "http.url", + "type": "string", + "value": "http://192.168.49.2:31793/productpage" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "5efdb47e-049f-9f6e-a091-59d20b454fc1" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p2", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "4cd15a179c0f853b3d97e7c40226a233", + "spanID": "efb05f19e82f21a4", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "4cd15a179c0f853b3d97e7c40226a233", + "spanID": "954ab7fba2265048" + } + ], + "startTime": 1708937274381904, + "duration": 2483, + "tags": [ + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "5efdb47e-049f-9f6e-a091-59d20b454fc1" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p3", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "4cd15a179c0f853b3d97e7c40226a233", + "spanID": "2366ad39f06a2b74", + "operationName": "reviews.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "4cd15a179c0f853b3d97e7c40226a233", + "spanID": "954ab7fba2265048" + } + ], + "startTime": 1708937274389608, + "duration": 1137, + "tags": [ + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "5efdb47e-049f-9f6e-a091-59d20b454fc1" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "http.url", + "type": "string", + "value": "http://reviews:9080/reviews/0" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "response_size", + "type": "string", + "value": "358" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p5", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "47b3e82103c2429d012ffca40d593463", + "spanID": "5453f2d6f3fc7281", + "operationName": "productpage.bookinfo.svc.cluster.local:9080/productpage", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "47b3e82103c2429d012ffca40d593463", + "spanID": "012ffca40d593463" + } + ], + "startTime": 1708938349376664, + "duration": 11335, + "tags": [ + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "http.url", + "type": "string", + "value": "http://192.168.49.2:31793/productpage" + }, + { + "key": "response_size", + "type": "string", + "value": "5294" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "peer.address", + "type": "string", + "value": "envoy://internal_client_address/" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "ce58c2db-705b-9783-8fcc-2def9a4546f1" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p2", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "47b3e82103c2429d012ffca40d593463", + "spanID": "e1a6c41a33a85de8", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "47b3e82103c2429d012ffca40d593463", + "spanID": "5453f2d6f3fc7281" + } + ], + "startTime": 1708938349379823, + "duration": 1576, + "tags": [ + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "ce58c2db-705b-9783-8fcc-2def9a4546f1" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p3", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "47b3e82103c2429d012ffca40d593463", + "spanID": "1d973536e8e7a80a", + "operationName": "reviews.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "47b3e82103c2429d012ffca40d593463", + "spanID": "5453f2d6f3fc7281" + } + ], + "startTime": 1708938349383821, + "duration": 2769, + "tags": [ + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "http.url", + "type": "string", + "value": "http://reviews:9080/reviews/0" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "ce58c2db-705b-9783-8fcc-2def9a4546f1" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "response_size", + "type": "string", + "value": "442" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p5", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "1e4dd98d2ba5cd866f7f6545e0af1f10", + "spanID": "80188365cc9cff28", + "operationName": "productpage.bookinfo.svc.cluster.local:9080/productpage", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "1e4dd98d2ba5cd866f7f6545e0af1f10", + "spanID": "6f7f6545e0af1f10" + } + ], + "startTime": 1708938348377501, + "duration": 13613, + "tags": [ + { + "key": "guid:x-request-id", + "type": "string", + "value": "191d26b1-3075-9158-9033-b3fc7e7ab1f2" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "http.url", + "type": "string", + "value": "http://192.168.49.2:31793/productpage" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "response_size", + "type": "string", + "value": "4294" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "peer.address", + "type": "string", + "value": "envoy://internal_client_address/" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p2", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "1e4dd98d2ba5cd866f7f6545e0af1f10", + "spanID": "42156b53106621bd", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "1e4dd98d2ba5cd866f7f6545e0af1f10", + "spanID": "80188365cc9cff28" + } + ], + "startTime": 1708938348383370, + "duration": 1602, + "tags": [ + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "191d26b1-3075-9158-9033-b3fc7e7ab1f2" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p3", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "1e4dd98d2ba5cd866f7f6545e0af1f10", + "spanID": "d691f3843f0960f1", + "operationName": "reviews.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "1e4dd98d2ba5cd866f7f6545e0af1f10", + "spanID": "80188365cc9cff28" + } + ], + "startTime": 1708938348388433, + "duration": 1095, + "tags": [ + { + "key": "response_size", + "type": "string", + "value": "358" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "191d26b1-3075-9158-9033-b3fc7e7ab1f2" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "http.url", + "type": "string", + "value": "http://reviews:9080/reviews/0" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p5", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "89044da85ac92ba8c5ebfba411c96ca6", + "spanID": "29b978c6a60f4ab9", + "operationName": "productpage.bookinfo.svc.cluster.local:9080/productpage", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "89044da85ac92ba8c5ebfba411c96ca6", + "spanID": "c5ebfba411c96ca6" + } + ], + "startTime": 1708938347377486, + "duration": 28991, + "tags": [ + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "http.url", + "type": "string", + "value": "http://192.168.49.2:31793/productpage" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "3a785085-2f47-9118-b297-a12338450e82" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "response_size", + "type": "string", + "value": "4294" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "peer.address", + "type": "string", + "value": "envoy://internal_client_address/" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p2", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "89044da85ac92ba8c5ebfba411c96ca6", + "spanID": "375e38472fd45d9a", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "89044da85ac92ba8c5ebfba411c96ca6", + "spanID": "29b978c6a60f4ab9" + } + ], + "startTime": 1708938347387561, + "duration": 4056, + "tags": [ + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "3a785085-2f47-9118-b297-a12338450e82" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p3", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "89044da85ac92ba8c5ebfba411c96ca6", + "spanID": "6b02da72740b57df", + "operationName": "reviews.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "89044da85ac92ba8c5ebfba411c96ca6", + "spanID": "29b978c6a60f4ab9" + } + ], + "startTime": 1708938347400163, + "duration": 2932, + "tags": [ + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "3a785085-2f47-9118-b297-a12338450e82" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "http.url", + "type": "string", + "value": "http://reviews:9080/reviews/0" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "response_size", + "type": "string", + "value": "358" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p5", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "1f541d3f4bcc5d8af84d94617102bf84", + "spanID": "cb0dae5ba5360d9e", + "operationName": "productpage.bookinfo.svc.cluster.local:9080/productpage", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "1f541d3f4bcc5d8af84d94617102bf84", + "spanID": "f84d94617102bf84" + } + ], + "startTime": 1708938346376343, + "duration": 9250, + "tags": [ + { + "key": "guid:x-request-id", + "type": "string", + "value": "a3b4e32c-afa4-998d-9149-9e5d377165fc" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "peer.address", + "type": "string", + "value": "envoy://internal_client_address/" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "response_size", + "type": "string", + "value": "4294" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "http.url", + "type": "string", + "value": "http://192.168.49.2:31793/productpage" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p2", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "1f541d3f4bcc5d8af84d94617102bf84", + "spanID": "e628dbd97acbeb09", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "1f541d3f4bcc5d8af84d94617102bf84", + "spanID": "cb0dae5ba5360d9e" + } + ], + "startTime": 1708938346379231, + "duration": 1654, + "tags": [ + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "a3b4e32c-afa4-998d-9149-9e5d377165fc" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p3", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "1f541d3f4bcc5d8af84d94617102bf84", + "spanID": "15cf16836b87b182", + "operationName": "reviews.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "1f541d3f4bcc5d8af84d94617102bf84", + "spanID": "cb0dae5ba5360d9e" + } + ], + "startTime": 1708938346383513, + "duration": 854, + "tags": [ + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "response_size", + "type": "string", + "value": "358" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "http.url", + "type": "string", + "value": "http://reviews:9080/reviews/0" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "a3b4e32c-afa4-998d-9149-9e5d377165fc" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p5", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "d8cd0ca1dd35b02a96428bcbdc622ebf", + "spanID": "72e7172c44d66967", + "operationName": "productpage.bookinfo.svc.cluster.local:9080/productpage", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "d8cd0ca1dd35b02a96428bcbdc622ebf", + "spanID": "96428bcbdc622ebf" + } + ], + "startTime": 1708938345377237, + "duration": 12013, + "tags": [ + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "b5295e2b-3cee-979b-a8d6-21647842bdb1" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "response_size", + "type": "string", + "value": "5294" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "peer.address", + "type": "string", + "value": "envoy://internal_client_address/" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "http.url", + "type": "string", + "value": "http://192.168.49.2:31793/productpage" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p2", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "d8cd0ca1dd35b02a96428bcbdc622ebf", + "spanID": "aa7f7241087518e4", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "d8cd0ca1dd35b02a96428bcbdc622ebf", + "spanID": "72e7172c44d66967" + } + ], + "startTime": 1708938345381081, + "duration": 1262, + "tags": [ + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "b5295e2b-3cee-979b-a8d6-21647842bdb1" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p3", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "d8cd0ca1dd35b02a96428bcbdc622ebf", + "spanID": "78c624f195641b81", + "operationName": "reviews.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "d8cd0ca1dd35b02a96428bcbdc622ebf", + "spanID": "72e7172c44d66967" + } + ], + "startTime": 1708938345385200, + "duration": 2634, + "tags": [ + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "b5295e2b-3cee-979b-a8d6-21647842bdb1" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "response_size", + "type": "string", + "value": "442" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "http.url", + "type": "string", + "value": "http://reviews:9080/reviews/0" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p5", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "cc835be4a12d9502e9d183dd13ece273", + "spanID": "16406c3cb1635213", + "operationName": "productpage.bookinfo.svc.cluster.local:9080/productpage", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "cc835be4a12d9502e9d183dd13ece273", + "spanID": "e9d183dd13ece273" + } + ], + "startTime": 1708938350376978, + "duration": 15592, + "tags": [ + { + "key": "response_size", + "type": "string", + "value": "5289" + }, + { + "key": "peer.address", + "type": "string", + "value": "envoy://internal_client_address/" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "57e24ddd-9d2b-9337-9dd8-0668db26553e" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "http.url", + "type": "string", + "value": "http://192.168.49.2:31793/productpage" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p2", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "cc835be4a12d9502e9d183dd13ece273", + "spanID": "09115d823c891f74", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "cc835be4a12d9502e9d183dd13ece273", + "spanID": "16406c3cb1635213" + } + ], + "startTime": 1708938350382739, + "duration": 1904, + "tags": [ + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "57e24ddd-9d2b-9337-9dd8-0668db26553e" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p3", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "cc835be4a12d9502e9d183dd13ece273", + "spanID": "e0348888d90dffd4", + "operationName": "reviews.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "cc835be4a12d9502e9d183dd13ece273", + "spanID": "16406c3cb1635213" + } + ], + "startTime": 1708938350387826, + "duration": 3057, + "tags": [ + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "http.url", + "type": "string", + "value": "http://reviews:9080/reviews/0" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "response_size", + "type": "string", + "value": "437" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "57e24ddd-9d2b-9337-9dd8-0668db26553e" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p5", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "4d494f3aefd11a854464b4b40d9af590", + "spanID": "ec50033242a57632", + "operationName": "productpage.bookinfo.svc.cluster.local:9080/productpage", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "4d494f3aefd11a854464b4b40d9af590", + "spanID": "4464b4b40d9af590" + } + ], + "startTime": 1708938353376653, + "duration": 11065, + "tags": [ + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "http.url", + "type": "string", + "value": "http://192.168.49.2:31793/productpage" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "response_size", + "type": "string", + "value": "5294" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "peer.address", + "type": "string", + "value": "envoy://internal_client_address/" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "8b6b8f65-7bfd-91e9-b552-2001d99ab58a" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p2", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "4d494f3aefd11a854464b4b40d9af590", + "spanID": "04a2b4f05c95faf8", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "4d494f3aefd11a854464b4b40d9af590", + "spanID": "ec50033242a57632" + } + ], + "startTime": 1708938353379764, + "duration": 1342, + "tags": [ + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "8b6b8f65-7bfd-91e9-b552-2001d99ab58a" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p3", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "4d494f3aefd11a854464b4b40d9af590", + "spanID": "53dbdaa1e64e56de", + "operationName": "reviews.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "4d494f3aefd11a854464b4b40d9af590", + "spanID": "ec50033242a57632" + } + ], + "startTime": 1708938353383516, + "duration": 2741, + "tags": [ + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "http.url", + "type": "string", + "value": "http://reviews:9080/reviews/0" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "response_size", + "type": "string", + "value": "442" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "8b6b8f65-7bfd-91e9-b552-2001d99ab58a" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p5", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "a38db239f8dde4517e4f8b2a7ec9a14d", + "spanID": "6262cfac91341a5f", + "operationName": "productpage.bookinfo.svc.cluster.local:9080/productpage", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "a38db239f8dde4517e4f8b2a7ec9a14d", + "spanID": "7e4f8b2a7ec9a14d" + } + ], + "startTime": 1708938352376974, + "duration": 14723, + "tags": [ + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "http.url", + "type": "string", + "value": "http://192.168.49.2:31793/productpage" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "220ebc9c-82bf-959e-9b4e-04e704fab323" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "response_size", + "type": "string", + "value": "5289" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "peer.address", + "type": "string", + "value": "envoy://internal_client_address/" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p2", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "a38db239f8dde4517e4f8b2a7ec9a14d", + "spanID": "36ea5cf7175dee4f", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "a38db239f8dde4517e4f8b2a7ec9a14d", + "spanID": "6262cfac91341a5f" + } + ], + "startTime": 1708938352383263, + "duration": 1361, + "tags": [ + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "220ebc9c-82bf-959e-9b4e-04e704fab323" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p3", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "a38db239f8dde4517e4f8b2a7ec9a14d", + "spanID": "0810c0df42aaed25", + "operationName": "reviews.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "a38db239f8dde4517e4f8b2a7ec9a14d", + "spanID": "6262cfac91341a5f" + } + ], + "startTime": 1708938352387171, + "duration": 3017, + "tags": [ + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "response_size", + "type": "string", + "value": "437" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "http.url", + "type": "string", + "value": "http://reviews:9080/reviews/0" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "220ebc9c-82bf-959e-9b4e-04e704fab323" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p5", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "5136595e60d0d5360d748c509bf47b45", + "spanID": "18564bf8dc122270", + "operationName": "productpage.bookinfo.svc.cluster.local:9080/productpage", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "5136595e60d0d5360d748c509bf47b45", + "spanID": "0d748c509bf47b45" + } + ], + "startTime": 1708938351376490, + "duration": 10744, + "tags": [ + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "058d88b8-4052-9a85-b74d-fe32c360b8f0" + }, + { + "key": "response_size", + "type": "string", + "value": "5294" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "http.url", + "type": "string", + "value": "http://192.168.49.2:31793/productpage" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "peer.address", + "type": "string", + "value": "envoy://internal_client_address/" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p2", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "5136595e60d0d5360d748c509bf47b45", + "spanID": "8e8fbce9250fb356", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "5136595e60d0d5360d748c509bf47b45", + "spanID": "18564bf8dc122270" + } + ], + "startTime": 1708938351379263, + "duration": 1612, + "tags": [ + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "058d88b8-4052-9a85-b74d-fe32c360b8f0" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p3", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "5136595e60d0d5360d748c509bf47b45", + "spanID": "f6663c28457fb7c8", + "operationName": "reviews.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "5136595e60d0d5360d748c509bf47b45", + "spanID": "18564bf8dc122270" + } + ], + "startTime": 1708938351383112, + "duration": 2672, + "tags": [ + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "http.url", + "type": "string", + "value": "http://reviews:9080/reviews/0" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "response_size", + "type": "string", + "value": "442" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "058d88b8-4052-9a85-b74d-fe32c360b8f0" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p5", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "873782dad126d88d9936021f99bf0efc", + "spanID": "63928588ba6c946d", + "operationName": "productpage.bookinfo.svc.cluster.local:9080/productpage", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "873782dad126d88d9936021f99bf0efc", + "spanID": "9936021f99bf0efc" + } + ], + "startTime": 1708938354377043, + "duration": 11548, + "tags": [ + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "4c7441d9-351f-9d02-a62a-6be424fb089c" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "peer.address", + "type": "string", + "value": "envoy://internal_client_address/" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "http.url", + "type": "string", + "value": "http://192.168.49.2:31793/productpage" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "response_size", + "type": "string", + "value": "5289" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p2", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "873782dad126d88d9936021f99bf0efc", + "spanID": "39ee3d96d520824b", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "873782dad126d88d9936021f99bf0efc", + "spanID": "63928588ba6c946d" + } + ], + "startTime": 1708938354380359, + "duration": 1298, + "tags": [ + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||details.bookinfo.svc.cluster.local" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "4c7441d9-351f-9d02-a62a-6be424fb089c" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p3", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + }, + { + "traceID": "873782dad126d88d9936021f99bf0efc", + "spanID": "40203523cd9b44d1", + "operationName": "reviews.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "873782dad126d88d9936021f99bf0efc", + "spanID": "63928588ba6c946d" + } + ], + "startTime": 1708938354383933, + "duration": 2618, + "tags": [ + { + "key": "http.url", + "type": "string", + "value": "http://reviews:9080/reviews/0" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.29" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|9080||reviews.bookinfo.svc.cluster.local" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.29~productpage-v1-675fc69cf-t54lj.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "productpage" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "4c7441d9-351f-9d02-a62a-6be424fb089c" + }, + { + "key": "response_size", + "type": "string", + "value": "437" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p5", + "process": { + "serviceName": "productpage.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762973 + } + ] + }, + "warnings": null, + "traceSize": 8 + } +] diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/general/logs.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/general/logs.json new file mode 100644 index 0000000000..7fc09931da --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/general/logs.json @@ -0,0 +1,18005 @@ +{ + "entries": [ + { + "message": "send: b'GET /reviews/0 HTTP/1.1\\r\\nHost: reviews:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: 38d0ffa71734ceb6d949d3a7fd682f84\\r\\nX-B3-SpanId: 7e7d39efdc6d4f4c\\r\\nX-B3-ParentSpanId: d949d3a7fd682f84\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: 3acab9b9-2f1b-95af-b796-1d22c32c8c1b\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:53:03.906", + "timestampUnix": 1708933983906 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:03.924", + "timestampUnix": 1708933983924 + }, + { + "message": "header: x-powered-by: Servlet/3.1", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:03.924", + "timestampUnix": 1708933983924 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:03.924", + "timestampUnix": 1708933983924 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:53:02 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:03.924", + "timestampUnix": 1708933983924 + }, + { + "message": "header: content-language: en-US", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:03.924", + "timestampUnix": 1708933983924 + }, + { + "message": "header: content-length: 358", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:03.924", + "timestampUnix": 1708933983924 + }, + { + "message": "header: x-envoy-upstream-service-time: 0", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:03.924", + "timestampUnix": 1708933983924 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:03.924", + "timestampUnix": 1708933983924 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://reviews:9080 \"GET /reviews/0 HTTP/1.1\" 200 358", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:03.924", + "timestampUnix": 1708933983924 + }, + { + "message": "INFO:werkzeug:::ffff:127.0.0.6 - - [26/Feb/2024 07:53:03] \"GET /productpage HTTP/1.1\" 200 -", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:03.924", + "timestampUnix": 1708933983924 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): details:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:04.900", + "timestampUnix": 1708933984900 + }, + { + "message": "send: b'GET /details/0 HTTP/1.1\\r\\nHost: details:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: 5619f3895986b346aea3720202b6339e\\r\\nX-B3-SpanId: 5660fdd94d4b4f37\\r\\nX-B3-ParentSpanId: aea3720202b6339e\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: 14117d51-61a3-915e-9864-4fc0ed27f878\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:53:04.903", + "timestampUnix": 1708933984903 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:04.903", + "timestampUnix": 1708933984903 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:04.903", + "timestampUnix": 1708933984903 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:04.903", + "timestampUnix": 1708933984903 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:53:04 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:04.903", + "timestampUnix": 1708933984903 + }, + { + "message": "header: content-length: 178", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:04.903", + "timestampUnix": 1708933984903 + }, + { + "message": "header: x-envoy-upstream-service-time: 1", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:04.903", + "timestampUnix": 1708933984903 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://details:9080 \"GET /details/0 HTTP/1.1\" 200 178", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:04.903", + "timestampUnix": 1708933984903 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): reviews:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:04.905", + "timestampUnix": 1708933984905 + }, + { + "message": "send: b'GET /reviews/0 HTTP/1.1\\r\\nHost: reviews:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: 5619f3895986b346aea3720202b6339e\\r\\nX-B3-SpanId: 5660fdd94d4b4f37\\r\\nX-B3-ParentSpanId: aea3720202b6339e\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: 14117d51-61a3-915e-9864-4fc0ed27f878\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:53:04.909", + "timestampUnix": 1708933984909 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:04.909", + "timestampUnix": 1708933984909 + }, + { + "message": "header: x-powered-by: Servlet/3.1", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:04.909", + "timestampUnix": 1708933984909 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:04.909", + "timestampUnix": 1708933984909 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:53:04 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:04.909", + "timestampUnix": 1708933984909 + }, + { + "message": "header: content-language: en-US", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:04.909", + "timestampUnix": 1708933984909 + }, + { + "message": "header: content-length: 442", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:04.909", + "timestampUnix": 1708933984909 + }, + { + "message": "header: x-envoy-upstream-service-time: 2", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:04.909", + "timestampUnix": 1708933984909 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:04.909", + "timestampUnix": 1708933984909 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://reviews:9080 \"GET /reviews/0 HTTP/1.1\" 200 442", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:04.909", + "timestampUnix": 1708933984909 + }, + { + "message": "INFO:werkzeug:::ffff:127.0.0.6 - - [26/Feb/2024 07:53:04] \"GET /productpage HTTP/1.1\" 200 -", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:04.910", + "timestampUnix": 1708933984910 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): details:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:05.901", + "timestampUnix": 1708933985901 + }, + { + "message": "send: b'GET /details/0 HTTP/1.1\\r\\nHost: details:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: f0e9e7f89f5c963e5dd4da53255d0503\\r\\nX-B3-SpanId: b63386feb3dbb276\\r\\nX-B3-ParentSpanId: 5dd4da53255d0503\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: 07a3d6d8-a116-9303-b4b7-3669c03d22a5\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:53:05.904", + "timestampUnix": 1708933985904 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:05.904", + "timestampUnix": 1708933985904 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:05.904", + "timestampUnix": 1708933985904 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:05.904", + "timestampUnix": 1708933985904 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:53:05 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:05.904", + "timestampUnix": 1708933985904 + }, + { + "message": "header: content-length: 178", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:05.904", + "timestampUnix": 1708933985904 + }, + { + "message": "header: x-envoy-upstream-service-time: 1", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:05.904", + "timestampUnix": 1708933985904 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://details:9080 \"GET /details/0 HTTP/1.1\" 200 178", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:05.904", + "timestampUnix": 1708933985904 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): reviews:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:05.905", + "timestampUnix": 1708933985905 + }, + { + "message": "send: b'GET /reviews/0 HTTP/1.1\\r\\nHost: reviews:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: f0e9e7f89f5c963e5dd4da53255d0503\\r\\nX-B3-SpanId: b63386feb3dbb276\\r\\nX-B3-ParentSpanId: 5dd4da53255d0503\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: 07a3d6d8-a116-9303-b4b7-3669c03d22a5\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:53:05.909", + "timestampUnix": 1708933985909 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:05.909", + "timestampUnix": 1708933985909 + }, + { + "message": "header: x-powered-by: Servlet/3.1", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:05.909", + "timestampUnix": 1708933985909 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:05.909", + "timestampUnix": 1708933985909 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:53:05 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:05.909", + "timestampUnix": 1708933985909 + }, + { + "message": "header: content-language: en-US", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:05.909", + "timestampUnix": 1708933985909 + }, + { + "message": "header: content-length: 437", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:05.909", + "timestampUnix": 1708933985909 + }, + { + "message": "header: x-envoy-upstream-service-time: 2", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:05.909", + "timestampUnix": 1708933985909 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:05.909", + "timestampUnix": 1708933985909 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://reviews:9080 \"GET /reviews/0 HTTP/1.1\" 200 437", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:05.909", + "timestampUnix": 1708933985909 + }, + { + "message": "INFO:werkzeug:::ffff:127.0.0.6 - - [26/Feb/2024 07:53:05] \"GET /productpage HTTP/1.1\" 200 -", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:05.910", + "timestampUnix": 1708933985910 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): details:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:06.900", + "timestampUnix": 1708933986900 + }, + { + "message": "send: b'GET /details/0 HTTP/1.1\\r\\nHost: details:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: 4f852eaecd20a11897b64f5f01d35a39\\r\\nX-B3-SpanId: ac75a338611cc556\\r\\nX-B3-ParentSpanId: 97b64f5f01d35a39\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: 92dd6a87-6626-9fe0-a62e-0d8affddb4d1\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:53:06.902", + "timestampUnix": 1708933986902 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:06.902", + "timestampUnix": 1708933986902 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:06.902", + "timestampUnix": 1708933986902 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:06.902", + "timestampUnix": 1708933986902 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:53:06 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:06.902", + "timestampUnix": 1708933986902 + }, + { + "message": "header: content-length: 178", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:06.902", + "timestampUnix": 1708933986902 + }, + { + "message": "header: x-envoy-upstream-service-time: 1", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:06.902", + "timestampUnix": 1708933986902 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://details:9080 \"GET /details/0 HTTP/1.1\" 200 178", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:06.902", + "timestampUnix": 1708933986902 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): reviews:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:06.903", + "timestampUnix": 1708933986903 + }, + { + "message": "send: b'GET /reviews/0 HTTP/1.1\\r\\nHost: reviews:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: 4f852eaecd20a11897b64f5f01d35a39\\r\\nX-B3-SpanId: ac75a338611cc556\\r\\nX-B3-ParentSpanId: 97b64f5f01d35a39\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: 92dd6a87-6626-9fe0-a62e-0d8affddb4d1\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:53:06.907", + "timestampUnix": 1708933986907 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:06.907", + "timestampUnix": 1708933986907 + }, + { + "message": "header: x-powered-by: Servlet/3.1", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:06.907", + "timestampUnix": 1708933986907 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:06.907", + "timestampUnix": 1708933986907 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:53:06 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:06.907", + "timestampUnix": 1708933986907 + }, + { + "message": "header: content-language: en-US", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:06.907", + "timestampUnix": 1708933986907 + }, + { + "message": "header: content-length: 442", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:06.907", + "timestampUnix": 1708933986907 + }, + { + "message": "header: x-envoy-upstream-service-time: 2", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:06.907", + "timestampUnix": 1708933986907 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:06.907", + "timestampUnix": 1708933986907 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://reviews:9080 \"GET /reviews/0 HTTP/1.1\" 200 442", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:06.907", + "timestampUnix": 1708933986907 + }, + { + "message": "INFO:werkzeug:::ffff:127.0.0.6 - - [26/Feb/2024 07:53:06] \"GET /productpage HTTP/1.1\" 200 -", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:06.908", + "timestampUnix": 1708933986908 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): details:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:07.900", + "timestampUnix": 1708933987900 + }, + { + "message": "send: b'GET /details/0 HTTP/1.1\\r\\nHost: details:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: d717f350e523b6c820e10e7c31654de9\\r\\nX-B3-SpanId: e3d3248e45b70f0d\\r\\nX-B3-ParentSpanId: 20e10e7c31654de9\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: 72b697df-703a-9d73-94de-130ae4c1a53c\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:53:07.902", + "timestampUnix": 1708933987902 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:07.902", + "timestampUnix": 1708933987902 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:07.902", + "timestampUnix": 1708933987902 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:07.902", + "timestampUnix": 1708933987902 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:53:07 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:07.902", + "timestampUnix": 1708933987902 + }, + { + "message": "header: content-length: 178", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:07.902", + "timestampUnix": 1708933987902 + }, + { + "message": "header: x-envoy-upstream-service-time: 1", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:07.902", + "timestampUnix": 1708933987902 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://details:9080 \"GET /details/0 HTTP/1.1\" 200 178", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:07.902", + "timestampUnix": 1708933987902 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): reviews:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:07.903", + "timestampUnix": 1708933987903 + }, + { + "message": "send: b'GET /reviews/0 HTTP/1.1\\r\\nHost: reviews:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: d717f350e523b6c820e10e7c31654de9\\r\\nX-B3-SpanId: e3d3248e45b70f0d\\r\\nX-B3-ParentSpanId: 20e10e7c31654de9\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: 72b697df-703a-9d73-94de-130ae4c1a53c\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:53:07.907", + "timestampUnix": 1708933987907 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:07.907", + "timestampUnix": 1708933987907 + }, + { + "message": "header: x-powered-by: Servlet/3.1", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:07.907", + "timestampUnix": 1708933987907 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:07.907", + "timestampUnix": 1708933987907 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:53:06 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:07.907", + "timestampUnix": 1708933987907 + }, + { + "message": "header: content-language: en-US", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:07.907", + "timestampUnix": 1708933987907 + }, + { + "message": "header: content-length: 442", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:07.907", + "timestampUnix": 1708933987907 + }, + { + "message": "header: x-envoy-upstream-service-time: 2", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:07.907", + "timestampUnix": 1708933987907 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:07.907", + "timestampUnix": 1708933987907 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://reviews:9080 \"GET /reviews/0 HTTP/1.1\" 200 442", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:07.907", + "timestampUnix": 1708933987907 + }, + { + "message": "INFO:werkzeug:::ffff:127.0.0.6 - - [26/Feb/2024 07:53:07] \"GET /productpage HTTP/1.1\" 200 -", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:07.907", + "timestampUnix": 1708933987907 + }, + { + "message": "INFO:werkzeug:::ffff:127.0.0.1 - - [26/Feb/2024 07:53:07] \"GET /metrics HTTP/1.1\" 200 -", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:07.991", + "timestampUnix": 1708933987991 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): details:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:08.905", + "timestampUnix": 1708933988905 + }, + { + "message": "send: b'GET /details/0 HTTP/1.1\\r\\nHost: details:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: d9db05f16e6981b566feeca1d10adc70\\r\\nX-B3-SpanId: 095a261511a40dc7\\r\\nX-B3-ParentSpanId: 66feeca1d10adc70\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: 4efd1090-8a73-9499-b407-3293d24bb14c\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:53:08.908", + "timestampUnix": 1708933988908 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:08.908", + "timestampUnix": 1708933988908 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:08.908", + "timestampUnix": 1708933988908 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:08.908", + "timestampUnix": 1708933988908 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:53:08 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:08.908", + "timestampUnix": 1708933988908 + }, + { + "message": "header: content-length: 178", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:08.908", + "timestampUnix": 1708933988908 + }, + { + "message": "header: x-envoy-upstream-service-time: 1", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:08.908", + "timestampUnix": 1708933988908 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://details:9080 \"GET /details/0 HTTP/1.1\" 200 178", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:08.908", + "timestampUnix": 1708933988908 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): reviews:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:08.910", + "timestampUnix": 1708933988910 + }, + { + "message": "send: b'GET /reviews/0 HTTP/1.1\\r\\nHost: reviews:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: d9db05f16e6981b566feeca1d10adc70\\r\\nX-B3-SpanId: 095a261511a40dc7\\r\\nX-B3-ParentSpanId: 66feeca1d10adc70\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: 4efd1090-8a73-9499-b407-3293d24bb14c\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:53:08.915", + "timestampUnix": 1708933988915 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:08.915", + "timestampUnix": 1708933988915 + }, + { + "message": "header: x-powered-by: Servlet/3.1", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:08.915", + "timestampUnix": 1708933988915 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:08.915", + "timestampUnix": 1708933988915 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:53:08 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:08.915", + "timestampUnix": 1708933988915 + }, + { + "message": "header: content-language: en-US", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:08.915", + "timestampUnix": 1708933988915 + }, + { + "message": "header: content-length: 442", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:08.915", + "timestampUnix": 1708933988915 + }, + { + "message": "header: x-envoy-upstream-service-time: 3", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:08.915", + "timestampUnix": 1708933988915 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:08.915", + "timestampUnix": 1708933988915 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://reviews:9080 \"GET /reviews/0 HTTP/1.1\" 200 442", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:08.915", + "timestampUnix": 1708933988915 + }, + { + "message": "INFO:werkzeug:::ffff:127.0.0.6 - - [26/Feb/2024 07:53:08] \"GET /productpage HTTP/1.1\" 200 -", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:08.916", + "timestampUnix": 1708933988916 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): details:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:09.907", + "timestampUnix": 1708933989907 + }, + { + "message": "send: b'GET /details/0 HTTP/1.1\\r\\nHost: details:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: 26993210778b697c7352806b76ab1d0f\\r\\nX-B3-SpanId: 68618d9d800d7599\\r\\nX-B3-ParentSpanId: 7352806b76ab1d0f\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: e3432858-1830-9003-8524-4760b873b895\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:53:09.916", + "timestampUnix": 1708933989916 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:09.916", + "timestampUnix": 1708933989916 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:09.916", + "timestampUnix": 1708933989916 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:09.916", + "timestampUnix": 1708933989916 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:53:09 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:09.916", + "timestampUnix": 1708933989916 + }, + { + "message": "header: content-length: 178", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:09.916", + "timestampUnix": 1708933989916 + }, + { + "message": "header: x-envoy-upstream-service-time: 3", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:09.916", + "timestampUnix": 1708933989916 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://details:9080 \"GET /details/0 HTTP/1.1\" 200 178", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:09.916", + "timestampUnix": 1708933989916 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): reviews:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:09.920", + "timestampUnix": 1708933989920 + }, + { + "message": "send: b'GET /reviews/0 HTTP/1.1\\r\\nHost: reviews:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: 26993210778b697c7352806b76ab1d0f\\r\\nX-B3-SpanId: 68618d9d800d7599\\r\\nX-B3-ParentSpanId: 7352806b76ab1d0f\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: e3432858-1830-9003-8524-4760b873b895\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:53:09.924", + "timestampUnix": 1708933989924 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:09.924", + "timestampUnix": 1708933989924 + }, + { + "message": "header: x-powered-by: Servlet/3.1", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:09.924", + "timestampUnix": 1708933989924 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:09.924", + "timestampUnix": 1708933989924 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:53:09 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:09.924", + "timestampUnix": 1708933989924 + }, + { + "message": "header: content-language: en-US", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:09.924", + "timestampUnix": 1708933989924 + }, + { + "message": "header: content-length: 437", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:09.924", + "timestampUnix": 1708933989924 + }, + { + "message": "header: x-envoy-upstream-service-time: 3", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:09.924", + "timestampUnix": 1708933989924 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:09.924", + "timestampUnix": 1708933989924 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://reviews:9080 \"GET /reviews/0 HTTP/1.1\" 200 437", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:09.924", + "timestampUnix": 1708933989924 + }, + { + "message": "INFO:werkzeug:::ffff:127.0.0.6 - - [26/Feb/2024 07:53:09] \"GET /productpage HTTP/1.1\" 200 -", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:09.926", + "timestampUnix": 1708933989926 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): details:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:10.907", + "timestampUnix": 1708933990907 + }, + { + "message": "send: b'GET /details/0 HTTP/1.1\\r\\nHost: details:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: db3e4787e190de43f8e1d8b2378d73ec\\r\\nX-B3-SpanId: ac2acd97419c37d4\\r\\nX-B3-ParentSpanId: f8e1d8b2378d73ec\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: aa45f94e-46ea-9381-b0c5-be980c1ba833\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:53:10.910", + "timestampUnix": 1708933990910 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:10.910", + "timestampUnix": 1708933990910 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:10.910", + "timestampUnix": 1708933990910 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:10.910", + "timestampUnix": 1708933990910 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:53:10 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:10.910", + "timestampUnix": 1708933990910 + }, + { + "message": "header: content-length: 178", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:10.910", + "timestampUnix": 1708933990910 + }, + { + "message": "header: x-envoy-upstream-service-time: 1", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:10.910", + "timestampUnix": 1708933990910 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://details:9080 \"GET /details/0 HTTP/1.1\" 200 178", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:10.910", + "timestampUnix": 1708933990910 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): reviews:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:10.912", + "timestampUnix": 1708933990912 + }, + { + "message": "send: b'GET /reviews/0 HTTP/1.1\\r\\nHost: reviews:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: db3e4787e190de43f8e1d8b2378d73ec\\r\\nX-B3-SpanId: ac2acd97419c37d4\\r\\nX-B3-ParentSpanId: f8e1d8b2378d73ec\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: aa45f94e-46ea-9381-b0c5-be980c1ba833\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:53:10.914", + "timestampUnix": 1708933990914 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:10.914", + "timestampUnix": 1708933990914 + }, + { + "message": "header: x-powered-by: Servlet/3.1", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:10.914", + "timestampUnix": 1708933990914 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:10.914", + "timestampUnix": 1708933990914 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:53:10 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:10.914", + "timestampUnix": 1708933990914 + }, + { + "message": "header: content-language: en-US", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:10.914", + "timestampUnix": 1708933990914 + }, + { + "message": "header: content-length: 358", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:10.914", + "timestampUnix": 1708933990914 + }, + { + "message": "header: x-envoy-upstream-service-time: 0", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:10.914", + "timestampUnix": 1708933990914 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:10.914", + "timestampUnix": 1708933990914 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://reviews:9080 \"GET /reviews/0 HTTP/1.1\" 200 358", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:10.914", + "timestampUnix": 1708933990914 + }, + { + "message": "INFO:werkzeug:::ffff:127.0.0.6 - - [26/Feb/2024 07:53:10] \"GET /productpage HTTP/1.1\" 200 -", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:10.915", + "timestampUnix": 1708933990915 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): details:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:11.900", + "timestampUnix": 1708933991900 + }, + { + "message": "send: b'GET /details/0 HTTP/1.1\\r\\nHost: details:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: 9c1a637d0e6d26de0ab8c10a17c84f1f\\r\\nX-B3-SpanId: 1a827379acd47c69\\r\\nX-B3-ParentSpanId: 0ab8c10a17c84f1f\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: 57970fb4-34de-900f-be26-d8d4f1201787\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:53:11.902", + "timestampUnix": 1708933991902 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:11.902", + "timestampUnix": 1708933991902 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:11.902", + "timestampUnix": 1708933991902 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:11.902", + "timestampUnix": 1708933991902 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:53:11 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:11.902", + "timestampUnix": 1708933991902 + }, + { + "message": "header: content-length: 178", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:11.902", + "timestampUnix": 1708933991902 + }, + { + "message": "header: x-envoy-upstream-service-time: 1", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:11.902", + "timestampUnix": 1708933991902 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://details:9080 \"GET /details/0 HTTP/1.1\" 200 178", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:11.902", + "timestampUnix": 1708933991902 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): reviews:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:11.903", + "timestampUnix": 1708933991903 + }, + { + "message": "send: b'GET /reviews/0 HTTP/1.1\\r\\nHost: reviews:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: 9c1a637d0e6d26de0ab8c10a17c84f1f\\r\\nX-B3-SpanId: 1a827379acd47c69\\r\\nX-B3-ParentSpanId: 0ab8c10a17c84f1f\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: 57970fb4-34de-900f-be26-d8d4f1201787\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:53:11.907", + "timestampUnix": 1708933991907 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:11.907", + "timestampUnix": 1708933991907 + }, + { + "message": "header: x-powered-by: Servlet/3.1", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:11.907", + "timestampUnix": 1708933991907 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:11.907", + "timestampUnix": 1708933991907 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:53:11 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:11.907", + "timestampUnix": 1708933991907 + }, + { + "message": "header: content-language: en-US", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:11.907", + "timestampUnix": 1708933991907 + }, + { + "message": "header: content-length: 437", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:11.907", + "timestampUnix": 1708933991907 + }, + { + "message": "header: x-envoy-upstream-service-time: 2", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:11.907", + "timestampUnix": 1708933991907 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:11.907", + "timestampUnix": 1708933991907 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://reviews:9080 \"GET /reviews/0 HTTP/1.1\" 200 437", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:11.907", + "timestampUnix": 1708933991907 + }, + { + "message": "INFO:werkzeug:::ffff:127.0.0.6 - - [26/Feb/2024 07:53:11] \"GET /productpage HTTP/1.1\" 200 -", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:11.908", + "timestampUnix": 1708933991908 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): details:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:12.903", + "timestampUnix": 1708933992903 + }, + { + "message": "send: b'GET /details/0 HTTP/1.1\\r\\nHost: details:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: 390984402d14b3c4cb829d228d7b2455\\r\\nX-B3-SpanId: 292b7634ce195f0f\\r\\nX-B3-ParentSpanId: cb829d228d7b2455\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: ddc324ae-028e-9b38-8d26-806480f1518a\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:53:12.908", + "timestampUnix": 1708933992908 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:12.908", + "timestampUnix": 1708933992908 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:12.908", + "timestampUnix": 1708933992908 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:12.908", + "timestampUnix": 1708933992908 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:53:12 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:12.908", + "timestampUnix": 1708933992908 + }, + { + "message": "header: content-length: 178", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:12.908", + "timestampUnix": 1708933992908 + }, + { + "message": "header: x-envoy-upstream-service-time: 2", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:12.908", + "timestampUnix": 1708933992908 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://details:9080 \"GET /details/0 HTTP/1.1\" 200 178", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:12.908", + "timestampUnix": 1708933992908 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): reviews:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:12.912", + "timestampUnix": 1708933992912 + }, + { + "message": "send: b'GET /reviews/0 HTTP/1.1\\r\\nHost: reviews:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: 390984402d14b3c4cb829d228d7b2455\\r\\nX-B3-SpanId: 292b7634ce195f0f\\r\\nX-B3-ParentSpanId: cb829d228d7b2455\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: ddc324ae-028e-9b38-8d26-806480f1518a\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:53:12.915", + "timestampUnix": 1708933992915 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:12.915", + "timestampUnix": 1708933992915 + }, + { + "message": "header: x-powered-by: Servlet/3.1", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:12.915", + "timestampUnix": 1708933992915 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:12.915", + "timestampUnix": 1708933992915 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:53:12 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:12.915", + "timestampUnix": 1708933992915 + }, + { + "message": "header: content-language: en-US", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:12.915", + "timestampUnix": 1708933992915 + }, + { + "message": "header: content-length: 358", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:12.915", + "timestampUnix": 1708933992915 + }, + { + "message": "header: x-envoy-upstream-service-time: 0", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:12.915", + "timestampUnix": 1708933992915 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:12.915", + "timestampUnix": 1708933992915 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://reviews:9080 \"GET /reviews/0 HTTP/1.1\" 200 358", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:12.915", + "timestampUnix": 1708933992915 + }, + { + "message": "INFO:werkzeug:::ffff:127.0.0.6 - - [26/Feb/2024 07:53:12] \"GET /productpage HTTP/1.1\" 200 -", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:12.916", + "timestampUnix": 1708933992916 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): details:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:13.906", + "timestampUnix": 1708933993906 + }, + { + "message": "send: b'GET /details/0 HTTP/1.1\\r\\nHost: details:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: ee8674d1d5d46838664248d7817b885a\\r\\nX-B3-SpanId: 346021df1e7849be\\r\\nX-B3-ParentSpanId: 664248d7817b885a\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: 7cea4c46-7e36-94e4-ac20-b97fbfbe0f35\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:53:13.908", + "timestampUnix": 1708933993908 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:13.908", + "timestampUnix": 1708933993908 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:13.908", + "timestampUnix": 1708933993908 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:13.908", + "timestampUnix": 1708933993908 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:53:13 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:13.908", + "timestampUnix": 1708933993908 + }, + { + "message": "header: content-length: 178", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:13.908", + "timestampUnix": 1708933993908 + }, + { + "message": "header: x-envoy-upstream-service-time: 1", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:13.908", + "timestampUnix": 1708933993908 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://details:9080 \"GET /details/0 HTTP/1.1\" 200 178", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:13.908", + "timestampUnix": 1708933993908 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): reviews:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:13.910", + "timestampUnix": 1708933993910 + }, + { + "message": "send: b'GET /reviews/0 HTTP/1.1\\r\\nHost: reviews:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: ee8674d1d5d46838664248d7817b885a\\r\\nX-B3-SpanId: 346021df1e7849be\\r\\nX-B3-ParentSpanId: 664248d7817b885a\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: 7cea4c46-7e36-94e4-ac20-b97fbfbe0f35\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:53:13.912", + "timestampUnix": 1708933993912 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:13.912", + "timestampUnix": 1708933993912 + }, + { + "message": "header: x-powered-by: Servlet/3.1", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:13.912", + "timestampUnix": 1708933993912 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:13.912", + "timestampUnix": 1708933993912 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:53:12 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:13.912", + "timestampUnix": 1708933993912 + }, + { + "message": "header: content-language: en-US", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:13.912", + "timestampUnix": 1708933993912 + }, + { + "message": "header: content-length: 358", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:13.913", + "timestampUnix": 1708933993913 + }, + { + "message": "header: x-envoy-upstream-service-time: 1", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:13.913", + "timestampUnix": 1708933993913 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:13.913", + "timestampUnix": 1708933993913 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://reviews:9080 \"GET /reviews/0 HTTP/1.1\" 200 358", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:13.913", + "timestampUnix": 1708933993913 + }, + { + "message": "INFO:werkzeug:::ffff:127.0.0.6 - - [26/Feb/2024 07:53:13] \"GET /productpage HTTP/1.1\" 200 -", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:13.914", + "timestampUnix": 1708933993914 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): details:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:14.901", + "timestampUnix": 1708933994901 + }, + { + "message": "send: b'GET /details/0 HTTP/1.1\\r\\nHost: details:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: 423398647b3faf4c532c08a0a7b11eee\\r\\nX-B3-SpanId: 5e430c2fb24fc3d0\\r\\nX-B3-ParentSpanId: 532c08a0a7b11eee\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: 019ed065-f57b-9727-9311-71188b0ae3b7\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:53:14.903", + "timestampUnix": 1708933994903 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:14.903", + "timestampUnix": 1708933994903 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:14.903", + "timestampUnix": 1708933994903 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:14.903", + "timestampUnix": 1708933994903 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:53:14 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:14.903", + "timestampUnix": 1708933994903 + }, + { + "message": "header: content-length: 178", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:14.903", + "timestampUnix": 1708933994903 + }, + { + "message": "header: x-envoy-upstream-service-time: 1", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:14.903", + "timestampUnix": 1708933994903 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://details:9080 \"GET /details/0 HTTP/1.1\" 200 178", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:14.903", + "timestampUnix": 1708933994903 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): reviews:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:14.905", + "timestampUnix": 1708933994905 + }, + { + "message": "send: b'GET /reviews/0 HTTP/1.1\\r\\nHost: reviews:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: 423398647b3faf4c532c08a0a7b11eee\\r\\nX-B3-SpanId: 5e430c2fb24fc3d0\\r\\nX-B3-ParentSpanId: 532c08a0a7b11eee\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: 019ed065-f57b-9727-9311-71188b0ae3b7\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:53:14.909", + "timestampUnix": 1708933994909 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:14.909", + "timestampUnix": 1708933994909 + }, + { + "message": "header: x-powered-by: Servlet/3.1", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:14.909", + "timestampUnix": 1708933994909 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:14.909", + "timestampUnix": 1708933994909 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:53:14 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:14.909", + "timestampUnix": 1708933994909 + }, + { + "message": "header: content-language: en-US", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:14.909", + "timestampUnix": 1708933994909 + }, + { + "message": "header: content-length: 437", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:14.909", + "timestampUnix": 1708933994909 + }, + { + "message": "header: x-envoy-upstream-service-time: 2", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:14.909", + "timestampUnix": 1708933994909 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:14.909", + "timestampUnix": 1708933994909 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://reviews:9080 \"GET /reviews/0 HTTP/1.1\" 200 437", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:14.909", + "timestampUnix": 1708933994909 + }, + { + "message": "INFO:werkzeug:::ffff:127.0.0.6 - - [26/Feb/2024 07:53:14] \"GET /productpage HTTP/1.1\" 200 -", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:14.910", + "timestampUnix": 1708933994910 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): details:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:15.906", + "timestampUnix": 1708933995906 + }, + { + "message": "send: b'GET /details/0 HTTP/1.1\\r\\nHost: details:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: ff6d9afd0f9838a120787696540438ba\\r\\nX-B3-SpanId: dc8b92a8a115abfa\\r\\nX-B3-ParentSpanId: 20787696540438ba\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: d98f0bc7-4d2c-915f-9604-e060ceffec06\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:53:15.910", + "timestampUnix": 1708933995910 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:15.910", + "timestampUnix": 1708933995910 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:15.910", + "timestampUnix": 1708933995910 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:15.910", + "timestampUnix": 1708933995910 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:53:15 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:15.910", + "timestampUnix": 1708933995910 + }, + { + "message": "header: content-length: 178", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:15.910", + "timestampUnix": 1708933995910 + }, + { + "message": "header: x-envoy-upstream-service-time: 1", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:15.910", + "timestampUnix": 1708933995910 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://details:9080 \"GET /details/0 HTTP/1.1\" 200 178", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:15.910", + "timestampUnix": 1708933995910 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): reviews:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:15.912", + "timestampUnix": 1708933995912 + }, + { + "message": "send: b'GET /reviews/0 HTTP/1.1\\r\\nHost: reviews:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: ff6d9afd0f9838a120787696540438ba\\r\\nX-B3-SpanId: dc8b92a8a115abfa\\r\\nX-B3-ParentSpanId: 20787696540438ba\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: d98f0bc7-4d2c-915f-9604-e060ceffec06\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:53:15.917", + "timestampUnix": 1708933995917 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:15.917", + "timestampUnix": 1708933995917 + }, + { + "message": "header: x-powered-by: Servlet/3.1", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:15.917", + "timestampUnix": 1708933995917 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:15.917", + "timestampUnix": 1708933995917 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:53:15 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:15.917", + "timestampUnix": 1708933995917 + }, + { + "message": "header: content-language: en-US", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:15.917", + "timestampUnix": 1708933995917 + }, + { + "message": "header: content-length: 442", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:15.917", + "timestampUnix": 1708933995917 + }, + { + "message": "header: x-envoy-upstream-service-time: 4", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:15.917", + "timestampUnix": 1708933995917 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:15.917", + "timestampUnix": 1708933995917 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://reviews:9080 \"GET /reviews/0 HTTP/1.1\" 200 442", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:15.917", + "timestampUnix": 1708933995917 + }, + { + "message": "INFO:werkzeug:::ffff:127.0.0.6 - - [26/Feb/2024 07:53:15] \"GET /productpage HTTP/1.1\" 200 -", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:15.918", + "timestampUnix": 1708933995918 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): details:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:16.900", + "timestampUnix": 1708933996900 + }, + { + "message": "send: b'GET /details/0 HTTP/1.1\\r\\nHost: details:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: 59af6ebe03a25441bae8f0f3073af7f3\\r\\nX-B3-SpanId: c5e73d541febb08b\\r\\nX-B3-ParentSpanId: bae8f0f3073af7f3\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: 95924da3-80b3-91a5-8c26-8f15a2a5588a\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:53:16.902", + "timestampUnix": 1708933996902 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:16.902", + "timestampUnix": 1708933996902 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:16.902", + "timestampUnix": 1708933996902 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:16.902", + "timestampUnix": 1708933996902 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:53:16 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:16.902", + "timestampUnix": 1708933996902 + }, + { + "message": "header: content-length: 178", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:16.902", + "timestampUnix": 1708933996902 + }, + { + "message": "header: x-envoy-upstream-service-time: 1", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:16.902", + "timestampUnix": 1708933996902 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://details:9080 \"GET /details/0 HTTP/1.1\" 200 178", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:16.902", + "timestampUnix": 1708933996902 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): reviews:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:16.904", + "timestampUnix": 1708933996904 + }, + { + "message": "send: b'GET /reviews/0 HTTP/1.1\\r\\nHost: reviews:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: 59af6ebe03a25441bae8f0f3073af7f3\\r\\nX-B3-SpanId: c5e73d541febb08b\\r\\nX-B3-ParentSpanId: bae8f0f3073af7f3\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: 95924da3-80b3-91a5-8c26-8f15a2a5588a\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:53:16.907", + "timestampUnix": 1708933996907 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:16.907", + "timestampUnix": 1708933996907 + }, + { + "message": "header: x-powered-by: Servlet/3.1", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:16.907", + "timestampUnix": 1708933996907 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:16.907", + "timestampUnix": 1708933996907 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:53:15 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:16.907", + "timestampUnix": 1708933996907 + }, + { + "message": "header: content-language: en-US", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:16.907", + "timestampUnix": 1708933996907 + }, + { + "message": "header: content-length: 442", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:16.907", + "timestampUnix": 1708933996907 + }, + { + "message": "header: x-envoy-upstream-service-time: 2", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:16.907", + "timestampUnix": 1708933996907 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:16.907", + "timestampUnix": 1708933996907 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://reviews:9080 \"GET /reviews/0 HTTP/1.1\" 200 442", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:16.907", + "timestampUnix": 1708933996907 + }, + { + "message": "INFO:werkzeug:::ffff:127.0.0.6 - - [26/Feb/2024 07:53:16] \"GET /productpage HTTP/1.1\" 200 -", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:16.908", + "timestampUnix": 1708933996908 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): details:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:17.900", + "timestampUnix": 1708933997900 + }, + { + "message": "send: b'GET /details/0 HTTP/1.1\\r\\nHost: details:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: 18c9497e82fa0c03b48859025a82e5b0\\r\\nX-B3-SpanId: fe8f86e0b24d60b8\\r\\nX-B3-ParentSpanId: b48859025a82e5b0\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: c89161d4-5000-9b3b-a18d-8726b87bb661\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:53:17.902", + "timestampUnix": 1708933997902 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:17.902", + "timestampUnix": 1708933997902 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:17.902", + "timestampUnix": 1708933997902 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:17.902", + "timestampUnix": 1708933997902 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:53:17 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:17.902", + "timestampUnix": 1708933997902 + }, + { + "message": "header: content-length: 178", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:17.902", + "timestampUnix": 1708933997902 + }, + { + "message": "header: x-envoy-upstream-service-time: 1", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:17.902", + "timestampUnix": 1708933997902 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://details:9080 \"GET /details/0 HTTP/1.1\" 200 178", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:17.902", + "timestampUnix": 1708933997902 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): reviews:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:17.903", + "timestampUnix": 1708933997903 + }, + { + "message": "send: b'GET /reviews/0 HTTP/1.1\\r\\nHost: reviews:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: 18c9497e82fa0c03b48859025a82e5b0\\r\\nX-B3-SpanId: fe8f86e0b24d60b8\\r\\nX-B3-ParentSpanId: b48859025a82e5b0\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: c89161d4-5000-9b3b-a18d-8726b87bb661\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:53:17.907", + "timestampUnix": 1708933997907 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:17.907", + "timestampUnix": 1708933997907 + }, + { + "message": "header: x-powered-by: Servlet/3.1", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:17.907", + "timestampUnix": 1708933997907 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:17.907", + "timestampUnix": 1708933997907 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:53:17 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:17.907", + "timestampUnix": 1708933997907 + }, + { + "message": "header: content-language: en-US", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:17.907", + "timestampUnix": 1708933997907 + }, + { + "message": "header: content-length: 437", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:17.907", + "timestampUnix": 1708933997907 + }, + { + "message": "header: x-envoy-upstream-service-time: 3", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:17.907", + "timestampUnix": 1708933997907 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:17.907", + "timestampUnix": 1708933997907 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://reviews:9080 \"GET /reviews/0 HTTP/1.1\" 200 437", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:17.907", + "timestampUnix": 1708933997907 + }, + { + "message": "INFO:werkzeug:::ffff:127.0.0.6 - - [26/Feb/2024 07:53:17] \"GET /productpage HTTP/1.1\" 200 -", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:17.908", + "timestampUnix": 1708933997908 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): details:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:18.901", + "timestampUnix": 1708933998901 + }, + { + "message": "send: b'GET /details/0 HTTP/1.1\\r\\nHost: details:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: c5bf26068b249180e4c907447ad60b0c\\r\\nX-B3-SpanId: 1f072365fac72efa\\r\\nX-B3-ParentSpanId: e4c907447ad60b0c\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: 23f734e5-7b94-9abc-9739-0d254ca3dbe0\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:53:18.904", + "timestampUnix": 1708933998904 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:18.904", + "timestampUnix": 1708933998904 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:18.904", + "timestampUnix": 1708933998904 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:18.904", + "timestampUnix": 1708933998904 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:53:18 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:18.904", + "timestampUnix": 1708933998904 + }, + { + "message": "header: content-length: 178", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:18.904", + "timestampUnix": 1708933998904 + }, + { + "message": "header: x-envoy-upstream-service-time: 1", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:18.904", + "timestampUnix": 1708933998904 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://details:9080 \"GET /details/0 HTTP/1.1\" 200 178", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:18.904", + "timestampUnix": 1708933998904 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): reviews:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:18.905", + "timestampUnix": 1708933998905 + }, + { + "message": "send: b'GET /reviews/0 HTTP/1.1\\r\\nHost: reviews:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: c5bf26068b249180e4c907447ad60b0c\\r\\nX-B3-SpanId: 1f072365fac72efa\\r\\nX-B3-ParentSpanId: e4c907447ad60b0c\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: 23f734e5-7b94-9abc-9739-0d254ca3dbe0\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:53:18.910", + "timestampUnix": 1708933998910 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:18.910", + "timestampUnix": 1708933998910 + }, + { + "message": "header: x-powered-by: Servlet/3.1", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:18.910", + "timestampUnix": 1708933998910 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:18.910", + "timestampUnix": 1708933998910 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:53:18 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:18.910", + "timestampUnix": 1708933998910 + }, + { + "message": "header: content-language: en-US", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:18.910", + "timestampUnix": 1708933998910 + }, + { + "message": "header: content-length: 437", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:18.910", + "timestampUnix": 1708933998910 + }, + { + "message": "header: x-envoy-upstream-service-time: 3", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:18.910", + "timestampUnix": 1708933998910 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:18.910", + "timestampUnix": 1708933998910 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://reviews:9080 \"GET /reviews/0 HTTP/1.1\" 200 437", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:18.910", + "timestampUnix": 1708933998910 + }, + { + "message": "INFO:werkzeug:::ffff:127.0.0.6 - - [26/Feb/2024 07:53:18] \"GET /productpage HTTP/1.1\" 200 -", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:18.911", + "timestampUnix": 1708933998911 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): details:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:19.900", + "timestampUnix": 1708933999900 + }, + { + "message": "send: b'GET /details/0 HTTP/1.1\\r\\nHost: details:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: 98a506b5158438cc3a0aa5d80ebab99b\\r\\nX-B3-SpanId: 74f115b558976864\\r\\nX-B3-ParentSpanId: 3a0aa5d80ebab99b\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: 1e56056a-f5c4-98d7-9765-0737f2f044d7\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:53:19.902", + "timestampUnix": 1708933999902 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:19.902", + "timestampUnix": 1708933999902 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:19.902", + "timestampUnix": 1708933999902 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:19.902", + "timestampUnix": 1708933999902 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:53:19 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:19.902", + "timestampUnix": 1708933999902 + }, + { + "message": "header: content-length: 178", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:19.902", + "timestampUnix": 1708933999902 + }, + { + "message": "header: x-envoy-upstream-service-time: 1", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:19.902", + "timestampUnix": 1708933999902 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://details:9080 \"GET /details/0 HTTP/1.1\" 200 178", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:19.902", + "timestampUnix": 1708933999902 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): reviews:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:19.904", + "timestampUnix": 1708933999904 + }, + { + "message": "send: b'GET /reviews/0 HTTP/1.1\\r\\nHost: reviews:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: 98a506b5158438cc3a0aa5d80ebab99b\\r\\nX-B3-SpanId: 74f115b558976864\\r\\nX-B3-ParentSpanId: 3a0aa5d80ebab99b\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: 1e56056a-f5c4-98d7-9765-0737f2f044d7\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:53:19.906", + "timestampUnix": 1708933999906 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:19.906", + "timestampUnix": 1708933999906 + }, + { + "message": "header: x-powered-by: Servlet/3.1", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:19.906", + "timestampUnix": 1708933999906 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:19.906", + "timestampUnix": 1708933999906 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:53:19 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:19.906", + "timestampUnix": 1708933999906 + }, + { + "message": "header: content-language: en-US", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:19.906", + "timestampUnix": 1708933999906 + }, + { + "message": "header: content-length: 358", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:19.906", + "timestampUnix": 1708933999906 + }, + { + "message": "header: x-envoy-upstream-service-time: 0", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:19.906", + "timestampUnix": 1708933999906 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:19.906", + "timestampUnix": 1708933999906 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://reviews:9080 \"GET /reviews/0 HTTP/1.1\" 200 358", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:19.906", + "timestampUnix": 1708933999906 + }, + { + "message": "INFO:werkzeug:::ffff:127.0.0.6 - - [26/Feb/2024 07:53:19] \"GET /productpage HTTP/1.1\" 200 -", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:19.907", + "timestampUnix": 1708933999907 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): details:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:20.907", + "timestampUnix": 1708934000907 + }, + { + "message": "send: b'GET /details/0 HTTP/1.1\\r\\nHost: details:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: eea3c9adb18d25bd0a8e2f506ab331b2\\r\\nX-B3-SpanId: 3b22540fe02d2320\\r\\nX-B3-ParentSpanId: 0a8e2f506ab331b2\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: cbef0635-232c-9ce4-b86f-4949266cfd02\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:53:20.911", + "timestampUnix": 1708934000911 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:20.911", + "timestampUnix": 1708934000911 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:20.911", + "timestampUnix": 1708934000911 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:20.911", + "timestampUnix": 1708934000911 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:53:20 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:20.911", + "timestampUnix": 1708934000911 + }, + { + "message": "header: content-length: 178", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:20.911", + "timestampUnix": 1708934000911 + }, + { + "message": "header: x-envoy-upstream-service-time: 1", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:20.911", + "timestampUnix": 1708934000911 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://details:9080 \"GET /details/0 HTTP/1.1\" 200 178", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:20.911", + "timestampUnix": 1708934000911 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): reviews:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:20.913", + "timestampUnix": 1708934000913 + }, + { + "message": "send: b'GET /reviews/0 HTTP/1.1\\r\\nHost: reviews:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: eea3c9adb18d25bd0a8e2f506ab331b2\\r\\nX-B3-SpanId: 3b22540fe02d2320\\r\\nX-B3-ParentSpanId: 0a8e2f506ab331b2\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: cbef0635-232c-9ce4-b86f-4949266cfd02\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:53:20.917", + "timestampUnix": 1708934000917 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:20.917", + "timestampUnix": 1708934000917 + }, + { + "message": "header: x-powered-by: Servlet/3.1", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:20.917", + "timestampUnix": 1708934000917 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:20.917", + "timestampUnix": 1708934000917 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:53:20 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:20.917", + "timestampUnix": 1708934000917 + }, + { + "message": "header: content-language: en-US", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:20.917", + "timestampUnix": 1708934000917 + }, + { + "message": "header: content-length: 437", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:20.917", + "timestampUnix": 1708934000917 + }, + { + "message": "header: x-envoy-upstream-service-time: 3", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:20.917", + "timestampUnix": 1708934000917 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:20.917", + "timestampUnix": 1708934000917 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://reviews:9080 \"GET /reviews/0 HTTP/1.1\" 200 437", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:20.917", + "timestampUnix": 1708934000917 + }, + { + "message": "INFO:werkzeug:::ffff:127.0.0.6 - - [26/Feb/2024 07:53:20] \"GET /productpage HTTP/1.1\" 200 -", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:20.918", + "timestampUnix": 1708934000918 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): details:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:21.905", + "timestampUnix": 1708934001905 + }, + { + "message": "send: b'GET /details/0 HTTP/1.1\\r\\nHost: details:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: 224ae638bd8acd00bcd4465f4bfd86e0\\r\\nX-B3-SpanId: f30b141a7e4d5109\\r\\nX-B3-ParentSpanId: bcd4465f4bfd86e0\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: 9a4800c6-79c5-9e78-863c-90f2f877dd53\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:53:21.907", + "timestampUnix": 1708934001907 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:21.907", + "timestampUnix": 1708934001907 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:21.907", + "timestampUnix": 1708934001907 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:21.907", + "timestampUnix": 1708934001907 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:53:21 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:21.907", + "timestampUnix": 1708934001907 + }, + { + "message": "header: content-length: 178", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:21.907", + "timestampUnix": 1708934001907 + }, + { + "message": "header: x-envoy-upstream-service-time: 1", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:21.907", + "timestampUnix": 1708934001907 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://details:9080 \"GET /details/0 HTTP/1.1\" 200 178", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:21.907", + "timestampUnix": 1708934001907 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): reviews:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:21.909", + "timestampUnix": 1708934001909 + }, + { + "message": "send: b'GET /reviews/0 HTTP/1.1\\r\\nHost: reviews:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: 224ae638bd8acd00bcd4465f4bfd86e0\\r\\nX-B3-SpanId: f30b141a7e4d5109\\r\\nX-B3-ParentSpanId: bcd4465f4bfd86e0\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: 9a4800c6-79c5-9e78-863c-90f2f877dd53\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:53:21.914", + "timestampUnix": 1708934001914 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:21.914", + "timestampUnix": 1708934001914 + }, + { + "message": "header: x-powered-by: Servlet/3.1", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:21.914", + "timestampUnix": 1708934001914 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:21.914", + "timestampUnix": 1708934001914 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:53:21 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:21.914", + "timestampUnix": 1708934001914 + }, + { + "message": "header: content-language: en-US", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:21.914", + "timestampUnix": 1708934001914 + }, + { + "message": "header: content-length: 442", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:21.914", + "timestampUnix": 1708934001914 + }, + { + "message": "header: x-envoy-upstream-service-time: 3", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:21.914", + "timestampUnix": 1708934001914 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:21.914", + "timestampUnix": 1708934001914 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://reviews:9080 \"GET /reviews/0 HTTP/1.1\" 200 442", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:21.914", + "timestampUnix": 1708934001914 + }, + { + "message": "INFO:werkzeug:::ffff:127.0.0.6 - - [26/Feb/2024 07:53:21] \"GET /productpage HTTP/1.1\" 200 -", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:21.915", + "timestampUnix": 1708934001915 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): details:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:22.902", + "timestampUnix": 1708934002902 + }, + { + "message": "send: b'GET /details/0 HTTP/1.1\\r\\nHost: details:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: 21543bce070cfea090568945c6425322\\r\\nX-B3-SpanId: 1ca13d2d7e2f48b7\\r\\nX-B3-ParentSpanId: 90568945c6425322\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: f883f6e7-c8fb-9ab1-81a8-572d1c018d70\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:53:22.905", + "timestampUnix": 1708934002905 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:22.905", + "timestampUnix": 1708934002905 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:22.905", + "timestampUnix": 1708934002905 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:22.905", + "timestampUnix": 1708934002905 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:53:22 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:22.905", + "timestampUnix": 1708934002905 + }, + { + "message": "header: content-length: 178", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:22.905", + "timestampUnix": 1708934002905 + }, + { + "message": "header: x-envoy-upstream-service-time: 1", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:22.905", + "timestampUnix": 1708934002905 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://details:9080 \"GET /details/0 HTTP/1.1\" 200 178", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:22.905", + "timestampUnix": 1708934002905 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): reviews:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:22.907", + "timestampUnix": 1708934002907 + }, + { + "message": "send: b'GET /reviews/0 HTTP/1.1\\r\\nHost: reviews:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: 21543bce070cfea090568945c6425322\\r\\nX-B3-SpanId: 1ca13d2d7e2f48b7\\r\\nX-B3-ParentSpanId: 90568945c6425322\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: f883f6e7-c8fb-9ab1-81a8-572d1c018d70\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:53:22.911", + "timestampUnix": 1708934002911 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:22.911", + "timestampUnix": 1708934002911 + }, + { + "message": "header: x-powered-by: Servlet/3.1", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:22.911", + "timestampUnix": 1708934002911 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:22.911", + "timestampUnix": 1708934002911 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:53:21 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:22.911", + "timestampUnix": 1708934002911 + }, + { + "message": "header: content-language: en-US", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:22.911", + "timestampUnix": 1708934002911 + }, + { + "message": "header: content-length: 442", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:22.911", + "timestampUnix": 1708934002911 + }, + { + "message": "header: x-envoy-upstream-service-time: 2", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:22.911", + "timestampUnix": 1708934002911 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:22.911", + "timestampUnix": 1708934002911 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://reviews:9080 \"GET /reviews/0 HTTP/1.1\" 200 442", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:22.911", + "timestampUnix": 1708934002911 + }, + { + "message": "INFO:werkzeug:::ffff:127.0.0.6 - - [26/Feb/2024 07:53:22] \"GET /productpage HTTP/1.1\" 200 -", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:22.912", + "timestampUnix": 1708934002912 + }, + { + "message": "INFO:werkzeug:::ffff:127.0.0.1 - - [26/Feb/2024 07:53:22] \"GET /metrics HTTP/1.1\" 200 -", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:22.990", + "timestampUnix": 1708934002990 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): details:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:23.900", + "timestampUnix": 1708934003900 + }, + { + "message": "send: b'GET /details/0 HTTP/1.1\\r\\nHost: details:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: 32c295f365f51a89d40e4b7c350f9138\\r\\nX-B3-SpanId: 722bdd7f8aefead8\\r\\nX-B3-ParentSpanId: d40e4b7c350f9138\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: 034f2068-a892-914a-b6b4-0829ae8feb2f\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:53:23.903", + "timestampUnix": 1708934003903 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:23.903", + "timestampUnix": 1708934003903 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:23.903", + "timestampUnix": 1708934003903 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:23.903", + "timestampUnix": 1708934003903 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:53:23 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:23.903", + "timestampUnix": 1708934003903 + }, + { + "message": "header: content-length: 178", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:23.903", + "timestampUnix": 1708934003903 + }, + { + "message": "header: x-envoy-upstream-service-time: 1", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:23.903", + "timestampUnix": 1708934003903 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://details:9080 \"GET /details/0 HTTP/1.1\" 200 178", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:23.903", + "timestampUnix": 1708934003903 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): reviews:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:23.905", + "timestampUnix": 1708934003905 + }, + { + "message": "send: b'GET /reviews/0 HTTP/1.1\\r\\nHost: reviews:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: 32c295f365f51a89d40e4b7c350f9138\\r\\nX-B3-SpanId: 722bdd7f8aefead8\\r\\nX-B3-ParentSpanId: d40e4b7c350f9138\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: 034f2068-a892-914a-b6b4-0829ae8feb2f\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:53:23.906", + "timestampUnix": 1708934003906 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:23.906", + "timestampUnix": 1708934003906 + }, + { + "message": "header: x-powered-by: Servlet/3.1", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:23.906", + "timestampUnix": 1708934003906 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:23.906", + "timestampUnix": 1708934003906 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:53:23 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:23.906", + "timestampUnix": 1708934003906 + }, + { + "message": "header: content-language: en-US", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:23.906", + "timestampUnix": 1708934003906 + }, + { + "message": "header: content-length: 358", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:23.906", + "timestampUnix": 1708934003906 + }, + { + "message": "header: x-envoy-upstream-service-time: 0", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:23.906", + "timestampUnix": 1708934003906 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:23.906", + "timestampUnix": 1708934003906 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://reviews:9080 \"GET /reviews/0 HTTP/1.1\" 200 358", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:23.906", + "timestampUnix": 1708934003906 + }, + { + "message": "INFO:werkzeug:::ffff:127.0.0.6 - - [26/Feb/2024 07:53:23] \"GET /productpage HTTP/1.1\" 200 -", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:23.907", + "timestampUnix": 1708934003907 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): details:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:24.903", + "timestampUnix": 1708934004903 + }, + { + "message": "send: b'GET /details/0 HTTP/1.1\\r\\nHost: details:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: 964fce4b548b9e1daab3334b19797bdf\\r\\nX-B3-SpanId: a7b523238e286a2f\\r\\nX-B3-ParentSpanId: aab3334b19797bdf\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: 876f6f5c-7e18-9e1a-a3d9-759de5cdcc4e\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:53:24.907", + "timestampUnix": 1708934004907 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:24.907", + "timestampUnix": 1708934004907 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:24.907", + "timestampUnix": 1708934004907 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:24.907", + "timestampUnix": 1708934004907 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:53:24 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:24.907", + "timestampUnix": 1708934004907 + }, + { + "message": "header: content-length: 178", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:24.907", + "timestampUnix": 1708934004907 + }, + { + "message": "header: x-envoy-upstream-service-time: 2", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:24.907", + "timestampUnix": 1708934004907 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://details:9080 \"GET /details/0 HTTP/1.1\" 200 178", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:24.907", + "timestampUnix": 1708934004907 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): reviews:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:24.910", + "timestampUnix": 1708934004910 + }, + { + "message": "send: b'GET /reviews/0 HTTP/1.1\\r\\nHost: reviews:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: 964fce4b548b9e1daab3334b19797bdf\\r\\nX-B3-SpanId: a7b523238e286a2f\\r\\nX-B3-ParentSpanId: aab3334b19797bdf\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: 876f6f5c-7e18-9e1a-a3d9-759de5cdcc4e\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:53:24.916", + "timestampUnix": 1708934004916 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:24.916", + "timestampUnix": 1708934004916 + }, + { + "message": "header: x-powered-by: Servlet/3.1", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:24.916", + "timestampUnix": 1708934004916 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:24.916", + "timestampUnix": 1708934004916 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:53:24 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:24.916", + "timestampUnix": 1708934004916 + }, + { + "message": "header: content-language: en-US", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:24.916", + "timestampUnix": 1708934004916 + }, + { + "message": "header: content-length: 442", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:24.916", + "timestampUnix": 1708934004916 + }, + { + "message": "header: x-envoy-upstream-service-time: 4", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:24.916", + "timestampUnix": 1708934004916 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:24.916", + "timestampUnix": 1708934004916 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://reviews:9080 \"GET /reviews/0 HTTP/1.1\" 200 442", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:24.916", + "timestampUnix": 1708934004916 + }, + { + "message": "INFO:werkzeug:::ffff:127.0.0.6 - - [26/Feb/2024 07:53:24] \"GET /productpage HTTP/1.1\" 200 -", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:24.918", + "timestampUnix": 1708934004918 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): details:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:25.904", + "timestampUnix": 1708934005904 + }, + { + "message": "send: b'GET /details/0 HTTP/1.1\\r\\nHost: details:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: 3b1e1367c970bc58baf9b8477a1ab12a\\r\\nX-B3-SpanId: a14cd9ec0a6f6691\\r\\nX-B3-ParentSpanId: baf9b8477a1ab12a\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: 97e04030-c9ac-9c6d-9d17-24bbc284c73c\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:53:25.909", + "timestampUnix": 1708934005909 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:25.909", + "timestampUnix": 1708934005909 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:25.909", + "timestampUnix": 1708934005909 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:25.909", + "timestampUnix": 1708934005909 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:53:25 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:25.909", + "timestampUnix": 1708934005909 + }, + { + "message": "header: content-length: 178", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:25.909", + "timestampUnix": 1708934005909 + }, + { + "message": "header: x-envoy-upstream-service-time: 2", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:25.909", + "timestampUnix": 1708934005909 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://details:9080 \"GET /details/0 HTTP/1.1\" 200 178", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:25.909", + "timestampUnix": 1708934005909 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): reviews:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:25.910", + "timestampUnix": 1708934005910 + }, + { + "message": "send: b'GET /reviews/0 HTTP/1.1\\r\\nHost: reviews:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: 3b1e1367c970bc58baf9b8477a1ab12a\\r\\nX-B3-SpanId: a14cd9ec0a6f6691\\r\\nX-B3-ParentSpanId: baf9b8477a1ab12a\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: 97e04030-c9ac-9c6d-9d17-24bbc284c73c\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:53:25.916", + "timestampUnix": 1708934005916 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:25.916", + "timestampUnix": 1708934005916 + }, + { + "message": "header: x-powered-by: Servlet/3.1", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:25.916", + "timestampUnix": 1708934005916 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:25.916", + "timestampUnix": 1708934005916 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:53:24 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:25.916", + "timestampUnix": 1708934005916 + }, + { + "message": "header: content-language: en-US", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:25.916", + "timestampUnix": 1708934005916 + }, + { + "message": "header: content-length: 442", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:25.916", + "timestampUnix": 1708934005916 + }, + { + "message": "header: x-envoy-upstream-service-time: 3", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:25.916", + "timestampUnix": 1708934005916 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:25.916", + "timestampUnix": 1708934005916 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://reviews:9080 \"GET /reviews/0 HTTP/1.1\" 200 442", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:25.916", + "timestampUnix": 1708934005916 + }, + { + "message": "INFO:werkzeug:::ffff:127.0.0.6 - - [26/Feb/2024 07:53:25] \"GET /productpage HTTP/1.1\" 200 -", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:25.917", + "timestampUnix": 1708934005917 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): details:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:26.900", + "timestampUnix": 1708934006900 + }, + { + "message": "send: b'GET /details/0 HTTP/1.1\\r\\nHost: details:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: 3618208890bf2dec32f4d5b9a469c6bd\\r\\nX-B3-SpanId: 393222647a89843a\\r\\nX-B3-ParentSpanId: 32f4d5b9a469c6bd\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: 747bbf47-2552-9dee-b72d-cb4b32fde478\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:53:26.902", + "timestampUnix": 1708934006902 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:26.902", + "timestampUnix": 1708934006902 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:26.902", + "timestampUnix": 1708934006902 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:26.902", + "timestampUnix": 1708934006902 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:53:26 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:26.902", + "timestampUnix": 1708934006902 + }, + { + "message": "header: content-length: 178", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:26.902", + "timestampUnix": 1708934006902 + }, + { + "message": "header: x-envoy-upstream-service-time: 1", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:26.902", + "timestampUnix": 1708934006902 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://details:9080 \"GET /details/0 HTTP/1.1\" 200 178", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:26.902", + "timestampUnix": 1708934006902 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): reviews:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:26.904", + "timestampUnix": 1708934006904 + }, + { + "message": "send: b'GET /reviews/0 HTTP/1.1\\r\\nHost: reviews:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: 3618208890bf2dec32f4d5b9a469c6bd\\r\\nX-B3-SpanId: 393222647a89843a\\r\\nX-B3-ParentSpanId: 32f4d5b9a469c6bd\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: 747bbf47-2552-9dee-b72d-cb4b32fde478\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:53:26.908", + "timestampUnix": 1708934006908 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:26.908", + "timestampUnix": 1708934006908 + }, + { + "message": "header: x-powered-by: Servlet/3.1", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:26.908", + "timestampUnix": 1708934006908 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:26.908", + "timestampUnix": 1708934006908 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:53:26 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:26.908", + "timestampUnix": 1708934006908 + }, + { + "message": "header: content-language: en-US", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:26.908", + "timestampUnix": 1708934006908 + }, + { + "message": "header: content-length: 442", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:26.908", + "timestampUnix": 1708934006908 + }, + { + "message": "header: x-envoy-upstream-service-time: 2", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:26.908", + "timestampUnix": 1708934006908 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:26.908", + "timestampUnix": 1708934006908 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://reviews:9080 \"GET /reviews/0 HTTP/1.1\" 200 442", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:26.908", + "timestampUnix": 1708934006908 + }, + { + "message": "INFO:werkzeug:::ffff:127.0.0.6 - - [26/Feb/2024 07:53:26] \"GET /productpage HTTP/1.1\" 200 -", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:26.909", + "timestampUnix": 1708934006909 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): details:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:27.900", + "timestampUnix": 1708934007900 + }, + { + "message": "send: b'GET /details/0 HTTP/1.1\\r\\nHost: details:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: 9567e6811fd276584bc2b0c4f3043a01\\r\\nX-B3-SpanId: e3e5c5c56d4a7071\\r\\nX-B3-ParentSpanId: 4bc2b0c4f3043a01\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: c142aa7c-06c4-9fbd-9257-1f64fe06a6b7\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:53:27.902", + "timestampUnix": 1708934007902 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:27.902", + "timestampUnix": 1708934007902 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:27.902", + "timestampUnix": 1708934007902 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:27.902", + "timestampUnix": 1708934007902 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:53:27 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:27.902", + "timestampUnix": 1708934007902 + }, + { + "message": "header: content-length: 178", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:27.902", + "timestampUnix": 1708934007902 + }, + { + "message": "header: x-envoy-upstream-service-time: 1", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:27.902", + "timestampUnix": 1708934007902 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://details:9080 \"GET /details/0 HTTP/1.1\" 200 178", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:27.902", + "timestampUnix": 1708934007902 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): reviews:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:27.903", + "timestampUnix": 1708934007903 + }, + { + "message": "send: b'GET /reviews/0 HTTP/1.1\\r\\nHost: reviews:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: 9567e6811fd276584bc2b0c4f3043a01\\r\\nX-B3-SpanId: e3e5c5c56d4a7071\\r\\nX-B3-ParentSpanId: 4bc2b0c4f3043a01\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: c142aa7c-06c4-9fbd-9257-1f64fe06a6b7\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:53:27.907", + "timestampUnix": 1708934007907 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:27.907", + "timestampUnix": 1708934007907 + }, + { + "message": "header: x-powered-by: Servlet/3.1", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:27.907", + "timestampUnix": 1708934007907 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:27.907", + "timestampUnix": 1708934007907 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:53:26 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:27.907", + "timestampUnix": 1708934007907 + }, + { + "message": "header: content-language: en-US", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:27.907", + "timestampUnix": 1708934007907 + }, + { + "message": "header: content-length: 442", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:27.907", + "timestampUnix": 1708934007907 + }, + { + "message": "header: x-envoy-upstream-service-time: 2", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:27.907", + "timestampUnix": 1708934007907 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:27.907", + "timestampUnix": 1708934007907 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://reviews:9080 \"GET /reviews/0 HTTP/1.1\" 200 442", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:27.907", + "timestampUnix": 1708934007907 + }, + { + "message": "INFO:werkzeug:::ffff:127.0.0.6 - - [26/Feb/2024 07:53:27] \"GET /productpage HTTP/1.1\" 200 -", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:27.908", + "timestampUnix": 1708934007908 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): details:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:28.900", + "timestampUnix": 1708934008900 + }, + { + "message": "send: b'GET /details/0 HTTP/1.1\\r\\nHost: details:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: 5c1f44216f785008a806a7e9d679ff06\\r\\nX-B3-SpanId: 72f24dcfba5646e6\\r\\nX-B3-ParentSpanId: a806a7e9d679ff06\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: cb946c46-4c60-9dc6-9b49-e11875b743c8\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:53:28.902", + "timestampUnix": 1708934008902 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:28.902", + "timestampUnix": 1708934008902 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:28.902", + "timestampUnix": 1708934008902 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:28.902", + "timestampUnix": 1708934008902 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:53:28 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:28.902", + "timestampUnix": 1708934008902 + }, + { + "message": "header: content-length: 178", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:28.902", + "timestampUnix": 1708934008902 + }, + { + "message": "header: x-envoy-upstream-service-time: 1", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:28.902", + "timestampUnix": 1708934008902 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://details:9080 \"GET /details/0 HTTP/1.1\" 200 178", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:28.902", + "timestampUnix": 1708934008902 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): reviews:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:28.904", + "timestampUnix": 1708934008904 + }, + { + "message": "send: b'GET /reviews/0 HTTP/1.1\\r\\nHost: reviews:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: 5c1f44216f785008a806a7e9d679ff06\\r\\nX-B3-SpanId: 72f24dcfba5646e6\\r\\nX-B3-ParentSpanId: a806a7e9d679ff06\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: cb946c46-4c60-9dc6-9b49-e11875b743c8\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:53:28.909", + "timestampUnix": 1708934008909 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:28.909", + "timestampUnix": 1708934008909 + }, + { + "message": "header: x-powered-by: Servlet/3.1", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:28.909", + "timestampUnix": 1708934008909 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:28.909", + "timestampUnix": 1708934008909 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:53:28 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:28.909", + "timestampUnix": 1708934008909 + }, + { + "message": "header: content-language: en-US", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:28.909", + "timestampUnix": 1708934008909 + }, + { + "message": "header: content-length: 442", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:28.909", + "timestampUnix": 1708934008909 + }, + { + "message": "header: x-envoy-upstream-service-time: 3", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:28.909", + "timestampUnix": 1708934008909 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:28.909", + "timestampUnix": 1708934008909 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://reviews:9080 \"GET /reviews/0 HTTP/1.1\" 200 442", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:28.909", + "timestampUnix": 1708934008909 + }, + { + "message": "INFO:werkzeug:::ffff:127.0.0.6 - - [26/Feb/2024 07:53:28] \"GET /productpage HTTP/1.1\" 200 -", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:28.910", + "timestampUnix": 1708934008910 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): details:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:29.907", + "timestampUnix": 1708934009907 + }, + { + "message": "send: b'GET /details/0 HTTP/1.1\\r\\nHost: details:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: c83b7f3015d954f01adc6687ebb3bda4\\r\\nX-B3-SpanId: 87a386b0bb5c626a\\r\\nX-B3-ParentSpanId: 1adc6687ebb3bda4\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: c6be1688-be29-9abe-b34b-6acec895b2f0\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:53:29.916", + "timestampUnix": 1708934009916 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:29.916", + "timestampUnix": 1708934009916 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:29.916", + "timestampUnix": 1708934009916 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:29.916", + "timestampUnix": 1708934009916 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:53:29 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:29.916", + "timestampUnix": 1708934009916 + }, + { + "message": "header: content-length: 178", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:29.916", + "timestampUnix": 1708934009916 + }, + { + "message": "header: x-envoy-upstream-service-time: 4", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:29.916", + "timestampUnix": 1708934009916 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://details:9080 \"GET /details/0 HTTP/1.1\" 200 178", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:29.916", + "timestampUnix": 1708934009916 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): reviews:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:29.924", + "timestampUnix": 1708934009924 + }, + { + "message": "send: b'GET /reviews/0 HTTP/1.1\\r\\nHost: reviews:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: c83b7f3015d954f01adc6687ebb3bda4\\r\\nX-B3-SpanId: 87a386b0bb5c626a\\r\\nX-B3-ParentSpanId: 1adc6687ebb3bda4\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: c6be1688-be29-9abe-b34b-6acec895b2f0\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:53:29.934", + "timestampUnix": 1708934009934 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:29.934", + "timestampUnix": 1708934009934 + }, + { + "message": "header: x-powered-by: Servlet/3.1", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:29.934", + "timestampUnix": 1708934009934 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:29.934", + "timestampUnix": 1708934009934 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:53:29 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:29.934", + "timestampUnix": 1708934009934 + }, + { + "message": "header: content-language: en-US", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:29.934", + "timestampUnix": 1708934009934 + }, + { + "message": "header: content-length: 437", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:29.934", + "timestampUnix": 1708934009934 + }, + { + "message": "header: x-envoy-upstream-service-time: 7", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:29.934", + "timestampUnix": 1708934009934 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:29.934", + "timestampUnix": 1708934009934 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://reviews:9080 \"GET /reviews/0 HTTP/1.1\" 200 437", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:29.934", + "timestampUnix": 1708934009934 + }, + { + "message": "INFO:werkzeug:::ffff:127.0.0.6 - - [26/Feb/2024 07:53:29] \"GET /productpage HTTP/1.1\" 200 -", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:29.936", + "timestampUnix": 1708934009936 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): details:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:30.907", + "timestampUnix": 1708934010907 + }, + { + "message": "send: b'GET /details/0 HTTP/1.1\\r\\nHost: details:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: 756d38af94c754bb3d33e8cb06a39939\\r\\nX-B3-SpanId: ac5a5a2276caa90e\\r\\nX-B3-ParentSpanId: 3d33e8cb06a39939\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: 13bc6aa9-5b35-9995-b066-20425616dc39\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:53:30.913", + "timestampUnix": 1708934010913 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:30.913", + "timestampUnix": 1708934010913 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:30.913", + "timestampUnix": 1708934010913 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:30.913", + "timestampUnix": 1708934010913 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:53:30 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:30.913", + "timestampUnix": 1708934010913 + }, + { + "message": "header: content-length: 178", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:30.913", + "timestampUnix": 1708934010913 + }, + { + "message": "header: x-envoy-upstream-service-time: 2", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:30.913", + "timestampUnix": 1708934010913 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://details:9080 \"GET /details/0 HTTP/1.1\" 200 178", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:30.913", + "timestampUnix": 1708934010913 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): reviews:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:30.915", + "timestampUnix": 1708934010915 + }, + { + "message": "send: b'GET /reviews/0 HTTP/1.1\\r\\nHost: reviews:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: 756d38af94c754bb3d33e8cb06a39939\\r\\nX-B3-SpanId: ac5a5a2276caa90e\\r\\nX-B3-ParentSpanId: 3d33e8cb06a39939\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: 13bc6aa9-5b35-9995-b066-20425616dc39\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:53:30.917", + "timestampUnix": 1708934010917 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:30.917", + "timestampUnix": 1708934010917 + }, + { + "message": "header: x-powered-by: Servlet/3.1", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:30.917", + "timestampUnix": 1708934010917 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:30.917", + "timestampUnix": 1708934010917 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:53:30 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:30.917", + "timestampUnix": 1708934010917 + }, + { + "message": "header: content-language: en-US", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:30.917", + "timestampUnix": 1708934010917 + }, + { + "message": "header: content-length: 358", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:30.917", + "timestampUnix": 1708934010917 + }, + { + "message": "header: x-envoy-upstream-service-time: 1", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:30.917", + "timestampUnix": 1708934010917 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:30.917", + "timestampUnix": 1708934010917 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://reviews:9080 \"GET /reviews/0 HTTP/1.1\" 200 358", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:30.917", + "timestampUnix": 1708934010917 + }, + { + "message": "INFO:werkzeug:::ffff:127.0.0.6 - - [26/Feb/2024 07:53:30] \"GET /productpage HTTP/1.1\" 200 -", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:30.918", + "timestampUnix": 1708934010918 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): details:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:31.906", + "timestampUnix": 1708934011906 + }, + { + "message": "send: b'GET /details/0 HTTP/1.1\\r\\nHost: details:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: c36df897023a5bdcf27dd1ce1b3207b1\\r\\nX-B3-SpanId: 7a8fff7fa07893d9\\r\\nX-B3-ParentSpanId: f27dd1ce1b3207b1\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: 8674f4b6-0924-909a-b054-ee477088c43d\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:53:31.909", + "timestampUnix": 1708934011909 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:31.909", + "timestampUnix": 1708934011909 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:31.909", + "timestampUnix": 1708934011909 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:31.909", + "timestampUnix": 1708934011909 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:53:31 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:31.909", + "timestampUnix": 1708934011909 + }, + { + "message": "header: content-length: 178", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:31.909", + "timestampUnix": 1708934011909 + }, + { + "message": "header: x-envoy-upstream-service-time: 1", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:31.909", + "timestampUnix": 1708934011909 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://details:9080 \"GET /details/0 HTTP/1.1\" 200 178", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:31.909", + "timestampUnix": 1708934011909 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): reviews:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:31.911", + "timestampUnix": 1708934011911 + }, + { + "message": "send: b'GET /reviews/0 HTTP/1.1\\r\\nHost: reviews:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: c36df897023a5bdcf27dd1ce1b3207b1\\r\\nX-B3-SpanId: 7a8fff7fa07893d9\\r\\nX-B3-ParentSpanId: f27dd1ce1b3207b1\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: 8674f4b6-0924-909a-b054-ee477088c43d\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:53:31.916", + "timestampUnix": 1708934011916 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:31.916", + "timestampUnix": 1708934011916 + }, + { + "message": "header: x-powered-by: Servlet/3.1", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:31.916", + "timestampUnix": 1708934011916 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:31.916", + "timestampUnix": 1708934011916 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:53:31 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:31.916", + "timestampUnix": 1708934011916 + }, + { + "message": "header: content-language: en-US", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:31.916", + "timestampUnix": 1708934011916 + }, + { + "message": "header: content-length: 437", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:31.916", + "timestampUnix": 1708934011916 + }, + { + "message": "header: x-envoy-upstream-service-time: 3", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:31.916", + "timestampUnix": 1708934011916 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:31.916", + "timestampUnix": 1708934011916 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://reviews:9080 \"GET /reviews/0 HTTP/1.1\" 200 437", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:31.916", + "timestampUnix": 1708934011916 + }, + { + "message": "INFO:werkzeug:::ffff:127.0.0.6 - - [26/Feb/2024 07:53:31] \"GET /productpage HTTP/1.1\" 200 -", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:31.917", + "timestampUnix": 1708934011917 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): details:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:32.900", + "timestampUnix": 1708934012900 + }, + { + "message": "send: b'GET /details/0 HTTP/1.1\\r\\nHost: details:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: e1211ddd9013329de051449492a4e088\\r\\nX-B3-SpanId: a70a39b85dd85f28\\r\\nX-B3-ParentSpanId: e051449492a4e088\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: 74ac79c7-55dc-9eeb-962c-de180a98d96d\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:53:32.902", + "timestampUnix": 1708934012902 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:32.902", + "timestampUnix": 1708934012902 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:32.902", + "timestampUnix": 1708934012902 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:32.902", + "timestampUnix": 1708934012902 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:53:32 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:32.902", + "timestampUnix": 1708934012902 + }, + { + "message": "header: content-length: 178", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:32.902", + "timestampUnix": 1708934012902 + }, + { + "message": "header: x-envoy-upstream-service-time: 1", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:32.902", + "timestampUnix": 1708934012902 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://details:9080 \"GET /details/0 HTTP/1.1\" 200 178", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:32.902", + "timestampUnix": 1708934012902 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): reviews:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:32.904", + "timestampUnix": 1708934012904 + }, + { + "message": "send: b'GET /reviews/0 HTTP/1.1\\r\\nHost: reviews:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: e1211ddd9013329de051449492a4e088\\r\\nX-B3-SpanId: a70a39b85dd85f28\\r\\nX-B3-ParentSpanId: e051449492a4e088\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: 74ac79c7-55dc-9eeb-962c-de180a98d96d\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:53:32.907", + "timestampUnix": 1708934012907 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:32.907", + "timestampUnix": 1708934012907 + }, + { + "message": "header: x-powered-by: Servlet/3.1", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:32.907", + "timestampUnix": 1708934012907 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:32.907", + "timestampUnix": 1708934012907 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:53:32 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:32.907", + "timestampUnix": 1708934012907 + }, + { + "message": "header: content-language: en-US", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:32.907", + "timestampUnix": 1708934012907 + }, + { + "message": "header: content-length: 442", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:32.907", + "timestampUnix": 1708934012907 + }, + { + "message": "header: x-envoy-upstream-service-time: 2", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:32.907", + "timestampUnix": 1708934012907 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:32.907", + "timestampUnix": 1708934012907 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://reviews:9080 \"GET /reviews/0 HTTP/1.1\" 200 442", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:32.907", + "timestampUnix": 1708934012907 + }, + { + "message": "INFO:werkzeug:::ffff:127.0.0.6 - - [26/Feb/2024 07:53:32] \"GET /productpage HTTP/1.1\" 200 -", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:32.908", + "timestampUnix": 1708934012908 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): details:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:33.906", + "timestampUnix": 1708934013906 + }, + { + "message": "send: b'GET /details/0 HTTP/1.1\\r\\nHost: details:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: be0bc01f2961596f6aca7c54cac403d9\\r\\nX-B3-SpanId: ce87f8c90e012d12\\r\\nX-B3-ParentSpanId: 6aca7c54cac403d9\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: 1260c3c5-470e-9bf1-b476-bc66b716413d\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:53:33.908", + "timestampUnix": 1708934013908 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:33.908", + "timestampUnix": 1708934013908 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:33.908", + "timestampUnix": 1708934013908 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:33.908", + "timestampUnix": 1708934013908 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:53:33 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:33.908", + "timestampUnix": 1708934013908 + }, + { + "message": "header: content-length: 178", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:33.908", + "timestampUnix": 1708934013908 + }, + { + "message": "header: x-envoy-upstream-service-time: 1", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:33.908", + "timestampUnix": 1708934013908 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://details:9080 \"GET /details/0 HTTP/1.1\" 200 178", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:33.908", + "timestampUnix": 1708934013908 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): reviews:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:33.910", + "timestampUnix": 1708934013910 + }, + { + "message": "send: b'GET /reviews/0 HTTP/1.1\\r\\nHost: reviews:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: be0bc01f2961596f6aca7c54cac403d9\\r\\nX-B3-SpanId: ce87f8c90e012d12\\r\\nX-B3-ParentSpanId: 6aca7c54cac403d9\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: 1260c3c5-470e-9bf1-b476-bc66b716413d\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:53:33.915", + "timestampUnix": 1708934013915 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:33.915", + "timestampUnix": 1708934013915 + }, + { + "message": "header: x-powered-by: Servlet/3.1", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:33.915", + "timestampUnix": 1708934013915 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:33.915", + "timestampUnix": 1708934013915 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:53:33 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:33.915", + "timestampUnix": 1708934013915 + }, + { + "message": "header: content-language: en-US", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:33.915", + "timestampUnix": 1708934013915 + }, + { + "message": "header: content-length: 442", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:33.915", + "timestampUnix": 1708934013915 + }, + { + "message": "header: x-envoy-upstream-service-time: 2", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:33.915", + "timestampUnix": 1708934013915 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:33.915", + "timestampUnix": 1708934013915 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://reviews:9080 \"GET /reviews/0 HTTP/1.1\" 200 442", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:33.915", + "timestampUnix": 1708934013915 + }, + { + "message": "INFO:werkzeug:::ffff:127.0.0.6 - - [26/Feb/2024 07:53:33] \"GET /productpage HTTP/1.1\" 200 -", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:33.916", + "timestampUnix": 1708934013916 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): details:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:34.900", + "timestampUnix": 1708934014900 + }, + { + "message": "send: b'GET /details/0 HTTP/1.1\\r\\nHost: details:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: 95f113ac158991162396f15899af1ba7\\r\\nX-B3-SpanId: 5a9cd489d2958f86\\r\\nX-B3-ParentSpanId: 2396f15899af1ba7\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: f43fd741-1fd1-9fd8-bafc-603798fd5f79\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:53:34.903", + "timestampUnix": 1708934014903 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:34.903", + "timestampUnix": 1708934014903 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:34.903", + "timestampUnix": 1708934014903 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:34.903", + "timestampUnix": 1708934014903 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:53:34 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:34.903", + "timestampUnix": 1708934014903 + }, + { + "message": "header: content-length: 178", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:34.903", + "timestampUnix": 1708934014903 + }, + { + "message": "header: x-envoy-upstream-service-time: 1", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:34.903", + "timestampUnix": 1708934014903 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://details:9080 \"GET /details/0 HTTP/1.1\" 200 178", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:34.903", + "timestampUnix": 1708934014903 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): reviews:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:34.905", + "timestampUnix": 1708934014905 + }, + { + "message": "send: b'GET /reviews/0 HTTP/1.1\\r\\nHost: reviews:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: 95f113ac158991162396f15899af1ba7\\r\\nX-B3-SpanId: 5a9cd489d2958f86\\r\\nX-B3-ParentSpanId: 2396f15899af1ba7\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: f43fd741-1fd1-9fd8-bafc-603798fd5f79\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:53:34.907", + "timestampUnix": 1708934014907 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:34.907", + "timestampUnix": 1708934014907 + }, + { + "message": "header: x-powered-by: Servlet/3.1", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:34.907", + "timestampUnix": 1708934014907 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:34.907", + "timestampUnix": 1708934014907 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:53:34 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:34.907", + "timestampUnix": 1708934014907 + }, + { + "message": "header: content-language: en-US", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:34.907", + "timestampUnix": 1708934014907 + }, + { + "message": "header: content-length: 358", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:34.907", + "timestampUnix": 1708934014907 + }, + { + "message": "header: x-envoy-upstream-service-time: 0", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:34.907", + "timestampUnix": 1708934014907 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:34.907", + "timestampUnix": 1708934014907 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://reviews:9080 \"GET /reviews/0 HTTP/1.1\" 200 358", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:34.907", + "timestampUnix": 1708934014907 + }, + { + "message": "INFO:werkzeug:::ffff:127.0.0.6 - - [26/Feb/2024 07:53:34] \"GET /productpage HTTP/1.1\" 200 -", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:34.908", + "timestampUnix": 1708934014908 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): details:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:35.900", + "timestampUnix": 1708934015900 + }, + { + "message": "send: b'GET /details/0 HTTP/1.1\\r\\nHost: details:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: 4e209e56261a750fe18b9a40a71e1b40\\r\\nX-B3-SpanId: bfcad95c9c240467\\r\\nX-B3-ParentSpanId: e18b9a40a71e1b40\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: 20f028a4-6894-96c0-b479-62836717e13e\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:53:35.904", + "timestampUnix": 1708934015904 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:35.904", + "timestampUnix": 1708934015904 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:35.904", + "timestampUnix": 1708934015904 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:35.904", + "timestampUnix": 1708934015904 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:53:35 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:35.904", + "timestampUnix": 1708934015904 + }, + { + "message": "header: content-length: 178", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:35.904", + "timestampUnix": 1708934015904 + }, + { + "message": "header: x-envoy-upstream-service-time: 1", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:35.904", + "timestampUnix": 1708934015904 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://details:9080 \"GET /details/0 HTTP/1.1\" 200 178", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:35.904", + "timestampUnix": 1708934015904 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): reviews:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:35.905", + "timestampUnix": 1708934015905 + }, + { + "message": "send: b'GET /reviews/0 HTTP/1.1\\r\\nHost: reviews:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: 4e209e56261a750fe18b9a40a71e1b40\\r\\nX-B3-SpanId: bfcad95c9c240467\\r\\nX-B3-ParentSpanId: e18b9a40a71e1b40\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: 20f028a4-6894-96c0-b479-62836717e13e\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:53:35.909", + "timestampUnix": 1708934015909 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:35.909", + "timestampUnix": 1708934015909 + }, + { + "message": "header: x-powered-by: Servlet/3.1", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:35.909", + "timestampUnix": 1708934015909 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:35.909", + "timestampUnix": 1708934015909 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:53:35 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:35.910", + "timestampUnix": 1708934015910 + }, + { + "message": "header: content-language: en-US", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:35.910", + "timestampUnix": 1708934015910 + }, + { + "message": "header: content-length: 437", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:35.910", + "timestampUnix": 1708934015910 + }, + { + "message": "header: x-envoy-upstream-service-time: 2", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:35.910", + "timestampUnix": 1708934015910 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:35.910", + "timestampUnix": 1708934015910 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://reviews:9080 \"GET /reviews/0 HTTP/1.1\" 200 437", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:35.910", + "timestampUnix": 1708934015910 + }, + { + "message": "INFO:werkzeug:::ffff:127.0.0.6 - - [26/Feb/2024 07:53:35] \"GET /productpage HTTP/1.1\" 200 -", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:35.910", + "timestampUnix": 1708934015910 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): details:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:36.905", + "timestampUnix": 1708934016905 + }, + { + "message": "send: b'GET /details/0 HTTP/1.1\\r\\nHost: details:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: ac42588432b72d1c81439ff983b9098b\\r\\nX-B3-SpanId: 9da6cb7ee1ec33bc\\r\\nX-B3-ParentSpanId: 81439ff983b9098b\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: 4692f13b-cd01-93cc-8d21-80eb9552a4ef\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:53:36.907", + "timestampUnix": 1708934016907 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:36.907", + "timestampUnix": 1708934016907 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:36.907", + "timestampUnix": 1708934016907 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:36.907", + "timestampUnix": 1708934016907 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:53:36 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:36.907", + "timestampUnix": 1708934016907 + }, + { + "message": "header: content-length: 178", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:36.907", + "timestampUnix": 1708934016907 + }, + { + "message": "header: x-envoy-upstream-service-time: 1", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:36.907", + "timestampUnix": 1708934016907 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://details:9080 \"GET /details/0 HTTP/1.1\" 200 178", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:36.907", + "timestampUnix": 1708934016907 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): reviews:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:36.909", + "timestampUnix": 1708934016909 + }, + { + "message": "send: b'GET /reviews/0 HTTP/1.1\\r\\nHost: reviews:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: ac42588432b72d1c81439ff983b9098b\\r\\nX-B3-SpanId: 9da6cb7ee1ec33bc\\r\\nX-B3-ParentSpanId: 81439ff983b9098b\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: 4692f13b-cd01-93cc-8d21-80eb9552a4ef\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:53:36.912", + "timestampUnix": 1708934016912 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:36.912", + "timestampUnix": 1708934016912 + }, + { + "message": "header: x-powered-by: Servlet/3.1", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:36.912", + "timestampUnix": 1708934016912 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:36.912", + "timestampUnix": 1708934016912 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:53:36 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:36.912", + "timestampUnix": 1708934016912 + }, + { + "message": "header: content-language: en-US", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:36.912", + "timestampUnix": 1708934016912 + }, + { + "message": "header: content-length: 437", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:36.912", + "timestampUnix": 1708934016912 + }, + { + "message": "header: x-envoy-upstream-service-time: 2", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:36.912", + "timestampUnix": 1708934016912 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:36.912", + "timestampUnix": 1708934016912 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://reviews:9080 \"GET /reviews/0 HTTP/1.1\" 200 437", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:36.912", + "timestampUnix": 1708934016912 + }, + { + "message": "INFO:werkzeug:::ffff:127.0.0.6 - - [26/Feb/2024 07:53:36] \"GET /productpage HTTP/1.1\" 200 -", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:36.913", + "timestampUnix": 1708934016913 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): details:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:37.901", + "timestampUnix": 1708934017901 + }, + { + "message": "send: b'GET /details/0 HTTP/1.1\\r\\nHost: details:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: 3ac29c2dbc96c0b312d3eff0f6b4f7f6\\r\\nX-B3-SpanId: e227b617c1b41dc3\\r\\nX-B3-ParentSpanId: 12d3eff0f6b4f7f6\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: 3751f46a-c796-94bc-8063-2e545eb62a3b\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:53:37.903", + "timestampUnix": 1708934017903 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:37.903", + "timestampUnix": 1708934017903 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:37.903", + "timestampUnix": 1708934017903 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:37.903", + "timestampUnix": 1708934017903 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:53:37 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:37.903", + "timestampUnix": 1708934017903 + }, + { + "message": "header: content-length: 178", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:37.903", + "timestampUnix": 1708934017903 + }, + { + "message": "header: x-envoy-upstream-service-time: 1", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:37.903", + "timestampUnix": 1708934017903 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://details:9080 \"GET /details/0 HTTP/1.1\" 200 178", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:37.903", + "timestampUnix": 1708934017903 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): reviews:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:37.905", + "timestampUnix": 1708934017905 + }, + { + "message": "send: b'GET /reviews/0 HTTP/1.1\\r\\nHost: reviews:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: 3ac29c2dbc96c0b312d3eff0f6b4f7f6\\r\\nX-B3-SpanId: e227b617c1b41dc3\\r\\nX-B3-ParentSpanId: 12d3eff0f6b4f7f6\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: 3751f46a-c796-94bc-8063-2e545eb62a3b\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:53:37.908", + "timestampUnix": 1708934017908 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:37.908", + "timestampUnix": 1708934017908 + }, + { + "message": "header: x-powered-by: Servlet/3.1", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:37.908", + "timestampUnix": 1708934017908 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:37.908", + "timestampUnix": 1708934017908 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:53:36 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:37.908", + "timestampUnix": 1708934017908 + }, + { + "message": "header: content-language: en-US", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:37.908", + "timestampUnix": 1708934017908 + }, + { + "message": "header: content-length: 437", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:37.908", + "timestampUnix": 1708934017908 + }, + { + "message": "header: x-envoy-upstream-service-time: 2", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:37.908", + "timestampUnix": 1708934017908 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:37.908", + "timestampUnix": 1708934017908 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://reviews:9080 \"GET /reviews/0 HTTP/1.1\" 200 437", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:37.908", + "timestampUnix": 1708934017908 + }, + { + "message": "INFO:werkzeug:::ffff:127.0.0.6 - - [26/Feb/2024 07:53:37] \"GET /productpage HTTP/1.1\" 200 -", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:37.909", + "timestampUnix": 1708934017909 + }, + { + "message": "INFO:werkzeug:::ffff:127.0.0.1 - - [26/Feb/2024 07:53:37] \"GET /metrics HTTP/1.1\" 200 -", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:37.991", + "timestampUnix": 1708934017991 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): details:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:38.907", + "timestampUnix": 1708934018907 + }, + { + "message": "send: b'GET /details/0 HTTP/1.1\\r\\nHost: details:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: 38f37963b37965d2214b6580aaf46d11\\r\\nX-B3-SpanId: 941b8818d25d3ed2\\r\\nX-B3-ParentSpanId: 214b6580aaf46d11\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: 35cf7e33-76c8-9341-af15-daebc73155df\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:53:38.912", + "timestampUnix": 1708934018912 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:38.912", + "timestampUnix": 1708934018912 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:38.912", + "timestampUnix": 1708934018912 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:38.912", + "timestampUnix": 1708934018912 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:53:38 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:38.912", + "timestampUnix": 1708934018912 + }, + { + "message": "header: content-length: 178", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:38.912", + "timestampUnix": 1708934018912 + }, + { + "message": "header: x-envoy-upstream-service-time: 1", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:38.912", + "timestampUnix": 1708934018912 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://details:9080 \"GET /details/0 HTTP/1.1\" 200 178", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:38.912", + "timestampUnix": 1708934018912 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): reviews:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:38.914", + "timestampUnix": 1708934018914 + }, + { + "message": "send: b'GET /reviews/0 HTTP/1.1\\r\\nHost: reviews:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: 38f37963b37965d2214b6580aaf46d11\\r\\nX-B3-SpanId: 941b8818d25d3ed2\\r\\nX-B3-ParentSpanId: 214b6580aaf46d11\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: 35cf7e33-76c8-9341-af15-daebc73155df\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:53:38.918", + "timestampUnix": 1708934018918 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:38.918", + "timestampUnix": 1708934018918 + }, + { + "message": "header: x-powered-by: Servlet/3.1", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:38.918", + "timestampUnix": 1708934018918 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:38.918", + "timestampUnix": 1708934018918 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:53:38 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:38.918", + "timestampUnix": 1708934018918 + }, + { + "message": "header: content-language: en-US", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:38.918", + "timestampUnix": 1708934018918 + }, + { + "message": "header: content-length: 442", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:38.918", + "timestampUnix": 1708934018918 + }, + { + "message": "header: x-envoy-upstream-service-time: 3", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:38.918", + "timestampUnix": 1708934018918 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:38.918", + "timestampUnix": 1708934018918 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://reviews:9080 \"GET /reviews/0 HTTP/1.1\" 200 442", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:38.918", + "timestampUnix": 1708934018918 + }, + { + "message": "INFO:werkzeug:::ffff:127.0.0.6 - - [26/Feb/2024 07:53:38] \"GET /productpage HTTP/1.1\" 200 -", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:38.919", + "timestampUnix": 1708934018919 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): details:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:39.907", + "timestampUnix": 1708934019907 + }, + { + "message": "send: b'GET /details/0 HTTP/1.1\\r\\nHost: details:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: 79987d4f581bcb0f044985dc63dc1a82\\r\\nX-B3-SpanId: df4453a053faf358\\r\\nX-B3-ParentSpanId: 044985dc63dc1a82\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: 979faaac-663e-962b-8902-3b0b9ef1c6f4\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:53:39.911", + "timestampUnix": 1708934019911 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:39.911", + "timestampUnix": 1708934019911 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:39.911", + "timestampUnix": 1708934019911 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:39.911", + "timestampUnix": 1708934019911 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:53:39 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:39.911", + "timestampUnix": 1708934019911 + }, + { + "message": "header: content-length: 178", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:39.911", + "timestampUnix": 1708934019911 + }, + { + "message": "header: x-envoy-upstream-service-time: 1", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:39.911", + "timestampUnix": 1708934019911 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://details:9080 \"GET /details/0 HTTP/1.1\" 200 178", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:39.911", + "timestampUnix": 1708934019911 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): reviews:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:39.913", + "timestampUnix": 1708934019913 + }, + { + "message": "send: b'GET /reviews/0 HTTP/1.1\\r\\nHost: reviews:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: 79987d4f581bcb0f044985dc63dc1a82\\r\\nX-B3-SpanId: df4453a053faf358\\r\\nX-B3-ParentSpanId: 044985dc63dc1a82\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: 979faaac-663e-962b-8902-3b0b9ef1c6f4\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:53:39.917", + "timestampUnix": 1708934019917 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:39.917", + "timestampUnix": 1708934019917 + }, + { + "message": "header: x-powered-by: Servlet/3.1", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:39.917", + "timestampUnix": 1708934019917 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:39.917", + "timestampUnix": 1708934019917 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:53:38 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:39.917", + "timestampUnix": 1708934019917 + }, + { + "message": "header: content-language: en-US", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:39.917", + "timestampUnix": 1708934019917 + }, + { + "message": "header: content-length: 442", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:39.917", + "timestampUnix": 1708934019917 + }, + { + "message": "header: x-envoy-upstream-service-time: 3", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:39.917", + "timestampUnix": 1708934019917 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:39.917", + "timestampUnix": 1708934019917 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://reviews:9080 \"GET /reviews/0 HTTP/1.1\" 200 442", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:39.917", + "timestampUnix": 1708934019917 + }, + { + "message": "INFO:werkzeug:::ffff:127.0.0.6 - - [26/Feb/2024 07:53:39] \"GET /productpage HTTP/1.1\" 200 -", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:39.918", + "timestampUnix": 1708934019918 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): details:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:40.908", + "timestampUnix": 1708934020908 + }, + { + "message": "send: b'GET /details/0 HTTP/1.1\\r\\nHost: details:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: a9991738c9c871801baa54269c29ec78\\r\\nX-B3-SpanId: d27e8c27fbec8423\\r\\nX-B3-ParentSpanId: 1baa54269c29ec78\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: 4db7728c-c2ab-9069-9366-7237ac0dce9d\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:53:40.917", + "timestampUnix": 1708934020917 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:40.917", + "timestampUnix": 1708934020917 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:40.917", + "timestampUnix": 1708934020917 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:40.917", + "timestampUnix": 1708934020917 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:53:40 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:40.917", + "timestampUnix": 1708934020917 + }, + { + "message": "header: content-length: 178", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:40.917", + "timestampUnix": 1708934020917 + }, + { + "message": "header: x-envoy-upstream-service-time: 5", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:40.917", + "timestampUnix": 1708934020917 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://details:9080 \"GET /details/0 HTTP/1.1\" 200 178", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:40.917", + "timestampUnix": 1708934020917 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): reviews:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:40.919", + "timestampUnix": 1708934020919 + }, + { + "message": "send: b'GET /reviews/0 HTTP/1.1\\r\\nHost: reviews:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: a9991738c9c871801baa54269c29ec78\\r\\nX-B3-SpanId: d27e8c27fbec8423\\r\\nX-B3-ParentSpanId: 1baa54269c29ec78\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: 4db7728c-c2ab-9069-9366-7237ac0dce9d\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:53:40.924", + "timestampUnix": 1708934020924 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:40.924", + "timestampUnix": 1708934020924 + }, + { + "message": "header: x-powered-by: Servlet/3.1", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:40.924", + "timestampUnix": 1708934020924 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:40.924", + "timestampUnix": 1708934020924 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:53:40 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:40.924", + "timestampUnix": 1708934020924 + }, + { + "message": "header: content-language: en-US", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:40.924", + "timestampUnix": 1708934020924 + }, + { + "message": "header: content-length: 437", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:40.924", + "timestampUnix": 1708934020924 + }, + { + "message": "header: x-envoy-upstream-service-time: 3", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:40.924", + "timestampUnix": 1708934020924 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:40.924", + "timestampUnix": 1708934020924 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://reviews:9080 \"GET /reviews/0 HTTP/1.1\" 200 437", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:40.924", + "timestampUnix": 1708934020924 + }, + { + "message": "INFO:werkzeug:::ffff:127.0.0.6 - - [26/Feb/2024 07:53:40] \"GET /productpage HTTP/1.1\" 200 -", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:40.925", + "timestampUnix": 1708934020925 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): details:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:41.900", + "timestampUnix": 1708934021900 + }, + { + "message": "send: b'GET /details/0 HTTP/1.1\\r\\nHost: details:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: 8768f9626f480fba0dfc64c4048d96f7\\r\\nX-B3-SpanId: 1947947a9e70f41e\\r\\nX-B3-ParentSpanId: 0dfc64c4048d96f7\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: b0c183fd-a7b0-9d56-b88f-3ec5c3779606\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:53:41.902", + "timestampUnix": 1708934021902 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:41.902", + "timestampUnix": 1708934021902 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:41.902", + "timestampUnix": 1708934021902 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:41.902", + "timestampUnix": 1708934021902 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:53:41 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:41.902", + "timestampUnix": 1708934021902 + }, + { + "message": "header: content-length: 178", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:41.902", + "timestampUnix": 1708934021902 + }, + { + "message": "header: x-envoy-upstream-service-time: 1", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:41.902", + "timestampUnix": 1708934021902 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://details:9080 \"GET /details/0 HTTP/1.1\" 200 178", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:41.902", + "timestampUnix": 1708934021902 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): reviews:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:41.904", + "timestampUnix": 1708934021904 + }, + { + "message": "send: b'GET /reviews/0 HTTP/1.1\\r\\nHost: reviews:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: 8768f9626f480fba0dfc64c4048d96f7\\r\\nX-B3-SpanId: 1947947a9e70f41e\\r\\nX-B3-ParentSpanId: 0dfc64c4048d96f7\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: b0c183fd-a7b0-9d56-b88f-3ec5c3779606\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:53:41.907", + "timestampUnix": 1708934021907 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:41.907", + "timestampUnix": 1708934021907 + }, + { + "message": "header: x-powered-by: Servlet/3.1", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:41.907", + "timestampUnix": 1708934021907 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:41.907", + "timestampUnix": 1708934021907 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:53:40 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:41.907", + "timestampUnix": 1708934021907 + }, + { + "message": "header: content-language: en-US", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:41.907", + "timestampUnix": 1708934021907 + }, + { + "message": "header: content-length: 437", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:41.907", + "timestampUnix": 1708934021907 + }, + { + "message": "header: x-envoy-upstream-service-time: 2", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:41.907", + "timestampUnix": 1708934021907 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:41.907", + "timestampUnix": 1708934021907 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://reviews:9080 \"GET /reviews/0 HTTP/1.1\" 200 437", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:41.907", + "timestampUnix": 1708934021907 + }, + { + "message": "INFO:werkzeug:::ffff:127.0.0.6 - - [26/Feb/2024 07:53:41] \"GET /productpage HTTP/1.1\" 200 -", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:41.908", + "timestampUnix": 1708934021908 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): details:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:42.908", + "timestampUnix": 1708934022908 + }, + { + "message": "send: b'GET /details/0 HTTP/1.1\\r\\nHost: details:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: 7f09e78bb1c5b4f2a676296a06ed9062\\r\\nX-B3-SpanId: c38444be692bd749\\r\\nX-B3-ParentSpanId: a676296a06ed9062\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: c64a7001-df06-9b3f-bbcb-cdc45791ef89\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:53:42.915", + "timestampUnix": 1708934022915 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:42.915", + "timestampUnix": 1708934022915 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:42.915", + "timestampUnix": 1708934022915 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:42.915", + "timestampUnix": 1708934022915 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:53:42 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:42.915", + "timestampUnix": 1708934022915 + }, + { + "message": "header: content-length: 178", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:42.915", + "timestampUnix": 1708934022915 + }, + { + "message": "header: x-envoy-upstream-service-time: 3", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:42.915", + "timestampUnix": 1708934022915 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://details:9080 \"GET /details/0 HTTP/1.1\" 200 178", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:42.915", + "timestampUnix": 1708934022915 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): reviews:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:42.921", + "timestampUnix": 1708934022921 + }, + { + "message": "send: b'GET /reviews/0 HTTP/1.1\\r\\nHost: reviews:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: 7f09e78bb1c5b4f2a676296a06ed9062\\r\\nX-B3-SpanId: c38444be692bd749\\r\\nX-B3-ParentSpanId: a676296a06ed9062\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: c64a7001-df06-9b3f-bbcb-cdc45791ef89\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:53:42.933", + "timestampUnix": 1708934022933 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:42.933", + "timestampUnix": 1708934022933 + }, + { + "message": "header: x-powered-by: Servlet/3.1", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:42.933", + "timestampUnix": 1708934022933 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:42.933", + "timestampUnix": 1708934022933 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:53:42 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:42.933", + "timestampUnix": 1708934022933 + }, + { + "message": "header: content-language: en-US", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:42.933", + "timestampUnix": 1708934022933 + }, + { + "message": "header: content-length: 437", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:42.933", + "timestampUnix": 1708934022933 + }, + { + "message": "header: x-envoy-upstream-service-time: 8", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:42.933", + "timestampUnix": 1708934022933 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:42.933", + "timestampUnix": 1708934022933 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://reviews:9080 \"GET /reviews/0 HTTP/1.1\" 200 437", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:42.933", + "timestampUnix": 1708934022933 + }, + { + "message": "INFO:werkzeug:::ffff:127.0.0.6 - - [26/Feb/2024 07:53:42] \"GET /productpage HTTP/1.1\" 200 -", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:42.936", + "timestampUnix": 1708934022936 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): details:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:43.907", + "timestampUnix": 1708934023907 + }, + { + "message": "send: b'GET /details/0 HTTP/1.1\\r\\nHost: details:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: 742fe34d73dac83f58539c82682f4f0c\\r\\nX-B3-SpanId: cf929c99b7ace42c\\r\\nX-B3-ParentSpanId: 58539c82682f4f0c\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: 0b512189-0994-93d8-a578-b52dcf96b2e9\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:53:43.915", + "timestampUnix": 1708934023915 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:43.915", + "timestampUnix": 1708934023915 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:43.915", + "timestampUnix": 1708934023915 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:43.915", + "timestampUnix": 1708934023915 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:53:43 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:43.915", + "timestampUnix": 1708934023915 + }, + { + "message": "header: content-length: 178", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:43.915", + "timestampUnix": 1708934023915 + }, + { + "message": "header: x-envoy-upstream-service-time: 3", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:43.915", + "timestampUnix": 1708934023915 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://details:9080 \"GET /details/0 HTTP/1.1\" 200 178", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:43.915", + "timestampUnix": 1708934023915 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): reviews:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:43.920", + "timestampUnix": 1708934023920 + }, + { + "message": "send: b'GET /reviews/0 HTTP/1.1\\r\\nHost: reviews:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: 742fe34d73dac83f58539c82682f4f0c\\r\\nX-B3-SpanId: cf929c99b7ace42c\\r\\nX-B3-ParentSpanId: 58539c82682f4f0c\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: 0b512189-0994-93d8-a578-b52dcf96b2e9\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:53:43.932", + "timestampUnix": 1708934023932 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:43.932", + "timestampUnix": 1708934023932 + }, + { + "message": "header: x-powered-by: Servlet/3.1", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:43.932", + "timestampUnix": 1708934023932 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:43.932", + "timestampUnix": 1708934023932 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:53:43 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:43.932", + "timestampUnix": 1708934023932 + }, + { + "message": "header: content-language: en-US", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:43.932", + "timestampUnix": 1708934023932 + }, + { + "message": "header: content-length: 442", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:43.932", + "timestampUnix": 1708934023932 + }, + { + "message": "header: x-envoy-upstream-service-time: 8", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:43.932", + "timestampUnix": 1708934023932 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:43.932", + "timestampUnix": 1708934023932 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://reviews:9080 \"GET /reviews/0 HTTP/1.1\" 200 442", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:43.932", + "timestampUnix": 1708934023932 + }, + { + "message": "INFO:werkzeug:::ffff:127.0.0.6 - - [26/Feb/2024 07:53:43] \"GET /productpage HTTP/1.1\" 200 -", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:43.935", + "timestampUnix": 1708934023935 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): details:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:44.901", + "timestampUnix": 1708934024901 + }, + { + "message": "send: b'GET /details/0 HTTP/1.1\\r\\nHost: details:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: b7fc67bb7634271154314ca03e234680\\r\\nX-B3-SpanId: 5990bd6cc7dd2c94\\r\\nX-B3-ParentSpanId: 54314ca03e234680\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: 6c7e1f02-0eec-98da-886a-805e9252a498\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:53:44.903", + "timestampUnix": 1708934024903 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:44.903", + "timestampUnix": 1708934024903 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:44.903", + "timestampUnix": 1708934024903 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:44.903", + "timestampUnix": 1708934024903 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:53:44 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:44.903", + "timestampUnix": 1708934024903 + }, + { + "message": "header: content-length: 178", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:44.903", + "timestampUnix": 1708934024903 + }, + { + "message": "header: x-envoy-upstream-service-time: 1", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:44.903", + "timestampUnix": 1708934024903 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://details:9080 \"GET /details/0 HTTP/1.1\" 200 178", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:44.903", + "timestampUnix": 1708934024903 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): reviews:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:44.905", + "timestampUnix": 1708934024905 + }, + { + "message": "send: b'GET /reviews/0 HTTP/1.1\\r\\nHost: reviews:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: b7fc67bb7634271154314ca03e234680\\r\\nX-B3-SpanId: 5990bd6cc7dd2c94\\r\\nX-B3-ParentSpanId: 54314ca03e234680\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: 6c7e1f02-0eec-98da-886a-805e9252a498\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:53:44.909", + "timestampUnix": 1708934024909 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:44.909", + "timestampUnix": 1708934024909 + }, + { + "message": "header: x-powered-by: Servlet/3.1", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:44.909", + "timestampUnix": 1708934024909 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:44.909", + "timestampUnix": 1708934024909 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:53:44 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:44.909", + "timestampUnix": 1708934024909 + }, + { + "message": "header: content-language: en-US", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:44.909", + "timestampUnix": 1708934024909 + }, + { + "message": "header: content-length: 437", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:44.909", + "timestampUnix": 1708934024909 + }, + { + "message": "header: x-envoy-upstream-service-time: 2", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:44.909", + "timestampUnix": 1708934024909 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:44.909", + "timestampUnix": 1708934024909 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://reviews:9080 \"GET /reviews/0 HTTP/1.1\" 200 437", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:44.909", + "timestampUnix": 1708934024909 + }, + { + "message": "INFO:werkzeug:::ffff:127.0.0.6 - - [26/Feb/2024 07:53:44] \"GET /productpage HTTP/1.1\" 200 -", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:44.910", + "timestampUnix": 1708934024910 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): details:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:45.900", + "timestampUnix": 1708934025900 + }, + { + "message": "send: b'GET /details/0 HTTP/1.1\\r\\nHost: details:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: f1760e2ac82eb67287ebfbab2b03b07f\\r\\nX-B3-SpanId: 41a7813c261274d0\\r\\nX-B3-ParentSpanId: 87ebfbab2b03b07f\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: ae9848f8-b223-9e43-bc06-703adf3d16b7\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:53:45.902", + "timestampUnix": 1708934025902 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:45.902", + "timestampUnix": 1708934025902 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:45.902", + "timestampUnix": 1708934025902 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:45.902", + "timestampUnix": 1708934025902 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:53:45 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:45.902", + "timestampUnix": 1708934025902 + }, + { + "message": "header: content-length: 178", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:45.902", + "timestampUnix": 1708934025902 + }, + { + "message": "header: x-envoy-upstream-service-time: 1", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:45.902", + "timestampUnix": 1708934025902 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://details:9080 \"GET /details/0 HTTP/1.1\" 200 178", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:45.902", + "timestampUnix": 1708934025902 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): reviews:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:45.904", + "timestampUnix": 1708934025904 + }, + { + "message": "send: b'GET /reviews/0 HTTP/1.1\\r\\nHost: reviews:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: f1760e2ac82eb67287ebfbab2b03b07f\\r\\nX-B3-SpanId: 41a7813c261274d0\\r\\nX-B3-ParentSpanId: 87ebfbab2b03b07f\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: ae9848f8-b223-9e43-bc06-703adf3d16b7\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:53:45.906", + "timestampUnix": 1708934025906 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:45.906", + "timestampUnix": 1708934025906 + }, + { + "message": "header: x-powered-by: Servlet/3.1", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:45.906", + "timestampUnix": 1708934025906 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:45.906", + "timestampUnix": 1708934025906 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:53:45 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:45.906", + "timestampUnix": 1708934025906 + }, + { + "message": "header: content-language: en-US", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:45.906", + "timestampUnix": 1708934025906 + }, + { + "message": "header: content-length: 358", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:45.906", + "timestampUnix": 1708934025906 + }, + { + "message": "header: x-envoy-upstream-service-time: 0", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:45.906", + "timestampUnix": 1708934025906 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:45.906", + "timestampUnix": 1708934025906 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://reviews:9080 \"GET /reviews/0 HTTP/1.1\" 200 358", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:45.906", + "timestampUnix": 1708934025906 + }, + { + "message": "INFO:werkzeug:::ffff:127.0.0.6 - - [26/Feb/2024 07:53:45] \"GET /productpage HTTP/1.1\" 200 -", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:45.907", + "timestampUnix": 1708934025907 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): details:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:46.906", + "timestampUnix": 1708934026906 + }, + { + "message": "send: b'GET /details/0 HTTP/1.1\\r\\nHost: details:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: fb9ced8e58cfaf678e84dd282523fec\\r\\nX-B3-SpanId: 4c10e65e75605eca\\r\\nX-B3-ParentSpanId: 78e84dd282523fec\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: 485370a1-caaa-94c9-930d-9aefc2d1f2e3\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:53:46.909", + "timestampUnix": 1708934026909 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:46.909", + "timestampUnix": 1708934026909 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:46.909", + "timestampUnix": 1708934026909 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:46.909", + "timestampUnix": 1708934026909 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:53:46 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:46.909", + "timestampUnix": 1708934026909 + }, + { + "message": "header: content-length: 178", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:46.909", + "timestampUnix": 1708934026909 + }, + { + "message": "header: x-envoy-upstream-service-time: 1", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:46.909", + "timestampUnix": 1708934026909 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://details:9080 \"GET /details/0 HTTP/1.1\" 200 178", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:46.909", + "timestampUnix": 1708934026909 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): reviews:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:46.910", + "timestampUnix": 1708934026910 + }, + { + "message": "send: b'GET /reviews/0 HTTP/1.1\\r\\nHost: reviews:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: fb9ced8e58cfaf678e84dd282523fec\\r\\nX-B3-SpanId: 4c10e65e75605eca\\r\\nX-B3-ParentSpanId: 78e84dd282523fec\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: 485370a1-caaa-94c9-930d-9aefc2d1f2e3\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:53:46.913", + "timestampUnix": 1708934026913 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:46.913", + "timestampUnix": 1708934026913 + }, + { + "message": "header: x-powered-by: Servlet/3.1", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:46.913", + "timestampUnix": 1708934026913 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:46.913", + "timestampUnix": 1708934026913 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:53:46 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:46.913", + "timestampUnix": 1708934026913 + }, + { + "message": "header: content-language: en-US", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:46.913", + "timestampUnix": 1708934026913 + }, + { + "message": "header: content-length: 358", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:46.913", + "timestampUnix": 1708934026913 + }, + { + "message": "header: x-envoy-upstream-service-time: 1", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:46.913", + "timestampUnix": 1708934026913 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:46.913", + "timestampUnix": 1708934026913 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://reviews:9080 \"GET /reviews/0 HTTP/1.1\" 200 358", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:46.913", + "timestampUnix": 1708934026913 + }, + { + "message": "INFO:werkzeug:::ffff:127.0.0.6 - - [26/Feb/2024 07:53:46] \"GET /productpage HTTP/1.1\" 200 -", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:46.914", + "timestampUnix": 1708934026914 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): details:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:47.900", + "timestampUnix": 1708934027900 + }, + { + "message": "send: b'GET /details/0 HTTP/1.1\\r\\nHost: details:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: 3b8b65065a0679d0779fae29a5eb188f\\r\\nX-B3-SpanId: d7906b2829f75579\\r\\nX-B3-ParentSpanId: 779fae29a5eb188f\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: 25f24dc1-4714-938f-829c-0f857cbfafcc\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:53:47.902", + "timestampUnix": 1708934027902 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:47.902", + "timestampUnix": 1708934027902 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:47.902", + "timestampUnix": 1708934027902 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:47.902", + "timestampUnix": 1708934027902 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:53:47 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:47.902", + "timestampUnix": 1708934027902 + }, + { + "message": "header: content-length: 178", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:47.902", + "timestampUnix": 1708934027902 + }, + { + "message": "header: x-envoy-upstream-service-time: 1", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:47.902", + "timestampUnix": 1708934027902 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://details:9080 \"GET /details/0 HTTP/1.1\" 200 178", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:47.902", + "timestampUnix": 1708934027902 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): reviews:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:47.904", + "timestampUnix": 1708934027904 + }, + { + "message": "send: b'GET /reviews/0 HTTP/1.1\\r\\nHost: reviews:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: 3b8b65065a0679d0779fae29a5eb188f\\r\\nX-B3-SpanId: d7906b2829f75579\\r\\nX-B3-ParentSpanId: 779fae29a5eb188f\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: 25f24dc1-4714-938f-829c-0f857cbfafcc\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:53:47.906", + "timestampUnix": 1708934027906 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:47.906", + "timestampUnix": 1708934027906 + }, + { + "message": "header: x-powered-by: Servlet/3.1", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:47.906", + "timestampUnix": 1708934027906 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:47.906", + "timestampUnix": 1708934027906 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:53:46 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:47.906", + "timestampUnix": 1708934027906 + }, + { + "message": "header: content-language: en-US", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:47.906", + "timestampUnix": 1708934027906 + }, + { + "message": "header: content-length: 358", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:47.906", + "timestampUnix": 1708934027906 + }, + { + "message": "header: x-envoy-upstream-service-time: 0", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:47.906", + "timestampUnix": 1708934027906 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:47.906", + "timestampUnix": 1708934027906 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://reviews:9080 \"GET /reviews/0 HTTP/1.1\" 200 358", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:47.906", + "timestampUnix": 1708934027906 + }, + { + "message": "INFO:werkzeug:::ffff:127.0.0.6 - - [26/Feb/2024 07:53:47] \"GET /productpage HTTP/1.1\" 200 -", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:47.907", + "timestampUnix": 1708934027907 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): details:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:48.902", + "timestampUnix": 1708934028902 + }, + { + "message": "send: b'GET /details/0 HTTP/1.1\\r\\nHost: details:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: 4744956a29a0b1373403d24eb45a4eb0\\r\\nX-B3-SpanId: 39fea0853c0a57f8\\r\\nX-B3-ParentSpanId: 3403d24eb45a4eb0\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: 6117da20-3dc5-99f5-8869-1ae75c1d0b86\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:53:48.907", + "timestampUnix": 1708934028907 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:48.907", + "timestampUnix": 1708934028907 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:48.907", + "timestampUnix": 1708934028907 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:48.907", + "timestampUnix": 1708934028907 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:53:48 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:48.907", + "timestampUnix": 1708934028907 + }, + { + "message": "header: content-length: 178", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:48.907", + "timestampUnix": 1708934028907 + }, + { + "message": "header: x-envoy-upstream-service-time: 2", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:48.907", + "timestampUnix": 1708934028907 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://details:9080 \"GET /details/0 HTTP/1.1\" 200 178", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:48.907", + "timestampUnix": 1708934028907 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): reviews:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:48.909", + "timestampUnix": 1708934028909 + }, + { + "message": "send: b'GET /reviews/0 HTTP/1.1\\r\\nHost: reviews:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: 4744956a29a0b1373403d24eb45a4eb0\\r\\nX-B3-SpanId: 39fea0853c0a57f8\\r\\nX-B3-ParentSpanId: 3403d24eb45a4eb0\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: 6117da20-3dc5-99f5-8869-1ae75c1d0b86\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:53:48.911", + "timestampUnix": 1708934028911 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:48.911", + "timestampUnix": 1708934028911 + }, + { + "message": "header: x-powered-by: Servlet/3.1", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:48.911", + "timestampUnix": 1708934028911 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:48.911", + "timestampUnix": 1708934028911 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:53:48 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:48.911", + "timestampUnix": 1708934028911 + }, + { + "message": "header: content-language: en-US", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:48.911", + "timestampUnix": 1708934028911 + }, + { + "message": "header: content-length: 358", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:48.911", + "timestampUnix": 1708934028911 + }, + { + "message": "header: x-envoy-upstream-service-time: 1", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:48.911", + "timestampUnix": 1708934028911 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:48.911", + "timestampUnix": 1708934028911 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://reviews:9080 \"GET /reviews/0 HTTP/1.1\" 200 358", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:48.911", + "timestampUnix": 1708934028911 + }, + { + "message": "INFO:werkzeug:::ffff:127.0.0.6 - - [26/Feb/2024 07:53:48] \"GET /productpage HTTP/1.1\" 200 -", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:48.912", + "timestampUnix": 1708934028912 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): details:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:49.900", + "timestampUnix": 1708934029900 + }, + { + "message": "send: b'GET /details/0 HTTP/1.1\\r\\nHost: details:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: e3501761322628e54ebe7e5c2cebb08b\\r\\nX-B3-SpanId: 0b46b69d100bbba2\\r\\nX-B3-ParentSpanId: 4ebe7e5c2cebb08b\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: 92bf73e4-d4cd-967b-9980-559f2af6e581\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:53:49.902", + "timestampUnix": 1708934029902 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:49.902", + "timestampUnix": 1708934029902 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:49.902", + "timestampUnix": 1708934029902 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:49.902", + "timestampUnix": 1708934029902 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:53:49 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:49.902", + "timestampUnix": 1708934029902 + }, + { + "message": "header: content-length: 178", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:49.902", + "timestampUnix": 1708934029902 + }, + { + "message": "header: x-envoy-upstream-service-time: 1", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:49.902", + "timestampUnix": 1708934029902 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://details:9080 \"GET /details/0 HTTP/1.1\" 200 178", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:49.902", + "timestampUnix": 1708934029902 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): reviews:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:49.904", + "timestampUnix": 1708934029904 + }, + { + "message": "send: b'GET /reviews/0 HTTP/1.1\\r\\nHost: reviews:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: e3501761322628e54ebe7e5c2cebb08b\\r\\nX-B3-SpanId: 0b46b69d100bbba2\\r\\nX-B3-ParentSpanId: 4ebe7e5c2cebb08b\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: 92bf73e4-d4cd-967b-9980-559f2af6e581\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:53:49.908", + "timestampUnix": 1708934029908 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:49.908", + "timestampUnix": 1708934029908 + }, + { + "message": "header: x-powered-by: Servlet/3.1", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:49.908", + "timestampUnix": 1708934029908 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:49.908", + "timestampUnix": 1708934029908 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:53:49 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:49.908", + "timestampUnix": 1708934029908 + }, + { + "message": "header: content-language: en-US", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:49.908", + "timestampUnix": 1708934029908 + }, + { + "message": "header: content-length: 442", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:49.908", + "timestampUnix": 1708934029908 + }, + { + "message": "header: x-envoy-upstream-service-time: 3", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:49.908", + "timestampUnix": 1708934029908 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:49.908", + "timestampUnix": 1708934029908 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://reviews:9080 \"GET /reviews/0 HTTP/1.1\" 200 442", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:49.908", + "timestampUnix": 1708934029908 + }, + { + "message": "INFO:werkzeug:::ffff:127.0.0.6 - - [26/Feb/2024 07:53:49] \"GET /productpage HTTP/1.1\" 200 -", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:49.909", + "timestampUnix": 1708934029909 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): details:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:50.907", + "timestampUnix": 1708934030907 + }, + { + "message": "send: b'GET /details/0 HTTP/1.1\\r\\nHost: details:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: bc48e08123a75ab7925eebb5e60a0457\\r\\nX-B3-SpanId: 442f074bbc55c724\\r\\nX-B3-ParentSpanId: 925eebb5e60a0457\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: 8670b084-be5c-9040-af05-61ef21e1f836\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:53:50.911", + "timestampUnix": 1708934030911 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:50.911", + "timestampUnix": 1708934030911 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:50.911", + "timestampUnix": 1708934030911 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:50.911", + "timestampUnix": 1708934030911 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:53:50 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:50.911", + "timestampUnix": 1708934030911 + }, + { + "message": "header: content-length: 178", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:50.911", + "timestampUnix": 1708934030911 + }, + { + "message": "header: x-envoy-upstream-service-time: 1", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:50.911", + "timestampUnix": 1708934030911 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://details:9080 \"GET /details/0 HTTP/1.1\" 200 178", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:50.911", + "timestampUnix": 1708934030911 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): reviews:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:50.912", + "timestampUnix": 1708934030912 + }, + { + "message": "send: b'GET /reviews/0 HTTP/1.1\\r\\nHost: reviews:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: bc48e08123a75ab7925eebb5e60a0457\\r\\nX-B3-SpanId: 442f074bbc55c724\\r\\nX-B3-ParentSpanId: 925eebb5e60a0457\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: 8670b084-be5c-9040-af05-61ef21e1f836\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:53:50.917", + "timestampUnix": 1708934030917 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:50.917", + "timestampUnix": 1708934030917 + }, + { + "message": "header: x-powered-by: Servlet/3.1", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:50.917", + "timestampUnix": 1708934030917 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:50.917", + "timestampUnix": 1708934030917 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:53:50 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:50.917", + "timestampUnix": 1708934030917 + }, + { + "message": "header: content-language: en-US", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:50.917", + "timestampUnix": 1708934030917 + }, + { + "message": "header: content-length: 442", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:50.917", + "timestampUnix": 1708934030917 + }, + { + "message": "header: x-envoy-upstream-service-time: 2", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:50.917", + "timestampUnix": 1708934030917 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:50.917", + "timestampUnix": 1708934030917 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://reviews:9080 \"GET /reviews/0 HTTP/1.1\" 200 442", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:50.917", + "timestampUnix": 1708934030917 + }, + { + "message": "INFO:werkzeug:::ffff:127.0.0.6 - - [26/Feb/2024 07:53:50] \"GET /productpage HTTP/1.1\" 200 -", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:50.918", + "timestampUnix": 1708934030918 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): details:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:51.906", + "timestampUnix": 1708934031906 + }, + { + "message": "send: b'GET /details/0 HTTP/1.1\\r\\nHost: details:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: bddc509357bdaa308a2ffd082e7bb248\\r\\nX-B3-SpanId: 3940601871a28687\\r\\nX-B3-ParentSpanId: 8a2ffd082e7bb248\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: 52ca91ec-e9f6-911d-b790-a3f55ef53eba\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:53:51.908", + "timestampUnix": 1708934031908 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:51.909", + "timestampUnix": 1708934031909 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:51.909", + "timestampUnix": 1708934031909 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:51.909", + "timestampUnix": 1708934031909 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:53:51 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:51.909", + "timestampUnix": 1708934031909 + }, + { + "message": "header: content-length: 178", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:51.909", + "timestampUnix": 1708934031909 + }, + { + "message": "header: x-envoy-upstream-service-time: 1", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:51.909", + "timestampUnix": 1708934031909 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://details:9080 \"GET /details/0 HTTP/1.1\" 200 178", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:51.909", + "timestampUnix": 1708934031909 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): reviews:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:51.910", + "timestampUnix": 1708934031910 + }, + { + "message": "send: b'GET /reviews/0 HTTP/1.1\\r\\nHost: reviews:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: bddc509357bdaa308a2ffd082e7bb248\\r\\nX-B3-SpanId: 3940601871a28687\\r\\nX-B3-ParentSpanId: 8a2ffd082e7bb248\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: 52ca91ec-e9f6-911d-b790-a3f55ef53eba\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:53:51.912", + "timestampUnix": 1708934031912 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:51.912", + "timestampUnix": 1708934031912 + }, + { + "message": "header: x-powered-by: Servlet/3.1", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:51.912", + "timestampUnix": 1708934031912 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:51.912", + "timestampUnix": 1708934031912 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:53:51 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:51.912", + "timestampUnix": 1708934031912 + }, + { + "message": "header: content-language: en-US", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:51.912", + "timestampUnix": 1708934031912 + }, + { + "message": "header: content-length: 358", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:51.912", + "timestampUnix": 1708934031912 + }, + { + "message": "header: x-envoy-upstream-service-time: 0", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:51.912", + "timestampUnix": 1708934031912 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:51.912", + "timestampUnix": 1708934031912 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://reviews:9080 \"GET /reviews/0 HTTP/1.1\" 200 358", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:51.912", + "timestampUnix": 1708934031912 + }, + { + "message": "INFO:werkzeug:::ffff:127.0.0.6 - - [26/Feb/2024 07:53:51] \"GET /productpage HTTP/1.1\" 200 -", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:51.913", + "timestampUnix": 1708934031913 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): details:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:52.907", + "timestampUnix": 1708934032907 + }, + { + "message": "send: b'GET /details/0 HTTP/1.1\\r\\nHost: details:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: ce2364b2518cd64e9ca84d2188b3089\\r\\nX-B3-SpanId: b3ee7daedac71002\\r\\nX-B3-ParentSpanId: e9ca84d2188b3089\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: 5e95fdc0-87ef-9a0f-bff2-090bceff0975\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:53:52.913", + "timestampUnix": 1708934032913 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:52.913", + "timestampUnix": 1708934032913 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:52.913", + "timestampUnix": 1708934032913 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:52.913", + "timestampUnix": 1708934032913 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:53:52 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:52.913", + "timestampUnix": 1708934032913 + }, + { + "message": "header: content-length: 178", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:52.913", + "timestampUnix": 1708934032913 + }, + { + "message": "header: x-envoy-upstream-service-time: 3", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:52.913", + "timestampUnix": 1708934032913 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://details:9080 \"GET /details/0 HTTP/1.1\" 200 178", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:52.913", + "timestampUnix": 1708934032913 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): reviews:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:52.914", + "timestampUnix": 1708934032914 + }, + { + "message": "send: b'GET /reviews/0 HTTP/1.1\\r\\nHost: reviews:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: ce2364b2518cd64e9ca84d2188b3089\\r\\nX-B3-SpanId: b3ee7daedac71002\\r\\nX-B3-ParentSpanId: e9ca84d2188b3089\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: 5e95fdc0-87ef-9a0f-bff2-090bceff0975\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:53:52.918", + "timestampUnix": 1708934032918 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:52.918", + "timestampUnix": 1708934032918 + }, + { + "message": "header: x-powered-by: Servlet/3.1", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:52.918", + "timestampUnix": 1708934032918 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:52.918", + "timestampUnix": 1708934032918 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:53:52 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:52.918", + "timestampUnix": 1708934032918 + }, + { + "message": "header: content-language: en-US", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:52.918", + "timestampUnix": 1708934032918 + }, + { + "message": "header: content-length: 442", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:52.918", + "timestampUnix": 1708934032918 + }, + { + "message": "header: x-envoy-upstream-service-time: 2", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:52.918", + "timestampUnix": 1708934032918 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:52.918", + "timestampUnix": 1708934032918 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://reviews:9080 \"GET /reviews/0 HTTP/1.1\" 200 442", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:52.918", + "timestampUnix": 1708934032918 + }, + { + "message": "INFO:werkzeug:::ffff:127.0.0.6 - - [26/Feb/2024 07:53:52] \"GET /productpage HTTP/1.1\" 200 -", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:52.919", + "timestampUnix": 1708934032919 + }, + { + "message": "INFO:werkzeug:::ffff:127.0.0.1 - - [26/Feb/2024 07:53:52] \"GET /metrics HTTP/1.1\" 200 -", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:52.991", + "timestampUnix": 1708934032991 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): details:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:53.903", + "timestampUnix": 1708934033903 + }, + { + "message": "send: b'GET /details/0 HTTP/1.1\\r\\nHost: details:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: 8e0e1e162b895a0cbb231e6754a40a4d\\r\\nX-B3-SpanId: daa530ef7111fedd\\r\\nX-B3-ParentSpanId: bb231e6754a40a4d\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: 4ab66995-eced-9233-8f3b-553b5f3ba8b7\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:53:53.907", + "timestampUnix": 1708934033907 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:53.907", + "timestampUnix": 1708934033907 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:53.907", + "timestampUnix": 1708934033907 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:53.907", + "timestampUnix": 1708934033907 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:53:53 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:53.907", + "timestampUnix": 1708934033907 + }, + { + "message": "header: content-length: 178", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:53.907", + "timestampUnix": 1708934033907 + }, + { + "message": "header: x-envoy-upstream-service-time: 2", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:53.907", + "timestampUnix": 1708934033907 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://details:9080 \"GET /details/0 HTTP/1.1\" 200 178", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:53.907", + "timestampUnix": 1708934033907 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): reviews:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:53.910", + "timestampUnix": 1708934033910 + }, + { + "message": "send: b'GET /reviews/0 HTTP/1.1\\r\\nHost: reviews:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: 8e0e1e162b895a0cbb231e6754a40a4d\\r\\nX-B3-SpanId: daa530ef7111fedd\\r\\nX-B3-ParentSpanId: bb231e6754a40a4d\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: 4ab66995-eced-9233-8f3b-553b5f3ba8b7\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:53:53.917", + "timestampUnix": 1708934033917 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:53.917", + "timestampUnix": 1708934033917 + }, + { + "message": "header: x-powered-by: Servlet/3.1", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:53.917", + "timestampUnix": 1708934033917 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:53.917", + "timestampUnix": 1708934033917 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:53:52 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:53.917", + "timestampUnix": 1708934033917 + }, + { + "message": "header: content-language: en-US", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:53.917", + "timestampUnix": 1708934033917 + }, + { + "message": "header: content-length: 442", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:53.917", + "timestampUnix": 1708934033917 + }, + { + "message": "header: x-envoy-upstream-service-time: 4", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:53.917", + "timestampUnix": 1708934033917 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:53.917", + "timestampUnix": 1708934033917 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://reviews:9080 \"GET /reviews/0 HTTP/1.1\" 200 442", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:53.917", + "timestampUnix": 1708934033917 + }, + { + "message": "INFO:werkzeug:::ffff:127.0.0.6 - - [26/Feb/2024 07:53:53] \"GET /productpage HTTP/1.1\" 200 -", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:53.918", + "timestampUnix": 1708934033918 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): details:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:54.902", + "timestampUnix": 1708934034902 + }, + { + "message": "send: b'GET /details/0 HTTP/1.1\\r\\nHost: details:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: 77ab779868da060d887fe8ab0580e2a\\r\\nX-B3-SpanId: e089be1cb383ec44\\r\\nX-B3-ParentSpanId: d887fe8ab0580e2a\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: ab7a6c8e-03d7-9b7d-b566-7645cda8ab12\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:53:54.905", + "timestampUnix": 1708934034905 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:54.905", + "timestampUnix": 1708934034905 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:54.905", + "timestampUnix": 1708934034905 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:54.905", + "timestampUnix": 1708934034905 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:53:54 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:54.905", + "timestampUnix": 1708934034905 + }, + { + "message": "header: content-length: 178", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:54.905", + "timestampUnix": 1708934034905 + }, + { + "message": "header: x-envoy-upstream-service-time: 1", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:54.905", + "timestampUnix": 1708934034905 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://details:9080 \"GET /details/0 HTTP/1.1\" 200 178", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:54.905", + "timestampUnix": 1708934034905 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): reviews:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:54.907", + "timestampUnix": 1708934034907 + }, + { + "message": "send: b'GET /reviews/0 HTTP/1.1\\r\\nHost: reviews:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: 77ab779868da060d887fe8ab0580e2a\\r\\nX-B3-SpanId: e089be1cb383ec44\\r\\nX-B3-ParentSpanId: d887fe8ab0580e2a\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: ab7a6c8e-03d7-9b7d-b566-7645cda8ab12\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:53:54.910", + "timestampUnix": 1708934034910 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:54.910", + "timestampUnix": 1708934034910 + }, + { + "message": "header: x-powered-by: Servlet/3.1", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:54.910", + "timestampUnix": 1708934034910 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:54.910", + "timestampUnix": 1708934034910 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:53:54 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:54.910", + "timestampUnix": 1708934034910 + }, + { + "message": "header: content-language: en-US", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:54.910", + "timestampUnix": 1708934034910 + }, + { + "message": "header: content-length: 358", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:54.910", + "timestampUnix": 1708934034910 + }, + { + "message": "header: x-envoy-upstream-service-time: 1", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:54.910", + "timestampUnix": 1708934034910 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:54.910", + "timestampUnix": 1708934034910 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://reviews:9080 \"GET /reviews/0 HTTP/1.1\" 200 358", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:54.910", + "timestampUnix": 1708934034910 + }, + { + "message": "INFO:werkzeug:::ffff:127.0.0.6 - - [26/Feb/2024 07:53:54] \"GET /productpage HTTP/1.1\" 200 -", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:54.911", + "timestampUnix": 1708934034911 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): details:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:55.907", + "timestampUnix": 1708934035907 + }, + { + "message": "send: b'GET /details/0 HTTP/1.1\\r\\nHost: details:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: 248d04057a6a05a236929adeb3a86ae6\\r\\nX-B3-SpanId: 36cdb1bfedbedc68\\r\\nX-B3-ParentSpanId: 36929adeb3a86ae6\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: f9ed7703-cb54-9473-a479-4d8bab613220\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:53:55.914", + "timestampUnix": 1708934035914 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:55.914", + "timestampUnix": 1708934035914 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:55.914", + "timestampUnix": 1708934035914 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:55.914", + "timestampUnix": 1708934035914 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:53:55 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:55.914", + "timestampUnix": 1708934035914 + }, + { + "message": "header: content-length: 178", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:55.914", + "timestampUnix": 1708934035914 + }, + { + "message": "header: x-envoy-upstream-service-time: 3", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:55.914", + "timestampUnix": 1708934035914 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://details:9080 \"GET /details/0 HTTP/1.1\" 200 178", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:55.914", + "timestampUnix": 1708934035914 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): reviews:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:55.920", + "timestampUnix": 1708934035920 + }, + { + "message": "send: b'GET /reviews/0 HTTP/1.1\\r\\nHost: reviews:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: 248d04057a6a05a236929adeb3a86ae6\\r\\nX-B3-SpanId: 36cdb1bfedbedc68\\r\\nX-B3-ParentSpanId: 36929adeb3a86ae6\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: f9ed7703-cb54-9473-a479-4d8bab613220\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:53:55.926", + "timestampUnix": 1708934035926 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:55.926", + "timestampUnix": 1708934035926 + }, + { + "message": "header: x-powered-by: Servlet/3.1", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:55.926", + "timestampUnix": 1708934035926 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:55.926", + "timestampUnix": 1708934035926 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:53:55 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:55.926", + "timestampUnix": 1708934035926 + }, + { + "message": "header: content-language: en-US", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:55.926", + "timestampUnix": 1708934035926 + }, + { + "message": "header: content-length: 358", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:55.926", + "timestampUnix": 1708934035926 + }, + { + "message": "header: x-envoy-upstream-service-time: 2", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:55.926", + "timestampUnix": 1708934035926 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:55.926", + "timestampUnix": 1708934035926 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://reviews:9080 \"GET /reviews/0 HTTP/1.1\" 200 358", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:55.926", + "timestampUnix": 1708934035926 + }, + { + "message": "INFO:werkzeug:::ffff:127.0.0.6 - - [26/Feb/2024 07:53:55] \"GET /productpage HTTP/1.1\" 200 -", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:55.929", + "timestampUnix": 1708934035929 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): details:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:56.901", + "timestampUnix": 1708934036901 + }, + { + "message": "send: b'GET /details/0 HTTP/1.1\\r\\nHost: details:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: be2b6a6a8c19ac33f36eb05d52039529\\r\\nX-B3-SpanId: 6d8b1858c933a9df\\r\\nX-B3-ParentSpanId: f36eb05d52039529\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: 5ecddbf9-abfe-931b-ad73-a33f933d9cbd\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:53:56.903", + "timestampUnix": 1708934036903 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:56.903", + "timestampUnix": 1708934036903 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:56.903", + "timestampUnix": 1708934036903 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:56.903", + "timestampUnix": 1708934036903 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:53:56 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:56.903", + "timestampUnix": 1708934036903 + }, + { + "message": "header: content-length: 178", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:56.903", + "timestampUnix": 1708934036903 + }, + { + "message": "header: x-envoy-upstream-service-time: 1", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:56.903", + "timestampUnix": 1708934036903 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://details:9080 \"GET /details/0 HTTP/1.1\" 200 178", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:56.903", + "timestampUnix": 1708934036903 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): reviews:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:56.905", + "timestampUnix": 1708934036905 + }, + { + "message": "send: b'GET /reviews/0 HTTP/1.1\\r\\nHost: reviews:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: be2b6a6a8c19ac33f36eb05d52039529\\r\\nX-B3-SpanId: 6d8b1858c933a9df\\r\\nX-B3-ParentSpanId: f36eb05d52039529\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: 5ecddbf9-abfe-931b-ad73-a33f933d9cbd\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:53:56.907", + "timestampUnix": 1708934036907 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:56.907", + "timestampUnix": 1708934036907 + }, + { + "message": "header: x-powered-by: Servlet/3.1", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:56.907", + "timestampUnix": 1708934036907 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:56.907", + "timestampUnix": 1708934036907 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:53:55 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:56.907", + "timestampUnix": 1708934036907 + }, + { + "message": "header: content-language: en-US", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:56.907", + "timestampUnix": 1708934036907 + }, + { + "message": "header: content-length: 358", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:56.907", + "timestampUnix": 1708934036907 + }, + { + "message": "header: x-envoy-upstream-service-time: 0", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:56.907", + "timestampUnix": 1708934036907 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:56.907", + "timestampUnix": 1708934036907 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://reviews:9080 \"GET /reviews/0 HTTP/1.1\" 200 358", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:56.907", + "timestampUnix": 1708934036907 + }, + { + "message": "INFO:werkzeug:::ffff:127.0.0.6 - - [26/Feb/2024 07:53:56] \"GET /productpage HTTP/1.1\" 200 -", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:56.908", + "timestampUnix": 1708934036908 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): details:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:57.900", + "timestampUnix": 1708934037900 + }, + { + "message": "send: b'GET /details/0 HTTP/1.1\\r\\nHost: details:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: 8d7366b3981ff3b1e84148b4f7ece92b\\r\\nX-B3-SpanId: d29b91fb00ee2cf5\\r\\nX-B3-ParentSpanId: e84148b4f7ece92b\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: b90de3ff-2b18-9750-ac94-cb5378ff2ce5\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:53:57.902", + "timestampUnix": 1708934037902 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:57.903", + "timestampUnix": 1708934037903 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:57.903", + "timestampUnix": 1708934037903 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:57.903", + "timestampUnix": 1708934037903 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:53:57 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:57.903", + "timestampUnix": 1708934037903 + }, + { + "message": "header: content-length: 178", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:57.903", + "timestampUnix": 1708934037903 + }, + { + "message": "header: x-envoy-upstream-service-time: 1", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:57.903", + "timestampUnix": 1708934037903 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://details:9080 \"GET /details/0 HTTP/1.1\" 200 178", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:57.903", + "timestampUnix": 1708934037903 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): reviews:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:57.904", + "timestampUnix": 1708934037904 + }, + { + "message": "send: b'GET /reviews/0 HTTP/1.1\\r\\nHost: reviews:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: 8d7366b3981ff3b1e84148b4f7ece92b\\r\\nX-B3-SpanId: d29b91fb00ee2cf5\\r\\nX-B3-ParentSpanId: e84148b4f7ece92b\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: b90de3ff-2b18-9750-ac94-cb5378ff2ce5\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:53:57.907", + "timestampUnix": 1708934037907 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:57.907", + "timestampUnix": 1708934037907 + }, + { + "message": "header: x-powered-by: Servlet/3.1", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:57.907", + "timestampUnix": 1708934037907 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:57.907", + "timestampUnix": 1708934037907 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:53:57 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:57.907", + "timestampUnix": 1708934037907 + }, + { + "message": "header: content-language: en-US", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:57.907", + "timestampUnix": 1708934037907 + }, + { + "message": "header: content-length: 442", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:57.907", + "timestampUnix": 1708934037907 + }, + { + "message": "header: x-envoy-upstream-service-time: 2", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:57.907", + "timestampUnix": 1708934037907 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:57.907", + "timestampUnix": 1708934037907 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://reviews:9080 \"GET /reviews/0 HTTP/1.1\" 200 442", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:57.907", + "timestampUnix": 1708934037907 + }, + { + "message": "INFO:werkzeug:::ffff:127.0.0.6 - - [26/Feb/2024 07:53:57] \"GET /productpage HTTP/1.1\" 200 -", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:57.908", + "timestampUnix": 1708934037908 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): details:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:58.900", + "timestampUnix": 1708934038900 + }, + { + "message": "send: b'GET /details/0 HTTP/1.1\\r\\nHost: details:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: e37e1fd184ce7351d7ec28f1ce8bf89c\\r\\nX-B3-SpanId: a27bc0628c850f6a\\r\\nX-B3-ParentSpanId: d7ec28f1ce8bf89c\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: cc5a54a7-a0a0-9872-87a7-f609f9acf2da\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:53:58.902", + "timestampUnix": 1708934038902 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:58.902", + "timestampUnix": 1708934038902 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:58.902", + "timestampUnix": 1708934038902 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:58.902", + "timestampUnix": 1708934038902 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:53:58 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:58.902", + "timestampUnix": 1708934038902 + }, + { + "message": "header: content-length: 178", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:58.902", + "timestampUnix": 1708934038902 + }, + { + "message": "header: x-envoy-upstream-service-time: 1", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:58.902", + "timestampUnix": 1708934038902 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://details:9080 \"GET /details/0 HTTP/1.1\" 200 178", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:58.902", + "timestampUnix": 1708934038902 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): reviews:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:58.904", + "timestampUnix": 1708934038904 + }, + { + "message": "send: b'GET /reviews/0 HTTP/1.1\\r\\nHost: reviews:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: e37e1fd184ce7351d7ec28f1ce8bf89c\\r\\nX-B3-SpanId: a27bc0628c850f6a\\r\\nX-B3-ParentSpanId: d7ec28f1ce8bf89c\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: cc5a54a7-a0a0-9872-87a7-f609f9acf2da\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:53:58.907", + "timestampUnix": 1708934038907 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:58.907", + "timestampUnix": 1708934038907 + }, + { + "message": "header: x-powered-by: Servlet/3.1", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:58.907", + "timestampUnix": 1708934038907 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:58.907", + "timestampUnix": 1708934038907 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:53:58 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:58.907", + "timestampUnix": 1708934038907 + }, + { + "message": "header: content-language: en-US", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:58.908", + "timestampUnix": 1708934038908 + }, + { + "message": "header: content-length: 437", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:58.908", + "timestampUnix": 1708934038908 + }, + { + "message": "header: x-envoy-upstream-service-time: 2", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:58.908", + "timestampUnix": 1708934038908 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:58.908", + "timestampUnix": 1708934038908 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://reviews:9080 \"GET /reviews/0 HTTP/1.1\" 200 437", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:58.908", + "timestampUnix": 1708934038908 + }, + { + "message": "INFO:werkzeug:::ffff:127.0.0.6 - - [26/Feb/2024 07:53:58] \"GET /productpage HTTP/1.1\" 200 -", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:58.908", + "timestampUnix": 1708934038908 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): details:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:59.907", + "timestampUnix": 1708934039907 + }, + { + "message": "send: b'GET /details/0 HTTP/1.1\\r\\nHost: details:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: 57f69a62a0729f2f20329a55308be7f2\\r\\nX-B3-SpanId: 9fcd489bda07fc4d\\r\\nX-B3-ParentSpanId: 20329a55308be7f2\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: e389d068-9153-9d31-a222-07f5f576d854\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:53:59.914", + "timestampUnix": 1708934039914 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:59.914", + "timestampUnix": 1708934039914 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:59.914", + "timestampUnix": 1708934039914 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:59.914", + "timestampUnix": 1708934039914 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:53:59 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:59.914", + "timestampUnix": 1708934039914 + }, + { + "message": "header: content-length: 178", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:59.914", + "timestampUnix": 1708934039914 + }, + { + "message": "header: x-envoy-upstream-service-time: 3", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:59.914", + "timestampUnix": 1708934039914 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://details:9080 \"GET /details/0 HTTP/1.1\" 200 178", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:59.914", + "timestampUnix": 1708934039914 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): reviews:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:59.919", + "timestampUnix": 1708934039919 + }, + { + "message": "send: b'GET /reviews/0 HTTP/1.1\\r\\nHost: reviews:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: 57f69a62a0729f2f20329a55308be7f2\\r\\nX-B3-SpanId: 9fcd489bda07fc4d\\r\\nX-B3-ParentSpanId: 20329a55308be7f2\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: e389d068-9153-9d31-a222-07f5f576d854\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:53:59.925", + "timestampUnix": 1708934039925 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:59.925", + "timestampUnix": 1708934039925 + }, + { + "message": "header: x-powered-by: Servlet/3.1", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:59.925", + "timestampUnix": 1708934039925 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:59.925", + "timestampUnix": 1708934039925 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:53:59 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:59.925", + "timestampUnix": 1708934039925 + }, + { + "message": "header: content-language: en-US", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:59.925", + "timestampUnix": 1708934039925 + }, + { + "message": "header: content-length: 358", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:59.925", + "timestampUnix": 1708934039925 + }, + { + "message": "header: x-envoy-upstream-service-time: 2", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:59.925", + "timestampUnix": 1708934039925 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:59.925", + "timestampUnix": 1708934039925 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://reviews:9080 \"GET /reviews/0 HTTP/1.1\" 200 358", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:53:59.925", + "timestampUnix": 1708934039925 + }, + { + "message": "INFO:werkzeug:::ffff:127.0.0.6 - - [26/Feb/2024 07:53:59] \"GET /productpage HTTP/1.1\" 200 -", + "severity": "INFO", + "timestamp": "2024-02-26 07:53:59.928", + "timestampUnix": 1708934039928 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): details:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:00.900", + "timestampUnix": 1708934040900 + }, + { + "message": "send: b'GET /details/0 HTTP/1.1\\r\\nHost: details:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: 8239d6d09c26ab16992d1fdede2570ed\\r\\nX-B3-SpanId: 61c3f03d1ea94154\\r\\nX-B3-ParentSpanId: 992d1fdede2570ed\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: d00c1d65-f90f-97a6-9dbf-9038e7d5f832\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:54:00.902", + "timestampUnix": 1708934040902 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:00.902", + "timestampUnix": 1708934040902 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:00.902", + "timestampUnix": 1708934040902 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:00.902", + "timestampUnix": 1708934040902 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:54:00 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:00.902", + "timestampUnix": 1708934040902 + }, + { + "message": "header: content-length: 178", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:00.902", + "timestampUnix": 1708934040902 + }, + { + "message": "header: x-envoy-upstream-service-time: 1", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:00.903", + "timestampUnix": 1708934040903 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://details:9080 \"GET /details/0 HTTP/1.1\" 200 178", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:00.903", + "timestampUnix": 1708934040903 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): reviews:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:00.904", + "timestampUnix": 1708934040904 + }, + { + "message": "send: b'GET /reviews/0 HTTP/1.1\\r\\nHost: reviews:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: 8239d6d09c26ab16992d1fdede2570ed\\r\\nX-B3-SpanId: 61c3f03d1ea94154\\r\\nX-B3-ParentSpanId: 992d1fdede2570ed\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: d00c1d65-f90f-97a6-9dbf-9038e7d5f832\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:54:00.908", + "timestampUnix": 1708934040908 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:00.908", + "timestampUnix": 1708934040908 + }, + { + "message": "header: x-powered-by: Servlet/3.1", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:00.908", + "timestampUnix": 1708934040908 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:00.908", + "timestampUnix": 1708934040908 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:54:00 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:00.908", + "timestampUnix": 1708934040908 + }, + { + "message": "header: content-language: en-US", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:00.908", + "timestampUnix": 1708934040908 + }, + { + "message": "header: content-length: 442", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:00.908", + "timestampUnix": 1708934040908 + }, + { + "message": "header: x-envoy-upstream-service-time: 2", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:00.908", + "timestampUnix": 1708934040908 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:00.908", + "timestampUnix": 1708934040908 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://reviews:9080 \"GET /reviews/0 HTTP/1.1\" 200 442", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:00.908", + "timestampUnix": 1708934040908 + }, + { + "message": "INFO:werkzeug:::ffff:127.0.0.6 - - [26/Feb/2024 07:54:00] \"GET /productpage HTTP/1.1\" 200 -", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:00.909", + "timestampUnix": 1708934040909 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): details:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:01.901", + "timestampUnix": 1708934041901 + }, + { + "message": "send: b'GET /details/0 HTTP/1.1\\r\\nHost: details:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: e2a6df55a5422f9827fd67f1623f4ab1\\r\\nX-B3-SpanId: 327b87e3e1ef8889\\r\\nX-B3-ParentSpanId: 27fd67f1623f4ab1\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: 1e9f0225-398d-9557-8415-0532b9a4c011\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:54:01.904", + "timestampUnix": 1708934041904 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:01.904", + "timestampUnix": 1708934041904 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:01.904", + "timestampUnix": 1708934041904 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:01.904", + "timestampUnix": 1708934041904 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:54:01 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:01.904", + "timestampUnix": 1708934041904 + }, + { + "message": "header: content-length: 178", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:01.904", + "timestampUnix": 1708934041904 + }, + { + "message": "header: x-envoy-upstream-service-time: 1", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:01.904", + "timestampUnix": 1708934041904 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://details:9080 \"GET /details/0 HTTP/1.1\" 200 178", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:01.904", + "timestampUnix": 1708934041904 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): reviews:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:01.907", + "timestampUnix": 1708934041907 + }, + { + "message": "send: b'GET /reviews/0 HTTP/1.1\\r\\nHost: reviews:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: e2a6df55a5422f9827fd67f1623f4ab1\\r\\nX-B3-SpanId: 327b87e3e1ef8889\\r\\nX-B3-ParentSpanId: 27fd67f1623f4ab1\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: 1e9f0225-398d-9557-8415-0532b9a4c011\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:54:01.909", + "timestampUnix": 1708934041909 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:01.909", + "timestampUnix": 1708934041909 + }, + { + "message": "header: x-powered-by: Servlet/3.1", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:01.909", + "timestampUnix": 1708934041909 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:01.909", + "timestampUnix": 1708934041909 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:54:01 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:01.909", + "timestampUnix": 1708934041909 + }, + { + "message": "header: content-language: en-US", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:01.909", + "timestampUnix": 1708934041909 + }, + { + "message": "header: content-length: 358", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:01.909", + "timestampUnix": 1708934041909 + }, + { + "message": "header: x-envoy-upstream-service-time: 0", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:01.909", + "timestampUnix": 1708934041909 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:01.909", + "timestampUnix": 1708934041909 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://reviews:9080 \"GET /reviews/0 HTTP/1.1\" 200 358", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:01.909", + "timestampUnix": 1708934041909 + }, + { + "message": "INFO:werkzeug:::ffff:127.0.0.6 - - [26/Feb/2024 07:54:01] \"GET /productpage HTTP/1.1\" 200 -", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:01.910", + "timestampUnix": 1708934041910 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): details:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:02.900", + "timestampUnix": 1708934042900 + }, + { + "message": "send: b'GET /details/0 HTTP/1.1\\r\\nHost: details:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: ec1235629c699a8170a105b586e2d115\\r\\nX-B3-SpanId: edb0e8861ecf2e81\\r\\nX-B3-ParentSpanId: 70a105b586e2d115\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: 9e98f833-b1d2-9d96-aeaa-129bea56c8df\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:54:02.903", + "timestampUnix": 1708934042903 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:02.903", + "timestampUnix": 1708934042903 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:02.903", + "timestampUnix": 1708934042903 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:02.903", + "timestampUnix": 1708934042903 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:54:02 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:02.903", + "timestampUnix": 1708934042903 + }, + { + "message": "header: content-length: 178", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:02.903", + "timestampUnix": 1708934042903 + }, + { + "message": "header: x-envoy-upstream-service-time: 1", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:02.903", + "timestampUnix": 1708934042903 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://details:9080 \"GET /details/0 HTTP/1.1\" 200 178", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:02.903", + "timestampUnix": 1708934042903 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): reviews:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:02.905", + "timestampUnix": 1708934042905 + }, + { + "message": "send: b'GET /reviews/0 HTTP/1.1\\r\\nHost: reviews:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: ec1235629c699a8170a105b586e2d115\\r\\nX-B3-SpanId: edb0e8861ecf2e81\\r\\nX-B3-ParentSpanId: 70a105b586e2d115\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: 9e98f833-b1d2-9d96-aeaa-129bea56c8df\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:54:02.909", + "timestampUnix": 1708934042909 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:02.909", + "timestampUnix": 1708934042909 + }, + { + "message": "header: x-powered-by: Servlet/3.1", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:02.909", + "timestampUnix": 1708934042909 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:02.909", + "timestampUnix": 1708934042909 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:54:02 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:02.909", + "timestampUnix": 1708934042909 + }, + { + "message": "header: content-language: en-US", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:02.909", + "timestampUnix": 1708934042909 + }, + { + "message": "header: content-length: 437", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:02.909", + "timestampUnix": 1708934042909 + }, + { + "message": "header: x-envoy-upstream-service-time: 2", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:02.909", + "timestampUnix": 1708934042909 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:02.909", + "timestampUnix": 1708934042909 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://reviews:9080 \"GET /reviews/0 HTTP/1.1\" 200 437", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:02.909", + "timestampUnix": 1708934042909 + }, + { + "message": "INFO:werkzeug:::ffff:127.0.0.6 - - [26/Feb/2024 07:54:02] \"GET /productpage HTTP/1.1\" 200 -", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:02.910", + "timestampUnix": 1708934042910 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): details:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:03.907", + "timestampUnix": 1708934043907 + }, + { + "message": "send: b'GET /details/0 HTTP/1.1\\r\\nHost: details:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: ce993fce1231a76b31650430b37d0d13\\r\\nX-B3-SpanId: 8be3cb38d65a0904\\r\\nX-B3-ParentSpanId: 31650430b37d0d13\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: b220ea06-2964-9e35-98a5-5a6193d7077e\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:54:03.916", + "timestampUnix": 1708934043916 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:03.916", + "timestampUnix": 1708934043916 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:03.916", + "timestampUnix": 1708934043916 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:03.916", + "timestampUnix": 1708934043916 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:54:03 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:03.916", + "timestampUnix": 1708934043916 + }, + { + "message": "header: content-length: 178", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:03.916", + "timestampUnix": 1708934043916 + }, + { + "message": "header: x-envoy-upstream-service-time: 3", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:03.916", + "timestampUnix": 1708934043916 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://details:9080 \"GET /details/0 HTTP/1.1\" 200 178", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:03.916", + "timestampUnix": 1708934043916 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): reviews:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:03.921", + "timestampUnix": 1708934043921 + }, + { + "message": "send: b'GET /reviews/0 HTTP/1.1\\r\\nHost: reviews:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: ce993fce1231a76b31650430b37d0d13\\r\\nX-B3-SpanId: 8be3cb38d65a0904\\r\\nX-B3-ParentSpanId: 31650430b37d0d13\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: b220ea06-2964-9e35-98a5-5a6193d7077e\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:54:03.927", + "timestampUnix": 1708934043927 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:03.927", + "timestampUnix": 1708934043927 + }, + { + "message": "header: x-powered-by: Servlet/3.1", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:03.927", + "timestampUnix": 1708934043927 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:03.927", + "timestampUnix": 1708934043927 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:54:03 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:03.927", + "timestampUnix": 1708934043927 + }, + { + "message": "header: content-language: en-US", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:03.927", + "timestampUnix": 1708934043927 + }, + { + "message": "header: content-length: 437", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:03.927", + "timestampUnix": 1708934043927 + }, + { + "message": "header: x-envoy-upstream-service-time: 2", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:03.927", + "timestampUnix": 1708934043927 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:03.927", + "timestampUnix": 1708934043927 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://reviews:9080 \"GET /reviews/0 HTTP/1.1\" 200 437", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:03.927", + "timestampUnix": 1708934043927 + }, + { + "message": "INFO:werkzeug:::ffff:127.0.0.6 - - [26/Feb/2024 07:54:03] \"GET /productpage HTTP/1.1\" 200 -", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:03.928", + "timestampUnix": 1708934043928 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): details:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:04.906", + "timestampUnix": 1708934044906 + }, + { + "message": "send: b'GET /details/0 HTTP/1.1\\r\\nHost: details:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: bf1d6c0cb943723b5ccab4cc4d3ee53\\r\\nX-B3-SpanId: af57b3b146d6ef04\\r\\nX-B3-ParentSpanId: b5ccab4cc4d3ee53\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: 521712ea-30ed-9ee0-9579-33858345dd3a\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:54:04.910", + "timestampUnix": 1708934044910 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:04.910", + "timestampUnix": 1708934044910 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:04.910", + "timestampUnix": 1708934044910 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:04.910", + "timestampUnix": 1708934044910 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:54:04 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:04.910", + "timestampUnix": 1708934044910 + }, + { + "message": "header: content-length: 178", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:04.910", + "timestampUnix": 1708934044910 + }, + { + "message": "header: x-envoy-upstream-service-time: 1", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:04.910", + "timestampUnix": 1708934044910 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://details:9080 \"GET /details/0 HTTP/1.1\" 200 178", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:04.910", + "timestampUnix": 1708934044910 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): reviews:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:04.912", + "timestampUnix": 1708934044912 + }, + { + "message": "send: b'GET /reviews/0 HTTP/1.1\\r\\nHost: reviews:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: bf1d6c0cb943723b5ccab4cc4d3ee53\\r\\nX-B3-SpanId: af57b3b146d6ef04\\r\\nX-B3-ParentSpanId: b5ccab4cc4d3ee53\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: 521712ea-30ed-9ee0-9579-33858345dd3a\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:54:04.916", + "timestampUnix": 1708934044916 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:04.916", + "timestampUnix": 1708934044916 + }, + { + "message": "header: x-powered-by: Servlet/3.1", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:04.916", + "timestampUnix": 1708934044916 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:04.916", + "timestampUnix": 1708934044916 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:54:03 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:04.916", + "timestampUnix": 1708934044916 + }, + { + "message": "header: content-language: en-US", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:04.916", + "timestampUnix": 1708934044916 + }, + { + "message": "header: content-length: 437", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:04.916", + "timestampUnix": 1708934044916 + }, + { + "message": "header: x-envoy-upstream-service-time: 3", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:04.916", + "timestampUnix": 1708934044916 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:04.916", + "timestampUnix": 1708934044916 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://reviews:9080 \"GET /reviews/0 HTTP/1.1\" 200 437", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:04.916", + "timestampUnix": 1708934044916 + }, + { + "message": "INFO:werkzeug:::ffff:127.0.0.6 - - [26/Feb/2024 07:54:04] \"GET /productpage HTTP/1.1\" 200 -", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:04.917", + "timestampUnix": 1708934044917 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): details:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:05.907", + "timestampUnix": 1708934045907 + }, + { + "message": "send: b'GET /details/0 HTTP/1.1\\r\\nHost: details:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: ba144ac7a9dd250609e4dc491c4b27a7\\r\\nX-B3-SpanId: 2bfdbe7f840926eb\\r\\nX-B3-ParentSpanId: 09e4dc491c4b27a7\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: 9faeb45d-45ca-9902-94f7-49dcb1e7cb13\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:54:05.915", + "timestampUnix": 1708934045915 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:05.915", + "timestampUnix": 1708934045915 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:05.915", + "timestampUnix": 1708934045915 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:05.915", + "timestampUnix": 1708934045915 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:54:05 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:05.915", + "timestampUnix": 1708934045915 + }, + { + "message": "header: content-length: 178", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:05.915", + "timestampUnix": 1708934045915 + }, + { + "message": "header: x-envoy-upstream-service-time: 3", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:05.915", + "timestampUnix": 1708934045915 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://details:9080 \"GET /details/0 HTTP/1.1\" 200 178", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:05.915", + "timestampUnix": 1708934045915 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): reviews:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:05.920", + "timestampUnix": 1708934045920 + }, + { + "message": "send: b'GET /reviews/0 HTTP/1.1\\r\\nHost: reviews:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: ba144ac7a9dd250609e4dc491c4b27a7\\r\\nX-B3-SpanId: 2bfdbe7f840926eb\\r\\nX-B3-ParentSpanId: 09e4dc491c4b27a7\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: 9faeb45d-45ca-9902-94f7-49dcb1e7cb13\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:54:05.926", + "timestampUnix": 1708934045926 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:05.926", + "timestampUnix": 1708934045926 + }, + { + "message": "header: x-powered-by: Servlet/3.1", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:05.926", + "timestampUnix": 1708934045926 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:05.926", + "timestampUnix": 1708934045926 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:54:05 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:05.926", + "timestampUnix": 1708934045926 + }, + { + "message": "header: content-language: en-US", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:05.926", + "timestampUnix": 1708934045926 + }, + { + "message": "header: content-length: 437", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:05.926", + "timestampUnix": 1708934045926 + }, + { + "message": "header: x-envoy-upstream-service-time: 3", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:05.926", + "timestampUnix": 1708934045926 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:05.926", + "timestampUnix": 1708934045926 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://reviews:9080 \"GET /reviews/0 HTTP/1.1\" 200 437", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:05.926", + "timestampUnix": 1708934045926 + }, + { + "message": "INFO:werkzeug:::ffff:127.0.0.6 - - [26/Feb/2024 07:54:05] \"GET /productpage HTTP/1.1\" 200 -", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:05.927", + "timestampUnix": 1708934045927 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): details:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:06.906", + "timestampUnix": 1708934046906 + }, + { + "message": "send: b'GET /details/0 HTTP/1.1\\r\\nHost: details:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: b74a76ab7420f616f1cd2c1322f8f9fc\\r\\nX-B3-SpanId: 51e81df3a9553798\\r\\nX-B3-ParentSpanId: f1cd2c1322f8f9fc\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: 7a1751c9-69b4-9c66-9b79-50b1126c6801\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:54:06.909", + "timestampUnix": 1708934046909 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:06.909", + "timestampUnix": 1708934046909 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:06.909", + "timestampUnix": 1708934046909 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:06.909", + "timestampUnix": 1708934046909 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:54:06 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:06.909", + "timestampUnix": 1708934046909 + }, + { + "message": "header: content-length: 178", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:06.909", + "timestampUnix": 1708934046909 + }, + { + "message": "header: x-envoy-upstream-service-time: 1", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:06.909", + "timestampUnix": 1708934046909 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://details:9080 \"GET /details/0 HTTP/1.1\" 200 178", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:06.909", + "timestampUnix": 1708934046909 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): reviews:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:06.910", + "timestampUnix": 1708934046910 + }, + { + "message": "send: b'GET /reviews/0 HTTP/1.1\\r\\nHost: reviews:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: b74a76ab7420f616f1cd2c1322f8f9fc\\r\\nX-B3-SpanId: 51e81df3a9553798\\r\\nX-B3-ParentSpanId: f1cd2c1322f8f9fc\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: 7a1751c9-69b4-9c66-9b79-50b1126c6801\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:54:06.915", + "timestampUnix": 1708934046915 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:06.915", + "timestampUnix": 1708934046915 + }, + { + "message": "header: x-powered-by: Servlet/3.1", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:06.915", + "timestampUnix": 1708934046915 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:06.915", + "timestampUnix": 1708934046915 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:54:05 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:06.915", + "timestampUnix": 1708934046915 + }, + { + "message": "header: content-language: en-US", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:06.915", + "timestampUnix": 1708934046915 + }, + { + "message": "header: content-length: 437", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:06.915", + "timestampUnix": 1708934046915 + }, + { + "message": "header: x-envoy-upstream-service-time: 3", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:06.915", + "timestampUnix": 1708934046915 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:06.915", + "timestampUnix": 1708934046915 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://reviews:9080 \"GET /reviews/0 HTTP/1.1\" 200 437", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:06.915", + "timestampUnix": 1708934046915 + }, + { + "message": "INFO:werkzeug:::ffff:127.0.0.6 - - [26/Feb/2024 07:54:06] \"GET /productpage HTTP/1.1\" 200 -", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:06.916", + "timestampUnix": 1708934046916 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): details:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:07.903", + "timestampUnix": 1708934047903 + }, + { + "message": "send: b'GET /details/0 HTTP/1.1\\r\\nHost: details:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: c71e4c57e770a9af63cc5e3616cb3a8a\\r\\nX-B3-SpanId: 747d875d0513f15f\\r\\nX-B3-ParentSpanId: 63cc5e3616cb3a8a\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: e0bbf030-1c3c-943c-8f60-b0eaab73b70d\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:54:07.907", + "timestampUnix": 1708934047907 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:07.907", + "timestampUnix": 1708934047907 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:07.907", + "timestampUnix": 1708934047907 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:07.907", + "timestampUnix": 1708934047907 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:54:07 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:07.907", + "timestampUnix": 1708934047907 + }, + { + "message": "header: content-length: 178", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:07.907", + "timestampUnix": 1708934047907 + }, + { + "message": "header: x-envoy-upstream-service-time: 2", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:07.907", + "timestampUnix": 1708934047907 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://details:9080 \"GET /details/0 HTTP/1.1\" 200 178", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:07.907", + "timestampUnix": 1708934047907 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): reviews:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:07.911", + "timestampUnix": 1708934047911 + }, + { + "message": "send: b'GET /reviews/0 HTTP/1.1\\r\\nHost: reviews:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: c71e4c57e770a9af63cc5e3616cb3a8a\\r\\nX-B3-SpanId: 747d875d0513f15f\\r\\nX-B3-ParentSpanId: 63cc5e3616cb3a8a\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: e0bbf030-1c3c-943c-8f60-b0eaab73b70d\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:54:07.917", + "timestampUnix": 1708934047917 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:07.917", + "timestampUnix": 1708934047917 + }, + { + "message": "header: x-powered-by: Servlet/3.1", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:07.917", + "timestampUnix": 1708934047917 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:07.917", + "timestampUnix": 1708934047917 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:54:07 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:07.917", + "timestampUnix": 1708934047917 + }, + { + "message": "header: content-language: en-US", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:07.917", + "timestampUnix": 1708934047917 + }, + { + "message": "header: content-length: 442", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:07.917", + "timestampUnix": 1708934047917 + }, + { + "message": "header: x-envoy-upstream-service-time: 4", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:07.917", + "timestampUnix": 1708934047917 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:07.917", + "timestampUnix": 1708934047917 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://reviews:9080 \"GET /reviews/0 HTTP/1.1\" 200 442", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:07.917", + "timestampUnix": 1708934047917 + }, + { + "message": "INFO:werkzeug:::ffff:127.0.0.6 - - [26/Feb/2024 07:54:07] \"GET /productpage HTTP/1.1\" 200 -", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:07.918", + "timestampUnix": 1708934047918 + }, + { + "message": "INFO:werkzeug:::ffff:127.0.0.1 - - [26/Feb/2024 07:54:07] \"GET /metrics HTTP/1.1\" 200 -", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:07.982", + "timestampUnix": 1708934047982 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): details:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:08.903", + "timestampUnix": 1708934048903 + }, + { + "message": "send: b'GET /details/0 HTTP/1.1\\r\\nHost: details:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: 18d87514ae923f3bf8be8a56b69c60d3\\r\\nX-B3-SpanId: a85d5ac2d417fa1a\\r\\nX-B3-ParentSpanId: f8be8a56b69c60d3\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: 35b15d0c-cd39-92c2-b7a4-8f192e531ba8\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:54:08.906", + "timestampUnix": 1708934048906 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:08.906", + "timestampUnix": 1708934048906 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:08.906", + "timestampUnix": 1708934048906 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:08.906", + "timestampUnix": 1708934048906 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:54:08 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:08.906", + "timestampUnix": 1708934048906 + }, + { + "message": "header: content-length: 178", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:08.906", + "timestampUnix": 1708934048906 + }, + { + "message": "header: x-envoy-upstream-service-time: 1", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:08.906", + "timestampUnix": 1708934048906 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://details:9080 \"GET /details/0 HTTP/1.1\" 200 178", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:08.906", + "timestampUnix": 1708934048906 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): reviews:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:08.908", + "timestampUnix": 1708934048908 + }, + { + "message": "send: b'GET /reviews/0 HTTP/1.1\\r\\nHost: reviews:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: 18d87514ae923f3bf8be8a56b69c60d3\\r\\nX-B3-SpanId: a85d5ac2d417fa1a\\r\\nX-B3-ParentSpanId: f8be8a56b69c60d3\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: 35b15d0c-cd39-92c2-b7a4-8f192e531ba8\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:54:08.912", + "timestampUnix": 1708934048912 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:08.912", + "timestampUnix": 1708934048912 + }, + { + "message": "header: x-powered-by: Servlet/3.1", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:08.912", + "timestampUnix": 1708934048912 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:08.912", + "timestampUnix": 1708934048912 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:54:08 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:08.912", + "timestampUnix": 1708934048912 + }, + { + "message": "header: content-language: en-US", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:08.912", + "timestampUnix": 1708934048912 + }, + { + "message": "header: content-length: 437", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:08.912", + "timestampUnix": 1708934048912 + }, + { + "message": "header: x-envoy-upstream-service-time: 2", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:08.912", + "timestampUnix": 1708934048912 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:08.912", + "timestampUnix": 1708934048912 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://reviews:9080 \"GET /reviews/0 HTTP/1.1\" 200 437", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:08.912", + "timestampUnix": 1708934048912 + }, + { + "message": "INFO:werkzeug:::ffff:127.0.0.6 - - [26/Feb/2024 07:54:08] \"GET /productpage HTTP/1.1\" 200 -", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:08.913", + "timestampUnix": 1708934048913 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): details:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:09.907", + "timestampUnix": 1708934049907 + }, + { + "message": "send: b'GET /details/0 HTTP/1.1\\r\\nHost: details:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: 19030674904e1e17b56d34f3273352b4\\r\\nX-B3-SpanId: ed54993bee1c89d6\\r\\nX-B3-ParentSpanId: b56d34f3273352b4\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: 755ef7df-d612-9703-8d3e-13c0e4917269\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:54:09.914", + "timestampUnix": 1708934049914 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:09.914", + "timestampUnix": 1708934049914 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:09.914", + "timestampUnix": 1708934049914 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:09.914", + "timestampUnix": 1708934049914 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:54:09 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:09.914", + "timestampUnix": 1708934049914 + }, + { + "message": "header: content-length: 178", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:09.914", + "timestampUnix": 1708934049914 + }, + { + "message": "header: x-envoy-upstream-service-time: 3", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:09.914", + "timestampUnix": 1708934049914 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://details:9080 \"GET /details/0 HTTP/1.1\" 200 178", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:09.914", + "timestampUnix": 1708934049914 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): reviews:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:09.916", + "timestampUnix": 1708934049916 + }, + { + "message": "send: b'GET /reviews/0 HTTP/1.1\\r\\nHost: reviews:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: 19030674904e1e17b56d34f3273352b4\\r\\nX-B3-SpanId: ed54993bee1c89d6\\r\\nX-B3-ParentSpanId: b56d34f3273352b4\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: 755ef7df-d612-9703-8d3e-13c0e4917269\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:54:09.919", + "timestampUnix": 1708934049919 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:09.919", + "timestampUnix": 1708934049919 + }, + { + "message": "header: x-powered-by: Servlet/3.1", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:09.919", + "timestampUnix": 1708934049919 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:09.919", + "timestampUnix": 1708934049919 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:54:09 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:09.919", + "timestampUnix": 1708934049919 + }, + { + "message": "header: content-language: en-US", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:09.919", + "timestampUnix": 1708934049919 + }, + { + "message": "header: content-length: 358", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:09.919", + "timestampUnix": 1708934049919 + }, + { + "message": "header: x-envoy-upstream-service-time: 0", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:09.919", + "timestampUnix": 1708934049919 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:09.919", + "timestampUnix": 1708934049919 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://reviews:9080 \"GET /reviews/0 HTTP/1.1\" 200 358", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:09.919", + "timestampUnix": 1708934049919 + }, + { + "message": "INFO:werkzeug:::ffff:127.0.0.6 - - [26/Feb/2024 07:54:09] \"GET /productpage HTTP/1.1\" 200 -", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:09.920", + "timestampUnix": 1708934049920 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): details:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:10.900", + "timestampUnix": 1708934050900 + }, + { + "message": "send: b'GET /details/0 HTTP/1.1\\r\\nHost: details:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: 61cf84148796c0a203b7f6bbceab2f3b\\r\\nX-B3-SpanId: e53c02b1409d6301\\r\\nX-B3-ParentSpanId: 03b7f6bbceab2f3b\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: bdb0590c-4893-9987-96ad-820c784d4289\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:54:10.902", + "timestampUnix": 1708934050902 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:10.902", + "timestampUnix": 1708934050902 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:10.902", + "timestampUnix": 1708934050902 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:10.902", + "timestampUnix": 1708934050902 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:54:10 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:10.902", + "timestampUnix": 1708934050902 + }, + { + "message": "header: content-length: 178", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:10.902", + "timestampUnix": 1708934050902 + }, + { + "message": "header: x-envoy-upstream-service-time: 1", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:10.902", + "timestampUnix": 1708934050902 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://details:9080 \"GET /details/0 HTTP/1.1\" 200 178", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:10.902", + "timestampUnix": 1708934050902 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): reviews:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:10.904", + "timestampUnix": 1708934050904 + }, + { + "message": "send: b'GET /reviews/0 HTTP/1.1\\r\\nHost: reviews:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: 61cf84148796c0a203b7f6bbceab2f3b\\r\\nX-B3-SpanId: e53c02b1409d6301\\r\\nX-B3-ParentSpanId: 03b7f6bbceab2f3b\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: bdb0590c-4893-9987-96ad-820c784d4289\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:54:10.907", + "timestampUnix": 1708934050907 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:10.907", + "timestampUnix": 1708934050907 + }, + { + "message": "header: x-powered-by: Servlet/3.1", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:10.907", + "timestampUnix": 1708934050907 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:10.907", + "timestampUnix": 1708934050907 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:54:10 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:10.907", + "timestampUnix": 1708934050907 + }, + { + "message": "header: content-language: en-US", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:10.907", + "timestampUnix": 1708934050907 + }, + { + "message": "header: content-length: 442", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:10.907", + "timestampUnix": 1708934050907 + }, + { + "message": "header: x-envoy-upstream-service-time: 2", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:10.907", + "timestampUnix": 1708934050907 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:10.907", + "timestampUnix": 1708934050907 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://reviews:9080 \"GET /reviews/0 HTTP/1.1\" 200 442", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:10.907", + "timestampUnix": 1708934050907 + }, + { + "message": "INFO:werkzeug:::ffff:127.0.0.6 - - [26/Feb/2024 07:54:10] \"GET /productpage HTTP/1.1\" 200 -", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:10.908", + "timestampUnix": 1708934050908 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): details:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:11.900", + "timestampUnix": 1708934051900 + }, + { + "message": "send: b'GET /details/0 HTTP/1.1\\r\\nHost: details:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: 7767458ac8f3bac5f55981fb526bd14e\\r\\nX-B3-SpanId: 107cf41741bd7c11\\r\\nX-B3-ParentSpanId: f55981fb526bd14e\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: 68269792-2ea0-9837-98fd-a89aa0ab5286\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:54:11.902", + "timestampUnix": 1708934051902 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:11.902", + "timestampUnix": 1708934051902 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:11.902", + "timestampUnix": 1708934051902 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:11.902", + "timestampUnix": 1708934051902 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:54:11 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:11.902", + "timestampUnix": 1708934051902 + }, + { + "message": "header: content-length: 178", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:11.902", + "timestampUnix": 1708934051902 + }, + { + "message": "header: x-envoy-upstream-service-time: 1", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:11.902", + "timestampUnix": 1708934051902 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://details:9080 \"GET /details/0 HTTP/1.1\" 200 178", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:11.902", + "timestampUnix": 1708934051902 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): reviews:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:11.904", + "timestampUnix": 1708934051904 + }, + { + "message": "send: b'GET /reviews/0 HTTP/1.1\\r\\nHost: reviews:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: 7767458ac8f3bac5f55981fb526bd14e\\r\\nX-B3-SpanId: 107cf41741bd7c11\\r\\nX-B3-ParentSpanId: f55981fb526bd14e\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: 68269792-2ea0-9837-98fd-a89aa0ab5286\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:54:11.905", + "timestampUnix": 1708934051905 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:11.905", + "timestampUnix": 1708934051905 + }, + { + "message": "header: x-powered-by: Servlet/3.1", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:11.905", + "timestampUnix": 1708934051905 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:11.905", + "timestampUnix": 1708934051905 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:54:11 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:11.905", + "timestampUnix": 1708934051905 + }, + { + "message": "header: content-language: en-US", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:11.905", + "timestampUnix": 1708934051905 + }, + { + "message": "header: content-length: 358", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:11.905", + "timestampUnix": 1708934051905 + }, + { + "message": "header: x-envoy-upstream-service-time: 0", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:11.905", + "timestampUnix": 1708934051905 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:11.905", + "timestampUnix": 1708934051905 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://reviews:9080 \"GET /reviews/0 HTTP/1.1\" 200 358", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:11.905", + "timestampUnix": 1708934051905 + }, + { + "message": "INFO:werkzeug:::ffff:127.0.0.6 - - [26/Feb/2024 07:54:11] \"GET /productpage HTTP/1.1\" 200 -", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:11.906", + "timestampUnix": 1708934051906 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): details:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:12.900", + "timestampUnix": 1708934052900 + }, + { + "message": "send: b'GET /details/0 HTTP/1.1\\r\\nHost: details:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: bdcce49f5fa0103ad51864b60abbec86\\r\\nX-B3-SpanId: 81baed9e818890d1\\r\\nX-B3-ParentSpanId: d51864b60abbec86\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: 0909cddf-6dd6-9845-a12d-8b1e1e4f4a28\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:54:12.902", + "timestampUnix": 1708934052902 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:12.902", + "timestampUnix": 1708934052902 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:12.902", + "timestampUnix": 1708934052902 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:12.902", + "timestampUnix": 1708934052902 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:54:12 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:12.902", + "timestampUnix": 1708934052902 + }, + { + "message": "header: content-length: 178", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:12.902", + "timestampUnix": 1708934052902 + }, + { + "message": "header: x-envoy-upstream-service-time: 1", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:12.902", + "timestampUnix": 1708934052902 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://details:9080 \"GET /details/0 HTTP/1.1\" 200 178", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:12.902", + "timestampUnix": 1708934052902 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): reviews:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:12.904", + "timestampUnix": 1708934052904 + }, + { + "message": "send: b'GET /reviews/0 HTTP/1.1\\r\\nHost: reviews:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: bdcce49f5fa0103ad51864b60abbec86\\r\\nX-B3-SpanId: 81baed9e818890d1\\r\\nX-B3-ParentSpanId: d51864b60abbec86\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: 0909cddf-6dd6-9845-a12d-8b1e1e4f4a28\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:54:12.906", + "timestampUnix": 1708934052906 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:12.906", + "timestampUnix": 1708934052906 + }, + { + "message": "header: x-powered-by: Servlet/3.1", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:12.906", + "timestampUnix": 1708934052906 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:12.906", + "timestampUnix": 1708934052906 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:54:11 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:12.906", + "timestampUnix": 1708934052906 + }, + { + "message": "header: content-language: en-US", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:12.906", + "timestampUnix": 1708934052906 + }, + { + "message": "header: content-length: 358", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:12.906", + "timestampUnix": 1708934052906 + }, + { + "message": "header: x-envoy-upstream-service-time: 0", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:12.906", + "timestampUnix": 1708934052906 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:12.906", + "timestampUnix": 1708934052906 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://reviews:9080 \"GET /reviews/0 HTTP/1.1\" 200 358", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:12.906", + "timestampUnix": 1708934052906 + }, + { + "message": "INFO:werkzeug:::ffff:127.0.0.6 - - [26/Feb/2024 07:54:12] \"GET /productpage HTTP/1.1\" 200 -", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:12.906", + "timestampUnix": 1708934052906 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): details:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:13.901", + "timestampUnix": 1708934053901 + }, + { + "message": "send: b'GET /details/0 HTTP/1.1\\r\\nHost: details:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: 2c45e3249b3bddc5da5205fe8d07cff4\\r\\nX-B3-SpanId: 861de15fc8fa7254\\r\\nX-B3-ParentSpanId: da5205fe8d07cff4\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: 2490ae7a-2f3f-9294-8387-64dae3bea3a6\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:54:13.903", + "timestampUnix": 1708934053903 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:13.903", + "timestampUnix": 1708934053903 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:13.903", + "timestampUnix": 1708934053903 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:13.903", + "timestampUnix": 1708934053903 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:54:13 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:13.903", + "timestampUnix": 1708934053903 + }, + { + "message": "header: content-length: 178", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:13.903", + "timestampUnix": 1708934053903 + }, + { + "message": "header: x-envoy-upstream-service-time: 1", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:13.903", + "timestampUnix": 1708934053903 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://details:9080 \"GET /details/0 HTTP/1.1\" 200 178", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:13.903", + "timestampUnix": 1708934053903 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): reviews:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:13.904", + "timestampUnix": 1708934053904 + }, + { + "message": "send: b'GET /reviews/0 HTTP/1.1\\r\\nHost: reviews:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: 2c45e3249b3bddc5da5205fe8d07cff4\\r\\nX-B3-SpanId: 861de15fc8fa7254\\r\\nX-B3-ParentSpanId: da5205fe8d07cff4\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: 2490ae7a-2f3f-9294-8387-64dae3bea3a6\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:54:13.908", + "timestampUnix": 1708934053908 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:13.908", + "timestampUnix": 1708934053908 + }, + { + "message": "header: x-powered-by: Servlet/3.1", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:13.908", + "timestampUnix": 1708934053908 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:13.908", + "timestampUnix": 1708934053908 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:54:13 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:13.908", + "timestampUnix": 1708934053908 + }, + { + "message": "header: content-language: en-US", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:13.908", + "timestampUnix": 1708934053908 + }, + { + "message": "header: content-length: 437", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:13.908", + "timestampUnix": 1708934053908 + }, + { + "message": "header: x-envoy-upstream-service-time: 2", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:13.908", + "timestampUnix": 1708934053908 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:13.908", + "timestampUnix": 1708934053908 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://reviews:9080 \"GET /reviews/0 HTTP/1.1\" 200 437", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:13.908", + "timestampUnix": 1708934053908 + }, + { + "message": "INFO:werkzeug:::ffff:127.0.0.6 - - [26/Feb/2024 07:54:13] \"GET /productpage HTTP/1.1\" 200 -", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:13.909", + "timestampUnix": 1708934053909 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): details:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:14.906", + "timestampUnix": 1708934054906 + }, + { + "message": "send: b'GET /details/0 HTTP/1.1\\r\\nHost: details:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: cd40377206eb5ff305518b3a94a51987\\r\\nX-B3-SpanId: 469a326c0b708eb0\\r\\nX-B3-ParentSpanId: 05518b3a94a51987\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: edae774c-dd90-9678-83db-768cb621e6ef\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:54:14.909", + "timestampUnix": 1708934054909 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:14.909", + "timestampUnix": 1708934054909 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:14.909", + "timestampUnix": 1708934054909 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:14.909", + "timestampUnix": 1708934054909 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:54:14 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:14.909", + "timestampUnix": 1708934054909 + }, + { + "message": "header: content-length: 178", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:14.909", + "timestampUnix": 1708934054909 + }, + { + "message": "header: x-envoy-upstream-service-time: 1", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:14.909", + "timestampUnix": 1708934054909 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://details:9080 \"GET /details/0 HTTP/1.1\" 200 178", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:14.909", + "timestampUnix": 1708934054909 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): reviews:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:14.911", + "timestampUnix": 1708934054911 + }, + { + "message": "send: b'GET /reviews/0 HTTP/1.1\\r\\nHost: reviews:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: cd40377206eb5ff305518b3a94a51987\\r\\nX-B3-SpanId: 469a326c0b708eb0\\r\\nX-B3-ParentSpanId: 05518b3a94a51987\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: edae774c-dd90-9678-83db-768cb621e6ef\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:54:14.915", + "timestampUnix": 1708934054915 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:14.915", + "timestampUnix": 1708934054915 + }, + { + "message": "header: x-powered-by: Servlet/3.1", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:14.915", + "timestampUnix": 1708934054915 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:14.915", + "timestampUnix": 1708934054915 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:54:14 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:14.915", + "timestampUnix": 1708934054915 + }, + { + "message": "header: content-language: en-US", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:14.915", + "timestampUnix": 1708934054915 + }, + { + "message": "header: content-length: 437", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:14.915", + "timestampUnix": 1708934054915 + }, + { + "message": "header: x-envoy-upstream-service-time: 3", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:14.915", + "timestampUnix": 1708934054915 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:14.915", + "timestampUnix": 1708934054915 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://reviews:9080 \"GET /reviews/0 HTTP/1.1\" 200 437", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:14.915", + "timestampUnix": 1708934054915 + }, + { + "message": "INFO:werkzeug:::ffff:127.0.0.6 - - [26/Feb/2024 07:54:14] \"GET /productpage HTTP/1.1\" 200 -", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:14.916", + "timestampUnix": 1708934054916 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): details:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:15.900", + "timestampUnix": 1708934055900 + }, + { + "message": "send: b'GET /details/0 HTTP/1.1\\r\\nHost: details:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: f9c1cd8295cc0b7b0cd552458fc0844d\\r\\nX-B3-SpanId: eb32461f87e16251\\r\\nX-B3-ParentSpanId: 0cd552458fc0844d\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: 41381e70-f3b4-9299-b359-291fcc677358\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:54:15.903", + "timestampUnix": 1708934055903 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:15.903", + "timestampUnix": 1708934055903 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:15.903", + "timestampUnix": 1708934055903 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:15.903", + "timestampUnix": 1708934055903 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:54:15 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:15.903", + "timestampUnix": 1708934055903 + }, + { + "message": "header: content-length: 178", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:15.903", + "timestampUnix": 1708934055903 + }, + { + "message": "header: x-envoy-upstream-service-time: 1", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:15.903", + "timestampUnix": 1708934055903 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://details:9080 \"GET /details/0 HTTP/1.1\" 200 178", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:15.903", + "timestampUnix": 1708934055903 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): reviews:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:15.905", + "timestampUnix": 1708934055905 + }, + { + "message": "send: b'GET /reviews/0 HTTP/1.1\\r\\nHost: reviews:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: f9c1cd8295cc0b7b0cd552458fc0844d\\r\\nX-B3-SpanId: eb32461f87e16251\\r\\nX-B3-ParentSpanId: 0cd552458fc0844d\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: 41381e70-f3b4-9299-b359-291fcc677358\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:54:15.909", + "timestampUnix": 1708934055909 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:15.909", + "timestampUnix": 1708934055909 + }, + { + "message": "header: x-powered-by: Servlet/3.1", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:15.909", + "timestampUnix": 1708934055909 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:15.909", + "timestampUnix": 1708934055909 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:54:14 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:15.909", + "timestampUnix": 1708934055909 + }, + { + "message": "header: content-language: en-US", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:15.909", + "timestampUnix": 1708934055909 + }, + { + "message": "header: content-length: 437", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:15.909", + "timestampUnix": 1708934055909 + }, + { + "message": "header: x-envoy-upstream-service-time: 2", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:15.909", + "timestampUnix": 1708934055909 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:15.909", + "timestampUnix": 1708934055909 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://reviews:9080 \"GET /reviews/0 HTTP/1.1\" 200 437", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:15.909", + "timestampUnix": 1708934055909 + }, + { + "message": "INFO:werkzeug:::ffff:127.0.0.6 - - [26/Feb/2024 07:54:15] \"GET /productpage HTTP/1.1\" 200 -", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:15.910", + "timestampUnix": 1708934055910 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): details:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:16.900", + "timestampUnix": 1708934056900 + }, + { + "message": "send: b'GET /details/0 HTTP/1.1\\r\\nHost: details:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: 24da92f4c0f79863b77cdfcf38de448e\\r\\nX-B3-SpanId: f34ed54da3fd8d39\\r\\nX-B3-ParentSpanId: b77cdfcf38de448e\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: 67c58083-46a1-908d-ad03-9412257e2f11\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:54:16.903", + "timestampUnix": 1708934056903 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:16.903", + "timestampUnix": 1708934056903 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:16.903", + "timestampUnix": 1708934056903 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:16.903", + "timestampUnix": 1708934056903 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:54:16 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:16.903", + "timestampUnix": 1708934056903 + }, + { + "message": "header: content-length: 178", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:16.903", + "timestampUnix": 1708934056903 + }, + { + "message": "header: x-envoy-upstream-service-time: 1", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:16.903", + "timestampUnix": 1708934056903 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://details:9080 \"GET /details/0 HTTP/1.1\" 200 178", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:16.903", + "timestampUnix": 1708934056903 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): reviews:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:16.904", + "timestampUnix": 1708934056904 + }, + { + "message": "send: b'GET /reviews/0 HTTP/1.1\\r\\nHost: reviews:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: 24da92f4c0f79863b77cdfcf38de448e\\r\\nX-B3-SpanId: f34ed54da3fd8d39\\r\\nX-B3-ParentSpanId: b77cdfcf38de448e\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: 67c58083-46a1-908d-ad03-9412257e2f11\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:54:16.909", + "timestampUnix": 1708934056909 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:16.909", + "timestampUnix": 1708934056909 + }, + { + "message": "header: x-powered-by: Servlet/3.1", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:16.909", + "timestampUnix": 1708934056909 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:16.909", + "timestampUnix": 1708934056909 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:54:16 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:16.909", + "timestampUnix": 1708934056909 + }, + { + "message": "header: content-language: en-US", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:16.909", + "timestampUnix": 1708934056909 + }, + { + "message": "header: content-length: 437", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:16.909", + "timestampUnix": 1708934056909 + }, + { + "message": "header: x-envoy-upstream-service-time: 2", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:16.909", + "timestampUnix": 1708934056909 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:16.909", + "timestampUnix": 1708934056909 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://reviews:9080 \"GET /reviews/0 HTTP/1.1\" 200 437", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:16.909", + "timestampUnix": 1708934056909 + }, + { + "message": "INFO:werkzeug:::ffff:127.0.0.6 - - [26/Feb/2024 07:54:16] \"GET /productpage HTTP/1.1\" 200 -", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:16.910", + "timestampUnix": 1708934056910 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): details:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:17.901", + "timestampUnix": 1708934057901 + }, + { + "message": "send: b'GET /details/0 HTTP/1.1\\r\\nHost: details:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: a848076196e4954fa9e9c6b4e9de932c\\r\\nX-B3-SpanId: 777b5d68ca878b88\\r\\nX-B3-ParentSpanId: a9e9c6b4e9de932c\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: 088456af-cac9-9c43-a1a0-30b79244a993\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:54:17.903", + "timestampUnix": 1708934057903 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:17.903", + "timestampUnix": 1708934057903 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:17.903", + "timestampUnix": 1708934057903 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:17.903", + "timestampUnix": 1708934057903 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:54:17 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:17.903", + "timestampUnix": 1708934057903 + }, + { + "message": "header: content-length: 178", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:17.903", + "timestampUnix": 1708934057903 + }, + { + "message": "header: x-envoy-upstream-service-time: 1", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:17.903", + "timestampUnix": 1708934057903 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://details:9080 \"GET /details/0 HTTP/1.1\" 200 178", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:17.903", + "timestampUnix": 1708934057903 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): reviews:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:17.905", + "timestampUnix": 1708934057905 + }, + { + "message": "send: b'GET /reviews/0 HTTP/1.1\\r\\nHost: reviews:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: a848076196e4954fa9e9c6b4e9de932c\\r\\nX-B3-SpanId: 777b5d68ca878b88\\r\\nX-B3-ParentSpanId: a9e9c6b4e9de932c\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: 088456af-cac9-9c43-a1a0-30b79244a993\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:54:17.909", + "timestampUnix": 1708934057909 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:17.909", + "timestampUnix": 1708934057909 + }, + { + "message": "header: x-powered-by: Servlet/3.1", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:17.909", + "timestampUnix": 1708934057909 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:17.909", + "timestampUnix": 1708934057909 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:54:17 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:17.909", + "timestampUnix": 1708934057909 + }, + { + "message": "header: content-language: en-US", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:17.909", + "timestampUnix": 1708934057909 + }, + { + "message": "header: content-length: 442", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:17.909", + "timestampUnix": 1708934057909 + }, + { + "message": "header: x-envoy-upstream-service-time: 2", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:17.909", + "timestampUnix": 1708934057909 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:17.909", + "timestampUnix": 1708934057909 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://reviews:9080 \"GET /reviews/0 HTTP/1.1\" 200 442", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:17.909", + "timestampUnix": 1708934057909 + }, + { + "message": "INFO:werkzeug:::ffff:127.0.0.6 - - [26/Feb/2024 07:54:17] \"GET /productpage HTTP/1.1\" 200 -", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:17.910", + "timestampUnix": 1708934057910 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): details:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:18.906", + "timestampUnix": 1708934058906 + }, + { + "message": "send: b'GET /details/0 HTTP/1.1\\r\\nHost: details:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: 2e674b4890f1127c5c2f48044b2a2594\\r\\nX-B3-SpanId: 17b1ceae97f486e6\\r\\nX-B3-ParentSpanId: 5c2f48044b2a2594\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: f6f0206b-be41-9716-a668-2d8b739f328b\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:54:18.909", + "timestampUnix": 1708934058909 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:18.909", + "timestampUnix": 1708934058909 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:18.909", + "timestampUnix": 1708934058909 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:18.909", + "timestampUnix": 1708934058909 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:54:18 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:18.909", + "timestampUnix": 1708934058909 + }, + { + "message": "header: content-length: 178", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:18.909", + "timestampUnix": 1708934058909 + }, + { + "message": "header: x-envoy-upstream-service-time: 1", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:18.909", + "timestampUnix": 1708934058909 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://details:9080 \"GET /details/0 HTTP/1.1\" 200 178", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:18.909", + "timestampUnix": 1708934058909 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): reviews:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:18.911", + "timestampUnix": 1708934058911 + }, + { + "message": "send: b'GET /reviews/0 HTTP/1.1\\r\\nHost: reviews:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: 2e674b4890f1127c5c2f48044b2a2594\\r\\nX-B3-SpanId: 17b1ceae97f486e6\\r\\nX-B3-ParentSpanId: 5c2f48044b2a2594\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: f6f0206b-be41-9716-a668-2d8b739f328b\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:54:18.914", + "timestampUnix": 1708934058914 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:18.914", + "timestampUnix": 1708934058914 + }, + { + "message": "header: x-powered-by: Servlet/3.1", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:18.914", + "timestampUnix": 1708934058914 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:18.914", + "timestampUnix": 1708934058914 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:54:18 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:18.914", + "timestampUnix": 1708934058914 + }, + { + "message": "header: content-language: en-US", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:18.914", + "timestampUnix": 1708934058914 + }, + { + "message": "header: content-length: 358", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:18.914", + "timestampUnix": 1708934058914 + }, + { + "message": "header: x-envoy-upstream-service-time: 1", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:18.914", + "timestampUnix": 1708934058914 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:18.914", + "timestampUnix": 1708934058914 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://reviews:9080 \"GET /reviews/0 HTTP/1.1\" 200 358", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:18.914", + "timestampUnix": 1708934058914 + }, + { + "message": "INFO:werkzeug:::ffff:127.0.0.6 - - [26/Feb/2024 07:54:18] \"GET /productpage HTTP/1.1\" 200 -", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:18.915", + "timestampUnix": 1708934058915 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): details:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:19.903", + "timestampUnix": 1708934059903 + }, + { + "message": "send: b'GET /details/0 HTTP/1.1\\r\\nHost: details:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: 65f510c13dfe119b16d9b9c115fed10f\\r\\nX-B3-SpanId: d39c36a5a80f6004\\r\\nX-B3-ParentSpanId: 16d9b9c115fed10f\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: 6183ecef-13c2-9205-9f65-52d7721eb4dc\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:54:19.909", + "timestampUnix": 1708934059909 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:19.909", + "timestampUnix": 1708934059909 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:19.909", + "timestampUnix": 1708934059909 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:19.909", + "timestampUnix": 1708934059909 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:54:19 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:19.909", + "timestampUnix": 1708934059909 + }, + { + "message": "header: content-length: 178", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:19.909", + "timestampUnix": 1708934059909 + }, + { + "message": "header: x-envoy-upstream-service-time: 3", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:19.909", + "timestampUnix": 1708934059909 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://details:9080 \"GET /details/0 HTTP/1.1\" 200 178", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:19.909", + "timestampUnix": 1708934059909 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): reviews:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:19.914", + "timestampUnix": 1708934059914 + }, + { + "message": "send: b'GET /reviews/0 HTTP/1.1\\r\\nHost: reviews:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: 65f510c13dfe119b16d9b9c115fed10f\\r\\nX-B3-SpanId: d39c36a5a80f6004\\r\\nX-B3-ParentSpanId: 16d9b9c115fed10f\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: 6183ecef-13c2-9205-9f65-52d7721eb4dc\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:54:19.926", + "timestampUnix": 1708934059926 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:19.926", + "timestampUnix": 1708934059926 + }, + { + "message": "header: x-powered-by: Servlet/3.1", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:19.926", + "timestampUnix": 1708934059926 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:19.926", + "timestampUnix": 1708934059926 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:54:19 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:19.926", + "timestampUnix": 1708934059926 + }, + { + "message": "header: content-language: en-US", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:19.926", + "timestampUnix": 1708934059926 + }, + { + "message": "header: content-length: 442", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:19.926", + "timestampUnix": 1708934059926 + }, + { + "message": "header: x-envoy-upstream-service-time: 8", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:19.926", + "timestampUnix": 1708934059926 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:19.926", + "timestampUnix": 1708934059926 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://reviews:9080 \"GET /reviews/0 HTTP/1.1\" 200 442", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:19.926", + "timestampUnix": 1708934059926 + }, + { + "message": "INFO:werkzeug:::ffff:127.0.0.6 - - [26/Feb/2024 07:54:19] \"GET /productpage HTTP/1.1\" 200 -", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:19.930", + "timestampUnix": 1708934059930 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): details:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:20.908", + "timestampUnix": 1708934060908 + }, + { + "message": "send: b'GET /details/0 HTTP/1.1\\r\\nHost: details:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: 6f58c1756bfc2ebfa39ff5dc4ac08d2c\\r\\nX-B3-SpanId: e54374d1731b7bbd\\r\\nX-B3-ParentSpanId: a39ff5dc4ac08d2c\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: f5388967-7ad8-9335-a3cb-063b262e4db8\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:54:20.911", + "timestampUnix": 1708934060911 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:20.911", + "timestampUnix": 1708934060911 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:20.911", + "timestampUnix": 1708934060911 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:20.911", + "timestampUnix": 1708934060911 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:54:20 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:20.911", + "timestampUnix": 1708934060911 + }, + { + "message": "header: content-length: 178", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:20.911", + "timestampUnix": 1708934060911 + }, + { + "message": "header: x-envoy-upstream-service-time: 1", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:20.911", + "timestampUnix": 1708934060911 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://details:9080 \"GET /details/0 HTTP/1.1\" 200 178", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:20.911", + "timestampUnix": 1708934060911 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): reviews:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:20.913", + "timestampUnix": 1708934060913 + }, + { + "message": "send: b'GET /reviews/0 HTTP/1.1\\r\\nHost: reviews:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: 6f58c1756bfc2ebfa39ff5dc4ac08d2c\\r\\nX-B3-SpanId: e54374d1731b7bbd\\r\\nX-B3-ParentSpanId: a39ff5dc4ac08d2c\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: f5388967-7ad8-9335-a3cb-063b262e4db8\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:54:20.917", + "timestampUnix": 1708934060917 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:20.917", + "timestampUnix": 1708934060917 + }, + { + "message": "header: x-powered-by: Servlet/3.1", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:20.917", + "timestampUnix": 1708934060917 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:20.917", + "timestampUnix": 1708934060917 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:54:20 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:20.917", + "timestampUnix": 1708934060917 + }, + { + "message": "header: content-language: en-US", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:20.917", + "timestampUnix": 1708934060917 + }, + { + "message": "header: content-length: 437", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:20.917", + "timestampUnix": 1708934060917 + }, + { + "message": "header: x-envoy-upstream-service-time: 2", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:20.917", + "timestampUnix": 1708934060917 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:20.917", + "timestampUnix": 1708934060917 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://reviews:9080 \"GET /reviews/0 HTTP/1.1\" 200 437", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:20.917", + "timestampUnix": 1708934060917 + }, + { + "message": "INFO:werkzeug:::ffff:127.0.0.6 - - [26/Feb/2024 07:54:20] \"GET /productpage HTTP/1.1\" 200 -", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:20.918", + "timestampUnix": 1708934060918 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): details:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:21.900", + "timestampUnix": 1708934061900 + }, + { + "message": "send: b'GET /details/0 HTTP/1.1\\r\\nHost: details:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: f835cea30539db6f0363967e027d3b02\\r\\nX-B3-SpanId: 3749e3fa016e97f4\\r\\nX-B3-ParentSpanId: 0363967e027d3b02\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: ada1eedc-5037-9401-80b8-3baa141c7d86\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:54:21.902", + "timestampUnix": 1708934061902 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:21.902", + "timestampUnix": 1708934061902 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:21.902", + "timestampUnix": 1708934061902 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:21.902", + "timestampUnix": 1708934061902 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:54:21 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:21.902", + "timestampUnix": 1708934061902 + }, + { + "message": "header: content-length: 178", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:21.902", + "timestampUnix": 1708934061902 + }, + { + "message": "header: x-envoy-upstream-service-time: 1", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:21.902", + "timestampUnix": 1708934061902 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://details:9080 \"GET /details/0 HTTP/1.1\" 200 178", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:21.902", + "timestampUnix": 1708934061902 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): reviews:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:21.903", + "timestampUnix": 1708934061903 + }, + { + "message": "send: b'GET /reviews/0 HTTP/1.1\\r\\nHost: reviews:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: f835cea30539db6f0363967e027d3b02\\r\\nX-B3-SpanId: 3749e3fa016e97f4\\r\\nX-B3-ParentSpanId: 0363967e027d3b02\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: ada1eedc-5037-9401-80b8-3baa141c7d86\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:54:21.905", + "timestampUnix": 1708934061905 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:21.905", + "timestampUnix": 1708934061905 + }, + { + "message": "header: x-powered-by: Servlet/3.1", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:21.905", + "timestampUnix": 1708934061905 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:21.905", + "timestampUnix": 1708934061905 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:54:21 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:21.905", + "timestampUnix": 1708934061905 + }, + { + "message": "header: content-language: en-US", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:21.905", + "timestampUnix": 1708934061905 + }, + { + "message": "header: content-length: 358", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:21.905", + "timestampUnix": 1708934061905 + }, + { + "message": "header: x-envoy-upstream-service-time: 0", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:21.905", + "timestampUnix": 1708934061905 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:21.905", + "timestampUnix": 1708934061905 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://reviews:9080 \"GET /reviews/0 HTTP/1.1\" 200 358", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:21.905", + "timestampUnix": 1708934061905 + }, + { + "message": "INFO:werkzeug:::ffff:127.0.0.6 - - [26/Feb/2024 07:54:21] \"GET /productpage HTTP/1.1\" 200 -", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:21.906", + "timestampUnix": 1708934061906 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): details:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:22.907", + "timestampUnix": 1708934062907 + }, + { + "message": "send: b'GET /details/0 HTTP/1.1\\r\\nHost: details:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: ccb1076b6bfd87e0af7a82ce9c0b5880\\r\\nX-B3-SpanId: e1da23fbaae06961\\r\\nX-B3-ParentSpanId: af7a82ce9c0b5880\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: f8b9fd63-5553-9e0a-9cad-b9cb476a2040\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:54:22.914", + "timestampUnix": 1708934062914 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:22.914", + "timestampUnix": 1708934062914 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:22.914", + "timestampUnix": 1708934062914 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:22.914", + "timestampUnix": 1708934062914 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:54:22 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:22.915", + "timestampUnix": 1708934062915 + }, + { + "message": "header: content-length: 178", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:22.915", + "timestampUnix": 1708934062915 + }, + { + "message": "header: x-envoy-upstream-service-time: 3", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:22.915", + "timestampUnix": 1708934062915 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://details:9080 \"GET /details/0 HTTP/1.1\" 200 178", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:22.915", + "timestampUnix": 1708934062915 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): reviews:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:22.920", + "timestampUnix": 1708934062920 + }, + { + "message": "send: b'GET /reviews/0 HTTP/1.1\\r\\nHost: reviews:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: ccb1076b6bfd87e0af7a82ce9c0b5880\\r\\nX-B3-SpanId: e1da23fbaae06961\\r\\nX-B3-ParentSpanId: af7a82ce9c0b5880\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: f8b9fd63-5553-9e0a-9cad-b9cb476a2040\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:54:22.931", + "timestampUnix": 1708934062931 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:22.931", + "timestampUnix": 1708934062931 + }, + { + "message": "header: x-powered-by: Servlet/3.1", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:22.931", + "timestampUnix": 1708934062931 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:22.931", + "timestampUnix": 1708934062931 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:54:22 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:22.931", + "timestampUnix": 1708934062931 + }, + { + "message": "header: content-language: en-US", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:22.931", + "timestampUnix": 1708934062931 + }, + { + "message": "header: content-length: 442", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:22.931", + "timestampUnix": 1708934062931 + }, + { + "message": "header: x-envoy-upstream-service-time: 8", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:22.931", + "timestampUnix": 1708934062931 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:22.931", + "timestampUnix": 1708934062931 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://reviews:9080 \"GET /reviews/0 HTTP/1.1\" 200 442", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:22.931", + "timestampUnix": 1708934062931 + }, + { + "message": "INFO:werkzeug:::ffff:127.0.0.6 - - [26/Feb/2024 07:54:22] \"GET /productpage HTTP/1.1\" 200 -", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:22.932", + "timestampUnix": 1708934062932 + }, + { + "message": "INFO:werkzeug:::ffff:127.0.0.1 - - [26/Feb/2024 07:54:22] \"GET /metrics HTTP/1.1\" 200 -", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:22.984", + "timestampUnix": 1708934062984 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): details:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:23.900", + "timestampUnix": 1708934063900 + }, + { + "message": "send: b'GET /details/0 HTTP/1.1\\r\\nHost: details:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: dfd15d38ec4b1b2b1416a7fa1e6d5de7\\r\\nX-B3-SpanId: 6b3e2c0d4093c81d\\r\\nX-B3-ParentSpanId: 1416a7fa1e6d5de7\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: a18bf8f3-7ea4-9221-a200-391cc8290488\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:54:23.903", + "timestampUnix": 1708934063903 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:23.903", + "timestampUnix": 1708934063903 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:23.903", + "timestampUnix": 1708934063903 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:23.903", + "timestampUnix": 1708934063903 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:54:23 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:23.903", + "timestampUnix": 1708934063903 + }, + { + "message": "header: content-length: 178", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:23.903", + "timestampUnix": 1708934063903 + }, + { + "message": "header: x-envoy-upstream-service-time: 1", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:23.903", + "timestampUnix": 1708934063903 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://details:9080 \"GET /details/0 HTTP/1.1\" 200 178", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:23.903", + "timestampUnix": 1708934063903 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): reviews:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:23.904", + "timestampUnix": 1708934063904 + }, + { + "message": "send: b'GET /reviews/0 HTTP/1.1\\r\\nHost: reviews:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: dfd15d38ec4b1b2b1416a7fa1e6d5de7\\r\\nX-B3-SpanId: 6b3e2c0d4093c81d\\r\\nX-B3-ParentSpanId: 1416a7fa1e6d5de7\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: a18bf8f3-7ea4-9221-a200-391cc8290488\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:54:23.906", + "timestampUnix": 1708934063906 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:23.906", + "timestampUnix": 1708934063906 + }, + { + "message": "header: x-powered-by: Servlet/3.1", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:23.906", + "timestampUnix": 1708934063906 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:23.906", + "timestampUnix": 1708934063906 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:54:23 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:23.906", + "timestampUnix": 1708934063906 + }, + { + "message": "header: content-language: en-US", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:23.906", + "timestampUnix": 1708934063906 + }, + { + "message": "header: content-length: 358", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:23.906", + "timestampUnix": 1708934063906 + }, + { + "message": "header: x-envoy-upstream-service-time: 0", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:23.906", + "timestampUnix": 1708934063906 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:23.906", + "timestampUnix": 1708934063906 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://reviews:9080 \"GET /reviews/0 HTTP/1.1\" 200 358", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:23.906", + "timestampUnix": 1708934063906 + }, + { + "message": "INFO:werkzeug:::ffff:127.0.0.6 - - [26/Feb/2024 07:54:23] \"GET /productpage HTTP/1.1\" 200 -", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:23.907", + "timestampUnix": 1708934063907 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): details:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:24.900", + "timestampUnix": 1708934064900 + }, + { + "message": "send: b'GET /details/0 HTTP/1.1\\r\\nHost: details:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: 5615419b1d639c3ae5a504e039341bd9\\r\\nX-B3-SpanId: bcb666a913244817\\r\\nX-B3-ParentSpanId: e5a504e039341bd9\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: 4d4b0f6b-466a-9a21-9306-02ebdb4ba708\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:54:24.903", + "timestampUnix": 1708934064903 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:24.903", + "timestampUnix": 1708934064903 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:24.903", + "timestampUnix": 1708934064903 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:24.903", + "timestampUnix": 1708934064903 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:54:24 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:24.903", + "timestampUnix": 1708934064903 + }, + { + "message": "header: content-length: 178", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:24.903", + "timestampUnix": 1708934064903 + }, + { + "message": "header: x-envoy-upstream-service-time: 1", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:24.903", + "timestampUnix": 1708934064903 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://details:9080 \"GET /details/0 HTTP/1.1\" 200 178", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:24.903", + "timestampUnix": 1708934064903 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): reviews:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:24.904", + "timestampUnix": 1708934064904 + }, + { + "message": "send: b'GET /reviews/0 HTTP/1.1\\r\\nHost: reviews:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: 5615419b1d639c3ae5a504e039341bd9\\r\\nX-B3-SpanId: bcb666a913244817\\r\\nX-B3-ParentSpanId: e5a504e039341bd9\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: 4d4b0f6b-466a-9a21-9306-02ebdb4ba708\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:54:24.908", + "timestampUnix": 1708934064908 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:24.908", + "timestampUnix": 1708934064908 + }, + { + "message": "header: x-powered-by: Servlet/3.1", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:24.908", + "timestampUnix": 1708934064908 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:24.908", + "timestampUnix": 1708934064908 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:54:24 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:24.908", + "timestampUnix": 1708934064908 + }, + { + "message": "header: content-language: en-US", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:24.908", + "timestampUnix": 1708934064908 + }, + { + "message": "header: content-length: 442", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:24.908", + "timestampUnix": 1708934064908 + }, + { + "message": "header: x-envoy-upstream-service-time: 2", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:24.908", + "timestampUnix": 1708934064908 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:24.908", + "timestampUnix": 1708934064908 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://reviews:9080 \"GET /reviews/0 HTTP/1.1\" 200 442", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:24.908", + "timestampUnix": 1708934064908 + }, + { + "message": "INFO:werkzeug:::ffff:127.0.0.6 - - [26/Feb/2024 07:54:24] \"GET /productpage HTTP/1.1\" 200 -", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:24.909", + "timestampUnix": 1708934064909 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): details:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:25.900", + "timestampUnix": 1708934065900 + }, + { + "message": "send: b'GET /details/0 HTTP/1.1\\r\\nHost: details:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: a41363cfb228485461413339239aae07\\r\\nX-B3-SpanId: 44a997b8008bb412\\r\\nX-B3-ParentSpanId: 61413339239aae07\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: 54b490e8-e813-9094-9b10-5dcd7667e9ec\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:54:25.903", + "timestampUnix": 1708934065903 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:25.903", + "timestampUnix": 1708934065903 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:25.903", + "timestampUnix": 1708934065903 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:25.903", + "timestampUnix": 1708934065903 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:54:25 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:25.903", + "timestampUnix": 1708934065903 + }, + { + "message": "header: content-length: 178", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:25.903", + "timestampUnix": 1708934065903 + }, + { + "message": "header: x-envoy-upstream-service-time: 1", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:25.903", + "timestampUnix": 1708934065903 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://details:9080 \"GET /details/0 HTTP/1.1\" 200 178", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:25.903", + "timestampUnix": 1708934065903 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): reviews:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:25.904", + "timestampUnix": 1708934065904 + }, + { + "message": "send: b'GET /reviews/0 HTTP/1.1\\r\\nHost: reviews:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: a41363cfb228485461413339239aae07\\r\\nX-B3-SpanId: 44a997b8008bb412\\r\\nX-B3-ParentSpanId: 61413339239aae07\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: 54b490e8-e813-9094-9b10-5dcd7667e9ec\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:54:25.906", + "timestampUnix": 1708934065906 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:25.906", + "timestampUnix": 1708934065906 + }, + { + "message": "header: x-powered-by: Servlet/3.1", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:25.906", + "timestampUnix": 1708934065906 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:25.906", + "timestampUnix": 1708934065906 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:54:25 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:25.906", + "timestampUnix": 1708934065906 + }, + { + "message": "header: content-language: en-US", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:25.906", + "timestampUnix": 1708934065906 + }, + { + "message": "header: content-length: 358", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:25.906", + "timestampUnix": 1708934065906 + }, + { + "message": "header: x-envoy-upstream-service-time: 0", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:25.906", + "timestampUnix": 1708934065906 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:25.906", + "timestampUnix": 1708934065906 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://reviews:9080 \"GET /reviews/0 HTTP/1.1\" 200 358", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:25.906", + "timestampUnix": 1708934065906 + }, + { + "message": "INFO:werkzeug:::ffff:127.0.0.6 - - [26/Feb/2024 07:54:25] \"GET /productpage HTTP/1.1\" 200 -", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:25.907", + "timestampUnix": 1708934065907 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): details:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:26.900", + "timestampUnix": 1708934066900 + }, + { + "message": "send: b'GET /details/0 HTTP/1.1\\r\\nHost: details:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: f9d6a37ae02f97752d40aa472f52f8ac\\r\\nX-B3-SpanId: c49e4657694908b8\\r\\nX-B3-ParentSpanId: 2d40aa472f52f8ac\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: 73eda33a-efa9-9571-afdf-d6d64d9ee03a\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:54:26.902", + "timestampUnix": 1708934066902 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:26.902", + "timestampUnix": 1708934066902 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:26.902", + "timestampUnix": 1708934066902 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:26.902", + "timestampUnix": 1708934066902 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:54:26 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:26.902", + "timestampUnix": 1708934066902 + }, + { + "message": "header: content-length: 178", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:26.902", + "timestampUnix": 1708934066902 + }, + { + "message": "header: x-envoy-upstream-service-time: 1", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:26.902", + "timestampUnix": 1708934066902 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://details:9080 \"GET /details/0 HTTP/1.1\" 200 178", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:26.902", + "timestampUnix": 1708934066902 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): reviews:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:26.904", + "timestampUnix": 1708934066904 + }, + { + "message": "send: b'GET /reviews/0 HTTP/1.1\\r\\nHost: reviews:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: f9d6a37ae02f97752d40aa472f52f8ac\\r\\nX-B3-SpanId: c49e4657694908b8\\r\\nX-B3-ParentSpanId: 2d40aa472f52f8ac\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: 73eda33a-efa9-9571-afdf-d6d64d9ee03a\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:54:26.905", + "timestampUnix": 1708934066905 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:26.905", + "timestampUnix": 1708934066905 + }, + { + "message": "header: x-powered-by: Servlet/3.1", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:26.905", + "timestampUnix": 1708934066905 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:26.905", + "timestampUnix": 1708934066905 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:54:25 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:26.905", + "timestampUnix": 1708934066905 + }, + { + "message": "header: content-language: en-US", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:26.905", + "timestampUnix": 1708934066905 + }, + { + "message": "header: content-length: 358", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:26.905", + "timestampUnix": 1708934066905 + }, + { + "message": "header: x-envoy-upstream-service-time: 0", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:26.905", + "timestampUnix": 1708934066905 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:26.905", + "timestampUnix": 1708934066905 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://reviews:9080 \"GET /reviews/0 HTTP/1.1\" 200 358", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:26.905", + "timestampUnix": 1708934066905 + }, + { + "message": "INFO:werkzeug:::ffff:127.0.0.6 - - [26/Feb/2024 07:54:26] \"GET /productpage HTTP/1.1\" 200 -", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:26.906", + "timestampUnix": 1708934066906 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): details:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:27.900", + "timestampUnix": 1708934067900 + }, + { + "message": "send: b'GET /details/0 HTTP/1.1\\r\\nHost: details:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: 92336a597aff8e3bf290efd2ac7e04ff\\r\\nX-B3-SpanId: d922e9d2b60ff81e\\r\\nX-B3-ParentSpanId: f290efd2ac7e04ff\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: cb7ac49b-2e09-9ef7-aa66-aba4c6d3e98a\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:54:27.902", + "timestampUnix": 1708934067902 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:27.902", + "timestampUnix": 1708934067902 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:27.902", + "timestampUnix": 1708934067902 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:27.902", + "timestampUnix": 1708934067902 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:54:27 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:27.902", + "timestampUnix": 1708934067902 + }, + { + "message": "header: content-length: 178", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:27.902", + "timestampUnix": 1708934067902 + }, + { + "message": "header: x-envoy-upstream-service-time: 1", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:27.902", + "timestampUnix": 1708934067902 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://details:9080 \"GET /details/0 HTTP/1.1\" 200 178", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:27.902", + "timestampUnix": 1708934067902 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): reviews:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:27.904", + "timestampUnix": 1708934067904 + }, + { + "message": "send: b'GET /reviews/0 HTTP/1.1\\r\\nHost: reviews:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: 92336a597aff8e3bf290efd2ac7e04ff\\r\\nX-B3-SpanId: d922e9d2b60ff81e\\r\\nX-B3-ParentSpanId: f290efd2ac7e04ff\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: cb7ac49b-2e09-9ef7-aa66-aba4c6d3e98a\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:54:27.907", + "timestampUnix": 1708934067907 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:27.907", + "timestampUnix": 1708934067907 + }, + { + "message": "header: x-powered-by: Servlet/3.1", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:27.907", + "timestampUnix": 1708934067907 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:27.907", + "timestampUnix": 1708934067907 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:54:27 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:27.907", + "timestampUnix": 1708934067907 + }, + { + "message": "header: content-language: en-US", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:27.907", + "timestampUnix": 1708934067907 + }, + { + "message": "header: content-length: 442", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:27.907", + "timestampUnix": 1708934067907 + }, + { + "message": "header: x-envoy-upstream-service-time: 2", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:27.907", + "timestampUnix": 1708934067907 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:27.907", + "timestampUnix": 1708934067907 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://reviews:9080 \"GET /reviews/0 HTTP/1.1\" 200 442", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:27.907", + "timestampUnix": 1708934067907 + }, + { + "message": "INFO:werkzeug:::ffff:127.0.0.6 - - [26/Feb/2024 07:54:27] \"GET /productpage HTTP/1.1\" 200 -", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:27.908", + "timestampUnix": 1708934067908 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): details:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:28.900", + "timestampUnix": 1708934068900 + }, + { + "message": "send: b'GET /details/0 HTTP/1.1\\r\\nHost: details:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: 504fb14bfb2975e2770636e13708943d\\r\\nX-B3-SpanId: ee4c7e5f2b736aab\\r\\nX-B3-ParentSpanId: 770636e13708943d\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: b5ec0d2c-f087-945a-a6c7-a2e36517b06d\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:54:28.903", + "timestampUnix": 1708934068903 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:28.903", + "timestampUnix": 1708934068903 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:28.903", + "timestampUnix": 1708934068903 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:28.903", + "timestampUnix": 1708934068903 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:54:28 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:28.903", + "timestampUnix": 1708934068903 + }, + { + "message": "header: content-length: 178", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:28.903", + "timestampUnix": 1708934068903 + }, + { + "message": "header: x-envoy-upstream-service-time: 1", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:28.903", + "timestampUnix": 1708934068903 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://details:9080 \"GET /details/0 HTTP/1.1\" 200 178", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:28.903", + "timestampUnix": 1708934068903 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): reviews:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:28.904", + "timestampUnix": 1708934068904 + }, + { + "message": "send: b'GET /reviews/0 HTTP/1.1\\r\\nHost: reviews:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: 504fb14bfb2975e2770636e13708943d\\r\\nX-B3-SpanId: ee4c7e5f2b736aab\\r\\nX-B3-ParentSpanId: 770636e13708943d\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: b5ec0d2c-f087-945a-a6c7-a2e36517b06d\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:54:28.906", + "timestampUnix": 1708934068906 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:28.906", + "timestampUnix": 1708934068906 + }, + { + "message": "header: x-powered-by: Servlet/3.1", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:28.906", + "timestampUnix": 1708934068906 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:28.906", + "timestampUnix": 1708934068906 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:54:28 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:28.906", + "timestampUnix": 1708934068906 + }, + { + "message": "header: content-language: en-US", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:28.906", + "timestampUnix": 1708934068906 + }, + { + "message": "header: content-length: 358", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:28.906", + "timestampUnix": 1708934068906 + }, + { + "message": "header: x-envoy-upstream-service-time: 0", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:28.906", + "timestampUnix": 1708934068906 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:28.906", + "timestampUnix": 1708934068906 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://reviews:9080 \"GET /reviews/0 HTTP/1.1\" 200 358", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:28.906", + "timestampUnix": 1708934068906 + }, + { + "message": "INFO:werkzeug:::ffff:127.0.0.6 - - [26/Feb/2024 07:54:28] \"GET /productpage HTTP/1.1\" 200 -", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:28.906", + "timestampUnix": 1708934068906 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): details:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:29.900", + "timestampUnix": 1708934069900 + }, + { + "message": "send: b'GET /details/0 HTTP/1.1\\r\\nHost: details:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: 7e9e877abe9d4b59b0bb50b78481e086\\r\\nX-B3-SpanId: b0024f987c569de5\\r\\nX-B3-ParentSpanId: b0bb50b78481e086\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: c9a3a5b1-73df-9d55-adbf-246aef0503ad\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:54:29.903", + "timestampUnix": 1708934069903 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:29.903", + "timestampUnix": 1708934069903 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:29.903", + "timestampUnix": 1708934069903 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:29.903", + "timestampUnix": 1708934069903 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:54:29 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:29.903", + "timestampUnix": 1708934069903 + }, + { + "message": "header: content-length: 178", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:29.903", + "timestampUnix": 1708934069903 + }, + { + "message": "header: x-envoy-upstream-service-time: 1", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:29.903", + "timestampUnix": 1708934069903 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://details:9080 \"GET /details/0 HTTP/1.1\" 200 178", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:29.903", + "timestampUnix": 1708934069903 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): reviews:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:29.904", + "timestampUnix": 1708934069904 + }, + { + "message": "send: b'GET /reviews/0 HTTP/1.1\\r\\nHost: reviews:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: 7e9e877abe9d4b59b0bb50b78481e086\\r\\nX-B3-SpanId: b0024f987c569de5\\r\\nX-B3-ParentSpanId: b0bb50b78481e086\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: c9a3a5b1-73df-9d55-adbf-246aef0503ad\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:54:29.909", + "timestampUnix": 1708934069909 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:29.909", + "timestampUnix": 1708934069909 + }, + { + "message": "header: x-powered-by: Servlet/3.1", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:29.909", + "timestampUnix": 1708934069909 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:29.909", + "timestampUnix": 1708934069909 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:54:29 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:29.909", + "timestampUnix": 1708934069909 + }, + { + "message": "header: content-language: en-US", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:29.909", + "timestampUnix": 1708934069909 + }, + { + "message": "header: content-length: 437", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:29.909", + "timestampUnix": 1708934069909 + }, + { + "message": "header: x-envoy-upstream-service-time: 3", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:29.909", + "timestampUnix": 1708934069909 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:29.909", + "timestampUnix": 1708934069909 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://reviews:9080 \"GET /reviews/0 HTTP/1.1\" 200 437", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:29.909", + "timestampUnix": 1708934069909 + }, + { + "message": "INFO:werkzeug:::ffff:127.0.0.6 - - [26/Feb/2024 07:54:29] \"GET /productpage HTTP/1.1\" 200 -", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:29.911", + "timestampUnix": 1708934069911 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): details:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:30.904", + "timestampUnix": 1708934070904 + }, + { + "message": "send: b'GET /details/0 HTTP/1.1\\r\\nHost: details:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: be31c6798b68a6e040461ec4f25ccff5\\r\\nX-B3-SpanId: 14a599a736241495\\r\\nX-B3-ParentSpanId: 40461ec4f25ccff5\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: dba4b638-1679-98a4-a259-b743746a06a4\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:54:30.908", + "timestampUnix": 1708934070908 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:30.908", + "timestampUnix": 1708934070908 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:30.908", + "timestampUnix": 1708934070908 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:30.908", + "timestampUnix": 1708934070908 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:54:30 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:30.908", + "timestampUnix": 1708934070908 + }, + { + "message": "header: content-length: 178", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:30.908", + "timestampUnix": 1708934070908 + }, + { + "message": "header: x-envoy-upstream-service-time: 2", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:30.908", + "timestampUnix": 1708934070908 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://details:9080 \"GET /details/0 HTTP/1.1\" 200 178", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:30.908", + "timestampUnix": 1708934070908 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): reviews:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:30.910", + "timestampUnix": 1708934070910 + }, + { + "message": "send: b'GET /reviews/0 HTTP/1.1\\r\\nHost: reviews:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: be31c6798b68a6e040461ec4f25ccff5\\r\\nX-B3-SpanId: 14a599a736241495\\r\\nX-B3-ParentSpanId: 40461ec4f25ccff5\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: dba4b638-1679-98a4-a259-b743746a06a4\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:54:30.915", + "timestampUnix": 1708934070915 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:30.915", + "timestampUnix": 1708934070915 + }, + { + "message": "header: x-powered-by: Servlet/3.1", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:30.915", + "timestampUnix": 1708934070915 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:30.915", + "timestampUnix": 1708934070915 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:54:30 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:30.915", + "timestampUnix": 1708934070915 + }, + { + "message": "header: content-language: en-US", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:30.915", + "timestampUnix": 1708934070915 + }, + { + "message": "header: content-length: 437", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:30.915", + "timestampUnix": 1708934070915 + }, + { + "message": "header: x-envoy-upstream-service-time: 3", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:30.915", + "timestampUnix": 1708934070915 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:30.915", + "timestampUnix": 1708934070915 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://reviews:9080 \"GET /reviews/0 HTTP/1.1\" 200 437", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:30.915", + "timestampUnix": 1708934070915 + }, + { + "message": "INFO:werkzeug:::ffff:127.0.0.6 - - [26/Feb/2024 07:54:30] \"GET /productpage HTTP/1.1\" 200 -", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:30.916", + "timestampUnix": 1708934070916 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): details:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:31.902", + "timestampUnix": 1708934071902 + }, + { + "message": "send: b'GET /details/0 HTTP/1.1\\r\\nHost: details:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: 9322cc69c7d4ed4507aabb50cbbd4798\\r\\nX-B3-SpanId: 942a4f45b8ff2fa4\\r\\nX-B3-ParentSpanId: 07aabb50cbbd4798\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: 51c89d62-75f5-9533-8a00-4ba14c94f94a\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:54:31.906", + "timestampUnix": 1708934071906 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:31.906", + "timestampUnix": 1708934071906 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:31.907", + "timestampUnix": 1708934071907 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:31.907", + "timestampUnix": 1708934071907 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:54:31 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:31.907", + "timestampUnix": 1708934071907 + }, + { + "message": "header: content-length: 178", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:31.907", + "timestampUnix": 1708934071907 + }, + { + "message": "header: x-envoy-upstream-service-time: 2", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:31.907", + "timestampUnix": 1708934071907 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://details:9080 \"GET /details/0 HTTP/1.1\" 200 178", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:31.907", + "timestampUnix": 1708934071907 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): reviews:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:31.910", + "timestampUnix": 1708934071910 + }, + { + "message": "send: b'GET /reviews/0 HTTP/1.1\\r\\nHost: reviews:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: 9322cc69c7d4ed4507aabb50cbbd4798\\r\\nX-B3-SpanId: 942a4f45b8ff2fa4\\r\\nX-B3-ParentSpanId: 07aabb50cbbd4798\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: 51c89d62-75f5-9533-8a00-4ba14c94f94a\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:54:31.913", + "timestampUnix": 1708934071913 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:31.913", + "timestampUnix": 1708934071913 + }, + { + "message": "header: x-powered-by: Servlet/3.1", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:31.913", + "timestampUnix": 1708934071913 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:31.913", + "timestampUnix": 1708934071913 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:54:31 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:31.913", + "timestampUnix": 1708934071913 + }, + { + "message": "header: content-language: en-US", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:31.913", + "timestampUnix": 1708934071913 + }, + { + "message": "header: content-length: 358", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:31.913", + "timestampUnix": 1708934071913 + }, + { + "message": "header: x-envoy-upstream-service-time: 1", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:31.913", + "timestampUnix": 1708934071913 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:31.914", + "timestampUnix": 1708934071914 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://reviews:9080 \"GET /reviews/0 HTTP/1.1\" 200 358", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:31.914", + "timestampUnix": 1708934071914 + }, + { + "message": "INFO:werkzeug:::ffff:127.0.0.6 - - [26/Feb/2024 07:54:31] \"GET /productpage HTTP/1.1\" 200 -", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:31.914", + "timestampUnix": 1708934071914 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): details:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:32.902", + "timestampUnix": 1708934072902 + }, + { + "message": "send: b'GET /details/0 HTTP/1.1\\r\\nHost: details:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: 4b673eefaaddac5fcea23e2c2452a58\\r\\nX-B3-SpanId: cfd5d2e5bfd38635\\r\\nX-B3-ParentSpanId: fcea23e2c2452a58\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: 125f9aed-3f16-9b5d-ad80-1047ba58ad5a\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:54:32.906", + "timestampUnix": 1708934072906 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:32.907", + "timestampUnix": 1708934072907 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:32.907", + "timestampUnix": 1708934072907 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:32.907", + "timestampUnix": 1708934072907 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:54:32 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:32.907", + "timestampUnix": 1708934072907 + }, + { + "message": "header: content-length: 178", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:32.907", + "timestampUnix": 1708934072907 + }, + { + "message": "header: x-envoy-upstream-service-time: 2", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:32.907", + "timestampUnix": 1708934072907 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://details:9080 \"GET /details/0 HTTP/1.1\" 200 178", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:32.907", + "timestampUnix": 1708934072907 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): reviews:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:32.910", + "timestampUnix": 1708934072910 + }, + { + "message": "send: b'GET /reviews/0 HTTP/1.1\\r\\nHost: reviews:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: 4b673eefaaddac5fcea23e2c2452a58\\r\\nX-B3-SpanId: cfd5d2e5bfd38635\\r\\nX-B3-ParentSpanId: fcea23e2c2452a58\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: 125f9aed-3f16-9b5d-ad80-1047ba58ad5a\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:54:32.915", + "timestampUnix": 1708934072915 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:32.915", + "timestampUnix": 1708934072915 + }, + { + "message": "header: x-powered-by: Servlet/3.1", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:32.915", + "timestampUnix": 1708934072915 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:32.915", + "timestampUnix": 1708934072915 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:54:31 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:32.915", + "timestampUnix": 1708934072915 + }, + { + "message": "header: content-language: en-US", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:32.915", + "timestampUnix": 1708934072915 + }, + { + "message": "header: content-length: 358", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:32.915", + "timestampUnix": 1708934072915 + }, + { + "message": "header: x-envoy-upstream-service-time: 2", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:32.915", + "timestampUnix": 1708934072915 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:32.915", + "timestampUnix": 1708934072915 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://reviews:9080 \"GET /reviews/0 HTTP/1.1\" 200 358", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:32.915", + "timestampUnix": 1708934072915 + }, + { + "message": "INFO:werkzeug:::ffff:127.0.0.6 - - [26/Feb/2024 07:54:32] \"GET /productpage HTTP/1.1\" 200 -", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:32.917", + "timestampUnix": 1708934072917 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): details:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:33.906", + "timestampUnix": 1708934073906 + }, + { + "message": "send: b'GET /details/0 HTTP/1.1\\r\\nHost: details:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: 67f0c28ba116019f73db339cbaac8d85\\r\\nX-B3-SpanId: 62f8e5a4d84e0b3c\\r\\nX-B3-ParentSpanId: 73db339cbaac8d85\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: c668eade-62f7-9bc9-9171-f0c81165fab2\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:54:33.909", + "timestampUnix": 1708934073909 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:33.909", + "timestampUnix": 1708934073909 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:33.909", + "timestampUnix": 1708934073909 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:33.909", + "timestampUnix": 1708934073909 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:54:33 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:33.909", + "timestampUnix": 1708934073909 + }, + { + "message": "header: content-length: 178", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:33.909", + "timestampUnix": 1708934073909 + }, + { + "message": "header: x-envoy-upstream-service-time: 1", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:33.909", + "timestampUnix": 1708934073909 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://details:9080 \"GET /details/0 HTTP/1.1\" 200 178", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:33.909", + "timestampUnix": 1708934073909 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): reviews:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:33.911", + "timestampUnix": 1708934073911 + }, + { + "message": "send: b'GET /reviews/0 HTTP/1.1\\r\\nHost: reviews:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: 67f0c28ba116019f73db339cbaac8d85\\r\\nX-B3-SpanId: 62f8e5a4d84e0b3c\\r\\nX-B3-ParentSpanId: 73db339cbaac8d85\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: c668eade-62f7-9bc9-9171-f0c81165fab2\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:54:33.916", + "timestampUnix": 1708934073916 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:33.916", + "timestampUnix": 1708934073916 + }, + { + "message": "header: x-powered-by: Servlet/3.1", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:33.916", + "timestampUnix": 1708934073916 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:33.916", + "timestampUnix": 1708934073916 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:54:33 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:33.916", + "timestampUnix": 1708934073916 + }, + { + "message": "header: content-language: en-US", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:33.916", + "timestampUnix": 1708934073916 + }, + { + "message": "header: content-length: 442", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:33.917", + "timestampUnix": 1708934073917 + }, + { + "message": "header: x-envoy-upstream-service-time: 4", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:33.917", + "timestampUnix": 1708934073917 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:33.917", + "timestampUnix": 1708934073917 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://reviews:9080 \"GET /reviews/0 HTTP/1.1\" 200 442", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:33.917", + "timestampUnix": 1708934073917 + }, + { + "message": "INFO:werkzeug:::ffff:127.0.0.6 - - [26/Feb/2024 07:54:33] \"GET /productpage HTTP/1.1\" 200 -", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:33.918", + "timestampUnix": 1708934073918 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): details:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:34.907", + "timestampUnix": 1708934074907 + }, + { + "message": "send: b'GET /details/0 HTTP/1.1\\r\\nHost: details:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: 3b24bb4935202f314ad6cfc9aea9809e\\r\\nX-B3-SpanId: d10295ee6e258d07\\r\\nX-B3-ParentSpanId: 4ad6cfc9aea9809e\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: cf0ccbc5-d3eb-9bf3-8111-08ef7c792497\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:54:34.914", + "timestampUnix": 1708934074914 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:34.914", + "timestampUnix": 1708934074914 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:34.914", + "timestampUnix": 1708934074914 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:34.914", + "timestampUnix": 1708934074914 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:54:34 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:34.914", + "timestampUnix": 1708934074914 + }, + { + "message": "header: content-length: 178", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:34.914", + "timestampUnix": 1708934074914 + }, + { + "message": "header: x-envoy-upstream-service-time: 3", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:34.914", + "timestampUnix": 1708934074914 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://details:9080 \"GET /details/0 HTTP/1.1\" 200 178", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:34.914", + "timestampUnix": 1708934074914 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): reviews:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:34.920", + "timestampUnix": 1708934074920 + }, + { + "message": "send: b'GET /reviews/0 HTTP/1.1\\r\\nHost: reviews:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: 3b24bb4935202f314ad6cfc9aea9809e\\r\\nX-B3-SpanId: d10295ee6e258d07\\r\\nX-B3-ParentSpanId: 4ad6cfc9aea9809e\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: cf0ccbc5-d3eb-9bf3-8111-08ef7c792497\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:54:34.933", + "timestampUnix": 1708934074933 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:34.933", + "timestampUnix": 1708934074933 + }, + { + "message": "header: x-powered-by: Servlet/3.1", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:34.933", + "timestampUnix": 1708934074933 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:34.933", + "timestampUnix": 1708934074933 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:54:34 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:34.933", + "timestampUnix": 1708934074933 + }, + { + "message": "header: content-language: en-US", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:34.933", + "timestampUnix": 1708934074933 + }, + { + "message": "header: content-length: 442", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:34.933", + "timestampUnix": 1708934074933 + }, + { + "message": "header: x-envoy-upstream-service-time: 8", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:34.933", + "timestampUnix": 1708934074933 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:34.933", + "timestampUnix": 1708934074933 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://reviews:9080 \"GET /reviews/0 HTTP/1.1\" 200 442", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:34.933", + "timestampUnix": 1708934074933 + }, + { + "message": "INFO:werkzeug:::ffff:127.0.0.6 - - [26/Feb/2024 07:54:34] \"GET /productpage HTTP/1.1\" 200 -", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:34.935", + "timestampUnix": 1708934074935 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): details:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:35.907", + "timestampUnix": 1708934075907 + }, + { + "message": "send: b'GET /details/0 HTTP/1.1\\r\\nHost: details:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: 9dea317ad42a933d97809ca9e60fa5ae\\r\\nX-B3-SpanId: 82f6ad7d919e4844\\r\\nX-B3-ParentSpanId: 97809ca9e60fa5ae\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: aa858f93-3b1f-97a9-af81-9c6a74261dcd\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:54:35.915", + "timestampUnix": 1708934075915 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:35.915", + "timestampUnix": 1708934075915 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:35.915", + "timestampUnix": 1708934075915 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:35.915", + "timestampUnix": 1708934075915 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:54:35 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:35.915", + "timestampUnix": 1708934075915 + }, + { + "message": "header: content-length: 178", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:35.915", + "timestampUnix": 1708934075915 + }, + { + "message": "header: x-envoy-upstream-service-time: 3", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:35.915", + "timestampUnix": 1708934075915 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://details:9080 \"GET /details/0 HTTP/1.1\" 200 178", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:35.915", + "timestampUnix": 1708934075915 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): reviews:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:35.920", + "timestampUnix": 1708934075920 + }, + { + "message": "send: b'GET /reviews/0 HTTP/1.1\\r\\nHost: reviews:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: 9dea317ad42a933d97809ca9e60fa5ae\\r\\nX-B3-SpanId: 82f6ad7d919e4844\\r\\nX-B3-ParentSpanId: 97809ca9e60fa5ae\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: aa858f93-3b1f-97a9-af81-9c6a74261dcd\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:54:35.934", + "timestampUnix": 1708934075934 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:35.934", + "timestampUnix": 1708934075934 + }, + { + "message": "header: x-powered-by: Servlet/3.1", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:35.934", + "timestampUnix": 1708934075934 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:35.934", + "timestampUnix": 1708934075934 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:54:34 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:35.934", + "timestampUnix": 1708934075934 + }, + { + "message": "header: content-language: en-US", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:35.934", + "timestampUnix": 1708934075934 + }, + { + "message": "header: content-length: 442", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:35.934", + "timestampUnix": 1708934075934 + }, + { + "message": "header: x-envoy-upstream-service-time: 9", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:35.934", + "timestampUnix": 1708934075934 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:35.934", + "timestampUnix": 1708934075934 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://reviews:9080 \"GET /reviews/0 HTTP/1.1\" 200 442", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:35.934", + "timestampUnix": 1708934075934 + }, + { + "message": "INFO:werkzeug:::ffff:127.0.0.6 - - [26/Feb/2024 07:54:35] \"GET /productpage HTTP/1.1\" 200 -", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:35.937", + "timestampUnix": 1708934075937 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): details:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:36.907", + "timestampUnix": 1708934076907 + }, + { + "message": "send: b'GET /details/0 HTTP/1.1\\r\\nHost: details:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: bf2d5caac96ec2cc690ef7ce3e1a2e95\\r\\nX-B3-SpanId: 18e1ba447608f2d2\\r\\nX-B3-ParentSpanId: 690ef7ce3e1a2e95\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: 67b6f5f3-f329-9af5-bbbc-e21376934fb7\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:54:36.914", + "timestampUnix": 1708934076914 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:36.914", + "timestampUnix": 1708934076914 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:36.914", + "timestampUnix": 1708934076914 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:36.914", + "timestampUnix": 1708934076914 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:54:36 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:36.914", + "timestampUnix": 1708934076914 + }, + { + "message": "header: content-length: 178", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:36.914", + "timestampUnix": 1708934076914 + }, + { + "message": "header: x-envoy-upstream-service-time: 3", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:36.914", + "timestampUnix": 1708934076914 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://details:9080 \"GET /details/0 HTTP/1.1\" 200 178", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:36.914", + "timestampUnix": 1708934076914 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): reviews:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:36.920", + "timestampUnix": 1708934076920 + }, + { + "message": "send: b'GET /reviews/0 HTTP/1.1\\r\\nHost: reviews:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: bf2d5caac96ec2cc690ef7ce3e1a2e95\\r\\nX-B3-SpanId: 18e1ba447608f2d2\\r\\nX-B3-ParentSpanId: 690ef7ce3e1a2e95\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: 67b6f5f3-f329-9af5-bbbc-e21376934fb7\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:54:36.932", + "timestampUnix": 1708934076932 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:36.932", + "timestampUnix": 1708934076932 + }, + { + "message": "header: x-powered-by: Servlet/3.1", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:36.932", + "timestampUnix": 1708934076932 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:36.932", + "timestampUnix": 1708934076932 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:54:36 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:36.932", + "timestampUnix": 1708934076932 + }, + { + "message": "header: content-language: en-US", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:36.932", + "timestampUnix": 1708934076932 + }, + { + "message": "header: content-length: 442", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:36.932", + "timestampUnix": 1708934076932 + }, + { + "message": "header: x-envoy-upstream-service-time: 8", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:36.932", + "timestampUnix": 1708934076932 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:36.932", + "timestampUnix": 1708934076932 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://reviews:9080 \"GET /reviews/0 HTTP/1.1\" 200 442", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:36.932", + "timestampUnix": 1708934076932 + }, + { + "message": "INFO:werkzeug:::ffff:127.0.0.6 - - [26/Feb/2024 07:54:36] \"GET /productpage HTTP/1.1\" 200 -", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:36.935", + "timestampUnix": 1708934076935 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): details:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:37.907", + "timestampUnix": 1708934077907 + }, + { + "message": "send: b'GET /details/0 HTTP/1.1\\r\\nHost: details:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: 368631c550a3637cc9cc2ef3582711a2\\r\\nX-B3-SpanId: ae2cf5fc69462918\\r\\nX-B3-ParentSpanId: c9cc2ef3582711a2\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: a53de773-7422-9470-8e4d-e256ca1db7ee\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:54:37.915", + "timestampUnix": 1708934077915 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:37.915", + "timestampUnix": 1708934077915 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:37.915", + "timestampUnix": 1708934077915 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:37.915", + "timestampUnix": 1708934077915 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:54:37 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:37.915", + "timestampUnix": 1708934077915 + }, + { + "message": "header: content-length: 178", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:37.915", + "timestampUnix": 1708934077915 + }, + { + "message": "header: x-envoy-upstream-service-time: 3", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:37.915", + "timestampUnix": 1708934077915 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://details:9080 \"GET /details/0 HTTP/1.1\" 200 178", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:37.915", + "timestampUnix": 1708934077915 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): reviews:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:37.921", + "timestampUnix": 1708934077921 + }, + { + "message": "send: b'GET /reviews/0 HTTP/1.1\\r\\nHost: reviews:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: 368631c550a3637cc9cc2ef3582711a2\\r\\nX-B3-SpanId: ae2cf5fc69462918\\r\\nX-B3-ParentSpanId: c9cc2ef3582711a2\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: a53de773-7422-9470-8e4d-e256ca1db7ee\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:54:37.928", + "timestampUnix": 1708934077928 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:37.928", + "timestampUnix": 1708934077928 + }, + { + "message": "header: x-powered-by: Servlet/3.1", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:37.928", + "timestampUnix": 1708934077928 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:37.928", + "timestampUnix": 1708934077928 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:54:37 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:37.928", + "timestampUnix": 1708934077928 + }, + { + "message": "header: content-language: en-US", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:37.928", + "timestampUnix": 1708934077928 + }, + { + "message": "header: content-length: 358", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:37.928", + "timestampUnix": 1708934077928 + }, + { + "message": "header: x-envoy-upstream-service-time: 2", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:37.928", + "timestampUnix": 1708934077928 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:37.928", + "timestampUnix": 1708934077928 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://reviews:9080 \"GET /reviews/0 HTTP/1.1\" 200 358", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:37.928", + "timestampUnix": 1708934077928 + }, + { + "message": "INFO:werkzeug:::ffff:127.0.0.6 - - [26/Feb/2024 07:54:37] \"GET /productpage HTTP/1.1\" 200 -", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:37.931", + "timestampUnix": 1708934077931 + }, + { + "message": "INFO:werkzeug:::ffff:127.0.0.1 - - [26/Feb/2024 07:54:37] \"GET /metrics HTTP/1.1\" 200 -", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:37.992", + "timestampUnix": 1708934077992 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): details:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:38.902", + "timestampUnix": 1708934078902 + }, + { + "message": "send: b'GET /details/0 HTTP/1.1\\r\\nHost: details:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: 63781df7da80c12a5d81d49da63e83d4\\r\\nX-B3-SpanId: 837751072c11e68c\\r\\nX-B3-ParentSpanId: 5d81d49da63e83d4\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: 87e712d8-b081-9ece-8a18-01a2c19e2fc1\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:54:38.907", + "timestampUnix": 1708934078907 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:38.907", + "timestampUnix": 1708934078907 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:38.907", + "timestampUnix": 1708934078907 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:38.907", + "timestampUnix": 1708934078907 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:54:38 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:38.907", + "timestampUnix": 1708934078907 + }, + { + "message": "header: content-length: 178", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:38.907", + "timestampUnix": 1708934078907 + }, + { + "message": "header: x-envoy-upstream-service-time: 2", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:38.907", + "timestampUnix": 1708934078907 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://details:9080 \"GET /details/0 HTTP/1.1\" 200 178", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:38.907", + "timestampUnix": 1708934078907 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): reviews:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:38.910", + "timestampUnix": 1708934078910 + }, + { + "message": "send: b'GET /reviews/0 HTTP/1.1\\r\\nHost: reviews:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: 63781df7da80c12a5d81d49da63e83d4\\r\\nX-B3-SpanId: 837751072c11e68c\\r\\nX-B3-ParentSpanId: 5d81d49da63e83d4\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: 87e712d8-b081-9ece-8a18-01a2c19e2fc1\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:54:38.913", + "timestampUnix": 1708934078913 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:38.913", + "timestampUnix": 1708934078913 + }, + { + "message": "header: x-powered-by: Servlet/3.1", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:38.913", + "timestampUnix": 1708934078913 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:38.914", + "timestampUnix": 1708934078914 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:54:38 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:38.914", + "timestampUnix": 1708934078914 + }, + { + "message": "header: content-language: en-US", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:38.914", + "timestampUnix": 1708934078914 + }, + { + "message": "header: content-length: 442", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:38.914", + "timestampUnix": 1708934078914 + }, + { + "message": "header: x-envoy-upstream-service-time: 2", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:38.914", + "timestampUnix": 1708934078914 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:38.914", + "timestampUnix": 1708934078914 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://reviews:9080 \"GET /reviews/0 HTTP/1.1\" 200 442", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:38.914", + "timestampUnix": 1708934078914 + }, + { + "message": "INFO:werkzeug:::ffff:127.0.0.6 - - [26/Feb/2024 07:54:38] \"GET /productpage HTTP/1.1\" 200 -", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:38.914", + "timestampUnix": 1708934078914 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): details:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:39.900", + "timestampUnix": 1708934079900 + }, + { + "message": "send: b'GET /details/0 HTTP/1.1\\r\\nHost: details:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: 211662d6d8a0c004801a86cac9976720\\r\\nX-B3-SpanId: 3d0450eb9bb03aac\\r\\nX-B3-ParentSpanId: 801a86cac9976720\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: 8b30f4e9-0149-9755-87d0-a43546821b92\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:54:39.903", + "timestampUnix": 1708934079903 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:39.903", + "timestampUnix": 1708934079903 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:39.903", + "timestampUnix": 1708934079903 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:39.903", + "timestampUnix": 1708934079903 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:54:39 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:39.903", + "timestampUnix": 1708934079903 + }, + { + "message": "header: content-length: 178", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:39.903", + "timestampUnix": 1708934079903 + }, + { + "message": "header: x-envoy-upstream-service-time: 1", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:39.903", + "timestampUnix": 1708934079903 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://details:9080 \"GET /details/0 HTTP/1.1\" 200 178", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:39.903", + "timestampUnix": 1708934079903 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): reviews:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:39.904", + "timestampUnix": 1708934079904 + }, + { + "message": "send: b'GET /reviews/0 HTTP/1.1\\r\\nHost: reviews:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: 211662d6d8a0c004801a86cac9976720\\r\\nX-B3-SpanId: 3d0450eb9bb03aac\\r\\nX-B3-ParentSpanId: 801a86cac9976720\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: 8b30f4e9-0149-9755-87d0-a43546821b92\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:54:39.908", + "timestampUnix": 1708934079908 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:39.908", + "timestampUnix": 1708934079908 + }, + { + "message": "header: x-powered-by: Servlet/3.1", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:39.908", + "timestampUnix": 1708934079908 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:39.908", + "timestampUnix": 1708934079908 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:54:38 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:39.908", + "timestampUnix": 1708934079908 + }, + { + "message": "header: content-language: en-US", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:39.908", + "timestampUnix": 1708934079908 + }, + { + "message": "header: content-length: 442", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:39.908", + "timestampUnix": 1708934079908 + }, + { + "message": "header: x-envoy-upstream-service-time: 2", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:39.908", + "timestampUnix": 1708934079908 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:39.908", + "timestampUnix": 1708934079908 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://reviews:9080 \"GET /reviews/0 HTTP/1.1\" 200 442", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:39.908", + "timestampUnix": 1708934079908 + }, + { + "message": "INFO:werkzeug:::ffff:127.0.0.6 - - [26/Feb/2024 07:54:39] \"GET /productpage HTTP/1.1\" 200 -", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:39.909", + "timestampUnix": 1708934079909 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): details:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:40.906", + "timestampUnix": 1708934080906 + }, + { + "message": "send: b'GET /details/0 HTTP/1.1\\r\\nHost: details:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: 2c4cfeee60ef9e88c4fb3ab856d9257f\\r\\nX-B3-SpanId: 9900a04a77b60565\\r\\nX-B3-ParentSpanId: c4fb3ab856d9257f\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: 1c1806d2-f455-9165-bca4-f2e740f567e6\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:54:40.910", + "timestampUnix": 1708934080910 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:40.910", + "timestampUnix": 1708934080910 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:40.910", + "timestampUnix": 1708934080910 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:40.910", + "timestampUnix": 1708934080910 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:54:40 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:40.910", + "timestampUnix": 1708934080910 + }, + { + "message": "header: content-length: 178", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:40.910", + "timestampUnix": 1708934080910 + }, + { + "message": "header: x-envoy-upstream-service-time: 1", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:40.910", + "timestampUnix": 1708934080910 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://details:9080 \"GET /details/0 HTTP/1.1\" 200 178", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:40.910", + "timestampUnix": 1708934080910 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): reviews:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:40.912", + "timestampUnix": 1708934080912 + }, + { + "message": "send: b'GET /reviews/0 HTTP/1.1\\r\\nHost: reviews:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: 2c4cfeee60ef9e88c4fb3ab856d9257f\\r\\nX-B3-SpanId: 9900a04a77b60565\\r\\nX-B3-ParentSpanId: c4fb3ab856d9257f\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: 1c1806d2-f455-9165-bca4-f2e740f567e6\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:54:40.917", + "timestampUnix": 1708934080917 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:40.917", + "timestampUnix": 1708934080917 + }, + { + "message": "header: x-powered-by: Servlet/3.1", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:40.917", + "timestampUnix": 1708934080917 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:40.917", + "timestampUnix": 1708934080917 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:54:40 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:40.917", + "timestampUnix": 1708934080917 + }, + { + "message": "header: content-language: en-US", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:40.917", + "timestampUnix": 1708934080917 + }, + { + "message": "header: content-length: 437", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:40.917", + "timestampUnix": 1708934080917 + }, + { + "message": "header: x-envoy-upstream-service-time: 3", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:40.917", + "timestampUnix": 1708934080917 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:40.917", + "timestampUnix": 1708934080917 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://reviews:9080 \"GET /reviews/0 HTTP/1.1\" 200 437", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:40.917", + "timestampUnix": 1708934080917 + }, + { + "message": "INFO:werkzeug:::ffff:127.0.0.6 - - [26/Feb/2024 07:54:40] \"GET /productpage HTTP/1.1\" 200 -", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:40.918", + "timestampUnix": 1708934080918 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): details:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:41.900", + "timestampUnix": 1708934081900 + }, + { + "message": "send: b'GET /details/0 HTTP/1.1\\r\\nHost: details:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: 7985a915733620e2fc7f2655d19fa02\\r\\nX-B3-SpanId: 1bf1d27e6fa87610\\r\\nX-B3-ParentSpanId: 2fc7f2655d19fa02\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: a80a6daa-524d-90e6-bdf1-a181748830df\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:54:41.902", + "timestampUnix": 1708934081902 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:41.902", + "timestampUnix": 1708934081902 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:41.902", + "timestampUnix": 1708934081902 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:41.902", + "timestampUnix": 1708934081902 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:54:41 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:41.902", + "timestampUnix": 1708934081902 + }, + { + "message": "header: content-length: 178", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:41.902", + "timestampUnix": 1708934081902 + }, + { + "message": "header: x-envoy-upstream-service-time: 1", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:41.902", + "timestampUnix": 1708934081902 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://details:9080 \"GET /details/0 HTTP/1.1\" 200 178", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:41.902", + "timestampUnix": 1708934081902 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): reviews:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:41.904", + "timestampUnix": 1708934081904 + }, + { + "message": "send: b'GET /reviews/0 HTTP/1.1\\r\\nHost: reviews:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: 7985a915733620e2fc7f2655d19fa02\\r\\nX-B3-SpanId: 1bf1d27e6fa87610\\r\\nX-B3-ParentSpanId: 2fc7f2655d19fa02\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: a80a6daa-524d-90e6-bdf1-a181748830df\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:54:41.907", + "timestampUnix": 1708934081907 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:41.907", + "timestampUnix": 1708934081907 + }, + { + "message": "header: x-powered-by: Servlet/3.1", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:41.907", + "timestampUnix": 1708934081907 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:41.907", + "timestampUnix": 1708934081907 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:54:40 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:41.907", + "timestampUnix": 1708934081907 + }, + { + "message": "header: content-language: en-US", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:41.907", + "timestampUnix": 1708934081907 + }, + { + "message": "header: content-length: 437", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:41.907", + "timestampUnix": 1708934081907 + }, + { + "message": "header: x-envoy-upstream-service-time: 2", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:41.907", + "timestampUnix": 1708934081907 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:41.907", + "timestampUnix": 1708934081907 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://reviews:9080 \"GET /reviews/0 HTTP/1.1\" 200 437", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:41.907", + "timestampUnix": 1708934081907 + }, + { + "message": "INFO:werkzeug:::ffff:127.0.0.6 - - [26/Feb/2024 07:54:41] \"GET /productpage HTTP/1.1\" 200 -", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:41.908", + "timestampUnix": 1708934081908 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): details:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:42.900", + "timestampUnix": 1708934082900 + }, + { + "message": "send: b'GET /details/0 HTTP/1.1\\r\\nHost: details:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: 18203dfddec72bf2689c11409904591f\\r\\nX-B3-SpanId: 1d6bb7da92932325\\r\\nX-B3-ParentSpanId: 689c11409904591f\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: 321d3422-0aa4-9a06-8db5-6a4aa37901c9\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:54:42.902", + "timestampUnix": 1708934082902 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:42.902", + "timestampUnix": 1708934082902 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:42.902", + "timestampUnix": 1708934082902 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:42.902", + "timestampUnix": 1708934082902 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:54:42 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:42.902", + "timestampUnix": 1708934082902 + }, + { + "message": "header: content-length: 178", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:42.902", + "timestampUnix": 1708934082902 + }, + { + "message": "header: x-envoy-upstream-service-time: 1", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:42.902", + "timestampUnix": 1708934082902 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://details:9080 \"GET /details/0 HTTP/1.1\" 200 178", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:42.902", + "timestampUnix": 1708934082902 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): reviews:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:42.904", + "timestampUnix": 1708934082904 + }, + { + "message": "send: b'GET /reviews/0 HTTP/1.1\\r\\nHost: reviews:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: 18203dfddec72bf2689c11409904591f\\r\\nX-B3-SpanId: 1d6bb7da92932325\\r\\nX-B3-ParentSpanId: 689c11409904591f\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: 321d3422-0aa4-9a06-8db5-6a4aa37901c9\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:54:42.906", + "timestampUnix": 1708934082906 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:42.906", + "timestampUnix": 1708934082906 + }, + { + "message": "header: x-powered-by: Servlet/3.1", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:42.906", + "timestampUnix": 1708934082906 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:42.906", + "timestampUnix": 1708934082906 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:54:42 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:42.906", + "timestampUnix": 1708934082906 + }, + { + "message": "header: content-language: en-US", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:42.906", + "timestampUnix": 1708934082906 + }, + { + "message": "header: content-length: 358", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:42.906", + "timestampUnix": 1708934082906 + }, + { + "message": "header: x-envoy-upstream-service-time: 0", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:42.906", + "timestampUnix": 1708934082906 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:42.906", + "timestampUnix": 1708934082906 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://reviews:9080 \"GET /reviews/0 HTTP/1.1\" 200 358", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:42.906", + "timestampUnix": 1708934082906 + }, + { + "message": "INFO:werkzeug:::ffff:127.0.0.6 - - [26/Feb/2024 07:54:42] \"GET /productpage HTTP/1.1\" 200 -", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:42.907", + "timestampUnix": 1708934082907 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): details:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:43.900", + "timestampUnix": 1708934083900 + }, + { + "message": "send: b'GET /details/0 HTTP/1.1\\r\\nHost: details:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: 596bc37210e1bf73c6aa813d849278b0\\r\\nX-B3-SpanId: b2f7bab495a58781\\r\\nX-B3-ParentSpanId: c6aa813d849278b0\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: 26e1dc68-8d54-9cc7-beb4-8e7d8c8e9a23\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:54:43.902", + "timestampUnix": 1708934083902 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:43.902", + "timestampUnix": 1708934083902 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:43.902", + "timestampUnix": 1708934083902 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:43.902", + "timestampUnix": 1708934083902 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:54:43 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:43.902", + "timestampUnix": 1708934083902 + }, + { + "message": "header: content-length: 178", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:43.902", + "timestampUnix": 1708934083902 + }, + { + "message": "header: x-envoy-upstream-service-time: 1", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:43.902", + "timestampUnix": 1708934083902 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://details:9080 \"GET /details/0 HTTP/1.1\" 200 178", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:43.902", + "timestampUnix": 1708934083902 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): reviews:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:43.904", + "timestampUnix": 1708934083904 + }, + { + "message": "send: b'GET /reviews/0 HTTP/1.1\\r\\nHost: reviews:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: 596bc37210e1bf73c6aa813d849278b0\\r\\nX-B3-SpanId: b2f7bab495a58781\\r\\nX-B3-ParentSpanId: c6aa813d849278b0\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: 26e1dc68-8d54-9cc7-beb4-8e7d8c8e9a23\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:54:43.908", + "timestampUnix": 1708934083908 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:43.908", + "timestampUnix": 1708934083908 + }, + { + "message": "header: x-powered-by: Servlet/3.1", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:43.908", + "timestampUnix": 1708934083908 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:43.908", + "timestampUnix": 1708934083908 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:54:43 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:43.908", + "timestampUnix": 1708934083908 + }, + { + "message": "header: content-language: en-US", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:43.908", + "timestampUnix": 1708934083908 + }, + { + "message": "header: content-length: 437", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:43.908", + "timestampUnix": 1708934083908 + }, + { + "message": "header: x-envoy-upstream-service-time: 2", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:43.908", + "timestampUnix": 1708934083908 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:43.908", + "timestampUnix": 1708934083908 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://reviews:9080 \"GET /reviews/0 HTTP/1.1\" 200 437", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:43.908", + "timestampUnix": 1708934083908 + }, + { + "message": "INFO:werkzeug:::ffff:127.0.0.6 - - [26/Feb/2024 07:54:43] \"GET /productpage HTTP/1.1\" 200 -", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:43.909", + "timestampUnix": 1708934083909 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): details:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:44.907", + "timestampUnix": 1708934084907 + }, + { + "message": "send: b'GET /details/0 HTTP/1.1\\r\\nHost: details:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: e36b6f748e44da28033d9321da888046\\r\\nX-B3-SpanId: 4ed3730dbd878934\\r\\nX-B3-ParentSpanId: 033d9321da888046\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: 56dce819-1f94-92a8-989c-3315f971b4d7\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:54:44.915", + "timestampUnix": 1708934084915 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:44.915", + "timestampUnix": 1708934084915 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:44.915", + "timestampUnix": 1708934084915 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:44.915", + "timestampUnix": 1708934084915 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:54:44 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:44.915", + "timestampUnix": 1708934084915 + }, + { + "message": "header: content-length: 178", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:44.915", + "timestampUnix": 1708934084915 + }, + { + "message": "header: x-envoy-upstream-service-time: 3", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:44.915", + "timestampUnix": 1708934084915 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://details:9080 \"GET /details/0 HTTP/1.1\" 200 178", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:44.915", + "timestampUnix": 1708934084915 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): reviews:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:44.922", + "timestampUnix": 1708934084922 + }, + { + "message": "send: b'GET /reviews/0 HTTP/1.1\\r\\nHost: reviews:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: e36b6f748e44da28033d9321da888046\\r\\nX-B3-SpanId: 4ed3730dbd878934\\r\\nX-B3-ParentSpanId: 033d9321da888046\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: 56dce819-1f94-92a8-989c-3315f971b4d7\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:54:44.927", + "timestampUnix": 1708934084927 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:44.927", + "timestampUnix": 1708934084927 + }, + { + "message": "header: x-powered-by: Servlet/3.1", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:44.927", + "timestampUnix": 1708934084927 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:44.927", + "timestampUnix": 1708934084927 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:54:44 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:44.927", + "timestampUnix": 1708934084927 + }, + { + "message": "header: content-language: en-US", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:44.927", + "timestampUnix": 1708934084927 + }, + { + "message": "header: content-length: 442", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:44.927", + "timestampUnix": 1708934084927 + }, + { + "message": "header: x-envoy-upstream-service-time: 3", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:44.927", + "timestampUnix": 1708934084927 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:44.927", + "timestampUnix": 1708934084927 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://reviews:9080 \"GET /reviews/0 HTTP/1.1\" 200 442", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:44.927", + "timestampUnix": 1708934084927 + }, + { + "message": "INFO:werkzeug:::ffff:127.0.0.6 - - [26/Feb/2024 07:54:44] \"GET /productpage HTTP/1.1\" 200 -", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:44.927", + "timestampUnix": 1708934084927 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): details:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:45.906", + "timestampUnix": 1708934085906 + }, + { + "message": "send: b'GET /details/0 HTTP/1.1\\r\\nHost: details:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: 233a71d529438bfa85c540b3d16f00e9\\r\\nX-B3-SpanId: df2196a2acad4c21\\r\\nX-B3-ParentSpanId: 85c540b3d16f00e9\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: c6bd373c-4fe0-9cce-b0c3-7102252f5e37\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:54:45.908", + "timestampUnix": 1708934085908 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:45.908", + "timestampUnix": 1708934085908 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:45.908", + "timestampUnix": 1708934085908 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:45.908", + "timestampUnix": 1708934085908 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:54:45 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:45.908", + "timestampUnix": 1708934085908 + }, + { + "message": "header: content-length: 178", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:45.908", + "timestampUnix": 1708934085908 + }, + { + "message": "header: x-envoy-upstream-service-time: 1", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:45.908", + "timestampUnix": 1708934085908 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://details:9080 \"GET /details/0 HTTP/1.1\" 200 178", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:45.908", + "timestampUnix": 1708934085908 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): reviews:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:45.910", + "timestampUnix": 1708934085910 + }, + { + "message": "send: b'GET /reviews/0 HTTP/1.1\\r\\nHost: reviews:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: 233a71d529438bfa85c540b3d16f00e9\\r\\nX-B3-SpanId: df2196a2acad4c21\\r\\nX-B3-ParentSpanId: 85c540b3d16f00e9\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: c6bd373c-4fe0-9cce-b0c3-7102252f5e37\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:54:45.915", + "timestampUnix": 1708934085915 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:45.915", + "timestampUnix": 1708934085915 + }, + { + "message": "header: x-powered-by: Servlet/3.1", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:45.915", + "timestampUnix": 1708934085915 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:45.915", + "timestampUnix": 1708934085915 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:54:44 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:45.915", + "timestampUnix": 1708934085915 + }, + { + "message": "header: content-language: en-US", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:45.915", + "timestampUnix": 1708934085915 + }, + { + "message": "header: content-length: 442", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:45.915", + "timestampUnix": 1708934085915 + }, + { + "message": "header: x-envoy-upstream-service-time: 3", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:45.915", + "timestampUnix": 1708934085915 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:45.915", + "timestampUnix": 1708934085915 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://reviews:9080 \"GET /reviews/0 HTTP/1.1\" 200 442", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:45.915", + "timestampUnix": 1708934085915 + }, + { + "message": "INFO:werkzeug:::ffff:127.0.0.6 - - [26/Feb/2024 07:54:45] \"GET /productpage HTTP/1.1\" 200 -", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:45.916", + "timestampUnix": 1708934085916 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): details:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:46.903", + "timestampUnix": 1708934086903 + }, + { + "message": "send: b'GET /details/0 HTTP/1.1\\r\\nHost: details:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: d67da21b1b3b362b69ec886017660b40\\r\\nX-B3-SpanId: ff4d0bf77479beac\\r\\nX-B3-ParentSpanId: 69ec886017660b40\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: 7ab30f22-f278-9909-9228-ab825021ff52\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:54:46.907", + "timestampUnix": 1708934086907 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:46.907", + "timestampUnix": 1708934086907 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:46.907", + "timestampUnix": 1708934086907 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:46.907", + "timestampUnix": 1708934086907 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:54:46 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:46.907", + "timestampUnix": 1708934086907 + }, + { + "message": "header: content-length: 178", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:46.907", + "timestampUnix": 1708934086907 + }, + { + "message": "header: x-envoy-upstream-service-time: 2", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:46.907", + "timestampUnix": 1708934086907 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://details:9080 \"GET /details/0 HTTP/1.1\" 200 178", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:46.907", + "timestampUnix": 1708934086907 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): reviews:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:46.910", + "timestampUnix": 1708934086910 + }, + { + "message": "send: b'GET /reviews/0 HTTP/1.1\\r\\nHost: reviews:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: d67da21b1b3b362b69ec886017660b40\\r\\nX-B3-SpanId: ff4d0bf77479beac\\r\\nX-B3-ParentSpanId: 69ec886017660b40\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: 7ab30f22-f278-9909-9228-ab825021ff52\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:54:46.916", + "timestampUnix": 1708934086916 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:46.916", + "timestampUnix": 1708934086916 + }, + { + "message": "header: x-powered-by: Servlet/3.1", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:46.916", + "timestampUnix": 1708934086916 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:46.916", + "timestampUnix": 1708934086916 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:54:46 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:46.916", + "timestampUnix": 1708934086916 + }, + { + "message": "header: content-language: en-US", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:46.916", + "timestampUnix": 1708934086916 + }, + { + "message": "header: content-length: 358", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:46.916", + "timestampUnix": 1708934086916 + }, + { + "message": "header: x-envoy-upstream-service-time: 2", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:46.916", + "timestampUnix": 1708934086916 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:46.916", + "timestampUnix": 1708934086916 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://reviews:9080 \"GET /reviews/0 HTTP/1.1\" 200 358", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:46.916", + "timestampUnix": 1708934086916 + }, + { + "message": "INFO:werkzeug:::ffff:127.0.0.6 - - [26/Feb/2024 07:54:46] \"GET /productpage HTTP/1.1\" 200 -", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:46.919", + "timestampUnix": 1708934086919 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): details:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:47.900", + "timestampUnix": 1708934087900 + }, + { + "message": "send: b'GET /details/0 HTTP/1.1\\r\\nHost: details:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: 7d00d83c46c405c9fdca3e94abd09b80\\r\\nX-B3-SpanId: 1b45750f13d7412b\\r\\nX-B3-ParentSpanId: fdca3e94abd09b80\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: c7a4163c-73d6-9529-92e1-216201c0e70b\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:54:47.902", + "timestampUnix": 1708934087902 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:47.902", + "timestampUnix": 1708934087902 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:47.902", + "timestampUnix": 1708934087902 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:47.902", + "timestampUnix": 1708934087902 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:54:47 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:47.902", + "timestampUnix": 1708934087902 + }, + { + "message": "header: content-length: 178", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:47.902", + "timestampUnix": 1708934087902 + }, + { + "message": "header: x-envoy-upstream-service-time: 1", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:47.902", + "timestampUnix": 1708934087902 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://details:9080 \"GET /details/0 HTTP/1.1\" 200 178", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:47.902", + "timestampUnix": 1708934087902 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): reviews:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:47.904", + "timestampUnix": 1708934087904 + }, + { + "message": "send: b'GET /reviews/0 HTTP/1.1\\r\\nHost: reviews:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: 7d00d83c46c405c9fdca3e94abd09b80\\r\\nX-B3-SpanId: 1b45750f13d7412b\\r\\nX-B3-ParentSpanId: fdca3e94abd09b80\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: c7a4163c-73d6-9529-92e1-216201c0e70b\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:54:47.908", + "timestampUnix": 1708934087908 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:47.908", + "timestampUnix": 1708934087908 + }, + { + "message": "header: x-powered-by: Servlet/3.1", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:47.908", + "timestampUnix": 1708934087908 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:47.908", + "timestampUnix": 1708934087908 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:54:47 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:47.908", + "timestampUnix": 1708934087908 + }, + { + "message": "header: content-language: en-US", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:47.908", + "timestampUnix": 1708934087908 + }, + { + "message": "header: content-length: 437", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:47.908", + "timestampUnix": 1708934087908 + }, + { + "message": "header: x-envoy-upstream-service-time: 2", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:47.908", + "timestampUnix": 1708934087908 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:47.908", + "timestampUnix": 1708934087908 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://reviews:9080 \"GET /reviews/0 HTTP/1.1\" 200 437", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:47.908", + "timestampUnix": 1708934087908 + }, + { + "message": "INFO:werkzeug:::ffff:127.0.0.6 - - [26/Feb/2024 07:54:47] \"GET /productpage HTTP/1.1\" 200 -", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:47.909", + "timestampUnix": 1708934087909 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): details:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:48.907", + "timestampUnix": 1708934088907 + }, + { + "message": "send: b'GET /details/0 HTTP/1.1\\r\\nHost: details:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: 3a932a224d27b3156ae6151a3b21b436\\r\\nX-B3-SpanId: fe9ade6e03e3ab3c\\r\\nX-B3-ParentSpanId: 6ae6151a3b21b436\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: 37c66060-a013-9e12-8dd3-b41fe8964ffb\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:54:48.915", + "timestampUnix": 1708934088915 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:48.915", + "timestampUnix": 1708934088915 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:48.915", + "timestampUnix": 1708934088915 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:48.915", + "timestampUnix": 1708934088915 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:54:48 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:48.915", + "timestampUnix": 1708934088915 + }, + { + "message": "header: content-length: 178", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:48.915", + "timestampUnix": 1708934088915 + }, + { + "message": "header: x-envoy-upstream-service-time: 3", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:48.915", + "timestampUnix": 1708934088915 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://details:9080 \"GET /details/0 HTTP/1.1\" 200 178", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:48.915", + "timestampUnix": 1708934088915 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): reviews:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:48.920", + "timestampUnix": 1708934088920 + }, + { + "message": "send: b'GET /reviews/0 HTTP/1.1\\r\\nHost: reviews:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: 3a932a224d27b3156ae6151a3b21b436\\r\\nX-B3-SpanId: fe9ade6e03e3ab3c\\r\\nX-B3-ParentSpanId: 6ae6151a3b21b436\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: 37c66060-a013-9e12-8dd3-b41fe8964ffb\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:54:48.926", + "timestampUnix": 1708934088926 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:48.926", + "timestampUnix": 1708934088926 + }, + { + "message": "header: x-powered-by: Servlet/3.1", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:48.926", + "timestampUnix": 1708934088926 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:48.926", + "timestampUnix": 1708934088926 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:54:48 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:48.926", + "timestampUnix": 1708934088926 + }, + { + "message": "header: content-language: en-US", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:48.926", + "timestampUnix": 1708934088926 + }, + { + "message": "header: content-length: 437", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:48.926", + "timestampUnix": 1708934088926 + }, + { + "message": "header: x-envoy-upstream-service-time: 2", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:48.926", + "timestampUnix": 1708934088926 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:48.926", + "timestampUnix": 1708934088926 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://reviews:9080 \"GET /reviews/0 HTTP/1.1\" 200 437", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:48.926", + "timestampUnix": 1708934088926 + }, + { + "message": "INFO:werkzeug:::ffff:127.0.0.6 - - [26/Feb/2024 07:54:48] \"GET /productpage HTTP/1.1\" 200 -", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:48.927", + "timestampUnix": 1708934088927 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): details:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:49.907", + "timestampUnix": 1708934089907 + }, + { + "message": "send: b'GET /details/0 HTTP/1.1\\r\\nHost: details:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: dc990014a577481764dac83f7ac8c345\\r\\nX-B3-SpanId: c3a2e5a1e0f8a187\\r\\nX-B3-ParentSpanId: 64dac83f7ac8c345\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: dba42f68-b2b4-93f4-991f-e71e4b086fc7\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:54:49.914", + "timestampUnix": 1708934089914 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:49.914", + "timestampUnix": 1708934089914 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:49.914", + "timestampUnix": 1708934089914 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:49.914", + "timestampUnix": 1708934089914 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:54:49 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:49.914", + "timestampUnix": 1708934089914 + }, + { + "message": "header: content-length: 178", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:49.914", + "timestampUnix": 1708934089914 + }, + { + "message": "header: x-envoy-upstream-service-time: 3", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:49.914", + "timestampUnix": 1708934089914 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://details:9080 \"GET /details/0 HTTP/1.1\" 200 178", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:49.914", + "timestampUnix": 1708934089914 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): reviews:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:49.919", + "timestampUnix": 1708934089919 + }, + { + "message": "send: b'GET /reviews/0 HTTP/1.1\\r\\nHost: reviews:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: dc990014a577481764dac83f7ac8c345\\r\\nX-B3-SpanId: c3a2e5a1e0f8a187\\r\\nX-B3-ParentSpanId: 64dac83f7ac8c345\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: dba42f68-b2b4-93f4-991f-e71e4b086fc7\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:54:49.924", + "timestampUnix": 1708934089924 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:49.924", + "timestampUnix": 1708934089924 + }, + { + "message": "header: x-powered-by: Servlet/3.1", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:49.924", + "timestampUnix": 1708934089924 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:49.924", + "timestampUnix": 1708934089924 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:54:49 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:49.924", + "timestampUnix": 1708934089924 + }, + { + "message": "header: content-language: en-US", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:49.924", + "timestampUnix": 1708934089924 + }, + { + "message": "header: content-length: 442", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:49.924", + "timestampUnix": 1708934089924 + }, + { + "message": "header: x-envoy-upstream-service-time: 2", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:49.924", + "timestampUnix": 1708934089924 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:49.924", + "timestampUnix": 1708934089924 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://reviews:9080 \"GET /reviews/0 HTTP/1.1\" 200 442", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:49.924", + "timestampUnix": 1708934089924 + }, + { + "message": "INFO:werkzeug:::ffff:127.0.0.6 - - [26/Feb/2024 07:54:49] \"GET /productpage HTTP/1.1\" 200 -", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:49.925", + "timestampUnix": 1708934089925 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): details:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:50.907", + "timestampUnix": 1708934090907 + }, + { + "message": "send: b'GET /details/0 HTTP/1.1\\r\\nHost: details:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: bc157436ef9ace709d9008aaa8746edd\\r\\nX-B3-SpanId: b7db75206d6f2d75\\r\\nX-B3-ParentSpanId: 9d9008aaa8746edd\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: bb7dd724-b247-960a-ad48-074a302f7ff9\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:54:50.910", + "timestampUnix": 1708934090910 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:50.910", + "timestampUnix": 1708934090910 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:50.910", + "timestampUnix": 1708934090910 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:50.910", + "timestampUnix": 1708934090910 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:54:50 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:50.910", + "timestampUnix": 1708934090910 + }, + { + "message": "header: content-length: 178", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:50.911", + "timestampUnix": 1708934090911 + }, + { + "message": "header: x-envoy-upstream-service-time: 1", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:50.911", + "timestampUnix": 1708934090911 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://details:9080 \"GET /details/0 HTTP/1.1\" 200 178", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:50.911", + "timestampUnix": 1708934090911 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): reviews:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:50.912", + "timestampUnix": 1708934090912 + }, + { + "message": "send: b'GET /reviews/0 HTTP/1.1\\r\\nHost: reviews:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: bc157436ef9ace709d9008aaa8746edd\\r\\nX-B3-SpanId: b7db75206d6f2d75\\r\\nX-B3-ParentSpanId: 9d9008aaa8746edd\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: bb7dd724-b247-960a-ad48-074a302f7ff9\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:54:50.914", + "timestampUnix": 1708934090914 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:50.914", + "timestampUnix": 1708934090914 + }, + { + "message": "header: x-powered-by: Servlet/3.1", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:50.914", + "timestampUnix": 1708934090914 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:50.914", + "timestampUnix": 1708934090914 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:54:50 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:50.914", + "timestampUnix": 1708934090914 + }, + { + "message": "header: content-language: en-US", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:50.914", + "timestampUnix": 1708934090914 + }, + { + "message": "header: content-length: 358", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:50.914", + "timestampUnix": 1708934090914 + }, + { + "message": "header: x-envoy-upstream-service-time: 0", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:50.914", + "timestampUnix": 1708934090914 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:50.914", + "timestampUnix": 1708934090914 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://reviews:9080 \"GET /reviews/0 HTTP/1.1\" 200 358", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:50.914", + "timestampUnix": 1708934090914 + }, + { + "message": "INFO:werkzeug:::ffff:127.0.0.6 - - [26/Feb/2024 07:54:50] \"GET /productpage HTTP/1.1\" 200 -", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:50.915", + "timestampUnix": 1708934090915 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): details:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:51.900", + "timestampUnix": 1708934091900 + }, + { + "message": "send: b'GET /details/0 HTTP/1.1\\r\\nHost: details:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: 7885a5f5830c65ff47295891062dc400\\r\\nX-B3-SpanId: de738abb2e50bc5e\\r\\nX-B3-ParentSpanId: 47295891062dc400\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: 1c39849c-a10c-9504-94c3-2952506a5c42\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:54:51.902", + "timestampUnix": 1708934091902 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:51.902", + "timestampUnix": 1708934091902 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:51.902", + "timestampUnix": 1708934091902 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:51.902", + "timestampUnix": 1708934091902 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:54:51 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:51.902", + "timestampUnix": 1708934091902 + }, + { + "message": "header: content-length: 178", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:51.902", + "timestampUnix": 1708934091902 + }, + { + "message": "header: x-envoy-upstream-service-time: 1", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:51.902", + "timestampUnix": 1708934091902 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://details:9080 \"GET /details/0 HTTP/1.1\" 200 178", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:51.902", + "timestampUnix": 1708934091902 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): reviews:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:51.903", + "timestampUnix": 1708934091903 + }, + { + "message": "send: b'GET /reviews/0 HTTP/1.1\\r\\nHost: reviews:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: 7885a5f5830c65ff47295891062dc400\\r\\nX-B3-SpanId: de738abb2e50bc5e\\r\\nX-B3-ParentSpanId: 47295891062dc400\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: 1c39849c-a10c-9504-94c3-2952506a5c42\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:54:51.905", + "timestampUnix": 1708934091905 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:51.905", + "timestampUnix": 1708934091905 + }, + { + "message": "header: x-powered-by: Servlet/3.1", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:51.905", + "timestampUnix": 1708934091905 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:51.905", + "timestampUnix": 1708934091905 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:54:50 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:51.905", + "timestampUnix": 1708934091905 + }, + { + "message": "header: content-language: en-US", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:51.905", + "timestampUnix": 1708934091905 + }, + { + "message": "header: content-length: 358", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:51.905", + "timestampUnix": 1708934091905 + }, + { + "message": "header: x-envoy-upstream-service-time: 0", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:51.905", + "timestampUnix": 1708934091905 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:51.905", + "timestampUnix": 1708934091905 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://reviews:9080 \"GET /reviews/0 HTTP/1.1\" 200 358", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:51.905", + "timestampUnix": 1708934091905 + }, + { + "message": "INFO:werkzeug:::ffff:127.0.0.6 - - [26/Feb/2024 07:54:51] \"GET /productpage HTTP/1.1\" 200 -", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:51.906", + "timestampUnix": 1708934091906 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): details:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:52.900", + "timestampUnix": 1708934092900 + }, + { + "message": "send: b'GET /details/0 HTTP/1.1\\r\\nHost: details:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: a65f13e86e5bdbb87c77637386fa3c39\\r\\nX-B3-SpanId: fdba6348a4f608ff\\r\\nX-B3-ParentSpanId: 7c77637386fa3c39\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: f9b98b9d-fd8b-9f59-93f8-18ae54587679\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:54:52.903", + "timestampUnix": 1708934092903 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:52.903", + "timestampUnix": 1708934092903 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:52.903", + "timestampUnix": 1708934092903 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:52.903", + "timestampUnix": 1708934092903 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:54:52 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:52.903", + "timestampUnix": 1708934092903 + }, + { + "message": "header: content-length: 178", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:52.903", + "timestampUnix": 1708934092903 + }, + { + "message": "header: x-envoy-upstream-service-time: 1", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:52.903", + "timestampUnix": 1708934092903 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://details:9080 \"GET /details/0 HTTP/1.1\" 200 178", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:52.903", + "timestampUnix": 1708934092903 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): reviews:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:52.904", + "timestampUnix": 1708934092904 + }, + { + "message": "send: b'GET /reviews/0 HTTP/1.1\\r\\nHost: reviews:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: a65f13e86e5bdbb87c77637386fa3c39\\r\\nX-B3-SpanId: fdba6348a4f608ff\\r\\nX-B3-ParentSpanId: 7c77637386fa3c39\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: f9b98b9d-fd8b-9f59-93f8-18ae54587679\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:54:52.906", + "timestampUnix": 1708934092906 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:52.906", + "timestampUnix": 1708934092906 + }, + { + "message": "header: x-powered-by: Servlet/3.1", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:52.906", + "timestampUnix": 1708934092906 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:52.906", + "timestampUnix": 1708934092906 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:54:52 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:52.906", + "timestampUnix": 1708934092906 + }, + { + "message": "header: content-language: en-US", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:52.906", + "timestampUnix": 1708934092906 + }, + { + "message": "header: content-length: 358", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:52.906", + "timestampUnix": 1708934092906 + }, + { + "message": "header: x-envoy-upstream-service-time: 0", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:52.906", + "timestampUnix": 1708934092906 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:52.906", + "timestampUnix": 1708934092906 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://reviews:9080 \"GET /reviews/0 HTTP/1.1\" 200 358", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:52.906", + "timestampUnix": 1708934092906 + }, + { + "message": "INFO:werkzeug:::ffff:127.0.0.6 - - [26/Feb/2024 07:54:52] \"GET /productpage HTTP/1.1\" 200 -", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:52.907", + "timestampUnix": 1708934092907 + }, + { + "message": "INFO:werkzeug:::ffff:127.0.0.1 - - [26/Feb/2024 07:54:52] \"GET /metrics HTTP/1.1\" 200 -", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:52.982", + "timestampUnix": 1708934092982 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): details:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:53.900", + "timestampUnix": 1708934093900 + }, + { + "message": "send: b'GET /details/0 HTTP/1.1\\r\\nHost: details:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: 268ef305188eca50050c2390e4f7c791\\r\\nX-B3-SpanId: c39c0b250f79f3ba\\r\\nX-B3-ParentSpanId: 050c2390e4f7c791\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: 0c5e1b6f-a0c4-96ce-a6af-feaccca52090\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:54:53.903", + "timestampUnix": 1708934093903 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:53.903", + "timestampUnix": 1708934093903 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:53.903", + "timestampUnix": 1708934093903 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:53.903", + "timestampUnix": 1708934093903 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:54:53 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:53.903", + "timestampUnix": 1708934093903 + }, + { + "message": "header: content-length: 178", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:53.903", + "timestampUnix": 1708934093903 + }, + { + "message": "header: x-envoy-upstream-service-time: 1", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:53.903", + "timestampUnix": 1708934093903 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://details:9080 \"GET /details/0 HTTP/1.1\" 200 178", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:53.903", + "timestampUnix": 1708934093903 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): reviews:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:53.905", + "timestampUnix": 1708934093905 + }, + { + "message": "send: b'GET /reviews/0 HTTP/1.1\\r\\nHost: reviews:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: 268ef305188eca50050c2390e4f7c791\\r\\nX-B3-SpanId: c39c0b250f79f3ba\\r\\nX-B3-ParentSpanId: 050c2390e4f7c791\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: 0c5e1b6f-a0c4-96ce-a6af-feaccca52090\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:54:53.909", + "timestampUnix": 1708934093909 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:53.909", + "timestampUnix": 1708934093909 + }, + { + "message": "header: x-powered-by: Servlet/3.1", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:53.909", + "timestampUnix": 1708934093909 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:53.909", + "timestampUnix": 1708934093909 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:54:53 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:53.909", + "timestampUnix": 1708934093909 + }, + { + "message": "header: content-language: en-US", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:53.909", + "timestampUnix": 1708934093909 + }, + { + "message": "header: content-length: 437", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:53.909", + "timestampUnix": 1708934093909 + }, + { + "message": "header: x-envoy-upstream-service-time: 2", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:53.909", + "timestampUnix": 1708934093909 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:53.909", + "timestampUnix": 1708934093909 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://reviews:9080 \"GET /reviews/0 HTTP/1.1\" 200 437", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:53.909", + "timestampUnix": 1708934093909 + }, + { + "message": "INFO:werkzeug:::ffff:127.0.0.6 - - [26/Feb/2024 07:54:53] \"GET /productpage HTTP/1.1\" 200 -", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:53.910", + "timestampUnix": 1708934093910 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): details:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:54.901", + "timestampUnix": 1708934094901 + }, + { + "message": "send: b'GET /details/0 HTTP/1.1\\r\\nHost: details:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: 1251421b910d13d838ffcff2b52cf51d\\r\\nX-B3-SpanId: 7f031ff1b81e722c\\r\\nX-B3-ParentSpanId: 38ffcff2b52cf51d\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: 7061eba9-b890-9d84-8ca8-a687333728b5\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:54:54.903", + "timestampUnix": 1708934094903 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:54.903", + "timestampUnix": 1708934094903 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:54.903", + "timestampUnix": 1708934094903 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:54.903", + "timestampUnix": 1708934094903 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:54:54 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:54.903", + "timestampUnix": 1708934094903 + }, + { + "message": "header: content-length: 178", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:54.903", + "timestampUnix": 1708934094903 + }, + { + "message": "header: x-envoy-upstream-service-time: 1", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:54.903", + "timestampUnix": 1708934094903 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://details:9080 \"GET /details/0 HTTP/1.1\" 200 178", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:54.903", + "timestampUnix": 1708934094903 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): reviews:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:54.905", + "timestampUnix": 1708934094905 + }, + { + "message": "send: b'GET /reviews/0 HTTP/1.1\\r\\nHost: reviews:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: 1251421b910d13d838ffcff2b52cf51d\\r\\nX-B3-SpanId: 7f031ff1b81e722c\\r\\nX-B3-ParentSpanId: 38ffcff2b52cf51d\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: 7061eba9-b890-9d84-8ca8-a687333728b5\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:54:54.909", + "timestampUnix": 1708934094909 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:54.909", + "timestampUnix": 1708934094909 + }, + { + "message": "header: x-powered-by: Servlet/3.1", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:54.909", + "timestampUnix": 1708934094909 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:54.909", + "timestampUnix": 1708934094909 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:54:54 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:54.909", + "timestampUnix": 1708934094909 + }, + { + "message": "header: content-language: en-US", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:54.909", + "timestampUnix": 1708934094909 + }, + { + "message": "header: content-length: 442", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:54.909", + "timestampUnix": 1708934094909 + }, + { + "message": "header: x-envoy-upstream-service-time: 2", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:54.909", + "timestampUnix": 1708934094909 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:54.909", + "timestampUnix": 1708934094909 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://reviews:9080 \"GET /reviews/0 HTTP/1.1\" 200 442", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:54.909", + "timestampUnix": 1708934094909 + }, + { + "message": "INFO:werkzeug:::ffff:127.0.0.6 - - [26/Feb/2024 07:54:54] \"GET /productpage HTTP/1.1\" 200 -", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:54.910", + "timestampUnix": 1708934094910 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): details:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:55.907", + "timestampUnix": 1708934095907 + }, + { + "message": "send: b'GET /details/0 HTTP/1.1\\r\\nHost: details:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: 2e7d2366c6ac9b0b44e7fbd5d44326d4\\r\\nX-B3-SpanId: 62f168995c298f05\\r\\nX-B3-ParentSpanId: 44e7fbd5d44326d4\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: 1c344ad9-f46c-9c5d-afef-2b92c97cdc7a\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:54:55.917", + "timestampUnix": 1708934095917 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:55.917", + "timestampUnix": 1708934095917 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:55.917", + "timestampUnix": 1708934095917 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:55.917", + "timestampUnix": 1708934095917 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:54:55 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:55.917", + "timestampUnix": 1708934095917 + }, + { + "message": "header: content-length: 178", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:55.917", + "timestampUnix": 1708934095917 + }, + { + "message": "header: x-envoy-upstream-service-time: 5", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:55.917", + "timestampUnix": 1708934095917 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://details:9080 \"GET /details/0 HTTP/1.1\" 200 178", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:55.917", + "timestampUnix": 1708934095917 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): reviews:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:55.923", + "timestampUnix": 1708934095923 + }, + { + "message": "send: b'GET /reviews/0 HTTP/1.1\\r\\nHost: reviews:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: 2e7d2366c6ac9b0b44e7fbd5d44326d4\\r\\nX-B3-SpanId: 62f168995c298f05\\r\\nX-B3-ParentSpanId: 44e7fbd5d44326d4\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: 1c344ad9-f46c-9c5d-afef-2b92c97cdc7a\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:54:55.930", + "timestampUnix": 1708934095930 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:55.930", + "timestampUnix": 1708934095930 + }, + { + "message": "header: x-powered-by: Servlet/3.1", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:55.930", + "timestampUnix": 1708934095930 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:55.930", + "timestampUnix": 1708934095930 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:54:55 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:55.930", + "timestampUnix": 1708934095930 + }, + { + "message": "header: content-language: en-US", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:55.930", + "timestampUnix": 1708934095930 + }, + { + "message": "header: content-length: 442", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:55.930", + "timestampUnix": 1708934095930 + }, + { + "message": "header: x-envoy-upstream-service-time: 4", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:55.930", + "timestampUnix": 1708934095930 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:55.930", + "timestampUnix": 1708934095930 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://reviews:9080 \"GET /reviews/0 HTTP/1.1\" 200 442", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:55.930", + "timestampUnix": 1708934095930 + }, + { + "message": "INFO:werkzeug:::ffff:127.0.0.6 - - [26/Feb/2024 07:54:55] \"GET /productpage HTTP/1.1\" 200 -", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:55.931", + "timestampUnix": 1708934095931 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): details:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:56.900", + "timestampUnix": 1708934096900 + }, + { + "message": "send: b'GET /details/0 HTTP/1.1\\r\\nHost: details:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: 7ede05cf43abbb872dccca110c4c0aab\\r\\nX-B3-SpanId: 48370c933463d02b\\r\\nX-B3-ParentSpanId: 2dccca110c4c0aab\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: abba82a6-360d-9754-84ed-34d4ec98b282\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:54:56.903", + "timestampUnix": 1708934096903 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:56.903", + "timestampUnix": 1708934096903 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:56.903", + "timestampUnix": 1708934096903 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:56.903", + "timestampUnix": 1708934096903 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:54:56 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:56.903", + "timestampUnix": 1708934096903 + }, + { + "message": "header: content-length: 178", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:56.903", + "timestampUnix": 1708934096903 + }, + { + "message": "header: x-envoy-upstream-service-time: 1", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:56.903", + "timestampUnix": 1708934096903 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://details:9080 \"GET /details/0 HTTP/1.1\" 200 178", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:56.903", + "timestampUnix": 1708934096903 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): reviews:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:56.904", + "timestampUnix": 1708934096904 + }, + { + "message": "send: b'GET /reviews/0 HTTP/1.1\\r\\nHost: reviews:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: 7ede05cf43abbb872dccca110c4c0aab\\r\\nX-B3-SpanId: 48370c933463d02b\\r\\nX-B3-ParentSpanId: 2dccca110c4c0aab\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: abba82a6-360d-9754-84ed-34d4ec98b282\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:54:56.908", + "timestampUnix": 1708934096908 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:56.908", + "timestampUnix": 1708934096908 + }, + { + "message": "header: x-powered-by: Servlet/3.1", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:56.908", + "timestampUnix": 1708934096908 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:56.908", + "timestampUnix": 1708934096908 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:54:55 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:56.908", + "timestampUnix": 1708934096908 + }, + { + "message": "header: content-language: en-US", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:56.908", + "timestampUnix": 1708934096908 + }, + { + "message": "header: content-length: 442", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:56.908", + "timestampUnix": 1708934096908 + }, + { + "message": "header: x-envoy-upstream-service-time: 2", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:56.908", + "timestampUnix": 1708934096908 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:56.908", + "timestampUnix": 1708934096908 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://reviews:9080 \"GET /reviews/0 HTTP/1.1\" 200 442", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:56.908", + "timestampUnix": 1708934096908 + }, + { + "message": "INFO:werkzeug:::ffff:127.0.0.6 - - [26/Feb/2024 07:54:56] \"GET /productpage HTTP/1.1\" 200 -", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:56.909", + "timestampUnix": 1708934096909 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): details:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:57.900", + "timestampUnix": 1708934097900 + }, + { + "message": "send: b'GET /details/0 HTTP/1.1\\r\\nHost: details:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: 45c4907c00e1e56217861a90b9a7caa8\\r\\nX-B3-SpanId: e5643dd933db0afd\\r\\nX-B3-ParentSpanId: 17861a90b9a7caa8\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: 86c69917-0718-913b-b214-78296f28e625\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:54:57.902", + "timestampUnix": 1708934097902 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:57.902", + "timestampUnix": 1708934097902 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:57.902", + "timestampUnix": 1708934097902 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:57.902", + "timestampUnix": 1708934097902 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:54:57 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:57.902", + "timestampUnix": 1708934097902 + }, + { + "message": "header: content-length: 178", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:57.902", + "timestampUnix": 1708934097902 + }, + { + "message": "header: x-envoy-upstream-service-time: 1", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:57.902", + "timestampUnix": 1708934097902 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://details:9080 \"GET /details/0 HTTP/1.1\" 200 178", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:57.902", + "timestampUnix": 1708934097902 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): reviews:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:57.904", + "timestampUnix": 1708934097904 + }, + { + "message": "send: b'GET /reviews/0 HTTP/1.1\\r\\nHost: reviews:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: 45c4907c00e1e56217861a90b9a7caa8\\r\\nX-B3-SpanId: e5643dd933db0afd\\r\\nX-B3-ParentSpanId: 17861a90b9a7caa8\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: 86c69917-0718-913b-b214-78296f28e625\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:54:57.906", + "timestampUnix": 1708934097906 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:57.906", + "timestampUnix": 1708934097906 + }, + { + "message": "header: x-powered-by: Servlet/3.1", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:57.906", + "timestampUnix": 1708934097906 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:57.906", + "timestampUnix": 1708934097906 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:54:57 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:57.906", + "timestampUnix": 1708934097906 + }, + { + "message": "header: content-language: en-US", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:57.906", + "timestampUnix": 1708934097906 + }, + { + "message": "header: content-length: 358", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:57.906", + "timestampUnix": 1708934097906 + }, + { + "message": "header: x-envoy-upstream-service-time: 0", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:57.906", + "timestampUnix": 1708934097906 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:57.906", + "timestampUnix": 1708934097906 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://reviews:9080 \"GET /reviews/0 HTTP/1.1\" 200 358", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:57.906", + "timestampUnix": 1708934097906 + }, + { + "message": "INFO:werkzeug:::ffff:127.0.0.6 - - [26/Feb/2024 07:54:57] \"GET /productpage HTTP/1.1\" 200 -", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:57.907", + "timestampUnix": 1708934097907 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): details:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:58.900", + "timestampUnix": 1708934098900 + }, + { + "message": "send: b'GET /details/0 HTTP/1.1\\r\\nHost: details:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: 58b41ee958ccbf9069b4e693c863e8d1\\r\\nX-B3-SpanId: e4e60106a869d2d3\\r\\nX-B3-ParentSpanId: 69b4e693c863e8d1\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: d349eb2f-8a72-910d-8cb0-2cca31a6df8d\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:54:58.903", + "timestampUnix": 1708934098903 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:58.903", + "timestampUnix": 1708934098903 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:58.903", + "timestampUnix": 1708934098903 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:58.903", + "timestampUnix": 1708934098903 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:54:58 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:58.903", + "timestampUnix": 1708934098903 + }, + { + "message": "header: content-length: 178", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:58.903", + "timestampUnix": 1708934098903 + }, + { + "message": "header: x-envoy-upstream-service-time: 1", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:58.903", + "timestampUnix": 1708934098903 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://details:9080 \"GET /details/0 HTTP/1.1\" 200 178", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:58.903", + "timestampUnix": 1708934098903 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): reviews:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:58.904", + "timestampUnix": 1708934098904 + }, + { + "message": "send: b'GET /reviews/0 HTTP/1.1\\r\\nHost: reviews:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: 58b41ee958ccbf9069b4e693c863e8d1\\r\\nX-B3-SpanId: e4e60106a869d2d3\\r\\nX-B3-ParentSpanId: 69b4e693c863e8d1\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: d349eb2f-8a72-910d-8cb0-2cca31a6df8d\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:54:58.908", + "timestampUnix": 1708934098908 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:58.908", + "timestampUnix": 1708934098908 + }, + { + "message": "header: x-powered-by: Servlet/3.1", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:58.908", + "timestampUnix": 1708934098908 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:58.908", + "timestampUnix": 1708934098908 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:54:58 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:58.908", + "timestampUnix": 1708934098908 + }, + { + "message": "header: content-language: en-US", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:58.908", + "timestampUnix": 1708934098908 + }, + { + "message": "header: content-length: 437", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:58.908", + "timestampUnix": 1708934098908 + }, + { + "message": "header: x-envoy-upstream-service-time: 2", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:58.908", + "timestampUnix": 1708934098908 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:58.908", + "timestampUnix": 1708934098908 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://reviews:9080 \"GET /reviews/0 HTTP/1.1\" 200 437", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:58.908", + "timestampUnix": 1708934098908 + }, + { + "message": "INFO:werkzeug:::ffff:127.0.0.6 - - [26/Feb/2024 07:54:58] \"GET /productpage HTTP/1.1\" 200 -", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:58.909", + "timestampUnix": 1708934098909 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): details:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:59.908", + "timestampUnix": 1708934099908 + }, + { + "message": "send: b'GET /details/0 HTTP/1.1\\r\\nHost: details:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: a73ac51cc3e531b603a69c2b7bf21849\\r\\nX-B3-SpanId: 56a473a5d1bfd4e9\\r\\nX-B3-ParentSpanId: 03a69c2b7bf21849\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: 68c04835-67fa-94cb-97dc-48066d7db2cc\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:54:59.915", + "timestampUnix": 1708934099915 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:59.915", + "timestampUnix": 1708934099915 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:59.915", + "timestampUnix": 1708934099915 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:59.915", + "timestampUnix": 1708934099915 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:54:59 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:59.915", + "timestampUnix": 1708934099915 + }, + { + "message": "header: content-length: 178", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:59.915", + "timestampUnix": 1708934099915 + }, + { + "message": "header: x-envoy-upstream-service-time: 3", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:59.915", + "timestampUnix": 1708934099915 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://details:9080 \"GET /details/0 HTTP/1.1\" 200 178", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:59.915", + "timestampUnix": 1708934099915 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): reviews:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:59.920", + "timestampUnix": 1708934099920 + }, + { + "message": "send: b'GET /reviews/0 HTTP/1.1\\r\\nHost: reviews:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: a73ac51cc3e531b603a69c2b7bf21849\\r\\nX-B3-SpanId: 56a473a5d1bfd4e9\\r\\nX-B3-ParentSpanId: 03a69c2b7bf21849\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: 68c04835-67fa-94cb-97dc-48066d7db2cc\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:54:59.926", + "timestampUnix": 1708934099926 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:59.926", + "timestampUnix": 1708934099926 + }, + { + "message": "header: x-powered-by: Servlet/3.1", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:59.926", + "timestampUnix": 1708934099926 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:59.926", + "timestampUnix": 1708934099926 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:54:59 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:59.926", + "timestampUnix": 1708934099926 + }, + { + "message": "header: content-language: en-US", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:59.926", + "timestampUnix": 1708934099926 + }, + { + "message": "header: content-length: 358", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:59.926", + "timestampUnix": 1708934099926 + }, + { + "message": "header: x-envoy-upstream-service-time: 2", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:59.926", + "timestampUnix": 1708934099926 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:59.926", + "timestampUnix": 1708934099926 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://reviews:9080 \"GET /reviews/0 HTTP/1.1\" 200 358", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:54:59.926", + "timestampUnix": 1708934099926 + }, + { + "message": "INFO:werkzeug:::ffff:127.0.0.6 - - [26/Feb/2024 07:54:59] \"GET /productpage HTTP/1.1\" 200 -", + "severity": "INFO", + "timestamp": "2024-02-26 07:54:59.929", + "timestampUnix": 1708934099929 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): details:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:55:00.903", + "timestampUnix": 1708934100903 + }, + { + "message": "send: b'GET /details/0 HTTP/1.1\\r\\nHost: details:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: 2426b66406fe85e541a4163074a3703b\\r\\nX-B3-SpanId: 0db2753859ae24a4\\r\\nX-B3-ParentSpanId: 41a4163074a3703b\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: f998a9cb-4d81-9b1f-8f37-7bda81e59215\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:55:00.911", + "timestampUnix": 1708934100911 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:00.911", + "timestampUnix": 1708934100911 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:00.911", + "timestampUnix": 1708934100911 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:00.911", + "timestampUnix": 1708934100911 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:55:00 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:00.911", + "timestampUnix": 1708934100911 + }, + { + "message": "header: content-length: 178", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:00.911", + "timestampUnix": 1708934100911 + }, + { + "message": "header: x-envoy-upstream-service-time: 4", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:00.911", + "timestampUnix": 1708934100911 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://details:9080 \"GET /details/0 HTTP/1.1\" 200 178", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:55:00.911", + "timestampUnix": 1708934100911 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): reviews:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:55:00.917", + "timestampUnix": 1708934100917 + }, + { + "message": "send: b'GET /reviews/0 HTTP/1.1\\r\\nHost: reviews:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: 2426b66406fe85e541a4163074a3703b\\r\\nX-B3-SpanId: 0db2753859ae24a4\\r\\nX-B3-ParentSpanId: 41a4163074a3703b\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: f998a9cb-4d81-9b1f-8f37-7bda81e59215\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:55:00.925", + "timestampUnix": 1708934100925 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:00.925", + "timestampUnix": 1708934100925 + }, + { + "message": "header: x-powered-by: Servlet/3.1", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:00.925", + "timestampUnix": 1708934100925 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:00.925", + "timestampUnix": 1708934100925 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:54:59 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:00.925", + "timestampUnix": 1708934100925 + }, + { + "message": "header: content-language: en-US", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:00.925", + "timestampUnix": 1708934100925 + }, + { + "message": "header: content-length: 358", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:00.925", + "timestampUnix": 1708934100925 + }, + { + "message": "header: x-envoy-upstream-service-time: 2", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:00.925", + "timestampUnix": 1708934100925 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:00.925", + "timestampUnix": 1708934100925 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://reviews:9080 \"GET /reviews/0 HTTP/1.1\" 200 358", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:55:00.925", + "timestampUnix": 1708934100925 + }, + { + "message": "INFO:werkzeug:::ffff:127.0.0.6 - - [26/Feb/2024 07:55:00] \"GET /productpage HTTP/1.1\" 200 -", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:00.928", + "timestampUnix": 1708934100928 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): details:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:55:01.902", + "timestampUnix": 1708934101902 + }, + { + "message": "send: b'GET /details/0 HTTP/1.1\\r\\nHost: details:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: 90f03478080586c694b659760c3f7f9c\\r\\nX-B3-SpanId: 8773232d8eab2a95\\r\\nX-B3-ParentSpanId: 94b659760c3f7f9c\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: b361cec2-562a-9f16-a013-1d826750ca44\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:55:01.904", + "timestampUnix": 1708934101904 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:01.904", + "timestampUnix": 1708934101904 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:01.904", + "timestampUnix": 1708934101904 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:01.904", + "timestampUnix": 1708934101904 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:55:01 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:01.904", + "timestampUnix": 1708934101904 + }, + { + "message": "header: content-length: 178", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:01.904", + "timestampUnix": 1708934101904 + }, + { + "message": "header: x-envoy-upstream-service-time: 1", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:01.904", + "timestampUnix": 1708934101904 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://details:9080 \"GET /details/0 HTTP/1.1\" 200 178", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:55:01.904", + "timestampUnix": 1708934101904 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): reviews:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:55:01.906", + "timestampUnix": 1708934101906 + }, + { + "message": "send: b'GET /reviews/0 HTTP/1.1\\r\\nHost: reviews:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: 90f03478080586c694b659760c3f7f9c\\r\\nX-B3-SpanId: 8773232d8eab2a95\\r\\nX-B3-ParentSpanId: 94b659760c3f7f9c\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: b361cec2-562a-9f16-a013-1d826750ca44\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:55:01.911", + "timestampUnix": 1708934101911 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:01.911", + "timestampUnix": 1708934101911 + }, + { + "message": "header: x-powered-by: Servlet/3.1", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:01.911", + "timestampUnix": 1708934101911 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:01.911", + "timestampUnix": 1708934101911 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:55:01 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:01.911", + "timestampUnix": 1708934101911 + }, + { + "message": "header: content-language: en-US", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:01.911", + "timestampUnix": 1708934101911 + }, + { + "message": "header: content-length: 437", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:01.911", + "timestampUnix": 1708934101911 + }, + { + "message": "header: x-envoy-upstream-service-time: 3", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:01.911", + "timestampUnix": 1708934101911 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:01.911", + "timestampUnix": 1708934101911 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://reviews:9080 \"GET /reviews/0 HTTP/1.1\" 200 437", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:55:01.911", + "timestampUnix": 1708934101911 + }, + { + "message": "INFO:werkzeug:::ffff:127.0.0.6 - - [26/Feb/2024 07:55:01] \"GET /productpage HTTP/1.1\" 200 -", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:01.912", + "timestampUnix": 1708934101912 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): details:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:55:02.900", + "timestampUnix": 1708934102900 + }, + { + "message": "send: b'GET /details/0 HTTP/1.1\\r\\nHost: details:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: 8b00c887138f7273298ec2573088e1c4\\r\\nX-B3-SpanId: f69786051652c2bc\\r\\nX-B3-ParentSpanId: 298ec2573088e1c4\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: fa427326-5151-9b02-b2cc-30930490fb83\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:55:02.902", + "timestampUnix": 1708934102902 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:02.902", + "timestampUnix": 1708934102902 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:02.902", + "timestampUnix": 1708934102902 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:02.902", + "timestampUnix": 1708934102902 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:55:02 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:02.902", + "timestampUnix": 1708934102902 + }, + { + "message": "header: content-length: 178", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:02.902", + "timestampUnix": 1708934102902 + }, + { + "message": "header: x-envoy-upstream-service-time: 1", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:02.902", + "timestampUnix": 1708934102902 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://details:9080 \"GET /details/0 HTTP/1.1\" 200 178", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:55:02.902", + "timestampUnix": 1708934102902 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): reviews:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:55:02.904", + "timestampUnix": 1708934102904 + }, + { + "message": "send: b'GET /reviews/0 HTTP/1.1\\r\\nHost: reviews:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: 8b00c887138f7273298ec2573088e1c4\\r\\nX-B3-SpanId: f69786051652c2bc\\r\\nX-B3-ParentSpanId: 298ec2573088e1c4\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: fa427326-5151-9b02-b2cc-30930490fb83\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:55:02.908", + "timestampUnix": 1708934102908 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:02.908", + "timestampUnix": 1708934102908 + }, + { + "message": "header: x-powered-by: Servlet/3.1", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:02.908", + "timestampUnix": 1708934102908 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:02.908", + "timestampUnix": 1708934102908 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:55:01 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:02.908", + "timestampUnix": 1708934102908 + }, + { + "message": "header: content-language: en-US", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:02.908", + "timestampUnix": 1708934102908 + }, + { + "message": "header: content-length: 437", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:02.908", + "timestampUnix": 1708934102908 + }, + { + "message": "header: x-envoy-upstream-service-time: 2", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:02.908", + "timestampUnix": 1708934102908 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:02.908", + "timestampUnix": 1708934102908 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://reviews:9080 \"GET /reviews/0 HTTP/1.1\" 200 437", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:55:02.908", + "timestampUnix": 1708934102908 + }, + { + "message": "INFO:werkzeug:::ffff:127.0.0.6 - - [26/Feb/2024 07:55:02] \"GET /productpage HTTP/1.1\" 200 -", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:02.909", + "timestampUnix": 1708934102909 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): details:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:55:03.906", + "timestampUnix": 1708934103906 + }, + { + "message": "send: b'GET /details/0 HTTP/1.1\\r\\nHost: details:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: fafde31dadb6560e5c8b6e71917eb368\\r\\nX-B3-SpanId: 75a1eeda2790f411\\r\\nX-B3-ParentSpanId: 5c8b6e71917eb368\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: a9daa48d-74e4-907a-bb78-818161293e2e\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:55:03.908", + "timestampUnix": 1708934103908 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:03.908", + "timestampUnix": 1708934103908 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:03.908", + "timestampUnix": 1708934103908 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:03.908", + "timestampUnix": 1708934103908 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:55:03 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:03.908", + "timestampUnix": 1708934103908 + }, + { + "message": "header: content-length: 178", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:03.908", + "timestampUnix": 1708934103908 + }, + { + "message": "header: x-envoy-upstream-service-time: 1", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:03.908", + "timestampUnix": 1708934103908 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://details:9080 \"GET /details/0 HTTP/1.1\" 200 178", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:55:03.908", + "timestampUnix": 1708934103908 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): reviews:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:55:03.910", + "timestampUnix": 1708934103910 + }, + { + "message": "send: b'GET /reviews/0 HTTP/1.1\\r\\nHost: reviews:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: fafde31dadb6560e5c8b6e71917eb368\\r\\nX-B3-SpanId: 75a1eeda2790f411\\r\\nX-B3-ParentSpanId: 5c8b6e71917eb368\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: a9daa48d-74e4-907a-bb78-818161293e2e\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:55:03.912", + "timestampUnix": 1708934103912 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:03.912", + "timestampUnix": 1708934103912 + }, + { + "message": "header: x-powered-by: Servlet/3.1", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:03.912", + "timestampUnix": 1708934103912 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:03.912", + "timestampUnix": 1708934103912 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:55:03 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:03.912", + "timestampUnix": 1708934103912 + }, + { + "message": "header: content-language: en-US", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:03.912", + "timestampUnix": 1708934103912 + }, + { + "message": "header: content-length: 358", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:03.912", + "timestampUnix": 1708934103912 + }, + { + "message": "header: x-envoy-upstream-service-time: 1", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:03.912", + "timestampUnix": 1708934103912 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:03.912", + "timestampUnix": 1708934103912 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://reviews:9080 \"GET /reviews/0 HTTP/1.1\" 200 358", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:55:03.912", + "timestampUnix": 1708934103912 + }, + { + "message": "INFO:werkzeug:::ffff:127.0.0.6 - - [26/Feb/2024 07:55:03] \"GET /productpage HTTP/1.1\" 200 -", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:03.913", + "timestampUnix": 1708934103913 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): details:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:55:04.907", + "timestampUnix": 1708934104907 + }, + { + "message": "send: b'GET /details/0 HTTP/1.1\\r\\nHost: details:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: d8659b58acc827c1e2d9612e844009f2\\r\\nX-B3-SpanId: 814e0902438d9967\\r\\nX-B3-ParentSpanId: e2d9612e844009f2\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: 35d5df2f-c147-9504-8332-4750ad90fc52\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:55:04.914", + "timestampUnix": 1708934104914 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:04.915", + "timestampUnix": 1708934104915 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:04.915", + "timestampUnix": 1708934104915 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:04.915", + "timestampUnix": 1708934104915 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:55:04 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:04.915", + "timestampUnix": 1708934104915 + }, + { + "message": "header: content-length: 178", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:04.915", + "timestampUnix": 1708934104915 + }, + { + "message": "header: x-envoy-upstream-service-time: 4", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:04.915", + "timestampUnix": 1708934104915 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://details:9080 \"GET /details/0 HTTP/1.1\" 200 178", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:55:04.915", + "timestampUnix": 1708934104915 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): reviews:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:55:04.920", + "timestampUnix": 1708934104920 + }, + { + "message": "send: b'GET /reviews/0 HTTP/1.1\\r\\nHost: reviews:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: d8659b58acc827c1e2d9612e844009f2\\r\\nX-B3-SpanId: 814e0902438d9967\\r\\nX-B3-ParentSpanId: e2d9612e844009f2\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: 35d5df2f-c147-9504-8332-4750ad90fc52\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:55:04.933", + "timestampUnix": 1708934104933 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:04.933", + "timestampUnix": 1708934104933 + }, + { + "message": "header: x-powered-by: Servlet/3.1", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:04.933", + "timestampUnix": 1708934104933 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:04.933", + "timestampUnix": 1708934104933 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:55:04 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:04.933", + "timestampUnix": 1708934104933 + }, + { + "message": "header: content-language: en-US", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:04.933", + "timestampUnix": 1708934104933 + }, + { + "message": "header: content-length: 437", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:04.933", + "timestampUnix": 1708934104933 + }, + { + "message": "header: x-envoy-upstream-service-time: 9", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:04.933", + "timestampUnix": 1708934104933 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:04.933", + "timestampUnix": 1708934104933 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://reviews:9080 \"GET /reviews/0 HTTP/1.1\" 200 437", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:55:04.933", + "timestampUnix": 1708934104933 + }, + { + "message": "INFO:werkzeug:::ffff:127.0.0.6 - - [26/Feb/2024 07:55:04] \"GET /productpage HTTP/1.1\" 200 -", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:04.937", + "timestampUnix": 1708934104937 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): details:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:55:05.900", + "timestampUnix": 1708934105900 + }, + { + "message": "send: b'GET /details/0 HTTP/1.1\\r\\nHost: details:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: 80eee6fbe7782501782db1010b9c5e2d\\r\\nX-B3-SpanId: a39b4ae162e3d9ad\\r\\nX-B3-ParentSpanId: 782db1010b9c5e2d\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: 8f13bb93-0a9e-9b44-8c18-5ea53b8bf3ce\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:55:05.903", + "timestampUnix": 1708934105903 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:05.903", + "timestampUnix": 1708934105903 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:05.903", + "timestampUnix": 1708934105903 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:05.903", + "timestampUnix": 1708934105903 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:55:05 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:05.903", + "timestampUnix": 1708934105903 + }, + { + "message": "header: content-length: 178", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:05.903", + "timestampUnix": 1708934105903 + }, + { + "message": "header: x-envoy-upstream-service-time: 1", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:05.903", + "timestampUnix": 1708934105903 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://details:9080 \"GET /details/0 HTTP/1.1\" 200 178", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:55:05.903", + "timestampUnix": 1708934105903 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): reviews:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:55:05.904", + "timestampUnix": 1708934105904 + }, + { + "message": "send: b'GET /reviews/0 HTTP/1.1\\r\\nHost: reviews:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: 80eee6fbe7782501782db1010b9c5e2d\\r\\nX-B3-SpanId: a39b4ae162e3d9ad\\r\\nX-B3-ParentSpanId: 782db1010b9c5e2d\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: 8f13bb93-0a9e-9b44-8c18-5ea53b8bf3ce\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:55:05.909", + "timestampUnix": 1708934105909 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:05.909", + "timestampUnix": 1708934105909 + }, + { + "message": "header: x-powered-by: Servlet/3.1", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:05.909", + "timestampUnix": 1708934105909 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:05.909", + "timestampUnix": 1708934105909 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:55:05 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:05.909", + "timestampUnix": 1708934105909 + }, + { + "message": "header: content-language: en-US", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:05.909", + "timestampUnix": 1708934105909 + }, + { + "message": "header: content-length: 442", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:05.909", + "timestampUnix": 1708934105909 + }, + { + "message": "header: x-envoy-upstream-service-time: 3", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:05.909", + "timestampUnix": 1708934105909 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:05.909", + "timestampUnix": 1708934105909 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://reviews:9080 \"GET /reviews/0 HTTP/1.1\" 200 442", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:55:05.909", + "timestampUnix": 1708934105909 + }, + { + "message": "INFO:werkzeug:::ffff:127.0.0.6 - - [26/Feb/2024 07:55:05] \"GET /productpage HTTP/1.1\" 200 -", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:05.910", + "timestampUnix": 1708934105910 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): details:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:55:06.903", + "timestampUnix": 1708934106903 + }, + { + "message": "send: b'GET /details/0 HTTP/1.1\\r\\nHost: details:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: 677ce522bbdfc8b8b7e8c0336a35109\\r\\nX-B3-SpanId: f36a5da030454c80\\r\\nX-B3-ParentSpanId: 8b7e8c0336a35109\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: 990f1f91-98fe-92eb-8986-a9bcc9c42a85\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:55:06.906", + "timestampUnix": 1708934106906 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:06.906", + "timestampUnix": 1708934106906 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:06.906", + "timestampUnix": 1708934106906 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:06.906", + "timestampUnix": 1708934106906 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:55:06 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:06.906", + "timestampUnix": 1708934106906 + }, + { + "message": "header: content-length: 178", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:06.906", + "timestampUnix": 1708934106906 + }, + { + "message": "header: x-envoy-upstream-service-time: 1", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:06.906", + "timestampUnix": 1708934106906 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://details:9080 \"GET /details/0 HTTP/1.1\" 200 178", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:55:06.906", + "timestampUnix": 1708934106906 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): reviews:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:55:06.908", + "timestampUnix": 1708934106908 + }, + { + "message": "send: b'GET /reviews/0 HTTP/1.1\\r\\nHost: reviews:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: 677ce522bbdfc8b8b7e8c0336a35109\\r\\nX-B3-SpanId: f36a5da030454c80\\r\\nX-B3-ParentSpanId: 8b7e8c0336a35109\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: 990f1f91-98fe-92eb-8986-a9bcc9c42a85\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:55:06.911", + "timestampUnix": 1708934106911 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:06.911", + "timestampUnix": 1708934106911 + }, + { + "message": "header: x-powered-by: Servlet/3.1", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:06.911", + "timestampUnix": 1708934106911 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:06.911", + "timestampUnix": 1708934106911 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:55:06 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:06.911", + "timestampUnix": 1708934106911 + }, + { + "message": "header: content-language: en-US", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:06.911", + "timestampUnix": 1708934106911 + }, + { + "message": "header: content-length: 358", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:06.911", + "timestampUnix": 1708934106911 + }, + { + "message": "header: x-envoy-upstream-service-time: 1", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:06.911", + "timestampUnix": 1708934106911 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:06.911", + "timestampUnix": 1708934106911 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://reviews:9080 \"GET /reviews/0 HTTP/1.1\" 200 358", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:55:06.911", + "timestampUnix": 1708934106911 + }, + { + "message": "INFO:werkzeug:::ffff:127.0.0.6 - - [26/Feb/2024 07:55:06] \"GET /productpage HTTP/1.1\" 200 -", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:06.912", + "timestampUnix": 1708934106912 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): details:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:55:07.902", + "timestampUnix": 1708934107902 + }, + { + "message": "send: b'GET /details/0 HTTP/1.1\\r\\nHost: details:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: b61ea142139e33c159ecafcade305cc7\\r\\nX-B3-SpanId: d45dcf0ce1b3f2d2\\r\\nX-B3-ParentSpanId: 59ecafcade305cc7\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: 055f7072-fafd-98c7-897e-b9d3ef96d178\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:55:07.905", + "timestampUnix": 1708934107905 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:07.905", + "timestampUnix": 1708934107905 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:07.905", + "timestampUnix": 1708934107905 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:07.905", + "timestampUnix": 1708934107905 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:55:07 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:07.905", + "timestampUnix": 1708934107905 + }, + { + "message": "header: content-length: 178", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:07.905", + "timestampUnix": 1708934107905 + }, + { + "message": "header: x-envoy-upstream-service-time: 1", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:07.905", + "timestampUnix": 1708934107905 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://details:9080 \"GET /details/0 HTTP/1.1\" 200 178", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:55:07.905", + "timestampUnix": 1708934107905 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): reviews:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:55:07.907", + "timestampUnix": 1708934107907 + }, + { + "message": "send: b'GET /reviews/0 HTTP/1.1\\r\\nHost: reviews:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: b61ea142139e33c159ecafcade305cc7\\r\\nX-B3-SpanId: d45dcf0ce1b3f2d2\\r\\nX-B3-ParentSpanId: 59ecafcade305cc7\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: 055f7072-fafd-98c7-897e-b9d3ef96d178\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:55:07.911", + "timestampUnix": 1708934107911 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:07.911", + "timestampUnix": 1708934107911 + }, + { + "message": "header: x-powered-by: Servlet/3.1", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:07.911", + "timestampUnix": 1708934107911 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:07.911", + "timestampUnix": 1708934107911 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:55:07 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:07.911", + "timestampUnix": 1708934107911 + }, + { + "message": "header: content-language: en-US", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:07.911", + "timestampUnix": 1708934107911 + }, + { + "message": "header: content-length: 437", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:07.911", + "timestampUnix": 1708934107911 + }, + { + "message": "header: x-envoy-upstream-service-time: 2", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:07.911", + "timestampUnix": 1708934107911 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:07.911", + "timestampUnix": 1708934107911 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://reviews:9080 \"GET /reviews/0 HTTP/1.1\" 200 437", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:55:07.911", + "timestampUnix": 1708934107911 + }, + { + "message": "INFO:werkzeug:::ffff:127.0.0.6 - - [26/Feb/2024 07:55:07] \"GET /productpage HTTP/1.1\" 200 -", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:07.913", + "timestampUnix": 1708934107913 + }, + { + "message": "INFO:werkzeug:::ffff:127.0.0.1 - - [26/Feb/2024 07:55:07] \"GET /metrics HTTP/1.1\" 200 -", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:07.992", + "timestampUnix": 1708934107992 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): details:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:55:08.900", + "timestampUnix": 1708934108900 + }, + { + "message": "send: b'GET /details/0 HTTP/1.1\\r\\nHost: details:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: 1b0419b94630d3a72e4173d0e2a973a7\\r\\nX-B3-SpanId: 51de0e1b5007c110\\r\\nX-B3-ParentSpanId: 2e4173d0e2a973a7\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: fb6a93f5-d683-9d43-a045-afd531a02295\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:55:08.903", + "timestampUnix": 1708934108903 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:08.903", + "timestampUnix": 1708934108903 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:08.903", + "timestampUnix": 1708934108903 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:08.903", + "timestampUnix": 1708934108903 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:55:08 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:08.903", + "timestampUnix": 1708934108903 + }, + { + "message": "header: content-length: 178", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:08.903", + "timestampUnix": 1708934108903 + }, + { + "message": "header: x-envoy-upstream-service-time: 1", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:08.903", + "timestampUnix": 1708934108903 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://details:9080 \"GET /details/0 HTTP/1.1\" 200 178", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:55:08.903", + "timestampUnix": 1708934108903 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): reviews:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:55:08.904", + "timestampUnix": 1708934108904 + }, + { + "message": "send: b'GET /reviews/0 HTTP/1.1\\r\\nHost: reviews:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: 1b0419b94630d3a72e4173d0e2a973a7\\r\\nX-B3-SpanId: 51de0e1b5007c110\\r\\nX-B3-ParentSpanId: 2e4173d0e2a973a7\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: fb6a93f5-d683-9d43-a045-afd531a02295\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:55:08.906", + "timestampUnix": 1708934108906 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:08.906", + "timestampUnix": 1708934108906 + }, + { + "message": "header: x-powered-by: Servlet/3.1", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:08.906", + "timestampUnix": 1708934108906 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:08.906", + "timestampUnix": 1708934108906 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:55:08 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:08.906", + "timestampUnix": 1708934108906 + }, + { + "message": "header: content-language: en-US", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:08.906", + "timestampUnix": 1708934108906 + }, + { + "message": "header: content-length: 358", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:08.906", + "timestampUnix": 1708934108906 + }, + { + "message": "header: x-envoy-upstream-service-time: 0", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:08.906", + "timestampUnix": 1708934108906 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:08.906", + "timestampUnix": 1708934108906 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://reviews:9080 \"GET /reviews/0 HTTP/1.1\" 200 358", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:55:08.906", + "timestampUnix": 1708934108906 + }, + { + "message": "INFO:werkzeug:::ffff:127.0.0.6 - - [26/Feb/2024 07:55:08] \"GET /productpage HTTP/1.1\" 200 -", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:08.907", + "timestampUnix": 1708934108907 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): details:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:55:09.906", + "timestampUnix": 1708934109906 + }, + { + "message": "send: b'GET /details/0 HTTP/1.1\\r\\nHost: details:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: da1597c05b04a0930d6e1d9615bef8ed\\r\\nX-B3-SpanId: e5ae76441eaf3e69\\r\\nX-B3-ParentSpanId: 0d6e1d9615bef8ed\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: d979297a-f217-917f-a7c1-4c179789a9f3\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:55:09.913", + "timestampUnix": 1708934109913 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:09.913", + "timestampUnix": 1708934109913 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:09.913", + "timestampUnix": 1708934109913 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:09.913", + "timestampUnix": 1708934109913 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:55:09 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:09.913", + "timestampUnix": 1708934109913 + }, + { + "message": "header: content-length: 178", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:09.913", + "timestampUnix": 1708934109913 + }, + { + "message": "header: x-envoy-upstream-service-time: 3", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:09.913", + "timestampUnix": 1708934109913 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://details:9080 \"GET /details/0 HTTP/1.1\" 200 178", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:55:09.913", + "timestampUnix": 1708934109913 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): reviews:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:55:09.919", + "timestampUnix": 1708934109919 + }, + { + "message": "send: b'GET /reviews/0 HTTP/1.1\\r\\nHost: reviews:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: da1597c05b04a0930d6e1d9615bef8ed\\r\\nX-B3-SpanId: e5ae76441eaf3e69\\r\\nX-B3-ParentSpanId: 0d6e1d9615bef8ed\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: d979297a-f217-917f-a7c1-4c179789a9f3\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:55:09.931", + "timestampUnix": 1708934109931 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:09.931", + "timestampUnix": 1708934109931 + }, + { + "message": "header: x-powered-by: Servlet/3.1", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:09.931", + "timestampUnix": 1708934109931 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:09.931", + "timestampUnix": 1708934109931 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:55:09 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:09.931", + "timestampUnix": 1708934109931 + }, + { + "message": "header: content-language: en-US", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:09.931", + "timestampUnix": 1708934109931 + }, + { + "message": "header: content-length: 442", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:09.931", + "timestampUnix": 1708934109931 + }, + { + "message": "header: x-envoy-upstream-service-time: 8", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:09.931", + "timestampUnix": 1708934109931 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:09.931", + "timestampUnix": 1708934109931 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://reviews:9080 \"GET /reviews/0 HTTP/1.1\" 200 442", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:55:09.931", + "timestampUnix": 1708934109931 + }, + { + "message": "INFO:werkzeug:::ffff:127.0.0.6 - - [26/Feb/2024 07:55:09] \"GET /productpage HTTP/1.1\" 200 -", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:09.934", + "timestampUnix": 1708934109934 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): details:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:55:10.907", + "timestampUnix": 1708934110907 + }, + { + "message": "send: b'GET /details/0 HTTP/1.1\\r\\nHost: details:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: a28a8182d03fd6f7f082449914cf2eb8\\r\\nX-B3-SpanId: c2e9e6e7692833c4\\r\\nX-B3-ParentSpanId: f082449914cf2eb8\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: d60b2a5d-5139-962a-bf42-6fae04128ff3\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:55:10.916", + "timestampUnix": 1708934110916 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:10.916", + "timestampUnix": 1708934110916 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:10.916", + "timestampUnix": 1708934110916 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:10.916", + "timestampUnix": 1708934110916 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:55:10 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:10.916", + "timestampUnix": 1708934110916 + }, + { + "message": "header: content-length: 178", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:10.917", + "timestampUnix": 1708934110917 + }, + { + "message": "header: x-envoy-upstream-service-time: 3", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:10.917", + "timestampUnix": 1708934110917 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://details:9080 \"GET /details/0 HTTP/1.1\" 200 178", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:55:10.917", + "timestampUnix": 1708934110917 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): reviews:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:55:10.919", + "timestampUnix": 1708934110919 + }, + { + "message": "send: b'GET /reviews/0 HTTP/1.1\\r\\nHost: reviews:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: a28a8182d03fd6f7f082449914cf2eb8\\r\\nX-B3-SpanId: c2e9e6e7692833c4\\r\\nX-B3-ParentSpanId: f082449914cf2eb8\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: d60b2a5d-5139-962a-bf42-6fae04128ff3\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:55:10.924", + "timestampUnix": 1708934110924 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:10.924", + "timestampUnix": 1708934110924 + }, + { + "message": "header: x-powered-by: Servlet/3.1", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:10.924", + "timestampUnix": 1708934110924 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:10.924", + "timestampUnix": 1708934110924 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:55:10 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:10.924", + "timestampUnix": 1708934110924 + }, + { + "message": "header: content-language: en-US", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:10.924", + "timestampUnix": 1708934110924 + }, + { + "message": "header: content-length: 437", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:10.924", + "timestampUnix": 1708934110924 + }, + { + "message": "header: x-envoy-upstream-service-time: 2", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:10.924", + "timestampUnix": 1708934110924 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:10.924", + "timestampUnix": 1708934110924 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://reviews:9080 \"GET /reviews/0 HTTP/1.1\" 200 437", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:55:10.924", + "timestampUnix": 1708934110924 + }, + { + "message": "INFO:werkzeug:::ffff:127.0.0.6 - - [26/Feb/2024 07:55:10] \"GET /productpage HTTP/1.1\" 200 -", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:10.925", + "timestampUnix": 1708934110925 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): details:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:55:11.900", + "timestampUnix": 1708934111900 + }, + { + "message": "send: b'GET /details/0 HTTP/1.1\\r\\nHost: details:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: d5c020bb496b178b41c5b4ef5bc6ecb\\r\\nX-B3-SpanId: c02393929fc169d6\\r\\nX-B3-ParentSpanId: b41c5b4ef5bc6ecb\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: ef443d76-2e1c-92a8-8c4a-ed91d8f70bb7\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:55:11.902", + "timestampUnix": 1708934111902 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:11.902", + "timestampUnix": 1708934111902 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:11.902", + "timestampUnix": 1708934111902 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:11.902", + "timestampUnix": 1708934111902 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:55:11 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:11.902", + "timestampUnix": 1708934111902 + }, + { + "message": "header: content-length: 178", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:11.902", + "timestampUnix": 1708934111902 + }, + { + "message": "header: x-envoy-upstream-service-time: 1", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:11.902", + "timestampUnix": 1708934111902 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://details:9080 \"GET /details/0 HTTP/1.1\" 200 178", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:55:11.902", + "timestampUnix": 1708934111902 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): reviews:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:55:11.903", + "timestampUnix": 1708934111903 + }, + { + "message": "send: b'GET /reviews/0 HTTP/1.1\\r\\nHost: reviews:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: d5c020bb496b178b41c5b4ef5bc6ecb\\r\\nX-B3-SpanId: c02393929fc169d6\\r\\nX-B3-ParentSpanId: b41c5b4ef5bc6ecb\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: ef443d76-2e1c-92a8-8c4a-ed91d8f70bb7\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:55:11.905", + "timestampUnix": 1708934111905 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:11.905", + "timestampUnix": 1708934111905 + }, + { + "message": "header: x-powered-by: Servlet/3.1", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:11.905", + "timestampUnix": 1708934111905 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:11.905", + "timestampUnix": 1708934111905 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:55:11 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:11.905", + "timestampUnix": 1708934111905 + }, + { + "message": "header: content-language: en-US", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:11.905", + "timestampUnix": 1708934111905 + }, + { + "message": "header: content-length: 358", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:11.905", + "timestampUnix": 1708934111905 + }, + { + "message": "header: x-envoy-upstream-service-time: 0", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:11.905", + "timestampUnix": 1708934111905 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:11.905", + "timestampUnix": 1708934111905 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://reviews:9080 \"GET /reviews/0 HTTP/1.1\" 200 358", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:55:11.905", + "timestampUnix": 1708934111905 + }, + { + "message": "INFO:werkzeug:::ffff:127.0.0.6 - - [26/Feb/2024 07:55:11] \"GET /productpage HTTP/1.1\" 200 -", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:11.906", + "timestampUnix": 1708934111906 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): details:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:55:12.907", + "timestampUnix": 1708934112907 + }, + { + "message": "send: b'GET /details/0 HTTP/1.1\\r\\nHost: details:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: cd533df551511ab20a2b2366f1f02b61\\r\\nX-B3-SpanId: 2daf60181ad59755\\r\\nX-B3-ParentSpanId: 0a2b2366f1f02b61\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: 7c44805b-94de-95f1-ae3c-691a8d18ce84\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:55:12.911", + "timestampUnix": 1708934112911 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:12.911", + "timestampUnix": 1708934112911 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:12.911", + "timestampUnix": 1708934112911 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:12.911", + "timestampUnix": 1708934112911 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:55:12 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:12.911", + "timestampUnix": 1708934112911 + }, + { + "message": "header: content-length: 178", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:12.911", + "timestampUnix": 1708934112911 + }, + { + "message": "header: x-envoy-upstream-service-time: 1", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:12.911", + "timestampUnix": 1708934112911 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://details:9080 \"GET /details/0 HTTP/1.1\" 200 178", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:55:12.911", + "timestampUnix": 1708934112911 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): reviews:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:55:12.913", + "timestampUnix": 1708934112913 + }, + { + "message": "send: b'GET /reviews/0 HTTP/1.1\\r\\nHost: reviews:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: cd533df551511ab20a2b2366f1f02b61\\r\\nX-B3-SpanId: 2daf60181ad59755\\r\\nX-B3-ParentSpanId: 0a2b2366f1f02b61\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: 7c44805b-94de-95f1-ae3c-691a8d18ce84\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:55:12.915", + "timestampUnix": 1708934112915 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:12.915", + "timestampUnix": 1708934112915 + }, + { + "message": "header: x-powered-by: Servlet/3.1", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:12.915", + "timestampUnix": 1708934112915 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:12.915", + "timestampUnix": 1708934112915 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:55:12 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:12.915", + "timestampUnix": 1708934112915 + }, + { + "message": "header: content-language: en-US", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:12.915", + "timestampUnix": 1708934112915 + }, + { + "message": "header: content-length: 358", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:12.915", + "timestampUnix": 1708934112915 + }, + { + "message": "header: x-envoy-upstream-service-time: 0", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:12.915", + "timestampUnix": 1708934112915 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:12.915", + "timestampUnix": 1708934112915 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://reviews:9080 \"GET /reviews/0 HTTP/1.1\" 200 358", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:55:12.915", + "timestampUnix": 1708934112915 + }, + { + "message": "INFO:werkzeug:::ffff:127.0.0.6 - - [26/Feb/2024 07:55:12] \"GET /productpage HTTP/1.1\" 200 -", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:12.916", + "timestampUnix": 1708934112916 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): details:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:55:13.901", + "timestampUnix": 1708934113901 + }, + { + "message": "send: b'GET /details/0 HTTP/1.1\\r\\nHost: details:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: f68543bdb220c37740ef1fa0e36e94ee\\r\\nX-B3-SpanId: 1189d30c480edf25\\r\\nX-B3-ParentSpanId: 40ef1fa0e36e94ee\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: 712bd469-dfe8-9bd2-b790-32e18c0041c1\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:55:13.903", + "timestampUnix": 1708934113903 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:13.903", + "timestampUnix": 1708934113903 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:13.903", + "timestampUnix": 1708934113903 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:13.903", + "timestampUnix": 1708934113903 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:55:13 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:13.903", + "timestampUnix": 1708934113903 + }, + { + "message": "header: content-length: 178", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:13.903", + "timestampUnix": 1708934113903 + }, + { + "message": "header: x-envoy-upstream-service-time: 1", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:13.903", + "timestampUnix": 1708934113903 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://details:9080 \"GET /details/0 HTTP/1.1\" 200 178", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:55:13.903", + "timestampUnix": 1708934113903 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): reviews:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:55:13.905", + "timestampUnix": 1708934113905 + }, + { + "message": "send: b'GET /reviews/0 HTTP/1.1\\r\\nHost: reviews:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: f68543bdb220c37740ef1fa0e36e94ee\\r\\nX-B3-SpanId: 1189d30c480edf25\\r\\nX-B3-ParentSpanId: 40ef1fa0e36e94ee\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: 712bd469-dfe8-9bd2-b790-32e18c0041c1\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:55:13.909", + "timestampUnix": 1708934113909 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:13.909", + "timestampUnix": 1708934113909 + }, + { + "message": "header: x-powered-by: Servlet/3.1", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:13.909", + "timestampUnix": 1708934113909 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:13.909", + "timestampUnix": 1708934113909 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:55:13 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:13.909", + "timestampUnix": 1708934113909 + }, + { + "message": "header: content-language: en-US", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:13.909", + "timestampUnix": 1708934113909 + }, + { + "message": "header: content-length: 437", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:13.909", + "timestampUnix": 1708934113909 + }, + { + "message": "header: x-envoy-upstream-service-time: 3", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:13.909", + "timestampUnix": 1708934113909 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:13.909", + "timestampUnix": 1708934113909 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://reviews:9080 \"GET /reviews/0 HTTP/1.1\" 200 437", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:55:13.909", + "timestampUnix": 1708934113909 + }, + { + "message": "INFO:werkzeug:::ffff:127.0.0.6 - - [26/Feb/2024 07:55:13] \"GET /productpage HTTP/1.1\" 200 -", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:13.910", + "timestampUnix": 1708934113910 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): details:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:55:14.907", + "timestampUnix": 1708934114907 + }, + { + "message": "send: b'GET /details/0 HTTP/1.1\\r\\nHost: details:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: 874671ebec7a1ea14a7c5f1ebde87029\\r\\nX-B3-SpanId: 5b396c03b4308d69\\r\\nX-B3-ParentSpanId: 4a7c5f1ebde87029\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: f5e16ce2-00fd-9a8d-bb75-43bc7e978d9a\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:55:14.914", + "timestampUnix": 1708934114914 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:14.914", + "timestampUnix": 1708934114914 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:14.914", + "timestampUnix": 1708934114914 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:14.914", + "timestampUnix": 1708934114914 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:55:14 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:14.914", + "timestampUnix": 1708934114914 + }, + { + "message": "header: content-length: 178", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:14.914", + "timestampUnix": 1708934114914 + }, + { + "message": "header: x-envoy-upstream-service-time: 3", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:14.914", + "timestampUnix": 1708934114914 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://details:9080 \"GET /details/0 HTTP/1.1\" 200 178", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:55:14.914", + "timestampUnix": 1708934114914 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): reviews:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:55:14.920", + "timestampUnix": 1708934114920 + }, + { + "message": "send: b'GET /reviews/0 HTTP/1.1\\r\\nHost: reviews:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: 874671ebec7a1ea14a7c5f1ebde87029\\r\\nX-B3-SpanId: 5b396c03b4308d69\\r\\nX-B3-ParentSpanId: 4a7c5f1ebde87029\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: f5e16ce2-00fd-9a8d-bb75-43bc7e978d9a\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:55:14.933", + "timestampUnix": 1708934114933 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:14.933", + "timestampUnix": 1708934114933 + }, + { + "message": "header: x-powered-by: Servlet/3.1", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:14.933", + "timestampUnix": 1708934114933 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:14.933", + "timestampUnix": 1708934114933 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:55:14 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:14.933", + "timestampUnix": 1708934114933 + }, + { + "message": "header: content-language: en-US", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:14.933", + "timestampUnix": 1708934114933 + }, + { + "message": "header: content-length: 442", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:14.933", + "timestampUnix": 1708934114933 + }, + { + "message": "header: x-envoy-upstream-service-time: 8", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:14.933", + "timestampUnix": 1708934114933 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:14.933", + "timestampUnix": 1708934114933 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://reviews:9080 \"GET /reviews/0 HTTP/1.1\" 200 442", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:55:14.933", + "timestampUnix": 1708934114933 + }, + { + "message": "INFO:werkzeug:::ffff:127.0.0.6 - - [26/Feb/2024 07:55:14] \"GET /productpage HTTP/1.1\" 200 -", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:14.936", + "timestampUnix": 1708934114936 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): details:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:55:15.902", + "timestampUnix": 1708934115902 + }, + { + "message": "send: b'GET /details/0 HTTP/1.1\\r\\nHost: details:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: 2ee1522a044dec7f84276b5ecf8db5cb\\r\\nX-B3-SpanId: 2495e832674777df\\r\\nX-B3-ParentSpanId: 84276b5ecf8db5cb\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: eb8dcfaa-263c-9cac-ab76-03a5e35d05cb\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:55:15.906", + "timestampUnix": 1708934115906 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:15.906", + "timestampUnix": 1708934115906 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:15.906", + "timestampUnix": 1708934115906 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:15.906", + "timestampUnix": 1708934115906 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:55:15 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:15.906", + "timestampUnix": 1708934115906 + }, + { + "message": "header: content-length: 178", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:15.906", + "timestampUnix": 1708934115906 + }, + { + "message": "header: x-envoy-upstream-service-time: 2", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:15.906", + "timestampUnix": 1708934115906 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://details:9080 \"GET /details/0 HTTP/1.1\" 200 178", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:55:15.906", + "timestampUnix": 1708934115906 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): reviews:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:55:15.911", + "timestampUnix": 1708934115911 + }, + { + "message": "send: b'GET /reviews/0 HTTP/1.1\\r\\nHost: reviews:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: 2ee1522a044dec7f84276b5ecf8db5cb\\r\\nX-B3-SpanId: 2495e832674777df\\r\\nX-B3-ParentSpanId: 84276b5ecf8db5cb\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: eb8dcfaa-263c-9cac-ab76-03a5e35d05cb\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:55:15.914", + "timestampUnix": 1708934115914 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:15.914", + "timestampUnix": 1708934115914 + }, + { + "message": "header: x-powered-by: Servlet/3.1", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:15.914", + "timestampUnix": 1708934115914 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:15.914", + "timestampUnix": 1708934115914 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:55:15 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:15.914", + "timestampUnix": 1708934115914 + }, + { + "message": "header: content-language: en-US", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:15.914", + "timestampUnix": 1708934115914 + }, + { + "message": "header: content-length: 358", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:15.914", + "timestampUnix": 1708934115914 + }, + { + "message": "header: x-envoy-upstream-service-time: 1", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:15.914", + "timestampUnix": 1708934115914 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:15.914", + "timestampUnix": 1708934115914 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://reviews:9080 \"GET /reviews/0 HTTP/1.1\" 200 358", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:55:15.914", + "timestampUnix": 1708934115914 + }, + { + "message": "INFO:werkzeug:::ffff:127.0.0.6 - - [26/Feb/2024 07:55:15] \"GET /productpage HTTP/1.1\" 200 -", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:15.915", + "timestampUnix": 1708934115915 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): details:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:55:16.901", + "timestampUnix": 1708934116901 + }, + { + "message": "send: b'GET /details/0 HTTP/1.1\\r\\nHost: details:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: 53d842512a3ce59f2b862041acbc1561\\r\\nX-B3-SpanId: 39cf892154a2e438\\r\\nX-B3-ParentSpanId: 2b862041acbc1561\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: 51ce602e-4d3d-957b-b1e9-b1863ce7989b\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:55:16.903", + "timestampUnix": 1708934116903 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:16.903", + "timestampUnix": 1708934116903 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:16.903", + "timestampUnix": 1708934116903 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:16.903", + "timestampUnix": 1708934116903 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:55:16 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:16.903", + "timestampUnix": 1708934116903 + }, + { + "message": "header: content-length: 178", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:16.903", + "timestampUnix": 1708934116903 + }, + { + "message": "header: x-envoy-upstream-service-time: 1", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:16.903", + "timestampUnix": 1708934116903 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://details:9080 \"GET /details/0 HTTP/1.1\" 200 178", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:55:16.903", + "timestampUnix": 1708934116903 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): reviews:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:55:16.905", + "timestampUnix": 1708934116905 + }, + { + "message": "send: b'GET /reviews/0 HTTP/1.1\\r\\nHost: reviews:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: 53d842512a3ce59f2b862041acbc1561\\r\\nX-B3-SpanId: 39cf892154a2e438\\r\\nX-B3-ParentSpanId: 2b862041acbc1561\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: 51ce602e-4d3d-957b-b1e9-b1863ce7989b\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:55:16.906", + "timestampUnix": 1708934116906 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:16.907", + "timestampUnix": 1708934116907 + }, + { + "message": "header: x-powered-by: Servlet/3.1", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:16.907", + "timestampUnix": 1708934116907 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:16.907", + "timestampUnix": 1708934116907 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:55:15 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:16.907", + "timestampUnix": 1708934116907 + }, + { + "message": "header: content-language: en-US", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:16.907", + "timestampUnix": 1708934116907 + }, + { + "message": "header: content-length: 358", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:16.907", + "timestampUnix": 1708934116907 + }, + { + "message": "header: x-envoy-upstream-service-time: 0", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:16.907", + "timestampUnix": 1708934116907 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:16.907", + "timestampUnix": 1708934116907 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://reviews:9080 \"GET /reviews/0 HTTP/1.1\" 200 358", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:55:16.907", + "timestampUnix": 1708934116907 + }, + { + "message": "INFO:werkzeug:::ffff:127.0.0.6 - - [26/Feb/2024 07:55:16] \"GET /productpage HTTP/1.1\" 200 -", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:16.907", + "timestampUnix": 1708934116907 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): details:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:55:17.903", + "timestampUnix": 1708934117903 + }, + { + "message": "send: b'GET /details/0 HTTP/1.1\\r\\nHost: details:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: 9d940866a02b7aaae0b190b749aab3dd\\r\\nX-B3-SpanId: 83ac7435bc35bbfe\\r\\nX-B3-ParentSpanId: e0b190b749aab3dd\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: 424e9ba6-8d40-99c4-a42d-91f05ea4fe2c\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:55:17.906", + "timestampUnix": 1708934117906 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:17.906", + "timestampUnix": 1708934117906 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:17.906", + "timestampUnix": 1708934117906 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:17.906", + "timestampUnix": 1708934117906 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:55:17 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:17.906", + "timestampUnix": 1708934117906 + }, + { + "message": "header: content-length: 178", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:17.906", + "timestampUnix": 1708934117906 + }, + { + "message": "header: x-envoy-upstream-service-time: 1", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:17.906", + "timestampUnix": 1708934117906 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://details:9080 \"GET /details/0 HTTP/1.1\" 200 178", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:55:17.906", + "timestampUnix": 1708934117906 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): reviews:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:55:17.908", + "timestampUnix": 1708934117908 + }, + { + "message": "send: b'GET /reviews/0 HTTP/1.1\\r\\nHost: reviews:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: 9d940866a02b7aaae0b190b749aab3dd\\r\\nX-B3-SpanId: 83ac7435bc35bbfe\\r\\nX-B3-ParentSpanId: e0b190b749aab3dd\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: 424e9ba6-8d40-99c4-a42d-91f05ea4fe2c\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:55:17.912", + "timestampUnix": 1708934117912 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:17.912", + "timestampUnix": 1708934117912 + }, + { + "message": "header: x-powered-by: Servlet/3.1", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:17.912", + "timestampUnix": 1708934117912 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:17.912", + "timestampUnix": 1708934117912 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:55:17 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:17.912", + "timestampUnix": 1708934117912 + }, + { + "message": "header: content-language: en-US", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:17.912", + "timestampUnix": 1708934117912 + }, + { + "message": "header: content-length: 437", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:17.912", + "timestampUnix": 1708934117912 + }, + { + "message": "header: x-envoy-upstream-service-time: 3", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:17.912", + "timestampUnix": 1708934117912 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:17.912", + "timestampUnix": 1708934117912 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://reviews:9080 \"GET /reviews/0 HTTP/1.1\" 200 437", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:55:17.912", + "timestampUnix": 1708934117912 + }, + { + "message": "INFO:werkzeug:::ffff:127.0.0.6 - - [26/Feb/2024 07:55:17] \"GET /productpage HTTP/1.1\" 200 -", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:17.913", + "timestampUnix": 1708934117913 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): details:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:55:18.906", + "timestampUnix": 1708934118906 + }, + { + "message": "send: b'GET /details/0 HTTP/1.1\\r\\nHost: details:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: 85f276006f2fa4fc3b969cd970b7b9a3\\r\\nX-B3-SpanId: a94d571790c3d966\\r\\nX-B3-ParentSpanId: 3b969cd970b7b9a3\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: 9e790545-f790-9142-bb81-afce783cfdf1\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:55:18.909", + "timestampUnix": 1708934118909 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:18.909", + "timestampUnix": 1708934118909 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:18.909", + "timestampUnix": 1708934118909 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:18.909", + "timestampUnix": 1708934118909 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:55:18 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:18.909", + "timestampUnix": 1708934118909 + }, + { + "message": "header: content-length: 178", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:18.909", + "timestampUnix": 1708934118909 + }, + { + "message": "header: x-envoy-upstream-service-time: 1", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:18.909", + "timestampUnix": 1708934118909 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://details:9080 \"GET /details/0 HTTP/1.1\" 200 178", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:55:18.909", + "timestampUnix": 1708934118909 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): reviews:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:55:18.911", + "timestampUnix": 1708934118911 + }, + { + "message": "send: b'GET /reviews/0 HTTP/1.1\\r\\nHost: reviews:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: 85f276006f2fa4fc3b969cd970b7b9a3\\r\\nX-B3-SpanId: a94d571790c3d966\\r\\nX-B3-ParentSpanId: 3b969cd970b7b9a3\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: 9e790545-f790-9142-bb81-afce783cfdf1\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:55:18.913", + "timestampUnix": 1708934118913 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:18.913", + "timestampUnix": 1708934118913 + }, + { + "message": "header: x-powered-by: Servlet/3.1", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:18.913", + "timestampUnix": 1708934118913 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:18.913", + "timestampUnix": 1708934118913 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:55:18 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:18.913", + "timestampUnix": 1708934118913 + }, + { + "message": "header: content-language: en-US", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:18.913", + "timestampUnix": 1708934118913 + }, + { + "message": "header: content-length: 358", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:18.913", + "timestampUnix": 1708934118913 + }, + { + "message": "header: x-envoy-upstream-service-time: 0", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:18.913", + "timestampUnix": 1708934118913 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:18.913", + "timestampUnix": 1708934118913 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://reviews:9080 \"GET /reviews/0 HTTP/1.1\" 200 358", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:55:18.913", + "timestampUnix": 1708934118913 + }, + { + "message": "INFO:werkzeug:::ffff:127.0.0.6 - - [26/Feb/2024 07:55:18] \"GET /productpage HTTP/1.1\" 200 -", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:18.914", + "timestampUnix": 1708934118914 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): details:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:55:19.907", + "timestampUnix": 1708934119907 + }, + { + "message": "send: b'GET /details/0 HTTP/1.1\\r\\nHost: details:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: 394291731e892b6c400cf6fa215a5144\\r\\nX-B3-SpanId: 83d7def7eae7605f\\r\\nX-B3-ParentSpanId: 400cf6fa215a5144\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: cd853d23-1c7d-99b5-a954-b1ad27bf10a5\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:55:19.914", + "timestampUnix": 1708934119914 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:19.914", + "timestampUnix": 1708934119914 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:19.914", + "timestampUnix": 1708934119914 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:19.914", + "timestampUnix": 1708934119914 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:55:19 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:19.914", + "timestampUnix": 1708934119914 + }, + { + "message": "header: content-length: 178", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:19.914", + "timestampUnix": 1708934119914 + }, + { + "message": "header: x-envoy-upstream-service-time: 3", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:19.914", + "timestampUnix": 1708934119914 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://details:9080 \"GET /details/0 HTTP/1.1\" 200 178", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:55:19.914", + "timestampUnix": 1708934119914 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): reviews:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:55:19.920", + "timestampUnix": 1708934119920 + }, + { + "message": "send: b'GET /reviews/0 HTTP/1.1\\r\\nHost: reviews:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: 394291731e892b6c400cf6fa215a5144\\r\\nX-B3-SpanId: 83d7def7eae7605f\\r\\nX-B3-ParentSpanId: 400cf6fa215a5144\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: cd853d23-1c7d-99b5-a954-b1ad27bf10a5\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:55:19.931", + "timestampUnix": 1708934119931 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:19.932", + "timestampUnix": 1708934119932 + }, + { + "message": "header: x-powered-by: Servlet/3.1", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:19.932", + "timestampUnix": 1708934119932 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:19.932", + "timestampUnix": 1708934119932 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:55:19 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:19.932", + "timestampUnix": 1708934119932 + }, + { + "message": "header: content-language: en-US", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:19.932", + "timestampUnix": 1708934119932 + }, + { + "message": "header: content-length: 437", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:19.932", + "timestampUnix": 1708934119932 + }, + { + "message": "header: x-envoy-upstream-service-time: 8", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:19.932", + "timestampUnix": 1708934119932 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:19.932", + "timestampUnix": 1708934119932 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://reviews:9080 \"GET /reviews/0 HTTP/1.1\" 200 437", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:55:19.932", + "timestampUnix": 1708934119932 + }, + { + "message": "INFO:werkzeug:::ffff:127.0.0.6 - - [26/Feb/2024 07:55:19] \"GET /productpage HTTP/1.1\" 200 -", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:19.935", + "timestampUnix": 1708934119935 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): details:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:55:20.907", + "timestampUnix": 1708934120907 + }, + { + "message": "send: b'GET /details/0 HTTP/1.1\\r\\nHost: details:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: e973f6e762dc4f7d1579d1e7dbf56c03\\r\\nX-B3-SpanId: 62f1f7a1bb12d687\\r\\nX-B3-ParentSpanId: 1579d1e7dbf56c03\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: adba79fc-9ed7-9f59-9e43-44eccff759a6\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:55:20.916", + "timestampUnix": 1708934120916 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:20.916", + "timestampUnix": 1708934120916 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:20.916", + "timestampUnix": 1708934120916 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:20.916", + "timestampUnix": 1708934120916 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:55:20 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:20.916", + "timestampUnix": 1708934120916 + }, + { + "message": "header: content-length: 178", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:20.916", + "timestampUnix": 1708934120916 + }, + { + "message": "header: x-envoy-upstream-service-time: 5", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:20.916", + "timestampUnix": 1708934120916 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://details:9080 \"GET /details/0 HTTP/1.1\" 200 178", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:55:20.916", + "timestampUnix": 1708934120916 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): reviews:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:55:20.919", + "timestampUnix": 1708934120919 + }, + { + "message": "send: b'GET /reviews/0 HTTP/1.1\\r\\nHost: reviews:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: e973f6e762dc4f7d1579d1e7dbf56c03\\r\\nX-B3-SpanId: 62f1f7a1bb12d687\\r\\nX-B3-ParentSpanId: 1579d1e7dbf56c03\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: adba79fc-9ed7-9f59-9e43-44eccff759a6\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:55:20.924", + "timestampUnix": 1708934120924 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:20.924", + "timestampUnix": 1708934120924 + }, + { + "message": "header: x-powered-by: Servlet/3.1", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:20.924", + "timestampUnix": 1708934120924 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:20.924", + "timestampUnix": 1708934120924 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:55:20 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:20.924", + "timestampUnix": 1708934120924 + }, + { + "message": "header: content-language: en-US", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:20.924", + "timestampUnix": 1708934120924 + }, + { + "message": "header: content-length: 442", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:20.924", + "timestampUnix": 1708934120924 + }, + { + "message": "header: x-envoy-upstream-service-time: 3", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:20.924", + "timestampUnix": 1708934120924 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:20.924", + "timestampUnix": 1708934120924 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://reviews:9080 \"GET /reviews/0 HTTP/1.1\" 200 442", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:55:20.924", + "timestampUnix": 1708934120924 + }, + { + "message": "INFO:werkzeug:::ffff:127.0.0.6 - - [26/Feb/2024 07:55:20] \"GET /productpage HTTP/1.1\" 200 -", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:20.925", + "timestampUnix": 1708934120925 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): details:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:55:21.900", + "timestampUnix": 1708934121900 + }, + { + "message": "send: b'GET /details/0 HTTP/1.1\\r\\nHost: details:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: b6798dca15eb661032d1c8ce5eb75ad3\\r\\nX-B3-SpanId: 6bd07c4cda030fbf\\r\\nX-B3-ParentSpanId: 32d1c8ce5eb75ad3\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: 1fc30058-55e7-9832-824b-63c80ddbce14\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:55:21.903", + "timestampUnix": 1708934121903 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:21.903", + "timestampUnix": 1708934121903 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:21.903", + "timestampUnix": 1708934121903 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:21.903", + "timestampUnix": 1708934121903 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:55:21 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:21.903", + "timestampUnix": 1708934121903 + }, + { + "message": "header: content-length: 178", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:21.903", + "timestampUnix": 1708934121903 + }, + { + "message": "header: x-envoy-upstream-service-time: 1", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:21.903", + "timestampUnix": 1708934121903 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://details:9080 \"GET /details/0 HTTP/1.1\" 200 178", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:55:21.903", + "timestampUnix": 1708934121903 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): reviews:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:55:21.904", + "timestampUnix": 1708934121904 + }, + { + "message": "send: b'GET /reviews/0 HTTP/1.1\\r\\nHost: reviews:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: b6798dca15eb661032d1c8ce5eb75ad3\\r\\nX-B3-SpanId: 6bd07c4cda030fbf\\r\\nX-B3-ParentSpanId: 32d1c8ce5eb75ad3\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: 1fc30058-55e7-9832-824b-63c80ddbce14\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:55:21.908", + "timestampUnix": 1708934121908 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:21.908", + "timestampUnix": 1708934121908 + }, + { + "message": "header: x-powered-by: Servlet/3.1", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:21.908", + "timestampUnix": 1708934121908 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:21.908", + "timestampUnix": 1708934121908 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:55:21 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:21.908", + "timestampUnix": 1708934121908 + }, + { + "message": "header: content-language: en-US", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:21.908", + "timestampUnix": 1708934121908 + }, + { + "message": "header: content-length: 437", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:21.908", + "timestampUnix": 1708934121908 + }, + { + "message": "header: x-envoy-upstream-service-time: 2", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:21.908", + "timestampUnix": 1708934121908 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:21.908", + "timestampUnix": 1708934121908 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://reviews:9080 \"GET /reviews/0 HTTP/1.1\" 200 437", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:55:21.908", + "timestampUnix": 1708934121908 + }, + { + "message": "INFO:werkzeug:::ffff:127.0.0.6 - - [26/Feb/2024 07:55:21] \"GET /productpage HTTP/1.1\" 200 -", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:21.909", + "timestampUnix": 1708934121909 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): details:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:55:22.902", + "timestampUnix": 1708934122902 + }, + { + "message": "send: b'GET /details/0 HTTP/1.1\\r\\nHost: details:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: 92c848ae9313cff5f29c97d7ca1056b2\\r\\nX-B3-SpanId: 16ddc10921c7306d\\r\\nX-B3-ParentSpanId: f29c97d7ca1056b2\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: 0a735a1a-91b3-96d5-bca4-254ac5fcc91e\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:55:22.904", + "timestampUnix": 1708934122904 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:22.904", + "timestampUnix": 1708934122904 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:22.904", + "timestampUnix": 1708934122904 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:22.904", + "timestampUnix": 1708934122904 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:55:22 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:22.904", + "timestampUnix": 1708934122904 + }, + { + "message": "header: content-length: 178", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:22.904", + "timestampUnix": 1708934122904 + }, + { + "message": "header: x-envoy-upstream-service-time: 1", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:22.904", + "timestampUnix": 1708934122904 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://details:9080 \"GET /details/0 HTTP/1.1\" 200 178", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:55:22.904", + "timestampUnix": 1708934122904 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): reviews:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:55:22.906", + "timestampUnix": 1708934122906 + }, + { + "message": "send: b'GET /reviews/0 HTTP/1.1\\r\\nHost: reviews:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: 92c848ae9313cff5f29c97d7ca1056b2\\r\\nX-B3-SpanId: 16ddc10921c7306d\\r\\nX-B3-ParentSpanId: f29c97d7ca1056b2\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: 0a735a1a-91b3-96d5-bca4-254ac5fcc91e\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:55:22.908", + "timestampUnix": 1708934122908 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:22.908", + "timestampUnix": 1708934122908 + }, + { + "message": "header: x-powered-by: Servlet/3.1", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:22.908", + "timestampUnix": 1708934122908 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:22.908", + "timestampUnix": 1708934122908 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:55:22 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:22.908", + "timestampUnix": 1708934122908 + }, + { + "message": "header: content-language: en-US", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:22.908", + "timestampUnix": 1708934122908 + }, + { + "message": "header: content-length: 358", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:22.908", + "timestampUnix": 1708934122908 + }, + { + "message": "header: x-envoy-upstream-service-time: 0", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:22.908", + "timestampUnix": 1708934122908 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:22.908", + "timestampUnix": 1708934122908 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://reviews:9080 \"GET /reviews/0 HTTP/1.1\" 200 358", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:55:22.908", + "timestampUnix": 1708934122908 + }, + { + "message": "INFO:werkzeug:::ffff:127.0.0.6 - - [26/Feb/2024 07:55:22] \"GET /productpage HTTP/1.1\" 200 -", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:22.908", + "timestampUnix": 1708934122908 + }, + { + "message": "INFO:werkzeug:::ffff:127.0.0.1 - - [26/Feb/2024 07:55:22] \"GET /metrics HTTP/1.1\" 200 -", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:22.988", + "timestampUnix": 1708934122988 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): details:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:55:23.907", + "timestampUnix": 1708934123907 + }, + { + "message": "send: b'GET /details/0 HTTP/1.1\\r\\nHost: details:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: c1024e4cb11c203805c657150ca86a03\\r\\nX-B3-SpanId: 4d906ee2c97baaae\\r\\nX-B3-ParentSpanId: 05c657150ca86a03\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: 8e12c832-20c4-9ac3-8fa0-b3886ae4321b\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:55:23.911", + "timestampUnix": 1708934123911 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:23.911", + "timestampUnix": 1708934123911 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:23.911", + "timestampUnix": 1708934123911 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:23.911", + "timestampUnix": 1708934123911 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:55:23 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:23.911", + "timestampUnix": 1708934123911 + }, + { + "message": "header: content-length: 178", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:23.911", + "timestampUnix": 1708934123911 + }, + { + "message": "header: x-envoy-upstream-service-time: 1", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:23.911", + "timestampUnix": 1708934123911 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://details:9080 \"GET /details/0 HTTP/1.1\" 200 178", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:55:23.911", + "timestampUnix": 1708934123911 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): reviews:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:55:23.913", + "timestampUnix": 1708934123913 + }, + { + "message": "send: b'GET /reviews/0 HTTP/1.1\\r\\nHost: reviews:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: c1024e4cb11c203805c657150ca86a03\\r\\nX-B3-SpanId: 4d906ee2c97baaae\\r\\nX-B3-ParentSpanId: 05c657150ca86a03\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: 8e12c832-20c4-9ac3-8fa0-b3886ae4321b\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:55:23.917", + "timestampUnix": 1708934123917 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:23.917", + "timestampUnix": 1708934123917 + }, + { + "message": "header: x-powered-by: Servlet/3.1", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:23.917", + "timestampUnix": 1708934123917 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:23.917", + "timestampUnix": 1708934123917 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:55:23 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:23.917", + "timestampUnix": 1708934123917 + }, + { + "message": "header: content-language: en-US", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:23.917", + "timestampUnix": 1708934123917 + }, + { + "message": "header: content-length: 442", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:23.917", + "timestampUnix": 1708934123917 + }, + { + "message": "header: x-envoy-upstream-service-time: 2", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:23.917", + "timestampUnix": 1708934123917 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:23.917", + "timestampUnix": 1708934123917 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://reviews:9080 \"GET /reviews/0 HTTP/1.1\" 200 442", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:55:23.917", + "timestampUnix": 1708934123917 + }, + { + "message": "INFO:werkzeug:::ffff:127.0.0.6 - - [26/Feb/2024 07:55:23] \"GET /productpage HTTP/1.1\" 200 -", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:23.918", + "timestampUnix": 1708934123918 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): details:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:55:24.907", + "timestampUnix": 1708934124907 + }, + { + "message": "send: b'GET /details/0 HTTP/1.1\\r\\nHost: details:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: f2f1e92b2f29618f041aecfbf1835760\\r\\nX-B3-SpanId: fd2b2439c6836212\\r\\nX-B3-ParentSpanId: 041aecfbf1835760\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: b0a9468b-d1a4-9ba9-8757-bc9e140b6c48\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:55:24.912", + "timestampUnix": 1708934124912 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:24.912", + "timestampUnix": 1708934124912 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:24.912", + "timestampUnix": 1708934124912 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:24.912", + "timestampUnix": 1708934124912 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:55:24 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:24.912", + "timestampUnix": 1708934124912 + }, + { + "message": "header: content-length: 178", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:24.912", + "timestampUnix": 1708934124912 + }, + { + "message": "header: x-envoy-upstream-service-time: 1", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:24.912", + "timestampUnix": 1708934124912 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://details:9080 \"GET /details/0 HTTP/1.1\" 200 178", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:55:24.912", + "timestampUnix": 1708934124912 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): reviews:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:55:24.913", + "timestampUnix": 1708934124913 + }, + { + "message": "send: b'GET /reviews/0 HTTP/1.1\\r\\nHost: reviews:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: f2f1e92b2f29618f041aecfbf1835760\\r\\nX-B3-SpanId: fd2b2439c6836212\\r\\nX-B3-ParentSpanId: 041aecfbf1835760\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: b0a9468b-d1a4-9ba9-8757-bc9e140b6c48\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:55:24.918", + "timestampUnix": 1708934124918 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:24.918", + "timestampUnix": 1708934124918 + }, + { + "message": "header: x-powered-by: Servlet/3.1", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:24.918", + "timestampUnix": 1708934124918 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:24.918", + "timestampUnix": 1708934124918 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:55:24 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:24.918", + "timestampUnix": 1708934124918 + }, + { + "message": "header: content-language: en-US", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:24.918", + "timestampUnix": 1708934124918 + }, + { + "message": "header: content-length: 442", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:24.918", + "timestampUnix": 1708934124918 + }, + { + "message": "header: x-envoy-upstream-service-time: 2", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:24.918", + "timestampUnix": 1708934124918 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:24.918", + "timestampUnix": 1708934124918 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://reviews:9080 \"GET /reviews/0 HTTP/1.1\" 200 442", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:55:24.918", + "timestampUnix": 1708934124918 + }, + { + "message": "INFO:werkzeug:::ffff:127.0.0.6 - - [26/Feb/2024 07:55:24] \"GET /productpage HTTP/1.1\" 200 -", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:24.919", + "timestampUnix": 1708934124919 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): details:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:55:25.906", + "timestampUnix": 1708934125906 + }, + { + "message": "send: b'GET /details/0 HTTP/1.1\\r\\nHost: details:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: 47a549be7bc753a4e83f0c8145b11fc\\r\\nX-B3-SpanId: d21954076ea5389b\\r\\nX-B3-ParentSpanId: 4e83f0c8145b11fc\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: 9512c57c-9db7-9b7c-87c6-3c89aba0136e\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:55:25.908", + "timestampUnix": 1708934125908 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:25.908", + "timestampUnix": 1708934125908 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:25.908", + "timestampUnix": 1708934125908 + }, + { + "message": "header: server: envoy", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:25.908", + "timestampUnix": 1708934125908 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:55:25 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:25.908", + "timestampUnix": 1708934125908 + }, + { + "message": "header: content-length: 178", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:25.908", + "timestampUnix": 1708934125908 + }, + { + "message": "header: x-envoy-upstream-service-time: 1", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:25.908", + "timestampUnix": 1708934125908 + }, + { + "message": "DEBUG:urllib3.connectionpool:http://details:9080 \"GET /details/0 HTTP/1.1\" 200 178", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:55:25.908", + "timestampUnix": 1708934125908 + }, + { + "message": "DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): reviews:9080", + "severity": "DEBUG", + "timestamp": "2024-02-26 07:55:25.910", + "timestampUnix": 1708934125910 + }, + { + "message": "send: b'GET /reviews/0 HTTP/1.1\\r\\nHost: reviews:9080\\r\\nuser-agent: Go-http-client/1.1\\r\\nAccept-Encoding: gzip, deflate\\r\\nAccept: */*\\r\\nConnection: keep-alive\\r\\nX-B3-TraceId: 47a549be7bc753a4e83f0c8145b11fc\\r\\nX-B3-SpanId: d21954076ea5389b\\r\\nX-B3-ParentSpanId: 4e83f0c8145b11fc\\r\\nX-B3-Sampled: 1\\r\\nx-request-id: 9512c57c-9db7-9b7c-87c6-3c89aba0136e\\r\\n\\r\\n'", + "severity": "TRACE", + "timestamp": "2024-02-26 07:55:25.915", + "timestampUnix": 1708934125915 + }, + { + "message": "reply: 'HTTP/1.1 200 OK\\r\\n'", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:25.915", + "timestampUnix": 1708934125915 + }, + { + "message": "header: x-powered-by: Servlet/3.1", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:25.915", + "timestampUnix": 1708934125915 + }, + { + "message": "header: content-type: application/json", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:25.915", + "timestampUnix": 1708934125915 + }, + { + "message": "header: date: Mon, 26 Feb 2024 07:55:24 GMT", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:25.915", + "timestampUnix": 1708934125915 + }, + { + "message": "header: content-language: en-US", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:25.915", + "timestampUnix": 1708934125915 + }, + { + "message": "header: content-length: 442", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:25.915", + "timestampUnix": 1708934125915 + }, + { + "message": "header: x-envoy-upstream-service-time: 3", + "severity": "INFO", + "timestamp": "2024-02-26 07:55:25.915", + "timestampUnix": 1708934125915 + } + ], + "linesTruncated": true +} diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/general/meshCanaryStatus.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/general/meshCanaryStatus.json new file mode 100644 index 0000000000..013e5deacf --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/general/meshCanaryStatus.json @@ -0,0 +1,6 @@ +{ + "currentVersion": "1.3", + "upgradeVersion": "1.4", + "migratedNamespaces": ["bookinfo"], + "pendingNamespaces": ["travel-agency"] +} diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/general/meshIstioResurceThresholds.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/general/meshIstioResurceThresholds.json new file mode 100644 index 0000000000..87399806fe --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/general/meshIstioResurceThresholds.json @@ -0,0 +1 @@ +{ "memory": 64, "cpu": 8 } diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/general/meshTls.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/general/meshTls.json new file mode 100644 index 0000000000..f2e07308dd --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/general/meshTls.json @@ -0,0 +1 @@ +{ "status": "MTLS_NOT_ENABLED", "autoMTLSEnabled": true, "minTLS": "N/A" } diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/general/namespaces.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/general/namespaces.json new file mode 100644 index 0000000000..a1615edc99 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/general/namespaces.json @@ -0,0 +1,146 @@ +[ + { + "name": "bookinfo", + "cluster": "Kubernetes", + "isAmbient": false, + "labels": { + "istio-injection": "enabled", + "kubernetes.io/metadata.name": "bookinfo", + "pod-security.kubernetes.io/audit": "privileged", + "pod-security.kubernetes.io/audit-version": "v1.24", + "pod-security.kubernetes.io/warn": "privileged", + "pod-security.kubernetes.io/warn-version": "v1.24" + }, + "annotations": { + "openshift.io/description": "", + "openshift.io/display-name": "", + "openshift.io/requester": "kubeadmin", + "openshift.io/sa.scc.mcs": "s0:c26,c10", + "openshift.io/sa.scc.supplemental-groups": "1000670000/10000", + "openshift.io/sa.scc.uid-range": "1000670000/10000" + } + }, + { + "name": "default", + "cluster": "Kubernetes", + "isAmbient": false, + "labels": { + "kubernetes.io/metadata.name": "default" + }, + "annotations": { + "openshift.io/sa.scc.mcs": "s0:c1,c0", + "openshift.io/sa.scc.supplemental-groups": "1000000000/10000", + "openshift.io/sa.scc.uid-range": "1000000000/10000" + } + }, + { + "name": "hostpath-provisioner", + "cluster": "Kubernetes", + "isAmbient": false, + "labels": { + "kubernetes.io/metadata.name": "hostpath-provisioner", + "pod-security.kubernetes.io/audit": "privileged", + "pod-security.kubernetes.io/audit-version": "v1.24", + "pod-security.kubernetes.io/warn": "privileged", + "pod-security.kubernetes.io/warn-version": "v1.24" + }, + "annotations": { + "kubectl.kubernetes.io/last-applied-configuration": "{\"apiVersion\":\"v1\",\"kind\":\"Namespace\",\"metadata\":{\"annotations\":{},\"name\":\"hostpath-provisioner\"}}\n", + "openshift.io/sa.scc.mcs": "s0:c25,c20", + "openshift.io/sa.scc.supplemental-groups": "1000640000/10000", + "openshift.io/sa.scc.uid-range": "1000640000/10000" + } + }, + { + "name": "istio-system", + "cluster": "Kubernetes", + "isAmbient": false, + "labels": { + "kubernetes.io/metadata.name": "istio-system", + "pod-security.kubernetes.io/audit": "privileged", + "pod-security.kubernetes.io/audit-version": "v1.24", + "pod-security.kubernetes.io/warn": "privileged", + "pod-security.kubernetes.io/warn-version": "v1.24", + "topology.istio.io/network": "" + }, + "annotations": { + "openshift.io/description": "", + "openshift.io/display-name": "", + "openshift.io/requester": "kubeadmin", + "openshift.io/sa.scc.mcs": "s0:c26,c0", + "openshift.io/sa.scc.supplemental-groups": "1000650000/10000", + "openshift.io/sa.scc.uid-range": "1000650000/10000" + } + }, + { + "name": "kiali", + "cluster": "Kubernetes", + "isAmbient": false, + "labels": { + "kubernetes.io/metadata.name": "kiali", + "pod-security.kubernetes.io/audit": "restricted", + "pod-security.kubernetes.io/audit-version": "v1.24", + "pod-security.kubernetes.io/warn": "restricted", + "pod-security.kubernetes.io/warn-version": "v1.24" + }, + "annotations": { + "openshift.io/sa.scc.mcs": "s0:c27,c4", + "openshift.io/sa.scc.supplemental-groups": "1000710000/10000", + "openshift.io/sa.scc.uid-range": "1000710000/10000" + } + }, + { + "name": "travel-agency", + "cluster": "Kubernetes", + "isAmbient": false, + "labels": { + "istio-injection": "enabled", + "kubernetes.io/metadata.name": "travel-agency", + "pod-security.kubernetes.io/audit": "privileged", + "pod-security.kubernetes.io/audit-version": "v1.24", + "pod-security.kubernetes.io/warn": "privileged", + "pod-security.kubernetes.io/warn-version": "v1.24" + }, + "annotations": { + "openshift.io/sa.scc.mcs": "s0:c27,c14", + "openshift.io/sa.scc.supplemental-groups": "1000730000/10000", + "openshift.io/sa.scc.uid-range": "1000730000/10000" + } + }, + { + "name": "travel-control", + "cluster": "Kubernetes", + "isAmbient": false, + "labels": { + "istio-injection": "enabled", + "kubernetes.io/metadata.name": "travel-control", + "pod-security.kubernetes.io/audit": "privileged", + "pod-security.kubernetes.io/audit-version": "v1.24", + "pod-security.kubernetes.io/warn": "privileged", + "pod-security.kubernetes.io/warn-version": "v1.24" + }, + "annotations": { + "openshift.io/sa.scc.mcs": "s0:c27,c24", + "openshift.io/sa.scc.supplemental-groups": "1000750000/10000", + "openshift.io/sa.scc.uid-range": "1000750000/10000" + } + }, + { + "name": "travel-portal", + "cluster": "Kubernetes", + "isAmbient": false, + "labels": { + "istio-injection": "enabled", + "kubernetes.io/metadata.name": "travel-portal", + "pod-security.kubernetes.io/audit": "privileged", + "pod-security.kubernetes.io/audit-version": "v1.24", + "pod-security.kubernetes.io/warn": "privileged", + "pod-security.kubernetes.io/warn-version": "v1.24" + }, + "annotations": { + "openshift.io/sa.scc.mcs": "s0:c27,c19", + "openshift.io/sa.scc.supplemental-groups": "1000740000/10000", + "openshift.io/sa.scc.uid-range": "1000740000/10000" + } + } +] diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/general/outbound_traffic_policy_mode.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/general/outbound_traffic_policy_mode.json new file mode 100644 index 0000000000..b6f01c27d1 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/general/outbound_traffic_policy_mode.json @@ -0,0 +1 @@ +{ "mode": "ALLOW_ANY" } diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/general/status.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/general/status.json new file mode 100644 index 0000000000..56bb026b74 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/general/status.json @@ -0,0 +1,35 @@ +{ + "status": { + "Kiali commit hash": "c17d0550cfb033900c392ff5813368c1185954f1", + "Kiali container version": "v1.74.0-SNAPSHOT", + "Kiali state": "running", + "Kiali version": "v1.74.0-SNAPSHOT", + "Mesh name": "Istio", + "Mesh version": "1.18.2" + }, + "externalServices": [ + { + "name": "Istio", + "version": "1.18.2" + }, + { + "name": "Prometheus", + "version": "2.41.0" + }, + { + "name": "Kubernetes", + "version": "v1.26.3+b404935" + }, + { + "name": "Grafana" + }, + { + "name": "Jaeger" + } + ], + "warningMessages": [], + "istioEnvironment": { + "isMaistra": false, + "istioAPIEnabled": true + } +} diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/general/statusError.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/general/statusError.json new file mode 100644 index 0000000000..0050767002 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/general/statusError.json @@ -0,0 +1,7 @@ +{ + "verify": false, + "missingAttributes": ["serviceAccountToken"], + "message": "Attribute 'serviceAccountToken' is not in the backstage configuration", + "helper": "For more information follow the steps in https://github.com/backstage/community-plugins/blob/main/workspaces/kiali/README.md", + "authData": { "strategy": "token", "sessionInfo": {} } +} diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/index.ts b/workspaces/kiali/plugins/kiali/dev/__fixtures__/index.ts new file mode 100644 index 0000000000..d2454890e1 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/index.ts @@ -0,0 +1,399 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import anonymousAuth from './general/auth_info_anonymous.json'; +import configData from './general/config.json'; +/** Metrics **/ +import crippledFeatures from './general/crippledFeatures.json'; +import grafanaInfo from './general/grafana.json'; +import bookinfoGraph from './general/graph.json'; +import istioCertsInfo from './general/istioCertsInfo.json'; +import istioConfig from './general/istioConfig.json'; +import istioContainerLogs from './general/istioLogs.json'; +import istioStatus from './general/istioStatus.json'; +import istioValidations from './general/istioValidations.json'; +import containerLogs from './general/logs.json'; +import spanLogs from './general/logSpan.json'; +import meshCanaryStatus from './general/meshCanaryStatus.json'; +import meshIstioResourceThresholds from './general/meshIstioResurceThresholds.json'; +import meshTls from './general/meshTls.json'; +import namespacesData from './general/namespaces.json'; +import outboundTrafficPolicy from './general/outbound_traffic_policy_mode.json'; +import status from './general/status.json'; +import bookinfoApps from './namespaces/bookinfo/apps.json'; +import detailsApp from './namespaces/bookinfo/apps/details.json'; +import kialiTrafficGeneratorApp from './namespaces/bookinfo/apps/kiali_traffic_generator.json'; +import productpageApp from './namespaces/bookinfo/apps/productpage.json'; +import ratingsApp from './namespaces/bookinfo/apps/ratings.json'; +import reviewsApp from './namespaces/bookinfo/apps/reviews.json'; +import bookinfoDashboard from './namespaces/bookinfo/dashboard.json'; +/** health **/ + +import bookinfoHealthApp from './namespaces/bookinfo/health/app.json'; +import bookinfoHealthService from './namespaces/bookinfo/health/service.json'; +import bookinfoHealthWorkload from './namespaces/bookinfo/health/workload.json'; +import bookinfoIstioConfig from './namespaces/bookinfo/istio_config.json'; +import bookinfoGateway from './namespaces/bookinfo/istio_configs/gateways/bookinfo-gateway.json'; +import bookinfoVirtualService from './namespaces/bookinfo/istio_configs/virtualservices/bookinfo.json'; +import bookInfoMetrics from './namespaces/bookinfo/metrics'; +import bookinfoServices from './namespaces/bookinfo/services.json'; +import detailsService from './namespaces/bookinfo/services/details.json'; +import productpageService from './namespaces/bookinfo/services/productpage.json'; +import ratingsService from './namespaces/bookinfo/services/ratings.json'; +import reviewsService from './namespaces/bookinfo/services/reviews.json'; +import bookinfoSpans from './namespaces/bookinfo/spans.json'; +/* bookinfo */ +import bookinfoTls from './namespaces/bookinfo/tls.json'; +/** Workloads **/ +import bookinfoWorkloads from './namespaces/bookinfo/workloads.json'; +import detailsWorkload from './namespaces/bookinfo/workloads/details_v1.json'; +import kialitrafficWorkload from './namespaces/bookinfo/workloads/kiali_traffic_generator.json'; +import productpagev1Workload from './namespaces/bookinfo/workloads/productpage_v1.json'; +import ratingsv1Workload from './namespaces/bookinfo/workloads/ratings_v1.json'; +import reviewsv1Workload from './namespaces/bookinfo/workloads/reviews_v1.json'; +import reviewsv2Workload from './namespaces/bookinfo/workloads/reviews_v2.json'; +import reviewsv3Workload from './namespaces/bookinfo/workloads/reviews_v3.json'; +import istioSystemApps from './namespaces/istio-system/apps.json'; +import istioegressgatewayApp from './namespaces/istio-system/apps/istio_egressgateway.json'; +import istioingressgatewayApp from './namespaces/istio-system/apps/istio_ingressgateway.json'; +import istiodApp from './namespaces/istio-system/apps/istiod.json'; +import jaegerApp from './namespaces/istio-system/apps/jaeger.json'; +import kialiApp from './namespaces/istio-system/apps/kiali.json'; +import istioDashboard from './namespaces/istio-system/dashboard.json'; +/** health **/ +import istioSystemHealthApp from './namespaces/istio-system/health/app.json'; +import istioSystemHealthService from './namespaces/istio-system/health/service.json'; +import istioSystemHealthWorkload from './namespaces/istio-system/health/workload.json'; +import istioSystemIstioConfig from './namespaces/istio-system/istio_config.json'; +import istioSystemMetrics from './namespaces/istio-system/metrics'; +import istioSystemServices from './namespaces/istio-system/services.json'; +import grafanaService from './namespaces/istio-system/services/grafana.json'; +import istioegressgatewayService from './namespaces/istio-system/services/istio_egressgateway.json'; +import istioingressgatewayService from './namespaces/istio-system/services/istio_ingressgateway.json'; +import istiodService from './namespaces/istio-system/services/istiod.json'; +import jaegerService from './namespaces/istio-system/services/jaeger_collector.json'; +import kialiService from './namespaces/istio-system/services/kiali.json'; +import prometheusService from './namespaces/istio-system/services/prometheus.json'; +import istioSpans from './namespaces/istio-system/spans.json'; +/* istio-system */ +import istioSystemTls from './namespaces/istio-system/tls.json'; +import istioSystemWorkloads from './namespaces/istio-system/workloads.json'; +import grafanaWorkload from './namespaces/istio-system/workloads/grafana.json'; +import istioegressgatewayWorkload from './namespaces/istio-system/workloads/istio_egressgateway.json'; +import istioingressgatewayWorkload from './namespaces/istio-system/workloads/istio_ingressgateway.json'; +import istiodWorkload from './namespaces/istio-system/workloads/istiod.json'; +import jaegerWorkload from './namespaces/istio-system/workloads/jaeger.json'; +import kialiWorkload from './namespaces/istio-system/workloads/kiali.json'; +import prometheusWorkload from './namespaces/istio-system/workloads/prometheus.json'; +import travelAgencyApps from './namespaces/travel-agency/apps.json'; +import carsApp from './namespaces/travel-agency/apps/cars.json'; +import discountsApp from './namespaces/travel-agency/apps/discounts.json'; +import flightsApp from './namespaces/travel-agency/apps/flights.json'; +import hotelsApp from './namespaces/travel-agency/apps/hotels.json'; +import insurancesApp from './namespaces/travel-agency/apps/insurances.json'; +import mysqldbApp from './namespaces/travel-agency/apps/mysqldb.json'; +import travelApp from './namespaces/travel-agency/apps/travels.json'; +import travelAgencyDashboard from './namespaces/travel-agency/dashboard.json'; +/** health **/ + +import travelAgencyHealthApp from './namespaces/travel-agency/health/app.json'; +import travelAgencyHealthService from './namespaces/travel-agency/health/service.json'; +import travelAgencyHealthWorkload from './namespaces/travel-agency/health/workload.json'; +import travelAgencyIstioConfig from './namespaces/travel-agency/istio_config.json'; +import travelAgencyMetrics from './namespaces/travel-agency/metrics'; +import travelAgencyServices from './namespaces/travel-agency/services.json'; +import carsService from './namespaces/travel-agency/services/cars.json'; +import discountsService from './namespaces/travel-agency/services/discounts.json'; +import flightsService from './namespaces/travel-agency/services/flights.json'; +import hotelsService from './namespaces/travel-agency/services/hotels.json'; +import insurancesService from './namespaces/travel-agency/services/insurances.json'; +import mysqldbService from './namespaces/travel-agency/services/mysqldb.json'; +import travelService from './namespaces/travel-agency/services/travels.json'; +import travelAgencySpans from './namespaces/travel-agency/spans.json'; +/* Travel agency */ +import travelAgencyTls from './namespaces/travel-agency/tls.json'; +import travelAgencyWorkloads from './namespaces/travel-agency/workloads.json'; +import carsv1Workload from './namespaces/travel-agency/workloads/cars_v1.json'; +import discountsv1Workload from './namespaces/travel-agency/workloads/discounts_v1.json'; +import flightsv1Workload from './namespaces/travel-agency/workloads/flights_v1.json'; +import hotelsv1Workload from './namespaces/travel-agency/workloads/hotels_v1.json'; +import insurancesv1Workload from './namespaces/travel-agency/workloads/insurances_v1.json'; +import mysqldbv1Workload from './namespaces/travel-agency/workloads/mysqldb_v1.json'; +import travelsv1Workload from './namespaces/travel-agency/workloads/travels_v1.json'; +import travelControlApps from './namespaces/travel-control/apps.json'; +import controlApp from './namespaces/travel-control/apps/control.json'; +import travelControlDashboard from './namespaces/travel-control/dashboard.json'; +/** health **/ + +import travelControlHealthApp from './namespaces/travel-control/health/app.json'; +import travelControlHealthService from './namespaces/travel-control/health/service.json'; +import travelControlHealthWorkload from './namespaces/travel-control/health/workload.json'; +import travelControlIstioConfig from './namespaces/travel-control/istio_config.json'; +import controlDR from './namespaces/travel-control/istio_configs/destinationrules/control.json'; +import controlGW from './namespaces/travel-control/istio_configs/gateways/control-gateway.json'; +import controlVR from './namespaces/travel-control/istio_configs/virtualservices/control.json'; +import travelControlMetrics from './namespaces/travel-control/metrics'; +import travelControlServices from './namespaces/travel-control/services.json'; +import controlService from './namespaces/travel-control/services/control.json'; +import travelControlSpans from './namespaces/travel-control/spans.json'; +/* Travel control */ +import travelControlTls from './namespaces/travel-control/tls.json'; +import travelControlWorkloads from './namespaces/travel-control/workloads.json'; +import travelControlWorkload from './namespaces/travel-control/workloads/control.json'; +import travelsApp from './namespaces/travel-portal/apps/travels.json'; +import viaggiApp from './namespaces/travel-portal/apps/viaggi.json'; +import voyagesApp from './namespaces/travel-portal/apps/voyages.json'; +import travelPortalDashboard from './namespaces/travel-portal/dashboard.json'; +/** health **/ + +import travelPortalHealthApp from './namespaces/travel-portal/health/app.json'; +import travelPortalHealthService from './namespaces/travel-portal/health/service.json'; +import travelPortalHealthWorkload from './namespaces/travel-portal/health/workload.json'; +import travelPortalIstioConfig from './namespaces/travel-portal/istio_config.json'; +import travelPortalMetrics from './namespaces/travel-portal/metrics'; +import travelPortalServices from './namespaces/travel-portal/services.json'; +import travelsService from './namespaces/travel-portal/services/travels.json'; +import viaggiService from './namespaces/travel-portal/services/viaggi.json'; +import voyagesService from './namespaces/travel-portal/services/voyages.json'; +import travelPortalSpans from './namespaces/travel-portal/spans.json'; +/* Travel portal */ +import travelPortalTls from './namespaces/travel-portal/tls.json'; +import travelPortalWorkloads from './namespaces/travel-portal/workloads.json'; +import travelPortalApps from './namespaces/travel-portal/workloads.json'; +import travelPortalTravels from './namespaces/travel-portal/workloads/travels.json'; +import travelPortalViaggi from './namespaces/travel-portal/workloads/viaggi.json'; +import travelPortalVoyages from './namespaces/travel-portal/workloads/voyages.json'; + +export const kialiData: { [index: string]: any } = { + auth: anonymousAuth, + config: configData, + namespaces: namespacesData, + meshTls: meshTls, + meshCanaryStatus: meshCanaryStatus, + meshIstioResourceThresholds: meshIstioResourceThresholds, + outboundTrafficPolicy: outboundTrafficPolicy, + istioValidations: istioValidations, + istioConfig: istioConfig, + istioStatus: istioStatus, + istioCertsInfo: istioCertsInfo, + graph: bookinfoGraph, + namespacesData: { + 'istio-system': { + tls: istioSystemTls, + metrics: istioSystemMetrics, + health: { + app: istioSystemHealthApp, + service: istioSystemHealthService, + workload: istioSystemHealthWorkload, + }, + workloads: { + grafana: grafanaWorkload, + istioegressgateway: istioegressgatewayWorkload, + istioingressgateway: istioingressgatewayWorkload, + istiod: istiodWorkload, + jaeger: jaegerWorkload, + kiali: kialiWorkload, + prometheus: prometheusWorkload, + }, + services: { + grafana: grafanaService, + istioegressgateway: istioegressgatewayService, + istioingressgateway: istioingressgatewayService, + istiod: istiodService, + jaeger: jaegerService, + kiali: kialiService, + prometheus: prometheusService, + }, + apps: { + istioegressgateway: istioegressgatewayApp, + istioingressgateway: istioingressgatewayApp, + istiod: istiodApp, + jaeger: jaegerApp, + kiali: kialiApp, + }, + istioConfigList: istioSystemIstioConfig, + dashboard: istioDashboard, + spans: istioSpans, + }, + bookinfo: { + tls: bookinfoTls, + metrics: bookInfoMetrics, + health: { + app: bookinfoHealthApp, + service: bookinfoHealthService, + workload: bookinfoHealthWorkload, + }, + workloads: { + detailsv1: detailsWorkload, + kialitrafficgenerator: kialitrafficWorkload, + productpagev1: productpagev1Workload, + ratingsv1: ratingsv1Workload, + reviewsv1: reviewsv1Workload, + reviewsv2: reviewsv2Workload, + reviewsv3: reviewsv3Workload, + }, + services: { + details: detailsService, + productpage: productpageService, + ratings: ratingsService, + reviews: reviewsService, + }, + apps: { + details: detailsApp, + productpage: productpageApp, + ratings: ratingsApp, + reviews: reviewsApp, + kialitrafficgenerator: kialiTrafficGeneratorApp, + }, + istioConfigDetails: { + gateways: { + 'bookinfo-gateway': bookinfoGateway, + }, + virtualservices: { + bookinfo: bookinfoVirtualService, + }, + }, + istioConfigList: bookinfoIstioConfig, + dashboard: bookinfoDashboard, + spans: bookinfoSpans, + }, + 'travel-control': { + tls: travelControlTls, + metrics: travelControlMetrics, + health: { + app: travelControlHealthApp, + service: travelControlHealthService, + workload: travelControlHealthWorkload, + }, + workloads: { + control: travelControlWorkload, + }, + services: { + control: controlService, + }, + apps: { + control: controlApp, + }, + istioConfigDetails: { + destinationrules: { + control: controlDR, + }, + virtualservices: { + control: controlVR, + }, + gateways: { + 'control-gateway': controlGW, + }, + }, + istioConfigList: travelControlIstioConfig, + dashboard: travelControlDashboard, + spans: travelControlSpans, + }, + 'travel-portal': { + tls: travelPortalTls, + metrics: travelPortalMetrics, + health: { + app: travelPortalHealthApp, + service: travelPortalHealthService, + workload: travelPortalHealthWorkload, + }, + workloads: { + travels: travelPortalTravels, + viaggi: travelPortalViaggi, + voyages: travelPortalVoyages, + }, + services: { + travels: travelsService, + viaggi: viaggiService, + voyages: voyagesService, + }, + apps: { + travels: travelsApp, + viaggi: viaggiApp, + voyages: voyagesApp, + }, + istioConfigList: travelPortalIstioConfig, + dashboard: travelPortalDashboard, + spans: travelPortalSpans, + }, + 'travel-agency': { + tls: travelAgencyTls, + metrics: travelAgencyMetrics, + health: { + app: travelAgencyHealthApp, + service: travelAgencyHealthService, + workload: travelAgencyHealthWorkload, + }, + workloads: { + carsv1: carsv1Workload, + discountsv1: discountsv1Workload, + flightsv1: flightsv1Workload, + hotelsv1: hotelsv1Workload, + insurancesv1: insurancesv1Workload, + mysqldbv1: mysqldbv1Workload, + travels: travelsv1Workload, + }, + services: { + cars: carsService, + discounts: discountsService, + flights: flightsService, + hotels: hotelsService, + insurances: insurancesService, + mysqldb: mysqldbService, + travels: travelService, + }, + apps: { + cars: carsApp, + discounts: discountsApp, + flights: flightsApp, + hotels: hotelsApp, + insurances: insurancesApp, + mysqldb: mysqldbApp, + travels: travelApp, + }, + istioConfigList: travelAgencyIstioConfig, + dashboard: travelAgencyDashboard, + spans: travelAgencySpans, + }, + }, + logs: containerLogs, + istioLogs: istioContainerLogs, + spanLogs: spanLogs, + workloads: { + 'istio-system': istioSystemWorkloads, + bookinfo: bookinfoWorkloads, + 'travel-portal': travelPortalWorkloads, + 'travel-agency': travelAgencyWorkloads, + 'travel-control': travelControlWorkloads, + }, + services: { + 'istio-system': istioSystemServices, + bookinfo: bookinfoServices, + 'travel-portal': travelPortalServices, + 'travel-agency': travelAgencyServices, + 'travel-control': travelControlServices, + }, + apps: { + 'istio-system': istioSystemApps, + bookinfo: bookinfoApps, + 'travel-portal': travelPortalApps, + 'travel-agency': travelAgencyApps, + 'travel-control': travelControlApps, + }, + status: status, + crippledFeatures: crippledFeatures, + grafanaInfo: grafanaInfo, +}; diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/bookinfo/apps.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/bookinfo/apps.json new file mode 100644 index 0000000000..ff716297c3 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/bookinfo/apps.json @@ -0,0 +1,223 @@ +{ + "namespace": { + "name": "bookinfo", + "cluster": "", + "isAmbient": false, + "labels": null, + "annotations": null + }, + "cluster": "", + "applications": [ + { + "name": "details", + "cluster": "Kubernetes", + "istioSidecar": true, + "istioAmbient": false, + "labels": { + "app": "details", + "service": "details", + "version": "v1" + }, + "istioReferences": [ + { + "objectType": "Gateway", + "name": "bookinfo-gateway", + "namespace": "bookinfo", + "cluster": "" + } + ], + "health": { + "workloadStatuses": [ + { + "name": "details-v1", + "desiredReplicas": 1, + "currentReplicas": 1, + "availableReplicas": 1, + "syncedProxies": 1 + } + ], + "requests": { + "inbound": { + "http": { + "200": 0.9999999999999999 + } + }, + "outbound": {}, + "healthAnnotations": {} + } + } + }, + { + "name": "kiali-traffic-generator", + "cluster": "Kubernetes", + "istioSidecar": true, + "istioAmbient": false, + "labels": { + "app": "kiali-traffic-generator", + "kiali-test": "traffic-generator" + }, + "istioReferences": [], + "health": { + "workloadStatuses": [ + { + "name": "kiali-traffic-generator", + "desiredReplicas": 1, + "currentReplicas": 1, + "availableReplicas": 1, + "syncedProxies": 1 + } + ], + "requests": { + "inbound": {}, + "outbound": {}, + "healthAnnotations": {} + } + } + }, + { + "name": "productpage", + "cluster": "Kubernetes", + "istioSidecar": true, + "istioAmbient": false, + "labels": { + "app": "productpage", + "service": "productpage", + "version": "v1" + }, + "istioReferences": [ + { + "objectType": "VirtualService", + "name": "bookinfo", + "namespace": "bookinfo", + "cluster": "" + }, + { + "objectType": "Gateway", + "name": "bookinfo-gateway", + "namespace": "bookinfo", + "cluster": "" + } + ], + "health": { + "workloadStatuses": [ + { + "name": "productpage-v1", + "desiredReplicas": 1, + "currentReplicas": 1, + "availableReplicas": 1, + "syncedProxies": 1 + } + ], + "requests": { + "inbound": { + "http": { + "200": 0.9999999999999999 + } + }, + "outbound": { + "http": { + "200": 1.9999999999999998 + } + }, + "healthAnnotations": {} + } + } + }, + { + "name": "ratings", + "cluster": "Kubernetes", + "istioSidecar": true, + "istioAmbient": false, + "labels": { + "app": "ratings", + "service": "ratings", + "version": "v1" + }, + "istioReferences": [ + { + "objectType": "Gateway", + "name": "bookinfo-gateway", + "namespace": "bookinfo", + "cluster": "" + } + ], + "health": { + "workloadStatuses": [ + { + "name": "ratings-v1", + "desiredReplicas": 1, + "currentReplicas": 1, + "availableReplicas": 1, + "syncedProxies": 1 + } + ], + "requests": { + "inbound": { + "http": { + "200": 0.6444444444444444 + } + }, + "outbound": {}, + "healthAnnotations": {} + } + } + }, + { + "name": "reviews", + "cluster": "Kubernetes", + "istioSidecar": true, + "istioAmbient": false, + "labels": { + "app": "reviews", + "service": "reviews", + "version": "v1,v2,v3" + }, + "istioReferences": [ + { + "objectType": "Gateway", + "name": "bookinfo-gateway", + "namespace": "bookinfo", + "cluster": "" + } + ], + "health": { + "workloadStatuses": [ + { + "name": "reviews-v1", + "desiredReplicas": 1, + "currentReplicas": 1, + "availableReplicas": 1, + "syncedProxies": 1 + }, + { + "name": "reviews-v2", + "desiredReplicas": 1, + "currentReplicas": 1, + "availableReplicas": 1, + "syncedProxies": 1 + }, + { + "name": "reviews-v3", + "desiredReplicas": 1, + "currentReplicas": 1, + "availableReplicas": 1, + "syncedProxies": 1 + } + ], + "requests": { + "inbound": { + "http": { + "200": 1.0222222222222221 + } + }, + "outbound": { + "http": { + "200": 0.5999999999999999 + } + }, + "healthAnnotations": {} + } + } + } + ] +} diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/bookinfo/apps/details.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/bookinfo/apps/details.json new file mode 100644 index 0000000000..89835031ce --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/bookinfo/apps/details.json @@ -0,0 +1,58 @@ +{ + "namespace": { + "name": "bookinfo", + "cluster": "Kubernetes", + "isAmbient": false, + "labels": { + "istio-injection": "enabled", + "kubernetes.io/metadata.name": "bookinfo" + }, + "annotations": null + }, + "name": "details", + "cluster": "Kubernetes", + "workloads": [ + { + "workloadName": "details-v1", + "istioSidecar": true, + "istioAmbient": false, + "labels": { + "app": "details", + "version": "v1" + }, + "serviceAccountNames": ["bookinfo-details"] + } + ], + "serviceNames": ["details"], + "runtimes": [ + { + "name": "", + "dashboardRefs": [ + { + "template": "envoy", + "title": "Envoy Metrics" + } + ] + } + ], + "health": { + "workloadStatuses": [ + { + "name": "details-v1", + "desiredReplicas": 1, + "currentReplicas": 1, + "availableReplicas": 1, + "syncedProxies": 1 + } + ], + "requests": { + "inbound": { + "http": { + "200": 0.9999999999999999 + } + }, + "outbound": {}, + "healthAnnotations": {} + } + } +} diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/bookinfo/apps/kiali_traffic_generator.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/bookinfo/apps/kiali_traffic_generator.json new file mode 100644 index 0000000000..45a540cd11 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/bookinfo/apps/kiali_traffic_generator.json @@ -0,0 +1,54 @@ +{ + "namespace": { + "name": "bookinfo", + "cluster": "Kubernetes", + "isAmbient": false, + "labels": { + "istio-injection": "enabled", + "kubernetes.io/metadata.name": "bookinfo" + }, + "annotations": null + }, + "name": "kiali-traffic-generator", + "cluster": "Kubernetes", + "workloads": [ + { + "workloadName": "kiali-traffic-generator", + "istioSidecar": true, + "istioAmbient": false, + "labels": { + "app": "kiali-traffic-generator", + "kiali-test": "traffic-generator" + }, + "serviceAccountNames": ["default"] + } + ], + "serviceNames": [], + "runtimes": [ + { + "name": "", + "dashboardRefs": [ + { + "template": "envoy", + "title": "Envoy Metrics" + } + ] + } + ], + "health": { + "workloadStatuses": [ + { + "name": "kiali-traffic-generator", + "desiredReplicas": 1, + "currentReplicas": 1, + "availableReplicas": 1, + "syncedProxies": 1 + } + ], + "requests": { + "inbound": {}, + "outbound": {}, + "healthAnnotations": {} + } + } +} diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/bookinfo/apps/productpage.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/bookinfo/apps/productpage.json new file mode 100644 index 0000000000..1decb97e17 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/bookinfo/apps/productpage.json @@ -0,0 +1,62 @@ +{ + "namespace": { + "name": "bookinfo", + "cluster": "Kubernetes", + "isAmbient": false, + "labels": { + "istio-injection": "enabled", + "kubernetes.io/metadata.name": "bookinfo" + }, + "annotations": null + }, + "name": "productpage", + "cluster": "Kubernetes", + "workloads": [ + { + "workloadName": "productpage-v1", + "istioSidecar": true, + "istioAmbient": false, + "labels": { + "app": "productpage", + "version": "v1" + }, + "serviceAccountNames": ["bookinfo-productpage"] + } + ], + "serviceNames": ["productpage"], + "runtimes": [ + { + "name": "", + "dashboardRefs": [ + { + "template": "envoy", + "title": "Envoy Metrics" + } + ] + } + ], + "health": { + "workloadStatuses": [ + { + "name": "productpage-v1", + "desiredReplicas": 1, + "currentReplicas": 1, + "availableReplicas": 1, + "syncedProxies": 1 + } + ], + "requests": { + "inbound": { + "http": { + "200": 0.9999999999999999 + } + }, + "outbound": { + "http": { + "200": 1.9999999999999996 + } + }, + "healthAnnotations": {} + } + } +} diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/bookinfo/apps/ratings.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/bookinfo/apps/ratings.json new file mode 100644 index 0000000000..491a6c62ee --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/bookinfo/apps/ratings.json @@ -0,0 +1,58 @@ +{ + "namespace": { + "name": "bookinfo", + "cluster": "Kubernetes", + "isAmbient": false, + "labels": { + "istio-injection": "enabled", + "kubernetes.io/metadata.name": "bookinfo" + }, + "annotations": null + }, + "name": "ratings", + "cluster": "Kubernetes", + "workloads": [ + { + "workloadName": "ratings-v1", + "istioSidecar": true, + "istioAmbient": false, + "labels": { + "app": "ratings", + "version": "v1" + }, + "serviceAccountNames": ["bookinfo-ratings"] + } + ], + "serviceNames": ["ratings"], + "runtimes": [ + { + "name": "", + "dashboardRefs": [ + { + "template": "envoy", + "title": "Envoy Metrics" + } + ] + } + ], + "health": { + "workloadStatuses": [ + { + "name": "ratings-v1", + "desiredReplicas": 1, + "currentReplicas": 1, + "availableReplicas": 1, + "syncedProxies": 1 + } + ], + "requests": { + "inbound": { + "http": { + "200": 0.6666666666666666 + } + }, + "outbound": {}, + "healthAnnotations": {} + } + } +} diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/bookinfo/apps/reviews.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/bookinfo/apps/reviews.json new file mode 100644 index 0000000000..229f0bbb0c --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/bookinfo/apps/reviews.json @@ -0,0 +1,96 @@ +{ + "namespace": { + "name": "bookinfo", + "cluster": "Kubernetes", + "isAmbient": false, + "labels": { + "istio-injection": "enabled", + "kubernetes.io/metadata.name": "bookinfo" + }, + "annotations": null + }, + "name": "reviews", + "cluster": "Kubernetes", + "workloads": [ + { + "workloadName": "reviews-v1", + "istioSidecar": true, + "istioAmbient": false, + "labels": { + "app": "reviews", + "version": "v1" + }, + "serviceAccountNames": ["bookinfo-reviews"] + }, + { + "workloadName": "reviews-v2", + "istioSidecar": true, + "istioAmbient": false, + "labels": { + "app": "reviews", + "version": "v2" + }, + "serviceAccountNames": ["bookinfo-reviews"] + }, + { + "workloadName": "reviews-v3", + "istioSidecar": true, + "istioAmbient": false, + "labels": { + "app": "reviews", + "version": "v3" + }, + "serviceAccountNames": ["bookinfo-reviews"] + } + ], + "serviceNames": ["reviews"], + "runtimes": [ + { + "name": "", + "dashboardRefs": [ + { + "template": "envoy", + "title": "Envoy Metrics" + } + ] + } + ], + "health": { + "workloadStatuses": [ + { + "name": "reviews-v1", + "desiredReplicas": 1, + "currentReplicas": 1, + "availableReplicas": 1, + "syncedProxies": 1 + }, + { + "name": "reviews-v2", + "desiredReplicas": 1, + "currentReplicas": 1, + "availableReplicas": 1, + "syncedProxies": 1 + }, + { + "name": "reviews-v3", + "desiredReplicas": 1, + "currentReplicas": 1, + "availableReplicas": 1, + "syncedProxies": 1 + } + ], + "requests": { + "inbound": { + "http": { + "200": 1.0222222222222221 + } + }, + "outbound": { + "http": { + "200": 0.7555555555555555 + } + }, + "healthAnnotations": {} + } + } +} diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/bookinfo/dashboard.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/bookinfo/dashboard.json new file mode 100644 index 0000000000..4d0db26de3 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/bookinfo/dashboard.json @@ -0,0 +1,347 @@ +{ + "name": "", + "title": "Inbound Metrics", + "charts": [ + { + "name": "Request volume", + "unit": "ops", + "spans": 3, + "startCollapsed": false, + "metrics": [ + { + "labels": { + "source_canonical_service": "productpage", + "source_workload_namespace": "bookinfo" + }, + "datapoints": [ + [1710326010, "0.9999333377774815"], + [1710326040, "1"], + [1710326070, "1"], + [1710326100, "1.0000666711114075"], + [1710326130, "1.0000666711114075"], + [1710326160, "1"], + [1710326190, "1"], + [1710326220, "1"], + [1710326250, "1.0000666711114075"], + [1710326280, "1"], + [1710326310, "0.9999333377774815"], + [1710326340, "1"], + [1710326370, "0.9999333377774815"], + [1710326400, "1"], + [1710326430, "1.0000666711114075"], + [1710326460, "1"], + [1710326490, "0.9999333377774815"], + [1710326520, "1"], + [1710326550, "0.9999333377774815"], + [1710326580, "0.9999333377774815"], + [1710326610, "1.0000666711114075"] + ], + "name": "request_count" + } + ], + "xAxis": null, + "error": "" + }, + { + "name": "Request duration", + "unit": "seconds", + "spans": 3, + "startCollapsed": false, + "metrics": [ + { + "labels": { + "source_canonical_service": "productpage", + "source_workload_namespace": "bookinfo" + }, + "datapoints": [ + [1710326010, "0"], + [1710326040, "0.00027666666666652115"], + [1710326070, "0.0005533333333332848"], + [1710326100, "0.00021000000000009702"], + [1710326130, "0.0010966666666667154"], + [1710326160, "0.00013999999999990298"], + [1710326190, "0.00006999999999995149"], + [1710326220, "0.0005533333333330423"], + [1710326250, "0.0002766666666667637"], + [1710326280, "0.0003466666666667152"], + [1710326310, "0.0006166666666669092"], + [1710326340, "0.00014000000000014551"], + [1710326370, "0.0007566666666668122"], + [1710326400, "0.00020666666666656968"], + [1710326430, "0.00014000000000014554"], + [1710326460, "0.0002800000000000485"], + [1710326490, "0.00027999999999980596"], + [1710326520, "0.0006933333333331878"], + [1710326550, "0.0002099999999998545"], + [1710326580, "0.0006866666666666181"], + [1710326610, "0.0004166666666666667"] + ], + "stat": "avg", + "name": "request_duration_millis" + } + ], + "xAxis": null, + "error": "" + }, + { + "name": "Request size", + "unit": "bytes", + "spans": 3, + "startCollapsed": false, + "metrics": [ + { + "labels": { + "source_canonical_service": "productpage", + "source_workload_namespace": "bookinfo" + }, + "datapoints": [ + [1710326010, "1249.9999999999998"], + [1710326040, "1250"], + [1710326070, "1250"], + [1710326100, "1250"], + [1710326130, "1250"], + [1710326160, "1250"], + [1710326190, "1250"], + [1710326220, "1250"], + [1710326250, "1250"], + [1710326280, "1250"], + [1710326310, "1249.9999999999998"], + [1710326340, "1250"], + [1710326370, "1249.9999999999998"], + [1710326400, "1250"], + [1710326430, "1250"], + [1710326460, "1250"], + [1710326490, "1249.9999999999998"], + [1710326520, "1250"], + [1710326550, "1249.9999999999998"], + [1710326580, "1249.9999999999998"], + [1710326610, "1250"] + ], + "stat": "avg", + "name": "request_size" + } + ], + "xAxis": null, + "error": "" + }, + { + "name": "Response size", + "unit": "bytes", + "spans": 3, + "startCollapsed": false, + "metrics": [ + { + "labels": { + "source_canonical_service": "productpage", + "source_workload_namespace": "bookinfo" + }, + "datapoints": [ + [1710326010, "1149.9999999999998"], + [1710326040, "1150"], + [1710326070, "1150"], + [1710326100, "1150"], + [1710326130, "1150"], + [1710326160, "1150"], + [1710326190, "1150"], + [1710326220, "1150"], + [1710326250, "1150"], + [1710326280, "1150"], + [1710326310, "1149.9999999999998"], + [1710326340, "1150"], + [1710326370, "1149.9999999999998"], + [1710326400, "1150"], + [1710326430, "1150"], + [1710326460, "1150"], + [1710326490, "1149.9999999999998"], + [1710326520, "1150"], + [1710326550, "1149.9999999999998"], + [1710326580, "1149.9999999999998"], + [1710326610, "1150"] + ], + "stat": "avg", + "name": "response_size" + } + ], + "xAxis": null, + "error": "" + }, + { + "name": "Request throughput", + "unit": "bitrate", + "spans": 3, + "startCollapsed": false, + "metrics": [ + { + "labels": { + "source_canonical_service": "productpage", + "source_workload_namespace": "bookinfo" + }, + "datapoints": [ + [1710326010, "9999.333377774814"], + [1710326040, "10000"], + [1710326070, "10000"], + [1710326100, "10000.666711114074"], + [1710326130, "10000.666711114074"], + [1710326160, "10000"], + [1710326190, "10000"], + [1710326220, "10000"], + [1710326250, "10000.666711114074"], + [1710326280, "10000"], + [1710326310, "9999.333377774814"], + [1710326340, "10000"], + [1710326370, "9999.333377774814"], + [1710326400, "10000"], + [1710326430, "10000.666711114074"], + [1710326460, "10000"], + [1710326490, "9999.333377774814"], + [1710326520, "10000"], + [1710326550, "9999.333377774814"], + [1710326580, "9999.333377774814"], + [1710326610, "10000.666711114074"] + ], + "name": "request_throughput" + } + ], + "xAxis": null, + "error": "" + }, + { + "name": "Response throughput", + "unit": "bitrate", + "spans": 3, + "startCollapsed": false, + "metrics": [ + { + "labels": { + "source_canonical_service": "productpage", + "source_workload_namespace": "bookinfo" + }, + "datapoints": [ + [1710326010, "9199.386707552829"], + [1710326040, "9200"], + [1710326070, "9200"], + [1710326100, "9200.61337422495"], + [1710326130, "9200.61337422495"], + [1710326160, "9200"], + [1710326190, "9200"], + [1710326220, "9200"], + [1710326250, "9200.61337422495"], + [1710326280, "9200"], + [1710326310, "9199.386707552829"], + [1710326340, "9200"], + [1710326370, "9199.386707552829"], + [1710326400, "9200"], + [1710326430, "9200.61337422495"], + [1710326460, "9200"], + [1710326490, "9199.386707552829"], + [1710326520, "9200"], + [1710326550, "9199.386707552829"], + [1710326580, "9199.386707552829"], + [1710326610, "9200.61337422495"] + ], + "name": "response_throughput" + } + ], + "xAxis": null, + "error": "" + }, + { + "name": "gRPC received", + "unit": "msgrate", + "spans": 3, + "startCollapsed": false, + "metrics": [], + "xAxis": null, + "error": "" + }, + { + "name": "gRPC sent", + "unit": "msgrate", + "spans": 3, + "startCollapsed": false, + "metrics": [], + "xAxis": null, + "error": "" + }, + { + "name": "TCP opened", + "unit": "connrate", + "spans": 3, + "startCollapsed": false, + "metrics": [], + "xAxis": null, + "error": "" + }, + { + "name": "TCP closed", + "unit": "connrate", + "spans": 3, + "startCollapsed": false, + "metrics": [], + "xAxis": null, + "error": "" + }, + { + "name": "TCP received", + "unit": "bitrate", + "spans": 3, + "startCollapsed": false, + "metrics": [], + "xAxis": null, + "error": "" + }, + { + "name": "TCP sent", + "unit": "bitrate", + "spans": 3, + "startCollapsed": false, + "metrics": [], + "xAxis": null, + "error": "" + } + ], + "aggregations": [ + { + "label": "destination_canonical_revision", + "displayName": "Local version", + "singleSelection": false + }, + { + "label": "source_workload_namespace", + "displayName": "Remote namespace", + "singleSelection": false + }, + { + "label": "source_canonical_service", + "displayName": "Remote app", + "singleSelection": false + }, + { + "label": "source_canonical_revision", + "displayName": "Remote version", + "singleSelection": false + }, + { + "label": "response_code", + "displayName": "Response code", + "singleSelection": false + }, + { + "label": "grpc_response_status", + "displayName": "GRPC status", + "singleSelection": false + }, + { + "label": "response_flags", + "displayName": "Response flags", + "singleSelection": false + }, + { + "label": "connection_security_policy", + "displayName": "Connection Security Policy", + "singleSelection": false + } + ], + "externalLinks": null, + "rows": 3 +} diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/bookinfo/health/app.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/bookinfo/health/app.json new file mode 100644 index 0000000000..9bd9fa35fb --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/bookinfo/health/app.json @@ -0,0 +1,120 @@ +{ + "details": { + "workloadStatuses": [ + { + "name": "details-v1", + "desiredReplicas": 1, + "currentReplicas": 1, + "availableReplicas": 1, + "syncedProxies": 1 + } + ], + "requests": { + "inbound": { + "http": { + "200": 0.9999999999999999 + } + }, + "outbound": {}, + "healthAnnotations": {} + } + }, + "kiali-traffic-generator": { + "workloadStatuses": [ + { + "name": "kiali-traffic-generator", + "desiredReplicas": 1, + "currentReplicas": 1, + "availableReplicas": 1, + "syncedProxies": 1 + } + ], + "requests": { + "inbound": {}, + "outbound": {}, + "healthAnnotations": {} + } + }, + "productpage": { + "workloadStatuses": [ + { + "name": "productpage-v1", + "desiredReplicas": 1, + "currentReplicas": 1, + "availableReplicas": 1, + "syncedProxies": 1 + } + ], + "requests": { + "inbound": { + "http": { + "200": 0.9999999999999999 + } + }, + "outbound": { + "http": { + "200": 1.9999999999999998 + } + }, + "healthAnnotations": {} + } + }, + "ratings": { + "workloadStatuses": [ + { + "name": "ratings-v1", + "desiredReplicas": 1, + "currentReplicas": 1, + "availableReplicas": 1, + "syncedProxies": 1 + } + ], + "requests": { + "inbound": { + "http": { + "200": 0.711111111111111 + } + }, + "outbound": {}, + "healthAnnotations": {} + } + }, + "reviews": { + "workloadStatuses": [ + { + "name": "reviews-v1", + "desiredReplicas": 1, + "currentReplicas": 1, + "availableReplicas": 1, + "syncedProxies": 1 + }, + { + "name": "reviews-v2", + "desiredReplicas": 1, + "currentReplicas": 1, + "availableReplicas": 1, + "syncedProxies": 1 + }, + { + "name": "reviews-v3", + "desiredReplicas": 1, + "currentReplicas": 1, + "availableReplicas": 1, + "syncedProxies": 1 + } + ], + "requests": { + "inbound": { + "http": { + "200": 0.9999999999999999 + } + }, + "outbound": { + "http": { + "200": 0.711111111111111 + } + }, + "healthAnnotations": {} + } + } +} diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/bookinfo/health/service.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/bookinfo/health/service.json new file mode 100644 index 0000000000..6da4f68dbb --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/bookinfo/health/service.json @@ -0,0 +1,46 @@ +{ + "details": { + "requests": { + "inbound": { + "http": { + "200": 0.9999999999999999 + } + }, + "outbound": {}, + "healthAnnotations": {} + } + }, + "productpage": { + "requests": { + "inbound": { + "http": { + "200": 0.9999999999999999 + } + }, + "outbound": {}, + "healthAnnotations": {} + } + }, + "ratings": { + "requests": { + "inbound": { + "http": { + "200": 0.7555555555555555 + } + }, + "outbound": {}, + "healthAnnotations": {} + } + }, + "reviews": { + "requests": { + "inbound": { + "http": { + "200": 1 + } + }, + "outbound": {}, + "healthAnnotations": {} + } + } +} diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/bookinfo/health/workload.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/bookinfo/health/workload.json new file mode 100644 index 0000000000..12af3ccd76 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/bookinfo/health/workload.json @@ -0,0 +1,136 @@ +{ + "details-v1": { + "workloadStatus": { + "name": "details-v1", + "desiredReplicas": 1, + "currentReplicas": 1, + "availableReplicas": 1, + "syncedProxies": 1 + }, + "requests": { + "inbound": { + "http": { + "200": 0.9999999999999999 + } + }, + "outbound": {}, + "healthAnnotations": {} + } + }, + "kiali-traffic-generator": { + "workloadStatus": { + "name": "kiali-traffic-generator", + "desiredReplicas": 1, + "currentReplicas": 1, + "availableReplicas": 1, + "syncedProxies": 1 + }, + "requests": { + "inbound": {}, + "outbound": {}, + "healthAnnotations": {} + } + }, + "productpage-v1": { + "workloadStatus": { + "name": "productpage-v1", + "desiredReplicas": 1, + "currentReplicas": 1, + "availableReplicas": 1, + "syncedProxies": 1 + }, + "requests": { + "inbound": { + "http": { + "200": 0.9999999999999999 + } + }, + "outbound": { + "http": { + "200": 2 + } + }, + "healthAnnotations": {} + } + }, + "ratings-v1": { + "workloadStatus": { + "name": "ratings-v1", + "desiredReplicas": 1, + "currentReplicas": 1, + "availableReplicas": 1, + "syncedProxies": 1 + }, + "requests": { + "inbound": { + "http": { + "200": 0.6666666666666665 + } + }, + "outbound": {}, + "healthAnnotations": {} + } + }, + "reviews-v1": { + "workloadStatus": { + "name": "reviews-v1", + "desiredReplicas": 1, + "currentReplicas": 1, + "availableReplicas": 1, + "syncedProxies": 1 + }, + "requests": { + "inbound": { + "http": { + "200": 0.3333333333333333 + } + }, + "outbound": {}, + "healthAnnotations": {} + } + }, + "reviews-v2": { + "workloadStatus": { + "name": "reviews-v2", + "desiredReplicas": 1, + "currentReplicas": 1, + "availableReplicas": 1, + "syncedProxies": 1 + }, + "requests": { + "inbound": { + "http": { + "200": 0.3777777777777777 + } + }, + "outbound": { + "http": { + "200": 0.3777777777777777 + } + }, + "healthAnnotations": {} + } + }, + "reviews-v3": { + "workloadStatus": { + "name": "reviews-v3", + "desiredReplicas": 1, + "currentReplicas": 1, + "availableReplicas": 1, + "syncedProxies": 1 + }, + "requests": { + "inbound": { + "http": { + "200": 0.3555555555555555 + } + }, + "outbound": { + "http": { + "200": 0.2444444444444444 + } + }, + "healthAnnotations": {} + } + } +} diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/bookinfo/istio_config.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/bookinfo/istio_config.json new file mode 100644 index 0000000000..dee62a1fc3 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/bookinfo/istio_config.json @@ -0,0 +1,193 @@ +{ + "namespace": { + "name": "bookinfo", + "cluster": "", + "isAmbient": false, + "labels": null, + "annotations": null + }, + "destinationRules": [], + "envoyFilters": [], + "gateways": [ + { + "kind": "Gateway", + "apiVersion": "networking.istio.io/v1beta1", + "metadata": { + "name": "bookinfo-gateway", + "namespace": "bookinfo", + "uid": "6369d379-ce97-4a77-98ef-5702845ddc56", + "resourceVersion": "811259", + "generation": 3, + "creationTimestamp": "2024-03-05T14:38:05Z", + "annotations": { + "kubectl.kubernetes.io/last-applied-configuration": "{\"apiVersion\":\"networking.istio.io/v1alpha3\",\"kind\":\"Gateway\",\"metadata\":{\"annotations\":{},\"name\":\"bookinfo-gateway\",\"namespace\":\"bookinfo\"},\"spec\":{\"selector\":{\"istio\":\"ingressgateway\"},\"servers\":[{\"hosts\":[\"*\"],\"port\":{\"name\":\"http\",\"number\":8080,\"protocol\":\"HTTP\"}}]}}\n" + }, + "managedFields": [ + { + "manager": "kubectl-client-side-apply", + "operation": "Update", + "apiVersion": "networking.istio.io/v1alpha3", + "time": "2024-03-05T14:38:05Z", + "fieldsType": "FieldsV1", + "fieldsV1": { + "f:metadata": { + "f:annotations": { + ".": {}, + "f:kubectl.kubernetes.io/last-applied-configuration": {} + } + }, + "f:spec": { + ".": {}, + "f:selector": {}, + "f:servers": {} + } + } + }, + { + "manager": "kiali", + "operation": "Update", + "apiVersion": "networking.istio.io/v1beta1", + "time": "2024-03-20T12:42:26Z", + "fieldsType": "FieldsV1", + "fieldsV1": { + "f:spec": { + "f:selector": { + "f:istio": {} + } + } + } + } + ] + }, + "spec": { + "servers": [ + { + "port": { + "number": 8080, + "protocol": "HTTP", + "name": "http" + }, + "hosts": ["*"] + } + ], + "selector": { + "istio": "ingressgateway" + } + }, + "status": {} + } + ], + "serviceEntries": [], + "sidecars": [], + "virtualServices": [ + { + "kind": "VirtualService", + "apiVersion": "networking.istio.io/v1beta1", + "metadata": { + "name": "bookinfo", + "namespace": "bookinfo", + "uid": "16c9b2e6-4bc2-426c-9464-853a4148435f", + "resourceVersion": "784735", + "generation": 9, + "creationTimestamp": "2024-03-05T14:38:05Z", + "annotations": { + "kubectl.kubernetes.io/last-applied-configuration": "{\"apiVersion\":\"networking.istio.io/v1alpha3\",\"kind\":\"VirtualService\",\"metadata\":{\"annotations\":{},\"name\":\"bookinfo\",\"namespace\":\"bookinfo\"},\"spec\":{\"gateways\":[\"bookinfo-gateway\"],\"hosts\":[\"*\"],\"http\":[{\"match\":[{\"uri\":{\"exact\":\"/productpage\"}},{\"uri\":{\"prefix\":\"/static\"}},{\"uri\":{\"exact\":\"/login\"}},{\"uri\":{\"exact\":\"/logout\"}},{\"uri\":{\"prefix\":\"/api/v1/products\"}}],\"route\":[{\"destination\":{\"host\":\"productpage\",\"port\":{\"number\":9080}}}]}]}}\n" + }, + "managedFields": [ + { + "manager": "kubectl-client-side-apply", + "operation": "Update", + "apiVersion": "networking.istio.io/v1alpha3", + "time": "2024-03-05T14:38:05Z", + "fieldsType": "FieldsV1", + "fieldsV1": { + "f:metadata": { + "f:annotations": { + ".": {}, + "f:kubectl.kubernetes.io/last-applied-configuration": {} + } + }, + "f:spec": { + ".": {}, + "f:hosts": {}, + "f:http": {} + } + } + }, + { + "manager": "kiali", + "operation": "Update", + "apiVersion": "networking.istio.io/v1beta1", + "time": "2024-03-19T14:43:01Z", + "fieldsType": "FieldsV1", + "fieldsV1": { + "f:spec": { + "f:gateways": {} + } + } + } + ] + }, + "spec": { + "hosts": ["*"], + "gateways": ["bookinfo-gateway"], + "http": [ + { + "match": [ + { + "uri": { + "exact": "/productpage" + } + }, + { + "uri": { + "prefix": "/static" + } + }, + { + "uri": { + "exact": "/login" + } + }, + { + "uri": { + "exact": "/logout" + } + }, + { + "uri": { + "prefix": "/api/v1/products" + } + } + ], + "route": [ + { + "destination": { + "host": "productpage", + "port": { + "number": 9080 + } + } + } + ] + } + ] + }, + "status": {} + } + ], + "workloadEntries": [], + "workloadGroups": [], + "wasmPlugins": [], + "telemetries": [], + "k8sGateways": [], + "k8sGRPCRoutes": [], + "k8sHTTPRoutes": [], + "k8sReferenceGrants": [], + "k8sTCPRoutes": [], + "k8sTLSRoutes": [], + "authorizationPolicies": [], + "peerAuthentications": [], + "requestAuthentications": [], + "validations": {} +} diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/bookinfo/istio_configs/gateways/bookinfo-gateway.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/bookinfo/istio_configs/gateways/bookinfo-gateway.json new file mode 100644 index 0000000000..e97563b242 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/bookinfo/istio_configs/gateways/bookinfo-gateway.json @@ -0,0 +1,103 @@ +{ + "namespace": { + "name": "bookinfo", + "cluster": "", + "isAmbient": false, + "labels": null, + "annotations": null + }, + "objectType": "gateways", + "authorizationPolicy": null, + "destinationRule": null, + "envoyFilter": null, + "gateway": { + "kind": "Gateway", + "apiVersion": "networking.istio.io/v1beta1", + "metadata": { + "name": "bookinfo-gateway", + "namespace": "bookinfo", + "uid": "6369d379-ce97-4a77-98ef-5702845ddc56", + "resourceVersion": "811259", + "generation": 3, + "creationTimestamp": "2024-03-05T14:38:05Z", + "annotations": { + "kubectl.kubernetes.io/last-applied-configuration": "{\"apiVersion\":\"networking.istio.io/v1alpha3\",\"kind\":\"Gateway\",\"metadata\":{\"annotations\":{},\"name\":\"bookinfo-gateway\",\"namespace\":\"bookinfo\"},\"spec\":{\"selector\":{\"istio\":\"ingressgateway\"},\"servers\":[{\"hosts\":[\"*\"],\"port\":{\"name\":\"http\",\"number\":8080,\"protocol\":\"HTTP\"}}]}}\n" + }, + "managedFields": [ + { + "manager": "kubectl-client-side-apply", + "operation": "Update", + "apiVersion": "networking.istio.io/v1alpha3", + "time": "2024-03-05T14:38:05Z", + "fieldsType": "FieldsV1", + "fieldsV1": { + "f:metadata": { + "f:annotations": { + ".": {}, + "f:kubectl.kubernetes.io/last-applied-configuration": {} + } + }, + "f:spec": { + ".": {}, + "f:selector": {}, + "f:servers": {} + } + } + }, + { + "manager": "kiali", + "operation": "Update", + "apiVersion": "networking.istio.io/v1beta1", + "time": "2024-03-20T12:42:26Z", + "fieldsType": "FieldsV1", + "fieldsV1": { + "f:spec": { + "f:selector": { + "f:istio": {} + } + } + } + } + ] + }, + "spec": { + "servers": [ + { + "port": { + "number": 8080, + "protocol": "HTTP", + "name": "http" + }, + "hosts": ["*"] + } + ], + "selector": { + "istio": "ingressgateway" + } + }, + "status": {} + }, + "peerAuthentication": null, + "requestAuthentication": null, + "serviceEntry": null, + "sidecar": null, + "virtualService": null, + "workloadEntry": null, + "workloadGroup": null, + "wasmPlugin": null, + "telemetry": null, + "k8sGateway": null, + "k8sGRPCRoute": null, + "k8sHTTPRoute": null, + "k8sReferenceGrant": null, + "k8sTCPRoute": null, + "k8sTLSRoute": null, + "permissions": { + "create": true, + "update": true, + "delete": true + }, + "validation": null, + "references": null, + "help": null +} diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/bookinfo/istio_configs/virtualservices/bookinfo.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/bookinfo/istio_configs/virtualservices/bookinfo.json new file mode 100644 index 0000000000..0bb64acead --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/bookinfo/istio_configs/virtualservices/bookinfo.json @@ -0,0 +1,131 @@ +{ + "namespace": { + "name": "bookinfo", + "cluster": "", + "isAmbient": false, + "labels": null, + "annotations": null + }, + "objectType": "virtualservices", + "authorizationPolicy": null, + "destinationRule": null, + "envoyFilter": null, + "gateway": null, + "peerAuthentication": null, + "requestAuthentication": null, + "serviceEntry": null, + "sidecar": null, + "virtualService": { + "kind": "VirtualService", + "apiVersion": "networking.istio.io/v1beta1", + "metadata": { + "name": "bookinfo", + "namespace": "bookinfo", + "uid": "16c9b2e6-4bc2-426c-9464-853a4148435f", + "resourceVersion": "784735", + "generation": 9, + "creationTimestamp": "2024-03-05T14:38:05Z", + "annotations": { + "kubectl.kubernetes.io/last-applied-configuration": "{\"apiVersion\":\"networking.istio.io/v1alpha3\",\"kind\":\"VirtualService\",\"metadata\":{\"annotations\":{},\"name\":\"bookinfo\",\"namespace\":\"bookinfo\"},\"spec\":{\"gateways\":[\"bookinfo-gateway\"],\"hosts\":[\"*\"],\"http\":[{\"match\":[{\"uri\":{\"exact\":\"/productpage\"}},{\"uri\":{\"prefix\":\"/static\"}},{\"uri\":{\"exact\":\"/login\"}},{\"uri\":{\"exact\":\"/logout\"}},{\"uri\":{\"prefix\":\"/api/v1/products\"}}],\"route\":[{\"destination\":{\"host\":\"productpage\",\"port\":{\"number\":9080}}}]}]}}\n" + }, + "managedFields": [ + { + "manager": "kubectl-client-side-apply", + "operation": "Update", + "apiVersion": "networking.istio.io/v1alpha3", + "time": "2024-03-05T14:38:05Z", + "fieldsType": "FieldsV1", + "fieldsV1": { + "f:metadata": { + "f:annotations": { + ".": {}, + "f:kubectl.kubernetes.io/last-applied-configuration": {} + } + }, + "f:spec": { + ".": {}, + "f:hosts": {}, + "f:http": {} + } + } + }, + { + "manager": "kiali", + "operation": "Update", + "apiVersion": "networking.istio.io/v1beta1", + "time": "2024-03-19T14:43:01Z", + "fieldsType": "FieldsV1", + "fieldsV1": { + "f:spec": { + "f:gateways": {} + } + } + } + ] + }, + "spec": { + "hosts": ["*"], + "gateways": ["bookinfo-gateway"], + "http": [ + { + "match": [ + { + "uri": { + "exact": "/productpage" + } + }, + { + "uri": { + "prefix": "/static" + } + }, + { + "uri": { + "exact": "/login" + } + }, + { + "uri": { + "exact": "/logout" + } + }, + { + "uri": { + "prefix": "/api/v1/products" + } + } + ], + "route": [ + { + "destination": { + "host": "productpage", + "port": { + "number": 9080 + } + } + } + ] + } + ] + }, + "status": {} + }, + "workloadEntry": null, + "workloadGroup": null, + "wasmPlugin": null, + "telemetry": null, + "k8sGateway": null, + "k8sGRPCRoute": null, + "k8sHTTPRoute": null, + "k8sReferenceGrant": null, + "k8sTCPRoute": null, + "k8sTLSRoute": null, + "permissions": { + "create": true, + "update": true, + "delete": true + }, + "validation": null, + "references": null, + "help": null +} diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/bookinfo/metrics/inbound/metrics_inbound_120.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/bookinfo/metrics/inbound/metrics_inbound_120.json new file mode 100644 index 0000000000..56ae0787f5 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/bookinfo/metrics/inbound/metrics_inbound_120.json @@ -0,0 +1,28 @@ +{ + "request_count": [ + { + "labels": {}, + "datapoints": [ + [1697023800, "3.466666666666667"], + [1697023830, "3.399800039992002"], + [1697023860, "3.2664801740597667"], + [1697023890, "3.533333333333333"], + [1697023920, "3.866666666666667"] + ], + "name": "request_count" + } + ], + "request_error_count": [ + { + "labels": {}, + "datapoints": [ + [1697023800, "0"], + [1697023830, "0"], + [1697023860, "0"], + [1697023890, "0"], + [1697023920, "0"] + ], + "name": "request_error_count" + } + ] +} diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/bookinfo/metrics/inbound/metrics_inbound_1800.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/bookinfo/metrics/inbound/metrics_inbound_1800.json new file mode 100644 index 0000000000..64876a240a --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/bookinfo/metrics/inbound/metrics_inbound_1800.json @@ -0,0 +1,40 @@ +{ + "request_count": [ + { + "labels": {}, + "datapoints": [ + [1697022180, "3.6605924340032585"], + [1697022360, "3.672727272727272"], + [1697022540, "3.6606060606060598"], + [1697022720, "3.6666666666666656"], + [1697022900, "3.6606060606060598"], + [1697023080, "3.7515151515151506"], + [1697023260, "3.642218224270407"], + [1697023440, "3.6424242424242417"], + [1697023620, "3.7272727272727266"], + [1697023800, "3.636363636363636"], + [1697023980, "3.6363636363636362"] + ], + "name": "request_count" + } + ], + "request_error_count": [ + { + "labels": {}, + "datapoints": [ + [1697022180, "0"], + [1697022360, "0"], + [1697022540, "0"], + [1697022720, "0"], + [1697022900, "0"], + [1697023080, "0"], + [1697023260, "0"], + [1697023440, "0"], + [1697023620, "0"], + [1697023800, "0"], + [1697023980, "0"] + ], + "name": "request_error_count" + } + ] +} diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/bookinfo/metrics/inbound/metrics_inbound_300.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/bookinfo/metrics/inbound/metrics_inbound_300.json new file mode 100644 index 0000000000..3b20582b5c --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/bookinfo/metrics/inbound/metrics_inbound_300.json @@ -0,0 +1,914 @@ +{ + "grpc_received": null, + "grpc_sent": null, + "request_count": [ + { + "labels": {}, + "datapoints": [ + [1696410795, "3.577777777777777"], + [1696410810, "3.622222222222221"], + [1696410825, "3.599999999999999"], + [1696410840, "3.5999999999999996"], + [1696410855, "3.5111111111111106"], + [1696410870, "3.4666666666666663"], + [1696410885, "3.5333333333333328"], + [1696410900, "3.5111111111111106"], + [1696410915, "3.555555555555555"], + [1696410930, "3.621711372212227"], + [1696410945, "3.7333333333333325"], + [1696410960, "3.6888888888888887"], + [1696410975, "3.622733594701489"], + [1696410990, "3.5554084154912404"], + [1696411005, "3.577777777777777"], + [1696411020, "3.6222222222222222"], + [1696411035, "3.622397558974338"], + [1696411050, "3.666666666666666"], + [1696411065, "3.0355833333333333"], + [1696411080, "1.9189166666666662"], + [1696411095, "0.5111111111111111"], + [1696411110, "0"], + [1696411125, "0"], + [1696411140, "0"], + [1696411155, "0"], + [1696411170, "0"], + [1696411185, "0"], + [1696411200, "0"], + [1696411215, "0"], + [1696411230, "0"], + [1696411245, "0"], + [1696411260, "0"], + [1696411275, "0"], + [1696411290, "0"], + [1696411305, "0"], + [1696411320, "0"], + [1696411335, "0"], + [1696411350, "0"], + [1696411365, "0"], + [1696411380, "0"], + [1696411395, "0.5777777777777777"], + [1696411410, "1.8667499999999997"], + [1696411425, "3.0945277777777775"], + [1696411440, "3.7223055555555553"], + [1696411455, "3.844444444444444"], + [1696411470, "3.7777777777777772"], + [1696411485, "3.7111111111111104"], + [1696411500, "3.733333333333333"], + [1696411515, "3.688888888888888"], + [1696411530, "3.666666666666666"], + [1696411545, "3.6222222222222222"], + [1696411560, "3.6887333575271"], + [1696411575, "3.733333333333333"], + [1696411590, "3.7777777777777777"], + [1696411605, "3.644600024201295"], + [1696411620, "3.64440000197522"], + [1696411635, "3.577777777777777"], + [1696411650, "3.7111111111111112"], + [1696411665, "3.6667111130865067"], + [1696411680, "3.7555555555555555"], + [1696411695, "3.7111111111111104"], + [1696411710, "3.7111111111111112"], + [1696411725, "3.622133337283775"], + [1696411740, "3.6"], + [1696411755, "3.644444444444444"], + [1696411770, "3.6889777817285703"], + [1696411785, "3.7777284005480873"], + [1696411800, "3.8222222222222215"], + [1696411815, "3.7555555555555546"], + [1696411830, "3.6661952130599573"], + [1696411845, "3.622222222222222"], + [1696411860, "3.666666666666666"], + [1696411875, "3.711600148202358"], + [1696411890, "3.644444444444444"], + [1696411905, "3.644444444444444"], + [1696411920, "3.622222222222222"], + [1696411935, "3.7111111111111112"], + [1696411950, "3.533333333333333"], + [1696411965, "3.533333333333333"], + [1696411980, "3.5331555713566205"], + [1696411995, "3.733333333333333"], + [1696412010, "3.622222222222222"], + [1696412025, "3.622400015803874"], + [1696412040, "3.622222222222222"], + [1696412055, "3.7111111111111112"], + [1696412070, "3.666666666666666"], + [1696412085, "3.666666666666666"], + [1696412100, "3.644311119999408"], + [1696412115, "3.6666666666666665"], + [1696412130, "3.5777185290516256"], + [1696412145, "3.577911120000592"], + [1696412160, "3.599999999999999"], + [1696412175, "3.6222814920183337"], + [1696412190, "3.6444128423152504"], + [1696412205, "3.5111111111111106"], + [1696412220, "3.621333728219557"], + [1696412235, "3.64446419928685"], + [1696412250, "3.688888888888888"], + [1696412265, "3.6008892841262776"], + [1696412280, "3.555555555555555"], + [1696412295, "3.555555555555555"], + [1696412310, "3.5555555555555554"], + [1696412325, "3.644444444444444"], + [1696412340, "3.6888888888888887"], + [1696412355, "3.711111111111111"], + [1696412370, "3.7111111111111112"], + [1696412385, "3.666666666666666"], + [1696412400, "3.555555555555555"], + [1696412415, "3.5333333333333328"], + [1696412430, "3.5555111130863324"], + [1696412445, "3.6666666666666665"], + [1696412460, "3.7111111111111112"], + [1696412475, "3.755600001975396"], + [1696412490, "3.8000000000000003"], + [1696412505, "3.7777777777777772"], + [1696412520, "3.7999999999999994"], + [1696412535, "3.8444444444444446"], + [1696412550, "3.688888888888888"], + [1696412565, "3.644444444444444"], + [1696412580, "3.5555555555555554"], + [1696412595, "3.6"] + ], + "name": "request_count" + } + ], + "request_duration_millis": [ + { + "labels": {}, + "datapoints": [ + [1696410795, "7.5645962732919285"], + [1696410810, "7.019631901840506"], + [1696410825, "6.782716049382715"], + [1696410840, "6.498765432098765"], + [1696410855, "6.617088607594929"], + [1696410870, "6.762025316455705"], + [1696410885, "7.118867924528306"], + [1696410900, "7.021698113207562"], + [1696410915, "7.2767080745341595"], + [1696410930, "8.127719843059305"], + [1696410945, "8.459821428571418"], + [1696410960, "8.162195121951203"], + [1696410975, "7.567245817974092"], + [1696410990, "7.407068616263373"], + [1696411005, "8.43788819875777"], + [1696411020, "8.077914110429436"], + [1696411035, "8.08794526421048"], + [1696411050, "7.014759036144582"], + [1696411065, "6.607978236324356"], + [1696411080, "6.655912886939783"], + [1696411095, "2.7642857142856845"], + [1696411110, "NaN"], + [1696411125, "NaN"], + [1696411140, "NaN"], + [1696411155, "NaN"], + [1696411170, "NaN"], + [1696411185, "NaN"], + [1696411200, "NaN"], + [1696411215, "NaN"], + [1696411230, "NaN"], + [1696411245, "NaN"], + [1696411260, "NaN"], + [1696411275, "NaN"], + [1696411290, "NaN"], + [1696411305, "NaN"], + [1696411320, "NaN"], + [1696411335, "NaN"], + [1696411350, "NaN"], + [1696411365, "NaN"], + [1696411380, "NaN"], + [1696411395, "3.8761904761905015"], + [1696411410, "6.452448459725035"], + [1696411425, "5.9819901137018965"], + [1696411440, "6.213269220663208"], + [1696411455, "6.192774566473981"], + [1696411470, "6.533235294117629"], + [1696411485, "6.437425149700596"], + [1696411500, "6.775449101796406"], + [1696411515, "6.425449101796422"], + [1696411530, "7.216265060240964"], + [1696411545, "7.5265243902439165"], + [1696411560, "7.541374007531274"], + [1696411575, "6.799999999999992"], + [1696411590, "6.236011904761901"], + [1696411605, "6.2989043693660625"], + [1696411620, "6.499256365445137"], + [1696411635, "6.71073619631903"], + [1696411650, "7.01190476190475"], + [1696411665, "6.77995647248545"], + [1696411680, "7.267857142857117"], + [1696411695, "7.066265060240969"], + [1696411710, "7.394910179640704"], + [1696411725, "6.774941057751279"], + [1696411740, "6.828703703703713"], + [1696411755, "6.501552795031084"], + [1696411770, "7.861713569971116"], + [1696411785, "8.253635670380952"], + [1696411800, "9.162865497076009"], + [1696411815, "8.881764705882352"], + [1696411830, "8.529558572626945"], + [1696411845, "8.622256097560962"], + [1696411860, "7.677743902439009"], + [1696411875, "7.6418207924871995"], + [1696411890, "6.469090909090909"], + [1696411905, "6.387575757575752"], + [1696411920, "6.352147239263806"], + [1696411935, "6.634226190476188"], + [1696411950, "7.04748427672957"], + [1696411965, "7.104088050314491"], + [1696411980, "7.197714394440217"], + [1696411995, "6.841964285714277"], + [1696412010, "6.800304878048771"], + [1696412025, "6.63219087137394"], + [1696412040, "7.066564417177924"], + [1696412055, "7.158035714285704"], + [1696412070, "7.208928571428565"], + [1696412085, "6.9175757575757615"], + [1696412100, "6.680204190222556"], + [1696412115, "6.60304878048782"], + [1696412130, "7.147589279961249"], + [1696412145, "7.331397269920375"], + [1696412160, "7.555864197530868"], + [1696412175, "7.3379350122773825"], + [1696412190, "7.111091974580902"], + [1696412205, "7.103124999999996"], + [1696412220, "6.397247694068532"], + [1696412235, "6.805354054492854"], + [1696412250, "6.502727272727262"], + [1696412265, "6.650858726071548"], + [1696412280, "6.441509433962276"], + [1696412295, "6.476562500000013"], + [1696412310, "7.179754601226991"], + [1696412325, "6.864329268292677"], + [1696412340, "6.934848484848462"], + [1696412355, "6.306707317073169"], + [1696412370, "6.648181818181811"], + [1696412385, "6.394879518072293"], + [1696412400, "6.37331288343559"], + [1696412415, "6.716250000000013"], + [1696412430, "7.006688978351573"], + [1696412445, "7.872392638036815"], + [1696412460, "7.588757396449705"], + [1696412475, "7.960641995561795"], + [1696412490, "7.024418604651141"], + [1696412505, "6.798214285714275"], + [1696412520, "6.709826589595367"], + [1696412535, "6.770175438596499"], + [1696412550, "6.709281437125758"], + [1696412565, "6.748765432098778"], + [1696412580, "6.945652173913059"], + [1696412595, "6.937037037037037"] + ], + "stat": "avg", + "name": "request_duration_millis" + } + ], + "request_error_count": [ + { + "labels": {}, + "datapoints": [ + [1696410795, "0"], + [1696410810, "0"], + [1696410825, "0"], + [1696410840, "0"], + [1696410855, "0"], + [1696410870, "0"], + [1696410885, "0"], + [1696410900, "0"], + [1696410915, "0"], + [1696410930, "0"], + [1696410945, "0"], + [1696410960, "0"], + [1696410975, "0"], + [1696410990, "0"], + [1696411005, "0"], + [1696411020, "0"], + [1696411035, "0"], + [1696411050, "0"], + [1696411065, "0"], + [1696411080, "0"], + [1696411095, "0"], + [1696411110, "0"], + [1696411125, "0"], + [1696411140, "0"], + [1696411155, "0"], + [1696411170, "0"], + [1696411185, "0"], + [1696411200, "0"], + [1696411215, "0"], + [1696411230, "0"], + [1696411245, "0"], + [1696411260, "0"], + [1696411275, "0"], + [1696411290, "0"], + [1696411305, "0"], + [1696411320, "0"], + [1696411335, "0"], + [1696411350, "0"], + [1696411365, "0"], + [1696411380, "0"], + [1696411395, "0"], + [1696411410, "0"], + [1696411425, "0"], + [1696411440, "0"], + [1696411455, "0"], + [1696411470, "0"], + [1696411485, "0"], + [1696411500, "0"], + [1696411515, "0"], + [1696411530, "0"], + [1696411545, "0"], + [1696411560, "0"], + [1696411575, "0"], + [1696411590, "0"], + [1696411605, "0"], + [1696411620, "0"], + [1696411635, "0"], + [1696411650, "0"], + [1696411665, "0"], + [1696411680, "0"], + [1696411695, "0"], + [1696411710, "0"], + [1696411725, "0"], + [1696411740, "0"], + [1696411755, "0"], + [1696411770, "0"], + [1696411785, "0"], + [1696411800, "0"], + [1696411815, "0"], + [1696411830, "0"], + [1696411845, "0"], + [1696411860, "0"], + [1696411875, "0"], + [1696411890, "0"], + [1696411905, "0"], + [1696411920, "0"], + [1696411935, "0"], + [1696411950, "0"], + [1696411965, "0"], + [1696411980, "0"], + [1696411995, "0"], + [1696412010, "0"], + [1696412025, "0"], + [1696412040, "0"], + [1696412055, "0"], + [1696412070, "0"], + [1696412085, "0"], + [1696412100, "0"], + [1696412115, "0"], + [1696412130, "0"], + [1696412145, "0"], + [1696412160, "0"], + [1696412175, "0"], + [1696412190, "0"], + [1696412205, "0"], + [1696412220, "0"], + [1696412235, "0"], + [1696412250, "0"], + [1696412265, "0"], + [1696412280, "0"], + [1696412295, "0"], + [1696412310, "0"], + [1696412325, "0"], + [1696412340, "0"], + [1696412355, "0"], + [1696412370, "0"], + [1696412385, "0"], + [1696412400, "0"], + [1696412415, "0"], + [1696412430, "0"], + [1696412445, "0"], + [1696412460, "0"], + [1696412475, "0"], + [1696412490, "0"], + [1696412505, "0"], + [1696412520, "0"], + [1696412535, "0"], + [1696412550, "0"], + [1696412565, "0"], + [1696412580, "0"], + [1696412595, "0"] + ], + "name": "request_error_count" + } + ], + "request_size": [ + { + "labels": {}, + "datapoints": [ + [1696410795, "279.4099378881988"], + [1696410810, "280.33742331288346"], + [1696410825, "279.99999999999994"], + [1696410840, "280.00000000000006"], + [1696410855, "277.9746835443038"], + [1696410870, "277.9746835443038"], + [1696410885, "278.45911949685535"], + [1696410900, "278.5849056603774"], + [1696410915, "279.53416149068323"], + [1696410930, "280.13979544724987"], + [1696410945, "282.79761904761904"], + [1696410960, "281.0365853658537"], + [1696410975, "281.2262147276294"], + [1696410990, "279.4102849337094"], + [1696411005, "279.9068322981367"], + [1696411020, "280.8282208588957"], + [1696411035, "279.9067354332076"], + [1696411050, "281.6867469879518"], + [1696411065, "285.3403241436331"], + [1696411080, "285.0850015565572"], + [1696411095, "325.71428571428567"], + [1696411110, "NaN"], + [1696411125, "NaN"], + [1696411140, "NaN"], + [1696411155, "NaN"], + [1696411170, "NaN"], + [1696411185, "NaN"], + [1696411200, "NaN"], + [1696411215, "NaN"], + [1696411230, "NaN"], + [1696411245, "NaN"], + [1696411260, "NaN"], + [1696411275, "NaN"], + [1696411290, "NaN"], + [1696411305, "NaN"], + [1696411320, "NaN"], + [1696411335, "NaN"], + [1696411350, "NaN"], + [1696411365, "NaN"], + [1696411380, "NaN"], + [1696411395, "324.52380952380946"], + [1696411410, "287.3358068446118"], + [1696411425, "289.0796102189919"], + [1696411440, "286.4486910955459"], + [1696411455, "284.53757225433526"], + [1696411470, "283.52941176470586"], + [1696411485, "282.00598802395206"], + [1696411500, "281.8862275449102"], + [1696411515, "281.76646706586826"], + [1696411530, "281.4457831325301"], + [1696411545, "280.67073170731703"], + [1696411560, "282.60971940114854"], + [1696411575, "282.7245508982036"], + [1696411590, "282.79761904761904"], + [1696411605, "279.6246759409596"], + [1696411620, "280.30628416048376"], + [1696411635, "280.21472392638043"], + [1696411650, "282.3214285714285"], + [1696411665, "281.68534107798405"], + [1696411680, "282.55952380952374"], + [1696411695, "281.92771084337346"], + [1696411710, "282.2455089820359"], + [1696411725, "280.70465809405835"], + [1696411740, "280.37037037037044"], + [1696411755, "280.27950310559004"], + [1696411770, "281.7281009043954"], + [1696411785, "283.1056240344476"], + [1696411800, "283.4795321637427"], + [1696411815, "283.17647058823525"], + [1696411830, "282.0170789560339"], + [1696411845, "280.6707317073171"], + [1696411860, "280.4268292682927"], + [1696411875, "281.3145869262265"], + [1696411890, "280.8787878787879"], + [1696411905, "281"], + [1696411920, "279.9693251533742"], + [1696411935, "282.32142857142856"], + [1696411950, "278.5849056603774"], + [1696411965, "278.58490566037733"], + [1696411980, "278.9356747237607"], + [1696411995, "282.32142857142856"], + [1696412010, "280.67073170731703"], + [1696412025, "278.58673793706083"], + [1696412040, "280.7055214723926"], + [1696412055, "282.9166666666667"], + [1696412070, "283.0357142857143"], + [1696412085, "281.6060606060606"], + [1696412100, "280.5815225148697"], + [1696412115, "280.9146341463414"], + [1696412130, "278.8113150533358"], + [1696412145, "279.0638643627106"], + [1696412160, "280.00000000000006"], + [1696412175, "280.4613205458113"], + [1696412190, "280.58222431127575"], + [1696412205, "278.93749999999994"], + [1696412220, "281.23413451827906"], + [1696412235, "281.886673285088"], + [1696412250, "281.24242424242425"], + [1696412265, "278.59406845764806"], + [1696412280, "278.45911949685535"], + [1696412295, "278.9375"], + [1696412310, "280.2147239263804"], + [1696412325, "280.5487804878049"], + [1696412340, "280.75757575757575"], + [1696412355, "280.3048780487805"], + [1696412370, "280.8787878787878"], + [1696412385, "281.4457831325301"], + [1696412400, "280.0920245398773"], + [1696412415, "279.06250000000006"], + [1696412430, "279.53558422973896"], + [1696412445, "280.58282208588963"], + [1696412460, "282.7514792899408"], + [1696412475, "281.7650686196597"], + [1696412490, "283.7790697674418"], + [1696412505, "282.2023809523809"], + [1696412520, "284.42196531791905"], + [1696412535, "283.59649122807014"], + [1696412550, "282.4850299401198"], + [1696412565, "280.37037037037044"], + [1696412580, "280.03105590062114"], + [1696412595, "279.99999999999994"] + ], + "stat": "avg", + "name": "request_size" + } + ], + "request_throughput": [ + { + "labels": {}, + "datapoints": [ + [1696410795, "999.6666666666665"], + [1696410810, "1015.4444444444443"], + [1696410825, "1007.9999999999999"], + [1696410840, "1007.9999999999999"], + [1696410855, "975.9999999999999"], + [1696410870, "975.9999999999999"], + [1696410885, "983.8888888888887"], + [1696410900, "984.3333333333333"], + [1696410915, "1000.111111111111"], + [1696410930, "1008.3601541927952"], + [1696410945, "1055.7777777777776"], + [1696410960, "1024.2222222222222"], + [1696410975, "1031.3065986813012"], + [1696410990, "999.6252784577467"], + [1696411005, "1001.4444444444443"], + [1696411020, "1017.2222222222221"], + [1696411035, "1001.4901341155481"], + [1696411050, "1039.1111111111109"], + [1696411065, "891.5379166666665"], + [1696411080, "585.0656944444444"], + [1696411095, "202.66666666666663"], + [1696411110, "0"], + [1696411125, "0"], + [1696411140, "0"], + [1696411155, "0"], + [1696411170, "0"], + [1696411185, "0"], + [1696411200, "0"], + [1696411215, "0"], + [1696411230, "0"], + [1696411245, "0"], + [1696411260, "0"], + [1696411275, "0"], + [1696411290, "0"], + [1696411305, "0"], + [1696411320, "0"], + [1696411335, "0"], + [1696411350, "0"], + [1696411365, "0"], + [1696411380, "0"], + [1696411395, "151.44444444444443"], + [1696411410, "504.4579166666666"], + [1696411425, "849.5969444444444"], + [1696411440, "1059.8840277777776"], + [1696411455, "1093.8888888888887"], + [1696411470, "1071.1111111111109"], + [1696411485, "1046.5555555555554"], + [1696411500, "1046.111111111111"], + [1696411515, "1045.6666666666665"], + [1696411530, "1038.2222222222222"], + [1696411545, "1022.8888888888888"], + [1696411560, "1048.7521151030826"], + [1696411575, "1049.2222222222222"], + [1696411590, "1055.7777777777776"], + [1696411605, "1006.692337326547"], + [1696411620, "1021.5482225481336"], + [1696411635, "1014.9999999999999"], + [1696411650, "1053.9999999999998"], + [1696411665, "1039.1184447703847"], + [1696411680, "1054.8888888888887"], + [1696411695, "1039.9999999999998"], + [1696411710, "1047.4444444444443"], + [1696411725, "1016.7497000133326"], + [1696411740, "1009.3333333333333"], + [1696411755, "1002.7777777777776"], + [1696411770, "1033.0280802603572"], + [1696411785, "1063.2056191287388"], + [1696411800, "1077.2222222222222"], + [1696411815, "1069.7777777777776"], + [1696411830, "1046.4651500995017"], + [1696411845, "1022.8888888888888"], + [1696411860, "1021.9999999999999"], + [1696411875, "1037.8754104717032"], + [1696411890, "1029.8888888888887"], + [1696411905, "1030.3333333333333"], + [1696411920, "1014.111111111111"], + [1696411935, "1054"], + [1696411950, "984.3333333333333"], + [1696411965, "984.3333333333333"], + [1696411980, "991.7217037497902"], + [1696411995, "1054"], + [1696412010, "1022.8888888888887"], + [1696412025, "984.3893383115535"], + [1696412040, "1016.7777777777776"], + [1696412055, "1056.2222222222222"], + [1696412070, "1056.6666666666665"], + [1696412085, "1032.5555555555554"], + [1696412100, "1016.2912176225288"], + [1696412115, "1023.7777777777776"], + [1696412130, "991.3137022554014"], + [1696412145, "992.264284285619"], + [1696412160, "1007.9999999999999"], + [1696412175, "1015.9098506401136"], + [1696412190, "1016.3228552523725"], + [1696412205, "991.7777777777776"], + [1696412220, "1030.941951725159"], + [1696412235, "1046.1194476546061"], + [1696412250, "1031.2222222222222"], + [1696412265, "984.613457833111"], + [1696412280, "983.8888888888887"], + [1696412295, "991.7777777777776"], + [1696412310, "1014.9999999999999"], + [1696412325, "1022.4444444444443"], + [1696412340, "1029.4444444444443"], + [1696412355, "1021.5555555555554"], + [1696412370, "1029.8888888888887"], + [1696412385, "1038.2222222222222"], + [1696412400, "1014.5555555555554"], + [1696412415, "992.2222222222222"], + [1696412430, "1000.1037781036893"], + [1696412445, "1016.3333333333333"], + [1696412460, "1061.8888888888887"], + [1696412475, "1045.6740003259401"], + [1696412490, "1084.6666666666665"], + [1696412505, "1053.5555555555554"], + [1696412520, "1093.4444444444443"], + [1696412535, "1077.6666666666665"], + [1696412550, "1048.3333333333333"], + [1696412565, "1009.3333333333333"], + [1696412580, "1001.8888888888888"], + [1696412595, "1007.9999999999999"] + ], + "name": "request_throughput" + } + ], + "response_size": [ + { + "labels": {}, + "datapoints": [ + [1696410795, "1741.1180124223602"], + [1696410810, "1730.1226993865032"], + [1696410825, "1732.3148148148143"], + [1696410840, "1737.9320987654323"], + [1696410855, "1755.7278481012659"], + [1696410870, "1736.6139240506334"], + [1696410885, "1734.4025157232707"], + [1696410900, "1740.1257861635222"], + [1696410915, "1720.8695652173915"], + [1696410930, "1731.7680297986026"], + [1696410945, "1698.6607142857142"], + [1696410960, "1746.25"], + [1696410975, "1730.4287021168816"], + [1696410990, "1733.7618095304606"], + [1696411005, "1734.8447204968948"], + [1696411020, "1717.484662576687"], + [1696411035, "1761.7615043666383"], + [1696411050, "1715.2710843373495"], + [1696411065, "1589.3159733643906"], + [1696411080, "1608.4669942204355"], + [1696411095, "413.21428571428567"], + [1696411110, "NaN"], + [1696411125, "NaN"], + [1696411140, "NaN"], + [1696411155, "NaN"], + [1696411170, "NaN"], + [1696411185, "NaN"], + [1696411200, "NaN"], + [1696411215, "NaN"], + [1696411230, "NaN"], + [1696411245, "NaN"], + [1696411260, "NaN"], + [1696411275, "NaN"], + [1696411290, "NaN"], + [1696411305, "NaN"], + [1696411320, "NaN"], + [1696411335, "NaN"], + [1696411350, "NaN"], + [1696411365, "NaN"], + [1696411380, "NaN"], + [1696411395, "421.1904761904761"], + [1696411410, "1518.7230036548897"], + [1696411425, "1486.5537839191707"], + [1696411440, "1606.3605924791486"], + [1696411455, "1686.7630057803472"], + [1696411470, "1712.8529411764707"], + [1696411485, "1726.3473053892217"], + [1696411500, "1738.6826347305391"], + [1696411515, "1712.6946107784431"], + [1696411530, "1715.5722891566263"], + [1696411545, "1707.9573170731705"], + [1696411560, "1713.6845952569065"], + [1696411575, "1720.3592814371257"], + [1696411590, "1717.7678571428576"], + [1696411605, "1744.7478495869427"], + [1696411620, "1713.7690722169127"], + [1696411635, "1741.9631901840492"], + [1696411650, "1717.1130952380952"], + [1696411665, "1728.747379767859"], + [1696411680, "1704.7321428571427"], + [1696411695, "1716.6566265060244"], + [1696411710, "1725.02994011976"], + [1696411725, "1749.1722864139313"], + [1696411740, "1745.2160493827162"], + [1696411755, "1742.2360248447203"], + [1696411770, "1718.0911398883477"], + [1696411785, "1708.4208953752093"], + [1696411800, "1697.719298245614"], + [1696411815, "1718.6176470588232"], + [1696411830, "1719.549525159515"], + [1696411845, "1732.9573170731708"], + [1696411860, "1714.7865853658536"], + [1696411875, "1715.8324995142395"], + [1696411890, "1724.1818181818182"], + [1696411905, "1723.6363636363637"], + [1696411920, "1741.4723926380368"], + [1696411935, "1705.267857142857"], + [1696411950, "1760.6289308176104"], + [1696411965, "1734.2767295597484"], + [1696411980, "1743.7822556900564"], + [1696411995, "1698.8392857142856"], + [1696412010, "1739.4817073170734"], + [1696412025, "1754.401064247901"], + [1696412040, "1735.644171779141"], + [1696412055, "1692.2321428571427"], + [1696412070, "1710.267857142857"], + [1696412085, "1717.6969696969695"], + [1696412100, "1736.5493995475795"], + [1696412115, "1726.4939024390244"], + [1696412130, "1751.554992190156"], + [1696412145, "1744.1711320746856"], + [1696412160, "1726.018518518519"], + [1696412175, "1728.9937953174717"], + [1696412190, "1729.5215082845393"], + [1696412205, "1744.40625"], + [1696412220, "1705.8735608967884"], + [1696412235, "1713.9425847508378"], + [1696412250, "1730.8484848484852"], + [1696412265, "1753.5145842244906"], + [1696412280, "1752.7044025157236"], + [1696412295, "1731.7187500000005"], + [1696412310, "1729.20245398773"], + [1696412325, "1708.2012195121954"], + [1696412340, "1730.5454545454545"], + [1696412355, "1721.3719512195123"], + [1696412370, "1731.151515151515"], + [1696412385, "1709.5481927710841"], + [1696412400, "1741.963190184049"], + [1696412415, "1749.9062500000002"], + [1696412430, "1733.560322153935"], + [1696412445, "1717.300613496933"], + [1696412460, "1690.059171597633"], + [1696412475, "1727.168339198239"], + [1696412490, "1707.5290697674416"], + [1696412505, "1736.3392857142853"], + [1696412520, "1686.300578034682"], + [1696412535, "1709.7660818713448"], + [1696412550, "1730.8982035928145"], + [1696412565, "1751.2654320987658"], + [1696412580, "1740.6832298136644"], + [1696412595, "1713.9197530864194"] + ], + "stat": "avg", + "name": "response_size" + } + ], + "response_throughput": [ + { + "labels": {}, + "datapoints": [ + [1696410795, "6229.333333333332"], + [1696410810, "6266.888888888888"], + [1696410825, "6236.333333333332"], + [1696410840, "6256.555555555555"], + [1696410855, "6164.555555555555"], + [1696410870, "6097.444444444445"], + [1696410885, "6128.222222222222"], + [1696410900, "6148.444444444444"], + [1696410915, "6156.888888888889"], + [1696410930, "6233.480233559637"], + [1696410945, "6341.666666666666"], + [1696410960, "6364.11111111111"], + [1696410975, "6345.790134710828"], + [1696410990, "6202.749952609931"], + [1696411005, "6206.888888888889"], + [1696411020, "6221.11111111111"], + [1696411035, "6303.480916802658"], + [1696411050, "6327.444444444443"], + [1696411065, "4965.773611111112"], + [1696411080, "3300.976388888888"], + [1696411095, "257.1111111111111"], + [1696411110, "0"], + [1696411125, "0"], + [1696411140, "0"], + [1696411155, "0"], + [1696411170, "0"], + [1696411185, "0"], + [1696411200, "0"], + [1696411215, "0"], + [1696411230, "0"], + [1696411245, "0"], + [1696411260, "0"], + [1696411275, "0"], + [1696411290, "0"], + [1696411305, "0"], + [1696411320, "0"], + [1696411335, "0"], + [1696411350, "0"], + [1696411365, "0"], + [1696411380, "0"], + [1696411395, "196.55555555555551"], + [1696411410, "2666.3291666666664"], + [1696411425, "4368.940277777778"], + [1696411440, "5943.668055555556"], + [1696411455, "6484.666666666667"], + [1696411470, "6470.777777777777"], + [1696411485, "6406.666666666667"], + [1696411500, "6452.444444444444"], + [1696411515, "6355.999999999999"], + [1696411530, "6328.555555555555"], + [1696411545, "6224.555555555555"], + [1696411560, "6359.4074106990765"], + [1696411575, "6384.444444444444"], + [1696411590, "6413"], + [1696411605, "6281.363705959198"], + [1696411620, "6245.660010172388"], + [1696411635, "6309.7777777777765"], + [1696411650, "6410.555555555556"], + [1696411665, "6377.2338375532745"], + [1696411680, "6364.333333333333"], + [1696411695, "6332.555555555556"], + [1696411710, "6401.7777777777765"], + [1696411725, "6335.735251272784"], + [1696411740, "6282.7777777777765"], + [1696411755, "6233.333333333332"], + [1696411770, "6299.820238924198"], + [1696411785, "6415.989445617153"], + [1696411800, "6451.333333333332"], + [1696411815, "6492.555555555555"], + [1696411830, "6380.637153645969"], + [1696411845, "6315.666666666666"], + [1696411860, "6249.444444444443"], + [1696411875, "6330.352006243607"], + [1696411890, "6321.999999999999"], + [1696411905, "6319.999999999999"], + [1696411920, "6307.999999999999"], + [1696411935, "6366.333333333333"], + [1696411950, "6220.888888888889"], + [1696411965, "6127.777777777777"], + [1696411980, "6199.80470871725"], + [1696411995, "6342.333333333333"], + [1696412010, "6339.444444444444"], + [1696412025, "6199.19568159145"], + [1696412040, "6286.888888888888"], + [1696412055, "6317.666666666665"], + [1696412070, "6384.999999999999"], + [1696412085, "6298.222222222221"], + [1696412100, "6289.936300542926"], + [1696412115, "6292.11111111111"], + [1696412130, "6227.6542244341745"], + [1696412145, "6201.7299301434905"], + [1696412160, "6213.666666666667"], + [1696412175, "6262.902224593014"], + [1696412190, "6264.660000592539"], + [1696412205, "6202.333333333333"], + [1696412220, "6253.354064860062"], + [1696412235, "6360.672000474116"], + [1696412250, "6346.444444444444"], + [1696412265, "6197.310903611481"], + [1696412280, "6192.888888888889"], + [1696412295, "6157.222222222223"], + [1696412310, "6263.555555555555"], + [1696412325, "6225.444444444444"], + [1696412340, "6345.333333333332"], + [1696412355, "6273.444444444444"], + [1696412370, "6347.555555555555"], + [1696412385, "6306.333333333332"], + [1696412400, "6309.7777777777765"], + [1696412415, "6221.888888888889"], + [1696412430, "6202.21655333837"], + [1696412445, "6220.444444444444"], + [1696412460, "6347.11111111111"], + [1696412475, "6409.790380807049"], + [1696412490, "6526.555555555555"], + [1696412505, "6482.333333333332"], + [1696412520, "6482.888888888889"], + [1696412535, "6497.1111111111095"], + [1696412550, "6423.555555555555"], + [1696412565, "6304.555555555555"], + [1696412580, "6227.7777777777765"], + [1696412595, "6170.11111111111"] + ], + "name": "response_throughput" + } + ], + "tcp_closed": null, + "tcp_opened": null, + "tcp_received": null, + "tcp_sent": null +} diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/bookinfo/metrics/inbound/metrics_inbound_3600.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/bookinfo/metrics/inbound/metrics_inbound_3600.json new file mode 100644 index 0000000000..9e2895fe2f --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/bookinfo/metrics/inbound/metrics_inbound_3600.json @@ -0,0 +1,32 @@ +{ + "request_count": [ + { + "labels": {}, + "datapoints": [ + [1697021640, "2.6002743899782135"], + [1697022000, "3.634782608695652"], + [1697022360, "3.678260869565217"], + [1697022720, "3.6753623188405795"], + [1697023080, "3.7101449275362324"], + [1697023440, "3.6318840579710145"], + [1697023800, "3.6811594202898554"] + ], + "name": "request_count" + } + ], + "request_error_count": [ + { + "labels": {}, + "datapoints": [ + [1697021640, "0"], + [1697022000, "0"], + [1697022360, "0"], + [1697022720, "0"], + [1697023080, "0"], + [1697023440, "0"], + [1697023800, "0"] + ], + "name": "request_error_count" + } + ] +} diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/bookinfo/metrics/inbound/metrics_inbound_60.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/bookinfo/metrics/inbound/metrics_inbound_60.json new file mode 100644 index 0000000000..5a7ba4ce06 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/bookinfo/metrics/inbound/metrics_inbound_60.json @@ -0,0 +1,24 @@ +{ + "request_count": [ + { + "labels": {}, + "datapoints": [ + [1697023800, "3.466666666666667"], + [1697023830, "3.399800039992002"], + [1697023860, "3.2664801740597667"] + ], + "name": "request_count" + } + ], + "request_error_count": [ + { + "labels": {}, + "datapoints": [ + [1697023800, "0"], + [1697023830, "0"], + [1697023860, "0"] + ], + "name": "request_error_count" + } + ] +} diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/bookinfo/metrics/inbound/metrics_inbound_600.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/bookinfo/metrics/inbound/metrics_inbound_600.json new file mode 100644 index 0000000000..c53996c283 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/bookinfo/metrics/inbound/metrics_inbound_600.json @@ -0,0 +1,40 @@ +{ + "request_count": [ + { + "labels": {}, + "datapoints": [ + [1697023680, "3.399866684442075"], + [1697023710, "3.7333333333333334"], + [1697023740, "3.9327959496369327"], + [1697023770, "3.6666666666666665"], + [1697023800, "3.466666666666667"], + [1697023830, "3.399800039992002"], + [1697023860, "3.2664801740597667"], + [1697023890, "3.533333333333333"], + [1697023920, "3.866666666666667"], + [1697023950, "3.733333333333334"], + [1697023980, "3.466666666666667"] + ], + "name": "request_count" + } + ], + "request_error_count": [ + { + "labels": {}, + "datapoints": [ + [1697023680, "0"], + [1697023710, "0"], + [1697023740, "0"], + [1697023770, "0"], + [1697023800, "0"], + [1697023830, "0"], + [1697023860, "0"], + [1697023890, "0"], + [1697023920, "0"], + [1697023950, "0"], + [1697023980, "0"] + ], + "name": "request_error_count" + } + ] +} diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/bookinfo/metrics/index.ts b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/bookinfo/metrics/index.ts new file mode 100644 index 0000000000..ccfc69cd36 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/bookinfo/metrics/index.ts @@ -0,0 +1,51 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import inbound60 from './inbound/metrics_inbound_60.json'; +import inbound120 from './inbound/metrics_inbound_120.json'; +import inbound300 from './inbound/metrics_inbound_300.json'; +import inbound600 from './inbound/metrics_inbound_600.json'; +import inbound1800 from './inbound/metrics_inbound_1800.json'; +import inbound3600 from './inbound/metrics_inbound_3600.json'; +/* Outbound Metrics */ + +import outbound60 from './outbound/metrics_outbound_60.json'; +import outbound120 from './outbound/metrics_outbound_120.json'; +import outbound300 from './outbound/metrics_outbound_300.json'; +import outbound600 from './outbound/metrics_outbound_600.json'; +import outbound1800 from './outbound/metrics_outbound_1800.json'; +import outbound3600 from './outbound/metrics_outbound_3600.json'; + +export const bookInfoMetrics = { + inbound: { + 60: inbound60, + 120: inbound120, + 300: inbound300, + 600: inbound600, + 1800: inbound1800, + 3600: inbound3600, + }, + outbound: { + 60: outbound60, + 120: outbound120, + 300: outbound300, + 600: outbound600, + 1800: outbound1800, + 3600: outbound3600, + }, +}; + +export default bookInfoMetrics; diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/bookinfo/metrics/outbound/metrics_outbound_120.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/bookinfo/metrics/outbound/metrics_outbound_120.json new file mode 100644 index 0000000000..3a2f963923 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/bookinfo/metrics/outbound/metrics_outbound_120.json @@ -0,0 +1,28 @@ +{ + "request_count": [ + { + "labels": {}, + "datapoints": [ + [1697023830, "2.4"], + [1697023860, "2.2664801740597667"], + [1697023890, "2.533333333333333"], + [1697023920, "2.8666666666666667"], + [1697023950, "2.733333333333334"] + ], + "name": "request_count" + } + ], + "request_error_count": [ + { + "labels": {}, + "datapoints": [ + [1697023830, "0"], + [1697023860, "0"], + [1697023890, "0"], + [1697023920, "0"], + [1697023950, "0"] + ], + "name": "request_error_count" + } + ] +} diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/bookinfo/metrics/outbound/metrics_outbound_1800.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/bookinfo/metrics/outbound/metrics_outbound_1800.json new file mode 100644 index 0000000000..1f6372ba41 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/bookinfo/metrics/outbound/metrics_outbound_1800.json @@ -0,0 +1,40 @@ +{ + "request_count": [ + { + "labels": {}, + "datapoints": [ + [1697022180, "2.660592434003259"], + [1697022360, "2.6727272727272724"], + [1697022540, "2.66060606060606"], + [1697022720, "2.6666666666666665"], + [1697022900, "2.66060606060606"], + [1697023080, "2.751515151515151"], + [1697023260, "2.642218224270407"], + [1697023440, "2.6424242424242417"], + [1697023620, "2.7272727272727266"], + [1697023800, "2.636363636363636"], + [1697023980, "2.6363636363636362"] + ], + "name": "request_count" + } + ], + "request_error_count": [ + { + "labels": {}, + "datapoints": [ + [1697022180, "0"], + [1697022360, "0"], + [1697022540, "0"], + [1697022720, "0"], + [1697022900, "0"], + [1697023080, "0"], + [1697023260, "0"], + [1697023440, "0"], + [1697023620, "0"], + [1697023800, "0"], + [1697023980, "0"] + ], + "name": "request_error_count" + } + ] +} diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/bookinfo/metrics/outbound/metrics_outbound_300.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/bookinfo/metrics/outbound/metrics_outbound_300.json new file mode 100644 index 0000000000..e5384d2042 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/bookinfo/metrics/outbound/metrics_outbound_300.json @@ -0,0 +1,40 @@ +{ + "request_count": [ + { + "labels": {}, + "datapoints": [ + [1697023680, "2.4"], + [1697023710, "2.7333333333333334"], + [1697023740, "2.9327959496369327"], + [1697023770, "2.6666666666666665"], + [1697023800, "2.466666666666667"], + [1697023830, "2.4"], + [1697023860, "2.2664801740597667"], + [1697023890, "2.533333333333333"], + [1697023920, "2.8666666666666667"], + [1697023950, "2.733333333333334"], + [1697023980, "2.466666666666667"] + ], + "name": "request_count" + } + ], + "request_error_count": [ + { + "labels": {}, + "datapoints": [ + [1697023680, "0"], + [1697023710, "0"], + [1697023740, "0"], + [1697023770, "0"], + [1697023800, "0"], + [1697023830, "0"], + [1697023860, "0"], + [1697023890, "0"], + [1697023920, "0"], + [1697023950, "0"], + [1697023980, "0"] + ], + "name": "request_error_count" + } + ] +} diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/bookinfo/metrics/outbound/metrics_outbound_3600.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/bookinfo/metrics/outbound/metrics_outbound_3600.json new file mode 100644 index 0000000000..b15fb136cb --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/bookinfo/metrics/outbound/metrics_outbound_3600.json @@ -0,0 +1,32 @@ +{ + "request_count": [ + { + "labels": {}, + "datapoints": [ + [1697021640, "1.8706855010893246"], + [1697022000, "2.634782608695652"], + [1697022360, "2.678260869565217"], + [1697022720, "2.6753623188405795"], + [1697023080, "2.7101449275362324"], + [1697023440, "2.631884057971014"], + [1697023800, "2.6811594202898554"] + ], + "name": "request_count" + } + ], + "request_error_count": [ + { + "labels": {}, + "datapoints": [ + [1697021640, "0"], + [1697022000, "0"], + [1697022360, "0"], + [1697022720, "0"], + [1697023080, "0"], + [1697023440, "0"], + [1697023800, "0"] + ], + "name": "request_error_count" + } + ] +} diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/bookinfo/metrics/outbound/metrics_outbound_60.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/bookinfo/metrics/outbound/metrics_outbound_60.json new file mode 100644 index 0000000000..d10d586b91 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/bookinfo/metrics/outbound/metrics_outbound_60.json @@ -0,0 +1,24 @@ +{ + "request_count": [ + { + "labels": {}, + "datapoints": [ + [1697023830, "2.4"], + [1697023860, "2.2664801740597667"], + [1697023890, "2.533333333333333"] + ], + "name": "request_count" + } + ], + "request_error_count": [ + { + "labels": {}, + "datapoints": [ + [1697023830, "0"], + [1697023860, "0"], + [1697023890, "0"] + ], + "name": "request_error_count" + } + ] +} diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/bookinfo/metrics/outbound/metrics_outbound_600.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/bookinfo/metrics/outbound/metrics_outbound_600.json new file mode 100644 index 0000000000..2ce8ed7f51 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/bookinfo/metrics/outbound/metrics_outbound_600.json @@ -0,0 +1,144 @@ +{ + "grpc_received": null, + "grpc_sent": null, + "request_count": [ + { + "labels": {}, + "datapoints": [ + [1697023260, "2.5770227926554257"], + [1697023320, "2.688875062342908"], + [1697023380, "2.5334024768184116"], + [1697023440, "2.644444444444444"], + [1697023500, "2.888888888888889"], + [1697023560, "2.8222222222222224"], + [1697023620, "2.577792593580313"], + [1697023680, "2.511111111111111"], + [1697023740, "2.799815353777718"], + [1697023800, "2.5777777777777775"], + [1697023860, "2.422111639341834"] + ], + "name": "request_count" + } + ], + "request_duration_millis": [ + { + "labels": {}, + "datapoints": [ + [1697023260, "0.8984028601338787"], + [1697023320, "0.7599175779653324"], + [1697023380, "1.1891073830431969"], + [1697023440, "0.8486956521739024"], + [1697023500, "1.3678294573643095"], + [1697023560, "1.3087301587301081"], + [1697023620, "1.0917565417025843"], + [1697023680, "1.2628205128205447"], + [1697023740, "1.460967924929601"], + [1697023800, "1.292016806722755"], + [1697023860, "1.284750805346726"] + ], + "stat": "avg", + "name": "request_duration_millis" + } + ], + "request_error_count": [ + { + "labels": {}, + "datapoints": [ + [1697023260, "0"], + [1697023320, "0"], + [1697023380, "0"], + [1697023440, "0"], + [1697023500, "0"], + [1697023560, "0"], + [1697023620, "0"], + [1697023680, "0"], + [1697023740, "0"], + [1697023800, "0"], + [1697023860, "0"] + ], + "name": "request_error_count" + } + ], + "request_size": [ + { + "labels": {}, + "datapoints": [ + [1697023260, "1321.2978379025685"], + [1697023320, "1318.96540098226"], + [1697023380, "1321.3024875544975"], + [1697023440, "1319.5652173913045"], + [1697023500, "1320.5426356589146"], + [1697023560, "1319.047619047619"], + [1697023620, "1321.30451418782"], + [1697023680, "1321.7948717948716"], + [1697023740, "1321.778861892338"], + [1697023800, "1321.4285714285716"], + [1697023860, "1327.7766258130607"] + ], + "stat": "avg", + "name": "request_size" + } + ], + "request_throughput": [ + { + "labels": {}, + "datapoints": [ + [1697023260, "3375.6524699856404"], + [1697023320, "3399.9827661980453"], + [1697023380, "3376.750009260288"], + [1697023440, "3372.222222222222"], + [1697023500, "3785.555555555555"], + [1697023560, "3693.333333333333"], + [1697023620, "3376.686668000089"], + [1697023680, "3436.666666666666"], + [1697023740, "3641.998202908425"], + [1697023800, "3494.4444444444443"], + [1697023860, "3186.4987189170774"] + ], + "name": "request_throughput" + } + ], + "response_size": [ + { + "labels": {}, + "datapoints": [ + [1697023260, "1238.7218631817639"], + [1697023320, "1226.7230258729253"], + [1697023380, "1238.6907292600722"], + [1697023440, "1224.782608695652"], + [1697023500, "1233.720930232558"], + [1697023560, "1231.7460317460318"], + [1697023620, "1235.218636496714"], + [1697023680, "1249.1452991452988"], + [1697023740, "1234.6894311611843"], + [1697023800, "1239.075630252101"], + [1697023860, "1236.10002345071"] + ], + "stat": "avg", + "name": "response_size" + } + ], + "response_throughput": [ + { + "labels": {}, + "datapoints": [ + [1697023260, "3164.687322664851"], + [1697023320, "3162.203605765669"], + [1697023380, "3165.625563334197"], + [1697023440, "3129.9999999999995"], + [1697023500, "3536.666666666666"], + [1697023560, "3448.8888888888887"], + [1697023620, "3156.688149580342"], + [1697023680, "3247.777777777777"], + [1697023740, "3402.0340459986323"], + [1697023800, "3276.6666666666665"], + [1697023860, "2966.4862783430335"] + ], + "name": "response_throughput" + } + ], + "tcp_closed": null, + "tcp_opened": null, + "tcp_received": null, + "tcp_sent": null +} diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/bookinfo/services.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/bookinfo/services.json new file mode 100644 index 0000000000..47bc31323f --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/bookinfo/services.json @@ -0,0 +1,188 @@ +{ + "namespace": { + "name": "bookinfo", + "cluster": "", + "isAmbient": false, + "labels": null, + "annotations": null + }, + "services": [ + { + "name": "details", + "namespace": "bookinfo", + "istioSidecar": true, + "cluster": "Kubernetes", + "istioAmbient": false, + "appLabel": true, + "additionalDetailSample": null, + "annotations": null, + "healthAnnotations": {}, + "ports": null, + "labels": { + "app": "details", + "service": "details" + }, + "selector": { + "app": "details" + }, + "istioReferences": [], + "kialiWizard": "", + "serviceRegistry": "Kubernetes", + "health": { + "requests": { + "inbound": { + "http": { + "200": 1.0000222227160604 + } + }, + "outbound": {}, + "healthAnnotations": {} + } + } + }, + { + "name": "productpage", + "namespace": "bookinfo", + "istioSidecar": true, + "cluster": "Kubernetes", + "istioAmbient": false, + "appLabel": true, + "additionalDetailSample": null, + "annotations": null, + "healthAnnotations": {}, + "ports": null, + "labels": { + "app": "productpage", + "service": "productpage" + }, + "selector": { + "app": "productpage" + }, + "istioReferences": [ + { + "objectType": "VirtualService", + "name": "bookinfo", + "namespace": "bookinfo", + "cluster": "" + }, + { + "objectType": "Gateway", + "name": "bookinfo-gateway", + "namespace": "bookinfo", + "cluster": "" + } + ], + "kialiWizard": "", + "serviceRegistry": "Kubernetes", + "health": { + "requests": { + "inbound": { + "http": { + "200": 0.9999999999999999 + } + }, + "outbound": {}, + "healthAnnotations": {} + } + } + }, + { + "name": "ratings", + "namespace": "bookinfo", + "istioSidecar": true, + "cluster": "Kubernetes", + "istioAmbient": false, + "appLabel": true, + "additionalDetailSample": null, + "annotations": null, + "healthAnnotations": {}, + "ports": null, + "labels": { + "app": "ratings", + "service": "ratings" + }, + "selector": { + "app": "ratings" + }, + "istioReferences": [], + "kialiWizard": "", + "serviceRegistry": "Kubernetes", + "health": { + "requests": { + "inbound": { + "http": { + "200": 0.711111111111111 + } + }, + "outbound": {}, + "healthAnnotations": {} + } + } + }, + { + "name": "reviews", + "namespace": "bookinfo", + "istioSidecar": true, + "cluster": "Kubernetes", + "istioAmbient": false, + "appLabel": true, + "additionalDetailSample": null, + "annotations": null, + "healthAnnotations": {}, + "ports": null, + "labels": { + "app": "reviews", + "service": "reviews" + }, + "selector": { + "app": "reviews" + }, + "istioReferences": [], + "kialiWizard": "", + "serviceRegistry": "Kubernetes", + "health": { + "requests": { + "inbound": { + "http": { + "200": 0.9999999999999999 + } + }, + "outbound": {}, + "healthAnnotations": {} + } + } + } + ], + "validations": { + "service": { + "details.bookinfo": { + "name": "details", + "objectType": "service", + "valid": true, + "checks": [], + "references": null + }, + "productpage.bookinfo": { + "name": "productpage", + "objectType": "service", + "valid": true, + "checks": [], + "references": null + }, + "ratings.bookinfo": { + "name": "ratings", + "objectType": "service", + "valid": true, + "checks": [], + "references": null + }, + "reviews.bookinfo": { + "name": "reviews", + "objectType": "service", + "valid": true, + "checks": [], + "references": null + } + } + } +} diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/bookinfo/services/details.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/bookinfo/services/details.json new file mode 100644 index 0000000000..fbd758b16f --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/bookinfo/services/details.json @@ -0,0 +1,352 @@ +{ + "cluster": "Kubernetes", + "destinationRules": [], + "endpoints": [ + { + "addresses": [ + { + "kind": "Pod", + "name": "details-v1-698d88b-djqqc", + "ip": "10.244.0.19", + "port": 0 + } + ], + "ports": [ + { + "name": "http", + "protocol": "TCP", + "port": 9080 + } + ] + } + ], + "istioPermissions": { + "create": true, + "update": true, + "delete": true + }, + "istioSidecar": true, + "k8sHTTPRoutes": [], + "k8sReferenceGrants": null, + "service": { + "name": "details", + "createdAt": "2024-02-26T09:51:07Z", + "resourceVersion": "847", + "namespace": { + "name": "bookinfo", + "cluster": "", + "isAmbient": false, + "labels": null, + "annotations": null + }, + "labels": { + "app": "details", + "service": "details" + }, + "selectors": { + "app": "details" + }, + "type": "ClusterIP", + "ip": "10.109.148.19", + "ports": [ + { + "name": "http", + "protocol": "TCP", + "port": 9080 + } + ], + "externalName": "", + "annotations": { + "kubectl.kubernetes.io/last-applied-configuration": "{\"apiVersion\":\"v1\",\"kind\":\"Service\",\"metadata\":{\"annotations\":{},\"labels\":{\"app\":\"details\",\"service\":\"details\"},\"name\":\"details\",\"namespace\":\"bookinfo\"},\"spec\":{\"ports\":[{\"name\":\"http\",\"port\":9080}],\"selector\":{\"app\":\"details\"}}}\n" + }, + "healthAnnotations": {}, + "additionalDetails": [] + }, + "serviceEntries": null, + "virtualServices": [], + "workloads": [ + { + "name": "details-v1", + "cluster": "Kubernetes", + "type": "Deployment", + "createdAt": "2024-02-26T09:51:07Z", + "resourceVersion": "24565", + "istioSidecar": true, + "istioAmbient": false, + "additionalDetailSample": null, + "labels": { + "app": "details", + "version": "v1" + }, + "appLabel": true, + "versionLabel": true, + "podCount": 1, + "annotations": { + "deployment.kubernetes.io/revision": "1", + "kubectl.kubernetes.io/last-applied-configuration": "{\"apiVersion\":\"apps/v1\",\"kind\":\"Deployment\",\"metadata\":{\"annotations\":{},\"labels\":{\"app\":\"details\",\"version\":\"v1\"},\"name\":\"details-v1\",\"namespace\":\"bookinfo\"},\"spec\":{\"replicas\":1,\"selector\":{\"matchLabels\":{\"app\":\"details\",\"version\":\"v1\"}},\"template\":{\"metadata\":{\"labels\":{\"app\":\"details\",\"version\":\"v1\"}},\"spec\":{\"containers\":[{\"image\":\"docker.io/istio/examples-bookinfo-details-v1:1.18.0\",\"imagePullPolicy\":\"IfNotPresent\",\"name\":\"details\",\"ports\":[{\"containerPort\":9080}]}],\"serviceAccountName\":\"bookinfo-details\"}}}}\n" + }, + "healthAnnotations": {}, + "istioReferences": [], + "dashboardAnnotations": null, + "serviceAccountNames": ["bookinfo-details"], + "health": { + "workloadStatus": null, + "requests": { + "inbound": null, + "outbound": null, + "healthAnnotations": null + } + } + } + ], + "health": { + "requests": { + "inbound": { + "http": { + "200": 0.9999999999999999 + } + }, + "outbound": {}, + "healthAnnotations": {} + } + }, + "namespaceMTLS": { + "status": "MTLS_NOT_ENABLED", + "autoMTLSEnabled": true, + "minTLS": "" + }, + "subServices": [ + { + "name": "details", + "namespace": "", + "istioSidecar": false, + "cluster": "", + "istioAmbient": false, + "appLabel": false, + "additionalDetailSample": null, + "annotations": null, + "healthAnnotations": null, + "ports": { + "http": 9080 + }, + "labels": null, + "selector": null, + "istioReferences": null, + "kialiWizard": "", + "serviceRegistry": "", + "health": { + "requests": { + "inbound": null, + "outbound": null, + "healthAnnotations": null + } + } + } + ], + "validations": { + "gateway": { + "bookinfo-gateway.bookinfo": { + "name": "bookinfo-gateway", + "objectType": "gateway", + "valid": true, + "checks": [], + "references": null + } + }, + "service": { + "details.bookinfo": { + "name": "details", + "objectType": "service", + "valid": true, + "checks": [], + "references": null + } + }, + "virtualservice": { + "bookinfo.bookinfo": { + "name": "bookinfo", + "objectType": "virtualservice", + "valid": true, + "checks": [], + "references": null + } + }, + "workload": { + "cars-v1.travel-agency": { + "name": "cars-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "control.travel-control": { + "name": "control", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "details-v1.bookinfo": { + "name": "details-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "discounts-v1.travel-agency": { + "name": "discounts-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "flights-v1.travel-agency": { + "name": "flights-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "grafana.istio-system": { + "name": "grafana", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "hotels-v1.travel-agency": { + "name": "hotels-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "insurances-v1.travel-agency": { + "name": "insurances-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "istio-egressgateway.istio-system": { + "name": "istio-egressgateway", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "istio-ingressgateway.istio-system": { + "name": "istio-ingressgateway", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "istiod.istio-system": { + "name": "istiod", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "jaeger.istio-system": { + "name": "jaeger", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "kiali-traffic-generator.bookinfo": { + "name": "kiali-traffic-generator", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "kiali.istio-system": { + "name": "kiali", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "mysqldb-v1.travel-agency": { + "name": "mysqldb-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "productpage-v1.bookinfo": { + "name": "productpage-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "prometheus.istio-system": { + "name": "prometheus", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "ratings-v1.bookinfo": { + "name": "ratings-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "reviews-v1.bookinfo": { + "name": "reviews-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "reviews-v2.bookinfo": { + "name": "reviews-v2", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "reviews-v3.bookinfo": { + "name": "reviews-v3", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "travels-v1.travel-agency": { + "name": "travels-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "travels.travel-portal": { + "name": "travels", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "viaggi.travel-portal": { + "name": "viaggi", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "voyages.travel-portal": { + "name": "voyages", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + } + } + } +} diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/bookinfo/services/productpage.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/bookinfo/services/productpage.json new file mode 100644 index 0000000000..14da15f403 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/bookinfo/services/productpage.json @@ -0,0 +1,437 @@ +{ + "cluster": "Kubernetes", + "destinationRules": [], + "endpoints": [ + { + "addresses": [ + { + "kind": "Pod", + "name": "productpage-v1-675fc69cf-vv5wr", + "ip": "10.244.0.21", + "port": 0 + } + ], + "ports": [ + { + "name": "http", + "protocol": "TCP", + "port": 9080 + } + ] + } + ], + "istioPermissions": { + "create": true, + "update": true, + "delete": true + }, + "istioSidecar": true, + "k8sHTTPRoutes": [], + "k8sReferenceGrants": null, + "service": { + "name": "productpage", + "createdAt": "2024-02-26T09:51:07Z", + "resourceVersion": "912", + "namespace": { + "name": "bookinfo", + "cluster": "", + "isAmbient": false, + "labels": null, + "annotations": null + }, + "labels": { + "app": "productpage", + "service": "productpage" + }, + "selectors": { + "app": "productpage" + }, + "type": "ClusterIP", + "ip": "10.110.161.39", + "ports": [ + { + "name": "http", + "protocol": "TCP", + "port": 9080 + } + ], + "externalName": "", + "annotations": { + "kubectl.kubernetes.io/last-applied-configuration": "{\"apiVersion\":\"v1\",\"kind\":\"Service\",\"metadata\":{\"annotations\":{},\"labels\":{\"app\":\"productpage\",\"service\":\"productpage\"},\"name\":\"productpage\",\"namespace\":\"bookinfo\"},\"spec\":{\"ports\":[{\"name\":\"http\",\"port\":9080}],\"selector\":{\"app\":\"productpage\"}}}\n" + }, + "healthAnnotations": {}, + "additionalDetails": [] + }, + "serviceEntries": null, + "virtualServices": [ + { + "kind": "VirtualService", + "apiVersion": "networking.istio.io/v1beta1", + "metadata": { + "name": "bookinfo", + "namespace": "bookinfo", + "uid": "e634070b-10b5-4f92-b3da-3c29a953b1ca", + "resourceVersion": "943", + "generation": 1, + "creationTimestamp": "2024-02-26T09:51:07Z", + "annotations": { + "kubectl.kubernetes.io/last-applied-configuration": "{\"apiVersion\":\"networking.istio.io/v1alpha3\",\"kind\":\"VirtualService\",\"metadata\":{\"annotations\":{},\"name\":\"bookinfo\",\"namespace\":\"bookinfo\"},\"spec\":{\"gateways\":[\"bookinfo-gateway\"],\"hosts\":[\"*\"],\"http\":[{\"match\":[{\"uri\":{\"exact\":\"/productpage\"}},{\"uri\":{\"prefix\":\"/static\"}},{\"uri\":{\"exact\":\"/login\"}},{\"uri\":{\"exact\":\"/logout\"}},{\"uri\":{\"prefix\":\"/api/v1/products\"}}],\"route\":[{\"destination\":{\"host\":\"productpage\",\"port\":{\"number\":9080}}}]}]}}\n" + }, + "managedFields": [ + { + "manager": "kubectl-client-side-apply", + "operation": "Update", + "apiVersion": "networking.istio.io/v1alpha3", + "time": "2024-02-26T09:51:07Z", + "fieldsType": "FieldsV1", + "fieldsV1": { + "f:metadata": { + "f:annotations": { + ".": {}, + "f:kubectl.kubernetes.io/last-applied-configuration": {} + } + }, + "f:spec": { + ".": {}, + "f:gateways": {}, + "f:hosts": {}, + "f:http": {} + } + } + } + ] + }, + "spec": { + "hosts": ["*"], + "gateways": ["bookinfo-gateway"], + "http": [ + { + "match": [ + { + "uri": { + "exact": "/productpage" + } + }, + { + "uri": { + "prefix": "/static" + } + }, + { + "uri": { + "exact": "/login" + } + }, + { + "uri": { + "exact": "/logout" + } + }, + { + "uri": { + "prefix": "/api/v1/products" + } + } + ], + "route": [ + { + "destination": { + "host": "productpage", + "port": { + "number": 9080 + } + } + } + ] + } + ] + }, + "status": {} + } + ], + "workloads": [ + { + "name": "productpage-v1", + "cluster": "Kubernetes", + "type": "Deployment", + "createdAt": "2024-02-26T09:51:07Z", + "resourceVersion": "24559", + "istioSidecar": true, + "istioAmbient": false, + "additionalDetailSample": null, + "labels": { + "app": "productpage", + "version": "v1" + }, + "appLabel": true, + "versionLabel": true, + "podCount": 1, + "annotations": { + "deployment.kubernetes.io/revision": "1", + "kubectl.kubernetes.io/last-applied-configuration": "{\"apiVersion\":\"apps/v1\",\"kind\":\"Deployment\",\"metadata\":{\"annotations\":{},\"labels\":{\"app\":\"productpage\",\"version\":\"v1\"},\"name\":\"productpage-v1\",\"namespace\":\"bookinfo\"},\"spec\":{\"replicas\":1,\"selector\":{\"matchLabels\":{\"app\":\"productpage\",\"version\":\"v1\"}},\"template\":{\"metadata\":{\"annotations\":{\"prometheus.io/path\":\"/metrics\",\"prometheus.io/port\":\"9080\",\"prometheus.io/scrape\":\"true\"},\"labels\":{\"app\":\"productpage\",\"version\":\"v1\"}},\"spec\":{\"containers\":[{\"image\":\"docker.io/istio/examples-bookinfo-productpage-v1:1.18.0\",\"imagePullPolicy\":\"IfNotPresent\",\"name\":\"productpage\",\"ports\":[{\"containerPort\":9080}],\"volumeMounts\":[{\"mountPath\":\"/tmp\",\"name\":\"tmp\"}]}],\"serviceAccountName\":\"bookinfo-productpage\",\"volumes\":[{\"emptyDir\":{},\"name\":\"tmp\"}]}}}}\n" + }, + "healthAnnotations": {}, + "istioReferences": [], + "dashboardAnnotations": null, + "serviceAccountNames": ["bookinfo-productpage"], + "health": { + "workloadStatus": null, + "requests": { + "inbound": null, + "outbound": null, + "healthAnnotations": null + } + } + } + ], + "health": { + "requests": { + "inbound": { + "http": { + "200": 0.9999999999999999 + } + }, + "outbound": {}, + "healthAnnotations": {} + } + }, + "namespaceMTLS": { + "status": "MTLS_NOT_ENABLED", + "autoMTLSEnabled": true, + "minTLS": "" + }, + "subServices": [ + { + "name": "productpage", + "namespace": "", + "istioSidecar": false, + "cluster": "", + "istioAmbient": false, + "appLabel": false, + "additionalDetailSample": null, + "annotations": null, + "healthAnnotations": null, + "ports": { + "http": 9080 + }, + "labels": null, + "selector": null, + "istioReferences": null, + "kialiWizard": "", + "serviceRegistry": "", + "health": { + "requests": { + "inbound": null, + "outbound": null, + "healthAnnotations": null + } + } + } + ], + "validations": { + "gateway": { + "bookinfo-gateway.bookinfo": { + "name": "bookinfo-gateway", + "objectType": "gateway", + "valid": true, + "checks": [], + "references": null + } + }, + "service": { + "productpage.bookinfo": { + "name": "productpage", + "objectType": "service", + "valid": true, + "checks": [], + "references": null + } + }, + "virtualservice": { + "bookinfo.bookinfo": { + "name": "bookinfo", + "objectType": "virtualservice", + "valid": true, + "checks": [], + "references": null + } + }, + "workload": { + "cars-v1.travel-agency": { + "name": "cars-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "control.travel-control": { + "name": "control", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "details-v1.bookinfo": { + "name": "details-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "discounts-v1.travel-agency": { + "name": "discounts-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "flights-v1.travel-agency": { + "name": "flights-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "grafana.istio-system": { + "name": "grafana", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "hotels-v1.travel-agency": { + "name": "hotels-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "insurances-v1.travel-agency": { + "name": "insurances-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "istio-egressgateway.istio-system": { + "name": "istio-egressgateway", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "istio-ingressgateway.istio-system": { + "name": "istio-ingressgateway", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "istiod.istio-system": { + "name": "istiod", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "jaeger.istio-system": { + "name": "jaeger", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "kiali-traffic-generator.bookinfo": { + "name": "kiali-traffic-generator", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "kiali.istio-system": { + "name": "kiali", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "mysqldb-v1.travel-agency": { + "name": "mysqldb-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "productpage-v1.bookinfo": { + "name": "productpage-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "prometheus.istio-system": { + "name": "prometheus", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "ratings-v1.bookinfo": { + "name": "ratings-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "reviews-v1.bookinfo": { + "name": "reviews-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "reviews-v2.bookinfo": { + "name": "reviews-v2", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "reviews-v3.bookinfo": { + "name": "reviews-v3", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "travels-v1.travel-agency": { + "name": "travels-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "travels.travel-portal": { + "name": "travels", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "viaggi.travel-portal": { + "name": "viaggi", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "voyages.travel-portal": { + "name": "voyages", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + } + } + } +} diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/bookinfo/services/ratings.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/bookinfo/services/ratings.json new file mode 100644 index 0000000000..7cde00f392 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/bookinfo/services/ratings.json @@ -0,0 +1,352 @@ +{ + "cluster": "Kubernetes", + "destinationRules": [], + "endpoints": [ + { + "addresses": [ + { + "kind": "Pod", + "name": "ratings-v1-6484c4d9bb-wcq5g", + "ip": "10.244.0.24", + "port": 0 + } + ], + "ports": [ + { + "name": "http", + "protocol": "TCP", + "port": 9080 + } + ] + } + ], + "istioPermissions": { + "create": true, + "update": true, + "delete": true + }, + "istioSidecar": true, + "k8sHTTPRoutes": [], + "k8sReferenceGrants": null, + "service": { + "name": "ratings", + "createdAt": "2024-02-26T09:51:07Z", + "resourceVersion": "856", + "namespace": { + "name": "bookinfo", + "cluster": "", + "isAmbient": false, + "labels": null, + "annotations": null + }, + "labels": { + "app": "ratings", + "service": "ratings" + }, + "selectors": { + "app": "ratings" + }, + "type": "ClusterIP", + "ip": "10.101.181.176", + "ports": [ + { + "name": "http", + "protocol": "TCP", + "port": 9080 + } + ], + "externalName": "", + "annotations": { + "kubectl.kubernetes.io/last-applied-configuration": "{\"apiVersion\":\"v1\",\"kind\":\"Service\",\"metadata\":{\"annotations\":{},\"labels\":{\"app\":\"ratings\",\"service\":\"ratings\"},\"name\":\"ratings\",\"namespace\":\"bookinfo\"},\"spec\":{\"ports\":[{\"name\":\"http\",\"port\":9080}],\"selector\":{\"app\":\"ratings\"}}}\n" + }, + "healthAnnotations": {}, + "additionalDetails": [] + }, + "serviceEntries": null, + "virtualServices": [], + "workloads": [ + { + "name": "ratings-v1", + "cluster": "Kubernetes", + "type": "Deployment", + "createdAt": "2024-02-26T09:51:07Z", + "resourceVersion": "24555", + "istioSidecar": true, + "istioAmbient": false, + "additionalDetailSample": null, + "labels": { + "app": "ratings", + "version": "v1" + }, + "appLabel": true, + "versionLabel": true, + "podCount": 1, + "annotations": { + "deployment.kubernetes.io/revision": "1", + "kubectl.kubernetes.io/last-applied-configuration": "{\"apiVersion\":\"apps/v1\",\"kind\":\"Deployment\",\"metadata\":{\"annotations\":{},\"labels\":{\"app\":\"ratings\",\"version\":\"v1\"},\"name\":\"ratings-v1\",\"namespace\":\"bookinfo\"},\"spec\":{\"replicas\":1,\"selector\":{\"matchLabels\":{\"app\":\"ratings\",\"version\":\"v1\"}},\"template\":{\"metadata\":{\"labels\":{\"app\":\"ratings\",\"version\":\"v1\"}},\"spec\":{\"containers\":[{\"image\":\"docker.io/istio/examples-bookinfo-ratings-v1:1.18.0\",\"imagePullPolicy\":\"IfNotPresent\",\"name\":\"ratings\",\"ports\":[{\"containerPort\":9080}]}],\"serviceAccountName\":\"bookinfo-ratings\"}}}}\n" + }, + "healthAnnotations": {}, + "istioReferences": [], + "dashboardAnnotations": null, + "serviceAccountNames": ["bookinfo-ratings"], + "health": { + "workloadStatus": null, + "requests": { + "inbound": null, + "outbound": null, + "healthAnnotations": null + } + } + } + ], + "health": { + "requests": { + "inbound": { + "http": { + "200": 0.6666666666666665 + } + }, + "outbound": {}, + "healthAnnotations": {} + } + }, + "namespaceMTLS": { + "status": "MTLS_NOT_ENABLED", + "autoMTLSEnabled": true, + "minTLS": "" + }, + "subServices": [ + { + "name": "ratings", + "namespace": "", + "istioSidecar": false, + "cluster": "", + "istioAmbient": false, + "appLabel": false, + "additionalDetailSample": null, + "annotations": null, + "healthAnnotations": null, + "ports": { + "http": 9080 + }, + "labels": null, + "selector": null, + "istioReferences": null, + "kialiWizard": "", + "serviceRegistry": "", + "health": { + "requests": { + "inbound": null, + "outbound": null, + "healthAnnotations": null + } + } + } + ], + "validations": { + "gateway": { + "bookinfo-gateway.bookinfo": { + "name": "bookinfo-gateway", + "objectType": "gateway", + "valid": true, + "checks": [], + "references": null + } + }, + "service": { + "ratings.bookinfo": { + "name": "ratings", + "objectType": "service", + "valid": true, + "checks": [], + "references": null + } + }, + "virtualservice": { + "bookinfo.bookinfo": { + "name": "bookinfo", + "objectType": "virtualservice", + "valid": true, + "checks": [], + "references": null + } + }, + "workload": { + "cars-v1.travel-agency": { + "name": "cars-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "control.travel-control": { + "name": "control", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "details-v1.bookinfo": { + "name": "details-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "discounts-v1.travel-agency": { + "name": "discounts-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "flights-v1.travel-agency": { + "name": "flights-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "grafana.istio-system": { + "name": "grafana", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "hotels-v1.travel-agency": { + "name": "hotels-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "insurances-v1.travel-agency": { + "name": "insurances-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "istio-egressgateway.istio-system": { + "name": "istio-egressgateway", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "istio-ingressgateway.istio-system": { + "name": "istio-ingressgateway", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "istiod.istio-system": { + "name": "istiod", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "jaeger.istio-system": { + "name": "jaeger", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "kiali-traffic-generator.bookinfo": { + "name": "kiali-traffic-generator", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "kiali.istio-system": { + "name": "kiali", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "mysqldb-v1.travel-agency": { + "name": "mysqldb-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "productpage-v1.bookinfo": { + "name": "productpage-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "prometheus.istio-system": { + "name": "prometheus", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "ratings-v1.bookinfo": { + "name": "ratings-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "reviews-v1.bookinfo": { + "name": "reviews-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "reviews-v2.bookinfo": { + "name": "reviews-v2", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "reviews-v3.bookinfo": { + "name": "reviews-v3", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "travels-v1.travel-agency": { + "name": "travels-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "travels.travel-portal": { + "name": "travels", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "viaggi.travel-portal": { + "name": "viaggi", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "voyages.travel-portal": { + "name": "voyages", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + } + } + } +} diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/bookinfo/services/reviews.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/bookinfo/services/reviews.json new file mode 100644 index 0000000000..4090ba1189 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/bookinfo/services/reviews.json @@ -0,0 +1,430 @@ +{ + "cluster": "Kubernetes", + "destinationRules": [], + "endpoints": [ + { + "addresses": [ + { + "kind": "Pod", + "name": "reviews-v3-5b9bd44f4-f2r28", + "ip": "10.244.0.18", + "port": 0 + }, + { + "kind": "Pod", + "name": "reviews-v2-5b667bcbf8-zxdws", + "ip": "10.244.0.25", + "port": 0 + }, + { + "kind": "Pod", + "name": "reviews-v1-5b5d6494f4-9rn4v", + "ip": "10.244.0.26", + "port": 0 + } + ], + "ports": [ + { + "name": "http", + "protocol": "TCP", + "port": 9080 + } + ] + } + ], + "istioPermissions": { + "create": true, + "update": true, + "delete": true + }, + "istioSidecar": true, + "k8sHTTPRoutes": [], + "k8sReferenceGrants": null, + "service": { + "name": "reviews", + "createdAt": "2024-02-26T09:51:07Z", + "resourceVersion": "875", + "namespace": { + "name": "bookinfo", + "cluster": "", + "isAmbient": false, + "labels": null, + "annotations": null + }, + "labels": { + "app": "reviews", + "service": "reviews" + }, + "selectors": { + "app": "reviews" + }, + "type": "ClusterIP", + "ip": "10.99.45.111", + "ports": [ + { + "name": "http", + "protocol": "TCP", + "port": 9080 + } + ], + "externalName": "", + "annotations": { + "kubectl.kubernetes.io/last-applied-configuration": "{\"apiVersion\":\"v1\",\"kind\":\"Service\",\"metadata\":{\"annotations\":{},\"labels\":{\"app\":\"reviews\",\"service\":\"reviews\"},\"name\":\"reviews\",\"namespace\":\"bookinfo\"},\"spec\":{\"ports\":[{\"name\":\"http\",\"port\":9080}],\"selector\":{\"app\":\"reviews\"}}}\n" + }, + "healthAnnotations": {}, + "additionalDetails": [] + }, + "serviceEntries": null, + "virtualServices": [], + "workloads": [ + { + "name": "reviews-v1", + "cluster": "Kubernetes", + "type": "Deployment", + "createdAt": "2024-02-26T09:51:07Z", + "resourceVersion": "24571", + "istioSidecar": true, + "istioAmbient": false, + "additionalDetailSample": null, + "labels": { + "app": "reviews", + "version": "v1" + }, + "appLabel": true, + "versionLabel": true, + "podCount": 1, + "annotations": { + "deployment.kubernetes.io/revision": "1", + "kubectl.kubernetes.io/last-applied-configuration": "{\"apiVersion\":\"apps/v1\",\"kind\":\"Deployment\",\"metadata\":{\"annotations\":{},\"labels\":{\"app\":\"reviews\",\"version\":\"v1\"},\"name\":\"reviews-v1\",\"namespace\":\"bookinfo\"},\"spec\":{\"replicas\":1,\"selector\":{\"matchLabels\":{\"app\":\"reviews\",\"version\":\"v1\"}},\"template\":{\"metadata\":{\"labels\":{\"app\":\"reviews\",\"version\":\"v1\"}},\"spec\":{\"containers\":[{\"env\":[{\"name\":\"LOG_DIR\",\"value\":\"/tmp/logs\"}],\"image\":\"docker.io/istio/examples-bookinfo-reviews-v1:1.18.0\",\"imagePullPolicy\":\"IfNotPresent\",\"name\":\"reviews\",\"ports\":[{\"containerPort\":9080}],\"volumeMounts\":[{\"mountPath\":\"/tmp\",\"name\":\"tmp\"},{\"mountPath\":\"/opt/ibm/wlp/output\",\"name\":\"wlp-output\"}]}],\"serviceAccountName\":\"bookinfo-reviews\",\"volumes\":[{\"emptyDir\":{},\"name\":\"wlp-output\"},{\"emptyDir\":{},\"name\":\"tmp\"}]}}}}\n" + }, + "healthAnnotations": {}, + "istioReferences": [], + "dashboardAnnotations": null, + "serviceAccountNames": ["bookinfo-reviews"], + "health": { + "workloadStatus": null, + "requests": { + "inbound": null, + "outbound": null, + "healthAnnotations": null + } + } + }, + { + "name": "reviews-v2", + "cluster": "Kubernetes", + "type": "Deployment", + "createdAt": "2024-02-26T09:51:07Z", + "resourceVersion": "24577", + "istioSidecar": true, + "istioAmbient": false, + "additionalDetailSample": null, + "labels": { + "app": "reviews", + "version": "v2" + }, + "appLabel": true, + "versionLabel": true, + "podCount": 1, + "annotations": { + "deployment.kubernetes.io/revision": "1", + "kubectl.kubernetes.io/last-applied-configuration": "{\"apiVersion\":\"apps/v1\",\"kind\":\"Deployment\",\"metadata\":{\"annotations\":{},\"labels\":{\"app\":\"reviews\",\"version\":\"v2\"},\"name\":\"reviews-v2\",\"namespace\":\"bookinfo\"},\"spec\":{\"replicas\":1,\"selector\":{\"matchLabels\":{\"app\":\"reviews\",\"version\":\"v2\"}},\"template\":{\"metadata\":{\"labels\":{\"app\":\"reviews\",\"version\":\"v2\"}},\"spec\":{\"containers\":[{\"env\":[{\"name\":\"LOG_DIR\",\"value\":\"/tmp/logs\"}],\"image\":\"docker.io/istio/examples-bookinfo-reviews-v2:1.18.0\",\"imagePullPolicy\":\"IfNotPresent\",\"name\":\"reviews\",\"ports\":[{\"containerPort\":9080}],\"volumeMounts\":[{\"mountPath\":\"/tmp\",\"name\":\"tmp\"},{\"mountPath\":\"/opt/ibm/wlp/output\",\"name\":\"wlp-output\"}]}],\"serviceAccountName\":\"bookinfo-reviews\",\"volumes\":[{\"emptyDir\":{},\"name\":\"wlp-output\"},{\"emptyDir\":{},\"name\":\"tmp\"}]}}}}\n" + }, + "healthAnnotations": {}, + "istioReferences": [], + "dashboardAnnotations": null, + "serviceAccountNames": ["bookinfo-reviews"], + "health": { + "workloadStatus": null, + "requests": { + "inbound": null, + "outbound": null, + "healthAnnotations": null + } + } + }, + { + "name": "reviews-v3", + "cluster": "Kubernetes", + "type": "Deployment", + "createdAt": "2024-02-26T09:51:07Z", + "resourceVersion": "24584", + "istioSidecar": true, + "istioAmbient": false, + "additionalDetailSample": null, + "labels": { + "app": "reviews", + "version": "v3" + }, + "appLabel": true, + "versionLabel": true, + "podCount": 1, + "annotations": { + "deployment.kubernetes.io/revision": "1", + "kubectl.kubernetes.io/last-applied-configuration": "{\"apiVersion\":\"apps/v1\",\"kind\":\"Deployment\",\"metadata\":{\"annotations\":{},\"labels\":{\"app\":\"reviews\",\"version\":\"v3\"},\"name\":\"reviews-v3\",\"namespace\":\"bookinfo\"},\"spec\":{\"replicas\":1,\"selector\":{\"matchLabels\":{\"app\":\"reviews\",\"version\":\"v3\"}},\"template\":{\"metadata\":{\"labels\":{\"app\":\"reviews\",\"version\":\"v3\"}},\"spec\":{\"containers\":[{\"env\":[{\"name\":\"LOG_DIR\",\"value\":\"/tmp/logs\"}],\"image\":\"docker.io/istio/examples-bookinfo-reviews-v3:1.18.0\",\"imagePullPolicy\":\"IfNotPresent\",\"name\":\"reviews\",\"ports\":[{\"containerPort\":9080}],\"volumeMounts\":[{\"mountPath\":\"/tmp\",\"name\":\"tmp\"},{\"mountPath\":\"/opt/ibm/wlp/output\",\"name\":\"wlp-output\"}]}],\"serviceAccountName\":\"bookinfo-reviews\",\"volumes\":[{\"emptyDir\":{},\"name\":\"wlp-output\"},{\"emptyDir\":{},\"name\":\"tmp\"}]}}}}\n" + }, + "healthAnnotations": {}, + "istioReferences": [], + "dashboardAnnotations": null, + "serviceAccountNames": ["bookinfo-reviews"], + "health": { + "workloadStatus": null, + "requests": { + "inbound": null, + "outbound": null, + "healthAnnotations": null + } + } + } + ], + "health": { + "requests": { + "inbound": { + "http": { + "200": 1.0000222227160604 + } + }, + "outbound": {}, + "healthAnnotations": {} + } + }, + "namespaceMTLS": { + "status": "MTLS_NOT_ENABLED", + "autoMTLSEnabled": true, + "minTLS": "" + }, + "subServices": [ + { + "name": "reviews", + "namespace": "", + "istioSidecar": false, + "cluster": "", + "istioAmbient": false, + "appLabel": false, + "additionalDetailSample": null, + "annotations": null, + "healthAnnotations": null, + "ports": { + "http": 9080 + }, + "labels": null, + "selector": null, + "istioReferences": null, + "kialiWizard": "", + "serviceRegistry": "", + "health": { + "requests": { + "inbound": null, + "outbound": null, + "healthAnnotations": null + } + } + } + ], + "validations": { + "gateway": { + "bookinfo-gateway.bookinfo": { + "name": "bookinfo-gateway", + "objectType": "gateway", + "valid": true, + "checks": [], + "references": null + } + }, + "service": { + "reviews.bookinfo": { + "name": "reviews", + "objectType": "service", + "valid": true, + "checks": [], + "references": null + } + }, + "virtualservice": { + "bookinfo.bookinfo": { + "name": "bookinfo", + "objectType": "virtualservice", + "valid": true, + "checks": [], + "references": null + } + }, + "workload": { + "cars-v1.travel-agency": { + "name": "cars-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "control.travel-control": { + "name": "control", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "details-v1.bookinfo": { + "name": "details-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "discounts-v1.travel-agency": { + "name": "discounts-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "flights-v1.travel-agency": { + "name": "flights-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "grafana.istio-system": { + "name": "grafana", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "hotels-v1.travel-agency": { + "name": "hotels-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "insurances-v1.travel-agency": { + "name": "insurances-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "istio-egressgateway.istio-system": { + "name": "istio-egressgateway", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "istio-ingressgateway.istio-system": { + "name": "istio-ingressgateway", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "istiod.istio-system": { + "name": "istiod", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "jaeger.istio-system": { + "name": "jaeger", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "kiali-traffic-generator.bookinfo": { + "name": "kiali-traffic-generator", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "kiali.istio-system": { + "name": "kiali", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "mysqldb-v1.travel-agency": { + "name": "mysqldb-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "productpage-v1.bookinfo": { + "name": "productpage-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "prometheus.istio-system": { + "name": "prometheus", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "ratings-v1.bookinfo": { + "name": "ratings-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "reviews-v1.bookinfo": { + "name": "reviews-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "reviews-v2.bookinfo": { + "name": "reviews-v2", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "reviews-v3.bookinfo": { + "name": "reviews-v3", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "travels-v1.travel-agency": { + "name": "travels-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "travels.travel-portal": { + "name": "travels", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "viaggi.travel-portal": { + "name": "viaggi", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "voyages.travel-portal": { + "name": "voyages", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + } + } + } +} diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/bookinfo/spans.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/bookinfo/spans.json new file mode 100644 index 0000000000..b40bf45599 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/bookinfo/spans.json @@ -0,0 +1,25202 @@ +[ + { + "traceID": "7107ddd9f7ebc1b2238fff1a4c445e88", + "spanID": "665271058a7beee5", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "7107ddd9f7ebc1b2238fff1a4c445e88", + "spanID": "ae51de8f2bf2666a" + } + ], + "startTime": 1710318683793866, + "duration": 880, + "tags": [ + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "details" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.15" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "bbb98b83-7902-97fc-8c67-bf9a3add4aa8" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.11~details-v1-698d88b-z2bws.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p4", + "process": { + "serviceName": "details.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762955 + } + ] + }, + "warnings": null, + "traceSize": 7 + }, + { + "traceID": "8945e149e3c8e66e51b657d2f77a762e", + "spanID": "c123b040290f27bb", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "8945e149e3c8e66e51b657d2f77a762e", + "spanID": "d6a634138d75e747" + } + ], + "startTime": 1710318665793417, + "duration": 759, + "tags": [ + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "details" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.15" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.11~details-v1-698d88b-z2bws.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "f168d2fc-e941-979d-9f57-70582121a86d" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p4", + "process": { + "serviceName": "details.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762955 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "284fc8c991c7b8f855122347849ef5b9", + "spanID": "bad81ebc1d31c08f", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "284fc8c991c7b8f855122347849ef5b9", + "spanID": "84e13b4c0e3c0645" + } + ], + "startTime": 1710318637793406, + "duration": 974, + "tags": [ + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.15" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "c5adc156-5537-9159-acd1-16891f9c2819" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "details" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.11~details-v1-698d88b-z2bws.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p4", + "process": { + "serviceName": "details.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762955 + } + ] + }, + "warnings": null, + "traceSize": 7 + }, + { + "traceID": "ea3f45eb762329a29b5813355371a1ab", + "spanID": "a8765d1700777fad", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "ea3f45eb762329a29b5813355371a1ab", + "spanID": "7967547aa55c67cb" + } + ], + "startTime": 1710318700801563, + "duration": 817, + "tags": [ + { + "key": "istio.canonical_service", + "type": "string", + "value": "details" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "827c51ff-65cb-974a-8292-af06b1ed69c5" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.15" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.11~details-v1-698d88b-z2bws.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p4", + "process": { + "serviceName": "details.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762955 + } + ] + }, + "warnings": null, + "traceSize": 7 + }, + { + "traceID": "442917e4ddd7b2a6e43dfa7f6c171fd8", + "spanID": "b13162d194425de3", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "442917e4ddd7b2a6e43dfa7f6c171fd8", + "spanID": "860487f352bcc700" + } + ], + "startTime": 1710318686793665, + "duration": 1059, + "tags": [ + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.15" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "a322d353-e54f-9981-ae47-2ccd0f16dfac" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.11~details-v1-698d88b-z2bws.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "details" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p4", + "process": { + "serviceName": "details.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762955 + } + ] + }, + "warnings": null, + "traceSize": 7 + }, + { + "traceID": "a932c71e1d04a3e00ad4c8611471a494", + "spanID": "3ff23684b5956fc3", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "a932c71e1d04a3e00ad4c8611471a494", + "spanID": "f86ec0cc5f12ca45" + } + ], + "startTime": 1710318682793266, + "duration": 723, + "tags": [ + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "eeaab283-b032-9fee-b9d8-828cf0830278" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.15" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "details" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.11~details-v1-698d88b-z2bws.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p4", + "process": { + "serviceName": "details.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762955 + } + ] + }, + "warnings": null, + "traceSize": 7 + }, + { + "traceID": "3a036c06d7a7537cee8521102545701f", + "spanID": "7010507099b5c3fc", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "3a036c06d7a7537cee8521102545701f", + "spanID": "648176655fbad639" + } + ], + "startTime": 1710318680793748, + "duration": 715, + "tags": [ + { + "key": "istio.canonical_service", + "type": "string", + "value": "details" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "ebb90540-477b-90e4-9fff-c8cb94eb4fad" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.15" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.11~details-v1-698d88b-z2bws.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p4", + "process": { + "serviceName": "details.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762955 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "b7b2bbcf9bb74ab0537009811b061afe", + "spanID": "5d2758363f1f9868", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "b7b2bbcf9bb74ab0537009811b061afe", + "spanID": "b17d84ff8298c0e6" + } + ], + "startTime": 1710318672797098, + "duration": 1819, + "tags": [ + { + "key": "guid:x-request-id", + "type": "string", + "value": "2cfb5e89-5851-9b3d-8ea0-db7bac9cc5b1" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.15" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "details" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.11~details-v1-698d88b-z2bws.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p4", + "process": { + "serviceName": "details.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762955 + } + ] + }, + "warnings": null, + "traceSize": 7 + }, + { + "traceID": "60c3e4b5b0861186e2205e60beaea99f", + "spanID": "b80f00a83309674c", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "60c3e4b5b0861186e2205e60beaea99f", + "spanID": "101ea35b484a5a50" + } + ], + "startTime": 1710318668801342, + "duration": 903, + "tags": [ + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "bc811ca6-015e-9c3b-ad7c-8034b990319d" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "details" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.11~details-v1-698d88b-z2bws.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.15" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p4", + "process": { + "serviceName": "details.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762955 + } + ] + }, + "warnings": null, + "traceSize": 7 + }, + { + "traceID": "be8bf65403f10d986327448e4fd35f8c", + "spanID": "cf9d590ab35d33c7", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "be8bf65403f10d986327448e4fd35f8c", + "spanID": "ea2744d2a7c94d37" + } + ], + "startTime": 1710318659798922, + "duration": 997, + "tags": [ + { + "key": "guid:x-request-id", + "type": "string", + "value": "962fc070-60e2-9382-80fd-3a2ba45076ea" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "details" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.11~details-v1-698d88b-z2bws.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.15" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p4", + "process": { + "serviceName": "details.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762955 + } + ] + }, + "warnings": null, + "traceSize": 7 + }, + { + "traceID": "78ac987fd0e5c82cbb3c0b9206398c05", + "spanID": "66a58f527a511b21", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "78ac987fd0e5c82cbb3c0b9206398c05", + "spanID": "8c631229e083633e" + } + ], + "startTime": 1710318651793758, + "duration": 818, + "tags": [ + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "5f7ad339-7920-90ea-8fbb-4227d3f76e60" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.15" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.11~details-v1-698d88b-z2bws.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "details" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p4", + "process": { + "serviceName": "details.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762955 + } + ] + }, + "warnings": null, + "traceSize": 7 + }, + { + "traceID": "2ebd2207e20819241b36390c63af2730", + "spanID": "399a8e7b0e4213de", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "2ebd2207e20819241b36390c63af2730", + "spanID": "0cf69ff72fec700c" + } + ], + "startTime": 1710318727796362, + "duration": 1467, + "tags": [ + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "details" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.15" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "32b05bdc-a5d7-9979-ad4c-04e457a49516" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.11~details-v1-698d88b-z2bws.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p4", + "process": { + "serviceName": "details.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762955 + } + ] + }, + "warnings": null, + "traceSize": 7 + }, + { + "traceID": "85d01aca7f27218ebd984c3eb2e218ea", + "spanID": "b74694c6239458b8", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "85d01aca7f27218ebd984c3eb2e218ea", + "spanID": "b29d5fb773d7ddf3" + } + ], + "startTime": 1710318642801519, + "duration": 2771, + "tags": [ + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "c58b042a-d081-9821-bf25-ce949162f45b" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "details" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.15" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.11~details-v1-698d88b-z2bws.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p4", + "process": { + "serviceName": "details.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762955 + } + ] + }, + "warnings": null, + "traceSize": 7 + }, + { + "traceID": "b98f6bd11f0b26beac754fa72060bec2", + "spanID": "ed79d8f09f227f3a", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "b98f6bd11f0b26beac754fa72060bec2", + "spanID": "69bae203b6b8ae0a" + } + ], + "startTime": 1710318646793923, + "duration": 849, + "tags": [ + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.11~details-v1-698d88b-z2bws.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "cab694d8-e121-982d-83cd-5e3a907caaad" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.15" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "details" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p4", + "process": { + "serviceName": "details.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762955 + } + ] + }, + "warnings": null, + "traceSize": 7 + }, + { + "traceID": "759c89be807686dfcc651676ed6ad338", + "spanID": "0ef7cd2bb88fea38", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "759c89be807686dfcc651676ed6ad338", + "spanID": "425c6a4ad09a73ee" + } + ], + "startTime": 1710318658793079, + "duration": 871, + "tags": [ + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "details" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.11~details-v1-698d88b-z2bws.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.15" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "6c99fec4-6e50-9486-92fe-35c15ca8c089" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p4", + "process": { + "serviceName": "details.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762955 + } + ] + }, + "warnings": null, + "traceSize": 7 + }, + { + "traceID": "669d30d5eca1af30343f167ed202d723", + "spanID": "9a5aa9f4ff1b9aea", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "669d30d5eca1af30343f167ed202d723", + "spanID": "997a2ca68e463d9c" + } + ], + "startTime": 1710318719801960, + "duration": 1958, + "tags": [ + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.15" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "feb26331-3008-9bcd-822d-a90d9f4b9bff" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "details" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.11~details-v1-698d88b-z2bws.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p4", + "process": { + "serviceName": "details.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762955 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "9798c4782c36436b49cc7288f9937b07", + "spanID": "f014086bdfa99d3b", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "9798c4782c36436b49cc7288f9937b07", + "spanID": "b3e31956fc2aee48" + } + ], + "startTime": 1710318711802231, + "duration": 2496, + "tags": [ + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.11~details-v1-698d88b-z2bws.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.15" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "details" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "e4495b37-b9ff-95c5-a582-d17067d33a08" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p4", + "process": { + "serviceName": "details.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762955 + } + ] + }, + "warnings": null, + "traceSize": 7 + }, + { + "traceID": "d85aee118d749ba5b90645eb549ebfad", + "spanID": "60c8d2215a114e64", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "d85aee118d749ba5b90645eb549ebfad", + "spanID": "4a1eb6870e800049" + } + ], + "startTime": 1710318677793688, + "duration": 754, + "tags": [ + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "details" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.15" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.11~details-v1-698d88b-z2bws.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "073ccc50-ef92-926b-8235-96b10df75c20" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p4", + "process": { + "serviceName": "details.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762955 + } + ] + }, + "warnings": null, + "traceSize": 7 + }, + { + "traceID": "3761af009dcad3ae9ddd763fc36a9f83", + "spanID": "37d9cf979e01cb20", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "3761af009dcad3ae9ddd763fc36a9f83", + "spanID": "1181762bd0e2213d" + } + ], + "startTime": 1710318666792914, + "duration": 759, + "tags": [ + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "79fa4487-0d2f-9d26-9774-f06f9ab9214d" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.11~details-v1-698d88b-z2bws.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "details" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.15" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p4", + "process": { + "serviceName": "details.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762955 + } + ] + }, + "warnings": null, + "traceSize": 7 + }, + { + "traceID": "d0679eeede9c01ad7a6795a15afa8353", + "spanID": "bf50501b7da66610", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "d0679eeede9c01ad7a6795a15afa8353", + "spanID": "7a9dc5caa14e3837" + } + ], + "startTime": 1710318663793947, + "duration": 907, + "tags": [ + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "3165a4fe-cff9-96d5-8855-53746da5b6b1" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.15" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "details" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.11~details-v1-698d88b-z2bws.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p4", + "process": { + "serviceName": "details.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762955 + } + ] + }, + "warnings": null, + "traceSize": 7 + }, + { + "traceID": "223a53b584168536c9a07ed12a219358", + "spanID": "15c33740024f2cd6", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "223a53b584168536c9a07ed12a219358", + "spanID": "43c3bc948abab362" + } + ], + "startTime": 1710318625794627, + "duration": 898, + "tags": [ + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "fd3e187b-c028-9768-aade-1deea0630e52" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.11~details-v1-698d88b-z2bws.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "details" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.15" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p4", + "process": { + "serviceName": "details.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762955 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "b41f1ac0f113383c72ea5669027a3c26", + "spanID": "af958a1835e373c2", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "b41f1ac0f113383c72ea5669027a3c26", + "spanID": "88f92ef78653ffbd" + } + ], + "startTime": 1710318714792838, + "duration": 723, + "tags": [ + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.11~details-v1-698d88b-z2bws.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.15" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "301c5e26-9042-9167-8d9a-19d24fe386b9" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "details" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p4", + "process": { + "serviceName": "details.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762955 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "efd707c07878e62134aafbcf715f5b92", + "spanID": "b2e075ebea975857", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "efd707c07878e62134aafbcf715f5b92", + "spanID": "418b1dd3a4428b28" + } + ], + "startTime": 1710318706793888, + "duration": 1041, + "tags": [ + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.11~details-v1-698d88b-z2bws.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "6be6e444-4c2d-96dc-bcc7-146daee21e1b" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "details" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.15" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p4", + "process": { + "serviceName": "details.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762955 + } + ] + }, + "warnings": null, + "traceSize": 7 + }, + { + "traceID": "32fdb6d812c3e29ac1076ee5f9e68a46", + "spanID": "d1d9217220a93a47", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "32fdb6d812c3e29ac1076ee5f9e68a46", + "spanID": "f0875483caf414fb" + } + ], + "startTime": 1710318697795748, + "duration": 1246, + "tags": [ + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.15" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "d629ef2b-efe4-9da3-8201-af28661b3360" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "details" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.11~details-v1-698d88b-z2bws.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p4", + "process": { + "serviceName": "details.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762955 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "237815ea99c4445e743c6495df065a8f", + "spanID": "0ea31eb4da860b49", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "237815ea99c4445e743c6495df065a8f", + "spanID": "9d221116dc46551f" + } + ], + "startTime": 1710318696794688, + "duration": 826, + "tags": [ + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "dc1e2f9b-fdce-93dd-a268-bf624801368b" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "details" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.11~details-v1-698d88b-z2bws.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.15" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p4", + "process": { + "serviceName": "details.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762955 + } + ] + }, + "warnings": null, + "traceSize": 7 + }, + { + "traceID": "3c789f96e6d97a651a02a41043918468", + "spanID": "f39ebd72de3d17a4", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "3c789f96e6d97a651a02a41043918468", + "spanID": "25d5ca151ee49ccc" + } + ], + "startTime": 1710318676801793, + "duration": 2462, + "tags": [ + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "df4481c9-b1bc-9d78-b7c9-9745eda481dd" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "details" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.11~details-v1-698d88b-z2bws.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.15" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p4", + "process": { + "serviceName": "details.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762955 + } + ] + }, + "warnings": null, + "traceSize": 7 + }, + { + "traceID": "50a2ee8808c084b3da4aeab399701d63", + "spanID": "3797bcd45fa0398d", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "50a2ee8808c084b3da4aeab399701d63", + "spanID": "bcc72b5dd0de10fb" + } + ], + "startTime": 1710318644798037, + "duration": 878, + "tags": [ + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.11~details-v1-698d88b-z2bws.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "aae5d0b0-b9a7-9953-bd2a-8a767345efd2" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.15" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "details" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p4", + "process": { + "serviceName": "details.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762955 + } + ] + }, + "warnings": null, + "traceSize": 7 + }, + { + "traceID": "874fe4f7a3ee7d4e9919c1e2f65029e0", + "spanID": "dad641e9036fddd3", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "874fe4f7a3ee7d4e9919c1e2f65029e0", + "spanID": "e17e2ffd4b9a6069" + } + ], + "startTime": 1710318641802356, + "duration": 2483, + "tags": [ + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.11~details-v1-698d88b-z2bws.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "3337d78f-2237-93dd-b0f9-dd79fffc5909" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "details" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.15" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p4", + "process": { + "serviceName": "details.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762955 + } + ] + }, + "warnings": null, + "traceSize": 7 + }, + { + "traceID": "4c2e9e40ca5055ddd0c092a7352d1eb3", + "spanID": "33bcfeb030584ad2", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "4c2e9e40ca5055ddd0c092a7352d1eb3", + "spanID": "ac6a781da2ed9073" + } + ], + "startTime": 1710318638794549, + "duration": 872, + "tags": [ + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "0af6c605-b530-9c02-bdca-972fc752c248" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "details" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.11~details-v1-698d88b-z2bws.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.15" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p4", + "process": { + "serviceName": "details.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762955 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "8d322811fa8b79e06eaf99ee1d379726", + "spanID": "b0841f215bc5f199", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "8d322811fa8b79e06eaf99ee1d379726", + "spanID": "a840d297f4fd8bc8" + } + ], + "startTime": 1710318722799250, + "duration": 1237, + "tags": [ + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.11~details-v1-698d88b-z2bws.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "ee07077f-da1c-9156-b71c-8ed32243e162" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "details" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.15" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p4", + "process": { + "serviceName": "details.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762955 + } + ] + }, + "warnings": null, + "traceSize": 7 + }, + { + "traceID": "97ccc321ca5dceadb59a3a5c9f18bf6c", + "spanID": "5736e3a43dff90c8", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "97ccc321ca5dceadb59a3a5c9f18bf6c", + "spanID": "8899a3224e6dcd3a" + } + ], + "startTime": 1710318624794045, + "duration": 837, + "tags": [ + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.15" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.11~details-v1-698d88b-z2bws.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "details" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "cdbf2be2-2170-90dc-a245-2cd33a5c2c3a" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p4", + "process": { + "serviceName": "details.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762955 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "1acf9f275da052f51efff668c95bbca4", + "spanID": "8ef94b4f9b5ec4cb", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "1acf9f275da052f51efff668c95bbca4", + "spanID": "7d1882eb9b05cfa7" + } + ], + "startTime": 1710318699794905, + "duration": 763, + "tags": [ + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "32d6ae69-1010-9736-bcbd-853f13315d17" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "details" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.11~details-v1-698d88b-z2bws.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.15" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p4", + "process": { + "serviceName": "details.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762955 + } + ] + }, + "warnings": null, + "traceSize": 7 + }, + { + "traceID": "162341ecd146a41e72ced4c2d023bd54", + "spanID": "e9e8ff7a0208d925", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "162341ecd146a41e72ced4c2d023bd54", + "spanID": "5ac755c606492caf" + } + ], + "startTime": 1710318692802214, + "duration": 2567, + "tags": [ + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "be2df35e-4315-9b15-9b2f-eee11ee5b5b5" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.11~details-v1-698d88b-z2bws.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "details" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.15" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p4", + "process": { + "serviceName": "details.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762955 + } + ] + }, + "warnings": null, + "traceSize": 7 + }, + { + "traceID": "8aa77f6f3099aee2cac52cd637b076ba", + "spanID": "f21b277159d594c3", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "8aa77f6f3099aee2cac52cd637b076ba", + "spanID": "7d77506b9446966a" + } + ], + "startTime": 1710318669794262, + "duration": 934, + "tags": [ + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.11~details-v1-698d88b-z2bws.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.15" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "86b0e505-4316-9cc4-a29f-4c3115474e92" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "details" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p4", + "process": { + "serviceName": "details.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762955 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "35073fa8e94dd6de1fe84a0a8941edee", + "spanID": "293edf2fe3b11a11", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "35073fa8e94dd6de1fe84a0a8941edee", + "spanID": "430589fc858b7354" + } + ], + "startTime": 1710318656792895, + "duration": 740, + "tags": [ + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "details" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "5e939c56-b605-9116-aed6-3b1e69ad64f0" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.15" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.11~details-v1-698d88b-z2bws.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p4", + "process": { + "serviceName": "details.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762955 + } + ] + }, + "warnings": null, + "traceSize": 7 + }, + { + "traceID": "3230853070dad3b1f7df91c98193c026", + "spanID": "73b40835017e9c7d", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "3230853070dad3b1f7df91c98193c026", + "spanID": "17cb668061aacd20" + } + ], + "startTime": 1710318647793548, + "duration": 772, + "tags": [ + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "aae5568b-20a2-959b-bc7e-d824dd69bd86" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "details" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.15" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.11~details-v1-698d88b-z2bws.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p4", + "process": { + "serviceName": "details.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762955 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "9c4cfedb4a1733652f2023b852b21d33", + "spanID": "16cfde1692506085", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "9c4cfedb4a1733652f2023b852b21d33", + "spanID": "978da1dd1eea68ce" + } + ], + "startTime": 1710318643795123, + "duration": 1117, + "tags": [ + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "details" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "6746ebce-73d8-9832-afc6-1742e1073c8e" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.15" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.11~details-v1-698d88b-z2bws.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p4", + "process": { + "serviceName": "details.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762955 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "9d12733cced9fed34c9524d399ff5a40", + "spanID": "ae15352e64004b0f", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "9d12733cced9fed34c9524d399ff5a40", + "spanID": "cf8af4e9bc85b031" + } + ], + "startTime": 1710318725793612, + "duration": 1048, + "tags": [ + { + "key": "guid:x-request-id", + "type": "string", + "value": "79959baa-8905-9a2b-b3fb-243e5295242b" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.15" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "details" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.11~details-v1-698d88b-z2bws.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p4", + "process": { + "serviceName": "details.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762955 + } + ] + }, + "warnings": null, + "traceSize": 7 + }, + { + "traceID": "7c32071c8bd75d6e1f804f4ef2eb9de9", + "spanID": "2a497a0c04061e9b", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "7c32071c8bd75d6e1f804f4ef2eb9de9", + "spanID": "467d466ea8645150" + } + ], + "startTime": 1710318650793511, + "duration": 707, + "tags": [ + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.15" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "126abbdf-6b01-9f86-9801-f912849e68af" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.11~details-v1-698d88b-z2bws.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "details" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p4", + "process": { + "serviceName": "details.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762955 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "ddc308256b5413433ef1ab78017fc439", + "spanID": "f902198e3409d80b", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "ddc308256b5413433ef1ab78017fc439", + "spanID": "39dbb538e290e21b" + } + ], + "startTime": 1710318636792757, + "duration": 752, + "tags": [ + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "c45b0714-6189-9abb-8bcb-8c9b51b14952" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.11~details-v1-698d88b-z2bws.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.15" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "details" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p4", + "process": { + "serviceName": "details.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762955 + } + ] + }, + "warnings": null, + "traceSize": 7 + }, + { + "traceID": "e60213932fc28aa4a9f477336465a04a", + "spanID": "0714af3e13951933", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "e60213932fc28aa4a9f477336465a04a", + "spanID": "bc35a1cce0f2e3ca" + } + ], + "startTime": 1710318635793523, + "duration": 807, + "tags": [ + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "details" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.15" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "e7e24900-8e1c-9a55-8f97-31b7423a0e03" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.11~details-v1-698d88b-z2bws.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p4", + "process": { + "serviceName": "details.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762955 + } + ] + }, + "warnings": null, + "traceSize": 7 + }, + { + "traceID": "c81154eb5632adb7baa16aa9dc5ace03", + "spanID": "97d92db80e40b621", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "c81154eb5632adb7baa16aa9dc5ace03", + "spanID": "c364d0d33df4174a" + } + ], + "startTime": 1710318702796901, + "duration": 1455, + "tags": [ + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.15" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "details" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.11~details-v1-698d88b-z2bws.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "6d49ac6c-35ca-90dd-a309-4dc73aa2c7e0" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p4", + "process": { + "serviceName": "details.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762955 + } + ] + }, + "warnings": null, + "traceSize": 7 + }, + { + "traceID": "28b05acbd0b0fc611ef7ac53291e879e", + "spanID": "5dfad4e1d96d3dec", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "28b05acbd0b0fc611ef7ac53291e879e", + "spanID": "46a13db5af16a284" + } + ], + "startTime": 1710318715793572, + "duration": 718, + "tags": [ + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.15" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "details" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "c0d5f92a-fcd6-9040-9075-a36360098254" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.11~details-v1-698d88b-z2bws.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p4", + "process": { + "serviceName": "details.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762955 + } + ] + }, + "warnings": null, + "traceSize": 7 + }, + { + "traceID": "6042631d81bc9dbad8fd8ff4692f7ab4", + "spanID": "699792d56ba381f9", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "6042631d81bc9dbad8fd8ff4692f7ab4", + "spanID": "5d4a35cea7efa57d" + } + ], + "startTime": 1710318661793820, + "duration": 914, + "tags": [ + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.11~details-v1-698d88b-z2bws.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "b29bf180-e7e7-9032-96f6-14048fd9dfd8" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.15" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "details" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p4", + "process": { + "serviceName": "details.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762955 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "79cea8bfb2ed28bb7e12777ff313b468", + "spanID": "00b7f360ef851557", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "79cea8bfb2ed28bb7e12777ff313b468", + "spanID": "ee5dfcebca436585" + } + ], + "startTime": 1710318639793034, + "duration": 785, + "tags": [ + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.11~details-v1-698d88b-z2bws.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "21bd8490-393c-9195-8c33-596141b47988" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "details" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.15" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p4", + "process": { + "serviceName": "details.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762955 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "81f1c6ce9d0930d34ee9420e787519ce", + "spanID": "8468870e72193a9f", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "81f1c6ce9d0930d34ee9420e787519ce", + "spanID": "265c10b3625ff982" + } + ], + "startTime": 1710318724795914, + "duration": 1278, + "tags": [ + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "details" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.11~details-v1-698d88b-z2bws.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.15" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "26fa964a-bb38-9eef-8908-9ceb1a33512f" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p4", + "process": { + "serviceName": "details.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762955 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "2e55c0bb4e1094c9b0e2d7534c558d0d", + "spanID": "59bbb31cc622d133", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "2e55c0bb4e1094c9b0e2d7534c558d0d", + "spanID": "2ab09fa6f756d24f" + } + ], + "startTime": 1710318698802265, + "duration": 2488, + "tags": [ + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "details" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.15" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "d11a16e3-a1d5-98fe-9d27-10b90970ab5c" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.11~details-v1-698d88b-z2bws.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p4", + "process": { + "serviceName": "details.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762955 + } + ] + }, + "warnings": null, + "traceSize": 7 + }, + { + "traceID": "77ab5ab7472a19f6a9c820bc687a5a31", + "spanID": "84246e791f5c9ceb", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "77ab5ab7472a19f6a9c820bc687a5a31", + "spanID": "5bfe094f9ad241b0" + } + ], + "startTime": 1710318726795978, + "duration": 1499, + "tags": [ + { + "key": "guid:x-request-id", + "type": "string", + "value": "93537833-6382-9ae2-b14a-5a98c15fb59d" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "details" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.11~details-v1-698d88b-z2bws.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.15" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p4", + "process": { + "serviceName": "details.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762955 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "b7d494b97b706c8b15aeeade13878e7d", + "spanID": "8c206dfacf237feb", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "b7d494b97b706c8b15aeeade13878e7d", + "spanID": "7f94a60e86c7fe25" + } + ], + "startTime": 1710318713795245, + "duration": 871, + "tags": [ + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.15" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "details" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.11~details-v1-698d88b-z2bws.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "06cbb118-4849-94c3-97f8-94cbb49a3e19" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p4", + "process": { + "serviceName": "details.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762955 + } + ] + }, + "warnings": null, + "traceSize": 7 + }, + { + "traceID": "74b4642e41e084c1f5f9ce601163570b", + "spanID": "346489aae90b5036", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "74b4642e41e084c1f5f9ce601163570b", + "spanID": "c1f719ddeb05dc20" + } + ], + "startTime": 1710318709802341, + "duration": 2551, + "tags": [ + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.11~details-v1-698d88b-z2bws.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.15" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "details" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "10cd54d6-fc3b-942c-9428-a75b79691e3a" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p4", + "process": { + "serviceName": "details.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762955 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "112a39166d1b6f2f11523edea7844e3e", + "spanID": "a87d8fe8667ea63b", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "112a39166d1b6f2f11523edea7844e3e", + "spanID": "e273a2895c21b57a" + } + ], + "startTime": 1710318685793249, + "duration": 813, + "tags": [ + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "details" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "a348030d-f504-9f58-a980-c4e26bc53556" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.15" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.11~details-v1-698d88b-z2bws.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p4", + "process": { + "serviceName": "details.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762955 + } + ] + }, + "warnings": null, + "traceSize": 7 + }, + { + "traceID": "78ac08ece238b461f5a2fc7f654399ac", + "spanID": "f5e91095d49838f4", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "78ac08ece238b461f5a2fc7f654399ac", + "spanID": "5b32314cf41c4776" + } + ], + "startTime": 1710318679793647, + "duration": 707, + "tags": [ + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.11~details-v1-698d88b-z2bws.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.15" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "5045b648-c3c7-98a3-862a-a8928b9053e8" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "details" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p4", + "process": { + "serviceName": "details.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762955 + } + ] + }, + "warnings": null, + "traceSize": 7 + }, + { + "traceID": "2fdd48a710d5b74c76fdb65c69d049ba", + "spanID": "ff6a1c3ca52d0377", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "2fdd48a710d5b74c76fdb65c69d049ba", + "spanID": "d0cad27db7a2b2e3" + } + ], + "startTime": 1710318678793349, + "duration": 807, + "tags": [ + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.15" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "eac2ed49-4ce5-9bfd-8bce-f6c3d6508707" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.11~details-v1-698d88b-z2bws.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "details" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p4", + "process": { + "serviceName": "details.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762955 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "861d0f22f8c759aa4d639ae7aad46263", + "spanID": "6378e40c4d7bd4c3", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "861d0f22f8c759aa4d639ae7aad46263", + "spanID": "acf1948fe72261dc" + } + ], + "startTime": 1710318662792937, + "duration": 753, + "tags": [ + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "d1a0e9f1-f5e3-903e-802f-0526cfbf74a4" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "details" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.11~details-v1-698d88b-z2bws.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.15" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p4", + "process": { + "serviceName": "details.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762955 + } + ] + }, + "warnings": null, + "traceSize": 7 + }, + { + "traceID": "2de70461ac512101fe78c63364c677ef", + "spanID": "08a8cc7eddc6f58b", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "2de70461ac512101fe78c63364c677ef", + "spanID": "d8e898535e1699f0" + } + ], + "startTime": 1710318654793032, + "duration": 719, + "tags": [ + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "details" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.15" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.11~details-v1-698d88b-z2bws.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "90fb271f-5a33-9d9d-967b-9024c8ee4a31" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p4", + "process": { + "serviceName": "details.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762955 + } + ] + }, + "warnings": null, + "traceSize": 7 + }, + { + "traceID": "b511d2515933b6b74c32ae5ec8bdb28b", + "spanID": "b1b2790a3b0b67f3", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "b511d2515933b6b74c32ae5ec8bdb28b", + "spanID": "e5bc9cc031ea1b8e" + } + ], + "startTime": 1710318720793039, + "duration": 789, + "tags": [ + { + "key": "istio.canonical_service", + "type": "string", + "value": "details" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "ca3d00bc-174a-9f60-ab9d-07f0b82f9876" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.15" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.11~details-v1-698d88b-z2bws.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p4", + "process": { + "serviceName": "details.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762955 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "8a65aa77a3762ea797af893bacf66270", + "spanID": "59ebd57a55476d25", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "8a65aa77a3762ea797af893bacf66270", + "spanID": "9b90d5c71a01c3de" + } + ], + "startTime": 1710318652793725, + "duration": 880, + "tags": [ + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.15" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.11~details-v1-698d88b-z2bws.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "a6d155fd-c08d-9ebb-a6d7-02841417c42c" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "details" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p4", + "process": { + "serviceName": "details.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762955 + } + ] + }, + "warnings": null, + "traceSize": 7 + }, + { + "traceID": "d30d86ace586a74c8f2d388663cbd23e", + "spanID": "9bb2c2e62d7a3c5f", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "d30d86ace586a74c8f2d388663cbd23e", + "spanID": "7e06507529380392" + } + ], + "startTime": 1710318718793453, + "duration": 714, + "tags": [ + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.15" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "details" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "7b9849bb-32d0-9d96-aff7-583e1aaba3cb" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.11~details-v1-698d88b-z2bws.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p4", + "process": { + "serviceName": "details.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762955 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "c40edb25f59140ec2dae9764f1682560", + "spanID": "8296c3b6ae888ad6", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "c40edb25f59140ec2dae9764f1682560", + "spanID": "dc7789c276632b78" + } + ], + "startTime": 1710318707792840, + "duration": 746, + "tags": [ + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "ac71e3bb-cff9-9931-99ed-5f5b9ca3afe3" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.15" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "details" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.11~details-v1-698d88b-z2bws.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p4", + "process": { + "serviceName": "details.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762955 + } + ] + }, + "warnings": null, + "traceSize": 7 + }, + { + "traceID": "f69722377d88eeb7a6e5d4a5cd1ffd0e", + "spanID": "33d68e5f5164e28f", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "f69722377d88eeb7a6e5d4a5cd1ffd0e", + "spanID": "a5760bd6442e91c5" + } + ], + "startTime": 1710318694794127, + "duration": 868, + "tags": [ + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.11~details-v1-698d88b-z2bws.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "details" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "6b440538-49ad-978a-81c5-8a15100ef81c" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.15" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p4", + "process": { + "serviceName": "details.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762955 + } + ] + }, + "warnings": null, + "traceSize": 7 + }, + { + "traceID": "dfd09b8716ff846e5d03648a27a405ed", + "spanID": "af4452088227aeb9", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "dfd09b8716ff846e5d03648a27a405ed", + "spanID": "155b7a169764b328" + } + ], + "startTime": 1710318693793993, + "duration": 858, + "tags": [ + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "f467bec7-d295-9f7a-ab6e-348a5c31099b" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "details" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.11~details-v1-698d88b-z2bws.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.15" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p4", + "process": { + "serviceName": "details.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762955 + } + ] + }, + "warnings": null, + "traceSize": 7 + }, + { + "traceID": "d4a160e47ed3fcd31e515da259c39d38", + "spanID": "0e64a6a6cb2c3a29", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "d4a160e47ed3fcd31e515da259c39d38", + "spanID": "6c527be40c5219d6" + } + ], + "startTime": 1710318690798691, + "duration": 879, + "tags": [ + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "details" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.15" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "a09d442f-6c68-9a00-8a2a-2fcebfe043b2" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.11~details-v1-698d88b-z2bws.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p4", + "process": { + "serviceName": "details.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762955 + } + ] + }, + "warnings": null, + "traceSize": 7 + }, + { + "traceID": "5b93fb472dc6bcccf9f40dfe9d6f793d", + "spanID": "1b841ae091d43bd0", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "5b93fb472dc6bcccf9f40dfe9d6f793d", + "spanID": "276520664cc9c08f" + } + ], + "startTime": 1710318687793104, + "duration": 739, + "tags": [ + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "details" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "da6b00af-4edb-946f-b56c-5f8e91d1b8e3" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.15" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.11~details-v1-698d88b-z2bws.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p4", + "process": { + "serviceName": "details.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762955 + } + ] + }, + "warnings": null, + "traceSize": 7 + }, + { + "traceID": "a889d2c8997fa70add4e971ca7736d57", + "spanID": "ab72b2da35540caa", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "a889d2c8997fa70add4e971ca7736d57", + "spanID": "4e7078d29072537b" + } + ], + "startTime": 1710318640793149, + "duration": 745, + "tags": [ + { + "key": "guid:x-request-id", + "type": "string", + "value": "2b6604a2-b4c9-9474-b9e7-4e09aeb285b6" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "details" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.15" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.11~details-v1-698d88b-z2bws.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p4", + "process": { + "serviceName": "details.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762955 + } + ] + }, + "warnings": null, + "traceSize": 7 + }, + { + "traceID": "6bfeea11d03b6948ff5550e857aa2486", + "spanID": "958b2f8d56e8bae7", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "6bfeea11d03b6948ff5550e857aa2486", + "spanID": "b7167024231f7b19" + } + ], + "startTime": 1710318728793457, + "duration": 718, + "tags": [ + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "49cb5bac-2117-9dda-956d-095037d0b14f" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "details" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.15" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.11~details-v1-698d88b-z2bws.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p4", + "process": { + "serviceName": "details.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762955 + } + ] + }, + "warnings": null, + "traceSize": 7 + }, + { + "traceID": "ac81673ce556e4e85f624078a106d93c", + "spanID": "a70779edc561db25", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "ac81673ce556e4e85f624078a106d93c", + "spanID": "578efe710f6b2d34" + } + ], + "startTime": 1710318634795509, + "duration": 1311, + "tags": [ + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "ae00ee96-770a-9a4e-be79-dfc2d1991492" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "details" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.11~details-v1-698d88b-z2bws.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.15" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p4", + "process": { + "serviceName": "details.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762955 + } + ] + }, + "warnings": null, + "traceSize": 7 + }, + { + "traceID": "adecf7ab378989f3f273ef3f103a154c", + "spanID": "82c9051ca20e38c9", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "adecf7ab378989f3f273ef3f103a154c", + "spanID": "21ae7ba8bda34c70" + } + ], + "startTime": 1710318675793400, + "duration": 805, + "tags": [ + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "details" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.11~details-v1-698d88b-z2bws.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.15" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "86cc43b5-4539-935f-ab6e-68ab7ad04df7" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p4", + "process": { + "serviceName": "details.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762955 + } + ] + }, + "warnings": null, + "traceSize": 7 + }, + { + "traceID": "bca3ab1ffbc86368d9126f1ac7ff23d2", + "spanID": "1d582d1e42fd892d", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "bca3ab1ffbc86368d9126f1ac7ff23d2", + "spanID": "339cf67e31a6e9bf" + } + ], + "startTime": 1710318648801547, + "duration": 2466, + "tags": [ + { + "key": "guid:x-request-id", + "type": "string", + "value": "12635b16-c448-9144-8a18-8f127a6026c3" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "details" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.11~details-v1-698d88b-z2bws.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.15" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p4", + "process": { + "serviceName": "details.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762955 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "48e9a7385f642e282dec2b034ed0d549", + "spanID": "964b88b2b263e1d3", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "48e9a7385f642e282dec2b034ed0d549", + "spanID": "bcecb8923cc7ad76" + } + ], + "startTime": 1710318631795465, + "duration": 1043, + "tags": [ + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "bde24690-b46c-99c2-add4-753e77634e54" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.11~details-v1-698d88b-z2bws.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "details" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.15" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p4", + "process": { + "serviceName": "details.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762955 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "76fc3ada36dfa9c1e3a07a4e586d175f", + "spanID": "6da782eae2f73be5", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "76fc3ada36dfa9c1e3a07a4e586d175f", + "spanID": "9f567a9388de6e07" + } + ], + "startTime": 1710318721793128, + "duration": 760, + "tags": [ + { + "key": "guid:x-request-id", + "type": "string", + "value": "a43927c6-2490-972d-8e35-d05d21827682" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.11~details-v1-698d88b-z2bws.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.15" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "details" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p4", + "process": { + "serviceName": "details.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762955 + } + ] + }, + "warnings": null, + "traceSize": 7 + }, + { + "traceID": "dca426d7fa2d55b7ca2a0ece6182cfee", + "spanID": "f1c732316d5e26b4", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "dca426d7fa2d55b7ca2a0ece6182cfee", + "spanID": "1245bdddd770c319" + } + ], + "startTime": 1710318717793586, + "duration": 731, + "tags": [ + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.11~details-v1-698d88b-z2bws.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "e906be79-8466-9187-b14f-f33bc69fcdda" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.15" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "details" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p4", + "process": { + "serviceName": "details.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762955 + } + ] + }, + "warnings": null, + "traceSize": 7 + }, + { + "traceID": "38bfe07fa6074b7d58caf8e4619099b7", + "spanID": "4aa539286275a359", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "38bfe07fa6074b7d58caf8e4619099b7", + "spanID": "af0fb946496a74ee" + } + ], + "startTime": 1710318716793250, + "duration": 764, + "tags": [ + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.11~details-v1-698d88b-z2bws.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "details" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "f4ca90e9-baa4-9252-afd3-47b57a93f9bf" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.15" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p4", + "process": { + "serviceName": "details.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762955 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "489cb85769e8cc822c99feef78b4872d", + "spanID": "b5ca2e10b65b1053", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "489cb85769e8cc822c99feef78b4872d", + "spanID": "b22c404549e8a4f0" + } + ], + "startTime": 1710318704793153, + "duration": 1043, + "tags": [ + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.15" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.11~details-v1-698d88b-z2bws.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "details" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "c99cc5af-fac7-9644-868b-911dd7f0b6e0" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p4", + "process": { + "serviceName": "details.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762955 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "1078750950c3118c468bc5b8842f1eec", + "spanID": "a0104afe64eb71e9", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "1078750950c3118c468bc5b8842f1eec", + "spanID": "1fbe1d43250a1f37" + } + ], + "startTime": 1710318703793293, + "duration": 763, + "tags": [ + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.11~details-v1-698d88b-z2bws.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "details" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.15" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "f06372ae-7567-93c7-83ac-96689a05a394" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p4", + "process": { + "serviceName": "details.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762955 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "822fb5629ef134445f6c933b21308fef", + "spanID": "365ce9ae16a7ce1d", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "822fb5629ef134445f6c933b21308fef", + "spanID": "3e2319578f1e91ae" + } + ], + "startTime": 1710318673796475, + "duration": 897, + "tags": [ + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "details" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.15" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "ef358b43-de1a-9290-bb43-0d6617f5600f" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.11~details-v1-698d88b-z2bws.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p4", + "process": { + "serviceName": "details.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762955 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "f633e1409d68045662e324b0108e4cc2", + "spanID": "2e2483859f9f5396", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "f633e1409d68045662e324b0108e4cc2", + "spanID": "7ce0351e92a6b3bd" + } + ], + "startTime": 1710318660794022, + "duration": 1020, + "tags": [ + { + "key": "istio.canonical_service", + "type": "string", + "value": "details" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.15" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "7b192d17-7e09-9ce4-9259-b65d63cd7b64" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.11~details-v1-698d88b-z2bws.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p4", + "process": { + "serviceName": "details.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762955 + } + ] + }, + "warnings": null, + "traceSize": 7 + }, + { + "traceID": "2b29dfeac119ae50983ecabda1e45148", + "spanID": "d154188a8cdb7240", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "2b29dfeac119ae50983ecabda1e45148", + "spanID": "eacadc04be2ab289" + } + ], + "startTime": 1710318649802160, + "duration": 2558, + "tags": [ + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "details" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.11~details-v1-698d88b-z2bws.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.15" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "fbdbc6e1-b94e-93d9-b039-9c69ef3bc3d0" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p4", + "process": { + "serviceName": "details.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762955 + } + ] + }, + "warnings": null, + "traceSize": 7 + }, + { + "traceID": "575bb1fe7ac2fad0325832ce6ff1d1e8", + "spanID": "ac4c5d58b513d204", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "575bb1fe7ac2fad0325832ce6ff1d1e8", + "spanID": "c1daeeabfebd46bd" + } + ], + "startTime": 1710318729793942, + "duration": 761, + "tags": [ + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.15" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "details" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.11~details-v1-698d88b-z2bws.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "8d5311ed-1d93-9b9c-bcd3-4443caf41893" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p4", + "process": { + "serviceName": "details.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762955 + } + ] + }, + "warnings": null, + "traceSize": 7 + }, + { + "traceID": "88cf55bb2d65e3bab013ff599d5f9b3b", + "spanID": "9d846c7a821a09c2", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "88cf55bb2d65e3bab013ff599d5f9b3b", + "spanID": "dfc20d1541e04ce2" + } + ], + "startTime": 1710318627792877, + "duration": 727, + "tags": [ + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "ec6962e3-2964-9084-a0df-3ea186af958f" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.15" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "details" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.11~details-v1-698d88b-z2bws.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p4", + "process": { + "serviceName": "details.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762955 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "e10b9c60ea8f03fef2ca8b1e6709f272", + "spanID": "1a06653652bbbe1b", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "e10b9c60ea8f03fef2ca8b1e6709f272", + "spanID": "323877184ad8a6f6" + } + ], + "startTime": 1710318630799753, + "duration": 3117, + "tags": [ + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.15" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.11~details-v1-698d88b-z2bws.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "details" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "2e8bc4d1-1445-97b5-8450-46a839df7a5b" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p4", + "process": { + "serviceName": "details.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762955 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "5c7c6252f26b16c24f9b9b199b04506c", + "spanID": "3b82ba579fcebbc8", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "5c7c6252f26b16c24f9b9b199b04506c", + "spanID": "cf50a7dade6138ed" + } + ], + "startTime": 1710318701794859, + "duration": 1218, + "tags": [ + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.15" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.11~details-v1-698d88b-z2bws.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "72533684-d7df-9819-8f82-5904e9749f52" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "details" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p4", + "process": { + "serviceName": "details.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762955 + } + ] + }, + "warnings": null, + "traceSize": 7 + }, + { + "traceID": "d1e1319fa0e3163dca33900da4394369", + "spanID": "96a567f9bd1e89ee", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "d1e1319fa0e3163dca33900da4394369", + "spanID": "45f6dd3e95c1d123" + } + ], + "startTime": 1710318667793257, + "duration": 743, + "tags": [ + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "9a3c63cd-5af0-9b83-8cb1-5dc485a02f88" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "details" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.15" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.11~details-v1-698d88b-z2bws.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p4", + "process": { + "serviceName": "details.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762955 + } + ] + }, + "warnings": null, + "traceSize": 7 + }, + { + "traceID": "ed603267b09eda08eee632c56bcacd9e", + "spanID": "30c1ca915d424222", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "ed603267b09eda08eee632c56bcacd9e", + "spanID": "a3a4836914b7ba4f" + } + ], + "startTime": 1710318664793228, + "duration": 789, + "tags": [ + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.15" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "details" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "5f606826-bd2d-9413-b22d-b80c8650d95f" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.11~details-v1-698d88b-z2bws.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p4", + "process": { + "serviceName": "details.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762955 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "e94dcd96a6f7c3f9f07d91b831d77494", + "spanID": "2e9ba97286efcbac", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "e94dcd96a6f7c3f9f07d91b831d77494", + "spanID": "12c488343e67794a" + } + ], + "startTime": 1710318632794373, + "duration": 1132, + "tags": [ + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "details" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "5a45f70f-37d8-9975-85f8-3bca1e8b41c2" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.15" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.11~details-v1-698d88b-z2bws.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p4", + "process": { + "serviceName": "details.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762955 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "cefa082c2dfad726d5fcfa8cea4465fc", + "spanID": "ccb73540d472c50f", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "cefa082c2dfad726d5fcfa8cea4465fc", + "spanID": "ebb53df7e8b55d28" + } + ], + "startTime": 1710318723792867, + "duration": 881, + "tags": [ + { + "key": "istio.canonical_service", + "type": "string", + "value": "details" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.11~details-v1-698d88b-z2bws.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.15" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "3dbadc3c-d9c3-92e9-b760-c07e8d76b22b" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p4", + "process": { + "serviceName": "details.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762955 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "1c0e448e69295632289aad72b2857e95", + "spanID": "9cd3cc783df50e74", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "1c0e448e69295632289aad72b2857e95", + "spanID": "9f954e60818b2b96" + } + ], + "startTime": 1710318695792819, + "duration": 761, + "tags": [ + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.15" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.11~details-v1-698d88b-z2bws.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "a927fd5c-dbcf-9bf8-8820-9efa12b44077" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "details" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p4", + "process": { + "serviceName": "details.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762955 + } + ] + }, + "warnings": null, + "traceSize": 7 + }, + { + "traceID": "1ba498447a44b7914ffe512bd93445f3", + "spanID": "3db5fe68b9298f4a", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "1ba498447a44b7914ffe512bd93445f3", + "spanID": "5074560267f4adfe" + } + ], + "startTime": 1710318691793723, + "duration": 818, + "tags": [ + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.11~details-v1-698d88b-z2bws.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.15" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "3e935949-6e9a-91be-b70a-c99256dc5f43" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "details" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p4", + "process": { + "serviceName": "details.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762955 + } + ] + }, + "warnings": null, + "traceSize": 7 + }, + { + "traceID": "3f81933ad98ce013521528dd390a5c3d", + "spanID": "f393b2a11848ded1", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "3f81933ad98ce013521528dd390a5c3d", + "spanID": "c3ee2c7feb1f3c77" + } + ], + "startTime": 1710318688793518, + "duration": 718, + "tags": [ + { + "key": "guid:x-request-id", + "type": "string", + "value": "4d77d262-d2ca-9dc9-8dc6-deb2945401be" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "details" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.15" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.11~details-v1-698d88b-z2bws.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p4", + "process": { + "serviceName": "details.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762955 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "2d02f2b2763df375e64d76211937effb", + "spanID": "719792ce1cc70a09", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "2d02f2b2763df375e64d76211937effb", + "spanID": "5f4317da0b73ee71" + } + ], + "startTime": 1710318671793079, + "duration": 827, + "tags": [ + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.15" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.11~details-v1-698d88b-z2bws.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "9594e799-28f2-9e14-a442-d04dcd379928" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "details" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p4", + "process": { + "serviceName": "details.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762955 + } + ] + }, + "warnings": null, + "traceSize": 7 + }, + { + "traceID": "75a4262a707851c97bcf5fe6c63fb260", + "spanID": "c079c533cb7b52c3", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "75a4262a707851c97bcf5fe6c63fb260", + "spanID": "dbc886e624b2a591" + } + ], + "startTime": 1710318629793789, + "duration": 745, + "tags": [ + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "details" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "da8bb3b1-0c32-9ca0-a738-626da27bf143" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.11~details-v1-698d88b-z2bws.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.15" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p4", + "process": { + "serviceName": "details.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762955 + } + ] + }, + "warnings": null, + "traceSize": 7 + }, + { + "traceID": "97da80864b7e87b786319aba84a8a0cd", + "spanID": "8be137b8793d96c9", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "97da80864b7e87b786319aba84a8a0cd", + "spanID": "c2b3d64f9a89f8ab" + } + ], + "startTime": 1710318623793652, + "duration": 825, + "tags": [ + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "details" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "4b878ef6-fbb2-94a5-9846-84c9b99ab611" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.11~details-v1-698d88b-z2bws.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.15" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p4", + "process": { + "serviceName": "details.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762955 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "8b8fc0d8a97d96f50476568733ce87ed", + "spanID": "36a40abd955a7826", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "8b8fc0d8a97d96f50476568733ce87ed", + "spanID": "d55d1d19084b692f" + } + ], + "startTime": 1710318622793345, + "duration": 739, + "tags": [ + { + "key": "guid:x-request-id", + "type": "string", + "value": "944d7113-39b4-9967-b803-bd7e8e37399f" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "details" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.15" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.11~details-v1-698d88b-z2bws.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p4", + "process": { + "serviceName": "details.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762955 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "8f63b460b3cd24b66b2d63a2f8e83a6c", + "spanID": "d360939dcb4fef86", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "8f63b460b3cd24b66b2d63a2f8e83a6c", + "spanID": "3b0d6cda62420e9b" + } + ], + "startTime": 1710318708793857, + "duration": 830, + "tags": [ + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.15" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "details" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "0055d6c6-899f-988f-a837-6b7a5fcae70c" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.11~details-v1-698d88b-z2bws.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p4", + "process": { + "serviceName": "details.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762955 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "a7bdeceead9844e457c85ea85b13086e", + "spanID": "a904ffd0a39dc54c", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "a7bdeceead9844e457c85ea85b13086e", + "spanID": "6c89850956b78995" + } + ], + "startTime": 1710318710795564, + "duration": 1473, + "tags": [ + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.15" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "details" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "8af5a25d-5298-9f77-931f-dea0563b9bef" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.11~details-v1-698d88b-z2bws.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p4", + "process": { + "serviceName": "details.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762955 + } + ] + }, + "warnings": null, + "traceSize": 7 + }, + { + "traceID": "59372bc119c0b6c8c49f28e2aa287207", + "spanID": "4ef06c6539349685", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "59372bc119c0b6c8c49f28e2aa287207", + "spanID": "05c5bc1a78d06c63" + } + ], + "startTime": 1710318681793687, + "duration": 705, + "tags": [ + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.15" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.11~details-v1-698d88b-z2bws.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "d6cd614c-a26c-9360-a1a7-6c6cfdde1c39" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "details" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p4", + "process": { + "serviceName": "details.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762955 + } + ] + }, + "warnings": null, + "traceSize": 7 + }, + { + "traceID": "f508f5392e3969b2753e5f3669405b24", + "spanID": "c7aeecf8cc88a584", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "f508f5392e3969b2753e5f3669405b24", + "spanID": "277f045fecd0a2ae" + } + ], + "startTime": 1710318670792944, + "duration": 702, + "tags": [ + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.15" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.11~details-v1-698d88b-z2bws.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "details" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "b13fabae-2643-9dd0-8c07-a9a2755c6036" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p4", + "process": { + "serviceName": "details.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762955 + } + ] + }, + "warnings": null, + "traceSize": 7 + }, + { + "traceID": "9b4469c07f3e97b4b2b331f684133e3d", + "spanID": "3c1500b76e92ace4", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "9b4469c07f3e97b4b2b331f684133e3d", + "spanID": "9153f365c1859595" + } + ], + "startTime": 1710318653801958, + "duration": 2538, + "tags": [ + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "a0e2e8c6-f907-9494-9365-0856128068cd" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.11~details-v1-698d88b-z2bws.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "details" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.15" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p4", + "process": { + "serviceName": "details.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762955 + } + ] + }, + "warnings": null, + "traceSize": 7 + }, + { + "traceID": "e5f316babff6daae29bb3030ec0a38aa", + "spanID": "cbf51fddf8c356df", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "e5f316babff6daae29bb3030ec0a38aa", + "spanID": "9034273014ff1abf" + } + ], + "startTime": 1710318633794794, + "duration": 1108, + "tags": [ + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "details" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.11~details-v1-698d88b-z2bws.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.15" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "2f225e25-ef39-9ddb-9166-7066ba528f4e" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p4", + "process": { + "serviceName": "details.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762955 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "f505ba4bc9bf18be2a7743afe7ac4aca", + "spanID": "1016fea7ce300ebb", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "f505ba4bc9bf18be2a7743afe7ac4aca", + "spanID": "ff6799d00056e695" + } + ], + "startTime": 1710318626793486, + "duration": 796, + "tags": [ + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.15" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.11~details-v1-698d88b-z2bws.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "details" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "48da7abd-23d1-9975-83fe-3061766ccbf1" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p4", + "process": { + "serviceName": "details.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762955 + } + ] + }, + "warnings": null, + "traceSize": 7 + }, + { + "traceID": "af833955a665a7f1ab5c48f30e2f9271", + "spanID": "3c2ba5ff01cd4bfb", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "af833955a665a7f1ab5c48f30e2f9271", + "spanID": "15c1b685e0ad4136" + } + ], + "startTime": 1710318712793841, + "duration": 838, + "tags": [ + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "details" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.11~details-v1-698d88b-z2bws.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "9ab0258a-8a85-9747-9a72-19d32285cef1" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.15" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p4", + "process": { + "serviceName": "details.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762955 + } + ] + }, + "warnings": null, + "traceSize": 7 + }, + { + "traceID": "7bc05ee87561520b4ae05cfe2a11a288", + "spanID": "7c0a6fe8adea417b", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "7bc05ee87561520b4ae05cfe2a11a288", + "spanID": "72de6e97b302c358" + } + ], + "startTime": 1710318312799644, + "duration": 929, + "tags": [ + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "details" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "fb969a51-7c5e-981c-a360-a60fec15ab80" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.11~details-v1-698d88b-z2bws.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.15" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p4", + "process": { + "serviceName": "details.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762955 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "883588ddb04f51d4f2d7a1ada5d50c62", + "spanID": "66edf79da0758ee1", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "883588ddb04f51d4f2d7a1ada5d50c62", + "spanID": "a6bc3380fa4a3d8a" + } + ], + "startTime": 1710318308799531, + "duration": 937, + "tags": [ + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.15" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "details" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "45140406-74b9-9817-8e96-3ac53d8af492" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.11~details-v1-698d88b-z2bws.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p4", + "process": { + "serviceName": "details.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762955 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "6cb3cd57f4b969e956a4ca046733a8bc", + "spanID": "9d242a0366c09e8e", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "6cb3cd57f4b969e956a4ca046733a8bc", + "spanID": "484c5fcff17db3e8" + } + ], + "startTime": 1710318305801630, + "duration": 2578, + "tags": [ + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "afc87d1b-a55a-9fa1-94bc-fbaf3cdffb02" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.15" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.11~details-v1-698d88b-z2bws.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "details" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p4", + "process": { + "serviceName": "details.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762955 + } + ] + }, + "warnings": null, + "traceSize": 7 + }, + { + "traceID": "4ef476db1a5ae90b5080d367983beeb7", + "spanID": "8a21657140aeac6b", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "4ef476db1a5ae90b5080d367983beeb7", + "spanID": "e78b81b347899e52" + } + ], + "startTime": 1710318313798825, + "duration": 971, + "tags": [ + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.11~details-v1-698d88b-z2bws.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "8abf0d55-70f7-98c0-85ce-ed63ccd67539" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "details" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.15" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p4", + "process": { + "serviceName": "details.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762955 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "2df2890dc56f4ec8f765fd34a765aa34", + "spanID": "c2170a2a03e8c7f6", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "2df2890dc56f4ec8f765fd34a765aa34", + "spanID": "b4e6ae567af34453" + } + ], + "startTime": 1710318310801794, + "duration": 2559, + "tags": [ + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "details" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.15" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.11~details-v1-698d88b-z2bws.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "b67b7d61-67cb-980d-ba9a-be70e2ca1077" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p4", + "process": { + "serviceName": "details.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762955 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "786977127af577f7fe1505c4a669c3db", + "spanID": "07be6b8b00dec2cc", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "786977127af577f7fe1505c4a669c3db", + "spanID": "ca849b696289fd4c" + } + ], + "startTime": 1710318309802311, + "duration": 2526, + "tags": [ + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "details" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "91095f6a-5a58-9f03-8b68-8d4239a2b6d1" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.11~details-v1-698d88b-z2bws.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.15" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p4", + "process": { + "serviceName": "details.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762955 + } + ] + }, + "warnings": null, + "traceSize": 7 + }, + { + "traceID": "b468b94b18e7c5c268ffb1bfdbea9985", + "spanID": "beeedff0bf94dc90", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "b468b94b18e7c5c268ffb1bfdbea9985", + "spanID": "ae78ecc1a1356f66" + } + ], + "startTime": 1710318307793213, + "duration": 970, + "tags": [ + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.15" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.11~details-v1-698d88b-z2bws.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "7436fc3e-0f1f-9919-86da-a89573a24c30" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "details" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p4", + "process": { + "serviceName": "details.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762955 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "132186344673cdd88732641f7bc97122", + "spanID": "43d13d2cd7a1e908", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "132186344673cdd88732641f7bc97122", + "spanID": "84a272a2613a4d73" + } + ], + "startTime": 1710318306801398, + "duration": 2586, + "tags": [ + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "9ac0714d-4f11-9def-b883-47601aed933d" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "details" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.15" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.11~details-v1-698d88b-z2bws.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p4", + "process": { + "serviceName": "details.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762955 + } + ] + }, + "warnings": null, + "traceSize": 7 + }, + { + "traceID": "85c6f317a570ccbf8de0dcf4de7d38ae", + "spanID": "8c838b4b24b308bb", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "85c6f317a570ccbf8de0dcf4de7d38ae", + "spanID": "0d418f2c1e750f2d" + } + ], + "startTime": 1710318304795343, + "duration": 859, + "tags": [ + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "details" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.11~details-v1-698d88b-z2bws.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "e0b80d85-bbf4-9a34-b308-948b419d7b8e" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.15" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p4", + "process": { + "serviceName": "details.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762955 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "aba372827c451f89d320a7491ff12a04", + "spanID": "fbc70b49d382c5ec", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "aba372827c451f89d320a7491ff12a04", + "spanID": "82ef0a94c75c3ace" + } + ], + "startTime": 1710318311799689, + "duration": 1005, + "tags": [ + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.11~details-v1-698d88b-z2bws.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.15" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "c505b174-8168-90dc-8e5c-0388ffcf3caa" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "details" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p4", + "process": { + "serviceName": "details.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762955 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "30f0221a09fd7940517b9789c85916dc", + "spanID": "620eb964b32025b5", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "30f0221a09fd7940517b9789c85916dc", + "spanID": "b4eb828e9f59b81b" + } + ], + "startTime": 1710318612793481, + "duration": 859, + "tags": [ + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.15" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.11~details-v1-698d88b-z2bws.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "21f10a6b-d208-96f6-b042-d62ee2b0c88a" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "details" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p4", + "process": { + "serviceName": "details.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762955 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "aed2991933617e64ff89718c437f3fbc", + "spanID": "eb8792071912305f", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "aed2991933617e64ff89718c437f3fbc", + "spanID": "ca8f3fe872432f64" + } + ], + "startTime": 1710318611793399, + "duration": 844, + "tags": [ + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.15" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.11~details-v1-698d88b-z2bws.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "253983b5-7ac6-9dbd-921b-ae7623eb77ef" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "details" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p4", + "process": { + "serviceName": "details.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762955 + } + ] + }, + "warnings": null, + "traceSize": 7 + }, + { + "traceID": "efeced79bd7d96132ae4224489155136", + "spanID": "6ce6ae188addd76b", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "efeced79bd7d96132ae4224489155136", + "spanID": "9382554afe63c9bd" + } + ], + "startTime": 1710318606793759, + "duration": 942, + "tags": [ + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.11~details-v1-698d88b-z2bws.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.15" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "31f32dbb-64c3-955b-9bb9-18a8a6d59cca" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "details" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p4", + "process": { + "serviceName": "details.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762955 + } + ] + }, + "warnings": null, + "traceSize": 7 + }, + { + "traceID": "dd47390ef15354d2e95bbb2813f16ef0", + "spanID": "cd8b2f7f7fcfd69f", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "dd47390ef15354d2e95bbb2813f16ef0", + "spanID": "43449193da49d204" + } + ], + "startTime": 1710318604792910, + "duration": 788, + "tags": [ + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "details" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.11~details-v1-698d88b-z2bws.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.15" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "cd20041d-5a28-9972-b351-c726df604c41" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p4", + "process": { + "serviceName": "details.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762955 + } + ] + }, + "warnings": null, + "traceSize": 7 + }, + { + "traceID": "f1c5e4222a56f7019fa1d18ee6b97ab1", + "spanID": "833d9b857f2a72f3", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "f1c5e4222a56f7019fa1d18ee6b97ab1", + "spanID": "0093d7b5d8639540" + } + ], + "startTime": 1710318613802886, + "duration": 2535, + "tags": [ + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.11~details-v1-698d88b-z2bws.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "details" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "ead0fad9-19bd-91ad-9008-09156dac19f8" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.15" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p4", + "process": { + "serviceName": "details.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762955 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "236b7f5260fe8fb886626f2e3d778286", + "spanID": "ef67da08c60dd747", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "236b7f5260fe8fb886626f2e3d778286", + "spanID": "ccd8c5938d5eb1fe" + } + ], + "startTime": 1710318608795264, + "duration": 1287, + "tags": [ + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.11~details-v1-698d88b-z2bws.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "f0d7306b-9173-9444-8301-422c3155fd92" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.15" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "details" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p4", + "process": { + "serviceName": "details.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762955 + } + ] + }, + "warnings": null, + "traceSize": 7 + }, + { + "traceID": "792bc1b820b1850456a915fbe7b419df", + "spanID": "32f8b125e0eb8d46", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "792bc1b820b1850456a915fbe7b419df", + "spanID": "68b6c9f10dbe149e" + } + ], + "startTime": 1710318607794212, + "duration": 798, + "tags": [ + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.11~details-v1-698d88b-z2bws.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.15" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "4f25f05d-9fcc-9d2b-bdc1-02e0260c8c95" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "details" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p4", + "process": { + "serviceName": "details.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762955 + } + ] + }, + "warnings": null, + "traceSize": 7 + }, + { + "traceID": "6cf0818a61cde731ed56f39108fc2919", + "spanID": "75dbd9a483442e39", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "6cf0818a61cde731ed56f39108fc2919", + "spanID": "1c868e27f1ba4657" + } + ], + "startTime": 1710318603794574, + "duration": 921, + "tags": [ + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "8439f070-832a-9f08-942c-90bc888845d3" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.15" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.11~details-v1-698d88b-z2bws.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "details" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p4", + "process": { + "serviceName": "details.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762955 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "3fab1aec8014c6deacf8cac5c9eb15a8", + "spanID": "d9b9a1b19c880dcd", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "3fab1aec8014c6deacf8cac5c9eb15a8", + "spanID": "c994c22c9d335cca" + } + ], + "startTime": 1710318602795755, + "duration": 1017, + "tags": [ + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.11~details-v1-698d88b-z2bws.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.15" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "details" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "bbd1cdab-c8b1-9663-9c32-eeabe00054b0" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p4", + "process": { + "serviceName": "details.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762955 + } + ] + }, + "warnings": null, + "traceSize": 7 + }, + { + "traceID": "3fbd19e5a0af73f8c7d51dddaf13e76c", + "spanID": "91060f8a196317f9", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "3fbd19e5a0af73f8c7d51dddaf13e76c", + "spanID": "5efdd61b2f9dfa1a" + } + ], + "startTime": 1710318610794996, + "duration": 1094, + "tags": [ + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.11~details-v1-698d88b-z2bws.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "details" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "43b30580-5c98-95a9-9719-2ce63c650eca" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.15" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p4", + "process": { + "serviceName": "details.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762955 + } + ] + }, + "warnings": null, + "traceSize": 7 + }, + { + "traceID": "59d9e68edef10d59a18b09cd29cf2124", + "spanID": "0f6ee4bca5448c53", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "59d9e68edef10d59a18b09cd29cf2124", + "spanID": "ee3e4981220ee31a" + } + ], + "startTime": 1710318191798365, + "duration": 894, + "tags": [ + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.11~details-v1-698d88b-z2bws.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "425bbfa6-65c9-9ded-9d17-3ef9ff814921" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "details" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.15" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p4", + "process": { + "serviceName": "details.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762955 + } + ] + }, + "warnings": null, + "traceSize": 7 + }, + { + "traceID": "c4ff9ce8db49330a8da54ba02c9856a6", + "spanID": "2d9be720ddf92321", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "c4ff9ce8db49330a8da54ba02c9856a6", + "spanID": "627013d7fe738ea5" + } + ], + "startTime": 1710318189801305, + "duration": 2466, + "tags": [ + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "f5d22925-6eda-90c7-b102-6cc64ca53a45" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.15" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "details" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.11~details-v1-698d88b-z2bws.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p4", + "process": { + "serviceName": "details.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762955 + } + ] + }, + "warnings": null, + "traceSize": 7 + }, + { + "traceID": "eeb03f5903b86dc8ff4da7fac6ee76b9", + "spanID": "89a96cba47336017", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "eeb03f5903b86dc8ff4da7fac6ee76b9", + "spanID": "1d3ca3c6f2c6bc1f" + } + ], + "startTime": 1710318188801656, + "duration": 2415, + "tags": [ + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "f87a4b0c-10e7-9d66-9735-3ef5999ad2fe" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "details" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.11~details-v1-698d88b-z2bws.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.15" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p4", + "process": { + "serviceName": "details.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762955 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "5232e5dc465d21f9519e5bd3c9884378", + "spanID": "0ba09d143db72992", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "5232e5dc465d21f9519e5bd3c9884378", + "spanID": "42c08187f2b616e2" + } + ], + "startTime": 1710318186798984, + "duration": 903, + "tags": [ + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.15" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.11~details-v1-698d88b-z2bws.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "2ca1383d-f416-9cd0-b0d6-d269a387afc6" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "details" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p4", + "process": { + "serviceName": "details.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762955 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "77b2186e469c094e6d0d8a7bdce1a6f0", + "spanID": "11527d3a988453b3", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "77b2186e469c094e6d0d8a7bdce1a6f0", + "spanID": "745f7dbcc1ac2c55" + } + ], + "startTime": 1710318184793002, + "duration": 778, + "tags": [ + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "details" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.11~details-v1-698d88b-z2bws.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.15" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "4d2a7c08-1dd7-9bac-b03d-ee02b604f15a" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p4", + "process": { + "serviceName": "details.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762955 + } + ] + }, + "warnings": null, + "traceSize": 7 + }, + { + "traceID": "c1d1fd2dca4214e8a07d625323038cf3", + "spanID": "aae254274f784f9b", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "c1d1fd2dca4214e8a07d625323038cf3", + "spanID": "02fe176133e967fa" + } + ], + "startTime": 1710318193801862, + "duration": 2525, + "tags": [ + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "details" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "29c245b6-0b51-9175-a811-36420b4f0972" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.11~details-v1-698d88b-z2bws.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.15" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p4", + "process": { + "serviceName": "details.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762955 + } + ] + }, + "warnings": null, + "traceSize": 7 + }, + { + "traceID": "a1a2ac805f2d55f7dab1fb26966cc9b9", + "spanID": "3555a7c979879056", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "a1a2ac805f2d55f7dab1fb26966cc9b9", + "spanID": "6167c4c2ece744a9" + } + ], + "startTime": 1710318190793398, + "duration": 982, + "tags": [ + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.11~details-v1-698d88b-z2bws.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.15" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "details" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "30fa2b56-cd5b-9911-8846-eae01c14eef0" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p4", + "process": { + "serviceName": "details.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762955 + } + ] + }, + "warnings": null, + "traceSize": 7 + }, + { + "traceID": "3b11e50e8a6d4107e513b3c626def1d0", + "spanID": "9ad1ad059d213417", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "3b11e50e8a6d4107e513b3c626def1d0", + "spanID": "6c39247a9733e22b" + } + ], + "startTime": 1710318187801438, + "duration": 2644, + "tags": [ + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.15" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "details" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.11~details-v1-698d88b-z2bws.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "4c65c132-f95b-9294-8379-25a8d4fbfe05" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p4", + "process": { + "serviceName": "details.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762955 + } + ] + }, + "warnings": null, + "traceSize": 7 + }, + { + "traceID": "f1faa6f5450ebdc492efcbcea559fb91", + "spanID": "209f5954cbe2928f", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "f1faa6f5450ebdc492efcbcea559fb91", + "spanID": "f2ff2829278802ef" + } + ], + "startTime": 1710318185802962, + "duration": 2375, + "tags": [ + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.15" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "98005795-1cee-97a1-ac5a-0c3dbe36e1ac" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "details" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.11~details-v1-698d88b-z2bws.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p4", + "process": { + "serviceName": "details.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762955 + } + ] + }, + "warnings": null, + "traceSize": 7 + }, + { + "traceID": "5c55051c37320d221dd366ec6fca7014", + "spanID": "5b17c94f45d515f6", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "5c55051c37320d221dd366ec6fca7014", + "spanID": "36ec6418f5391c3f" + } + ], + "startTime": 1710318192801844, + "duration": 2573, + "tags": [ + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.15" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "details" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "af42f69c-a708-961b-93d0-1328ee84475f" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.11~details-v1-698d88b-z2bws.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p4", + "process": { + "serviceName": "details.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762955 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "b1b6147b2eef0dfb42f013b2d5b6e605", + "spanID": "2d4c7fce7a41e199", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "b1b6147b2eef0dfb42f013b2d5b6e605", + "spanID": "2748a54f4f7a061b" + } + ], + "startTime": 1710318547793631, + "duration": 707, + "tags": [ + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.15" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.11~details-v1-698d88b-z2bws.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "details" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "9c472bc7-4efc-9ba9-8d9a-deb8c623dfa8" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p4", + "process": { + "serviceName": "details.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762955 + } + ] + }, + "warnings": null, + "traceSize": 7 + }, + { + "traceID": "20978415cb8480e408a10653392bd748", + "spanID": "87ea49ab2db2d46d", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "20978415cb8480e408a10653392bd748", + "spanID": "3ba070e75670e1c5" + } + ], + "startTime": 1710318544793103, + "duration": 793, + "tags": [ + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "3151ca30-ee80-9ed0-b808-b7515805caad" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.11~details-v1-698d88b-z2bws.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.15" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "details" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p4", + "process": { + "serviceName": "details.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762955 + } + ] + }, + "warnings": null, + "traceSize": 7 + }, + { + "traceID": "40f80bd3c8a2d6bfa58c93b2f032a85d", + "spanID": "c63e10d0d5cb94f7", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "40f80bd3c8a2d6bfa58c93b2f032a85d", + "spanID": "939ab52e8f4463bc" + } + ], + "startTime": 1710318553793276, + "duration": 751, + "tags": [ + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.15" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.11~details-v1-698d88b-z2bws.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "2be04f6e-b8d4-9552-8732-89c3fa45cbb2" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "details" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p4", + "process": { + "serviceName": "details.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762955 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "ac2c840903913e0f8fa1f31321984dce", + "spanID": "c0c78e9432e30856", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "ac2c840903913e0f8fa1f31321984dce", + "spanID": "2daf6681cf561301" + } + ], + "startTime": 1710318552793226, + "duration": 775, + "tags": [ + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "7f9a8f36-9ded-95ac-88c8-de0e00859ec8" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "details" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.15" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.11~details-v1-698d88b-z2bws.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p4", + "process": { + "serviceName": "details.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762955 + } + ] + }, + "warnings": null, + "traceSize": 7 + }, + { + "traceID": "a46082bd8a75a133b546afb1919f17cb", + "spanID": "cf2febbce05133b6", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "a46082bd8a75a133b546afb1919f17cb", + "spanID": "c8cd7123af99bc10" + } + ], + "startTime": 1710318548795075, + "duration": 1029, + "tags": [ + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.15" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "7548a379-df45-9090-ade9-6f0f346cbfd5" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.11~details-v1-698d88b-z2bws.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "details" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p4", + "process": { + "serviceName": "details.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762955 + } + ] + }, + "warnings": null, + "traceSize": 7 + }, + { + "traceID": "922f01ea9677e68facbb695202d12017", + "spanID": "9a8a42bb268badfc", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "922f01ea9677e68facbb695202d12017", + "spanID": "3b05e6bce3894a5b" + } + ], + "startTime": 1710318546793257, + "duration": 755, + "tags": [ + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.11~details-v1-698d88b-z2bws.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.15" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "details" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "96246e9a-1ffc-9958-b840-46543fa7a687" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p4", + "process": { + "serviceName": "details.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762955 + } + ] + }, + "warnings": null, + "traceSize": 7 + }, + { + "traceID": "38d25951b598cb1dded2a9f258f66eab", + "spanID": "e73454dea6dd0e61", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "38d25951b598cb1dded2a9f258f66eab", + "spanID": "e829452f32f40b8b" + } + ], + "startTime": 1710318545794857, + "duration": 812, + "tags": [ + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "725c1b0a-9ef1-97e2-b2af-c3974d399765" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.11~details-v1-698d88b-z2bws.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.15" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "details" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p4", + "process": { + "serviceName": "details.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762955 + } + ] + }, + "warnings": null, + "traceSize": 7 + }, + { + "traceID": "605194ca7f8f40b76074b1708bdedd02", + "spanID": "e44c0d0628c4b75a", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "605194ca7f8f40b76074b1708bdedd02", + "spanID": "526126716fa98a1f" + } + ], + "startTime": 1710318551793856, + "duration": 952, + "tags": [ + { + "key": "istio.canonical_service", + "type": "string", + "value": "details" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "20742c86-aed6-9801-83ac-6517e5a1c118" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.15" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.11~details-v1-698d88b-z2bws.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p4", + "process": { + "serviceName": "details.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762955 + } + ] + }, + "warnings": null, + "traceSize": 7 + }, + { + "traceID": "f0ae7f539c88b01b7074b90b2677a859", + "spanID": "23929f3509eec434", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "f0ae7f539c88b01b7074b90b2677a859", + "spanID": "21257cf74678d5af" + } + ], + "startTime": 1710318550793583, + "duration": 748, + "tags": [ + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "87b06033-4ad0-9d84-af2c-97a07f9ebe89" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "details" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.15" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.11~details-v1-698d88b-z2bws.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p4", + "process": { + "serviceName": "details.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762955 + } + ] + }, + "warnings": null, + "traceSize": 7 + }, + { + "traceID": "9b48a956f276e63cbf33c966e5bb5049", + "spanID": "b0f72c86e493a95c", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "9b48a956f276e63cbf33c966e5bb5049", + "spanID": "97e344bd93962007" + } + ], + "startTime": 1710318549793088, + "duration": 701, + "tags": [ + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "9fc1a3e2-ec93-9b3c-adc3-27aa63d70180" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.15" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.11~details-v1-698d88b-z2bws.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "details" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p4", + "process": { + "serviceName": "details.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762955 + } + ] + }, + "warnings": null, + "traceSize": 7 + }, + { + "traceID": "4272a552f4b7d78af210d013727ea3a4", + "spanID": "9050f0c0bec47fb6", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "4272a552f4b7d78af210d013727ea3a4", + "spanID": "6dbc796293efb290" + } + ], + "startTime": 1710318253801943, + "duration": 2568, + "tags": [ + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.11~details-v1-698d88b-z2bws.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "37f0c435-a5c8-9ff1-bdef-ba2556dc0482" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "details" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.15" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p4", + "process": { + "serviceName": "details.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762955 + } + ] + }, + "warnings": null, + "traceSize": 7 + }, + { + "traceID": "a886a70bc9d3aee0e308012e81659d1c", + "spanID": "77462b2434ab0b1c", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "a886a70bc9d3aee0e308012e81659d1c", + "spanID": "c2595bf688111fe6" + } + ], + "startTime": 1710318252802263, + "duration": 2534, + "tags": [ + { + "key": "istio.canonical_service", + "type": "string", + "value": "details" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.11~details-v1-698d88b-z2bws.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.15" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "64ab5249-3f2b-9611-af4d-b0ce070fa330" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p4", + "process": { + "serviceName": "details.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762955 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "91d4bb05e6ddce091827e9a21b086ecf", + "spanID": "eb369d591fd45bb7", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "91d4bb05e6ddce091827e9a21b086ecf", + "spanID": "2e4124074a54b956" + } + ], + "startTime": 1710318248801986, + "duration": 2551, + "tags": [ + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.11~details-v1-698d88b-z2bws.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "details" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "0c57680f-b7e4-922d-ad35-53906260450f" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.15" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p4", + "process": { + "serviceName": "details.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762955 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "c43934ce9ccf88b0cb556692f1fb5d0d", + "spanID": "02da7432060188fe", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "c43934ce9ccf88b0cb556692f1fb5d0d", + "spanID": "8883dbe07e4a91af" + } + ], + "startTime": 1710318247801963, + "duration": 2514, + "tags": [ + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.15" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "56a5a8ff-a9b5-9ffd-91e8-3e24c951e0f3" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "details" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.11~details-v1-698d88b-z2bws.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p4", + "process": { + "serviceName": "details.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762955 + } + ] + }, + "warnings": null, + "traceSize": 7 + }, + { + "traceID": "325493c338bd43bdc08756f931f3fcd1", + "spanID": "2da80b14ae9b1ee5", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "325493c338bd43bdc08756f931f3fcd1", + "spanID": "6b42f3ac359da4b3" + } + ], + "startTime": 1710318246793290, + "duration": 830, + "tags": [ + { + "key": "guid:x-request-id", + "type": "string", + "value": "34693442-a423-9b3b-9885-0bd809cd7320" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.15" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.11~details-v1-698d88b-z2bws.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "details" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p4", + "process": { + "serviceName": "details.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762955 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "4d05a65d54b2b91e907919b21bccaffc", + "spanID": "2cc2d5aaa3a2f987", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "4d05a65d54b2b91e907919b21bccaffc", + "spanID": "48e0cf9fde265a2e" + } + ], + "startTime": 1710318245801458, + "duration": 2926, + "tags": [ + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "70b13bca-8793-90da-8b8a-5cf297ae03a8" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.11~details-v1-698d88b-z2bws.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.15" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "details" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p4", + "process": { + "serviceName": "details.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762955 + } + ] + }, + "warnings": null, + "traceSize": 7 + }, + { + "traceID": "791eca6ddd915628eeca3e9d5b745232", + "spanID": "5b3ab1b9c2c15ad7", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "791eca6ddd915628eeca3e9d5b745232", + "spanID": "09f384fe77dbfd41" + } + ], + "startTime": 1710318244794268, + "duration": 1056, + "tags": [ + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.11~details-v1-698d88b-z2bws.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "d6458028-3a94-9d5e-8fc1-3478125873da" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "details" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.15" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p4", + "process": { + "serviceName": "details.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762955 + } + ] + }, + "warnings": null, + "traceSize": 7 + }, + { + "traceID": "ca0746aba2a2323bf7b2072d8c62466e", + "spanID": "c3cc5d81f74080d6", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "ca0746aba2a2323bf7b2072d8c62466e", + "spanID": "b5094a6f5b94a9ed" + } + ], + "startTime": 1710318250802356, + "duration": 2530, + "tags": [ + { + "key": "guid:x-request-id", + "type": "string", + "value": "6be38a1a-ce4c-97bd-859c-f9837a2c09fc" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.11~details-v1-698d88b-z2bws.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.15" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "details" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p4", + "process": { + "serviceName": "details.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762955 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "b7a381447b3d9c594651e09aa0959a4c", + "spanID": "505e8d2505136e30", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "b7a381447b3d9c594651e09aa0959a4c", + "spanID": "d51f1c975ad125f4" + } + ], + "startTime": 1710318249801895, + "duration": 2497, + "tags": [ + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.15" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "a6bb977f-a59a-9955-be84-9fb72cfbf5bb" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "details" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.11~details-v1-698d88b-z2bws.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p4", + "process": { + "serviceName": "details.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762955 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "f331fc553a97cd6066a32d567f4c9a4e", + "spanID": "c9edd25fa0a225bb", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "f331fc553a97cd6066a32d567f4c9a4e", + "spanID": "64a4a584e5e80f04" + } + ], + "startTime": 1710318243799745, + "duration": 1116, + "tags": [ + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "details" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.11~details-v1-698d88b-z2bws.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.15" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "c5cac28c-65b1-94b8-804d-6b23ccedadc0" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p4", + "process": { + "serviceName": "details.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762955 + } + ] + }, + "warnings": null, + "traceSize": 7 + }, + { + "traceID": "6660625d22f0ea23bcb66806e6c6d668", + "spanID": "38fc578687d4a8f2", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "6660625d22f0ea23bcb66806e6c6d668", + "spanID": "a2105162c85ff978" + } + ], + "startTime": 1710318485793135, + "duration": 680, + "tags": [ + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.11~details-v1-698d88b-z2bws.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "details" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.15" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "69de43e5-b874-9841-ba87-c9c5aa02a8e0" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p4", + "process": { + "serviceName": "details.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762955 + } + ] + }, + "warnings": null, + "traceSize": 7 + }, + { + "traceID": "a0d240cdd8c53d210c27923b6782e782", + "spanID": "359659a160126339", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "a0d240cdd8c53d210c27923b6782e782", + "spanID": "4a888203b0555121" + } + ], + "startTime": 1710318484792853, + "duration": 679, + "tags": [ + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "6b9c0cf8-6f99-97d7-a469-f48b716b27a1" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.11~details-v1-698d88b-z2bws.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "details" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.15" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p4", + "process": { + "serviceName": "details.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762955 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "de62e4c71b392d39000a7cc219f278df", + "spanID": "83ce3cb977716397", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "de62e4c71b392d39000a7cc219f278df", + "spanID": "240df99c7394cdb5" + } + ], + "startTime": 1710318493793257, + "duration": 746, + "tags": [ + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.15" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "cf580936-4dcf-9b9c-8859-74184ebd8f67" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "details" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.11~details-v1-698d88b-z2bws.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p4", + "process": { + "serviceName": "details.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762955 + } + ] + }, + "warnings": null, + "traceSize": 7 + }, + { + "traceID": "12a19da584f4d14a45ba8ffec21b7799", + "spanID": "45b0abfae569f772", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "12a19da584f4d14a45ba8ffec21b7799", + "spanID": "7829fd86d67efcd3" + } + ], + "startTime": 1710318492793438, + "duration": 714, + "tags": [ + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "details" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "b2c690db-4067-9102-9eab-c835ab544d81" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.11~details-v1-698d88b-z2bws.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.15" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p4", + "process": { + "serviceName": "details.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762955 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "c2485781ee733c221917ecac4794c26d", + "spanID": "14963e28bf9822ec", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "c2485781ee733c221917ecac4794c26d", + "spanID": "6635ce6597d47bde" + } + ], + "startTime": 1710318491793616, + "duration": 811, + "tags": [ + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "details" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "90ea33e9-b21c-948d-a193-91a1a00b830a" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.11~details-v1-698d88b-z2bws.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.15" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p4", + "process": { + "serviceName": "details.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762955 + } + ] + }, + "warnings": null, + "traceSize": 7 + }, + { + "traceID": "f9d960833a12b1907630bf3659529bd0", + "spanID": "6022c0c837250af2", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "f9d960833a12b1907630bf3659529bd0", + "spanID": "7c21086277f3c85e" + } + ], + "startTime": 1710318486793270, + "duration": 722, + "tags": [ + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "175a73b4-597d-9cb2-936c-c15fcc36f68c" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.11~details-v1-698d88b-z2bws.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.15" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "details" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p4", + "process": { + "serviceName": "details.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762955 + } + ] + }, + "warnings": null, + "traceSize": 7 + }, + { + "traceID": "53ed992c6271a94fd03dfd4ac26eb691", + "spanID": "ceb459071777ea25", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "53ed992c6271a94fd03dfd4ac26eb691", + "spanID": "01843043f6684ac8" + } + ], + "startTime": 1710318490793136, + "duration": 725, + "tags": [ + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "details" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "2449bc71-e2b3-955f-a628-e03e6f3bfe1d" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.15" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.11~details-v1-698d88b-z2bws.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p4", + "process": { + "serviceName": "details.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762955 + } + ] + }, + "warnings": null, + "traceSize": 7 + }, + { + "traceID": "d5f6f20994cd8209d7e02e68b5cfc941", + "spanID": "2010daf0ac8291b6", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "d5f6f20994cd8209d7e02e68b5cfc941", + "spanID": "d9f2172fd8686f14" + } + ], + "startTime": 1710318489793301, + "duration": 825, + "tags": [ + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "1432866a-c927-9a54-a793-b996f263e827" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.15" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.11~details-v1-698d88b-z2bws.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "details" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p4", + "process": { + "serviceName": "details.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762955 + } + ] + }, + "warnings": null, + "traceSize": 7 + }, + { + "traceID": "c41862636f48563b52033a88f6080cdc", + "spanID": "c384386e2efda05f", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "c41862636f48563b52033a88f6080cdc", + "spanID": "743a09c9e33d89e5" + } + ], + "startTime": 1710318488793620, + "duration": 698, + "tags": [ + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.15" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "a9552a33-4a93-9baa-a1b8-89d9b09edad0" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.11~details-v1-698d88b-z2bws.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "details" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p4", + "process": { + "serviceName": "details.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762955 + } + ] + }, + "warnings": null, + "traceSize": 7 + }, + { + "traceID": "86c99f3aaac99dfc4afe9fa892adde83", + "spanID": "6ca22bf89189ae47", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "86c99f3aaac99dfc4afe9fa892adde83", + "spanID": "b150a139cc81ef6d" + } + ], + "startTime": 1710318487792762, + "duration": 749, + "tags": [ + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.11~details-v1-698d88b-z2bws.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "fbec3ad6-de5e-966f-9b97-3a0e60084e96" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "details" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.15" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p4", + "process": { + "serviceName": "details.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762955 + } + ] + }, + "warnings": null, + "traceSize": 7 + }, + { + "traceID": "d2875d70b9e37bf5cdb7cf6743209a65", + "spanID": "39f5be1774300338", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "d2875d70b9e37bf5cdb7cf6743209a65", + "spanID": "71bd2032b1429624" + } + ], + "startTime": 1710318366801378, + "duration": 828, + "tags": [ + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "details" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.15" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.11~details-v1-698d88b-z2bws.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "06af159f-ace3-99dc-8613-4188c4656b83" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p4", + "process": { + "serviceName": "details.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762955 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "96bc1cc6fa384df7f21669bafac7bb8a", + "spanID": "601a7a2f5c68aa8e", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "96bc1cc6fa384df7f21669bafac7bb8a", + "spanID": "99da40a4adc864c1" + } + ], + "startTime": 1710318365802225, + "duration": 1054, + "tags": [ + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.11~details-v1-698d88b-z2bws.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "7ae70e06-79f0-99b5-a05f-042a451d6563" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "details" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.15" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p4", + "process": { + "serviceName": "details.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762955 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "dbe8de3efce08f6b1760224e7f66bbc1", + "spanID": "f2bda03d82d22757", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "dbe8de3efce08f6b1760224e7f66bbc1", + "spanID": "d56b40c1b140c29e" + } + ], + "startTime": 1710318371793592, + "duration": 761, + "tags": [ + { + "key": "istio.canonical_service", + "type": "string", + "value": "details" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.11~details-v1-698d88b-z2bws.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.15" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "2b8ae06f-4965-977f-802d-26cbc3199a67" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p4", + "process": { + "serviceName": "details.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762955 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "dd050ce053733cd5270446fde68004d3", + "spanID": "5a6a534acefa575c", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "dd050ce053733cd5270446fde68004d3", + "spanID": "773aed459dae7f95" + } + ], + "startTime": 1710318370795941, + "duration": 999, + "tags": [ + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "details" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.11~details-v1-698d88b-z2bws.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.15" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "0a7e098b-c60c-90ce-bbd6-1454636a5c7c" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p4", + "process": { + "serviceName": "details.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762955 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "cb14be0861293a400d3d021e2be23653", + "spanID": "4a05466d47faa1da", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "cb14be0861293a400d3d021e2be23653", + "spanID": "ffe0979d40582938" + } + ], + "startTime": 1710318369802106, + "duration": 2493, + "tags": [ + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "2b8cb235-3580-96a6-8762-93a4694451ad" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.11~details-v1-698d88b-z2bws.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "details" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.15" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p4", + "process": { + "serviceName": "details.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762955 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "c83529a60b17f24b92aaecb2be1d5b50", + "spanID": "104563fab71e011e", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "c83529a60b17f24b92aaecb2be1d5b50", + "spanID": "fe2b20f746121d0b" + } + ], + "startTime": 1710318367801524, + "duration": 2531, + "tags": [ + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.15" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "b368272e-090f-9e61-8411-221b1e62fe0f" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "details" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.11~details-v1-698d88b-z2bws.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p4", + "process": { + "serviceName": "details.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762955 + } + ] + }, + "warnings": null, + "traceSize": 7 + }, + { + "traceID": "86080b0c827d1cdf5931648e2cdc56b8", + "spanID": "a5dd9b45df86fe44", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "86080b0c827d1cdf5931648e2cdc56b8", + "spanID": "8a5b27d83b9e9488" + } + ], + "startTime": 1710318373794868, + "duration": 1266, + "tags": [ + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "details" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.11~details-v1-698d88b-z2bws.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.15" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "a9e58f59-eeb3-9b89-b15d-3bbe0bb5832e" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p4", + "process": { + "serviceName": "details.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762955 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "96ff394d8cc4bb55674a31eb48846845", + "spanID": "c28d088fb4fcff53", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "96ff394d8cc4bb55674a31eb48846845", + "spanID": "ccf943d688deddb8" + } + ], + "startTime": 1710318372801593, + "duration": 1198, + "tags": [ + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.15" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "221c7a22-8e6d-9b3e-bcfc-13c6074adf1b" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.11~details-v1-698d88b-z2bws.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "details" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p4", + "process": { + "serviceName": "details.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762955 + } + ] + }, + "warnings": null, + "traceSize": 7 + }, + { + "traceID": "2d30a512668939038cd85a537ca30084", + "spanID": "ef220c3904c25395", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "2d30a512668939038cd85a537ca30084", + "spanID": "b2d061d20b37f29d" + } + ], + "startTime": 1710318368793939, + "duration": 814, + "tags": [ + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.15" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "31785920-e40c-95b2-9a63-84f45bca3cee" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.11~details-v1-698d88b-z2bws.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "details" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p4", + "process": { + "serviceName": "details.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762955 + } + ] + }, + "warnings": null, + "traceSize": 7 + }, + { + "traceID": "e9b36dc2e2cd0634ba2d41f2174d9660", + "spanID": "2ce823925ac9dd36", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "e9b36dc2e2cd0634ba2d41f2174d9660", + "spanID": "469e0cd393d1bf49" + } + ], + "startTime": 1710318363793558, + "duration": 742, + "tags": [ + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "details" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.15" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.11~details-v1-698d88b-z2bws.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "924cc299-e0d5-9ea7-852b-8e5fe1e59828" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p4", + "process": { + "serviceName": "details.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762955 + } + ] + }, + "warnings": null, + "traceSize": 7 + }, + { + "traceID": "6ba6f7eb87f3ca9c5befd7961d332274", + "spanID": "4f2a90afb4c1a472", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "6ba6f7eb87f3ca9c5befd7961d332274", + "spanID": "1d1e01140b0d7aab" + } + ], + "startTime": 1710318433802480, + "duration": 1624, + "tags": [ + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "details" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "2ed16d0c-bf83-99e0-9278-82f6a15969c7" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.15" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.11~details-v1-698d88b-z2bws.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p4", + "process": { + "serviceName": "details.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762955 + } + ] + }, + "warnings": null, + "traceSize": 7 + }, + { + "traceID": "a7830e0429b45bf68ece0e3f1ffc0c8c", + "spanID": "a5dbf742ace2ea02", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "a7830e0429b45bf68ece0e3f1ffc0c8c", + "spanID": "0765d6899f5792c0" + } + ], + "startTime": 1710318432794175, + "duration": 836, + "tags": [ + { + "key": "istio.canonical_service", + "type": "string", + "value": "details" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.11~details-v1-698d88b-z2bws.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "2c869e7c-5548-9104-8124-6ee0549239de" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.15" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p4", + "process": { + "serviceName": "details.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762955 + } + ] + }, + "warnings": null, + "traceSize": 7 + }, + { + "traceID": "12a754a56ee783ac00ac5ca79049ccc8", + "spanID": "a09aa89160fd533b", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "12a754a56ee783ac00ac5ca79049ccc8", + "spanID": "182837c6942b8028" + } + ], + "startTime": 1710318430793746, + "duration": 719, + "tags": [ + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.11~details-v1-698d88b-z2bws.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.15" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "de840837-6ae3-92ce-bd13-c79d045db75a" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "details" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p4", + "process": { + "serviceName": "details.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762955 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "7be706eff86d9d21877a5198c67ce69a", + "spanID": "2994e83fd4bd74df", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "7be706eff86d9d21877a5198c67ce69a", + "spanID": "9ca971999b0336ff" + } + ], + "startTime": 1710318426804247, + "duration": 2504, + "tags": [ + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.11~details-v1-698d88b-z2bws.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "d17b388f-cd72-9361-b1f0-b5242cb8b8cf" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.15" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "details" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p4", + "process": { + "serviceName": "details.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762955 + } + ] + }, + "warnings": null, + "traceSize": 7 + }, + { + "traceID": "56c2c47780a693618731c3200bbac109", + "spanID": "7544e6882bdad69d", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "56c2c47780a693618731c3200bbac109", + "spanID": "b7ddeda7c7342353" + } + ], + "startTime": 1710318425802089, + "duration": 921, + "tags": [ + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "details" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.11~details-v1-698d88b-z2bws.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "4637f24a-8996-9978-b139-fb4f44cd7039" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.15" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p4", + "process": { + "serviceName": "details.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762955 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "6dd027ac672fe1803748ceee9a15fa3a", + "spanID": "8cbefca265506e91", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "6dd027ac672fe1803748ceee9a15fa3a", + "spanID": "251d808ca74a13a3" + } + ], + "startTime": 1710318431796787, + "duration": 1914, + "tags": [ + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.15" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "5fdcffba-7daa-986b-99a2-b25805a20d98" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.11~details-v1-698d88b-z2bws.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "details" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p4", + "process": { + "serviceName": "details.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762955 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "fe4f9b9b1f7a222151dc4fc5301ebd82", + "spanID": "639487340a890a4c", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "fe4f9b9b1f7a222151dc4fc5301ebd82", + "spanID": "c61690bde71d2303" + } + ], + "startTime": 1710318429793033, + "duration": 781, + "tags": [ + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "102bef91-7161-9019-82ce-d1995f91bde9" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "details" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.15" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.11~details-v1-698d88b-z2bws.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p4", + "process": { + "serviceName": "details.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762955 + } + ] + }, + "warnings": null, + "traceSize": 7 + }, + { + "traceID": "78f9c8f43ff94e1d3811957d537781e2", + "spanID": "d38399fc2d6cc6a2", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "78f9c8f43ff94e1d3811957d537781e2", + "spanID": "2861e62f18a28aa7" + } + ], + "startTime": 1710318428797894, + "duration": 904, + "tags": [ + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "details" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "13dfa4d0-ca00-978c-9d54-b63a470b7be7" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.11~details-v1-698d88b-z2bws.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.15" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p4", + "process": { + "serviceName": "details.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762955 + } + ] + }, + "warnings": null, + "traceSize": 6 + }, + { + "traceID": "594021380012592ed3fc971ca78b7a57", + "spanID": "7806c4c94de53518", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "594021380012592ed3fc971ca78b7a57", + "spanID": "3968e574e37ec9b0" + } + ], + "startTime": 1710318427793349, + "duration": 812, + "tags": [ + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "details" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "3e37e4ed-396b-98ab-b04c-fb646edb2214" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.15" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.11~details-v1-698d88b-z2bws.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p4", + "process": { + "serviceName": "details.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762955 + } + ] + }, + "warnings": null, + "traceSize": 7 + }, + { + "traceID": "f2b209aa23f607ec426fd7964b2d98e0", + "spanID": "1390884afbee9ae4", + "operationName": "details.bookinfo.svc.cluster.local:9080/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "f2b209aa23f607ec426fd7964b2d98e0", + "spanID": "2b746e8402a6d1ed" + } + ], + "startTime": 1710318424798386, + "duration": 952, + "tags": [ + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.15" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "details" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "bookinfo" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|9080||" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.11~details-v1-698d88b-z2bws.bookinfo~bookinfo.svc.cluster.local" + }, + { + "key": "http.url", + "type": "string", + "value": "http://details:9080/details/0" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "response_size", + "type": "string", + "value": "178" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "10808610-b472-9133-95ae-e6f5d66a7659" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p4", + "process": { + "serviceName": "details.bookinfo", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762955 + } + ] + }, + "warnings": null, + "traceSize": 7 + } +] diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/bookinfo/tls.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/bookinfo/tls.json new file mode 100644 index 0000000000..ea7db32cbb --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/bookinfo/tls.json @@ -0,0 +1 @@ +{ "status": "MTLS_NOT_ENABLED", "autoMTLSEnabled": true, "minTLS": "" } diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/bookinfo/workloads.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/bookinfo/workloads.json new file mode 100644 index 0000000000..167840794c --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/bookinfo/workloads.json @@ -0,0 +1,370 @@ +{ + "namespace": { + "name": "bookinfo", + "cluster": "", + "isAmbient": false, + "labels": null, + "annotations": null + }, + "workloads": [ + { + "name": "details-v1", + "cluster": "Kubernetes", + "type": "Deployment", + "createdAt": "2024-01-29T20:10:15Z", + "resourceVersion": "26835", + "istioSidecar": true, + "istioAmbient": false, + "additionalDetailSample": null, + "labels": { + "app": "details", + "version": "v1" + }, + "appLabel": true, + "versionLabel": true, + "podCount": 1, + "annotations": { + "deployment.kubernetes.io/revision": "1", + "kubectl.kubernetes.io/last-applied-configuration": "{\"apiVersion\":\"apps/v1\",\"kind\":\"Deployment\",\"metadata\":{\"annotations\":{},\"labels\":{\"app\":\"details\",\"version\":\"v1\"},\"name\":\"details-v1\",\"namespace\":\"bookinfo\"},\"spec\":{\"replicas\":1,\"selector\":{\"matchLabels\":{\"app\":\"details\",\"version\":\"v1\"}},\"template\":{\"metadata\":{\"labels\":{\"app\":\"details\",\"version\":\"v1\"}},\"spec\":{\"containers\":[{\"image\":\"docker.io/istio/examples-bookinfo-details-v1:1.18.0\",\"imagePullPolicy\":\"IfNotPresent\",\"name\":\"details\",\"ports\":[{\"containerPort\":9080}]}],\"serviceAccountName\":\"bookinfo-details\"}}}}\n" + }, + "healthAnnotations": {}, + "istioReferences": [], + "dashboardAnnotations": null, + "serviceAccountNames": ["bookinfo-details"], + "health": { + "workloadStatus": { + "name": "details-v1", + "desiredReplicas": 1, + "currentReplicas": 1, + "availableReplicas": 1, + "syncedProxies": 1 + }, + "requests": { + "inbound": { + "http": { + "200": 1.0000017094046314 + } + }, + "outbound": {}, + "healthAnnotations": {} + } + } + }, + { + "name": "kiali-traffic-generator", + "cluster": "Kubernetes", + "type": "ReplicaSet", + "createdAt": "2024-01-29T20:11:02Z", + "resourceVersion": "26851", + "istioSidecar": true, + "istioAmbient": false, + "additionalDetailSample": null, + "labels": { + "app": "kiali-traffic-generator", + "kiali-test": "traffic-generator" + }, + "appLabel": true, + "versionLabel": false, + "podCount": 1, + "annotations": {}, + "healthAnnotations": {}, + "istioReferences": [], + "dashboardAnnotations": null, + "serviceAccountNames": ["default"], + "health": { + "workloadStatus": { + "name": "kiali-traffic-generator", + "desiredReplicas": 1, + "currentReplicas": 1, + "availableReplicas": 1, + "syncedProxies": 1 + }, + "requests": { + "inbound": {}, + "outbound": {}, + "healthAnnotations": {} + } + } + }, + { + "name": "productpage-v1", + "cluster": "Kubernetes", + "type": "Deployment", + "createdAt": "2024-01-29T20:10:15Z", + "resourceVersion": "26856", + "istioSidecar": true, + "istioAmbient": false, + "additionalDetailSample": null, + "labels": { + "app": "productpage", + "version": "v1" + }, + "appLabel": true, + "versionLabel": true, + "podCount": 1, + "annotations": { + "deployment.kubernetes.io/revision": "1", + "kubectl.kubernetes.io/last-applied-configuration": "{\"apiVersion\":\"apps/v1\",\"kind\":\"Deployment\",\"metadata\":{\"annotations\":{},\"labels\":{\"app\":\"productpage\",\"version\":\"v1\"},\"name\":\"productpage-v1\",\"namespace\":\"bookinfo\"},\"spec\":{\"replicas\":1,\"selector\":{\"matchLabels\":{\"app\":\"productpage\",\"version\":\"v1\"}},\"template\":{\"metadata\":{\"annotations\":{\"prometheus.io/path\":\"/metrics\",\"prometheus.io/port\":\"9080\",\"prometheus.io/scrape\":\"true\"},\"labels\":{\"app\":\"productpage\",\"version\":\"v1\"}},\"spec\":{\"containers\":[{\"image\":\"docker.io/istio/examples-bookinfo-productpage-v1:1.18.0\",\"imagePullPolicy\":\"IfNotPresent\",\"name\":\"productpage\",\"ports\":[{\"containerPort\":9080}],\"volumeMounts\":[{\"mountPath\":\"/tmp\",\"name\":\"tmp\"}]}],\"serviceAccountName\":\"bookinfo-productpage\",\"volumes\":[{\"emptyDir\":{},\"name\":\"tmp\"}]}}}}\n" + }, + "healthAnnotations": {}, + "istioReferences": [], + "dashboardAnnotations": null, + "serviceAccountNames": ["bookinfo-productpage"], + "health": { + "workloadStatus": { + "name": "productpage-v1", + "desiredReplicas": 1, + "currentReplicas": 1, + "availableReplicas": 1, + "syncedProxies": 1 + }, + "requests": { + "inbound": { + "http": { + "200": 1.0000017094046316 + } + }, + "outbound": { + "http": { + "200": 1.9999999999999996 + } + }, + "healthAnnotations": {} + } + } + }, + { + "name": "ratings-v1", + "cluster": "Kubernetes", + "type": "Deployment", + "createdAt": "2024-01-29T20:10:15Z", + "resourceVersion": "26849", + "istioSidecar": true, + "istioAmbient": false, + "additionalDetailSample": null, + "labels": { + "app": "ratings", + "version": "v1" + }, + "appLabel": true, + "versionLabel": true, + "podCount": 1, + "annotations": { + "deployment.kubernetes.io/revision": "1", + "kubectl.kubernetes.io/last-applied-configuration": "{\"apiVersion\":\"apps/v1\",\"kind\":\"Deployment\",\"metadata\":{\"annotations\":{},\"labels\":{\"app\":\"ratings\",\"version\":\"v1\"},\"name\":\"ratings-v1\",\"namespace\":\"bookinfo\"},\"spec\":{\"replicas\":1,\"selector\":{\"matchLabels\":{\"app\":\"ratings\",\"version\":\"v1\"}},\"template\":{\"metadata\":{\"labels\":{\"app\":\"ratings\",\"version\":\"v1\"}},\"spec\":{\"containers\":[{\"image\":\"docker.io/istio/examples-bookinfo-ratings-v1:1.18.0\",\"imagePullPolicy\":\"IfNotPresent\",\"name\":\"ratings\",\"ports\":[{\"containerPort\":9080}]}],\"serviceAccountName\":\"bookinfo-ratings\"}}}}\n" + }, + "healthAnnotations": {}, + "istioReferences": [], + "dashboardAnnotations": null, + "serviceAccountNames": ["bookinfo-ratings"], + "health": { + "workloadStatus": { + "name": "ratings-v1", + "desiredReplicas": 1, + "currentReplicas": 1, + "availableReplicas": 1, + "syncedProxies": 1 + }, + "requests": { + "inbound": { + "http": { + "200": 0.6905982905982905 + } + }, + "outbound": {}, + "healthAnnotations": {} + } + } + }, + { + "name": "reviews-v1", + "cluster": "Kubernetes", + "type": "Deployment", + "createdAt": "2024-01-29T20:10:15Z", + "resourceVersion": "26845", + "istioSidecar": true, + "istioAmbient": false, + "additionalDetailSample": null, + "labels": { + "app": "reviews", + "version": "v1" + }, + "appLabel": true, + "versionLabel": true, + "podCount": 1, + "annotations": { + "deployment.kubernetes.io/revision": "1", + "kubectl.kubernetes.io/last-applied-configuration": "{\"apiVersion\":\"apps/v1\",\"kind\":\"Deployment\",\"metadata\":{\"annotations\":{},\"labels\":{\"app\":\"reviews\",\"version\":\"v1\"},\"name\":\"reviews-v1\",\"namespace\":\"bookinfo\"},\"spec\":{\"replicas\":1,\"selector\":{\"matchLabels\":{\"app\":\"reviews\",\"version\":\"v1\"}},\"template\":{\"metadata\":{\"labels\":{\"app\":\"reviews\",\"version\":\"v1\"}},\"spec\":{\"containers\":[{\"env\":[{\"name\":\"LOG_DIR\",\"value\":\"/tmp/logs\"}],\"image\":\"docker.io/istio/examples-bookinfo-reviews-v1:1.18.0\",\"imagePullPolicy\":\"IfNotPresent\",\"name\":\"reviews\",\"ports\":[{\"containerPort\":9080}],\"volumeMounts\":[{\"mountPath\":\"/tmp\",\"name\":\"tmp\"},{\"mountPath\":\"/opt/ibm/wlp/output\",\"name\":\"wlp-output\"}]}],\"serviceAccountName\":\"bookinfo-reviews\",\"volumes\":[{\"emptyDir\":{},\"name\":\"wlp-output\"},{\"emptyDir\":{},\"name\":\"tmp\"}]}}}}\n" + }, + "healthAnnotations": {}, + "istioReferences": [], + "dashboardAnnotations": null, + "serviceAccountNames": ["bookinfo-reviews"], + "health": { + "workloadStatus": { + "name": "reviews-v1", + "desiredReplicas": 1, + "currentReplicas": 1, + "availableReplicas": 1, + "syncedProxies": 1 + }, + "requests": { + "inbound": { + "http": { + "200": 0.31111111111111106 + } + }, + "outbound": {}, + "healthAnnotations": {} + } + } + }, + { + "name": "reviews-v2", + "cluster": "Kubernetes", + "type": "Deployment", + "createdAt": "2024-01-29T20:10:15Z", + "resourceVersion": "26828", + "istioSidecar": true, + "istioAmbient": false, + "additionalDetailSample": null, + "labels": { + "app": "reviews", + "version": "v2" + }, + "appLabel": true, + "versionLabel": true, + "podCount": 1, + "annotations": { + "deployment.kubernetes.io/revision": "1", + "kubectl.kubernetes.io/last-applied-configuration": "{\"apiVersion\":\"apps/v1\",\"kind\":\"Deployment\",\"metadata\":{\"annotations\":{},\"labels\":{\"app\":\"reviews\",\"version\":\"v2\"},\"name\":\"reviews-v2\",\"namespace\":\"bookinfo\"},\"spec\":{\"replicas\":1,\"selector\":{\"matchLabels\":{\"app\":\"reviews\",\"version\":\"v2\"}},\"template\":{\"metadata\":{\"labels\":{\"app\":\"reviews\",\"version\":\"v2\"}},\"spec\":{\"containers\":[{\"env\":[{\"name\":\"LOG_DIR\",\"value\":\"/tmp/logs\"}],\"image\":\"docker.io/istio/examples-bookinfo-reviews-v2:1.18.0\",\"imagePullPolicy\":\"IfNotPresent\",\"name\":\"reviews\",\"ports\":[{\"containerPort\":9080}],\"volumeMounts\":[{\"mountPath\":\"/tmp\",\"name\":\"tmp\"},{\"mountPath\":\"/opt/ibm/wlp/output\",\"name\":\"wlp-output\"}]}],\"serviceAccountName\":\"bookinfo-reviews\",\"volumes\":[{\"emptyDir\":{},\"name\":\"wlp-output\"},{\"emptyDir\":{},\"name\":\"tmp\"}]}}}}\n" + }, + "healthAnnotations": {}, + "istioReferences": [], + "dashboardAnnotations": null, + "serviceAccountNames": ["bookinfo-reviews"], + "health": { + "workloadStatus": { + "name": "reviews-v2", + "desiredReplicas": 1, + "currentReplicas": 1, + "availableReplicas": 1, + "syncedProxies": 1 + }, + "requests": { + "inbound": { + "http": { + "200": 0.34358974358974353 + } + }, + "outbound": { + "http": { + "200": 0.34358974358974353 + } + }, + "healthAnnotations": {} + } + } + }, + { + "name": "reviews-v3", + "cluster": "Kubernetes", + "type": "Deployment", + "createdAt": "2024-01-29T20:10:15Z", + "resourceVersion": "26840", + "istioSidecar": true, + "istioAmbient": false, + "additionalDetailSample": null, + "labels": { + "app": "reviews", + "version": "v3" + }, + "appLabel": true, + "versionLabel": true, + "podCount": 1, + "annotations": { + "deployment.kubernetes.io/revision": "1", + "kubectl.kubernetes.io/last-applied-configuration": "{\"apiVersion\":\"apps/v1\",\"kind\":\"Deployment\",\"metadata\":{\"annotations\":{},\"labels\":{\"app\":\"reviews\",\"version\":\"v3\"},\"name\":\"reviews-v3\",\"namespace\":\"bookinfo\"},\"spec\":{\"replicas\":1,\"selector\":{\"matchLabels\":{\"app\":\"reviews\",\"version\":\"v3\"}},\"template\":{\"metadata\":{\"labels\":{\"app\":\"reviews\",\"version\":\"v3\"}},\"spec\":{\"containers\":[{\"env\":[{\"name\":\"LOG_DIR\",\"value\":\"/tmp/logs\"}],\"image\":\"docker.io/istio/examples-bookinfo-reviews-v3:1.18.0\",\"imagePullPolicy\":\"IfNotPresent\",\"name\":\"reviews\",\"ports\":[{\"containerPort\":9080}],\"volumeMounts\":[{\"mountPath\":\"/tmp\",\"name\":\"tmp\"},{\"mountPath\":\"/opt/ibm/wlp/output\",\"name\":\"wlp-output\"}]}],\"serviceAccountName\":\"bookinfo-reviews\",\"volumes\":[{\"emptyDir\":{},\"name\":\"wlp-output\"},{\"emptyDir\":{},\"name\":\"tmp\"}]}}}}\n" + }, + "healthAnnotations": {}, + "istioReferences": [], + "dashboardAnnotations": null, + "serviceAccountNames": ["bookinfo-reviews"], + "health": { + "workloadStatus": { + "name": "reviews-v3", + "desiredReplicas": 1, + "currentReplicas": 1, + "availableReplicas": 1, + "syncedProxies": 1 + }, + "requests": { + "inbound": { + "http": { + "200": 0.34700854700854694 + } + }, + "outbound": { + "http": { + "200": 0.34700854700854694 + } + }, + "healthAnnotations": {} + } + } + } + ], + "validations": { + "workload": { + "details-v1.bookinfo": { + "name": "details-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "kiali-traffic-generator.bookinfo": { + "name": "kiali-traffic-generator", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "productpage-v1.bookinfo": { + "name": "productpage-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "ratings-v1.bookinfo": { + "name": "ratings-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "reviews-v1.bookinfo": { + "name": "reviews-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "reviews-v2.bookinfo": { + "name": "reviews-v2", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "reviews-v3.bookinfo": { + "name": "reviews-v3", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + } + } + } +} diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/bookinfo/workloads/details_v1.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/bookinfo/workloads/details_v1.json new file mode 100644 index 0000000000..ac1ec7d292 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/bookinfo/workloads/details_v1.json @@ -0,0 +1,194 @@ +{ + "name": "details-v1", + "cluster": "Kubernetes", + "type": "Deployment", + "createdAt": "2024-02-15T09:25:39Z", + "resourceVersion": "16316", + "istioSidecar": true, + "istioAmbient": false, + "additionalDetailSample": null, + "labels": { + "app": "details", + "version": "v1" + }, + "appLabel": true, + "versionLabel": true, + "podCount": 0, + "annotations": { + "deployment.kubernetes.io/revision": "1", + "kubectl.kubernetes.io/last-applied-configuration": "{\"apiVersion\":\"apps/v1\",\"kind\":\"Deployment\",\"metadata\":{\"annotations\":{},\"labels\":{\"app\":\"details\",\"version\":\"v1\"},\"name\":\"details-v1\",\"namespace\":\"bookinfo\"},\"spec\":{\"replicas\":1,\"selector\":{\"matchLabels\":{\"app\":\"details\",\"version\":\"v1\"}},\"template\":{\"metadata\":{\"labels\":{\"app\":\"details\",\"version\":\"v1\"}},\"spec\":{\"containers\":[{\"image\":\"docker.io/istio/examples-bookinfo-details-v1:1.18.0\",\"imagePullPolicy\":\"IfNotPresent\",\"name\":\"details\",\"ports\":[{\"containerPort\":9080}]}],\"serviceAccountName\":\"bookinfo-details\"}}}}\n" + }, + "healthAnnotations": {}, + "istioReferences": null, + "dashboardAnnotations": {}, + "serviceAccountNames": null, + "desiredReplicas": 1, + "currentReplicas": 1, + "availableReplicas": 1, + "pods": [ + { + "name": "details-v1-698d88b-dzrhr", + "labels": { + "app": "details", + "pod-template-hash": "698d88b", + "security.istio.io/tlsMode": "istio", + "service.istio.io/canonical-name": "details", + "service.istio.io/canonical-revision": "v1", + "version": "v1" + }, + "createdAt": "2024-02-15T09:25:39Z", + "createdBy": [ + { + "name": "details-v1-698d88b", + "kind": "ReplicaSet" + } + ], + "containers": [ + { + "name": "details", + "image": "docker.io/istio/examples-bookinfo-details-v1:1.18.0", + "isProxy": false, + "isReady": true, + "isAmbient": false + } + ], + "istioContainers": [ + { + "name": "istio-proxy", + "image": "gcr.io/istio-release/proxyv2:1.20.1", + "isProxy": true, + "isReady": true, + "isAmbient": false + } + ], + "istioInitContainers": [ + { + "name": "istio-init", + "image": "gcr.io/istio-release/proxyv2:1.20.1", + "isProxy": true, + "isReady": true, + "isAmbient": false + } + ], + "status": "Running", + "statusMessage": "", + "statusReason": "", + "appLabel": true, + "versionLabel": true, + "annotations": { + "istio.io/rev": "default", + "kubectl.kubernetes.io/default-container": "details", + "kubectl.kubernetes.io/default-logs-container": "details", + "prometheus.io/path": "/stats/prometheus", + "prometheus.io/port": "15020", + "prometheus.io/scrape": "true", + "sidecar.istio.io/status": "{\"initContainers\":[\"istio-init\"],\"containers\":[\"istio-proxy\"],\"volumes\":[\"workload-socket\",\"credential-socket\",\"workload-certs\",\"istio-envoy\",\"istio-data\",\"istio-podinfo\",\"istio-token\",\"istiod-ca-cert\"],\"imagePullSecrets\":null,\"revision\":\"default\"}" + }, + "proxyStatus": { + "CDS": "Synced", + "EDS": "Synced", + "LDS": "Synced", + "RDS": "Synced" + }, + "serviceAccountName": "bookinfo-details" + } + ], + "services": [ + { + "name": "details", + "namespace": "bookinfo", + "istioSidecar": true, + "cluster": "Kubernetes", + "istioAmbient": false, + "appLabel": true, + "additionalDetailSample": null, + "annotations": null, + "healthAnnotations": {}, + "ports": null, + "labels": { + "app": "details", + "service": "details" + }, + "selector": { + "app": "details" + }, + "istioReferences": [], + "kialiWizard": "", + "serviceRegistry": "Kubernetes", + "health": { + "requests": { + "inbound": {}, + "outbound": {}, + "healthAnnotations": {} + } + } + } + ], + "runtimes": [ + { + "name": "", + "dashboardRefs": [ + { + "template": "envoy", + "title": "Envoy Metrics" + } + ] + } + ], + "additionalDetails": [], + "validations": { + "gateway": { + "bookinfo-gateway.bookinfo": { + "name": "bookinfo-gateway", + "objectType": "gateway", + "valid": false, + "checks": [ + { + "code": "KIA0302", + "message": "No matching workload found for gateway selector in this namespace", + "severity": "warning", + "path": "spec/selector" + } + ], + "references": null + } + }, + "virtualservice": { + "bookinfo.bookinfo": { + "name": "bookinfo", + "objectType": "virtualservice", + "valid": true, + "checks": [], + "references": null + } + }, + "workload": { + "details-v1.bookinfo": { + "name": "details-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + } + } + }, + "waypointWorkloads": null, + "health": { + "workloadStatus": { + "name": "details-v1", + "desiredReplicas": 1, + "currentReplicas": 1, + "availableReplicas": 1, + "syncedProxies": 1 + }, + "requests": { + "inbound": { + "http": { + "200": 0.9999999999999999 + } + }, + "outbound": {}, + "healthAnnotations": {} + } + } +} diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/bookinfo/workloads/kiali_traffic_generator.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/bookinfo/workloads/kiali_traffic_generator.json new file mode 100644 index 0000000000..8d9003cd72 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/bookinfo/workloads/kiali_traffic_generator.json @@ -0,0 +1,156 @@ +{ + "name": "kiali-traffic-generator", + "cluster": "Kubernetes", + "type": "ReplicaSet", + "createdAt": "2024-02-15T09:26:32Z", + "resourceVersion": "16299", + "istioSidecar": true, + "istioAmbient": false, + "additionalDetailSample": null, + "labels": { + "app": "kiali-traffic-generator", + "kiali-test": "traffic-generator" + }, + "appLabel": true, + "versionLabel": false, + "podCount": 0, + "annotations": null, + "healthAnnotations": {}, + "istioReferences": null, + "dashboardAnnotations": {}, + "serviceAccountNames": null, + "desiredReplicas": 1, + "currentReplicas": 1, + "availableReplicas": 1, + "pods": [ + { + "name": "kiali-traffic-generator-nsgk4", + "labels": { + "app": "kiali-traffic-generator", + "kiali-test": "traffic-generator", + "security.istio.io/tlsMode": "istio", + "service.istio.io/canonical-name": "kiali-traffic-generator", + "service.istio.io/canonical-revision": "latest" + }, + "createdAt": "2024-02-15T09:26:32Z", + "createdBy": [ + { + "name": "kiali-traffic-generator", + "kind": "ReplicaSet" + } + ], + "containers": [ + { + "name": "kiali-traffic-generator", + "image": "quay.io/kiali/kiali-test-mesh-traffic-generator:latest", + "isProxy": false, + "isReady": true, + "isAmbient": false + } + ], + "istioContainers": [ + { + "name": "istio-proxy", + "image": "gcr.io/istio-release/proxyv2:1.20.1", + "isProxy": true, + "isReady": true, + "isAmbient": false + } + ], + "istioInitContainers": [ + { + "name": "istio-init", + "image": "gcr.io/istio-release/proxyv2:1.20.1", + "isProxy": true, + "isReady": true, + "isAmbient": false + } + ], + "status": "Running", + "statusMessage": "", + "statusReason": "", + "appLabel": true, + "versionLabel": false, + "annotations": { + "istio.io/rev": "default", + "kubectl.kubernetes.io/default-container": "kiali-traffic-generator", + "kubectl.kubernetes.io/default-logs-container": "kiali-traffic-generator", + "prometheus.io/path": "/stats/prometheus", + "prometheus.io/port": "15020", + "prometheus.io/scrape": "true", + "sidecar.istio.io/status": "{\"initContainers\":[\"istio-init\"],\"containers\":[\"istio-proxy\"],\"volumes\":[\"workload-socket\",\"credential-socket\",\"workload-certs\",\"istio-envoy\",\"istio-data\",\"istio-podinfo\",\"istio-token\",\"istiod-ca-cert\"],\"imagePullSecrets\":null,\"revision\":\"default\"}" + }, + "proxyStatus": { + "CDS": "Synced", + "EDS": "Synced", + "LDS": "Synced", + "RDS": "Synced" + }, + "serviceAccountName": "default" + } + ], + "services": [], + "runtimes": [ + { + "name": "", + "dashboardRefs": [ + { + "template": "envoy", + "title": "Envoy Metrics" + } + ] + } + ], + "additionalDetails": [], + "validations": { + "gateway": { + "bookinfo-gateway.bookinfo": { + "name": "bookinfo-gateway", + "objectType": "gateway", + "valid": false, + "checks": [ + { + "code": "KIA0302", + "message": "No matching workload found for gateway selector in this namespace", + "severity": "warning", + "path": "spec/selector" + } + ], + "references": null + } + }, + "virtualservice": { + "bookinfo.bookinfo": { + "name": "bookinfo", + "objectType": "virtualservice", + "valid": true, + "checks": [], + "references": null + } + }, + "workload": { + "kiali-traffic-generator.bookinfo": { + "name": "kiali-traffic-generator", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + } + } + }, + "waypointWorkloads": null, + "health": { + "workloadStatus": { + "name": "kiali-traffic-generator", + "desiredReplicas": 1, + "currentReplicas": 1, + "availableReplicas": 1, + "syncedProxies": 1 + }, + "requests": { + "inbound": {}, + "outbound": {}, + "healthAnnotations": {} + } + } +} diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/bookinfo/workloads/productpage_v1.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/bookinfo/workloads/productpage_v1.json new file mode 100644 index 0000000000..17a2c753c1 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/bookinfo/workloads/productpage_v1.json @@ -0,0 +1,198 @@ +{ + "name": "productpage-v1", + "cluster": "Kubernetes", + "type": "Deployment", + "createdAt": "2024-02-15T09:25:39Z", + "resourceVersion": "16263", + "istioSidecar": true, + "istioAmbient": false, + "additionalDetailSample": null, + "labels": { + "app": "productpage", + "version": "v1" + }, + "appLabel": true, + "versionLabel": true, + "podCount": 0, + "annotations": { + "deployment.kubernetes.io/revision": "1", + "kubectl.kubernetes.io/last-applied-configuration": "{\"apiVersion\":\"apps/v1\",\"kind\":\"Deployment\",\"metadata\":{\"annotations\":{},\"labels\":{\"app\":\"productpage\",\"version\":\"v1\"},\"name\":\"productpage-v1\",\"namespace\":\"bookinfo\"},\"spec\":{\"replicas\":1,\"selector\":{\"matchLabels\":{\"app\":\"productpage\",\"version\":\"v1\"}},\"template\":{\"metadata\":{\"annotations\":{\"prometheus.io/path\":\"/metrics\",\"prometheus.io/port\":\"9080\",\"prometheus.io/scrape\":\"true\"},\"labels\":{\"app\":\"productpage\",\"version\":\"v1\"}},\"spec\":{\"containers\":[{\"image\":\"docker.io/istio/examples-bookinfo-productpage-v1:1.18.0\",\"imagePullPolicy\":\"IfNotPresent\",\"name\":\"productpage\",\"ports\":[{\"containerPort\":9080}],\"volumeMounts\":[{\"mountPath\":\"/tmp\",\"name\":\"tmp\"}]}],\"serviceAccountName\":\"bookinfo-productpage\",\"volumes\":[{\"emptyDir\":{},\"name\":\"tmp\"}]}}}}\n" + }, + "healthAnnotations": {}, + "istioReferences": null, + "dashboardAnnotations": {}, + "serviceAccountNames": null, + "desiredReplicas": 1, + "currentReplicas": 1, + "availableReplicas": 1, + "pods": [ + { + "name": "productpage-v1-675fc69cf-jbb29", + "labels": { + "app": "productpage", + "pod-template-hash": "675fc69cf", + "security.istio.io/tlsMode": "istio", + "service.istio.io/canonical-name": "productpage", + "service.istio.io/canonical-revision": "v1", + "version": "v1" + }, + "createdAt": "2024-02-15T09:25:40Z", + "createdBy": [ + { + "name": "productpage-v1-675fc69cf", + "kind": "ReplicaSet" + } + ], + "containers": [ + { + "name": "productpage", + "image": "docker.io/istio/examples-bookinfo-productpage-v1:1.18.0", + "isProxy": false, + "isReady": true, + "isAmbient": false + } + ], + "istioContainers": [ + { + "name": "istio-proxy", + "image": "gcr.io/istio-release/proxyv2:1.20.1", + "isProxy": true, + "isReady": true, + "isAmbient": false + } + ], + "istioInitContainers": [ + { + "name": "istio-init", + "image": "gcr.io/istio-release/proxyv2:1.20.1", + "isProxy": true, + "isReady": true, + "isAmbient": false + } + ], + "status": "Running", + "statusMessage": "", + "statusReason": "", + "appLabel": true, + "versionLabel": true, + "annotations": { + "istio.io/rev": "default", + "kubectl.kubernetes.io/default-container": "productpage", + "kubectl.kubernetes.io/default-logs-container": "productpage", + "prometheus.io/path": "/stats/prometheus", + "prometheus.io/port": "15020", + "prometheus.io/scrape": "true", + "sidecar.istio.io/status": "{\"initContainers\":[\"istio-init\"],\"containers\":[\"istio-proxy\"],\"volumes\":[\"workload-socket\",\"credential-socket\",\"workload-certs\",\"istio-envoy\",\"istio-data\",\"istio-podinfo\",\"istio-token\",\"istiod-ca-cert\"],\"imagePullSecrets\":null,\"revision\":\"default\"}" + }, + "proxyStatus": { + "CDS": "Synced", + "EDS": "Synced", + "LDS": "Synced", + "RDS": "Synced" + }, + "serviceAccountName": "bookinfo-productpage" + } + ], + "services": [ + { + "name": "productpage", + "namespace": "bookinfo", + "istioSidecar": true, + "cluster": "Kubernetes", + "istioAmbient": false, + "appLabel": true, + "additionalDetailSample": null, + "annotations": null, + "healthAnnotations": {}, + "ports": null, + "labels": { + "app": "productpage", + "service": "productpage" + }, + "selector": { + "app": "productpage" + }, + "istioReferences": [], + "kialiWizard": "", + "serviceRegistry": "Kubernetes", + "health": { + "requests": { + "inbound": {}, + "outbound": {}, + "healthAnnotations": {} + } + } + } + ], + "runtimes": [ + { + "name": "", + "dashboardRefs": [ + { + "template": "envoy", + "title": "Envoy Metrics" + } + ] + } + ], + "additionalDetails": [], + "validations": { + "gateway": { + "bookinfo-gateway.bookinfo": { + "name": "bookinfo-gateway", + "objectType": "gateway", + "valid": false, + "checks": [ + { + "code": "KIA0302", + "message": "No matching workload found for gateway selector in this namespace", + "severity": "warning", + "path": "spec/selector" + } + ], + "references": null + } + }, + "virtualservice": { + "bookinfo.bookinfo": { + "name": "bookinfo", + "objectType": "virtualservice", + "valid": true, + "checks": [], + "references": null + } + }, + "workload": { + "productpage-v1.bookinfo": { + "name": "productpage-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + } + } + }, + "waypointWorkloads": null, + "health": { + "workloadStatus": { + "name": "productpage-v1", + "desiredReplicas": 1, + "currentReplicas": 1, + "availableReplicas": 1, + "syncedProxies": 1 + }, + "requests": { + "inbound": { + "http": { + "200": 0.9999999999999999 + } + }, + "outbound": { + "http": { + "200": 2 + } + }, + "healthAnnotations": {} + } + } +} diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/bookinfo/workloads/ratings_v1.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/bookinfo/workloads/ratings_v1.json new file mode 100644 index 0000000000..9fbfc87bfd --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/bookinfo/workloads/ratings_v1.json @@ -0,0 +1,194 @@ +{ + "name": "ratings-v1", + "cluster": "Kubernetes", + "type": "Deployment", + "createdAt": "2024-02-15T09:25:39Z", + "resourceVersion": "16304", + "istioSidecar": true, + "istioAmbient": false, + "additionalDetailSample": null, + "labels": { + "app": "ratings", + "version": "v1" + }, + "appLabel": true, + "versionLabel": true, + "podCount": 0, + "annotations": { + "deployment.kubernetes.io/revision": "1", + "kubectl.kubernetes.io/last-applied-configuration": "{\"apiVersion\":\"apps/v1\",\"kind\":\"Deployment\",\"metadata\":{\"annotations\":{},\"labels\":{\"app\":\"ratings\",\"version\":\"v1\"},\"name\":\"ratings-v1\",\"namespace\":\"bookinfo\"},\"spec\":{\"replicas\":1,\"selector\":{\"matchLabels\":{\"app\":\"ratings\",\"version\":\"v1\"}},\"template\":{\"metadata\":{\"labels\":{\"app\":\"ratings\",\"version\":\"v1\"}},\"spec\":{\"containers\":[{\"image\":\"docker.io/istio/examples-bookinfo-ratings-v1:1.18.0\",\"imagePullPolicy\":\"IfNotPresent\",\"name\":\"ratings\",\"ports\":[{\"containerPort\":9080}]}],\"serviceAccountName\":\"bookinfo-ratings\"}}}}\n" + }, + "healthAnnotations": {}, + "istioReferences": null, + "dashboardAnnotations": {}, + "serviceAccountNames": null, + "desiredReplicas": 1, + "currentReplicas": 1, + "availableReplicas": 1, + "pods": [ + { + "name": "ratings-v1-6484c4d9bb-84w5q", + "labels": { + "app": "ratings", + "pod-template-hash": "6484c4d9bb", + "security.istio.io/tlsMode": "istio", + "service.istio.io/canonical-name": "ratings", + "service.istio.io/canonical-revision": "v1", + "version": "v1" + }, + "createdAt": "2024-02-15T09:25:39Z", + "createdBy": [ + { + "name": "ratings-v1-6484c4d9bb", + "kind": "ReplicaSet" + } + ], + "containers": [ + { + "name": "ratings", + "image": "docker.io/istio/examples-bookinfo-ratings-v1:1.18.0", + "isProxy": false, + "isReady": true, + "isAmbient": false + } + ], + "istioContainers": [ + { + "name": "istio-proxy", + "image": "gcr.io/istio-release/proxyv2:1.20.1", + "isProxy": true, + "isReady": true, + "isAmbient": false + } + ], + "istioInitContainers": [ + { + "name": "istio-init", + "image": "gcr.io/istio-release/proxyv2:1.20.1", + "isProxy": true, + "isReady": true, + "isAmbient": false + } + ], + "status": "Running", + "statusMessage": "", + "statusReason": "", + "appLabel": true, + "versionLabel": true, + "annotations": { + "istio.io/rev": "default", + "kubectl.kubernetes.io/default-container": "ratings", + "kubectl.kubernetes.io/default-logs-container": "ratings", + "prometheus.io/path": "/stats/prometheus", + "prometheus.io/port": "15020", + "prometheus.io/scrape": "true", + "sidecar.istio.io/status": "{\"initContainers\":[\"istio-init\"],\"containers\":[\"istio-proxy\"],\"volumes\":[\"workload-socket\",\"credential-socket\",\"workload-certs\",\"istio-envoy\",\"istio-data\",\"istio-podinfo\",\"istio-token\",\"istiod-ca-cert\"],\"imagePullSecrets\":null,\"revision\":\"default\"}" + }, + "proxyStatus": { + "CDS": "Synced", + "EDS": "Synced", + "LDS": "Synced", + "RDS": "Synced" + }, + "serviceAccountName": "bookinfo-ratings" + } + ], + "services": [ + { + "name": "ratings", + "namespace": "bookinfo", + "istioSidecar": true, + "cluster": "Kubernetes", + "istioAmbient": false, + "appLabel": true, + "additionalDetailSample": null, + "annotations": null, + "healthAnnotations": {}, + "ports": null, + "labels": { + "app": "ratings", + "service": "ratings" + }, + "selector": { + "app": "ratings" + }, + "istioReferences": [], + "kialiWizard": "", + "serviceRegistry": "Kubernetes", + "health": { + "requests": { + "inbound": {}, + "outbound": {}, + "healthAnnotations": {} + } + } + } + ], + "runtimes": [ + { + "name": "", + "dashboardRefs": [ + { + "template": "envoy", + "title": "Envoy Metrics" + } + ] + } + ], + "additionalDetails": [], + "validations": { + "gateway": { + "bookinfo-gateway.bookinfo": { + "name": "bookinfo-gateway", + "objectType": "gateway", + "valid": false, + "checks": [ + { + "code": "KIA0302", + "message": "No matching workload found for gateway selector in this namespace", + "severity": "warning", + "path": "spec/selector" + } + ], + "references": null + } + }, + "virtualservice": { + "bookinfo.bookinfo": { + "name": "bookinfo", + "objectType": "virtualservice", + "valid": true, + "checks": [], + "references": null + } + }, + "workload": { + "ratings-v1.bookinfo": { + "name": "ratings-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + } + } + }, + "waypointWorkloads": null, + "health": { + "workloadStatus": { + "name": "ratings-v1", + "desiredReplicas": 1, + "currentReplicas": 1, + "availableReplicas": 1, + "syncedProxies": 1 + }, + "requests": { + "inbound": { + "http": { + "200": 0.7555555555555555 + } + }, + "outbound": {}, + "healthAnnotations": {} + } + } +} diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/bookinfo/workloads/reviews_v1.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/bookinfo/workloads/reviews_v1.json new file mode 100644 index 0000000000..5787dc820a --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/bookinfo/workloads/reviews_v1.json @@ -0,0 +1,194 @@ +{ + "name": "reviews-v1", + "cluster": "Kubernetes", + "type": "Deployment", + "createdAt": "2024-02-15T09:25:39Z", + "resourceVersion": "16297", + "istioSidecar": true, + "istioAmbient": false, + "additionalDetailSample": null, + "labels": { + "app": "reviews", + "version": "v1" + }, + "appLabel": true, + "versionLabel": true, + "podCount": 0, + "annotations": { + "deployment.kubernetes.io/revision": "1", + "kubectl.kubernetes.io/last-applied-configuration": "{\"apiVersion\":\"apps/v1\",\"kind\":\"Deployment\",\"metadata\":{\"annotations\":{},\"labels\":{\"app\":\"reviews\",\"version\":\"v1\"},\"name\":\"reviews-v1\",\"namespace\":\"bookinfo\"},\"spec\":{\"replicas\":1,\"selector\":{\"matchLabels\":{\"app\":\"reviews\",\"version\":\"v1\"}},\"template\":{\"metadata\":{\"labels\":{\"app\":\"reviews\",\"version\":\"v1\"}},\"spec\":{\"containers\":[{\"env\":[{\"name\":\"LOG_DIR\",\"value\":\"/tmp/logs\"}],\"image\":\"docker.io/istio/examples-bookinfo-reviews-v1:1.18.0\",\"imagePullPolicy\":\"IfNotPresent\",\"name\":\"reviews\",\"ports\":[{\"containerPort\":9080}],\"volumeMounts\":[{\"mountPath\":\"/tmp\",\"name\":\"tmp\"},{\"mountPath\":\"/opt/ibm/wlp/output\",\"name\":\"wlp-output\"}]}],\"serviceAccountName\":\"bookinfo-reviews\",\"volumes\":[{\"emptyDir\":{},\"name\":\"wlp-output\"},{\"emptyDir\":{},\"name\":\"tmp\"}]}}}}\n" + }, + "healthAnnotations": {}, + "istioReferences": null, + "dashboardAnnotations": {}, + "serviceAccountNames": null, + "desiredReplicas": 1, + "currentReplicas": 1, + "availableReplicas": 1, + "pods": [ + { + "name": "reviews-v1-5b5d6494f4-2vw99", + "labels": { + "app": "reviews", + "pod-template-hash": "5b5d6494f4", + "security.istio.io/tlsMode": "istio", + "service.istio.io/canonical-name": "reviews", + "service.istio.io/canonical-revision": "v1", + "version": "v1" + }, + "createdAt": "2024-02-15T09:25:39Z", + "createdBy": [ + { + "name": "reviews-v1-5b5d6494f4", + "kind": "ReplicaSet" + } + ], + "containers": [ + { + "name": "reviews", + "image": "docker.io/istio/examples-bookinfo-reviews-v1:1.18.0", + "isProxy": false, + "isReady": true, + "isAmbient": false + } + ], + "istioContainers": [ + { + "name": "istio-proxy", + "image": "gcr.io/istio-release/proxyv2:1.20.1", + "isProxy": true, + "isReady": true, + "isAmbient": false + } + ], + "istioInitContainers": [ + { + "name": "istio-init", + "image": "gcr.io/istio-release/proxyv2:1.20.1", + "isProxy": true, + "isReady": true, + "isAmbient": false + } + ], + "status": "Running", + "statusMessage": "", + "statusReason": "", + "appLabel": true, + "versionLabel": true, + "annotations": { + "istio.io/rev": "default", + "kubectl.kubernetes.io/default-container": "reviews", + "kubectl.kubernetes.io/default-logs-container": "reviews", + "prometheus.io/path": "/stats/prometheus", + "prometheus.io/port": "15020", + "prometheus.io/scrape": "true", + "sidecar.istio.io/status": "{\"initContainers\":[\"istio-init\"],\"containers\":[\"istio-proxy\"],\"volumes\":[\"workload-socket\",\"credential-socket\",\"workload-certs\",\"istio-envoy\",\"istio-data\",\"istio-podinfo\",\"istio-token\",\"istiod-ca-cert\"],\"imagePullSecrets\":null,\"revision\":\"default\"}" + }, + "proxyStatus": { + "CDS": "Synced", + "EDS": "Synced", + "LDS": "Synced", + "RDS": "Synced" + }, + "serviceAccountName": "bookinfo-reviews" + } + ], + "services": [ + { + "name": "reviews", + "namespace": "bookinfo", + "istioSidecar": true, + "cluster": "Kubernetes", + "istioAmbient": false, + "appLabel": true, + "additionalDetailSample": null, + "annotations": null, + "healthAnnotations": {}, + "ports": null, + "labels": { + "app": "reviews", + "service": "reviews" + }, + "selector": { + "app": "reviews" + }, + "istioReferences": [], + "kialiWizard": "", + "serviceRegistry": "Kubernetes", + "health": { + "requests": { + "inbound": {}, + "outbound": {}, + "healthAnnotations": {} + } + } + } + ], + "runtimes": [ + { + "name": "", + "dashboardRefs": [ + { + "template": "envoy", + "title": "Envoy Metrics" + } + ] + } + ], + "additionalDetails": [], + "validations": { + "gateway": { + "bookinfo-gateway.bookinfo": { + "name": "bookinfo-gateway", + "objectType": "gateway", + "valid": false, + "checks": [ + { + "code": "KIA0302", + "message": "No matching workload found for gateway selector in this namespace", + "severity": "warning", + "path": "spec/selector" + } + ], + "references": null + } + }, + "virtualservice": { + "bookinfo.bookinfo": { + "name": "bookinfo", + "objectType": "virtualservice", + "valid": true, + "checks": [], + "references": null + } + }, + "workload": { + "reviews-v1.bookinfo": { + "name": "reviews-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + } + } + }, + "waypointWorkloads": null, + "health": { + "workloadStatus": { + "name": "reviews-v1", + "desiredReplicas": 1, + "currentReplicas": 1, + "availableReplicas": 1, + "syncedProxies": 1 + }, + "requests": { + "inbound": { + "http": { + "200": 0.3333333333333333 + } + }, + "outbound": {}, + "healthAnnotations": {} + } + } +} diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/bookinfo/workloads/reviews_v2.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/bookinfo/workloads/reviews_v2.json new file mode 100644 index 0000000000..3b78c259f1 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/bookinfo/workloads/reviews_v2.json @@ -0,0 +1,198 @@ +{ + "name": "reviews-v2", + "cluster": "Kubernetes", + "type": "Deployment", + "createdAt": "2024-02-15T09:25:39Z", + "resourceVersion": "16292", + "istioSidecar": true, + "istioAmbient": false, + "additionalDetailSample": null, + "labels": { + "app": "reviews", + "version": "v2" + }, + "appLabel": true, + "versionLabel": true, + "podCount": 0, + "annotations": { + "deployment.kubernetes.io/revision": "1", + "kubectl.kubernetes.io/last-applied-configuration": "{\"apiVersion\":\"apps/v1\",\"kind\":\"Deployment\",\"metadata\":{\"annotations\":{},\"labels\":{\"app\":\"reviews\",\"version\":\"v2\"},\"name\":\"reviews-v2\",\"namespace\":\"bookinfo\"},\"spec\":{\"replicas\":1,\"selector\":{\"matchLabels\":{\"app\":\"reviews\",\"version\":\"v2\"}},\"template\":{\"metadata\":{\"labels\":{\"app\":\"reviews\",\"version\":\"v2\"}},\"spec\":{\"containers\":[{\"env\":[{\"name\":\"LOG_DIR\",\"value\":\"/tmp/logs\"}],\"image\":\"docker.io/istio/examples-bookinfo-reviews-v2:1.18.0\",\"imagePullPolicy\":\"IfNotPresent\",\"name\":\"reviews\",\"ports\":[{\"containerPort\":9080}],\"volumeMounts\":[{\"mountPath\":\"/tmp\",\"name\":\"tmp\"},{\"mountPath\":\"/opt/ibm/wlp/output\",\"name\":\"wlp-output\"}]}],\"serviceAccountName\":\"bookinfo-reviews\",\"volumes\":[{\"emptyDir\":{},\"name\":\"wlp-output\"},{\"emptyDir\":{},\"name\":\"tmp\"}]}}}}\n" + }, + "healthAnnotations": {}, + "istioReferences": null, + "dashboardAnnotations": {}, + "serviceAccountNames": null, + "desiredReplicas": 1, + "currentReplicas": 1, + "availableReplicas": 1, + "pods": [ + { + "name": "reviews-v2-5b667bcbf8-d54v4", + "labels": { + "app": "reviews", + "pod-template-hash": "5b667bcbf8", + "security.istio.io/tlsMode": "istio", + "service.istio.io/canonical-name": "reviews", + "service.istio.io/canonical-revision": "v2", + "version": "v2" + }, + "createdAt": "2024-02-15T09:25:39Z", + "createdBy": [ + { + "name": "reviews-v2-5b667bcbf8", + "kind": "ReplicaSet" + } + ], + "containers": [ + { + "name": "reviews", + "image": "docker.io/istio/examples-bookinfo-reviews-v2:1.18.0", + "isProxy": false, + "isReady": true, + "isAmbient": false + } + ], + "istioContainers": [ + { + "name": "istio-proxy", + "image": "gcr.io/istio-release/proxyv2:1.20.1", + "isProxy": true, + "isReady": true, + "isAmbient": false + } + ], + "istioInitContainers": [ + { + "name": "istio-init", + "image": "gcr.io/istio-release/proxyv2:1.20.1", + "isProxy": true, + "isReady": true, + "isAmbient": false + } + ], + "status": "Running", + "statusMessage": "", + "statusReason": "", + "appLabel": true, + "versionLabel": true, + "annotations": { + "istio.io/rev": "default", + "kubectl.kubernetes.io/default-container": "reviews", + "kubectl.kubernetes.io/default-logs-container": "reviews", + "prometheus.io/path": "/stats/prometheus", + "prometheus.io/port": "15020", + "prometheus.io/scrape": "true", + "sidecar.istio.io/status": "{\"initContainers\":[\"istio-init\"],\"containers\":[\"istio-proxy\"],\"volumes\":[\"workload-socket\",\"credential-socket\",\"workload-certs\",\"istio-envoy\",\"istio-data\",\"istio-podinfo\",\"istio-token\",\"istiod-ca-cert\"],\"imagePullSecrets\":null,\"revision\":\"default\"}" + }, + "proxyStatus": { + "CDS": "Synced", + "EDS": "Synced", + "LDS": "Synced", + "RDS": "Synced" + }, + "serviceAccountName": "bookinfo-reviews" + } + ], + "services": [ + { + "name": "reviews", + "namespace": "bookinfo", + "istioSidecar": true, + "cluster": "Kubernetes", + "istioAmbient": false, + "appLabel": true, + "additionalDetailSample": null, + "annotations": null, + "healthAnnotations": {}, + "ports": null, + "labels": { + "app": "reviews", + "service": "reviews" + }, + "selector": { + "app": "reviews" + }, + "istioReferences": [], + "kialiWizard": "", + "serviceRegistry": "Kubernetes", + "health": { + "requests": { + "inbound": {}, + "outbound": {}, + "healthAnnotations": {} + } + } + } + ], + "runtimes": [ + { + "name": "", + "dashboardRefs": [ + { + "template": "envoy", + "title": "Envoy Metrics" + } + ] + } + ], + "additionalDetails": [], + "validations": { + "gateway": { + "bookinfo-gateway.bookinfo": { + "name": "bookinfo-gateway", + "objectType": "gateway", + "valid": false, + "checks": [ + { + "code": "KIA0302", + "message": "No matching workload found for gateway selector in this namespace", + "severity": "warning", + "path": "spec/selector" + } + ], + "references": null + } + }, + "virtualservice": { + "bookinfo.bookinfo": { + "name": "bookinfo", + "objectType": "virtualservice", + "valid": true, + "checks": [], + "references": null + } + }, + "workload": { + "reviews-v2.bookinfo": { + "name": "reviews-v2", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + } + } + }, + "waypointWorkloads": null, + "health": { + "workloadStatus": { + "name": "reviews-v2", + "desiredReplicas": 1, + "currentReplicas": 1, + "availableReplicas": 1, + "syncedProxies": 1 + }, + "requests": { + "inbound": { + "http": { + "200": 0.3111111111111111 + } + }, + "outbound": { + "http": { + "200": 0.31111111111111106 + } + }, + "healthAnnotations": {} + } + } +} diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/bookinfo/workloads/reviews_v3.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/bookinfo/workloads/reviews_v3.json new file mode 100644 index 0000000000..ac269d2345 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/bookinfo/workloads/reviews_v3.json @@ -0,0 +1,198 @@ +{ + "name": "reviews-v3", + "cluster": "Kubernetes", + "type": "Deployment", + "createdAt": "2024-02-15T09:25:39Z", + "resourceVersion": "16288", + "istioSidecar": true, + "istioAmbient": false, + "additionalDetailSample": null, + "labels": { + "app": "reviews", + "version": "v3" + }, + "appLabel": true, + "versionLabel": true, + "podCount": 0, + "annotations": { + "deployment.kubernetes.io/revision": "1", + "kubectl.kubernetes.io/last-applied-configuration": "{\"apiVersion\":\"apps/v1\",\"kind\":\"Deployment\",\"metadata\":{\"annotations\":{},\"labels\":{\"app\":\"reviews\",\"version\":\"v3\"},\"name\":\"reviews-v3\",\"namespace\":\"bookinfo\"},\"spec\":{\"replicas\":1,\"selector\":{\"matchLabels\":{\"app\":\"reviews\",\"version\":\"v3\"}},\"template\":{\"metadata\":{\"labels\":{\"app\":\"reviews\",\"version\":\"v3\"}},\"spec\":{\"containers\":[{\"env\":[{\"name\":\"LOG_DIR\",\"value\":\"/tmp/logs\"}],\"image\":\"docker.io/istio/examples-bookinfo-reviews-v3:1.18.0\",\"imagePullPolicy\":\"IfNotPresent\",\"name\":\"reviews\",\"ports\":[{\"containerPort\":9080}],\"volumeMounts\":[{\"mountPath\":\"/tmp\",\"name\":\"tmp\"},{\"mountPath\":\"/opt/ibm/wlp/output\",\"name\":\"wlp-output\"}]}],\"serviceAccountName\":\"bookinfo-reviews\",\"volumes\":[{\"emptyDir\":{},\"name\":\"wlp-output\"},{\"emptyDir\":{},\"name\":\"tmp\"}]}}}}\n" + }, + "healthAnnotations": {}, + "istioReferences": null, + "dashboardAnnotations": {}, + "serviceAccountNames": null, + "desiredReplicas": 1, + "currentReplicas": 1, + "availableReplicas": 1, + "pods": [ + { + "name": "reviews-v3-5b9bd44f4-457bd", + "labels": { + "app": "reviews", + "pod-template-hash": "5b9bd44f4", + "security.istio.io/tlsMode": "istio", + "service.istio.io/canonical-name": "reviews", + "service.istio.io/canonical-revision": "v3", + "version": "v3" + }, + "createdAt": "2024-02-15T09:25:39Z", + "createdBy": [ + { + "name": "reviews-v3-5b9bd44f4", + "kind": "ReplicaSet" + } + ], + "containers": [ + { + "name": "reviews", + "image": "docker.io/istio/examples-bookinfo-reviews-v3:1.18.0", + "isProxy": false, + "isReady": true, + "isAmbient": false + } + ], + "istioContainers": [ + { + "name": "istio-proxy", + "image": "gcr.io/istio-release/proxyv2:1.20.1", + "isProxy": true, + "isReady": true, + "isAmbient": false + } + ], + "istioInitContainers": [ + { + "name": "istio-init", + "image": "gcr.io/istio-release/proxyv2:1.20.1", + "isProxy": true, + "isReady": true, + "isAmbient": false + } + ], + "status": "Running", + "statusMessage": "", + "statusReason": "", + "appLabel": true, + "versionLabel": true, + "annotations": { + "istio.io/rev": "default", + "kubectl.kubernetes.io/default-container": "reviews", + "kubectl.kubernetes.io/default-logs-container": "reviews", + "prometheus.io/path": "/stats/prometheus", + "prometheus.io/port": "15020", + "prometheus.io/scrape": "true", + "sidecar.istio.io/status": "{\"initContainers\":[\"istio-init\"],\"containers\":[\"istio-proxy\"],\"volumes\":[\"workload-socket\",\"credential-socket\",\"workload-certs\",\"istio-envoy\",\"istio-data\",\"istio-podinfo\",\"istio-token\",\"istiod-ca-cert\"],\"imagePullSecrets\":null,\"revision\":\"default\"}" + }, + "proxyStatus": { + "CDS": "Synced", + "EDS": "Synced", + "LDS": "Synced", + "RDS": "Synced" + }, + "serviceAccountName": "bookinfo-reviews" + } + ], + "services": [ + { + "name": "reviews", + "namespace": "bookinfo", + "istioSidecar": true, + "cluster": "Kubernetes", + "istioAmbient": false, + "appLabel": true, + "additionalDetailSample": null, + "annotations": null, + "healthAnnotations": {}, + "ports": null, + "labels": { + "app": "reviews", + "service": "reviews" + }, + "selector": { + "app": "reviews" + }, + "istioReferences": [], + "kialiWizard": "", + "serviceRegistry": "Kubernetes", + "health": { + "requests": { + "inbound": {}, + "outbound": {}, + "healthAnnotations": {} + } + } + } + ], + "runtimes": [ + { + "name": "", + "dashboardRefs": [ + { + "template": "envoy", + "title": "Envoy Metrics" + } + ] + } + ], + "additionalDetails": [], + "validations": { + "gateway": { + "bookinfo-gateway.bookinfo": { + "name": "bookinfo-gateway", + "objectType": "gateway", + "valid": false, + "checks": [ + { + "code": "KIA0302", + "message": "No matching workload found for gateway selector in this namespace", + "severity": "warning", + "path": "spec/selector" + } + ], + "references": null + } + }, + "virtualservice": { + "bookinfo.bookinfo": { + "name": "bookinfo", + "objectType": "virtualservice", + "valid": true, + "checks": [], + "references": null + } + }, + "workload": { + "reviews-v3.bookinfo": { + "name": "reviews-v3", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + } + } + }, + "waypointWorkloads": null, + "health": { + "workloadStatus": { + "name": "reviews-v3", + "desiredReplicas": 1, + "currentReplicas": 1, + "availableReplicas": 1, + "syncedProxies": 1 + }, + "requests": { + "inbound": { + "http": { + "200": 0.31111111111111106 + } + }, + "outbound": { + "http": { + "200": 0.31111111111111106 + } + }, + "healthAnnotations": {} + } + } +} diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/istio-system/apps.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/istio-system/apps.json new file mode 100644 index 0000000000..ff716297c3 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/istio-system/apps.json @@ -0,0 +1,223 @@ +{ + "namespace": { + "name": "bookinfo", + "cluster": "", + "isAmbient": false, + "labels": null, + "annotations": null + }, + "cluster": "", + "applications": [ + { + "name": "details", + "cluster": "Kubernetes", + "istioSidecar": true, + "istioAmbient": false, + "labels": { + "app": "details", + "service": "details", + "version": "v1" + }, + "istioReferences": [ + { + "objectType": "Gateway", + "name": "bookinfo-gateway", + "namespace": "bookinfo", + "cluster": "" + } + ], + "health": { + "workloadStatuses": [ + { + "name": "details-v1", + "desiredReplicas": 1, + "currentReplicas": 1, + "availableReplicas": 1, + "syncedProxies": 1 + } + ], + "requests": { + "inbound": { + "http": { + "200": 0.9999999999999999 + } + }, + "outbound": {}, + "healthAnnotations": {} + } + } + }, + { + "name": "kiali-traffic-generator", + "cluster": "Kubernetes", + "istioSidecar": true, + "istioAmbient": false, + "labels": { + "app": "kiali-traffic-generator", + "kiali-test": "traffic-generator" + }, + "istioReferences": [], + "health": { + "workloadStatuses": [ + { + "name": "kiali-traffic-generator", + "desiredReplicas": 1, + "currentReplicas": 1, + "availableReplicas": 1, + "syncedProxies": 1 + } + ], + "requests": { + "inbound": {}, + "outbound": {}, + "healthAnnotations": {} + } + } + }, + { + "name": "productpage", + "cluster": "Kubernetes", + "istioSidecar": true, + "istioAmbient": false, + "labels": { + "app": "productpage", + "service": "productpage", + "version": "v1" + }, + "istioReferences": [ + { + "objectType": "VirtualService", + "name": "bookinfo", + "namespace": "bookinfo", + "cluster": "" + }, + { + "objectType": "Gateway", + "name": "bookinfo-gateway", + "namespace": "bookinfo", + "cluster": "" + } + ], + "health": { + "workloadStatuses": [ + { + "name": "productpage-v1", + "desiredReplicas": 1, + "currentReplicas": 1, + "availableReplicas": 1, + "syncedProxies": 1 + } + ], + "requests": { + "inbound": { + "http": { + "200": 0.9999999999999999 + } + }, + "outbound": { + "http": { + "200": 1.9999999999999998 + } + }, + "healthAnnotations": {} + } + } + }, + { + "name": "ratings", + "cluster": "Kubernetes", + "istioSidecar": true, + "istioAmbient": false, + "labels": { + "app": "ratings", + "service": "ratings", + "version": "v1" + }, + "istioReferences": [ + { + "objectType": "Gateway", + "name": "bookinfo-gateway", + "namespace": "bookinfo", + "cluster": "" + } + ], + "health": { + "workloadStatuses": [ + { + "name": "ratings-v1", + "desiredReplicas": 1, + "currentReplicas": 1, + "availableReplicas": 1, + "syncedProxies": 1 + } + ], + "requests": { + "inbound": { + "http": { + "200": 0.6444444444444444 + } + }, + "outbound": {}, + "healthAnnotations": {} + } + } + }, + { + "name": "reviews", + "cluster": "Kubernetes", + "istioSidecar": true, + "istioAmbient": false, + "labels": { + "app": "reviews", + "service": "reviews", + "version": "v1,v2,v3" + }, + "istioReferences": [ + { + "objectType": "Gateway", + "name": "bookinfo-gateway", + "namespace": "bookinfo", + "cluster": "" + } + ], + "health": { + "workloadStatuses": [ + { + "name": "reviews-v1", + "desiredReplicas": 1, + "currentReplicas": 1, + "availableReplicas": 1, + "syncedProxies": 1 + }, + { + "name": "reviews-v2", + "desiredReplicas": 1, + "currentReplicas": 1, + "availableReplicas": 1, + "syncedProxies": 1 + }, + { + "name": "reviews-v3", + "desiredReplicas": 1, + "currentReplicas": 1, + "availableReplicas": 1, + "syncedProxies": 1 + } + ], + "requests": { + "inbound": { + "http": { + "200": 1.0222222222222221 + } + }, + "outbound": { + "http": { + "200": 0.5999999999999999 + } + }, + "healthAnnotations": {} + } + } + } + ] +} diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/istio-system/apps/istio_egressgateway.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/istio-system/apps/istio_egressgateway.json new file mode 100644 index 0000000000..204575589f --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/istio-system/apps/istio_egressgateway.json @@ -0,0 +1,63 @@ +{ + "namespace": { + "name": "istio-system", + "cluster": "Kubernetes", + "isAmbient": false, + "labels": { + "kubernetes.io/metadata.name": "istio-system", + "topology.istio.io/network": "" + }, + "annotations": null + }, + "name": "istio-egressgateway", + "cluster": "Kubernetes", + "workloads": [ + { + "workloadName": "istio-egressgateway", + "istioSidecar": false, + "istioAmbient": false, + "labels": { + "app": "istio-egressgateway", + "chart": "gateways", + "heritage": "Tiller", + "install.operator.istio.io/owning-resource": "unknown", + "istio": "egressgateway", + "istio.io/rev": "default", + "operator.istio.io/component": "EgressGateways", + "release": "istio", + "service.istio.io/canonical-name": "istio-egressgateway", + "service.istio.io/canonical-revision": "latest", + "sidecar.istio.io/inject": "false" + }, + "serviceAccountNames": ["istio-egressgateway-service-account"] + } + ], + "serviceNames": ["istio-egressgateway"], + "runtimes": [ + { + "name": "", + "dashboardRefs": [ + { + "template": "envoy", + "title": "Envoy Metrics" + } + ] + } + ], + "health": { + "workloadStatuses": [ + { + "name": "istio-egressgateway", + "desiredReplicas": 1, + "currentReplicas": 1, + "availableReplicas": 1, + "syncedProxies": -1 + } + ], + "requests": { + "inbound": {}, + "outbound": {}, + "healthAnnotations": {} + } + } +} diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/istio-system/apps/istio_ingressgateway.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/istio-system/apps/istio_ingressgateway.json new file mode 100644 index 0000000000..d3bf9e451a --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/istio-system/apps/istio_ingressgateway.json @@ -0,0 +1,67 @@ +{ + "namespace": { + "name": "istio-system", + "cluster": "Kubernetes", + "isAmbient": false, + "labels": { + "kubernetes.io/metadata.name": "istio-system", + "topology.istio.io/network": "" + }, + "annotations": null + }, + "name": "istio-ingressgateway", + "cluster": "Kubernetes", + "workloads": [ + { + "workloadName": "istio-ingressgateway", + "istioSidecar": false, + "istioAmbient": false, + "labels": { + "app": "istio-ingressgateway", + "chart": "gateways", + "heritage": "Tiller", + "install.operator.istio.io/owning-resource": "unknown", + "istio": "ingressgateway", + "istio.io/rev": "default", + "operator.istio.io/component": "IngressGateways", + "release": "istio", + "service.istio.io/canonical-name": "istio-ingressgateway", + "service.istio.io/canonical-revision": "latest", + "sidecar.istio.io/inject": "false" + }, + "serviceAccountNames": ["istio-ingressgateway-service-account"] + } + ], + "serviceNames": ["istio-ingressgateway"], + "runtimes": [ + { + "name": "", + "dashboardRefs": [ + { + "template": "envoy", + "title": "Envoy Metrics" + } + ] + } + ], + "health": { + "workloadStatuses": [ + { + "name": "istio-ingressgateway", + "desiredReplicas": 1, + "currentReplicas": 1, + "availableReplicas": 1, + "syncedProxies": -1 + } + ], + "requests": { + "inbound": {}, + "outbound": { + "http": { + "200": 0.9999999999999999 + } + }, + "healthAnnotations": {} + } + } +} diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/istio-system/apps/istiod.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/istio-system/apps/istiod.json new file mode 100644 index 0000000000..39fa8288ed --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/istio-system/apps/istiod.json @@ -0,0 +1,58 @@ +{ + "namespace": { + "name": "istio-system", + "cluster": "Kubernetes", + "isAmbient": false, + "labels": { + "kubernetes.io/metadata.name": "istio-system", + "topology.istio.io/network": "" + }, + "annotations": null + }, + "name": "istiod", + "cluster": "Kubernetes", + "workloads": [ + { + "workloadName": "istiod", + "istioSidecar": false, + "istioAmbient": false, + "labels": { + "app": "istiod", + "install.operator.istio.io/owning-resource": "unknown", + "istio": "pilot", + "istio.io/rev": "default", + "operator.istio.io/component": "Pilot", + "sidecar.istio.io/inject": "false" + }, + "serviceAccountNames": ["istiod"] + } + ], + "serviceNames": ["istiod"], + "runtimes": [ + { + "name": "Go", + "dashboardRefs": [ + { + "template": "go", + "title": "Go Metrics" + } + ] + } + ], + "health": { + "workloadStatuses": [ + { + "name": "istiod", + "desiredReplicas": 1, + "currentReplicas": 1, + "availableReplicas": 1, + "syncedProxies": -1 + } + ], + "requests": { + "inbound": {}, + "outbound": {}, + "healthAnnotations": {} + } + } +} diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/istio-system/apps/jaeger.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/istio-system/apps/jaeger.json new file mode 100644 index 0000000000..8db9638c6c --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/istio-system/apps/jaeger.json @@ -0,0 +1,54 @@ +{ + "namespace": { + "name": "istio-system", + "cluster": "Kubernetes", + "isAmbient": false, + "labels": { + "kubernetes.io/metadata.name": "istio-system", + "topology.istio.io/network": "" + }, + "annotations": null + }, + "name": "jaeger", + "cluster": "Kubernetes", + "workloads": [ + { + "workloadName": "jaeger", + "istioSidecar": false, + "istioAmbient": false, + "labels": { + "app": "jaeger", + "sidecar.istio.io/inject": "false" + }, + "serviceAccountNames": ["default"] + } + ], + "serviceNames": ["tracing", "zipkin", "jaeger-collector"], + "runtimes": [ + { + "name": "Go", + "dashboardRefs": [ + { + "template": "go", + "title": "Go Metrics" + } + ] + } + ], + "health": { + "workloadStatuses": [ + { + "name": "jaeger", + "desiredReplicas": 1, + "currentReplicas": 1, + "availableReplicas": 1, + "syncedProxies": -1 + } + ], + "requests": { + "inbound": {}, + "outbound": {}, + "healthAnnotations": {} + } + } +} diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/istio-system/apps/kiali.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/istio-system/apps/kiali.json new file mode 100644 index 0000000000..a8269cb50b --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/istio-system/apps/kiali.json @@ -0,0 +1,70 @@ +{ + "namespace": { + "name": "istio-system", + "cluster": "Kubernetes", + "isAmbient": false, + "labels": { + "kubernetes.io/metadata.name": "istio-system", + "topology.istio.io/network": "" + }, + "annotations": null + }, + "name": "kiali", + "cluster": "Kubernetes", + "workloads": [ + { + "workloadName": "kiali", + "istioSidecar": false, + "istioAmbient": false, + "labels": { + "app": "kiali", + "app.kubernetes.io/instance": "kiali", + "app.kubernetes.io/managed-by": "Helm", + "app.kubernetes.io/name": "kiali", + "app.kubernetes.io/part-of": "kiali", + "app.kubernetes.io/version": "v1.79.0", + "helm.sh/chart": "kiali-server-1.79.0", + "sidecar.istio.io/inject": "false", + "version": "v1.79.0" + }, + "serviceAccountNames": ["kiali"] + } + ], + "serviceNames": ["kiali"], + "runtimes": [ + { + "name": "Go", + "dashboardRefs": [ + { + "template": "go", + "title": "Go Metrics" + } + ] + }, + { + "name": "", + "dashboardRefs": [ + { + "template": "kiali", + "title": "Kiali Internal Metrics" + } + ] + } + ], + "health": { + "workloadStatuses": [ + { + "name": "kiali", + "desiredReplicas": 1, + "currentReplicas": 1, + "availableReplicas": 1, + "syncedProxies": -1 + } + ], + "requests": { + "inbound": {}, + "outbound": {}, + "healthAnnotations": {} + } + } +} diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/istio-system/dashboard.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/istio-system/dashboard.json new file mode 100644 index 0000000000..bb7c03036a --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/istio-system/dashboard.json @@ -0,0 +1,347 @@ +{ + "name": "", + "title": "Inbound Metrics", + "charts": [ + { + "name": "Request volume", + "unit": "ops", + "spans": 3, + "startCollapsed": false, + "metrics": [ + { + "labels": { + "source_canonical_service": "productpage", + "source_workload_namespace": "bookinfo" + }, + "datapoints": [ + [1710323970, "1"], + [1710324000, "1"], + [1710324030, "1"], + [1710324060, "1.0000666711114075"], + [1710324090, "0.9999333377774815"], + [1710324120, "1"], + [1710324150, "1"], + [1710324180, "0.9999333377774815"], + [1710324210, "0.9999333377774815"], + [1710324240, "1.0000666711114075"], + [1710324270, "1.0000666711114075"], + [1710324300, "1"], + [1710324330, "1"], + [1710324360, "1"], + [1710324390, "1.0000666711114075"], + [1710324420, "1"], + [1710324450, "1.0000666711114075"], + [1710324480, "0.9999333377774815"], + [1710324510, "1.0000666711114075"], + [1710324540, "1"], + [1710324570, "0.9999333377774815"] + ], + "name": "request_count" + } + ], + "xAxis": null, + "error": "" + }, + { + "name": "Request duration", + "unit": "seconds", + "spans": 3, + "startCollapsed": false, + "metrics": [ + { + "labels": { + "source_canonical_service": "productpage", + "source_workload_namespace": "bookinfo" + }, + "datapoints": [ + [1710323970, "0.0004166666666666667"], + [1710324000, "0.00006999999999970897"], + [1710324030, "0.00014000000000014551"], + [1710324060, "0.00014000000000014554"], + [1710324090, "0.0002099999999998545"], + [1710324120, "0.00006999999999995149"], + [1710324150, "0.00020999999999985448"], + [1710324180, "0.00006999999999995149"], + [1710324210, "0.000489999999999903"], + [1710324240, "0.0005600000000000971"], + [1710324270, "0.00028000000000004855"], + [1710324300, "0.000210000000000097"], + [1710324330, "0.0004900000000001455"], + [1710324360, "0.00006999999999995149"], + [1710324390, "0.00006999999999995149"], + [1710324420, "0.0003466666666667152"], + [1710324450, "0.00021000000000009702"], + [1710324480, "0.000560000000000097"], + [1710324510, "0.0005600000000000971"], + [1710324540, "0.00048666666666637566"], + [1710324570, "0.0005928571428573509"] + ], + "stat": "avg", + "name": "request_duration_millis" + } + ], + "xAxis": null, + "error": "" + }, + { + "name": "Request size", + "unit": "bytes", + "spans": 3, + "startCollapsed": false, + "metrics": [ + { + "labels": { + "source_canonical_service": "productpage", + "source_workload_namespace": "bookinfo" + }, + "datapoints": [ + [1710323970, "1250"], + [1710324000, "1250"], + [1710324030, "1250"], + [1710324060, "1250"], + [1710324090, "1249.9999999999998"], + [1710324120, "1250"], + [1710324150, "1250"], + [1710324180, "1249.9999999999998"], + [1710324210, "1249.9999999999998"], + [1710324240, "1250"], + [1710324270, "1250"], + [1710324300, "1250"], + [1710324330, "1250"], + [1710324360, "1250"], + [1710324390, "1250"], + [1710324420, "1250"], + [1710324450, "1250"], + [1710324480, "1249.9999999999998"], + [1710324510, "1250"], + [1710324540, "1250"], + [1710324570, "1250"] + ], + "stat": "avg", + "name": "request_size" + } + ], + "xAxis": null, + "error": "" + }, + { + "name": "Response size", + "unit": "bytes", + "spans": 3, + "startCollapsed": false, + "metrics": [ + { + "labels": { + "source_canonical_service": "productpage", + "source_workload_namespace": "bookinfo" + }, + "datapoints": [ + [1710323970, "1150"], + [1710324000, "1150"], + [1710324030, "1150"], + [1710324060, "1150"], + [1710324090, "1149.9999999999998"], + [1710324120, "1150"], + [1710324150, "1150"], + [1710324180, "1149.9999999999998"], + [1710324210, "1149.9999999999998"], + [1710324240, "1150"], + [1710324270, "1150"], + [1710324300, "1150"], + [1710324330, "1150"], + [1710324360, "1150"], + [1710324390, "1150"], + [1710324420, "1150"], + [1710324450, "1150"], + [1710324480, "1149.9999999999998"], + [1710324510, "1150"], + [1710324540, "1150"], + [1710324570, "1150"] + ], + "stat": "avg", + "name": "response_size" + } + ], + "xAxis": null, + "error": "" + }, + { + "name": "Request throughput", + "unit": "bitrate", + "spans": 3, + "startCollapsed": false, + "metrics": [ + { + "labels": { + "source_canonical_service": "productpage", + "source_workload_namespace": "bookinfo" + }, + "datapoints": [ + [1710323970, "10000"], + [1710324000, "10000"], + [1710324030, "10000"], + [1710324060, "10000.666711114074"], + [1710324090, "9999.333377774814"], + [1710324120, "10000"], + [1710324150, "10000"], + [1710324180, "9999.333377774814"], + [1710324210, "9999.333377774814"], + [1710324240, "10000.666711114074"], + [1710324270, "10000.666711114074"], + [1710324300, "10000"], + [1710324330, "10000"], + [1710324360, "10000"], + [1710324390, "10000.666711114074"], + [1710324420, "10000"], + [1710324450, "10000.666711114074"], + [1710324480, "9999.333377774814"], + [1710324510, "10000.666711114074"], + [1710324540, "10000"], + [1710324570, "9332.711152589827"] + ], + "name": "request_throughput" + } + ], + "xAxis": null, + "error": "" + }, + { + "name": "Response throughput", + "unit": "bitrate", + "spans": 3, + "startCollapsed": false, + "metrics": [ + { + "labels": { + "source_canonical_service": "productpage", + "source_workload_namespace": "bookinfo" + }, + "datapoints": [ + [1710323970, "9200"], + [1710324000, "9200"], + [1710324030, "9200"], + [1710324060, "9200.61337422495"], + [1710324090, "9199.386707552829"], + [1710324120, "9200"], + [1710324150, "9200"], + [1710324180, "9199.386707552829"], + [1710324210, "9199.386707552829"], + [1710324240, "9200.61337422495"], + [1710324270, "9200.61337422495"], + [1710324300, "9200"], + [1710324330, "9200"], + [1710324360, "9200"], + [1710324390, "9200.61337422495"], + [1710324420, "9200"], + [1710324450, "9200.61337422495"], + [1710324480, "9199.386707552829"], + [1710324510, "9200.61337422495"], + [1710324540, "9200"], + [1710324570, "8586.09426038264"] + ], + "name": "response_throughput" + } + ], + "xAxis": null, + "error": "" + }, + { + "name": "gRPC received", + "unit": "msgrate", + "spans": 3, + "startCollapsed": false, + "metrics": [], + "xAxis": null, + "error": "" + }, + { + "name": "gRPC sent", + "unit": "msgrate", + "spans": 3, + "startCollapsed": false, + "metrics": [], + "xAxis": null, + "error": "" + }, + { + "name": "TCP opened", + "unit": "connrate", + "spans": 3, + "startCollapsed": false, + "metrics": [], + "xAxis": null, + "error": "" + }, + { + "name": "TCP closed", + "unit": "connrate", + "spans": 3, + "startCollapsed": false, + "metrics": [], + "xAxis": null, + "error": "" + }, + { + "name": "TCP received", + "unit": "bitrate", + "spans": 3, + "startCollapsed": false, + "metrics": [], + "xAxis": null, + "error": "" + }, + { + "name": "TCP sent", + "unit": "bitrate", + "spans": 3, + "startCollapsed": false, + "metrics": [], + "xAxis": null, + "error": "" + } + ], + "aggregations": [ + { + "label": "destination_canonical_revision", + "displayName": "Local version", + "singleSelection": false + }, + { + "label": "source_workload_namespace", + "displayName": "Remote namespace", + "singleSelection": false + }, + { + "label": "source_canonical_service", + "displayName": "Remote app", + "singleSelection": false + }, + { + "label": "source_canonical_revision", + "displayName": "Remote version", + "singleSelection": false + }, + { + "label": "response_code", + "displayName": "Response code", + "singleSelection": false + }, + { + "label": "grpc_response_status", + "displayName": "GRPC status", + "singleSelection": false + }, + { + "label": "response_flags", + "displayName": "Response flags", + "singleSelection": false + }, + { + "label": "connection_security_policy", + "displayName": "Connection Security Policy", + "singleSelection": false + } + ], + "externalLinks": null, + "rows": 3 +} diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/istio-system/health/app.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/istio-system/health/app.json new file mode 100644 index 0000000000..55a1b7dec6 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/istio-system/health/app.json @@ -0,0 +1,114 @@ +{ + "grafana": { + "workloadStatuses": [ + { + "name": "grafana", + "desiredReplicas": 1, + "currentReplicas": 1, + "availableReplicas": 1, + "syncedProxies": -1 + } + ], + "requests": { + "inbound": {}, + "outbound": {}, + "healthAnnotations": {} + } + }, + "istio-egressgateway": { + "workloadStatuses": [ + { + "name": "istio-egressgateway", + "desiredReplicas": 1, + "currentReplicas": 1, + "availableReplicas": 1, + "syncedProxies": -1 + } + ], + "requests": { + "inbound": {}, + "outbound": {}, + "healthAnnotations": {} + } + }, + "istio-ingressgateway": { + "workloadStatuses": [ + { + "name": "istio-ingressgateway", + "desiredReplicas": 1, + "currentReplicas": 1, + "availableReplicas": 1, + "syncedProxies": -1 + } + ], + "requests": { + "inbound": {}, + "outbound": {}, + "healthAnnotations": {} + } + }, + "istiod": { + "workloadStatuses": [ + { + "name": "istiod", + "desiredReplicas": 1, + "currentReplicas": 1, + "availableReplicas": 1, + "syncedProxies": -1 + } + ], + "requests": { + "inbound": {}, + "outbound": {}, + "healthAnnotations": {} + } + }, + "jaeger": { + "workloadStatuses": [ + { + "name": "jaeger", + "desiredReplicas": 1, + "currentReplicas": 1, + "availableReplicas": 1, + "syncedProxies": -1 + } + ], + "requests": { + "inbound": {}, + "outbound": {}, + "healthAnnotations": {} + } + }, + "kiali": { + "workloadStatuses": [ + { + "name": "kiali", + "desiredReplicas": 1, + "currentReplicas": 1, + "availableReplicas": 1, + "syncedProxies": -1 + } + ], + "requests": { + "inbound": {}, + "outbound": {}, + "healthAnnotations": {} + } + }, + "prometheus": { + "workloadStatuses": [ + { + "name": "prometheus", + "desiredReplicas": 1, + "currentReplicas": 1, + "availableReplicas": 1, + "syncedProxies": -1 + } + ], + "requests": { + "inbound": {}, + "outbound": {}, + "healthAnnotations": {} + } + } +} diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/istio-system/health/service.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/istio-system/health/service.json new file mode 100644 index 0000000000..af1aa51acc --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/istio-system/health/service.json @@ -0,0 +1,65 @@ +{ + "grafana": { + "requests": { + "inbound": {}, + "outbound": {}, + "healthAnnotations": {} + } + }, + "istio-egressgateway": { + "requests": { + "inbound": {}, + "outbound": {}, + "healthAnnotations": {} + } + }, + "istio-ingressgateway": { + "requests": { + "inbound": {}, + "outbound": {}, + "healthAnnotations": {} + } + }, + "istiod": { + "requests": { + "inbound": {}, + "outbound": {}, + "healthAnnotations": {} + } + }, + "jaeger-collector": { + "requests": { + "inbound": {}, + "outbound": {}, + "healthAnnotations": {} + } + }, + "kiali": { + "requests": { + "inbound": {}, + "outbound": {}, + "healthAnnotations": {} + } + }, + "prometheus": { + "requests": { + "inbound": {}, + "outbound": {}, + "healthAnnotations": {} + } + }, + "tracing": { + "requests": { + "inbound": {}, + "outbound": {}, + "healthAnnotations": {} + } + }, + "zipkin": { + "requests": { + "inbound": {}, + "outbound": {}, + "healthAnnotations": {} + } + } +} diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/istio-system/health/workload.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/istio-system/health/workload.json new file mode 100644 index 0000000000..3855649f3b --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/istio-system/health/workload.json @@ -0,0 +1,100 @@ +{ + "grafana": { + "workloadStatus": { + "name": "grafana", + "desiredReplicas": 1, + "currentReplicas": 1, + "availableReplicas": 1, + "syncedProxies": -1 + }, + "requests": { + "inbound": {}, + "outbound": {}, + "healthAnnotations": {} + } + }, + "istio-egressgateway": { + "workloadStatus": { + "name": "istio-egressgateway", + "desiredReplicas": 1, + "currentReplicas": 1, + "availableReplicas": 1, + "syncedProxies": -1 + }, + "requests": { + "inbound": {}, + "outbound": {}, + "healthAnnotations": {} + } + }, + "istio-ingressgateway": { + "workloadStatus": { + "name": "istio-ingressgateway", + "desiredReplicas": 1, + "currentReplicas": 1, + "availableReplicas": 1, + "syncedProxies": -1 + }, + "requests": { + "inbound": {}, + "outbound": {}, + "healthAnnotations": {} + } + }, + "istiod": { + "workloadStatus": { + "name": "istiod", + "desiredReplicas": 1, + "currentReplicas": 1, + "availableReplicas": 1, + "syncedProxies": -1 + }, + "requests": { + "inbound": {}, + "outbound": {}, + "healthAnnotations": {} + } + }, + "jaeger": { + "workloadStatus": { + "name": "jaeger", + "desiredReplicas": 1, + "currentReplicas": 1, + "availableReplicas": 1, + "syncedProxies": -1 + }, + "requests": { + "inbound": {}, + "outbound": {}, + "healthAnnotations": {} + } + }, + "kiali": { + "workloadStatus": { + "name": "kiali", + "desiredReplicas": 1, + "currentReplicas": 1, + "availableReplicas": 1, + "syncedProxies": -1 + }, + "requests": { + "inbound": {}, + "outbound": {}, + "healthAnnotations": {} + } + }, + "prometheus": { + "workloadStatus": { + "name": "prometheus", + "desiredReplicas": 1, + "currentReplicas": 1, + "availableReplicas": 1, + "syncedProxies": -1 + }, + "requests": { + "inbound": {}, + "outbound": {}, + "healthAnnotations": {} + } + } +} diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/istio-system/istio_config.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/istio-system/istio_config.json new file mode 100644 index 0000000000..12755e2b56 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/istio-system/istio_config.json @@ -0,0 +1,35 @@ +{ + "namespace": { + "name": "istio-system", + "cluster": "", + "isAmbient": false, + "labels": null, + "annotations": null + }, + "destinationRules": [], + "envoyFilters": [], + "gateways": [], + "serviceEntries": [], + "sidecars": [], + "virtualServices": [], + "workloadEntries": [], + "workloadGroups": [], + "wasmPlugins": [], + "telemetries": [], + "k8sGateways": [], + "k8sHTTPRoutes": [], + "authorizationPolicies": [], + "peerAuthentications": [], + "requestAuthentications": [], + "validations": { + "gateway": { + "bookinfo-gateway.bookinfo": { + "name": "bookinfo-gateway", + "objectType": "gateway", + "valid": true, + "checks": [], + "references": null + } + } + } +} diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/istio-system/metrics/inbound/metrics_inbound_120.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/istio-system/metrics/inbound/metrics_inbound_120.json new file mode 100644 index 0000000000..680a665149 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/istio-system/metrics/inbound/metrics_inbound_120.json @@ -0,0 +1,100 @@ +{ + "container_cpu_usage_seconds_total": [ + { + "labels": {}, + "datapoints": [ + [1697024040, "0.002755125239989775"], + [1697024070, "0.0028308143301925487"], + [1697024100, "0.0027977164583027226"], + [1697024130, "0.017605061010355652"], + [1697024160, "0.0016924311084703827"] + ], + "name": "container_cpu_usage_seconds_total" + } + ], + "container_memory_working_set_bytes": [ + { + "labels": { + "__name__": "container_memory_working_set_bytes", + "beta_kubernetes_io_arch": "amd64", + "beta_kubernetes_io_os": "linux", + "container": "discovery", + "id": "/kubepods.slice/kubepods-burstable.slice/kubepods-burstable-pod86ae28e5_296a_4c6f_81ae_e3102580203a.slice/crio-311ddafa211336c162b5aeb91d70fbd048f94c9f18142285c0473eae845da2de.scope", + "image": "gcr.io/istio-release/pilot:1.18.2", + "instance": "crc-8cf2w-master-0", + "job": "kubernetes-nodes-cadvisor", + "kubernetes_io_arch": "amd64", + "kubernetes_io_hostname": "crc-8cf2w-master-0", + "kubernetes_io_os": "linux", + "name": "k8s_discovery_istiod-7548d4ff85-9czcn_istio-system_86ae28e5-296a-4c6f-81ae-e3102580203a_2", + "namespace": "istio-system", + "node_openshift_io_os_id": "rhcos", + "pod": "istiod-7548d4ff85-9czcn", + "topology_hostpath_csi_node": "crc-8cf2w-master-0" + }, + "datapoints": [ + [1697024040, "145.055744"], + [1697024070, "143.683584"], + [1697024100, "143.683584"], + [1697024130, "143.679488"], + [1697024160, "143.683584"] + ], + "name": "container_memory_working_set_bytes" + } + ], + "pilot_proxy_convergence_time": [ + { + "labels": {}, + "datapoints": [ + [1697024040, "NaN"], + [1697024070, "NaN"], + [1697024100, "NaN"], + [1697024130, "NaN"], + [1697024160, "NaN"] + ], + "stat": "avg", + "name": "pilot_proxy_convergence_time" + } + ], + "process_cpu_seconds_total": [ + { + "labels": {}, + "datapoints": [ + [1697024040, "0.0013333333333333049"], + [1697024070, "0.0013333333333333049"], + [1697024100, "0.002000000000000076"], + [1697024130, "0.002000000000000076"], + [1697024160, "0.0013333333333333049"] + ], + "name": "process_cpu_seconds_total" + } + ], + "process_resident_memory_bytes": [ + { + "labels": { + "__name__": "process_resident_memory_bytes", + "app": "istiod", + "install_operator_istio_io_owning_resource": "unknown", + "instance": "10.217.0.34:15014", + "istio": "pilot", + "istio_io_rev": "default", + "job": "kubernetes-pods", + "namespace": "istio-system", + "operator_istio_io_component": "Pilot", + "pod": "istiod-7548d4ff85-9czcn", + "pod_template_hash": "7548d4ff85", + "sidecar_istio_io_inject": "false" + }, + "datapoints": [ + [1697024040, "165.003264"], + [1697024070, "163.6352"], + [1697024100, "163.6352"], + [1697024130, "163.6352"], + [1697024160, "163.6352"] + ], + "name": "process_resident_memory_bytes" + } + ], + "request_count": null, + "request_error_count": null +} diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/istio-system/metrics/inbound/metrics_inbound_1800.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/istio-system/metrics/inbound/metrics_inbound_1800.json new file mode 100644 index 0000000000..12112e1412 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/istio-system/metrics/inbound/metrics_inbound_1800.json @@ -0,0 +1,130 @@ +{ + "container_cpu_usage_seconds_total": [ + { + "labels": {}, + "datapoints": [ + [1697022360, "0.004423229563643965"], + [1697022540, "0.002818351158753509"], + [1697022720, "0.0033681828956744772"], + [1697022900, "0.004075735098607482"], + [1697023080, "0.004858861411539032"], + [1697023260, "0.003327461760086153"], + [1697023440, "0.0029723897808957888"], + [1697023620, "0.005595762889521851"], + [1697023800, "0.0034129233521214435"], + [1697023980, "0.0034297933448419722"], + [1697024160, "0.005304226914689294"] + ], + "name": "container_cpu_usage_seconds_total" + } + ], + "container_memory_working_set_bytes": [ + { + "labels": { + "__name__": "container_memory_working_set_bytes", + "beta_kubernetes_io_arch": "amd64", + "beta_kubernetes_io_os": "linux", + "container": "discovery", + "id": "/kubepods.slice/kubepods-burstable.slice/kubepods-burstable-pod86ae28e5_296a_4c6f_81ae_e3102580203a.slice/crio-311ddafa211336c162b5aeb91d70fbd048f94c9f18142285c0473eae845da2de.scope", + "image": "gcr.io/istio-release/pilot:1.18.2", + "instance": "crc-8cf2w-master-0", + "job": "kubernetes-nodes-cadvisor", + "kubernetes_io_arch": "amd64", + "kubernetes_io_hostname": "crc-8cf2w-master-0", + "kubernetes_io_os": "linux", + "name": "k8s_discovery_istiod-7548d4ff85-9czcn_istio-system_86ae28e5-296a-4c6f-81ae-e3102580203a_2", + "namespace": "istio-system", + "node_openshift_io_os_id": "rhcos", + "pod": "istiod-7548d4ff85-9czcn", + "topology_hostpath_csi_node": "crc-8cf2w-master-0" + }, + "datapoints": [ + [1697022360, "145.154048"], + [1697022540, "143.589376"], + [1697022720, "146.763776"], + [1697022900, "155.20972799999998"], + [1697023080, "152.662016"], + [1697023260, "148.979712"], + [1697023440, "146.354176"], + [1697023620, "144.191488"], + [1697023800, "146.18624"], + [1697023980, "144.396288"], + [1697024160, "143.683584"] + ], + "name": "container_memory_working_set_bytes" + } + ], + "pilot_proxy_convergence_time": [ + { + "labels": {}, + "datapoints": [ + [1697022360, "NaN"], + [1697022540, "NaN"], + [1697022720, "NaN"], + [1697022900, "NaN"], + [1697023080, "NaN"], + [1697023260, "NaN"], + [1697023440, "NaN"], + [1697023620, "NaN"], + [1697023800, "NaN"], + [1697023980, "0.00026259236363636437"], + [1697024160, "NaN"] + ], + "stat": "avg", + "name": "pilot_proxy_convergence_time" + } + ], + "process_cpu_seconds_total": [ + { + "labels": {}, + "datapoints": [ + [1697022360, "0.002242424242424248"], + [1697022540, "0.0013333333333333478"], + [1697022720, "0.0017575757575757738"], + [1697022900, "0.001999999999999989"], + [1697023080, "0.002363636363636367"], + [1697023260, "0.0016363636363636335"], + [1697023440, "0.0015757575757575635"], + [1697023620, "0.002727272727272744"], + [1697023800, "0.001757575757575752"], + [1697023980, "0.0017575757575757738"], + [1697024160, "0.002666666666666674"] + ], + "name": "process_cpu_seconds_total" + } + ], + "process_resident_memory_bytes": [ + { + "labels": { + "__name__": "process_resident_memory_bytes", + "app": "istiod", + "install_operator_istio_io_owning_resource": "unknown", + "instance": "10.217.0.34:15014", + "istio": "pilot", + "istio_io_rev": "default", + "job": "kubernetes-pods", + "namespace": "istio-system", + "operator_istio_io_component": "Pilot", + "pod": "istiod-7548d4ff85-9czcn", + "pod_template_hash": "7548d4ff85", + "sidecar_istio_io_inject": "false" + }, + "datapoints": [ + [1697022360, "165.09747199999998"], + [1697022540, "163.688448"], + [1697022720, "165.851136"], + [1697022900, "175.038464"], + [1697023080, "172.531712"], + [1697023260, "168.40704"], + [1697023440, "166.641664"], + [1697023620, "164.35609599999998"], + [1697023800, "166.244352"], + [1697023980, "164.462592"], + [1697024160, "163.6352"] + ], + "name": "process_resident_memory_bytes" + } + ], + "request_count": null, + "request_error_count": null +} diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/istio-system/metrics/inbound/metrics_inbound_300.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/istio-system/metrics/inbound/metrics_inbound_300.json new file mode 100644 index 0000000000..1b3825ca9e --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/istio-system/metrics/inbound/metrics_inbound_300.json @@ -0,0 +1,130 @@ +{ + "container_cpu_usage_seconds_total": [ + { + "labels": {}, + "datapoints": [ + [1697023860, "0.00277104088632311"], + [1697023890, "0.002440995810258295"], + [1697023920, "0.0030462017153864134"], + [1697023950, "0.0011749084878141453"], + [1697023980, "0.003215558196758648"], + [1697024010, "0.0020194318109019596"], + [1697024040, "0.002755125239989775"], + [1697024070, "0.0028308143301925487"], + [1697024100, "0.0027977164583027226"], + [1697024130, "0.017605061010355652"], + [1697024160, "0.0016924311084703827"] + ], + "name": "container_cpu_usage_seconds_total" + } + ], + "container_memory_working_set_bytes": [ + { + "labels": { + "__name__": "container_memory_working_set_bytes", + "beta_kubernetes_io_arch": "amd64", + "beta_kubernetes_io_os": "linux", + "container": "discovery", + "id": "/kubepods.slice/kubepods-burstable.slice/kubepods-burstable-pod86ae28e5_296a_4c6f_81ae_e3102580203a.slice/crio-311ddafa211336c162b5aeb91d70fbd048f94c9f18142285c0473eae845da2de.scope", + "image": "gcr.io/istio-release/pilot:1.18.2", + "instance": "crc-8cf2w-master-0", + "job": "kubernetes-nodes-cadvisor", + "kubernetes_io_arch": "amd64", + "kubernetes_io_hostname": "crc-8cf2w-master-0", + "kubernetes_io_os": "linux", + "name": "k8s_discovery_istiod-7548d4ff85-9czcn_istio-system_86ae28e5-296a-4c6f-81ae-e3102580203a_2", + "namespace": "istio-system", + "node_openshift_io_os_id": "rhcos", + "pod": "istiod-7548d4ff85-9czcn", + "topology_hostpath_csi_node": "crc-8cf2w-master-0" + }, + "datapoints": [ + [1697023860, "144.982016"], + [1697023890, "144.846848"], + [1697023920, "145.51449599999998"], + [1697023950, "144.52326399999998"], + [1697023980, "144.396288"], + [1697024010, "144.392192"], + [1697024040, "145.055744"], + [1697024070, "143.683584"], + [1697024100, "143.683584"], + [1697024130, "143.679488"], + [1697024160, "143.683584"] + ], + "name": "container_memory_working_set_bytes" + } + ], + "pilot_proxy_convergence_time": [ + { + "labels": {}, + "datapoints": [ + [1697023860, "NaN"], + [1697023890, "NaN"], + [1697023920, "NaN"], + [1697023950, "NaN"], + [1697023980, "NaN"], + [1697024010, "NaN"], + [1697024040, "NaN"], + [1697024070, "NaN"], + [1697024100, "NaN"], + [1697024130, "NaN"], + [1697024160, "NaN"] + ], + "stat": "avg", + "name": "pilot_proxy_convergence_time" + } + ], + "process_cpu_seconds_total": [ + { + "labels": {}, + "datapoints": [ + [1697023860, "0.0019999999999998387"], + [1697023890, "0.002000000000000076"], + [1697023920, "0.0013333333333333049"], + [1697023950, "0.0013333333333333049"], + [1697023980, "0.0013333333333335417"], + [1697024010, "0.0013333333333333049"], + [1697024040, "0.0013333333333333049"], + [1697024070, "0.0013333333333333049"], + [1697024100, "0.002000000000000076"], + [1697024130, "0.002000000000000076"], + [1697024160, "0.0013333333333333049"] + ], + "name": "process_cpu_seconds_total" + } + ], + "process_resident_memory_bytes": [ + { + "labels": { + "__name__": "process_resident_memory_bytes", + "app": "istiod", + "install_operator_istio_io_owning_resource": "unknown", + "instance": "10.217.0.34:15014", + "istio": "pilot", + "istio_io_rev": "default", + "job": "kubernetes-pods", + "namespace": "istio-system", + "operator_istio_io_component": "Pilot", + "pod": "istiod-7548d4ff85-9czcn", + "pod_template_hash": "7548d4ff85", + "sidecar_istio_io_inject": "false" + }, + "datapoints": [ + [1697023860, "164.769792"], + [1697023890, "164.769792"], + [1697023920, "165.58079999999998"], + [1697023950, "164.462592"], + [1697023980, "164.462592"], + [1697024010, "164.462592"], + [1697024040, "165.003264"], + [1697024070, "163.6352"], + [1697024100, "163.6352"], + [1697024130, "163.6352"], + [1697024160, "163.6352"] + ], + "name": "process_resident_memory_bytes" + } + ], + "request_count": null, + "request_error_count": null +} diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/istio-system/metrics/inbound/metrics_inbound_3600.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/istio-system/metrics/inbound/metrics_inbound_3600.json new file mode 100644 index 0000000000..6178363f65 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/istio-system/metrics/inbound/metrics_inbound_3600.json @@ -0,0 +1,115 @@ +{ + "container_cpu_usage_seconds_total": [ + { + "labels": {}, + "datapoints": [ + [1697021640, "0.0022837365589533235"], + [1697022000, "0.003630157034545756"], + [1697022360, "0.0034882143205133696"], + [1697022720, "0.003109542147831563"], + [1697023080, "0.004421874876878809"], + [1697023440, "0.0031209359563211837"], + [1697023800, "0.004399331006493985"], + [1697024160, "0.004336317402418327"] + ], + "name": "container_cpu_usage_seconds_total" + } + ], + "container_memory_working_set_bytes": [ + { + "labels": { + "__name__": "container_memory_working_set_bytes", + "beta_kubernetes_io_arch": "amd64", + "beta_kubernetes_io_os": "linux", + "container": "discovery", + "id": "/kubepods.slice/kubepods-burstable.slice/kubepods-burstable-pod86ae28e5_296a_4c6f_81ae_e3102580203a.slice/crio-311ddafa211336c162b5aeb91d70fbd048f94c9f18142285c0473eae845da2de.scope", + "image": "gcr.io/istio-release/pilot:1.18.2", + "instance": "crc-8cf2w-master-0", + "job": "kubernetes-nodes-cadvisor", + "kubernetes_io_arch": "amd64", + "kubernetes_io_hostname": "crc-8cf2w-master-0", + "kubernetes_io_os": "linux", + "name": "k8s_discovery_istiod-7548d4ff85-9czcn_istio-system_86ae28e5-296a-4c6f-81ae-e3102580203a_2", + "namespace": "istio-system", + "node_openshift_io_os_id": "rhcos", + "pod": "istiod-7548d4ff85-9czcn", + "topology_hostpath_csi_node": "crc-8cf2w-master-0" + }, + "datapoints": [ + [1697021640, "143.09376"], + [1697022000, "145.137664"], + [1697022360, "145.154048"], + [1697022720, "146.763776"], + [1697023080, "152.662016"], + [1697023440, "146.354176"], + [1697023800, "146.18624"], + [1697024160, "143.683584"] + ], + "name": "container_memory_working_set_bytes" + } + ], + "pilot_proxy_convergence_time": [ + { + "labels": {}, + "datapoints": [ + [1697021640, "NaN"], + [1697022000, "NaN"], + [1697022360, "NaN"], + [1697022720, "NaN"], + [1697023080, "0.00021478099999999977"], + [1697023440, "NaN"], + [1697023800, "NaN"], + [1697024160, "0.0002625923636363643"] + ], + "stat": "avg", + "name": "pilot_proxy_convergence_time" + } + ], + "process_cpu_seconds_total": [ + { + "labels": {}, + "datapoints": [ + [1697021640, "0.001045284722222216"], + [1697022000, "0.0018260869565217364"], + [1697022360, "0.0017971014492753651"], + [1697022720, "0.0015652173913043557"], + [1697023080, "0.002173913043478261"], + [1697023440, "0.0015942028985507267"], + [1697023800, "0.002202898550724642"], + [1697024160, "0.002202898550724642"] + ], + "name": "process_cpu_seconds_total" + } + ], + "process_resident_memory_bytes": [ + { + "labels": { + "__name__": "process_resident_memory_bytes", + "app": "istiod", + "install_operator_istio_io_owning_resource": "unknown", + "instance": "10.217.0.34:15014", + "istio": "pilot", + "istio_io_rev": "default", + "job": "kubernetes-pods", + "namespace": "istio-system", + "operator_istio_io_component": "Pilot", + "pod": "istiod-7548d4ff85-9czcn", + "pod_template_hash": "7548d4ff85", + "sidecar_istio_io_inject": "false" + }, + "datapoints": [ + [1697021640, "163.19692799999999"], + [1697022000, "165.09747199999998"], + [1697022360, "165.09747199999998"], + [1697022720, "165.851136"], + [1697023080, "172.531712"], + [1697023440, "166.641664"], + [1697023800, "166.244352"], + [1697024160, "163.6352"] + ], + "name": "process_resident_memory_bytes" + } + ], + "request_count": null, + "request_error_count": null +} diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/istio-system/metrics/inbound/metrics_inbound_60.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/istio-system/metrics/inbound/metrics_inbound_60.json new file mode 100644 index 0000000000..74a54ee770 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/istio-system/metrics/inbound/metrics_inbound_60.json @@ -0,0 +1,90 @@ +{ + "container_cpu_usage_seconds_total": [ + { + "labels": {}, + "datapoints": [ + [1697024100, "0.0027977164583027226"], + [1697024130, "0.017605061010355652"], + [1697024160, "0.0016924311084703827"] + ], + "name": "container_cpu_usage_seconds_total" + } + ], + "container_memory_working_set_bytes": [ + { + "labels": { + "__name__": "container_memory_working_set_bytes", + "beta_kubernetes_io_arch": "amd64", + "beta_kubernetes_io_os": "linux", + "container": "discovery", + "id": "/kubepods.slice/kubepods-burstable.slice/kubepods-burstable-pod86ae28e5_296a_4c6f_81ae_e3102580203a.slice/crio-311ddafa211336c162b5aeb91d70fbd048f94c9f18142285c0473eae845da2de.scope", + "image": "gcr.io/istio-release/pilot:1.18.2", + "instance": "crc-8cf2w-master-0", + "job": "kubernetes-nodes-cadvisor", + "kubernetes_io_arch": "amd64", + "kubernetes_io_hostname": "crc-8cf2w-master-0", + "kubernetes_io_os": "linux", + "name": "k8s_discovery_istiod-7548d4ff85-9czcn_istio-system_86ae28e5-296a-4c6f-81ae-e3102580203a_2", + "namespace": "istio-system", + "node_openshift_io_os_id": "rhcos", + "pod": "istiod-7548d4ff85-9czcn", + "topology_hostpath_csi_node": "crc-8cf2w-master-0" + }, + "datapoints": [ + [1697024100, "143.683584"], + [1697024130, "143.679488"], + [1697024160, "143.683584"] + ], + "name": "container_memory_working_set_bytes" + } + ], + "pilot_proxy_convergence_time": [ + { + "labels": {}, + "datapoints": [ + [1697024100, "NaN"], + [1697024130, "NaN"], + [1697024160, "NaN"] + ], + "stat": "avg", + "name": "pilot_proxy_convergence_time" + } + ], + "process_cpu_seconds_total": [ + { + "labels": {}, + "datapoints": [ + [1697024100, "0.002000000000000076"], + [1697024130, "0.002000000000000076"], + [1697024160, "0.0013333333333333049"] + ], + "name": "process_cpu_seconds_total" + } + ], + "process_resident_memory_bytes": [ + { + "labels": { + "__name__": "process_resident_memory_bytes", + "app": "istiod", + "install_operator_istio_io_owning_resource": "unknown", + "instance": "10.217.0.34:15014", + "istio": "pilot", + "istio_io_rev": "default", + "job": "kubernetes-pods", + "namespace": "istio-system", + "operator_istio_io_component": "Pilot", + "pod": "istiod-7548d4ff85-9czcn", + "pod_template_hash": "7548d4ff85", + "sidecar_istio_io_inject": "false" + }, + "datapoints": [ + [1697024100, "163.6352"], + [1697024130, "163.6352"], + [1697024160, "163.6352"] + ], + "name": "process_resident_memory_bytes" + } + ], + "request_count": null, + "request_error_count": null +} diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/istio-system/metrics/inbound/metrics_inbound_600.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/istio-system/metrics/inbound/metrics_inbound_600.json new file mode 100644 index 0000000000..9e292c84ec --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/istio-system/metrics/inbound/metrics_inbound_600.json @@ -0,0 +1,141 @@ +{ + "container_cpu_usage_seconds_total": [ + { + "labels": {}, + "datapoints": [ + [1697023560, "0.012649111781990258"], + [1697023620, "0.0028395890688735514"], + [1697023680, "0.0029086472614529356"], + [1697023740, "0.003109156035267781"], + [1697023800, "0.002981445175995798"], + [1697023860, "0.0030650943556152"], + [1697023920, "0.002949315857020238"], + [1697023980, "0.0030294256967151605"], + [1697024040, "0.003211951468553024"], + [1697024100, "0.0031811090223253153"], + [1697024160, "0.009876169457103496"] + ], + "name": "container_cpu_usage_seconds_total" + } + ], + "container_memory_working_set_bytes": [ + { + "labels": { + "__name__": "container_memory_working_set_bytes", + "beta_kubernetes_io_arch": "amd64", + "beta_kubernetes_io_os": "linux", + "container": "discovery", + "id": "/kubepods.slice/kubepods-burstable.slice/kubepods-burstable-pod86ae28e5_296a_4c6f_81ae_e3102580203a.slice/crio-311ddafa211336c162b5aeb91d70fbd048f94c9f18142285c0473eae845da2de.scope", + "image": "gcr.io/istio-release/pilot:1.18.2", + "instance": "crc-8cf2w-master-0", + "job": "kubernetes-nodes-cadvisor", + "kubernetes_io_arch": "amd64", + "kubernetes_io_hostname": "crc-8cf2w-master-0", + "kubernetes_io_os": "linux", + "name": "k8s_discovery_istiod-7548d4ff85-9czcn_istio-system_86ae28e5-296a-4c6f-81ae-e3102580203a_2", + "namespace": "istio-system", + "node_openshift_io_os_id": "rhcos", + "pod": "istiod-7548d4ff85-9czcn", + "topology_hostpath_csi_node": "crc-8cf2w-master-0" + }, + "datapoints": [ + [1697023560, "144.203776"], + [1697023620, "144.191488"], + [1697023680, "144.859136"], + [1697023740, "145.522688"], + [1697023800, "146.18624"], + [1697023860, "144.982016"], + [1697023920, "145.51449599999998"], + [1697023980, "144.396288"], + [1697024040, "145.055744"], + [1697024100, "143.683584"], + [1697024160, "143.683584"] + ], + "name": "container_memory_working_set_bytes" + } + ], + "grpc_received": null, + "grpc_sent": null, + "pilot_proxy_convergence_time": [ + { + "labels": {}, + "datapoints": [ + [1697023560, "NaN"], + [1697023620, "NaN"], + [1697023680, "NaN"], + [1697023740, "NaN"], + [1697023800, "NaN"], + [1697023860, "0.0002625923636363643"], + [1697023920, "NaN"], + [1697023980, "NaN"], + [1697024040, "NaN"], + [1697024100, "NaN"], + [1697024160, "NaN"] + ], + "stat": "avg", + "name": "pilot_proxy_convergence_time" + } + ], + "process_cpu_seconds_total": [ + { + "labels": {}, + "datapoints": [ + [1697023560, "0.004888888888888863"], + [1697023620, "0.0015555555555555618"], + [1697023680, "0.0015555555555555618"], + [1697023740, "0.0015555555555555618"], + [1697023800, "0.0015555555555555618"], + [1697023860, "0.0019999999999999966"], + [1697023920, "0.0015555555555555618"], + [1697023980, "0.0013333333333333836"], + [1697024040, "0.0015555555555555618"], + [1697024100, "0.0017777777777778186"], + [1697024160, "0.00511111111111112"] + ], + "name": "process_cpu_seconds_total" + } + ], + "process_resident_memory_bytes": [ + { + "labels": { + "__name__": "process_resident_memory_bytes", + "app": "istiod", + "install_operator_istio_io_owning_resource": "unknown", + "instance": "10.217.0.34:15014", + "istio": "pilot", + "istio_io_rev": "default", + "job": "kubernetes-pods", + "namespace": "istio-system", + "operator_istio_io_component": "Pilot", + "pod": "istiod-7548d4ff85-9czcn", + "pod_template_hash": "7548d4ff85", + "sidecar_istio_io_inject": "false" + }, + "datapoints": [ + [1697023560, "164.35609599999998"], + [1697023620, "164.35609599999998"], + [1697023680, "164.892672"], + [1697023740, "165.70368"], + [1697023800, "166.244352"], + [1697023860, "164.769792"], + [1697023920, "165.58079999999998"], + [1697023980, "164.462592"], + [1697024040, "165.003264"], + [1697024100, "163.6352"], + [1697024160, "163.6352"] + ], + "name": "process_resident_memory_bytes" + } + ], + "request_count": null, + "request_duration_millis": null, + "request_error_count": null, + "request_size": null, + "request_throughput": null, + "response_size": null, + "response_throughput": null, + "tcp_closed": null, + "tcp_opened": null, + "tcp_received": null, + "tcp_sent": null +} diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/istio-system/metrics/index.ts b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/istio-system/metrics/index.ts new file mode 100644 index 0000000000..7bfe9fb6a6 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/istio-system/metrics/index.ts @@ -0,0 +1,51 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import inbound60 from './inbound/metrics_inbound_60.json'; +import inbound120 from './inbound/metrics_inbound_120.json'; +import inbound300 from './inbound/metrics_inbound_300.json'; +import inbound600 from './inbound/metrics_inbound_600.json'; +import inbound1800 from './inbound/metrics_inbound_1800.json'; +import inbound3600 from './inbound/metrics_inbound_3600.json'; +/* Outbound Metrics */ + +import outbound60 from './outbound/metrics_outbound_60.json'; +import outbound120 from './outbound/metrics_outbound_120.json'; +import outbound300 from './outbound/metrics_outbound_300.json'; +import outbound600 from './outbound/metrics_outbound_600.json'; +import outbound1800 from './outbound/metrics_outbound_1800.json'; +import outbound3600 from './outbound/metrics_outbound_3600.json'; + +export const istioSystemMetrics = { + inbound: { + 60: inbound60, + 120: inbound120, + 300: inbound300, + 600: inbound600, + 1800: inbound1800, + 3600: inbound3600, + }, + outbound: { + 60: outbound60, + 120: outbound120, + 300: outbound300, + 600: outbound600, + 1800: outbound1800, + 3600: outbound3600, + }, +}; + +export default istioSystemMetrics; diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/istio-system/metrics/outbound/metrics_outbound_120.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/istio-system/metrics/outbound/metrics_outbound_120.json new file mode 100644 index 0000000000..1ed12e8c7e --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/istio-system/metrics/outbound/metrics_outbound_120.json @@ -0,0 +1,112 @@ +{ + "container_cpu_usage_seconds_total": [ + { + "labels": {}, + "datapoints": [ + [1697024010, "0.0020194318109019596"], + [1697024040, "0.002755125239989775"], + [1697024070, "0.0028308143301925487"], + [1697024100, "0.0027977164583027226"], + [1697024130, "0.017605061010355652"] + ], + "name": "container_cpu_usage_seconds_total" + } + ], + "container_memory_working_set_bytes": [ + { + "labels": { + "__name__": "container_memory_working_set_bytes", + "beta_kubernetes_io_arch": "amd64", + "beta_kubernetes_io_os": "linux", + "container": "discovery", + "id": "/kubepods.slice/kubepods-burstable.slice/kubepods-burstable-pod86ae28e5_296a_4c6f_81ae_e3102580203a.slice/crio-311ddafa211336c162b5aeb91d70fbd048f94c9f18142285c0473eae845da2de.scope", + "image": "gcr.io/istio-release/pilot:1.18.2", + "instance": "crc-8cf2w-master-0", + "job": "kubernetes-nodes-cadvisor", + "kubernetes_io_arch": "amd64", + "kubernetes_io_hostname": "crc-8cf2w-master-0", + "kubernetes_io_os": "linux", + "name": "k8s_discovery_istiod-7548d4ff85-9czcn_istio-system_86ae28e5-296a-4c6f-81ae-e3102580203a_2", + "namespace": "istio-system", + "node_openshift_io_os_id": "rhcos", + "pod": "istiod-7548d4ff85-9czcn", + "topology_hostpath_csi_node": "crc-8cf2w-master-0" + }, + "datapoints": [ + [1697024010, "144.392192"], + [1697024040, "145.055744"], + [1697024070, "143.683584"], + [1697024100, "143.683584"], + [1697024130, "143.679488"] + ], + "name": "container_memory_working_set_bytes" + } + ], + "pilot_proxy_convergence_time": [ + { + "labels": {}, + "datapoints": [ + [1697024010, "NaN"], + [1697024040, "NaN"], + [1697024070, "NaN"], + [1697024100, "NaN"], + [1697024130, "NaN"] + ], + "stat": "avg", + "name": "pilot_proxy_convergence_time" + } + ], + "process_cpu_seconds_total": [ + { + "labels": {}, + "datapoints": [ + [1697024010, "0.0013333333333333049"], + [1697024040, "0.0013333333333333049"], + [1697024070, "0.0013333333333333049"], + [1697024100, "0.002000000000000076"], + [1697024130, "0.002000000000000076"] + ], + "name": "process_cpu_seconds_total" + } + ], + "process_resident_memory_bytes": [ + { + "labels": { + "__name__": "process_resident_memory_bytes", + "app": "istiod", + "install_operator_istio_io_owning_resource": "unknown", + "instance": "10.217.0.34:15014", + "istio": "pilot", + "istio_io_rev": "default", + "job": "kubernetes-pods", + "namespace": "istio-system", + "operator_istio_io_component": "Pilot", + "pod": "istiod-7548d4ff85-9czcn", + "pod_template_hash": "7548d4ff85", + "sidecar_istio_io_inject": "false" + }, + "datapoints": [ + [1697024010, "164.462592"], + [1697024040, "165.003264"], + [1697024070, "163.6352"], + [1697024100, "163.6352"], + [1697024130, "163.6352"] + ], + "name": "process_resident_memory_bytes" + } + ], + "request_count": [ + { + "labels": {}, + "datapoints": [ + [1697024010, "1"], + [1697024040, "1"], + [1697024070, "0.9996667777407532"], + [1697024100, "1"], + [1697024130, "1"] + ], + "name": "request_count" + } + ], + "request_error_count": null +} diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/istio-system/metrics/outbound/metrics_outbound_1800.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/istio-system/metrics/outbound/metrics_outbound_1800.json new file mode 100644 index 0000000000..b23b5c5d65 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/istio-system/metrics/outbound/metrics_outbound_1800.json @@ -0,0 +1,148 @@ +{ + "container_cpu_usage_seconds_total": [ + { + "labels": {}, + "datapoints": [ + [1697022180, "0.0026138895855586384"], + [1697022360, "0.004423229563643965"], + [1697022540, "0.002818351158753509"], + [1697022720, "0.0033681828956744772"], + [1697022900, "0.004075735098607482"], + [1697023080, "0.004858861411539032"], + [1697023260, "0.003327461760086153"], + [1697023440, "0.0029723897808957888"], + [1697023620, "0.005595762889521851"], + [1697023800, "0.0034129233521214435"], + [1697023980, "0.0034297933448419722"] + ], + "name": "container_cpu_usage_seconds_total" + } + ], + "container_memory_working_set_bytes": [ + { + "labels": { + "__name__": "container_memory_working_set_bytes", + "beta_kubernetes_io_arch": "amd64", + "beta_kubernetes_io_os": "linux", + "container": "discovery", + "id": "/kubepods.slice/kubepods-burstable.slice/kubepods-burstable-pod86ae28e5_296a_4c6f_81ae_e3102580203a.slice/crio-311ddafa211336c162b5aeb91d70fbd048f94c9f18142285c0473eae845da2de.scope", + "image": "gcr.io/istio-release/pilot:1.18.2", + "instance": "crc-8cf2w-master-0", + "job": "kubernetes-nodes-cadvisor", + "kubernetes_io_arch": "amd64", + "kubernetes_io_hostname": "crc-8cf2w-master-0", + "kubernetes_io_os": "linux", + "name": "k8s_discovery_istiod-7548d4ff85-9czcn_istio-system_86ae28e5-296a-4c6f-81ae-e3102580203a_2", + "namespace": "istio-system", + "node_openshift_io_os_id": "rhcos", + "pod": "istiod-7548d4ff85-9czcn", + "topology_hostpath_csi_node": "crc-8cf2w-master-0" + }, + "datapoints": [ + [1697022180, "145.154048"], + [1697022360, "145.154048"], + [1697022540, "143.589376"], + [1697022720, "146.763776"], + [1697022900, "155.20972799999998"], + [1697023080, "152.662016"], + [1697023260, "148.979712"], + [1697023440, "146.354176"], + [1697023620, "144.191488"], + [1697023800, "146.18624"], + [1697023980, "144.396288"] + ], + "name": "container_memory_working_set_bytes" + } + ], + "pilot_proxy_convergence_time": [ + { + "labels": {}, + "datapoints": [ + [1697022180, "NaN"], + [1697022360, "NaN"], + [1697022540, "NaN"], + [1697022720, "NaN"], + [1697022900, "NaN"], + [1697023080, "NaN"], + [1697023260, "NaN"], + [1697023440, "NaN"], + [1697023620, "NaN"], + [1697023800, "NaN"], + [1697023980, "0.00026259236363636437"] + ], + "stat": "avg", + "name": "pilot_proxy_convergence_time" + } + ], + "process_cpu_seconds_total": [ + { + "labels": {}, + "datapoints": [ + [1697022180, "0.0013939393939393964"], + [1697022360, "0.002242424242424248"], + [1697022540, "0.0013333333333333478"], + [1697022720, "0.0017575757575757738"], + [1697022900, "0.001999999999999989"], + [1697023080, "0.002363636363636367"], + [1697023260, "0.0016363636363636335"], + [1697023440, "0.0015757575757575635"], + [1697023620, "0.002727272727272744"], + [1697023800, "0.001757575757575752"], + [1697023980, "0.0017575757575757738"] + ], + "name": "process_cpu_seconds_total" + } + ], + "process_resident_memory_bytes": [ + { + "labels": { + "__name__": "process_resident_memory_bytes", + "app": "istiod", + "install_operator_istio_io_owning_resource": "unknown", + "instance": "10.217.0.34:15014", + "istio": "pilot", + "istio_io_rev": "default", + "job": "kubernetes-pods", + "namespace": "istio-system", + "operator_istio_io_component": "Pilot", + "pod": "istiod-7548d4ff85-9czcn", + "pod_template_hash": "7548d4ff85", + "sidecar_istio_io_inject": "false" + }, + "datapoints": [ + [1697022180, "165.09747199999998"], + [1697022360, "165.09747199999998"], + [1697022540, "163.688448"], + [1697022720, "165.851136"], + [1697022900, "175.038464"], + [1697023080, "172.531712"], + [1697023260, "168.40704"], + [1697023440, "166.641664"], + [1697023620, "164.35609599999998"], + [1697023800, "166.244352"], + [1697023980, "164.462592"] + ], + "name": "process_resident_memory_bytes" + } + ], + "request_count": [ + { + "labels": {}, + "datapoints": [ + [1697022180, "0.9999999999999999"], + [1697022360, "0.9999999999999999"], + [1697022540, "0.9999999999999999"], + [1697022720, "0.9999999999999999"], + [1697022900, "0.9999999999999999"], + [1697023080, "0.9999999999999999"], + [1697023260, "0.9999999999999999"], + [1697023440, "0.9999999999999999"], + [1697023620, "0.9999999999999999"], + [1697023800, "0.9999999999999999"], + [1697023980, "0.9999999999999999"] + ], + "name": "request_count" + } + ], + "request_error_count": null +} diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/istio-system/metrics/outbound/metrics_outbound_300.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/istio-system/metrics/outbound/metrics_outbound_300.json new file mode 100644 index 0000000000..341f41eb51 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/istio-system/metrics/outbound/metrics_outbound_300.json @@ -0,0 +1,148 @@ +{ + "container_cpu_usage_seconds_total": [ + { + "labels": {}, + "datapoints": [ + [1697023830, "0.004117320729759894"], + [1697023860, "0.00277104088632311"], + [1697023890, "0.002440995810258295"], + [1697023920, "0.0030462017153864134"], + [1697023950, "0.0011749084878141453"], + [1697023980, "0.003215558196758648"], + [1697024010, "0.0020194318109019596"], + [1697024040, "0.002755125239989775"], + [1697024070, "0.0028308143301925487"], + [1697024100, "0.0027977164583027226"], + [1697024130, "0.017605061010355652"] + ], + "name": "container_cpu_usage_seconds_total" + } + ], + "container_memory_working_set_bytes": [ + { + "labels": { + "__name__": "container_memory_working_set_bytes", + "beta_kubernetes_io_arch": "amd64", + "beta_kubernetes_io_os": "linux", + "container": "discovery", + "id": "/kubepods.slice/kubepods-burstable.slice/kubepods-burstable-pod86ae28e5_296a_4c6f_81ae_e3102580203a.slice/crio-311ddafa211336c162b5aeb91d70fbd048f94c9f18142285c0473eae845da2de.scope", + "image": "gcr.io/istio-release/pilot:1.18.2", + "instance": "crc-8cf2w-master-0", + "job": "kubernetes-nodes-cadvisor", + "kubernetes_io_arch": "amd64", + "kubernetes_io_hostname": "crc-8cf2w-master-0", + "kubernetes_io_os": "linux", + "name": "k8s_discovery_istiod-7548d4ff85-9czcn_istio-system_86ae28e5-296a-4c6f-81ae-e3102580203a_2", + "namespace": "istio-system", + "node_openshift_io_os_id": "rhcos", + "pod": "istiod-7548d4ff85-9czcn", + "topology_hostpath_csi_node": "crc-8cf2w-master-0" + }, + "datapoints": [ + [1697023830, "144.850944"], + [1697023860, "144.982016"], + [1697023890, "144.846848"], + [1697023920, "145.51449599999998"], + [1697023950, "144.52326399999998"], + [1697023980, "144.396288"], + [1697024010, "144.392192"], + [1697024040, "145.055744"], + [1697024070, "143.683584"], + [1697024100, "143.683584"], + [1697024130, "143.679488"] + ], + "name": "container_memory_working_set_bytes" + } + ], + "pilot_proxy_convergence_time": [ + { + "labels": {}, + "datapoints": [ + [1697023830, "0.00026259236363636437"], + [1697023860, "NaN"], + [1697023890, "NaN"], + [1697023920, "NaN"], + [1697023950, "NaN"], + [1697023980, "NaN"], + [1697024010, "NaN"], + [1697024040, "NaN"], + [1697024070, "NaN"], + [1697024100, "NaN"], + [1697024130, "NaN"] + ], + "stat": "avg", + "name": "pilot_proxy_convergence_time" + } + ], + "process_cpu_seconds_total": [ + { + "labels": {}, + "datapoints": [ + [1697023830, "0.0026666666666668466"], + [1697023860, "0.0019999999999998387"], + [1697023890, "0.002000000000000076"], + [1697023920, "0.0013333333333333049"], + [1697023950, "0.0013333333333333049"], + [1697023980, "0.0013333333333335417"], + [1697024010, "0.0013333333333333049"], + [1697024040, "0.0013333333333333049"], + [1697024070, "0.0013333333333333049"], + [1697024100, "0.002000000000000076"], + [1697024130, "0.002000000000000076"] + ], + "name": "process_cpu_seconds_total" + } + ], + "process_resident_memory_bytes": [ + { + "labels": { + "__name__": "process_resident_memory_bytes", + "app": "istiod", + "install_operator_istio_io_owning_resource": "unknown", + "instance": "10.217.0.34:15014", + "istio": "pilot", + "istio_io_rev": "default", + "job": "kubernetes-pods", + "namespace": "istio-system", + "operator_istio_io_component": "Pilot", + "pod": "istiod-7548d4ff85-9czcn", + "pod_template_hash": "7548d4ff85", + "sidecar_istio_io_inject": "false" + }, + "datapoints": [ + [1697023830, "164.22912"], + [1697023860, "164.769792"], + [1697023890, "164.769792"], + [1697023920, "165.58079999999998"], + [1697023950, "164.462592"], + [1697023980, "164.462592"], + [1697024010, "164.462592"], + [1697024040, "165.003264"], + [1697024070, "163.6352"], + [1697024100, "163.6352"], + [1697024130, "163.6352"] + ], + "name": "process_resident_memory_bytes" + } + ], + "request_count": [ + { + "labels": {}, + "datapoints": [ + [1697023830, "0.9998000399920017"], + [1697023860, "1"], + [1697023890, "1"], + [1697023920, "1"], + [1697023950, "1"], + [1697023980, "1"], + [1697024010, "1"], + [1697024040, "1"], + [1697024070, "0.9996667777407532"], + [1697024100, "1"], + [1697024130, "1"] + ], + "name": "request_count" + } + ], + "request_error_count": null +} diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/istio-system/metrics/outbound/metrics_outbound_3600.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/istio-system/metrics/outbound/metrics_outbound_3600.json new file mode 100644 index 0000000000..cd77133738 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/istio-system/metrics/outbound/metrics_outbound_3600.json @@ -0,0 +1,124 @@ +{ + "container_cpu_usage_seconds_total": [ + { + "labels": {}, + "datapoints": [ + [1697021640, "0.0022837365589533235"], + [1697022000, "0.003630157034545756"], + [1697022360, "0.0034882143205133696"], + [1697022720, "0.003109542147831563"], + [1697023080, "0.004421874876878809"], + [1697023440, "0.0031209359563211837"], + [1697023800, "0.004399331006493985"] + ], + "name": "container_cpu_usage_seconds_total" + } + ], + "container_memory_working_set_bytes": [ + { + "labels": { + "__name__": "container_memory_working_set_bytes", + "beta_kubernetes_io_arch": "amd64", + "beta_kubernetes_io_os": "linux", + "container": "discovery", + "id": "/kubepods.slice/kubepods-burstable.slice/kubepods-burstable-pod86ae28e5_296a_4c6f_81ae_e3102580203a.slice/crio-311ddafa211336c162b5aeb91d70fbd048f94c9f18142285c0473eae845da2de.scope", + "image": "gcr.io/istio-release/pilot:1.18.2", + "instance": "crc-8cf2w-master-0", + "job": "kubernetes-nodes-cadvisor", + "kubernetes_io_arch": "amd64", + "kubernetes_io_hostname": "crc-8cf2w-master-0", + "kubernetes_io_os": "linux", + "name": "k8s_discovery_istiod-7548d4ff85-9czcn_istio-system_86ae28e5-296a-4c6f-81ae-e3102580203a_2", + "namespace": "istio-system", + "node_openshift_io_os_id": "rhcos", + "pod": "istiod-7548d4ff85-9czcn", + "topology_hostpath_csi_node": "crc-8cf2w-master-0" + }, + "datapoints": [ + [1697021640, "143.09376"], + [1697022000, "145.137664"], + [1697022360, "145.154048"], + [1697022720, "146.763776"], + [1697023080, "152.662016"], + [1697023440, "146.354176"], + [1697023800, "146.18624"] + ], + "name": "container_memory_working_set_bytes" + } + ], + "pilot_proxy_convergence_time": [ + { + "labels": {}, + "datapoints": [ + [1697021640, "NaN"], + [1697022000, "NaN"], + [1697022360, "NaN"], + [1697022720, "NaN"], + [1697023080, "0.00021478099999999977"], + [1697023440, "NaN"], + [1697023800, "NaN"] + ], + "stat": "avg", + "name": "pilot_proxy_convergence_time" + } + ], + "process_cpu_seconds_total": [ + { + "labels": {}, + "datapoints": [ + [1697021640, "0.001045284722222216"], + [1697022000, "0.0018260869565217364"], + [1697022360, "0.0017971014492753651"], + [1697022720, "0.0015652173913043557"], + [1697023080, "0.002173913043478261"], + [1697023440, "0.0015942028985507267"], + [1697023800, "0.002202898550724642"] + ], + "name": "process_cpu_seconds_total" + } + ], + "process_resident_memory_bytes": [ + { + "labels": { + "__name__": "process_resident_memory_bytes", + "app": "istiod", + "install_operator_istio_io_owning_resource": "unknown", + "instance": "10.217.0.34:15014", + "istio": "pilot", + "istio_io_rev": "default", + "job": "kubernetes-pods", + "namespace": "istio-system", + "operator_istio_io_component": "Pilot", + "pod": "istiod-7548d4ff85-9czcn", + "pod_template_hash": "7548d4ff85", + "sidecar_istio_io_inject": "false" + }, + "datapoints": [ + [1697021640, "163.19692799999999"], + [1697022000, "165.09747199999998"], + [1697022360, "165.09747199999998"], + [1697022720, "165.851136"], + [1697023080, "172.531712"], + [1697023440, "166.641664"], + [1697023800, "166.244352"] + ], + "name": "process_resident_memory_bytes" + } + ], + "request_count": [ + { + "labels": {}, + "datapoints": [ + [1697021640, "0.7295888888888888"], + [1697022000, "1"], + [1697022360, "1"], + [1697022720, "1"], + [1697023080, "1"], + [1697023440, "1"], + [1697023800, "1"] + ], + "name": "request_count" + } + ], + "request_error_count": null +} diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/istio-system/metrics/outbound/metrics_outbound_60.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/istio-system/metrics/outbound/metrics_outbound_60.json new file mode 100644 index 0000000000..d9aa2a50c6 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/istio-system/metrics/outbound/metrics_outbound_60.json @@ -0,0 +1,100 @@ +{ + "container_cpu_usage_seconds_total": [ + { + "labels": {}, + "datapoints": [ + [1697024070, "0.0028308143301925487"], + [1697024100, "0.0027977164583027226"], + [1697024130, "0.017605061010355652"] + ], + "name": "container_cpu_usage_seconds_total" + } + ], + "container_memory_working_set_bytes": [ + { + "labels": { + "__name__": "container_memory_working_set_bytes", + "beta_kubernetes_io_arch": "amd64", + "beta_kubernetes_io_os": "linux", + "container": "discovery", + "id": "/kubepods.slice/kubepods-burstable.slice/kubepods-burstable-pod86ae28e5_296a_4c6f_81ae_e3102580203a.slice/crio-311ddafa211336c162b5aeb91d70fbd048f94c9f18142285c0473eae845da2de.scope", + "image": "gcr.io/istio-release/pilot:1.18.2", + "instance": "crc-8cf2w-master-0", + "job": "kubernetes-nodes-cadvisor", + "kubernetes_io_arch": "amd64", + "kubernetes_io_hostname": "crc-8cf2w-master-0", + "kubernetes_io_os": "linux", + "name": "k8s_discovery_istiod-7548d4ff85-9czcn_istio-system_86ae28e5-296a-4c6f-81ae-e3102580203a_2", + "namespace": "istio-system", + "node_openshift_io_os_id": "rhcos", + "pod": "istiod-7548d4ff85-9czcn", + "topology_hostpath_csi_node": "crc-8cf2w-master-0" + }, + "datapoints": [ + [1697024070, "143.683584"], + [1697024100, "143.683584"], + [1697024130, "143.679488"] + ], + "name": "container_memory_working_set_bytes" + } + ], + "pilot_proxy_convergence_time": [ + { + "labels": {}, + "datapoints": [ + [1697024070, "NaN"], + [1697024100, "NaN"], + [1697024130, "NaN"] + ], + "stat": "avg", + "name": "pilot_proxy_convergence_time" + } + ], + "process_cpu_seconds_total": [ + { + "labels": {}, + "datapoints": [ + [1697024070, "0.0013333333333333049"], + [1697024100, "0.002000000000000076"], + [1697024130, "0.002000000000000076"] + ], + "name": "process_cpu_seconds_total" + } + ], + "process_resident_memory_bytes": [ + { + "labels": { + "__name__": "process_resident_memory_bytes", + "app": "istiod", + "install_operator_istio_io_owning_resource": "unknown", + "instance": "10.217.0.34:15014", + "istio": "pilot", + "istio_io_rev": "default", + "job": "kubernetes-pods", + "namespace": "istio-system", + "operator_istio_io_component": "Pilot", + "pod": "istiod-7548d4ff85-9czcn", + "pod_template_hash": "7548d4ff85", + "sidecar_istio_io_inject": "false" + }, + "datapoints": [ + [1697024070, "163.6352"], + [1697024100, "163.6352"], + [1697024130, "163.6352"] + ], + "name": "process_resident_memory_bytes" + } + ], + "request_count": [ + { + "labels": {}, + "datapoints": [ + [1697024070, "0.9996667777407532"], + [1697024100, "1"], + [1697024130, "1"] + ], + "name": "request_count" + } + ], + "request_error_count": null +} diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/istio-system/metrics/outbound/metrics_outbound_600.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/istio-system/metrics/outbound/metrics_outbound_600.json new file mode 100644 index 0000000000..4fcd086822 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/istio-system/metrics/outbound/metrics_outbound_600.json @@ -0,0 +1,252 @@ +{ + "container_cpu_usage_seconds_total": [ + { + "labels": {}, + "datapoints": [ + [1697023500, "0.004063051366539051"], + [1697023560, "0.012649111781990258"], + [1697023620, "0.0028395890688735514"], + [1697023680, "0.0029086472614529356"], + [1697023740, "0.003109156035267781"], + [1697023800, "0.002981445175995798"], + [1697023860, "0.0030650943556152"], + [1697023920, "0.002949315857020238"], + [1697023980, "0.0030294256967151605"], + [1697024040, "0.003211951468553024"], + [1697024100, "0.0031811090223253153"] + ], + "name": "container_cpu_usage_seconds_total" + } + ], + "container_memory_working_set_bytes": [ + { + "labels": { + "__name__": "container_memory_working_set_bytes", + "beta_kubernetes_io_arch": "amd64", + "beta_kubernetes_io_os": "linux", + "container": "discovery", + "id": "/kubepods.slice/kubepods-burstable.slice/kubepods-burstable-pod86ae28e5_296a_4c6f_81ae_e3102580203a.slice/crio-311ddafa211336c162b5aeb91d70fbd048f94c9f18142285c0473eae845da2de.scope", + "image": "gcr.io/istio-release/pilot:1.18.2", + "instance": "crc-8cf2w-master-0", + "job": "kubernetes-nodes-cadvisor", + "kubernetes_io_arch": "amd64", + "kubernetes_io_hostname": "crc-8cf2w-master-0", + "kubernetes_io_os": "linux", + "name": "k8s_discovery_istiod-7548d4ff85-9czcn_istio-system_86ae28e5-296a-4c6f-81ae-e3102580203a_2", + "namespace": "istio-system", + "node_openshift_io_os_id": "rhcos", + "pod": "istiod-7548d4ff85-9czcn", + "topology_hostpath_csi_node": "crc-8cf2w-master-0" + }, + "datapoints": [ + [1697023500, "144.195584"], + [1697023560, "144.203776"], + [1697023620, "144.191488"], + [1697023680, "144.859136"], + [1697023740, "145.522688"], + [1697023800, "146.18624"], + [1697023860, "144.982016"], + [1697023920, "145.51449599999998"], + [1697023980, "144.396288"], + [1697024040, "145.055744"], + [1697024100, "143.683584"] + ], + "name": "container_memory_working_set_bytes" + } + ], + "grpc_received": null, + "grpc_sent": null, + "pilot_proxy_convergence_time": [ + { + "labels": {}, + "datapoints": [ + [1697023500, "NaN"], + [1697023560, "NaN"], + [1697023620, "NaN"], + [1697023680, "NaN"], + [1697023740, "NaN"], + [1697023800, "NaN"], + [1697023860, "0.0002625923636363643"], + [1697023920, "NaN"], + [1697023980, "NaN"], + [1697024040, "NaN"], + [1697024100, "NaN"] + ], + "stat": "avg", + "name": "pilot_proxy_convergence_time" + } + ], + "process_cpu_seconds_total": [ + { + "labels": {}, + "datapoints": [ + [1697023500, "0.0019999999999999966"], + [1697023560, "0.004888888888888863"], + [1697023620, "0.0015555555555555618"], + [1697023680, "0.0015555555555555618"], + [1697023740, "0.0015555555555555618"], + [1697023800, "0.0015555555555555618"], + [1697023860, "0.0019999999999999966"], + [1697023920, "0.0015555555555555618"], + [1697023980, "0.0013333333333333836"], + [1697024040, "0.0015555555555555618"], + [1697024100, "0.0017777777777778186"] + ], + "name": "process_cpu_seconds_total" + } + ], + "process_resident_memory_bytes": [ + { + "labels": { + "__name__": "process_resident_memory_bytes", + "app": "istiod", + "install_operator_istio_io_owning_resource": "unknown", + "instance": "10.217.0.34:15014", + "istio": "pilot", + "istio_io_rev": "default", + "job": "kubernetes-pods", + "namespace": "istio-system", + "operator_istio_io_component": "Pilot", + "pod": "istiod-7548d4ff85-9czcn", + "pod_template_hash": "7548d4ff85", + "sidecar_istio_io_inject": "false" + }, + "datapoints": [ + [1697023500, "163.81951999999998"], + [1697023560, "164.35609599999998"], + [1697023620, "164.35609599999998"], + [1697023680, "164.892672"], + [1697023740, "165.70368"], + [1697023800, "166.244352"], + [1697023860, "164.769792"], + [1697023920, "165.58079999999998"], + [1697023980, "164.462592"], + [1697024040, "165.003264"], + [1697024100, "163.6352"] + ], + "name": "process_resident_memory_bytes" + } + ], + "request_count": [ + { + "labels": {}, + "datapoints": [ + [1697023500, "0.9999999999999999"], + [1697023560, "0.9999999999999999"], + [1697023620, "0.9999999999999999"], + [1697023680, "0.9999555575307764"], + [1697023740, "0.9999999999999999"], + [1697023800, "0.9999999999999999"], + [1697023860, "0.9999999999999999"], + [1697023920, "0.9999999999999999"], + [1697023980, "0.9999999999999999"], + [1697024040, "0.9999999999999999"], + [1697024100, "0.9999999999999999"] + ], + "name": "request_count" + } + ], + "request_duration_millis": [ + { + "labels": {}, + "datapoints": [ + [1697023500, "17.144444444444446"], + [1697023560, "17.98888888888889"], + [1697023620, "15.245555555555297"], + [1697023680, "15.845555555555297"], + [1697023740, "16.65555555555556"], + [1697023800, "15.968888888889017"], + [1697023860, "15.96888888888837"], + [1697023920, "15.522222222222222"], + [1697023980, "13.882222222222481"], + [1697024040, "15.981111111110982"], + [1697024100, "16.5466666666668"] + ], + "stat": "avg", + "name": "request_duration_millis" + } + ], + "request_error_count": null, + "request_size": [ + { + "labels": {}, + "datapoints": [ + [1697023500, "1950"], + [1697023560, "1950"], + [1697023620, "1950"], + [1697023680, "1950"], + [1697023740, "1950"], + [1697023800, "1950"], + [1697023860, "1950"], + [1697023920, "1950"], + [1697023980, "1950"], + [1697024040, "1950"], + [1697024100, "1950"] + ], + "stat": "avg", + "name": "request_size" + } + ], + "request_throughput": [ + { + "labels": {}, + "datapoints": [ + [1697023500, "1949.9999999999998"], + [1697023560, "1949.9999999999998"], + [1697023620, "1949.9999999999998"], + [1697023680, "1949.913337185014"], + [1697023740, "1949.9999999999998"], + [1697023800, "1949.9999999999998"], + [1697023860, "1949.9999999999998"], + [1697023920, "1949.9999999999998"], + [1697023980, "1949.9999999999998"], + [1697024040, "1949.9999999999998"], + [1697024100, "1949.9999999999998"] + ], + "name": "request_throughput" + } + ], + "response_size": [ + { + "labels": {}, + "datapoints": [ + [1697023500, "6127.777777777778"], + [1697023560, "6083.333333333334"], + [1697023620, "5972.222222222223"], + [1697023680, "5883.333333333334"], + [1697023740, "6083.333333333334"], + [1697023800, "6038.888888888889"], + [1697023860, "5972.222222222223"], + [1697023920, "5994.444444444444"], + [1697023980, "5905.555555555556"], + [1697024040, "6127.777777777778"], + [1697024100, "6016.666666666667"] + ], + "stat": "avg", + "name": "response_size" + } + ], + "response_throughput": [ + { + "labels": {}, + "datapoints": [ + [1697023500, "6127.777777777777"], + [1697023560, "6083.333333333333"], + [1697023620, "5972.222222222222"], + [1697023680, "5883.071863472735"], + [1697023740, "6083.333333333333"], + [1697023800, "6038.888888888888"], + [1697023860, "5972.222222222222"], + [1697023920, "5994.444444444443"], + [1697023980, "5905.555555555555"], + [1697024040, "6127.777777777777"], + [1697024100, "6016.666666666666"] + ], + "name": "response_throughput" + } + ], + "tcp_closed": null, + "tcp_opened": null, + "tcp_received": null, + "tcp_sent": null +} diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/istio-system/services.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/istio-system/services.json new file mode 100644 index 0000000000..25634aee33 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/istio-system/services.json @@ -0,0 +1,378 @@ +{ + "namespace": { + "name": "istio-system", + "cluster": "", + "isAmbient": false, + "labels": null, + "annotations": null + }, + "services": [ + { + "name": "kiali", + "namespace": "istio-system", + "istioSidecar": false, + "cluster": "Kubernetes", + "istioAmbient": false, + "appLabel": false, + "additionalDetailSample": null, + "annotations": null, + "healthAnnotations": {}, + "ports": null, + "labels": { + "app": "kiali", + "app.kubernetes.io/instance": "kiali", + "app.kubernetes.io/managed-by": "Helm", + "app.kubernetes.io/name": "kiali", + "app.kubernetes.io/part-of": "kiali", + "app.kubernetes.io/version": "v1.79.0", + "helm.sh/chart": "kiali-server-1.79.0", + "version": "v1.79.0" + }, + "selector": { + "app.kubernetes.io/instance": "kiali", + "app.kubernetes.io/name": "kiali" + }, + "istioReferences": [], + "kialiWizard": "", + "serviceRegistry": "Kubernetes", + "health": { + "requests": { + "inbound": {}, + "outbound": {}, + "healthAnnotations": {} + } + } + }, + { + "name": "zipkin", + "namespace": "istio-system", + "istioSidecar": false, + "cluster": "Kubernetes", + "istioAmbient": false, + "appLabel": true, + "additionalDetailSample": null, + "annotations": null, + "healthAnnotations": {}, + "ports": null, + "labels": { + "name": "zipkin" + }, + "selector": { + "app": "jaeger" + }, + "istioReferences": [], + "kialiWizard": "", + "serviceRegistry": "Kubernetes", + "health": { + "requests": { + "inbound": {}, + "outbound": {}, + "healthAnnotations": {} + } + } + }, + { + "name": "grafana", + "namespace": "istio-system", + "istioSidecar": false, + "cluster": "Kubernetes", + "istioAmbient": false, + "appLabel": false, + "additionalDetailSample": null, + "annotations": null, + "healthAnnotations": {}, + "ports": null, + "labels": { + "app.kubernetes.io/instance": "grafana", + "app.kubernetes.io/managed-by": "Helm", + "app.kubernetes.io/name": "grafana", + "app.kubernetes.io/version": "10.1.5", + "helm.sh/chart": "grafana-6.61.1" + }, + "selector": { + "app.kubernetes.io/instance": "grafana", + "app.kubernetes.io/name": "grafana" + }, + "istioReferences": [], + "kialiWizard": "", + "serviceRegistry": "Kubernetes", + "health": { + "requests": { + "inbound": {}, + "outbound": {}, + "healthAnnotations": {} + } + } + }, + { + "name": "istiod", + "namespace": "istio-system", + "istioSidecar": false, + "cluster": "Kubernetes", + "istioAmbient": false, + "appLabel": true, + "additionalDetailSample": null, + "annotations": null, + "healthAnnotations": {}, + "ports": null, + "labels": { + "app": "istiod", + "install.operator.istio.io/owning-resource": "installed-state", + "install.operator.istio.io/owning-resource-namespace": "istio-system", + "istio": "pilot", + "istio.io/rev": "default", + "operator.istio.io/component": "Pilot", + "operator.istio.io/managed": "Reconcile", + "operator.istio.io/version": "1.21.0-rc.0", + "release": "istio" + }, + "selector": { + "app": "istiod", + "istio": "pilot" + }, + "istioReferences": [], + "kialiWizard": "", + "serviceRegistry": "Kubernetes", + "health": { + "requests": { + "inbound": {}, + "outbound": {}, + "healthAnnotations": {} + } + } + }, + { + "name": "jaeger-collector", + "namespace": "istio-system", + "istioSidecar": false, + "cluster": "Kubernetes", + "istioAmbient": false, + "appLabel": true, + "additionalDetailSample": null, + "annotations": null, + "healthAnnotations": {}, + "ports": null, + "labels": { + "app": "jaeger" + }, + "selector": { + "app": "jaeger" + }, + "istioReferences": [], + "kialiWizard": "", + "serviceRegistry": "Kubernetes", + "health": { + "requests": { + "inbound": {}, + "outbound": {}, + "healthAnnotations": {} + } + } + }, + { + "name": "prometheus", + "namespace": "istio-system", + "istioSidecar": false, + "cluster": "Kubernetes", + "istioAmbient": false, + "appLabel": false, + "additionalDetailSample": null, + "annotations": null, + "healthAnnotations": {}, + "ports": null, + "labels": { + "app.kubernetes.io/component": "server", + "app.kubernetes.io/instance": "prometheus", + "app.kubernetes.io/managed-by": "Helm", + "app.kubernetes.io/name": "prometheus", + "app.kubernetes.io/part-of": "prometheus", + "app.kubernetes.io/version": "v2.48.0", + "helm.sh/chart": "prometheus-25.8.0" + }, + "selector": { + "app.kubernetes.io/component": "server", + "app.kubernetes.io/instance": "prometheus", + "app.kubernetes.io/name": "prometheus" + }, + "istioReferences": [], + "kialiWizard": "", + "serviceRegistry": "Kubernetes", + "health": { + "requests": { + "inbound": {}, + "outbound": {}, + "healthAnnotations": {} + } + } + }, + { + "name": "tracing", + "namespace": "istio-system", + "istioSidecar": false, + "cluster": "Kubernetes", + "istioAmbient": false, + "appLabel": true, + "additionalDetailSample": null, + "annotations": null, + "healthAnnotations": {}, + "ports": null, + "labels": { + "app": "jaeger" + }, + "selector": { + "app": "jaeger" + }, + "istioReferences": [], + "kialiWizard": "", + "serviceRegistry": "Kubernetes", + "health": { + "requests": { + "inbound": {}, + "outbound": {}, + "healthAnnotations": {} + } + } + }, + { + "name": "istio-egressgateway", + "namespace": "istio-system", + "istioSidecar": false, + "cluster": "Kubernetes", + "istioAmbient": false, + "appLabel": true, + "additionalDetailSample": null, + "annotations": null, + "healthAnnotations": {}, + "ports": null, + "labels": { + "app": "istio-egressgateway", + "install.operator.istio.io/owning-resource": "installed-state", + "install.operator.istio.io/owning-resource-namespace": "istio-system", + "istio": "egressgateway", + "istio.io/rev": "default", + "operator.istio.io/component": "EgressGateways", + "operator.istio.io/managed": "Reconcile", + "operator.istio.io/version": "1.21.0-rc.0", + "release": "istio" + }, + "selector": { + "app": "istio-egressgateway", + "istio": "egressgateway" + }, + "istioReferences": [], + "kialiWizard": "", + "serviceRegistry": "Kubernetes", + "health": { + "requests": { + "inbound": {}, + "outbound": {}, + "healthAnnotations": {} + } + } + }, + { + "name": "istio-ingressgateway", + "namespace": "istio-system", + "istioSidecar": false, + "cluster": "Kubernetes", + "istioAmbient": false, + "appLabel": true, + "additionalDetailSample": null, + "annotations": null, + "healthAnnotations": {}, + "ports": null, + "labels": { + "app": "istio-ingressgateway", + "install.operator.istio.io/owning-resource": "installed-state", + "install.operator.istio.io/owning-resource-namespace": "istio-system", + "istio": "ingressgateway", + "istio.io/rev": "default", + "operator.istio.io/component": "IngressGateways", + "operator.istio.io/managed": "Reconcile", + "operator.istio.io/version": "1.21.0-rc.0", + "release": "istio" + }, + "selector": { + "app": "istio-ingressgateway", + "istio": "ingressgateway" + }, + "istioReferences": [], + "kialiWizard": "", + "serviceRegistry": "Kubernetes", + "health": { + "requests": { + "inbound": {}, + "outbound": {}, + "healthAnnotations": {} + } + } + } + ], + "validations": { + "service": { + "grafana.istio-system": { + "name": "grafana", + "objectType": "service", + "valid": true, + "checks": [], + "references": null + }, + "istio-egressgateway.istio-system": { + "name": "istio-egressgateway", + "objectType": "service", + "valid": true, + "checks": [], + "references": null + }, + "istio-ingressgateway.istio-system": { + "name": "istio-ingressgateway", + "objectType": "service", + "valid": true, + "checks": [], + "references": null + }, + "istiod.istio-system": { + "name": "istiod", + "objectType": "service", + "valid": true, + "checks": [], + "references": null + }, + "jaeger-collector.istio-system": { + "name": "jaeger-collector", + "objectType": "service", + "valid": true, + "checks": [], + "references": null + }, + "kiali.istio-system": { + "name": "kiali", + "objectType": "service", + "valid": true, + "checks": [], + "references": null + }, + "prometheus.istio-system": { + "name": "prometheus", + "objectType": "service", + "valid": true, + "checks": [], + "references": null + }, + "tracing.istio-system": { + "name": "tracing", + "objectType": "service", + "valid": true, + "checks": [], + "references": null + }, + "zipkin.istio-system": { + "name": "zipkin", + "objectType": "service", + "valid": true, + "checks": [], + "references": null + } + } + } +} diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/istio-system/services/grafana.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/istio-system/services/grafana.json new file mode 100644 index 0000000000..50e0d00a62 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/istio-system/services/grafana.json @@ -0,0 +1,353 @@ +{ + "cluster": "Kubernetes", + "destinationRules": [], + "endpoints": [ + { + "addresses": [ + { + "kind": "Pod", + "name": "grafana-6f68dfd8f4-xrqfh", + "ip": "10.244.0.29", + "port": 0 + } + ], + "ports": [ + { + "name": "service", + "protocol": "TCP", + "port": 3000 + } + ] + } + ], + "istioPermissions": { + "create": true, + "update": true, + "delete": true + }, + "istioSidecar": false, + "k8sHTTPRoutes": [], + "k8sReferenceGrants": null, + "service": { + "name": "grafana", + "createdAt": "2024-02-26T09:50:00Z", + "resourceVersion": "630", + "namespace": { + "name": "istio-system", + "cluster": "", + "isAmbient": false, + "labels": null, + "annotations": null + }, + "labels": { + "app.kubernetes.io/instance": "grafana", + "app.kubernetes.io/managed-by": "Helm", + "app.kubernetes.io/name": "grafana", + "app.kubernetes.io/version": "10.1.5", + "helm.sh/chart": "grafana-6.61.1" + }, + "selectors": { + "app.kubernetes.io/instance": "grafana", + "app.kubernetes.io/name": "grafana" + }, + "type": "ClusterIP", + "ip": "10.105.137.13", + "ports": [ + { + "name": "service", + "protocol": "TCP", + "port": 3000 + } + ], + "externalName": "", + "annotations": { + "kubectl.kubernetes.io/last-applied-configuration": "{\"apiVersion\":\"v1\",\"kind\":\"Service\",\"metadata\":{\"annotations\":{},\"labels\":{\"app.kubernetes.io/instance\":\"grafana\",\"app.kubernetes.io/managed-by\":\"Helm\",\"app.kubernetes.io/name\":\"grafana\",\"app.kubernetes.io/version\":\"10.1.5\",\"helm.sh/chart\":\"grafana-6.61.1\"},\"name\":\"grafana\",\"namespace\":\"istio-system\"},\"spec\":{\"ports\":[{\"name\":\"service\",\"port\":3000,\"protocol\":\"TCP\",\"targetPort\":3000}],\"selector\":{\"app.kubernetes.io/instance\":\"grafana\",\"app.kubernetes.io/name\":\"grafana\"},\"type\":\"ClusterIP\"}}\n" + }, + "healthAnnotations": {}, + "additionalDetails": [] + }, + "serviceEntries": null, + "virtualServices": [], + "workloads": [ + { + "name": "grafana", + "cluster": "Kubernetes", + "type": "Deployment", + "createdAt": "2024-02-26T09:50:00Z", + "resourceVersion": "739", + "istioSidecar": false, + "istioAmbient": false, + "additionalDetailSample": null, + "labels": { + "app.kubernetes.io/instance": "grafana", + "app.kubernetes.io/name": "grafana", + "sidecar.istio.io/inject": "false" + }, + "appLabel": false, + "versionLabel": false, + "podCount": 1, + "annotations": { + "deployment.kubernetes.io/revision": "1", + "kubectl.kubernetes.io/last-applied-configuration": "{\"apiVersion\":\"apps/v1\",\"kind\":\"Deployment\",\"metadata\":{\"annotations\":{},\"labels\":{\"app.kubernetes.io/instance\":\"grafana\",\"app.kubernetes.io/managed-by\":\"Helm\",\"app.kubernetes.io/name\":\"grafana\",\"app.kubernetes.io/version\":\"10.1.5\",\"helm.sh/chart\":\"grafana-6.61.1\"},\"name\":\"grafana\",\"namespace\":\"istio-system\"},\"spec\":{\"replicas\":1,\"revisionHistoryLimit\":10,\"selector\":{\"matchLabels\":{\"app.kubernetes.io/instance\":\"grafana\",\"app.kubernetes.io/name\":\"grafana\"}},\"strategy\":{\"type\":\"RollingUpdate\"},\"template\":{\"metadata\":{\"annotations\":{\"checksum/config\":\"e6dc57066020dcc7ec73db1b5e39370203985e5071b47f1f1414ee5c42679d46\",\"checksum/dashboards-json-config\":\"01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b\",\"checksum/sc-dashboard-provider-config\":\"01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b\",\"kubectl.kubernetes.io/default-container\":\"grafana\"},\"labels\":{\"app.kubernetes.io/instance\":\"grafana\",\"app.kubernetes.io/name\":\"grafana\",\"sidecar.istio.io/inject\":\"false\"}},\"spec\":{\"automountServiceAccountToken\":true,\"containers\":[{\"env\":[{\"name\":\"POD_IP\",\"valueFrom\":{\"fieldRef\":{\"fieldPath\":\"status.podIP\"}}},{\"name\":\"GF_PATHS_DATA\",\"value\":\"/var/lib/grafana/\"},{\"name\":\"GF_PATHS_LOGS\",\"value\":\"/var/log/grafana\"},{\"name\":\"GF_PATHS_PLUGINS\",\"value\":\"/var/lib/grafana/plugins\"},{\"name\":\"GF_PATHS_PROVISIONING\",\"value\":\"/etc/grafana/provisioning\"},{\"name\":\"GF_AUTH_ANONYMOUS_ENABLED\",\"value\":\"true\"},{\"name\":\"GF_AUTH_ANONYMOUS_ORG_ROLE\",\"value\":\"Admin\"},{\"name\":\"GF_AUTH_BASIC_ENABLED\",\"value\":\"false\"},{\"name\":\"GF_SECURITY_ADMIN_PASSWORD\",\"value\":\"admin\"},{\"name\":\"GF_SECURITY_ADMIN_USER\",\"value\":\"admin\"}],\"image\":\"docker.io/grafana/grafana:10.1.5\",\"imagePullPolicy\":\"IfNotPresent\",\"livenessProbe\":{\"failureThreshold\":10,\"httpGet\":{\"path\":\"/api/health\",\"port\":3000},\"initialDelaySeconds\":60,\"timeoutSeconds\":30},\"name\":\"grafana\",\"ports\":[{\"containerPort\":3000,\"name\":\"grafana\",\"protocol\":\"TCP\"},{\"containerPort\":9094,\"name\":\"gossip-tcp\",\"protocol\":\"TCP\"},{\"containerPort\":9094,\"name\":\"gossip-udp\",\"protocol\":\"UDP\"}],\"readinessProbe\":{\"httpGet\":{\"path\":\"/api/health\",\"port\":3000}},\"securityContext\":{\"allowPrivilegeEscalation\":false,\"capabilities\":{\"drop\":[\"ALL\"]},\"seccompProfile\":{\"type\":\"RuntimeDefault\"}},\"volumeMounts\":[{\"mountPath\":\"/etc/grafana/grafana.ini\",\"name\":\"config\",\"subPath\":\"grafana.ini\"},{\"mountPath\":\"/var/lib/grafana\",\"name\":\"storage\"},{\"mountPath\":\"/var/lib/grafana/dashboards/istio\",\"name\":\"dashboards-istio\"},{\"mountPath\":\"/var/lib/grafana/dashboards/istio-services\",\"name\":\"dashboards-istio-services\"},{\"mountPath\":\"/etc/grafana/provisioning/datasources/datasources.yaml\",\"name\":\"config\",\"subPath\":\"datasources.yaml\"},{\"mountPath\":\"/etc/grafana/provisioning/dashboards/dashboardproviders.yaml\",\"name\":\"config\",\"subPath\":\"dashboardproviders.yaml\"}]}],\"enableServiceLinks\":true,\"serviceAccountName\":\"grafana\",\"volumes\":[{\"configMap\":{\"name\":\"grafana\"},\"name\":\"config\"},{\"configMap\":{\"name\":\"istio-grafana-dashboards\"},\"name\":\"dashboards-istio\"},{\"configMap\":{\"name\":\"istio-services-grafana-dashboards\"},\"name\":\"dashboards-istio-services\"},{\"emptyDir\":{},\"name\":\"storage\"}]}}}}\n" + }, + "healthAnnotations": {}, + "istioReferences": [], + "dashboardAnnotations": null, + "serviceAccountNames": ["grafana"], + "health": { + "workloadStatus": null, + "requests": { + "inbound": null, + "outbound": null, + "healthAnnotations": null + } + } + } + ], + "health": { + "requests": { + "inbound": {}, + "outbound": {}, + "healthAnnotations": {} + } + }, + "namespaceMTLS": { + "status": "MTLS_NOT_ENABLED", + "autoMTLSEnabled": true, + "minTLS": "" + }, + "subServices": [ + { + "name": "grafana", + "namespace": "", + "istioSidecar": false, + "cluster": "", + "istioAmbient": false, + "appLabel": false, + "additionalDetailSample": null, + "annotations": null, + "healthAnnotations": null, + "ports": { + "service": 3000 + }, + "labels": null, + "selector": null, + "istioReferences": null, + "kialiWizard": "", + "serviceRegistry": "", + "health": { + "requests": { + "inbound": null, + "outbound": null, + "healthAnnotations": null + } + } + } + ], + "validations": { + "gateway": { + "bookinfo-gateway.bookinfo": { + "name": "bookinfo-gateway", + "objectType": "gateway", + "valid": true, + "checks": [], + "references": null + } + }, + "service": { + "grafana.istio-system": { + "name": "grafana", + "objectType": "service", + "valid": true, + "checks": [], + "references": null + } + }, + "virtualservice": { + "bookinfo.bookinfo": { + "name": "bookinfo", + "objectType": "virtualservice", + "valid": true, + "checks": [], + "references": null + } + }, + "workload": { + "cars-v1.travel-agency": { + "name": "cars-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "control.travel-control": { + "name": "control", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "details-v1.bookinfo": { + "name": "details-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "discounts-v1.travel-agency": { + "name": "discounts-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "flights-v1.travel-agency": { + "name": "flights-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "grafana.istio-system": { + "name": "grafana", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "hotels-v1.travel-agency": { + "name": "hotels-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "insurances-v1.travel-agency": { + "name": "insurances-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "istio-egressgateway.istio-system": { + "name": "istio-egressgateway", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "istio-ingressgateway.istio-system": { + "name": "istio-ingressgateway", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "istiod.istio-system": { + "name": "istiod", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "jaeger.istio-system": { + "name": "jaeger", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "kiali-traffic-generator.bookinfo": { + "name": "kiali-traffic-generator", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "kiali.istio-system": { + "name": "kiali", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "mysqldb-v1.travel-agency": { + "name": "mysqldb-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "productpage-v1.bookinfo": { + "name": "productpage-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "prometheus.istio-system": { + "name": "prometheus", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "ratings-v1.bookinfo": { + "name": "ratings-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "reviews-v1.bookinfo": { + "name": "reviews-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "reviews-v2.bookinfo": { + "name": "reviews-v2", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "reviews-v3.bookinfo": { + "name": "reviews-v3", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "travels-v1.travel-agency": { + "name": "travels-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "travels.travel-portal": { + "name": "travels", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "viaggi.travel-portal": { + "name": "viaggi", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "voyages.travel-portal": { + "name": "voyages", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + } + } + } +} diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/istio-system/services/istio_egressgateway.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/istio-system/services/istio_egressgateway.json new file mode 100644 index 0000000000..c0e4055456 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/istio-system/services/istio_egressgateway.json @@ -0,0 +1,373 @@ +{ + "cluster": "Kubernetes", + "destinationRules": [], + "endpoints": [ + { + "addresses": [ + { + "kind": "Pod", + "name": "istio-egressgateway-5c6fb75bff-jvk5x", + "ip": "10.244.0.30", + "port": 0 + } + ], + "ports": [ + { + "name": "http2", + "protocol": "TCP", + "port": 8080 + }, + { + "name": "https", + "protocol": "TCP", + "port": 8443 + } + ] + } + ], + "istioPermissions": { + "create": true, + "update": true, + "delete": true + }, + "istioSidecar": false, + "k8sHTTPRoutes": [], + "k8sReferenceGrants": null, + "service": { + "name": "istio-egressgateway", + "createdAt": "2024-02-26T09:49:49Z", + "resourceVersion": "549", + "namespace": { + "name": "istio-system", + "cluster": "", + "isAmbient": false, + "labels": null, + "annotations": null + }, + "labels": { + "app": "istio-egressgateway", + "install.operator.istio.io/owning-resource": "installed-state", + "install.operator.istio.io/owning-resource-namespace": "istio-system", + "istio": "egressgateway", + "istio.io/rev": "default", + "operator.istio.io/component": "EgressGateways", + "operator.istio.io/managed": "Reconcile", + "operator.istio.io/version": "1.21.0-rc.0", + "release": "istio" + }, + "selectors": { + "app": "istio-egressgateway", + "istio": "egressgateway" + }, + "type": "ClusterIP", + "ip": "10.97.150.129", + "ports": [ + { + "name": "http2", + "protocol": "TCP", + "port": 80 + }, + { + "name": "https", + "protocol": "TCP", + "port": 443 + } + ], + "externalName": "", + "annotations": {}, + "healthAnnotations": {}, + "additionalDetails": [] + }, + "serviceEntries": null, + "virtualServices": [], + "workloads": [ + { + "name": "istio-egressgateway", + "cluster": "Kubernetes", + "type": "Deployment", + "createdAt": "2024-02-26T09:49:49Z", + "resourceVersion": "24591", + "istioSidecar": false, + "istioAmbient": false, + "additionalDetailSample": null, + "labels": { + "app": "istio-egressgateway", + "chart": "gateways", + "heritage": "Tiller", + "install.operator.istio.io/owning-resource": "unknown", + "istio": "egressgateway", + "istio.io/rev": "default", + "operator.istio.io/component": "EgressGateways", + "release": "istio", + "service.istio.io/canonical-name": "istio-egressgateway", + "service.istio.io/canonical-revision": "latest", + "sidecar.istio.io/inject": "false" + }, + "appLabel": true, + "versionLabel": false, + "podCount": 1, + "annotations": { + "deployment.kubernetes.io/revision": "1" + }, + "healthAnnotations": {}, + "istioReferences": [], + "dashboardAnnotations": null, + "serviceAccountNames": ["istio-egressgateway-service-account"], + "health": { + "workloadStatus": null, + "requests": { + "inbound": null, + "outbound": null, + "healthAnnotations": null + } + } + } + ], + "health": { + "requests": { + "inbound": {}, + "outbound": {}, + "healthAnnotations": {} + } + }, + "namespaceMTLS": { + "status": "MTLS_NOT_ENABLED", + "autoMTLSEnabled": true, + "minTLS": "" + }, + "subServices": [ + { + "name": "istio-egressgateway", + "namespace": "", + "istioSidecar": false, + "cluster": "", + "istioAmbient": false, + "appLabel": false, + "additionalDetailSample": null, + "annotations": null, + "healthAnnotations": null, + "ports": { + "http2": 80, + "https": 443 + }, + "labels": null, + "selector": null, + "istioReferences": null, + "kialiWizard": "", + "serviceRegistry": "", + "health": { + "requests": { + "inbound": null, + "outbound": null, + "healthAnnotations": null + } + } + } + ], + "validations": { + "gateway": { + "bookinfo-gateway.bookinfo": { + "name": "bookinfo-gateway", + "objectType": "gateway", + "valid": true, + "checks": [], + "references": null + } + }, + "service": { + "istio-egressgateway.istio-system": { + "name": "istio-egressgateway", + "objectType": "service", + "valid": true, + "checks": [], + "references": null + } + }, + "virtualservice": { + "bookinfo.bookinfo": { + "name": "bookinfo", + "objectType": "virtualservice", + "valid": true, + "checks": [], + "references": null + } + }, + "workload": { + "cars-v1.travel-agency": { + "name": "cars-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "control.travel-control": { + "name": "control", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "details-v1.bookinfo": { + "name": "details-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "discounts-v1.travel-agency": { + "name": "discounts-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "flights-v1.travel-agency": { + "name": "flights-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "grafana.istio-system": { + "name": "grafana", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "hotels-v1.travel-agency": { + "name": "hotels-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "insurances-v1.travel-agency": { + "name": "insurances-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "istio-egressgateway.istio-system": { + "name": "istio-egressgateway", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "istio-ingressgateway.istio-system": { + "name": "istio-ingressgateway", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "istiod.istio-system": { + "name": "istiod", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "jaeger.istio-system": { + "name": "jaeger", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "kiali-traffic-generator.bookinfo": { + "name": "kiali-traffic-generator", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "kiali.istio-system": { + "name": "kiali", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "mysqldb-v1.travel-agency": { + "name": "mysqldb-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "productpage-v1.bookinfo": { + "name": "productpage-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "prometheus.istio-system": { + "name": "prometheus", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "ratings-v1.bookinfo": { + "name": "ratings-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "reviews-v1.bookinfo": { + "name": "reviews-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "reviews-v2.bookinfo": { + "name": "reviews-v2", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "reviews-v3.bookinfo": { + "name": "reviews-v3", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "travels-v1.travel-agency": { + "name": "travels-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "travels.travel-portal": { + "name": "travels", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "viaggi.travel-portal": { + "name": "viaggi", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "voyages.travel-portal": { + "name": "voyages", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + } + } + } +} diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/istio-system/services/istio_ingressgateway.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/istio-system/services/istio_ingressgateway.json new file mode 100644 index 0000000000..a6b500f05b --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/istio-system/services/istio_ingressgateway.json @@ -0,0 +1,406 @@ +{ + "cluster": "Kubernetes", + "destinationRules": [], + "endpoints": [ + { + "addresses": [ + { + "kind": "Pod", + "name": "istio-ingressgateway-6687fd9779-zg9f5", + "ip": "10.244.0.27", + "port": 0 + } + ], + "ports": [ + { + "name": "tls", + "protocol": "TCP", + "port": 15443 + }, + { + "name": "status-port", + "protocol": "TCP", + "port": 15021 + }, + { + "name": "tcp", + "protocol": "TCP", + "port": 31400 + }, + { + "name": "http2", + "protocol": "TCP", + "port": 8080 + }, + { + "name": "https", + "protocol": "TCP", + "port": 8443 + } + ] + } + ], + "istioPermissions": { + "create": true, + "update": true, + "delete": true + }, + "istioSidecar": false, + "k8sHTTPRoutes": [], + "k8sReferenceGrants": null, + "service": { + "name": "istio-ingressgateway", + "createdAt": "2024-02-26T09:49:49Z", + "resourceVersion": "558", + "namespace": { + "name": "istio-system", + "cluster": "", + "isAmbient": false, + "labels": null, + "annotations": null + }, + "labels": { + "app": "istio-ingressgateway", + "install.operator.istio.io/owning-resource": "installed-state", + "install.operator.istio.io/owning-resource-namespace": "istio-system", + "istio": "ingressgateway", + "istio.io/rev": "default", + "operator.istio.io/component": "IngressGateways", + "operator.istio.io/managed": "Reconcile", + "operator.istio.io/version": "1.21.0-rc.0", + "release": "istio" + }, + "selectors": { + "app": "istio-ingressgateway", + "istio": "ingressgateway" + }, + "type": "LoadBalancer", + "ip": "10.110.59.37", + "ports": [ + { + "name": "status-port", + "protocol": "TCP", + "port": 15021 + }, + { + "name": "http2", + "protocol": "TCP", + "port": 80 + }, + { + "name": "https", + "protocol": "TCP", + "port": 443 + }, + { + "name": "tcp", + "protocol": "TCP", + "port": 31400 + }, + { + "name": "tls", + "protocol": "TCP", + "port": 15443 + } + ], + "externalName": "", + "annotations": {}, + "healthAnnotations": {}, + "additionalDetails": [] + }, + "serviceEntries": null, + "virtualServices": [], + "workloads": [ + { + "name": "istio-ingressgateway", + "cluster": "Kubernetes", + "type": "Deployment", + "createdAt": "2024-02-26T09:49:49Z", + "resourceVersion": "24602", + "istioSidecar": false, + "istioAmbient": false, + "additionalDetailSample": null, + "labels": { + "app": "istio-ingressgateway", + "chart": "gateways", + "heritage": "Tiller", + "install.operator.istio.io/owning-resource": "unknown", + "istio": "ingressgateway", + "istio.io/rev": "default", + "operator.istio.io/component": "IngressGateways", + "release": "istio", + "service.istio.io/canonical-name": "istio-ingressgateway", + "service.istio.io/canonical-revision": "latest", + "sidecar.istio.io/inject": "false" + }, + "appLabel": true, + "versionLabel": false, + "podCount": 1, + "annotations": { + "deployment.kubernetes.io/revision": "1" + }, + "healthAnnotations": {}, + "istioReferences": [], + "dashboardAnnotations": null, + "serviceAccountNames": ["istio-ingressgateway-service-account"], + "health": { + "workloadStatus": null, + "requests": { + "inbound": null, + "outbound": null, + "healthAnnotations": null + } + } + } + ], + "health": { + "requests": { + "inbound": {}, + "outbound": {}, + "healthAnnotations": {} + } + }, + "namespaceMTLS": { + "status": "MTLS_NOT_ENABLED", + "autoMTLSEnabled": true, + "minTLS": "" + }, + "subServices": [ + { + "name": "istio-ingressgateway", + "namespace": "", + "istioSidecar": false, + "cluster": "", + "istioAmbient": false, + "appLabel": false, + "additionalDetailSample": null, + "annotations": null, + "healthAnnotations": null, + "ports": { + "http2": 80, + "https": 443, + "status-port": 15021, + "tcp": 31400, + "tls": 15443 + }, + "labels": null, + "selector": null, + "istioReferences": null, + "kialiWizard": "", + "serviceRegistry": "", + "health": { + "requests": { + "inbound": null, + "outbound": null, + "healthAnnotations": null + } + } + } + ], + "validations": { + "gateway": { + "bookinfo-gateway.bookinfo": { + "name": "bookinfo-gateway", + "objectType": "gateway", + "valid": true, + "checks": [], + "references": null + } + }, + "service": { + "istio-ingressgateway.istio-system": { + "name": "istio-ingressgateway", + "objectType": "service", + "valid": true, + "checks": [], + "references": null + } + }, + "virtualservice": { + "bookinfo.bookinfo": { + "name": "bookinfo", + "objectType": "virtualservice", + "valid": true, + "checks": [], + "references": null + } + }, + "workload": { + "cars-v1.travel-agency": { + "name": "cars-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "control.travel-control": { + "name": "control", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "details-v1.bookinfo": { + "name": "details-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "discounts-v1.travel-agency": { + "name": "discounts-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "flights-v1.travel-agency": { + "name": "flights-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "grafana.istio-system": { + "name": "grafana", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "hotels-v1.travel-agency": { + "name": "hotels-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "insurances-v1.travel-agency": { + "name": "insurances-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "istio-egressgateway.istio-system": { + "name": "istio-egressgateway", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "istio-ingressgateway.istio-system": { + "name": "istio-ingressgateway", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "istiod.istio-system": { + "name": "istiod", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "jaeger.istio-system": { + "name": "jaeger", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "kiali-traffic-generator.bookinfo": { + "name": "kiali-traffic-generator", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "kiali.istio-system": { + "name": "kiali", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "mysqldb-v1.travel-agency": { + "name": "mysqldb-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "productpage-v1.bookinfo": { + "name": "productpage-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "prometheus.istio-system": { + "name": "prometheus", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "ratings-v1.bookinfo": { + "name": "ratings-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "reviews-v1.bookinfo": { + "name": "reviews-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "reviews-v2.bookinfo": { + "name": "reviews-v2", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "reviews-v3.bookinfo": { + "name": "reviews-v3", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "travels-v1.travel-agency": { + "name": "travels-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "travels.travel-portal": { + "name": "travels", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "viaggi.travel-portal": { + "name": "viaggi", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "voyages.travel-portal": { + "name": "voyages", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + } + } + } +} diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/istio-system/services/istiod.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/istio-system/services/istiod.json new file mode 100644 index 0000000000..d9c89d6f31 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/istio-system/services/istiod.json @@ -0,0 +1,390 @@ +{ + "cluster": "Kubernetes", + "destinationRules": [], + "endpoints": [ + { + "addresses": [ + { + "kind": "Pod", + "name": "istiod-75d89c99b6-kvnb8", + "ip": "10.244.0.23", + "port": 0 + } + ], + "ports": [ + { + "name": "https-dns", + "protocol": "TCP", + "port": 15012 + }, + { + "name": "grpc-xds", + "protocol": "TCP", + "port": 15010 + }, + { + "name": "https-webhook", + "protocol": "TCP", + "port": 15017 + }, + { + "name": "http-monitoring", + "protocol": "TCP", + "port": 15014 + } + ] + } + ], + "istioPermissions": { + "create": true, + "update": true, + "delete": true + }, + "istioSidecar": false, + "k8sHTTPRoutes": [], + "k8sReferenceGrants": null, + "service": { + "name": "istiod", + "createdAt": "2024-02-26T09:49:41Z", + "resourceVersion": "474", + "namespace": { + "name": "istio-system", + "cluster": "", + "isAmbient": false, + "labels": null, + "annotations": null + }, + "labels": { + "app": "istiod", + "install.operator.istio.io/owning-resource": "installed-state", + "install.operator.istio.io/owning-resource-namespace": "istio-system", + "istio": "pilot", + "istio.io/rev": "default", + "operator.istio.io/component": "Pilot", + "operator.istio.io/managed": "Reconcile", + "operator.istio.io/version": "1.21.0-rc.0", + "release": "istio" + }, + "selectors": { + "app": "istiod", + "istio": "pilot" + }, + "type": "ClusterIP", + "ip": "10.101.0.116", + "ports": [ + { + "name": "grpc-xds", + "protocol": "TCP", + "port": 15010 + }, + { + "name": "https-dns", + "protocol": "TCP", + "port": 15012 + }, + { + "name": "https-webhook", + "protocol": "TCP", + "port": 443 + }, + { + "name": "http-monitoring", + "protocol": "TCP", + "port": 15014 + } + ], + "externalName": "", + "annotations": {}, + "healthAnnotations": {}, + "additionalDetails": [] + }, + "serviceEntries": null, + "virtualServices": [], + "workloads": [ + { + "name": "istiod", + "cluster": "Kubernetes", + "type": "Deployment", + "createdAt": "2024-02-26T09:49:41Z", + "resourceVersion": "24541", + "istioSidecar": false, + "istioAmbient": false, + "additionalDetailSample": null, + "labels": { + "app": "istiod", + "install.operator.istio.io/owning-resource": "unknown", + "istio": "pilot", + "istio.io/rev": "default", + "operator.istio.io/component": "Pilot", + "sidecar.istio.io/inject": "false" + }, + "appLabel": true, + "versionLabel": false, + "podCount": 1, + "annotations": { + "deployment.kubernetes.io/revision": "1" + }, + "healthAnnotations": {}, + "istioReferences": [], + "dashboardAnnotations": null, + "serviceAccountNames": ["istiod"], + "health": { + "workloadStatus": null, + "requests": { + "inbound": null, + "outbound": null, + "healthAnnotations": null + } + } + } + ], + "health": { + "requests": { + "inbound": {}, + "outbound": {}, + "healthAnnotations": {} + } + }, + "namespaceMTLS": { + "status": "MTLS_NOT_ENABLED", + "autoMTLSEnabled": true, + "minTLS": "" + }, + "subServices": [ + { + "name": "istiod", + "namespace": "", + "istioSidecar": false, + "cluster": "", + "istioAmbient": false, + "appLabel": false, + "additionalDetailSample": null, + "annotations": null, + "healthAnnotations": null, + "ports": { + "grpc-xds": 15010, + "http-monitoring": 15014, + "https-dns": 15012, + "https-webhook": 443 + }, + "labels": null, + "selector": null, + "istioReferences": null, + "kialiWizard": "", + "serviceRegistry": "", + "health": { + "requests": { + "inbound": null, + "outbound": null, + "healthAnnotations": null + } + } + } + ], + "validations": { + "gateway": { + "bookinfo-gateway.bookinfo": { + "name": "bookinfo-gateway", + "objectType": "gateway", + "valid": true, + "checks": [], + "references": null + } + }, + "service": { + "istiod.istio-system": { + "name": "istiod", + "objectType": "service", + "valid": true, + "checks": [], + "references": null + } + }, + "virtualservice": { + "bookinfo.bookinfo": { + "name": "bookinfo", + "objectType": "virtualservice", + "valid": true, + "checks": [], + "references": null + } + }, + "workload": { + "cars-v1.travel-agency": { + "name": "cars-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "control.travel-control": { + "name": "control", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "details-v1.bookinfo": { + "name": "details-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "discounts-v1.travel-agency": { + "name": "discounts-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "flights-v1.travel-agency": { + "name": "flights-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "grafana.istio-system": { + "name": "grafana", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "hotels-v1.travel-agency": { + "name": "hotels-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "insurances-v1.travel-agency": { + "name": "insurances-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "istio-egressgateway.istio-system": { + "name": "istio-egressgateway", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "istio-ingressgateway.istio-system": { + "name": "istio-ingressgateway", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "istiod.istio-system": { + "name": "istiod", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "jaeger.istio-system": { + "name": "jaeger", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "kiali-traffic-generator.bookinfo": { + "name": "kiali-traffic-generator", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "kiali.istio-system": { + "name": "kiali", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "mysqldb-v1.travel-agency": { + "name": "mysqldb-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "productpage-v1.bookinfo": { + "name": "productpage-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "prometheus.istio-system": { + "name": "prometheus", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "ratings-v1.bookinfo": { + "name": "ratings-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "reviews-v1.bookinfo": { + "name": "reviews-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "reviews-v2.bookinfo": { + "name": "reviews-v2", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "reviews-v3.bookinfo": { + "name": "reviews-v3", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "travels-v1.travel-agency": { + "name": "travels-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "travels.travel-portal": { + "name": "travels", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "viaggi.travel-portal": { + "name": "viaggi", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "voyages.travel-portal": { + "name": "voyages", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + } + } + } +} diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/istio-system/services/jaeger_collector.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/istio-system/services/jaeger_collector.json new file mode 100644 index 0000000000..9d7945fc99 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/istio-system/services/jaeger_collector.json @@ -0,0 +1,391 @@ +{ + "cluster": "Kubernetes", + "destinationRules": [], + "endpoints": [ + { + "addresses": [ + { + "kind": "Pod", + "name": "jaeger-7d7d59b9d-84qqj", + "ip": "10.244.0.17", + "port": 0 + } + ], + "ports": [ + { + "name": "http-zipkin", + "protocol": "TCP", + "port": 9411 + }, + { + "name": "jaeger-collector-grpc", + "protocol": "TCP", + "port": 14250 + }, + { + "name": "grpc-otel", + "protocol": "TCP", + "port": 4317 + }, + { + "name": "jaeger-collector-http", + "protocol": "TCP", + "port": 14268 + }, + { + "name": "http-otel", + "protocol": "TCP", + "port": 4318 + } + ] + } + ], + "istioPermissions": { + "create": true, + "update": true, + "delete": true + }, + "istioSidecar": false, + "k8sHTTPRoutes": [], + "k8sReferenceGrants": null, + "service": { + "name": "jaeger-collector", + "createdAt": "2024-02-26T09:50:00Z", + "resourceVersion": "671", + "namespace": { + "name": "istio-system", + "cluster": "", + "isAmbient": false, + "labels": null, + "annotations": null + }, + "labels": { + "app": "jaeger" + }, + "selectors": { + "app": "jaeger" + }, + "type": "ClusterIP", + "ip": "10.110.59.129", + "ports": [ + { + "name": "jaeger-collector-http", + "protocol": "TCP", + "port": 14268 + }, + { + "name": "jaeger-collector-grpc", + "protocol": "TCP", + "port": 14250 + }, + { + "name": "http-zipkin", + "protocol": "TCP", + "port": 9411 + }, + { + "name": "grpc-otel", + "protocol": "TCP", + "port": 4317 + }, + { + "name": "http-otel", + "protocol": "TCP", + "port": 4318 + } + ], + "externalName": "", + "annotations": { + "kubectl.kubernetes.io/last-applied-configuration": "{\"apiVersion\":\"v1\",\"kind\":\"Service\",\"metadata\":{\"annotations\":{},\"labels\":{\"app\":\"jaeger\"},\"name\":\"jaeger-collector\",\"namespace\":\"istio-system\"},\"spec\":{\"ports\":[{\"name\":\"jaeger-collector-http\",\"port\":14268,\"protocol\":\"TCP\",\"targetPort\":14268},{\"name\":\"jaeger-collector-grpc\",\"port\":14250,\"protocol\":\"TCP\",\"targetPort\":14250},{\"name\":\"http-zipkin\",\"port\":9411,\"targetPort\":9411},{\"name\":\"grpc-otel\",\"port\":4317},{\"name\":\"http-otel\",\"port\":4318}],\"selector\":{\"app\":\"jaeger\"},\"type\":\"ClusterIP\"}}\n" + }, + "healthAnnotations": {}, + "additionalDetails": [] + }, + "serviceEntries": null, + "virtualServices": [], + "workloads": [ + { + "name": "jaeger", + "cluster": "Kubernetes", + "type": "Deployment", + "createdAt": "2024-02-26T09:50:00Z", + "resourceVersion": "727", + "istioSidecar": false, + "istioAmbient": false, + "additionalDetailSample": null, + "labels": { + "app": "jaeger", + "sidecar.istio.io/inject": "false" + }, + "appLabel": true, + "versionLabel": false, + "podCount": 1, + "annotations": { + "deployment.kubernetes.io/revision": "1", + "kubectl.kubernetes.io/last-applied-configuration": "{\"apiVersion\":\"apps/v1\",\"kind\":\"Deployment\",\"metadata\":{\"annotations\":{},\"labels\":{\"app\":\"jaeger\"},\"name\":\"jaeger\",\"namespace\":\"istio-system\"},\"spec\":{\"selector\":{\"matchLabels\":{\"app\":\"jaeger\"}},\"template\":{\"metadata\":{\"annotations\":{\"prometheus.io/port\":\"14269\",\"prometheus.io/scrape\":\"true\"},\"labels\":{\"app\":\"jaeger\",\"sidecar.istio.io/inject\":\"false\"}},\"spec\":{\"containers\":[{\"env\":[{\"name\":\"BADGER_EPHEMERAL\",\"value\":\"false\"},{\"name\":\"SPAN_STORAGE_TYPE\",\"value\":\"badger\"},{\"name\":\"BADGER_DIRECTORY_VALUE\",\"value\":\"/badger/data\"},{\"name\":\"BADGER_DIRECTORY_KEY\",\"value\":\"/badger/key\"},{\"name\":\"COLLECTOR_ZIPKIN_HOST_PORT\",\"value\":\":9411\"},{\"name\":\"MEMORY_MAX_TRACES\",\"value\":\"50000\"},{\"name\":\"QUERY_BASE_PATH\",\"value\":\"/jaeger\"}],\"image\":\"docker.io/jaegertracing/all-in-one:1.46\",\"livenessProbe\":{\"httpGet\":{\"path\":\"/\",\"port\":14269}},\"name\":\"jaeger\",\"readinessProbe\":{\"httpGet\":{\"path\":\"/\",\"port\":14269}},\"resources\":{\"requests\":{\"cpu\":\"10m\"}},\"volumeMounts\":[{\"mountPath\":\"/badger\",\"name\":\"data\"}]}],\"volumes\":[{\"emptyDir\":{},\"name\":\"data\"}]}}}}\n" + }, + "healthAnnotations": {}, + "istioReferences": [], + "dashboardAnnotations": null, + "serviceAccountNames": ["default"], + "health": { + "workloadStatus": null, + "requests": { + "inbound": null, + "outbound": null, + "healthAnnotations": null + } + } + } + ], + "health": { + "requests": { + "inbound": {}, + "outbound": {}, + "healthAnnotations": {} + } + }, + "namespaceMTLS": { + "status": "MTLS_NOT_ENABLED", + "autoMTLSEnabled": true, + "minTLS": "" + }, + "subServices": [ + { + "name": "jaeger-collector", + "namespace": "", + "istioSidecar": false, + "cluster": "", + "istioAmbient": false, + "appLabel": false, + "additionalDetailSample": null, + "annotations": null, + "healthAnnotations": null, + "ports": { + "grpc-otel": 4317, + "http-otel": 4318, + "http-zipkin": 9411, + "jaeger-collector-grpc": 14250, + "jaeger-collector-http": 14268 + }, + "labels": null, + "selector": null, + "istioReferences": null, + "kialiWizard": "", + "serviceRegistry": "", + "health": { + "requests": { + "inbound": null, + "outbound": null, + "healthAnnotations": null + } + } + } + ], + "validations": { + "gateway": { + "bookinfo-gateway.bookinfo": { + "name": "bookinfo-gateway", + "objectType": "gateway", + "valid": true, + "checks": [], + "references": null + } + }, + "service": { + "jaeger-collector.istio-system": { + "name": "jaeger-collector", + "objectType": "service", + "valid": true, + "checks": [], + "references": null + } + }, + "virtualservice": { + "bookinfo.bookinfo": { + "name": "bookinfo", + "objectType": "virtualservice", + "valid": true, + "checks": [], + "references": null + } + }, + "workload": { + "cars-v1.travel-agency": { + "name": "cars-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "control.travel-control": { + "name": "control", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "details-v1.bookinfo": { + "name": "details-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "discounts-v1.travel-agency": { + "name": "discounts-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "flights-v1.travel-agency": { + "name": "flights-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "grafana.istio-system": { + "name": "grafana", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "hotels-v1.travel-agency": { + "name": "hotels-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "insurances-v1.travel-agency": { + "name": "insurances-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "istio-egressgateway.istio-system": { + "name": "istio-egressgateway", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "istio-ingressgateway.istio-system": { + "name": "istio-ingressgateway", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "istiod.istio-system": { + "name": "istiod", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "jaeger.istio-system": { + "name": "jaeger", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "kiali-traffic-generator.bookinfo": { + "name": "kiali-traffic-generator", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "kiali.istio-system": { + "name": "kiali", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "mysqldb-v1.travel-agency": { + "name": "mysqldb-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "productpage-v1.bookinfo": { + "name": "productpage-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "prometheus.istio-system": { + "name": "prometheus", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "ratings-v1.bookinfo": { + "name": "ratings-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "reviews-v1.bookinfo": { + "name": "reviews-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "reviews-v2.bookinfo": { + "name": "reviews-v2", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "reviews-v3.bookinfo": { + "name": "reviews-v3", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "travels-v1.travel-agency": { + "name": "travels-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "travels.travel-portal": { + "name": "travels", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "viaggi.travel-portal": { + "name": "viaggi", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "voyages.travel-portal": { + "name": "voyages", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + } + } + } +} diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/istio-system/services/kiali.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/istio-system/services/kiali.json new file mode 100644 index 0000000000..74f82caccf --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/istio-system/services/kiali.json @@ -0,0 +1,363 @@ +{ + "cluster": "Kubernetes", + "destinationRules": [], + "endpoints": [ + { + "addresses": [ + { + "kind": "Pod", + "name": "kiali-588bc98cd-ldld2", + "ip": "10.244.0.31", + "port": 0 + } + ], + "ports": [ + { + "name": "http", + "protocol": "TCP", + "port": 20001 + } + ] + } + ], + "istioPermissions": { + "create": true, + "update": true, + "delete": true + }, + "istioSidecar": false, + "k8sHTTPRoutes": [], + "k8sReferenceGrants": null, + "service": { + "name": "kiali", + "createdAt": "2024-02-26T09:50:58Z", + "resourceVersion": "810", + "namespace": { + "name": "istio-system", + "cluster": "", + "isAmbient": false, + "labels": null, + "annotations": null + }, + "labels": { + "app": "kiali", + "app.kubernetes.io/instance": "kiali", + "app.kubernetes.io/managed-by": "Helm", + "app.kubernetes.io/name": "kiali", + "app.kubernetes.io/part-of": "kiali", + "app.kubernetes.io/version": "v1.79.0", + "helm.sh/chart": "kiali-server-1.79.0", + "version": "v1.79.0" + }, + "selectors": { + "app.kubernetes.io/instance": "kiali", + "app.kubernetes.io/name": "kiali" + }, + "type": "ClusterIP", + "ip": "10.100.201.52", + "ports": [ + { + "name": "http", + "protocol": "TCP", + "appProtocol": "http", + "port": 20001 + } + ], + "externalName": "", + "annotations": { + "kubectl.kubernetes.io/last-applied-configuration": "{\"apiVersion\":\"v1\",\"kind\":\"Service\",\"metadata\":{\"annotations\":{},\"labels\":{\"app\":\"kiali\",\"app.kubernetes.io/instance\":\"kiali\",\"app.kubernetes.io/managed-by\":\"Helm\",\"app.kubernetes.io/name\":\"kiali\",\"app.kubernetes.io/part-of\":\"kiali\",\"app.kubernetes.io/version\":\"v1.79.0\",\"helm.sh/chart\":\"kiali-server-1.79.0\",\"version\":\"v1.79.0\"},\"name\":\"kiali\",\"namespace\":\"istio-system\"},\"spec\":{\"ports\":[{\"appProtocol\":\"http\",\"name\":\"http\",\"port\":20001,\"protocol\":\"TCP\"}],\"selector\":{\"app.kubernetes.io/instance\":\"kiali\",\"app.kubernetes.io/name\":\"kiali\"}}}\n" + }, + "healthAnnotations": {}, + "additionalDetails": [] + }, + "serviceEntries": null, + "virtualServices": [], + "workloads": [ + { + "name": "kiali", + "cluster": "Kubernetes", + "type": "Deployment", + "createdAt": "2024-02-26T09:50:58Z", + "resourceVersion": "24613", + "istioSidecar": false, + "istioAmbient": false, + "additionalDetailSample": null, + "labels": { + "app": "kiali", + "app.kubernetes.io/instance": "kiali", + "app.kubernetes.io/managed-by": "Helm", + "app.kubernetes.io/name": "kiali", + "app.kubernetes.io/part-of": "kiali", + "app.kubernetes.io/version": "v1.79.0", + "helm.sh/chart": "kiali-server-1.79.0", + "sidecar.istio.io/inject": "false", + "version": "v1.79.0" + }, + "appLabel": true, + "versionLabel": true, + "podCount": 1, + "annotations": { + "deployment.kubernetes.io/revision": "1", + "kubectl.kubernetes.io/last-applied-configuration": "{\"apiVersion\":\"apps/v1\",\"kind\":\"Deployment\",\"metadata\":{\"annotations\":{},\"labels\":{\"app\":\"kiali\",\"app.kubernetes.io/instance\":\"kiali\",\"app.kubernetes.io/managed-by\":\"Helm\",\"app.kubernetes.io/name\":\"kiali\",\"app.kubernetes.io/part-of\":\"kiali\",\"app.kubernetes.io/version\":\"v1.79.0\",\"helm.sh/chart\":\"kiali-server-1.79.0\",\"version\":\"v1.79.0\"},\"name\":\"kiali\",\"namespace\":\"istio-system\"},\"spec\":{\"replicas\":1,\"selector\":{\"matchLabels\":{\"app.kubernetes.io/instance\":\"kiali\",\"app.kubernetes.io/name\":\"kiali\"}},\"strategy\":{\"rollingUpdate\":{\"maxSurge\":1,\"maxUnavailable\":1},\"type\":\"RollingUpdate\"},\"template\":{\"metadata\":{\"annotations\":{\"checksum/config\":\"ce97ed2896a797e7aace42e18922786c78956f2ee862cfae70cc24ff1a9a600f\",\"kiali.io/dashboards\":\"go,kiali\",\"prometheus.io/port\":\"\",\"prometheus.io/scrape\":\"false\"},\"labels\":{\"app\":\"kiali\",\"app.kubernetes.io/instance\":\"kiali\",\"app.kubernetes.io/managed-by\":\"Helm\",\"app.kubernetes.io/name\":\"kiali\",\"app.kubernetes.io/part-of\":\"kiali\",\"app.kubernetes.io/version\":\"v1.79.0\",\"helm.sh/chart\":\"kiali-server-1.79.0\",\"sidecar.istio.io/inject\":\"false\",\"version\":\"v1.79.0\"},\"name\":\"kiali\"},\"spec\":{\"containers\":[{\"command\":[\"/opt/kiali/kiali\",\"-config\",\"/kiali-configuration/config.yaml\"],\"env\":[{\"name\":\"ACTIVE_NAMESPACE\",\"valueFrom\":{\"fieldRef\":{\"fieldPath\":\"metadata.namespace\"}}},{\"name\":\"LOG_LEVEL\",\"value\":\"info\"},{\"name\":\"LOG_FORMAT\",\"value\":\"text\"},{\"name\":\"LOG_TIME_FIELD_FORMAT\",\"value\":\"2006-01-02T15:04:05Z07:00\"},{\"name\":\"LOG_SAMPLER_RATE\",\"value\":\"1\"}],\"image\":\"quay.io/kiali/kiali:v1.79\",\"imagePullPolicy\":\"Always\",\"livenessProbe\":{\"httpGet\":{\"path\":\"/kiali/healthz\",\"port\":\"api-port\",\"scheme\":\"HTTP\"},\"initialDelaySeconds\":5,\"periodSeconds\":30},\"name\":\"kiali\",\"ports\":[{\"containerPort\":20001,\"name\":\"api-port\"}],\"readinessProbe\":{\"httpGet\":{\"path\":\"/kiali/healthz\",\"port\":\"api-port\",\"scheme\":\"HTTP\"},\"initialDelaySeconds\":5,\"periodSeconds\":30},\"resources\":{\"limits\":{\"memory\":\"1Gi\"},\"requests\":{\"cpu\":\"10m\",\"memory\":\"64Mi\"}},\"securityContext\":{\"allowPrivilegeEscalation\":false,\"capabilities\":{\"drop\":[\"ALL\"]},\"privileged\":false,\"readOnlyRootFilesystem\":true,\"runAsNonRoot\":true},\"volumeMounts\":[{\"mountPath\":\"/kiali-configuration\",\"name\":\"kiali-configuration\"},{\"mountPath\":\"/kiali-cert\",\"name\":\"kiali-cert\"},{\"mountPath\":\"/kiali-secret\",\"name\":\"kiali-secret\"},{\"mountPath\":\"/kiali-cabundle\",\"name\":\"kiali-cabundle\"}]}],\"serviceAccountName\":\"kiali\",\"volumes\":[{\"configMap\":{\"name\":\"kiali\"},\"name\":\"kiali-configuration\"},{\"name\":\"kiali-cert\",\"secret\":{\"optional\":true,\"secretName\":\"istio.kiali-service-account\"}},{\"name\":\"kiali-secret\",\"secret\":{\"optional\":true,\"secretName\":\"kiali\"}},{\"configMap\":{\"name\":\"kiali-cabundle\",\"optional\":true},\"name\":\"kiali-cabundle\"}]}}}}\n" + }, + "healthAnnotations": {}, + "istioReferences": [], + "dashboardAnnotations": null, + "serviceAccountNames": ["kiali"], + "health": { + "workloadStatus": null, + "requests": { + "inbound": null, + "outbound": null, + "healthAnnotations": null + } + } + } + ], + "health": { + "requests": { + "inbound": {}, + "outbound": {}, + "healthAnnotations": {} + } + }, + "namespaceMTLS": { + "status": "MTLS_NOT_ENABLED", + "autoMTLSEnabled": true, + "minTLS": "" + }, + "subServices": [ + { + "name": "kiali", + "namespace": "", + "istioSidecar": false, + "cluster": "", + "istioAmbient": false, + "appLabel": false, + "additionalDetailSample": null, + "annotations": null, + "healthAnnotations": null, + "ports": { + "http": 20001 + }, + "labels": null, + "selector": null, + "istioReferences": null, + "kialiWizard": "", + "serviceRegistry": "", + "health": { + "requests": { + "inbound": null, + "outbound": null, + "healthAnnotations": null + } + } + } + ], + "validations": { + "gateway": { + "bookinfo-gateway.bookinfo": { + "name": "bookinfo-gateway", + "objectType": "gateway", + "valid": true, + "checks": [], + "references": null + } + }, + "service": { + "kiali.istio-system": { + "name": "kiali", + "objectType": "service", + "valid": true, + "checks": [], + "references": null + } + }, + "virtualservice": { + "bookinfo.bookinfo": { + "name": "bookinfo", + "objectType": "virtualservice", + "valid": true, + "checks": [], + "references": null + } + }, + "workload": { + "cars-v1.travel-agency": { + "name": "cars-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "control.travel-control": { + "name": "control", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "details-v1.bookinfo": { + "name": "details-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "discounts-v1.travel-agency": { + "name": "discounts-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "flights-v1.travel-agency": { + "name": "flights-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "grafana.istio-system": { + "name": "grafana", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "hotels-v1.travel-agency": { + "name": "hotels-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "insurances-v1.travel-agency": { + "name": "insurances-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "istio-egressgateway.istio-system": { + "name": "istio-egressgateway", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "istio-ingressgateway.istio-system": { + "name": "istio-ingressgateway", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "istiod.istio-system": { + "name": "istiod", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "jaeger.istio-system": { + "name": "jaeger", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "kiali-traffic-generator.bookinfo": { + "name": "kiali-traffic-generator", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "kiali.istio-system": { + "name": "kiali", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "mysqldb-v1.travel-agency": { + "name": "mysqldb-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "productpage-v1.bookinfo": { + "name": "productpage-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "prometheus.istio-system": { + "name": "prometheus", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "ratings-v1.bookinfo": { + "name": "ratings-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "reviews-v1.bookinfo": { + "name": "reviews-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "reviews-v2.bookinfo": { + "name": "reviews-v2", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "reviews-v3.bookinfo": { + "name": "reviews-v3", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "travels-v1.travel-agency": { + "name": "travels-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "travels.travel-portal": { + "name": "travels", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "viaggi.travel-portal": { + "name": "viaggi", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "voyages.travel-portal": { + "name": "voyages", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + } + } + } +} diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/istio-system/services/prometheus.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/istio-system/services/prometheus.json new file mode 100644 index 0000000000..1702cb02e4 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/istio-system/services/prometheus.json @@ -0,0 +1,361 @@ +{ + "cluster": "Kubernetes", + "destinationRules": [], + "endpoints": [ + { + "addresses": [ + { + "kind": "Pod", + "name": "prometheus-7545dd48db-gkbgq", + "ip": "10.244.0.22", + "port": 0 + } + ], + "ports": [ + { + "name": "http", + "protocol": "TCP", + "port": 9090 + } + ] + } + ], + "istioPermissions": { + "create": true, + "update": true, + "delete": true + }, + "istioSidecar": false, + "k8sHTTPRoutes": [], + "k8sReferenceGrants": null, + "service": { + "name": "prometheus", + "createdAt": "2024-02-26T09:49:59Z", + "resourceVersion": "611", + "namespace": { + "name": "istio-system", + "cluster": "", + "isAmbient": false, + "labels": null, + "annotations": null + }, + "labels": { + "app.kubernetes.io/component": "server", + "app.kubernetes.io/instance": "prometheus", + "app.kubernetes.io/managed-by": "Helm", + "app.kubernetes.io/name": "prometheus", + "app.kubernetes.io/part-of": "prometheus", + "app.kubernetes.io/version": "v2.48.0", + "helm.sh/chart": "prometheus-25.8.0" + }, + "selectors": { + "app.kubernetes.io/component": "server", + "app.kubernetes.io/instance": "prometheus", + "app.kubernetes.io/name": "prometheus" + }, + "type": "ClusterIP", + "ip": "10.105.233.222", + "ports": [ + { + "name": "http", + "protocol": "TCP", + "port": 9090 + } + ], + "externalName": "", + "annotations": { + "kubectl.kubernetes.io/last-applied-configuration": "{\"apiVersion\":\"v1\",\"kind\":\"Service\",\"metadata\":{\"annotations\":{},\"labels\":{\"app.kubernetes.io/component\":\"server\",\"app.kubernetes.io/instance\":\"prometheus\",\"app.kubernetes.io/managed-by\":\"Helm\",\"app.kubernetes.io/name\":\"prometheus\",\"app.kubernetes.io/part-of\":\"prometheus\",\"app.kubernetes.io/version\":\"v2.48.0\",\"helm.sh/chart\":\"prometheus-25.8.0\"},\"name\":\"prometheus\",\"namespace\":\"istio-system\"},\"spec\":{\"ports\":[{\"name\":\"http\",\"port\":9090,\"protocol\":\"TCP\",\"targetPort\":9090}],\"selector\":{\"app.kubernetes.io/component\":\"server\",\"app.kubernetes.io/instance\":\"prometheus\",\"app.kubernetes.io/name\":\"prometheus\"},\"sessionAffinity\":\"None\",\"type\":\"ClusterIP\"}}\n" + }, + "healthAnnotations": {}, + "additionalDetails": [] + }, + "serviceEntries": null, + "virtualServices": [], + "workloads": [ + { + "name": "prometheus", + "cluster": "Kubernetes", + "type": "Deployment", + "createdAt": "2024-02-26T09:49:59Z", + "resourceVersion": "754", + "istioSidecar": false, + "istioAmbient": false, + "additionalDetailSample": null, + "labels": { + "app.kubernetes.io/component": "server", + "app.kubernetes.io/instance": "prometheus", + "app.kubernetes.io/managed-by": "Helm", + "app.kubernetes.io/name": "prometheus", + "app.kubernetes.io/part-of": "prometheus", + "app.kubernetes.io/version": "v2.48.0", + "helm.sh/chart": "prometheus-25.8.0", + "sidecar.istio.io/inject": "false" + }, + "appLabel": false, + "versionLabel": false, + "podCount": 1, + "annotations": { + "deployment.kubernetes.io/revision": "1", + "kubectl.kubernetes.io/last-applied-configuration": "{\"apiVersion\":\"apps/v1\",\"kind\":\"Deployment\",\"metadata\":{\"annotations\":{},\"labels\":{\"app.kubernetes.io/component\":\"server\",\"app.kubernetes.io/instance\":\"prometheus\",\"app.kubernetes.io/managed-by\":\"Helm\",\"app.kubernetes.io/name\":\"prometheus\",\"app.kubernetes.io/part-of\":\"prometheus\",\"app.kubernetes.io/version\":\"v2.48.0\",\"helm.sh/chart\":\"prometheus-25.8.0\"},\"name\":\"prometheus\",\"namespace\":\"istio-system\"},\"spec\":{\"replicas\":1,\"revisionHistoryLimit\":10,\"selector\":{\"matchLabels\":{\"app.kubernetes.io/component\":\"server\",\"app.kubernetes.io/instance\":\"prometheus\",\"app.kubernetes.io/name\":\"prometheus\"}},\"strategy\":{\"rollingUpdate\":null,\"type\":\"Recreate\"},\"template\":{\"metadata\":{\"labels\":{\"app.kubernetes.io/component\":\"server\",\"app.kubernetes.io/instance\":\"prometheus\",\"app.kubernetes.io/managed-by\":\"Helm\",\"app.kubernetes.io/name\":\"prometheus\",\"app.kubernetes.io/part-of\":\"prometheus\",\"app.kubernetes.io/version\":\"v2.48.0\",\"helm.sh/chart\":\"prometheus-25.8.0\",\"sidecar.istio.io/inject\":\"false\"}},\"spec\":{\"containers\":[{\"args\":[\"--watched-dir=/etc/config\",\"--reload-url=http://127.0.0.1:9090/-/reload\"],\"image\":\"ghcr.io/prometheus-operator/prometheus-config-reloader:v0.67.0\",\"imagePullPolicy\":\"IfNotPresent\",\"name\":\"prometheus-server-configmap-reload\",\"volumeMounts\":[{\"mountPath\":\"/etc/config\",\"name\":\"config-volume\",\"readOnly\":true}]},{\"args\":[\"--storage.tsdb.retention.time=15d\",\"--config.file=/etc/config/prometheus.yml\",\"--storage.tsdb.path=/data\",\"--web.console.libraries=/etc/prometheus/console_libraries\",\"--web.console.templates=/etc/prometheus/consoles\",\"--web.enable-lifecycle\"],\"image\":\"prom/prometheus:v2.48.0\",\"imagePullPolicy\":\"IfNotPresent\",\"livenessProbe\":{\"failureThreshold\":3,\"httpGet\":{\"path\":\"/-/healthy\",\"port\":9090,\"scheme\":\"HTTP\"},\"initialDelaySeconds\":30,\"periodSeconds\":15,\"successThreshold\":1,\"timeoutSeconds\":10},\"name\":\"prometheus-server\",\"ports\":[{\"containerPort\":9090}],\"readinessProbe\":{\"failureThreshold\":3,\"httpGet\":{\"path\":\"/-/ready\",\"port\":9090,\"scheme\":\"HTTP\"},\"initialDelaySeconds\":0,\"periodSeconds\":5,\"successThreshold\":1,\"timeoutSeconds\":4},\"volumeMounts\":[{\"mountPath\":\"/etc/config\",\"name\":\"config-volume\"},{\"mountPath\":\"/data\",\"name\":\"storage-volume\",\"subPath\":\"\"}]}],\"dnsPolicy\":\"ClusterFirst\",\"enableServiceLinks\":true,\"serviceAccountName\":\"prometheus\",\"terminationGracePeriodSeconds\":300,\"volumes\":[{\"configMap\":{\"name\":\"prometheus\"},\"name\":\"config-volume\"},{\"emptyDir\":{},\"name\":\"storage-volume\"}]}}}}\n" + }, + "healthAnnotations": {}, + "istioReferences": [], + "dashboardAnnotations": null, + "serviceAccountNames": ["prometheus"], + "health": { + "workloadStatus": null, + "requests": { + "inbound": null, + "outbound": null, + "healthAnnotations": null + } + } + } + ], + "health": { + "requests": { + "inbound": {}, + "outbound": {}, + "healthAnnotations": {} + } + }, + "namespaceMTLS": { + "status": "MTLS_NOT_ENABLED", + "autoMTLSEnabled": true, + "minTLS": "" + }, + "subServices": [ + { + "name": "prometheus", + "namespace": "", + "istioSidecar": false, + "cluster": "", + "istioAmbient": false, + "appLabel": false, + "additionalDetailSample": null, + "annotations": null, + "healthAnnotations": null, + "ports": { + "http": 9090 + }, + "labels": null, + "selector": null, + "istioReferences": null, + "kialiWizard": "", + "serviceRegistry": "", + "health": { + "requests": { + "inbound": null, + "outbound": null, + "healthAnnotations": null + } + } + } + ], + "validations": { + "gateway": { + "bookinfo-gateway.bookinfo": { + "name": "bookinfo-gateway", + "objectType": "gateway", + "valid": true, + "checks": [], + "references": null + } + }, + "service": { + "prometheus.istio-system": { + "name": "prometheus", + "objectType": "service", + "valid": true, + "checks": [], + "references": null + } + }, + "virtualservice": { + "bookinfo.bookinfo": { + "name": "bookinfo", + "objectType": "virtualservice", + "valid": true, + "checks": [], + "references": null + } + }, + "workload": { + "cars-v1.travel-agency": { + "name": "cars-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "control.travel-control": { + "name": "control", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "details-v1.bookinfo": { + "name": "details-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "discounts-v1.travel-agency": { + "name": "discounts-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "flights-v1.travel-agency": { + "name": "flights-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "grafana.istio-system": { + "name": "grafana", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "hotels-v1.travel-agency": { + "name": "hotels-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "insurances-v1.travel-agency": { + "name": "insurances-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "istio-egressgateway.istio-system": { + "name": "istio-egressgateway", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "istio-ingressgateway.istio-system": { + "name": "istio-ingressgateway", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "istiod.istio-system": { + "name": "istiod", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "jaeger.istio-system": { + "name": "jaeger", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "kiali-traffic-generator.bookinfo": { + "name": "kiali-traffic-generator", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "kiali.istio-system": { + "name": "kiali", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "mysqldb-v1.travel-agency": { + "name": "mysqldb-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "productpage-v1.bookinfo": { + "name": "productpage-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "prometheus.istio-system": { + "name": "prometheus", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "ratings-v1.bookinfo": { + "name": "ratings-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "reviews-v1.bookinfo": { + "name": "reviews-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "reviews-v2.bookinfo": { + "name": "reviews-v2", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "reviews-v3.bookinfo": { + "name": "reviews-v3", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "travels-v1.travel-agency": { + "name": "travels-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "travels.travel-portal": { + "name": "travels", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "viaggi.travel-portal": { + "name": "viaggi", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "voyages.travel-portal": { + "name": "voyages", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + } + } + } +} diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/istio-system/services/tracing.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/istio-system/services/tracing.json new file mode 100644 index 0000000000..b0398ed225 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/istio-system/services/tracing.json @@ -0,0 +1,358 @@ +{ + "cluster": "Kubernetes", + "destinationRules": [], + "endpoints": [ + { + "addresses": [ + { + "kind": "Pod", + "name": "jaeger-7d7d59b9d-84qqj", + "ip": "10.244.0.17", + "port": 0 + } + ], + "ports": [ + { + "name": "grpc-query", + "protocol": "TCP", + "port": 16685 + }, + { + "name": "http-query", + "protocol": "TCP", + "port": 16686 + } + ] + } + ], + "istioPermissions": { + "create": true, + "update": true, + "delete": true + }, + "istioSidecar": false, + "k8sHTTPRoutes": [], + "k8sReferenceGrants": null, + "service": { + "name": "tracing", + "createdAt": "2024-02-26T09:50:00Z", + "resourceVersion": "658", + "namespace": { + "name": "istio-system", + "cluster": "", + "isAmbient": false, + "labels": null, + "annotations": null + }, + "labels": { + "app": "jaeger" + }, + "selectors": { + "app": "jaeger" + }, + "type": "ClusterIP", + "ip": "10.108.198.238", + "ports": [ + { + "name": "http-query", + "protocol": "TCP", + "port": 80 + }, + { + "name": "grpc-query", + "protocol": "TCP", + "port": 16685 + } + ], + "externalName": "", + "annotations": { + "kubectl.kubernetes.io/last-applied-configuration": "{\"apiVersion\":\"v1\",\"kind\":\"Service\",\"metadata\":{\"annotations\":{},\"labels\":{\"app\":\"jaeger\"},\"name\":\"tracing\",\"namespace\":\"istio-system\"},\"spec\":{\"ports\":[{\"name\":\"http-query\",\"port\":80,\"protocol\":\"TCP\",\"targetPort\":16686},{\"name\":\"grpc-query\",\"port\":16685,\"protocol\":\"TCP\",\"targetPort\":16685}],\"selector\":{\"app\":\"jaeger\"},\"type\":\"ClusterIP\"}}\n" + }, + "healthAnnotations": {}, + "additionalDetails": [] + }, + "serviceEntries": null, + "virtualServices": [], + "workloads": [ + { + "name": "jaeger", + "cluster": "Kubernetes", + "type": "Deployment", + "createdAt": "2024-02-26T09:50:00Z", + "resourceVersion": "727", + "istioSidecar": false, + "istioAmbient": false, + "additionalDetailSample": null, + "labels": { + "app": "jaeger", + "sidecar.istio.io/inject": "false" + }, + "appLabel": true, + "versionLabel": false, + "podCount": 1, + "annotations": { + "deployment.kubernetes.io/revision": "1", + "kubectl.kubernetes.io/last-applied-configuration": "{\"apiVersion\":\"apps/v1\",\"kind\":\"Deployment\",\"metadata\":{\"annotations\":{},\"labels\":{\"app\":\"jaeger\"},\"name\":\"jaeger\",\"namespace\":\"istio-system\"},\"spec\":{\"selector\":{\"matchLabels\":{\"app\":\"jaeger\"}},\"template\":{\"metadata\":{\"annotations\":{\"prometheus.io/port\":\"14269\",\"prometheus.io/scrape\":\"true\"},\"labels\":{\"app\":\"jaeger\",\"sidecar.istio.io/inject\":\"false\"}},\"spec\":{\"containers\":[{\"env\":[{\"name\":\"BADGER_EPHEMERAL\",\"value\":\"false\"},{\"name\":\"SPAN_STORAGE_TYPE\",\"value\":\"badger\"},{\"name\":\"BADGER_DIRECTORY_VALUE\",\"value\":\"/badger/data\"},{\"name\":\"BADGER_DIRECTORY_KEY\",\"value\":\"/badger/key\"},{\"name\":\"COLLECTOR_ZIPKIN_HOST_PORT\",\"value\":\":9411\"},{\"name\":\"MEMORY_MAX_TRACES\",\"value\":\"50000\"},{\"name\":\"QUERY_BASE_PATH\",\"value\":\"/jaeger\"}],\"image\":\"docker.io/jaegertracing/all-in-one:1.46\",\"livenessProbe\":{\"httpGet\":{\"path\":\"/\",\"port\":14269}},\"name\":\"jaeger\",\"readinessProbe\":{\"httpGet\":{\"path\":\"/\",\"port\":14269}},\"resources\":{\"requests\":{\"cpu\":\"10m\"}},\"volumeMounts\":[{\"mountPath\":\"/badger\",\"name\":\"data\"}]}],\"volumes\":[{\"emptyDir\":{},\"name\":\"data\"}]}}}}\n" + }, + "healthAnnotations": {}, + "istioReferences": [], + "dashboardAnnotations": null, + "serviceAccountNames": ["default"], + "health": { + "workloadStatus": null, + "requests": { + "inbound": null, + "outbound": null, + "healthAnnotations": null + } + } + } + ], + "health": { + "requests": { + "inbound": {}, + "outbound": {}, + "healthAnnotations": {} + } + }, + "namespaceMTLS": { + "status": "MTLS_NOT_ENABLED", + "autoMTLSEnabled": true, + "minTLS": "" + }, + "subServices": [ + { + "name": "tracing", + "namespace": "", + "istioSidecar": false, + "cluster": "", + "istioAmbient": false, + "appLabel": false, + "additionalDetailSample": null, + "annotations": null, + "healthAnnotations": null, + "ports": { + "grpc-query": 16685, + "http-query": 80 + }, + "labels": null, + "selector": null, + "istioReferences": null, + "kialiWizard": "", + "serviceRegistry": "", + "health": { + "requests": { + "inbound": null, + "outbound": null, + "healthAnnotations": null + } + } + } + ], + "validations": { + "gateway": { + "bookinfo-gateway.bookinfo": { + "name": "bookinfo-gateway", + "objectType": "gateway", + "valid": true, + "checks": [], + "references": null + } + }, + "service": { + "tracing.istio-system": { + "name": "tracing", + "objectType": "service", + "valid": true, + "checks": [], + "references": null + } + }, + "virtualservice": { + "bookinfo.bookinfo": { + "name": "bookinfo", + "objectType": "virtualservice", + "valid": true, + "checks": [], + "references": null + } + }, + "workload": { + "cars-v1.travel-agency": { + "name": "cars-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "control.travel-control": { + "name": "control", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "details-v1.bookinfo": { + "name": "details-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "discounts-v1.travel-agency": { + "name": "discounts-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "flights-v1.travel-agency": { + "name": "flights-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "grafana.istio-system": { + "name": "grafana", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "hotels-v1.travel-agency": { + "name": "hotels-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "insurances-v1.travel-agency": { + "name": "insurances-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "istio-egressgateway.istio-system": { + "name": "istio-egressgateway", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "istio-ingressgateway.istio-system": { + "name": "istio-ingressgateway", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "istiod.istio-system": { + "name": "istiod", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "jaeger.istio-system": { + "name": "jaeger", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "kiali-traffic-generator.bookinfo": { + "name": "kiali-traffic-generator", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "kiali.istio-system": { + "name": "kiali", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "mysqldb-v1.travel-agency": { + "name": "mysqldb-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "productpage-v1.bookinfo": { + "name": "productpage-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "prometheus.istio-system": { + "name": "prometheus", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "ratings-v1.bookinfo": { + "name": "ratings-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "reviews-v1.bookinfo": { + "name": "reviews-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "reviews-v2.bookinfo": { + "name": "reviews-v2", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "reviews-v3.bookinfo": { + "name": "reviews-v3", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "travels-v1.travel-agency": { + "name": "travels-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "travels.travel-portal": { + "name": "travels", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "viaggi.travel-portal": { + "name": "viaggi", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "voyages.travel-portal": { + "name": "voyages", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + } + } + } +} diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/istio-system/services/zipkin.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/istio-system/services/zipkin.json new file mode 100644 index 0000000000..2f9fbcc257 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/istio-system/services/zipkin.json @@ -0,0 +1,347 @@ +{ + "cluster": "Kubernetes", + "destinationRules": [], + "endpoints": [ + { + "addresses": [ + { + "kind": "Pod", + "name": "jaeger-7d7d59b9d-84qqj", + "ip": "10.244.0.17", + "port": 0 + } + ], + "ports": [ + { + "name": "http-query", + "protocol": "TCP", + "port": 9411 + } + ] + } + ], + "istioPermissions": { + "create": true, + "update": true, + "delete": true + }, + "istioSidecar": false, + "k8sHTTPRoutes": [], + "k8sReferenceGrants": null, + "service": { + "name": "zipkin", + "createdAt": "2024-02-26T09:50:00Z", + "resourceVersion": "667", + "namespace": { + "name": "istio-system", + "cluster": "", + "isAmbient": false, + "labels": null, + "annotations": null + }, + "labels": { + "name": "zipkin" + }, + "selectors": { + "app": "jaeger" + }, + "type": "ClusterIP", + "ip": "10.106.185.100", + "ports": [ + { + "name": "http-query", + "protocol": "TCP", + "port": 9411 + } + ], + "externalName": "", + "annotations": { + "kubectl.kubernetes.io/last-applied-configuration": "{\"apiVersion\":\"v1\",\"kind\":\"Service\",\"metadata\":{\"annotations\":{},\"labels\":{\"name\":\"zipkin\"},\"name\":\"zipkin\",\"namespace\":\"istio-system\"},\"spec\":{\"ports\":[{\"name\":\"http-query\",\"port\":9411,\"targetPort\":9411}],\"selector\":{\"app\":\"jaeger\"}}}\n" + }, + "healthAnnotations": {}, + "additionalDetails": [] + }, + "serviceEntries": null, + "virtualServices": [], + "workloads": [ + { + "name": "jaeger", + "cluster": "Kubernetes", + "type": "Deployment", + "createdAt": "2024-02-26T09:50:00Z", + "resourceVersion": "727", + "istioSidecar": false, + "istioAmbient": false, + "additionalDetailSample": null, + "labels": { + "app": "jaeger", + "sidecar.istio.io/inject": "false" + }, + "appLabel": true, + "versionLabel": false, + "podCount": 1, + "annotations": { + "deployment.kubernetes.io/revision": "1", + "kubectl.kubernetes.io/last-applied-configuration": "{\"apiVersion\":\"apps/v1\",\"kind\":\"Deployment\",\"metadata\":{\"annotations\":{},\"labels\":{\"app\":\"jaeger\"},\"name\":\"jaeger\",\"namespace\":\"istio-system\"},\"spec\":{\"selector\":{\"matchLabels\":{\"app\":\"jaeger\"}},\"template\":{\"metadata\":{\"annotations\":{\"prometheus.io/port\":\"14269\",\"prometheus.io/scrape\":\"true\"},\"labels\":{\"app\":\"jaeger\",\"sidecar.istio.io/inject\":\"false\"}},\"spec\":{\"containers\":[{\"env\":[{\"name\":\"BADGER_EPHEMERAL\",\"value\":\"false\"},{\"name\":\"SPAN_STORAGE_TYPE\",\"value\":\"badger\"},{\"name\":\"BADGER_DIRECTORY_VALUE\",\"value\":\"/badger/data\"},{\"name\":\"BADGER_DIRECTORY_KEY\",\"value\":\"/badger/key\"},{\"name\":\"COLLECTOR_ZIPKIN_HOST_PORT\",\"value\":\":9411\"},{\"name\":\"MEMORY_MAX_TRACES\",\"value\":\"50000\"},{\"name\":\"QUERY_BASE_PATH\",\"value\":\"/jaeger\"}],\"image\":\"docker.io/jaegertracing/all-in-one:1.46\",\"livenessProbe\":{\"httpGet\":{\"path\":\"/\",\"port\":14269}},\"name\":\"jaeger\",\"readinessProbe\":{\"httpGet\":{\"path\":\"/\",\"port\":14269}},\"resources\":{\"requests\":{\"cpu\":\"10m\"}},\"volumeMounts\":[{\"mountPath\":\"/badger\",\"name\":\"data\"}]}],\"volumes\":[{\"emptyDir\":{},\"name\":\"data\"}]}}}}\n" + }, + "healthAnnotations": {}, + "istioReferences": [], + "dashboardAnnotations": null, + "serviceAccountNames": ["default"], + "health": { + "workloadStatus": null, + "requests": { + "inbound": null, + "outbound": null, + "healthAnnotations": null + } + } + } + ], + "health": { + "requests": { + "inbound": {}, + "outbound": {}, + "healthAnnotations": {} + } + }, + "namespaceMTLS": { + "status": "MTLS_NOT_ENABLED", + "autoMTLSEnabled": true, + "minTLS": "" + }, + "subServices": [ + { + "name": "zipkin", + "namespace": "", + "istioSidecar": false, + "cluster": "", + "istioAmbient": false, + "appLabel": false, + "additionalDetailSample": null, + "annotations": null, + "healthAnnotations": null, + "ports": { + "http-query": 9411 + }, + "labels": null, + "selector": null, + "istioReferences": null, + "kialiWizard": "", + "serviceRegistry": "", + "health": { + "requests": { + "inbound": null, + "outbound": null, + "healthAnnotations": null + } + } + } + ], + "validations": { + "gateway": { + "bookinfo-gateway.bookinfo": { + "name": "bookinfo-gateway", + "objectType": "gateway", + "valid": true, + "checks": [], + "references": null + } + }, + "service": { + "zipkin.istio-system": { + "name": "zipkin", + "objectType": "service", + "valid": true, + "checks": [], + "references": null + } + }, + "virtualservice": { + "bookinfo.bookinfo": { + "name": "bookinfo", + "objectType": "virtualservice", + "valid": true, + "checks": [], + "references": null + } + }, + "workload": { + "cars-v1.travel-agency": { + "name": "cars-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "control.travel-control": { + "name": "control", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "details-v1.bookinfo": { + "name": "details-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "discounts-v1.travel-agency": { + "name": "discounts-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "flights-v1.travel-agency": { + "name": "flights-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "grafana.istio-system": { + "name": "grafana", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "hotels-v1.travel-agency": { + "name": "hotels-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "insurances-v1.travel-agency": { + "name": "insurances-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "istio-egressgateway.istio-system": { + "name": "istio-egressgateway", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "istio-ingressgateway.istio-system": { + "name": "istio-ingressgateway", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "istiod.istio-system": { + "name": "istiod", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "jaeger.istio-system": { + "name": "jaeger", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "kiali-traffic-generator.bookinfo": { + "name": "kiali-traffic-generator", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "kiali.istio-system": { + "name": "kiali", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "mysqldb-v1.travel-agency": { + "name": "mysqldb-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "productpage-v1.bookinfo": { + "name": "productpage-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "prometheus.istio-system": { + "name": "prometheus", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "ratings-v1.bookinfo": { + "name": "ratings-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "reviews-v1.bookinfo": { + "name": "reviews-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "reviews-v2.bookinfo": { + "name": "reviews-v2", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "reviews-v3.bookinfo": { + "name": "reviews-v3", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "travels-v1.travel-agency": { + "name": "travels-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "travels.travel-portal": { + "name": "travels", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "viaggi.travel-portal": { + "name": "viaggi", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "voyages.travel-portal": { + "name": "voyages", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + } + } + } +} diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/istio-system/spans.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/istio-system/spans.json new file mode 100644 index 0000000000..fe51488c70 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/istio-system/spans.json @@ -0,0 +1 @@ +[] diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/istio-system/tls.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/istio-system/tls.json new file mode 100644 index 0000000000..ea7db32cbb --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/istio-system/tls.json @@ -0,0 +1 @@ +{ "status": "MTLS_NOT_ENABLED", "autoMTLSEnabled": true, "minTLS": "" } diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/istio-system/workloads.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/istio-system/workloads.json new file mode 100644 index 0000000000..5035889528 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/istio-system/workloads.json @@ -0,0 +1,374 @@ +{ + "namespace": { + "name": "istio-system", + "cluster": "", + "isAmbient": false, + "labels": null, + "annotations": null + }, + "workloads": [ + { + "name": "grafana", + "cluster": "Kubernetes", + "type": "Deployment", + "createdAt": "2024-01-29T20:09:28Z", + "resourceVersion": "756", + "istioSidecar": false, + "istioAmbient": false, + "additionalDetailSample": null, + "labels": { + "app.kubernetes.io/instance": "grafana", + "app.kubernetes.io/name": "grafana", + "sidecar.istio.io/inject": "false" + }, + "appLabel": false, + "versionLabel": false, + "podCount": 1, + "annotations": { + "deployment.kubernetes.io/revision": "1", + "kubectl.kubernetes.io/last-applied-configuration": "{\"apiVersion\":\"apps/v1\",\"kind\":\"Deployment\",\"metadata\":{\"annotations\":{},\"labels\":{\"app.kubernetes.io/instance\":\"grafana\",\"app.kubernetes.io/managed-by\":\"Helm\",\"app.kubernetes.io/name\":\"grafana\",\"app.kubernetes.io/version\":\"10.1.5\",\"helm.sh/chart\":\"grafana-6.61.1\"},\"name\":\"grafana\",\"namespace\":\"istio-system\"},\"spec\":{\"replicas\":1,\"revisionHistoryLimit\":10,\"selector\":{\"matchLabels\":{\"app.kubernetes.io/instance\":\"grafana\",\"app.kubernetes.io/name\":\"grafana\"}},\"strategy\":{\"type\":\"RollingUpdate\"},\"template\":{\"metadata\":{\"annotations\":{\"checksum/config\":\"e6dc57066020dcc7ec73db1b5e39370203985e5071b47f1f1414ee5c42679d46\",\"checksum/dashboards-json-config\":\"01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b\",\"checksum/sc-dashboard-provider-config\":\"01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b\",\"kubectl.kubernetes.io/default-container\":\"grafana\"},\"labels\":{\"app.kubernetes.io/instance\":\"grafana\",\"app.kubernetes.io/name\":\"grafana\",\"sidecar.istio.io/inject\":\"false\"}},\"spec\":{\"automountServiceAccountToken\":true,\"containers\":[{\"env\":[{\"name\":\"POD_IP\",\"valueFrom\":{\"fieldRef\":{\"fieldPath\":\"status.podIP\"}}},{\"name\":\"GF_PATHS_DATA\",\"value\":\"/var/lib/grafana/\"},{\"name\":\"GF_PATHS_LOGS\",\"value\":\"/var/log/grafana\"},{\"name\":\"GF_PATHS_PLUGINS\",\"value\":\"/var/lib/grafana/plugins\"},{\"name\":\"GF_PATHS_PROVISIONING\",\"value\":\"/etc/grafana/provisioning\"},{\"name\":\"GF_AUTH_ANONYMOUS_ENABLED\",\"value\":\"true\"},{\"name\":\"GF_AUTH_ANONYMOUS_ORG_ROLE\",\"value\":\"Admin\"},{\"name\":\"GF_AUTH_BASIC_ENABLED\",\"value\":\"false\"},{\"name\":\"GF_SECURITY_ADMIN_PASSWORD\",\"value\":\"admin\"},{\"name\":\"GF_SECURITY_ADMIN_USER\",\"value\":\"admin\"}],\"image\":\"docker.io/grafana/grafana:10.1.5\",\"imagePullPolicy\":\"IfNotPresent\",\"livenessProbe\":{\"failureThreshold\":10,\"httpGet\":{\"path\":\"/api/health\",\"port\":3000},\"initialDelaySeconds\":60,\"timeoutSeconds\":30},\"name\":\"grafana\",\"ports\":[{\"containerPort\":3000,\"name\":\"grafana\",\"protocol\":\"TCP\"},{\"containerPort\":9094,\"name\":\"gossip-tcp\",\"protocol\":\"TCP\"},{\"containerPort\":9094,\"name\":\"gossip-udp\",\"protocol\":\"UDP\"}],\"readinessProbe\":{\"httpGet\":{\"path\":\"/api/health\",\"port\":3000}},\"securityContext\":{\"allowPrivilegeEscalation\":false,\"capabilities\":{\"drop\":[\"ALL\"]},\"seccompProfile\":{\"type\":\"RuntimeDefault\"}},\"volumeMounts\":[{\"mountPath\":\"/etc/grafana/grafana.ini\",\"name\":\"config\",\"subPath\":\"grafana.ini\"},{\"mountPath\":\"/var/lib/grafana\",\"name\":\"storage\"},{\"mountPath\":\"/var/lib/grafana/dashboards/istio\",\"name\":\"dashboards-istio\"},{\"mountPath\":\"/var/lib/grafana/dashboards/istio-services\",\"name\":\"dashboards-istio-services\"},{\"mountPath\":\"/etc/grafana/provisioning/datasources/datasources.yaml\",\"name\":\"config\",\"subPath\":\"datasources.yaml\"},{\"mountPath\":\"/etc/grafana/provisioning/dashboards/dashboardproviders.yaml\",\"name\":\"config\",\"subPath\":\"dashboardproviders.yaml\"}]}],\"enableServiceLinks\":true,\"serviceAccountName\":\"grafana\",\"volumes\":[{\"configMap\":{\"name\":\"grafana\"},\"name\":\"config\"},{\"configMap\":{\"name\":\"istio-grafana-dashboards\"},\"name\":\"dashboards-istio\"},{\"configMap\":{\"name\":\"istio-services-grafana-dashboards\"},\"name\":\"dashboards-istio-services\"},{\"emptyDir\":{},\"name\":\"storage\"}]}}}}\n" + }, + "healthAnnotations": {}, + "istioReferences": [], + "dashboardAnnotations": null, + "serviceAccountNames": ["grafana"], + "health": { + "workloadStatus": { + "name": "grafana", + "desiredReplicas": 1, + "currentReplicas": 1, + "availableReplicas": 1, + "syncedProxies": -1 + }, + "requests": { + "inbound": {}, + "outbound": {}, + "healthAnnotations": {} + } + } + }, + { + "name": "istio-egressgateway", + "cluster": "Kubernetes", + "type": "Deployment", + "createdAt": "2024-01-29T20:09:17Z", + "resourceVersion": "26870", + "istioSidecar": false, + "istioAmbient": false, + "additionalDetailSample": null, + "labels": { + "app": "istio-egressgateway", + "chart": "gateways", + "heritage": "Tiller", + "install.operator.istio.io/owning-resource": "unknown", + "istio": "egressgateway", + "istio.io/rev": "default", + "operator.istio.io/component": "EgressGateways", + "release": "istio", + "service.istio.io/canonical-name": "istio-egressgateway", + "service.istio.io/canonical-revision": "latest", + "sidecar.istio.io/inject": "false" + }, + "appLabel": true, + "versionLabel": false, + "podCount": 1, + "annotations": { + "deployment.kubernetes.io/revision": "1" + }, + "healthAnnotations": {}, + "istioReferences": [], + "dashboardAnnotations": null, + "serviceAccountNames": ["istio-egressgateway-service-account"], + "health": { + "workloadStatus": { + "name": "istio-egressgateway", + "desiredReplicas": 1, + "currentReplicas": 1, + "availableReplicas": 1, + "syncedProxies": -1 + }, + "requests": { + "inbound": {}, + "outbound": {}, + "healthAnnotations": {} + } + } + }, + { + "name": "istio-ingressgateway", + "cluster": "Kubernetes", + "type": "Deployment", + "createdAt": "2024-01-29T20:09:17Z", + "resourceVersion": "26868", + "istioSidecar": false, + "istioAmbient": false, + "additionalDetailSample": null, + "labels": { + "app": "istio-ingressgateway", + "chart": "gateways", + "heritage": "Tiller", + "install.operator.istio.io/owning-resource": "unknown", + "istio": "ingressgateway", + "istio.io/rev": "default", + "operator.istio.io/component": "IngressGateways", + "release": "istio", + "service.istio.io/canonical-name": "istio-ingressgateway", + "service.istio.io/canonical-revision": "latest", + "sidecar.istio.io/inject": "false" + }, + "appLabel": true, + "versionLabel": false, + "podCount": 1, + "annotations": { + "deployment.kubernetes.io/revision": "1" + }, + "healthAnnotations": {}, + "istioReferences": [], + "dashboardAnnotations": null, + "serviceAccountNames": ["istio-ingressgateway-service-account"], + "health": { + "workloadStatus": { + "name": "istio-ingressgateway", + "desiredReplicas": 1, + "currentReplicas": 1, + "availableReplicas": 1, + "syncedProxies": -1 + }, + "requests": { + "inbound": {}, + "outbound": { + "http": { + "200": 1.0000017094046316 + } + }, + "healthAnnotations": {} + } + } + }, + { + "name": "istiod", + "cluster": "Kubernetes", + "type": "Deployment", + "createdAt": "2024-01-29T20:09:07Z", + "resourceVersion": "541", + "istioSidecar": false, + "istioAmbient": false, + "additionalDetailSample": null, + "labels": { + "app": "istiod", + "install.operator.istio.io/owning-resource": "unknown", + "istio": "pilot", + "istio.io/rev": "default", + "operator.istio.io/component": "Pilot", + "sidecar.istio.io/inject": "false" + }, + "appLabel": true, + "versionLabel": false, + "podCount": 1, + "annotations": { + "deployment.kubernetes.io/revision": "1" + }, + "healthAnnotations": {}, + "istioReferences": [], + "dashboardAnnotations": null, + "serviceAccountNames": ["istiod"], + "health": { + "workloadStatus": { + "name": "istiod", + "desiredReplicas": 1, + "currentReplicas": 1, + "availableReplicas": 1, + "syncedProxies": -1 + }, + "requests": { + "inbound": {}, + "outbound": {}, + "healthAnnotations": {} + } + } + }, + { + "name": "jaeger", + "cluster": "Kubernetes", + "type": "Deployment", + "createdAt": "2024-01-29T20:09:28Z", + "resourceVersion": "772", + "istioSidecar": false, + "istioAmbient": false, + "additionalDetailSample": null, + "labels": { + "app": "jaeger", + "sidecar.istio.io/inject": "false" + }, + "appLabel": true, + "versionLabel": false, + "podCount": 1, + "annotations": { + "deployment.kubernetes.io/revision": "1", + "kubectl.kubernetes.io/last-applied-configuration": "{\"apiVersion\":\"apps/v1\",\"kind\":\"Deployment\",\"metadata\":{\"annotations\":{},\"labels\":{\"app\":\"jaeger\"},\"name\":\"jaeger\",\"namespace\":\"istio-system\"},\"spec\":{\"selector\":{\"matchLabels\":{\"app\":\"jaeger\"}},\"template\":{\"metadata\":{\"annotations\":{\"prometheus.io/port\":\"14269\",\"prometheus.io/scrape\":\"true\"},\"labels\":{\"app\":\"jaeger\",\"sidecar.istio.io/inject\":\"false\"}},\"spec\":{\"containers\":[{\"env\":[{\"name\":\"BADGER_EPHEMERAL\",\"value\":\"false\"},{\"name\":\"SPAN_STORAGE_TYPE\",\"value\":\"badger\"},{\"name\":\"BADGER_DIRECTORY_VALUE\",\"value\":\"/badger/data\"},{\"name\":\"BADGER_DIRECTORY_KEY\",\"value\":\"/badger/key\"},{\"name\":\"COLLECTOR_ZIPKIN_HOST_PORT\",\"value\":\":9411\"},{\"name\":\"MEMORY_MAX_TRACES\",\"value\":\"50000\"},{\"name\":\"QUERY_BASE_PATH\",\"value\":\"/jaeger\"}],\"image\":\"docker.io/jaegertracing/all-in-one:1.46\",\"livenessProbe\":{\"httpGet\":{\"path\":\"/\",\"port\":14269}},\"name\":\"jaeger\",\"readinessProbe\":{\"httpGet\":{\"path\":\"/\",\"port\":14269}},\"resources\":{\"requests\":{\"cpu\":\"10m\"}},\"volumeMounts\":[{\"mountPath\":\"/badger\",\"name\":\"data\"}]}],\"volumes\":[{\"emptyDir\":{},\"name\":\"data\"}]}}}}\n" + }, + "healthAnnotations": {}, + "istioReferences": [], + "dashboardAnnotations": null, + "serviceAccountNames": ["default"], + "health": { + "workloadStatus": { + "name": "jaeger", + "desiredReplicas": 1, + "currentReplicas": 1, + "availableReplicas": 1, + "syncedProxies": -1 + }, + "requests": { + "inbound": {}, + "outbound": {}, + "healthAnnotations": {} + } + } + }, + { + "name": "kiali", + "cluster": "Kubernetes", + "type": "Deployment", + "createdAt": "2024-01-29T20:10:06Z", + "resourceVersion": "1056", + "istioSidecar": false, + "istioAmbient": false, + "additionalDetailSample": null, + "labels": { + "app": "kiali", + "app.kubernetes.io/instance": "kiali", + "app.kubernetes.io/managed-by": "Helm", + "app.kubernetes.io/name": "kiali", + "app.kubernetes.io/part-of": "kiali", + "app.kubernetes.io/version": "v1.79.0", + "helm.sh/chart": "kiali-server-1.79.0", + "sidecar.istio.io/inject": "false", + "version": "v1.79.0" + }, + "appLabel": true, + "versionLabel": true, + "podCount": 1, + "annotations": { + "deployment.kubernetes.io/revision": "1", + "kubectl.kubernetes.io/last-applied-configuration": "{\"apiVersion\":\"apps/v1\",\"kind\":\"Deployment\",\"metadata\":{\"annotations\":{},\"labels\":{\"app\":\"kiali\",\"app.kubernetes.io/instance\":\"kiali\",\"app.kubernetes.io/managed-by\":\"Helm\",\"app.kubernetes.io/name\":\"kiali\",\"app.kubernetes.io/part-of\":\"kiali\",\"app.kubernetes.io/version\":\"v1.79.0\",\"helm.sh/chart\":\"kiali-server-1.79.0\",\"version\":\"v1.79.0\"},\"name\":\"kiali\",\"namespace\":\"istio-system\"},\"spec\":{\"replicas\":1,\"selector\":{\"matchLabels\":{\"app.kubernetes.io/instance\":\"kiali\",\"app.kubernetes.io/name\":\"kiali\"}},\"strategy\":{\"rollingUpdate\":{\"maxSurge\":1,\"maxUnavailable\":1},\"type\":\"RollingUpdate\"},\"template\":{\"metadata\":{\"annotations\":{\"checksum/config\":\"ce97ed2896a797e7aace42e18922786c78956f2ee862cfae70cc24ff1a9a600f\",\"kiali.io/dashboards\":\"go,kiali\",\"prometheus.io/port\":\"\",\"prometheus.io/scrape\":\"false\"},\"labels\":{\"app\":\"kiali\",\"app.kubernetes.io/instance\":\"kiali\",\"app.kubernetes.io/managed-by\":\"Helm\",\"app.kubernetes.io/name\":\"kiali\",\"app.kubernetes.io/part-of\":\"kiali\",\"app.kubernetes.io/version\":\"v1.79.0\",\"helm.sh/chart\":\"kiali-server-1.79.0\",\"sidecar.istio.io/inject\":\"false\",\"version\":\"v1.79.0\"},\"name\":\"kiali\"},\"spec\":{\"containers\":[{\"command\":[\"/opt/kiali/kiali\",\"-config\",\"/kiali-configuration/config.yaml\"],\"env\":[{\"name\":\"ACTIVE_NAMESPACE\",\"valueFrom\":{\"fieldRef\":{\"fieldPath\":\"metadata.namespace\"}}},{\"name\":\"LOG_LEVEL\",\"value\":\"info\"},{\"name\":\"LOG_FORMAT\",\"value\":\"text\"},{\"name\":\"LOG_TIME_FIELD_FORMAT\",\"value\":\"2006-01-02T15:04:05Z07:00\"},{\"name\":\"LOG_SAMPLER_RATE\",\"value\":\"1\"}],\"image\":\"quay.io/kiali/kiali:v1.79\",\"imagePullPolicy\":\"Always\",\"livenessProbe\":{\"httpGet\":{\"path\":\"/kiali/healthz\",\"port\":\"api-port\",\"scheme\":\"HTTP\"},\"initialDelaySeconds\":5,\"periodSeconds\":30},\"name\":\"kiali\",\"ports\":[{\"containerPort\":20001,\"name\":\"api-port\"}],\"readinessProbe\":{\"httpGet\":{\"path\":\"/kiali/healthz\",\"port\":\"api-port\",\"scheme\":\"HTTP\"},\"initialDelaySeconds\":5,\"periodSeconds\":30},\"resources\":{\"limits\":{\"memory\":\"1Gi\"},\"requests\":{\"cpu\":\"10m\",\"memory\":\"64Mi\"}},\"securityContext\":{\"allowPrivilegeEscalation\":false,\"capabilities\":{\"drop\":[\"ALL\"]},\"privileged\":false,\"readOnlyRootFilesystem\":true,\"runAsNonRoot\":true},\"volumeMounts\":[{\"mountPath\":\"/kiali-configuration\",\"name\":\"kiali-configuration\"},{\"mountPath\":\"/kiali-cert\",\"name\":\"kiali-cert\"},{\"mountPath\":\"/kiali-secret\",\"name\":\"kiali-secret\"},{\"mountPath\":\"/kiali-cabundle\",\"name\":\"kiali-cabundle\"}]}],\"serviceAccountName\":\"kiali\",\"volumes\":[{\"configMap\":{\"name\":\"kiali\"},\"name\":\"kiali-configuration\"},{\"name\":\"kiali-cert\",\"secret\":{\"optional\":true,\"secretName\":\"istio.kiali-service-account\"}},{\"name\":\"kiali-secret\",\"secret\":{\"optional\":true,\"secretName\":\"kiali\"}},{\"configMap\":{\"name\":\"kiali-cabundle\",\"optional\":true},\"name\":\"kiali-cabundle\"}]}}}}\n" + }, + "healthAnnotations": {}, + "istioReferences": [], + "dashboardAnnotations": null, + "serviceAccountNames": ["kiali"], + "health": { + "workloadStatus": { + "name": "kiali", + "desiredReplicas": 1, + "currentReplicas": 1, + "availableReplicas": 1, + "syncedProxies": -1 + }, + "requests": { + "inbound": {}, + "outbound": {}, + "healthAnnotations": {} + } + } + }, + { + "name": "prometheus", + "cluster": "Kubernetes", + "type": "Deployment", + "createdAt": "2024-01-29T20:09:28Z", + "resourceVersion": "26771", + "istioSidecar": false, + "istioAmbient": false, + "additionalDetailSample": null, + "labels": { + "app.kubernetes.io/component": "server", + "app.kubernetes.io/instance": "prometheus", + "app.kubernetes.io/managed-by": "Helm", + "app.kubernetes.io/name": "prometheus", + "app.kubernetes.io/part-of": "prometheus", + "app.kubernetes.io/version": "v2.48.0", + "helm.sh/chart": "prometheus-25.8.0", + "sidecar.istio.io/inject": "false" + }, + "appLabel": false, + "versionLabel": false, + "podCount": 1, + "annotations": { + "deployment.kubernetes.io/revision": "1", + "kubectl.kubernetes.io/last-applied-configuration": "{\"apiVersion\":\"apps/v1\",\"kind\":\"Deployment\",\"metadata\":{\"annotations\":{},\"labels\":{\"app.kubernetes.io/component\":\"server\",\"app.kubernetes.io/instance\":\"prometheus\",\"app.kubernetes.io/managed-by\":\"Helm\",\"app.kubernetes.io/name\":\"prometheus\",\"app.kubernetes.io/part-of\":\"prometheus\",\"app.kubernetes.io/version\":\"v2.48.0\",\"helm.sh/chart\":\"prometheus-25.8.0\"},\"name\":\"prometheus\",\"namespace\":\"istio-system\"},\"spec\":{\"replicas\":1,\"revisionHistoryLimit\":10,\"selector\":{\"matchLabels\":{\"app.kubernetes.io/component\":\"server\",\"app.kubernetes.io/instance\":\"prometheus\",\"app.kubernetes.io/name\":\"prometheus\"}},\"strategy\":{\"rollingUpdate\":null,\"type\":\"Recreate\"},\"template\":{\"metadata\":{\"labels\":{\"app.kubernetes.io/component\":\"server\",\"app.kubernetes.io/instance\":\"prometheus\",\"app.kubernetes.io/managed-by\":\"Helm\",\"app.kubernetes.io/name\":\"prometheus\",\"app.kubernetes.io/part-of\":\"prometheus\",\"app.kubernetes.io/version\":\"v2.48.0\",\"helm.sh/chart\":\"prometheus-25.8.0\",\"sidecar.istio.io/inject\":\"false\"}},\"spec\":{\"containers\":[{\"args\":[\"--watched-dir=/etc/config\",\"--reload-url=http://127.0.0.1:9090/-/reload\"],\"image\":\"ghcr.io/prometheus-operator/prometheus-config-reloader:v0.67.0\",\"imagePullPolicy\":\"IfNotPresent\",\"name\":\"prometheus-server-configmap-reload\",\"volumeMounts\":[{\"mountPath\":\"/etc/config\",\"name\":\"config-volume\",\"readOnly\":true}]},{\"args\":[\"--storage.tsdb.retention.time=15d\",\"--config.file=/etc/config/prometheus.yml\",\"--storage.tsdb.path=/data\",\"--web.console.libraries=/etc/prometheus/console_libraries\",\"--web.console.templates=/etc/prometheus/consoles\",\"--web.enable-lifecycle\"],\"image\":\"prom/prometheus:v2.48.0\",\"imagePullPolicy\":\"IfNotPresent\",\"livenessProbe\":{\"failureThreshold\":3,\"httpGet\":{\"path\":\"/-/healthy\",\"port\":9090,\"scheme\":\"HTTP\"},\"initialDelaySeconds\":30,\"periodSeconds\":15,\"successThreshold\":1,\"timeoutSeconds\":10},\"name\":\"prometheus-server\",\"ports\":[{\"containerPort\":9090}],\"readinessProbe\":{\"failureThreshold\":3,\"httpGet\":{\"path\":\"/-/ready\",\"port\":9090,\"scheme\":\"HTTP\"},\"initialDelaySeconds\":0,\"periodSeconds\":5,\"successThreshold\":1,\"timeoutSeconds\":4},\"volumeMounts\":[{\"mountPath\":\"/etc/config\",\"name\":\"config-volume\"},{\"mountPath\":\"/data\",\"name\":\"storage-volume\",\"subPath\":\"\"}]}],\"dnsPolicy\":\"ClusterFirst\",\"enableServiceLinks\":true,\"serviceAccountName\":\"prometheus\",\"terminationGracePeriodSeconds\":300,\"volumes\":[{\"configMap\":{\"name\":\"prometheus\"},\"name\":\"config-volume\"},{\"emptyDir\":{},\"name\":\"storage-volume\"}]}}}}\n" + }, + "healthAnnotations": {}, + "istioReferences": [], + "dashboardAnnotations": null, + "serviceAccountNames": ["prometheus"], + "health": { + "workloadStatus": { + "name": "prometheus", + "desiredReplicas": 1, + "currentReplicas": 1, + "availableReplicas": 1, + "syncedProxies": -1 + }, + "requests": { + "inbound": {}, + "outbound": {}, + "healthAnnotations": {} + } + } + } + ], + "validations": { + "workload": { + "grafana.istio-system": { + "name": "grafana", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "istio-egressgateway.istio-system": { + "name": "istio-egressgateway", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "istio-ingressgateway.istio-system": { + "name": "istio-ingressgateway", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "istiod.istio-system": { + "name": "istiod", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "jaeger.istio-system": { + "name": "jaeger", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "kiali.istio-system": { + "name": "kiali", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "prometheus.istio-system": { + "name": "prometheus", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + } + } + } +} diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/istio-system/workloads/grafana.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/istio-system/workloads/grafana.json new file mode 100644 index 0000000000..0176417d10 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/istio-system/workloads/grafana.json @@ -0,0 +1,155 @@ +{ + "name": "grafana", + "cluster": "Kubernetes", + "type": "Deployment", + "createdAt": "2024-02-15T09:24:58Z", + "resourceVersion": "1095", + "istioInjectionAnnotation": false, + "istioSidecar": false, + "istioAmbient": false, + "additionalDetailSample": null, + "labels": { + "app": "grafana", + "app.kubernetes.io/instance": "grafana", + "app.kubernetes.io/name": "grafana", + "sidecar.istio.io/inject": "false" + }, + "appLabel": true, + "versionLabel": false, + "podCount": 0, + "annotations": { + "deployment.kubernetes.io/revision": "1", + "kubectl.kubernetes.io/last-applied-configuration": "{\"apiVersion\":\"apps/v1\",\"kind\":\"Deployment\",\"metadata\":{\"annotations\":{},\"labels\":{\"app.kubernetes.io/instance\":\"grafana\",\"app.kubernetes.io/managed-by\":\"Helm\",\"app.kubernetes.io/name\":\"grafana\",\"app.kubernetes.io/version\":\"9.5.5\",\"helm.sh/chart\":\"grafana-6.57.4\"},\"name\":\"grafana\",\"namespace\":\"istio-system\"},\"spec\":{\"replicas\":1,\"revisionHistoryLimit\":10,\"selector\":{\"matchLabels\":{\"app.kubernetes.io/instance\":\"grafana\",\"app.kubernetes.io/name\":\"grafana\"}},\"strategy\":{\"type\":\"RollingUpdate\"},\"template\":{\"metadata\":{\"annotations\":{\"checksum/config\":\"aec3d18ca2ea82d1d48f8965db1440aba0680ed2f32c5a29e6cdb5e7afc8b395\",\"checksum/dashboards-json-config\":\"01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b\",\"checksum/sc-dashboard-provider-config\":\"01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b\",\"kubectl.kubernetes.io/default-container\":\"grafana\"},\"labels\":{\"app\":\"grafana\",\"app.kubernetes.io/instance\":\"grafana\",\"app.kubernetes.io/name\":\"grafana\",\"sidecar.istio.io/inject\":\"false\"}},\"spec\":{\"automountServiceAccountToken\":true,\"containers\":[{\"env\":[{\"name\":\"POD_IP\",\"valueFrom\":{\"fieldRef\":{\"fieldPath\":\"status.podIP\"}}},{\"name\":\"GF_PATHS_DATA\",\"value\":\"/var/lib/grafana/\"},{\"name\":\"GF_PATHS_LOGS\",\"value\":\"/var/log/grafana\"},{\"name\":\"GF_PATHS_PLUGINS\",\"value\":\"/var/lib/grafana/plugins\"},{\"name\":\"GF_PATHS_PROVISIONING\",\"value\":\"/etc/grafana/provisioning\"},{\"name\":\"GF_AUTH_ANONYMOUS_ENABLED\",\"value\":\"true\"},{\"name\":\"GF_AUTH_ANONYMOUS_ORG_ROLE\",\"value\":\"Admin\"},{\"name\":\"GF_AUTH_BASIC_ENABLED\",\"value\":\"false\"},{\"name\":\"GF_SECURITY_ADMIN_PASSWORD\",\"value\":\"admin\"},{\"name\":\"GF_SECURITY_ADMIN_USER\",\"value\":\"admin\"}],\"image\":\"docker.io/grafana/grafana:9.5.5\",\"imagePullPolicy\":\"IfNotPresent\",\"livenessProbe\":{\"failureThreshold\":10,\"httpGet\":{\"path\":\"/api/health\",\"port\":3000},\"initialDelaySeconds\":60,\"timeoutSeconds\":30},\"name\":\"grafana\",\"ports\":[{\"containerPort\":3000,\"name\":\"grafana\",\"protocol\":\"TCP\"},{\"containerPort\":9094,\"name\":\"gossip-tcp\",\"protocol\":\"TCP\"},{\"containerPort\":9094,\"name\":\"gossip-udp\",\"protocol\":\"UDP\"}],\"readinessProbe\":{\"httpGet\":{\"path\":\"/api/health\",\"port\":3000}},\"securityContext\":{\"allowPrivilegeEscalation\":false,\"capabilities\":{\"drop\":[\"ALL\"]},\"seccompProfile\":{\"type\":\"RuntimeDefault\"}},\"volumeMounts\":[{\"mountPath\":\"/etc/grafana/grafana.ini\",\"name\":\"config\",\"subPath\":\"grafana.ini\"},{\"mountPath\":\"/var/lib/grafana\",\"name\":\"storage\"},{\"mountPath\":\"/var/lib/grafana/dashboards/istio\",\"name\":\"dashboards-istio\"},{\"mountPath\":\"/var/lib/grafana/dashboards/istio-services\",\"name\":\"dashboards-istio-services\"},{\"mountPath\":\"/etc/grafana/provisioning/datasources/datasources.yaml\",\"name\":\"config\",\"subPath\":\"datasources.yaml\"},{\"mountPath\":\"/etc/grafana/provisioning/dashboards/dashboardproviders.yaml\",\"name\":\"config\",\"subPath\":\"dashboardproviders.yaml\"}]}],\"enableServiceLinks\":true,\"securityContext\":{\"fsGroup\":472,\"runAsGroup\":472,\"runAsNonRoot\":true,\"runAsUser\":472},\"serviceAccountName\":\"grafana\",\"volumes\":[{\"configMap\":{\"name\":\"grafana\"},\"name\":\"config\"},{\"configMap\":{\"name\":\"istio-grafana-dashboards\"},\"name\":\"dashboards-istio\"},{\"configMap\":{\"name\":\"istio-services-grafana-dashboards\"},\"name\":\"dashboards-istio-services\"},{\"emptyDir\":{},\"name\":\"storage\"}]}}}}\n" + }, + "healthAnnotations": {}, + "istioReferences": null, + "dashboardAnnotations": {}, + "serviceAccountNames": null, + "desiredReplicas": 1, + "currentReplicas": 1, + "availableReplicas": 1, + "pods": [ + { + "name": "grafana-b8bbdc84d-pgmx4", + "labels": { + "app": "grafana", + "app.kubernetes.io/instance": "grafana", + "app.kubernetes.io/name": "grafana", + "pod-template-hash": "b8bbdc84d", + "sidecar.istio.io/inject": "false" + }, + "createdAt": "2024-02-15T09:24:58Z", + "createdBy": [ + { + "name": "grafana-b8bbdc84d", + "kind": "ReplicaSet" + } + ], + "containers": [ + { + "name": "grafana", + "image": "docker.io/grafana/grafana:9.5.5", + "isProxy": false, + "isReady": true, + "isAmbient": false + } + ], + "istioContainers": null, + "istioInitContainers": null, + "status": "Running", + "statusMessage": "", + "statusReason": "", + "appLabel": true, + "versionLabel": false, + "annotations": { + "checksum/config": "aec3d18ca2ea82d1d48f8965db1440aba0680ed2f32c5a29e6cdb5e7afc8b395", + "checksum/dashboards-json-config": "01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b", + "checksum/sc-dashboard-provider-config": "01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b", + "kubectl.kubernetes.io/default-container": "grafana" + }, + "proxyStatus": null, + "serviceAccountName": "grafana" + } + ], + "services": [ + { + "name": "grafana", + "namespace": "istio-system", + "istioSidecar": true, + "cluster": "Kubernetes", + "istioAmbient": false, + "appLabel": false, + "additionalDetailSample": null, + "annotations": null, + "healthAnnotations": {}, + "ports": null, + "labels": { + "app.kubernetes.io/instance": "grafana", + "app.kubernetes.io/managed-by": "Helm", + "app.kubernetes.io/name": "grafana", + "app.kubernetes.io/version": "9.5.5", + "helm.sh/chart": "grafana-6.57.4" + }, + "selector": { + "app.kubernetes.io/instance": "grafana", + "app.kubernetes.io/name": "grafana" + }, + "istioReferences": [], + "kialiWizard": "", + "serviceRegistry": "Kubernetes", + "health": { + "requests": { + "inbound": {}, + "outbound": {}, + "healthAnnotations": {} + } + } + } + ], + "runtimes": [], + "additionalDetails": [], + "validations": { + "gateway": { + "bookinfo-gateway.bookinfo": { + "name": "bookinfo-gateway", + "objectType": "gateway", + "valid": true, + "checks": [], + "references": null + } + }, + "virtualservice": { + "bookinfo.bookinfo": { + "name": "bookinfo", + "objectType": "virtualservice", + "valid": true, + "checks": [], + "references": null + } + }, + "workload": { + "grafana.istio-system": { + "name": "grafana", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + } + } + }, + "waypointWorkloads": null, + "health": { + "workloadStatus": { + "name": "grafana", + "desiredReplicas": 1, + "currentReplicas": 1, + "availableReplicas": 1, + "syncedProxies": -1 + }, + "requests": { + "inbound": {}, + "outbound": {}, + "healthAnnotations": {} + } + } +} diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/istio-system/workloads/istio_egressgateway.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/istio-system/workloads/istio_egressgateway.json new file mode 100644 index 0000000000..354968cfec --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/istio-system/workloads/istio_egressgateway.json @@ -0,0 +1,183 @@ +{ + "name": "istio-egressgateway", + "cluster": "Kubernetes", + "type": "Deployment", + "createdAt": "2024-02-15T09:24:44Z", + "resourceVersion": "16281", + "istioInjectionAnnotation": false, + "istioSidecar": false, + "istioAmbient": false, + "additionalDetailSample": null, + "labels": { + "app": "istio-egressgateway", + "chart": "gateways", + "heritage": "Tiller", + "install.operator.istio.io/owning-resource": "unknown", + "istio": "egressgateway", + "istio.io/rev": "default", + "operator.istio.io/component": "EgressGateways", + "release": "istio", + "service.istio.io/canonical-name": "istio-egressgateway", + "service.istio.io/canonical-revision": "latest", + "sidecar.istio.io/inject": "false" + }, + "appLabel": true, + "versionLabel": false, + "podCount": 0, + "annotations": { + "deployment.kubernetes.io/revision": "1" + }, + "healthAnnotations": {}, + "istioReferences": null, + "dashboardAnnotations": {}, + "serviceAccountNames": null, + "desiredReplicas": 1, + "currentReplicas": 1, + "availableReplicas": 1, + "pods": [ + { + "name": "istio-egressgateway-55bc68746f-l87v2", + "labels": { + "app": "istio-egressgateway", + "chart": "gateways", + "heritage": "Tiller", + "install.operator.istio.io/owning-resource": "unknown", + "istio": "egressgateway", + "istio.io/rev": "default", + "operator.istio.io/component": "EgressGateways", + "pod-template-hash": "55bc68746f", + "release": "istio", + "service.istio.io/canonical-name": "istio-egressgateway", + "service.istio.io/canonical-revision": "latest", + "sidecar.istio.io/inject": "false" + }, + "createdAt": "2024-02-15T09:24:44Z", + "createdBy": [ + { + "name": "istio-egressgateway-55bc68746f", + "kind": "ReplicaSet" + } + ], + "containers": [ + { + "name": "istio-proxy", + "image": "gcr.io/istio-release/proxyv2:1.20.1", + "isProxy": true, + "isReady": true, + "isAmbient": false + } + ], + "istioContainers": null, + "istioInitContainers": null, + "status": "Running", + "statusMessage": "", + "statusReason": "", + "appLabel": true, + "versionLabel": false, + "annotations": { + "istio.io/rev": "default", + "prometheus.io/path": "/stats/prometheus", + "prometheus.io/port": "15020", + "prometheus.io/scrape": "true", + "sidecar.istio.io/inject": "false" + }, + "proxyStatus": null, + "serviceAccountName": "istio-egressgateway-service-account" + } + ], + "services": [ + { + "name": "istio-egressgateway", + "namespace": "istio-system", + "istioSidecar": true, + "cluster": "Kubernetes", + "istioAmbient": false, + "appLabel": true, + "additionalDetailSample": null, + "annotations": null, + "healthAnnotations": {}, + "ports": null, + "labels": { + "app": "istio-egressgateway", + "install.operator.istio.io/owning-resource": "installed-state", + "install.operator.istio.io/owning-resource-namespace": "istio-system", + "istio": "egressgateway", + "istio.io/rev": "default", + "operator.istio.io/component": "EgressGateways", + "operator.istio.io/managed": "Reconcile", + "operator.istio.io/version": "1.20.1", + "release": "istio" + }, + "selector": { + "app": "istio-egressgateway", + "istio": "egressgateway" + }, + "istioReferences": [], + "kialiWizard": "", + "serviceRegistry": "Kubernetes", + "health": { + "requests": { + "inbound": {}, + "outbound": {}, + "healthAnnotations": {} + } + } + } + ], + "runtimes": [ + { + "name": "", + "dashboardRefs": [ + { + "template": "envoy", + "title": "Envoy Metrics" + } + ] + } + ], + "additionalDetails": [], + "validations": { + "gateway": { + "bookinfo-gateway.bookinfo": { + "name": "bookinfo-gateway", + "objectType": "gateway", + "valid": true, + "checks": [], + "references": null + } + }, + "virtualservice": { + "bookinfo.bookinfo": { + "name": "bookinfo", + "objectType": "virtualservice", + "valid": true, + "checks": [], + "references": null + } + }, + "workload": { + "istio-egressgateway.istio-system": { + "name": "istio-egressgateway", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + } + } + }, + "waypointWorkloads": null, + "health": { + "workloadStatus": { + "name": "istio-egressgateway", + "desiredReplicas": 1, + "currentReplicas": 1, + "availableReplicas": 1, + "syncedProxies": -1 + }, + "requests": { + "inbound": {}, + "outbound": {}, + "healthAnnotations": {} + } + } +} diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/istio-system/workloads/istio_ingressgateway.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/istio-system/workloads/istio_ingressgateway.json new file mode 100644 index 0000000000..250aa688cd --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/istio-system/workloads/istio_ingressgateway.json @@ -0,0 +1,187 @@ +{ + "name": "istio-ingressgateway", + "cluster": "Kubernetes", + "type": "Deployment", + "createdAt": "2024-02-15T09:24:44Z", + "resourceVersion": "16279", + "istioInjectionAnnotation": false, + "istioSidecar": false, + "istioAmbient": false, + "additionalDetailSample": null, + "labels": { + "app": "istio-ingressgateway", + "chart": "gateways", + "heritage": "Tiller", + "install.operator.istio.io/owning-resource": "unknown", + "istio": "ingressgateway", + "istio.io/rev": "default", + "operator.istio.io/component": "IngressGateways", + "release": "istio", + "service.istio.io/canonical-name": "istio-ingressgateway", + "service.istio.io/canonical-revision": "latest", + "sidecar.istio.io/inject": "false" + }, + "appLabel": true, + "versionLabel": false, + "podCount": 0, + "annotations": { + "deployment.kubernetes.io/revision": "1" + }, + "healthAnnotations": {}, + "istioReferences": null, + "dashboardAnnotations": {}, + "serviceAccountNames": null, + "desiredReplicas": 1, + "currentReplicas": 1, + "availableReplicas": 1, + "pods": [ + { + "name": "istio-ingressgateway-7998f4487c-llhrj", + "labels": { + "app": "istio-ingressgateway", + "chart": "gateways", + "heritage": "Tiller", + "install.operator.istio.io/owning-resource": "unknown", + "istio": "ingressgateway", + "istio.io/rev": "default", + "operator.istio.io/component": "IngressGateways", + "pod-template-hash": "7998f4487c", + "release": "istio", + "service.istio.io/canonical-name": "istio-ingressgateway", + "service.istio.io/canonical-revision": "latest", + "sidecar.istio.io/inject": "false" + }, + "createdAt": "2024-02-15T09:24:44Z", + "createdBy": [ + { + "name": "istio-ingressgateway-7998f4487c", + "kind": "ReplicaSet" + } + ], + "containers": [ + { + "name": "istio-proxy", + "image": "gcr.io/istio-release/proxyv2:1.20.1", + "isProxy": true, + "isReady": true, + "isAmbient": false + } + ], + "istioContainers": null, + "istioInitContainers": null, + "status": "Running", + "statusMessage": "", + "statusReason": "", + "appLabel": true, + "versionLabel": false, + "annotations": { + "istio.io/rev": "default", + "prometheus.io/path": "/stats/prometheus", + "prometheus.io/port": "15020", + "prometheus.io/scrape": "true", + "sidecar.istio.io/inject": "false" + }, + "proxyStatus": null, + "serviceAccountName": "istio-ingressgateway-service-account" + } + ], + "services": [ + { + "name": "istio-ingressgateway", + "namespace": "istio-system", + "istioSidecar": true, + "cluster": "Kubernetes", + "istioAmbient": false, + "appLabel": true, + "additionalDetailSample": null, + "annotations": null, + "healthAnnotations": {}, + "ports": null, + "labels": { + "app": "istio-ingressgateway", + "install.operator.istio.io/owning-resource": "installed-state", + "install.operator.istio.io/owning-resource-namespace": "istio-system", + "istio": "ingressgateway", + "istio.io/rev": "default", + "operator.istio.io/component": "IngressGateways", + "operator.istio.io/managed": "Reconcile", + "operator.istio.io/version": "1.20.1", + "release": "istio" + }, + "selector": { + "app": "istio-ingressgateway", + "istio": "ingressgateway" + }, + "istioReferences": [], + "kialiWizard": "", + "serviceRegistry": "Kubernetes", + "health": { + "requests": { + "inbound": {}, + "outbound": {}, + "healthAnnotations": {} + } + } + } + ], + "runtimes": [ + { + "name": "", + "dashboardRefs": [ + { + "template": "envoy", + "title": "Envoy Metrics" + } + ] + } + ], + "additionalDetails": [], + "validations": { + "gateway": { + "bookinfo-gateway.bookinfo": { + "name": "bookinfo-gateway", + "objectType": "gateway", + "valid": true, + "checks": [], + "references": null + } + }, + "virtualservice": { + "bookinfo.bookinfo": { + "name": "bookinfo", + "objectType": "virtualservice", + "valid": true, + "checks": [], + "references": null + } + }, + "workload": { + "istio-ingressgateway.istio-system": { + "name": "istio-ingressgateway", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + } + } + }, + "waypointWorkloads": null, + "health": { + "workloadStatus": { + "name": "istio-ingressgateway", + "desiredReplicas": 1, + "currentReplicas": 1, + "availableReplicas": 1, + "syncedProxies": -1 + }, + "requests": { + "inbound": {}, + "outbound": { + "http": { + "200": 0.9999999999999999 + } + }, + "healthAnnotations": {} + } + } +} diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/istio-system/workloads/istiod.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/istio-system/workloads/istiod.json new file mode 100644 index 0000000000..5ddf582380 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/istio-system/workloads/istiod.json @@ -0,0 +1,172 @@ +{ + "name": "istiod", + "cluster": "Kubernetes", + "type": "Deployment", + "createdAt": "2024-02-15T09:24:36Z", + "resourceVersion": "852", + "istioInjectionAnnotation": false, + "istioSidecar": false, + "istioAmbient": false, + "additionalDetailSample": null, + "labels": { + "app": "istiod", + "install.operator.istio.io/owning-resource": "unknown", + "istio": "pilot", + "istio.io/rev": "default", + "operator.istio.io/component": "Pilot", + "sidecar.istio.io/inject": "false" + }, + "appLabel": true, + "versionLabel": false, + "podCount": 0, + "annotations": { + "deployment.kubernetes.io/revision": "1" + }, + "healthAnnotations": {}, + "istioReferences": null, + "dashboardAnnotations": {}, + "serviceAccountNames": null, + "desiredReplicas": 1, + "currentReplicas": 1, + "availableReplicas": 1, + "pods": [ + { + "name": "istiod-74586f98bb-khmv4", + "labels": { + "app": "istiod", + "install.operator.istio.io/owning-resource": "unknown", + "istio": "pilot", + "istio.io/rev": "default", + "operator.istio.io/component": "Pilot", + "pod-template-hash": "74586f98bb", + "sidecar.istio.io/inject": "false" + }, + "createdAt": "2024-02-15T09:24:36Z", + "createdBy": [ + { + "name": "istiod-74586f98bb", + "kind": "ReplicaSet" + } + ], + "containers": [ + { + "name": "discovery", + "image": "gcr.io/istio-release/pilot:1.20.1", + "isProxy": false, + "isReady": true, + "isAmbient": false + } + ], + "istioContainers": null, + "istioInitContainers": null, + "status": "Running", + "statusMessage": "", + "statusReason": "", + "appLabel": true, + "versionLabel": false, + "annotations": { + "ambient.istio.io/redirection": "disabled", + "prometheus.io/port": "15014", + "prometheus.io/scrape": "true", + "sidecar.istio.io/inject": "false" + }, + "proxyStatus": null, + "serviceAccountName": "istiod" + } + ], + "services": [ + { + "name": "istiod", + "namespace": "istio-system", + "istioSidecar": true, + "cluster": "Kubernetes", + "istioAmbient": false, + "appLabel": true, + "additionalDetailSample": null, + "annotations": null, + "healthAnnotations": {}, + "ports": null, + "labels": { + "app": "istiod", + "install.operator.istio.io/owning-resource": "installed-state", + "install.operator.istio.io/owning-resource-namespace": "istio-system", + "istio": "pilot", + "istio.io/rev": "default", + "operator.istio.io/component": "Pilot", + "operator.istio.io/managed": "Reconcile", + "operator.istio.io/version": "1.20.1", + "release": "istio" + }, + "selector": { + "app": "istiod", + "istio": "pilot" + }, + "istioReferences": [], + "kialiWizard": "", + "serviceRegistry": "Kubernetes", + "health": { + "requests": { + "inbound": {}, + "outbound": {}, + "healthAnnotations": {} + } + } + } + ], + "runtimes": [ + { + "name": "Go", + "dashboardRefs": [ + { + "template": "go", + "title": "Go Metrics" + } + ] + } + ], + "additionalDetails": [], + "validations": { + "gateway": { + "bookinfo-gateway.bookinfo": { + "name": "bookinfo-gateway", + "objectType": "gateway", + "valid": true, + "checks": [], + "references": null + } + }, + "virtualservice": { + "bookinfo.bookinfo": { + "name": "bookinfo", + "objectType": "virtualservice", + "valid": true, + "checks": [], + "references": null + } + }, + "workload": { + "istiod.istio-system": { + "name": "istiod", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + } + } + }, + "waypointWorkloads": null, + "health": { + "workloadStatus": { + "name": "istiod", + "desiredReplicas": 1, + "currentReplicas": 1, + "availableReplicas": 1, + "syncedProxies": -1 + }, + "requests": { + "inbound": {}, + "outbound": {}, + "healthAnnotations": {} + } + } +} diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/istio-system/workloads/jaeger.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/istio-system/workloads/jaeger.json new file mode 100644 index 0000000000..7dd725d45e --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/istio-system/workloads/jaeger.json @@ -0,0 +1,210 @@ +{ + "name": "jaeger", + "cluster": "Kubernetes", + "type": "Deployment", + "createdAt": "2024-02-15T09:24:59Z", + "resourceVersion": "1068", + "istioInjectionAnnotation": false, + "istioSidecar": false, + "istioAmbient": false, + "additionalDetailSample": null, + "labels": { + "app": "jaeger", + "sidecar.istio.io/inject": "false" + }, + "appLabel": true, + "versionLabel": false, + "podCount": 0, + "annotations": { + "deployment.kubernetes.io/revision": "1", + "kubectl.kubernetes.io/last-applied-configuration": "{\"apiVersion\":\"apps/v1\",\"kind\":\"Deployment\",\"metadata\":{\"annotations\":{},\"labels\":{\"app\":\"jaeger\"},\"name\":\"jaeger\",\"namespace\":\"istio-system\"},\"spec\":{\"selector\":{\"matchLabels\":{\"app\":\"jaeger\"}},\"template\":{\"metadata\":{\"annotations\":{\"prometheus.io/port\":\"14269\",\"prometheus.io/scrape\":\"true\"},\"labels\":{\"app\":\"jaeger\",\"sidecar.istio.io/inject\":\"false\"}},\"spec\":{\"containers\":[{\"env\":[{\"name\":\"BADGER_EPHEMERAL\",\"value\":\"false\"},{\"name\":\"SPAN_STORAGE_TYPE\",\"value\":\"badger\"},{\"name\":\"BADGER_DIRECTORY_VALUE\",\"value\":\"/badger/data\"},{\"name\":\"BADGER_DIRECTORY_KEY\",\"value\":\"/badger/key\"},{\"name\":\"COLLECTOR_ZIPKIN_HOST_PORT\",\"value\":\":9411\"},{\"name\":\"MEMORY_MAX_TRACES\",\"value\":\"50000\"},{\"name\":\"QUERY_BASE_PATH\",\"value\":\"/jaeger\"}],\"image\":\"docker.io/jaegertracing/all-in-one:1.46\",\"livenessProbe\":{\"httpGet\":{\"path\":\"/\",\"port\":14269}},\"name\":\"jaeger\",\"readinessProbe\":{\"httpGet\":{\"path\":\"/\",\"port\":14269}},\"resources\":{\"requests\":{\"cpu\":\"10m\"}},\"volumeMounts\":[{\"mountPath\":\"/badger\",\"name\":\"data\"}]}],\"volumes\":[{\"emptyDir\":{},\"name\":\"data\"}]}}}}\n" + }, + "healthAnnotations": {}, + "istioReferences": null, + "dashboardAnnotations": {}, + "serviceAccountNames": null, + "desiredReplicas": 1, + "currentReplicas": 1, + "availableReplicas": 1, + "pods": [ + { + "name": "jaeger-7d7d59b9d-q8wzb", + "labels": { + "app": "jaeger", + "pod-template-hash": "7d7d59b9d", + "sidecar.istio.io/inject": "false" + }, + "createdAt": "2024-02-15T09:24:59Z", + "createdBy": [ + { + "name": "jaeger-7d7d59b9d", + "kind": "ReplicaSet" + } + ], + "containers": [ + { + "name": "jaeger", + "image": "docker.io/jaegertracing/all-in-one:1.46", + "isProxy": false, + "isReady": true, + "isAmbient": false + } + ], + "istioContainers": null, + "istioInitContainers": null, + "status": "Running", + "statusMessage": "", + "statusReason": "", + "appLabel": true, + "versionLabel": false, + "annotations": { + "prometheus.io/port": "14269", + "prometheus.io/scrape": "true" + }, + "proxyStatus": null, + "serviceAccountName": "default" + } + ], + "services": [ + { + "name": "jaeger-collector", + "namespace": "istio-system", + "istioSidecar": true, + "cluster": "Kubernetes", + "istioAmbient": false, + "appLabel": true, + "additionalDetailSample": null, + "annotations": null, + "healthAnnotations": {}, + "ports": null, + "labels": { + "app": "jaeger" + }, + "selector": { + "app": "jaeger" + }, + "istioReferences": [], + "kialiWizard": "", + "serviceRegistry": "Kubernetes", + "health": { + "requests": { + "inbound": {}, + "outbound": {}, + "healthAnnotations": {} + } + } + }, + { + "name": "zipkin", + "namespace": "istio-system", + "istioSidecar": true, + "cluster": "Kubernetes", + "istioAmbient": false, + "appLabel": true, + "additionalDetailSample": null, + "annotations": null, + "healthAnnotations": {}, + "ports": null, + "labels": { + "name": "zipkin" + }, + "selector": { + "app": "jaeger" + }, + "istioReferences": [], + "kialiWizard": "", + "serviceRegistry": "Kubernetes", + "health": { + "requests": { + "inbound": {}, + "outbound": {}, + "healthAnnotations": {} + } + } + }, + { + "name": "tracing", + "namespace": "istio-system", + "istioSidecar": true, + "cluster": "Kubernetes", + "istioAmbient": false, + "appLabel": true, + "additionalDetailSample": null, + "annotations": null, + "healthAnnotations": {}, + "ports": null, + "labels": { + "app": "jaeger" + }, + "selector": { + "app": "jaeger" + }, + "istioReferences": [], + "kialiWizard": "", + "serviceRegistry": "Kubernetes", + "health": { + "requests": { + "inbound": {}, + "outbound": {}, + "healthAnnotations": {} + } + } + } + ], + "runtimes": [ + { + "name": "Go", + "dashboardRefs": [ + { + "template": "go", + "title": "Go Metrics" + } + ] + } + ], + "additionalDetails": [], + "validations": { + "gateway": { + "bookinfo-gateway.bookinfo": { + "name": "bookinfo-gateway", + "objectType": "gateway", + "valid": true, + "checks": [], + "references": null + } + }, + "virtualservice": { + "bookinfo.bookinfo": { + "name": "bookinfo", + "objectType": "virtualservice", + "valid": true, + "checks": [], + "references": null + } + }, + "workload": { + "jaeger.istio-system": { + "name": "jaeger", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + } + } + }, + "waypointWorkloads": null, + "health": { + "workloadStatus": { + "name": "jaeger", + "desiredReplicas": 1, + "currentReplicas": 1, + "availableReplicas": 1, + "syncedProxies": -1 + }, + "requests": { + "inbound": {}, + "outbound": {}, + "healthAnnotations": {} + } + } +} diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/istio-system/workloads/kiali.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/istio-system/workloads/kiali.json new file mode 100644 index 0000000000..bb30fc0cc4 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/istio-system/workloads/kiali.json @@ -0,0 +1,187 @@ +{ + "name": "kiali", + "cluster": "Kubernetes", + "type": "Deployment", + "createdAt": "2024-02-15T09:25:30Z", + "resourceVersion": "16310", + "istioInjectionAnnotation": false, + "istioSidecar": false, + "istioAmbient": false, + "additionalDetailSample": null, + "labels": { + "app": "kiali", + "app.kubernetes.io/instance": "kiali", + "app.kubernetes.io/managed-by": "Helm", + "app.kubernetes.io/name": "kiali", + "app.kubernetes.io/part-of": "kiali", + "app.kubernetes.io/version": "v1.76.0", + "helm.sh/chart": "kiali-server-1.76.0", + "sidecar.istio.io/inject": "false", + "version": "v1.76.0" + }, + "appLabel": true, + "versionLabel": true, + "podCount": 0, + "annotations": { + "deployment.kubernetes.io/revision": "1", + "kubectl.kubernetes.io/last-applied-configuration": "{\"apiVersion\":\"apps/v1\",\"kind\":\"Deployment\",\"metadata\":{\"annotations\":{},\"labels\":{\"app\":\"kiali\",\"app.kubernetes.io/instance\":\"kiali\",\"app.kubernetes.io/managed-by\":\"Helm\",\"app.kubernetes.io/name\":\"kiali\",\"app.kubernetes.io/part-of\":\"kiali\",\"app.kubernetes.io/version\":\"v1.76.0\",\"helm.sh/chart\":\"kiali-server-1.76.0\",\"version\":\"v1.76.0\"},\"name\":\"kiali\",\"namespace\":\"istio-system\"},\"spec\":{\"replicas\":1,\"selector\":{\"matchLabels\":{\"app.kubernetes.io/instance\":\"kiali\",\"app.kubernetes.io/name\":\"kiali\"}},\"strategy\":{\"rollingUpdate\":{\"maxSurge\":1,\"maxUnavailable\":1},\"type\":\"RollingUpdate\"},\"template\":{\"metadata\":{\"annotations\":{\"checksum/config\":\"aebd819b94172ef9b148702b7bb438ac35bd1eb284bbb9b13769d8576374fbda\",\"kiali.io/dashboards\":\"go,kiali\",\"prometheus.io/port\":\"9090\",\"prometheus.io/scrape\":\"true\"},\"labels\":{\"app\":\"kiali\",\"app.kubernetes.io/instance\":\"kiali\",\"app.kubernetes.io/managed-by\":\"Helm\",\"app.kubernetes.io/name\":\"kiali\",\"app.kubernetes.io/part-of\":\"kiali\",\"app.kubernetes.io/version\":\"v1.76.0\",\"helm.sh/chart\":\"kiali-server-1.76.0\",\"sidecar.istio.io/inject\":\"false\",\"version\":\"v1.76.0\"},\"name\":\"kiali\"},\"spec\":{\"containers\":[{\"command\":[\"/opt/kiali/kiali\",\"-config\",\"/kiali-configuration/config.yaml\"],\"env\":[{\"name\":\"ACTIVE_NAMESPACE\",\"valueFrom\":{\"fieldRef\":{\"fieldPath\":\"metadata.namespace\"}}},{\"name\":\"LOG_LEVEL\",\"value\":\"info\"},{\"name\":\"LOG_FORMAT\",\"value\":\"text\"},{\"name\":\"LOG_TIME_FIELD_FORMAT\",\"value\":\"2006-01-02T15:04:05Z07:00\"},{\"name\":\"LOG_SAMPLER_RATE\",\"value\":\"1\"}],\"image\":\"quay.io/kiali/kiali:v1.76\",\"imagePullPolicy\":\"Always\",\"livenessProbe\":{\"httpGet\":{\"path\":\"/kiali/healthz\",\"port\":\"api-port\",\"scheme\":\"HTTP\"},\"initialDelaySeconds\":5,\"periodSeconds\":30},\"name\":\"kiali\",\"ports\":[{\"containerPort\":20001,\"name\":\"api-port\"},{\"containerPort\":9090,\"name\":\"http-metrics\"}],\"readinessProbe\":{\"httpGet\":{\"path\":\"/kiali/healthz\",\"port\":\"api-port\",\"scheme\":\"HTTP\"},\"initialDelaySeconds\":5,\"periodSeconds\":30},\"resources\":{\"limits\":{\"memory\":\"1Gi\"},\"requests\":{\"cpu\":\"10m\",\"memory\":\"64Mi\"}},\"securityContext\":{\"allowPrivilegeEscalation\":false,\"capabilities\":{\"drop\":[\"ALL\"]},\"privileged\":false,\"readOnlyRootFilesystem\":true,\"runAsNonRoot\":true},\"volumeMounts\":[{\"mountPath\":\"/kiali-configuration\",\"name\":\"kiali-configuration\"},{\"mountPath\":\"/kiali-cert\",\"name\":\"kiali-cert\"},{\"mountPath\":\"/kiali-secret\",\"name\":\"kiali-secret\"},{\"mountPath\":\"/kiali-cabundle\",\"name\":\"kiali-cabundle\"}]}],\"serviceAccountName\":\"kiali\",\"volumes\":[{\"configMap\":{\"name\":\"kiali\"},\"name\":\"kiali-configuration\"},{\"name\":\"kiali-cert\",\"secret\":{\"optional\":true,\"secretName\":\"istio.kiali-service-account\"}},{\"name\":\"kiali-secret\",\"secret\":{\"optional\":true,\"secretName\":\"kiali\"}},{\"configMap\":{\"name\":\"kiali-cabundle\",\"optional\":true},\"name\":\"kiali-cabundle\"}]}}}}\n" + }, + "healthAnnotations": {}, + "istioReferences": null, + "dashboardAnnotations": {}, + "serviceAccountNames": null, + "desiredReplicas": 1, + "currentReplicas": 1, + "availableReplicas": 1, + "pods": [ + { + "name": "kiali-545878ddbb-swl5j", + "labels": { + "app": "kiali", + "app.kubernetes.io/instance": "kiali", + "app.kubernetes.io/managed-by": "Helm", + "app.kubernetes.io/name": "kiali", + "app.kubernetes.io/part-of": "kiali", + "app.kubernetes.io/version": "v1.76.0", + "helm.sh/chart": "kiali-server-1.76.0", + "pod-template-hash": "545878ddbb", + "sidecar.istio.io/inject": "false", + "version": "v1.76.0" + }, + "createdAt": "2024-02-15T09:25:30Z", + "createdBy": [ + { + "name": "kiali-545878ddbb", + "kind": "ReplicaSet" + } + ], + "containers": [ + { + "name": "kiali", + "image": "quay.io/kiali/kiali:v1.76", + "isProxy": false, + "isReady": true, + "isAmbient": false + } + ], + "istioContainers": null, + "istioInitContainers": null, + "status": "Running", + "statusMessage": "", + "statusReason": "", + "appLabel": true, + "versionLabel": true, + "annotations": { + "checksum/config": "aebd819b94172ef9b148702b7bb438ac35bd1eb284bbb9b13769d8576374fbda", + "kiali.io/dashboards": "go,kiali", + "prometheus.io/port": "9090", + "prometheus.io/scrape": "true" + }, + "proxyStatus": null, + "serviceAccountName": "kiali" + } + ], + "services": [ + { + "name": "kiali", + "namespace": "istio-system", + "istioSidecar": true, + "cluster": "Kubernetes", + "istioAmbient": false, + "appLabel": false, + "additionalDetailSample": null, + "annotations": null, + "healthAnnotations": {}, + "ports": null, + "labels": { + "app": "kiali", + "app.kubernetes.io/instance": "kiali", + "app.kubernetes.io/managed-by": "Helm", + "app.kubernetes.io/name": "kiali", + "app.kubernetes.io/part-of": "kiali", + "app.kubernetes.io/version": "v1.76.0", + "helm.sh/chart": "kiali-server-1.76.0", + "version": "v1.76.0" + }, + "selector": { + "app.kubernetes.io/instance": "kiali", + "app.kubernetes.io/name": "kiali" + }, + "istioReferences": [], + "kialiWizard": "", + "serviceRegistry": "Kubernetes", + "health": { + "requests": { + "inbound": {}, + "outbound": {}, + "healthAnnotations": {} + } + } + } + ], + "runtimes": [ + { + "name": "Go", + "dashboardRefs": [ + { + "template": "go", + "title": "Go Metrics" + } + ] + }, + { + "name": "", + "dashboardRefs": [ + { + "template": "kiali", + "title": "Kiali Internal Metrics" + } + ] + } + ], + "additionalDetails": [], + "validations": { + "gateway": { + "bookinfo-gateway.bookinfo": { + "name": "bookinfo-gateway", + "objectType": "gateway", + "valid": true, + "checks": [], + "references": null + } + }, + "virtualservice": { + "bookinfo.bookinfo": { + "name": "bookinfo", + "objectType": "virtualservice", + "valid": true, + "checks": [], + "references": null + } + }, + "workload": { + "kiali.istio-system": { + "name": "kiali", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + } + } + }, + "waypointWorkloads": null, + "health": { + "workloadStatus": { + "name": "kiali", + "desiredReplicas": 1, + "currentReplicas": 1, + "availableReplicas": 1, + "syncedProxies": -1 + }, + "requests": { + "inbound": {}, + "outbound": {}, + "healthAnnotations": {} + } + } +} diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/istio-system/workloads/prometheus.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/istio-system/workloads/prometheus.json new file mode 100644 index 0000000000..cc5cbd93c3 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/istio-system/workloads/prometheus.json @@ -0,0 +1,162 @@ +{ + "name": "prometheus", + "cluster": "Kubernetes", + "type": "Deployment", + "createdAt": "2024-02-15T09:24:58Z", + "resourceVersion": "1113", + "istioInjectionAnnotation": false, + "istioSidecar": false, + "istioAmbient": false, + "additionalDetailSample": null, + "labels": { + "app": "prometheus", + "chart": "prometheus-19.6.1", + "component": "server", + "heritage": "Helm", + "release": "prometheus", + "sidecar.istio.io/inject": "false" + }, + "appLabel": true, + "versionLabel": false, + "podCount": 0, + "annotations": { + "deployment.kubernetes.io/revision": "1", + "kubectl.kubernetes.io/last-applied-configuration": "{\"apiVersion\":\"apps/v1\",\"kind\":\"Deployment\",\"metadata\":{\"annotations\":{},\"labels\":{\"app\":\"prometheus\",\"chart\":\"prometheus-19.6.1\",\"component\":\"server\",\"heritage\":\"Helm\",\"release\":\"prometheus\"},\"name\":\"prometheus\",\"namespace\":\"istio-system\"},\"spec\":{\"replicas\":1,\"selector\":{\"matchLabels\":{\"app\":\"prometheus\",\"component\":\"server\",\"release\":\"prometheus\"}},\"strategy\":{\"rollingUpdate\":null,\"type\":\"Recreate\"},\"template\":{\"metadata\":{\"labels\":{\"app\":\"prometheus\",\"chart\":\"prometheus-19.6.1\",\"component\":\"server\",\"heritage\":\"Helm\",\"release\":\"prometheus\",\"sidecar.istio.io/inject\":\"false\"}},\"spec\":{\"containers\":[{\"args\":[\"--volume-dir=/etc/config\",\"--webhook-url=http://127.0.0.1:9090/-/reload\"],\"image\":\"jimmidyson/configmap-reload:v0.8.0\",\"imagePullPolicy\":\"IfNotPresent\",\"name\":\"prometheus-server-configmap-reload\",\"resources\":{},\"volumeMounts\":[{\"mountPath\":\"/etc/config\",\"name\":\"config-volume\",\"readOnly\":true}]},{\"args\":[\"--storage.tsdb.retention.time=15d\",\"--config.file=/etc/config/prometheus.yml\",\"--storage.tsdb.path=/data\",\"--web.console.libraries=/etc/prometheus/console_libraries\",\"--web.console.templates=/etc/prometheus/consoles\",\"--web.enable-lifecycle\"],\"image\":\"prom/prometheus:v2.41.0\",\"imagePullPolicy\":\"IfNotPresent\",\"livenessProbe\":{\"failureThreshold\":3,\"httpGet\":{\"path\":\"/-/healthy\",\"port\":9090,\"scheme\":\"HTTP\"},\"initialDelaySeconds\":30,\"periodSeconds\":15,\"successThreshold\":1,\"timeoutSeconds\":10},\"name\":\"prometheus-server\",\"ports\":[{\"containerPort\":9090}],\"readinessProbe\":{\"failureThreshold\":3,\"httpGet\":{\"path\":\"/-/ready\",\"port\":9090,\"scheme\":\"HTTP\"},\"initialDelaySeconds\":0,\"periodSeconds\":5,\"successThreshold\":1,\"timeoutSeconds\":4},\"resources\":{},\"volumeMounts\":[{\"mountPath\":\"/etc/config\",\"name\":\"config-volume\"},{\"mountPath\":\"/data\",\"name\":\"storage-volume\",\"subPath\":\"\"}]}],\"dnsPolicy\":\"ClusterFirst\",\"enableServiceLinks\":true,\"securityContext\":{\"fsGroup\":65534,\"runAsGroup\":65534,\"runAsNonRoot\":true,\"runAsUser\":65534},\"serviceAccountName\":\"prometheus\",\"terminationGracePeriodSeconds\":300,\"volumes\":[{\"configMap\":{\"name\":\"prometheus\"},\"name\":\"config-volume\"},{\"emptyDir\":{},\"name\":\"storage-volume\"}]}}}}\n" + }, + "healthAnnotations": {}, + "istioReferences": null, + "dashboardAnnotations": {}, + "serviceAccountNames": null, + "desiredReplicas": 1, + "currentReplicas": 1, + "availableReplicas": 1, + "pods": [ + { + "name": "prometheus-db8b4588f-hhrn9", + "labels": { + "app": "prometheus", + "chart": "prometheus-19.6.1", + "component": "server", + "heritage": "Helm", + "pod-template-hash": "db8b4588f", + "release": "prometheus", + "sidecar.istio.io/inject": "false" + }, + "createdAt": "2024-02-15T09:24:58Z", + "createdBy": [ + { + "name": "prometheus-db8b4588f", + "kind": "ReplicaSet" + } + ], + "containers": [ + { + "name": "prometheus-server-configmap-reload", + "image": "jimmidyson/configmap-reload:v0.8.0", + "isProxy": false, + "isReady": true, + "isAmbient": false + }, + { + "name": "prometheus-server", + "image": "prom/prometheus:v2.41.0", + "isProxy": false, + "isReady": true, + "isAmbient": false + } + ], + "istioContainers": null, + "istioInitContainers": null, + "status": "Running", + "statusMessage": "", + "statusReason": "", + "appLabel": true, + "versionLabel": false, + "annotations": null, + "proxyStatus": null, + "serviceAccountName": "prometheus" + } + ], + "services": [ + { + "name": "prometheus", + "namespace": "istio-system", + "istioSidecar": true, + "cluster": "Kubernetes", + "istioAmbient": false, + "appLabel": true, + "additionalDetailSample": null, + "annotations": null, + "healthAnnotations": {}, + "ports": null, + "labels": { + "app": "prometheus", + "chart": "prometheus-19.6.1", + "component": "server", + "heritage": "Helm", + "release": "prometheus" + }, + "selector": { + "app": "prometheus", + "component": "server", + "release": "prometheus" + }, + "istioReferences": [], + "kialiWizard": "", + "serviceRegistry": "Kubernetes", + "health": { + "requests": { + "inbound": {}, + "outbound": {}, + "healthAnnotations": {} + } + } + } + ], + "runtimes": [], + "additionalDetails": [], + "validations": { + "gateway": { + "bookinfo-gateway.bookinfo": { + "name": "bookinfo-gateway", + "objectType": "gateway", + "valid": true, + "checks": [], + "references": null + } + }, + "virtualservice": { + "bookinfo.bookinfo": { + "name": "bookinfo", + "objectType": "virtualservice", + "valid": true, + "checks": [], + "references": null + } + }, + "workload": { + "prometheus.istio-system": { + "name": "prometheus", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + } + } + }, + "waypointWorkloads": null, + "health": { + "workloadStatus": { + "name": "prometheus", + "desiredReplicas": 1, + "currentReplicas": 1, + "availableReplicas": 1, + "syncedProxies": -1 + }, + "requests": { + "inbound": {}, + "outbound": {}, + "healthAnnotations": {} + } + } +} diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-agency/apps.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-agency/apps.json new file mode 100644 index 0000000000..408327ae7e --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-agency/apps.json @@ -0,0 +1,201 @@ +{ + "namespace": { + "name": "travel-agency", + "cluster": "", + "isAmbient": false, + "labels": null, + "annotations": null + }, + "cluster": "", + "applications": [ + { + "name": "insurances", + "cluster": "Kubernetes", + "istioSidecar": true, + "istioAmbient": false, + "labels": { + "app": "insurances", + "version": "v1" + }, + "istioReferences": [], + "health": { + "workloadStatuses": [ + { + "name": "insurances-v1", + "desiredReplicas": 1, + "currentReplicas": 1, + "availableReplicas": 1, + "syncedProxies": 1 + } + ], + "requests": { + "inbound": {}, + "outbound": {}, + "healthAnnotations": {} + } + } + }, + { + "name": "mysqldb", + "cluster": "Kubernetes", + "istioSidecar": true, + "istioAmbient": false, + "labels": { + "app": "mysqldb", + "version": "v1" + }, + "istioReferences": [], + "health": { + "workloadStatuses": [ + { + "name": "mysqldb-v1", + "desiredReplicas": 1, + "currentReplicas": 1, + "availableReplicas": 1, + "syncedProxies": 1 + } + ], + "requests": { + "inbound": {}, + "outbound": {}, + "healthAnnotations": {} + } + } + }, + { + "name": "travels", + "cluster": "Kubernetes", + "istioSidecar": true, + "istioAmbient": false, + "labels": { + "app": "travels", + "version": "v1" + }, + "istioReferences": [], + "health": { + "workloadStatuses": [ + { + "name": "travels-v1", + "desiredReplicas": 1, + "currentReplicas": 1, + "availableReplicas": 1, + "syncedProxies": 1 + } + ], + "requests": { + "inbound": {}, + "outbound": {}, + "healthAnnotations": {} + } + } + }, + { + "name": "cars", + "cluster": "Kubernetes", + "istioSidecar": true, + "istioAmbient": false, + "labels": { + "app": "cars", + "version": "v1" + }, + "istioReferences": [], + "health": { + "workloadStatuses": [ + { + "name": "cars-v1", + "desiredReplicas": 1, + "currentReplicas": 1, + "availableReplicas": 1, + "syncedProxies": 1 + } + ], + "requests": { + "inbound": {}, + "outbound": {}, + "healthAnnotations": {} + } + } + }, + { + "name": "discounts", + "cluster": "Kubernetes", + "istioSidecar": true, + "istioAmbient": false, + "labels": { + "app": "discounts", + "version": "v1" + }, + "istioReferences": [], + "health": { + "workloadStatuses": [ + { + "name": "discounts-v1", + "desiredReplicas": 1, + "currentReplicas": 1, + "availableReplicas": 1, + "syncedProxies": 1 + } + ], + "requests": { + "inbound": {}, + "outbound": {}, + "healthAnnotations": {} + } + } + }, + { + "name": "flights", + "cluster": "Kubernetes", + "istioSidecar": true, + "istioAmbient": false, + "labels": { + "app": "flights", + "version": "v1" + }, + "istioReferences": [], + "health": { + "workloadStatuses": [ + { + "name": "flights-v1", + "desiredReplicas": 1, + "currentReplicas": 1, + "availableReplicas": 1, + "syncedProxies": 1 + } + ], + "requests": { + "inbound": {}, + "outbound": {}, + "healthAnnotations": {} + } + } + }, + { + "name": "hotels", + "cluster": "Kubernetes", + "istioSidecar": true, + "istioAmbient": false, + "labels": { + "app": "hotels", + "version": "v1" + }, + "istioReferences": [], + "health": { + "workloadStatuses": [ + { + "name": "hotels-v1", + "desiredReplicas": 1, + "currentReplicas": 1, + "availableReplicas": 1, + "syncedProxies": 1 + } + ], + "requests": { + "inbound": {}, + "outbound": {}, + "healthAnnotations": {} + } + } + } + ] +} diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-agency/apps/cars.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-agency/apps/cars.json new file mode 100644 index 0000000000..41bbac8eff --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-agency/apps/cars.json @@ -0,0 +1,62 @@ +{ + "namespace": { + "name": "travel-agency", + "cluster": "Kubernetes", + "isAmbient": false, + "labels": { + "istio-injection": "enabled", + "kubernetes.io/metadata.name": "travel-agency" + }, + "annotations": null + }, + "name": "cars", + "cluster": "Kubernetes", + "workloads": [ + { + "workloadName": "cars-v1", + "istioSidecar": true, + "istioAmbient": false, + "labels": { + "app": "cars", + "version": "v1" + }, + "serviceAccountNames": ["default"] + } + ], + "serviceNames": ["cars"], + "runtimes": [ + { + "name": "", + "dashboardRefs": [ + { + "template": "envoy", + "title": "Envoy Metrics" + } + ] + } + ], + "health": { + "workloadStatuses": [ + { + "name": "cars-v1", + "desiredReplicas": 1, + "currentReplicas": 1, + "availableReplicas": 1, + "syncedProxies": 1 + } + ], + "requests": { + "inbound": { + "http": { + "200": 0.2666666666666666 + } + }, + "outbound": { + "http": { + "200": 0.2666666666666666 + } + }, + "healthAnnotations": {} + } + } +} diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-agency/apps/discounts.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-agency/apps/discounts.json new file mode 100644 index 0000000000..64916636f4 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-agency/apps/discounts.json @@ -0,0 +1,58 @@ +{ + "namespace": { + "name": "travel-agency", + "cluster": "Kubernetes", + "isAmbient": false, + "labels": { + "istio-injection": "enabled", + "kubernetes.io/metadata.name": "travel-agency" + }, + "annotations": null + }, + "name": "discounts", + "cluster": "Kubernetes", + "workloads": [ + { + "workloadName": "discounts-v1", + "istioSidecar": true, + "istioAmbient": false, + "labels": { + "app": "discounts", + "version": "v1" + }, + "serviceAccountNames": ["default"] + } + ], + "serviceNames": ["discounts"], + "runtimes": [ + { + "name": "", + "dashboardRefs": [ + { + "template": "envoy", + "title": "Envoy Metrics" + } + ] + } + ], + "health": { + "workloadStatuses": [ + { + "name": "discounts-v1", + "desiredReplicas": 1, + "currentReplicas": 1, + "availableReplicas": 1, + "syncedProxies": 1 + } + ], + "requests": { + "inbound": { + "http": { + "200": 1.333333333333333 + } + }, + "outbound": {}, + "healthAnnotations": {} + } + } +} diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-agency/apps/flights.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-agency/apps/flights.json new file mode 100644 index 0000000000..2f7c95f664 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-agency/apps/flights.json @@ -0,0 +1,62 @@ +{ + "namespace": { + "name": "travel-agency", + "cluster": "Kubernetes", + "isAmbient": false, + "labels": { + "istio-injection": "enabled", + "kubernetes.io/metadata.name": "travel-agency" + }, + "annotations": null + }, + "name": "flights", + "cluster": "Kubernetes", + "workloads": [ + { + "workloadName": "flights-v1", + "istioSidecar": true, + "istioAmbient": false, + "labels": { + "app": "flights", + "version": "v1" + }, + "serviceAccountNames": ["default"] + } + ], + "serviceNames": ["flights"], + "runtimes": [ + { + "name": "", + "dashboardRefs": [ + { + "template": "envoy", + "title": "Envoy Metrics" + } + ] + } + ], + "health": { + "workloadStatuses": [ + { + "name": "flights-v1", + "desiredReplicas": 1, + "currentReplicas": 1, + "availableReplicas": 1, + "syncedProxies": 1 + } + ], + "requests": { + "inbound": { + "http": { + "200": 0.2666666666666666 + } + }, + "outbound": { + "http": { + "200": 0.2666666666666666 + } + }, + "healthAnnotations": {} + } + } +} diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-agency/apps/hotels.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-agency/apps/hotels.json new file mode 100644 index 0000000000..4cee4ad274 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-agency/apps/hotels.json @@ -0,0 +1,62 @@ +{ + "namespace": { + "name": "travel-agency", + "cluster": "Kubernetes", + "isAmbient": false, + "labels": { + "istio-injection": "enabled", + "kubernetes.io/metadata.name": "travel-agency" + }, + "annotations": null + }, + "name": "hotels", + "cluster": "Kubernetes", + "workloads": [ + { + "workloadName": "hotels-v1", + "istioSidecar": true, + "istioAmbient": false, + "labels": { + "app": "hotels", + "version": "v1" + }, + "serviceAccountNames": ["default"] + } + ], + "serviceNames": ["hotels"], + "runtimes": [ + { + "name": "", + "dashboardRefs": [ + { + "template": "envoy", + "title": "Envoy Metrics" + } + ] + } + ], + "health": { + "workloadStatuses": [ + { + "name": "hotels-v1", + "desiredReplicas": 1, + "currentReplicas": 1, + "availableReplicas": 1, + "syncedProxies": 1 + } + ], + "requests": { + "inbound": { + "http": { + "200": 0.8000711174326607 + } + }, + "outbound": { + "http": { + "200": 0.39999999999999997 + } + }, + "healthAnnotations": {} + } + } +} diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-agency/apps/insurances.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-agency/apps/insurances.json new file mode 100644 index 0000000000..28f3c4b8e5 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-agency/apps/insurances.json @@ -0,0 +1,62 @@ +{ + "namespace": { + "name": "travel-agency", + "cluster": "Kubernetes", + "isAmbient": false, + "labels": { + "istio-injection": "enabled", + "kubernetes.io/metadata.name": "travel-agency" + }, + "annotations": null + }, + "name": "insurances", + "cluster": "Kubernetes", + "workloads": [ + { + "workloadName": "insurances-v1", + "istioSidecar": true, + "istioAmbient": false, + "labels": { + "app": "insurances", + "version": "v1" + }, + "serviceAccountNames": ["default"] + } + ], + "serviceNames": ["insurances"], + "runtimes": [ + { + "name": "", + "dashboardRefs": [ + { + "template": "envoy", + "title": "Envoy Metrics" + } + ] + } + ], + "health": { + "workloadStatuses": [ + { + "name": "insurances-v1", + "desiredReplicas": 1, + "currentReplicas": 1, + "availableReplicas": 1, + "syncedProxies": 1 + } + ], + "requests": { + "inbound": { + "http": { + "200": 0.39999999999999997 + } + }, + "outbound": { + "http": { + "200": 0.39999999999999997 + } + }, + "healthAnnotations": {} + } + } +} diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-agency/apps/mysqldb.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-agency/apps/mysqldb.json new file mode 100644 index 0000000000..b1834c5c87 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-agency/apps/mysqldb.json @@ -0,0 +1,54 @@ +{ + "namespace": { + "name": "travel-agency", + "cluster": "Kubernetes", + "isAmbient": false, + "labels": { + "istio-injection": "enabled", + "kubernetes.io/metadata.name": "travel-agency" + }, + "annotations": null + }, + "name": "mysqldb", + "cluster": "Kubernetes", + "workloads": [ + { + "workloadName": "mysqldb-v1", + "istioSidecar": true, + "istioAmbient": false, + "labels": { + "app": "mysqldb", + "version": "v1" + }, + "serviceAccountNames": ["default"] + } + ], + "serviceNames": ["mysqldb"], + "runtimes": [ + { + "name": "", + "dashboardRefs": [ + { + "template": "envoy", + "title": "Envoy Metrics" + } + ] + } + ], + "health": { + "workloadStatuses": [ + { + "name": "mysqldb-v1", + "desiredReplicas": 1, + "currentReplicas": 1, + "availableReplicas": 1, + "syncedProxies": 1 + } + ], + "requests": { + "inbound": {}, + "outbound": {}, + "healthAnnotations": {} + } + } +} diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-agency/apps/travels.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-agency/apps/travels.json new file mode 100644 index 0000000000..4cf37680c7 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-agency/apps/travels.json @@ -0,0 +1,62 @@ +{ + "namespace": { + "name": "travel-agency", + "cluster": "Kubernetes", + "isAmbient": false, + "labels": { + "istio-injection": "enabled", + "kubernetes.io/metadata.name": "travel-agency" + }, + "annotations": null + }, + "name": "travels", + "cluster": "Kubernetes", + "workloads": [ + { + "workloadName": "travels-v1", + "istioSidecar": true, + "istioAmbient": false, + "labels": { + "app": "travels", + "version": "v1" + }, + "serviceAccountNames": ["default"] + } + ], + "serviceNames": ["travels"], + "runtimes": [ + { + "name": "", + "dashboardRefs": [ + { + "template": "envoy", + "title": "Envoy Metrics" + } + ] + } + ], + "health": { + "workloadStatuses": [ + { + "name": "travels-v1", + "desiredReplicas": 1, + "currentReplicas": 1, + "availableReplicas": 1, + "syncedProxies": 1 + } + ], + "requests": { + "inbound": { + "http": { + "200": 0.7999999999999998 + } + }, + "outbound": { + "http": { + "200": 1.733333333333333 + } + }, + "healthAnnotations": {} + } + } +} diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-agency/dashboard.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-agency/dashboard.json new file mode 100644 index 0000000000..75e746ecd6 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-agency/dashboard.json @@ -0,0 +1,158 @@ +{ + "name": "", + "title": "Inbound Metrics", + "charts": [ + { + "name": "Request volume", + "unit": "ops", + "spans": 3, + "startCollapsed": false, + "metrics": [], + "xAxis": null, + "error": "" + }, + { + "name": "Request duration", + "unit": "seconds", + "spans": 3, + "startCollapsed": false, + "metrics": [], + "xAxis": null, + "error": "" + }, + { + "name": "Request size", + "unit": "bytes", + "spans": 3, + "startCollapsed": false, + "metrics": [], + "xAxis": null, + "error": "" + }, + { + "name": "Response size", + "unit": "bytes", + "spans": 3, + "startCollapsed": false, + "metrics": [], + "xAxis": null, + "error": "" + }, + { + "name": "Request throughput", + "unit": "bitrate", + "spans": 3, + "startCollapsed": false, + "metrics": [], + "xAxis": null, + "error": "" + }, + { + "name": "Response throughput", + "unit": "bitrate", + "spans": 3, + "startCollapsed": false, + "metrics": [], + "xAxis": null, + "error": "" + }, + { + "name": "gRPC received", + "unit": "msgrate", + "spans": 3, + "startCollapsed": false, + "metrics": [], + "xAxis": null, + "error": "" + }, + { + "name": "gRPC sent", + "unit": "msgrate", + "spans": 3, + "startCollapsed": false, + "metrics": [], + "xAxis": null, + "error": "" + }, + { + "name": "TCP opened", + "unit": "connrate", + "spans": 3, + "startCollapsed": false, + "metrics": [], + "xAxis": null, + "error": "" + }, + { + "name": "TCP closed", + "unit": "connrate", + "spans": 3, + "startCollapsed": false, + "metrics": [], + "xAxis": null, + "error": "" + }, + { + "name": "TCP received", + "unit": "bitrate", + "spans": 3, + "startCollapsed": false, + "metrics": [], + "xAxis": null, + "error": "" + }, + { + "name": "TCP sent", + "unit": "bitrate", + "spans": 3, + "startCollapsed": false, + "metrics": [], + "xAxis": null, + "error": "" + } + ], + "aggregations": [ + { + "label": "destination_canonical_revision", + "displayName": "Local version", + "singleSelection": false + }, + { + "label": "source_workload_namespace", + "displayName": "Remote namespace", + "singleSelection": false + }, + { + "label": "source_canonical_service", + "displayName": "Remote app", + "singleSelection": false + }, + { + "label": "source_canonical_revision", + "displayName": "Remote version", + "singleSelection": false + }, + { + "label": "response_code", + "displayName": "Response code", + "singleSelection": false + }, + { + "label": "grpc_response_status", + "displayName": "GRPC status", + "singleSelection": false + }, + { + "label": "response_flags", + "displayName": "Response flags", + "singleSelection": false + }, + { + "label": "connection_security_policy", + "displayName": "Connection Security Policy", + "singleSelection": false + } + ], + "externalLinks": null, + "rows": 3 +} diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-agency/health/app.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-agency/health/app.json new file mode 100644 index 0000000000..a73a7af661 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-agency/health/app.json @@ -0,0 +1,172 @@ +{ + "cars": { + "workloadStatuses": [ + { + "name": "cars-v1", + "desiredReplicas": 1, + "currentReplicas": 1, + "availableReplicas": 1, + "syncedProxies": 1 + } + ], + "requests": { + "inbound": { + "http": { + "200": 0.26322191455252564 + } + }, + "outbound": { + "http": { + "200": 0.2649572649572649 + } + }, + "healthAnnotations": {} + } + }, + "discounts": { + "workloadStatuses": [ + { + "name": "discounts-v1", + "desiredReplicas": 1, + "currentReplicas": 1, + "availableReplicas": 1, + "syncedProxies": 1 + } + ], + "requests": { + "inbound": { + "http": { + "200": 1.3299145299145296 + } + }, + "outbound": {}, + "healthAnnotations": {} + } + }, + "flights": { + "workloadStatuses": [ + { + "name": "flights-v1", + "desiredReplicas": 1, + "currentReplicas": 1, + "availableReplicas": 1, + "syncedProxies": 0 + } + ], + "requests": { + "inbound": { + "http": { + "200": 0.2653657058650162 + } + }, + "outbound": { + "http": { + "200": 0.2666666666666666 + } + }, + "healthAnnotations": {} + } + }, + "hotels": { + "workloadStatuses": [ + { + "name": "hotels-v1", + "desiredReplicas": 1, + "currentReplicas": 1, + "availableReplicas": 1, + "syncedProxies": 1 + } + ], + "requests": { + "inbound": { + "http": { + "200": 0.7991927774830533 + } + }, + "outbound": { + "http": { + "200": 0.39829059829059826 + } + }, + "healthAnnotations": {} + } + }, + "insurances": { + "workloadStatuses": [ + { + "name": "insurances-v1", + "desiredReplicas": 1, + "currentReplicas": 1, + "availableReplicas": 1, + "syncedProxies": 1 + } + ], + "requests": { + "inbound": { + "http": { + "200": 0.39883943943412903 + } + }, + "outbound": { + "http": { + "200": 0.39999999999999997 + } + }, + "healthAnnotations": {} + } + }, + "mysqldb": { + "workloadStatuses": [ + { + "name": "mysqldb-v1", + "desiredReplicas": 1, + "currentReplicas": 1, + "availableReplicas": 1, + "syncedProxies": 1 + } + ], + "requests": { + "inbound": {}, + "outbound": {}, + "healthAnnotations": {} + } + }, + "travels": { + "workloadStatuses": [ + { + "name": "travels-v1", + "desiredReplicas": 1, + "currentReplicas": 1, + "availableReplicas": 1, + "syncedProxies": 1 + }, + { + "name": "travels-v2", + "desiredReplicas": 1, + "currentReplicas": 1, + "availableReplicas": 1, + "syncedProxies": 1 + }, + { + "name": "travels-v3", + "desiredReplicas": 1, + "currentReplicas": 1, + "availableReplicas": 1, + "syncedProxies": 1 + } + ], + "requests": { + "inbound": { + "http": { + "200": 0.7942120752085292 + } + }, + "outbound": { + "http": { + "200": 1.9840915760326658 + } + }, + "healthAnnotations": {} + } + } +} diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-agency/health/service.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-agency/health/service.json new file mode 100644 index 0000000000..338f0ad2c2 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-agency/health/service.json @@ -0,0 +1,75 @@ +{ + "cars": { + "requests": { + "inbound": { + "http": { + "200": 0.260085535042735 + } + }, + "outbound": {}, + "healthAnnotations": {} + } + }, + "discounts": { + "requests": { + "inbound": { + "http": { + "200": 1.3299145299145296 + } + }, + "outbound": {}, + "healthAnnotations": {} + } + }, + "flights": { + "requests": { + "inbound": { + "http": { + "200": 0.26561828319088315 + } + }, + "outbound": {}, + "healthAnnotations": {} + } + }, + "hotels": { + "requests": { + "inbound": { + "http": { + "200": 0.7984701908831908 + } + }, + "outbound": {}, + "healthAnnotations": {} + } + }, + "insurances": { + "requests": { + "inbound": { + "http": { + "200": 0.3991372467236467 + } + }, + "outbound": {}, + "healthAnnotations": {} + } + }, + "mysqldb": { + "requests": { + "inbound": {}, + "outbound": {}, + "healthAnnotations": {} + } + }, + "travels": { + "requests": { + "inbound": { + "http": { + "200": 0.793200482030932 + } + }, + "outbound": {}, + "healthAnnotations": {} + } + } +} diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-agency/health/workload.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-agency/health/workload.json new file mode 100644 index 0000000000..1b21415624 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-agency/health/workload.json @@ -0,0 +1,188 @@ +{ + "cars-v1": { + "workloadStatus": { + "name": "cars-v1", + "desiredReplicas": 1, + "currentReplicas": 1, + "availableReplicas": 1, + "syncedProxies": 1 + }, + "requests": { + "inbound": { + "http": { + "200": 0.2600759354226021 + } + }, + "outbound": { + "http": { + "200": 0.2649572649572649 + } + }, + "healthAnnotations": {} + } + }, + "discounts-v1": { + "workloadStatus": { + "name": "discounts-v1", + "desiredReplicas": 1, + "currentReplicas": 1, + "availableReplicas": 1, + "syncedProxies": 1 + }, + "requests": { + "inbound": { + "http": { + "200": 1.3299145299145296 + } + }, + "outbound": {}, + "healthAnnotations": {} + } + }, + "flights-v1": { + "workloadStatus": { + "name": "flights-v1", + "desiredReplicas": 1, + "currentReplicas": 1, + "availableReplicas": 1, + "syncedProxies": 1 + }, + "requests": { + "inbound": { + "http": { + "200": 0.2656132557771446 + } + }, + "outbound": { + "http": { + "200": 0.2666666666666666 + } + }, + "healthAnnotations": {} + } + }, + "hotels-v1": { + "workloadStatus": { + "name": "hotels-v1", + "desiredReplicas": 1, + "currentReplicas": 1, + "availableReplicas": 1, + "syncedProxies": 1 + }, + "requests": { + "inbound": { + "http": { + "200": 0.7984947065527065 + } + }, + "outbound": { + "http": { + "200": 0.39829059829059826 + } + }, + "healthAnnotations": {} + } + }, + "insurances-v1": { + "workloadStatus": { + "name": "insurances-v1", + "desiredReplicas": 1, + "currentReplicas": 1, + "availableReplicas": 1, + "syncedProxies": 1 + }, + "requests": { + "inbound": { + "http": { + "200": 0.3991459420702754 + } + }, + "outbound": { + "http": { + "200": 0.39999999999999997 + } + }, + "healthAnnotations": {} + } + }, + "mysqldb-v1": { + "workloadStatus": { + "name": "mysqldb-v1", + "desiredReplicas": 1, + "currentReplicas": 1, + "availableReplicas": 1, + "syncedProxies": 1 + }, + "requests": { + "inbound": {}, + "outbound": {}, + "healthAnnotations": {} + } + }, + "travels-v1": { + "workloadStatus": { + "name": "travels-v1", + "desiredReplicas": 1, + "currentReplicas": 1, + "availableReplicas": 1, + "syncedProxies": 1 + }, + "requests": { + "inbound": { + "http": { + "200": 0.49743589743589733 + } + }, + "outbound": { + "http": { + "200": 1.1008547008547007 + } + }, + "healthAnnotations": {} + } + }, + "travels-v2": { + "workloadStatus": { + "name": "travels-v2", + "desiredReplicas": 1, + "currentReplicas": 1, + "availableReplicas": 1, + "syncedProxies": 1 + }, + "requests": { + "inbound": { + "http": { + "200": 0.1514719596391263 + } + }, + "outbound": { + "http": { + "200": 0.32564116856600195 + } + }, + "healthAnnotations": {} + } + }, + "travels-v3": { + "workloadStatus": { + "name": "travels-v3", + "desiredReplicas": 1, + "currentReplicas": 1, + "availableReplicas": 1, + "syncedProxies": 1 + }, + "requests": { + "inbound": { + "http": { + "200": 0.1476955061728395 + } + }, + "outbound": { + "http": { + "200": 0.29358963325102877 + } + }, + "healthAnnotations": {} + } + } +} diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-agency/istio_config.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-agency/istio_config.json new file mode 100644 index 0000000000..fc5f992b73 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-agency/istio_config.json @@ -0,0 +1,29 @@ +{ + "namespace": { + "name": "travel-agency", + "cluster": "", + "isAmbient": false, + "labels": null, + "annotations": null + }, + "destinationRules": [], + "envoyFilters": [], + "gateways": [], + "serviceEntries": [], + "sidecars": [], + "virtualServices": [], + "workloadEntries": [], + "workloadGroups": [], + "wasmPlugins": [], + "telemetries": [], + "k8sGateways": [], + "k8sGRPCRoutes": [], + "k8sHTTPRoutes": [], + "k8sReferenceGrants": [], + "k8sTCPRoutes": [], + "k8sTLSRoutes": [], + "authorizationPolicies": [], + "peerAuthentications": [], + "requestAuthentications": [], + "validations": {} +} diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-agency/metrics/inbound/metrics_inbound_120.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-agency/metrics/inbound/metrics_inbound_120.json new file mode 100644 index 0000000000..ddf90f9504 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-agency/metrics/inbound/metrics_inbound_120.json @@ -0,0 +1,28 @@ +{ + "request_count": [ + { + "labels": {}, + "datapoints": [ + [1697024130, "3.933244474064202"], + [1697024160, "3.800053774557242"], + [1697024190, "3.8666666666666685"], + [1697024220, "3.9334756314478847"], + [1697024250, "3.800000000000001"] + ], + "name": "request_count" + } + ], + "request_error_count": [ + { + "labels": {}, + "datapoints": [ + [1697024130, "0"], + [1697024160, "0"], + [1697024190, "0"], + [1697024220, "0"], + [1697024250, "0"] + ], + "name": "request_error_count" + } + ] +} diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-agency/metrics/inbound/metrics_inbound_1800.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-agency/metrics/inbound/metrics_inbound_1800.json new file mode 100644 index 0000000000..8909e1ecf8 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-agency/metrics/inbound/metrics_inbound_1800.json @@ -0,0 +1,40 @@ +{ + "request_count": [ + { + "labels": {}, + "datapoints": [ + [1697022360, "3.872727272727272"], + [1697022540, "3.8545359783060222"], + [1697022720, "3.8545454545454536"], + [1697022900, "3.8424242424242423"], + [1697023080, "3.8849503289542557"], + [1697023260, "3.872730798962184"], + [1697023440, "3.866666666666666"], + [1697023620, "3.8787878787878785"], + [1697023800, "3.7999692964648504"], + [1697023980, "3.866666666666666"], + [1697024160, "3.8545352074830523"] + ], + "name": "request_count" + } + ], + "request_error_count": [ + { + "labels": {}, + "datapoints": [ + [1697022360, "0"], + [1697022540, "0"], + [1697022720, "0"], + [1697022900, "0"], + [1697023080, "0"], + [1697023260, "0"], + [1697023440, "0"], + [1697023620, "0"], + [1697023800, "0"], + [1697023980, "0"], + [1697024160, "0"] + ], + "name": "request_error_count" + } + ] +} diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-agency/metrics/inbound/metrics_inbound_300.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-agency/metrics/inbound/metrics_inbound_300.json new file mode 100644 index 0000000000..67504e1639 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-agency/metrics/inbound/metrics_inbound_300.json @@ -0,0 +1,40 @@ +{ + "request_count": [ + { + "labels": {}, + "datapoints": [ + [1697023950, "3.8000000000000007"], + [1697023980, "3.8000000000000016"], + [1697024010, "3.799946691548685"], + [1697024040, "3.933386677335468"], + [1697024070, "3.8000000000000016"], + [1697024100, "3.866729028197065"], + [1697024130, "3.933244474064202"], + [1697024160, "3.800053774557242"], + [1697024190, "3.8666666666666685"], + [1697024220, "3.9334756314478847"], + [1697024250, "3.800000000000001"] + ], + "name": "request_count" + } + ], + "request_error_count": [ + { + "labels": {}, + "datapoints": [ + [1697023950, "0"], + [1697023980, "0"], + [1697024010, "0"], + [1697024040, "0"], + [1697024070, "0"], + [1697024100, "0"], + [1697024130, "0"], + [1697024160, "0"], + [1697024190, "0"], + [1697024220, "0"], + [1697024250, "0"] + ], + "name": "request_error_count" + } + ] +} diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-agency/metrics/inbound/metrics_inbound_3600.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-agency/metrics/inbound/metrics_inbound_3600.json new file mode 100644 index 0000000000..936ede0342 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-agency/metrics/inbound/metrics_inbound_3600.json @@ -0,0 +1,34 @@ +{ + "request_count": [ + { + "labels": {}, + "datapoints": [ + [1697021640, "2.741467670887799"], + [1697022000, "3.8637681159420296"], + [1697022360, "3.886961159447176"], + [1697022720, "3.852173913043479"], + [1697023080, "3.87536231884058"], + [1697023440, "3.8695668557168306"], + [1697023800, "3.831869372789426"], + [1697024160, "3.8637611596017596"] + ], + "name": "request_count" + } + ], + "request_error_count": [ + { + "labels": {}, + "datapoints": [ + [1697021640, "0"], + [1697022000, "0"], + [1697022360, "0"], + [1697022720, "0"], + [1697023080, "0"], + [1697023440, "0"], + [1697023800, "0"], + [1697024160, "0"] + ], + "name": "request_error_count" + } + ] +} diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-agency/metrics/inbound/metrics_inbound_60.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-agency/metrics/inbound/metrics_inbound_60.json new file mode 100644 index 0000000000..ef4e583f44 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-agency/metrics/inbound/metrics_inbound_60.json @@ -0,0 +1,24 @@ +{ + "request_count": [ + { + "labels": {}, + "datapoints": [ + [1697024190, "3.8666666666666685"], + [1697024220, "3.9334756314478847"], + [1697024250, "3.800000000000001"] + ], + "name": "request_count" + } + ], + "request_error_count": [ + { + "labels": {}, + "datapoints": [ + [1697024190, "0"], + [1697024220, "0"], + [1697024250, "0"] + ], + "name": "request_error_count" + } + ] +} diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-agency/metrics/inbound/metrics_inbound_600.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-agency/metrics/inbound/metrics_inbound_600.json new file mode 100644 index 0000000000..f626ff6190 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-agency/metrics/inbound/metrics_inbound_600.json @@ -0,0 +1,216 @@ +{ + "grpc_received": null, + "grpc_sent": null, + "request_count": [ + { + "labels": {}, + "datapoints": [ + [1697023620, "3.9333333333333322"], + [1697023680, "3.8444444444444428"], + [1697023740, "3.844444444444443"], + [1697023800, "3.6443941298905074"], + [1697023860, "3.911016329996248"], + [1697023920, "3.844444444444443"], + [1697023980, "3.8444444444444446"], + [1697024040, "3.844454815506219"], + [1697024100, "3.8666222273573743"], + [1697024160, "3.8666133439978667"], + [1697024220, "3.86663111585122"] + ], + "name": "request_count" + } + ], + "request_duration_millis": [ + { + "labels": {}, + "datapoints": [ + [1697023620, "6.566379310344839"], + [1697023680, "6.0295977011493616"], + [1697023740, "5.244848484848487"], + [1697023800, "5.478065206312723"], + [1697023860, "5.412254385266055"], + [1697023920, "5.532183908045853"], + [1697023980, "4.92413793103454"], + [1697024040, "6.368985326269782"], + [1697024100, "7.1145999315657855"], + [1697024160, "5.6739383767877145"], + [1697024220, "5.092213150551359"] + ], + "stat": "avg", + "name": "request_duration_millis" + } + ], + "request_error_count": [ + { + "labels": {}, + "datapoints": [ + [1697023620, "0"], + [1697023680, "0"], + [1697023740, "0"], + [1697023800, "0"], + [1697023860, "0"], + [1697023920, "0"], + [1697023980, "0"], + [1697024040, "0"], + [1697024100, "0"], + [1697024160, "0"], + [1697024220, "0"] + ], + "name": "request_error_count" + } + ], + "request_size": [ + { + "labels": {}, + "datapoints": [ + [1697023620, "1366.0919540229886"], + [1697023680, "1366.666666666667"], + [1697023740, "1360.3030303030305"], + [1697023800, "1365.3831644528366"], + [1697023860, "1364.942895021214"], + [1697023920, "1364.9425287356325"], + [1697023980, "1364.367816091954"], + [1697024040, "1365.5168872809536"], + [1697024100, "1364.3682110995646"], + [1697024160, "1365.607152888307"], + [1697024220, "1364.9426661211412"] + ], + "stat": "avg", + "name": "request_size" + } + ], + "request_throughput": [ + { + "labels": {}, + "datapoints": [ + [1697023620, "5282.222222222221"], + [1697023680, "5284.444444444443"], + [1697023740, "4987.7777777777765"], + [1697023800, "5127.703630078002"], + [1697023860, "5277.649823272713"], + [1697023920, "5277.777777777778"], + [1697023980, "5275.555555555556"], + [1697024040, "5280.014815802535"], + [1697024100, "5275.496451337396"], + [1697024160, "5249.928014397122"], + [1697024220, "5277.729784176925"] + ], + "name": "request_throughput" + } + ], + "response_size": [ + { + "labels": {}, + "datapoints": [ + [1697023620, "1598.275862068966"], + [1697023680, "1598.2758620689665"], + [1697023740, "1628.1818181818187"], + [1697023800, "1572.5156425114612"], + [1697023860, "1598.289301932234"], + [1697023920, "1598.2758620689658"], + [1697023980, "1598.2758620689654"], + [1697024040, "1598.2777065514515"], + [1697024100, "1598.278817440177"], + [1697024160, "1600.8746926872575"], + [1697024220, "1598.2809030603103"] + ], + "stat": "avg", + "name": "response_size" + } + ], + "response_throughput": [ + { + "labels": {}, + "datapoints": [ + [1697023620, "6180"], + [1697023680, "6180.000000000001"], + [1697023740, "5969.999999999999"], + [1697023800, "5905.59073700882"], + [1697023860, "6179.900479829393"], + [1697023920, "6180"], + [1697023980, "6180"], + [1697024040, "6180.026075812462"], + [1697024100, "6179.940401028648"], + [1697024160, "6154.388455642205"], + [1697024220, "6179.962671643781"] + ], + "name": "response_throughput" + } + ], + "tcp_closed": [ + { + "labels": {}, + "datapoints": [ + [1697023620, "1.733333333333333"], + [1697023680, "1.733333333333333"], + [1697023740, "1.733333333333333"], + [1697023800, "1.733333333333333"], + [1697023860, "1.733333333333333"], + [1697023920, "1.733333333333333"], + [1697023980, "1.733333333333333"], + [1697024040, "1.733333333333333"], + [1697024100, "1.733333333333333"], + [1697024160, "1.733333333333333"], + [1697024220, "1.733333333333333"] + ], + "name": "tcp_closed" + } + ], + "tcp_opened": [ + { + "labels": {}, + "datapoints": [ + [1697023620, "1.733333333333333"], + [1697023680, "1.733333333333333"], + [1697023740, "1.733333333333333"], + [1697023800, "1.733333333333333"], + [1697023860, "1.733333333333333"], + [1697023920, "1.733333333333333"], + [1697023980, "1.733333333333333"], + [1697024040, "1.733333333333333"], + [1697024100, "1.733333333333333"], + [1697024160, "1.733333333333333"], + [1697024220, "1.733333333333333"] + ], + "name": "tcp_opened" + } + ], + "tcp_received": [ + { + "labels": {}, + "datapoints": [ + [1697023620, "957.5999999999998"], + [1697023680, "958.2888888888888"], + [1697023740, "957.6222222222221"], + [1697023800, "958.1555555555556"], + [1697023860, "957.3999999999999"], + [1697023920, "957.4444444444443"], + [1697023980, "957.2444444444443"], + [1697024040, "958.2444444444443"], + [1697024100, "957.511111111111"], + [1697024160, "958.1333333333333"], + [1697024220, "957.3333333333333"] + ], + "name": "tcp_received" + } + ], + "tcp_sent": [ + { + "labels": {}, + "datapoints": [ + [1697023620, "324.9555555555555"], + [1697023680, "326.1333333333333"], + [1697023740, "325.17777777777775"], + [1697023800, "326.1111111111111"], + [1697023860, "324.75555555555553"], + [1697023920, "324.66666666666663"], + [1697023980, "324.3555555555555"], + [1697024040, "326.0222222222222"], + [1697024100, "324.66666666666663"], + [1697024160, "325.99999999999994"], + [1697024220, "324.7777777777777"] + ], + "name": "tcp_sent" + } + ] +} diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-agency/metrics/index.ts b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-agency/metrics/index.ts new file mode 100644 index 0000000000..a3930117bb --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-agency/metrics/index.ts @@ -0,0 +1,51 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import inbound60 from './inbound/metrics_inbound_60.json'; +import inbound120 from './inbound/metrics_inbound_120.json'; +import inbound300 from './inbound/metrics_inbound_300.json'; +import inbound600 from './inbound/metrics_inbound_600.json'; +import inbound1800 from './inbound/metrics_inbound_1800.json'; +import inbound3600 from './inbound/metrics_inbound_3600.json'; +/* Outbound Metrics */ + +import outbound60 from './outbound/metrics_outbound_60.json'; +import outbound120 from './outbound/metrics_outbound_120.json'; +import outbound300 from './outbound/metrics_outbound_300.json'; +import outbound600 from './outbound/metrics_outbound_600.json'; +import outbound1800 from './outbound/metrics_outbound_1800.json'; +import outbound3600 from './outbound/metrics_outbound_3600.json'; + +export const travelAgencyMetrics = { + inbound: { + 60: inbound60, + 120: inbound120, + 300: inbound300, + 600: inbound600, + 1800: inbound1800, + 3600: inbound3600, + }, + outbound: { + 60: outbound60, + 120: outbound120, + 300: outbound300, + 600: outbound600, + 1800: outbound1800, + 3600: outbound3600, + }, +}; + +export default travelAgencyMetrics; diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-agency/metrics/outbound/metrics_outbound_120.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-agency/metrics/outbound/metrics_outbound_120.json new file mode 100644 index 0000000000..1084dd865d --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-agency/metrics/outbound/metrics_outbound_120.json @@ -0,0 +1,16 @@ +{ + "request_count": [ + { + "labels": {}, + "datapoints": [ + [1697024190, "3.0666666666666673"], + [1697024220, "3.1334756314478835"], + [1697024250, "3.0000000000000004"], + [1697024280, "3.0666666666666673"], + [1697024310, "3.13326224118013"] + ], + "name": "request_count" + } + ], + "request_error_count": null +} diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-agency/metrics/outbound/metrics_outbound_1800.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-agency/metrics/outbound/metrics_outbound_1800.json new file mode 100644 index 0000000000..240a8b90d2 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-agency/metrics/outbound/metrics_outbound_1800.json @@ -0,0 +1,22 @@ +{ + "request_count": [ + { + "labels": {}, + "datapoints": [ + [1697022360, "3.0727272727272723"], + [1697022540, "3.0545359783060224"], + [1697022720, "3.072727272727272"], + [1697022900, "3.0484848484848484"], + [1697023080, "3.0728291168330446"], + [1697023260, "3.072727272727272"], + [1697023440, "3.0727272727272723"], + [1697023620, "3.0606060606060606"], + [1697023800, "2.9999692964648506"], + [1697023980, "3.0606060606060597"], + [1697024160, "3.0605915159448593"] + ], + "name": "request_count" + } + ], + "request_error_count": null +} diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-agency/metrics/outbound/metrics_outbound_300.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-agency/metrics/outbound/metrics_outbound_300.json new file mode 100644 index 0000000000..e4e25a85d0 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-agency/metrics/outbound/metrics_outbound_300.json @@ -0,0 +1,22 @@ +{ + "request_count": [ + { + "labels": {}, + "datapoints": [ + [1697024010, "3.0666000222148173"], + [1697024040, "3.1333866773354675"], + [1697024070, "3.0000000000000004"], + [1697024100, "3.0666756171822707"], + [1697024130, "3.133244474064201"], + [1697024160, "3.000053774557241"], + [1697024190, "3.0666666666666673"], + [1697024220, "3.1334756314478835"], + [1697024250, "3.0000000000000004"], + [1697024280, "3.0666666666666673"], + [1697024310, "3.13326224118013"] + ], + "name": "request_count" + } + ], + "request_error_count": null +} diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-agency/metrics/outbound/metrics_outbound_3600.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-agency/metrics/outbound/metrics_outbound_3600.json new file mode 100644 index 0000000000..2c501bbf59 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-agency/metrics/outbound/metrics_outbound_3600.json @@ -0,0 +1,19 @@ +{ + "request_count": [ + { + "labels": {}, + "datapoints": [ + [1697021640, "2.1670810770697164"], + [1697022000, "3.069565217391305"], + [1697022360, "3.0869611594471746"], + [1697022720, "3.0608695652173914"], + [1697023080, "3.069565217391305"], + [1697023440, "3.0695652173913044"], + [1697023800, "3.0318693727894255"], + [1697024160, "3.0637611596017598"] + ], + "name": "request_count" + } + ], + "request_error_count": null +} diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-agency/metrics/outbound/metrics_outbound_60.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-agency/metrics/outbound/metrics_outbound_60.json new file mode 100644 index 0000000000..0f2af383be --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-agency/metrics/outbound/metrics_outbound_60.json @@ -0,0 +1,14 @@ +{ + "request_count": [ + { + "labels": {}, + "datapoints": [ + [1697024250, "3.0000000000000004"], + [1697024280, "3.0666666666666673"], + [1697024310, "3.13326224118013"] + ], + "name": "request_count" + } + ], + "request_error_count": null +} diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-agency/metrics/outbound/metrics_outbound_600.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-agency/metrics/outbound/metrics_outbound_600.json new file mode 100644 index 0000000000..f768e774be --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-agency/metrics/outbound/metrics_outbound_600.json @@ -0,0 +1,198 @@ +{ + "grpc_received": null, + "grpc_sent": null, + "request_count": [ + { + "labels": {}, + "datapoints": [ + [1697023680, "3.066666666666666"], + [1697023740, "3.0666666666666664"], + [1697023800, "2.822109677148661"], + [1697023860, "3.0665718855518036"], + [1697023920, "3.066666666666666"], + [1697023980, "3.0666666666666664"], + [1697024040, "3.0666666666666664"], + [1697024100, "3.0666311158512194"], + [1697024160, "3.066613343997867"], + [1697024220, "3.0666311158512203"], + [1697024280, "3.066666666666667"] + ], + "name": "request_count" + } + ], + "request_duration_millis": [ + { + "labels": {}, + "datapoints": [ + [1697023680, "4.850362318840522"], + [1697023740, "4.438372093023219"], + [1697023800, "4.504722864182922"], + [1697023860, "4.575570249658066"], + [1697023920, "4.5568840579709216"], + [1697023980, "4.083333333333391"], + [1697024040, "5.183333333333363"], + [1697024100, "6.056815740306035"], + [1697024160, "4.519259624156209"], + [1697024220, "4.197780125318008"], + [1697024280, "3.9851449275362336"] + ], + "stat": "avg", + "name": "request_duration_millis" + } + ], + "request_error_count": null, + "request_size": [ + { + "labels": {}, + "datapoints": [ + [1697023680, "1397.1014492753623"], + [1697023740, "1391.0852713178294"], + [1697023800, "1396.6183165397285"], + [1697023860, "1394.9289248450104"], + [1697023920, "1394.927536231884"], + [1697023980, "1394.2028985507245"], + [1697024040, "1395.6521739130435"], + [1697024100, "1394.2034109857157"], + [1697024160, "1395.9862068965522"], + [1697024220, "1394.9280570674496"], + [1697024280, "1395.6521739130435"] + ], + "stat": "avg", + "name": "request_size" + } + ], + "request_throughput": [ + { + "labels": {}, + "datapoints": [ + [1697023680, "4284.444444444443"], + [1697023740, "3987.7777777777774"], + [1697023800, "4127.6258419284695"], + [1697023860, "4277.649823272714"], + [1697023920, "4277.777777777777"], + [1697023980, "4275.555555555556"], + [1697024040, "4280"], + [1697024100, "4275.507561954702"], + [1697024160, "4249.928014397121"], + [1697024220, "4277.729784176925"], + [1697024280, "4279.999999999999"] + ], + "name": "request_throughput" + } + ], + "response_size": [ + { + "labels": {}, + "datapoints": [ + [1697023680, "1384.7826086956525"], + [1697023740, "1408.139534883721"], + [1697023800, "1343.996157532804"], + [1697023860, "1384.7929561031394"], + [1697023920, "1384.782608695652"], + [1697023980, "1384.7826086956522"], + [1697024040, "1384.7826086956527"], + [1697024100, "1384.7864897606667"], + [1697024160, "1386.5022441160374"], + [1697024220, "1384.7864897606673"], + [1697024280, "1384.7826086956522"] + ], + "stat": "avg", + "name": "response_size" + } + ], + "response_throughput": [ + { + "labels": {}, + "datapoints": [ + [1697023680, "4246.666666666667"], + [1697023740, "4036.666666666666"], + [1697023800, "3972.1040498949824"], + [1697023860, "4246.567146496061"], + [1697023920, "4246.666666666666"], + [1697023980, "4246.666666666667"], + [1697024040, "4246.666666666668"], + [1697024100, "4246.629338310448"], + [1697024160, "4221.055122308871"], + [1697024220, "4246.629338310448"], + [1697024280, "4246.666666666666"] + ], + "name": "response_throughput" + } + ], + "tcp_closed": [ + { + "labels": {}, + "datapoints": [ + [1697023680, "1.733333333333333"], + [1697023740, "1.733333333333333"], + [1697023800, "1.733333333333333"], + [1697023860, "1.733333333333333"], + [1697023920, "1.733333333333333"], + [1697023980, "1.733333333333333"], + [1697024040, "1.733333333333333"], + [1697024100, "1.733333333333333"], + [1697024160, "1.733333333333333"], + [1697024220, "1.733333333333333"], + [1697024280, "1.733333333333333"] + ], + "name": "tcp_closed" + } + ], + "tcp_opened": [ + { + "labels": {}, + "datapoints": [ + [1697023680, "1.733333333333333"], + [1697023740, "1.733333333333333"], + [1697023800, "1.733333333333333"], + [1697023860, "1.733333333333333"], + [1697023920, "1.733333333333333"], + [1697023980, "1.733333333333333"], + [1697024040, "1.733333333333333"], + [1697024100, "1.733333333333333"], + [1697024160, "1.733333333333333"], + [1697024220, "1.733333333333333"], + [1697024280, "1.733333333333333"] + ], + "name": "tcp_opened" + } + ], + "tcp_received": [ + { + "labels": {}, + "datapoints": [ + [1697023680, "958.2888888888888"], + [1697023740, "957.6222222222221"], + [1697023800, "958.1555555555556"], + [1697023860, "957.3999999999999"], + [1697023920, "957.4444444444443"], + [1697023980, "957.2444444444443"], + [1697024040, "958.2444444444443"], + [1697024100, "957.511111111111"], + [1697024160, "958.1333333333333"], + [1697024220, "957.3333333333333"], + [1697024280, "957.7555555555554"] + ], + "name": "tcp_received" + } + ], + "tcp_sent": [ + { + "labels": {}, + "datapoints": [ + [1697023680, "326.1333333333333"], + [1697023740, "325.17777777777775"], + [1697023800, "326.1111111111111"], + [1697023860, "324.75555555555553"], + [1697023920, "324.66666666666663"], + [1697023980, "324.3555555555555"], + [1697024040, "326.0222222222222"], + [1697024100, "324.66666666666663"], + [1697024160, "325.99999999999994"], + [1697024220, "324.7777777777777"], + [1697024280, "325.26666666666665"] + ], + "name": "tcp_sent" + } + ] +} diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-agency/services.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-agency/services.json new file mode 100644 index 0000000000..d2ef8f57ec --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-agency/services.json @@ -0,0 +1,272 @@ +{ + "namespace": { + "name": "travel-agency", + "cluster": "", + "isAmbient": false, + "labels": null, + "annotations": null + }, + "services": [ + { + "name": "insurances", + "namespace": "travel-agency", + "istioSidecar": true, + "cluster": "Kubernetes", + "istioAmbient": false, + "appLabel": true, + "additionalDetailSample": null, + "annotations": null, + "healthAnnotations": {}, + "ports": null, + "labels": { + "app": "insurances" + }, + "selector": { + "app": "insurances" + }, + "istioReferences": [], + "kialiWizard": "", + "serviceRegistry": "Kubernetes", + "health": { + "requests": { + "inbound": {}, + "outbound": {}, + "healthAnnotations": {} + } + } + }, + { + "name": "travels", + "namespace": "travel-agency", + "istioSidecar": true, + "cluster": "Kubernetes", + "istioAmbient": false, + "appLabel": true, + "additionalDetailSample": null, + "annotations": null, + "healthAnnotations": {}, + "ports": null, + "labels": { + "app": "travels" + }, + "selector": { + "app": "travels" + }, + "istioReferences": [], + "kialiWizard": "", + "serviceRegistry": "Kubernetes", + "health": { + "requests": { + "inbound": {}, + "outbound": {}, + "healthAnnotations": {} + } + } + }, + { + "name": "mysqldb", + "namespace": "travel-agency", + "istioSidecar": true, + "cluster": "Kubernetes", + "istioAmbient": false, + "appLabel": true, + "additionalDetailSample": null, + "annotations": null, + "healthAnnotations": {}, + "ports": null, + "labels": { + "app": "mysqldb" + }, + "selector": { + "app": "mysqldb" + }, + "istioReferences": [], + "kialiWizard": "", + "serviceRegistry": "Kubernetes", + "health": { + "requests": { + "inbound": {}, + "outbound": {}, + "healthAnnotations": {} + } + } + }, + { + "name": "cars", + "namespace": "travel-agency", + "istioSidecar": true, + "cluster": "Kubernetes", + "istioAmbient": false, + "appLabel": true, + "additionalDetailSample": null, + "annotations": null, + "healthAnnotations": {}, + "ports": null, + "labels": { + "app": "cars" + }, + "selector": { + "app": "cars" + }, + "istioReferences": [], + "kialiWizard": "", + "serviceRegistry": "Kubernetes", + "health": { + "requests": { + "inbound": {}, + "outbound": {}, + "healthAnnotations": {} + } + } + }, + { + "name": "discounts", + "namespace": "travel-agency", + "istioSidecar": true, + "cluster": "Kubernetes", + "istioAmbient": false, + "appLabel": true, + "additionalDetailSample": null, + "annotations": null, + "healthAnnotations": {}, + "ports": null, + "labels": { + "app": "discounts" + }, + "selector": { + "app": "discounts" + }, + "istioReferences": [], + "kialiWizard": "", + "serviceRegistry": "Kubernetes", + "health": { + "requests": { + "inbound": { + "http": { + "200": 0.22438000000000002 + } + }, + "outbound": {}, + "healthAnnotations": {} + } + } + }, + { + "name": "flights", + "namespace": "travel-agency", + "istioSidecar": true, + "cluster": "Kubernetes", + "istioAmbient": false, + "appLabel": true, + "additionalDetailSample": null, + "annotations": null, + "healthAnnotations": {}, + "ports": null, + "labels": { + "app": "flights" + }, + "selector": { + "app": "flights" + }, + "istioReferences": [], + "kialiWizard": "", + "serviceRegistry": "Kubernetes", + "health": { + "requests": { + "inbound": { + "http": { + "200": 0.08368666666666667 + } + }, + "outbound": {}, + "healthAnnotations": {} + } + } + }, + { + "name": "hotels", + "namespace": "travel-agency", + "istioSidecar": true, + "cluster": "Kubernetes", + "istioAmbient": false, + "appLabel": true, + "additionalDetailSample": null, + "annotations": null, + "healthAnnotations": {}, + "ports": null, + "labels": { + "app": "hotels" + }, + "selector": { + "app": "hotels" + }, + "istioReferences": [], + "kialiWizard": "", + "serviceRegistry": "Kubernetes", + "health": { + "requests": { + "inbound": { + "http": { + "200": 0.2813866666666667 + } + }, + "outbound": {}, + "healthAnnotations": {} + } + } + } + ], + "validations": { + "service": { + "cars.travel-agency": { + "name": "cars", + "objectType": "service", + "valid": true, + "checks": [], + "references": null + }, + "discounts.travel-agency": { + "name": "discounts", + "objectType": "service", + "valid": true, + "checks": [], + "references": null + }, + "flights.travel-agency": { + "name": "flights", + "objectType": "service", + "valid": true, + "checks": [], + "references": null + }, + "hotels.travel-agency": { + "name": "hotels", + "objectType": "service", + "valid": true, + "checks": [], + "references": null + }, + "insurances.travel-agency": { + "name": "insurances", + "objectType": "service", + "valid": true, + "checks": [], + "references": null + }, + "mysqldb.travel-agency": { + "name": "mysqldb", + "objectType": "service", + "valid": true, + "checks": [], + "references": null + }, + "travels.travel-agency": { + "name": "travels", + "objectType": "service", + "valid": true, + "checks": [], + "references": null + } + } + } +} diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-agency/services/cars.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-agency/services/cars.json new file mode 100644 index 0000000000..fd74ee72a1 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-agency/services/cars.json @@ -0,0 +1,351 @@ +{ + "cluster": "Kubernetes", + "destinationRules": [], + "endpoints": [ + { + "addresses": [ + { + "kind": "Pod", + "name": "cars-v1-6c869ff769-whw74", + "ip": "10.244.0.38", + "port": 0 + } + ], + "ports": [ + { + "name": "http", + "protocol": "TCP", + "port": 8000 + } + ] + } + ], + "istioPermissions": { + "create": true, + "update": true, + "delete": true + }, + "istioSidecar": true, + "k8sHTTPRoutes": [], + "k8sReferenceGrants": null, + "service": { + "name": "cars", + "createdAt": "2024-02-27T13:11:51Z", + "resourceVersion": "53549", + "namespace": { + "name": "travel-agency", + "cluster": "", + "isAmbient": false, + "labels": null, + "annotations": null + }, + "labels": { + "app": "cars" + }, + "selectors": { + "app": "cars" + }, + "type": "ClusterIP", + "ip": "10.101.236.172", + "ports": [ + { + "name": "http", + "protocol": "TCP", + "port": 8000 + } + ], + "externalName": "", + "annotations": { + "kubectl.kubernetes.io/last-applied-configuration": "{\"apiVersion\":\"v1\",\"kind\":\"Service\",\"metadata\":{\"annotations\":{},\"labels\":{\"app\":\"cars\"},\"name\":\"cars\",\"namespace\":\"travel-agency\"},\"spec\":{\"ports\":[{\"name\":\"http\",\"port\":8000}],\"selector\":{\"app\":\"cars\"}}}\n" + }, + "healthAnnotations": {}, + "additionalDetails": [] + }, + "serviceEntries": null, + "virtualServices": [], + "workloads": [ + { + "name": "cars-v1", + "cluster": "Kubernetes", + "type": "Deployment", + "createdAt": "2024-02-27T13:11:51Z", + "resourceVersion": "54007", + "istioSidecar": true, + "istioAmbient": false, + "additionalDetailSample": null, + "labels": { + "app": "cars", + "version": "v1" + }, + "appLabel": true, + "versionLabel": true, + "podCount": 1, + "annotations": { + "deployment.kubernetes.io/revision": "1", + "kubectl.kubernetes.io/last-applied-configuration": "{\"apiVersion\":\"apps/v1\",\"kind\":\"Deployment\",\"metadata\":{\"annotations\":{},\"name\":\"cars-v1\",\"namespace\":\"travel-agency\"},\"spec\":{\"replicas\":1,\"selector\":{\"matchLabels\":{\"app\":\"cars\",\"version\":\"v1\"}},\"template\":{\"metadata\":{\"annotations\":{\"proxy.istio.io/config\":\"tracing:\\n zipkin:\\n address: zipkin.istio-system:9411\\n sampling: 10\\n custom_tags:\\n http.header.portal:\\n header:\\n name: portal\\n http.header.device:\\n header:\\n name: device\\n http.header.user:\\n header:\\n name: user\\n http.header.travel:\\n header:\\n name: travel\\n\",\"readiness.status.sidecar.istio.io/applicationPorts\":\"\"},\"labels\":{\"app\":\"cars\",\"version\":\"v1\"}},\"spec\":{\"containers\":[{\"env\":[{\"name\":\"CURRENT_SERVICE\",\"value\":\"cars\"},{\"name\":\"CURRENT_VERSION\",\"value\":\"v1\"},{\"name\":\"LISTEN_ADDRESS\",\"value\":\":8000\"},{\"name\":\"DISCOUNTS_SERVICE\",\"value\":\"http://discounts.travel-agency:8000\"},{\"name\":\"MYSQL_SERVICE\",\"value\":\"mysqldb.travel-agency:3306\"},{\"name\":\"MYSQL_USER\",\"value\":\"root\"},{\"name\":\"MYSQL_PASSWORD\",\"valueFrom\":{\"secretKeyRef\":{\"key\":\"rootpasswd\",\"name\":\"mysql-credentials\"}}},{\"name\":\"MYSQL_DATABASE\",\"value\":\"test\"}],\"image\":\"quay.io/kiali/demo_travels_cars:v1\",\"imagePullPolicy\":\"IfNotPresent\",\"name\":\"cars\",\"ports\":[{\"containerPort\":8000}],\"securityContext\":{\"allowPrivilegeEscalation\":false,\"capabilities\":{\"drop\":[\"ALL\"]},\"privileged\":false,\"readOnlyRootFilesystem\":true}}]}}}}\n" + }, + "healthAnnotations": {}, + "istioReferences": [], + "dashboardAnnotations": null, + "serviceAccountNames": ["default"], + "health": { + "workloadStatus": null, + "requests": { + "inbound": null, + "outbound": null, + "healthAnnotations": null + } + } + } + ], + "health": { + "requests": { + "inbound": { + "http": { + "200": 0.2666785190452909 + } + }, + "outbound": {}, + "healthAnnotations": {} + } + }, + "namespaceMTLS": { + "status": "MTLS_NOT_ENABLED", + "autoMTLSEnabled": true, + "minTLS": "" + }, + "subServices": [ + { + "name": "cars", + "namespace": "", + "istioSidecar": false, + "cluster": "", + "istioAmbient": false, + "appLabel": false, + "additionalDetailSample": null, + "annotations": null, + "healthAnnotations": null, + "ports": { + "http": 8000 + }, + "labels": null, + "selector": null, + "istioReferences": null, + "kialiWizard": "", + "serviceRegistry": "", + "health": { + "requests": { + "inbound": null, + "outbound": null, + "healthAnnotations": null + } + } + } + ], + "validations": { + "gateway": { + "bookinfo-gateway.bookinfo": { + "name": "bookinfo-gateway", + "objectType": "gateway", + "valid": true, + "checks": [], + "references": null + } + }, + "service": { + "cars.travel-agency": { + "name": "cars", + "objectType": "service", + "valid": true, + "checks": [], + "references": null + } + }, + "virtualservice": { + "bookinfo.bookinfo": { + "name": "bookinfo", + "objectType": "virtualservice", + "valid": true, + "checks": [], + "references": null + } + }, + "workload": { + "cars-v1.travel-agency": { + "name": "cars-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "control.travel-control": { + "name": "control", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "details-v1.bookinfo": { + "name": "details-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "discounts-v1.travel-agency": { + "name": "discounts-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "flights-v1.travel-agency": { + "name": "flights-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "grafana.istio-system": { + "name": "grafana", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "hotels-v1.travel-agency": { + "name": "hotels-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "insurances-v1.travel-agency": { + "name": "insurances-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "istio-egressgateway.istio-system": { + "name": "istio-egressgateway", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "istio-ingressgateway.istio-system": { + "name": "istio-ingressgateway", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "istiod.istio-system": { + "name": "istiod", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "jaeger.istio-system": { + "name": "jaeger", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "kiali-traffic-generator.bookinfo": { + "name": "kiali-traffic-generator", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "kiali.istio-system": { + "name": "kiali", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "mysqldb-v1.travel-agency": { + "name": "mysqldb-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "productpage-v1.bookinfo": { + "name": "productpage-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "prometheus.istio-system": { + "name": "prometheus", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "ratings-v1.bookinfo": { + "name": "ratings-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "reviews-v1.bookinfo": { + "name": "reviews-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "reviews-v2.bookinfo": { + "name": "reviews-v2", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "reviews-v3.bookinfo": { + "name": "reviews-v3", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "travels-v1.travel-agency": { + "name": "travels-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "travels.travel-portal": { + "name": "travels", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "viaggi.travel-portal": { + "name": "viaggi", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "voyages.travel-portal": { + "name": "voyages", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + } + } + } +} diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-agency/services/discounts.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-agency/services/discounts.json new file mode 100644 index 0000000000..e8225edccc --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-agency/services/discounts.json @@ -0,0 +1,351 @@ +{ + "cluster": "Kubernetes", + "destinationRules": [], + "endpoints": [ + { + "addresses": [ + { + "kind": "Pod", + "name": "discounts-v1-76f667c5db-6k77v", + "ip": "10.244.0.32", + "port": 0 + } + ], + "ports": [ + { + "name": "http", + "protocol": "TCP", + "port": 8000 + } + ] + } + ], + "istioPermissions": { + "create": true, + "update": true, + "delete": true + }, + "istioSidecar": true, + "k8sHTTPRoutes": [], + "k8sReferenceGrants": null, + "service": { + "name": "discounts", + "createdAt": "2024-02-27T13:11:51Z", + "resourceVersion": "53571", + "namespace": { + "name": "travel-agency", + "cluster": "", + "isAmbient": false, + "labels": null, + "annotations": null + }, + "labels": { + "app": "discounts" + }, + "selectors": { + "app": "discounts" + }, + "type": "ClusterIP", + "ip": "10.110.234.254", + "ports": [ + { + "name": "http", + "protocol": "TCP", + "port": 8000 + } + ], + "externalName": "", + "annotations": { + "kubectl.kubernetes.io/last-applied-configuration": "{\"apiVersion\":\"v1\",\"kind\":\"Service\",\"metadata\":{\"annotations\":{},\"labels\":{\"app\":\"discounts\"},\"name\":\"discounts\",\"namespace\":\"travel-agency\"},\"spec\":{\"ports\":[{\"name\":\"http\",\"port\":8000}],\"selector\":{\"app\":\"discounts\"}}}\n" + }, + "healthAnnotations": {}, + "additionalDetails": [] + }, + "serviceEntries": null, + "virtualServices": [], + "workloads": [ + { + "name": "discounts-v1", + "cluster": "Kubernetes", + "type": "Deployment", + "createdAt": "2024-02-27T13:11:51Z", + "resourceVersion": "53820", + "istioSidecar": true, + "istioAmbient": false, + "additionalDetailSample": null, + "labels": { + "app": "discounts", + "version": "v1" + }, + "appLabel": true, + "versionLabel": true, + "podCount": 1, + "annotations": { + "deployment.kubernetes.io/revision": "1", + "kubectl.kubernetes.io/last-applied-configuration": "{\"apiVersion\":\"apps/v1\",\"kind\":\"Deployment\",\"metadata\":{\"annotations\":{},\"name\":\"discounts-v1\",\"namespace\":\"travel-agency\"},\"spec\":{\"replicas\":1,\"selector\":{\"matchLabels\":{\"app\":\"discounts\",\"version\":\"v1\"}},\"template\":{\"metadata\":{\"annotations\":{\"proxy.istio.io/config\":\"tracing:\\n zipkin:\\n address: zipkin.istio-system:9411\\n sampling: 10\\n custom_tags:\\n http.header.portal:\\n header:\\n name: portal\\n http.header.device:\\n header:\\n name: device\\n http.header.user:\\n header:\\n name: user\\n http.header.travel:\\n header:\\n name: travel\\n\",\"readiness.status.sidecar.istio.io/applicationPorts\":\"\"},\"labels\":{\"app\":\"discounts\",\"version\":\"v1\"}},\"spec\":{\"containers\":[{\"env\":[{\"name\":\"CURRENT_SERVICE\",\"value\":\"discounts\"},{\"name\":\"CURRENT_VERSION\",\"value\":\"v1\"},{\"name\":\"LISTEN_ADDRESS\",\"value\":\":8000\"}],\"image\":\"quay.io/kiali/demo_travels_discounts:v1\",\"imagePullPolicy\":\"IfNotPresent\",\"name\":\"discounts\",\"ports\":[{\"containerPort\":8000}],\"securityContext\":{\"allowPrivilegeEscalation\":false,\"capabilities\":{\"drop\":[\"ALL\"]},\"privileged\":false,\"readOnlyRootFilesystem\":true}}]}}}}\n" + }, + "healthAnnotations": {}, + "istioReferences": [], + "dashboardAnnotations": null, + "serviceAccountNames": ["default"], + "health": { + "workloadStatus": null, + "requests": { + "inbound": null, + "outbound": null, + "healthAnnotations": null + } + } + } + ], + "health": { + "requests": { + "inbound": { + "http": { + "200": 1.333333333333333 + } + }, + "outbound": {}, + "healthAnnotations": {} + } + }, + "namespaceMTLS": { + "status": "MTLS_NOT_ENABLED", + "autoMTLSEnabled": true, + "minTLS": "" + }, + "subServices": [ + { + "name": "discounts", + "namespace": "", + "istioSidecar": false, + "cluster": "", + "istioAmbient": false, + "appLabel": false, + "additionalDetailSample": null, + "annotations": null, + "healthAnnotations": null, + "ports": { + "http": 8000 + }, + "labels": null, + "selector": null, + "istioReferences": null, + "kialiWizard": "", + "serviceRegistry": "", + "health": { + "requests": { + "inbound": null, + "outbound": null, + "healthAnnotations": null + } + } + } + ], + "validations": { + "gateway": { + "bookinfo-gateway.bookinfo": { + "name": "bookinfo-gateway", + "objectType": "gateway", + "valid": true, + "checks": [], + "references": null + } + }, + "service": { + "discounts.travel-agency": { + "name": "discounts", + "objectType": "service", + "valid": true, + "checks": [], + "references": null + } + }, + "virtualservice": { + "bookinfo.bookinfo": { + "name": "bookinfo", + "objectType": "virtualservice", + "valid": true, + "checks": [], + "references": null + } + }, + "workload": { + "cars-v1.travel-agency": { + "name": "cars-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "control.travel-control": { + "name": "control", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "details-v1.bookinfo": { + "name": "details-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "discounts-v1.travel-agency": { + "name": "discounts-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "flights-v1.travel-agency": { + "name": "flights-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "grafana.istio-system": { + "name": "grafana", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "hotels-v1.travel-agency": { + "name": "hotels-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "insurances-v1.travel-agency": { + "name": "insurances-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "istio-egressgateway.istio-system": { + "name": "istio-egressgateway", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "istio-ingressgateway.istio-system": { + "name": "istio-ingressgateway", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "istiod.istio-system": { + "name": "istiod", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "jaeger.istio-system": { + "name": "jaeger", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "kiali-traffic-generator.bookinfo": { + "name": "kiali-traffic-generator", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "kiali.istio-system": { + "name": "kiali", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "mysqldb-v1.travel-agency": { + "name": "mysqldb-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "productpage-v1.bookinfo": { + "name": "productpage-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "prometheus.istio-system": { + "name": "prometheus", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "ratings-v1.bookinfo": { + "name": "ratings-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "reviews-v1.bookinfo": { + "name": "reviews-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "reviews-v2.bookinfo": { + "name": "reviews-v2", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "reviews-v3.bookinfo": { + "name": "reviews-v3", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "travels-v1.travel-agency": { + "name": "travels-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "travels.travel-portal": { + "name": "travels", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "viaggi.travel-portal": { + "name": "viaggi", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "voyages.travel-portal": { + "name": "voyages", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + } + } + } +} diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-agency/services/flights.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-agency/services/flights.json new file mode 100644 index 0000000000..5ed1d41356 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-agency/services/flights.json @@ -0,0 +1,351 @@ +{ + "cluster": "Kubernetes", + "destinationRules": [], + "endpoints": [ + { + "addresses": [ + { + "kind": "Pod", + "name": "flights-v1-5c654b5b7f-mfnk9", + "ip": "10.244.0.33", + "port": 0 + } + ], + "ports": [ + { + "name": "http", + "protocol": "TCP", + "port": 8000 + } + ] + } + ], + "istioPermissions": { + "create": true, + "update": true, + "delete": true + }, + "istioSidecar": true, + "k8sHTTPRoutes": [], + "k8sReferenceGrants": null, + "service": { + "name": "flights", + "createdAt": "2024-02-27T13:11:51Z", + "resourceVersion": "53591", + "namespace": { + "name": "travel-agency", + "cluster": "", + "isAmbient": false, + "labels": null, + "annotations": null + }, + "labels": { + "app": "flights" + }, + "selectors": { + "app": "flights" + }, + "type": "ClusterIP", + "ip": "10.108.231.237", + "ports": [ + { + "name": "http", + "protocol": "TCP", + "port": 8000 + } + ], + "externalName": "", + "annotations": { + "kubectl.kubernetes.io/last-applied-configuration": "{\"apiVersion\":\"v1\",\"kind\":\"Service\",\"metadata\":{\"annotations\":{},\"labels\":{\"app\":\"flights\"},\"name\":\"flights\",\"namespace\":\"travel-agency\"},\"spec\":{\"ports\":[{\"name\":\"http\",\"port\":8000}],\"selector\":{\"app\":\"flights\"}}}\n" + }, + "healthAnnotations": {}, + "additionalDetails": [] + }, + "serviceEntries": null, + "virtualServices": [], + "workloads": [ + { + "name": "flights-v1", + "cluster": "Kubernetes", + "type": "Deployment", + "createdAt": "2024-02-27T13:11:51Z", + "resourceVersion": "53878", + "istioSidecar": true, + "istioAmbient": false, + "additionalDetailSample": null, + "labels": { + "app": "flights", + "version": "v1" + }, + "appLabel": true, + "versionLabel": true, + "podCount": 1, + "annotations": { + "deployment.kubernetes.io/revision": "1", + "kubectl.kubernetes.io/last-applied-configuration": "{\"apiVersion\":\"apps/v1\",\"kind\":\"Deployment\",\"metadata\":{\"annotations\":{},\"name\":\"flights-v1\",\"namespace\":\"travel-agency\"},\"spec\":{\"replicas\":1,\"selector\":{\"matchLabels\":{\"app\":\"flights\",\"version\":\"v1\"}},\"template\":{\"metadata\":{\"annotations\":{\"proxy.istio.io/config\":\"tracing:\\n zipkin:\\n address: zipkin.istio-system:9411\\n sampling: 10\\n custom_tags:\\n http.header.portal:\\n header:\\n name: portal\\n http.header.device:\\n header:\\n name: device\\n http.header.user:\\n header:\\n name: user\\n http.header.travel:\\n header:\\n name: travel\\n\",\"readiness.status.sidecar.istio.io/applicationPorts\":\"\"},\"labels\":{\"app\":\"flights\",\"version\":\"v1\"}},\"spec\":{\"containers\":[{\"env\":[{\"name\":\"CURRENT_SERVICE\",\"value\":\"flights\"},{\"name\":\"CURRENT_VERSION\",\"value\":\"v1\"},{\"name\":\"LISTEN_ADDRESS\",\"value\":\":8000\"},{\"name\":\"DISCOUNTS_SERVICE\",\"value\":\"http://discounts.travel-agency:8000\"},{\"name\":\"MYSQL_SERVICE\",\"value\":\"mysqldb.travel-agency:3306\"},{\"name\":\"MYSQL_USER\",\"value\":\"root\"},{\"name\":\"MYSQL_PASSWORD\",\"valueFrom\":{\"secretKeyRef\":{\"key\":\"rootpasswd\",\"name\":\"mysql-credentials\"}}},{\"name\":\"MYSQL_DATABASE\",\"value\":\"test\"}],\"image\":\"quay.io/kiali/demo_travels_flights:v1\",\"imagePullPolicy\":\"IfNotPresent\",\"name\":\"flights\",\"ports\":[{\"containerPort\":8000}],\"securityContext\":{\"allowPrivilegeEscalation\":false,\"capabilities\":{\"drop\":[\"ALL\"]},\"privileged\":false,\"readOnlyRootFilesystem\":true}}]}}}}\n" + }, + "healthAnnotations": {}, + "istioReferences": [], + "dashboardAnnotations": null, + "serviceAccountNames": ["default"], + "health": { + "workloadStatus": null, + "requests": { + "inbound": null, + "outbound": null, + "healthAnnotations": null + } + } + } + ], + "health": { + "requests": { + "inbound": { + "http": { + "200": 0.2666666666666666 + } + }, + "outbound": {}, + "healthAnnotations": {} + } + }, + "namespaceMTLS": { + "status": "MTLS_NOT_ENABLED", + "autoMTLSEnabled": true, + "minTLS": "" + }, + "subServices": [ + { + "name": "flights", + "namespace": "", + "istioSidecar": false, + "cluster": "", + "istioAmbient": false, + "appLabel": false, + "additionalDetailSample": null, + "annotations": null, + "healthAnnotations": null, + "ports": { + "http": 8000 + }, + "labels": null, + "selector": null, + "istioReferences": null, + "kialiWizard": "", + "serviceRegistry": "", + "health": { + "requests": { + "inbound": null, + "outbound": null, + "healthAnnotations": null + } + } + } + ], + "validations": { + "gateway": { + "bookinfo-gateway.bookinfo": { + "name": "bookinfo-gateway", + "objectType": "gateway", + "valid": true, + "checks": [], + "references": null + } + }, + "service": { + "flights.travel-agency": { + "name": "flights", + "objectType": "service", + "valid": true, + "checks": [], + "references": null + } + }, + "virtualservice": { + "bookinfo.bookinfo": { + "name": "bookinfo", + "objectType": "virtualservice", + "valid": true, + "checks": [], + "references": null + } + }, + "workload": { + "cars-v1.travel-agency": { + "name": "cars-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "control.travel-control": { + "name": "control", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "details-v1.bookinfo": { + "name": "details-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "discounts-v1.travel-agency": { + "name": "discounts-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "flights-v1.travel-agency": { + "name": "flights-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "grafana.istio-system": { + "name": "grafana", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "hotels-v1.travel-agency": { + "name": "hotels-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "insurances-v1.travel-agency": { + "name": "insurances-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "istio-egressgateway.istio-system": { + "name": "istio-egressgateway", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "istio-ingressgateway.istio-system": { + "name": "istio-ingressgateway", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "istiod.istio-system": { + "name": "istiod", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "jaeger.istio-system": { + "name": "jaeger", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "kiali-traffic-generator.bookinfo": { + "name": "kiali-traffic-generator", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "kiali.istio-system": { + "name": "kiali", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "mysqldb-v1.travel-agency": { + "name": "mysqldb-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "productpage-v1.bookinfo": { + "name": "productpage-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "prometheus.istio-system": { + "name": "prometheus", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "ratings-v1.bookinfo": { + "name": "ratings-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "reviews-v1.bookinfo": { + "name": "reviews-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "reviews-v2.bookinfo": { + "name": "reviews-v2", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "reviews-v3.bookinfo": { + "name": "reviews-v3", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "travels-v1.travel-agency": { + "name": "travels-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "travels.travel-portal": { + "name": "travels", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "viaggi.travel-portal": { + "name": "viaggi", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "voyages.travel-portal": { + "name": "voyages", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + } + } + } +} diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-agency/services/hotels.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-agency/services/hotels.json new file mode 100644 index 0000000000..297cb0ec58 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-agency/services/hotels.json @@ -0,0 +1,351 @@ +{ + "cluster": "Kubernetes", + "destinationRules": [], + "endpoints": [ + { + "addresses": [ + { + "kind": "Pod", + "name": "hotels-v1-57d9574745-f56rn", + "ip": "10.244.0.34", + "port": 0 + } + ], + "ports": [ + { + "name": "http", + "protocol": "TCP", + "port": 8000 + } + ] + } + ], + "istioPermissions": { + "create": true, + "update": true, + "delete": true + }, + "istioSidecar": true, + "k8sHTTPRoutes": [], + "k8sReferenceGrants": null, + "service": { + "name": "hotels", + "createdAt": "2024-02-27T13:11:51Z", + "resourceVersion": "53609", + "namespace": { + "name": "travel-agency", + "cluster": "", + "isAmbient": false, + "labels": null, + "annotations": null + }, + "labels": { + "app": "hotels" + }, + "selectors": { + "app": "hotels" + }, + "type": "ClusterIP", + "ip": "10.101.55.152", + "ports": [ + { + "name": "http", + "protocol": "TCP", + "port": 8000 + } + ], + "externalName": "", + "annotations": { + "kubectl.kubernetes.io/last-applied-configuration": "{\"apiVersion\":\"v1\",\"kind\":\"Service\",\"metadata\":{\"annotations\":{},\"labels\":{\"app\":\"hotels\"},\"name\":\"hotels\",\"namespace\":\"travel-agency\"},\"spec\":{\"ports\":[{\"name\":\"http\",\"port\":8000}],\"selector\":{\"app\":\"hotels\"}}}\n" + }, + "healthAnnotations": {}, + "additionalDetails": [] + }, + "serviceEntries": null, + "virtualServices": [], + "workloads": [ + { + "name": "hotels-v1", + "cluster": "Kubernetes", + "type": "Deployment", + "createdAt": "2024-02-27T13:11:51Z", + "resourceVersion": "53857", + "istioSidecar": true, + "istioAmbient": false, + "additionalDetailSample": null, + "labels": { + "app": "hotels", + "version": "v1" + }, + "appLabel": true, + "versionLabel": true, + "podCount": 1, + "annotations": { + "deployment.kubernetes.io/revision": "1", + "kubectl.kubernetes.io/last-applied-configuration": "{\"apiVersion\":\"apps/v1\",\"kind\":\"Deployment\",\"metadata\":{\"annotations\":{},\"name\":\"hotels-v1\",\"namespace\":\"travel-agency\"},\"spec\":{\"replicas\":1,\"selector\":{\"matchLabels\":{\"app\":\"hotels\",\"version\":\"v1\"}},\"template\":{\"metadata\":{\"annotations\":{\"proxy.istio.io/config\":\"tracing:\\n zipkin:\\n address: zipkin.istio-system:9411\\n sampling: 10\\n custom_tags:\\n http.header.portal:\\n header:\\n name: portal\\n http.header.device:\\n header:\\n name: device\\n http.header.user:\\n header:\\n name: user\\n http.header.travel:\\n header:\\n name: travel\\n\",\"readiness.status.sidecar.istio.io/applicationPorts\":\"\"},\"labels\":{\"app\":\"hotels\",\"version\":\"v1\"}},\"spec\":{\"containers\":[{\"env\":[{\"name\":\"CURRENT_SERVICE\",\"value\":\"hotels\"},{\"name\":\"CURRENT_VERSION\",\"value\":\"v1\"},{\"name\":\"LISTEN_ADDRESS\",\"value\":\":8000\"},{\"name\":\"DISCOUNTS_SERVICE\",\"value\":\"http://discounts.travel-agency:8000\"},{\"name\":\"MYSQL_SERVICE\",\"value\":\"mysqldb.travel-agency:3306\"},{\"name\":\"MYSQL_USER\",\"value\":\"root\"},{\"name\":\"MYSQL_PASSWORD\",\"valueFrom\":{\"secretKeyRef\":{\"key\":\"rootpasswd\",\"name\":\"mysql-credentials\"}}},{\"name\":\"MYSQL_DATABASE\",\"value\":\"test\"}],\"image\":\"quay.io/kiali/demo_travels_hotels:v1\",\"imagePullPolicy\":\"IfNotPresent\",\"name\":\"hotels\",\"ports\":[{\"containerPort\":8000}],\"securityContext\":{\"allowPrivilegeEscalation\":false,\"capabilities\":{\"drop\":[\"ALL\"]},\"privileged\":false,\"readOnlyRootFilesystem\":true}}]}}}}\n" + }, + "healthAnnotations": {}, + "istioReferences": [], + "dashboardAnnotations": null, + "serviceAccountNames": ["default"], + "health": { + "workloadStatus": null, + "requests": { + "inbound": null, + "outbound": null, + "healthAnnotations": null + } + } + } + ], + "health": { + "requests": { + "inbound": { + "http": { + "200": 0.7999999999999999 + } + }, + "outbound": {}, + "healthAnnotations": {} + } + }, + "namespaceMTLS": { + "status": "MTLS_NOT_ENABLED", + "autoMTLSEnabled": true, + "minTLS": "" + }, + "subServices": [ + { + "name": "hotels", + "namespace": "", + "istioSidecar": false, + "cluster": "", + "istioAmbient": false, + "appLabel": false, + "additionalDetailSample": null, + "annotations": null, + "healthAnnotations": null, + "ports": { + "http": 8000 + }, + "labels": null, + "selector": null, + "istioReferences": null, + "kialiWizard": "", + "serviceRegistry": "", + "health": { + "requests": { + "inbound": null, + "outbound": null, + "healthAnnotations": null + } + } + } + ], + "validations": { + "gateway": { + "bookinfo-gateway.bookinfo": { + "name": "bookinfo-gateway", + "objectType": "gateway", + "valid": true, + "checks": [], + "references": null + } + }, + "service": { + "hotels.travel-agency": { + "name": "hotels", + "objectType": "service", + "valid": true, + "checks": [], + "references": null + } + }, + "virtualservice": { + "bookinfo.bookinfo": { + "name": "bookinfo", + "objectType": "virtualservice", + "valid": true, + "checks": [], + "references": null + } + }, + "workload": { + "cars-v1.travel-agency": { + "name": "cars-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "control.travel-control": { + "name": "control", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "details-v1.bookinfo": { + "name": "details-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "discounts-v1.travel-agency": { + "name": "discounts-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "flights-v1.travel-agency": { + "name": "flights-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "grafana.istio-system": { + "name": "grafana", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "hotels-v1.travel-agency": { + "name": "hotels-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "insurances-v1.travel-agency": { + "name": "insurances-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "istio-egressgateway.istio-system": { + "name": "istio-egressgateway", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "istio-ingressgateway.istio-system": { + "name": "istio-ingressgateway", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "istiod.istio-system": { + "name": "istiod", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "jaeger.istio-system": { + "name": "jaeger", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "kiali-traffic-generator.bookinfo": { + "name": "kiali-traffic-generator", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "kiali.istio-system": { + "name": "kiali", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "mysqldb-v1.travel-agency": { + "name": "mysqldb-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "productpage-v1.bookinfo": { + "name": "productpage-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "prometheus.istio-system": { + "name": "prometheus", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "ratings-v1.bookinfo": { + "name": "ratings-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "reviews-v1.bookinfo": { + "name": "reviews-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "reviews-v2.bookinfo": { + "name": "reviews-v2", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "reviews-v3.bookinfo": { + "name": "reviews-v3", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "travels-v1.travel-agency": { + "name": "travels-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "travels.travel-portal": { + "name": "travels", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "viaggi.travel-portal": { + "name": "viaggi", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "voyages.travel-portal": { + "name": "voyages", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + } + } + } +} diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-agency/services/insurances.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-agency/services/insurances.json new file mode 100644 index 0000000000..fc040892c2 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-agency/services/insurances.json @@ -0,0 +1,351 @@ +{ + "cluster": "Kubernetes", + "destinationRules": [], + "endpoints": [ + { + "addresses": [ + { + "kind": "Pod", + "name": "insurances-v1-b66754b7b-j6htz", + "ip": "10.244.0.35", + "port": 0 + } + ], + "ports": [ + { + "name": "http", + "protocol": "TCP", + "port": 8000 + } + ] + } + ], + "istioPermissions": { + "create": true, + "update": true, + "delete": true + }, + "istioSidecar": true, + "k8sHTTPRoutes": [], + "k8sReferenceGrants": null, + "service": { + "name": "insurances", + "createdAt": "2024-02-27T13:11:51Z", + "resourceVersion": "53625", + "namespace": { + "name": "travel-agency", + "cluster": "", + "isAmbient": false, + "labels": null, + "annotations": null + }, + "labels": { + "app": "insurances" + }, + "selectors": { + "app": "insurances" + }, + "type": "ClusterIP", + "ip": "10.104.235.240", + "ports": [ + { + "name": "http", + "protocol": "TCP", + "port": 8000 + } + ], + "externalName": "", + "annotations": { + "kubectl.kubernetes.io/last-applied-configuration": "{\"apiVersion\":\"v1\",\"kind\":\"Service\",\"metadata\":{\"annotations\":{},\"labels\":{\"app\":\"insurances\"},\"name\":\"insurances\",\"namespace\":\"travel-agency\"},\"spec\":{\"ports\":[{\"name\":\"http\",\"port\":8000}],\"selector\":{\"app\":\"insurances\"}}}\n" + }, + "healthAnnotations": {}, + "additionalDetails": [] + }, + "serviceEntries": null, + "virtualServices": [], + "workloads": [ + { + "name": "insurances-v1", + "cluster": "Kubernetes", + "type": "Deployment", + "createdAt": "2024-02-27T13:11:51Z", + "resourceVersion": "53899", + "istioSidecar": true, + "istioAmbient": false, + "additionalDetailSample": null, + "labels": { + "app": "insurances", + "version": "v1" + }, + "appLabel": true, + "versionLabel": true, + "podCount": 1, + "annotations": { + "deployment.kubernetes.io/revision": "1", + "kubectl.kubernetes.io/last-applied-configuration": "{\"apiVersion\":\"apps/v1\",\"kind\":\"Deployment\",\"metadata\":{\"annotations\":{},\"name\":\"insurances-v1\",\"namespace\":\"travel-agency\"},\"spec\":{\"replicas\":1,\"selector\":{\"matchLabels\":{\"app\":\"insurances\",\"version\":\"v1\"}},\"template\":{\"metadata\":{\"annotations\":{\"readiness.status.sidecar.istio.io/applicationPorts\":\"\"},\"labels\":{\"app\":\"insurances\",\"version\":\"v1\"}},\"spec\":{\"containers\":[{\"env\":[{\"name\":\"CURRENT_SERVICE\",\"value\":\"insurances\"},{\"name\":\"CURRENT_VERSION\",\"value\":\"v1\"},{\"name\":\"LISTEN_ADDRESS\",\"value\":\":8000\"},{\"name\":\"DISCOUNTS_SERVICE\",\"value\":\"http://discounts.travel-agency:8000\"},{\"name\":\"MYSQL_SERVICE\",\"value\":\"mysqldb.travel-agency:3306\"},{\"name\":\"MYSQL_USER\",\"value\":\"root\"},{\"name\":\"MYSQL_PASSWORD\",\"valueFrom\":{\"secretKeyRef\":{\"key\":\"rootpasswd\",\"name\":\"mysql-credentials\"}}},{\"name\":\"MYSQL_DATABASE\",\"value\":\"test\"}],\"image\":\"quay.io/kiali/demo_travels_insurances:v1\",\"imagePullPolicy\":\"IfNotPresent\",\"name\":\"insurances\",\"ports\":[{\"containerPort\":8000}],\"securityContext\":{\"allowPrivilegeEscalation\":false,\"capabilities\":{\"drop\":[\"ALL\"]},\"privileged\":false,\"readOnlyRootFilesystem\":true}}]}}}}\n" + }, + "healthAnnotations": {}, + "istioReferences": [], + "dashboardAnnotations": null, + "serviceAccountNames": ["default"], + "health": { + "workloadStatus": null, + "requests": { + "inbound": null, + "outbound": null, + "healthAnnotations": null + } + } + } + ], + "health": { + "requests": { + "inbound": { + "http": { + "200": 0.39999999999999997 + } + }, + "outbound": {}, + "healthAnnotations": {} + } + }, + "namespaceMTLS": { + "status": "MTLS_NOT_ENABLED", + "autoMTLSEnabled": true, + "minTLS": "" + }, + "subServices": [ + { + "name": "insurances", + "namespace": "", + "istioSidecar": false, + "cluster": "", + "istioAmbient": false, + "appLabel": false, + "additionalDetailSample": null, + "annotations": null, + "healthAnnotations": null, + "ports": { + "http": 8000 + }, + "labels": null, + "selector": null, + "istioReferences": null, + "kialiWizard": "", + "serviceRegistry": "", + "health": { + "requests": { + "inbound": null, + "outbound": null, + "healthAnnotations": null + } + } + } + ], + "validations": { + "gateway": { + "bookinfo-gateway.bookinfo": { + "name": "bookinfo-gateway", + "objectType": "gateway", + "valid": true, + "checks": [], + "references": null + } + }, + "service": { + "insurances.travel-agency": { + "name": "insurances", + "objectType": "service", + "valid": true, + "checks": [], + "references": null + } + }, + "virtualservice": { + "bookinfo.bookinfo": { + "name": "bookinfo", + "objectType": "virtualservice", + "valid": true, + "checks": [], + "references": null + } + }, + "workload": { + "cars-v1.travel-agency": { + "name": "cars-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "control.travel-control": { + "name": "control", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "details-v1.bookinfo": { + "name": "details-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "discounts-v1.travel-agency": { + "name": "discounts-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "flights-v1.travel-agency": { + "name": "flights-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "grafana.istio-system": { + "name": "grafana", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "hotels-v1.travel-agency": { + "name": "hotels-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "insurances-v1.travel-agency": { + "name": "insurances-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "istio-egressgateway.istio-system": { + "name": "istio-egressgateway", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "istio-ingressgateway.istio-system": { + "name": "istio-ingressgateway", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "istiod.istio-system": { + "name": "istiod", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "jaeger.istio-system": { + "name": "jaeger", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "kiali-traffic-generator.bookinfo": { + "name": "kiali-traffic-generator", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "kiali.istio-system": { + "name": "kiali", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "mysqldb-v1.travel-agency": { + "name": "mysqldb-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "productpage-v1.bookinfo": { + "name": "productpage-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "prometheus.istio-system": { + "name": "prometheus", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "ratings-v1.bookinfo": { + "name": "ratings-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "reviews-v1.bookinfo": { + "name": "reviews-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "reviews-v2.bookinfo": { + "name": "reviews-v2", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "reviews-v3.bookinfo": { + "name": "reviews-v3", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "travels-v1.travel-agency": { + "name": "travels-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "travels.travel-portal": { + "name": "travels", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "viaggi.travel-portal": { + "name": "viaggi", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "voyages.travel-portal": { + "name": "voyages", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + } + } + } +} diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-agency/services/mysqldb.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-agency/services/mysqldb.json new file mode 100644 index 0000000000..f59a9bd702 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-agency/services/mysqldb.json @@ -0,0 +1,347 @@ +{ + "cluster": "Kubernetes", + "destinationRules": [], + "endpoints": [ + { + "addresses": [ + { + "kind": "Pod", + "name": "mysqldb-v1-64bc584fdc-vpmxc", + "ip": "10.244.0.37", + "port": 0 + } + ], + "ports": [ + { + "name": "tcp", + "protocol": "TCP", + "port": 3306 + } + ] + } + ], + "istioPermissions": { + "create": true, + "update": true, + "delete": true + }, + "istioSidecar": true, + "k8sHTTPRoutes": [], + "k8sReferenceGrants": null, + "service": { + "name": "mysqldb", + "createdAt": "2024-02-27T13:11:51Z", + "resourceVersion": "53537", + "namespace": { + "name": "travel-agency", + "cluster": "", + "isAmbient": false, + "labels": null, + "annotations": null + }, + "labels": { + "app": "mysqldb" + }, + "selectors": { + "app": "mysqldb" + }, + "type": "ClusterIP", + "ip": "10.99.72.216", + "ports": [ + { + "name": "tcp", + "protocol": "TCP", + "port": 3306 + } + ], + "externalName": "", + "annotations": { + "kubectl.kubernetes.io/last-applied-configuration": "{\"apiVersion\":\"v1\",\"kind\":\"Service\",\"metadata\":{\"annotations\":{},\"labels\":{\"app\":\"mysqldb\"},\"name\":\"mysqldb\",\"namespace\":\"travel-agency\"},\"spec\":{\"ports\":[{\"name\":\"tcp\",\"port\":3306}],\"selector\":{\"app\":\"mysqldb\"}}}\n" + }, + "healthAnnotations": {}, + "additionalDetails": [] + }, + "serviceEntries": null, + "virtualServices": [], + "workloads": [ + { + "name": "mysqldb-v1", + "cluster": "Kubernetes", + "type": "Deployment", + "createdAt": "2024-02-27T13:11:51Z", + "resourceVersion": "53960", + "istioSidecar": true, + "istioAmbient": false, + "additionalDetailSample": null, + "labels": { + "app": "mysqldb", + "version": "v1" + }, + "appLabel": true, + "versionLabel": true, + "podCount": 1, + "annotations": { + "deployment.kubernetes.io/revision": "1", + "kubectl.kubernetes.io/last-applied-configuration": "{\"apiVersion\":\"apps/v1\",\"kind\":\"Deployment\",\"metadata\":{\"annotations\":{},\"labels\":{\"app\":\"mysqldb\",\"version\":\"v1\"},\"name\":\"mysqldb-v1\",\"namespace\":\"travel-agency\"},\"spec\":{\"replicas\":1,\"selector\":{\"matchLabels\":{\"app\":\"mysqldb\",\"version\":\"v1\"}},\"template\":{\"metadata\":{\"labels\":{\"app\":\"mysqldb\",\"version\":\"v1\"}},\"spec\":{\"containers\":[{\"args\":[\"--default-authentication-plugin\",\"mysql_native_password\"],\"env\":[{\"name\":\"MYSQL_ROOT_PASSWORD\",\"valueFrom\":{\"secretKeyRef\":{\"key\":\"rootpasswd\",\"name\":\"mysql-credentials\"}}}],\"image\":\"quay.io/kiali/demo_travels_mysqldb:v1\",\"imagePullPolicy\":\"IfNotPresent\",\"name\":\"mysqldb\",\"ports\":[{\"containerPort\":3306}],\"volumeMounts\":[{\"mountPath\":\"/var/lib/mysql\",\"name\":\"var-lib-mysql\"}]}],\"volumes\":[{\"emptyDir\":null,\"name\":\"var-lib-mysql\"}]}}}}\n" + }, + "healthAnnotations": {}, + "istioReferences": [], + "dashboardAnnotations": null, + "serviceAccountNames": ["default"], + "health": { + "workloadStatus": null, + "requests": { + "inbound": null, + "outbound": null, + "healthAnnotations": null + } + } + } + ], + "health": { + "requests": { + "inbound": {}, + "outbound": {}, + "healthAnnotations": {} + } + }, + "namespaceMTLS": { + "status": "MTLS_NOT_ENABLED", + "autoMTLSEnabled": true, + "minTLS": "" + }, + "subServices": [ + { + "name": "mysqldb", + "namespace": "", + "istioSidecar": false, + "cluster": "", + "istioAmbient": false, + "appLabel": false, + "additionalDetailSample": null, + "annotations": null, + "healthAnnotations": null, + "ports": { + "tcp": 3306 + }, + "labels": null, + "selector": null, + "istioReferences": null, + "kialiWizard": "", + "serviceRegistry": "", + "health": { + "requests": { + "inbound": null, + "outbound": null, + "healthAnnotations": null + } + } + } + ], + "validations": { + "gateway": { + "bookinfo-gateway.bookinfo": { + "name": "bookinfo-gateway", + "objectType": "gateway", + "valid": true, + "checks": [], + "references": null + } + }, + "service": { + "mysqldb.travel-agency": { + "name": "mysqldb", + "objectType": "service", + "valid": true, + "checks": [], + "references": null + } + }, + "virtualservice": { + "bookinfo.bookinfo": { + "name": "bookinfo", + "objectType": "virtualservice", + "valid": true, + "checks": [], + "references": null + } + }, + "workload": { + "cars-v1.travel-agency": { + "name": "cars-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "control.travel-control": { + "name": "control", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "details-v1.bookinfo": { + "name": "details-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "discounts-v1.travel-agency": { + "name": "discounts-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "flights-v1.travel-agency": { + "name": "flights-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "grafana.istio-system": { + "name": "grafana", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "hotels-v1.travel-agency": { + "name": "hotels-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "insurances-v1.travel-agency": { + "name": "insurances-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "istio-egressgateway.istio-system": { + "name": "istio-egressgateway", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "istio-ingressgateway.istio-system": { + "name": "istio-ingressgateway", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "istiod.istio-system": { + "name": "istiod", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "jaeger.istio-system": { + "name": "jaeger", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "kiali-traffic-generator.bookinfo": { + "name": "kiali-traffic-generator", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "kiali.istio-system": { + "name": "kiali", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "mysqldb-v1.travel-agency": { + "name": "mysqldb-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "productpage-v1.bookinfo": { + "name": "productpage-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "prometheus.istio-system": { + "name": "prometheus", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "ratings-v1.bookinfo": { + "name": "ratings-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "reviews-v1.bookinfo": { + "name": "reviews-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "reviews-v2.bookinfo": { + "name": "reviews-v2", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "reviews-v3.bookinfo": { + "name": "reviews-v3", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "travels-v1.travel-agency": { + "name": "travels-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "travels.travel-portal": { + "name": "travels", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "viaggi.travel-portal": { + "name": "viaggi", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "voyages.travel-portal": { + "name": "voyages", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + } + } + } +} diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-agency/services/travels.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-agency/services/travels.json new file mode 100644 index 0000000000..c4353615a5 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-agency/services/travels.json @@ -0,0 +1,351 @@ +{ + "cluster": "Kubernetes", + "destinationRules": [], + "endpoints": [ + { + "addresses": [ + { + "kind": "Pod", + "name": "travels-v1-78fc68bb6b-9k2ss", + "ip": "10.244.0.36", + "port": 0 + } + ], + "ports": [ + { + "name": "http", + "protocol": "TCP", + "port": 8000 + } + ] + } + ], + "istioPermissions": { + "create": true, + "update": true, + "delete": true + }, + "istioSidecar": true, + "k8sHTTPRoutes": [], + "k8sReferenceGrants": null, + "service": { + "name": "travels", + "createdAt": "2024-02-27T13:11:51Z", + "resourceVersion": "53637", + "namespace": { + "name": "travel-agency", + "cluster": "", + "isAmbient": false, + "labels": null, + "annotations": null + }, + "labels": { + "app": "travels" + }, + "selectors": { + "app": "travels" + }, + "type": "ClusterIP", + "ip": "10.102.116.118", + "ports": [ + { + "name": "http", + "protocol": "TCP", + "port": 8000 + } + ], + "externalName": "", + "annotations": { + "kubectl.kubernetes.io/last-applied-configuration": "{\"apiVersion\":\"v1\",\"kind\":\"Service\",\"metadata\":{\"annotations\":{},\"labels\":{\"app\":\"travels\"},\"name\":\"travels\",\"namespace\":\"travel-agency\"},\"spec\":{\"ports\":[{\"name\":\"http\",\"port\":8000}],\"selector\":{\"app\":\"travels\"}}}\n" + }, + "healthAnnotations": {}, + "additionalDetails": [] + }, + "serviceEntries": null, + "virtualServices": [], + "workloads": [ + { + "name": "travels-v1", + "cluster": "Kubernetes", + "type": "Deployment", + "createdAt": "2024-02-27T13:11:51Z", + "resourceVersion": "53989", + "istioSidecar": true, + "istioAmbient": false, + "additionalDetailSample": null, + "labels": { + "app": "travels", + "version": "v1" + }, + "appLabel": true, + "versionLabel": true, + "podCount": 1, + "annotations": { + "deployment.kubernetes.io/revision": "1", + "kubectl.kubernetes.io/last-applied-configuration": "{\"apiVersion\":\"apps/v1\",\"kind\":\"Deployment\",\"metadata\":{\"annotations\":{},\"name\":\"travels-v1\",\"namespace\":\"travel-agency\"},\"spec\":{\"replicas\":1,\"selector\":{\"matchLabels\":{\"app\":\"travels\",\"version\":\"v1\"}},\"template\":{\"metadata\":{\"annotations\":{\"proxy.istio.io/config\":\"tracing:\\n zipkin:\\n address: zipkin.istio-system:9411\\n sampling: 10\\n custom_tags:\\n http.header.portal:\\n header:\\n name: portal\\n http.header.device:\\n header:\\n name: device\\n http.header.user:\\n header:\\n name: user\\n http.header.travel:\\n header:\\n name: travel\\n\",\"readiness.status.sidecar.istio.io/applicationPorts\":\"\"},\"labels\":{\"app\":\"travels\",\"version\":\"v1\"}},\"spec\":{\"containers\":[{\"env\":[{\"name\":\"CURRENT_SERVICE\",\"value\":\"travels\"},{\"name\":\"CURRENT_VERSION\",\"value\":\"v1\"},{\"name\":\"LISTEN_ADDRESS\",\"value\":\":8000\"},{\"name\":\"FLIGHTS_SERVICE\",\"value\":\"http://flights.travel-agency:8000\"},{\"name\":\"HOTELS_SERVICE\",\"value\":\"http://hotels.travel-agency:8000\"},{\"name\":\"CARS_SERVICE\",\"value\":\"http://cars.travel-agency:8000\"},{\"name\":\"INSURANCES_SERVICE\",\"value\":\"http://insurances.travel-agency:8000\"}],\"image\":\"quay.io/kiali/demo_travels_travels:v1\",\"imagePullPolicy\":\"IfNotPresent\",\"name\":\"travels\",\"ports\":[{\"containerPort\":8000}],\"securityContext\":{\"allowPrivilegeEscalation\":false,\"capabilities\":{\"drop\":[\"ALL\"]},\"privileged\":false,\"readOnlyRootFilesystem\":true}}]}}}}\n" + }, + "healthAnnotations": {}, + "istioReferences": [], + "dashboardAnnotations": null, + "serviceAccountNames": ["default"], + "health": { + "workloadStatus": null, + "requests": { + "inbound": null, + "outbound": null, + "healthAnnotations": null + } + } + } + ], + "health": { + "requests": { + "inbound": { + "http": { + "200": 0.7999999999999998 + } + }, + "outbound": {}, + "healthAnnotations": {} + } + }, + "namespaceMTLS": { + "status": "MTLS_NOT_ENABLED", + "autoMTLSEnabled": true, + "minTLS": "" + }, + "subServices": [ + { + "name": "travels", + "namespace": "", + "istioSidecar": false, + "cluster": "", + "istioAmbient": false, + "appLabel": false, + "additionalDetailSample": null, + "annotations": null, + "healthAnnotations": null, + "ports": { + "http": 8000 + }, + "labels": null, + "selector": null, + "istioReferences": null, + "kialiWizard": "", + "serviceRegistry": "", + "health": { + "requests": { + "inbound": null, + "outbound": null, + "healthAnnotations": null + } + } + } + ], + "validations": { + "gateway": { + "bookinfo-gateway.bookinfo": { + "name": "bookinfo-gateway", + "objectType": "gateway", + "valid": true, + "checks": [], + "references": null + } + }, + "service": { + "travels.travel-agency": { + "name": "travels", + "objectType": "service", + "valid": true, + "checks": [], + "references": null + } + }, + "virtualservice": { + "bookinfo.bookinfo": { + "name": "bookinfo", + "objectType": "virtualservice", + "valid": true, + "checks": [], + "references": null + } + }, + "workload": { + "cars-v1.travel-agency": { + "name": "cars-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "control.travel-control": { + "name": "control", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "details-v1.bookinfo": { + "name": "details-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "discounts-v1.travel-agency": { + "name": "discounts-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "flights-v1.travel-agency": { + "name": "flights-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "grafana.istio-system": { + "name": "grafana", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "hotels-v1.travel-agency": { + "name": "hotels-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "insurances-v1.travel-agency": { + "name": "insurances-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "istio-egressgateway.istio-system": { + "name": "istio-egressgateway", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "istio-ingressgateway.istio-system": { + "name": "istio-ingressgateway", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "istiod.istio-system": { + "name": "istiod", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "jaeger.istio-system": { + "name": "jaeger", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "kiali-traffic-generator.bookinfo": { + "name": "kiali-traffic-generator", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "kiali.istio-system": { + "name": "kiali", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "mysqldb-v1.travel-agency": { + "name": "mysqldb-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "productpage-v1.bookinfo": { + "name": "productpage-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "prometheus.istio-system": { + "name": "prometheus", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "ratings-v1.bookinfo": { + "name": "ratings-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "reviews-v1.bookinfo": { + "name": "reviews-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "reviews-v2.bookinfo": { + "name": "reviews-v2", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "reviews-v3.bookinfo": { + "name": "reviews-v3", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "travels-v1.travel-agency": { + "name": "travels-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "travels.travel-portal": { + "name": "travels", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "viaggi.travel-portal": { + "name": "viaggi", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "voyages.travel-portal": { + "name": "voyages", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + } + } + } +} diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-agency/spans.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-agency/spans.json new file mode 100644 index 0000000000..e1fadefd70 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-agency/spans.json @@ -0,0 +1,642 @@ +[ + { + "traceID": "21b3fb5a1b7f4aa6a2dce7ee01df8256", + "spanID": "b8a809b3bd8e7a1e", + "operationName": "cars.travel-agency.svc.cluster.local:8000/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "21b3fb5a1b7f4aa6a2dce7ee01df8256", + "spanID": "bf79904224b6f337" + } + ], + "startTime": 1710323468940697, + "duration": 4299, + "tags": [ + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.23" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.19~cars-v1-6c869ff769-t4rrl.travel-agency~travel-agency.svc.cluster.local" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|8000||" + }, + { + "key": "http.url", + "type": "string", + "value": "http://cars.travel-agency:8000/cars/Moscow" + }, + { + "key": "http.header.travel", + "type": "string", + "value": "t3" + }, + { + "key": "response_size", + "type": "string", + "value": "84" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "45fb5a24-adff-95cf-a8a8-66dd859c4934" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "cars" + }, + { + "key": "http.header.device", + "type": "string", + "value": "web" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "http.header.portal", + "type": "string", + "value": "viaggi.it" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "travel-agency" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|8000||" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "http.header.user", + "type": "string", + "value": "new" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p6", + "process": { + "serviceName": "cars.travel-agency", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762963 + } + ] + }, + "warnings": null, + "traceSize": 14 + }, + { + "traceID": "21b3fb5a1b7f4aa6a2dce7ee01df8256", + "spanID": "8f8b16cc46a9ded4", + "operationName": "discounts.travel-agency.svc.cluster.local:8000/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "21b3fb5a1b7f4aa6a2dce7ee01df8256", + "spanID": "b8a809b3bd8e7a1e" + } + ], + "startTime": 1710323468943803, + "duration": 828, + "tags": [ + { + "key": "http.url", + "type": "string", + "value": "http://discounts.travel-agency:8000/discounts/new" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "http.header.portal", + "type": "string", + "value": "viaggi.it" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.19" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "http.header.device", + "type": "string", + "value": "web" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "travel-agency" + }, + { + "key": "http.header.travel", + "type": "string", + "value": "t3" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.19~cars-v1-6c869ff769-t4rrl.travel-agency~travel-agency.svc.cluster.local" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "cars" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|8000||discounts.travel-agency.svc.cluster.local" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|8000||discounts.travel-agency.svc.cluster.local" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "45fb5a24-adff-95cf-a8a8-66dd859c4934" + }, + { + "key": "http.header.user", + "type": "string", + "value": "new" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "response_size", + "type": "string", + "value": "31" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p10", + "process": { + "serviceName": "cars.travel-agency", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762963 + } + ] + }, + "warnings": null, + "traceSize": 14 + }, + { + "traceID": "9131662e07e0b26b8fbcbffa54ec6c56", + "spanID": "2599b1f332ac58d9", + "operationName": "cars.travel-agency.svc.cluster.local:8000/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "9131662e07e0b26b8fbcbffa54ec6c56", + "spanID": "c98e45cbafa7b024" + } + ], + "startTime": 1710323453912140, + "duration": 5732, + "tags": [ + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.23" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "inbound|8000||" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "response_size", + "type": "string", + "value": "84" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "8b3cb135-1481-91a0-9e1a-9c5d20fb2716" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "http.header.portal", + "type": "string", + "value": "viaggi.it" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "inbound|8000||" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.19~cars-v1-6c869ff769-t4rrl.travel-agency~travel-agency.svc.cluster.local" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "cars" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "http.header.device", + "type": "string", + "value": "web" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "http.url", + "type": "string", + "value": "http://cars.travel-agency:8000/cars/Skopje" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "travel-agency" + }, + { + "key": "http.header.travel", + "type": "string", + "value": "t1" + }, + { + "key": "http.header.user", + "type": "string", + "value": "new" + }, + { + "key": "span.kind", + "type": "string", + "value": "server" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p7", + "process": { + "serviceName": "cars.travel-agency", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762963 + } + ] + }, + "warnings": null, + "traceSize": 18 + }, + { + "traceID": "9131662e07e0b26b8fbcbffa54ec6c56", + "spanID": "c000cb0edeaf1bbb", + "operationName": "discounts.travel-agency.svc.cluster.local:8000/*", + "references": [ + { + "refType": "CHILD_OF", + "traceID": "9131662e07e0b26b8fbcbffa54ec6c56", + "spanID": "2599b1f332ac58d9" + } + ], + "startTime": 1710323453916126, + "duration": 1307, + "tags": [ + { + "key": "istio.canonical_service", + "type": "string", + "value": "cars" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|8000||discounts.travel-agency.svc.cluster.local" + }, + { + "key": "response_size", + "type": "string", + "value": "31" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "8b3cb135-1481-91a0-9e1a-9c5d20fb2716" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "http.header.device", + "type": "string", + "value": "web" + }, + { + "key": "http.url", + "type": "string", + "value": "http://discounts.travel-agency:8000/discounts/new" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "http.header.travel", + "type": "string", + "value": "t1" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.19~cars-v1-6c869ff769-t4rrl.travel-agency~travel-agency.svc.cluster.local" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.19" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "http.header.user", + "type": "string", + "value": "new" + }, + { + "key": "http.header.portal", + "type": "string", + "value": "viaggi.it" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "travel-agency" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|8000||discounts.travel-agency.svc.cluster.local" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p11", + "process": { + "serviceName": "cars.travel-agency", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762963 + } + ] + }, + "warnings": null, + "traceSize": 18 + } +] diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-agency/tls.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-agency/tls.json new file mode 100644 index 0000000000..ea7db32cbb --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-agency/tls.json @@ -0,0 +1 @@ +{ "status": "MTLS_NOT_ENABLED", "autoMTLSEnabled": true, "minTLS": "" } diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-agency/workloads.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-agency/workloads.json new file mode 100644 index 0000000000..63d7aade5d --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-agency/workloads.json @@ -0,0 +1,337 @@ +{ + "namespace": { + "name": "travel-agency", + "cluster": "", + "isAmbient": false, + "labels": null, + "annotations": null + }, + "workloads": [ + { + "name": "cars-v1", + "cluster": "Kubernetes", + "type": "Deployment", + "createdAt": "2024-01-31T14:07:05Z", + "resourceVersion": "81047", + "istioSidecar": true, + "istioAmbient": false, + "additionalDetailSample": null, + "labels": { + "app": "cars", + "version": "v1" + }, + "appLabel": true, + "versionLabel": true, + "podCount": 1, + "annotations": { + "deployment.kubernetes.io/revision": "1", + "kubectl.kubernetes.io/last-applied-configuration": "{\"apiVersion\":\"apps/v1\",\"kind\":\"Deployment\",\"metadata\":{\"annotations\":{},\"name\":\"cars-v1\",\"namespace\":\"travel-agency\"},\"spec\":{\"replicas\":1,\"selector\":{\"matchLabels\":{\"app\":\"cars\",\"version\":\"v1\"}},\"template\":{\"metadata\":{\"annotations\":{\"proxy.istio.io/config\":\"tracing:\\n zipkin:\\n address: zipkin.istio-system:9411\\n sampling: 10\\n custom_tags:\\n http.header.portal:\\n header:\\n name: portal\\n http.header.device:\\n header:\\n name: device\\n http.header.user:\\n header:\\n name: user\\n http.header.travel:\\n header:\\n name: travel\\n\",\"readiness.status.sidecar.istio.io/applicationPorts\":\"\"},\"labels\":{\"app\":\"cars\",\"version\":\"v1\"}},\"spec\":{\"containers\":[{\"env\":[{\"name\":\"CURRENT_SERVICE\",\"value\":\"cars\"},{\"name\":\"CURRENT_VERSION\",\"value\":\"v1\"},{\"name\":\"LISTEN_ADDRESS\",\"value\":\":8000\"},{\"name\":\"DISCOUNTS_SERVICE\",\"value\":\"http://discounts.travel-agency:8000\"},{\"name\":\"MYSQL_SERVICE\",\"value\":\"mysqldb.travel-agency:3306\"},{\"name\":\"MYSQL_USER\",\"value\":\"root\"},{\"name\":\"MYSQL_PASSWORD\",\"valueFrom\":{\"secretKeyRef\":{\"key\":\"rootpasswd\",\"name\":\"mysql-credentials\"}}},{\"name\":\"MYSQL_DATABASE\",\"value\":\"test\"}],\"image\":\"quay.io/kiali/demo_travels_cars:v1\",\"imagePullPolicy\":\"IfNotPresent\",\"name\":\"cars\",\"ports\":[{\"containerPort\":8000}],\"securityContext\":{\"allowPrivilegeEscalation\":false,\"capabilities\":{\"drop\":[\"ALL\"]},\"privileged\":false,\"readOnlyRootFilesystem\":true}}]}}}}\n" + }, + "healthAnnotations": {}, + "istioReferences": [], + "dashboardAnnotations": null, + "serviceAccountNames": ["default"], + "health": { + "workloadStatus": { + "name": "cars-v1", + "desiredReplicas": 1, + "currentReplicas": 1, + "availableReplicas": 0, + "syncedProxies": -1 + }, + "requests": { + "inbound": {}, + "outbound": {}, + "healthAnnotations": {} + } + } + }, + { + "name": "discounts-v1", + "cluster": "Kubernetes", + "type": "Deployment", + "createdAt": "2024-01-31T14:07:05Z", + "resourceVersion": "81336", + "istioSidecar": true, + "istioAmbient": false, + "additionalDetailSample": null, + "labels": { + "app": "discounts", + "version": "v1" + }, + "appLabel": true, + "versionLabel": true, + "podCount": 1, + "annotations": { + "deployment.kubernetes.io/revision": "1", + "kubectl.kubernetes.io/last-applied-configuration": "{\"apiVersion\":\"apps/v1\",\"kind\":\"Deployment\",\"metadata\":{\"annotations\":{},\"name\":\"discounts-v1\",\"namespace\":\"travel-agency\"},\"spec\":{\"replicas\":1,\"selector\":{\"matchLabels\":{\"app\":\"discounts\",\"version\":\"v1\"}},\"template\":{\"metadata\":{\"annotations\":{\"proxy.istio.io/config\":\"tracing:\\n zipkin:\\n address: zipkin.istio-system:9411\\n sampling: 10\\n custom_tags:\\n http.header.portal:\\n header:\\n name: portal\\n http.header.device:\\n header:\\n name: device\\n http.header.user:\\n header:\\n name: user\\n http.header.travel:\\n header:\\n name: travel\\n\",\"readiness.status.sidecar.istio.io/applicationPorts\":\"\"},\"labels\":{\"app\":\"discounts\",\"version\":\"v1\"}},\"spec\":{\"containers\":[{\"env\":[{\"name\":\"CURRENT_SERVICE\",\"value\":\"discounts\"},{\"name\":\"CURRENT_VERSION\",\"value\":\"v1\"},{\"name\":\"LISTEN_ADDRESS\",\"value\":\":8000\"}],\"image\":\"quay.io/kiali/demo_travels_discounts:v1\",\"imagePullPolicy\":\"IfNotPresent\",\"name\":\"discounts\",\"ports\":[{\"containerPort\":8000}],\"securityContext\":{\"allowPrivilegeEscalation\":false,\"capabilities\":{\"drop\":[\"ALL\"]},\"privileged\":false,\"readOnlyRootFilesystem\":true}}]}}}}\n" + }, + "healthAnnotations": {}, + "istioReferences": [], + "dashboardAnnotations": null, + "serviceAccountNames": ["default"], + "health": { + "workloadStatus": { + "name": "discounts-v1", + "desiredReplicas": 1, + "currentReplicas": 1, + "availableReplicas": 1, + "syncedProxies": -1 + }, + "requests": { + "inbound": {}, + "outbound": {}, + "healthAnnotations": {} + } + } + }, + { + "name": "flights-v1", + "cluster": "Kubernetes", + "type": "Deployment", + "createdAt": "2024-01-31T14:07:05Z", + "resourceVersion": "81285", + "istioSidecar": true, + "istioAmbient": false, + "additionalDetailSample": null, + "labels": { + "app": "flights", + "version": "v1" + }, + "appLabel": true, + "versionLabel": true, + "podCount": 1, + "annotations": { + "deployment.kubernetes.io/revision": "1", + "kubectl.kubernetes.io/last-applied-configuration": "{\"apiVersion\":\"apps/v1\",\"kind\":\"Deployment\",\"metadata\":{\"annotations\":{},\"name\":\"flights-v1\",\"namespace\":\"travel-agency\"},\"spec\":{\"replicas\":1,\"selector\":{\"matchLabels\":{\"app\":\"flights\",\"version\":\"v1\"}},\"template\":{\"metadata\":{\"annotations\":{\"proxy.istio.io/config\":\"tracing:\\n zipkin:\\n address: zipkin.istio-system:9411\\n sampling: 10\\n custom_tags:\\n http.header.portal:\\n header:\\n name: portal\\n http.header.device:\\n header:\\n name: device\\n http.header.user:\\n header:\\n name: user\\n http.header.travel:\\n header:\\n name: travel\\n\",\"readiness.status.sidecar.istio.io/applicationPorts\":\"\"},\"labels\":{\"app\":\"flights\",\"version\":\"v1\"}},\"spec\":{\"containers\":[{\"env\":[{\"name\":\"CURRENT_SERVICE\",\"value\":\"flights\"},{\"name\":\"CURRENT_VERSION\",\"value\":\"v1\"},{\"name\":\"LISTEN_ADDRESS\",\"value\":\":8000\"},{\"name\":\"DISCOUNTS_SERVICE\",\"value\":\"http://discounts.travel-agency:8000\"},{\"name\":\"MYSQL_SERVICE\",\"value\":\"mysqldb.travel-agency:3306\"},{\"name\":\"MYSQL_USER\",\"value\":\"root\"},{\"name\":\"MYSQL_PASSWORD\",\"valueFrom\":{\"secretKeyRef\":{\"key\":\"rootpasswd\",\"name\":\"mysql-credentials\"}}},{\"name\":\"MYSQL_DATABASE\",\"value\":\"test\"}],\"image\":\"quay.io/kiali/demo_travels_flights:v1\",\"imagePullPolicy\":\"IfNotPresent\",\"name\":\"flights\",\"ports\":[{\"containerPort\":8000}],\"securityContext\":{\"allowPrivilegeEscalation\":false,\"capabilities\":{\"drop\":[\"ALL\"]},\"privileged\":false,\"readOnlyRootFilesystem\":true}}]}}}}\n" + }, + "healthAnnotations": {}, + "istioReferences": [], + "dashboardAnnotations": null, + "serviceAccountNames": ["default"], + "health": { + "workloadStatus": { + "name": "flights-v1", + "desiredReplicas": 1, + "currentReplicas": 1, + "availableReplicas": 1, + "syncedProxies": 1 + }, + "requests": { + "inbound": {}, + "outbound": {}, + "healthAnnotations": {} + } + } + }, + { + "name": "hotels-v1", + "cluster": "Kubernetes", + "type": "Deployment", + "createdAt": "2024-01-31T14:07:05Z", + "resourceVersion": "81106", + "istioSidecar": true, + "istioAmbient": false, + "additionalDetailSample": null, + "labels": { + "app": "hotels", + "version": "v1" + }, + "appLabel": true, + "versionLabel": true, + "podCount": 1, + "annotations": { + "deployment.kubernetes.io/revision": "1", + "kubectl.kubernetes.io/last-applied-configuration": "{\"apiVersion\":\"apps/v1\",\"kind\":\"Deployment\",\"metadata\":{\"annotations\":{},\"name\":\"hotels-v1\",\"namespace\":\"travel-agency\"},\"spec\":{\"replicas\":1,\"selector\":{\"matchLabels\":{\"app\":\"hotels\",\"version\":\"v1\"}},\"template\":{\"metadata\":{\"annotations\":{\"proxy.istio.io/config\":\"tracing:\\n zipkin:\\n address: zipkin.istio-system:9411\\n sampling: 10\\n custom_tags:\\n http.header.portal:\\n header:\\n name: portal\\n http.header.device:\\n header:\\n name: device\\n http.header.user:\\n header:\\n name: user\\n http.header.travel:\\n header:\\n name: travel\\n\",\"readiness.status.sidecar.istio.io/applicationPorts\":\"\"},\"labels\":{\"app\":\"hotels\",\"version\":\"v1\"}},\"spec\":{\"containers\":[{\"env\":[{\"name\":\"CURRENT_SERVICE\",\"value\":\"hotels\"},{\"name\":\"CURRENT_VERSION\",\"value\":\"v1\"},{\"name\":\"LISTEN_ADDRESS\",\"value\":\":8000\"},{\"name\":\"DISCOUNTS_SERVICE\",\"value\":\"http://discounts.travel-agency:8000\"},{\"name\":\"MYSQL_SERVICE\",\"value\":\"mysqldb.travel-agency:3306\"},{\"name\":\"MYSQL_USER\",\"value\":\"root\"},{\"name\":\"MYSQL_PASSWORD\",\"valueFrom\":{\"secretKeyRef\":{\"key\":\"rootpasswd\",\"name\":\"mysql-credentials\"}}},{\"name\":\"MYSQL_DATABASE\",\"value\":\"test\"}],\"image\":\"quay.io/kiali/demo_travels_hotels:v1\",\"imagePullPolicy\":\"IfNotPresent\",\"name\":\"hotels\",\"ports\":[{\"containerPort\":8000}],\"securityContext\":{\"allowPrivilegeEscalation\":false,\"capabilities\":{\"drop\":[\"ALL\"]},\"privileged\":false,\"readOnlyRootFilesystem\":true}}]}}}}\n" + }, + "healthAnnotations": {}, + "istioReferences": [], + "dashboardAnnotations": null, + "serviceAccountNames": ["default"], + "health": { + "workloadStatus": { + "name": "hotels-v1", + "desiredReplicas": 1, + "currentReplicas": 1, + "availableReplicas": 0, + "syncedProxies": -1 + }, + "requests": { + "inbound": {}, + "outbound": {}, + "healthAnnotations": {} + } + } + }, + { + "name": "insurances-v1", + "cluster": "Kubernetes", + "type": "Deployment", + "createdAt": "2024-01-31T14:07:05Z", + "resourceVersion": "81115", + "istioSidecar": true, + "istioAmbient": false, + "additionalDetailSample": null, + "labels": { + "app": "insurances", + "version": "v1" + }, + "appLabel": true, + "versionLabel": true, + "podCount": 1, + "annotations": { + "deployment.kubernetes.io/revision": "1", + "kubectl.kubernetes.io/last-applied-configuration": "{\"apiVersion\":\"apps/v1\",\"kind\":\"Deployment\",\"metadata\":{\"annotations\":{},\"name\":\"insurances-v1\",\"namespace\":\"travel-agency\"},\"spec\":{\"replicas\":1,\"selector\":{\"matchLabels\":{\"app\":\"insurances\",\"version\":\"v1\"}},\"template\":{\"metadata\":{\"annotations\":{\"readiness.status.sidecar.istio.io/applicationPorts\":\"\"},\"labels\":{\"app\":\"insurances\",\"version\":\"v1\"}},\"spec\":{\"containers\":[{\"env\":[{\"name\":\"CURRENT_SERVICE\",\"value\":\"insurances\"},{\"name\":\"CURRENT_VERSION\",\"value\":\"v1\"},{\"name\":\"LISTEN_ADDRESS\",\"value\":\":8000\"},{\"name\":\"DISCOUNTS_SERVICE\",\"value\":\"http://discounts.travel-agency:8000\"},{\"name\":\"MYSQL_SERVICE\",\"value\":\"mysqldb.travel-agency:3306\"},{\"name\":\"MYSQL_USER\",\"value\":\"root\"},{\"name\":\"MYSQL_PASSWORD\",\"valueFrom\":{\"secretKeyRef\":{\"key\":\"rootpasswd\",\"name\":\"mysql-credentials\"}}},{\"name\":\"MYSQL_DATABASE\",\"value\":\"test\"}],\"image\":\"quay.io/kiali/demo_travels_insurances:v1\",\"imagePullPolicy\":\"IfNotPresent\",\"name\":\"insurances\",\"ports\":[{\"containerPort\":8000}],\"securityContext\":{\"allowPrivilegeEscalation\":false,\"capabilities\":{\"drop\":[\"ALL\"]},\"privileged\":false,\"readOnlyRootFilesystem\":true}}]}}}}\n" + }, + "healthAnnotations": {}, + "istioReferences": [], + "dashboardAnnotations": null, + "serviceAccountNames": ["default"], + "health": { + "workloadStatus": { + "name": "insurances-v1", + "desiredReplicas": 1, + "currentReplicas": 1, + "availableReplicas": 0, + "syncedProxies": -1 + }, + "requests": { + "inbound": {}, + "outbound": {}, + "healthAnnotations": {} + } + } + }, + { + "name": "mysqldb-v1", + "cluster": "Kubernetes", + "type": "Deployment", + "createdAt": "2024-01-31T14:07:05Z", + "resourceVersion": "81316", + "istioSidecar": true, + "istioAmbient": false, + "additionalDetailSample": null, + "labels": { + "app": "mysqldb", + "version": "v1" + }, + "appLabel": true, + "versionLabel": true, + "podCount": 1, + "annotations": { + "deployment.kubernetes.io/revision": "1", + "kubectl.kubernetes.io/last-applied-configuration": "{\"apiVersion\":\"apps/v1\",\"kind\":\"Deployment\",\"metadata\":{\"annotations\":{},\"labels\":{\"app\":\"mysqldb\",\"version\":\"v1\"},\"name\":\"mysqldb-v1\",\"namespace\":\"travel-agency\"},\"spec\":{\"replicas\":1,\"selector\":{\"matchLabels\":{\"app\":\"mysqldb\",\"version\":\"v1\"}},\"template\":{\"metadata\":{\"labels\":{\"app\":\"mysqldb\",\"version\":\"v1\"}},\"spec\":{\"containers\":[{\"args\":[\"--default-authentication-plugin\",\"mysql_native_password\"],\"env\":[{\"name\":\"MYSQL_ROOT_PASSWORD\",\"valueFrom\":{\"secretKeyRef\":{\"key\":\"rootpasswd\",\"name\":\"mysql-credentials\"}}}],\"image\":\"quay.io/kiali/demo_travels_mysqldb:v1\",\"imagePullPolicy\":\"IfNotPresent\",\"name\":\"mysqldb\",\"ports\":[{\"containerPort\":3306}],\"volumeMounts\":[{\"mountPath\":\"/var/lib/mysql\",\"name\":\"var-lib-mysql\"}]}],\"volumes\":[{\"emptyDir\":null,\"name\":\"var-lib-mysql\"}]}}}}\n" + }, + "healthAnnotations": {}, + "istioReferences": [], + "dashboardAnnotations": null, + "serviceAccountNames": ["default"], + "health": { + "workloadStatus": { + "name": "mysqldb-v1", + "desiredReplicas": 1, + "currentReplicas": 1, + "availableReplicas": 1, + "syncedProxies": -1 + }, + "requests": { + "inbound": {}, + "outbound": {}, + "healthAnnotations": {} + } + } + }, + { + "name": "travels-v1", + "cluster": "Kubernetes", + "type": "Deployment", + "createdAt": "2024-01-31T14:07:05Z", + "resourceVersion": "81119", + "istioSidecar": true, + "istioAmbient": false, + "additionalDetailSample": null, + "labels": { + "app": "travels", + "version": "v1" + }, + "appLabel": true, + "versionLabel": true, + "podCount": 1, + "annotations": { + "deployment.kubernetes.io/revision": "1", + "kubectl.kubernetes.io/last-applied-configuration": "{\"apiVersion\":\"apps/v1\",\"kind\":\"Deployment\",\"metadata\":{\"annotations\":{},\"name\":\"travels-v1\",\"namespace\":\"travel-agency\"},\"spec\":{\"replicas\":1,\"selector\":{\"matchLabels\":{\"app\":\"travels\",\"version\":\"v1\"}},\"template\":{\"metadata\":{\"annotations\":{\"proxy.istio.io/config\":\"tracing:\\n zipkin:\\n address: zipkin.istio-system:9411\\n sampling: 10\\n custom_tags:\\n http.header.portal:\\n header:\\n name: portal\\n http.header.device:\\n header:\\n name: device\\n http.header.user:\\n header:\\n name: user\\n http.header.travel:\\n header:\\n name: travel\\n\",\"readiness.status.sidecar.istio.io/applicationPorts\":\"\"},\"labels\":{\"app\":\"travels\",\"version\":\"v1\"}},\"spec\":{\"containers\":[{\"env\":[{\"name\":\"CURRENT_SERVICE\",\"value\":\"travels\"},{\"name\":\"CURRENT_VERSION\",\"value\":\"v1\"},{\"name\":\"LISTEN_ADDRESS\",\"value\":\":8000\"},{\"name\":\"FLIGHTS_SERVICE\",\"value\":\"http://flights.travel-agency:8000\"},{\"name\":\"HOTELS_SERVICE\",\"value\":\"http://hotels.travel-agency:8000\"},{\"name\":\"CARS_SERVICE\",\"value\":\"http://cars.travel-agency:8000\"},{\"name\":\"INSURANCES_SERVICE\",\"value\":\"http://insurances.travel-agency:8000\"}],\"image\":\"quay.io/kiali/demo_travels_travels:v1\",\"imagePullPolicy\":\"IfNotPresent\",\"name\":\"travels\",\"ports\":[{\"containerPort\":8000}],\"securityContext\":{\"allowPrivilegeEscalation\":false,\"capabilities\":{\"drop\":[\"ALL\"]},\"privileged\":false,\"readOnlyRootFilesystem\":true}}]}}}}\n" + }, + "healthAnnotations": {}, + "istioReferences": [], + "dashboardAnnotations": null, + "serviceAccountNames": ["default"], + "health": { + "workloadStatus": { + "name": "travels-v1", + "desiredReplicas": 1, + "currentReplicas": 1, + "availableReplicas": 0, + "syncedProxies": -1 + }, + "requests": { + "inbound": {}, + "outbound": {}, + "healthAnnotations": {} + } + } + } + ], + "validations": { + "workload": { + "cars-v1.travel-agency": { + "name": "cars-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "discounts-v1.travel-agency": { + "name": "discounts-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "flights-v1.travel-agency": { + "name": "flights-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "hotels-v1.travel-agency": { + "name": "hotels-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "insurances-v1.travel-agency": { + "name": "insurances-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "mysqldb-v1.travel-agency": { + "name": "mysqldb-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "travels-v1.travel-agency": { + "name": "travels-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + } + } + } +} diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-agency/workloads/cars_v1.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-agency/workloads/cars_v1.json new file mode 100644 index 0000000000..b3c875098f --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-agency/workloads/cars_v1.json @@ -0,0 +1,199 @@ +{ + "name": "cars-v1", + "cluster": "Kubernetes", + "type": "Deployment", + "createdAt": "2024-02-16T11:27:38Z", + "resourceVersion": "56786", + "istioSidecar": true, + "istioAmbient": false, + "additionalDetailSample": null, + "labels": { + "app": "cars", + "version": "v1" + }, + "appLabel": true, + "versionLabel": true, + "podCount": 0, + "annotations": { + "deployment.kubernetes.io/revision": "1", + "kubectl.kubernetes.io/last-applied-configuration": "{\"apiVersion\":\"apps/v1\",\"kind\":\"Deployment\",\"metadata\":{\"annotations\":{},\"name\":\"cars-v1\",\"namespace\":\"travel-agency\"},\"spec\":{\"replicas\":1,\"selector\":{\"matchLabels\":{\"app\":\"cars\",\"version\":\"v1\"}},\"template\":{\"metadata\":{\"annotations\":{\"proxy.istio.io/config\":\"tracing:\\n zipkin:\\n address: zipkin.istio-system:9411\\n sampling: 10\\n custom_tags:\\n http.header.portal:\\n header:\\n name: portal\\n http.header.device:\\n header:\\n name: device\\n http.header.user:\\n header:\\n name: user\\n http.header.travel:\\n header:\\n name: travel\\n\",\"readiness.status.sidecar.istio.io/applicationPorts\":\"\"},\"labels\":{\"app\":\"cars\",\"version\":\"v1\"}},\"spec\":{\"containers\":[{\"env\":[{\"name\":\"CURRENT_SERVICE\",\"value\":\"cars\"},{\"name\":\"CURRENT_VERSION\",\"value\":\"v1\"},{\"name\":\"LISTEN_ADDRESS\",\"value\":\":8000\"},{\"name\":\"DISCOUNTS_SERVICE\",\"value\":\"http://discounts.travel-agency:8000\"},{\"name\":\"MYSQL_SERVICE\",\"value\":\"mysqldb.travel-agency:3306\"},{\"name\":\"MYSQL_USER\",\"value\":\"root\"},{\"name\":\"MYSQL_PASSWORD\",\"valueFrom\":{\"secretKeyRef\":{\"key\":\"rootpasswd\",\"name\":\"mysql-credentials\"}}},{\"name\":\"MYSQL_DATABASE\",\"value\":\"test\"}],\"image\":\"quay.io/kiali/demo_travels_cars:v1\",\"imagePullPolicy\":\"IfNotPresent\",\"name\":\"cars\",\"ports\":[{\"containerPort\":8000}],\"securityContext\":{\"allowPrivilegeEscalation\":false,\"capabilities\":{\"drop\":[\"ALL\"]},\"privileged\":false,\"readOnlyRootFilesystem\":true}}]}}}}\n" + }, + "healthAnnotations": {}, + "istioReferences": null, + "dashboardAnnotations": {}, + "serviceAccountNames": null, + "desiredReplicas": 1, + "currentReplicas": 1, + "availableReplicas": 1, + "pods": [ + { + "name": "cars-v1-6c869ff769-8vnf9", + "labels": { + "app": "cars", + "pod-template-hash": "6c869ff769", + "security.istio.io/tlsMode": "istio", + "service.istio.io/canonical-name": "cars", + "service.istio.io/canonical-revision": "v1", + "version": "v1" + }, + "createdAt": "2024-02-16T11:27:38Z", + "createdBy": [ + { + "name": "cars-v1-6c869ff769", + "kind": "ReplicaSet" + } + ], + "containers": [ + { + "name": "cars", + "image": "quay.io/kiali/demo_travels_cars:v1", + "isProxy": false, + "isReady": true, + "isAmbient": false + } + ], + "istioContainers": [ + { + "name": "istio-proxy", + "image": "gcr.io/istio-release/proxyv2:1.20.1", + "isProxy": true, + "isReady": true, + "isAmbient": false + } + ], + "istioInitContainers": [ + { + "name": "istio-init", + "image": "gcr.io/istio-release/proxyv2:1.20.1", + "isProxy": true, + "isReady": true, + "isAmbient": false + } + ], + "status": "Running", + "statusMessage": "", + "statusReason": "", + "appLabel": true, + "versionLabel": true, + "annotations": { + "istio.io/rev": "default", + "kubectl.kubernetes.io/default-container": "cars", + "kubectl.kubernetes.io/default-logs-container": "cars", + "prometheus.io/path": "/stats/prometheus", + "prometheus.io/port": "15020", + "prometheus.io/scrape": "true", + "proxy.istio.io/config": "tracing:\n zipkin:\n address: zipkin.istio-system:9411\n sampling: 10\n custom_tags:\n http.header.portal:\n header:\n name: portal\n http.header.device:\n header:\n name: device\n http.header.user:\n header:\n name: user\n http.header.travel:\n header:\n name: travel\n", + "readiness.status.sidecar.istio.io/applicationPorts": "", + "sidecar.istio.io/status": "{\"initContainers\":[\"istio-init\"],\"containers\":[\"istio-proxy\"],\"volumes\":[\"workload-socket\",\"credential-socket\",\"workload-certs\",\"istio-envoy\",\"istio-data\",\"istio-podinfo\",\"istio-token\",\"istiod-ca-cert\"],\"imagePullSecrets\":null,\"revision\":\"default\"}" + }, + "proxyStatus": { + "CDS": "Synced", + "EDS": "Synced", + "LDS": "Synced", + "RDS": "Synced" + }, + "serviceAccountName": "default" + } + ], + "services": [ + { + "name": "cars", + "namespace": "travel-agency", + "istioSidecar": true, + "cluster": "Kubernetes", + "istioAmbient": false, + "appLabel": true, + "additionalDetailSample": null, + "annotations": null, + "healthAnnotations": {}, + "ports": null, + "labels": { + "app": "cars" + }, + "selector": { + "app": "cars" + }, + "istioReferences": [], + "kialiWizard": "", + "serviceRegistry": "Kubernetes", + "health": { + "requests": { + "inbound": {}, + "outbound": {}, + "healthAnnotations": {} + } + } + } + ], + "runtimes": [ + { + "name": "", + "dashboardRefs": [ + { + "template": "envoy", + "title": "Envoy Metrics" + } + ] + } + ], + "additionalDetails": [], + "validations": { + "gateway": { + "bookinfo-gateway.bookinfo": { + "name": "bookinfo-gateway", + "objectType": "gateway", + "valid": false, + "checks": [ + { + "code": "KIA0302", + "message": "No matching workload found for gateway selector in this namespace", + "severity": "warning", + "path": "spec/selector" + } + ], + "references": null + } + }, + "virtualservice": { + "bookinfo.bookinfo": { + "name": "bookinfo", + "objectType": "virtualservice", + "valid": true, + "checks": [], + "references": null + } + }, + "workload": { + "cars-v1.travel-agency": { + "name": "cars-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + } + } + }, + "waypointWorkloads": null, + "health": { + "workloadStatus": { + "name": "cars-v1", + "desiredReplicas": 1, + "currentReplicas": 1, + "availableReplicas": 1, + "syncedProxies": 1 + }, + "requests": { + "inbound": { + "http": { + "200": 0.2666666666666666 + } + }, + "outbound": { + "http": { + "200": 0.2666666666666666 + } + }, + "healthAnnotations": {} + } + } +} diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-agency/workloads/discounts_v1.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-agency/workloads/discounts_v1.json new file mode 100644 index 0000000000..b808060658 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-agency/workloads/discounts_v1.json @@ -0,0 +1,195 @@ +{ + "name": "discounts-v1", + "cluster": "Kubernetes", + "type": "Deployment", + "createdAt": "2024-02-16T11:27:38Z", + "resourceVersion": "56804", + "istioSidecar": true, + "istioAmbient": false, + "additionalDetailSample": null, + "labels": { + "app": "discounts", + "version": "v1" + }, + "appLabel": true, + "versionLabel": true, + "podCount": 0, + "annotations": { + "deployment.kubernetes.io/revision": "1", + "kubectl.kubernetes.io/last-applied-configuration": "{\"apiVersion\":\"apps/v1\",\"kind\":\"Deployment\",\"metadata\":{\"annotations\":{},\"name\":\"discounts-v1\",\"namespace\":\"travel-agency\"},\"spec\":{\"replicas\":1,\"selector\":{\"matchLabels\":{\"app\":\"discounts\",\"version\":\"v1\"}},\"template\":{\"metadata\":{\"annotations\":{\"proxy.istio.io/config\":\"tracing:\\n zipkin:\\n address: zipkin.istio-system:9411\\n sampling: 10\\n custom_tags:\\n http.header.portal:\\n header:\\n name: portal\\n http.header.device:\\n header:\\n name: device\\n http.header.user:\\n header:\\n name: user\\n http.header.travel:\\n header:\\n name: travel\\n\",\"readiness.status.sidecar.istio.io/applicationPorts\":\"\"},\"labels\":{\"app\":\"discounts\",\"version\":\"v1\"}},\"spec\":{\"containers\":[{\"env\":[{\"name\":\"CURRENT_SERVICE\",\"value\":\"discounts\"},{\"name\":\"CURRENT_VERSION\",\"value\":\"v1\"},{\"name\":\"LISTEN_ADDRESS\",\"value\":\":8000\"}],\"image\":\"quay.io/kiali/demo_travels_discounts:v1\",\"imagePullPolicy\":\"IfNotPresent\",\"name\":\"discounts\",\"ports\":[{\"containerPort\":8000}],\"securityContext\":{\"allowPrivilegeEscalation\":false,\"capabilities\":{\"drop\":[\"ALL\"]},\"privileged\":false,\"readOnlyRootFilesystem\":true}}]}}}}\n" + }, + "healthAnnotations": {}, + "istioReferences": null, + "dashboardAnnotations": {}, + "serviceAccountNames": null, + "desiredReplicas": 1, + "currentReplicas": 1, + "availableReplicas": 1, + "pods": [ + { + "name": "discounts-v1-76f667c5db-d4q9c", + "labels": { + "app": "discounts", + "pod-template-hash": "76f667c5db", + "security.istio.io/tlsMode": "istio", + "service.istio.io/canonical-name": "discounts", + "service.istio.io/canonical-revision": "v1", + "version": "v1" + }, + "createdAt": "2024-02-16T11:27:38Z", + "createdBy": [ + { + "name": "discounts-v1-76f667c5db", + "kind": "ReplicaSet" + } + ], + "containers": [ + { + "name": "discounts", + "image": "quay.io/kiali/demo_travels_discounts:v1", + "isProxy": false, + "isReady": true, + "isAmbient": false + } + ], + "istioContainers": [ + { + "name": "istio-proxy", + "image": "gcr.io/istio-release/proxyv2:1.20.1", + "isProxy": true, + "isReady": true, + "isAmbient": false + } + ], + "istioInitContainers": [ + { + "name": "istio-init", + "image": "gcr.io/istio-release/proxyv2:1.20.1", + "isProxy": true, + "isReady": true, + "isAmbient": false + } + ], + "status": "Running", + "statusMessage": "", + "statusReason": "", + "appLabel": true, + "versionLabel": true, + "annotations": { + "istio.io/rev": "default", + "kubectl.kubernetes.io/default-container": "discounts", + "kubectl.kubernetes.io/default-logs-container": "discounts", + "prometheus.io/path": "/stats/prometheus", + "prometheus.io/port": "15020", + "prometheus.io/scrape": "true", + "proxy.istio.io/config": "tracing:\n zipkin:\n address: zipkin.istio-system:9411\n sampling: 10\n custom_tags:\n http.header.portal:\n header:\n name: portal\n http.header.device:\n header:\n name: device\n http.header.user:\n header:\n name: user\n http.header.travel:\n header:\n name: travel\n", + "readiness.status.sidecar.istio.io/applicationPorts": "", + "sidecar.istio.io/status": "{\"initContainers\":[\"istio-init\"],\"containers\":[\"istio-proxy\"],\"volumes\":[\"workload-socket\",\"credential-socket\",\"workload-certs\",\"istio-envoy\",\"istio-data\",\"istio-podinfo\",\"istio-token\",\"istiod-ca-cert\"],\"imagePullSecrets\":null,\"revision\":\"default\"}" + }, + "proxyStatus": { + "CDS": "Synced", + "EDS": "Synced", + "LDS": "Synced", + "RDS": "Synced" + }, + "serviceAccountName": "default" + } + ], + "services": [ + { + "name": "discounts", + "namespace": "travel-agency", + "istioSidecar": true, + "cluster": "Kubernetes", + "istioAmbient": false, + "appLabel": true, + "additionalDetailSample": null, + "annotations": null, + "healthAnnotations": {}, + "ports": null, + "labels": { + "app": "discounts" + }, + "selector": { + "app": "discounts" + }, + "istioReferences": [], + "kialiWizard": "", + "serviceRegistry": "Kubernetes", + "health": { + "requests": { + "inbound": {}, + "outbound": {}, + "healthAnnotations": {} + } + } + } + ], + "runtimes": [ + { + "name": "", + "dashboardRefs": [ + { + "template": "envoy", + "title": "Envoy Metrics" + } + ] + } + ], + "additionalDetails": [], + "validations": { + "gateway": { + "bookinfo-gateway.bookinfo": { + "name": "bookinfo-gateway", + "objectType": "gateway", + "valid": false, + "checks": [ + { + "code": "KIA0302", + "message": "No matching workload found for gateway selector in this namespace", + "severity": "warning", + "path": "spec/selector" + } + ], + "references": null + } + }, + "virtualservice": { + "bookinfo.bookinfo": { + "name": "bookinfo", + "objectType": "virtualservice", + "valid": true, + "checks": [], + "references": null + } + }, + "workload": { + "discounts-v1.travel-agency": { + "name": "discounts-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + } + } + }, + "waypointWorkloads": null, + "health": { + "workloadStatus": { + "name": "discounts-v1", + "desiredReplicas": 1, + "currentReplicas": 1, + "availableReplicas": 1, + "syncedProxies": 1 + }, + "requests": { + "inbound": { + "http": { + "200": 1.333333333333333 + } + }, + "outbound": {}, + "healthAnnotations": {} + } + } +} diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-agency/workloads/flights_v1.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-agency/workloads/flights_v1.json new file mode 100644 index 0000000000..5e186087b0 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-agency/workloads/flights_v1.json @@ -0,0 +1,199 @@ +{ + "name": "flights-v1", + "cluster": "Kubernetes", + "type": "Deployment", + "createdAt": "2024-02-16T11:27:38Z", + "resourceVersion": "56729", + "istioSidecar": true, + "istioAmbient": false, + "additionalDetailSample": null, + "labels": { + "app": "flights", + "version": "v1" + }, + "appLabel": true, + "versionLabel": true, + "podCount": 0, + "annotations": { + "deployment.kubernetes.io/revision": "1", + "kubectl.kubernetes.io/last-applied-configuration": "{\"apiVersion\":\"apps/v1\",\"kind\":\"Deployment\",\"metadata\":{\"annotations\":{},\"name\":\"flights-v1\",\"namespace\":\"travel-agency\"},\"spec\":{\"replicas\":1,\"selector\":{\"matchLabels\":{\"app\":\"flights\",\"version\":\"v1\"}},\"template\":{\"metadata\":{\"annotations\":{\"proxy.istio.io/config\":\"tracing:\\n zipkin:\\n address: zipkin.istio-system:9411\\n sampling: 10\\n custom_tags:\\n http.header.portal:\\n header:\\n name: portal\\n http.header.device:\\n header:\\n name: device\\n http.header.user:\\n header:\\n name: user\\n http.header.travel:\\n header:\\n name: travel\\n\",\"readiness.status.sidecar.istio.io/applicationPorts\":\"\"},\"labels\":{\"app\":\"flights\",\"version\":\"v1\"}},\"spec\":{\"containers\":[{\"env\":[{\"name\":\"CURRENT_SERVICE\",\"value\":\"flights\"},{\"name\":\"CURRENT_VERSION\",\"value\":\"v1\"},{\"name\":\"LISTEN_ADDRESS\",\"value\":\":8000\"},{\"name\":\"DISCOUNTS_SERVICE\",\"value\":\"http://discounts.travel-agency:8000\"},{\"name\":\"MYSQL_SERVICE\",\"value\":\"mysqldb.travel-agency:3306\"},{\"name\":\"MYSQL_USER\",\"value\":\"root\"},{\"name\":\"MYSQL_PASSWORD\",\"valueFrom\":{\"secretKeyRef\":{\"key\":\"rootpasswd\",\"name\":\"mysql-credentials\"}}},{\"name\":\"MYSQL_DATABASE\",\"value\":\"test\"}],\"image\":\"quay.io/kiali/demo_travels_flights:v1\",\"imagePullPolicy\":\"IfNotPresent\",\"name\":\"flights\",\"ports\":[{\"containerPort\":8000}],\"securityContext\":{\"allowPrivilegeEscalation\":false,\"capabilities\":{\"drop\":[\"ALL\"]},\"privileged\":false,\"readOnlyRootFilesystem\":true}}]}}}}\n" + }, + "healthAnnotations": {}, + "istioReferences": null, + "dashboardAnnotations": {}, + "serviceAccountNames": null, + "desiredReplicas": 1, + "currentReplicas": 1, + "availableReplicas": 1, + "pods": [ + { + "name": "flights-v1-5c654b5b7f-gzqh4", + "labels": { + "app": "flights", + "pod-template-hash": "5c654b5b7f", + "security.istio.io/tlsMode": "istio", + "service.istio.io/canonical-name": "flights", + "service.istio.io/canonical-revision": "v1", + "version": "v1" + }, + "createdAt": "2024-02-16T11:27:38Z", + "createdBy": [ + { + "name": "flights-v1-5c654b5b7f", + "kind": "ReplicaSet" + } + ], + "containers": [ + { + "name": "flights", + "image": "quay.io/kiali/demo_travels_flights:v1", + "isProxy": false, + "isReady": true, + "isAmbient": false + } + ], + "istioContainers": [ + { + "name": "istio-proxy", + "image": "gcr.io/istio-release/proxyv2:1.20.1", + "isProxy": true, + "isReady": true, + "isAmbient": false + } + ], + "istioInitContainers": [ + { + "name": "istio-init", + "image": "gcr.io/istio-release/proxyv2:1.20.1", + "isProxy": true, + "isReady": true, + "isAmbient": false + } + ], + "status": "Running", + "statusMessage": "", + "statusReason": "", + "appLabel": true, + "versionLabel": true, + "annotations": { + "istio.io/rev": "default", + "kubectl.kubernetes.io/default-container": "flights", + "kubectl.kubernetes.io/default-logs-container": "flights", + "prometheus.io/path": "/stats/prometheus", + "prometheus.io/port": "15020", + "prometheus.io/scrape": "true", + "proxy.istio.io/config": "tracing:\n zipkin:\n address: zipkin.istio-system:9411\n sampling: 10\n custom_tags:\n http.header.portal:\n header:\n name: portal\n http.header.device:\n header:\n name: device\n http.header.user:\n header:\n name: user\n http.header.travel:\n header:\n name: travel\n", + "readiness.status.sidecar.istio.io/applicationPorts": "", + "sidecar.istio.io/status": "{\"initContainers\":[\"istio-init\"],\"containers\":[\"istio-proxy\"],\"volumes\":[\"workload-socket\",\"credential-socket\",\"workload-certs\",\"istio-envoy\",\"istio-data\",\"istio-podinfo\",\"istio-token\",\"istiod-ca-cert\"],\"imagePullSecrets\":null,\"revision\":\"default\"}" + }, + "proxyStatus": { + "CDS": "Synced", + "EDS": "Synced", + "LDS": "Synced", + "RDS": "Synced" + }, + "serviceAccountName": "default" + } + ], + "services": [ + { + "name": "flights", + "namespace": "travel-agency", + "istioSidecar": true, + "cluster": "Kubernetes", + "istioAmbient": false, + "appLabel": true, + "additionalDetailSample": null, + "annotations": null, + "healthAnnotations": {}, + "ports": null, + "labels": { + "app": "flights" + }, + "selector": { + "app": "flights" + }, + "istioReferences": [], + "kialiWizard": "", + "serviceRegistry": "Kubernetes", + "health": { + "requests": { + "inbound": {}, + "outbound": {}, + "healthAnnotations": {} + } + } + } + ], + "runtimes": [ + { + "name": "", + "dashboardRefs": [ + { + "template": "envoy", + "title": "Envoy Metrics" + } + ] + } + ], + "additionalDetails": [], + "validations": { + "gateway": { + "bookinfo-gateway.bookinfo": { + "name": "bookinfo-gateway", + "objectType": "gateway", + "valid": false, + "checks": [ + { + "code": "KIA0302", + "message": "No matching workload found for gateway selector in this namespace", + "severity": "warning", + "path": "spec/selector" + } + ], + "references": null + } + }, + "virtualservice": { + "bookinfo.bookinfo": { + "name": "bookinfo", + "objectType": "virtualservice", + "valid": true, + "checks": [], + "references": null + } + }, + "workload": { + "flights-v1.travel-agency": { + "name": "flights-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + } + } + }, + "waypointWorkloads": null, + "health": { + "workloadStatus": { + "name": "flights-v1", + "desiredReplicas": 1, + "currentReplicas": 1, + "availableReplicas": 1, + "syncedProxies": 1 + }, + "requests": { + "inbound": { + "http": { + "200": 0.2666666666666666 + } + }, + "outbound": { + "http": { + "200": 0.2666666666666666 + } + }, + "healthAnnotations": {} + } + } +} diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-agency/workloads/hotels_v1.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-agency/workloads/hotels_v1.json new file mode 100644 index 0000000000..0b5bd82a2d --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-agency/workloads/hotels_v1.json @@ -0,0 +1,199 @@ +{ + "name": "hotels-v1", + "cluster": "Kubernetes", + "type": "Deployment", + "createdAt": "2024-02-16T11:27:38Z", + "resourceVersion": "56712", + "istioSidecar": true, + "istioAmbient": false, + "additionalDetailSample": null, + "labels": { + "app": "hotels", + "version": "v1" + }, + "appLabel": true, + "versionLabel": true, + "podCount": 0, + "annotations": { + "deployment.kubernetes.io/revision": "1", + "kubectl.kubernetes.io/last-applied-configuration": "{\"apiVersion\":\"apps/v1\",\"kind\":\"Deployment\",\"metadata\":{\"annotations\":{},\"name\":\"hotels-v1\",\"namespace\":\"travel-agency\"},\"spec\":{\"replicas\":1,\"selector\":{\"matchLabels\":{\"app\":\"hotels\",\"version\":\"v1\"}},\"template\":{\"metadata\":{\"annotations\":{\"proxy.istio.io/config\":\"tracing:\\n zipkin:\\n address: zipkin.istio-system:9411\\n sampling: 10\\n custom_tags:\\n http.header.portal:\\n header:\\n name: portal\\n http.header.device:\\n header:\\n name: device\\n http.header.user:\\n header:\\n name: user\\n http.header.travel:\\n header:\\n name: travel\\n\",\"readiness.status.sidecar.istio.io/applicationPorts\":\"\"},\"labels\":{\"app\":\"hotels\",\"version\":\"v1\"}},\"spec\":{\"containers\":[{\"env\":[{\"name\":\"CURRENT_SERVICE\",\"value\":\"hotels\"},{\"name\":\"CURRENT_VERSION\",\"value\":\"v1\"},{\"name\":\"LISTEN_ADDRESS\",\"value\":\":8000\"},{\"name\":\"DISCOUNTS_SERVICE\",\"value\":\"http://discounts.travel-agency:8000\"},{\"name\":\"MYSQL_SERVICE\",\"value\":\"mysqldb.travel-agency:3306\"},{\"name\":\"MYSQL_USER\",\"value\":\"root\"},{\"name\":\"MYSQL_PASSWORD\",\"valueFrom\":{\"secretKeyRef\":{\"key\":\"rootpasswd\",\"name\":\"mysql-credentials\"}}},{\"name\":\"MYSQL_DATABASE\",\"value\":\"test\"}],\"image\":\"quay.io/kiali/demo_travels_hotels:v1\",\"imagePullPolicy\":\"IfNotPresent\",\"name\":\"hotels\",\"ports\":[{\"containerPort\":8000}],\"securityContext\":{\"allowPrivilegeEscalation\":false,\"capabilities\":{\"drop\":[\"ALL\"]},\"privileged\":false,\"readOnlyRootFilesystem\":true}}]}}}}\n" + }, + "healthAnnotations": {}, + "istioReferences": null, + "dashboardAnnotations": {}, + "serviceAccountNames": null, + "desiredReplicas": 1, + "currentReplicas": 1, + "availableReplicas": 1, + "pods": [ + { + "name": "hotels-v1-57d9574745-kjqqj", + "labels": { + "app": "hotels", + "pod-template-hash": "57d9574745", + "security.istio.io/tlsMode": "istio", + "service.istio.io/canonical-name": "hotels", + "service.istio.io/canonical-revision": "v1", + "version": "v1" + }, + "createdAt": "2024-02-16T11:27:38Z", + "createdBy": [ + { + "name": "hotels-v1-57d9574745", + "kind": "ReplicaSet" + } + ], + "containers": [ + { + "name": "hotels", + "image": "quay.io/kiali/demo_travels_hotels:v1", + "isProxy": false, + "isReady": true, + "isAmbient": false + } + ], + "istioContainers": [ + { + "name": "istio-proxy", + "image": "gcr.io/istio-release/proxyv2:1.20.1", + "isProxy": true, + "isReady": true, + "isAmbient": false + } + ], + "istioInitContainers": [ + { + "name": "istio-init", + "image": "gcr.io/istio-release/proxyv2:1.20.1", + "isProxy": true, + "isReady": true, + "isAmbient": false + } + ], + "status": "Running", + "statusMessage": "", + "statusReason": "", + "appLabel": true, + "versionLabel": true, + "annotations": { + "istio.io/rev": "default", + "kubectl.kubernetes.io/default-container": "hotels", + "kubectl.kubernetes.io/default-logs-container": "hotels", + "prometheus.io/path": "/stats/prometheus", + "prometheus.io/port": "15020", + "prometheus.io/scrape": "true", + "proxy.istio.io/config": "tracing:\n zipkin:\n address: zipkin.istio-system:9411\n sampling: 10\n custom_tags:\n http.header.portal:\n header:\n name: portal\n http.header.device:\n header:\n name: device\n http.header.user:\n header:\n name: user\n http.header.travel:\n header:\n name: travel\n", + "readiness.status.sidecar.istio.io/applicationPorts": "", + "sidecar.istio.io/status": "{\"initContainers\":[\"istio-init\"],\"containers\":[\"istio-proxy\"],\"volumes\":[\"workload-socket\",\"credential-socket\",\"workload-certs\",\"istio-envoy\",\"istio-data\",\"istio-podinfo\",\"istio-token\",\"istiod-ca-cert\"],\"imagePullSecrets\":null,\"revision\":\"default\"}" + }, + "proxyStatus": { + "CDS": "Synced", + "EDS": "Synced", + "LDS": "Synced", + "RDS": "Synced" + }, + "serviceAccountName": "default" + } + ], + "services": [ + { + "name": "hotels", + "namespace": "travel-agency", + "istioSidecar": true, + "cluster": "Kubernetes", + "istioAmbient": false, + "appLabel": true, + "additionalDetailSample": null, + "annotations": null, + "healthAnnotations": {}, + "ports": null, + "labels": { + "app": "hotels" + }, + "selector": { + "app": "hotels" + }, + "istioReferences": [], + "kialiWizard": "", + "serviceRegistry": "Kubernetes", + "health": { + "requests": { + "inbound": {}, + "outbound": {}, + "healthAnnotations": {} + } + } + } + ], + "runtimes": [ + { + "name": "", + "dashboardRefs": [ + { + "template": "envoy", + "title": "Envoy Metrics" + } + ] + } + ], + "additionalDetails": [], + "validations": { + "gateway": { + "bookinfo-gateway.bookinfo": { + "name": "bookinfo-gateway", + "objectType": "gateway", + "valid": false, + "checks": [ + { + "code": "KIA0302", + "message": "No matching workload found for gateway selector in this namespace", + "severity": "warning", + "path": "spec/selector" + } + ], + "references": null + } + }, + "virtualservice": { + "bookinfo.bookinfo": { + "name": "bookinfo", + "objectType": "virtualservice", + "valid": true, + "checks": [], + "references": null + } + }, + "workload": { + "hotels-v1.travel-agency": { + "name": "hotels-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + } + } + }, + "waypointWorkloads": null, + "health": { + "workloadStatus": { + "name": "hotels-v1", + "desiredReplicas": 1, + "currentReplicas": 1, + "availableReplicas": 1, + "syncedProxies": 1 + }, + "requests": { + "inbound": { + "http": { + "200": 0.7999999999999999 + } + }, + "outbound": { + "http": { + "200": 0.39999999999999997 + } + }, + "healthAnnotations": {} + } + } +} diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-agency/workloads/insurances_v1.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-agency/workloads/insurances_v1.json new file mode 100644 index 0000000000..a0287306c3 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-agency/workloads/insurances_v1.json @@ -0,0 +1,198 @@ +{ + "name": "insurances-v1", + "cluster": "Kubernetes", + "type": "Deployment", + "createdAt": "2024-02-16T11:27:38Z", + "resourceVersion": "56833", + "istioSidecar": true, + "istioAmbient": false, + "additionalDetailSample": null, + "labels": { + "app": "insurances", + "version": "v1" + }, + "appLabel": true, + "versionLabel": true, + "podCount": 0, + "annotations": { + "deployment.kubernetes.io/revision": "1", + "kubectl.kubernetes.io/last-applied-configuration": "{\"apiVersion\":\"apps/v1\",\"kind\":\"Deployment\",\"metadata\":{\"annotations\":{},\"name\":\"insurances-v1\",\"namespace\":\"travel-agency\"},\"spec\":{\"replicas\":1,\"selector\":{\"matchLabels\":{\"app\":\"insurances\",\"version\":\"v1\"}},\"template\":{\"metadata\":{\"annotations\":{\"readiness.status.sidecar.istio.io/applicationPorts\":\"\"},\"labels\":{\"app\":\"insurances\",\"version\":\"v1\"}},\"spec\":{\"containers\":[{\"env\":[{\"name\":\"CURRENT_SERVICE\",\"value\":\"insurances\"},{\"name\":\"CURRENT_VERSION\",\"value\":\"v1\"},{\"name\":\"LISTEN_ADDRESS\",\"value\":\":8000\"},{\"name\":\"DISCOUNTS_SERVICE\",\"value\":\"http://discounts.travel-agency:8000\"},{\"name\":\"MYSQL_SERVICE\",\"value\":\"mysqldb.travel-agency:3306\"},{\"name\":\"MYSQL_USER\",\"value\":\"root\"},{\"name\":\"MYSQL_PASSWORD\",\"valueFrom\":{\"secretKeyRef\":{\"key\":\"rootpasswd\",\"name\":\"mysql-credentials\"}}},{\"name\":\"MYSQL_DATABASE\",\"value\":\"test\"}],\"image\":\"quay.io/kiali/demo_travels_insurances:v1\",\"imagePullPolicy\":\"IfNotPresent\",\"name\":\"insurances\",\"ports\":[{\"containerPort\":8000}],\"securityContext\":{\"allowPrivilegeEscalation\":false,\"capabilities\":{\"drop\":[\"ALL\"]},\"privileged\":false,\"readOnlyRootFilesystem\":true}}]}}}}\n" + }, + "healthAnnotations": {}, + "istioReferences": null, + "dashboardAnnotations": {}, + "serviceAccountNames": null, + "desiredReplicas": 1, + "currentReplicas": 1, + "availableReplicas": 1, + "pods": [ + { + "name": "insurances-v1-b66754b7b-9wkm6", + "labels": { + "app": "insurances", + "pod-template-hash": "b66754b7b", + "security.istio.io/tlsMode": "istio", + "service.istio.io/canonical-name": "insurances", + "service.istio.io/canonical-revision": "v1", + "version": "v1" + }, + "createdAt": "2024-02-16T11:27:38Z", + "createdBy": [ + { + "name": "insurances-v1-b66754b7b", + "kind": "ReplicaSet" + } + ], + "containers": [ + { + "name": "insurances", + "image": "quay.io/kiali/demo_travels_insurances:v1", + "isProxy": false, + "isReady": true, + "isAmbient": false + } + ], + "istioContainers": [ + { + "name": "istio-proxy", + "image": "gcr.io/istio-release/proxyv2:1.20.1", + "isProxy": true, + "isReady": true, + "isAmbient": false + } + ], + "istioInitContainers": [ + { + "name": "istio-init", + "image": "gcr.io/istio-release/proxyv2:1.20.1", + "isProxy": true, + "isReady": true, + "isAmbient": false + } + ], + "status": "Running", + "statusMessage": "", + "statusReason": "", + "appLabel": true, + "versionLabel": true, + "annotations": { + "istio.io/rev": "default", + "kubectl.kubernetes.io/default-container": "insurances", + "kubectl.kubernetes.io/default-logs-container": "insurances", + "prometheus.io/path": "/stats/prometheus", + "prometheus.io/port": "15020", + "prometheus.io/scrape": "true", + "readiness.status.sidecar.istio.io/applicationPorts": "", + "sidecar.istio.io/status": "{\"initContainers\":[\"istio-init\"],\"containers\":[\"istio-proxy\"],\"volumes\":[\"workload-socket\",\"credential-socket\",\"workload-certs\",\"istio-envoy\",\"istio-data\",\"istio-podinfo\",\"istio-token\",\"istiod-ca-cert\"],\"imagePullSecrets\":null,\"revision\":\"default\"}" + }, + "proxyStatus": { + "CDS": "Synced", + "EDS": "Synced", + "LDS": "Synced", + "RDS": "Synced" + }, + "serviceAccountName": "default" + } + ], + "services": [ + { + "name": "insurances", + "namespace": "travel-agency", + "istioSidecar": true, + "cluster": "Kubernetes", + "istioAmbient": false, + "appLabel": true, + "additionalDetailSample": null, + "annotations": null, + "healthAnnotations": {}, + "ports": null, + "labels": { + "app": "insurances" + }, + "selector": { + "app": "insurances" + }, + "istioReferences": [], + "kialiWizard": "", + "serviceRegistry": "Kubernetes", + "health": { + "requests": { + "inbound": {}, + "outbound": {}, + "healthAnnotations": {} + } + } + } + ], + "runtimes": [ + { + "name": "", + "dashboardRefs": [ + { + "template": "envoy", + "title": "Envoy Metrics" + } + ] + } + ], + "additionalDetails": [], + "validations": { + "gateway": { + "bookinfo-gateway.bookinfo": { + "name": "bookinfo-gateway", + "objectType": "gateway", + "valid": false, + "checks": [ + { + "code": "KIA0302", + "message": "No matching workload found for gateway selector in this namespace", + "severity": "warning", + "path": "spec/selector" + } + ], + "references": null + } + }, + "virtualservice": { + "bookinfo.bookinfo": { + "name": "bookinfo", + "objectType": "virtualservice", + "valid": true, + "checks": [], + "references": null + } + }, + "workload": { + "insurances-v1.travel-agency": { + "name": "insurances-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + } + } + }, + "waypointWorkloads": null, + "health": { + "workloadStatus": { + "name": "insurances-v1", + "desiredReplicas": 1, + "currentReplicas": 1, + "availableReplicas": 1, + "syncedProxies": 1 + }, + "requests": { + "inbound": { + "http": { + "200": 0.39999999999999997 + } + }, + "outbound": { + "http": { + "200": 0.39999999999999997 + } + }, + "healthAnnotations": {} + } + } +} diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-agency/workloads/mysqldb_v1.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-agency/workloads/mysqldb_v1.json new file mode 100644 index 0000000000..00f6c570d6 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-agency/workloads/mysqldb_v1.json @@ -0,0 +1,189 @@ +{ + "name": "mysqldb-v1", + "cluster": "Kubernetes", + "type": "Deployment", + "createdAt": "2024-02-16T11:27:38Z", + "resourceVersion": "56885", + "istioSidecar": true, + "istioAmbient": false, + "additionalDetailSample": null, + "labels": { + "app": "mysqldb", + "version": "v1" + }, + "appLabel": true, + "versionLabel": true, + "podCount": 0, + "annotations": { + "deployment.kubernetes.io/revision": "1", + "kubectl.kubernetes.io/last-applied-configuration": "{\"apiVersion\":\"apps/v1\",\"kind\":\"Deployment\",\"metadata\":{\"annotations\":{},\"labels\":{\"app\":\"mysqldb\",\"version\":\"v1\"},\"name\":\"mysqldb-v1\",\"namespace\":\"travel-agency\"},\"spec\":{\"replicas\":1,\"selector\":{\"matchLabels\":{\"app\":\"mysqldb\",\"version\":\"v1\"}},\"template\":{\"metadata\":{\"labels\":{\"app\":\"mysqldb\",\"version\":\"v1\"}},\"spec\":{\"containers\":[{\"args\":[\"--default-authentication-plugin\",\"mysql_native_password\"],\"env\":[{\"name\":\"MYSQL_ROOT_PASSWORD\",\"valueFrom\":{\"secretKeyRef\":{\"key\":\"rootpasswd\",\"name\":\"mysql-credentials\"}}}],\"image\":\"quay.io/kiali/demo_travels_mysqldb:v1\",\"imagePullPolicy\":\"IfNotPresent\",\"name\":\"mysqldb\",\"ports\":[{\"containerPort\":3306}],\"volumeMounts\":[{\"mountPath\":\"/var/lib/mysql\",\"name\":\"var-lib-mysql\"}]}],\"volumes\":[{\"emptyDir\":null,\"name\":\"var-lib-mysql\"}]}}}}\n" + }, + "healthAnnotations": {}, + "istioReferences": null, + "dashboardAnnotations": {}, + "serviceAccountNames": null, + "desiredReplicas": 1, + "currentReplicas": 1, + "availableReplicas": 1, + "pods": [ + { + "name": "mysqldb-v1-64bc584fdc-zh5tl", + "labels": { + "app": "mysqldb", + "pod-template-hash": "64bc584fdc", + "security.istio.io/tlsMode": "istio", + "service.istio.io/canonical-name": "mysqldb", + "service.istio.io/canonical-revision": "v1", + "version": "v1" + }, + "createdAt": "2024-02-16T11:27:38Z", + "createdBy": [ + { + "name": "mysqldb-v1-64bc584fdc", + "kind": "ReplicaSet" + } + ], + "containers": [ + { + "name": "mysqldb", + "image": "quay.io/kiali/demo_travels_mysqldb:v1", + "isProxy": false, + "isReady": true, + "isAmbient": false + } + ], + "istioContainers": [ + { + "name": "istio-proxy", + "image": "gcr.io/istio-release/proxyv2:1.20.1", + "isProxy": true, + "isReady": true, + "isAmbient": false + } + ], + "istioInitContainers": [ + { + "name": "istio-init", + "image": "gcr.io/istio-release/proxyv2:1.20.1", + "isProxy": true, + "isReady": true, + "isAmbient": false + } + ], + "status": "Running", + "statusMessage": "", + "statusReason": "", + "appLabel": true, + "versionLabel": true, + "annotations": { + "istio.io/rev": "default", + "kubectl.kubernetes.io/default-container": "mysqldb", + "kubectl.kubernetes.io/default-logs-container": "mysqldb", + "prometheus.io/path": "/stats/prometheus", + "prometheus.io/port": "15020", + "prometheus.io/scrape": "true", + "sidecar.istio.io/status": "{\"initContainers\":[\"istio-init\"],\"containers\":[\"istio-proxy\"],\"volumes\":[\"workload-socket\",\"credential-socket\",\"workload-certs\",\"istio-envoy\",\"istio-data\",\"istio-podinfo\",\"istio-token\",\"istiod-ca-cert\"],\"imagePullSecrets\":null,\"revision\":\"default\"}" + }, + "proxyStatus": { + "CDS": "Synced", + "EDS": "Synced", + "LDS": "Synced", + "RDS": "Synced" + }, + "serviceAccountName": "default" + } + ], + "services": [ + { + "name": "mysqldb", + "namespace": "travel-agency", + "istioSidecar": true, + "cluster": "Kubernetes", + "istioAmbient": false, + "appLabel": true, + "additionalDetailSample": null, + "annotations": null, + "healthAnnotations": {}, + "ports": null, + "labels": { + "app": "mysqldb" + }, + "selector": { + "app": "mysqldb" + }, + "istioReferences": [], + "kialiWizard": "", + "serviceRegistry": "Kubernetes", + "health": { + "requests": { + "inbound": {}, + "outbound": {}, + "healthAnnotations": {} + } + } + } + ], + "runtimes": [ + { + "name": "", + "dashboardRefs": [ + { + "template": "envoy", + "title": "Envoy Metrics" + } + ] + } + ], + "additionalDetails": [], + "validations": { + "gateway": { + "bookinfo-gateway.bookinfo": { + "name": "bookinfo-gateway", + "objectType": "gateway", + "valid": false, + "checks": [ + { + "code": "KIA0302", + "message": "No matching workload found for gateway selector in this namespace", + "severity": "warning", + "path": "spec/selector" + } + ], + "references": null + } + }, + "virtualservice": { + "bookinfo.bookinfo": { + "name": "bookinfo", + "objectType": "virtualservice", + "valid": true, + "checks": [], + "references": null + } + }, + "workload": { + "mysqldb-v1.travel-agency": { + "name": "mysqldb-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + } + } + }, + "waypointWorkloads": null, + "health": { + "workloadStatus": { + "name": "mysqldb-v1", + "desiredReplicas": 1, + "currentReplicas": 1, + "availableReplicas": 1, + "syncedProxies": 1 + }, + "requests": { + "inbound": {}, + "outbound": {}, + "healthAnnotations": {} + } + } +} diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-agency/workloads/travels_v1.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-agency/workloads/travels_v1.json new file mode 100644 index 0000000000..ef5315e0d3 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-agency/workloads/travels_v1.json @@ -0,0 +1,350 @@ +{ + "service": { + "name": "travels", + "createdAt": "2024-02-16T11:27:38Z", + "resourceVersion": "56507", + "namespace": { + "name": "travel-agency", + "cluster": "", + "isAmbient": false, + "labels": null, + "annotations": null + }, + "labels": { + "app": "travels" + }, + "selectors": { + "app": "travels" + }, + "type": "ClusterIP", + "ip": "10.100.8.39", + "ports": [ + { + "name": "http", + "protocol": "TCP", + "port": 8000 + } + ], + "externalName": "", + "annotations": { + "kubectl.kubernetes.io/last-applied-configuration": "{\"apiVersion\":\"v1\",\"kind\":\"Service\",\"metadata\":{\"annotations\":{},\"labels\":{\"app\":\"travels\"},\"name\":\"travels\",\"namespace\":\"travel-agency\"},\"spec\":{\"ports\":[{\"name\":\"http\",\"port\":8000}],\"selector\":{\"app\":\"travels\"}}}\n" + }, + "healthAnnotations": {}, + "additionalDetails": [] + }, + "cluster": "Kubernetes", + "istioSidecar": true, + "endpoints": [ + { + "addresses": [ + { + "kind": "Pod", + "name": "travels-v1-78fc68bb6b-xstzx", + "ip": "10.244.0.39", + "port": 0 + } + ], + "ports": [ + { + "name": "http", + "protocol": "TCP", + "port": 8000 + } + ] + } + ], + "virtualServices": [], + "destinationRules": [], + "k8sHTTPRoutes": [], + "serviceEntries": null, + "istioPermissions": { + "create": true, + "update": true, + "delete": true + }, + "workloads": [ + { + "name": "travels-v1", + "cluster": "Kubernetes", + "type": "Deployment", + "createdAt": "2024-02-16T11:27:38Z", + "resourceVersion": "56691", + "istioSidecar": true, + "istioAmbient": false, + "additionalDetailSample": null, + "labels": { + "app": "travels", + "version": "v1" + }, + "appLabel": true, + "versionLabel": true, + "podCount": 1, + "annotations": { + "deployment.kubernetes.io/revision": "1", + "kubectl.kubernetes.io/last-applied-configuration": "{\"apiVersion\":\"apps/v1\",\"kind\":\"Deployment\",\"metadata\":{\"annotations\":{},\"name\":\"travels-v1\",\"namespace\":\"travel-agency\"},\"spec\":{\"replicas\":1,\"selector\":{\"matchLabels\":{\"app\":\"travels\",\"version\":\"v1\"}},\"template\":{\"metadata\":{\"annotations\":{\"proxy.istio.io/config\":\"tracing:\\n zipkin:\\n address: zipkin.istio-system:9411\\n sampling: 10\\n custom_tags:\\n http.header.portal:\\n header:\\n name: portal\\n http.header.device:\\n header:\\n name: device\\n http.header.user:\\n header:\\n name: user\\n http.header.travel:\\n header:\\n name: travel\\n\",\"readiness.status.sidecar.istio.io/applicationPorts\":\"\"},\"labels\":{\"app\":\"travels\",\"version\":\"v1\"}},\"spec\":{\"containers\":[{\"env\":[{\"name\":\"CURRENT_SERVICE\",\"value\":\"travels\"},{\"name\":\"CURRENT_VERSION\",\"value\":\"v1\"},{\"name\":\"LISTEN_ADDRESS\",\"value\":\":8000\"},{\"name\":\"FLIGHTS_SERVICE\",\"value\":\"http://flights.travel-agency:8000\"},{\"name\":\"HOTELS_SERVICE\",\"value\":\"http://hotels.travel-agency:8000\"},{\"name\":\"CARS_SERVICE\",\"value\":\"http://cars.travel-agency:8000\"},{\"name\":\"INSURANCES_SERVICE\",\"value\":\"http://insurances.travel-agency:8000\"}],\"image\":\"quay.io/kiali/demo_travels_travels:v1\",\"imagePullPolicy\":\"IfNotPresent\",\"name\":\"travels\",\"ports\":[{\"containerPort\":8000}],\"securityContext\":{\"allowPrivilegeEscalation\":false,\"capabilities\":{\"drop\":[\"ALL\"]},\"privileged\":false,\"readOnlyRootFilesystem\":true}}]}}}}\n" + }, + "healthAnnotations": {}, + "istioReferences": [], + "dashboardAnnotations": null, + "serviceAccountNames": ["default"], + "health": { + "workloadStatus": null, + "requests": { + "inbound": null, + "outbound": null, + "healthAnnotations": null + } + } + } + ], + "subServices": [ + { + "name": "travels", + "namespace": "", + "istioSidecar": false, + "cluster": "", + "istioAmbient": false, + "appLabel": false, + "additionalDetailSample": null, + "annotations": null, + "healthAnnotations": null, + "ports": { + "http": 8000 + }, + "labels": null, + "selector": null, + "istioReferences": null, + "kialiWizard": "", + "serviceRegistry": "", + "health": { + "requests": { + "inbound": null, + "outbound": null, + "healthAnnotations": null + } + } + } + ], + "health": { + "requests": { + "inbound": { + "http": { + "200": 0.7999999999999998 + } + }, + "outbound": {}, + "healthAnnotations": {} + } + }, + "validations": { + "gateway": { + "bookinfo-gateway.bookinfo": { + "name": "bookinfo-gateway", + "objectType": "gateway", + "valid": true, + "checks": [], + "references": null + } + }, + "service": { + "travels.travel-agency": { + "name": "travels", + "objectType": "service", + "valid": true, + "checks": [], + "references": null + } + }, + "virtualservice": { + "bookinfo.bookinfo": { + "name": "bookinfo", + "objectType": "virtualservice", + "valid": true, + "checks": [], + "references": null + } + }, + "workload": { + "cars-v1.travel-agency": { + "name": "cars-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "control.travel-control": { + "name": "control", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "details-v1.bookinfo": { + "name": "details-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "discounts-v1.travel-agency": { + "name": "discounts-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "flights-v1.travel-agency": { + "name": "flights-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "grafana.istio-system": { + "name": "grafana", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "hotels-v1.travel-agency": { + "name": "hotels-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "insurances-v1.travel-agency": { + "name": "insurances-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "istio-egressgateway.istio-system": { + "name": "istio-egressgateway", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "istio-ingressgateway.istio-system": { + "name": "istio-ingressgateway", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "istiod.istio-system": { + "name": "istiod", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "jaeger.istio-system": { + "name": "jaeger", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "kiali-traffic-generator.bookinfo": { + "name": "kiali-traffic-generator", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "kiali.istio-system": { + "name": "kiali", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "mysqldb-v1.travel-agency": { + "name": "mysqldb-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "productpage-v1.bookinfo": { + "name": "productpage-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "prometheus.istio-system": { + "name": "prometheus", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "ratings-v1.bookinfo": { + "name": "ratings-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "reviews-v1.bookinfo": { + "name": "reviews-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "reviews-v2.bookinfo": { + "name": "reviews-v2", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "reviews-v3.bookinfo": { + "name": "reviews-v3", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "travels-v1.travel-agency": { + "name": "travels-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "travels.travel-portal": { + "name": "travels", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "viaggi.travel-portal": { + "name": "viaggi", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "voyages.travel-portal": { + "name": "voyages", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + } + } + }, + "namespaceMTLS": { + "status": "MTLS_NOT_ENABLED", + "autoMTLSEnabled": true, + "minTLS": "" + } +} diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-control/apps.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-control/apps.json new file mode 100644 index 0000000000..c8c8508e2e --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-control/apps.json @@ -0,0 +1,39 @@ +{ + "namespace": { + "name": "travel-control", + "cluster": "", + "isAmbient": false, + "labels": null, + "annotations": null + }, + "cluster": "", + "applications": [ + { + "name": "control", + "cluster": "Kubernetes", + "istioSidecar": true, + "istioAmbient": false, + "labels": { + "app": "control", + "version": "v1" + }, + "istioReferences": [], + "health": { + "workloadStatuses": [ + { + "name": "control", + "desiredReplicas": 1, + "currentReplicas": 1, + "availableReplicas": 1, + "syncedProxies": 1 + } + ], + "requests": { + "inbound": {}, + "outbound": {}, + "healthAnnotations": {} + } + } + } + ] +} diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-control/apps/control.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-control/apps/control.json new file mode 100644 index 0000000000..aeac5b96ea --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-control/apps/control.json @@ -0,0 +1,54 @@ +{ + "namespace": { + "name": "travel-control", + "cluster": "Kubernetes", + "isAmbient": false, + "labels": { + "istio-injection": "enabled", + "kubernetes.io/metadata.name": "travel-control" + }, + "annotations": null + }, + "name": "control", + "cluster": "Kubernetes", + "workloads": [ + { + "workloadName": "control", + "istioSidecar": true, + "istioAmbient": false, + "labels": { + "app": "control", + "version": "v1" + }, + "serviceAccountNames": ["default"] + } + ], + "serviceNames": ["control"], + "runtimes": [ + { + "name": "", + "dashboardRefs": [ + { + "template": "envoy", + "title": "Envoy Metrics" + } + ] + } + ], + "health": { + "workloadStatuses": [ + { + "name": "control", + "desiredReplicas": 1, + "currentReplicas": 1, + "availableReplicas": 1, + "syncedProxies": 1 + } + ], + "requests": { + "inbound": {}, + "outbound": {}, + "healthAnnotations": {} + } + } +} diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-control/dashboard.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-control/dashboard.json new file mode 100644 index 0000000000..75e746ecd6 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-control/dashboard.json @@ -0,0 +1,158 @@ +{ + "name": "", + "title": "Inbound Metrics", + "charts": [ + { + "name": "Request volume", + "unit": "ops", + "spans": 3, + "startCollapsed": false, + "metrics": [], + "xAxis": null, + "error": "" + }, + { + "name": "Request duration", + "unit": "seconds", + "spans": 3, + "startCollapsed": false, + "metrics": [], + "xAxis": null, + "error": "" + }, + { + "name": "Request size", + "unit": "bytes", + "spans": 3, + "startCollapsed": false, + "metrics": [], + "xAxis": null, + "error": "" + }, + { + "name": "Response size", + "unit": "bytes", + "spans": 3, + "startCollapsed": false, + "metrics": [], + "xAxis": null, + "error": "" + }, + { + "name": "Request throughput", + "unit": "bitrate", + "spans": 3, + "startCollapsed": false, + "metrics": [], + "xAxis": null, + "error": "" + }, + { + "name": "Response throughput", + "unit": "bitrate", + "spans": 3, + "startCollapsed": false, + "metrics": [], + "xAxis": null, + "error": "" + }, + { + "name": "gRPC received", + "unit": "msgrate", + "spans": 3, + "startCollapsed": false, + "metrics": [], + "xAxis": null, + "error": "" + }, + { + "name": "gRPC sent", + "unit": "msgrate", + "spans": 3, + "startCollapsed": false, + "metrics": [], + "xAxis": null, + "error": "" + }, + { + "name": "TCP opened", + "unit": "connrate", + "spans": 3, + "startCollapsed": false, + "metrics": [], + "xAxis": null, + "error": "" + }, + { + "name": "TCP closed", + "unit": "connrate", + "spans": 3, + "startCollapsed": false, + "metrics": [], + "xAxis": null, + "error": "" + }, + { + "name": "TCP received", + "unit": "bitrate", + "spans": 3, + "startCollapsed": false, + "metrics": [], + "xAxis": null, + "error": "" + }, + { + "name": "TCP sent", + "unit": "bitrate", + "spans": 3, + "startCollapsed": false, + "metrics": [], + "xAxis": null, + "error": "" + } + ], + "aggregations": [ + { + "label": "destination_canonical_revision", + "displayName": "Local version", + "singleSelection": false + }, + { + "label": "source_workload_namespace", + "displayName": "Remote namespace", + "singleSelection": false + }, + { + "label": "source_canonical_service", + "displayName": "Remote app", + "singleSelection": false + }, + { + "label": "source_canonical_revision", + "displayName": "Remote version", + "singleSelection": false + }, + { + "label": "response_code", + "displayName": "Response code", + "singleSelection": false + }, + { + "label": "grpc_response_status", + "displayName": "GRPC status", + "singleSelection": false + }, + { + "label": "response_flags", + "displayName": "Response flags", + "singleSelection": false + }, + { + "label": "connection_security_policy", + "displayName": "Connection Security Policy", + "singleSelection": false + } + ], + "externalLinks": null, + "rows": 3 +} diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-control/health/app.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-control/health/app.json new file mode 100644 index 0000000000..79a6902cd0 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-control/health/app.json @@ -0,0 +1,18 @@ +{ + "control": { + "workloadStatuses": [ + { + "name": "control", + "desiredReplicas": 1, + "currentReplicas": 0, + "availableReplicas": 1, + "syncedProxies": 1 + } + ], + "requests": { + "inbound": {}, + "outbound": {}, + "healthAnnotations": {} + } + } +} diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-control/health/service.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-control/health/service.json new file mode 100644 index 0000000000..c3873c7c04 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-control/health/service.json @@ -0,0 +1,9 @@ +{ + "control": { + "requests": { + "inbound": {}, + "outbound": {}, + "healthAnnotations": {} + } + } +} diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-control/health/workload.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-control/health/workload.json new file mode 100644 index 0000000000..6b1c459332 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-control/health/workload.json @@ -0,0 +1,16 @@ +{ + "control": { + "workloadStatus": { + "name": "control", + "desiredReplicas": 1, + "currentReplicas": 1, + "availableReplicas": 1, + "syncedProxies": 1 + }, + "requests": { + "inbound": {}, + "outbound": {}, + "healthAnnotations": {} + } + } +} diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-control/istio_config.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-control/istio_config.json new file mode 100644 index 0000000000..14de4510c3 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-control/istio_config.json @@ -0,0 +1,193 @@ +{ + "namespace": { + "name": "travel-control", + "cluster": "", + "isAmbient": false, + "labels": null, + "annotations": null + }, + "destinationRules": [ + { + "kind": "DestinationRule", + "apiVersion": "networking.istio.io/v1beta1", + "metadata": { + "name": "control", + "namespace": "travel-control", + "uid": "a89f69da-5778-46be-b200-4085b6b4c356", + "resourceVersion": "811967", + "generation": 1, + "creationTimestamp": "2024-03-20T12:45:22Z", + "labels": { + "kiali_wizard": "request_routing" + }, + "managedFields": [ + { + "manager": "kiali", + "operation": "Update", + "apiVersion": "networking.istio.io/v1beta1", + "time": "2024-03-20T12:45:22Z", + "fieldsType": "FieldsV1", + "fieldsV1": { + "f:metadata": { + "f:labels": { + ".": {}, + "f:kiali_wizard": {} + } + }, + "f:spec": { + ".": {}, + "f:host": {}, + "f:subsets": {} + } + } + } + ] + }, + "spec": { + "host": "control.travel-control.svc.cluster.local", + "subsets": [ + { + "name": "v1", + "labels": { + "version": "v1" + } + } + ] + }, + "status": {} + } + ], + "envoyFilters": [], + "gateways": [ + { + "kind": "Gateway", + "apiVersion": "networking.istio.io/v1beta1", + "metadata": { + "name": "control-gateway", + "namespace": "travel-control", + "uid": "185675fa-6cca-45ab-a194-e64a57569452", + "resourceVersion": "812011", + "generation": 2, + "creationTimestamp": "2024-03-20T12:45:22Z", + "labels": { + "kiali_wizard": "request_routing" + }, + "managedFields": [ + { + "manager": "kiali", + "operation": "Update", + "apiVersion": "networking.istio.io/v1beta1", + "time": "2024-03-20T12:45:49Z", + "fieldsType": "FieldsV1", + "fieldsV1": { + "f:metadata": { + "f:labels": { + ".": {}, + "f:kiali_wizard": {} + } + }, + "f:spec": { + ".": {}, + "f:selector": { + ".": {}, + "f:istio": {} + }, + "f:servers": {} + } + } + } + ] + }, + "spec": { + "servers": [ + { + "port": { + "number": 8080, + "protocol": "HTTP", + "name": "http" + }, + "hosts": ["*"] + } + ], + "selector": { + "istio": "ingressgateway" + } + }, + "status": {} + } + ], + "serviceEntries": [], + "sidecars": [], + "virtualServices": [ + { + "kind": "VirtualService", + "apiVersion": "networking.istio.io/v1beta1", + "metadata": { + "name": "control", + "namespace": "travel-control", + "uid": "05468816-71ed-437d-9fc5-c0120d6ab61a", + "resourceVersion": "811969", + "generation": 1, + "creationTimestamp": "2024-03-20T12:45:22Z", + "labels": { + "kiali_wizard": "request_routing" + }, + "managedFields": [ + { + "manager": "kiali", + "operation": "Update", + "apiVersion": "networking.istio.io/v1beta1", + "time": "2024-03-20T12:45:22Z", + "fieldsType": "FieldsV1", + "fieldsV1": { + "f:metadata": { + "f:labels": { + ".": {}, + "f:kiali_wizard": {} + } + }, + "f:spec": { + ".": {}, + "f:gateways": {}, + "f:hosts": {}, + "f:http": {} + } + } + } + ] + }, + "spec": { + "hosts": ["*"], + "gateways": ["travel-control/control-gateway"], + "http": [ + { + "route": [ + { + "destination": { + "host": "control.travel-control.svc.cluster.local", + "subset": "v1" + }, + "weight": 100 + } + ] + } + ] + }, + "status": {} + } + ], + "workloadEntries": [], + "workloadGroups": [], + "wasmPlugins": [], + "telemetries": [], + "k8sGateways": [], + "k8sGRPCRoutes": [], + "k8sHTTPRoutes": [], + "k8sReferenceGrants": [], + "k8sTCPRoutes": [], + "k8sTLSRoutes": [], + "authorizationPolicies": [], + "peerAuthentications": [], + "requestAuthentications": [], + "validations": {} +} diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-control/istio_configs/destinationrules/control.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-control/istio_configs/destinationrules/control.json new file mode 100644 index 0000000000..09c1b5682c --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-control/istio_configs/destinationrules/control.json @@ -0,0 +1,85 @@ +{ + "namespace": { + "name": "travel-control", + "cluster": "", + "isAmbient": false, + "labels": null, + "annotations": null + }, + "objectType": "destinationrules", + "authorizationPolicy": null, + "destinationRule": { + "kind": "DestinationRule", + "apiVersion": "networking.istio.io/v1beta1", + "metadata": { + "name": "control", + "namespace": "travel-control", + "uid": "a89f69da-5778-46be-b200-4085b6b4c356", + "resourceVersion": "811967", + "generation": 1, + "creationTimestamp": "2024-03-20T12:45:22Z", + "labels": { + "kiali_wizard": "request_routing" + }, + "managedFields": [ + { + "manager": "kiali", + "operation": "Update", + "apiVersion": "networking.istio.io/v1beta1", + "time": "2024-03-20T12:45:22Z", + "fieldsType": "FieldsV1", + "fieldsV1": { + "f:metadata": { + "f:labels": { + ".": {}, + "f:kiali_wizard": {} + } + }, + "f:spec": { + ".": {}, + "f:host": {}, + "f:subsets": {} + } + } + } + ] + }, + "spec": { + "host": "control.travel-control.svc.cluster.local", + "subsets": [ + { + "name": "v1", + "labels": { + "version": "v1" + } + } + ] + }, + "status": {} + }, + "envoyFilter": null, + "gateway": null, + "peerAuthentication": null, + "requestAuthentication": null, + "serviceEntry": null, + "sidecar": null, + "virtualService": null, + "workloadEntry": null, + "workloadGroup": null, + "wasmPlugin": null, + "telemetry": null, + "k8sGateway": null, + "k8sGRPCRoute": null, + "k8sHTTPRoute": null, + "k8sReferenceGrant": null, + "k8sTCPRoute": null, + "k8sTLSRoute": null, + "permissions": { + "create": true, + "update": true, + "delete": true + }, + "validation": null, + "references": null, + "help": null +} diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-control/istio_configs/gateways/control-gateway.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-control/istio_configs/gateways/control-gateway.json new file mode 100644 index 0000000000..d1837c13ce --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-control/istio_configs/gateways/control-gateway.json @@ -0,0 +1,92 @@ +{ + "namespace": { + "name": "travel-control", + "cluster": "", + "isAmbient": false, + "labels": null, + "annotations": null + }, + "objectType": "gateways", + "authorizationPolicy": null, + "destinationRule": null, + "envoyFilter": null, + "gateway": { + "kind": "Gateway", + "apiVersion": "networking.istio.io/v1beta1", + "metadata": { + "name": "control-gateway", + "namespace": "travel-control", + "uid": "185675fa-6cca-45ab-a194-e64a57569452", + "resourceVersion": "812011", + "generation": 2, + "creationTimestamp": "2024-03-20T12:45:22Z", + "labels": { + "kiali_wizard": "request_routing" + }, + "managedFields": [ + { + "manager": "kiali", + "operation": "Update", + "apiVersion": "networking.istio.io/v1beta1", + "time": "2024-03-20T12:45:49Z", + "fieldsType": "FieldsV1", + "fieldsV1": { + "f:metadata": { + "f:labels": { + ".": {}, + "f:kiali_wizard": {} + } + }, + "f:spec": { + ".": {}, + "f:selector": { + ".": {}, + "f:istio": {} + }, + "f:servers": {} + } + } + } + ] + }, + "spec": { + "servers": [ + { + "port": { + "number": 8080, + "protocol": "HTTP", + "name": "http" + }, + "hosts": ["*"] + } + ], + "selector": { + "istio": "ingressgateway" + } + }, + "status": {} + }, + "peerAuthentication": null, + "requestAuthentication": null, + "serviceEntry": null, + "sidecar": null, + "virtualService": null, + "workloadEntry": null, + "workloadGroup": null, + "wasmPlugin": null, + "telemetry": null, + "k8sGateway": null, + "k8sGRPCRoute": null, + "k8sHTTPRoute": null, + "k8sReferenceGrant": null, + "k8sTCPRoute": null, + "k8sTLSRoute": null, + "permissions": { + "create": true, + "update": true, + "delete": true + }, + "validation": null, + "references": null, + "help": null +} diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-control/istio_configs/virtualservices/control.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-control/istio_configs/virtualservices/control.json new file mode 100644 index 0000000000..8a95459769 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-control/istio_configs/virtualservices/control.json @@ -0,0 +1,92 @@ +{ + "namespace": { + "name": "travel-control", + "cluster": "", + "isAmbient": false, + "labels": null, + "annotations": null + }, + "objectType": "virtualservices", + "authorizationPolicy": null, + "destinationRule": null, + "envoyFilter": null, + "gateway": null, + "peerAuthentication": null, + "requestAuthentication": null, + "serviceEntry": null, + "sidecar": null, + "virtualService": { + "kind": "VirtualService", + "apiVersion": "networking.istio.io/v1beta1", + "metadata": { + "name": "control", + "namespace": "travel-control", + "uid": "05468816-71ed-437d-9fc5-c0120d6ab61a", + "resourceVersion": "811969", + "generation": 1, + "creationTimestamp": "2024-03-20T12:45:22Z", + "labels": { + "kiali_wizard": "request_routing" + }, + "managedFields": [ + { + "manager": "kiali", + "operation": "Update", + "apiVersion": "networking.istio.io/v1beta1", + "time": "2024-03-20T12:45:22Z", + "fieldsType": "FieldsV1", + "fieldsV1": { + "f:metadata": { + "f:labels": { + ".": {}, + "f:kiali_wizard": {} + } + }, + "f:spec": { + ".": {}, + "f:gateways": {}, + "f:hosts": {}, + "f:http": {} + } + } + } + ] + }, + "spec": { + "hosts": ["*"], + "gateways": ["travel-control/control-gateway"], + "http": [ + { + "route": [ + { + "destination": { + "host": "control.travel-control.svc.cluster.local", + "subset": "v1" + }, + "weight": 100 + } + ] + } + ] + }, + "status": {} + }, + "workloadEntry": null, + "workloadGroup": null, + "wasmPlugin": null, + "telemetry": null, + "k8sGateway": null, + "k8sGRPCRoute": null, + "k8sHTTPRoute": null, + "k8sReferenceGrant": null, + "k8sTCPRoute": null, + "k8sTLSRoute": null, + "permissions": { + "create": true, + "update": true, + "delete": true + }, + "validation": null, + "references": null, + "help": null +} diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-control/metrics/inbound/metrics_inbound_120.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-control/metrics/inbound/metrics_inbound_120.json new file mode 100644 index 0000000000..c7215c95e7 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-control/metrics/inbound/metrics_inbound_120.json @@ -0,0 +1 @@ +{ "request_count": null, "request_error_count": null } diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-control/metrics/inbound/metrics_inbound_1800.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-control/metrics/inbound/metrics_inbound_1800.json new file mode 100644 index 0000000000..c7215c95e7 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-control/metrics/inbound/metrics_inbound_1800.json @@ -0,0 +1 @@ +{ "request_count": null, "request_error_count": null } diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-control/metrics/inbound/metrics_inbound_300.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-control/metrics/inbound/metrics_inbound_300.json new file mode 100644 index 0000000000..c7215c95e7 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-control/metrics/inbound/metrics_inbound_300.json @@ -0,0 +1 @@ +{ "request_count": null, "request_error_count": null } diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-control/metrics/inbound/metrics_inbound_3600.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-control/metrics/inbound/metrics_inbound_3600.json new file mode 100644 index 0000000000..c7215c95e7 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-control/metrics/inbound/metrics_inbound_3600.json @@ -0,0 +1 @@ +{ "request_count": null, "request_error_count": null } diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-control/metrics/inbound/metrics_inbound_60.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-control/metrics/inbound/metrics_inbound_60.json new file mode 100644 index 0000000000..c7215c95e7 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-control/metrics/inbound/metrics_inbound_60.json @@ -0,0 +1 @@ +{ "request_count": null, "request_error_count": null } diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-control/metrics/inbound/metrics_inbound_600.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-control/metrics/inbound/metrics_inbound_600.json new file mode 100644 index 0000000000..c7215c95e7 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-control/metrics/inbound/metrics_inbound_600.json @@ -0,0 +1 @@ +{ "request_count": null, "request_error_count": null } diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-control/metrics/index.ts b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-control/metrics/index.ts new file mode 100644 index 0000000000..80b1a03357 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-control/metrics/index.ts @@ -0,0 +1,51 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import inbound60 from './inbound/metrics_inbound_60.json'; +import inbound120 from './inbound/metrics_inbound_120.json'; +import inbound300 from './inbound/metrics_inbound_300.json'; +import inbound600 from './inbound/metrics_inbound_600.json'; +import inbound1800 from './inbound/metrics_inbound_1800.json'; +import inbound3600 from './inbound/metrics_inbound_3600.json'; +/* Outbound Metrics */ + +import outbound60 from './outbound/metrics_outbound_60.json'; +import outbound120 from './outbound/metrics_outbound_120.json'; +import outbound300 from './outbound/metrics_outbound_300.json'; +import outbound600 from './outbound/metrics_outbound_600.json'; +import outbound1800 from './outbound/metrics_outbound_1800.json'; +import outbound3600 from './outbound/metrics_outbound_3600.json'; + +export const travelControlMetrics = { + inbound: { + 60: inbound60, + 120: inbound120, + 300: inbound300, + 600: inbound600, + 1800: inbound1800, + 3600: inbound3600, + }, + outbound: { + 60: outbound60, + 120: outbound120, + 300: outbound300, + 600: outbound600, + 1800: outbound1800, + 3600: outbound3600, + }, +}; + +export default travelControlMetrics; diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-control/metrics/outbound/metrics_outbound_120.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-control/metrics/outbound/metrics_outbound_120.json new file mode 100644 index 0000000000..c7215c95e7 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-control/metrics/outbound/metrics_outbound_120.json @@ -0,0 +1 @@ +{ "request_count": null, "request_error_count": null } diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-control/metrics/outbound/metrics_outbound_1800.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-control/metrics/outbound/metrics_outbound_1800.json new file mode 100644 index 0000000000..c7215c95e7 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-control/metrics/outbound/metrics_outbound_1800.json @@ -0,0 +1 @@ +{ "request_count": null, "request_error_count": null } diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-control/metrics/outbound/metrics_outbound_300.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-control/metrics/outbound/metrics_outbound_300.json new file mode 100644 index 0000000000..c7215c95e7 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-control/metrics/outbound/metrics_outbound_300.json @@ -0,0 +1 @@ +{ "request_count": null, "request_error_count": null } diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-control/metrics/outbound/metrics_outbound_3600.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-control/metrics/outbound/metrics_outbound_3600.json new file mode 100644 index 0000000000..c7215c95e7 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-control/metrics/outbound/metrics_outbound_3600.json @@ -0,0 +1 @@ +{ "request_count": null, "request_error_count": null } diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-control/metrics/outbound/metrics_outbound_60.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-control/metrics/outbound/metrics_outbound_60.json new file mode 100644 index 0000000000..c7215c95e7 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-control/metrics/outbound/metrics_outbound_60.json @@ -0,0 +1 @@ +{ "request_count": null, "request_error_count": null } diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-control/metrics/outbound/metrics_outbound_600.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-control/metrics/outbound/metrics_outbound_600.json new file mode 100644 index 0000000000..c7215c95e7 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-control/metrics/outbound/metrics_outbound_600.json @@ -0,0 +1 @@ +{ "request_count": null, "request_error_count": null } diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-control/services.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-control/services.json new file mode 100644 index 0000000000..61edf936ad --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-control/services.json @@ -0,0 +1,50 @@ +{ + "namespace": { + "name": "travel-control", + "cluster": "", + "isAmbient": false, + "labels": null, + "annotations": null + }, + "services": [ + { + "name": "control", + "namespace": "travel-control", + "istioSidecar": true, + "cluster": "Kubernetes", + "istioAmbient": false, + "appLabel": true, + "additionalDetailSample": null, + "annotations": null, + "healthAnnotations": {}, + "ports": null, + "labels": { + "app": "control" + }, + "selector": { + "app": "control" + }, + "istioReferences": [], + "kialiWizard": "", + "serviceRegistry": "Kubernetes", + "health": { + "requests": { + "inbound": {}, + "outbound": {}, + "healthAnnotations": {} + } + } + } + ], + "validations": { + "service": { + "control.travel-control": { + "name": "control", + "objectType": "service", + "valid": true, + "checks": [], + "references": null + } + } + } +} diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-control/services/control.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-control/services/control.json new file mode 100644 index 0000000000..f0f2980d6c --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-control/services/control.json @@ -0,0 +1,347 @@ +{ + "cluster": "Kubernetes", + "destinationRules": [], + "endpoints": [ + { + "addresses": [ + { + "kind": "Pod", + "name": "control-746644dd7d-2gvsd", + "ip": "10.244.0.42", + "port": 0 + } + ], + "ports": [ + { + "name": "http", + "protocol": "TCP", + "port": 8080 + } + ] + } + ], + "istioPermissions": { + "create": true, + "update": true, + "delete": true + }, + "istioSidecar": true, + "k8sHTTPRoutes": [], + "k8sReferenceGrants": null, + "service": { + "name": "control", + "createdAt": "2024-02-27T13:11:53Z", + "resourceVersion": "53744", + "namespace": { + "name": "travel-control", + "cluster": "", + "isAmbient": false, + "labels": null, + "annotations": null + }, + "labels": { + "app": "control" + }, + "selectors": { + "app": "control" + }, + "type": "ClusterIP", + "ip": "10.97.3.6", + "ports": [ + { + "name": "http", + "protocol": "TCP", + "port": 8080 + } + ], + "externalName": "", + "annotations": { + "kubectl.kubernetes.io/last-applied-configuration": "{\"apiVersion\":\"v1\",\"kind\":\"Service\",\"metadata\":{\"annotations\":{},\"labels\":{\"app\":\"control\"},\"name\":\"control\",\"namespace\":\"travel-control\"},\"spec\":{\"ports\":[{\"name\":\"http\",\"port\":8080}],\"selector\":{\"app\":\"control\"}}}\n" + }, + "healthAnnotations": {}, + "additionalDetails": [] + }, + "serviceEntries": null, + "virtualServices": [], + "workloads": [ + { + "name": "control", + "cluster": "Kubernetes", + "type": "Deployment", + "createdAt": "2024-02-27T13:11:53Z", + "resourceVersion": "53917", + "istioSidecar": true, + "istioAmbient": false, + "additionalDetailSample": null, + "labels": { + "app": "control", + "version": "v1" + }, + "appLabel": true, + "versionLabel": true, + "podCount": 1, + "annotations": { + "deployment.kubernetes.io/revision": "1", + "kubectl.kubernetes.io/last-applied-configuration": "{\"apiVersion\":\"apps/v1\",\"kind\":\"Deployment\",\"metadata\":{\"annotations\":{},\"name\":\"control\",\"namespace\":\"travel-control\"},\"spec\":{\"replicas\":1,\"selector\":{\"matchLabels\":{\"app\":\"control\",\"version\":\"v1\"}},\"template\":{\"metadata\":{\"annotations\":{\"readiness.status.sidecar.istio.io/applicationPorts\":\"\"},\"labels\":{\"app\":\"control\",\"version\":\"v1\"}},\"spec\":{\"containers\":[{\"env\":[{\"name\":\"PORTAL_SERVICES\",\"value\":\"voyages.fr;http://voyages.travel-portal:8000,viaggi.it;http://viaggi.travel-portal:8000,travels.uk;http://travels.travel-portal:8000\"}],\"image\":\"quay.io/kiali/demo_travels_control:v1\",\"imagePullPolicy\":\"IfNotPresent\",\"name\":\"control\",\"ports\":[{\"containerPort\":8080}],\"securityContext\":{\"allowPrivilegeEscalation\":false,\"capabilities\":{\"drop\":[\"ALL\"]},\"privileged\":false,\"readOnlyRootFilesystem\":true}}]}}}}\n" + }, + "healthAnnotations": {}, + "istioReferences": [], + "dashboardAnnotations": null, + "serviceAccountNames": ["default"], + "health": { + "workloadStatus": null, + "requests": { + "inbound": null, + "outbound": null, + "healthAnnotations": null + } + } + } + ], + "health": { + "requests": { + "inbound": {}, + "outbound": {}, + "healthAnnotations": {} + } + }, + "namespaceMTLS": { + "status": "MTLS_NOT_ENABLED", + "autoMTLSEnabled": true, + "minTLS": "" + }, + "subServices": [ + { + "name": "control", + "namespace": "", + "istioSidecar": false, + "cluster": "", + "istioAmbient": false, + "appLabel": false, + "additionalDetailSample": null, + "annotations": null, + "healthAnnotations": null, + "ports": { + "http": 8080 + }, + "labels": null, + "selector": null, + "istioReferences": null, + "kialiWizard": "", + "serviceRegistry": "", + "health": { + "requests": { + "inbound": null, + "outbound": null, + "healthAnnotations": null + } + } + } + ], + "validations": { + "gateway": { + "bookinfo-gateway.bookinfo": { + "name": "bookinfo-gateway", + "objectType": "gateway", + "valid": true, + "checks": [], + "references": null + } + }, + "service": { + "control.travel-control": { + "name": "control", + "objectType": "service", + "valid": true, + "checks": [], + "references": null + } + }, + "virtualservice": { + "bookinfo.bookinfo": { + "name": "bookinfo", + "objectType": "virtualservice", + "valid": true, + "checks": [], + "references": null + } + }, + "workload": { + "cars-v1.travel-agency": { + "name": "cars-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "control.travel-control": { + "name": "control", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "details-v1.bookinfo": { + "name": "details-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "discounts-v1.travel-agency": { + "name": "discounts-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "flights-v1.travel-agency": { + "name": "flights-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "grafana.istio-system": { + "name": "grafana", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "hotels-v1.travel-agency": { + "name": "hotels-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "insurances-v1.travel-agency": { + "name": "insurances-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "istio-egressgateway.istio-system": { + "name": "istio-egressgateway", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "istio-ingressgateway.istio-system": { + "name": "istio-ingressgateway", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "istiod.istio-system": { + "name": "istiod", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "jaeger.istio-system": { + "name": "jaeger", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "kiali-traffic-generator.bookinfo": { + "name": "kiali-traffic-generator", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "kiali.istio-system": { + "name": "kiali", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "mysqldb-v1.travel-agency": { + "name": "mysqldb-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "productpage-v1.bookinfo": { + "name": "productpage-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "prometheus.istio-system": { + "name": "prometheus", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "ratings-v1.bookinfo": { + "name": "ratings-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "reviews-v1.bookinfo": { + "name": "reviews-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "reviews-v2.bookinfo": { + "name": "reviews-v2", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "reviews-v3.bookinfo": { + "name": "reviews-v3", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "travels-v1.travel-agency": { + "name": "travels-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "travels.travel-portal": { + "name": "travels", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "viaggi.travel-portal": { + "name": "viaggi", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "voyages.travel-portal": { + "name": "voyages", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + } + } + } +} diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-control/spans.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-control/spans.json new file mode 100644 index 0000000000..fe51488c70 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-control/spans.json @@ -0,0 +1 @@ +[] diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-control/tls.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-control/tls.json new file mode 100644 index 0000000000..ea7db32cbb --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-control/tls.json @@ -0,0 +1 @@ +{ "status": "MTLS_NOT_ENABLED", "autoMTLSEnabled": true, "minTLS": "" } diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-control/workloads.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-control/workloads.json new file mode 100644 index 0000000000..8f788699cd --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-control/workloads.json @@ -0,0 +1,61 @@ +{ + "namespace": { + "name": "travel-control", + "cluster": "", + "isAmbient": false, + "labels": null, + "annotations": null + }, + "workloads": [ + { + "name": "control", + "cluster": "Kubernetes", + "type": "Deployment", + "createdAt": "2024-01-31T14:07:06Z", + "resourceVersion": "81463", + "istioSidecar": true, + "istioAmbient": false, + "additionalDetailSample": null, + "labels": { + "app": "control", + "version": "v1" + }, + "appLabel": true, + "versionLabel": true, + "podCount": 1, + "annotations": { + "deployment.kubernetes.io/revision": "1", + "kubectl.kubernetes.io/last-applied-configuration": "{\"apiVersion\":\"apps/v1\",\"kind\":\"Deployment\",\"metadata\":{\"annotations\":{},\"name\":\"control\",\"namespace\":\"travel-control\"},\"spec\":{\"replicas\":1,\"selector\":{\"matchLabels\":{\"app\":\"control\",\"version\":\"v1\"}},\"template\":{\"metadata\":{\"annotations\":{\"readiness.status.sidecar.istio.io/applicationPorts\":\"\"},\"labels\":{\"app\":\"control\",\"version\":\"v1\"}},\"spec\":{\"containers\":[{\"env\":[{\"name\":\"PORTAL_SERVICES\",\"value\":\"voyages.fr;http://voyages.travel-portal:8000,viaggi.it;http://viaggi.travel-portal:8000,travels.uk;http://travels.travel-portal:8000\"}],\"image\":\"quay.io/kiali/demo_travels_control:v1\",\"imagePullPolicy\":\"IfNotPresent\",\"name\":\"control\",\"ports\":[{\"containerPort\":8080}],\"securityContext\":{\"allowPrivilegeEscalation\":false,\"capabilities\":{\"drop\":[\"ALL\"]},\"privileged\":false,\"readOnlyRootFilesystem\":true}}]}}}}\n" + }, + "healthAnnotations": {}, + "istioReferences": [], + "dashboardAnnotations": null, + "serviceAccountNames": ["default"], + "health": { + "workloadStatus": { + "name": "control", + "desiredReplicas": 1, + "currentReplicas": 1, + "availableReplicas": 1, + "syncedProxies": 1 + }, + "requests": { + "inbound": {}, + "outbound": {}, + "healthAnnotations": {} + } + } + } + ], + "validations": { + "workload": { + "control.travel-control": { + "name": "control", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + } + } + } +} diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-control/workloads/control.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-control/workloads/control.json new file mode 100644 index 0000000000..c8f50fb974 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-control/workloads/control.json @@ -0,0 +1,190 @@ +{ + "name": "control", + "cluster": "Kubernetes", + "type": "Deployment", + "createdAt": "2024-02-16T11:27:39Z", + "resourceVersion": "56909", + "istioSidecar": true, + "istioAmbient": false, + "additionalDetailSample": null, + "labels": { + "app": "control", + "version": "v1" + }, + "appLabel": true, + "versionLabel": true, + "podCount": 0, + "annotations": { + "deployment.kubernetes.io/revision": "1", + "kubectl.kubernetes.io/last-applied-configuration": "{\"apiVersion\":\"apps/v1\",\"kind\":\"Deployment\",\"metadata\":{\"annotations\":{},\"name\":\"control\",\"namespace\":\"travel-control\"},\"spec\":{\"replicas\":1,\"selector\":{\"matchLabels\":{\"app\":\"control\",\"version\":\"v1\"}},\"template\":{\"metadata\":{\"annotations\":{\"readiness.status.sidecar.istio.io/applicationPorts\":\"\"},\"labels\":{\"app\":\"control\",\"version\":\"v1\"}},\"spec\":{\"containers\":[{\"env\":[{\"name\":\"PORTAL_SERVICES\",\"value\":\"voyages.fr;http://voyages.travel-portal:8000,viaggi.it;http://viaggi.travel-portal:8000,travels.uk;http://travels.travel-portal:8000\"}],\"image\":\"quay.io/kiali/demo_travels_control:v1\",\"imagePullPolicy\":\"IfNotPresent\",\"name\":\"control\",\"ports\":[{\"containerPort\":8080}],\"securityContext\":{\"allowPrivilegeEscalation\":false,\"capabilities\":{\"drop\":[\"ALL\"]},\"privileged\":false,\"readOnlyRootFilesystem\":true}}]}}}}\n" + }, + "healthAnnotations": {}, + "istioReferences": null, + "dashboardAnnotations": {}, + "serviceAccountNames": null, + "desiredReplicas": 1, + "currentReplicas": 1, + "availableReplicas": 1, + "pods": [ + { + "name": "control-746644dd7d-sqpw4", + "labels": { + "app": "control", + "pod-template-hash": "746644dd7d", + "security.istio.io/tlsMode": "istio", + "service.istio.io/canonical-name": "control", + "service.istio.io/canonical-revision": "v1", + "version": "v1" + }, + "createdAt": "2024-02-16T11:27:39Z", + "createdBy": [ + { + "name": "control-746644dd7d", + "kind": "ReplicaSet" + } + ], + "containers": [ + { + "name": "control", + "image": "quay.io/kiali/demo_travels_control:v1", + "isProxy": false, + "isReady": true, + "isAmbient": false + } + ], + "istioContainers": [ + { + "name": "istio-proxy", + "image": "gcr.io/istio-release/proxyv2:1.20.1", + "isProxy": true, + "isReady": true, + "isAmbient": false + } + ], + "istioInitContainers": [ + { + "name": "istio-init", + "image": "gcr.io/istio-release/proxyv2:1.20.1", + "isProxy": true, + "isReady": true, + "isAmbient": false + } + ], + "status": "Running", + "statusMessage": "", + "statusReason": "", + "appLabel": true, + "versionLabel": true, + "annotations": { + "istio.io/rev": "default", + "kubectl.kubernetes.io/default-container": "control", + "kubectl.kubernetes.io/default-logs-container": "control", + "prometheus.io/path": "/stats/prometheus", + "prometheus.io/port": "15020", + "prometheus.io/scrape": "true", + "readiness.status.sidecar.istio.io/applicationPorts": "", + "sidecar.istio.io/status": "{\"initContainers\":[\"istio-init\"],\"containers\":[\"istio-proxy\"],\"volumes\":[\"workload-socket\",\"credential-socket\",\"workload-certs\",\"istio-envoy\",\"istio-data\",\"istio-podinfo\",\"istio-token\",\"istiod-ca-cert\"],\"imagePullSecrets\":null,\"revision\":\"default\"}" + }, + "proxyStatus": { + "CDS": "Synced", + "EDS": "Synced", + "LDS": "Synced", + "RDS": "Synced" + }, + "serviceAccountName": "default" + } + ], + "services": [ + { + "name": "control", + "namespace": "travel-control", + "istioSidecar": true, + "cluster": "Kubernetes", + "istioAmbient": false, + "appLabel": true, + "additionalDetailSample": null, + "annotations": null, + "healthAnnotations": {}, + "ports": null, + "labels": { + "app": "control" + }, + "selector": { + "app": "control" + }, + "istioReferences": [], + "kialiWizard": "", + "serviceRegistry": "Kubernetes", + "health": { + "requests": { + "inbound": {}, + "outbound": {}, + "healthAnnotations": {} + } + } + } + ], + "runtimes": [ + { + "name": "", + "dashboardRefs": [ + { + "template": "envoy", + "title": "Envoy Metrics" + } + ] + } + ], + "additionalDetails": [], + "validations": { + "gateway": { + "bookinfo-gateway.bookinfo": { + "name": "bookinfo-gateway", + "objectType": "gateway", + "valid": false, + "checks": [ + { + "code": "KIA0302", + "message": "No matching workload found for gateway selector in this namespace", + "severity": "warning", + "path": "spec/selector" + } + ], + "references": null + } + }, + "virtualservice": { + "bookinfo.bookinfo": { + "name": "bookinfo", + "objectType": "virtualservice", + "valid": true, + "checks": [], + "references": null + } + }, + "workload": { + "control.travel-control": { + "name": "control", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + } + } + }, + "waypointWorkloads": null, + "health": { + "workloadStatus": { + "name": "control", + "desiredReplicas": 1, + "currentReplicas": 1, + "availableReplicas": 1, + "syncedProxies": 1 + }, + "requests": { + "inbound": {}, + "outbound": {}, + "healthAnnotations": {} + } + } +} diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-portal/apps.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-portal/apps.json new file mode 100644 index 0000000000..b6962fc094 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-portal/apps.json @@ -0,0 +1,105 @@ +{ + "namespace": { + "name": "travel-portal", + "cluster": "", + "isAmbient": false, + "labels": null, + "annotations": null + }, + "cluster": "", + "applications": [ + { + "name": "travels", + "cluster": "Kubernetes", + "istioSidecar": true, + "istioAmbient": false, + "labels": { + "app": "travels", + "version": "v1" + }, + "istioReferences": [], + "health": { + "workloadStatuses": [ + { + "name": "travels", + "desiredReplicas": 1, + "currentReplicas": 1, + "availableReplicas": 1, + "syncedProxies": 1 + } + ], + "requests": { + "inbound": {}, + "outbound": { + "http": { + "200": 0.17823555555555556 + } + }, + "healthAnnotations": {} + } + } + }, + { + "name": "viaggi", + "cluster": "Kubernetes", + "istioSidecar": true, + "istioAmbient": false, + "labels": { + "app": "viaggi", + "version": "v1" + }, + "istioReferences": [], + "health": { + "workloadStatuses": [ + { + "name": "viaggi", + "desiredReplicas": 1, + "currentReplicas": 1, + "availableReplicas": 1, + "syncedProxies": 1 + } + ], + "requests": { + "inbound": {}, + "outbound": { + "http": { + "200": 0.2666666666666666 + } + }, + "healthAnnotations": {} + } + } + }, + { + "name": "voyages", + "cluster": "Kubernetes", + "istioSidecar": true, + "istioAmbient": false, + "labels": { + "app": "voyages", + "version": "v1" + }, + "istioReferences": [], + "health": { + "workloadStatuses": [ + { + "name": "voyages", + "desiredReplicas": 1, + "currentReplicas": 1, + "availableReplicas": 1, + "syncedProxies": 1 + } + ], + "requests": { + "inbound": {}, + "outbound": { + "http": { + "200": 0.23781333333333332 + } + }, + "healthAnnotations": {} + } + } + } + ] +} diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-portal/apps/travels.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-portal/apps/travels.json new file mode 100644 index 0000000000..06f6e061cc --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-portal/apps/travels.json @@ -0,0 +1,58 @@ +{ + "namespace": { + "name": "travel-portal", + "cluster": "Kubernetes", + "isAmbient": false, + "labels": { + "istio-injection": "enabled", + "kubernetes.io/metadata.name": "travel-portal" + }, + "annotations": null + }, + "name": "travels", + "cluster": "Kubernetes", + "workloads": [ + { + "workloadName": "travels", + "istioSidecar": true, + "istioAmbient": false, + "labels": { + "app": "travels", + "version": "v1" + }, + "serviceAccountNames": ["default"] + } + ], + "serviceNames": ["travels"], + "runtimes": [ + { + "name": "", + "dashboardRefs": [ + { + "template": "envoy", + "title": "Envoy Metrics" + } + ] + } + ], + "health": { + "workloadStatuses": [ + { + "name": "travels", + "desiredReplicas": 1, + "currentReplicas": 1, + "availableReplicas": 1, + "syncedProxies": 1 + } + ], + "requests": { + "inbound": {}, + "outbound": { + "http": { + "200": 0.2666666666666666 + } + }, + "healthAnnotations": {} + } + } +} diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-portal/apps/viaggi.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-portal/apps/viaggi.json new file mode 100644 index 0000000000..b149501d58 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-portal/apps/viaggi.json @@ -0,0 +1,58 @@ +{ + "namespace": { + "name": "travel-portal", + "cluster": "Kubernetes", + "isAmbient": false, + "labels": { + "istio-injection": "enabled", + "kubernetes.io/metadata.name": "travel-portal" + }, + "annotations": null + }, + "name": "viaggi", + "cluster": "Kubernetes", + "workloads": [ + { + "workloadName": "viaggi", + "istioSidecar": true, + "istioAmbient": false, + "labels": { + "app": "viaggi", + "version": "v1" + }, + "serviceAccountNames": ["default"] + } + ], + "serviceNames": ["viaggi"], + "runtimes": [ + { + "name": "", + "dashboardRefs": [ + { + "template": "envoy", + "title": "Envoy Metrics" + } + ] + } + ], + "health": { + "workloadStatuses": [ + { + "name": "viaggi", + "desiredReplicas": 1, + "currentReplicas": 1, + "availableReplicas": 1, + "syncedProxies": 1 + } + ], + "requests": { + "inbound": {}, + "outbound": { + "http": { + "200": 0.2666666666666666 + } + }, + "healthAnnotations": {} + } + } +} diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-portal/apps/voyages.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-portal/apps/voyages.json new file mode 100644 index 0000000000..76a5ac5bb2 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-portal/apps/voyages.json @@ -0,0 +1,58 @@ +{ + "namespace": { + "name": "travel-portal", + "cluster": "Kubernetes", + "isAmbient": false, + "labels": { + "istio-injection": "enabled", + "kubernetes.io/metadata.name": "travel-portal" + }, + "annotations": null + }, + "name": "voyages", + "cluster": "Kubernetes", + "workloads": [ + { + "workloadName": "voyages", + "istioSidecar": true, + "istioAmbient": false, + "labels": { + "app": "voyages", + "version": "v1" + }, + "serviceAccountNames": ["default"] + } + ], + "serviceNames": ["voyages"], + "runtimes": [ + { + "name": "", + "dashboardRefs": [ + { + "template": "envoy", + "title": "Envoy Metrics" + } + ] + } + ], + "health": { + "workloadStatuses": [ + { + "name": "voyages", + "desiredReplicas": 1, + "currentReplicas": 1, + "availableReplicas": 1, + "syncedProxies": 1 + } + ], + "requests": { + "inbound": {}, + "outbound": { + "http": { + "200": 0.2666666666666666 + } + }, + "healthAnnotations": {} + } + } +} diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-portal/dashboard.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-portal/dashboard.json new file mode 100644 index 0000000000..75e746ecd6 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-portal/dashboard.json @@ -0,0 +1,158 @@ +{ + "name": "", + "title": "Inbound Metrics", + "charts": [ + { + "name": "Request volume", + "unit": "ops", + "spans": 3, + "startCollapsed": false, + "metrics": [], + "xAxis": null, + "error": "" + }, + { + "name": "Request duration", + "unit": "seconds", + "spans": 3, + "startCollapsed": false, + "metrics": [], + "xAxis": null, + "error": "" + }, + { + "name": "Request size", + "unit": "bytes", + "spans": 3, + "startCollapsed": false, + "metrics": [], + "xAxis": null, + "error": "" + }, + { + "name": "Response size", + "unit": "bytes", + "spans": 3, + "startCollapsed": false, + "metrics": [], + "xAxis": null, + "error": "" + }, + { + "name": "Request throughput", + "unit": "bitrate", + "spans": 3, + "startCollapsed": false, + "metrics": [], + "xAxis": null, + "error": "" + }, + { + "name": "Response throughput", + "unit": "bitrate", + "spans": 3, + "startCollapsed": false, + "metrics": [], + "xAxis": null, + "error": "" + }, + { + "name": "gRPC received", + "unit": "msgrate", + "spans": 3, + "startCollapsed": false, + "metrics": [], + "xAxis": null, + "error": "" + }, + { + "name": "gRPC sent", + "unit": "msgrate", + "spans": 3, + "startCollapsed": false, + "metrics": [], + "xAxis": null, + "error": "" + }, + { + "name": "TCP opened", + "unit": "connrate", + "spans": 3, + "startCollapsed": false, + "metrics": [], + "xAxis": null, + "error": "" + }, + { + "name": "TCP closed", + "unit": "connrate", + "spans": 3, + "startCollapsed": false, + "metrics": [], + "xAxis": null, + "error": "" + }, + { + "name": "TCP received", + "unit": "bitrate", + "spans": 3, + "startCollapsed": false, + "metrics": [], + "xAxis": null, + "error": "" + }, + { + "name": "TCP sent", + "unit": "bitrate", + "spans": 3, + "startCollapsed": false, + "metrics": [], + "xAxis": null, + "error": "" + } + ], + "aggregations": [ + { + "label": "destination_canonical_revision", + "displayName": "Local version", + "singleSelection": false + }, + { + "label": "source_workload_namespace", + "displayName": "Remote namespace", + "singleSelection": false + }, + { + "label": "source_canonical_service", + "displayName": "Remote app", + "singleSelection": false + }, + { + "label": "source_canonical_revision", + "displayName": "Remote version", + "singleSelection": false + }, + { + "label": "response_code", + "displayName": "Response code", + "singleSelection": false + }, + { + "label": "grpc_response_status", + "displayName": "GRPC status", + "singleSelection": false + }, + { + "label": "response_flags", + "displayName": "Response flags", + "singleSelection": false + }, + { + "label": "connection_security_policy", + "displayName": "Connection Security Policy", + "singleSelection": false + } + ], + "externalLinks": null, + "rows": 3 +} diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-portal/health/app.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-portal/health/app.json new file mode 100644 index 0000000000..bd0b97a47f --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-portal/health/app.json @@ -0,0 +1,66 @@ +{ + "travels": { + "workloadStatuses": [ + { + "name": "travels", + "desiredReplicas": 1, + "currentReplicas": 1, + "availableReplicas": 1, + "syncedProxies": 1 + } + ], + "requests": { + "inbound": { + "http": { + "200": 0.7885940361045931 + } + }, + "outbound": { + "http": { + "200": 0.2620244359339096 + } + }, + "healthAnnotations": {} + } + }, + "viaggi": { + "workloadStatuses": [ + { + "name": "viaggi", + "desiredReplicas": 1, + "currentReplicas": 1, + "availableReplicas": 1, + "syncedProxies": 1 + } + ], + "requests": { + "inbound": {}, + "outbound": { + "http": { + "200": 0.26284883186391517 + } + }, + "healthAnnotations": {} + } + }, + "voyages": { + "workloadStatuses": [ + { + "name": "voyages", + "desiredReplicas": 1, + "currentReplicas": 1, + "availableReplicas": 1, + "syncedProxies": 1 + } + ], + "requests": { + "inbound": {}, + "outbound": { + "http": { + "200": 0.26372076830676827 + } + }, + "healthAnnotations": {} + } + } +} diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-portal/health/service.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-portal/health/service.json new file mode 100644 index 0000000000..bf448926fc --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-portal/health/service.json @@ -0,0 +1,23 @@ +{ + "travels": { + "requests": { + "inbound": {}, + "outbound": {}, + "healthAnnotations": {} + } + }, + "viaggi": { + "requests": { + "inbound": {}, + "outbound": {}, + "healthAnnotations": {} + } + }, + "voyages": { + "requests": { + "inbound": {}, + "outbound": {}, + "healthAnnotations": {} + } + } +} diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-portal/health/workload.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-portal/health/workload.json new file mode 100644 index 0000000000..db0f480e3d --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-portal/health/workload.json @@ -0,0 +1,44 @@ +{ + "travels": { + "workloadStatus": { + "name": "travels", + "desiredReplicas": 1, + "currentReplicas": 1, + "availableReplicas": 1, + "syncedProxies": 1 + }, + "requests": { + "inbound": {}, + "outbound": {}, + "healthAnnotations": {} + } + }, + "viaggi": { + "workloadStatus": { + "name": "viaggi", + "desiredReplicas": 1, + "currentReplicas": 1, + "availableReplicas": 1, + "syncedProxies": 1 + }, + "requests": { + "inbound": {}, + "outbound": {}, + "healthAnnotations": {} + } + }, + "voyages": { + "workloadStatus": { + "name": "voyages", + "desiredReplicas": 1, + "currentReplicas": 1, + "availableReplicas": 1, + "syncedProxies": 1 + }, + "requests": { + "inbound": {}, + "outbound": {}, + "healthAnnotations": {} + } + } +} diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-portal/istio_config.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-portal/istio_config.json new file mode 100644 index 0000000000..98c62e41e2 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-portal/istio_config.json @@ -0,0 +1,29 @@ +{ + "namespace": { + "name": "travel-portal", + "cluster": "", + "isAmbient": false, + "labels": null, + "annotations": null + }, + "destinationRules": [], + "envoyFilters": [], + "gateways": [], + "serviceEntries": [], + "sidecars": [], + "virtualServices": [], + "workloadEntries": [], + "workloadGroups": [], + "wasmPlugins": [], + "telemetries": [], + "k8sGateways": [], + "k8sGRPCRoutes": [], + "k8sHTTPRoutes": [], + "k8sReferenceGrants": [], + "k8sTCPRoutes": [], + "k8sTLSRoutes": [], + "authorizationPolicies": [], + "peerAuthentications": [], + "requestAuthentications": [], + "validations": {} +} diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-portal/metrics/inbound/metrics_inbound_120.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-portal/metrics/inbound/metrics_inbound_120.json new file mode 100644 index 0000000000..c7215c95e7 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-portal/metrics/inbound/metrics_inbound_120.json @@ -0,0 +1 @@ +{ "request_count": null, "request_error_count": null } diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-portal/metrics/inbound/metrics_inbound_1800.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-portal/metrics/inbound/metrics_inbound_1800.json new file mode 100644 index 0000000000..c7215c95e7 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-portal/metrics/inbound/metrics_inbound_1800.json @@ -0,0 +1 @@ +{ "request_count": null, "request_error_count": null } diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-portal/metrics/inbound/metrics_inbound_300.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-portal/metrics/inbound/metrics_inbound_300.json new file mode 100644 index 0000000000..c7215c95e7 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-portal/metrics/inbound/metrics_inbound_300.json @@ -0,0 +1 @@ +{ "request_count": null, "request_error_count": null } diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-portal/metrics/inbound/metrics_inbound_3600.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-portal/metrics/inbound/metrics_inbound_3600.json new file mode 100644 index 0000000000..c7215c95e7 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-portal/metrics/inbound/metrics_inbound_3600.json @@ -0,0 +1 @@ +{ "request_count": null, "request_error_count": null } diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-portal/metrics/inbound/metrics_inbound_60.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-portal/metrics/inbound/metrics_inbound_60.json new file mode 100644 index 0000000000..c7215c95e7 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-portal/metrics/inbound/metrics_inbound_60.json @@ -0,0 +1 @@ +{ "request_count": null, "request_error_count": null } diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-portal/metrics/inbound/metrics_inbound_600.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-portal/metrics/inbound/metrics_inbound_600.json new file mode 100644 index 0000000000..c7215c95e7 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-portal/metrics/inbound/metrics_inbound_600.json @@ -0,0 +1 @@ +{ "request_count": null, "request_error_count": null } diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-portal/metrics/index.ts b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-portal/metrics/index.ts new file mode 100644 index 0000000000..5fd2fa98b8 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-portal/metrics/index.ts @@ -0,0 +1,51 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import inbound60 from './inbound/metrics_inbound_60.json'; +import inbound120 from './inbound/metrics_inbound_120.json'; +import inbound300 from './inbound/metrics_inbound_300.json'; +import inbound600 from './inbound/metrics_inbound_600.json'; +import inbound1800 from './inbound/metrics_inbound_1800.json'; +import inbound3600 from './inbound/metrics_inbound_3600.json'; +/* Outbound Metrics */ + +import outbound60 from './outbound/metrics_outbound_60.json'; +import outbound120 from './outbound/metrics_outbound_120.json'; +import outbound300 from './outbound/metrics_outbound_300.json'; +import outbound600 from './outbound/metrics_outbound_600.json'; +import outbound1800 from './outbound/metrics_outbound_1800.json'; +import outbound3600 from './outbound/metrics_outbound_3600.json'; + +export const travelPortalMetrics = { + inbound: { + 60: inbound60, + 120: inbound120, + 300: inbound300, + 600: inbound600, + 1800: inbound1800, + 3600: inbound3600, + }, + outbound: { + 60: outbound60, + 120: outbound120, + 300: outbound300, + 600: outbound600, + 1800: outbound1800, + 3600: outbound3600, + }, +}; + +export default travelPortalMetrics; diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-portal/metrics/outbound/metrics_outbound_120.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-portal/metrics/outbound/metrics_outbound_120.json new file mode 100644 index 0000000000..7b786affa9 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-portal/metrics/outbound/metrics_outbound_120.json @@ -0,0 +1,28 @@ +{ + "request_count": [ + { + "labels": {}, + "datapoints": [ + [1697024340, "0.8"], + [1697024370, "0.7999999999999999"], + [1697024400, "0.7999999999999999"], + [1697024430, "0.7999999999999999"], + [1697024460, "0.7998933901918976"] + ], + "name": "request_count" + } + ], + "request_error_count": [ + { + "labels": {}, + "datapoints": [ + [1697024340, "0"], + [1697024370, "0"], + [1697024400, "0"], + [1697024430, "0"], + [1697024460, "0"] + ], + "name": "request_error_count" + } + ] +} diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-portal/metrics/outbound/metrics_outbound_1800.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-portal/metrics/outbound/metrics_outbound_1800.json new file mode 100644 index 0000000000..7138de3b07 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-portal/metrics/outbound/metrics_outbound_1800.json @@ -0,0 +1,40 @@ +{ + "request_count": [ + { + "labels": {}, + "datapoints": [ + [1697022540, "0.7999999999999998"], + [1697022720, "0.7818181818181817"], + [1697022900, "0.793939393939394"], + [1697023080, "0.812121212121212"], + [1697023260, "0.800003526234912"], + [1697023440, "0.7939393939393938"], + [1697023620, "0.8181818181818182"], + [1697023800, "0.7999999999999998"], + [1697023980, "0.8060606060606059"], + [1697024160, "0.7939436915381931"], + [1697024340, "0.7999999999999998"] + ], + "name": "request_count" + } + ], + "request_error_count": [ + { + "labels": {}, + "datapoints": [ + [1697022540, "0"], + [1697022720, "0"], + [1697022900, "0"], + [1697023080, "0"], + [1697023260, "0"], + [1697023440, "0"], + [1697023620, "0"], + [1697023800, "0"], + [1697023980, "0"], + [1697024160, "0"], + [1697024340, "0"] + ], + "name": "request_error_count" + } + ] +} diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-portal/metrics/outbound/metrics_outbound_300.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-portal/metrics/outbound/metrics_outbound_300.json new file mode 100644 index 0000000000..a738918bed --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-portal/metrics/outbound/metrics_outbound_300.json @@ -0,0 +1,40 @@ +{ + "request_count": [ + { + "labels": {}, + "datapoints": [ + [1697024160, "0.8"], + [1697024190, "0.7999999999999999"], + [1697024220, "0.7999999999999999"], + [1697024250, "0.7999999999999999"], + [1697024280, "0.7999999999999999"], + [1697024310, "0.7999999999999999"], + [1697024340, "0.8"], + [1697024370, "0.7999999999999999"], + [1697024400, "0.7999999999999999"], + [1697024430, "0.7999999999999999"], + [1697024460, "0.7998933901918976"] + ], + "name": "request_count" + } + ], + "request_error_count": [ + { + "labels": {}, + "datapoints": [ + [1697024160, "0"], + [1697024190, "0"], + [1697024220, "0"], + [1697024250, "0"], + [1697024280, "0"], + [1697024310, "0"], + [1697024340, "0"], + [1697024370, "0"], + [1697024400, "0"], + [1697024430, "0"], + [1697024460, "0"] + ], + "name": "request_error_count" + } + ] +} diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-portal/metrics/outbound/metrics_outbound_3600.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-portal/metrics/outbound/metrics_outbound_3600.json new file mode 100644 index 0000000000..4e6646498e --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-portal/metrics/outbound/metrics_outbound_3600.json @@ -0,0 +1,34 @@ +{ + "request_count": [ + { + "labels": {}, + "datapoints": [ + [1697021640, "0.5743865938180828"], + [1697022000, "0.7942028985507248"], + [1697022360, "0.8"], + [1697022720, "0.791304347826087"], + [1697023080, "0.8057971014492753"], + [1697023440, "0.8000016383255255"], + [1697023800, "0.8"], + [1697024160, "0.8000000000000002"] + ], + "name": "request_count" + } + ], + "request_error_count": [ + { + "labels": {}, + "datapoints": [ + [1697021640, "0"], + [1697022000, "0"], + [1697022360, "0"], + [1697022720, "0"], + [1697023080, "0"], + [1697023440, "0"], + [1697023800, "0"], + [1697024160, "0"] + ], + "name": "request_error_count" + } + ] +} diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-portal/metrics/outbound/metrics_outbound_60.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-portal/metrics/outbound/metrics_outbound_60.json new file mode 100644 index 0000000000..f4d2cc631f --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-portal/metrics/outbound/metrics_outbound_60.json @@ -0,0 +1,24 @@ +{ + "request_count": [ + { + "labels": {}, + "datapoints": [ + [1697024400, "0.7999999999999999"], + [1697024430, "0.7999999999999999"], + [1697024460, "0.7998933901918976"] + ], + "name": "request_count" + } + ], + "request_error_count": [ + { + "labels": {}, + "datapoints": [ + [1697024400, "0"], + [1697024430, "0"], + [1697024460, "0"] + ], + "name": "request_error_count" + } + ] +} diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-portal/metrics/outbound/metrics_outbound_600.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-portal/metrics/outbound/metrics_outbound_600.json new file mode 100644 index 0000000000..0e48ec8977 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-portal/metrics/outbound/metrics_outbound_600.json @@ -0,0 +1,144 @@ +{ + "grpc_received": null, + "grpc_sent": null, + "request_count": [ + { + "labels": {}, + "datapoints": [ + [1697023860, "0.8444444444444442"], + [1697023920, "0.7777777777777777"], + [1697023980, "0.7777777777777778"], + [1697024040, "0.7777881488395523"], + [1697024100, "0.7999911115061552"], + [1697024160, "0.7999999999999999"], + [1697024220, "0.7999999999999998"], + [1697024280, "0.7999999999999998"], + [1697024340, "0.8"], + [1697024400, "0.8"], + [1697024460, "0.799976300509539"] + ], + "name": "request_count" + } + ], + "request_duration_millis": [ + { + "labels": {}, + "datapoints": [ + [1697023860, "8.619444444444401"], + [1697023920, "9.27083333333308"], + [1697023980, "8.147222222222279"], + [1697024040, "10.913917295711464"], + [1697024100, "11.169437376778708"], + [1697024160, "10.068055555555624"], + [1697024220, "8.520833333333282"], + [1697024280, "8.076388888889193"], + [1697024340, "9.351388888888751"], + [1697024400, "8.795833333333498"], + [1697024460, "9.931840961833021"] + ], + "stat": "avg", + "name": "request_duration_millis" + } + ], + "request_error_count": [ + { + "labels": {}, + "datapoints": [ + [1697023860, "0"], + [1697023920, "0"], + [1697023980, "0"], + [1697024040, "0"], + [1697024100, "0"], + [1697024160, "0"], + [1697024220, "0"], + [1697024280, "0"], + [1697024340, "0"], + [1697024400, "0"], + [1697024460, "0"] + ], + "name": "request_error_count" + } + ], + "request_size": [ + { + "labels": {}, + "datapoints": [ + [1697023860, "1250.0000000000005"], + [1697023920, "1250.0000000000002"], + [1697023980, "1250"], + [1697024040, "1250"], + [1697024100, "1250.0000000000002"], + [1697024160, "1250"], + [1697024220, "1250.0000000000002"], + [1697024280, "1250.0000000000002"], + [1697024340, "1250"], + [1697024400, "1249.9999999999998"], + [1697024460, "1250"] + ], + "stat": "avg", + "name": "request_size" + } + ], + "request_throughput": [ + { + "labels": {}, + "datapoints": [ + [1697023860, "1000.0000000000001"], + [1697023920, "1000"], + [1697023980, "1000"], + [1697024040, "1000.014815802535"], + [1697024100, "999.9888893826942"], + [1697024160, "1000"], + [1697024220, "1000"], + [1697024280, "1000"], + [1697024340, "1000"], + [1697024400, "999.9999999999999"], + [1697024460, "999.9703756369238"] + ], + "name": "request_throughput" + } + ], + "response_size": [ + { + "labels": {}, + "datapoints": [ + [1697023860, "2416.666666666667"], + [1697023920, "2416.666666666667"], + [1697023980, "2416.6666666666665"], + [1697024040, "2416.663456623676"], + [1697024100, "2416.665679045266"], + [1697024160, "2416.6666666666665"], + [1697024220, "2416.666666666667"], + [1697024280, "2416.666666666667"], + [1697024340, "2416.666666666666"], + [1697024400, "2419.444444444444"], + [1697024460, "2416.666172912655"] + ], + "stat": "avg", + "name": "response_size" + } + ], + "response_throughput": [ + { + "labels": {}, + "datapoints": [ + [1697023860, "1933.333333333333"], + [1697023920, "1933.3333333333333"], + [1697023980, "1933.333333333333"], + [1697024040, "1933.3594091457946"], + [1697024100, "1933.3110627182"], + [1697024160, "1933.333333333333"], + [1697024220, "1933.333333333333"], + [1697024280, "1933.333333333333"], + [1697024340, "1933.333333333333"], + [1697024400, "1935.5555555555552"], + [1697024460, "1933.2756645732115"] + ], + "name": "response_throughput" + } + ], + "tcp_closed": null, + "tcp_opened": null, + "tcp_received": null, + "tcp_sent": null +} diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-portal/services.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-portal/services.json new file mode 100644 index 0000000000..fa7642366c --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-portal/services.json @@ -0,0 +1,120 @@ +{ + "namespace": { + "name": "travel-portal", + "cluster": "", + "isAmbient": false, + "labels": null, + "annotations": null + }, + "services": [ + { + "name": "voyages", + "namespace": "travel-portal", + "istioSidecar": true, + "cluster": "Kubernetes", + "istioAmbient": false, + "appLabel": true, + "additionalDetailSample": null, + "annotations": null, + "healthAnnotations": {}, + "ports": null, + "labels": { + "app": "voyages" + }, + "selector": { + "app": "voyages" + }, + "istioReferences": [], + "kialiWizard": "", + "serviceRegistry": "Kubernetes", + "health": { + "requests": { + "inbound": {}, + "outbound": {}, + "healthAnnotations": {} + } + } + }, + { + "name": "viaggi", + "namespace": "travel-portal", + "istioSidecar": true, + "cluster": "Kubernetes", + "istioAmbient": false, + "appLabel": true, + "additionalDetailSample": null, + "annotations": null, + "healthAnnotations": {}, + "ports": null, + "labels": { + "app": "viaggi" + }, + "selector": { + "app": "viaggi" + }, + "istioReferences": [], + "kialiWizard": "", + "serviceRegistry": "Kubernetes", + "health": { + "requests": { + "inbound": {}, + "outbound": {}, + "healthAnnotations": {} + } + } + }, + { + "name": "travels", + "namespace": "travel-portal", + "istioSidecar": true, + "cluster": "Kubernetes", + "istioAmbient": false, + "appLabel": true, + "additionalDetailSample": null, + "annotations": null, + "healthAnnotations": {}, + "ports": null, + "labels": { + "app": "travels" + }, + "selector": { + "app": "travels" + }, + "istioReferences": [], + "kialiWizard": "", + "serviceRegistry": "Kubernetes", + "health": { + "requests": { + "inbound": {}, + "outbound": {}, + "healthAnnotations": {} + } + } + } + ], + "validations": { + "service": { + "travels.travel-portal": { + "name": "travels", + "objectType": "service", + "valid": true, + "checks": [], + "references": null + }, + "viaggi.travel-portal": { + "name": "viaggi", + "objectType": "service", + "valid": true, + "checks": [], + "references": null + }, + "voyages.travel-portal": { + "name": "voyages", + "objectType": "service", + "valid": true, + "checks": [], + "references": null + } + } + } +} diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-portal/services/travels.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-portal/services/travels.json new file mode 100644 index 0000000000..2d6848ee04 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-portal/services/travels.json @@ -0,0 +1,347 @@ +{ + "cluster": "Kubernetes", + "destinationRules": [], + "endpoints": [ + { + "addresses": [ + { + "kind": "Pod", + "name": "travels-969557fd4-kjdtz", + "ip": "10.244.0.41", + "port": 0 + } + ], + "ports": [ + { + "name": "http", + "protocol": "TCP", + "port": 8000 + } + ] + } + ], + "istioPermissions": { + "create": true, + "update": true, + "delete": true + }, + "istioSidecar": true, + "k8sHTTPRoutes": [], + "k8sReferenceGrants": null, + "service": { + "name": "travels", + "createdAt": "2024-02-27T13:11:52Z", + "resourceVersion": "53686", + "namespace": { + "name": "travel-portal", + "cluster": "", + "isAmbient": false, + "labels": null, + "annotations": null + }, + "labels": { + "app": "travels" + }, + "selectors": { + "app": "travels" + }, + "type": "ClusterIP", + "ip": "10.99.124.158", + "ports": [ + { + "name": "http", + "protocol": "TCP", + "port": 8000 + } + ], + "externalName": "", + "annotations": { + "kubectl.kubernetes.io/last-applied-configuration": "{\"apiVersion\":\"v1\",\"kind\":\"Service\",\"metadata\":{\"annotations\":{},\"labels\":{\"app\":\"travels\"},\"name\":\"travels\",\"namespace\":\"travel-portal\"},\"spec\":{\"ports\":[{\"name\":\"http\",\"port\":8000}],\"selector\":{\"app\":\"travels\"}}}\n" + }, + "healthAnnotations": {}, + "additionalDetails": [] + }, + "serviceEntries": null, + "virtualServices": [], + "workloads": [ + { + "name": "travels", + "cluster": "Kubernetes", + "type": "Deployment", + "createdAt": "2024-02-27T13:11:52Z", + "resourceVersion": "54113", + "istioSidecar": true, + "istioAmbient": false, + "additionalDetailSample": null, + "labels": { + "app": "travels", + "version": "v1" + }, + "appLabel": true, + "versionLabel": true, + "podCount": 1, + "annotations": { + "deployment.kubernetes.io/revision": "1", + "kubectl.kubernetes.io/last-applied-configuration": "{\"apiVersion\":\"apps/v1\",\"kind\":\"Deployment\",\"metadata\":{\"annotations\":{},\"name\":\"travels\",\"namespace\":\"travel-portal\"},\"spec\":{\"replicas\":1,\"selector\":{\"matchLabels\":{\"app\":\"travels\",\"version\":\"v1\"}},\"template\":{\"metadata\":{\"annotations\":{\"proxy.istio.io/config\":\"tracing:\\n zipkin:\\n address: zipkin.istio-system:9411\\n sampling: 10\\n custom_tags:\\n http.header.portal:\\n header:\\n name: portal\\n http.header.device:\\n header:\\n name: device\\n http.header.user:\\n header:\\n name: user\\n http.header.travel:\\n header:\\n name: travel\\n\",\"readiness.status.sidecar.istio.io/applicationPorts\":\"\"},\"labels\":{\"app\":\"travels\",\"version\":\"v1\"}},\"spec\":{\"containers\":[{\"env\":[{\"name\":\"LISTEN_ADDRESS\",\"value\":\":8000\"},{\"name\":\"PORTAL_COORDINATES\",\"value\":\"55.956245,-3.187915\"},{\"name\":\"PORTAL_COUNTRY\",\"value\":\"United Kingdom\"},{\"name\":\"PORTAL_NAME\",\"value\":\"travels.uk\"},{\"name\":\"TRAVELS_AGENCY_SERVICE\",\"value\":\"http://travels.travel-agency:8000\"}],\"image\":\"quay.io/kiali/demo_travels_portal:v1\",\"imagePullPolicy\":\"IfNotPresent\",\"name\":\"control\",\"ports\":[{\"containerPort\":8000}],\"securityContext\":{\"allowPrivilegeEscalation\":false,\"capabilities\":{\"drop\":[\"ALL\"]},\"privileged\":false,\"readOnlyRootFilesystem\":true}}]}}}}\n" + }, + "healthAnnotations": {}, + "istioReferences": [], + "dashboardAnnotations": null, + "serviceAccountNames": ["default"], + "health": { + "workloadStatus": null, + "requests": { + "inbound": null, + "outbound": null, + "healthAnnotations": null + } + } + } + ], + "health": { + "requests": { + "inbound": {}, + "outbound": {}, + "healthAnnotations": {} + } + }, + "namespaceMTLS": { + "status": "MTLS_NOT_ENABLED", + "autoMTLSEnabled": true, + "minTLS": "" + }, + "subServices": [ + { + "name": "travels", + "namespace": "", + "istioSidecar": false, + "cluster": "", + "istioAmbient": false, + "appLabel": false, + "additionalDetailSample": null, + "annotations": null, + "healthAnnotations": null, + "ports": { + "http": 8000 + }, + "labels": null, + "selector": null, + "istioReferences": null, + "kialiWizard": "", + "serviceRegistry": "", + "health": { + "requests": { + "inbound": null, + "outbound": null, + "healthAnnotations": null + } + } + } + ], + "validations": { + "gateway": { + "bookinfo-gateway.bookinfo": { + "name": "bookinfo-gateway", + "objectType": "gateway", + "valid": true, + "checks": [], + "references": null + } + }, + "service": { + "travels.travel-portal": { + "name": "travels", + "objectType": "service", + "valid": true, + "checks": [], + "references": null + } + }, + "virtualservice": { + "bookinfo.bookinfo": { + "name": "bookinfo", + "objectType": "virtualservice", + "valid": true, + "checks": [], + "references": null + } + }, + "workload": { + "cars-v1.travel-agency": { + "name": "cars-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "control.travel-control": { + "name": "control", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "details-v1.bookinfo": { + "name": "details-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "discounts-v1.travel-agency": { + "name": "discounts-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "flights-v1.travel-agency": { + "name": "flights-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "grafana.istio-system": { + "name": "grafana", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "hotels-v1.travel-agency": { + "name": "hotels-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "insurances-v1.travel-agency": { + "name": "insurances-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "istio-egressgateway.istio-system": { + "name": "istio-egressgateway", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "istio-ingressgateway.istio-system": { + "name": "istio-ingressgateway", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "istiod.istio-system": { + "name": "istiod", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "jaeger.istio-system": { + "name": "jaeger", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "kiali-traffic-generator.bookinfo": { + "name": "kiali-traffic-generator", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "kiali.istio-system": { + "name": "kiali", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "mysqldb-v1.travel-agency": { + "name": "mysqldb-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "productpage-v1.bookinfo": { + "name": "productpage-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "prometheus.istio-system": { + "name": "prometheus", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "ratings-v1.bookinfo": { + "name": "ratings-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "reviews-v1.bookinfo": { + "name": "reviews-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "reviews-v2.bookinfo": { + "name": "reviews-v2", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "reviews-v3.bookinfo": { + "name": "reviews-v3", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "travels-v1.travel-agency": { + "name": "travels-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "travels.travel-portal": { + "name": "travels", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "viaggi.travel-portal": { + "name": "viaggi", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "voyages.travel-portal": { + "name": "voyages", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + } + } + } +} diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-portal/services/viaggi.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-portal/services/viaggi.json new file mode 100644 index 0000000000..331eee6511 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-portal/services/viaggi.json @@ -0,0 +1,347 @@ +{ + "cluster": "Kubernetes", + "destinationRules": [], + "endpoints": [ + { + "addresses": [ + { + "kind": "Pod", + "name": "viaggi-65ff94c868-stzfn", + "ip": "10.244.0.40", + "port": 0 + } + ], + "ports": [ + { + "name": "http", + "protocol": "TCP", + "port": 8000 + } + ] + } + ], + "istioPermissions": { + "create": true, + "update": true, + "delete": true + }, + "istioSidecar": true, + "k8sHTTPRoutes": [], + "k8sReferenceGrants": null, + "service": { + "name": "viaggi", + "createdAt": "2024-02-27T13:11:52Z", + "resourceVersion": "53679", + "namespace": { + "name": "travel-portal", + "cluster": "", + "isAmbient": false, + "labels": null, + "annotations": null + }, + "labels": { + "app": "viaggi" + }, + "selectors": { + "app": "viaggi" + }, + "type": "ClusterIP", + "ip": "10.101.93.213", + "ports": [ + { + "name": "http", + "protocol": "TCP", + "port": 8000 + } + ], + "externalName": "", + "annotations": { + "kubectl.kubernetes.io/last-applied-configuration": "{\"apiVersion\":\"v1\",\"kind\":\"Service\",\"metadata\":{\"annotations\":{},\"labels\":{\"app\":\"viaggi\"},\"name\":\"viaggi\",\"namespace\":\"travel-portal\"},\"spec\":{\"ports\":[{\"name\":\"http\",\"port\":8000}],\"selector\":{\"app\":\"viaggi\"}}}\n" + }, + "healthAnnotations": {}, + "additionalDetails": [] + }, + "serviceEntries": null, + "virtualServices": [], + "workloads": [ + { + "name": "viaggi", + "cluster": "Kubernetes", + "type": "Deployment", + "createdAt": "2024-02-27T13:11:52Z", + "resourceVersion": "54078", + "istioSidecar": true, + "istioAmbient": false, + "additionalDetailSample": null, + "labels": { + "app": "viaggi", + "version": "v1" + }, + "appLabel": true, + "versionLabel": true, + "podCount": 1, + "annotations": { + "deployment.kubernetes.io/revision": "1", + "kubectl.kubernetes.io/last-applied-configuration": "{\"apiVersion\":\"apps/v1\",\"kind\":\"Deployment\",\"metadata\":{\"annotations\":{},\"name\":\"viaggi\",\"namespace\":\"travel-portal\"},\"spec\":{\"replicas\":1,\"selector\":{\"matchLabels\":{\"app\":\"viaggi\",\"version\":\"v1\"}},\"template\":{\"metadata\":{\"annotations\":{\"proxy.istio.io/config\":\"tracing:\\n zipkin:\\n address: zipkin.istio-system:9411\\n sampling: 10\\n custom_tags:\\n http.header.portal:\\n header:\\n name: portal\\n http.header.device:\\n header:\\n name: device\\n http.header.user:\\n header:\\n name: user\\n http.header.travel:\\n header:\\n name: travel\\n\",\"readiness.status.sidecar.istio.io/applicationPorts\":\"\"},\"labels\":{\"app\":\"viaggi\",\"version\":\"v1\"}},\"spec\":{\"containers\":[{\"env\":[{\"name\":\"LISTEN_ADDRESS\",\"value\":\":8000\"},{\"name\":\"PORTAL_COORDINATES\",\"value\":\"41.890668,12.492194\"},{\"name\":\"PORTAL_COUNTRY\",\"value\":\"Italy\"},{\"name\":\"PORTAL_NAME\",\"value\":\"viaggi.it\"},{\"name\":\"TRAVELS_AGENCY_SERVICE\",\"value\":\"http://travels.travel-agency:8000\"}],\"image\":\"quay.io/kiali/demo_travels_portal:v1\",\"imagePullPolicy\":\"IfNotPresent\",\"name\":\"control\",\"ports\":[{\"containerPort\":8000}],\"securityContext\":{\"allowPrivilegeEscalation\":false,\"capabilities\":{\"drop\":[\"ALL\"]},\"privileged\":false,\"readOnlyRootFilesystem\":true}}]}}}}\n" + }, + "healthAnnotations": {}, + "istioReferences": [], + "dashboardAnnotations": null, + "serviceAccountNames": ["default"], + "health": { + "workloadStatus": null, + "requests": { + "inbound": null, + "outbound": null, + "healthAnnotations": null + } + } + } + ], + "health": { + "requests": { + "inbound": {}, + "outbound": {}, + "healthAnnotations": {} + } + }, + "namespaceMTLS": { + "status": "MTLS_NOT_ENABLED", + "autoMTLSEnabled": true, + "minTLS": "" + }, + "subServices": [ + { + "name": "viaggi", + "namespace": "", + "istioSidecar": false, + "cluster": "", + "istioAmbient": false, + "appLabel": false, + "additionalDetailSample": null, + "annotations": null, + "healthAnnotations": null, + "ports": { + "http": 8000 + }, + "labels": null, + "selector": null, + "istioReferences": null, + "kialiWizard": "", + "serviceRegistry": "", + "health": { + "requests": { + "inbound": null, + "outbound": null, + "healthAnnotations": null + } + } + } + ], + "validations": { + "gateway": { + "bookinfo-gateway.bookinfo": { + "name": "bookinfo-gateway", + "objectType": "gateway", + "valid": true, + "checks": [], + "references": null + } + }, + "service": { + "viaggi.travel-portal": { + "name": "viaggi", + "objectType": "service", + "valid": true, + "checks": [], + "references": null + } + }, + "virtualservice": { + "bookinfo.bookinfo": { + "name": "bookinfo", + "objectType": "virtualservice", + "valid": true, + "checks": [], + "references": null + } + }, + "workload": { + "cars-v1.travel-agency": { + "name": "cars-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "control.travel-control": { + "name": "control", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "details-v1.bookinfo": { + "name": "details-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "discounts-v1.travel-agency": { + "name": "discounts-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "flights-v1.travel-agency": { + "name": "flights-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "grafana.istio-system": { + "name": "grafana", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "hotels-v1.travel-agency": { + "name": "hotels-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "insurances-v1.travel-agency": { + "name": "insurances-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "istio-egressgateway.istio-system": { + "name": "istio-egressgateway", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "istio-ingressgateway.istio-system": { + "name": "istio-ingressgateway", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "istiod.istio-system": { + "name": "istiod", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "jaeger.istio-system": { + "name": "jaeger", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "kiali-traffic-generator.bookinfo": { + "name": "kiali-traffic-generator", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "kiali.istio-system": { + "name": "kiali", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "mysqldb-v1.travel-agency": { + "name": "mysqldb-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "productpage-v1.bookinfo": { + "name": "productpage-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "prometheus.istio-system": { + "name": "prometheus", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "ratings-v1.bookinfo": { + "name": "ratings-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "reviews-v1.bookinfo": { + "name": "reviews-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "reviews-v2.bookinfo": { + "name": "reviews-v2", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "reviews-v3.bookinfo": { + "name": "reviews-v3", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "travels-v1.travel-agency": { + "name": "travels-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "travels.travel-portal": { + "name": "travels", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "viaggi.travel-portal": { + "name": "viaggi", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "voyages.travel-portal": { + "name": "voyages", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + } + } + } +} diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-portal/services/voyages.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-portal/services/voyages.json new file mode 100644 index 0000000000..f35921d4ef --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-portal/services/voyages.json @@ -0,0 +1,347 @@ +{ + "cluster": "Kubernetes", + "destinationRules": [], + "endpoints": [ + { + "addresses": [ + { + "kind": "Pod", + "name": "voyages-59857896bf-f87ld", + "ip": "10.244.0.39", + "port": 0 + } + ], + "ports": [ + { + "name": "http", + "protocol": "TCP", + "port": 8000 + } + ] + } + ], + "istioPermissions": { + "create": true, + "update": true, + "delete": true + }, + "istioSidecar": true, + "k8sHTTPRoutes": [], + "k8sReferenceGrants": null, + "service": { + "name": "voyages", + "createdAt": "2024-02-27T13:11:52Z", + "resourceVersion": "53664", + "namespace": { + "name": "travel-portal", + "cluster": "", + "isAmbient": false, + "labels": null, + "annotations": null + }, + "labels": { + "app": "voyages" + }, + "selectors": { + "app": "voyages" + }, + "type": "ClusterIP", + "ip": "10.99.49.131", + "ports": [ + { + "name": "http", + "protocol": "TCP", + "port": 8000 + } + ], + "externalName": "", + "annotations": { + "kubectl.kubernetes.io/last-applied-configuration": "{\"apiVersion\":\"v1\",\"kind\":\"Service\",\"metadata\":{\"annotations\":{},\"labels\":{\"app\":\"voyages\"},\"name\":\"voyages\",\"namespace\":\"travel-portal\"},\"spec\":{\"ports\":[{\"name\":\"http\",\"port\":8000}],\"selector\":{\"app\":\"voyages\"}}}\n" + }, + "healthAnnotations": {}, + "additionalDetails": [] + }, + "serviceEntries": null, + "virtualServices": [], + "workloads": [ + { + "name": "voyages", + "cluster": "Kubernetes", + "type": "Deployment", + "createdAt": "2024-02-27T13:11:52Z", + "resourceVersion": "54104", + "istioSidecar": true, + "istioAmbient": false, + "additionalDetailSample": null, + "labels": { + "app": "voyages", + "version": "v1" + }, + "appLabel": true, + "versionLabel": true, + "podCount": 1, + "annotations": { + "deployment.kubernetes.io/revision": "1", + "kubectl.kubernetes.io/last-applied-configuration": "{\"apiVersion\":\"apps/v1\",\"kind\":\"Deployment\",\"metadata\":{\"annotations\":{},\"name\":\"voyages\",\"namespace\":\"travel-portal\"},\"spec\":{\"replicas\":1,\"selector\":{\"matchLabels\":{\"app\":\"voyages\",\"version\":\"v1\"}},\"template\":{\"metadata\":{\"annotations\":{\"proxy.istio.io/config\":\"tracing:\\n zipkin:\\n address: zipkin.istio-system:9411\\n sampling: 10\\n custom_tags:\\n http.header.portal:\\n header:\\n name: portal\\n http.header.device:\\n header:\\n name: device\\n http.header.user:\\n header:\\n name: user\\n http.header.travel:\\n header:\\n name: travel\\n\",\"readiness.status.sidecar.istio.io/applicationPorts\":\"\"},\"labels\":{\"app\":\"voyages\",\"version\":\"v1\"}},\"spec\":{\"containers\":[{\"env\":[{\"name\":\"LISTEN_ADDRESS\",\"value\":\":8000\"},{\"name\":\"PORTAL_COORDINATES\",\"value\":\"48.861310,2.337418\"},{\"name\":\"PORTAL_COUNTRY\",\"value\":\"France\"},{\"name\":\"PORTAL_NAME\",\"value\":\"voyages.fr\"},{\"name\":\"TRAVELS_AGENCY_SERVICE\",\"value\":\"http://travels.travel-agency:8000\"}],\"image\":\"quay.io/kiali/demo_travels_portal:v1\",\"imagePullPolicy\":\"IfNotPresent\",\"name\":\"voyages\",\"ports\":[{\"containerPort\":8000}],\"securityContext\":{\"allowPrivilegeEscalation\":false,\"capabilities\":{\"drop\":[\"ALL\"]},\"privileged\":false,\"readOnlyRootFilesystem\":true}}]}}}}\n" + }, + "healthAnnotations": {}, + "istioReferences": [], + "dashboardAnnotations": null, + "serviceAccountNames": ["default"], + "health": { + "workloadStatus": null, + "requests": { + "inbound": null, + "outbound": null, + "healthAnnotations": null + } + } + } + ], + "health": { + "requests": { + "inbound": {}, + "outbound": {}, + "healthAnnotations": {} + } + }, + "namespaceMTLS": { + "status": "MTLS_NOT_ENABLED", + "autoMTLSEnabled": true, + "minTLS": "" + }, + "subServices": [ + { + "name": "voyages", + "namespace": "", + "istioSidecar": false, + "cluster": "", + "istioAmbient": false, + "appLabel": false, + "additionalDetailSample": null, + "annotations": null, + "healthAnnotations": null, + "ports": { + "http": 8000 + }, + "labels": null, + "selector": null, + "istioReferences": null, + "kialiWizard": "", + "serviceRegistry": "", + "health": { + "requests": { + "inbound": null, + "outbound": null, + "healthAnnotations": null + } + } + } + ], + "validations": { + "gateway": { + "bookinfo-gateway.bookinfo": { + "name": "bookinfo-gateway", + "objectType": "gateway", + "valid": true, + "checks": [], + "references": null + } + }, + "service": { + "voyages.travel-portal": { + "name": "voyages", + "objectType": "service", + "valid": true, + "checks": [], + "references": null + } + }, + "virtualservice": { + "bookinfo.bookinfo": { + "name": "bookinfo", + "objectType": "virtualservice", + "valid": true, + "checks": [], + "references": null + } + }, + "workload": { + "cars-v1.travel-agency": { + "name": "cars-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "control.travel-control": { + "name": "control", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "details-v1.bookinfo": { + "name": "details-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "discounts-v1.travel-agency": { + "name": "discounts-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "flights-v1.travel-agency": { + "name": "flights-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "grafana.istio-system": { + "name": "grafana", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "hotels-v1.travel-agency": { + "name": "hotels-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "insurances-v1.travel-agency": { + "name": "insurances-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "istio-egressgateway.istio-system": { + "name": "istio-egressgateway", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "istio-ingressgateway.istio-system": { + "name": "istio-ingressgateway", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "istiod.istio-system": { + "name": "istiod", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "jaeger.istio-system": { + "name": "jaeger", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "kiali-traffic-generator.bookinfo": { + "name": "kiali-traffic-generator", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "kiali.istio-system": { + "name": "kiali", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "mysqldb-v1.travel-agency": { + "name": "mysqldb-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "productpage-v1.bookinfo": { + "name": "productpage-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "prometheus.istio-system": { + "name": "prometheus", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "ratings-v1.bookinfo": { + "name": "ratings-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "reviews-v1.bookinfo": { + "name": "reviews-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "reviews-v2.bookinfo": { + "name": "reviews-v2", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "reviews-v3.bookinfo": { + "name": "reviews-v3", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "travels-v1.travel-agency": { + "name": "travels-v1", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "travels.travel-portal": { + "name": "travels", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "viaggi.travel-portal": { + "name": "viaggi", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "voyages.travel-portal": { + "name": "voyages", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + } + } + } +} diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-portal/spans.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-portal/spans.json new file mode 100644 index 0000000000..fd98d9454c --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-portal/spans.json @@ -0,0 +1,1542 @@ +[ + { + "traceID": "d3abae60e2de780002abaaac84a3da98", + "spanID": "02abaaac84a3da98", + "operationName": "travels.travel-agency.svc.cluster.local:8000/*", + "references": [], + "startTime": 1710323687159038, + "duration": 4769, + "tags": [ + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "576c3b27-83a2-9200-93a1-a295876c50b0" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "travels" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "http.header.travel", + "type": "string", + "value": "t1" + }, + { + "key": "http.header.device", + "type": "string", + "value": "web" + }, + { + "key": "http.url", + "type": "string", + "value": "http://travels.travel-agency:8000/travels" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "http.header.user", + "type": "string", + "value": "new" + }, + { + "key": "response_size", + "type": "string", + "value": "2286" + }, + { + "key": "http.header.portal", + "type": "string", + "value": "travels.uk" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.27" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.27~travels-969557fd4-pvsqw.travel-portal~travel-portal.svc.cluster.local" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|8000||travels.travel-agency.svc.cluster.local" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "travel-portal" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|8000||travels.travel-agency.svc.cluster.local" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p1", + "process": { + "serviceName": "travels.travel-portal", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762971 + } + ] + }, + "warnings": null, + "traceSize": 4 + }, + { + "traceID": "a8cfad5ab9d2bf9899fe60f3fe4e68f3", + "spanID": "99fe60f3fe4e68f3", + "operationName": "travels.travel-agency.svc.cluster.local:8000/*", + "references": [], + "startTime": 1710323604497093, + "duration": 4332, + "tags": [ + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "response_size", + "type": "string", + "value": "2286" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "http.header.device", + "type": "string", + "value": "mobile" + }, + { + "key": "http.url", + "type": "string", + "value": "http://travels.travel-agency:8000/travels" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.27" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "http.header.user", + "type": "string", + "value": "registered" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "travels" + }, + { + "key": "http.header.travel", + "type": "string", + "value": "t2" + }, + { + "key": "http.header.portal", + "type": "string", + "value": "travels.uk" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "44360457-e6d8-97bc-84f3-133ba2d7ca91" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "travel-portal" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|8000||travels.travel-agency.svc.cluster.local" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|8000||travels.travel-agency.svc.cluster.local" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.27~travels-969557fd4-pvsqw.travel-portal~travel-portal.svc.cluster.local" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p1", + "process": { + "serviceName": "travels.travel-portal", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762971 + } + ] + }, + "warnings": null, + "traceSize": 4 + }, + { + "traceID": "d9abc75e35d9ccc3a522d02c3ed9be79", + "spanID": "a522d02c3ed9be79", + "operationName": "travels.travel-agency.svc.cluster.local:8000/*", + "references": [], + "startTime": 1710323566923628, + "duration": 6153, + "tags": [ + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "http.header.user", + "type": "string", + "value": "new" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "travel-portal" + }, + { + "key": "http.header.portal", + "type": "string", + "value": "travels.uk" + }, + { + "key": "http.header.travel", + "type": "string", + "value": "t3" + }, + { + "key": "http.url", + "type": "string", + "value": "http://travels.travel-agency:8000/travels/Podgorica" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "http.header.device", + "type": "string", + "value": "web" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.27~travels-969557fd4-pvsqw.travel-portal~travel-portal.svc.cluster.local" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|8000||travels.travel-agency.svc.cluster.local" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|8000||travels.travel-agency.svc.cluster.local" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "travels" + }, + { + "key": "response_size", + "type": "string", + "value": "400" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "ff4596aa-d521-96f5-b0a0-f4bcb93f4c50" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.27" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p1", + "process": { + "serviceName": "travels.travel-portal", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762971 + } + ] + }, + "warnings": null, + "traceSize": 14 + }, + { + "traceID": "5424f3eba001d557b89e05103ebfda06", + "spanID": "b89e05103ebfda06", + "operationName": "travels.travel-agency.svc.cluster.local:8000/*", + "references": [], + "startTime": 1710323491773586, + "duration": 5640, + "tags": [ + { + "key": "http.header.device", + "type": "string", + "value": "web" + }, + { + "key": "http.header.user", + "type": "string", + "value": "new" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|8000||travels.travel-agency.svc.cluster.local" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|8000||travels.travel-agency.svc.cluster.local" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.27" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "http.header.travel", + "type": "string", + "value": "t2" + }, + { + "key": "http.url", + "type": "string", + "value": "http://travels.travel-agency:8000/travels/Sarajevo" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "http.header.portal", + "type": "string", + "value": "travels.uk" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "79bd2bc1-7270-97f2-8c78-07e7348a331c" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "response_size", + "type": "string", + "value": "448" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "travel-portal" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.27~travels-969557fd4-pvsqw.travel-portal~travel-portal.svc.cluster.local" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "travels" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p1", + "process": { + "serviceName": "travels.travel-portal", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762971 + } + ] + }, + "warnings": null, + "traceSize": 14 + }, + { + "traceID": "fb8ddad357b57b17045ac738470a8ad5", + "spanID": "045ac738470a8ad5", + "operationName": "travels.travel-agency.svc.cluster.local:8000/*", + "references": [], + "startTime": 1710323717227392, + "duration": 15185, + "tags": [ + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|8000||travels.travel-agency.svc.cluster.local" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.27~travels-969557fd4-pvsqw.travel-portal~travel-portal.svc.cluster.local" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "travels" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.27" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "http.header.user", + "type": "string", + "value": "new" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "response_size", + "type": "string", + "value": "2286" + }, + { + "key": "http.header.travel", + "type": "string", + "value": "t2" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "travel-portal" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "0d84b3c3-0cfc-93b4-a869-3087d4e8194a" + }, + { + "key": "http.url", + "type": "string", + "value": "http://travels.travel-agency:8000/travels" + }, + { + "key": "http.header.portal", + "type": "string", + "value": "travels.uk" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "http.header.device", + "type": "string", + "value": "web" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|8000||travels.travel-agency.svc.cluster.local" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p1", + "process": { + "serviceName": "travels.travel-portal", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762971 + } + ] + }, + "warnings": null, + "traceSize": 4 + }, + { + "traceID": "ac54b021ecb80039c0a465d1300183b1", + "spanID": "c0a465d1300183b1", + "operationName": "travels.travel-agency.svc.cluster.local:8000/*", + "references": [], + "startTime": 1710323702196354, + "duration": 5222, + "tags": [ + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "http.header.user", + "type": "string", + "value": "new" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "http.header.travel", + "type": "string", + "value": "t3" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|8000||travels.travel-agency.svc.cluster.local" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|8000||travels.travel-agency.svc.cluster.local" + }, + { + "key": "http.url", + "type": "string", + "value": "http://travels.travel-agency:8000/travels/Moscow" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "http.header.device", + "type": "string", + "value": "web" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "0f862aae-9cb9-9271-8c4c-52d4094ba473" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "http.header.portal", + "type": "string", + "value": "travels.uk" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "travels" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.27~travels-969557fd4-pvsqw.travel-portal~travel-portal.svc.cluster.local" + }, + { + "key": "response_size", + "type": "string", + "value": "402" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "travel-portal" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.27" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p1", + "process": { + "serviceName": "travels.travel-portal", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762971 + } + ] + }, + "warnings": null, + "traceSize": 14 + }, + { + "traceID": "99cde2f70a2692fc1b402354ca3cb11d", + "spanID": "1b402354ca3cb11d", + "operationName": "travels.travel-agency.svc.cluster.local:8000/*", + "references": [], + "startTime": 1710323589468941, + "duration": 4208, + "tags": [ + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "http.url", + "type": "string", + "value": "http://travels.travel-agency:8000/travels" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.27" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "travel-portal" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "572e6c2a-2e66-95cd-9343-0c01b49e202b" + }, + { + "key": "http.header.portal", + "type": "string", + "value": "travels.uk" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|8000||travels.travel-agency.svc.cluster.local" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "http.header.travel", + "type": "string", + "value": "t3" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "http.header.user", + "type": "string", + "value": "registered" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.27~travels-969557fd4-pvsqw.travel-portal~travel-portal.svc.cluster.local" + }, + { + "key": "http.header.device", + "type": "string", + "value": "mobile" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "travels" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|8000||travels.travel-agency.svc.cluster.local" + }, + { + "key": "response_size", + "type": "string", + "value": "2286" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p1", + "process": { + "serviceName": "travels.travel-portal", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762971 + } + ] + }, + "warnings": null, + "traceSize": 4 + }, + { + "traceID": "812e5fd0f48d8236b82d646fb363c422", + "spanID": "b82d646fb363c422", + "operationName": "travels.travel-agency.svc.cluster.local:8000/*", + "references": [], + "startTime": 1710323446674823, + "duration": 6370, + "tags": [ + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.27" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.27~travels-969557fd4-pvsqw.travel-portal~travel-portal.svc.cluster.local" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "travel-portal" + }, + { + "key": "http.header.portal", + "type": "string", + "value": "travels.uk" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|8000||travels.travel-agency.svc.cluster.local" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "http.header.device", + "type": "string", + "value": "web" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "travels" + }, + { + "key": "http.header.travel", + "type": "string", + "value": "t2" + }, + { + "key": "response_size", + "type": "string", + "value": "456" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "http.url", + "type": "string", + "value": "http://travels.travel-agency:8000/travels/Bucharest" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "d920914f-f442-9f41-a7ad-7b0fa864c9bf" + }, + { + "key": "http.header.user", + "type": "string", + "value": "new" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|8000||travels.travel-agency.svc.cluster.local" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p1", + "process": { + "serviceName": "travels.travel-portal", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762971 + } + ] + }, + "warnings": null, + "traceSize": 14 + }, + { + "traceID": "7a675338186614c325358ff74d719464", + "spanID": "25358ff74d719464", + "operationName": "travels.travel-agency.svc.cluster.local:8000/*", + "references": [], + "startTime": 1710323664619789, + "duration": 6186, + "tags": [ + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|8000||travels.travel-agency.svc.cluster.local" + }, + { + "key": "http.header.travel", + "type": "string", + "value": "t1" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "travels" + }, + { + "key": "http.header.user", + "type": "string", + "value": "registered" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|8000||travels.travel-agency.svc.cluster.local" + }, + { + "key": "http.url", + "type": "string", + "value": "http://travels.travel-agency:8000/travels/Nicosia" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "travel-portal" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "response_size", + "type": "string", + "value": "525" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "1a1eb77c-5eb4-99b4-93a9-9b9fa7dc5a22" + }, + { + "key": "http.header.portal", + "type": "string", + "value": "travels.uk" + }, + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.27~travels-969557fd4-pvsqw.travel-portal~travel-portal.svc.cluster.local" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "http.header.device", + "type": "string", + "value": "mobile" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.27" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p1", + "process": { + "serviceName": "travels.travel-portal", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762971 + } + ] + }, + "warnings": null, + "traceSize": 18 + }, + { + "traceID": "a1a5c8fbb45c23173c7cafec27ed735b", + "spanID": "3c7cafec27ed735b", + "operationName": "travels.travel-agency.svc.cluster.local:8000/*", + "references": [], + "startTime": 1710323619531704, + "duration": 6138, + "tags": [ + { + "key": "node_id", + "type": "string", + "value": "sidecar~10.244.0.27~travels-969557fd4-pvsqw.travel-portal~travel-portal.svc.cluster.local" + }, + { + "key": "http.status_code", + "type": "string", + "value": "200" + }, + { + "key": "http.protocol", + "type": "string", + "value": "HTTP/1.1" + }, + { + "key": "response_flags", + "type": "string", + "value": "-" + }, + { + "key": "user_agent", + "type": "string", + "value": "Go-http-client/1.1" + }, + { + "key": "http.header.portal", + "type": "string", + "value": "travels.uk" + }, + { + "key": "response_size", + "type": "string", + "value": "525" + }, + { + "key": "istio.canonical_service", + "type": "string", + "value": "travels" + }, + { + "key": "istio.cluster_id", + "type": "string", + "value": "Kubernetes" + }, + { + "key": "http.method", + "type": "string", + "value": "GET" + }, + { + "key": "peer.address", + "type": "string", + "value": "10.244.0.27" + }, + { + "key": "http.url", + "type": "string", + "value": "http://travels.travel-agency:8000/travels/Nicosia" + }, + { + "key": "http.header.travel", + "type": "string", + "value": "t1" + }, + { + "key": "component", + "type": "string", + "value": "proxy" + }, + { + "key": "istio.namespace", + "type": "string", + "value": "travel-portal" + }, + { + "key": "http.header.device", + "type": "string", + "value": "mobile" + }, + { + "key": "guid:x-request-id", + "type": "string", + "value": "03213dca-6a36-910b-930e-cfa919b66b28" + }, + { + "key": "request_size", + "type": "string", + "value": "0" + }, + { + "key": "istio.canonical_revision", + "type": "string", + "value": "v1" + }, + { + "key": "istio.mesh_id", + "type": "string", + "value": "cluster.local" + }, + { + "key": "upstream_cluster", + "type": "string", + "value": "outbound|8000||travels.travel-agency.svc.cluster.local" + }, + { + "key": "downstream_cluster", + "type": "string", + "value": "-" + }, + { + "key": "upstream_cluster.name", + "type": "string", + "value": "outbound|8000||travels.travel-agency.svc.cluster.local" + }, + { + "key": "http.header.user", + "type": "string", + "value": "registered" + }, + { + "key": "span.kind", + "type": "string", + "value": "client" + }, + { + "key": "internal.span.format", + "type": "string", + "value": "zipkin" + } + ], + "logs": [], + "processID": "p1", + "process": { + "serviceName": "travels.travel-portal", + "tags": [ + { + "key": "ip", + "type": "int64", + "value": 183762971 + } + ] + }, + "warnings": null, + "traceSize": 18 + } +] diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-portal/tls.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-portal/tls.json new file mode 100644 index 0000000000..ea7db32cbb --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-portal/tls.json @@ -0,0 +1 @@ +{ "status": "MTLS_NOT_ENABLED", "autoMTLSEnabled": true, "minTLS": "" } diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-portal/workloads.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-portal/workloads.json new file mode 100644 index 0000000000..ad60ded885 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-portal/workloads.json @@ -0,0 +1,165 @@ +{ + "namespace": { + "name": "travel-portal", + "cluster": "", + "isAmbient": false, + "labels": null, + "annotations": null + }, + "workloads": [ + { + "name": "travels", + "cluster": "Kubernetes", + "type": "Deployment", + "createdAt": "2024-01-31T14:07:06Z", + "resourceVersion": "81433", + "istioSidecar": true, + "istioAmbient": false, + "additionalDetailSample": null, + "labels": { + "app": "travels", + "version": "v1" + }, + "appLabel": true, + "versionLabel": true, + "podCount": 1, + "annotations": { + "deployment.kubernetes.io/revision": "1", + "kubectl.kubernetes.io/last-applied-configuration": "{\"apiVersion\":\"apps/v1\",\"kind\":\"Deployment\",\"metadata\":{\"annotations\":{},\"name\":\"travels\",\"namespace\":\"travel-portal\"},\"spec\":{\"replicas\":1,\"selector\":{\"matchLabels\":{\"app\":\"travels\",\"version\":\"v1\"}},\"template\":{\"metadata\":{\"annotations\":{\"proxy.istio.io/config\":\"tracing:\\n zipkin:\\n address: zipkin.istio-system:9411\\n sampling: 10\\n custom_tags:\\n http.header.portal:\\n header:\\n name: portal\\n http.header.device:\\n header:\\n name: device\\n http.header.user:\\n header:\\n name: user\\n http.header.travel:\\n header:\\n name: travel\\n\",\"readiness.status.sidecar.istio.io/applicationPorts\":\"\"},\"labels\":{\"app\":\"travels\",\"version\":\"v1\"}},\"spec\":{\"containers\":[{\"env\":[{\"name\":\"LISTEN_ADDRESS\",\"value\":\":8000\"},{\"name\":\"PORTAL_COORDINATES\",\"value\":\"55.956245,-3.187915\"},{\"name\":\"PORTAL_COUNTRY\",\"value\":\"United Kingdom\"},{\"name\":\"PORTAL_NAME\",\"value\":\"travels.uk\"},{\"name\":\"TRAVELS_AGENCY_SERVICE\",\"value\":\"http://travels.travel-agency:8000\"}],\"image\":\"quay.io/kiali/demo_travels_portal:v1\",\"imagePullPolicy\":\"IfNotPresent\",\"name\":\"control\",\"ports\":[{\"containerPort\":8000}],\"securityContext\":{\"allowPrivilegeEscalation\":false,\"capabilities\":{\"drop\":[\"ALL\"]},\"privileged\":false,\"readOnlyRootFilesystem\":true}}]}}}}\n" + }, + "healthAnnotations": {}, + "istioReferences": [], + "dashboardAnnotations": null, + "serviceAccountNames": ["default"], + "health": { + "workloadStatus": { + "name": "travels", + "desiredReplicas": 1, + "currentReplicas": 1, + "availableReplicas": 1, + "syncedProxies": 1 + }, + "requests": { + "inbound": {}, + "outbound": { + "http": { + "200": 0.2666666666666666 + } + }, + "healthAnnotations": {} + } + } + }, + { + "name": "viaggi", + "cluster": "Kubernetes", + "type": "Deployment", + "createdAt": "2024-01-31T14:07:06Z", + "resourceVersion": "81479", + "istioSidecar": true, + "istioAmbient": false, + "additionalDetailSample": null, + "labels": { + "app": "viaggi", + "version": "v1" + }, + "appLabel": true, + "versionLabel": true, + "podCount": 1, + "annotations": { + "deployment.kubernetes.io/revision": "1", + "kubectl.kubernetes.io/last-applied-configuration": "{\"apiVersion\":\"apps/v1\",\"kind\":\"Deployment\",\"metadata\":{\"annotations\":{},\"name\":\"viaggi\",\"namespace\":\"travel-portal\"},\"spec\":{\"replicas\":1,\"selector\":{\"matchLabels\":{\"app\":\"viaggi\",\"version\":\"v1\"}},\"template\":{\"metadata\":{\"annotations\":{\"proxy.istio.io/config\":\"tracing:\\n zipkin:\\n address: zipkin.istio-system:9411\\n sampling: 10\\n custom_tags:\\n http.header.portal:\\n header:\\n name: portal\\n http.header.device:\\n header:\\n name: device\\n http.header.user:\\n header:\\n name: user\\n http.header.travel:\\n header:\\n name: travel\\n\",\"readiness.status.sidecar.istio.io/applicationPorts\":\"\"},\"labels\":{\"app\":\"viaggi\",\"version\":\"v1\"}},\"spec\":{\"containers\":[{\"env\":[{\"name\":\"LISTEN_ADDRESS\",\"value\":\":8000\"},{\"name\":\"PORTAL_COORDINATES\",\"value\":\"41.890668,12.492194\"},{\"name\":\"PORTAL_COUNTRY\",\"value\":\"Italy\"},{\"name\":\"PORTAL_NAME\",\"value\":\"viaggi.it\"},{\"name\":\"TRAVELS_AGENCY_SERVICE\",\"value\":\"http://travels.travel-agency:8000\"}],\"image\":\"quay.io/kiali/demo_travels_portal:v1\",\"imagePullPolicy\":\"IfNotPresent\",\"name\":\"control\",\"ports\":[{\"containerPort\":8000}],\"securityContext\":{\"allowPrivilegeEscalation\":false,\"capabilities\":{\"drop\":[\"ALL\"]},\"privileged\":false,\"readOnlyRootFilesystem\":true}}]}}}}\n" + }, + "healthAnnotations": {}, + "istioReferences": [], + "dashboardAnnotations": null, + "serviceAccountNames": ["default"], + "health": { + "workloadStatus": { + "name": "viaggi", + "desiredReplicas": 1, + "currentReplicas": 1, + "availableReplicas": 1, + "syncedProxies": 1 + }, + "requests": { + "inbound": {}, + "outbound": { + "http": { + "200": 0.2644533333333333 + } + }, + "healthAnnotations": {} + } + } + }, + { + "name": "voyages", + "cluster": "Kubernetes", + "type": "Deployment", + "createdAt": "2024-01-31T14:07:06Z", + "resourceVersion": "81495", + "istioSidecar": true, + "istioAmbient": false, + "additionalDetailSample": null, + "labels": { + "app": "voyages", + "version": "v1" + }, + "appLabel": true, + "versionLabel": true, + "podCount": 1, + "annotations": { + "deployment.kubernetes.io/revision": "1", + "kubectl.kubernetes.io/last-applied-configuration": "{\"apiVersion\":\"apps/v1\",\"kind\":\"Deployment\",\"metadata\":{\"annotations\":{},\"name\":\"voyages\",\"namespace\":\"travel-portal\"},\"spec\":{\"replicas\":1,\"selector\":{\"matchLabels\":{\"app\":\"voyages\",\"version\":\"v1\"}},\"template\":{\"metadata\":{\"annotations\":{\"proxy.istio.io/config\":\"tracing:\\n zipkin:\\n address: zipkin.istio-system:9411\\n sampling: 10\\n custom_tags:\\n http.header.portal:\\n header:\\n name: portal\\n http.header.device:\\n header:\\n name: device\\n http.header.user:\\n header:\\n name: user\\n http.header.travel:\\n header:\\n name: travel\\n\",\"readiness.status.sidecar.istio.io/applicationPorts\":\"\"},\"labels\":{\"app\":\"voyages\",\"version\":\"v1\"}},\"spec\":{\"containers\":[{\"env\":[{\"name\":\"LISTEN_ADDRESS\",\"value\":\":8000\"},{\"name\":\"PORTAL_COORDINATES\",\"value\":\"48.861310,2.337418\"},{\"name\":\"PORTAL_COUNTRY\",\"value\":\"France\"},{\"name\":\"PORTAL_NAME\",\"value\":\"voyages.fr\"},{\"name\":\"TRAVELS_AGENCY_SERVICE\",\"value\":\"http://travels.travel-agency:8000\"}],\"image\":\"quay.io/kiali/demo_travels_portal:v1\",\"imagePullPolicy\":\"IfNotPresent\",\"name\":\"voyages\",\"ports\":[{\"containerPort\":8000}],\"securityContext\":{\"allowPrivilegeEscalation\":false,\"capabilities\":{\"drop\":[\"ALL\"]},\"privileged\":false,\"readOnlyRootFilesystem\":true}}]}}}}\n" + }, + "healthAnnotations": {}, + "istioReferences": [], + "dashboardAnnotations": null, + "serviceAccountNames": ["default"], + "health": { + "workloadStatus": { + "name": "voyages", + "desiredReplicas": 1, + "currentReplicas": 1, + "availableReplicas": 1, + "syncedProxies": 1 + }, + "requests": { + "inbound": {}, + "outbound": { + "http": { + "200": 0.2605377777777778 + } + }, + "healthAnnotations": {} + } + } + } + ], + "validations": { + "workload": { + "travels.travel-portal": { + "name": "travels", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "viaggi.travel-portal": { + "name": "viaggi", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + }, + "voyages.travel-portal": { + "name": "voyages", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + } + } + } +} diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-portal/workloads/travels.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-portal/workloads/travels.json new file mode 100644 index 0000000000..2aa682c520 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-portal/workloads/travels.json @@ -0,0 +1,195 @@ +{ + "name": "travels", + "cluster": "Kubernetes", + "type": "Deployment", + "createdAt": "2024-03-13T09:49:39Z", + "resourceVersion": "61462", + "istioSidecar": true, + "istioAmbient": false, + "additionalDetailSample": null, + "labels": { + "app": "travels", + "version": "v1" + }, + "appLabel": true, + "versionLabel": true, + "podCount": 0, + "annotations": { + "deployment.kubernetes.io/revision": "1", + "kubectl.kubernetes.io/last-applied-configuration": "{\"apiVersion\":\"apps/v1\",\"kind\":\"Deployment\",\"metadata\":{\"annotations\":{},\"name\":\"travels\",\"namespace\":\"travel-portal\"},\"spec\":{\"replicas\":1,\"selector\":{\"matchLabels\":{\"app\":\"travels\",\"version\":\"v1\"}},\"template\":{\"metadata\":{\"annotations\":{\"proxy.istio.io/config\":\"tracing:\\n zipkin:\\n address: zipkin.istio-system:9411\\n sampling: 10\\n custom_tags:\\n http.header.portal:\\n header:\\n name: portal\\n http.header.device:\\n header:\\n name: device\\n http.header.user:\\n header:\\n name: user\\n http.header.travel:\\n header:\\n name: travel\\n\",\"readiness.status.sidecar.istio.io/applicationPorts\":\"\"},\"labels\":{\"app\":\"travels\",\"version\":\"v1\"}},\"spec\":{\"containers\":[{\"env\":[{\"name\":\"LISTEN_ADDRESS\",\"value\":\":8000\"},{\"name\":\"PORTAL_COORDINATES\",\"value\":\"55.956245,-3.187915\"},{\"name\":\"PORTAL_COUNTRY\",\"value\":\"United Kingdom\"},{\"name\":\"PORTAL_NAME\",\"value\":\"travels.uk\"},{\"name\":\"TRAVELS_AGENCY_SERVICE\",\"value\":\"http://travels.travel-agency:8000\"}],\"image\":\"quay.io/kiali/demo_travels_portal:v1\",\"imagePullPolicy\":\"IfNotPresent\",\"name\":\"control\",\"ports\":[{\"containerPort\":8000}],\"securityContext\":{\"allowPrivilegeEscalation\":false,\"capabilities\":{\"drop\":[\"ALL\"]},\"privileged\":false,\"readOnlyRootFilesystem\":true}}]}}}}\n" + }, + "healthAnnotations": {}, + "istioReferences": null, + "dashboardAnnotations": {}, + "serviceAccountNames": null, + "desiredReplicas": 1, + "currentReplicas": 1, + "availableReplicas": 1, + "pods": [ + { + "name": "travels-969557fd4-pvsqw", + "labels": { + "app": "travels", + "pod-template-hash": "969557fd4", + "security.istio.io/tlsMode": "istio", + "service.istio.io/canonical-name": "travels", + "service.istio.io/canonical-revision": "v1", + "version": "v1" + }, + "createdAt": "2024-03-13T09:49:39Z", + "createdBy": [ + { + "name": "travels-969557fd4", + "kind": "ReplicaSet" + } + ], + "containers": [ + { + "name": "control", + "image": "quay.io/kiali/demo_travels_portal:v1", + "isProxy": false, + "isReady": true, + "isAmbient": false + } + ], + "istioContainers": [ + { + "name": "istio-proxy", + "image": "gcr.io/istio-release/proxyv2:1.21.0-rc.0", + "isProxy": true, + "isReady": true, + "isAmbient": false + } + ], + "istioInitContainers": [ + { + "name": "istio-init", + "image": "gcr.io/istio-release/proxyv2:1.21.0-rc.0", + "isProxy": true, + "isReady": true, + "isAmbient": false + } + ], + "status": "Running", + "statusMessage": "", + "statusReason": "", + "appLabel": true, + "versionLabel": true, + "annotations": { + "istio.io/rev": "default", + "kubectl.kubernetes.io/default-container": "control", + "kubectl.kubernetes.io/default-logs-container": "control", + "prometheus.io/path": "/stats/prometheus", + "prometheus.io/port": "15020", + "prometheus.io/scrape": "true", + "proxy.istio.io/config": "tracing:\n zipkin:\n address: zipkin.istio-system:9411\n sampling: 10\n custom_tags:\n http.header.portal:\n header:\n name: portal\n http.header.device:\n header:\n name: device\n http.header.user:\n header:\n name: user\n http.header.travel:\n header:\n name: travel\n", + "readiness.status.sidecar.istio.io/applicationPorts": "", + "sidecar.istio.io/status": "{\"initContainers\":[\"istio-init\"],\"containers\":[\"istio-proxy\"],\"volumes\":[\"workload-socket\",\"credential-socket\",\"workload-certs\",\"istio-envoy\",\"istio-data\",\"istio-podinfo\",\"istio-token\",\"istiod-ca-cert\"],\"imagePullSecrets\":null,\"revision\":\"default\"}" + }, + "proxyStatus": { + "CDS": "Synced", + "EDS": "Synced", + "LDS": "Synced", + "RDS": "Synced" + }, + "serviceAccountName": "default" + } + ], + "services": [ + { + "name": "travels", + "namespace": "travel-portal", + "istioSidecar": true, + "cluster": "Kubernetes", + "istioAmbient": false, + "appLabel": true, + "additionalDetailSample": null, + "annotations": null, + "healthAnnotations": {}, + "ports": null, + "labels": { + "app": "travels" + }, + "selector": { + "app": "travels" + }, + "istioReferences": [], + "kialiWizard": "", + "serviceRegistry": "Kubernetes", + "health": { + "requests": { + "inbound": {}, + "outbound": {}, + "healthAnnotations": {} + } + } + } + ], + "runtimes": [ + { + "name": "", + "dashboardRefs": [ + { + "template": "envoy", + "title": "Envoy Metrics" + } + ] + } + ], + "additionalDetails": [], + "validations": { + "gateway": { + "bookinfo-gateway.bookinfo": { + "name": "bookinfo-gateway", + "objectType": "gateway", + "valid": false, + "checks": [ + { + "code": "KIA0302", + "message": "No matching workload found for gateway selector in this namespace", + "severity": "warning", + "path": "spec/selector" + } + ], + "references": null + } + }, + "virtualservice": { + "bookinfo.bookinfo": { + "name": "bookinfo", + "objectType": "virtualservice", + "valid": true, + "checks": [], + "references": null + } + }, + "workload": { + "travels.travel-portal": { + "name": "travels", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + } + } + }, + "waypointWorkloads": null, + "health": { + "workloadStatus": { + "name": "travels", + "desiredReplicas": 1, + "currentReplicas": 1, + "availableReplicas": 1, + "syncedProxies": 1 + }, + "requests": { + "inbound": {}, + "outbound": { + "http": { + "200": 0.2666666666666666 + } + }, + "healthAnnotations": {} + } + } +} diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-portal/workloads/viaggi.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-portal/workloads/viaggi.json new file mode 100644 index 0000000000..679f23d38b --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-portal/workloads/viaggi.json @@ -0,0 +1,195 @@ +{ + "name": "viaggi", + "cluster": "Kubernetes", + "type": "Deployment", + "createdAt": "2024-03-13T09:49:39Z", + "resourceVersion": "61419", + "istioSidecar": true, + "istioAmbient": false, + "additionalDetailSample": null, + "labels": { + "app": "viaggi", + "version": "v1" + }, + "appLabel": true, + "versionLabel": true, + "podCount": 0, + "annotations": { + "deployment.kubernetes.io/revision": "1", + "kubectl.kubernetes.io/last-applied-configuration": "{\"apiVersion\":\"apps/v1\",\"kind\":\"Deployment\",\"metadata\":{\"annotations\":{},\"name\":\"viaggi\",\"namespace\":\"travel-portal\"},\"spec\":{\"replicas\":1,\"selector\":{\"matchLabels\":{\"app\":\"viaggi\",\"version\":\"v1\"}},\"template\":{\"metadata\":{\"annotations\":{\"proxy.istio.io/config\":\"tracing:\\n zipkin:\\n address: zipkin.istio-system:9411\\n sampling: 10\\n custom_tags:\\n http.header.portal:\\n header:\\n name: portal\\n http.header.device:\\n header:\\n name: device\\n http.header.user:\\n header:\\n name: user\\n http.header.travel:\\n header:\\n name: travel\\n\",\"readiness.status.sidecar.istio.io/applicationPorts\":\"\"},\"labels\":{\"app\":\"viaggi\",\"version\":\"v1\"}},\"spec\":{\"containers\":[{\"env\":[{\"name\":\"LISTEN_ADDRESS\",\"value\":\":8000\"},{\"name\":\"PORTAL_COORDINATES\",\"value\":\"41.890668,12.492194\"},{\"name\":\"PORTAL_COUNTRY\",\"value\":\"Italy\"},{\"name\":\"PORTAL_NAME\",\"value\":\"viaggi.it\"},{\"name\":\"TRAVELS_AGENCY_SERVICE\",\"value\":\"http://travels.travel-agency:8000\"}],\"image\":\"quay.io/kiali/demo_travels_portal:v1\",\"imagePullPolicy\":\"IfNotPresent\",\"name\":\"control\",\"ports\":[{\"containerPort\":8000}],\"securityContext\":{\"allowPrivilegeEscalation\":false,\"capabilities\":{\"drop\":[\"ALL\"]},\"privileged\":false,\"readOnlyRootFilesystem\":true}}]}}}}\n" + }, + "healthAnnotations": {}, + "istioReferences": null, + "dashboardAnnotations": {}, + "serviceAccountNames": null, + "desiredReplicas": 1, + "currentReplicas": 1, + "availableReplicas": 1, + "pods": [ + { + "name": "viaggi-65ff94c868-txxcq", + "labels": { + "app": "viaggi", + "pod-template-hash": "65ff94c868", + "security.istio.io/tlsMode": "istio", + "service.istio.io/canonical-name": "viaggi", + "service.istio.io/canonical-revision": "v1", + "version": "v1" + }, + "createdAt": "2024-03-13T09:49:39Z", + "createdBy": [ + { + "name": "viaggi-65ff94c868", + "kind": "ReplicaSet" + } + ], + "containers": [ + { + "name": "control", + "image": "quay.io/kiali/demo_travels_portal:v1", + "isProxy": false, + "isReady": true, + "isAmbient": false + } + ], + "istioContainers": [ + { + "name": "istio-proxy", + "image": "gcr.io/istio-release/proxyv2:1.21.0-rc.0", + "isProxy": true, + "isReady": true, + "isAmbient": false + } + ], + "istioInitContainers": [ + { + "name": "istio-init", + "image": "gcr.io/istio-release/proxyv2:1.21.0-rc.0", + "isProxy": true, + "isReady": true, + "isAmbient": false + } + ], + "status": "Running", + "statusMessage": "", + "statusReason": "", + "appLabel": true, + "versionLabel": true, + "annotations": { + "istio.io/rev": "default", + "kubectl.kubernetes.io/default-container": "control", + "kubectl.kubernetes.io/default-logs-container": "control", + "prometheus.io/path": "/stats/prometheus", + "prometheus.io/port": "15020", + "prometheus.io/scrape": "true", + "proxy.istio.io/config": "tracing:\n zipkin:\n address: zipkin.istio-system:9411\n sampling: 10\n custom_tags:\n http.header.portal:\n header:\n name: portal\n http.header.device:\n header:\n name: device\n http.header.user:\n header:\n name: user\n http.header.travel:\n header:\n name: travel\n", + "readiness.status.sidecar.istio.io/applicationPorts": "", + "sidecar.istio.io/status": "{\"initContainers\":[\"istio-init\"],\"containers\":[\"istio-proxy\"],\"volumes\":[\"workload-socket\",\"credential-socket\",\"workload-certs\",\"istio-envoy\",\"istio-data\",\"istio-podinfo\",\"istio-token\",\"istiod-ca-cert\"],\"imagePullSecrets\":null,\"revision\":\"default\"}" + }, + "proxyStatus": { + "CDS": "Synced", + "EDS": "Synced", + "LDS": "Synced", + "RDS": "Synced" + }, + "serviceAccountName": "default" + } + ], + "services": [ + { + "name": "viaggi", + "namespace": "travel-portal", + "istioSidecar": true, + "cluster": "Kubernetes", + "istioAmbient": false, + "appLabel": true, + "additionalDetailSample": null, + "annotations": null, + "healthAnnotations": {}, + "ports": null, + "labels": { + "app": "viaggi" + }, + "selector": { + "app": "viaggi" + }, + "istioReferences": [], + "kialiWizard": "", + "serviceRegistry": "Kubernetes", + "health": { + "requests": { + "inbound": {}, + "outbound": {}, + "healthAnnotations": {} + } + } + } + ], + "runtimes": [ + { + "name": "", + "dashboardRefs": [ + { + "template": "envoy", + "title": "Envoy Metrics" + } + ] + } + ], + "additionalDetails": [], + "validations": { + "gateway": { + "bookinfo-gateway.bookinfo": { + "name": "bookinfo-gateway", + "objectType": "gateway", + "valid": false, + "checks": [ + { + "code": "KIA0302", + "message": "No matching workload found for gateway selector in this namespace", + "severity": "warning", + "path": "spec/selector" + } + ], + "references": null + } + }, + "virtualservice": { + "bookinfo.bookinfo": { + "name": "bookinfo", + "objectType": "virtualservice", + "valid": true, + "checks": [], + "references": null + } + }, + "workload": { + "viaggi.travel-portal": { + "name": "viaggi", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + } + } + }, + "waypointWorkloads": null, + "health": { + "workloadStatus": { + "name": "viaggi", + "desiredReplicas": 1, + "currentReplicas": 1, + "availableReplicas": 1, + "syncedProxies": 1 + }, + "requests": { + "inbound": {}, + "outbound": { + "http": { + "200": 0.2666666666666666 + } + }, + "healthAnnotations": {} + } + } +} diff --git a/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-portal/workloads/voyages.json b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-portal/workloads/voyages.json new file mode 100644 index 0000000000..ffc5c232e5 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/__fixtures__/namespaces/travel-portal/workloads/voyages.json @@ -0,0 +1,195 @@ +{ + "name": "voyages", + "cluster": "Kubernetes", + "type": "Deployment", + "createdAt": "2024-03-13T09:49:39Z", + "resourceVersion": "61506", + "istioSidecar": true, + "istioAmbient": false, + "additionalDetailSample": null, + "labels": { + "app": "voyages", + "version": "v1" + }, + "appLabel": true, + "versionLabel": true, + "podCount": 0, + "annotations": { + "deployment.kubernetes.io/revision": "1", + "kubectl.kubernetes.io/last-applied-configuration": "{\"apiVersion\":\"apps/v1\",\"kind\":\"Deployment\",\"metadata\":{\"annotations\":{},\"name\":\"voyages\",\"namespace\":\"travel-portal\"},\"spec\":{\"replicas\":1,\"selector\":{\"matchLabels\":{\"app\":\"voyages\",\"version\":\"v1\"}},\"template\":{\"metadata\":{\"annotations\":{\"proxy.istio.io/config\":\"tracing:\\n zipkin:\\n address: zipkin.istio-system:9411\\n sampling: 10\\n custom_tags:\\n http.header.portal:\\n header:\\n name: portal\\n http.header.device:\\n header:\\n name: device\\n http.header.user:\\n header:\\n name: user\\n http.header.travel:\\n header:\\n name: travel\\n\",\"readiness.status.sidecar.istio.io/applicationPorts\":\"\"},\"labels\":{\"app\":\"voyages\",\"version\":\"v1\"}},\"spec\":{\"containers\":[{\"env\":[{\"name\":\"LISTEN_ADDRESS\",\"value\":\":8000\"},{\"name\":\"PORTAL_COORDINATES\",\"value\":\"48.861310,2.337418\"},{\"name\":\"PORTAL_COUNTRY\",\"value\":\"France\"},{\"name\":\"PORTAL_NAME\",\"value\":\"voyages.fr\"},{\"name\":\"TRAVELS_AGENCY_SERVICE\",\"value\":\"http://travels.travel-agency:8000\"}],\"image\":\"quay.io/kiali/demo_travels_portal:v1\",\"imagePullPolicy\":\"IfNotPresent\",\"name\":\"voyages\",\"ports\":[{\"containerPort\":8000}],\"securityContext\":{\"allowPrivilegeEscalation\":false,\"capabilities\":{\"drop\":[\"ALL\"]},\"privileged\":false,\"readOnlyRootFilesystem\":true}}]}}}}\n" + }, + "healthAnnotations": {}, + "istioReferences": null, + "dashboardAnnotations": {}, + "serviceAccountNames": null, + "desiredReplicas": 1, + "currentReplicas": 1, + "availableReplicas": 1, + "pods": [ + { + "name": "voyages-59857896bf-86tq2", + "labels": { + "app": "voyages", + "pod-template-hash": "59857896bf", + "security.istio.io/tlsMode": "istio", + "service.istio.io/canonical-name": "voyages", + "service.istio.io/canonical-revision": "v1", + "version": "v1" + }, + "createdAt": "2024-03-13T09:49:39Z", + "createdBy": [ + { + "name": "voyages-59857896bf", + "kind": "ReplicaSet" + } + ], + "containers": [ + { + "name": "voyages", + "image": "quay.io/kiali/demo_travels_portal:v1", + "isProxy": false, + "isReady": true, + "isAmbient": false + } + ], + "istioContainers": [ + { + "name": "istio-proxy", + "image": "gcr.io/istio-release/proxyv2:1.21.0-rc.0", + "isProxy": true, + "isReady": true, + "isAmbient": false + } + ], + "istioInitContainers": [ + { + "name": "istio-init", + "image": "gcr.io/istio-release/proxyv2:1.21.0-rc.0", + "isProxy": true, + "isReady": true, + "isAmbient": false + } + ], + "status": "Running", + "statusMessage": "", + "statusReason": "", + "appLabel": true, + "versionLabel": true, + "annotations": { + "istio.io/rev": "default", + "kubectl.kubernetes.io/default-container": "voyages", + "kubectl.kubernetes.io/default-logs-container": "voyages", + "prometheus.io/path": "/stats/prometheus", + "prometheus.io/port": "15020", + "prometheus.io/scrape": "true", + "proxy.istio.io/config": "tracing:\n zipkin:\n address: zipkin.istio-system:9411\n sampling: 10\n custom_tags:\n http.header.portal:\n header:\n name: portal\n http.header.device:\n header:\n name: device\n http.header.user:\n header:\n name: user\n http.header.travel:\n header:\n name: travel\n", + "readiness.status.sidecar.istio.io/applicationPorts": "", + "sidecar.istio.io/status": "{\"initContainers\":[\"istio-init\"],\"containers\":[\"istio-proxy\"],\"volumes\":[\"workload-socket\",\"credential-socket\",\"workload-certs\",\"istio-envoy\",\"istio-data\",\"istio-podinfo\",\"istio-token\",\"istiod-ca-cert\"],\"imagePullSecrets\":null,\"revision\":\"default\"}" + }, + "proxyStatus": { + "CDS": "Synced", + "EDS": "Synced", + "LDS": "Synced", + "RDS": "Synced" + }, + "serviceAccountName": "default" + } + ], + "services": [ + { + "name": "voyages", + "namespace": "travel-portal", + "istioSidecar": true, + "cluster": "Kubernetes", + "istioAmbient": false, + "appLabel": true, + "additionalDetailSample": null, + "annotations": null, + "healthAnnotations": {}, + "ports": null, + "labels": { + "app": "voyages" + }, + "selector": { + "app": "voyages" + }, + "istioReferences": [], + "kialiWizard": "", + "serviceRegistry": "Kubernetes", + "health": { + "requests": { + "inbound": {}, + "outbound": {}, + "healthAnnotations": {} + } + } + } + ], + "runtimes": [ + { + "name": "", + "dashboardRefs": [ + { + "template": "envoy", + "title": "Envoy Metrics" + } + ] + } + ], + "additionalDetails": [], + "validations": { + "gateway": { + "bookinfo-gateway.bookinfo": { + "name": "bookinfo-gateway", + "objectType": "gateway", + "valid": false, + "checks": [ + { + "code": "KIA0302", + "message": "No matching workload found for gateway selector in this namespace", + "severity": "warning", + "path": "spec/selector" + } + ], + "references": null + } + }, + "virtualservice": { + "bookinfo.bookinfo": { + "name": "bookinfo", + "objectType": "virtualservice", + "valid": true, + "checks": [], + "references": null + } + }, + "workload": { + "voyages.travel-portal": { + "name": "voyages", + "objectType": "workload", + "valid": true, + "checks": [], + "references": null + } + } + }, + "waypointWorkloads": null, + "health": { + "workloadStatus": { + "name": "voyages", + "desiredReplicas": 1, + "currentReplicas": 1, + "availableReplicas": 1, + "syncedProxies": 1 + }, + "requests": { + "inbound": {}, + "outbound": { + "http": { + "200": 0.2666666666666666 + } + }, + "healthAnnotations": {} + } + } +} diff --git a/workspaces/kiali/plugins/kiali/dev/index.tsx b/workspaces/kiali/plugins/kiali/dev/index.tsx new file mode 100644 index 0000000000..0d05aecfe9 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/index.tsx @@ -0,0 +1,191 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import React from 'react'; + +import { Content, InfoCard, Page } from '@backstage/core-components'; +import { createRoutableExtension } from '@backstage/core-plugin-api'; +import { createDevApp } from '@backstage/dev-utils'; +import { EntityProvider } from '@backstage/plugin-catalog-react'; +import { TestApiProvider } from '@backstage/test-utils'; + +import { Grid } from '@material-ui/core'; +import { getAllThemes } from '@redhat-developer/red-hat-developer-hub-theme'; + +import { EntityKialiResourcesCard, kialiPlugin } from '../src'; +import { KialiHelper } from '../src/pages/Kiali/KialiHelper'; +import { KialiNoAnnotation } from '../src/pages/Kiali/KialiNoAnnotation'; +import { KialiNoResources } from '../src/pages/Kiali/KialiNoResources'; +import { EntityKialiGraphCard, pluginName } from '../src/plugin'; +import { rootRouteRef } from '../src/routes'; +import { kialiApiRef } from '../src/services/Api'; +import { KialiChecker, ValidationCategory } from '../src/store/KialiProvider'; +import { mockEntity, mockEntityAnnotationNoNamespace } from './mockEntity'; +import { MockKialiClient } from './MockProvider'; + +const KialiMock = kialiPlugin.provide( + createRoutableExtension({ + name: 'KialiPage', + component: () => import('./MockProvider').then(m => m.MockProvider), + mountPoint: rootRouteRef, + }), +); + +const MockEntityCard = () => { + const content = ( + +
    + + + + + + + +
    +
    + ); + + return ( + + {content} + + ); +}; + +const MockEntityGraphCard = () => { + const content = ( + +
    + + + + + + + +
    +
    + ); + + return ( + + {content} + + ); +}; + +const MockKialiError = () => { + const errorsTypes: KialiChecker[] = [ + { + verify: false, + title: 'Error reaching Kiali', + message: ' Error status code 502', + category: ValidationCategory.networking, + helper: 'Check if http://kialiendpoint works', + }, + { + verify: false, + title: 'Authentication failed. Missing Configuration', + message: `Attribute 'serviceAccountToken' is not in the backstage configuration`, + category: ValidationCategory.configuration, + helper: 'Check if http://kialiendpoint works', + missingAttributes: ['serviceAccountToken'], + }, + { + verify: false, + title: 'Authentication failed. Not supported', + message: `Strategy oauth2 is not supported in Kiali backstage plugin yet`, + category: ValidationCategory.configuration, + }, + { + verify: false, + title: 'Authentication failed', + message: `We can't authenticate`, + category: ValidationCategory.authentication, + }, + { + verify: false, + title: 'Unkown error ', + message: `Internal error`, + category: ValidationCategory.unknown, + }, + { + verify: false, + title: 'kiali version not supported', + message: `Kiali version supported is v1.74, we found version v1.80`, + category: ValidationCategory.versionSupported, + }, + { + verify: true, + title: 'True verification, we not expect something', + category: ValidationCategory.unknown, + }, + ]; + + return ( + + + + {errorsTypes.map(error => ( + + + + + + ))} + + + + ); +}; + +createDevApp() + .registerPlugin(kialiPlugin) + .addThemes(getAllThemes()) + .addPage({ + element: , + title: 'KialiPage', + path: `/${pluginName}`, + }) + .addPage({ + element: , + title: 'Kiali error', + path: `/kiali-error`, + }) + .addPage({ + element: , + title: 'No resource', + path: '/no-resource', + }) + .addPage({ + element: , + title: 'No Annotation', + path: '/no-annotation', + }) + .addPage({ + element: , + title: 'Resources card', + path: '/kiali-entity-card', + }) + .addPage({ + element: , + title: 'Graph card', + path: '/kiali-graph-card', + }) + .render(); diff --git a/workspaces/kiali/plugins/kiali/dev/mockEntity.ts b/workspaces/kiali/plugins/kiali/dev/mockEntity.ts new file mode 100644 index 0000000000..3e3b3253e7 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/dev/mockEntity.ts @@ -0,0 +1,69 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { Entity } from '@backstage/catalog-model'; + +export const mockEntity: Entity = { + apiVersion: 'backstage.io/v1alpha1', + kind: 'Component', + metadata: { + name: 'backstage', + description: 'backstage.io', + annotations: { + 'backstage.io/kubernetes-namespace': + 'istio-system,bookinfo,travel-agency,travel-portal,travel-control', + }, + }, + spec: { + lifecycle: 'production', + type: 'service', + owner: 'user:guest', + }, +}; + +export const mockEntityNoAnnotation: Entity = { + apiVersion: 'backstage.io/v1alpha1', + kind: 'Component', + metadata: { + name: 'backstage', + description: 'backstage.io', + annotations: { + 'backstage.io/my-annotation': 'no annotation', + 'backstage.io/another-annotation': 'no other annotation', + }, + }, + spec: { + lifecycle: 'production', + type: 'service', + owner: 'user:guest', + }, +}; + +export const mockEntityAnnotationNoNamespace: Entity = { + apiVersion: 'backstage.io/v1alpha1', + kind: 'Component', + metadata: { + name: 'backstage', + description: 'backstage.io', + annotations: { + 'backstage.io/kubernetes-namespace': 'no-namespace', + }, + }, + spec: { + lifecycle: 'production', + type: 'service', + owner: 'user:guest', + }, +}; diff --git a/workspaces/kiali/plugins/kiali/package.json b/workspaces/kiali/plugins/kiali/package.json new file mode 100644 index 0000000000..6e15f424de --- /dev/null +++ b/workspaces/kiali/plugins/kiali/package.json @@ -0,0 +1,118 @@ +{ + "name": "@backstage-community/plugin-kiali", + "version": "1.35.0", + "main": "src/index.ts", + "types": "src/index.ts", + "license": "Apache-2.0", + "publishConfig": { + "access": "public", + "main": "dist/index.esm.js", + "types": "dist/index.d.ts" + }, + "backstage": { + "role": "frontend-plugin", + "supported-versions": "1.32.5", + "pluginId": "kiali", + "pluginPackages": [ + "@backstage-community/plugin-kiali", + "@backstage-community/plugin-kiali-backend" + ] + }, + "sideEffects": false, + "scripts": { + "start": "backstage-cli package start", + "build": "backstage-cli package build", + "lint": "backstage-cli package lint", + "test": "backstage-cli package test", + "clean": "backstage-cli package clean", + "prepack": "backstage-cli package prepack", + "postpack": "backstage-cli package postpack" + }, + "dependencies": { + "@backstage/catalog-model": "^1.7.0", + "@backstage/core-components": "^0.16.2", + "@backstage/core-plugin-api": "^1.10.0", + "@backstage/plugin-catalog-react": "^1.14.0", + "@material-ui/core": "^4.9.13", + "@material-ui/icons": "^4.11.3", + "@material-ui/lab": "^4.0.0-alpha.45", + "@mui/icons-material": "^5.15.8", + "@patternfly/patternfly": "^5.1.0", + "@patternfly/react-charts": "^7.1.1", + "@patternfly/react-core": "^5.1.1", + "@patternfly/react-icons": "^5.1.1", + "@patternfly/react-topology": "5.3.0", + "ace-builds": "^1.32.7", + "axios": "^1.7.4", + "cytoscape": "3.30.2", + "d3-format": "^3.1.0", + "deep-freeze": "0.0.1", + "history": "^5.3.0", + "js-yaml": "^3.13.1", + "json-beautify": "1.1.1", + "lodash": "^4.17.21", + "micro-memoize": "4.1.2", + "moment": "^2.29.4", + "prop-types": "^15.8.1", + "react-ace": "9.5.0", + "react-copy-to-clipboard": "5.x", + "react-use": "^17.4.0", + "regression": "^2.0.1", + "screenfull": "5.2.0", + "typesafe-actions": "^4.2.1", + "typestyle": "^2.4.0", + "victory-box-plot": "^36.9.1", + "victory-core": "^36.9.1", + "victory-voronoi-container": "^36.9.1" + }, + "peerDependencies": { + "react": "^16.13.1 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.13.1 || ^17.0.0 || ^18.0.0", + "react-router-dom": "^6.0.0" + }, + "devDependencies": { + "@backstage/cli": "0.28.2", + "@backstage/dev-utils": "1.1.2", + "@backstage/test-utils": "1.7.0", + "@playwright/test": "1.45.3", + "@redhat-developer/red-hat-developer-hub-theme": "0.4.0", + "@testing-library/dom": "^10.0.0", + "@testing-library/jest-dom": "^6.0.0", + "@testing-library/react": "^15.0.0", + "@types/lodash": "^4.14.151", + "@types/node": "20.14.2", + "@types/react": "^18.2.58", + "@types/react-copy-to-clipboard": "5.0.7", + "@types/react-dom": "^18.2.19", + "@types/regression": "2.0.6", + "canvas": "^2.11.2", + "cross-fetch": "4.0.0", + "jest-canvas-mock": "2.5.2", + "prettier": "3.3.3", + "react": "^16.13.1 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.13.1 || ^17.0.0 || ^18.0.0", + "react-router-dom": "^6.0.0", + "start-server-and-test": "2.0.8" + }, + "files": [ + "dist", + "dist-scalprum" + ], + "repository": { + "type": "git", + "url": "https://github.com/backstage/community-plugins", + "directory": "workspaces/kiali/plugins/kiali" + }, + "keywords": [ + "support:tech-preview", + "lifecycle:active", + "backstage", + "plugin" + ], + "homepage": "https://red.ht/rhdh", + "bugs": "https://github.com/backstage/community-plugins/issues", + "maintainers": [ + "@aljesusg" + ], + "author": "The Backstage Community" +} diff --git a/workspaces/kiali/plugins/kiali/src/actions/ActionKeys.ts b/workspaces/kiali/plugins/kiali/src/actions/ActionKeys.ts new file mode 100644 index 0000000000..dc22b0a2e8 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/actions/ActionKeys.ts @@ -0,0 +1,121 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export enum ActionKeys { + INCREMENT_LOADING_COUNTER = 'INCREMENT_LOADING_COUNTER', + DECREMENT_LOADING_COUNTER = 'DECREMENT_LOADING_COUNTER', + SET_PAGE_VISIBILITY_HIDDEN = 'SET_PAGE_VISIBILITY_HIDDEN', + SET_PAGE_VISIBILITY_VISIBLE = 'SET_PAGE_VISIBILITY_VISIBLE', + + GRAPH_ON_NAMESPACE_CHANGE = 'GRAPH_ON_NAMESPACE_CHANGE', + GRAPH_SET_DEFINITION = 'GRAPH_SET_DEFINITION', + GRAPH_SET_EDGE_MODE = 'GRAPH_SET_EDGE_MODE', + GRAPH_SET_LAYOUT = 'GRAPH_SET_LAYOUT', + GRAPH_SET_NAMESPACE_LAYOUT = 'GRAPH_SET_NAMESPACE_LAYOUT', + GRAPH_SET_NODE = 'GRAPH_SET_NODE', + GRAPH_SET_RANK_RESULT = 'GRAPH_SET_RANK_RESULT', + GRAPH_SET_UPDATE_TIME = 'GRAPH_SET_UPDATE_TIME', + + GRAPH_TOOLBAR_RESET_SETTINGS = 'GRAPH_TOOLBAR_RESET_SETTINGS', + + GRAPH_TOOLBAR_SET_EDGE_LABELS = 'GRAPH_TOOLBAR_SET_EDGE_LABEL_MODE', + GRAPH_TOOLBAR_SET_FIND_VALUE = 'GRAPH_TOOLBAR_SET_FIND_VALUE', + GRAPH_TOOLBAR_SET_GRAPH_TYPE = 'GRAPH_TOOLBAR_SET_GRAPH_TYPE', + GRAPH_TOOLBAR_SET_HIDE_VALUE = 'GRAPH_TOOLBAR_SET_HIDE_VALUE', + GRAPH_TOOLBAR_SET_IDLE_NODES = 'GRAPH_TOOLBAR_SET_IDLE_NODES', + GRAPH_TOOLBAR_SET_RANK_BY = 'GRAPH_TOOLBAR_SET_RANK_BY', + GRAPH_TOOLBAR_SET_TRAFFIC_RATES = 'GRAPH_TOOLBAR_SET_TRAFFIC_RATES', + + // Toggle Actions + GRAPH_TOOLBAR_TOGGLE_BOX_BY_CLUSTER = 'GRAPH_TOOLBAR_TOGGLE_BOX_BY_CLUSTER', + GRAPH_TOOLBAR_TOGGLE_BOX_BY_NAMESPACE = 'GRAPH_TOOLBAR_TOGGLE_BOX_BY_NAMESPACE', + GRAPH_TOOLBAR_TOGGLE_COMPRESS_ON_HIDE = 'GRAPH_TOOLBAR_TOGGLE_COMPRESS_ON_HIDE', + GRAPH_TOOLBAR_TOGGLE_GRAPH_VIRTUAL_SERVICES = 'GRAPH_TOOLBAR_TOGGLE_GRAPH_VIRTUAL_SERVICES', + GRAPH_TOOLBAR_TOGGLE_GRAPH_MISSING_SIDECARS = 'GRAPH_TOOLBAR_TOGGLE_GRAPH_MISSING_SIDECARS', + GRAPH_TOOLBAR_TOGGLE_GRAPH_SECURITY = 'GRAPH_TOOLBAR_TOGGLE_GRAPH_SECURITY', + GRAPH_TOOLBAR_TOGGLE_LEGEND = 'GRAPH_TOOLBAR_TOGGLE_LEGEND', + GRAPH_TOOLBAR_TOGGLE_FIND_HELP = 'GRAPH_TOOLBAR_TOGGLE_FIND_HELP', + GRAPH_TOOLBAR_TOGGLE_IDLE_EDGES = 'GRAPH_TOOLBAR_TOGGLE_IDLE_EDGES', + GRAPH_TOOLBAR_TOGGLE_IDLE_NODES = 'GRAPH_TOOLBAR_TOGGLE_IDLE_NODES', + GRAPH_TOOLBAR_TOGGLE_OPERATION_NODES = 'GRAPH_TOOLBAR_TOGGLE_OPERATION_NODES', + GRAPH_TOOLBAR_TOGGLE_RANK = 'GRAPH_TOOLBAR_TOGGLE_RANK', + GRAPH_TOOLBAR_TOGGLE_RANK_BY = 'GRAPH_TOOLBAR_TOGGLE_RANK_BY', + GRAPH_TOOLBAR_TOGGLE_SERVICE_NODES = 'GRAPH_TOOLBAR_TOGGLE_SERVICE_NODES', + GRAPH_TOOLBAR_TOGGLE_TRAFFIC_ANIMATION = 'GRAPH_TOOLBAR_TOGGLE_TRAFFIC_ANIMATION', + + GRAPH_UPDATE_SUMMARY = 'GRAPH_UPDATE_SUMMARY', + + // Disable Actions + ENABLE_GRAPH_FILTERS = 'ENABLE_GRAPH_FILTERS', + + HELP_STATUS_REFRESH = 'HELP_STATUS_REFRESH', + + JAEGER_SET_URL = 'JAEGER_SET_URL', + JAEGER_SET_ENABLED = 'JAEGER_SET_ENABLED', + JAEGER_SET_INFO = 'JAEGER_SET_INFO', + JAEGER_SET_TRACE_ID = 'JAEGER_SET_TRACE_ID', + JAEGER_SET_TRACE = 'JAEGER_SET_TRACE', + + LOGIN_REQUEST = 'LOGIN_REQUEST', + LOGIN_EXTEND = 'LOGIN_EXTEND', + LOGIN_SUCCESS = 'LOGIN_SUCCESS', + LOGIN_FAILURE = 'LOGIN_FAILURE', + LOGOUT_SUCCESS = 'LOGOUT_SUCCESS', + SESSION_EXPIRED = 'SESSION_EXPIRED', + SET_LANDING_ROUTE = 'SET_LANDING_ROUTE', + + MTLS_SET_INFO = 'MTLS_SET_INFO', + + ISTIO_STATUS_SET_INFO = 'ISTIO_STATUS_SET_INFO', + ISTIO_SET_CERTS_INFO = 'ISTIO_SET_CERTS_INFO', + + MC_ADD_MESSAGE = 'MC_ADD_MESSAGE', + MC_REMOVE_MESSAGE = 'MC_REMOVE_MESSAGE', + MC_MARK_MESSAGE_AS_READ = 'MC_MARK_MESSAGE_AS_READ', + MC_TOGGLE_MESSAGE_DETAIL = 'MC_TOGGLE_MESSAGE_DETAIL', + MC_SHOW = 'MC_SHOW', + MC_HIDE = 'MC_HIDE', + MC_TOGGLE_EXPAND = 'MC_TOGGLE_EXPAND', + MC_TOGGLE_GROUP = 'MC_TOGGLE_GROUP', + MC_HIDE_NOTIFICATION = 'MC_HIDE_NOTIFICATION', + MC_EXPAND_GROUP = 'MC_EXPAND_GROUP', + + METRICS_STATS_SET = 'METRICS_STATS_SET', + + NAMESPACE_REQUEST_STARTED = 'NAMESPACE_REQUEST_STARTED', + NAMESPACE_SUCCESS = 'NAMESPACE_SUCCESS', + NAMESPACE_FAILED = 'NAMESPACE_FAILED', + TOGGLE_ACTIVE_NAMESPACE = 'TOGGLE_ACTIVE_NAMESPACE', + SET_ACTIVE_NAMESPACES = 'SET_ACTIVE_NAMESPACES', + NAMESPACE_SET_FILTER = 'NAMESPACE_SET_FILTER', + + CLUSTER_SET_FILTER = 'CLUSTER_SET_FILTER', + SET_ACTIVE_CLUSTERS = 'SET_ACTIVE_CLUSTERS', + TOGGLE_ACTIVE_CLUSTER = 'TOGGLE_ACTIVE_CLUSTER', + + NAV_COLLAPSE = 'NAV_COLLAPSE', + SET_DURATION = 'SET_DURATION', + SET_KIOSK = 'SET_KIOSK', + SET_THEME = 'SET_THEME', + SET_LAST_REFRESH = 'SET_LAST_REFRESH', + SET_REFRESH_INTERVAL = 'SET_REFRESH_INTERVAL', + SET_REPLAY_QUERY_TIME = 'SET_REPLAY_QUERY_TIME', + SET_TIME_RANGE = 'SET_TIME_RANGE', + TOGGLE_REPLAY_ACTIVE = 'TOGGLE_REPLAY_ACTIVE', + + TOUR_END = 'TOUR_END', + TOUR_SET_STOP = 'TOUR_SET_STOP', + TOUR_START = 'TOUR_START', +} diff --git a/workspaces/kiali/plugins/kiali/src/actions/HelpDropdownActions.ts b/workspaces/kiali/plugins/kiali/src/actions/HelpDropdownActions.ts new file mode 100644 index 0000000000..d1cb8877be --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/actions/HelpDropdownActions.ts @@ -0,0 +1,34 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { ActionType, createAction } from 'typesafe-actions'; + +import { StatusState } from '../types/StatusState'; +import { ActionKeys } from './ActionKeys'; + +export const HelpDropdownActions: { [key: string]: any } = { + statusRefresh: createAction( + ActionKeys.HELP_STATUS_REFRESH, + resolve => (status: StatusState) => + resolve({ + status: status.status, + externalServices: status.externalServices, + warningMessages: status.warningMessages, + istioEnvironment: status.istioEnvironment, + }), + ), +}; + +export type HelpDropdownAction = ActionType; diff --git a/workspaces/kiali/plugins/kiali/src/actions/IstioCertsInfoActions.ts b/workspaces/kiali/plugins/kiali/src/actions/IstioCertsInfoActions.ts new file mode 100644 index 0000000000..5991bf4059 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/actions/IstioCertsInfoActions.ts @@ -0,0 +1,25 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { ActionType, createStandardAction } from 'typesafe-actions'; + +import { CertsInfo } from '../types/CertsInfo'; +import { ActionKeys } from './ActionKeys'; + +export const IstioCertsInfoActions = { + setinfo: createStandardAction(ActionKeys.ISTIO_SET_CERTS_INFO)(), +}; + +export type IstioCertsInfoAction = ActionType; diff --git a/workspaces/kiali/plugins/kiali/src/actions/IstioStatusActions.ts b/workspaces/kiali/plugins/kiali/src/actions/IstioStatusActions.ts new file mode 100644 index 0000000000..3b2514f9c9 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/actions/IstioStatusActions.ts @@ -0,0 +1,27 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { ActionType, createStandardAction } from 'typesafe-actions'; + +import { ComponentStatus } from '../types/IstioStatus'; +import { ActionKeys } from './ActionKeys'; + +export const IstioStatusActions = { + setinfo: createStandardAction(ActionKeys.ISTIO_STATUS_SET_INFO)< + ComponentStatus[] + >(), +}; + +export type IstioStatusAction = ActionType; diff --git a/workspaces/kiali/plugins/kiali/src/actions/KialiAppAction.ts b/workspaces/kiali/plugins/kiali/src/actions/KialiAppAction.ts new file mode 100644 index 0000000000..78149cdb95 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/actions/KialiAppAction.ts @@ -0,0 +1,33 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { HelpDropdownAction } from './HelpDropdownActions'; +import { IstioCertsInfoAction } from './IstioCertsInfoActions'; +import { IstioStatusAction } from './IstioStatusActions'; +import { LoginAction } from './LoginActions'; +import { MeshTlsAction } from './MeshTlsActions'; +import { MessageCenterAction } from './MessageCenterActions'; +import { NamespaceAction } from './NamespaceAction'; +import { UserSettingsAction } from './UserSettingsActions'; + +export type KialiAppAction = + | HelpDropdownAction + | LoginAction + | NamespaceAction + | UserSettingsAction + | IstioCertsInfoAction + | IstioStatusAction + | MeshTlsAction + | MessageCenterAction; diff --git a/workspaces/kiali/plugins/kiali/src/actions/LoginActions.ts b/workspaces/kiali/plugins/kiali/src/actions/LoginActions.ts new file mode 100644 index 0000000000..b8d5403724 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/actions/LoginActions.ts @@ -0,0 +1,78 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { + ActionType, + createAction, + createStandardAction, +} from 'typesafe-actions'; + +import { LoginSession, LoginStatus } from '../store/Store'; +import { ActionKeys } from './ActionKeys'; + +export interface LoginPayload { + error?: any; + landingRoute?: string; + session?: LoginSession; + status: LoginStatus; +} + +// synchronous action creators +export const LoginActions: { [key: string]: any } = { + loginRequest: createAction(ActionKeys.LOGIN_REQUEST), + loginExtend: createAction( + ActionKeys.LOGIN_EXTEND, + resolve => (session: LoginSession) => + resolve({ + status: LoginStatus.loggedIn, + session: session, + error: undefined, + } as LoginPayload), + ), + loginSuccess: createAction( + ActionKeys.LOGIN_SUCCESS, + resolve => (session: LoginSession) => + resolve({ + status: LoginStatus.loggedIn, + session: session, + error: undefined, + uiExpiresOn: session.expiresOn, + } as LoginPayload), + ), + loginFailure: createAction( + ActionKeys.LOGIN_FAILURE, + resolve => (error: any) => + resolve({ + status: LoginStatus.error, + session: undefined, + error: error, + } as LoginPayload), + ), + logoutSuccess: createAction( + ActionKeys.LOGOUT_SUCCESS, + resolve => () => + resolve({ + status: LoginStatus.loggedOut, + session: undefined, + error: undefined, + } as LoginPayload), + ), + sessionExpired: createAction(ActionKeys.SESSION_EXPIRED), + setLandingRoute: createStandardAction(ActionKeys.SET_LANDING_ROUTE)< + string | undefined + >(), +}; + +export type LoginAction = ActionType; diff --git a/workspaces/kiali/plugins/kiali/src/actions/MeshTlsActions.ts b/workspaces/kiali/plugins/kiali/src/actions/MeshTlsActions.ts new file mode 100644 index 0000000000..1affed8f94 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/actions/MeshTlsActions.ts @@ -0,0 +1,25 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { ActionType, createStandardAction } from 'typesafe-actions'; + +import { TLSStatus } from '../types/TLSStatus'; +import { ActionKeys } from './ActionKeys'; + +export const MeshTlsActions = { + setinfo: createStandardAction(ActionKeys.MTLS_SET_INFO)(), +}; + +export type MeshTlsAction = ActionType; diff --git a/workspaces/kiali/plugins/kiali/src/actions/MessageCenterActions.ts b/workspaces/kiali/plugins/kiali/src/actions/MessageCenterActions.ts new file mode 100644 index 0000000000..cfe9ba4d4d --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/actions/MessageCenterActions.ts @@ -0,0 +1,74 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { ActionType, createAction } from 'typesafe-actions'; + +import { MessageType } from '../types/MessageCenter'; +import { ActionKeys } from './ActionKeys'; + +const DEFAULT_GROUP_ID = 'default'; +const DEFAULT_MESSAGE_TYPE = MessageType.ERROR; + +type numberOrNumberArray = number | number[]; + +const toNumberArray = (n: numberOrNumberArray) => (Array.isArray(n) ? n : [n]); + +export const MessageCenterActions = { + addMessage: createAction( + ActionKeys.MC_ADD_MESSAGE, + resolve => + ( + content: string, + detail: string, + groupId: string = DEFAULT_GROUP_ID, + messageType: MessageType = DEFAULT_MESSAGE_TYPE, + showNotification: boolean = true, + ) => + resolve({ content, detail, groupId, messageType, showNotification }), + ), + removeMessage: createAction( + ActionKeys.MC_REMOVE_MESSAGE, + resolve => (messageId: numberOrNumberArray) => + resolve({ messageId: toNumberArray(messageId) }), + ), + toggleMessageDetail: createAction( + ActionKeys.MC_TOGGLE_MESSAGE_DETAIL, + resolve => (messageId: numberOrNumberArray) => + resolve({ messageId: toNumberArray(messageId) }), + ), + markAsRead: createAction( + ActionKeys.MC_MARK_MESSAGE_AS_READ, + resolve => (messageId: numberOrNumberArray) => + resolve({ messageId: toNumberArray(messageId) }), + ), + toggleGroup: createAction( + ActionKeys.MC_TOGGLE_GROUP, + resolve => (groupId: string) => resolve({ groupId }), + ), + expandGroup: createAction( + ActionKeys.MC_EXPAND_GROUP, + resolve => (groupId: string) => resolve({ groupId }), + ), + hideNotification: createAction( + ActionKeys.MC_HIDE_NOTIFICATION, + resolve => (messageId: numberOrNumberArray) => + resolve({ messageId: toNumberArray(messageId) }), + ), + showMessageCenter: createAction(ActionKeys.MC_SHOW), + hideMessageCenter: createAction(ActionKeys.MC_HIDE), + toggleExpandedMessageCenter: createAction(ActionKeys.MC_TOGGLE_EXPAND), +}; + +export type MessageCenterAction = ActionType; diff --git a/workspaces/kiali/plugins/kiali/src/actions/NamespaceAction.ts b/workspaces/kiali/plugins/kiali/src/actions/NamespaceAction.ts new file mode 100644 index 0000000000..a30db712df --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/actions/NamespaceAction.ts @@ -0,0 +1,45 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { + ActionType, + createAction, + createStandardAction, +} from 'typesafe-actions'; + +import { Namespace } from '../types/Namespace'; +import { ActionKeys } from './ActionKeys'; + +export const NamespaceActions = { + toggleActiveNamespace: createStandardAction( + ActionKeys.TOGGLE_ACTIVE_NAMESPACE, + )(), + setActiveNamespaces: createStandardAction(ActionKeys.SET_ACTIVE_NAMESPACES)< + Namespace[] + >(), + setFilter: createStandardAction(ActionKeys.NAMESPACE_SET_FILTER)(), + requestStarted: createAction(ActionKeys.NAMESPACE_REQUEST_STARTED), + requestFailed: createAction(ActionKeys.NAMESPACE_FAILED), + receiveList: createAction( + ActionKeys.NAMESPACE_SUCCESS, + resolve => (newList: Namespace[], receivedAt: Date) => + resolve({ + list: newList, + receivedAt: receivedAt, + }), + ), +}; + +export type NamespaceAction = ActionType; diff --git a/workspaces/kiali/plugins/kiali/src/actions/UserSettingsActions.ts b/workspaces/kiali/plugins/kiali/src/actions/UserSettingsActions.ts new file mode 100644 index 0000000000..ccf300cb48 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/actions/UserSettingsActions.ts @@ -0,0 +1,48 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { + ActionType, + createAction, + createStandardAction, +} from 'typesafe-actions'; + +import { + DurationInSeconds, + IntervalInMilliseconds, + TimeInMilliseconds, + TimeRange, +} from '../types/Common'; +import { ActionKeys } from './ActionKeys'; + +export const UserSettingsActions = { + navCollapse: createAction( + ActionKeys.NAV_COLLAPSE, + resolve => (collapsed: boolean) => resolve({ collapse: collapsed }), + ), + setDuration: createStandardAction( + ActionKeys.SET_DURATION, + )(), + setTimeRange: createStandardAction(ActionKeys.SET_TIME_RANGE)(), + setRefreshInterval: createStandardAction( + ActionKeys.SET_REFRESH_INTERVAL, + )(), + setReplayQueryTime: createStandardAction( + ActionKeys.SET_REPLAY_QUERY_TIME, + )(), + toggleReplayActive: createAction(ActionKeys.TOGGLE_REPLAY_ACTIVE), +}; + +export type UserSettingsAction = ActionType; diff --git a/workspaces/kiali/plugins/kiali/src/actions/index.ts b/workspaces/kiali/plugins/kiali/src/actions/index.ts new file mode 100644 index 0000000000..50e95ffeaa --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/actions/index.ts @@ -0,0 +1,19 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export * from './HelpDropdownActions'; +export * from './LoginActions'; +export * from './MessageCenterActions'; +export * from './NamespaceAction'; diff --git a/workspaces/kiali/plugins/kiali/src/app/History.ts b/workspaces/kiali/plugins/kiali/src/app/History.ts new file mode 100644 index 0000000000..b7b9a09fd6 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/app/History.ts @@ -0,0 +1,244 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { + createBrowserHistory, + createHashHistory, + createMemoryHistory, +} from 'history'; + +import { toValidDuration } from '../config/ServerConfig'; +import { BoundsInMilliseconds } from '../types/Common'; + +const historyMode = (window as any).HISTORY_MODE + ? (window as any).HISTORY_MODE + : 'browser'; + +const createHistory = () => { + if (process.env.TEST_RUNNER) { + return createMemoryHistory(); + } else if (historyMode === 'hash') { + return createHashHistory(); + } + return createBrowserHistory(); +}; + +let history = createHistory(); + +/** + * Some platforms set a different basename for each page (e.g., Openshift Console) + * A setHistory method is defined to be able to modify the history basename when user + * routes to a different page within Kiali in these platforms. + * This method is not used in standalone Kiali application + */ +export const setHistory = () => { + history = createHistory(); +}; + +export { history }; + +export enum URLParam { + AGGREGATOR = 'aggregator', + BY_LABELS = 'bylbl', + CLUSTERNAME = 'clusterName', + CONFIG = 'config', + DIRECTION = 'direction', + DISPLAY_MODE = 'displayMode', + DURATION = 'duration', + FOCUS_SELECTOR = 'focusSelector', + FROM = 'from', + GRAPH_ANIMATION = 'animation', + GRAPH_BADGE_SECURITY = 'badgeSecurity', + GRAPH_BADGE_SIDECAR = 'badgeSidecar', + GRAPH_BADGE_VS = 'badgeVS', + GRAPH_BOX_CLUSTER = 'boxCluster', + GRAPH_BOX_NAMESPACE = 'boxNamespace', + GRAPH_COMPRESS_ON_HIDE = 'graphCompressOnHide', + GRAPH_EDGE_LABEL = 'edges', + GRAPH_EDGE_MODE = 'edgeMode', + GRAPH_FIND = 'graphFind', + GRAPH_HIDE = 'graphHide', + GRAPH_IDLE_EDGES = 'idleEdges', + GRAPH_IDLE_NODES = 'idleNodes', + GRAPH_LAYOUT = 'layout', + GRAPH_NAMESPACE_LAYOUT = 'namespaceLayout', + GRAPH_OPERATION_NODES = 'operationNodes', + GRAPH_RANK = 'rank', + GRAPH_RANK_BY = 'rankBy', + GRAPH_REPLAY_ACTIVE = 'replayActive', + GRAPH_REPLAY_INTERVAL = 'replayInterval', + GRAPH_REPLAY_START = 'replayStart', + GRAPH_SERVICE_NODES = 'injectServiceNodes', + GRAPH_TRAFFIC = 'traffic', + GRAPH_TYPE = 'graphType', + JAEGER_ERRORS_ONLY = 'errs', + JAEGER_LIMIT_TRACES = 'limit', + JAEGER_PERCENTILE = 'percentile', + JAEGER_SHOW_SPANS_AVG = 'showSpansAvg', + JAEGER_TRACE_ID = 'traceId', + JAEGER_SPAN_ID = 'spanId', + ISTIO_NAME = 'istioName', + NAMESPACES = 'namespaces', + OVERVIEW_TYPE = 'otype', + DIRECTION_TYPE = 'drtype', + QUANTILES = 'quantiles', + RANGE_DURATION = 'rangeDuration', + REFRESH_INTERVAL = 'refresh', + REPORTER = 'reporter', + SHOW_AVERAGE = 'avg', + SHOW_SPANS = 'spans', + SHOW_TRENDLINES = 'trendlines', + SORT = 'sort', + TO = 'to', + EXPERIMENTAL_FLAGS = 'xflags', + TRACING_ERRORS_ONLY = 'errs', + TRACING_LIMIT_TRACES = 'limit', + TRACING_PERCENTILE = 'percentile', + TRACING_SHOW_SPANS_AVG = 'showSpansAvg', + TRACING_TRACE_ID = 'traceId', + TRACING_SPAN_ID = 'spanId', + TYPE = 'type', +} + +export interface URLParamValue { + name: URLParam; + value: any; +} + +export enum ParamAction { + APPEND, + SET, +} + +export class HistoryManager { + static setParam = (name: URLParam | string, value: string) => { + const urlParams = new URLSearchParams(history.location.search); + urlParams.set(name, value); + history.replace(`${history.location.pathname}?${urlParams.toString()}`); + }; + + static getParam = ( + name: URLParam | string, + urlParams?: URLSearchParams, + ): string | undefined => { + let calculatedParams: URLSearchParams | undefined = urlParams; + if (!calculatedParams) { + calculatedParams = new URLSearchParams(history.location.search); + } + const p = calculatedParams.get(name); + return p ?? undefined; + }; + + static getNumericParam = ( + name: URLParam, + urlParams?: URLSearchParams, + ): number | undefined => { + const p = HistoryManager.getParam(name, urlParams); + return p !== undefined ? Number(p) : undefined; + }; + + static getBooleanParam = ( + name: URLParam | string, + urlParams?: URLSearchParams, + ): boolean | undefined => { + const p = HistoryManager.getParam(name, urlParams); + return p !== undefined ? p === 'true' : undefined; + }; + + static deleteParam = (name: URLParam, historyReplace?: boolean) => { + const urlParams = new URLSearchParams(history.location.search); + urlParams.delete(name); + if (historyReplace) { + history.replace(`${history.location.pathname}?${urlParams.toString()}`); + } else { + history.push(`${history.location.pathname}?${urlParams.toString()}`); + } + }; + + static setParams = ( + params: URLParamValue[], + paramAction?: ParamAction, + historyReplace?: boolean, + ) => { + const urlParams = new URLSearchParams(history.location.search); + + if (params.length > 0 && paramAction === ParamAction.APPEND) { + params.forEach(param => urlParams.delete(param.name)); + } + + params.forEach(param => { + if (param.value === '') { + urlParams.delete(param.name); + } else if (paramAction === ParamAction.APPEND) { + urlParams.append(param.name, param.value); + } else { + urlParams.set(param.name, param.value); + } + }); + + if (historyReplace) { + history.replace(`${history.location.pathname}?${urlParams.toString()}`); + } else { + history.push(`${history.location.pathname}?${urlParams.toString()}`); + } + }; + + static getClusterName = (urlParams?: URLSearchParams): string | undefined => { + let calculatedParams: URLSearchParams | undefined = urlParams; + if (!calculatedParams) { + calculatedParams = new URLSearchParams(history.location.search); + } + return calculatedParams.get(URLParam.CLUSTERNAME) || undefined; + }; + + static getDuration = (urlParams?: URLSearchParams): number | undefined => { + const duration = HistoryManager.getNumericParam( + URLParam.DURATION, + urlParams, + ); + if (duration) { + return toValidDuration(Number(duration)); + } + return undefined; + }; + + static getRangeDuration = ( + urlParams?: URLSearchParams, + ): number | undefined => { + const rangeDuration = HistoryManager.getNumericParam( + URLParam.RANGE_DURATION, + urlParams, + ); + if (rangeDuration) { + return toValidDuration(Number(rangeDuration)); + } + return undefined; + }; + + static getTimeBounds = ( + urlParams?: URLSearchParams, + ): BoundsInMilliseconds | undefined => { + const from = HistoryManager.getNumericParam(URLParam.FROM, urlParams); + if (from) { + const to = HistoryManager.getNumericParam(URLParam.TO, urlParams); + // "to" can be undefined (stands for "now") + return { + from: from, + to: to, + }; + } + return undefined; + }; +} diff --git a/workspaces/kiali/plugins/kiali/src/assets/img/api/graphql.svg b/workspaces/kiali/plugins/kiali/src/assets/img/api/graphql.svg new file mode 100644 index 0000000000..86bebc9dce --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/assets/img/api/graphql.svg @@ -0,0 +1 @@ +GraphQL \ No newline at end of file diff --git a/workspaces/kiali/plugins/kiali/src/assets/img/api/grpc.svg b/workspaces/kiali/plugins/kiali/src/assets/img/api/grpc.svg new file mode 100644 index 0000000000..57241d7735 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/assets/img/api/grpc.svg @@ -0,0 +1 @@ +GRPC \ No newline at end of file diff --git a/workspaces/kiali/plugins/kiali/src/assets/img/api/rest.svg b/workspaces/kiali/plugins/kiali/src/assets/img/api/rest.svg new file mode 100644 index 0000000000..8c153a4ecd --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/assets/img/api/rest.svg @@ -0,0 +1 @@ +Rest API \ No newline at end of file diff --git a/workspaces/kiali/plugins/kiali/src/assets/img/go-logo.png b/workspaces/kiali/plugins/kiali/src/assets/img/go-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..aee71daf20c9fb434bcd46379b63d4d7d486c65c GIT binary patch literal 5007 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 Z(f@`#B99u;(Te~8002ovPDHLkV1g)fk*xp# literal 0 HcmV?d00001 diff --git a/workspaces/kiali/plugins/kiali/src/assets/img/graphql-logo.svg b/workspaces/kiali/plugins/kiali/src/assets/img/graphql-logo.svg new file mode 100644 index 0000000000..95c03941cf --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/assets/img/graphql-logo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/workspaces/kiali/plugins/kiali/src/assets/img/grpc-logo.svg b/workspaces/kiali/plugins/kiali/src/assets/img/grpc-logo.svg new file mode 100644 index 0000000000..6f5c5a4c95 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/assets/img/grpc-logo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/workspaces/kiali/plugins/kiali/src/assets/img/hollow-pin.png b/workspaces/kiali/plugins/kiali/src/assets/img/hollow-pin.png new file mode 100644 index 0000000000000000000000000000000000000000..14477559f687de6da0b717d75a9c5349cd6beb24 GIT binary patch literal 7707 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 LebowO`|y7QpHp)d literal 0 HcmV?d00001 diff --git a/workspaces/kiali/plugins/kiali/src/assets/img/jaeger-icon.svg b/workspaces/kiali/plugins/kiali/src/assets/img/jaeger-icon.svg new file mode 100644 index 0000000000..d4fae63a2f --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/assets/img/jaeger-icon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/workspaces/kiali/plugins/kiali/src/assets/img/java-logo.png b/workspaces/kiali/plugins/kiali/src/assets/img/java-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..75ad9e281bea8e95f695a71c234f3199dc21bcde GIT binary patch literal 13841 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 props.setShowModal(false)} + aria-labelledby="Kiali" + aria-describedby="Kiali" + fullWidth + > + + + props.setShowModal(false)} + className={closeButton} + > + + + + + + Kiali + + + Kiali + + + {coreVersion || 'Unknown'} + + + Kiali Container + + + {containerVersion || 'Unknown'} + + + Service Mesh + + + {meshVersion || 'Unknown'} + + + Kiali External URL + + + {kialiExternalUrl} + + + + {props.warningMessages.length > 0 && ( + + + {props.warningMessages.length} warnings.{' '} + setShowWarnings(!showWarnings)} + style={{ color: '#2b9af3' }} + > + ({showWarnings ? 'Close' : 'See'} them) + + + } + /> + + + {props.warningMessages.map(warn => ( + + {warn} + + ))} + + + + )} + + Components + {props?.externalServices.map(renderComponent)} + + + + {renderWebsiteLink()} + {renderProjectLink()} + + + ); +}; diff --git a/workspaces/kiali/plugins/kiali/src/components/Ambient/AmbientBadge.tsx b/workspaces/kiali/plugins/kiali/src/components/Ambient/AmbientBadge.tsx new file mode 100644 index 0000000000..a6c570c3db --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/components/Ambient/AmbientBadge.tsx @@ -0,0 +1,40 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import * as React from 'react'; + +import { Chip, Tooltip } from '@material-ui/core'; + +type AmbientLabelProps = { + style?: React.CSSProperties; + tooltip: string; +}; + +export const AmbientBadge = (props: AmbientLabelProps) => { + const iconComponent = ( + + + + ); + return ( + + {iconComponent} + + ); +}; diff --git a/workspaces/kiali/plugins/kiali/src/components/Ambient/AmbientLabel.tsx b/workspaces/kiali/plugins/kiali/src/components/Ambient/AmbientLabel.tsx new file mode 100644 index 0000000000..23fa8881ec --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/components/Ambient/AmbientLabel.tsx @@ -0,0 +1,84 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import * as React from 'react'; + +import { Chip, Tooltip } from '@material-ui/core'; + +type AmbientLabelProps = { + tooltip: boolean; + style?: React.CSSProperties; + waypoint?: boolean; +}; + +const AmbientComponent = 'ztunnel'; + +export class AmbientLabel extends React.Component { + render() { + const msg = 'Component is labeled as part of the Istio Ambient Mesh'; + + const tooltipContent = ( +
    +
    + {msg} +
    +
    +
    + ); + const iconComponent = ( + + + {this.props.waypoint && ( + + )} + {!this.props.tooltip && ( + + {msg} + + + + + )} + + ); + return this.props.tooltip ? ( + + {iconComponent} + + ) : ( + iconComponent + ); + } +} diff --git a/workspaces/kiali/plugins/kiali/src/components/Banners/TechPreviewWarning.tsx b/workspaces/kiali/plugins/kiali/src/components/Banners/TechPreviewWarning.tsx new file mode 100644 index 0000000000..2288313cad --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/components/Banners/TechPreviewWarning.tsx @@ -0,0 +1,33 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import * as React from 'react'; + +import { Alert } from '@material-ui/lab'; + +type defaultProps = { + message?: string; +}; + +export const TechPreviewWarning = (props: defaultProps) => { + const msg = props.message ? props.message : 'This is a tech preview feature'; + return ( +
    + + {msg}{' '} + +
    + ); +}; diff --git a/workspaces/kiali/plugins/kiali/src/components/BreadcrumbView/BreadcrumbView.tsx b/workspaces/kiali/plugins/kiali/src/components/BreadcrumbView/BreadcrumbView.tsx new file mode 100644 index 0000000000..f621cbeea7 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/components/BreadcrumbView/BreadcrumbView.tsx @@ -0,0 +1,135 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import * as React from 'react'; +import { Location, useLocation } from 'react-router-dom'; + +import { Breadcrumbs } from '@material-ui/core'; + +import { HistoryManager } from '../../app/History'; +import { Paths } from '../../config'; +import { kialiStyle } from '../../styles/StyleUtils'; +import { dicIstioType } from '../../types/IstioConfigList'; +import { BackstageObjectLink } from '../../utils/backstageLinks'; +import { FilterSelected } from '../Filters/StatefulFilters'; + +const ItemNames = { + applications: 'App', + services: 'Service', + workloads: 'Workload', + istio: 'Istio Object', +}; + +const IstioName = 'Istio Config'; +const namespaceRegex = + /kiali\/([a-z0-9-]+)\/([\w-.]+)\/([\w-.*]+)(\/([\w-.]+))?(\/([\w-.]+))?/; + +export const getPath = (props: Location) => { + const match = namespaceRegex.exec(props.pathname) || []; + const ns = match[2]; + // @ts-ignore + const page = Paths[match[1]?.toLocaleUpperCase('en-US')]; + const istioType = match[3]; + const urlParams = new URLSearchParams(props.search); + const itemName = page !== 'istio' ? match[3] : match[5]; + return { + cluster: HistoryManager.getClusterName(urlParams), + istioType: istioType, + item: itemName, + // @ts-ignore + itemName: ItemNames[page], + namespace: ns, + pathItem: page, + }; +}; + +const breadcrumStyle = kialiStyle({ + marginBottom: '20px', + marginTop: '-20px', +}); + +export const BreadcrumbView = (props: { entity?: boolean }) => { + const capitalize = (str: string) => { + return str?.charAt(0)?.toLocaleUpperCase('en-US') + str?.slice(1); + }; + + const path = getPath(useLocation()); + + const istioTypeF = (rawType: string) => { + const istioType = Object.keys(dicIstioType).find( + // @ts-ignore + key => dicIstioType[key] === rawType, + ); + return istioType || capitalize(rawType); + }; + + const cleanFilters = () => { + FilterSelected.resetFilters(); + }; + + const isIstioF = () => { + return path?.pathItem === 'istio'; + }; + + const namespace = path ? path.namespace : ''; + const item = path ? path.item : ''; + const istioType = path ? path.istioType : ''; + const pathItem = path ? path.pathItem : ''; + + const isIstio = isIstioF(); + + const tab = `tabresources=${pathItem}`; + const filterNs = `namespaces=${namespace}`; + + return ( +
    + + + {isIstio ? IstioName : capitalize(pathItem)} + + + Namespace: {namespace} + + {isIstio && ( + + {istioType ? istioTypeF(istioType) : istioType} + + )} + <>{item} + +
    + ); +}; diff --git a/workspaces/kiali/plugins/kiali/src/components/Charts/ChartWithLegend.tsx b/workspaces/kiali/plugins/kiali/src/components/Charts/ChartWithLegend.tsx new file mode 100644 index 0000000000..ee9293ff8a --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/components/Charts/ChartWithLegend.tsx @@ -0,0 +1,790 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import * as React from 'react'; + +import { Tooltip } from '@material-ui/core'; +import { + Chart, + ChartAxis, + ChartGroup, + ChartLabel, + ChartLegend, + ChartLine, + ChartProps, + ChartScatter, + ChartTooltipProps, + createContainer, +} from '@patternfly/react-charts'; +import { Button, ButtonVariant } from '@patternfly/react-core'; +import { format as d3Format } from 'd3-format'; +import regression from 'regression'; +import { VictoryBoxPlot } from 'victory-box-plot'; +import { VictoryPortal } from 'victory-core'; +import { VictoryVoronoiContainer } from 'victory-voronoi-container'; + +import { PFColors } from '../../components/Pf/PfColors'; +import { KialiIcon } from '../../config/KialiIcon'; +import { kialiStyle } from '../../styles/StyleUtils'; +import { XAxisType } from '../../types/Dashboards'; +import { Overlay } from '../../types/Overlay'; +import { + LegendItem, + LineInfo, + RawOrBucket, + RichDataPoint, + VCDataPoint, + VCLines, +} from '../../types/VictoryChartInfo'; +import { getFormatter, getUnit } from '../../utils/Formatter'; +import { toBuckets } from '../../utils/VictoryChartsUtils'; +import { addLegendEvent, VCEvent } from '../../utils/VictoryEvents'; +import { BrushHandlers, getVoronoiContainerProps } from './Container'; +import { CustomTooltip } from './CustomTooltip'; +import { INTERPOLATION_STRATEGY } from './SparklineChart'; + +type Props = { + brushHandlers?: BrushHandlers; + chartHeight?: number; + data: VCLines; + fill?: boolean; + groupOffset?: number; + isMaximized?: boolean; + labelComponent?: React.ReactElement; + moreChartProps?: ChartProps; + onClick?: (datum: RawOrBucket) => void; + onTooltipClose?: (datum: RawOrBucket) => void; + onTooltipOpen?: (datum: RawOrBucket) => void; + overlay?: Overlay; + overrideSeriesComponentStyle?: boolean; + // The TracingScatter component needs a flag to indicate that the trace datapoint needs a mouse pointer + // It could be detected indirectly, but it's complicated and less clear, a new optional flag simplifies this logic + pointer?: boolean; + seriesComponent: React.ReactElement; + showSpans?: boolean; + showTrendline?: boolean; + sizeRatio?: number; + stroke?: boolean; + timeWindow?: [Date, Date]; + unit: string; + xAxis?: XAxisType; +}; + +type State = { + hiddenSeries: Set; + showMoreLegend: boolean; + width: number; +}; + +type Padding = { bottom: number; left: number; right: number; top: number }; + +type ScaleInfo = { count: number; format: string }; + +const overlayName = 'overlay'; + +const axisStyle = { + tickLabels: { fontSize: 12, padding: 2, fill: PFColors.Color100 }, + grid: { + fill: 'none', + stroke: PFColors.ColorLight300, + strokeDasharray: '10, 5', + strokeLinecap: 'round', + strokeLinejoin: 'round', + pointerEvents: 'painted', + }, +}; + +export const MIN_HEIGHT = 20; +export const MIN_HEIGHT_YAXIS = 70; +export const MIN_WIDTH = 275; +export const LEGEND_HEIGHT = 25; +const FONT_SIZE_LEGEND = 14; + +const moreLegendStyle = kialiStyle({ + display: 'flex', + marginTop: '0.25rem', + marginLeft: 'auto', +}); + +const overlayLegendStyle = kialiStyle({ + display: 'flex', + flexWrap: 'wrap', + flexDirection: 'column', + position: 'relative', + background: 'var(--pf-v5-global--BackgroundColor--dark-100)', + opacity: 0.7, + overflow: 'auto', +}); + +const fullLegendStyle = kialiStyle({ + color: PFColors.White, + margin: 'auto', + $nest: { + '& > div': { + display: 'inline-block', + marginRight: '0.25rem', + width: '0.5rem', + height: '0.5rem', + }, + }, +}); + +export class ChartWithLegend< + T extends RichDataPoint, + O extends LineInfo, +> extends React.Component, State> { + containerRef: React.RefObject; + hoveredItem?: VCDataPoint; + mouseOnLegend = false; + + constructor(props: Props) { + super(props); + this.containerRef = React.createRef(); + this.state = { + width: 0, + hiddenSeries: new Set([overlayName]), + showMoreLegend: false, + }; + } + + componentDidMount(): void { + setTimeout(() => { + this.handleResize(); + window.addEventListener('resize', this.handleResize); + }); + } + + componentWillUnmount(): void { + window.removeEventListener('resize', this.handleResize); + } + + private handleResize = (): void => { + if (this.containerRef && this.containerRef.current) { + this.setState({ width: this.containerRef.current.clientWidth }); + } + }; + + private onTooltipOpen = (points?: VCDataPoint[]): void => { + if (points && points.length > 0) { + this.hoveredItem = points[0]; + } else { + this.hoveredItem = undefined; + } + + if (this.props.onTooltipOpen) { + this.props.onTooltipOpen(this.hoveredItem as RawOrBucket); + } + }; + + private onTooltipClose = (): void => { + if (this.props.onTooltipClose) { + this.props.onTooltipClose(this.hoveredItem as RawOrBucket); + } + + this.hoveredItem = undefined; + }; + + private onShowMoreLegend = (): void => { + this.setState(prevState => { + return { + showMoreLegend: !prevState.showMoreLegend, + }; + }); + }; + + private normalizeOverlay = (factor: number): (VCDataPoint & O)[] => { + // All data is relative to the first Y-axis, even if a second one is in use + // To make it appear as relative to the second axis, we need to normalize it, ie. apply the same scale factor that exists between the two axis + // This scale factor is stored in every datapoint so that it can be "reverted" when we need to retrieve the original value, e.g. in tooltips + return this.props.overlay!.vcLine.datapoints.map(dp => ({ + ...dp, + y: dp.y * factor, + scaleFactor: factor, + })); + }; + + private scaledAxisInfo = (data: VCLines): ScaleInfo => { + const ticks = Math.max(...data.map(s => s.datapoints.length)); + + if (this.state.width < 500) { + return { + count: Math.min(5, ticks), + format: '%H:%M', + }; + } else if (this.state.width < 700) { + return { + count: Math.min(10, ticks), + format: '%H:%M', + }; + } + + return { + count: Math.min(15, ticks), + format: '%H:%M:%S', + }; + }; + + private registerEvents = ( + events: VCEvent[], + idx: number, + serieID: string[], + serieName: string, + ): void => { + addLegendEvent(events, { + legendName: 'serie-legend', + idx: idx, + serieID: serieID, + onClick: () => { + if (!this.state.hiddenSeries.delete(serieName)) { + // Was not already hidden => add to set + this.state.hiddenSeries.add(serieName); + } + this.setState(prevState => ({ + hiddenSeries: new Set(prevState.hiddenSeries), + })); + return null; + }, + }); + }; + + private buildFilteredLegendData = ( + fullLegendData: LegendItem[], + ): LegendItem[] => { + // 30px == "more legend" left button width + // 10px == "more legend" left padding + const maxWidth = this.state.width - 30 - 10; + const filtered: LegendItem[] = []; + let currentWidth = 0; + + for (let i = 0; i < fullLegendData.length; i++) { + const item = fullLegendData[i]; + // 12px == legend icon + space + // 7px == char size + // 15px == right padding + currentWidth += 12 + item.name.length * 7 + 15; + + if (currentWidth >= maxWidth) { + break; + } + + filtered.push(item); + } + + return filtered; + }; + + private withStyle = ( + props: { [key: string]: unknown }, + color?: string, + strokeDasharray?: boolean, + ): { [key: string]: unknown } => { + return this.props.overrideSeriesComponentStyle === false + ? props + : { + ...props, + style: { + data: { + fill: this.props.fill ? color : undefined, + stroke: this.props.stroke ? color : undefined, + strokeDasharray: strokeDasharray === true ? '3 5' : undefined, + cursor: this.props.pointer ? 'pointer' : 'default', + }, + }, + }; + }; + + private buildFullLegendData = (): LegendItem[] => { + return this.props.data.map(s => { + const name = s.legendItem.name; + + if (this.state.hiddenSeries.has(s.legendItem.name)) { + return { + name, + symbol: { ...s.legendItem.symbol, fill: PFColors.Color200 }, + }; + } + + return { ...s.legendItem, name }; + }); + }; + + private renderTimeSeries = (height: number): React.ReactNode => { + const groupOffset = this.props.groupOffset ?? 0; + + return ( + + {this.props.data + .map((serie, idx) => { + if (this.state.hiddenSeries.has(serie.legendItem.name)) { + return undefined; + } + + const plot = React.cloneElement( + this.props.seriesComponent, + this.withStyle( + { + key: `serie-${idx}`, + name: `serie-${idx}`, + data: serie.datapoints, + interpolation: INTERPOLATION_STRATEGY, + }, + serie.color, + ), + ); + + // serie.datapoints may contain undefined values in certain scenarios i.e. "unknown" values + if (this.props.showTrendline === true && serie.datapoints[0]) { + const first_dpx = + (serie.datapoints[0].x as Date).getTime() / 1000; + + const datapoints = serie.datapoints.map(d => { + const t = ((d.x as Date).getTime() / 1000 - first_dpx) / 10000; + let trendPoint = parseFloat(d.y.toString()); + + if (d.y0) { + // If both reporters are enabled, generate the trend line using + // the mean values of both reporters + trendPoint += parseFloat(d.y0.toString()); + trendPoint *= 0.5; + } + + // Array is [time, y]; + return [t, trendPoint]; + }); + + // @ts-ignore + const linearRegression = regression.linear(datapoints, { + precision: 10, + }); + + const regressionDatapoints = serie.datapoints.map(d => ({ + ...d, + name: `${d.name} (trendline)`, + y: linearRegression.predict( + ((d.x as Date).getTime() / 1000 - first_dpx) / 10000, + )[1], + y0: undefined, // Clear y0, in case it is set to prevent the tooltip showing this value. + })); + + const regressionPlot = React.cloneElement( + , // Trend lines are always line charts. + this.withStyle( + { + key: `serie-reg-${idx}`, + name: `serie-reg-${idx}`, + data: regressionDatapoints, + interpolation: INTERPOLATION_STRATEGY, + }, + serie.color, + true, + ), + ); + + return [plot, regressionPlot]; + } + + return [plot]; + }) + .flat()} + + ); + }; + + private renderCategories = (): React.ReactNode => { + let domainX = 1; + const nbSeries = this.props.data.length - this.state.hiddenSeries.size; + const size = + ((this.props.sizeRatio ?? 1) * this.state.width) / Math.max(nbSeries, 1); + + return this.props.data.map((serie, idx) => { + if (this.state.hiddenSeries.has(serie.legendItem.name)) { + return undefined; + } + + return React.cloneElement( + this.props.seriesComponent, + this.withStyle( + { + key: `serie-${idx}`, + name: `serie-${idx}`, + data: serie.datapoints.map(d => ({ + size: size, + ...d, + x: domainX++, + })), + barWidth: size, + }, + serie.color, + ), + ); + }); + }; + + render(): React.ReactNode { + const scaleInfo = this.scaledAxisInfo(this.props.data); + const fullLegendData = this.buildFullLegendData(); + const filteredLegendData = this.buildFilteredLegendData(fullLegendData); + const showMoreLegend = fullLegendData.length > filteredLegendData.length; + const chartHeight = this.props.chartHeight ?? 300; + const overlayIdx = this.props.data.length; + const showOverlay = (this.props.overlay && this.props.showSpans) ?? false; + const overlayRightPadding = showOverlay ? 15 : 0; + + const padding: Padding = { + top: 0, + bottom: chartHeight > MIN_HEIGHT_YAXIS ? LEGEND_HEIGHT : 0, + left: 0, + right: 10 + overlayRightPadding, + }; + + const events: VCEvent[] = []; + + if (this.props.onClick) { + events.push({ + target: 'parent', + eventHandlers: { + onClick: () => { + if (this.hoveredItem) { + this.props.onClick!(this.hoveredItem as RawOrBucket); + } + return []; + }, + }, + }); + } + + this.props.data.forEach((s, idx) => + this.registerEvents( + events, + idx, + [`serie-${idx}`, `serie-reg-${idx}`], + s.legendItem.name, + ), + ); + + let useSecondAxis = showOverlay; + let normalizedOverlay: RawOrBucket[] = []; + let overlayFactor = 1.0; + + const mainMax = Math.max( + ...this.props.data.map(line => + Math.max(...line.datapoints.map(d => d.y)), + ), + ); + + if (this.props.overlay) { + this.registerEvents(events, overlayIdx, [overlayName], overlayName); + // Normalization for y-axis display to match y-axis domain of the main data + // (see https://formidable.com/open-source/victory/gallery/multiple-dependent-axes/) + const overlayMax = Math.max( + ...this.props.overlay.vcLine.datapoints.map(d => d.y), + ); + + if (overlayMax !== 0) { + overlayFactor = mainMax / overlayMax; + } + + if ( + this.props.unit === this.props.overlay.info.lineInfo.unit && + overlayFactor > 0.5 && + overlayFactor < 2 + ) { + // Looks like it's fine to re-use the existing axis + useSecondAxis = false; + overlayFactor = 1.0; + } + + normalizedOverlay = this.normalizeOverlay(overlayFactor); + + if (this.props.overlay.info.buckets) { + // Transform to bucketed stats + const model: O = { + ...this.props.overlay.info.lineInfo, + scaleFactor: overlayFactor, + }; + normalizedOverlay = toBuckets( + this.props.overlay.info.buckets, + normalizedOverlay as (VCDataPoint & O)[], + model, + this.props.timeWindow, + ); + } + } + + const tooltipHooks = { + onOpen: this.onTooltipOpen, + onClose: this.onTooltipClose, + }; + + const labelComponent = this.props.labelComponent ? ( + React.cloneElement(this.props.labelComponent as any, tooltipHooks) + ) : ( + + ); + + const filteredData = this.props.data.filter( + s => !this.state.hiddenSeries.has(s.legendItem.name), + ); + + const voronoiProps = getVoronoiContainerProps( + labelComponent, + () => this.mouseOnLegend, + ); + + let containerComponent: React.ReactElement; + + if (this.props.brushHandlers) { + const VoronoiBrushContainer = createContainer('brush', 'voronoi'); + + containerComponent = ( + + ); + } else { + containerComponent = ; + } + + const chart = ( +
    + + { + // Use width to change style of the x series supporting narrow scenarios + // eslint-disable-next-line no-nested-ternary + this.props.xAxis === 'series' ? ( + s.legendItem.name)} + tickFormat={() => ''} + /> + ) : this.state.width <= MIN_WIDTH ? ( + { + return `:${t.getMinutes()}`; + }} + /> + ) : ( + + ) + } + + + + + } + dependentAxis + tickCount={chartHeight <= MIN_HEIGHT_YAXIS ? 1 : undefined} + tickFormat={getFormatter(d3Format, this.props.unit)} + label={getUnit(d3Format, this.props.unit, mainMax)} + axisLabelComponent={ + + } + style={axisStyle} + /> + + {useSecondAxis && this.props.overlay && ( + + getFormatter( + d3Format, + this.props.overlay?.info.lineInfo.unit ?? '', + )(t / overlayFactor) + } + tickLabelComponent={} + label={getUnit( + d3Format, + this.props.overlay?.info.lineInfo.unit ?? '', + Math.max(...this.props.overlay.vcLine.datapoints.map(d => d.y)), + )} + axisLabelComponent={ + + } + /> + )} + + {this.props.xAxis === 'series' + ? this.renderCategories() + : this.renderTimeSeries( + chartHeight > MIN_HEIGHT_YAXIS + ? chartHeight - LEGEND_HEIGHT + : chartHeight, + )} + + {showOverlay && + (this.props.overlay!.info.buckets ? ( + + ) : ( + + ))} + + {chartHeight > MIN_HEIGHT_YAXIS ? ( + + ) : undefined} + + + {showMoreLegend && chartHeight > MIN_HEIGHT_YAXIS && ( + Show full legend
    } + > + + + )} + + {this.state.showMoreLegend && ( +
    + {fullLegendData.map((ld: LegendItem, idx: number) => ( +
    +
    + {ld.name} +
    + ))} +
    + )} +
    + ); + + return chartHeight > MIN_HEIGHT ? ( + chart + ) : ( +
    + + Increase height of the chart +
    + } + > + + + + ); + } +} diff --git a/workspaces/kiali/plugins/kiali/src/components/Charts/Container.tsx b/workspaces/kiali/plugins/kiali/src/components/Charts/Container.tsx new file mode 100644 index 0000000000..318b8fea09 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/components/Charts/Container.tsx @@ -0,0 +1,100 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { format as d3Format } from 'd3-format'; +import { DomainTuple } from 'victory-core'; +import { VictoryVoronoiContainerProps } from 'victory-voronoi-container'; + +import { RichDataPoint } from '../../types/VictoryChartInfo'; +import { getFormatter } from '../../utils/Formatter'; + +type BrushDomain = { x: DomainTuple; y: DomainTuple }; + +export type BrushHandlers = { + /* eslint-disable @typescript-eslint/no-explicit-any */ + onCleared?: (domain: BrushDomain, props: any) => void; + onDomainChange?: (domain: BrushDomain, props: any) => void; + onDomainChangeEnd?: (domain: BrushDomain, props: any) => void; + /* eslint-enable @typescript-eslint/no-explicit-any */ +}; + +const formatValue = ( + label: string, + datum: RichDataPoint, + value: number, + y0?: number, +): string => { + // Formats a value based on unit and scale factor. + // Scale factor is usually undefined, except when a second axis is in use (then it's the ratio between first axis and second axis maxs) + + if (y0 !== undefined) { + return ( + `${label}:` + + ` source = ${getFormatter( + d3Format, + datum.unit!, + true, + )(value / (datum.scaleFactor || 1))}; destination = ${getFormatter( + d3Format, + datum.unit!, + true, + )(y0 / (datum.scaleFactor || 1))}` + ); + } + + return `${label}: ${getFormatter( + d3Format, + datum.unit!, + true, + )(value / (datum.scaleFactor || 1))}`; +}; + +export const getVoronoiContainerProps = ( + labelComponent: React.ReactElement, + hideTooltip: () => boolean, +): VictoryVoronoiContainerProps => { + return { + labels: obj => { + if (obj.datum.hideLabel || hideTooltip()) { + return ''; + } + + if (obj.datum._median !== undefined) { + // Buckets display => datapoint is expected to have _median, _min, _max, _q1, _q3 stats + const avg = + obj.datum.y.reduce((s: number, y: number) => s + y, 0) / + obj.datum.y.length; + + return `${obj.datum.name} (${obj.datum.y.length} datapoints) + ${formatValue('avg', obj.datum, avg)}, ${formatValue( + 'min', + obj.datum, + obj.datum._min, + )}, ${formatValue('max', obj.datum, obj.datum._max)} + ${formatValue('p25', obj.datum, obj.datum._q1)}, ${formatValue( + 'p50', + obj.datum, + obj.datum._median, + )}, ${formatValue('p75', obj.datum, obj.datum._q3)}`; + } + + return formatValue(obj.datum.name, obj.datum, obj.datum.y, obj.datum.y0); + }, + labelComponent: labelComponent, + // We blacklist "parent" as a workaround to avoid the VictoryVoronoiContainer crashing. + // See https://github.com/FormidableLabs/victory/issues/1355 + voronoiBlacklist: ['parent'], + }; +}; diff --git a/workspaces/kiali/plugins/kiali/src/components/Charts/CustomTooltip.tsx b/workspaces/kiali/plugins/kiali/src/components/Charts/CustomTooltip.tsx new file mode 100644 index 0000000000..9ba59ddeb2 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/components/Charts/CustomTooltip.tsx @@ -0,0 +1,163 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import * as React from 'react'; + +import { + ChartCursorFlyout, + ChartLabel, + ChartPoint, + ChartTooltip, + ChartTooltipProps, +} from '@patternfly/react-charts'; + +import { VCDataPoint } from '../../types/VictoryChartInfo'; +import { toLocaleStringWithConditionalDate } from '../../utils/Date'; + +const dy = 15; +const headSizeDefault = 2 * dy; +const yMargin = 8; + +// eslint-disable-next-line @typescript-eslint/no-explicit-any +const canvasContext: any = document.createElement('canvas').getContext('2d'); +canvasContext.font = '14px overpass'; + +// eslint-disable-next-line @typescript-eslint/no-explicit-any +const CustomLabel = (props: any) => { + const x = props.x - 11 - props.textWidth / 2; + const textsWithHead = props.head + ? [props.head, ' '].concat(props.text) + : props.text; + const headSize = props.head ? 2 * dy : 0; + const startY = yMargin + props.y - (textsWithHead.length * dy) / 2 + headSize; + + return ( + <> + {props.activePoints + ?.filter((pt: any) => pt.color && !pt.hideLabel) + .map((pt: any, idx: number) => { + const symbol = pt.symbol || 'square'; + return ( + + ); + })} + + + ); +}; + +const getHeader = (activePoints?: VCDataPoint[]): string | undefined => { + if (activePoints && activePoints.length > 0) { + const x = activePoints[0].x; + if (typeof x === 'object') { + // Assume date + return toLocaleStringWithConditionalDate(x); + } + } + return undefined; +}; + +export type HookedTooltipProps = ChartTooltipProps & { + activePoints?: (VCDataPoint & T)[]; + onOpen?: (items: VCDataPoint[]) => void; + onClose?: () => void; +}; + +export class HookedChartTooltip extends React.Component< + HookedTooltipProps +> { + componentDidMount() { + if (this.props.onOpen && this.props.activePoints) { + this.props.onOpen(this.props.activePoints); + } + } + + componentWillUnmount() { + if (this.props.onClose) { + this.props.onClose(); + } + } + + render() { + return ; + } +} + +type Props = HookedTooltipProps<{}> & { + showTime?: boolean; +}; + +export const CustomTooltip = (props: Props) => { + const getDerivedStateFromProps = () => { + const head = props.showTime ? getHeader(props.activePoints) : undefined; + let texts: string[] = []; + + if (props.text && Array.isArray(props.text)) { + texts = props.text as string[]; + } else if (props.text) { + texts = [props.text as string]; + } + + let height = texts.length * dy + 2 * yMargin; + if (head) { + height += headSizeDefault; + } + const textWidth = Math.max( + ...texts.map(t => canvasContext.measureText(t).width), + ); + const width = + 50 + + (head + ? Math.max(textWidth, canvasContext.measureText(head).width) + : textWidth); + return { + head: head, + texts: texts, + textWidth: textWidth, + width: width, + height: height, + }; + }; + + const initialState = getDerivedStateFromProps(); + + return ( + + } + labelComponent={ + + } + constrainToVisibleArea + /> + ); +}; diff --git a/workspaces/kiali/plugins/kiali/src/components/Charts/Dashboard.tsx b/workspaces/kiali/plugins/kiali/src/components/Charts/Dashboard.tsx new file mode 100644 index 0000000000..3b3bd00b42 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/components/Charts/Dashboard.tsx @@ -0,0 +1,137 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import * as React from 'react'; + +import { Grid } from '@material-ui/core'; +import { ChartThemeColor, getTheme } from '@patternfly/react-charts'; +import { isArray } from 'lodash'; + +import { ChartModel, DashboardModel } from '../../types/Dashboards'; +import { AllPromLabelsValues } from '../../types/Metrics'; +import { Overlay } from '../../types/Overlay'; +import { LineInfo, RawOrBucket } from '../../types/VictoryChartInfo'; +import { getDataSupplier } from '../../utils/VictoryChartsUtils'; +import { BrushHandlers } from './Container'; +import { KChart } from './KChart'; + +export type Props = { + colors?: string[]; + dashboard: DashboardModel; + maximizedChart?: string; + expandHandler: (expandedChart?: string) => void; + labelValues: AllPromLabelsValues; + labelPrettifier?: (key: string, value: string) => string; + onClick?: (chart: ChartModel, datum: RawOrBucket) => void; + brushHandlers?: BrushHandlers; + template?: string; + dashboardHeight: number; + showSpans: boolean; + showTrendlines?: boolean; + customMetric?: boolean; + overlay?: Overlay; + timeWindow?: [Date, Date]; +}; + +type State = { + maximizedChart?: string; +}; + +export class Dashboard extends React.Component< + Props, + State +> { + constructor(props: Props) { + super(props); + this.state = { + maximizedChart: props.maximizedChart, + }; + } + + private onToggleMaximized = (chartKey: string): void => { + const maximized = this.state.maximizedChart ? undefined : chartKey; + this.setState(prevState => ({ + maximizedChart: prevState.maximizedChart ? undefined : chartKey, + })); + this.props.expandHandler(maximized); + }; + + private getChartHeight = (): number => { + if (this.state.maximizedChart) { + return this.props.dashboardHeight; + } + // Dashboards define the rows that are used + // Columns are defined using the spans field in the charts definition using a flex strategy + // When columns span the grid (12 spans) charts move to the next row + // By default metrics use a 2 row layout + const rows = this.props.dashboard.rows > 0 ? this.props.dashboard.rows : 2; + return this.props.dashboardHeight / rows; + }; + + private renderChart(chart: ChartModel) { + let colorScale = + this.props.colors || getTheme(ChartThemeColor.multi).chart!.colorScale!; + if (!isArray(colorScale)) { + colorScale = [colorScale]; + } + const dataSupplier = getDataSupplier( + chart, + { + values: this.props.labelValues, + prettifier: this.props.labelPrettifier, + }, + colorScale as string[], + ); + let onClick: ((datum: RawOrBucket) => void) | undefined = undefined; + if (this.props.onClick) { + onClick = (datum: RawOrBucket) => this.props.onClick!(chart, datum); + } + return ( + this.onToggleMaximized(chart.name)} + isMaximized={this.state.maximizedChart !== undefined} + overlay={chart.xAxis === 'series' ? undefined : this.props.overlay} + onClick={onClick} + brushHandlers={this.props.brushHandlers} + timeWindow={this.props.timeWindow} + /> + ); + } + + render() { + if (this.state.maximizedChart) { + const chart = this.props.dashboard.charts.find( + c => c.name === this.state.maximizedChart, + ); + if (chart) { + return this.renderChart(chart); + } + } + + return ( + + {this.props.dashboard.charts.map(c => { + return {this.renderChart(c)}; + })} + + ); + } +} diff --git a/workspaces/kiali/plugins/kiali/src/components/Charts/KChart.tsx b/workspaces/kiali/plugins/kiali/src/components/Charts/KChart.tsx new file mode 100644 index 0000000000..550d70b2d1 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/components/Charts/KChart.tsx @@ -0,0 +1,330 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import * as React from 'react'; + +import { + ChartArea, + ChartBar, + ChartLine, + ChartScatter, +} from '@patternfly/react-charts'; +import { + Button, + ButtonVariant, + EmptyState, + EmptyStateBody, + EmptyStateIcon, + EmptyStateVariant, +} from '@patternfly/react-core'; +import { CubesIcon, ErrorCircleOIcon } from '@patternfly/react-icons'; + +import { PFColors } from '../../components/Pf/PfColors'; +import { KialiIcon } from '../../config/KialiIcon'; +import { kialiStyle } from '../../styles/StyleUtils'; +import { ChartModel } from '../../types/Dashboards'; +import { Overlay } from '../../types/Overlay'; +import { + LineInfo, + RawOrBucket, + RichDataPoint, + VCLines, +} from '../../types/VictoryChartInfo'; +import { + ChartWithLegend, + LEGEND_HEIGHT, + MIN_HEIGHT, + MIN_HEIGHT_YAXIS, +} from './ChartWithLegend'; +import { BrushHandlers } from './Container'; + +type KChartProps = { + chart: ChartModel; + chartHeight?: number; + data: VCLines; + isMaximized: boolean; + onToggleMaximized: () => void; + onClick?: (datum: RawOrBucket) => void; + showSpans: boolean; + showTrendline?: boolean; + brushHandlers?: BrushHandlers; + overlay?: Overlay; + timeWindow?: [Date, Date]; +}; + +export const maximizeButtonStyle: React.CSSProperties = { + position: 'relative', + float: 'right', +}; + +const emptyStyle = kialiStyle({ + padding: '0 0 0 0', + margin: '0 0 0 0', +}); + +const kchartStyle = kialiStyle({ + paddingTop: 15, + paddingLeft: 25, + paddingRight: 25, + paddingBottom: 12, +}); + +// 24px (title + toolbar) + 20px (margin) + 15px (padding) + 15px (padding) +const titlePadding = 64; + +type State = { + collapsed: boolean; +}; + +type ChartTypeData = { + fill: boolean; + stroke: boolean; + groupOffset: number; + seriesComponent: React.ReactElement; + sizeRatio: number; +}; + +const lineInfo: ChartTypeData = { + fill: false, + stroke: true, + groupOffset: 0, + seriesComponent: , + sizeRatio: 1.0, +}; +const areaInfo: ChartTypeData = { + fill: true, + stroke: false, + groupOffset: 0, + seriesComponent: , + sizeRatio: 1.0, +}; +const barInfo: ChartTypeData = { + fill: true, + stroke: false, + groupOffset: 7, + seriesComponent: , + sizeRatio: 1 / 6, +}; +const scatterInfo: ChartTypeData = { + fill: true, + stroke: false, + groupOffset: 0, + seriesComponent: , + sizeRatio: 1 / 30, +}; + +export class KChart extends React.Component< + KChartProps, + State +> { + constructor(props: KChartProps) { + super(props); + this.state = { + collapsed: + this.props.chart.startCollapsed || + (!this.props.chart.error && this.isEmpty()), + }; + } + + componentDidUpdate(prevProps: KChartProps) { + // Check when there is a change on empty datapoints on a refresh to draw the chart collapsed the first time + // User can change the state after that point + const propsIsEmpty = !this.props.data.some(s => s.datapoints.length !== 0); + const prevPropsIsEmpty = !prevProps.data.some( + s => s.datapoints.length !== 0, + ); + if (propsIsEmpty !== prevPropsIsEmpty) { + this.setState({ + collapsed: propsIsEmpty, + }); + } + } + + private getInnerChartHeight = (): number => { + const chartHeight: number = this.props.chartHeight || 300; + const innerChartHeight = chartHeight - titlePadding; + return innerChartHeight; + }; + + private determineChartType() { + if (this.props.chart.chartType === undefined) { + if (this.props.chart.xAxis === 'series') { + return barInfo; + } else if (this.props.data.some(m => m.datapoints.some(dp => dp.y0))) { + return areaInfo; + } + return lineInfo; + } + const chartType = this.props.chart.chartType; + switch (chartType) { + case 'area': + return areaInfo; + case 'bar': + return barInfo; + case 'scatter': + return scatterInfo; + case 'line': + default: + return lineInfo; + } + } + + private isEmpty(): boolean { + return !this.props.data.some(s => s.datapoints.length !== 0); + } + + private renderChart() { + if (this.state.collapsed) { + return undefined; + } + const typeData = this.determineChartType(); + const minDomain = + this.props.chart.min === undefined + ? undefined + : { y: this.props.chart.min }; + const maxDomain = + this.props.chart.max === undefined + ? undefined + : { y: this.props.chart.max }; + return ( + + ); + } + + private renderEmpty() { + const chartHeight = this.getInnerChartHeight(); + return chartHeight > MIN_HEIGHT ? ( +
    MIN_HEIGHT_YAXIS + ? chartHeight - LEGEND_HEIGHT + : chartHeight, + textAlign: 'center', + borderLeft: `2px solid ${PFColors.ColorLight200}`, + borderBottom: `2px solid ${PFColors.ColorLight200}`, + }} + > + + {this.props.isMaximized && } + + No data available + + +
    + ) : undefined; + } + + private renderError() { + return ( +
    + + {this.props.isMaximized && ( + ( + + )} + /> + )} + + An error occured while fetching this metric: +

    + {this.props.chart.error} +

    +
    +
    +
    + ); + } + render() { + // eslint-disable-next-line no-nested-ternary + const renderE = this.props.chart.error + ? this.renderError() + : this.isEmpty() + ? this.renderEmpty() + : this.renderChart(); + return ( +
    +
    +
    + {this.props.chart.name} +
    + {this.props.onToggleMaximized && ( +
    + +
    + )} +
    +
    + {renderE} +
    +
    + ); + } +} diff --git a/workspaces/kiali/plugins/kiali/src/components/Charts/SparklineChart.tsx b/workspaces/kiali/plugins/kiali/src/components/Charts/SparklineChart.tsx new file mode 100644 index 0000000000..cb969a4d69 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/components/Charts/SparklineChart.tsx @@ -0,0 +1,260 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import * as React from 'react'; + +import { useTheme } from '@material-ui/core/styles'; +import { + Chart, + ChartArea, + ChartAxis, + ChartLabel, + ChartLegend, + ChartProps, + ChartScatter, + ChartThreshold, + ChartVoronoiContainer, +} from '@patternfly/react-charts'; + +import { + RichDataPoint, + VCDataPoint, + VCLines, +} from '../../types/VictoryChartInfo'; +import { addLegendEvent, VCEvent } from '../../utils/VictoryEvents'; +import { PFColors } from '../Pf/PfColors'; +import { CustomTooltip } from './CustomTooltip'; + +type Props = ChartProps & { + labelName: string; + name: string; + series: VCLines; + showLegend?: boolean; + showXAxisValues?: boolean; + showYAxis?: boolean; + tooltipFormat?: (dp: VCDataPoint) => string; + thresholds?: VCLines; +}; + +export const INTERPOLATION_STRATEGY = 'monotoneX'; + +export const SparklineChart = (props: Props) => { + const [width, setWidth] = React.useState(props.width || 1); + const [hiddenSeries, setHiddenSeries] = React.useState>( + new Set(), + ); + const containerRef: React.RefObject | undefined = + props.width === undefined ? React.createRef() : undefined; + const theme = useTheme(); + const axisStyle = { + tickLabels: { fill: theme.palette.type === 'dark' ? '#dcdcdc' : '#000' }, + }; + const labelStyle = { + fill: theme.palette.type === 'dark' ? '#dcdcdc' : '#000', + }; + + const handleResize = () => { + if (containerRef?.current) { + setWidth(containerRef.current.clientWidth); + } + }; + + React.useEffect(() => { + if (containerRef) { + setTimeout(() => { + handleResize(); + window.addEventListener('resize', handleResize); + }); + + return () => { + window.removeEventListener('resize', handleResize); + }; + } + return () => {}; + }); + + const renderChart = () => { + const legendHeight = 30; + let height = props.height || 300; + let padding = { top: 0, bottom: 0, left: 0, right: 0 }; + if (props.padding) { + const p = props.padding as number; + if (Number.isFinite(p)) { + padding = { top: p, bottom: p, left: p, right: p }; + } else { + padding = { ...padding, ...(props.padding as object) }; + } + } + const events: VCEvent[] = []; + if (props.showLegend) { + padding.bottom += legendHeight; + height += legendHeight; + props.series.forEach((_, idx) => { + addLegendEvent(events, { + legendName: `${props.name}-legend`, + idx: idx, + serieID: [`${props.name}-area-${idx}`], + onClick: () => { + if (!hiddenSeries.delete(idx)) { + // Was not already hidden => add to set + hiddenSeries.add(idx); + } + setHiddenSeries(new Set(hiddenSeries)); + return null; + }, + onMouseOver: prs => { + return { + style: { ...prs.style, strokeWidth: 4, fillOpacity: 0.5 }, + }; + }, + }); + }); + } + + const container = ( + + props.tooltipFormat ? props.tooltipFormat(obj.datum) : obj.datum.y + } + labelComponent={} + voronoiBlacklist={props.series.map( + (_, idx) => `${props.name}-scatter-${idx}`, + )} + /> + ); + const hiddenAxisStyle = { + axis: { stroke: 'none' }, + ticks: { stroke: 'none' }, + tickLabels: { stroke: 'none', fill: 'none' }, + }; + + return ( + + {props.showXAxisValues ? ( + dp.x)} + tickFormat={x => + (x as Date).toLocaleTimeString([], { + hour: '2-digit', + minute: '2-digit', + }) + } + tickCount={2} + style={axisStyle} + /> + ) : ( + + )} + {props.showYAxis ? ( + + } + tickCount={2} + dependentAxis + style={axisStyle} + /> + ) : ( + + )} + {props.series.map((serie, idx) => { + if (hiddenSeries.has(idx)) { + return undefined; + } + return ( + (active ? 5 : 2)} + /> + ); + })} + {props.series.map((serie, idx) => { + if (hiddenSeries.has(idx)) { + return undefined; + } + return ( + + ); + })} + {props.showLegend && ( + { + if (hiddenSeries.has(idx)) { + return { ...s.legendItem, symbol: { fill: PFColors.Color200 } }; + } + return s.legendItem; + })} + y={height - legendHeight} + height={legendHeight} + width={width} + /> + )} + + {props.thresholds && + props.thresholds.map((serie, idx) => { + if (hiddenSeries.has(idx)) { + return undefined; + } + return ( + + ); + })} + + ); + }; + + if (containerRef) { + return
    {renderChart()}
    ; + } + return renderChart(); +}; diff --git a/workspaces/kiali/plugins/kiali/src/components/DefaultSecondaryMasthead/DefaultSecondaryMasthead.tsx b/workspaces/kiali/plugins/kiali/src/components/DefaultSecondaryMasthead/DefaultSecondaryMasthead.tsx new file mode 100644 index 0000000000..0fc880403e --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/components/DefaultSecondaryMasthead/DefaultSecondaryMasthead.tsx @@ -0,0 +1,60 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import React from 'react'; + +import { Grid, IconButton, Tooltip } from '@material-ui/core'; +import Refresh from '@material-ui/icons/Refresh'; + +type DefaultProps = { + hideNamespaceSelector?: boolean; + elements?: JSX.Element[]; + showClusterSelector?: boolean; + onRefresh: () => void; +}; + +const defaultStyle: React.CSSProperties = { marginTop: '25px', float: 'left' }; +const justReloadStyle: React.CSSProperties = { marginTop: '0', float: 'right' }; + +export const DefaultSecondaryMasthead: React.FC = ( + props: DefaultProps, +) => { + return ( + + {props.elements?.map(element => { + return element; + })} + 0 ? 1 : 12}> + 0 + ? defaultStyle + : justReloadStyle + } + > + + + + + + + ); +}; diff --git a/workspaces/kiali/plugins/kiali/src/components/DetailDescription/DetailDescription.tsx b/workspaces/kiali/plugins/kiali/src/components/DetailDescription/DetailDescription.tsx new file mode 100644 index 0000000000..168f2c5ddc --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/components/DetailDescription/DetailDescription.tsx @@ -0,0 +1,456 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import * as React from 'react'; +import { Link } from 'react-router-dom'; + +import { Tooltip } from '@material-ui/core'; + +import { isMultiCluster, serverConfig } from '../../config'; +import { createIcon, KialiIcon } from '../../config/KialiIcon'; +import { isGateway, isWaypoint } from '../../helpers/LabelFilterHelper'; +import { healthIndicatorStyle } from '../../styles/HealthStyle'; +import { kialiStyle } from '../../styles/StyleUtils'; +import { AppWorkload } from '../../types/App'; +import * as H from '../../types/Health'; +import { HealthSubItem } from '../../types/Health'; +import { DRAWER } from '../../types/types'; +import { Workload } from '../../types/Workload'; +import { BackstageObjectLink } from '../../utils/backstageLinks'; +import { renderTrafficStatus } from '../Health/HealthDetails'; +import { MissingSidecar } from '../MissingSidecar/MissingSidecar'; +import { PFBadge, PFBadges } from '../Pf/PfBadges'; + +type Props = { + entity?: boolean; + apps?: string[]; + cluster?: string; + health?: H.Health; + namespace: string; + services?: string[]; + waypointWorkloads?: Workload[]; + workloads?: AppWorkload[]; + view?: string; +}; + +const iconStyle = kialiStyle({ + margin: 0, + padding: 0, + display: 'inline-block', +}); + +const resourceListStyle = kialiStyle({ + margin: '0 0 0.5rem 0', + $nest: { + '& > span': { + float: 'left', + width: '125px', + fontWeight: 700, + }, + }, +}); + +const containerStyle = kialiStyle({ + margin: '1rem 0 0.5rem 0', +}); + +const itemStyle = kialiStyle({ + paddingBottom: '0.25rem', +}); + +const infoStyle = kialiStyle({ + marginLeft: '0.5rem', +}); + +export const renderWaypoint = (bgsize?: string): React.ReactNode => { + const badgeSize = bgsize === 'global' || bgsize === 'sm' ? bgsize : 'global'; + return [ +
    + + Waypoint proxy + + + +
    , + ]; +}; + +export const DetailDescription: React.FC = (props: Props) => { + const renderAppItem = ( + namespace: string, + appName: string, + ): React.ReactNode => { + let link: React.ReactNode; + + link = ( + + {appName} + + ); + + let href = `/namespaces/${namespace}/applications/${appName}`; + + if (props.cluster && isMultiCluster) { + href = `${href}?clusterName=${props.cluster}`; + } + + if (props.view === DRAWER) { + href = `#application/${namespace}_${appName}`; + + link = {appName}; + } + + return ( +
  1. +
    + +
    + + {link} +
  2. + ); + }; + + const renderServiceItem = ( + namespace: string, + serviceName: string, + ): React.ReactNode => { + let link: React.ReactNode; + + link = ( + + {serviceName} + + ); + + if (props.view === DRAWER) { + let href = `/namespaces/${namespace}/services/${serviceName}`; + + if (props.cluster && isMultiCluster) { + href = `${href}?clusterName=${props.cluster}`; + } + + href = `#service/${namespace}_${serviceName}`; + link = {serviceName}; + } + + return ( +
  3. +
    + +
    + + {link} +
  4. + ); + }; + + const renderEmptyItem = (type: string): React.ReactNode => { + const message = `No ${type} found`; + + return
    {message}
    ; + }; + + const appList = (): React.ReactNode => { + const applicationList = + props.apps && props.apps.length > 0 + ? props.apps + .sort((a1: string, a2: string) => (a1 < a2 ? -1 : 1)) + .filter(name => { + if (name === undefined) { + return null; + } + + return name; + }) + .map(name => renderAppItem(props.namespace, name)) + : renderEmptyItem('applications'); + + return [ +
    +
      + {applicationList} +
    +
    , + ]; + }; + + const renderServiceAccounts = ( + workload: AppWorkload, + ): NonNullable => { + return ( +
    + {workload.serviceAccountNames && + workload.serviceAccountNames.length > 0 ? ( +
    + Service accounts + +
      + {workload.serviceAccountNames.map((serviceAccount, _) => ( +
    • + {serviceAccount} +
    • + ))} +
    +
    + ) : ( + 'Not found' + )} +
    + ); + }; + + const renderWorkloadItem = (workload: AppWorkload): React.ReactNode => { + let link: React.ReactNode; + + link = ( + + {workload.workloadName} + + ); + + if (props.view === DRAWER) { + let href = `/namespaces/${props.namespace}/workloads/${workload.workloadName}`; + + if (props.cluster && isMultiCluster) { + href = `${href}?clusterName=${props.cluster}`; + } + + href = `#workload/${props.namespace}_${workload.workloadName}`; + link = {workload.workloadName}; + } + + return ( + +
    + +
    + {link} + + + + {((!workload.istioSidecar && + !workload.istioAmbient && + !isWaypoint(workload.labels) && + serverConfig.ambientEnabled) || + (!workload.istioSidecar && !serverConfig.ambientEnabled)) && ( + + )} +
    + ); + }; + + const renderWorkloadHealthItem = (sub: HealthSubItem): React.ReactNode => { + let workload: AppWorkload | undefined = undefined; + + if (props.workloads && props.workloads.length > 0) { + for (const wk of props.workloads) { + const hWorkload = sub.text.substring(0, sub.text.indexOf(':')); + + if (hWorkload === wk.workloadName) { + workload = wk; + break; + } + } + } + + if (workload) { + let link: React.ReactNode; + + if (props.view === DRAWER) { + let href = `/namespaces/${props.namespace}/workloads/${workload.workloadName}`; + + if (props.cluster && isMultiCluster) { + href = `${href}?clusterName=${props.cluster}`; + } + + href = `#workload/${props.namespace}_${workload.workloadName}`; + link = {workload.workloadName}; + } else { + link = ( + + {workload.workloadName} + + ); + } + + return ( + +
    + +
    + + {link} + + + + + + {sub.text}} + className={healthIndicatorStyle} + > + + {createIcon(sub.status)} + + + + {((!workload.istioSidecar && + !workload.istioAmbient && + serverConfig.ambientEnabled) || + (!workload.istioSidecar && !serverConfig.ambientEnabled)) && ( + + )} +
    + ); + } + return ( + + {createIcon(sub.status)} + {sub.text} + + ); + }; + + const renderWorkloadStatus = (): React.ReactNode => { + if (props.health) { + const item = props.health.getWorkloadStatus(); + + if (item) { + return ( +
    + {item.text} + + {item.children && ( +
      + {item.children.map((sub, _) => { + return ( +
    • + {renderWorkloadHealthItem(sub)} +
    • + ); + })} +
    + )} +
    + ); + } + return ( +
    +
      + {props.workloads + ? props.workloads + .sort((w1: AppWorkload, w2: AppWorkload) => + w1.workloadName < w2.workloadName ? -1 : 1, + ) + .map((wkd, _) => { + return ( +
    • + {renderWorkloadItem(wkd)} +
    • + ); + }) + : undefined} +
    +
    + ); + } + return undefined; + }; + + const workloadSummary = (): React.ReactNode => { + return
    {renderWorkloadStatus()}
    ; + }; + + const serviceList = (): React.ReactNode => { + const serviceListT = + props.services && props.services.length > 0 + ? props.services + .sort((s1: string, s2: string) => (s1 < s2 ? -1 : 1)) + .map(name => renderServiceItem(props.namespace, name)) + : renderEmptyItem('services'); + + return [ +
    +
      + {serviceListT} +
    +
    , + ]; + }; + + return ( +
    + {props.apps !== undefined && appList()} + {props.workloads !== undefined && workloadSummary()} + {props.services !== undefined && serviceList()} + {props.health && renderTrafficStatus(props.health)} + {props.waypointWorkloads && renderWaypoint()} +
    + ); +}; diff --git a/workspaces/kiali/plugins/kiali/src/components/Drawers/AppDetailsDrawer.tsx b/workspaces/kiali/plugins/kiali/src/components/Drawers/AppDetailsDrawer.tsx new file mode 100644 index 0000000000..34e19d584d --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/components/Drawers/AppDetailsDrawer.tsx @@ -0,0 +1,90 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import * as React from 'react'; +import { useAsyncFn, useDebounce } from 'react-use'; + +import { useApi } from '@backstage/core-plugin-api'; + +import { CircularProgress } from '@material-ui/core'; +import { AxiosError } from 'axios'; + +import { HistoryManager } from '../../app/History'; +import { AppInfo } from '../../pages/AppDetails/AppInfo'; +import { kialiApiRef } from '../../services/Api'; +import { App, AppQuery } from '../../types/App'; +import { AppHealth } from '../../types/Health'; +import { DRAWER } from '../../types/types'; + +type Props = { + namespace: string; + app: string; +}; +export const AppDetailsDrawer = (props: Props) => { + const kialiClient = useApi(kialiApiRef); + const [appItem, setAppItem] = React.useState(); + const [health, setHealth] = React.useState(); + const cluster = HistoryManager.getClusterName(); + + const fetchApp = async () => { + const params: AppQuery = { + rateInterval: `60s`, + health: 'true', + }; + + kialiClient + .getApp(props.namespace, props.app, params, cluster) + .then((appResponse: App) => { + const healthR = AppHealth.fromJson( + props.namespace, + props.app, + appResponse.health, + { + rateInterval: 60, + hasSidecar: appResponse.workloads.some(w => w.istioSidecar), + hasAmbient: appResponse.workloads.some(w => w.istioAmbient), + }, + ); + setAppItem(appResponse); + setHealth(healthR); + }) + .catch((err: AxiosError) => { + // eslint-disable-next-line no-console + console.log(err); + }); + }; + + const [{ loading }, refresh] = useAsyncFn( + async () => { + // Check if the config is loaded + await fetchApp(); + }, + [], + { loading: true }, + ); + useDebounce(refresh, 10); + + if (loading) { + return ; + } + + return ( + <> + {appItem && ( + + )} + + ); +}; diff --git a/workspaces/kiali/plugins/kiali/src/components/Drawers/ServiceDetailsDrawer.tsx b/workspaces/kiali/plugins/kiali/src/components/Drawers/ServiceDetailsDrawer.tsx new file mode 100644 index 0000000000..18a922d186 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/components/Drawers/ServiceDetailsDrawer.tsx @@ -0,0 +1,86 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import * as React from 'react'; +import { useAsyncFn, useDebounce } from 'react-use'; + +import { useApi } from '@backstage/core-plugin-api'; + +import { CircularProgress } from '@material-ui/core'; + +import { HistoryManager } from '../../app/History'; +import { ServiceInfo } from '../../pages/ServiceDetails/ServiceInfo'; +import { kialiApiRef } from '../../services/Api'; +import { Validations } from '../../types/IstioObjects'; +import { ServiceDetailsInfo } from '../../types/ServiceInfo'; +import { DRAWER } from '../../types/types'; + +type Props = { + namespace: string; + service: string; +}; +export const ServiceDetailsDrawer = (props: Props) => { + const kialiClient = useApi(kialiApiRef); + const [serviceItem, setServiceItem] = React.useState(); + const cluster = HistoryManager.getClusterName(); + const [validations, setValidations] = React.useState({}); + + const fetchService = async () => { + kialiClient + .getServiceDetail(props.namespace, props.service, true, cluster, 60) + .then((serviceResponse: ServiceDetailsInfo) => { + setServiceItem(serviceResponse); + setValidations(serviceResponse.validations); + }) + .catch(err => { + // eslint-disable-next-line no-console + console.log(err); + }); + }; + + const [{ loading }, refresh] = useAsyncFn( + async () => { + // Check if the config is loaded + await fetchService(); + }, + [], + { loading: true }, + ); + useDebounce(refresh, 10); + + if (loading) { + return ; + } + + return ( + <> + {serviceItem && ( + + )} + + ); +}; diff --git a/workspaces/kiali/plugins/kiali/src/components/Drawers/WorkloadDetailsDrawer.tsx b/workspaces/kiali/plugins/kiali/src/components/Drawers/WorkloadDetailsDrawer.tsx new file mode 100644 index 0000000000..589e00568d --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/components/Drawers/WorkloadDetailsDrawer.tsx @@ -0,0 +1,99 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import * as React from 'react'; +import { useAsyncFn, useDebounce } from 'react-use'; + +import { useApi } from '@backstage/core-plugin-api'; + +import { CircularProgress } from '@material-ui/core'; + +import { WorkloadInfo } from '../../pages/WorkloadDetails/WorkloadInfo'; +import { kialiApiRef } from '../../services/Api'; +import { WorkloadHealth } from '../../types/Health'; +import { DRAWER } from '../../types/types'; +import { Workload, WorkloadQuery } from '../../types/Workload'; + +type Props = { + namespace: string; + workload: string; +}; +export const WorkloadDetailsDrawer = (props: Props) => { + const kialiClient = useApi(kialiApiRef); + const [workloadItem, setWorkloadItem] = React.useState(); + const [health, setHealth] = React.useState(); + + const fetchWorkload = async () => { + const query: WorkloadQuery = { + health: 'true', + rateInterval: `60s`, + validate: 'false', + }; + + kialiClient + .getWorkload( + props.namespace ? props.namespace : '', + props.workload ? props.workload : '', + query, + ) + .then((workloadResponse: Workload) => { + setWorkloadItem(workloadResponse); + + const wkHealth = WorkloadHealth.fromJson( + props.namespace ? props.namespace : '', + workloadResponse.name, + workloadResponse.health, + { + rateInterval: 60, + hasSidecar: workloadResponse.istioSidecar, + hasAmbient: workloadResponse.istioAmbient, + }, + ); + setHealth(wkHealth); + }) + .catch(err => { + // eslint-disable-next-line no-console + console.log(err); + }); + }; + + const [{ loading }, refresh] = useAsyncFn( + async () => { + // Check if the config is loaded + await fetchWorkload(); + }, + [], + { loading: true }, + ); + useDebounce(refresh, 10); + + if (loading) { + return ; + } + + return ( + <> + {workloadItem && ( + + )} + + ); +}; diff --git a/workspaces/kiali/plugins/kiali/src/components/Envoy/AccessLogModal.tsx b/workspaces/kiali/plugins/kiali/src/components/Envoy/AccessLogModal.tsx new file mode 100644 index 0000000000..a8f079d239 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/components/Envoy/AccessLogModal.tsx @@ -0,0 +1,977 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import * as React from 'react'; + +import { + Table, + TableBody, + TableCell, + TableHead, + TableRow, +} from '@material-ui/core'; +import { + Button, + ButtonVariant, + Modal, + Split, + SplitItem, +} from '@patternfly/react-core'; +import { classes } from 'typestyle'; + +import { PFColors } from '../../components/Pf/PfColors'; +import { kialiStyle } from '../../styles/StyleUtils'; +import { AccessLog } from '../../types/IstioObjects'; + +export interface AccessLogModalProps { + accessLog: AccessLog; + accessLogMessage: string; + className?: string; + onClose?: () => void; +} + +const fieldStyle = kialiStyle({ + color: PFColors.Orange400, + fontWeight: 'bold', + paddingLeft: 0, + paddingRight: 0, +}); + +const modalStyle = kialiStyle({ + height: '70%', + width: '50%', + overflow: 'auto', + overflowY: 'hidden', +}); + +const prefaceStyle = kialiStyle({ + fontFamily: 'monospace', + fontSize: 'var(--kiali-global--font-size)', + backgroundColor: PFColors.Black1000, + color: PFColors.Gold400, + marginBottom: '1rem', + overflow: 'auto', + resize: 'none', + padding: '0.75rem', + whiteSpace: 'pre', +}); + +const splitStyle = kialiStyle({ + overflow: 'auto', + width: '50%', +}); + +const contentStyle = kialiStyle({ + marginLeft: '0.5rem', + marginRight: '0.5rem', +}); + +const descriptionStyle = kialiStyle({ + backgroundColor: PFColors.BackgroundColor200, + padding: '1rem 1.25rem', + $nest: { + '& dt': { + fontWeight: 'bold', + }, + }, +}); + +const tableStyle = kialiStyle({ + background: 'transparent', + marginBottom: '0.25rem', + $nest: { + '& tbody tr:last-child': { + borderBottom: 0, + }, + '& tr > *': { + padding: '0.25rem', + }, + }, +}); + +export const AccessLogModal: React.FC = ( + props: AccessLogModalProps, +) => { + const [description, setDescription] = React.useState( +
    +
    Click Field Name for Description
    +
    , + ); + + const getDescription = (alFieldName: string): React.ReactNode => { + switch (alFieldName) { + case 'authority': + return ( + <> +
    %REQ(X?Y):Z%
    +
    +
    +
    HTTP
    +
    +

    + Authority is the request authority header %REQ(:AUTHORITY)% +

    +
    +
    TCP
    +
    +

    Not implemented (“-“).

    +
    +
    +
    + + ); + case 'bytes received': + return ( + <> +
    %BYTES_RECEIVED%
    +
    +
    +
    HTTP
    +
    +

    Body bytes received.

    +
    +
    TCP
    +
    +

    Downstream bytes received on connection.

    +
    +
    +

    Renders a numeric value in typed JSON logs.

    +
    + + ); + case 'bytes sent': + return ( + <> +
    %BYTES_SENT%
    +
    +
    +
    HTTP
    +
    +

    + Body bytes sent. For WebSocket connection it will also + include response header bytes. +

    +
    +
    TCP
    +
    +

    Downstream bytes sent on connection.

    +
    +
    +

    Renders a numeric value in typed JSON logs.

    +
    + + ); + case 'downstream local': + return ( + <> +
    %DOWNSTREAM_LOCAL_ADDRESS%
    +
    +

    + Local address of the downstream connection. If the address is an + IP address it includes both address and port. If the original + connection was redirected by iptables REDIRECT, this represents + the original destination address restored by the{' '} + + + Original Destination Filter + + {' '} + using SO_ORIGINAL_DST socket option. If the original connection + was redirected by iptables TPROXY, and the listener’s + transparent option was set to true, this represents the original + destination address and port. +

    +
    + + ); + case 'downstream remote': + return ( + <> +
    %DOWNSTREAM_REMOTE_ADDRESS%
    +
    +

    + Remote address of the downstream connection. If the address is + an IP address it includes both address and port. +

    +
    +

    Note

    +

    + This may not be the physical remote address of the peer if the + address has been inferred from{' '} + + Proxy Protocol filter + {' '} + or{' '} + + x-forwarded-for + + . +

    +
    +
    + + ); + case 'duration': + return ( + <> +
    %DURATION%
    +
    +
    +
    HTTP
    +
    +

    + Total duration in milliseconds of the request from the start + time to the last byte out. +

    +
    +
    TCP
    +
    +

    + Total duration in milliseconds of the downstream connection. +

    +
    +
    +

    Renders a numeric value in typed JSON logs.

    +
    + + ); + case 'forwarded for': + return ( + <> +
    %REQ(X?Y):Z%
    +
    +
    +
    HTTP
    +
    +

    + ForwardedFor is the X-Forwarded-For header value + %REQ(FORWARDED-FOR)% +

    +
    +
    TCP
    +
    +

    Not implemented (“-“).

    +
    +
    +
    + + ); + case 'method': + return ( + <> +
    %REQ(X?Y):Z%
    +
    +
    +
    HTTP
    +
    +

    Method is the HTTP method %REQ(:METHOD)%

    +
    +
    TCP
    +
    +

    Not implemented (“-“).

    +
    +
    +
    + + ); + case 'protocol': + return ( + <> +
    %PROTOCOL%
    +
    +
    +
    HTTP
    +
    +

    + Protocol. Currently either HTTP/1.1 or{' '} + HTTP/2. +

    +
    +
    TCP
    +
    +

    Not implemented (“-“).

    +
    +
    +

    + In typed JSON logs, PROTOCOL will render the string{' '} + + "-" + {' '} + if the protocol is not available (e.g. in TCP logs). +

    +
    + + ); + case 'request id': + return ( + <> +
    %REQ(X?Y):Z%
    +
    +
    +
    HTTP
    +
    +

    + RequestId is the envoy generated X-REQUEST-ID header + "%REQ(X-REQUEST-ID)%" +

    +
    +
    TCP
    +
    +

    Not implemented (“-“).

    +
    +
    +
    + + ); + case 'requested server': + return ( + <> +
    %REQUESTED_SERVER_NAME%
    +
    +
    +
    HTTP
    +
    +

    + String value set on ssl connection socket for Server Name + Indication (SNI) +

    +
    +
    TCP
    +
    +

    + String value set on ssl connection socket for Server Name + Indication (SNI) +

    +
    +
    +
    + + ); + case 'response flags': + return ( + <> +
    %RESPONSE_FLAGS%
    +
    +

    + Additional details about the response or connection, if any. For + TCP connections, the response codes mentioned in the + descriptions do not apply. Possible values are: +

    +
    +
    HTTP and TCP
    +
    +
      +
    • +

      + UH: No healthy upstream hosts in + upstream cluster in addition to 503 response code. +

      +
    • +
    • +

      + UF: Upstream connection failure in + addition to 503 response code. +

      +
    • +
    • +

      + UO: Upstream overflow ( + + circuit breaking + + ) in addition to 503 response code. +

      +
    • +
    • +

      + NR: No{' '} + + route configured + {' '} + for a given request in addition to 404 response code, or + no matching filter chain for a downstream connection. +

      +
    • +
    • +

      + URX: The request was rejected because + the{' '} + + + upstream retry limit (HTTP) + + {' '} + or{' '} + + + maximum connect attempts (TCP) + + {' '} + was reached. +

      +
    • +
    • +

      + NC: Upstream cluster not found. +

      +
    • +
    +
    +
    HTTP only
    +
    +
      +
    • +

      + DC: Downstream connection termination. +

      +
    • +
    • +

      + LH: Local service failed{' '} + + + health check request + + {' '} + in addition to 503 response code. +

      +
    • +
    • +

      + UT: Upstream request timeout in + addition to 504 response code. +

      +
    • +
    • +

      + LR: Connection local reset in addition + to 503 response code. +

      +
    • +
    • +

      + UR: Upstream remote reset in addition + to 503 response code. +

      +
    • +
    • +

      + UC: Upstream connection termination in + addition to 503 response code. +

      +
    • +
    • +

      + DI: The request processing was delayed + for a period specified via{' '} + + fault injection + + . +

      +
    • +
    • +

      + FI: The request was aborted with a + response code specified via{' '} + + fault injection + + . +

      +
    • +
    • +

      + RL: The request was ratelimited locally + by the{' '} + + + HTTP rate limit filter + + {' '} + in addition to 429 response code. +

      +
    • +
    • +

      + UAEX: The request was denied by the + external authorization service. +

      +
    • +
    • +

      + RLSE: The request was rejected because + there was an error in rate limit service. +

      +
    • +
    • +

      + IH: The request was rejected because it + set an invalid value for a{' '} + + + strictly-checked header + + {' '} + in addition to 400 response code. +

      +
    • +
    • +

      + SI: Stream idle timeout in addition to + 408 response code. +

      +
    • +
    • +

      + DPE: The downstream request had an HTTP + protocol error. +

      +
    • +
    • +

      + UPE: The upstream response had an HTTP + protocol error. +

      +
    • +
    • +

      + UMSDR: The upstream request reached to + max stream duration. +

      +
    • +
    +
    +
    +
    + + ); + case 'route name': + return ( + <> +
    %ROUTE_NAME%
    +
    +

    + RouteName is the name of the VirtualService route which matched + this request %ROUTE_NAME% +

    +
    + + ); + case 'status code': + return ( + <> +
    %RESPONSE_CODE%
    +
    +
    +
    HTTP
    +
    +

    + HTTP response code. Note that a response code of ‘0’ means + that the server never sent the beginning of a response. This + generally means that the (downstream) client disconnected. +

    +

    + Note that in the case of 100-continue responses, only the + response code of the final headers will be logged. If a + 100-continue is followed by a 200, the logged response will + be 200. If a 100-continue results in a disconnect, the 100 + will be logged. +

    +
    +
    TCP
    +
    +

    Not implemented (“-“).

    +
    +
    +

    Renders a numeric value in typed JSON logs.

    +
    + + ); + case 'tcp service time': + return ( + <> +
    %REQ(X?Y):Z%
    +
    +
    +
    HTTP
    +
    +

    + TCPServiceTime is the X-ENVOY-UPSTREAM-SERVICE-TIME header + "%REQ(X-ENVOY-UPSTREAM-SERVICE-TIME)%" +

    +
    +
    TCP
    +
    +

    Not implemented (“-“).

    +
    +
    +
    + + ); + case 'timestamp': + return ( + <> +
    %START_TIME%
    +
    +
    +
    HTTP
    +
    +

    Request start time including milliseconds.

    +
    +
    TCP
    +
    +

    + Downstream connection start time including milliseconds. +

    +
    +
    +

    + START_TIME can be customized using a{' '} + + format string + + . In addition to that, START_TIME also accepts following + specifiers: +

    + + + + +

    Specifier

    +
    + +

    Explanation

    +
    +
    +
    + + + +

    + + %s + +

    +
    + +

    The number of seconds since the Epoch

    +
    +
    + + +

    + + %f + + ,{' '} + + %[1-9]f + +

    +
    + +

    + Fractional seconds digits, default is 9 digits + (nanosecond) +

    +
    +
    + + +
      +
    • +

      + + %3f + {' '} + millisecond (3 digits) +

      +
    • +
    • +

      + + %6f + {' '} + microsecond (6 digits) +

      +
    • +
    • +

      + + %9f + {' '} + nanosecond (9 digits) +

      +
    • +
    +
    +
    +
    +
    +

    Examples of formatting START_TIME is as follows:

    +
    +
    +
    +                    
    +                    %START_TIME(%Y/%m/%dT%H:%M:%S%z %s)% # To include
    +                    millisecond fraction of the second (.000 ... .999). E.g.
    +                    1527590590.528. %START_TIME(%s.%3f)% %START_TIME(%s.%6f)%
    +                    %START_TIME(%s.%9f)%
    +                  
    +
    +
    +

    + In typed JSON logs, START_TIME is always rendered as a string. +

    +
    + + ); + case 'upstream cluster': + return ( + <> +
    %UPSTREAM_CLUSTER%
    +
    +

    + Upstream cluster to which the upstream host belongs to. If + runtime feature + + envoy.reloadable_features.use_observable_cluster_name + {' '} + is enabled, then{' '} + + alt_stat_name + {' '} + will be used if provided. +

    +
    + + ); + case 'upstream failure reason': + return ( + <> +
    %UPSTREAM_TRANSPORT_FAILURE_REASON%
    +
    +
    +
    HTTP
    +
    +

    + If upstream connection failed due to transport socket (e.g. + TLS handshake), provides the failure reason from the + transport socket. The format of this field depends on the + configured upstream transport socket. Common TLS failures + are in{' '} + + TLS trouble shooting + + . +

    +
    +
    TCP
    +
    +

    Not implemented (“-“)

    +
    +
    +
    + + ); + case 'upstream local': + return ( + <> +
    %UPSTREAM_LOCAL_ADDRESS%
    +
    +

    + Local address of the upstream connection. If the address is an + IP address it includes both address and port. +

    +
    + + ); + case 'upstream service': + return ( + <> +
    %UPSTREAM_HOST%
    +
    +

    + Upstream host URL (e.g.,{' '} + + tcp://ip:port + {' '} + for TCP connections). +

    +
    + + ); + case 'uri path': + return ( + <> +
    %REQ(X?Y):Z%
    +
    +
    +
    HTTP
    +
    +

    + An HTTP request header: "%REQ(X-ENVOY-ORIGINAL-PATH?):PATH" +

    +
    +
    TCP
    +
    +

    Not implemented (“-“).

    +
    +
    +
    + + ); + case 'user agent': + return ( + <> +
    %REQ(X?Y):Z%
    +
    +
    +
    HTTP
    +
    +

    An HTTP request header: "%REQ(USER-AGENT)

    +
    +
    TCP
    +
    +

    Not implemented (“-“).

    +
    +
    +
    + + ); + default: + return <>No documentation available; + } + }; + + const handleClick = (alFieldName: string): void => { + setDescription(getDescription(alFieldName)); + }; + + const accessLogField = (key: string, val: string): React.ReactNode => { + return ( + <> + + {val ? val : '-'} +
    + + ); + }; + + const accessLogContent = (al: AccessLog): React.ReactNode => { + return ( +
    + {accessLogField('authority', al.authority)} + {accessLogField('bytes received', al.bytes_received)} + {accessLogField('bytes sent', al.bytes_sent)} + {accessLogField('downstream local', al.downstream_local)} + {accessLogField('downstream remote', al.downstream_remote)} + {accessLogField('duration', al.duration)} + {accessLogField('forwarded for', al.forwarded_for)} + {accessLogField('method', al.method)} + {accessLogField('protocol', al.protocol)} + {accessLogField('request id', al.request_id)} + {accessLogField('requested server', al.requested_server)} + {accessLogField('response flags', al.response_flags)} + {accessLogField('route name', al.route_name)} + {accessLogField('status code', al.status_code)} + {accessLogField('tcp service time', al.tcp_service_time)} + {accessLogField('timestamp', al.timestamp)} + {accessLogField('upstream cluster', al.upstream_cluster)} + {accessLogField('upstream failure reason', al.upstream_failure_reason)} + {accessLogField('upstream local', al.upstream_local)} + {accessLogField('upstream service', al.upstream_service)} + {accessLogField('upstream service time', al.upstream_service_time)} + {accessLogField('uri param', al.uri_param)} + {accessLogField('uri path', al.uri_path)} + {accessLogField('user agent', al.user_agent)} +
    + ); + }; + + return ( + +
    +
    {props.accessLogMessage}
    + + + {accessLogContent(props.accessLog)} + + + {description} + + +
    +
    + ); +}; diff --git a/workspaces/kiali/plugins/kiali/src/components/FilterList/FilterHelper.ts b/workspaces/kiali/plugins/kiali/src/components/FilterList/FilterHelper.ts new file mode 100644 index 0000000000..f4448a7247 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/components/FilterList/FilterHelper.ts @@ -0,0 +1,189 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { camelCase } from 'lodash'; + +import { history, HistoryManager, URLParam } from '../../app/History'; +import { config } from '../../config'; +import { + ActiveFilter, + ActiveFiltersInfo, + DEFAULT_LABEL_OPERATION, + FilterType, + ID_LABEL_OPERATION, + LabelOperation, + RunnableFilter, +} from '../../types/Filters'; +import { SortField } from '../../types/SortFilters'; + +export const perPageOptions: number[] = [5, 10, 15]; +const defaultDuration = 600; +const defaultRefreshInterval = config.toolbar.defaultRefreshInterval; + +export const getFiltersFromURL = ( + filterTypes: FilterType[], +): ActiveFiltersInfo => { + const urlParams = new URLSearchParams(history.location.search); + const activeFilters: ActiveFilter[] = []; + filterTypes.forEach(filter => { + urlParams.getAll(camelCase(filter.category)).forEach(value => { + activeFilters.push({ + category: filter.category, + value: value, + }); + }); + }); + + return { + filters: activeFilters, + op: + (urlParams.get(ID_LABEL_OPERATION) as LabelOperation) || + DEFAULT_LABEL_OPERATION, + }; +}; + +export const setFiltersToURL = ( + filterTypes: FilterType[], + filters: ActiveFiltersInfo, +): ActiveFiltersInfo => { + const urlParams = new URLSearchParams(history.location.search); + filterTypes.forEach(type => { + urlParams.delete(camelCase(type.category)); + }); + // Remove manually the special Filter opLabel + urlParams.delete('opLabel'); + const cleanFilters: ActiveFilter[] = []; + + filters.filters.forEach(activeFilter => { + const filterType = filterTypes.find( + filter => filter.category === activeFilter.category, + ); + if (!filterType) { + return; + } + cleanFilters.push(activeFilter); + urlParams.append(camelCase(filterType.category), activeFilter.value); + }); + urlParams.append(ID_LABEL_OPERATION, filters.op); + // Resetting pagination when filters change + history.push(`${history.location.pathname}?${urlParams.toString()}`); + return { filters: cleanFilters, op: filters.op || DEFAULT_LABEL_OPERATION }; +}; + +export const filtersMatchURL = ( + filterTypes: FilterType[], + filters: ActiveFiltersInfo, +): boolean => { + // This can probably be improved and/or simplified? + const fromFilters: Map = new Map(); + filters.filters.forEach(activeFilter => { + const existingValue = fromFilters.get(activeFilter.category) || []; + fromFilters.set( + activeFilter.category, + existingValue.concat(activeFilter.value), + ); + }); + + const fromURL: Map = new Map(); + const urlParams = new URLSearchParams(history.location.search); + filterTypes.forEach(filter => { + const values = urlParams.getAll(camelCase(filter.category)); + if (values.length > 0) { + const existing = fromURL.get(camelCase(filter.category)) || []; + fromURL.set(filter.category, existing.concat(values)); + } + }); + + if (fromFilters.size !== fromURL.size) { + return false; + } + let equalFilters = true; + fromFilters.forEach((filterValues, filterName) => { + const aux = fromURL.get(filterName) || []; + equalFilters = + equalFilters && + filterValues.every(value => aux.includes(value)) && + filterValues.length === aux.length; + }); + + return equalFilters; +}; + +export const isCurrentSortAscending = (): boolean => { + return (HistoryManager.getParam(URLParam.DIRECTION) || 'asc') === 'asc'; +}; + +export const currentDuration = (): number => { + return HistoryManager.getDuration() || defaultDuration; +}; + +export const currentRefreshInterval = (): number => { + const refreshInterval = HistoryManager.getNumericParam( + URLParam.REFRESH_INTERVAL, + ); + if (refreshInterval === undefined) { + return defaultRefreshInterval; + } + return refreshInterval; +}; + +export const currentSortField = ( + sortFields: SortField[], +): SortField => { + const queriedSortedField = + HistoryManager.getParam(URLParam.SORT) || sortFields[0].param; + return ( + sortFields.find(sortField => { + return sortField.param === queriedSortedField; + }) || sortFields[0] + ); +}; + +export const compareNullable = ( + a: T | undefined, + b: T | undefined, + safeComp: (a2: T, b2: T) => number, +): number => { + if (!a) { + return !b ? 0 : 1; + } + if (!b) { + return -1; + } + return safeComp(a, b); +}; + +const runOneFilter = ( + items: T[], + filter: RunnableFilter, + active: ActiveFiltersInfo, +) => { + const relatedActive = { + filters: active.filters.filter(af => af.category === filter.category), + op: active.op, + }; + if (relatedActive.filters.length) { + return items.filter(item => filter.run(item, relatedActive)); + } + return items; +}; + +export const runFilters = ( + items: T[], + filters: RunnableFilter[], + active: ActiveFiltersInfo, +) => { + return filters.reduce((i, f) => runOneFilter(i, f, active), items); +}; diff --git a/workspaces/kiali/plugins/kiali/src/components/Filters/CommonFilters.ts b/workspaces/kiali/plugins/kiali/src/components/Filters/CommonFilters.ts new file mode 100644 index 0000000000..6b760315cd --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/components/Filters/CommonFilters.ts @@ -0,0 +1,111 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { + ActiveFiltersInfo, + AllFilterTypes, + FILTER_ACTION_APPEND, + FILTER_ACTION_UPDATE, + FilterType, + FilterValue, +} from '../../types/Filters'; +import { DEGRADED, FAILURE, HEALTHY, NA, NOT_READY } from '../../types/Health'; +import { removeDuplicatesArray } from '../../utils/Common'; + +export const presenceValues: FilterValue[] = [ + { + id: 'present', + title: 'Present', + }, + { + id: 'notpresent', + title: 'Not Present', + }, +]; + +export const istioSidecarFilter: FilterType = { + category: 'Istio Sidecar', + placeholder: 'Filter by Istio Sidecar Validation', + filterType: AllFilterTypes.select, + action: FILTER_ACTION_UPDATE, + filterValues: presenceValues, +}; + +export const healthFilter: FilterType = { + category: 'Health', + placeholder: 'Filter by Health', + filterType: AllFilterTypes.select, + action: FILTER_ACTION_APPEND, + filterValues: [ + { + id: HEALTHY.name, + title: HEALTHY.name, + }, + { + id: DEGRADED.name, + title: DEGRADED.name, + }, + { + id: FAILURE.name, + title: FAILURE.name, + }, + { + id: NOT_READY.name, + title: NOT_READY.name, + }, + { + id: 'na', + title: NA.name, + }, + ], +}; + +export const labelFilter: FilterType = { + category: 'Label', + placeholder: 'Filter by Label', + filterType: AllFilterTypes.label, + action: FILTER_ACTION_APPEND, + filterValues: [], +}; + +export const getFilterSelectedValues = ( + filter: FilterType, + activeFilters: ActiveFiltersInfo, +): string[] => { + const selected: string[] = activeFilters.filters + .filter(activeFilter => activeFilter.category === filter.category) + .map(activeFilter => activeFilter.value); + return removeDuplicatesArray(selected); +}; + +export const getPresenceFilterValue = ( + filter: FilterType, + activeFilters: ActiveFiltersInfo, +): boolean | undefined => { + const presenceFilters = activeFilters.filters.filter( + activeFilter => activeFilter.category === filter.category, + ); + + if (presenceFilters.length > 0) { + return presenceFilters[0].value === 'Present'; + } + return undefined; +}; + +export const filterByHealth = (items: any[], filterValues: string[]): any[] => { + return items.filter(itemWithHealth => + filterValues.includes(itemWithHealth.health.getGlobalStatus().name), + ); +}; diff --git a/workspaces/kiali/plugins/kiali/src/components/Filters/LabelFilter.tsx b/workspaces/kiali/plugins/kiali/src/components/Filters/LabelFilter.tsx new file mode 100644 index 0000000000..ac8c795b0f --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/components/Filters/LabelFilter.tsx @@ -0,0 +1,92 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import * as React from 'react'; + +import { + Button, + ButtonVariant, + Popover, + PopoverPosition, + TextInput, +} from '@patternfly/react-core'; + +import { KialiIcon } from '../../config/KialiIcon'; +import { kialiStyle } from '../../styles/StyleUtils'; + +interface LabelFiltersProps { + filterAdd: (value: string) => void; + isActive: (value: string) => boolean; + onChange: (value: any) => void; + value: string; +} + +const infoIconStyle = kialiStyle({ + marginLeft: '0.5rem', + alignSelf: 'center', +}); + +export const LabelFilters: React.FC = ( + props: LabelFiltersProps, +) => { + const onkeyPress = (e: any) => { + if (e.key === 'Enter') { + if (props.value?.length > 0) { + props.value + .split(' ') + .forEach(val => !props.isActive(val) && props.filterAdd(val)); + } + } + }; + + return ( + <> + props.onChange(value)} + onKeyPress={e => onkeyPress(e)} + style={{ width: 'auto' }} + /> + Label Filter Help} + position={PopoverPosition.right} + bodyContent={ + <> + To set a label filter you must enter values like. +
    +
      +
    • Filter by label presence: label
    • +
    • Filter by label and value: label=value
    • +
    • + Filter by more than one label and one or more values: +
      + label=value label2=value2,value2-2 +
      + (separate with ' ') +
    • +
    + + } + > + +
    + + ); +}; diff --git a/workspaces/kiali/plugins/kiali/src/components/Filters/StatefulFilters.tsx b/workspaces/kiali/plugins/kiali/src/components/Filters/StatefulFilters.tsx new file mode 100644 index 0000000000..1759a48d12 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/components/Filters/StatefulFilters.tsx @@ -0,0 +1,115 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import * as React from 'react'; + +import { history, HistoryManager } from '../../app/History'; +import { + ActiveFilter, + ActiveFiltersInfo, + ActiveTogglesInfo, + FilterType, + LabelOperation, + ToggleType, +} from '../../types/Filters'; +import * as FilterHelper from '../FilterList/FilterHelper'; + +export class FilterSelected { + static selectedFilters: ActiveFilter[] | undefined = undefined; + static opSelected: LabelOperation; + + static init = (filterTypes: FilterType[]) => { + let active = FilterSelected.getSelected(); + if (!FilterSelected.isInitialized()) { + active = FilterHelper.getFiltersFromURL(filterTypes); + FilterSelected.setSelected(active); + } else if (!FilterHelper.filtersMatchURL(filterTypes, active)) { + active = FilterHelper.setFiltersToURL(filterTypes, active); + FilterSelected.setSelected(active); + } + return active; + }; + + static resetFilters = () => { + FilterSelected.selectedFilters = undefined; + }; + + static setSelected = (activeFilters: ActiveFiltersInfo) => { + FilterSelected.selectedFilters = activeFilters.filters; + FilterSelected.opSelected = activeFilters.op; + }; + + static getSelected = (): ActiveFiltersInfo => { + return { + filters: FilterSelected.selectedFilters || [], + op: FilterSelected.opSelected || 'or', + }; + }; + + static isInitialized = () => { + return FilterSelected.selectedFilters !== undefined; + }; +} + +// Column toggles +export class Toggles { + static checked: ActiveTogglesInfo = new Map(); + static numChecked = 0; + + static init = (toggles: ToggleType[]): number => { + Toggles.checked.clear(); + Toggles.numChecked = 0; + + // Prefer URL settings + const urlParams = new URLSearchParams(history.location.search); + toggles.forEach(t => { + const urlIsChecked = HistoryManager.getBooleanParam( + `${t.name}Toggle`, + urlParams, + ); + const isChecked = urlIsChecked === undefined ? t.isChecked : urlIsChecked; + Toggles.checked.set(t.name, isChecked); + if (isChecked) { + Toggles.numChecked++; + } + }); + return Toggles.numChecked; + }; + + static setToggle = (name: string, value: boolean): number => { + HistoryManager.setParam(`${name}Toggle`, `${value}`); + Toggles.checked.set(name, value); + Toggles.numChecked = value ? Toggles.numChecked++ : Toggles.numChecked--; + return Toggles.numChecked; + }; + + static getToggles = (): ActiveTogglesInfo => { + return new Map(Toggles.checked); + }; +} + +export interface StatefulFiltersProps { + childrenFirst?: boolean; + initialFilters: FilterType[]; + initialToggles?: ToggleType[]; + onFilterChange: (active: ActiveFiltersInfo) => void; + onToggleChange?: (active: ActiveTogglesInfo) => void; + ref?: React.RefObject; +} + +export interface StatefulFilters { + filterAdded(labelFilt: FilterType, label: string): unknown; + removeFilter(category: string, label: string): unknown; +} diff --git a/workspaces/kiali/plugins/kiali/src/components/Health/HealthDetails.tsx b/workspaces/kiali/plugins/kiali/src/components/Health/HealthDetails.tsx new file mode 100644 index 0000000000..c1f0e3663d --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/components/Health/HealthDetails.tsx @@ -0,0 +1,198 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import * as React from 'react'; + +import { Typography } from '@material-ui/core'; + +import { KialiIcon } from '../../config'; +import * as H from '../../types/Health'; +import { PFColors } from '../Pf/PfColors'; +import { createIcon } from './Helper'; + +interface HealthDetailsProps { + health: H.Health; +} + +// @ts-ignore +export const HealthDetails: React.FC = ( + props: HealthDetailsProps, +) => { + const renderErrorRate = ( + item: H.HealthItem, + idx: number, + ): React.ReactNode => { + const config = props.health.getStatusConfig(); + + const isValueInConfig = + config && props.health.health.statusConfig + ? props.health.health.statusConfig.value > 0 + : false; + + const showTraffic = item.children + ? item.children.filter(sub => { + const showItem = sub.value && sub.value > 0; + + return showItem; + }).length > 0 + : false; + + return showTraffic ? ( +
    + <> + {`${item.title}${item.text && item.text.length > 0 ? ': ' : ''} `} + + {config && } + + + {item.text} + + {item.children && ( +
      + {item.children.map((sub, subIdx) => { + const showItem = sub.value && sub.value > 0; + + return showItem ? ( +
    • + + {createIcon(sub.status)} + + {sub.text} +
    • + ) : ( + + ); + })} + + {config && isValueInConfig && ( +
    • + + {createIcon(H.DEGRADED)} + + : {config.degraded === 0 ? '>' : '>='} + {config.degraded}% {createIcon(H.FAILURE)}:{' '} + {config.degraded === 0 ? '>' : '>='} + {config.failure}% +
    • + )} +
    + )} +
    + ) : ( + + ); + }; + + const renderChildren = (item: H.HealthItem, idx: number): React.ReactNode => { + return item.title.startsWith(H.TRAFFICSTATUS) ? ( + renderErrorRate(item, idx) + ) : ( +
    + <>{`${item.title}${item.text && item.text.length > 0 ? ': ' : ''}`} + + {item.text} + + {item.children && ( +
      + {item.children.map((sub, subIdx) => { + return ( +
    • + + {createIcon(sub.status)} + + + {sub.text} +
    • + ); + })} +
    + )} +
    + ); + }; + + const health = props.health; + + return ( + <> + {health.health.items.map((item, idx) => { + return renderChildren(item, idx); + })} + + ); + // @ts-ignore +}; + +export const renderTrafficStatus = (health: H.Health): React.ReactNode => { + const config = health.getStatusConfig(); + const isValueInConfig = + config && health.health.statusConfig + ? health.health.statusConfig.value > 0 + : false; + const item = health.getTrafficStatus(); + + if (item) { + const showTraffic = item.children + ? item.children.filter(sub => { + const showItem = sub.value && sub.value > 0; + + return sub.status !== H.HEALTHY && showItem; + }).length > 0 + : false; + + if (showTraffic) { + return ( +
    + Traffic + + {item.text} + + {item.children && ( +
      + {item.children.map((sub, _) => { + const showItem = sub.value && sub.value > 0; + + return sub.status !== H.HEALTHY && showItem ? ( +
    • + + {createIcon(sub.status)} + + {sub.text} +
    • + ) : ( + + ); + })} + + {config && isValueInConfig && ( +
    • + + {createIcon(H.DEGRADED)} + + : {config.degraded === 0 ? '>' : '>='} + {config.degraded}% {createIcon(H.FAILURE)}:{' '} + {config.degraded === 0 ? '>' : '>='} + {config.failure}% +
    • + )} +
    + )} +
    + ); + } + } + + return undefined; +}; diff --git a/workspaces/kiali/plugins/kiali/src/components/Health/HealthIndicator.tsx b/workspaces/kiali/plugins/kiali/src/components/Health/HealthIndicator.tsx new file mode 100644 index 0000000000..db9d618bb4 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/components/Health/HealthIndicator.tsx @@ -0,0 +1,58 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import * as React from 'react'; + +import { PopoverPosition, Tooltip } from '@patternfly/react-core'; + +import { createTooltipIcon } from '../../config/KialiIcon'; +import * as H from '../../types/Health'; +import { HealthDetails } from './HealthDetails'; +import { healthIndicatorStyle } from './HealthStyle'; +import { createIcon } from './Helper'; + +interface HealthIndicatorProps { + health?: H.Health; + id: string; + tooltipPlacement?: PopoverPosition; +} + +export const HealthIndicator: React.FC = ( + props: HealthIndicatorProps, +) => { + const globalStatus = props.health ? props.health.getGlobalStatus() : H.NA; + + if (props.health) { + const icon = createIcon(globalStatus); + + return ( + + {globalStatus.name} + + + } + position={PopoverPosition.auto} + className={healthIndicatorStyle} + > + {createTooltipIcon(icon, 'health')} + + ); + } + + return ; +}; diff --git a/workspaces/kiali/plugins/kiali/src/components/Health/HealthStyle.ts b/workspaces/kiali/plugins/kiali/src/components/Health/HealthStyle.ts new file mode 100644 index 0000000000..ebd1c33da5 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/components/Health/HealthStyle.ts @@ -0,0 +1,32 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { kialiStyle } from '../../styles/StyleUtils'; +import { PFColors } from '../Pf/PfColors'; + +export const healthIndicatorStyle = kialiStyle({ + $nest: { + '& .pf-v5-c-tooltip__content': { + borderWidth: '1px', + textAlign: 'left', + }, + + '& .pf-v5-c-content ul': { + marginBottom: 'var(--pf-v5-c-content--ul--MarginTop)', + marginTop: 0, + color: PFColors.Color100, + }, + }, +}); diff --git a/workspaces/kiali/plugins/kiali/src/components/Health/Helper.ts b/workspaces/kiali/plugins/kiali/src/components/Health/Helper.ts new file mode 100644 index 0000000000..81d42f50fb --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/components/Health/Helper.ts @@ -0,0 +1,34 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import * as React from 'react'; + +import { Icon } from '@patternfly/react-core'; + +import { kialiStyle } from '../../styles/StyleUtils'; +import { Status } from '../../types/Health'; + +type Size = 'sm' | 'md' | 'lg' | 'xl'; + +export const createIcon = (status: Status, size?: Size) => { + const classForColor = kialiStyle({ + color: status.color, + }); + return React.createElement( + Icon, + { size: size, className: `${status.class} ${classForColor}` }, + React.createElement(status.icon), + ); +}; diff --git a/workspaces/kiali/plugins/kiali/src/components/IstioConfigCard/IstioConfigCard.tsx b/workspaces/kiali/plugins/kiali/src/components/IstioConfigCard/IstioConfigCard.tsx new file mode 100644 index 0000000000..27d814fab5 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/components/IstioConfigCard/IstioConfigCard.tsx @@ -0,0 +1,119 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import * as React from 'react'; + +import { EmptyState } from '@backstage/core-components'; + +import { + Card, + CardContent, + CardHeader, + TableCellProps, + Typography, +} from '@material-ui/core'; + +import { cardsHeight } from '../../styles/StyleUtils'; +import { IstioConfigItem } from '../../types/IstioConfigList'; +import { PFBadge } from '../Pf/PfBadges'; +import { SimpleTable, tRow } from '../SimpleTable'; +import { ValidationObjectSummary } from '../Validations/ValidationObjectSummary'; +import { IstioTypes } from '../VirtualList/Config'; + +type IstioConfigCardProps = { + items: IstioConfigItem[]; + name: string; +}; + +export const IstioConfigCard: React.FC = ( + props: IstioConfigCardProps, +) => { + const columns: TableCellProps[] = [ + { title: 'Name' }, + { title: 'Status', width: 10 }, + ]; + + const noIstioConfig: React.ReactNode = ( + No Istio Config found for {props.name}} + /> + ); + + const overviewLink = (item: IstioConfigItem): React.ReactNode => { + return <>{item.name}; + }; + + const rows: tRow = props.items + .sort((a: IstioConfigItem, b: IstioConfigItem) => { + if (a.type < b.type) { + return -1; + } else if (a.type > b.type) { + return 1; + } + return a.name < b.name ? -1 : 1; + }) + .map((item, itemIdx) => { + return { + cells: [ + + + {overviewLink(item)} + , + , + ], + }; + }); + + return ( + + {props.items.length > 0 && ( + <> + + Istio Config + + } + /> + + + + + + )} + {props.items.length === 0 && ( + + + + )} + + ); +}; diff --git a/workspaces/kiali/plugins/kiali/src/components/IstioStatus/IstioComponentStatus.tsx b/workspaces/kiali/plugins/kiali/src/components/IstioStatus/IstioComponentStatus.tsx new file mode 100644 index 0000000000..26be422a3e --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/components/IstioStatus/IstioComponentStatus.tsx @@ -0,0 +1,107 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import * as React from 'react'; + +import { ListItem, ListItemText } from '@material-ui/core'; +import { + CheckCircleIcon, + ExclamationCircleIcon, + ExclamationTriangleIcon, + MinusCircleIcon, +} from '@patternfly/react-icons'; +import { SVGIconProps } from '@patternfly/react-icons/dist/js/createIcon'; + +import { ComponentStatus, Status } from '../../types/IstioStatus'; +import { PFColors } from '../Pf/PfColors'; + +type Props = { + componentStatus: ComponentStatus; +}; + +export type ComponentIcon = { + color: string; + icon: React.ComponentClass; +}; + +const ErrorCoreComponent: ComponentIcon = { + color: PFColors.Danger, + icon: ExclamationCircleIcon, +}; + +const ErrorAddonComponent: ComponentIcon = { + color: PFColors.Warning, + icon: ExclamationTriangleIcon, +}; + +const NotReadyComponent: ComponentIcon = { + color: PFColors.Info, + icon: MinusCircleIcon, +}; + +const SuccessComponent: ComponentIcon = { + color: PFColors.Success, + icon: CheckCircleIcon, +}; + +// Mapping Valid-Core to Icon representation. +const validToIcon: { [valid: string]: ComponentIcon } = { + 'false-false': ErrorAddonComponent, + 'false-true': ErrorCoreComponent, + 'true-false': SuccessComponent, + 'true-true': SuccessComponent, +}; + +const statusMsg = { + [Status.NotFound]: 'Not found', + [Status.NotReady]: 'Not ready', + [Status.Unhealthy]: 'Not healthy', + [Status.Unreachable]: 'Unreachable', + [Status.Healthy]: 'Healthy', +}; + +export const IstioComponentStatus = (props: Props): JSX.Element => { + const renderIcon = (status: Status, isCore: boolean) => { + let compIcon = validToIcon[`${status === Status.Healthy}-${isCore}`]; + if (status === Status.NotReady) { + compIcon = NotReadyComponent; + } + const IconComponent = compIcon.icon; + return ; + }; + + const comp = props.componentStatus; + const state = statusMsg[comp.status]; + return ( + + + + {renderIcon( + props.componentStatus.status, + props.componentStatus.is_core, + )} + + + {comp.name} + + {state && <>{state}} + + } + /> + + ); +}; diff --git a/workspaces/kiali/plugins/kiali/src/components/IstioStatus/IstioStatus.tsx b/workspaces/kiali/plugins/kiali/src/components/IstioStatus/IstioStatus.tsx new file mode 100644 index 0000000000..d992bd2ef9 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/components/IstioStatus/IstioStatus.tsx @@ -0,0 +1,126 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import * as React from 'react'; + +import { Tooltip } from '@material-ui/core'; +import { ResourcesFullIcon } from '@patternfly/react-icons'; +import { SVGIconProps } from '@patternfly/react-icons/dist/esm/createIcon'; + +import { ComponentStatus, Status } from '../../types/IstioStatus'; +import { PFColors } from '../Pf/PfColors'; +import { IstioStatusList } from './IstioStatusList'; + +type StatusIcons = { + ErrorIcon?: React.ComponentClass; + WarningIcon?: React.ComponentClass; + InfoIcon?: React.ComponentClass; + HealthyIcon?: React.ComponentClass; +}; + +type Props = { + status: ComponentStatus[]; + icons?: StatusIcons; + cluster?: string; +}; + +const ValidToColor = { + 'true-true-true': PFColors.Danger, + 'true-true-false': PFColors.Danger, + 'true-false-true': PFColors.Danger, + 'true-false-false': PFColors.Danger, + 'false-true-true': PFColors.Warning, + 'false-true-false': PFColors.Warning, + 'false-false-true': PFColors.Info, + 'false-false-false': PFColors.Success, +}; + +const defaultIcons = { + ErrorIcon: ResourcesFullIcon, + WarningIcon: ResourcesFullIcon, + InfoIcon: ResourcesFullIcon, + HealthyIcon: ResourcesFullIcon, +}; + +export const IstioStatus = (props: Props): React.JSX.Element => { + const tooltipContent = () => { + return ; + }; + + const tooltipColor = () => { + let coreUnhealthy: boolean = false; + let addonUnhealthy: boolean = false; + let notReady: boolean = false; + + (props.status || []).forEach(compStatus => { + const { status, is_core } = compStatus; + const isNotReady: boolean = status === Status.NotReady; + const isUnhealthy: boolean = status !== Status.Healthy && !isNotReady; + + if (is_core) { + coreUnhealthy = coreUnhealthy || isUnhealthy; + } else { + addonUnhealthy = addonUnhealthy || isUnhealthy; + } + + notReady = notReady || isNotReady; + }); + + return ValidToColor[`${coreUnhealthy}-${addonUnhealthy}-${notReady}`]; + }; + + const healthyComponents = () => { + return props.status.reduce( + (healthy: boolean, compStatus: ComponentStatus) => { + return healthy && compStatus.status === Status.Healthy; + }, + true, + ); + }; + + if (healthyComponents()) { + return <>; + } + const icons = props.icons + ? { ...defaultIcons, ...props.icons } + : defaultIcons; + const iconColor = tooltipColor(); + let Icon: React.ComponentClass = ResourcesFullIcon; + let dataTestID: string = 'istio-status'; + + if (iconColor === PFColors.Danger) { + Icon = icons.ErrorIcon; + dataTestID += '-danger'; + } else if (iconColor === PFColors.Warning) { + Icon = icons.WarningIcon; + dataTestID += '-warning'; + } else if (iconColor === PFColors.Info) { + Icon = icons.InfoIcon; + dataTestID += '-info'; + } else if (iconColor === PFColors.Success) { + Icon = icons.HealthyIcon; + dataTestID += '-success'; + } + + return ( + + + + ); +}; diff --git a/workspaces/kiali/plugins/kiali/src/components/IstioStatus/IstioStatusInline.tsx b/workspaces/kiali/plugins/kiali/src/components/IstioStatus/IstioStatusInline.tsx new file mode 100644 index 0000000000..c4c78a7a02 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/components/IstioStatus/IstioStatusInline.tsx @@ -0,0 +1,45 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import * as React from 'react'; + +import { + CheckCircleIcon, + ExclamationCircleIcon, + ExclamationTriangleIcon, + MinusCircleIcon, +} from '@patternfly/react-icons'; + +import { ComponentStatus } from '../../types/IstioStatus'; +import { IstioStatus } from './IstioStatus'; + +type Props = { + status: ComponentStatus[]; + cluster?: string; +}; + +export const IstioStatusInline = (props: Props): React.JSX.Element => { + return ( + + ); +}; diff --git a/workspaces/kiali/plugins/kiali/src/components/IstioStatus/IstioStatusList.tsx b/workspaces/kiali/plugins/kiali/src/components/IstioStatus/IstioStatusList.tsx new file mode 100644 index 0000000000..27dda15700 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/components/IstioStatus/IstioStatusList.tsx @@ -0,0 +1,67 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import * as React from 'react'; + +import { List, Typography } from '@material-ui/core'; + +import { ComponentStatus, Status } from '../../types/IstioStatus'; +import { IstioComponentStatus } from './IstioComponentStatus'; + +type Props = { + status: ComponentStatus[]; +}; + +export const IstioStatusList = (props: Props) => { + const nonhealthyComponents = () => { + return props.status.filter( + (c: ComponentStatus) => c.status !== Status.Healthy, + ); + }; + + const coreComponentsStatus = () => { + return nonhealthyComponents().filter((s: ComponentStatus) => s.is_core); + }; + + const addonComponentsStatus = () => { + return nonhealthyComponents().filter((s: ComponentStatus) => !s.is_core); + }; + + const renderComponentList = () => { + const groups = { + core: coreComponentsStatus, + addon: addonComponentsStatus, + }; + + return ['core', 'addon'].map((group: string) => + // @ts-expect-error + groups[group]().map((status: ComponentStatus) => ( + + )), + ); + }; + + return ( +
    + Istio Components Status + + {renderComponentList()} + +
    + ); +}; diff --git a/workspaces/kiali/plugins/kiali/src/components/IstioWizards/WizardActions.ts b/workspaces/kiali/plugins/kiali/src/components/IstioWizards/WizardActions.ts new file mode 100644 index 0000000000..f17a077427 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/components/IstioWizards/WizardActions.ts @@ -0,0 +1,17 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export const KIALI_WIZARD_LABEL = 'kiali_wizard'; +export const KIALI_RELATED_LABEL = 'kiali_wizard_related'; diff --git a/workspaces/kiali/plugins/kiali/src/components/Label/Label.tsx b/workspaces/kiali/plugins/kiali/src/components/Label/Label.tsx new file mode 100644 index 0000000000..833143d441 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/components/Label/Label.tsx @@ -0,0 +1,57 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import * as React from 'react'; + +import { Label as PfLabel } from '@patternfly/react-core'; + +import { kialiStyle } from '../../styles/StyleUtils'; +import { canRender } from '../../utils/SafeRender'; + +interface Props { + name: string; + onClick?: () => void; + style?: React.CSSProperties; + value: string; +} + +const labelStyle = kialiStyle({ + display: 'block', + float: 'left', + fontSize: 'var(--kiali-global--font-size)', + margin: '0 0.25rem 0.25rem 0', + maxWidth: '100%', +}); + +export const Label = (props: Props) => { + const { name, value } = props; + let label = 'This label has an unexpected format'; + + if (canRender(name) && canRender(value)) { + label = value && value.length > 0 ? `${name}=${value}` : name; + } + + return ( + + {label} + + ); +}; diff --git a/workspaces/kiali/plugins/kiali/src/components/Label/Labels.tsx b/workspaces/kiali/plugins/kiali/src/components/Label/Labels.tsx new file mode 100644 index 0000000000..87a917657b --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/components/Label/Labels.tsx @@ -0,0 +1,110 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import * as React from 'react'; + +import { Tooltip } from '@material-ui/core'; +import Button from '@material-ui/core/Button'; + +import { KialiIcon } from '../../config/KialiIcon'; +import { kialiStyle } from '../../styles/StyleUtils'; +import { Label } from './Label'; + +const SHOW_MORE_TRESHOLD = 2; + +interface LabelsProps { + expanded?: boolean; + type?: string; + labels?: { [key: string]: string }; + tooltipMessage?: string; +} + +const linkStyle = kialiStyle({ + padding: '0 0.25rem', + fontSize: '0.8rem', +}); + +const infoStyle = kialiStyle({ + marginLeft: '0.25rem', + marginBottom: '0.125rem', +}); + +const labelsContainerStyle = kialiStyle({ + display: 'flex', + alignItems: 'center', + flexWrap: 'wrap', + overflow: 'hidden', +}); + +export const Labels: React.FC = (props: LabelsProps) => { + const [expanded, setExpanded] = React.useState( + props.expanded ?? false, + ); + + const labelKeys = Object.keys(props.labels ?? {}); + + const hasLabels = labelKeys.length > 0; + + const hasManyLabels = labelKeys.length > SHOW_MORE_TRESHOLD; + + const showItem = (i: number): boolean => { + return expanded || !hasManyLabels || i < SHOW_MORE_TRESHOLD; + }; + + const renderMoreLabelsLink: React.ReactNode | null = + hasManyLabels && !expanded ? ( + + ) : null; + + const renderLabels = labelKeys.map((key, i) => { + return showItem(i) ? ( +
    +
    + ) : undefined; + }); + + const renderEmptyLabels = ( + No {props.type ? props.type : 'labels'} + ); + + const tooltip = props.tooltipMessage ? ( + {props.tooltipMessage}} + > +
    + +
    +
    + ) : undefined; + + return ( +
    + {hasLabels ? [renderLabels, renderMoreLabelsLink] : renderEmptyLabels} + {tooltip} +
    + ); +}; diff --git a/workspaces/kiali/plugins/kiali/src/components/Link/IstioConfigListLink.tsx b/workspaces/kiali/plugins/kiali/src/components/Link/IstioConfigListLink.tsx new file mode 100644 index 0000000000..606f5a0651 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/components/Link/IstioConfigListLink.tsx @@ -0,0 +1,78 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import * as React from 'react'; +import { Link } from 'react-router-dom'; + +import { Paths } from '../../config'; +import { FilterSelected } from '../Filters/StatefulFilters'; + +interface Props { + namespaces: string[]; + errors?: boolean; + warnings?: boolean; +} + +export class IstioConfigListLink extends React.Component< + React.PropsWithChildren +> { + namespacesToParams = () => { + let param: string = ''; + if (this.props.namespaces.length > 0) { + param = `namespaces=${this.props.namespaces.join(',')}`; + } + return param; + }; + + validationToParams = () => { + let params: string = ''; + + if (this.props.warnings) { + params += 'configvalidation=Warning'; + } + + let errorParams: string = ''; + if (this.props.errors) { + errorParams += 'configvalidation=Not+Valid'; + } + + if (params !== '' && errorParams !== '') { + params += '&'; + } + + params += errorParams; + + return params; + }; + + cleanFilters = () => { + FilterSelected.resetFilters(); + }; + + render() { + let params: string = this.namespacesToParams(); + const validationParams: string = this.validationToParams(); + if (params !== '' && validationParams !== '') { + params += '&'; + } + params += validationParams; + + return ( + + {this.props.children} + + ); + } +} diff --git a/workspaces/kiali/plugins/kiali/src/components/Link/IstioObjectLink.tsx b/workspaces/kiali/plugins/kiali/src/components/Link/IstioObjectLink.tsx new file mode 100644 index 0000000000..fca4f18268 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/components/Link/IstioObjectLink.tsx @@ -0,0 +1,106 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import React from 'react'; + +import { Tooltip } from '@material-ui/core'; + +import { KialiIcon } from '../../config'; +import { kialiStyle } from '../../styles/StyleUtils'; +import { BackstageObjectLink } from '../../utils/backstageLinks'; +import { PFBadge } from '../Pf/PfBadges'; +import { IstioTypes } from '../VirtualList/Config'; + +type ReferenceIstioObjectProps = { + cluster?: string; + name: string; + namespace: string; + query?: string; + subType?: string; + type: string; +}; + +type IstioObjectProps = ReferenceIstioObjectProps & { + children: React.ReactNode; +}; + +export const IstioObjectLink: React.FC = ( + props: IstioObjectProps, +) => { + const { name, namespace, type, cluster, query } = props; + const istioType = IstioTypes[type]; + return ( + + {props.children} + + ); +}; + +export const ReferenceIstioObjectLink = (props: ReferenceIstioObjectProps) => { + const { name, namespace, cluster, type, subType } = props; + const istioType = IstioTypes[type]; + + let showLink = true; + let showTooltip = false; + let tooltipMsg: string | undefined = undefined; + let reference = `${namespace}/${name}`; + + const infoStyle = kialiStyle({ + marginLeft: '0.5rem', + verticalAlign: '-0.06em !important', + }); + + if (name === 'mesh') { + reference = name; + showLink = false; + showTooltip = true; + tooltipMsg = + 'The reserved word, "mesh", implies all of the sidecars in the mesh'; + } + + return ( + <> + + + {showLink && ( + + {reference} + + )} + + {!showLink &&
    {reference}
    } + + {showTooltip && ( + {tooltipMsg}}> + + + )} + + ); +}; diff --git a/workspaces/kiali/plugins/kiali/src/components/Link/ServiceLink.tsx b/workspaces/kiali/plugins/kiali/src/components/Link/ServiceLink.tsx new file mode 100644 index 0000000000..63e5a329b9 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/components/Link/ServiceLink.tsx @@ -0,0 +1,43 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import * as React from 'react'; + +import { PFBadge, PFBadges } from '../../components/Pf/PfBadges'; +import { BackstageObjectLink } from '../../utils/backstageLinks'; + +type ServiceLinkProps = { + cluster?: string; + name: string; + namespace: string; + query?: string; +}; + +export const ServiceLink = (props: ServiceLinkProps) => { + const { name, namespace, cluster, query } = props; + + return ( + <> + + + + ); +}; diff --git a/workspaces/kiali/plugins/kiali/src/components/Link/ValidationSummaryLink.tsx b/workspaces/kiali/plugins/kiali/src/components/Link/ValidationSummaryLink.tsx new file mode 100644 index 0000000000..72737ba5ee --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/components/Link/ValidationSummaryLink.tsx @@ -0,0 +1,54 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import * as React from 'react'; + +import { IstioConfigListLink } from './IstioConfigListLink'; + +type Props = { + namespace: string; + errors: number; + warnings: number; + objectCount?: number; + children: React.ReactNode; +}; + +export class ValidationSummaryLink extends React.Component { + hasIstioObjects = () => { + return this.props.objectCount && this.props.objectCount > 0; + }; + + render() { + let link: any = ( +
    N/A
    + ); + + if (this.hasIstioObjects()) { + // Kiosk actions are used when the kiosk specifies a parent, + // otherwise the kiosk=true will keep the links inside Kiali + link = ( + 0} + errors={this.props.errors > 0} + > + {this.props.children} + + ); + } + + return link; + } +} diff --git a/workspaces/kiali/plugins/kiali/src/components/Link/WorkloadLink.tsx b/workspaces/kiali/plugins/kiali/src/components/Link/WorkloadLink.tsx new file mode 100644 index 0000000000..9dcdf1b77d --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/components/Link/WorkloadLink.tsx @@ -0,0 +1,43 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import * as React from 'react'; + +import { BackstageObjectLink } from '../../utils/backstageLinks'; +import { PFBadge, PFBadges } from '../Pf/PfBadges'; + +type WorkloadLinkProps = { + cluster?: string; + name: string; + namespace: string; + query?: string; +}; + +export const WorkloadLink = (props: WorkloadLinkProps) => { + const { name, namespace, cluster, query } = props; + + return ( + <> + + + + ); +}; diff --git a/workspaces/kiali/plugins/kiali/src/components/Logos/Logos.tsx b/workspaces/kiali/plugins/kiali/src/components/Logos/Logos.tsx new file mode 100644 index 0000000000..f42abf1ba0 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/components/Logos/Logos.tsx @@ -0,0 +1,86 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import React from 'react'; + +import GraphqlIcon from '../../assets/img/api/graphql.svg'; +import GrpcIcon from '../../assets/img/api/grpc.svg'; +import RestIcon from '../../assets/img/api/rest.svg'; +import GoLogo from '../../assets/img/runtime/go.svg'; +import JVMLogo from '../../assets/img/runtime/java.svg'; +import MicroProfileLogo from '../../assets/img/runtime/microprofile.svg'; +import NodejsLogo from '../../assets/img/runtime/nodejs.svg'; +import QuarkusLogo from '../../assets/img/runtime/quarkus.svg'; +import SpringBootLogo from '../../assets/img/runtime/spring-boot.svg'; +import ThorntailLogo from '../../assets/img/runtime/thorntail.svg'; +import TomcatLogo from '../../assets/img/runtime/tomcat.svg'; +import VertxLogo from '../../assets/img/runtime/vertx.svg'; +import { kialiStyle } from '../../styles/StyleUtils'; + +const iconStyle = kialiStyle({ + height: '1.5rem', +}); + +const renderLogo = ( + name: string, + title: string | undefined, + idx: number, + logoSet: { [key: string]: any }, + className?: string, +): React.ReactElement => { + const logo = logoSet[name]; + + if (logo) { + return ( + {name} + ); + } + + return {name}; +}; + +// API types +const apiLogos = { + grpc: GrpcIcon, + rest: RestIcon, + graphql: GraphqlIcon, +}; + +const runtimesLogos = { + Go: GoLogo, + JVM: JVMLogo, + MicroProfile: MicroProfileLogo, + 'Node.js': NodejsLogo, + Quarkus: QuarkusLogo, + 'Spring Boot': SpringBootLogo, + Thorntail: ThorntailLogo, + Tomcat: TomcatLogo, + 'Vert.x': VertxLogo, +}; + +export const renderRuntimeLogo = (name: string, idx: number): React.ReactNode => + renderLogo(name, name, idx, runtimesLogos, iconStyle); + +export const renderAPILogo = ( + name: string, + title: string | undefined, + idx: number, +): React.ReactNode => renderLogo(name, title, idx, apiLogos, iconStyle); diff --git a/workspaces/kiali/plugins/kiali/src/components/MTls/MTLSIcon.tsx b/workspaces/kiali/plugins/kiali/src/components/MTls/MTLSIcon.tsx new file mode 100644 index 0000000000..ea63a98980 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/components/MTls/MTLSIcon.tsx @@ -0,0 +1,65 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import * as React from 'react'; + +import { Tooltip, TooltipPosition } from '@patternfly/react-core'; + +import fullIconDark from '../../assets/img/mtls-status-full-dark.svg'; +import fullIcon from '../../assets/img/mtls-status-full.svg'; +import hollowIconDark from '../../assets/img/mtls-status-partial-dark.svg'; +import hollowIcon from '../../assets/img/mtls-status-partial.svg'; + +export { fullIcon, hollowIcon, fullIconDark, hollowIconDark }; + +type Props = { + icon: string; + iconClassName: string; + tooltipText: string; + tooltipPosition: TooltipPosition; +}; + +export enum MTLSIconTypes { + LOCK_FULL = 'LOCK_FULL', + LOCK_HOLLOW = 'LOCK_HOLLOW', + LOCK_FULL_DARK = 'LOCK_FULL_DARK', + LOCK_HOLLOW_DARK = 'LOCK_HOLLOW_DARK', +} + +const nameToSource = new Map([ + [MTLSIconTypes.LOCK_FULL, fullIcon], + [MTLSIconTypes.LOCK_FULL_DARK, fullIconDark], + [MTLSIconTypes.LOCK_HOLLOW, hollowIcon], + [MTLSIconTypes.LOCK_HOLLOW_DARK, hollowIconDark], +]); + +export class MTLSIcon extends React.Component { + render() { + return ( + + {this.props.tooltipPosition} + + ); + } +} diff --git a/workspaces/kiali/plugins/kiali/src/components/MTls/MTLSStatus.tsx b/workspaces/kiali/plugins/kiali/src/components/MTls/MTLSStatus.tsx new file mode 100644 index 0000000000..c599b72cab --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/components/MTls/MTLSStatus.tsx @@ -0,0 +1,82 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import * as React from 'react'; + +import { TooltipPosition } from '@patternfly/react-core'; + +import { MTLSIcon } from './MTLSIcon'; + +type Props = { + status: string; + statusDescriptors: Map; + className?: string; + overlayPosition?: TooltipPosition; +}; + +export type StatusDescriptor = { + message: string; + icon: string; + showStatus: boolean; +}; + +export const emptyDescriptor = { + message: '', + icon: '', + showStatus: false, +}; + +export class MTLSStatus extends React.Component { + statusDescriptor() { + return ( + this.props.statusDescriptors.get(this.props.status) || emptyDescriptor + ); + } + + icon() { + return this.statusDescriptor().icon; + } + + message() { + return this.statusDescriptor().message; + } + + showStatus() { + return this.statusDescriptor().showStatus; + } + + overlayPosition() { + return this.props.overlayPosition || TooltipPosition.left; + } + + iconClassName() { + return this.props.className || ''; + } + + render() { + if (this.showStatus()) { + return ( + + ); + } + + return null; + } +} diff --git a/workspaces/kiali/plugins/kiali/src/components/MTls/NamespaceMTLSStatus.tsx b/workspaces/kiali/plugins/kiali/src/components/MTls/NamespaceMTLSStatus.tsx new file mode 100644 index 0000000000..eb0f72d465 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/components/MTls/NamespaceMTLSStatus.tsx @@ -0,0 +1,75 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import * as React from 'react'; + +import { kialiStyle } from '../../styles/StyleUtils'; +import { MTLSStatuses } from '../../types/TLSStatus'; +import { MTLSIconTypes } from './MTLSIcon'; +import { emptyDescriptor, MTLSStatus, StatusDescriptor } from './MTLSStatus'; + +type Props = { + status: string; +}; + +const statusDescriptors = new Map([ + [ + MTLSStatuses.ENABLED, + { + message: 'mTLS is enabled for this namespace', + icon: MTLSIconTypes.LOCK_FULL_DARK, + showStatus: true, + }, + ], + [ + MTLSStatuses.ENABLED_EXTENDED, + { + message: + 'mTLS is enabled for this namespace, extended from Mesh-wide config', + icon: MTLSIconTypes.LOCK_FULL_DARK, + showStatus: true, + }, + ], + [ + MTLSStatuses.PARTIALLY, + { + message: 'mTLS is partially enabled for this namespace', + icon: MTLSIconTypes.LOCK_HOLLOW_DARK, + showStatus: true, + }, + ], + [MTLSStatuses.DISABLED, emptyDescriptor], + [MTLSStatuses.NOT_ENABLED, emptyDescriptor], +]); + +// Magic style to align Istio Config icons on top of status overview +const iconStyle = kialiStyle({ + marginTop: -3, + marginRight: 18, + marginLeft: 2, + width: 10, +}); + +export class NamespaceMTLSStatus extends React.Component { + render() { + return ( + + ); + } +} diff --git a/workspaces/kiali/plugins/kiali/src/components/MessageCenter/AlertDrawer.tsx b/workspaces/kiali/plugins/kiali/src/components/MessageCenter/AlertDrawer.tsx new file mode 100644 index 0000000000..520f61c882 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/components/MessageCenter/AlertDrawer.tsx @@ -0,0 +1,107 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import * as React from 'react'; + +import { ItemCardHeader } from '@backstage/core-components'; + +import { + Accordion, + AccordionDetails, + AccordionSummary, + Card, + CardContent, + CardMedia, + Typography, +} from '@material-ui/core'; +import ExpandMoreRounded from '@material-ui/icons/ExpandMoreRounded'; +import { InfoIcon } from '@patternfly/react-icons'; + +import { KialiAppAction } from '../../actions/KialiAppAction'; +import { MessageCenterState } from '../../store'; +import { kialiStyle } from '../../styles/StyleUtils'; +import { + NotificationGroup, + NotificationMessage, +} from '../../types/MessageCenter'; +import { AlertDrawerGroup } from './AlertDrawerGroup'; + +type AlertDrawerProps = { + toggleDrawer: (isOpen: boolean) => void; + messages: MessageCenterState; + messageDispatch: React.Dispatch; +}; + +const hideGroup = (group: NotificationGroup): boolean => { + return group.hideIfEmpty && group.messages.length === 0; +}; + +const getUnreadCount = (messages: NotificationMessage[]) => { + return messages.reduce((count, message) => { + return message.seen ? count : count + 1; + }, 0); +}; + +const getUnreadMessageLabel = (messages: NotificationMessage[]) => { + const unreadCount = getUnreadCount(messages); + return unreadCount === 1 + ? '1 Unread Message' + : `${getUnreadCount(messages)} Unread Messages`; +}; + +const drawer = kialiStyle({ + display: 'flex', + width: '500px', + justifyContent: 'space-between', +}); + +const noNotificationsMessage = ( + <> + + No Messages Available + +); + +export const AlertDrawer = (props: AlertDrawerProps) => { + return ( + + + + + + {props.messages.groups.length === 0 + ? noNotificationsMessage + : props.messages.groups.map(group => + hideGroup(group) ? null : ( + + } + data-test="message-center-summary" + > + + {group.title} {getUnreadMessageLabel(group.messages)} + + + + + + + ), + )} + + + ); +}; diff --git a/workspaces/kiali/plugins/kiali/src/components/MessageCenter/AlertDrawerGroup.tsx b/workspaces/kiali/plugins/kiali/src/components/MessageCenter/AlertDrawerGroup.tsx new file mode 100644 index 0000000000..ca8dd4b7aa --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/components/MessageCenter/AlertDrawerGroup.tsx @@ -0,0 +1,106 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import * as React from 'react'; + +import { Button, Card, CardActions, CardContent } from '@material-ui/core'; +import { InfoIcon } from '@patternfly/react-icons'; + +import { MessageCenterActions } from '../../actions'; +import { KialiAppState, KialiContext } from '../../store'; +import { NotificationGroup } from '../../types/MessageCenter'; +import { AlertDrawerMessage } from './AlertDrawerMessage'; + +type AlertDrawerGroupProps = { + group: NotificationGroup; + reverseMessageOrder?: boolean; +}; + +const noNotificationsMessage = ( + <> + + No Messages Available + +); + +export const AlertDrawerGroup = (props: AlertDrawerGroupProps) => { + const kialiState = React.useContext(KialiContext) as KialiAppState; + + const markGroupAsRead = (groupId: string) => { + const foundGroup = kialiState.messageCenter.groups.find( + group => group.id === groupId, + ); + if (foundGroup) { + kialiState.dispatch.messageDispatch( + MessageCenterActions.markAsRead( + foundGroup.messages.map(message => message.id), + ), + ); + } + }; + + const clearGroup = (groupId: string) => { + const foundGroup = kialiState.messageCenter.groups.find( + group => group.id === groupId, + ); + if (foundGroup) { + kialiState.dispatch.messageDispatch( + MessageCenterActions.removeMessage( + foundGroup.messages.map(message => message.id), + ), + ); + } + }; + + const getMessages = () => { + return props.reverseMessageOrder + ? [...props.group.messages].reverse() + : props.group.messages; + }; + + const group: NotificationGroup = props.group; + + return ( + + + {group.messages.length === 0 && noNotificationsMessage} + {getMessages().map(message => ( + + ))} + + {group.showActions && group.messages.length > 0 && ( + + + + + )} + + ); +}; diff --git a/workspaces/kiali/plugins/kiali/src/components/MessageCenter/AlertDrawerMessage.tsx b/workspaces/kiali/plugins/kiali/src/components/MessageCenter/AlertDrawerMessage.tsx new file mode 100644 index 0000000000..dd8cdab316 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/components/MessageCenter/AlertDrawerMessage.tsx @@ -0,0 +1,111 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import * as React from 'react'; + +import { + Accordion, + AccordionDetails, + AccordionSummary, + Card, + CardContent, + Typography, +} from '@material-ui/core'; +import ExpandMoreRounded from '@material-ui/icons/ExpandMoreRounded'; +import moment from 'moment'; + +import { MessageCenterActions } from '../../actions/MessageCenterActions'; +import { KialiIcon } from '../../config/KialiIcon'; +import { KialiAppState, KialiContext } from '../../store'; +import { MessageType, NotificationMessage } from '../../types/MessageCenter'; + +const getIcon = (type: MessageType) => { + switch (type) { + case MessageType.ERROR: + return ; + case MessageType.INFO: + return ; + case MessageType.SUCCESS: + return ; + case MessageType.WARNING: + return ; + default: + throw Error('Unexpected type'); + } +}; + +type AlertDrawerMessageProps = { + message: NotificationMessage; +}; + +export const AlertDrawerMessage = (props: AlertDrawerMessageProps) => { + const kialiState = React.useContext(KialiContext) as KialiAppState; + + // const markAsRead = (message: NotificationMessage) => kialiState.dispatch.messageDispatch(MessageCenterActions.markAsRead(message.id)); + const toggleMessageDetail = (message: NotificationMessage) => + kialiState.dispatch.messageDispatch( + MessageCenterActions.toggleMessageDetail(message.id), + ); + + return ( + + + {getIcon(props.message.type)}{' '} + {props.message.seen ? ( + props.message.content + ) : ( + {props.message.content} + )} + {props.message.detail && ( + + toggleMessageDetail(props.message)} + expandIcon={} + > + + {props.message.showDetail ? 'Hide Detail' : 'Show Detail'} + + + +
    +                {props.message.detail}
    +              
    +
    +
    + )} + {props.message.count > 1 && ( +
    + {props.message.count} {moment().from(props.message.firstTriggered)} +
    + )} +
    + + {props.message.created.toLocaleDateString()} + + + {props.message.created.toLocaleTimeString()} + +
    +
    +
    + ); +}; diff --git a/workspaces/kiali/plugins/kiali/src/components/MessageCenter/MessageCenter.tsx b/workspaces/kiali/plugins/kiali/src/components/MessageCenter/MessageCenter.tsx new file mode 100644 index 0000000000..3b526e3ebf --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/components/MessageCenter/MessageCenter.tsx @@ -0,0 +1,133 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import * as React from 'react'; + +import { Badge, Button, Drawer } from '@material-ui/core'; + +import { KialiIcon } from '../../config/KialiIcon'; +import { KialiAppState, KialiContext } from '../../store'; +import { kialiStyle } from '../../styles/StyleUtils'; +import { + MessageType, + NotificationGroup, + NotificationMessage, +} from '../../types/MessageCenter'; +import { AlertDrawer } from './AlertDrawer'; + +const bell = kialiStyle({ + position: 'relative', + right: '5px', + top: '5px', +}); + +const calculateMessageStatus = (state: KialiAppState) => { + type MessageCenterTriggerPropsToMap = { + newMessagesCount: number; + badgeDanger: boolean; + systemErrorsCount: number; + }; + + const dangerousMessageTypes = [MessageType.ERROR, MessageType.WARNING]; + let systemErrorsCount = 0; + + const systemErrorsGroup = state.messageCenter.groups.find( + item => item.id === 'systemErrors', + ); + if (systemErrorsGroup) { + systemErrorsCount = systemErrorsGroup.messages.length; + } + + return state.messageCenter.groups + .reduce( + (unreadMessages: NotificationMessage[], group: NotificationGroup) => { + return unreadMessages.concat( + group.messages.reduce( + ( + unreadMessagesInGroup: NotificationMessage[], + message: NotificationMessage, + ) => { + if (!message.seen) { + unreadMessagesInGroup.push(message); + } + return unreadMessagesInGroup; + }, + [], + ), + ); + }, + [], + ) + .reduce( + ( + propsToMap: MessageCenterTriggerPropsToMap, + message: NotificationMessage, + ) => { + propsToMap.newMessagesCount++; + propsToMap.badgeDanger = + propsToMap.badgeDanger || + dangerousMessageTypes.includes(message.type); + return propsToMap; + }, + { + newMessagesCount: 0, + systemErrorsCount: systemErrorsCount, + badgeDanger: false, + }, + ); +}; + +export const MessageCenter = (props: { color?: string }) => { + const kialiState = React.useContext(KialiContext) as KialiAppState; + const [isOpen, toggleDrawer] = React.useState(false); + const messageCenterStatus = calculateMessageStatus(kialiState); + /* + const onDismiss = (message: NotificationMessage, userDismissed: boolean) => { + if (userDismissed) { + kialiState.messageDispatch(MessageCenterActions.markAsRead(message.id)); + } else { + kialiState.messageDispatch(MessageCenterActions.hideNotification(message.id)); + } + } + */ + return ( + <> + + toggleDrawer(false)}> + + + + ); +}; diff --git a/workspaces/kiali/plugins/kiali/src/components/Metrics/GrafanaLinks.tsx b/workspaces/kiali/plugins/kiali/src/components/Metrics/GrafanaLinks.tsx new file mode 100644 index 0000000000..4aa2ce4cc8 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/components/Metrics/GrafanaLinks.tsx @@ -0,0 +1,110 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import * as React from 'react'; + +import { ToolbarItem } from '@patternfly/react-core'; +import { ExternalLinkAltIcon } from '@patternfly/react-icons'; + +import { ExternalLink } from '../../types/Dashboards'; +import { MetricsObjectTypes } from '../../types/Metrics'; + +type Props = { + links: ExternalLink[]; + namespace: string; + object: string; + objectType: MetricsObjectTypes; + version?: string; +}; + +export class GrafanaLinks extends React.PureComponent { + static buildGrafanaLinks(props: Props): [string, string][] { + const links: [string, string][] = []; + props.links.forEach(d => { + const first = d.url.includes('?') ? '&' : '?'; + const nsvar = d.variables.namespace + ? `&${d.variables.namespace}=${props.namespace}` + : ''; + const vervar = + d.variables.version && props.version + ? `&${d.variables.version}=${props.version}` + : ''; + switch (props.objectType) { + case MetricsObjectTypes.SERVICE: + // eslint-disable-next-line no-case-declarations + const fullServiceName = `${props.object}.${props.namespace}.svc.cluster.local`; + if (d.variables.service) { + const url = `${d.url}${first}${d.variables.service}=${fullServiceName}${nsvar}${vervar}`; + links.push([d.name, url]); + } + break; + case MetricsObjectTypes.WORKLOAD: + if (d.variables.workload) { + const url = `${d.url}${first}${d.variables.workload}=${props.object}${nsvar}${vervar}`; + links.push([d.name, url]); + } + break; + case MetricsObjectTypes.APP: + if (d.variables.app) { + const url = `${d.url}${first}${d.variables.app}=${props.object}${nsvar}${vervar}`; + links.push([d.name, url]); + } + break; + default: + break; + } + }); + return links; + } + + render() { + const links = GrafanaLinks.buildGrafanaLinks(this.props); + return ( + <> + {links.length === 1 && ( + + + View in Grafana + + + )} + {links.length > 1 && ( + + View in Grafana:  + {links + .map((link, idx) => ( + + {link[0]} + + )) + .reduce((prev, curr) => [prev, ', ', curr] as any)} + + )} + + ); + } +} diff --git a/workspaces/kiali/plugins/kiali/src/components/Metrics/Helper.ts b/workspaces/kiali/plugins/kiali/src/components/Metrics/Helper.ts new file mode 100644 index 0000000000..d22143d978 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/components/Metrics/Helper.ts @@ -0,0 +1,285 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { history, URLParam } from '../../app/History'; +import { computePrometheusRateParams } from '../../services/Prometheus'; +import { + boundsToDuration, + DurationInSeconds, + guardTimeRange, + TimeRange, +} from '../../types/Common'; +import { AggregationModel, DashboardModel } from '../../types/Dashboards'; +import { + AllPromLabelsValues, + Metric, + PromLabel, + SingleLabelValues, +} from '../../types/Metrics'; +import { MetricsQuery } from '../../types/MetricsOptions'; +import { responseFlags } from '../../utils/ResponseFlags'; +import { + LabelSettings, + LabelsSettings, + MetricsSettings, + Quantiles, +} from '../MetricsOptions/MetricsSettings'; + +// Default to 10 minutes. Showing timeseries to only 1 minute doesn't make so much sense. +export const defaultMetricsDuration: DurationInSeconds = 600; + +export const combineLabelsSettings = ( + newSettings: LabelsSettings, + stateSettings: LabelsSettings, +): LabelsSettings => { + // Labels: keep existing on/off flag + // This is allowed because the labels filters state is managed only from this component, + // so we can override them in props from state + // LabelsSettings received from props contains the names of the filters with only a default on/off flag. + const result: LabelsSettings = new Map(); + newSettings.forEach( + ( + lblObj: { + values: { [s: string]: unknown } | ArrayLike; + checked: any; + }, + promLabel: string, + ) => { + const resultValues: SingleLabelValues = {}; + const stateObj = stateSettings.get(promLabel); + Object.entries(lblObj.values).forEach(e => { + resultValues[e[0]] = + stateObj && stateObj.defaultValue === false + ? false + : (e[1] as boolean); + }); + if (stateObj) { + lblObj.checked = stateObj.checked; + Object.entries(stateObj.values).forEach(e => { + resultValues[e[0]] = e[1]; + }); + } + result.set(promLabel, { + defaultValue: false, + displayName: '', + singleSelection: false, + ...lblObj, + values: resultValues, + }); + }, + ); + return result; +}; + +export const extractLabelsSettingsOnSeries = ( + metrics: Metric[], + aggregations: AggregationModel[], + extracted: LabelsSettings, +): void => { + metrics.forEach(m => { + Object.keys(m.labels).forEach(k => { + const agg = aggregations.find(a => a.label === k); + if (agg) { + const value = m.labels[k]; + let lblObj = extracted.get(agg.label); + if (!lblObj) { + lblObj = { + checked: true, + displayName: agg.displayName, + values: {}, + defaultValue: true, + singleSelection: agg.singleSelection, + }; + extracted.set(agg.label, lblObj); + } else { + lblObj.checked = true; + } + if (!lblObj.values.hasOwnProperty(value)) { + if (agg.singleSelection && Object.keys(lblObj.values).length > 0) { + // In single-selection mode, do not activate more than one label value at a time + lblObj.values[value] = false; + } else { + lblObj.values[value] = true; + } + } + } + }); + }); +}; + +export const extractLabelsSettings = ( + dashboard: DashboardModel, + stateSettings: Map, +): LabelsSettings => { + // Find all labels on all series + const newSettings: LabelsSettings = new Map(); + dashboard.aggregations.forEach(agg => + newSettings.set(agg.label, { + checked: false, + displayName: agg.displayName, + values: {}, + defaultValue: true, + singleSelection: agg.singleSelection, + }), + ); + dashboard.charts.forEach(chart => + extractLabelsSettingsOnSeries( + chart.metrics, + dashboard.aggregations, + newSettings, + ), + ); + return combineLabelsSettings(newSettings, stateSettings); +}; + +export const mergeLabelFilter = ( + lblSettings: LabelsSettings, + label: PromLabel, + value: string, + checked: boolean, + singleSelection: boolean, +): LabelsSettings => { + // Note: we don't really care that the new map references same objects as the old one (at least at the moment) so shallow copy is fine + const newSettings = new Map(lblSettings); + const objLbl = newSettings.get(label); + if (objLbl) { + if (singleSelection) { + // @ts-ignore + for (const v of Object.keys(objLbl.values)) { + // @ts-ignore + objLbl.values[v] = false; + } + } + // @ts-ignore + objLbl.values[value] = checked; + } + return newSettings; +}; + +export const convertAsPromLabels = ( + lblSettings: LabelsSettings, +): AllPromLabelsValues => { + const promLabels = new Map(); + lblSettings.forEach((objLbl: { values: SingleLabelValues }, k: string) => { + promLabels.set(k, objLbl.values); + }); + return promLabels; +}; + +export const settingsToOptions = ( + settings: MetricsSettings, + opts: MetricsQuery, + defaultLabels: string[], +) => { + opts.avg = settings.showAverage; + opts.quantiles = settings.showQuantiles; + let byLabels = defaultLabels; + if (settings.labelsSettings.size > 0) { + // Labels have been fetched, so use what comes from labelsSettings + byLabels = []; + settings.labelsSettings.forEach((objLbl: { checked: any }, k: string) => { + if (objLbl.checked) { + byLabels.push(k); + } + }); + } + opts.byLabels = byLabels; +}; + +export const timeRangeToOptions = (range: TimeRange, opts: MetricsQuery) => { + delete opts.queryTime; + opts.duration = guardTimeRange( + range, + d => d, + ft => { + opts.queryTime = ft.to && Math.floor(ft.to / 1000); + return boundsToDuration(ft); + }, + ); + const intervalOpts = computePrometheusRateParams(opts.duration); + opts.step = intervalOpts.step; + opts.rateInterval = intervalOpts.rateInterval; +}; + +export const retrieveMetricsSettings = (): MetricsSettings => { + const urlParams = new URLSearchParams(history.location.search); + const settings: MetricsSettings = { + showSpans: false, + showTrendlines: false, + showAverage: true, + showQuantiles: [], + labelsSettings: new Map(), + }; + const avg = urlParams.get(URLParam.SHOW_AVERAGE); + if (avg !== null) { + settings.showAverage = avg === 'true'; + } + const spans = urlParams.get(URLParam.SHOW_SPANS); + if (spans !== null) { + settings.showSpans = spans === 'true'; + } + const trendlines = urlParams.get(URLParam.SHOW_TRENDLINES); + if (trendlines !== null) { + settings.showTrendlines = trendlines === 'true'; + } + const quantiles = urlParams.get(URLParam.QUANTILES); + if (quantiles !== null) { + if (quantiles.trim().length !== 0) { + settings.showQuantiles = quantiles + .split(' ') + .map(val => val.trim() as Quantiles); + } else { + settings.showQuantiles = []; + } + } + const byLabels = urlParams.getAll(URLParam.BY_LABELS); + // E.g.: bylbl=version=v1,v2,v4 + if (byLabels.length !== 0) { + byLabels.forEach(val => { + const kvpair = val.split('=', 2); + const lblObj: LabelSettings = { + displayName: '', + checked: true, + values: {}, + defaultValue: true, + singleSelection: false, + }; + if (kvpair[1]) { + kvpair[1].split(',').forEach(v => { + lblObj.values[v] = true; + }); + // When values filters are provided by URL, other filters should be false by default + lblObj.defaultValue = false; + } + settings.labelsSettings.set(kvpair[0], lblObj); + }); + } + return settings; +}; + +export const prettyLabelValues = (promName: PromLabel, val: string): string => { + if (promName === 'response_flags') { + if (val === '-') { + return 'None'; + } + // @ts-ignore + const flagObj = responseFlags[val]; + if (flagObj) { + const text = flagObj.short ? flagObj.short : flagObj.help; + return `${text} (${val})`; + } + } + return val; +}; diff --git a/workspaces/kiali/plugins/kiali/src/components/Metrics/IstioMetrics.tsx b/workspaces/kiali/plugins/kiali/src/components/Metrics/IstioMetrics.tsx new file mode 100644 index 0000000000..6981d342d3 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/components/Metrics/IstioMetrics.tsx @@ -0,0 +1,441 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import * as React from 'react'; +import { useAsyncFn, useDebounce } from 'react-use'; + +import { useApi } from '@backstage/core-plugin-api'; + +import { Checkbox, FormControlLabel, Toolbar } from '@material-ui/core'; + +import { history, URLParam } from '../../app/History'; +import { Dashboard } from '../../components/Charts/Dashboard'; +import { kialiApiRef } from '../../services/Api'; +import { KialiAppState, KialiContext } from '../../store'; +import { kialiStyle } from '../../styles/StyleUtils'; +import { + evalTimeRange, + TimeInMilliseconds, + TimeRange, +} from '../../types/Common'; +import { + ChartModel, + DashboardModel, + ExternalLink, +} from '../../types/Dashboards'; +import { GrafanaInfo } from '../../types/GrafanaInfo'; +import { MetricsObjectTypes } from '../../types/Metrics'; +import { + Direction, + IstioMetricsOptions, + Reporter, +} from '../../types/MetricsOptions'; +import { Overlay } from '../../types/Overlay'; +import { KialiCrippledFeatures } from '../../types/ServerConfig'; +import { RawOrBucket } from '../../types/VictoryChartInfo'; +import { MetricsReporter } from '../MetricsOptions/MetricsReporter'; +import { + LabelsSettings, + MetricsSettings, +} from '../MetricsOptions/MetricsSettings'; +import { MetricsSettingsDropdown } from '../MetricsOptions/MetricsSettingsDropdown'; +import { GrafanaLinks } from './GrafanaLinks'; +import * as MetricsHelper from './Helper'; +import { JaegerLineInfo, SpanOverlay } from './SpanOverlay'; + +type ObjectId = { + cluster?: string; + namespace: string; + object: string; +}; + +type IstioMetricsProps = ObjectId & { + direction: Direction; + objectType: MetricsObjectTypes; +} & { + lastRefreshAt: TimeInMilliseconds; +}; + +type Props = IstioMetricsProps; + +const fullHeightStyle = kialiStyle({ + height: '100%', +}); + +export const IstioMetrics = (props: Props) => { + const initTimeRange = () => { + const now = new Date(); + const lastdate = now.getTime() - props.lastRefreshAt * 60 * 1000; + const tr: TimeRange = { + from: lastdate, + to: now.getTime(), + }; + return tr; + }; + const toolbarRef = React.createRef(); + let grafanaInfoPromise: Promise | undefined; + const settings = MetricsHelper.retrieveMetricsSettings(); + const kialiClient = useApi(kialiApiRef); + const kialiState = React.useContext(KialiContext) as KialiAppState; + const [crippledFeatures, setCrippledFeatures] = + React.useState(); + const [dashboard, setDashboard] = React.useState(); + const [grafanaLinks, setGrafanaLinks] = React.useState([]); + const [labelsSettings, setLabelsSettings] = React.useState( + settings.labelsSettings, + ); + const [showSpans, setShowSpans] = React.useState(settings.showSpans); + const [showTrendlines, setShowTrendLines] = React.useState( + settings.showTrendlines, + ); + const [spanOverlayState, setSpanOverlayState] = + React.useState>(); + const [tabHeight, _setter] = React.useState(500); + const spanOverlay = new SpanOverlay(changed => setSpanOverlayState(changed)); + const tracingIntegration = kialiState.tracingState?.info + ? kialiState.tracingState.info.integration + : true; + const [timeRange, setTimeRange] = React.useState(initTimeRange()); + const prevDirection = React.useRef(props.direction); + const prevLastRefreshAt = React.useRef(props.lastRefreshAt); + + const initOptions = (settingsI: MetricsSettings): IstioMetricsOptions => { + const options: IstioMetricsOptions = { + reporter: MetricsReporter.initialReporter(props.direction), + direction: props.direction, + }; + + const defaultLabels = [ + props.direction === 'inbound' + ? 'source_canonical_service' + : 'destination_canonical_service', + props.direction === 'inbound' + ? 'source_workload_namespace' + : 'destination_workload_namespace', + ]; + + MetricsHelper.settingsToOptions(settingsI, options, defaultLabels); + + return options; + }; + + const options = initOptions(settings); + + const fetchMetrics = async (): Promise => { + // Time range needs to be reevaluated everytime fetching + MetricsHelper.timeRangeToOptions(timeRange, options); + const opts = { ...options }; + + if (opts.reporter === 'both') { + opts.byLabels = (opts.byLabels ?? []).concat('reporter'); + } + + let promise: Promise; + + switch (props.objectType) { + case MetricsObjectTypes.WORKLOAD: + promise = kialiClient.getWorkloadDashboard( + props.namespace, + props.object, + opts, + props.cluster, + ); + break; + case MetricsObjectTypes.APP: + promise = kialiClient.getAppDashboard( + props.namespace, + props.object, + opts, + props.cluster, + ); + break; + case MetricsObjectTypes.SERVICE: + default: + promise = kialiClient.getServiceDashboard( + props.namespace, + props.object, + opts, + props.cluster, + ); + break; + } + + return promise + .then(response => { + const labelsSettingsUpdated = MetricsHelper.extractLabelsSettings( + response, + labelsSettings, + ); + setDashboard(response); + setLabelsSettings(labelsSettingsUpdated); + }) + .catch(error => { + kialiState.alertUtils!.add(`Could not fetch metrics, ${error}`); + throw error; + }); + }; + + const fetchGrafanaInfo = (): void => { + if ( + typeof grafanaInfoPromise === 'undefined' || + grafanaInfoPromise === null + ) { + grafanaInfoPromise = kialiClient.getGrafanaInfo().then(response => { + return response; + }); + } + + grafanaInfoPromise + .then(grafanaInfo => { + if (grafanaInfo) { + setGrafanaLinks(grafanaInfo.externalLinks); + } else { + setGrafanaLinks([]); + } + }) + .catch(err => { + kialiState.alertUtils!.add( + `Could not fetch Grafana info. Turning off links to Grafana., ${err}`, + ); + }); + }; + + const refresh = (): void => { + fetchMetrics(); + if (tracingIntegration) { + spanOverlay.fetch({ + namespace: props.namespace, + cluster: props.cluster, + target: props.object, + targetKind: props.objectType, + range: timeRange, + }); + } + }; + + const fetchCripledFeatures = () => { + kialiClient.getCrippledFeatures().then(response => { + setCrippledFeatures(response); + }); + + fetchGrafanaInfo(); + refresh(); + }; + + React.useEffect(() => { + if (props.direction !== prevDirection.current) { + refresh(); + prevDirection.current = props.direction; + } + if (props.lastRefreshAt !== prevLastRefreshAt.current) { + setTimeRange(initTimeRange()); + prevLastRefreshAt.current = props.lastRefreshAt; + } + /* eslint-disable-next-line */ + }, [props.direction, props.lastRefreshAt]); + + const [_, refreshy] = useAsyncFn( + async () => { + // Check if the config is loaded + await fetchCripledFeatures(); + }, + [], + { loading: true }, + ); + useDebounce(refreshy, 10); + + const onMetricsSettingsChanged = (settingsM: MetricsSettings): void => { + const defaultLabels = [ + props.direction === 'inbound' + ? 'source_canonical_service' + : 'destination_canonical_service', + ]; + + MetricsHelper.settingsToOptions(settingsM, options, defaultLabels); + fetchMetrics(); + }; + + const onLabelsFiltersChanged = (labelsFilters: LabelsSettings): void => { + setLabelsSettings(labelsFilters); + }; + + const onReporterChanged = (reporter: Reporter): void => { + options.reporter = reporter; + fetchMetrics(); + }; + + const onDomainChange = (dates: [Date, Date]): void => { + if (dates && dates[0] && dates[1]) { + const range: TimeRange = { + from: dates[0].getTime(), + to: dates[1].getTime(), + }; + + setTimeRange(range); + } + }; + + const onClickDataPoint = ( + _chart: ChartModel, + datum: RawOrBucket, + ): void => { + if ('start' in datum && 'end' in datum) { + // Zoom-in bucket + onDomainChange([datum.start as Date, datum.end as Date]); + } else if ('traceId' in datum) { + const traceId = datum.traceId; + const spanId = datum.spanId; + + const domain = + // eslint-disable-next-line no-nested-ternary + props.objectType === MetricsObjectTypes.APP + ? 'applications' + : props.objectType === MetricsObjectTypes.SERVICE + ? 'services' + : 'workloads'; + + history.push( + `/namespaces/${props.namespace}/${domain}/${props.object}?tab=traces&${URLParam.TRACING_TRACE_ID}=${traceId}&${URLParam.TRACING_SPAN_ID}=${spanId}`, + ); + } + }; + + const onSpans = (checked: boolean): void => { + const urlParams = new URLSearchParams(history.location.search); + urlParams.set(URLParam.SHOW_SPANS, String(checked)); + history.replace(`${history.location.pathname}?${urlParams.toString()}`); + setShowSpans(!showSpans); + }; + + const onTrendlines = (checked: boolean): void => { + const urlParams = new URLSearchParams(history.location.search); + urlParams.set(URLParam.SHOW_TRENDLINES, String(checked)); + history.replace(`${history.location.pathname}?${urlParams.toString()}`); + setShowTrendLines(!showTrendlines); + }; + + const renderOptionsBar = (): React.ReactNode => { + const hasHistogramsAverage = + !crippledFeatures?.requestSizeAverage || + !crippledFeatures?.responseSizeAverage || + !crippledFeatures?.responseTimeAverage; + + const hasHistogramsPercentiles = + !crippledFeatures?.requestSizePercentiles || + !crippledFeatures?.responseSizePercentiles || + !crippledFeatures?.responseTimePercentiles; + + return ( +
    + + + + + + onSpans(checked)} + /> + } + label="Spans" + /> + + onTrendlines(checked)} + /> + } + label="Trendlines" + /> + + + +
    + ); + }; + + const expandHandler = (expandedChart?: string): void => { + const urlParams = new URLSearchParams(history.location.search); + urlParams.delete('expand'); + + if (expandedChart) { + urlParams.set('expand', expandedChart); + } + + history.push(`${history.location.pathname}?${urlParams.toString()}`); + }; + + const urlParams = new URLSearchParams(history.location.search); + const expandedChart = urlParams.get('expand') ?? undefined; + + // 20px (card margin) + 24px (card padding) + 51px (toolbar) + 15px (toolbar padding) + 24px (card padding) + 20px (card margin) + const toolbarHeight = toolbarRef?.current + ? toolbarRef.current.clientHeight + : 15; + const toolbarSpace = 20 + 24 + toolbarHeight + 15 + 24 + 20; + const dashboardHeight = tabHeight - toolbarSpace; + + return ( + <> +
    + {renderOptionsBar()} + {dashboard && ( + + onDomainChange(propsD.currentDomain.x), + }} + /> + )} +
    + + ); +}; diff --git a/workspaces/kiali/plugins/kiali/src/components/Metrics/SpanOverlay.ts b/workspaces/kiali/plugins/kiali/src/components/Metrics/SpanOverlay.ts new file mode 100644 index 0000000000..63a17612ec --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/components/Metrics/SpanOverlay.ts @@ -0,0 +1,143 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import * as React from 'react'; + +import { useApi } from '@backstage/core-plugin-api'; + +import { PFColors } from '../../components/Pf/PfColors'; +import { kialiApiRef } from '../../services/Api'; +import { KialiAppState, KialiContext } from '../../store'; +import { + durationToBounds, + guardTimeRange, + TimeRange, +} from '../../types/Common'; +import { MetricsObjectTypes } from '../../types/Metrics'; +import { Overlay, OverlayInfo } from '../../types/Overlay'; +import { Span, TracingQuery } from '../../types/Tracing'; +import { LineInfo } from '../../types/VictoryChartInfo'; +import { toOverlay } from '../../utils/VictoryChartsUtils'; +import { defaultMetricsDuration } from './Helper'; + +export type JaegerLineInfo = LineInfo & { traceId?: string; spanId?: string }; + +type FetchOptions = { + namespace: string; + cluster?: string; + target: string; + targetKind: MetricsObjectTypes; + range: TimeRange; +}; + +export class SpanOverlay { + private spans: Span[] = []; + private lastFetchError = false; + private kialiClient = useApi(kialiApiRef); + private kialiState = React.useContext(KialiContext) as KialiAppState; + + constructor(public onChange: (overlay?: Overlay) => void) {} + + reset() { + this.spans = []; + } + + setSpans(spans: Span[]) { + this.spans = spans; + } + + fetch(opts: FetchOptions) { + const boundsMillis = guardTimeRange(opts.range, durationToBounds, b => b); + const defaultFrom = new Date().getTime() - defaultMetricsDuration * 1000; + const q: TracingQuery = { + startMicros: boundsMillis.from + ? boundsMillis.from * 1000 + : defaultFrom * 1000, + endMicros: boundsMillis.to ? boundsMillis.to * 1000 : undefined, + }; + // Remove any out-of-bound spans + this.spans = this.spans.filter( + s => + s.startTime >= q.startMicros && + (q.endMicros === undefined || s.startTime <= q.endMicros), + ); + // Start fetching from last fetched data when available + if (this.spans.length > 0) { + q.startMicros = 1 + Math.max(...this.spans.map(s => s.startTime)); + } + const apiCall = + // eslint-disable-next-line no-nested-ternary + opts.targetKind === MetricsObjectTypes.APP + ? this.kialiClient.getAppSpans + : opts.targetKind === MetricsObjectTypes.SERVICE + ? this.kialiClient.getServiceSpans + : this.kialiClient.getWorkloadSpans; + apiCall(opts.namespace, opts.target, q, opts.cluster) + .then(res => { + this.lastFetchError = false; + // Incremental refresh: we keep existing spans + this.spans = this.spans.concat(res); + this.onChange(this.buildOverlay()); + }) + .catch(err => { + if (!this.lastFetchError) { + this.kialiState.alertUtils!.add(`Could not fetch spans., ${err}`); + this.lastFetchError = true; + } + }); + } + + private buildOverlay(): Overlay | undefined { + if (this.spans.length > 0) { + const info: OverlayInfo = { + lineInfo: { + name: 'Span duration', + unit: 'seconds', + color: PFColors.Cyan300, + symbol: 'circle', + size: 10, + }, + dataStyle: { + // @ts-ignore + fill: ({ datum }) => { + return datum.error ? PFColors.Danger : PFColors.Cyan300; + }, + fillOpacity: 0.6, + cursor: 'pointer', + }, + buckets: this.spans.length > 1000 ? 15 : 0, + }; + const dps = this.spans.map(span => { + const hasError = span.tags.some( + tag => tag.key === 'error' && tag.value, + ); + const methodTags = span.tags.filter(tag => tag.key === 'http.method'); + const method = methodTags.length > 0 ? methodTags[0].value : undefined; + return { + name: `${method && `[${method}] `}${span.operationName}`, + x: new Date(span.startTime / 1000), + y: Number(span.duration / 1000000), + error: hasError, + color: hasError ? PFColors.Danger : PFColors.Cyan300, + size: 4, + traceId: span.traceID, + spanId: span.spanID, + }; + }); + return toOverlay(info, dps); + } + return undefined; + } +} diff --git a/workspaces/kiali/plugins/kiali/src/components/MetricsOptions/MetricsReporter.tsx b/workspaces/kiali/plugins/kiali/src/components/MetricsOptions/MetricsReporter.tsx new file mode 100644 index 0000000000..c93926096d --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/components/MetricsOptions/MetricsReporter.tsx @@ -0,0 +1,111 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import * as React from 'react'; + +import { Tooltip } from '@material-ui/core'; + +import { HistoryManager, URLParam } from '../../app/History'; +import { KialiIcon } from '../../config/KialiIcon'; +import { kialiStyle } from '../../styles/StyleUtils'; +import { Direction, Reporter } from '../../types/MetricsOptions'; +import { ToolbarDropdown } from '../ToolbarDropdown/ToolbarDropdown'; + +interface Props { + onChanged: (reproter: Reporter) => void; + direction: Direction; + reporter: Reporter; +} + +const infoStyle = kialiStyle({ + margin: '0px 5px 2px 5px', +}); + +export class MetricsReporter extends React.Component { + static ReporterOptions: { [key: string]: string } = { + destination: 'Destination', + source: 'Source', + both: 'Both', + }; + + static initialReporter = (direction: Direction): Reporter => { + const reporterParam = HistoryManager.getParam(URLParam.REPORTER); + if (reporterParam !== undefined) { + return reporterParam as Reporter; + } + return direction === 'inbound' ? 'destination' : 'source'; + }; + + reportTooltip = ( +
    +
      +
    • +
      + Select the reporter for the metrics displayed. Each Istio metric can + be reported by the Source (workload which emitted the request) and + by the Destination (workload which received the request). In + general, the timeseries will look exactly the same because Source + and Destination report the same data. +
      +
    • +
    • +
      + There are some exceptions: +
      +
    • +
    • +
        +
      • + An opened circuit breaker would cause networking failures only + reported by the Source +
      • +
      • Fault-injected failures only reported by the Source
      • +
      • + Traffic coming from unknown sources (anything that is not under + the Istio mesh) would only be reported by the Destination +
      • +
      +
    • +
    +
    + ); + + onReporterChanged = (reporter: string) => { + HistoryManager.setParam(URLParam.REPORTER, reporter); + const newReporter = reporter as Reporter; + this.props.onChanged(newReporter); + }; + + render() { + return ( + + + {this.reportTooltip}} + > + + + + ); + } +} diff --git a/workspaces/kiali/plugins/kiali/src/components/MetricsOptions/MetricsSettings.ts b/workspaces/kiali/plugins/kiali/src/components/MetricsOptions/MetricsSettings.ts new file mode 100644 index 0000000000..0b87e8d9de --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/components/MetricsOptions/MetricsSettings.ts @@ -0,0 +1,40 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { + LabelDisplayName, + PromLabel, + SingleLabelValues, +} from '../../types/Metrics'; + +export type Quantiles = '0.5' | '0.95' | '0.99' | '0.999'; +export const allQuantiles: Quantiles[] = ['0.5', '0.95', '0.99', '0.999']; + +export type LabelSettings = { + checked: boolean; + displayName: LabelDisplayName; + values: SingleLabelValues; + defaultValue: boolean; + singleSelection: boolean; +}; +export type LabelsSettings = Map; + +export interface MetricsSettings { + labelsSettings: LabelsSettings; + showAverage: boolean; + showSpans: boolean; + showTrendlines: boolean; + showQuantiles: Quantiles[]; +} diff --git a/workspaces/kiali/plugins/kiali/src/components/MetricsOptions/MetricsSettingsDropdown.tsx b/workspaces/kiali/plugins/kiali/src/components/MetricsOptions/MetricsSettingsDropdown.tsx new file mode 100644 index 0000000000..f07cca26be --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/components/MetricsOptions/MetricsSettingsDropdown.tsx @@ -0,0 +1,482 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import * as React from 'react'; + +import { + Divider, + FormControlLabel, + FormLabel, + Radio, + Tooltip, +} from '@material-ui/core'; +import Checkbox from '@material-ui/core/Checkbox'; +import { + Dropdown, + DropdownList, + MenuToggle, + MenuToggleElement, +} from '@patternfly/react-core'; +import isEqual from 'lodash/isEqual'; +import { classes } from 'typestyle'; + +import { history, URLParam } from '../../app/History'; +import { KialiIcon } from '../../config/KialiIcon'; +import { titleStyle } from '../../styles/DropdownStyles'; +import { kialiStyle } from '../../styles/StyleUtils'; +import { PromLabel } from '../../types/Metrics'; +import { + combineLabelsSettings, + mergeLabelFilter, + retrieveMetricsSettings, +} from '../Metrics/Helper'; +import { + allQuantiles, + LabelsSettings, + MetricsSettings, + Quantiles, +} from './MetricsSettings'; + +interface Props { + direction: string; + hasHistograms: boolean; + hasHistogramsAverage: boolean; + hasHistogramsPercentiles: boolean; + labelsSettings: LabelsSettings; + onChanged: (state: MetricsSettings) => void; + onLabelsFiltersChanged: (labelsFilters: LabelsSettings) => void; +} + +type State = MetricsSettings & { + allSelected: boolean; + isOpen: boolean; +}; + +const checkboxSelectAllStyle = kialiStyle({ marginLeft: '0.5rem' }); +const secondLevelStyle = kialiStyle({ marginLeft: '1rem' }); +const spacerStyle = kialiStyle({ height: '0.5rem' }); +const titleLabelStyle = kialiStyle({ + marginBottom: '0.5rem', + fontSize: 'small', +}); +const labelStyle = kialiStyle({ display: 'inline-block' }); +const checkboxStyle = kialiStyle({ marginLeft: '1rem' }); + +export class MetricsSettingsDropdown extends React.Component { + constructor(props: Props) { + super(props); + const settings = retrieveMetricsSettings(); + settings.labelsSettings = combineLabelsSettings( + props.labelsSettings, + settings.labelsSettings, + ); + this.state = { ...settings, isOpen: false, allSelected: false }; + } + + componentDidUpdate(prevProps: Props) { + // TODO Move the sync of URL and state to a global place + const changeDirection = prevProps.direction !== this.props.direction; + const settings = retrieveMetricsSettings(); + const initLabelSettings = changeDirection + ? settings.labelsSettings + : new Map(); + const stateLabelsSettings = changeDirection + ? initLabelSettings + : this.state.labelsSettings; + const labelsSettings = combineLabelsSettings( + this.props.labelsSettings, + stateLabelsSettings, + ); + + if (!isEqual(stateLabelsSettings, labelsSettings) || changeDirection) { + this.setState(prevState => { + return { + labelsSettings: labelsSettings, + showQuantiles: changeDirection + ? settings.showQuantiles + : prevState.showQuantiles, + showAverage: changeDirection + ? settings.showAverage + : prevState.showAverage, + showSpans: changeDirection ? settings.showSpans : prevState.showSpans, + }; + }, this.checkSelected); + } + } + + private onToggle = (isOpen: boolean) => { + this.setState({ isOpen: isOpen }); + }; + + onGroupingChanged = (label: PromLabel, checked: boolean) => { + const objLbl = this.state.labelsSettings.get(label); + + if (objLbl) { + objLbl.checked = checked; + } + + this.updateLabelsSettingsURL(this.state.labelsSettings); + + this.setState( + prevState => ({ + labelsSettings: new Map(prevState.labelsSettings), + }), + () => { + this.props.onChanged(this.state); + this.checkSelected(); + }, + ); + }; + + onLabelsFiltersChanged = ( + label: PromLabel, + value: string, + checked: boolean, + singleSelection: boolean, + ) => { + const newValues = mergeLabelFilter( + this.state.labelsSettings, + label, + value, + checked, + singleSelection, + ); + this.updateLabelsSettingsURL(newValues); + this.setState( + prevState => ({ + labelsSettings: mergeLabelFilter( + prevState.labelsSettings, + label, + value, + checked, + singleSelection, + ), + }), + () => { + this.props.onLabelsFiltersChanged(newValues); + this.checkSelected(); + }, + ); + }; + + onHistogramAverageChanged = (checked: boolean) => { + const urlParams = new URLSearchParams(history.location.search); + urlParams.set(URLParam.SHOW_AVERAGE, String(checked)); + history.replace(`${history.location.pathname}?${urlParams.toString()}`); + + this.setState({ showAverage: checked }, () => + this.props.onChanged(this.state), + ); + }; + + onHistogramOptionsChanged = (quantile: Quantiles, checked: boolean) => { + const newQuantiles = checked + ? [quantile].concat(this.state.showQuantiles) + : this.state.showQuantiles.filter(q => quantile !== q); + + const urlParams = new URLSearchParams(history.location.search); + urlParams.set(URLParam.QUANTILES, newQuantiles.join(' ')); + history.replace(`${history.location.pathname}?${urlParams.toString()}`); + + this.setState( + prevState => ({ + showQuantiles: checked + ? [quantile].concat(prevState.showQuantiles) + : prevState.showQuantiles.filter(q => quantile !== q), + }), + () => this.props.onChanged(this.state), + ); + }; + + onBulkAll = () => { + this.bulkUpdate(true); + this.setState({ allSelected: true }); + }; + + onBulkNone = () => { + this.bulkUpdate(false); + this.setState({ allSelected: false }); + }; + + bulkUpdate = (selected: boolean): void => { + this.state.labelsSettings.forEach(lblSetting => { + lblSetting.checked = selected; + + Object.keys(lblSetting.values).forEach(value => { + lblSetting.values[value] = selected; + }); + }); + + this.updateLabelsSettingsURL(this.state.labelsSettings); + + this.setState( + prevState => ({ + labelsSettings: new Map(prevState.labelsSettings), + }), + () => { + this.props.onChanged(this.state); + }, + ); + }; + + updateLabelsSettingsURL = (labelsSettings: LabelsSettings) => { + // E.g.: bylbl=version=v1,v2,v4 + const urlParams = new URLSearchParams(history.location.search); + urlParams.delete(URLParam.BY_LABELS); + + labelsSettings.forEach((lbl, name) => { + if (lbl.checked) { + const filters = Object.keys(lbl.values) + .filter(k => lbl.values[k]) + .join(','); + if (filters) { + urlParams.append(URLParam.BY_LABELS, `${name}=${filters}`); + } else { + urlParams.append(URLParam.BY_LABELS, name); + } + } + }); + + history.replace(`${history.location.pathname}?${urlParams.toString()}`); + }; + + checkSelected = () => { + let allSelected = true; + this.state.labelsSettings.forEach(lblSetting => { + if (lblSetting.checked === false) { + allSelected = false; + } else { + Object.keys(lblSetting.values).forEach(value => { + if (lblSetting.values[value] === false) { + allSelected = false; + } + }); + } + }); + + this.setState({ allSelected: allSelected }); + }; + + renderBulkSelector(): JSX.Element { + return ( +
    +
    + { + if (this.state.allSelected) { + this.onBulkNone(); + } else { + this.onBulkAll(); + } + }} + /> + + Select all metric/label filters + +
    + +
    + ); + } + + renderLabelOptions(): React.ReactElement { + const displayGroupingLabels: any[] = []; + + this.state.labelsSettings.forEach((lblObj, promName) => { + const labelsHTML = + lblObj.checked && lblObj.values + ? Object.keys(lblObj.values).map(val => ( +
    + {lblObj.singleSelection ? ( + { + this.onLabelsFiltersChanged(promName, val, true, true); + }} + name={val} + value={val} + /> + ) : ( + { + this.onLabelsFiltersChanged( + promName, + val, + checked, + false, + ); + }} + /> + } + label={val} + /> + )} +
    + )) + : null; + + displayGroupingLabels.push( +
    + + this.onGroupingChanged(promName, checked) + } + /> + } + label={promName} + /> + {labelsHTML} +
    , + ); + }); + + return ( + <> + + Show metrics by: + + {displayGroupingLabels} +
    + + ); + } + + renderHistogramOptions(): JSX.Element { + const displayHistogramOptions = [ +
    + + this.onHistogramAverageChanged(checked) + } + name="Average" + /> + } + label="Average" + /> +
    , + ].concat( + allQuantiles.map((o, idx) => { + const checked = this.state.showQuantiles.includes(o); + return ( +
    + + this.onHistogramOptionsChanged(o, checkedE) + } + name={`Quantile ${o}`} + /> + } + label={`Quantile ${o}`} + /> +
    + ); + }), + ); + + return ( + <> + + +
    + "No data available" is displayed for a histogram that does not + have telemetry supporting the selected option. If no + histograms support the necessary telemetry, the option will be + disabled. +
    +
    + } + > +
    + Histograms: + +
    + + + {displayHistogramOptions} +
    + + ); + } + + render() { + const hasHistograms = this.props.hasHistograms; + const hasLabels = this.state.labelsSettings.size > 0; + + if (!hasHistograms && !hasLabels) { + return null; + } + + return ( + ) => ( + this.onToggle(!this.state.isOpen)} + isExpanded={this.state.isOpen} + > + Metrics Settings + + )} + isOpen={this.state.isOpen} + onOpenChange={(isOpen: boolean) => this.onToggle(isOpen)} + > + + {hasLabels && this.renderBulkSelector()} + {hasLabels && this.renderLabelOptions()} + {hasHistograms && this.renderHistogramOptions()} + + + ); + } +} diff --git a/workspaces/kiali/plugins/kiali/src/components/MissingAuthPolicy/MissingAuthPolicy.tsx b/workspaces/kiali/plugins/kiali/src/components/MissingAuthPolicy/MissingAuthPolicy.tsx new file mode 100644 index 0000000000..1884d58844 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/components/MissingAuthPolicy/MissingAuthPolicy.tsx @@ -0,0 +1,83 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import * as React from 'react'; + +import { Tooltip, TooltipPosition } from '@patternfly/react-core'; +import { SVGIconProps } from '@patternfly/react-icons/dist/js/createIcon'; + +import { icons } from '../../config/Icons'; +import { KialiIcon } from '../../config/KialiIcon'; +import { isIstioNamespace } from '../../config/ServerConfig'; +import { kialiStyle } from '../../styles/StyleUtils'; + +type MissingAuthPolicyProps = { + text?: string; + textTooltip?: string; + tooltip?: boolean; + icon?: React.ComponentClass; + color?: string; + namespace: string; + className?: string; +}; + +const infoStyle = kialiStyle({ + marginLeft: '0.5rem', +}); + +export const MissingAuthPolicy: React.FC = ({ + text = 'Missing Authorization Policy', + textTooltip = 'This workload is not covered by any authorization policy.', + tooltip = false, + icon = icons.istio.missingAuthPolicy.icon, + color = icons.istio.missingAuthPolicy.color, + namespace, + className, +}) => { + const iconComponent = ( + + {React.createElement(icon, { style: { color: color } })} + + {!tooltip && ( + + {text} + + {textTooltip}
    } + > + + +
    + )} + + ); + + if (isIstioNamespace(namespace)) { + return <>; + } + + return tooltip ? ( + {textTooltip}} + position={TooltipPosition.right} + > + {iconComponent} + + ) : ( + iconComponent + ); +}; diff --git a/workspaces/kiali/plugins/kiali/src/components/MissingLabel/MissingLabel.tsx b/workspaces/kiali/plugins/kiali/src/components/MissingLabel/MissingLabel.tsx new file mode 100644 index 0000000000..1ced97a5c8 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/components/MissingLabel/MissingLabel.tsx @@ -0,0 +1,109 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import * as React from 'react'; + +import { Tooltip } from '@material-ui/core'; + +import { icons } from '../../config/Icons'; +import { KialiIcon } from '../../config/KialiIcon'; +import { serverConfig } from '../../config/ServerConfig'; +import { kialiStyle } from '../../styles/StyleUtils'; +import { PFBadge } from '../Pf/PfBadges'; + +type MissingLabelProps = { + className?: string; + missingApp: boolean; + missingVersion: boolean; + tooltip: boolean; +}; + +const infoStyle = kialiStyle({ + marginLeft: '0.5rem', +}); + +export const MissingLabel: React.FC = ( + props: MissingLabelProps, +) => { + const appLabel = serverConfig.istioLabels.appLabelName; + const versionLabel = serverConfig.istioLabels.versionLabelName; + const icon = icons.istio.missingLabel.icon; + const color = icons.istio.missingLabel.color; + + const tooltipContent = ( +
    + {props.missingApp && ( + <> +
    + {' '} + label is missing.
    +
    +
    This workload won't be linked with an application.
    + + )} + + {props.missingVersion && ( + <> +
    + {' '} + label is missing.
    +
    +
    The label is recommended as it affects telemetry.
    + + )} + +
    + Missing labels may impact telemetry reported by the Istio proxy. +
    +
    + ); + + const missingLabel = + // eslint-disable-next-line no-nested-ternary + props.missingApp ? 'App' : props.missingVersion ? 'Version' : 'Label'; + + const iconComponent = ( + + {React.createElement(icon, { style: { color: color } })} + + {!props.tooltip && ( + + Missing {missingLabel} + +
    + +
    +
    +
    + )} +
    + ); + + return props.tooltip ? ( + +
    {iconComponent}
    +
    + ) : ( + iconComponent + ); +}; diff --git a/workspaces/kiali/plugins/kiali/src/components/MissingSidecar/MissingSidecar.tsx b/workspaces/kiali/plugins/kiali/src/components/MissingSidecar/MissingSidecar.tsx new file mode 100644 index 0000000000..1f12038e57 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/components/MissingSidecar/MissingSidecar.tsx @@ -0,0 +1,118 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import * as React from 'react'; + +import { Tooltip, TooltipPosition } from '@patternfly/react-core'; +import { SVGIconProps } from '@patternfly/react-icons/dist/js/createIcon'; + +import { icons } from '../../config/Icons'; +import { KialiIcon } from '../../config/KialiIcon'; +import { isIstioNamespace, serverConfig } from '../../config/ServerConfig'; +import { kialiStyle } from '../../styles/StyleUtils'; + +type MissingSidecarProps = { + 'data-test'?: string; + text: string; + textmesh?: string; + texttooltip: string; + tooltip: boolean; + meshtooltip: string; + icon: React.ComponentClass; + color: string; + namespace: string; + style?: React.CSSProperties; + isGateway?: boolean; +}; + +const infoStyle = kialiStyle({ + margin: '0px 5px 2px 4px', + verticalAlign: '-5px !important', +}); + +export class MissingSidecar extends React.Component { + static defaultProps = { + textmesh: 'Out of mesh', + text: 'Missing Sidecar', + meshtooltip: + 'Out of mesh. Istio sidecar container or Ambient labels not found in Pod(s). Check if the istio-injection label/annotation is correctly set on the namespace/workload.', + texttooltip: + 'Istio sidecar container not found in Pod(s). Check if the istio-injection label/annotation is correctly set on the namespace/workload.', + tooltip: false, + icon: icons.istio.missingSidecar.icon, + color: icons.istio.missingSidecar.color, + }; + + render() { + const { + text, + texttooltip, + icon, + namespace, + color, + tooltip, + style, + ...otherProps + } = this.props; + const iconComponent = ( + + {React.createElement(icon, { + style: { color: color, verticalAlign: '-2px' }, + })} + {!tooltip && ( + + {serverConfig.ambientEnabled + ? this.props.textmesh + : this.props.text} + + {serverConfig.ambientEnabled + ? this.props.meshtooltip + : this.props.texttooltip} + + } + > + + + + )} + + ); + + if (isIstioNamespace(namespace) || this.props.isGateway) { + return <>; + } + + return tooltip ? ( + + {serverConfig.ambientEnabled + ? this.props.meshtooltip + : this.props.texttooltip} + + } + position={TooltipPosition.right} + > + {iconComponent} + + ) : ( + iconComponent + ); + } +} diff --git a/workspaces/kiali/plugins/kiali/src/components/Nav/Page/RenderComponentScroll.tsx b/workspaces/kiali/plugins/kiali/src/components/Nav/Page/RenderComponentScroll.tsx new file mode 100644 index 0000000000..423aa3f660 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/components/Nav/Page/RenderComponentScroll.tsx @@ -0,0 +1,97 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import React from 'react'; + +import { classes } from 'typestyle'; + +import { kialiStyle } from '../../../styles/StyleUtils'; + +// TOP_PADDING constant is used to adjust the height of the main div to allow scrolling in the inner container layer. +const TOP_PADDING = 76 + 440; + +/** + * By default, Kiali hides the global scrollbar and fixes the height for some pages to force the scrollbar to appear + * Hiding global scrollbar is not possible when Kiali is embedded in other application (like Openshift Console) + * In these cases height is not fixed to avoid multiple scrollbars (https://github.com/kiali/kiali/issues/6601) + * GLOBAL_SCROLLBAR environment variable is not defined in standalone Kiali application (value is always false) + */ +const globalScrollbar = process.env.GLOBAL_SCROLLBAR ?? 'false'; + +const componentStyle = kialiStyle({ + padding: '20px', +}); + +interface Props { + className?: any; + onResize?: (height: number) => void; + children: React.ReactElement; +} + +interface State { + height: number; +} + +export class RenderComponentScroll extends React.Component { + constructor(props: Props) { + super(props); + this.state = { height: 0 }; + } + + componentDidMount() { + this.updateWindowDimensions(); + // @ts-ignore + window.addEventListener('resize', this.updateWindowDimensions); + } + + componentWillUnmount() { + // @ts-ignore + window.removeEventListener('resize', this.updateWindowDimensions); + } + + updateWindowDimensions = () => { + const topPadding = TOP_PADDING; + + this.setState( + { + // @ts-ignore + height: window.innerHeight - topPadding, + }, + () => { + if (this.props.onResize) { + this.props.onResize(this.state.height); + } + }, + ); + }; + + render() { + let scrollStyle = {}; + + // If there is no global scrollbar, height is fixed to force the scrollbar to appear in the component + if (globalScrollbar === 'false') { + scrollStyle = { height: this.state.height, overflowY: 'auto' }; + } + + return ( +
    + {this.props.children} +
    + ); + } +} diff --git a/workspaces/kiali/plugins/kiali/src/components/NoData.tsx b/workspaces/kiali/plugins/kiali/src/components/NoData.tsx new file mode 100644 index 0000000000..6c8f017fd0 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/components/NoData.tsx @@ -0,0 +1,32 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import React from 'react'; + +import { EmptyState } from '@backstage/core-components'; + +const containerStyle = { width: '100%', height: '100%' }; + +export const NoData = (props: { title: string; description: string }) => { + return ( +
    + +
    + ); +}; diff --git a/workspaces/kiali/plugins/kiali/src/components/Overview/TLSInfo.tsx b/workspaces/kiali/plugins/kiali/src/components/Overview/TLSInfo.tsx new file mode 100644 index 0000000000..ae690a6e12 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/components/Overview/TLSInfo.tsx @@ -0,0 +1,128 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import * as React from 'react'; + +import { Chip, Tooltip } from '@material-ui/core'; +import { useTheme } from '@material-ui/core/styles'; + +import { KialiIcon } from '../../config/KialiIcon'; +import { infoStyle } from '../../pages/Overview/OverviewCard/OverviewCardControlPlaneNamespace'; +import { getChipStyle, kialiStyle } from '../../styles/StyleUtils'; +import { CertsInfo } from '../../types/CertsInfo'; + +type Props = { + certificatesInformationIndicators: boolean; + version?: string; + certsInfo: CertsInfo[]; +}; + +const lockIconStyle = kialiStyle({ marginLeft: '5px' }); + +function showCerts(certs: CertsInfo[]) { + if (certs) { + const rows = certs.map(item => ( +
    +
    + From {item.issuer} +
    +
    +
    Issuer:
    +
    {item.secretName}
    +
    +
    +
    Valid From:
    +
    {item.notAfter}
    +
    +
    +
    Valid To:
    +
    {item.notBefore}
    +
    +
    + )); + return
    {rows}
    ; + } + return 'No cert info'; +} + +function LockIcon(props: Props) { + return props.certificatesInformationIndicators === true ? ( + + + + + + ) : ( + + ); +} + +export const TLSInfo = (props: Props) => { + const theme = useTheme(); + const chipStyle = getChipStyle(theme); + + return ( +
    +
    +
    + Min TLS version +
    + + + {props.version}{' '} + + + The meshConfig.meshMTLS.minProtocolVersion field specifies + the minimum TLS version for the TLS connections among Istio + workloads. N/A if it was not set. +
    + } + > + + + + +
    + } + /> + + + ); +}; diff --git a/workspaces/kiali/plugins/kiali/src/components/Pf/PfBadges.tsx b/workspaces/kiali/plugins/kiali/src/components/Pf/PfBadges.tsx new file mode 100644 index 0000000000..9fe5bbf3de --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/components/Pf/PfBadges.tsx @@ -0,0 +1,216 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import React, { CSSProperties } from 'react'; + +import { Badge, Tooltip, TooltipPosition } from '@patternfly/react-core'; + +import { kialiStyle } from '../../styles/StyleUtils'; +import { PFColors } from './PfColors'; + +export type PFBadgeType = { + badge: string; + tt?: React.ReactFragment; + style?: React.CSSProperties; +}; + +// PF Badges used by Kiali, keep alphabetized +// avoid duplicate badge letters, especially if they may appear on the same page +export const PFBadges: { [key: string]: PFBadgeType } = Object.freeze({ + App: { + badge: 'A', + tt: 'Application', + style: { backgroundColor: PFColors.Green500 }, + } as PFBadgeType, + Adapter: { badge: 'A', tt: 'Adapter' } as PFBadgeType, + AttributeManifest: { badge: 'AM', tt: 'Attribute Manifest' } as PFBadgeType, + AuthorizationPolicy: { + badge: 'AP', + tt: 'Authorization Policy', + } as PFBadgeType, + Cluster: { + badge: 'C', + tt: 'Cluster', + style: { backgroundColor: PFColors.Blue300 }, + } as PFBadgeType, + ClusterRBACConfig: { + badge: 'CRC', + tt: 'Cluster RBAC Configuration', + } as PFBadgeType, + Container: { + badge: 'C', + tt: 'Container', + style: { backgroundColor: PFColors.Blue300 }, + } as PFBadgeType, + DestinationRule: { badge: 'DR', tt: 'Destination Rule' } as PFBadgeType, + EnvoyFilter: { badge: 'EF', tt: 'Envoy Filter' } as PFBadgeType, + ExternalService: { badge: 'ES', tt: 'External Service' } as PFBadgeType, + FaultInjectionAbort: { + badge: 'FI', + tt: 'Fault Injection: Abort', + style: { backgroundColor: PFColors.Purple500 }, + } as PFBadgeType, + FaultInjectionDelay: { + badge: 'FI', + tt: 'Fault Injection: Delay', + style: { backgroundColor: PFColors.Purple500 }, + } as PFBadgeType, + FederatedService: { badge: 'FS', tt: 'Federated Service' } as PFBadgeType, + Gateway: { badge: 'G', tt: 'Gateway' } as PFBadgeType, + HTTPRoute: { badge: 'HTTP', tt: 'HTTPRoute' } as PFBadgeType, + K8sGateway: { badge: 'G', tt: 'Gateway (K8s)' } as PFBadgeType, + K8sHTTPRoute: { badge: 'HTTP', tt: 'HTTPRoute (K8s)' } as PFBadgeType, + Handler: { badge: 'H', tt: 'Handler' }, + Host: { badge: 'H', tt: 'Host' }, + Instance: { badge: 'I', tt: 'Instance' }, + MeshPolicy: { badge: 'MP', tt: 'Mesh Policy' } as PFBadgeType, + MirroredWorkload: { + badge: 'MI', + tt: 'Mirrored Workload', + style: { backgroundColor: PFColors.Purple500 }, + } as PFBadgeType, + Namespace: { + badge: 'NS', + tt: 'Namespace', + style: { backgroundColor: PFColors.Green600 }, + } as PFBadgeType, + Operation: { badge: 'O', tt: 'Operation' } as PFBadgeType, + PeerAuthentication: { badge: 'PA', tt: 'Peer Authentication' } as PFBadgeType, + Pod: { + badge: 'P', + tt: 'Pod', + style: { backgroundColor: PFColors.Cyan300 }, + } as PFBadgeType, + Policy: { badge: 'P', tt: 'Policy' } as PFBadgeType, + RBACConfig: { badge: 'RC', tt: 'RBAC Configuration' } as PFBadgeType, + RequestAuthentication: { + badge: 'RA', + tt: 'Request Authentication', + } as PFBadgeType, + RequestRetry: { + badge: 'RR', + tt: 'Request Retry', + style: { backgroundColor: PFColors.Purple500 }, + } as PFBadgeType, + RequestTimeout: { + badge: 'RT', + tt: 'Request Timeout', + style: { backgroundColor: PFColors.Purple500 }, + } as PFBadgeType, + Rule: { badge: 'R', tt: 'Rule' } as PFBadgeType, + Service: { + badge: 'S', + tt: 'Service', + style: { backgroundColor: PFColors.LightGreen500 }, + } as PFBadgeType, + ServiceEntry: { badge: 'SE', tt: 'Service Entry' } as PFBadgeType, + ServiceRole: { badge: 'SR', tt: 'Service Role' } as PFBadgeType, + ServiceRoleBinding: { + badge: 'SRB', + tt: 'Service Role Binding', + } as PFBadgeType, + Sidecar: { badge: 'SC', tt: 'Istio Sidecar Proxy' } as PFBadgeType, + WasmPlugin: { badge: 'WP', tt: 'Istio Wasm Plugin' } as PFBadgeType, + Telemetry: { badge: 'TM', tt: 'Istio Telemetry' } as PFBadgeType, + Template: { badge: 'T', tt: 'Template' } as PFBadgeType, + Unknown: { badge: 'U', tt: 'Unknown' } as PFBadgeType, + VirtualService: { badge: 'VS', tt: 'Virtual Service' } as PFBadgeType, + Waypoint: { badge: 'W', tt: 'Waypoint proxy' } as PFBadgeType, + Workload: { + badge: 'W', + tt: 'Workload', + style: { backgroundColor: PFColors.Blue500 }, + } as PFBadgeType, + WorkloadEntry: { badge: 'WE', tt: 'Workload Entry' } as PFBadgeType, + WorkloadGroup: { badge: 'WG', tt: 'Workload Group' } as PFBadgeType, +}); + +// This is styled for consistency with OpenShift Console. See console: public/components/_resource.scss +export const kialiBadge = kialiStyle({ + backgroundColor: PFColors.Badge, + color: PFColors.White, + borderRadius: '20px', + flexShrink: 0, + fontFamily: 'var(--pf-v5-global--FontFamily--text)', + fontSize: 'var(--kiali-global--font-size)', + lineHeight: '16px', + marginRight: '4px', + minWidth: '1.5em', + padding: '1px 4px', + textAlign: 'center', + whiteSpace: 'nowrap', +}); + +export const kialiBadgeSmall = kialiStyle({ + backgroundColor: PFColors.Badge, + color: PFColors.White, + borderRadius: '20px', + flexShrink: 0, + fontFamily: 'var(--pf-v5-global--FontFamily--text)', + fontSize: '12px', + lineHeight: '13px', + marginRight: '5px', + minWidth: '1.3em', + padding: '1px 3px', + textAlign: 'center', + whiteSpace: 'nowrap', +}); + +type PFBadgeProps = { + badge: PFBadgeType; + isRead?: boolean; + keyValue?: string; + position?: string; // default=auto + size?: 'global' | 'sm'; + style?: CSSProperties; + tooltip?: React.ReactFragment; +}; + +export class PFBadge extends React.PureComponent { + render() { + const key = this.props.keyValue || `pfbadge-${this.props.badge.badge}`; + const ttKey = `tt-${key}`; + const style = { ...this.props.badge.style, ...this.props.style }; + const tooltip = this.props.tooltip || this.props.badge.tt; + const className = this.props.size === 'sm' ? kialiBadgeSmall : kialiBadge; + + const badge = ( + + {this.props.badge.badge} + + ); + + return !tooltip ? ( + badge + ) : ( + {tooltip}} + id={ttKey} + key={ttKey} + position={ + (this.props.position as TooltipPosition) || TooltipPosition.auto + } + > + {badge} + + ); + } +} diff --git a/workspaces/kiali/plugins/kiali/src/components/Pf/PfColors.tsx b/workspaces/kiali/plugins/kiali/src/components/Pf/PfColors.tsx new file mode 100644 index 0000000000..f85c7403ae --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/components/Pf/PfColors.tsx @@ -0,0 +1,252 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +// PF colors, and moreover, use the defined color variables such that any changes made by PF are +// picked up when the PF version is updated. The preferred, standard way, is in CSS styling. In +// those cases we can directly let CSS resolve the PF var. So, whenever possible use the PFColors +// enum below. In certain cases (like in cytoscape), we need the explicit hex value. In that case +// we must actually get the computed value. We do this as soon as we get an initial document (in +// StartupInitializer.tsx). In those cases use PFColorVals. Note that those values are not +// available until they can be computed, so don't use them in constants or before they are +// available. + +// Colors used by Kiali for CSS styling +export enum PFColors { + Black100 = 'var(--pf-v5-global--palette--black-100)', + Black150 = 'var(--pf-v5-global--palette--black-150)', + Black200 = 'var(--pf-v5-global--palette--black-200)', + Black300 = 'var(--pf-v5-global--palette--black-300)', + Black400 = 'var(--pf-v5-global--palette--black-400)', + Black500 = 'var(--pf-v5-global--palette--black-500)', + Black600 = 'var(--pf-v5-global--palette--black-600)', + Black700 = 'var(--pf-v5-global--palette--black-700)', + Black800 = 'var(--pf-v5-global--palette--black-800)', + Black900 = 'var(--pf-v5-global--palette--black-900)', + Black1000 = 'var(--pf-v5-global--palette--black-1000)', + Blue50 = 'var(--pf-v5-global--palette--blue-50)', + Blue200 = 'var(--pf-v5-global--palette--blue-200)', + Blue300 = 'var(--pf-v5-global--palette--blue-300)', + Blue400 = 'var(--pf-v5-global--palette--blue-400)', + Blue500 = 'var(--pf-v5-global--palette--blue-500)', + Blue600 = 'var(--pf-v5-global--palette--blue-600)', + Cyan300 = 'var(--pf-v5-global--palette--cyan-300)', + Gold400 = 'var(--pf-v5-global--palette--gold-400)', + Green300 = 'var(--pf-v5-global--palette--green-300)', + Green400 = 'var(--pf-v5-global--palette--green-400)', + Green500 = 'var(--pf-v5-global--palette--green-500)', + Green600 = 'var(--pf-v5-global--palette--green-600)', + LightBlue400 = 'var(--pf-v5-global--palette--light-blue-400)', + LightGreen400 = 'var(--pf-v5-global--palette--light-green-400)', + LightGreen500 = 'var(--pf-v5-global--palette--light-green-500)', + Orange50 = 'var(--pf-v5-global--palette--orange-50)', + Orange400 = 'var(--pf-v5-global--palette--orange-400)', + Purple100 = 'var(--pf-v5-global--palette--purple-100)', + Purple200 = 'var(--pf-v5-global--palette--purple-200)', + Purple500 = 'var(--pf-v5-global--palette--purple-500)', + Red50 = 'var(--pf-v5-global--palette--red-50)', + Red100 = 'var(--pf-v5-global--palette--red-100)', + Red200 = 'var(--pf-v5-global--palette--red-200)', + Red500 = 'var(--pf-v5-global--palette--red-500)', + White = 'var(--pf-v5-global--palette--white)', + + // semantic kiali colors + Active = 'var(--pf-v5-global--active-color--400)', + ActiveText = 'var(--pf-v5-global--primary-color--200)', + Badge = 'var(--pf-v5-global--palette--blue-300)', + Replay = 'var(--pf-v5-global--active-color--300)', + Link = 'var(--pf-v5-global--link--Color)', + + // Health/Alert colors https://www.patternfly.org/v4/design-guidelines/styles/colors + Danger = 'var(--pf-v5-global--danger-color--100)', + Info = 'var(--pf-v5-global--info-color--100)', + InfoBackground = 'var(--pf-v5-global--info-color--200)', + Success = 'var(--pf-v5-global--success-color--100)', + SuccessBackground = 'var(--pf-v5-global--success-color--200)', + Warning = 'var(--pf-v5-global--warning-color--100)', + + // chart-specific color values, for rates charts where 4xx is really Danger not Warning + ChartDanger = 'var(--pf-v5-global--danger-color--300)', + ChartOther = 'var(--pf-v5-global--palette-black-1000)', + ChartWarning = 'var(--pf-v5-global--danger-color--100)', + + // PF background colors (compatible with dark mode) + BackgroundColor100 = 'var(--pf-v5-global--BackgroundColor--100)', + BackgroundColor150 = 'var(--pf-v5-global--BackgroundColor--150)', + BackgroundColor200 = 'var(--pf-v5-global--BackgroundColor--200)', + + // PF standard colors (compatible with dark mode) + Color100 = 'var(--pf-v5-global--Color--100)', + Color200 = 'var(--pf-v5-global--Color--200)', + ColorLight100 = 'var(--pf-v5-global--Color--light-100)', + ColorLight200 = 'var(--pf-v5-global--Color--light-200)', + ColorLight300 = 'var(--pf-v5-global--Color--light-300)', + + // PF border colors (compatible with dark mode) + BorderColor100 = 'var(--pf-v5-global--BorderColor--100)', + BorderColor200 = 'var(--pf-v5-global--BorderColor--200)', + BorderColor300 = 'var(--pf-v5-global--BorderColor--300)', + BorderColorLight100 = 'var(--pf-v5-global--BorderColor--light-100)', +} + +// The hex string value of the PF CSS variable +export type PFColorVal = string; + +// Color values used by Kiali outside of CSS (i.e. when we must have the actual hex value) +export type PFColorValues = { + Black100: PFColorVal; + Black150: PFColorVal; + Black200: PFColorVal; + Black300: PFColorVal; + Black400: PFColorVal; + Black500: PFColorVal; + Black600: PFColorVal; + Black700: PFColorVal; + Black1000: PFColorVal; + Blue50: PFColorVal; + Blue300: PFColorVal; + Blue600: PFColorVal; + Red50: PFColorVal; + Orange50: PFColorVal; + Gold400: PFColorVal; + Green400: PFColorVal; + Purple200: PFColorVal; + White: PFColorVal; + + // Health/Alert colors https://www.patternfly.org/v4/design-guidelines/styles/colors + Danger: PFColorVal; + Success: PFColorVal; + Warning: PFColorVal; + + // PF colors (compatible with dark mode) + BackgroundColor100: PFColorVal; + BackgroundColor200: PFColorVal; + + Color100: PFColorVal; + Color200: PFColorVal; + + BorderColor100: PFColorVal; + BorderColor200: PFColorVal; + BorderColor300: PFColorVal; +}; + +export let PFColorVals: PFColorValues; + +/* + Extract color from var + Input : var(--pf-v5-global--palette--black-100) + Output: --pf-v5-global--palette--black-100 + + - In case there is not var then return the same input +*/ +const getColor = (val: string) => { + return val.indexOf('var(') === 0 ? val.split('(').pop()!.split(')')[0] : val; +}; + +export const setPFColorVals = (element: Element) => { + PFColorVals = { + // color values used by kiali + Black100: window + .getComputedStyle(element) + .getPropertyValue(getColor(PFColors.Black100)), + Black150: window + .getComputedStyle(element) + .getPropertyValue(getColor(PFColors.Black150)), + Black200: window + .getComputedStyle(element) + .getPropertyValue(getColor(PFColors.Black200)), + Black300: window + .getComputedStyle(element) + .getPropertyValue(getColor(PFColors.Black300)), + Black400: window + .getComputedStyle(element) + .getPropertyValue(getColor(PFColors.Black400)), + Black500: window + .getComputedStyle(element) + .getPropertyValue(getColor(PFColors.Black500)), + Black600: window + .getComputedStyle(element) + .getPropertyValue(getColor(PFColors.Black600)), + Black700: window + .getComputedStyle(element) + .getPropertyValue(getColor(PFColors.Black700)), + Black1000: window + .getComputedStyle(element) + .getPropertyValue(getColor(PFColors.Black1000)), + Blue50: window + .getComputedStyle(element) + .getPropertyValue(getColor(PFColors.Blue50)), + Blue300: window + .getComputedStyle(element) + .getPropertyValue(getColor(PFColors.Blue300)), + Blue600: window + .getComputedStyle(element) + .getPropertyValue(getColor(PFColors.Blue600)), + Red50: window + .getComputedStyle(element) + .getPropertyValue(getColor(PFColors.Red50)), + Orange50: window + .getComputedStyle(element) + .getPropertyValue(getColor(PFColors.Orange50)), + Gold400: window + .getComputedStyle(element) + .getPropertyValue(getColor(PFColors.Gold400)), + Green400: window + .getComputedStyle(element) + .getPropertyValue(getColor(PFColors.Green400)), + Purple200: window + .getComputedStyle(element) + .getPropertyValue(getColor(PFColors.Purple200)), + White: window + .getComputedStyle(element) + .getPropertyValue(getColor(PFColors.White)), + + // status color values used by kiali + Danger: window + .getComputedStyle(element) + .getPropertyValue(getColor(PFColors.Danger)), + Success: window + .getComputedStyle(element) + .getPropertyValue(getColor(PFColors.Success)), + Warning: window + .getComputedStyle(element) + .getPropertyValue(getColor(PFColors.Warning)), + + // PF colors (compatible with dark mode) + BackgroundColor100: window + .getComputedStyle(element) + .getPropertyValue(getColor(PFColors.BackgroundColor100)), + BackgroundColor200: window + .getComputedStyle(element) + .getPropertyValue(getColor(PFColors.BackgroundColor200)), + + Color100: window + .getComputedStyle(element) + .getPropertyValue(getColor(PFColors.Color100)), + Color200: window + .getComputedStyle(element) + .getPropertyValue(getColor(PFColors.Color200)), + + BorderColor100: window + .getComputedStyle(element) + .getPropertyValue(getColor(PFColors.BorderColor100)), + BorderColor200: window + .getComputedStyle(element) + .getPropertyValue(getColor(PFColors.BorderColor200)), + BorderColor300: window + .getComputedStyle(element) + .getPropertyValue(getColor(PFColors.BorderColor300)), + }; +}; diff --git a/workspaces/kiali/plugins/kiali/src/components/Pf/PfTitle.tsx b/workspaces/kiali/plugins/kiali/src/components/Pf/PfTitle.tsx new file mode 100644 index 0000000000..b104f4e729 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/components/Pf/PfTitle.tsx @@ -0,0 +1,94 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import * as React from 'react'; + +import { + ApplicationsIcon, + BundleIcon, + ServiceIcon, +} from '@patternfly/react-icons'; + +import { kialiStyle } from '../../styles/StyleUtils'; +import { MissingSidecar } from '../MissingSidecar/MissingSidecar'; + +const PfTitleStyle = kialiStyle({ + fontSize: '19px', + fontWeight: 400, + margin: '20px 0', + padding: '0', +}); + +interface PfTitleProps { + location?: { + pathname: string; + search: string; + }; + istio?: boolean; +} + +const namespaceRegex = + /namespaces\/([a-z0-9-]+)\/([a-z0-9-]+)\/([a-z0-9-]+)(\/([a-z0-9-]+))?(\/([a-z0-9-]+))?/; + +export const PfTitle = (props: PfTitleProps) => { + const [type, setType] = React.useState(''); + const [namespace, setNamespace] = React.useState(''); + const [name, setName] = React.useState(''); + const [graphType, setGraphType] = React.useState(''); + const [icon, setIcon] = React.useState(<>); + + const doRefresh = () => { + let typeP = ''; + if (props.location) { + const match = props.location.pathname.match(namespaceRegex) || []; + setNamespace(match[1]); + typeP = match[2]; + setType(typeP); + setName(match[3]); + } + switch (typeP) { + case 'services': + setGraphType('service'); + setIcon(); + break; + case 'workloads': + setGraphType('workload'); + setIcon(); + break; + case 'applications': + setGraphType('app'); + setIcon(); + break; + default: + } + }; + + React.useEffect(() => { + doRefresh(); + // eslint-disable-next-line + }, []); + + return ( +

    + {icon} {name} + {name && props.istio !== undefined && !props.istio && ( + + + + )} +

    + ); +}; diff --git a/workspaces/kiali/plugins/kiali/src/components/Router.tsx b/workspaces/kiali/plugins/kiali/src/components/Router.tsx new file mode 100644 index 0000000000..2583890673 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/components/Router.tsx @@ -0,0 +1,198 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import React from 'react'; +import { Route, Routes } from 'react-router-dom'; + +import { Entity } from '@backstage/catalog-model'; +import { Content, Page } from '@backstage/core-components'; +import { useEntity } from '@backstage/plugin-catalog-react'; + +import { AppDetailsPage } from '../pages/AppDetails/AppDetailsPage'; +import { AppListPage } from '../pages/AppList/AppListPage'; +import { IstioConfigDetailsPage } from '../pages/IstioConfigDetails/IstioConfigDetailsPage'; +import { IstioConfigListPage } from '../pages/IstioConfigList/IstioConfigListPage'; +import { KialiNoPath } from '../pages/Kiali'; +import { KialiHeader } from '../pages/Kiali/Header/KialiHeader'; +import { KialiHeaderEntity } from '../pages/Kiali/Header/KialiHeaderEntity'; +import { KialiTabs } from '../pages/Kiali/Header/KialiTabs'; +import { KialiEntity } from '../pages/Kiali/KialiEntity'; +import { KialiNoAnnotation } from '../pages/Kiali/KialiNoAnnotation'; +import { OverviewPage } from '../pages/Overview/OverviewPage'; +import { ServiceDetailsPage } from '../pages/ServiceDetails/ServiceDetailsPage'; +import { ServiceListPage } from '../pages/ServiceList/ServiceListPage'; +import TrafficGraphPage from '../pages/TrafficGraph/TrafficGraphPage'; +import { WorkloadDetailsPage } from '../pages/WorkloadDetails/WorkloadDetailsPage'; +import { WorkloadListPage } from '../pages/WorkloadList/WorkloadListPage'; +import { pluginName } from '../plugin'; +import { + appDetailRouteRef, + appsRouteRef, + istioConfigDetailRouteRef, + istioConfigRouteRef, + overviewRouteRef, + servicesDetailRouteRef, + servicesRouteRef, + trafficGraphRouteRef, + workloadsDetailRouteRef, + workloadsRouteRef, +} from '../routes'; +import { KialiProvider } from '../store/KialiProvider'; +import { TechPreviewWarning } from './Banners/TechPreviewWarning'; + +export const KIALI_ANNOTATION = 'kiali.io/id'; +export const KIALI_NAMESPACE = 'kiali.io/namespace'; +export const KIALI_LABEL_SELECTOR_QUERY_ANNOTATION = 'kiali.io/label-selector'; + +export const ANNOTATION_SUPPORTED = [KIALI_NAMESPACE]; + +const validateAnnotation = (entity: Entity) => { + let validated = false; + ANNOTATION_SUPPORTED.forEach(key => { + if (entity.metadata.annotations?.[key]) { + validated = true; + } + }); + return validated; +}; + +/* + Router for entity +*/ + +export const getEntityRoutes = () => { + return ( + + } /> + } + /> + } + /> + } + /> + } + /> + } + /> + } /> + + ); +}; +export const EmbeddedRouter = () => { + const { entity } = useEntity(); + + return !validateAnnotation(entity) ? ( + + ) : ( + + + + {getEntityRoutes()} + + ); +}; + +export const getRoutes = (dev?: boolean) => { + return ( + + } /> + } + /> + } + /> + } + /> + } + /> + } + /> + } + /> + } + /> + } + /> + } + /> + } + /> + {dev && ( + } /> + )} + } /> + + ); +}; + +export const Router = () => { + return ( + + + + + + + {getRoutes()} + + + + ); +}; diff --git a/workspaces/kiali/plugins/kiali/src/components/SimpleTable.tsx b/workspaces/kiali/plugins/kiali/src/components/SimpleTable.tsx new file mode 100644 index 0000000000..3167b0fb09 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/components/SimpleTable.tsx @@ -0,0 +1,109 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import * as React from 'react'; + +import { + SortDirection, + Table, + TableBody, + TableCell, + TableCellProps, + TableHead, + TableRow, +} from '@material-ui/core'; + +import { kialiStyle } from '../styles/StyleUtils'; + +export interface SortableTh extends TableCellProps { + sortable: boolean; +} + +export type tRow = { + cells: React.JSX.Element[]; + key?: string; + className?: string; +}[]; + +interface SimpleTableProps { + className?: string; + columns: SortableTh[] | TableCellProps[]; + emptyState?: React.ReactNode; + label: string; + rows: tRow; + sort?: (columnIndex: number) => TableCellProps['sortDirection']; + sortBy?: SortDirection; + variant?: string; + verticalAlign?: string; +} + +export const SimpleTable: React.FC = ( + props: SimpleTableProps, +) => { + const tdStyle = kialiStyle({ + verticalAlign: props.verticalAlign ?? 'baseline', + }); + + return ( + + {!props.emptyState && ( + + + {props.columns.map( + (column: SortableTh | TableCellProps, index: number) => ( + + {column.title} + + ), + )} + + + )} + + {props.rows.length > 0 ? ( + props.rows.map((row, rowIndex) => ( + + {row.cells?.map((cell: React.ReactNode, colIndex: number) => ( + + {cell} + + ))} + + )) + ) : ( + <> + {props.emptyState && ( + + + {props.emptyState} + + + )} + + )} + +
    + ); +}; diff --git a/workspaces/kiali/plugins/kiali/src/components/Tab/TabPanel.tsx b/workspaces/kiali/plugins/kiali/src/components/Tab/TabPanel.tsx new file mode 100644 index 0000000000..2a40c56e5c --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/components/Tab/TabPanel.tsx @@ -0,0 +1,69 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import * as React from 'react'; + +import { Box, makeStyles, Typography } from '@material-ui/core'; +import PropTypes from 'prop-types'; + +export const useStyles = makeStyles(theme => ({ + root: { + flexGrow: 1, + backgroundColor: theme.palette.background.paper, + }, +})); + +export function a11yProps(index: number) { + return { + id: `simple-tab-${index}`, + 'aria-controls': `simple-tabpanel-${index}`, + }; +} + +export const TabPanel = (props: { + [x: string]: any; + children: any; + value: any; + index: any; +}) => { + const { children, value, index, ...other } = props; + + return ( + + ); +}; + +TabPanel.propTypes = { + children: PropTypes.node, + index: PropTypes.any.isRequired, + value: PropTypes.any.isRequired, +}; diff --git a/workspaces/kiali/plugins/kiali/src/components/TextOrLink.tsx b/workspaces/kiali/plugins/kiali/src/components/TextOrLink.tsx new file mode 100644 index 0000000000..d30b06cde9 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/components/TextOrLink.tsx @@ -0,0 +1,44 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import * as React from 'react'; + +type TextOrLinkProps = { + text: string; + urlTruncate?: number; +}; + +export const TextOrLink: React.FC = ( + props: TextOrLinkProps, +) => { + if (props.text.startsWith('http://') || props.text.startsWith('https://')) { + let truncated = props.text; + + if (props.urlTruncate && props.text.length > props.urlTruncate) { + truncated = `${props.text.substring( + 0, + props.urlTruncate / 2, + )}...${props.text.substring(props.text.length - props.urlTruncate / 2)}`; + } + + return ( + + {truncated} + + ); + } + + return <>{props.text}; +}; diff --git a/workspaces/kiali/plugins/kiali/src/components/Time/LocalTime.tsx b/workspaces/kiali/plugins/kiali/src/components/Time/LocalTime.tsx new file mode 100644 index 0000000000..eb56380727 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/components/Time/LocalTime.tsx @@ -0,0 +1,36 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import * as React from 'react'; + +import { toString } from './Utils'; + +interface TimeProps { + time: string; +} + +export class LocalTime extends React.Component { + render() { + let renderedTime: string; + + if (this.props.time) { + renderedTime = toString(new Date(this.props.time).valueOf()); + } else { + renderedTime = '-'; + } + + return <>{renderedTime}; + } +} diff --git a/workspaces/kiali/plugins/kiali/src/components/Time/TimeDurationComponent.tsx b/workspaces/kiali/plugins/kiali/src/components/Time/TimeDurationComponent.tsx new file mode 100644 index 0000000000..1aae9288bf --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/components/Time/TimeDurationComponent.tsx @@ -0,0 +1,48 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import * as React from 'react'; + +import { Select } from '@backstage/core-components'; + +import { HistoryManager, URLParam } from '../../app/History'; +import { getDurationType } from '../../pages/Overview/OverviewToolbar'; + +type TimeControlsProps = { + disabled: boolean; + id: string; + duration: string; + label: string; + setDuration: React.Dispatch>; + supportsReplay?: boolean; +}; + +export const TimeDurationComponent: React.FC = ( + props: TimeControlsProps, +) => { + const updateDurationType = (duration: number) => { + HistoryManager.setParam(URLParam.DURATION, duration.toString()); + props.setDuration(duration); + }; + + return ( + + {Object.keys(props.options).map(key => { + return ( + + { + // @ts-ignore + props.options[key] + } + + ); + })} + + ); + return ( + <> + {props.nameDropdown && ( + {props.nameDropdown} + )} + {props.tooltip ? ( + {props.tooltip}}> + {dropdownButton} + + ) : ( + dropdownButton + )} + + ); +}; diff --git a/workspaces/kiali/plugins/kiali/src/components/Validations/Validation.tsx b/workspaces/kiali/plugins/kiali/src/components/Validations/Validation.tsx new file mode 100644 index 0000000000..fab0882d1a --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/components/Validations/Validation.tsx @@ -0,0 +1,131 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import React, { CSSProperties } from 'react'; + +import { Typography } from '@material-ui/core'; +import { + CheckCircleIcon, + ExclamationCircleIcon, + ExclamationTriangleIcon, + InfoCircleIcon, +} from '@patternfly/react-icons'; +import { SVGIconProps } from '@patternfly/react-icons/dist/js/createIcon'; + +import { kialiStyle } from '../../styles/StyleUtils'; +import { ValidationTypes } from '../../types/IstioObjects'; +import { PFColors } from '../Pf/PfColors'; + +const validationStyle = kialiStyle({ + textAlign: 'left', + $nest: { + '&:last-child p': { + margin: 0, + }, + }, +}); + +type Props = ValidationDescription & { + messageColor?: boolean; + size?: string; + textStyle?: React.CSSProperties; + iconStyle?: React.CSSProperties; +}; + +export type ValidationDescription = { + severity: ValidationTypes; + message?: string; +}; + +export type ValidationType = { + name: string; + color: string; + icon: React.ComponentClass; +}; + +const ErrorValidation: ValidationType = { + name: 'Not Valid', + color: PFColors.Danger, + icon: ExclamationCircleIcon, +}; + +const WarningValidation: ValidationType = { + name: 'Warning', + color: PFColors.Warning, + icon: ExclamationTriangleIcon, +}; + +const InfoValidation: ValidationType = { + name: 'Info', + color: PFColors.Info, + icon: InfoCircleIcon, +}; + +const CorrectValidation: ValidationType = { + name: 'Valid', + color: PFColors.Success, + icon: CheckCircleIcon, +}; + +export const severityToValidation: { [severity: string]: ValidationType } = { + error: ErrorValidation, + warning: WarningValidation, + correct: CorrectValidation, + info: InfoValidation, +}; + +export const Validation = (props: Props) => { + const validation = () => { + return severityToValidation[props.severity]; + }; + + const severityColor = () => { + return { color: validation().color }; + }; + + const textStyle = () => { + const colorMessage = props.messageColor || false; + const textStyleT = props.textStyle || {}; + if (colorMessage) { + Object.assign(textStyleT, severityColor()); + } + return textStyleT; + }; + + const iconStyle = () => { + const iconStyleP = props.iconStyle ? { ...props.iconStyle } : {}; + const defaultStyle: CSSProperties = { + verticalAlign: '-0.125em', + marginRight: '0.5rem', + }; + Object.assign(iconStyleP, severityColor()); + Object.assign(iconStyleP, defaultStyle); + return iconStyleP; + }; + + const IconComponent = validation().icon; + const hasMessage = !!props.message; + if (hasMessage) { + return ( +
    + + {' '} + {props.message} + +
    + ); + } + return ; +}; diff --git a/workspaces/kiali/plugins/kiali/src/components/Validations/ValidationList.tsx b/workspaces/kiali/plugins/kiali/src/components/Validations/ValidationList.tsx new file mode 100644 index 0000000000..02313ffadf --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/components/Validations/ValidationList.tsx @@ -0,0 +1,54 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import React from 'react'; + +import { Tooltip } from '@material-ui/core'; + +import { ObjectCheck, ValidationTypes } from '../../types/IstioObjects'; +import { highestSeverity } from '../../types/ServiceInfo'; +import { Validation } from './Validation'; + +type ValidationListProps = { + checks?: ObjectCheck[]; + tooltipPosition?: string; +}; + +export const ValidationList: React.FC = ( + props: ValidationListProps, +) => { + const content = (props.checks ?? []).map((check, index) => { + return ( + + ); + }); + + const severity = highestSeverity(props.checks ?? []); + const isValid = severity === ValidationTypes.Correct; + + const tooltip = ( + + + + + + ); + + return tooltip; +}; diff --git a/workspaces/kiali/plugins/kiali/src/components/Validations/ValidationObjectSummary.tsx b/workspaces/kiali/plugins/kiali/src/components/Validations/ValidationObjectSummary.tsx new file mode 100644 index 0000000000..f68c748545 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/components/Validations/ValidationObjectSummary.tsx @@ -0,0 +1,54 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import * as React from 'react'; + +import { + ObjectValidation, + StatusCondition, + ValidationTypes, +} from '../../types/IstioObjects'; +import { ValidationSummary } from './ValidationSummary'; + +interface Props { + id: string; + reconciledCondition?: StatusCondition; + validations: ObjectValidation[]; +} + +export const ValidationObjectSummary: React.FC = (props: Props) => { + const numberOfChecks = (type: ValidationTypes): number => { + let numCheck = 0; + + props.validations.forEach(validation => { + if (validation.checks) { + numCheck += validation.checks.filter(i => i.severity === type).length; + } + }); + + return numCheck; + }; + + return ( + + ); +}; diff --git a/workspaces/kiali/plugins/kiali/src/components/Validations/ValidationServiceSummary.tsx b/workspaces/kiali/plugins/kiali/src/components/Validations/ValidationServiceSummary.tsx new file mode 100644 index 0000000000..ebb841c0b3 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/components/Validations/ValidationServiceSummary.tsx @@ -0,0 +1,47 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import * as React from 'react'; + +import { ObjectValidation, ValidationTypes } from '../../types/IstioObjects'; +import { ValidationSummary } from './ValidationSummary'; + +interface Props { + id: string; + validations: ObjectValidation[]; +} + +export const ValidationServiceSummary: React.FC = (props: Props) => { + const numberOfChecks = (type: ValidationTypes): number => { + let numCheck = 0; + + props.validations.forEach(validation => { + if (validation.checks) { + numCheck += validation.checks.filter(i => i.severity === type).length; + } + }); + + return numCheck; + }; + + return ( + + ); +}; diff --git a/workspaces/kiali/plugins/kiali/src/components/Validations/ValidationStack.tsx b/workspaces/kiali/plugins/kiali/src/components/Validations/ValidationStack.tsx new file mode 100644 index 0000000000..fa72b77636 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/components/Validations/ValidationStack.tsx @@ -0,0 +1,60 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import React from 'react'; + +import { kialiStyle } from '../../styles/StyleUtils'; +import { ObjectCheck, ValidationTypes } from '../../types/IstioObjects'; +import { highestSeverity } from '../../types/ServiceInfo'; +import { PFColors } from '../Pf/PfColors'; +import { Validation } from './Validation'; + +type ValidationStackProps = { + checks?: ObjectCheck[]; +}; + +const colorStyle = kialiStyle({ color: PFColors.White }); +const titleStyle = kialiStyle({ color: PFColors.White, fontWeight: 'bold' }); + +export const ValidationStack: React.FC = ( + props: ValidationStackProps, +) => { + const validationList = (): React.ReactNode[] => { + return (props.checks ?? []).map((check, index) => { + return ( +
    + +
    + ); + }); + }; + + const severity = highestSeverity(props.checks ?? []); + const isValid = severity === ValidationTypes.Correct; + + if (!isValid) { + return ( +
    + Istio validations + {validationList()} +
    + ); + } + return null; +}; diff --git a/workspaces/kiali/plugins/kiali/src/components/Validations/ValidationSummary.tsx b/workspaces/kiali/plugins/kiali/src/components/Validations/ValidationSummary.tsx new file mode 100644 index 0000000000..eb067a2114 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/components/Validations/ValidationSummary.tsx @@ -0,0 +1,153 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import * as React from 'react'; +import { CSSProperties } from 'react'; + +import { Tooltip, Typography } from '@material-ui/core'; + +import { kialiStyle } from '../../styles/StyleUtils'; +import { StatusCondition, ValidationTypes } from '../../types/IstioObjects'; +import { Validation } from './Validation'; + +interface Props { + id: string; + reconciledCondition?: StatusCondition; + errors: number; + warnings: number; + objectCount?: number; + style?: CSSProperties; + type?: string; +} + +const tooltipListStyle = kialiStyle({ + textAlign: 'left', + border: 0, + padding: '0 0 0 0', + margin: '0 0 0 0', +}); + +const tooltipSentenceStyle = kialiStyle({ + textAlign: 'center', + border: 0, + padding: '0 0 0 0', + margin: '0 0 0 0', +}); + +export const ValidationSummary = (props: Props) => { + const getTypeMessage = (count: number, type: ValidationTypes): string => { + return count > 1 ? `${count} ${type}s found` : `${count} ${type} found`; + }; + + const severitySummary = () => { + const issuesMessages: string[] = []; + + if (props.errors > 0) { + issuesMessages.push(getTypeMessage(props.errors, ValidationTypes.Error)); + } + + if (props.warnings > 0) { + issuesMessages.push( + getTypeMessage(props.warnings, ValidationTypes.Warning), + ); + } + + if (issuesMessages.length === 0) { + issuesMessages.push('No issues found'); + } + + return issuesMessages; + }; + + const severity = () => { + if (props.errors > 0) { + return ValidationTypes.Error; + } else if (props.warnings > 0) { + return ValidationTypes.Warning; + } + return ValidationTypes.Correct; + }; + + const tooltipNA = () => { + return ( + + No Istio config objects found + + ); + }; + + const tooltipNoValidationAvailable = () => { + return ( + + No Istio config validation available + + ); + }; + + const tooltipSummary = () => { + return ( + <> + + Istio config objects analyzed: {props.objectCount} + +
    + {severitySummary().map(cat => ( +
    {cat}
    + ))} +
    + {props.reconciledCondition?.status && ( + + The object is reconciled + + )} + + ); + }; + + const tooltipContent = () => { + if (props.objectCount !== undefined) { + if (props.objectCount === 0) { + return tooltipNA(); + } + return tooltipSummary(); + } + return tooltipNoValidationAvailable(); + }; + + const tooltipBase = () => { + return props.objectCount === undefined || props.objectCount > 0 ? ( + + ) : ( +
    N/A
    + ); + }; + + return ( + + {tooltipBase()} + + ); +}; diff --git a/workspaces/kiali/plugins/kiali/src/components/VirtualList/Config.tsx b/workspaces/kiali/plugins/kiali/src/components/VirtualList/Config.tsx new file mode 100644 index 0000000000..df941e15ee --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/components/VirtualList/Config.tsx @@ -0,0 +1,431 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import * as React from 'react'; + +import { StatefulFilters } from '../../components/Filters/StatefulFilters'; +import { serverConfig } from '../../config'; +import { isGateway, isWaypoint } from '../../helpers/LabelFilterHelper'; +import { AppListItem } from '../../types/AppList'; +import { Health } from '../../types/Health'; +import { IstioConfigItem } from '../../types/IstioConfigList'; +import { NamespaceInfo } from '../../types/NamespaceInfo'; +import { ServiceListItem } from '../../types/ServiceList'; +import { WorkloadListItem } from '../../types/Workload'; +import { PFBadges, PFBadgeType } from '../Pf/PfBadges'; +import * as Renderers from './Renderers'; + +export type SortResource = WorkloadListItem | ServiceListItem | AppListItem; +export type TResource = SortResource | IstioConfigItem; +export type RenderResource = TResource | NamespaceInfo; +export type Renderer = ( + item: R, + config: Resource, + badge: PFBadgeType, + health?: Health, + statefulFilter?: React.RefObject, + view?: string, + linkColor?: string, +) => JSX.Element | undefined; + +export type ResourceType = { + name: string; + param?: string; + renderer?: Renderer; + sortable: boolean; + textCenter?: boolean; + title: string; + width?: 10 | 15 | 20 | 25 | 30 | 35 | 40 | 45 | 50 | 60 | 70 | 80 | 90 | 100; +}; + +export type Resource = { + badge?: PFBadgeType; + caption?: string; + columns: ResourceType[]; + name: string; +}; + +type IstioConfigType = { + badge: PFBadgeType; + name: string; + url: string; +}; + +export const IstioTypes: { [type: string]: IstioConfigType } = { + adapter: { name: 'Adapter', url: 'adapters', badge: PFBadges.Adapter }, + attributemanifest: { + name: 'AttributeManifest', + url: 'attributemanifests', + badge: PFBadges.AttributeManifest, + }, + authorizationpolicy: { + name: 'AuthorizationPolicy', + url: 'authorizationpolicies', + badge: PFBadges.AuthorizationPolicy, + }, + clusterrbacconfig: { + name: 'ClusterRbacConfig', + url: 'clusterrbacconfigs', + badge: PFBadges.ClusterRBACConfig, + }, + destinationrule: { + name: 'DestinationRule', + url: 'destinationrules', + badge: PFBadges.DestinationRule, + }, + envoyfilter: { + name: 'EnvoyFilter', + url: 'envoyfilters', + badge: PFBadges.EnvoyFilter, + }, + gateway: { name: 'Gateway', url: 'gateways', badge: PFBadges.Gateway }, + grpcroute: { + name: 'GRPCRoute', + url: 'k8sgrpcroutes', + badge: PFBadges.GRPCRoute, + }, + handler: { name: 'Handler', url: 'handlers', badge: PFBadges.Handler }, + httproute: { + name: 'HTTPRoute', + url: 'k8shttproutes', + badge: PFBadges.HTTPRoute, + }, + instance: { name: 'Instance', url: 'instances', badge: PFBadges.Instance }, + k8sgateway: { + name: 'Gateway (K8s)', + url: 'k8sgateways', + badge: PFBadges.K8sGateway, + }, + k8sgrpcroute: { + name: 'GRPCRoute (K8s)', + url: 'k8sgrpcroutes', + badge: PFBadges.K8sGRPCRoute, + }, + k8shttproute: { + name: 'HTTPRoute (K8s)', + url: 'k8shttproutes', + badge: PFBadges.K8sHTTPRoute, + }, + k8sreferencegrant: { + name: 'ReferenceGrant (K8s)', + url: 'k8sreferencegrants', + badge: PFBadges.K8sReferenceGrant, + }, + k8stcproute: { + name: 'TCPRoute (K8s)', + url: 'k8stcproutes', + badge: PFBadges.K8sTCPRoute, + }, + k8stlsroute: { + name: 'TLSRoute (K8s)', + url: 'k8stlsroutes', + badge: PFBadges.K8sTLSRoute, + }, + meshpolicy: { + name: 'MeshPolicy', + url: 'meshpolicies', + badge: PFBadges.MeshPolicy, + }, + peerauthentication: { + name: 'PeerAuthentication', + url: 'peerauthentications', + badge: PFBadges.PeerAuthentication, + }, + policy: { name: 'Policy', url: 'policies', badge: PFBadges.Policy }, + rbacconfig: { + name: 'RbacConfig', + url: 'rbacconfigs', + badge: PFBadges.RBACConfig, + }, + requestauthentication: { + name: 'RequestAuthentication', + url: 'requestauthentications', + badge: PFBadges.RequestAuthentication, + }, + // TODO should be merged with k8sreferencegrant + referencegrant: { + name: 'ReferenceGrant (K8s)', + url: 'k8sreferencegrants', + badge: PFBadges.K8sReferenceGrant, + }, + tcproute: { + name: 'TCPRoute (K8s)', + url: 'k8stcproutes', + badge: PFBadges.K8sTCPRoute, + }, + tlsroute: { + name: 'TLSRoute (K8s)', + url: 'k8stlsroutes', + badge: PFBadges.K8sTLSRoute, + }, + rule: { name: 'Rule', url: 'rules', badge: PFBadges.Rule }, + serviceentry: { + name: 'ServiceEntry', + url: 'serviceentries', + badge: PFBadges.ServiceEntry, + }, + servicerole: { + name: 'ServiceRole', + url: 'serviceroles', + badge: PFBadges.ServiceRole, + }, + servicerolebinding: { + name: 'ServiceRoleBinding', + url: 'servicerolebindings', + badge: PFBadges.ServiceRoleBinding, + }, + sidecar: { name: 'Sidecar', url: 'sidecars', badge: PFBadges.Sidecar }, + telemetry: { + name: 'Telemetry', + url: 'telemetries', + badge: PFBadges.Telemetry, + }, + template: { name: 'Template', url: 'templates', badge: PFBadges.Template }, + virtualservice: { + name: 'VirtualService', + url: 'virtualservices', + badge: PFBadges.VirtualService, + }, + wasmplugin: { + name: 'WasmPlugin', + url: 'wasmplugins', + badge: PFBadges.WasmPlugin, + }, + workloadentry: { + name: 'WorkloadEntry', + url: 'workloadentries', + badge: PFBadges.WorkloadEntry, + }, + workloadgroup: { + name: 'WorkloadGroup', + url: 'workloadgroups', + badge: PFBadges.WorkloadGroup, + }, +}; + +// General +const item: ResourceType = { + name: 'Item', + param: 'wn', + title: 'Name', + sortable: true, + width: 30, + renderer: Renderers.item, +}; + +const serviceItem: ResourceType = { + name: 'Item', + param: 'sn', + title: 'Name', + sortable: true, + width: 30, + renderer: Renderers.item, +}; + +const istioItem: ResourceType = { + name: 'Item', + param: 'in', + title: 'Name', + sortable: true, + renderer: Renderers.item, +}; + +const cluster: ResourceType = { + name: 'Cluster', + param: 'cl', + title: 'Cluster', + sortable: true, + width: 15, + renderer: Renderers.cluster, +}; + +const namespace: ResourceType = { + name: 'Namespace', + param: 'ns', + title: 'Namespace', + sortable: true, + width: 20, + renderer: Renderers.namespace, +}; + +const labels: ResourceType = { + name: 'Labels', + param: 'lb', + title: 'Labels', + sortable: false, + width: 20, + renderer: Renderers.labels, +}; + +const health: ResourceType = { + name: 'Health', + param: 'he', + title: 'Health', + sortable: true, + width: 15, + renderer: Renderers.health, +}; + +const details: ResourceType = { + name: 'Details', + param: 'is', + title: 'Details', + sortable: true, + width: 15, + renderer: Renderers.details, +}; + +const serviceConfiguration: ResourceType = { + name: 'Configuration', + param: 'cv', + title: 'Configuration', + sortable: true, + width: 20, + renderer: Renderers.serviceConfiguration, +}; + +const istioObjectConfiguration: ResourceType = { + name: 'Configuration', + param: 'cv', + title: 'Configuration', + sortable: true, + width: 20, + renderer: Renderers.istioConfiguration, +}; + +const workloadType: ResourceType = { + name: 'WorkloadType', + param: 'wt', + title: 'Type', + sortable: true, + renderer: Renderers.workloadType, +}; + +const istioType: ResourceType = { + name: 'IstioType', + param: 'it', + title: 'Type', + sortable: true, + renderer: Renderers.istioType, +}; + +// NamespaceInfo +const tlsStatus: ResourceType = { + name: 'TLS', + param: 'tls', + title: 'TLS', + sortable: true, + width: 10, + renderer: Renderers.tls, +}; + +const nsItem: ResourceType = { + name: 'Namespace', + param: 'ns', + title: 'Namespace', + sortable: true, + renderer: Renderers.nsItem, +}; + +const istioConfiguration: ResourceType = { + name: 'IstioConfiguration', + param: 'ic', + title: 'Config', + sortable: true, + width: 10, + renderer: Renderers.istioConfig, +}; + +const status: ResourceType = { + name: 'Status', + param: 'h', + title: 'Status', + sortable: true, + width: 50, + textCenter: true, + renderer: Renderers.status, +}; + +const namespaces: Resource = { + name: 'namespaces', + columns: [tlsStatus, nsItem, cluster, istioConfiguration, labels, status], + badge: PFBadges.Namespace, +}; + +const workloads: Resource = { + name: 'workloads', + columns: [health, item, namespace, cluster, workloadType, labels, details], + badge: PFBadges.Workload, +}; + +const applications: Resource = { + name: 'applications', + columns: [health, item, namespace, cluster, labels, details], + badge: PFBadges.App, +}; + +const services: Resource = { + name: 'services', + columns: [ + health, + serviceItem, + namespace, + cluster, + labels, + serviceConfiguration, + details, + ], + badge: PFBadges.Service, +}; + +const istio: Resource = { + name: 'istio', + columns: [istioItem, namespace, cluster, istioType, istioObjectConfiguration], + badge: PFBadges.App, +}; + +type Config = { + applications: Resource; + istio: Resource; + overview: Resource; + services: Resource; + workloads: Resource; +}; + +const conf: Config = { + applications: applications, + istio: istio, + overview: namespaces, + services: services, + workloads: workloads, +}; + +export const isIstioNamespace = (ns: string): boolean => { + if (ns === serverConfig.istioNamespace) { + return true; + } + return false; +}; + +export const hasMissingSidecar = (r: SortResource): boolean => { + return ( + !isIstioNamespace(r.namespace) && + !r.istioSidecar && + !isGateway(r.labels) && + !isWaypoint(r.labels) + ); +}; + +export const config: Config = conf; diff --git a/workspaces/kiali/plugins/kiali/src/components/VirtualList/Renderers.tsx b/workspaces/kiali/plugins/kiali/src/components/VirtualList/Renderers.tsx new file mode 100644 index 0000000000..6b1279e872 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/components/VirtualList/Renderers.tsx @@ -0,0 +1,527 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import * as React from 'react'; + +import { Link } from '@backstage/core-components'; + +import { + Button, + Chip, + Drawer, + IconButton, + TableCell, + Tooltip, +} from '@material-ui/core'; +// eslint-disable-next-line no-restricted-imports +import { Close } from '@material-ui/icons'; + +import { KialiIcon, serverConfig } from '../../config'; +import { isWaypoint } from '../../helpers/LabelFilterHelper'; +import { infoStyle } from '../../pages/Overview/OverviewCard/CanaryUpgradeProgress'; +import { ControlPlaneBadge } from '../../pages/Overview/OverviewCard/ControlPlaneBadge'; +import { OverviewCardSparklineCharts } from '../../pages/Overview/OverviewCard/OverviewCardSparklineCharts'; +import { Health } from '../../types/Health'; +import { IstioConfigItem } from '../../types/IstioConfigList'; +import { ValidationStatus } from '../../types/IstioObjects'; +import { ComponentStatus } from '../../types/IstioStatus'; +import { NamespaceInfo } from '../../types/NamespaceInfo'; +import { ServiceListItem } from '../../types/ServiceList'; +import { DRAWER, ENTITY } from '../../types/types'; +import { WorkloadListItem } from '../../types/Workload'; +import { BackstageObjectLink } from '../../utils/backstageLinks'; +import { getReconciliationCondition } from '../../utils/IstioConfigUtils'; +import { AppDetailsDrawer } from '../Drawers/AppDetailsDrawer'; +import { ServiceDetailsDrawer } from '../Drawers/ServiceDetailsDrawer'; +import { WorkloadDetailsDrawer } from '../Drawers/WorkloadDetailsDrawer'; +import { StatefulFilters } from '../Filters/StatefulFilters'; +import { HealthIndicator } from '../Health/HealthIndicator'; +import { NamespaceMTLSStatus } from '../MTls/NamespaceMTLSStatus'; +import { PFBadge, PFBadges, PFBadgeType } from '../Pf/PfBadges'; +import { ValidationObjectSummary } from '../Validations/ValidationObjectSummary'; +import { ValidationServiceSummary } from '../Validations/ValidationServiceSummary'; +import { ValidationSummary } from '../Validations/ValidationSummary'; +import { + IstioTypes, + Renderer, + Resource, + SortResource, + TResource, +} from './Config'; + +const topPosition = 'top'; + +// Cells +export const actionRenderer = ( + key: string, + action: React.ReactNode, +): React.ReactNode => { + return ( + + {action} + + ); +}; + +const DrawerDiv = ({ + name, + namespace, + config, +}: { + name: string; + namespace: string; + config: string; +}) => { + const [isOpen, toggleDrawer] = React.useState(false); + + const DrawerContent = ({ + toggleDrawer2, + }: { + toggleDrawer2: (isOpen: boolean) => void; + }) => { + return ( +
    +
    + toggleDrawer2(false)} + color="inherit" + style={{ right: '0', position: 'absolute', top: '5px' }} + > + + +
    +
    +
    + {config === 'workloads' && ( + + )} + {config === 'services' && ( + + )} + {config === 'applications' && ( + + )} +
    +
    + ); + }; + + return ( + <> + + toggleDrawer(false)}> + + + + ); +}; + +export const item: Renderer = ( + resource: TResource, + config: Resource, + badge: PFBadgeType, + _?: Health, + __?: React.RefObject, + view?: string, + linkColor?: string, +): React.ReactElement => { + const key = `link_definition_${config.name}_${resource.namespace}_${resource.name}`; + let serviceBadge = badge; + + if ('serviceRegistry' in resource && resource.serviceRegistry) { + switch (resource.serviceRegistry) { + case 'External': + serviceBadge = PFBadges.ExternalService; + break; + case 'Federation': + serviceBadge = PFBadges.FederatedService; + break; + default: // TODO + serviceBadge = PFBadges.ExternalService; + break; + } + } + + if (view === DRAWER) { + return ( + + + + ); + } + return ( + + {view !== ENTITY && view !== DRAWER && ( + + )} + + {resource.name} + + + ); +}; + +export const cluster: Renderer = (resource: TResource) => { + return ( + + + {resource.cluster} + + ); +}; + +export const namespace: Renderer = ( + resource: TResource, + _: Resource, + __: PFBadgeType, + ___?: Health, + ____?: React.RefObject, + view?: string, +) => { + return ( + + {view !== ENTITY && view !== DRAWER && ( + + )} + {resource.namespace} + + ); +}; + +export const labels: Renderer = ( + resource: SortResource | NamespaceInfo, + _: Resource, + __: PFBadgeType, + ___?: Health, + ____?: React.RefObject, + view?: string, +) => { + // @ts-ignore + let path = window.location.pathname; + path = path.substring(path.lastIndexOf('/console') + '/console'.length + 1); + + const labelsView = resource.labels ? ( + Object.entries(resource.labels).map(([key, value], _i) => { + return ; + }) + ) : ( + <> + ); + + const labelsWrap =
    {labelsView}
    ; + + return ( + + {(view === ENTITY || view === DRAWER) && resource.labels && ( + + + + )} + {view !== ENTITY && view !== DRAWER && labelsView} + + ); +}; + +export const health: Renderer = ( + resource: TResource, + __: Resource, + _: PFBadgeType, + healthI?: Health, +) => { + return ( + + {healthI && } + + ); +}; + +export const details: Renderer = ( + resource: WorkloadListItem | ServiceListItem, +) => { + const isAmbientWaypoint = isWaypoint(resource.labels); + + return ( + +
      + {resource.istioReferences?.length > 0 && + resource.istioReferences.map(ir => ( +
    • + + {ir.name} +
    • + ))} + {isAmbientWaypoint && ( +
    • + + Waypoint Proxy + + + +
    • + )} +
    +
    + ); +}; + +export const tls: Renderer = (ns: NamespaceInfo) => { + return ( + + {ns.tlsStatus ? ( + + ) : undefined} + + ); +}; + +export const serviceConfiguration: Renderer = ( + resource: ServiceListItem, + _: Resource, +) => { + const validation = resource.validation; + + return ( + + {validation ? ( + + ) : ( + <>N/A + )} + + ); +}; + +export const istioConfiguration: Renderer = ( + resource: IstioConfigItem, + _: Resource, +) => { + const validation = resource.validation; + const reconciledCondition = getReconciliationCondition(resource); + + return ( + + {validation ? ( + + + + ) : ( + <>N/A + )} + + ); +}; + +export const workloadType: Renderer = ( + resource: WorkloadListItem, +) => { + return ( + + {resource.type} + + ); +}; + +export const istioType: Renderer = ( + resource: IstioConfigItem, +) => { + const type = resource.type; + const object = IstioTypes[type]; + + return ( + + {object.name} + + ); +}; + +export const nsItem: Renderer = ( + ns: NamespaceInfo, + _config: Resource, + badge: PFBadgeType, +) => { + // TODO: Status + const istioStatus: ComponentStatus[] = []; + + return ( + + + {ns.name} + {ns.name === serverConfig.istioNamespace && ( + + )} + + ); +}; + +export const istioConfig: Renderer = (ns: NamespaceInfo) => { + let validations: ValidationStatus = { + objectCount: 0, + errors: 0, + warnings: 0, + }; + + if (!!ns.validations) { + validations = ns.validations; + } + + const status = ( + + + + ); + + return status; +}; + +export const status: Renderer = (ns: NamespaceInfo) => { + if (ns.status) { + return ( + + + + ); + } + + return ; +}; diff --git a/workspaces/kiali/plugins/kiali/src/components/VirtualList/VirtualItem.tsx b/workspaces/kiali/plugins/kiali/src/components/VirtualList/VirtualItem.tsx new file mode 100644 index 0000000000..bd5a8e042b --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/components/VirtualList/VirtualItem.tsx @@ -0,0 +1,103 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import * as React from 'react'; +import { CSSProperties } from 'react'; + +import { TableRow } from '@material-ui/core'; + +import { useLinkStyle } from '../../styles/StyleUtils'; +import { hasHealth, Health } from '../../types/Health'; +import { StatefulFiltersProps } from '../Filters/StatefulFilters'; +import { PFBadgeType } from '../Pf/PfBadges'; +import { IstioTypes, RenderResource, Resource } from './Config'; +import { actionRenderer } from './Renderers'; + +type VirtualItemProps = { + action?: JSX.Element; + className?: string; + columns: any[]; + config: Resource; + index: number; + item: RenderResource & { type?: string }; // Add 'type' property to 'RenderResource' type + key: string; + statefulFilterProps?: StatefulFiltersProps; + style?: CSSProperties; + view?: string; +}; + +export const VirtualItem = (props: VirtualItemProps) => { + const [itemState, setItemState] = React.useState(); + + React.useEffect(() => { + if (hasHealth(props.item)) { + if ('health' in props.item) { + setItemState(props.item.health); + } + } + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [itemState]); + + const getBadge = (): React.ReactNode | PFBadgeType => { + if (props.config.name !== 'istio') { + return props.config.badge; + } else if (props.item.type) { + return IstioTypes[props.item.type].badge; + } + return <>; + }; + + const linkColor = useLinkStyle(); + + const renderDetails = ( + item: RenderResource & { type?: string }, // Add 'type' property to 'RenderResource' type + health?: Health, + ): React.ReactNode => { + return props.columns + .filter(object => !!object.renderer) + .map(object => + object.renderer( + item, + props.config, + getBadge(), + health, + props.statefulFilterProps, + props.view, + linkColor, + ), + ); + }; + + const { style, className, item } = props; + const cluster = item.cluster ? `_Cluster${item.cluster}` : ''; + const namespace = 'namespace' in item ? `_Ns${item.namespace}` : ''; + const type = 'type' in item ? `_${item.type}` : ''; + // End result looks like: VirtualItem_Clusterwest_Nsbookinfo_gateway_bookinfo-gateway + + const key = `VirtualItem${cluster}${namespace}${type}_${item.name}`; + + return ( + + {renderDetails(item, itemState)} + {props.action && actionRenderer(key, props.action)} + + ); +}; diff --git a/workspaces/kiali/plugins/kiali/src/components/VirtualList/VirtualList.tsx b/workspaces/kiali/plugins/kiali/src/components/VirtualList/VirtualList.tsx new file mode 100644 index 0000000000..f0cb6890f0 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/components/VirtualList/VirtualList.tsx @@ -0,0 +1,270 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import * as React from 'react'; + +import { + Box, + CircularProgress, + Paper, + SortDirection, + Table, + TableBody, + TableCell, + TableContainer, + TableHead, + TableRow, + TableSortLabel, +} from '@material-ui/core'; + +import { kialiStyle } from '../../styles/StyleUtils'; +import { Namespace } from '../../types/Namespace'; +import { NamespaceInfo } from '../../types/NamespaceInfo'; +import { SortField } from '../../types/SortFilters'; +import { DRAWER, ENTITY } from '../../types/types'; +import { StatefulFiltersProps } from '../Filters/StatefulFilters'; +import { config, RenderResource, Resource, ResourceType } from './Config'; +import { VirtualItem } from './VirtualItem'; + +const emptyStyle = kialiStyle({ + borderBottom: 0, +}); + +// ****************************** +// VirtualList and its associated classes are intended to be used for main list pages: Applications, +// Workloads, Services and Istio Config. They share common style and filter integration. They have +// have limitations in scenarios where different personalization is needed (columns style, or layout). +// For a secondary list, rendered inside a detail page, it is recommended the imple be based on a +// Table component, such as in WorkloadServices, WorkloadPods, ServiceInfoWorkload, IstioConfigSubList, +// or TrafficListComponent. +// ****************************** + +type VirtualListProps = { + actions?: JSX.Element[]; + activeNamespaces: Namespace[]; + children?: React.ReactNode; + hiddenColumns?: string[]; + rows: R[]; + sort?: (sortField: SortField, isAscending: boolean) => void; + statefulProps?: StatefulFiltersProps; + tableToolbar?: React.ReactNode; + type: string; + view?: string; + loading: boolean; +}; + +export const VirtualList = ( + listProps: VirtualListProps, +) => { + const [order, setOrder] = React.useState('asc'); + const [orderBy, setOrderBy] = React.useState(''); + // @ts-ignore + const [conf] = React.useState(config[listProps.type] as Resource); + + const getColumns = (): ResourceType[] => { + let columns = [] as ResourceType[]; + if (conf.columns) { + columns = conf.columns.filter( + info => + !listProps.hiddenColumns || + !listProps.hiddenColumns.includes( + info.title.toLocaleLowerCase('en-US'), + ), + ); + } + return columns; + }; + const columns = getColumns(); + + const { rows } = listProps; + const typeDisplay = + listProps.type === 'istio' ? 'Istio config' : listProps.type; + + const tableEntityHeaderStyle: any = { + minWidth: '100px', + fontWeight: '700', + color: 'grey', + borderTop: '1px solid #d5d5d5', + borderBottom: '1px solid #d5d5d5', + whiteSpace: 'nowrap', + padding: '15px', + }; + + const tableHeaderStyle: any = { + minWidth: '120px', + fontWeight: '700', + color: 'grey', + borderTop: '1px solid #d5d5d5', + borderBottom: '1px solid #d5d5d5', + whiteSpace: 'nowrap', + }; + + function descendingComparator(a: string, b: string): number { + if (b < a) { + return -1; + } + if (b > a) { + return 1; + } + return 0; + } + + function getComparator(): any { + return order === 'desc' + ? (a: string, b: string) => descendingComparator(a, b) + : (a: string, b: string) => -descendingComparator(a, b); + } + + function stableSort( + array: RenderResource[], + comparator: any, + ): RenderResource[] { + const stabilizedThis: [RenderResource, number][] = array.map( + (el, index) => [el, index], + ); + stabilizedThis.sort( + (a: [RenderResource, number], b: [RenderResource, number]): number => { + // @ts-ignore + const aProp = a[0][orderBy]; + // @ts-ignore + const bProp = b[0][orderBy]; + if (aProp === undefined || bProp === undefined) { + return 0; + } + const sort = comparator(aProp, bProp); + if (sort !== 0) return sort; + return a[1] - b[1]; + }, + ); + return stabilizedThis.map(el => el[0]); + } + + const handleRequestSort = ( + _: React.MouseEvent, + property: string, + ) => { + const isAsc = orderBy === property && order === 'asc'; + setOrder(isAsc ? 'desc' : 'asc'); + setOrderBy(property.toLocaleLowerCase('en-US')); + }; + const heightStyle = + listProps.view === ENTITY || listProps.view === DRAWER + ? { maxHeight: '300px' } + : {}; + return ( +
    + + {listProps.tableToolbar} + + + + + {columns.map((column: ResourceType, index: number) => ( + + + handleRequestSort( + e, + column.title.toLocaleLowerCase('en-US'), + ) + } + > + {listProps.view === ENTITY || + (listProps.view === DRAWER && + column.title === 'Configuration') + ? 'CONFIG' + : column.title.toLocaleUpperCase('en-US')} + + + ))} + + + + {/* eslint-disable-next-line no-nested-ternary */} + {listProps.loading === true ? ( + + + + ) : listProps.rows.length > 0 ? ( + stableSort(rows, getComparator()).map( + (row: RenderResource, index: number) => ( + + ), + ) + ) : ( + + + {listProps.activeNamespaces.length > 0 + ? `No ${typeDisplay} in namespace + ${ + listProps.activeNamespaces.length === 1 + ? ` ${listProps.activeNamespaces[0].name}` + : `s: ${listProps.activeNamespaces + .map(ns => ns.name) + .join(', ')}` + }` + : `There is currently no namespace selected, please select one using the Namespace selector.`} + + + )} + +
    +
    +
    +
    + ); +}; diff --git a/workspaces/kiali/plugins/kiali/src/config/AuthenticationConfig.ts b/workspaces/kiali/plugins/kiali/src/config/AuthenticationConfig.ts new file mode 100644 index 0000000000..c837c82d12 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/config/AuthenticationConfig.ts @@ -0,0 +1,25 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { AuthConfig, AuthStrategy } from '../types/Auth'; + +export const authenticationConfig: AuthConfig = { + strategy: AuthStrategy.token, +}; + +// Returns true if authentication strategy is either 'openshift' or 'openid' +export const isAuthStrategyOAuth = () => + authenticationConfig.strategy === AuthStrategy.openshift || + authenticationConfig.strategy === AuthStrategy.openid; diff --git a/workspaces/kiali/plugins/kiali/src/config/Config.ts b/workspaces/kiali/plugins/kiali/src/config/Config.ts new file mode 100644 index 0000000000..cd99b56d82 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/config/Config.ts @@ -0,0 +1,256 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import deepFreeze from 'deep-freeze'; + +import { MILLISECONDS, UNIT_TIME } from '../types/Common'; + +// We assume this is always defined in the .env file +const documentationUrl = process.env.REACT_APP_KIALI_DOC_URL!; + +const conf = { + /** Configuration related with session */ + session: { + /** TimeOut Session remain for warning user default 1 minute */ + timeOutforWarningUser: 1 * UNIT_TIME.MINUTE * MILLISECONDS, + }, + /** Toolbar Configuration */ + toolbar: { + /** Duration default is 1 minute */ + defaultDuration: 1 * UNIT_TIME.MINUTE, + /** By default refresh is 1 minute */ + defaultRefreshInterval: 60 * MILLISECONDS, + /** Time Range default is 10 minutes **/ + defaultTimeRange: { + rangeDuration: 10 * UNIT_TIME.MINUTE, + }, + /** Options in refresh */ + refreshInterval: { + 0: 'Pause', + 10000: 'Every 10s', + 15000: 'Every 15s', + 30000: 'Every 30s', + 60000: 'Every 1m', + 300000: 'Every 5m', + 900000: 'Every 15m', + }, + /** Graphs layouts types */ + graphLayouts: { + 'kiali-grid': 'Grid', + 'kiali-concentric': 'Concentric', + 'kiali-dagre': 'Dagre', + }, + }, + /** About Tracing Configuration*/ + tracing: { + configuration: { + limitResults: { + 20: 20, + 50: 50, + 100: 100, + 200: 200, + 300: 300, + 400: 400, + 500: 500, + }, + statusCode: { + none: 'none', + 200: '200', + 400: '400', + 401: '401', + 403: '403', + 404: '404', + 405: '405', + 408: '408', + 500: '500', + 502: '502', + 503: '503', + 504: '504', + }, + }, + }, + /** About dialog configuration */ + about: { + project: { + url: 'https://github.com/kiali', + icon: 'RepositoryIcon', + linkText: 'Find us on GitHub', + }, + website: { + url: 'https://www.kiali.io', // Without www, we get an SSL error + icon: 'HomeIcon', + linkText: 'Visit our web page', + }, + }, + /** */ + documentation: { + url: documentationUrl, + }, + /** Login configuration */ + login: { + headers: { + 'X-Auth-Type-Kiali-UI': '1', + }, + }, + /** API configuration */ + api: { + urls: { + aggregateGraphElements: ( + namespace: string, + aggregate: string, + aggregateValue: string, + ) => + `api/namespaces/${namespace}/aggregates/${aggregate}/${aggregateValue}/graph`, + aggregateByServiceGraphElements: ( + namespace: string, + aggregate: string, + aggregateValue: string, + service: string, + ) => + `api/namespaces/${namespace}/aggregates/${aggregate}/${aggregateValue}/${service}/graph`, + aggregateMetrics: ( + namespace: string, + aggregate: string, + aggregateValue: string, + ) => + `api/namespaces/${namespace}/aggregates/${aggregate}/${aggregateValue}/metrics`, + authenticate: 'api/authenticate', + authInfo: 'api/auth/info', + apps: (namespace: string) => `api/namespaces/${namespace}/apps`, + app: (namespace: string, app: string) => + `api/namespaces/${namespace}/apps/${app}`, + appGraphElements: (namespace: string, app: string, version?: string) => { + const baseUrl = `api/namespaces/${namespace}/applications/${app}`; + const hasVersion = version && version !== 'unknown'; + const versionSuffixed = hasVersion + ? `${baseUrl}/versions/${version}` + : baseUrl; + return `${versionSuffixed}/graph`; + }, + appHealth: (namespace: string, app: string) => + `api/namespaces/${namespace}/apps/${app}/health`, + appMetrics: (namespace: string, app: string) => + `api/namespaces/${namespace}/apps/${app}/metrics`, + appDashboard: (namespace: string, app: string) => + `api/namespaces/${namespace}/apps/${app}/dashboard`, + appSpans: (namespace: string, app: string) => + `api/namespaces/${namespace}/apps/${app}/spans`, + canaryUpgradeStatus: () => 'api/mesh/canaries/status', + clusters: 'api/clusters', + crippledFeatures: 'api/crippled', + serviceSpans: (namespace: string, service: string) => + `api/namespaces/${namespace}/services/${service}/spans`, + workloadSpans: (namespace: string, workload: string) => + `api/namespaces/${namespace}/workloads/${workload}/spans`, + customDashboard: (namespace: string, template: string) => + `api/namespaces/${namespace}/customdashboard/${template}`, + grafana: 'api/grafana', + istioConfig: (namespace: string) => `api/namespaces/${namespace}/istio`, + allIstioConfigs: () => `api/istio/config`, + istioConfigCreate: (namespace: string, objectType: string) => + `api/namespaces/${namespace}/istio/${objectType}`, + istioConfigDetail: ( + namespace: string, + objectType: string, + object: string, + ) => `api/namespaces/${namespace}/istio/${objectType}/${object}`, + istioConfigDelete: ( + namespace: string, + objectType: string, + object: string, + ) => `api/namespaces/${namespace}/istio/${objectType}/${object}`, + istioConfigUpdate: ( + namespace: string, + objectType: string, + object: string, + ) => `api/namespaces/${namespace}/istio/${objectType}/${object}`, + istioPermissions: 'api/istio/permissions', + jaeger: 'api/jaeger', + appTraces: (namespace: string, app: string) => + `api/namespaces/${namespace}/apps/${app}/traces`, + serviceTraces: (namespace: string, svc: string) => + `api/namespaces/${namespace}/services/${svc}/traces`, + workloadTraces: (namespace: string, wkd: string) => + `api/namespaces/${namespace}/workloads/${wkd}/traces`, + jaegerErrorTraces: (namespace: string, app: string) => + `api/namespaces/${namespace}/apps/${app}/errortraces`, + jaegerTrace: (idTrace: string) => `api/traces/${idTrace}`, + logout: 'api/logout', + metricsStats: 'api/stats/metrics', + namespaces: 'api/namespaces', + namespace: (namespace: string) => `api/namespaces/${namespace}`, + namespacesGraphElements: `api/namespaces/graph`, + namespaceHealth: (namespace: string) => + `api/namespaces/${namespace}/health`, + namespaceMetrics: (namespace: string) => + `api/namespaces/${namespace}/metrics`, + namespaceTls: (namespace: string) => `api/namespaces/${namespace}/tls`, + namespaceValidations: (namespace: string) => + `api/namespaces/${namespace}/validations`, + configValidations: () => `api/istio/validations`, + meshTls: () => 'api/mesh/tls', + outboundTrafficPolicyMode: () => 'api/mesh/outbound_traffic_policy/mode', + istioStatus: () => 'api/istio/status', + istioCertsInfo: () => 'api/istio/certs', + istiodResourceThresholds: () => 'api/mesh/resources/thresholds', + pod: (namespace: string, pod: string) => + `api/namespaces/${namespace}/pods/${pod}`, + podLogs: (namespace: string, pod: string) => + `api/namespaces/${namespace}/pods/${pod}/logs`, + podEnvoyProxy: (namespace: string, pod: string) => + `api/namespaces/${namespace}/pods/${pod}/config_dump`, + podEnvoyProxyLogging: (namespace: string, pod: string) => + `api/namespaces/${namespace}/pods/${pod}/logging`, + podEnvoyProxyResourceEntries: ( + namespace: string, + pod: string, + resource: string, + ) => `api/namespaces/${namespace}/pods/${pod}/config_dump/${resource}`, + serverConfig: `api/config`, + services: (namespace: string) => `api/namespaces/${namespace}/services`, + service: (namespace: string, service: string) => + `api/namespaces/${namespace}/services/${service}`, + serviceGraphElements: (namespace: string, service: string) => + `api/namespaces/${namespace}/services/${service}/graph`, + serviceHealth: (namespace: string, service: string) => + `api/namespaces/${namespace}/services/${service}/health`, + serviceMetrics: (namespace: string, service: string) => + `api/namespaces/${namespace}/services/${service}/metrics`, + serviceDashboard: (namespace: string, service: string) => + `api/namespaces/${namespace}/services/${service}/dashboard`, + status: 'api/status', + workloads: (namespace: string) => `api/namespaces/${namespace}/workloads`, + workload: (namespace: string, workload: string) => + `api/namespaces/${namespace}/workloads/${workload}`, + workloadGraphElements: (namespace: string, workload: string) => + `api/namespaces/${namespace}/workloads/${workload}/graph`, + workloadHealth: (namespace: string, workload: string) => + `api/namespaces/${namespace}/workloads/${workload}/health`, + workloadMetrics: (namespace: string, workload: string) => + `api/namespaces/${namespace}/workloads/${workload}/metrics`, + workloadDashboard: (namespace: string, workload: string) => + `api/namespaces/${namespace}/workloads/${workload}/dashboard`, + }, + }, + /** Graph configurations */ + graph: { + // maxHosts is the maximum number of hosts to show in the graph for + // nodes representing Gateways, VirtualServices and ServiceEntries. + maxHosts: 5, + }, +}; + +export const config = deepFreeze(conf) as typeof conf; diff --git a/workspaces/kiali/plugins/kiali/src/config/HealthConfig.ts b/workspaces/kiali/plugins/kiali/src/config/HealthConfig.ts new file mode 100644 index 0000000000..47a70611ae --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/config/HealthConfig.ts @@ -0,0 +1,71 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { HealthConfig, RegexConfig } from '../types/ServerConfig'; + +const allMatch = new RegExp('.*'); + +/* Replace x|X by the regular expression + Example: 4XX or 5XX to 4\d\d 5\d\d +*/ +const replaceXCode = (value: string): string => { + return value.replace(/x|X/g, '\\d'); +}; + +/* + Convert the string to regex, if isCode is true then call to replaceXCode to change the X|x in code expression to \d +*/ +export const getExpr = ( + value: RegexConfig | undefined, + isCode: boolean = false, +): RegExp => { + if (value) { + if (typeof value === 'string' && value !== '') { + const v = value.replace('\\\\', '\\'); + return new RegExp(isCode ? replaceXCode(v) : v); + } + if (typeof value === 'object' && value.toString() !== '/(?:)/') { + return value; + } + } + return allMatch; +}; + +/* + Parse configuration from backend format to regex expression +*/ +export const parseHealthConfig = (healthConfig: HealthConfig) => { + for (const [key, r] of Object.entries(healthConfig.rate)) { + healthConfig.rate[key].namespace = getExpr( + healthConfig.rate[key].namespace, + ); + healthConfig.rate[key].name = getExpr(healthConfig.rate[key].name); + healthConfig.rate[key].kind = getExpr(healthConfig.rate[key].kind); + for (const t of Object.values(r.tolerance)) { + t.code = getExpr(t.code, true); + t.direction = getExpr(t.direction); + t.protocol = getExpr(t.protocol); + } + } + return healthConfig; +}; + +/* + Export for tests +*/ +export const allMatchTEST = allMatch; +export const getExprTEST = getExpr; +export const replaceXCodeTEST = replaceXCode; diff --git a/workspaces/kiali/plugins/kiali/src/config/Icons.ts b/workspaces/kiali/plugins/kiali/src/config/Icons.ts new file mode 100644 index 0000000000..b2f17b8ffb --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/config/Icons.ts @@ -0,0 +1,169 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import React from 'react'; + +import BlockIcon from '@material-ui/icons/Block'; +import BuildIcon from '@material-ui/icons/Build'; +import CodeIcon from '@material-ui/icons/Code'; +import CompareArrowsIcon from '@material-ui/icons/CompareArrows'; +import FilterNoneIcon from '@material-ui/icons/FilterNone'; +import ImportantDevicesIcon from '@material-ui/icons/ImportantDevices'; +import LanguageIcon from '@material-ui/icons/Language'; +import LockIcon from '@material-ui/icons/Lock'; +import OfflineBoltIcon from '@material-ui/icons/OfflineBolt'; +import PlayCircleOutlineIcon from '@material-ui/icons/PlayCircleOutline'; +import ScheduleIcon from '@material-ui/icons/Schedule'; +import SecurityIcon from '@material-ui/icons/Security'; +import ShareIcon from '@material-ui/icons/Share'; + +import hollowPinIcon from '../assets/img/hollow-pin.png'; +import solidPinIcon from '../assets/img/solid-pin.png'; + +export { solidPinIcon, hollowPinIcon }; + +export type IconType = { + ascii?: string; + className: string; + color?: string; + icon: React.ComponentClass; + name: string; + text: string; + type: string; +}; + +// The unicode values in the ascii fields come from: +// https://www.patternfly.org/v3/styles/icons/index.html +// or from the font awesome site: https://fontawesome.com/icons +const mutIcons = { + istio: { + circuitBreaker: { + ascii: '\uf0e7 ', + className: 'fa fa-bolt', + icon: OfflineBoltIcon, + name: 'bolt', + text: 'Circuit Breaker', + type: 'fa', + } as IconType, + missingLabel: { + ascii: '\uE932', + className: 'fa fa-wrench', + color: 'red', + icon: BuildIcon, + name: 'wrench', + text: 'Missing Label', + type: 'fa', + } as IconType, + faultInjection: { + ascii: '\uf05e ', + className: 'fa fa-ban', + icon: BlockIcon, + name: 'ban', + text: 'Fault Injection', + type: 'fa', + } as IconType, + gateway: { + className: 'pf-icon pf-icon-globe-route', + icon: LanguageIcon, + name: 'globe-route', + text: 'Gateway', + type: 'pf', + } as IconType, + mirroring: { + className: 'pf-icon pf-icon-migration', + icon: CompareArrowsIcon, + name: 'migration', + text: 'Mirroring', + type: 'pf', + } as IconType, + missingAuthPolicy: { + ascii: '\ue946 ', + className: 'pf-icon pf-icon-security', + color: 'red', + icon: SecurityIcon, + name: 'security', + text: 'Missing Auth Policy', + type: 'pf', + } as IconType, + missingSidecar: { + ascii: '\ue915 ', + className: 'pf-icon pf-icon-blueprint', + color: 'red', + icon: FilterNoneIcon, + name: 'blueprint', + text: 'Missing Sidecar', + type: 'pf', + } as IconType, + mtls: { + ascii: '\ue923 ', + className: 'pf-icon pf-icon-locked', + icon: LockIcon, + name: 'locked', + text: 'mTLS', + type: 'pf', + } as IconType, + requestRouting: { + ascii: '\uf126 ', + className: 'fa fa-code-branch', + icon: CodeIcon, + name: 'code-fork', + text: 'Request Routing', + type: 'fa', + } as IconType, + requestTimeout: { + ascii: '\uf017 ', + className: 'fa fa-clock', + icon: ScheduleIcon, + name: 'clock', + text: 'request Timeout', + type: 'fa', + }, + root: { + ascii: '\uf35a ', + className: 'fa fa-arrow-alt-circle-right', + icon: PlayCircleOutlineIcon, + name: 'arrow-alt-circle-right', + text: 'Traffic Source', + type: 'fa', + } as IconType, + trafficShifting: { + ascii: '\uf1e0 ', + className: 'fa fa-share-alt', + icon: ShareIcon, + name: 'share-alt', + text: 'Traffic Shifting', + type: 'fa', + } as IconType, + virtualService: { + ascii: '\uf126 ', + className: 'fa fa-code-branch', + icon: CodeIcon, + name: 'code-fork', + text: 'Virtual Service', + type: 'fa', + } as IconType, + workloadEntry: { + ascii: '\uf126 ', + className: 'pf-icon pf-icon-virtual-machine', + icon: ImportantDevicesIcon, + name: 'virtual-machine', + text: 'Workload Entry', + type: 'pf', + } as IconType, + }, +}; + +export const icons = mutIcons as typeof mutIcons; diff --git a/workspaces/kiali/plugins/kiali/src/config/KialiIcon.tsx b/workspaces/kiali/plugins/kiali/src/config/KialiIcon.tsx new file mode 100644 index 0000000000..b52f53053e --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/config/KialiIcon.tsx @@ -0,0 +1,244 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import * as React from 'react'; + +import { Icon } from '@patternfly/react-core'; +import { + AngleDoubleDownIcon, + AngleDoubleLeftIcon, + AngleDoubleRightIcon, + AngleDoubleUpIcon, + AngleDownIcon, + AngleLeftIcon, + AngleRightIcon, + ApplicationsIcon, + ArrowLeftIcon, + AsteriskIcon, + BanIcon, + BellIcon, + BlueprintIcon, + BoltIcon, + BundleIcon, + CloseIcon, + CodeBranchIcon, + CompressIcon, + CopyIcon, + EllipsisHIcon, + ErrorCircleOIcon, + ExpandIcon, + FileDownloadIcon, + FilterIcon, + GlobeAmericasIcon, + GlobeRouteIcon, + HelpIcon, + HistoryIcon, + HomeIcon, + InfoAltIcon, + InProgressIcon, + LockIcon, + LockOpenIcon, + MigrationIcon, + MinusCircleIcon, + OkIcon, + OnRunningIcon, + OutlinedClockIcon, + PauseCircleIcon, + PauseIcon, + PficonTemplateIcon, + PlayCircleIcon, + PlayIcon, + PlusCircleIcon, + ProcessAutomationIcon, + RepositoryIcon, + SaveIcon, + ServiceIcon, + ShareAltIcon, + SortAmountDownAltIcon, + StopIcon, + TopologyIcon, + UnknownIcon, + UserClockIcon, + WarningTriangleIcon, +} from '@patternfly/react-icons'; +import { SVGIconProps } from '@patternfly/react-icons/dist/js/createIcon'; +import { classes } from 'typestyle'; + +import { PFColors } from '../components/Pf/PfColors'; +import { kialiStyle } from '../styles/StyleUtils'; + +export const defaultIconStyle = kialiStyle({ + // nothing special +}); + +const iconStyle = kialiStyle({ + width: '10px', +}); + +export interface IconProps { + className?: string; + color?: string; + dataTest?: string; + icon?: React.ComponentClass; + size?: 'sm' | 'md' | 'lg' | 'xl'; +} + +const conversorIconProps = ( + props: IconProps, + icon: JSX.Element, + colorIcon?: string, +) => { + const colorI = props.color || colorIcon; + const classNameIcon = colorI + ? kialiStyle({ + color: colorI, + }) + : undefined; + return {icon}; +}; + +// keep alphabetized +export const KialiIcon: { [name: string]: React.FunctionComponent } = + { + AddMore: (props: IconProps) => + conversorIconProps(props, ), + AngleDoubleDown: (props: IconProps) => + conversorIconProps(props, ), + AngleDoubleLeft: (props: IconProps) => + conversorIconProps(props, ), + AngleDoubleRight: (props: IconProps) => + conversorIconProps(props, ), + AngleDoubleUp: (props: IconProps) => + conversorIconProps(props, ), + AngleDown: (props: IconProps) => + conversorIconProps(props, ), + AngleLeft: (props: IconProps) => + conversorIconProps(props, ), + AngleRight: (props: IconProps) => + conversorIconProps(props, ), + Applications: (props: IconProps) => + conversorIconProps(props, ), + Back: (props: IconProps) => conversorIconProps(props, ), + Bell: (props: IconProps) => conversorIconProps(props, ), + CircuitBreaker: (props: IconProps) => + conversorIconProps(props, ), + Clock: (props: IconProps) => + conversorIconProps(props, ), + Close: (props: IconProps) => conversorIconProps(props, ), + Compress: (props: IconProps) => conversorIconProps(props, ), + Copy: (props: IconProps) => conversorIconProps(props, ), + Delete: (props: IconProps) => + conversorIconProps(props, ), + Download: (props: IconProps) => + conversorIconProps(props, ), + Error: (props: IconProps) => + conversorIconProps(props, , PFColors.Danger), + Expand: (props: IconProps) => conversorIconProps(props, ), + FaultInjection: (props: IconProps) => + conversorIconProps(props, ), + Filter: (props: IconProps) => conversorIconProps(props, ), + Gateway: (props: IconProps) => + conversorIconProps(props, ), + Help: (props: IconProps) => conversorIconProps(props, ), + History: (props: IconProps) => conversorIconProps(props, ), + Info: (props: IconProps) => + conversorIconProps(props, , PFColors.Info), + IstioConfig: (props: IconProps) => + conversorIconProps(props, ), + InProgressIcon: (props: IconProps) => + conversorIconProps(props, ), + LocalTime: (props: IconProps) => + conversorIconProps(props, ), + Mirroring: (props: IconProps) => + conversorIconProps(props, ), + MoreLegend: (props: IconProps) => + conversorIconProps(props, ), + MtlsLock: (props: IconProps) => conversorIconProps(props, ), + MtlsUnlock: (props: IconProps) => + conversorIconProps(props, ), + Ok: (props: IconProps) => + conversorIconProps(props, , PFColors.Success), + OnRunningIcon: (props: IconProps) => + conversorIconProps(props, ), + OutOfMesh: (props: IconProps) => + conversorIconProps(props, ), + Pause: (props: IconProps) => conversorIconProps(props, ), + PauseCircle: (props: IconProps) => + conversorIconProps(props, ), + Play: (props: IconProps) => conversorIconProps(props, ), + PlayCircle: (props: IconProps) => + conversorIconProps(props, ), + Rank: (props: IconProps) => + conversorIconProps(props, ), + Regex: (props: IconProps) => conversorIconProps(props, ), + Repository: (props: IconProps) => + conversorIconProps(props, ), + RequestRouting: (props: IconProps) => + conversorIconProps(props, ), + ResetSettings: (props: IconProps) => + conversorIconProps(props, ), + RequestTimeout: (props: IconProps) => + conversorIconProps(props, ), + Save: (props: IconProps) => conversorIconProps(props, ), + Services: (props: IconProps) => conversorIconProps(props, ), + Stop: (props: IconProps) => conversorIconProps(props, ), + Topology: (props: IconProps) => conversorIconProps(props, ), + TrafficShifting: (props: IconProps) => + conversorIconProps(props, ), + Unknown: (props: IconProps) => conversorIconProps(props, ), + UserClock: (props: IconProps) => + conversorIconProps(props, ), + VirtualService: (props: IconProps) => + conversorIconProps(props, ), + Warning: (props: IconProps) => + conversorIconProps(props, , PFColors.Warning), + Website: (props: IconProps) => conversorIconProps(props, ), + Workloads: (props: IconProps) => conversorIconProps(props, ), + }; + +Object.keys(KialiIcon).forEach(key => { + KialiIcon[key].defaultProps = { + className: iconStyle, + }; +}); + +// createTooltipIcon wraps the icon in a span element. Tooltip child elements that are +// SVGs (icons) need to be wrapped in something to avoid the tooltip from disappearing on refresh. +// See: https://github.com/kiali/kiali/issues/3583 for more details. +export function createTooltipIcon(icon: any, dataTest?: string) { + return {icon}; +} + +export const createIcon = ( + props: IconProps, + icon?: React.ComponentClass, + colorIcon?: string, +): React.ReactElement => { + const iconComponent = props.icon ?? icon ?? React.Fragment; + + const iconColor = props.color ?? colorIcon; + + const iconStyles = iconColor ? kialiStyle({ color: iconColor }) : undefined; + + return ( + + {React.createElement(iconComponent)} + + ); +}; diff --git a/workspaces/kiali/plugins/kiali/src/config/KialiLogo.tsx b/workspaces/kiali/plugins/kiali/src/config/KialiLogo.tsx new file mode 100644 index 0000000000..83f9931cf9 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/config/KialiLogo.tsx @@ -0,0 +1,46 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import * as React from 'react'; + +export const KialiLogo = () => { + return ( + + + + + + ); +}; diff --git a/workspaces/kiali/plugins/kiali/src/config/Paths.ts b/workspaces/kiali/plugins/kiali/src/config/Paths.ts new file mode 100644 index 0000000000..74e204b8a3 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/config/Paths.ts @@ -0,0 +1,26 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +export enum Paths { + AGGREGATES = 'aggregates', + APPLICATIONS = 'applications', + ISTIO = 'istio', + JAEGER = 'jaeger', + MESH = 'mesh', + SERVICES = 'services', + SERVICEENTRIES = 'istio/serviceentries', + WORKLOADS = 'workloads', +} diff --git a/workspaces/kiali/plugins/kiali/src/config/ServerConfig.ts b/workspaces/kiali/plugins/kiali/src/config/ServerConfig.ts new file mode 100644 index 0000000000..e7b5279ef8 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/config/ServerConfig.ts @@ -0,0 +1,211 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import _ from 'lodash'; + +import { MeshCluster } from '../types/Mesh'; +import { ServerConfig } from '../types/ServerConfig'; +import { parseHealthConfig } from './HealthConfig'; + +export type Durations = { [key: number]: string }; + +export type ComputedServerConfig = ServerConfig & { + durations: Durations; +}; + +function getHomeCluster(cfg: ServerConfig): MeshCluster | undefined { + return Object.values(cfg.clusters).find(cluster => cluster.isKialiHome); +} + +export const humanDurations = ( + cfg: ComputedServerConfig, + prefix?: string, + suffix?: string, +) => + _.mapValues(cfg.durations, v => + _.reject([prefix, v, suffix], _.isEmpty).join(' '), + ); + +const toDurations = (tupleArray: [number, string][]): Durations => { + const obj = {}; + tupleArray.forEach(tuple => { + obj[tuple[0]] = tuple[1]; + }); + return obj; +}; + +const durationsTuples: [number, string][] = [ + [60, '1m'], + [120, '2m'], + [300, '5m'], + [600, '10m'], + [1800, '30m'], + [3600, '1h'], + [10800, '3h'], + [21600, '6h'], + [43200, '12h'], + [86400, '1d'], + [604800, '7d'], + [2592000, '30d'], +]; + +const computeValidDurations = (cfg: ComputedServerConfig) => { + const tsdbRetention = cfg.prometheus.storageTsdbRetention; + const scrapeInterval = cfg.prometheus.globalScrapeInterval; + let filtered = durationsTuples.filter( + d => + (!tsdbRetention || d[0] <= tsdbRetention!) && + (!scrapeInterval || d[0] >= scrapeInterval * 2), + ); + // Make sure we keep at least one item, even if it's silly + if (filtered.length === 0) { + filtered = [durationsTuples[0]]; + } + cfg.durations = toDurations(filtered); +}; + +// Set some reasonable defaults. Initial values should be valid for fields +// than may not be providedby/set on the server. +export const defaultServerConfig: ComputedServerConfig = { + accessibleNamespaces: [], + ambientEnabled: false, + authStrategy: '', + clusters: {}, + durations: {}, + gatewayAPIEnabled: false, + logLevel: '', + healthConfig: { + rate: [], + }, + deployment: { + viewOnlyMode: false, + }, + installationTag: 'Kiali Console', + istioAnnotations: { + ambientAnnotation: 'ambient.istio.io/redirection', + ambientAnnotationEnabled: 'enabled', + istioInjectionAnnotation: 'sidecar.istio.io/inject', + }, + istioCanaryRevision: { + current: '', + upgrade: '', + }, + istioIdentityDomain: 'svc.cluster.local', + istioNamespace: 'istio-system', + istioLabels: { + ambientWaypointLabel: 'gateway.istio.io/managed', + ambientWaypointLabelValue: 'istio.io-mesh-controller', + appLabelName: 'app', + injectionLabelName: 'istio-injection', + injectionLabelRev: 'istio.io/rev', + versionLabelName: 'version', + }, + kialiFeatureFlags: { + certificatesInformationIndicators: { + enabled: true, + }, + disabledFeatures: [], + istioInjectionAction: true, + istioAnnotationAction: true, + istioUpgradeAction: false, + uiDefaults: { + graph: { + findOptions: [], + hideOptions: [], + impl: 'cy', + settings: { + fontLabel: 13, + minFontBadge: 7, + minFontLabel: 10, + }, + traffic: { + grpc: 'requests', + http: 'requests', + tcp: 'sent', + }, + }, + list: { + includeHealth: true, + includeIstioResources: true, + includeValidations: true, + showIncludeToggles: false, + }, + }, + }, + prometheus: { + globalScrapeInterval: 15, + storageTsdbRetention: 21600, + }, +}; + +// Overwritten with real server config on user login. Also used for tests. +let serverConfig = defaultServerConfig; +computeValidDurations(serverConfig); +export { serverConfig }; + +let homeCluster = getHomeCluster(serverConfig); +const isMultiCluster = isMC(); +export { homeCluster, isMultiCluster }; + +export const toValidDuration = (duration: number): number => { + // Check if valid + if (serverConfig.durations[duration]) { + return duration; + } + // Get closest duration + const validDurations = durationsTuples.filter( + d => serverConfig.durations[d[0]], + ); + for (let i = validDurations.length - 1; i > 0; i--) { + if (duration > durationsTuples[i][0]) { + return validDurations[i][0]; + } + } + return validDurations[0][0]; +}; + +export const setServerConfig = (cfg: ServerConfig) => { + serverConfig = { + ...defaultServerConfig, + ...cfg, + }; + + serverConfig.healthConfig = cfg.healthConfig + ? parseHealthConfig(cfg.healthConfig) + : serverConfig.healthConfig; + computeValidDurations(serverConfig); + + homeCluster = getHomeCluster(serverConfig); +}; + +export const isIstioNamespace = (namespace: string): boolean => { + if (namespace === serverConfig.istioNamespace) { + return true; + } + return false; +}; +export const isHomeCluster = (cluster: string): boolean => { + return !isMultiCluster || cluster === homeCluster?.name; +}; + +// Return true if the cluster is configured for this Kiali instance +export const isConfiguredCluster = (cluster: string): boolean => { + return Object.keys(serverConfig.clusters).includes(cluster); +}; + +function isMC(): boolean { + return Object.keys(serverConfig.clusters).length > 1; +} diff --git a/workspaces/kiali/plugins/kiali/src/config/index.ts b/workspaces/kiali/plugins/kiali/src/config/index.ts new file mode 100644 index 0000000000..f3b43b02c4 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/config/index.ts @@ -0,0 +1,20 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export * from './Config'; +export * from './ServerConfig'; +export * from './Paths'; +export * from './KialiLogo'; +export * from './KialiIcon'; diff --git a/workspaces/kiali/plugins/kiali/src/dynamic/EntityKialiGraphCard.tsx b/workspaces/kiali/plugins/kiali/src/dynamic/EntityKialiGraphCard.tsx new file mode 100644 index 0000000000..7e4d519666 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/dynamic/EntityKialiGraphCard.tsx @@ -0,0 +1,55 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import * as React from 'react'; + +import { CodeSnippet, EmptyState } from '@backstage/core-components'; +import { useEntity } from '@backstage/plugin-catalog-react'; + +import { Box } from '@material-ui/core'; + +import { TrafficGraphCard } from '../pages/TrafficGraph/TrafficGraphCard'; +import { KialiProvider } from '../store/KialiProvider'; + +export const EntityKialiGraphCard = () => { + const { entity } = useEntity(); + + return !entity ? ( + + Kiali detected the annotations +
    + This is the entity loaded. + + + +
    + + } + /> + ) : ( + + + + ); +}; diff --git a/workspaces/kiali/plugins/kiali/src/dynamic/EntityKialiResourcesCard.tsx b/workspaces/kiali/plugins/kiali/src/dynamic/EntityKialiResourcesCard.tsx new file mode 100644 index 0000000000..fcda4f1ff3 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/dynamic/EntityKialiResourcesCard.tsx @@ -0,0 +1,154 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import * as React from 'react'; +import { useRef } from 'react'; +import { useLocation, useNavigate } from 'react-router-dom'; + +import { + CardTab, + CodeSnippet, + EmptyState, + TabbedCard, +} from '@backstage/core-components'; +import { useEntity } from '@backstage/plugin-catalog-react'; + +import { Box } from '@material-ui/core'; + +import { AppListPage } from '../pages/AppList/AppListPage'; +import { ServiceListPage } from '../pages/ServiceList/ServiceListPage'; +import { WorkloadListPage } from '../pages/WorkloadList/WorkloadListPage'; +import { KialiProvider } from '../store/KialiProvider'; +import { DRAWER } from '../types/types'; + +const tabStyle: React.CSSProperties = { + maxHeight: '400px', +}; + +const tabs = ['workload', 'service', 'application']; + +export const EntityKialiResourcesCard = () => { + const { entity } = useEntity(); + const location = useLocation(); + const [element, setElement] = React.useState(); + const prevElement = useRef(element); + const [renderCount, setRenderCount] = React.useState(0); + + const getInitValue = (): string => { + const hash = location.hash.replace(/^#,?\s*/, ''); + const data = hash.split('/'); + + if (data.length > 1 && data[1] !== element) { + setElement(data[1]); + } + if (tabs.includes(data[0])) { + return data[0]; + } + return tabs[0]; + }; + const [value, setValue] = React.useState(getInitValue()); + + const navigate = useNavigate(); + + const handleChange = ( + _: React.ChangeEvent<{}>, + newValue: string | number, + ) => { + setValue(newValue); + navigate(`#${newValue}`); + }; + + React.useEffect(() => { + // This time out is needed to have rendered the context and be able to call the element to open the drawer + const timeout = setTimeout(() => { + setRenderCount(prevCount => prevCount + 1); + }, 1000); + return () => clearTimeout(timeout); + }, []); + + React.useEffect(() => { + const hash = location.hash.replace(/^#,?\s*/, ''); + const data = hash.split('/'); + if (data.length > 0) { + const val = data[0]; + if (val !== value) { + setValue(val); + setTimeout(() => { + setRenderCount(prevCount => prevCount + 1); + }, 1000); + } + } + }, [location.hash, value]); + + React.useEffect(() => { + if (element && element !== prevElement.current && renderCount > 0) { + setTimeout(() => { + const drawer = document.getElementById(`drawer_${element}`); + if (drawer) { + drawer.click(); + } + prevElement.current = element; + }, 1000); + } + }, [element, renderCount]); + + return !entity ? ( + + Kiali detected the annotations +
    + This is the entity loaded. + + + +
    + + } + /> + ) : ( + + + +
    + +
    +
    + +
    + +
    +
    + +
    + +
    +
    +
    +
    + ); +}; diff --git a/workspaces/kiali/plugins/kiali/src/dynamic/KialiContext.tsx b/workspaces/kiali/plugins/kiali/src/dynamic/KialiContext.tsx new file mode 100644 index 0000000000..0562d1ac93 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/dynamic/KialiContext.tsx @@ -0,0 +1,92 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import React, { createContext, useContext, useMemo } from 'react'; +import useAsyncFn from 'react-use/lib/useAsyncFn'; +import useDebounce from 'react-use/lib/useDebounce'; + +import { useApi } from '@backstage/core-plugin-api'; +import { useEntity } from '@backstage/plugin-catalog-react'; + +import { KIALI_NAMESPACE } from '../components/Router'; +import { NamespaceInfo } from '../pages/Overview/NamespaceInfo'; +import { getNamespaces } from '../pages/Overview/OverviewPage'; +import { kialiApiRef } from '../services/Api'; + +type KialiEntityContextType = { + data: NamespaceInfo[] | null; + loading: boolean; + error: Error | null; +}; + +const KialiEntityContext = createContext( + {} as KialiEntityContextType, +); + +export const KialiContextProvider = (props: any) => { + const { entity } = useEntity(); + const kialiClient = useApi(kialiApiRef); + + const [{ value: namespace, loading, error: asyncError }, refresh] = + useAsyncFn( + async () => { + const annotations = entity?.metadata?.annotations || undefined; + let ns: string[]; + if (!annotations) { + ns = []; + } else { + const ant = decodeURIComponent(annotations[KIALI_NAMESPACE]); + if (ant) { + ns = ant.split(','); + } + ns = []; + } + const filteredNs = await kialiClient + .getNamespaces() + .then(namespacesResponse => { + const allNamespaces: NamespaceInfo[] = getNamespaces( + namespacesResponse, + [], + ); + const namespaceInfos = allNamespaces.filter(nsInfo => + ns.includes(nsInfo.name), + ); + return namespaceInfos; + }); + return filteredNs; + }, + [], + { loading: true }, + ); + useDebounce(refresh, 10); + const isError = Boolean(asyncError); + const error = isError ? asyncError || Object.assign(new Error()) : null; + + const value = useMemo( + () => ({ + data: isError || loading ? null : (namespace as NamespaceInfo[]), + loading, + error, + }), + [namespace, isError, loading, error], + ); + + return ( + + {props.children} + + ); +}; +export const useKialiEntityContext = () => useContext(KialiEntityContext); diff --git a/workspaces/kiali/plugins/kiali/src/helpers/LabelFilterHelper.ts b/workspaces/kiali/plugins/kiali/src/helpers/LabelFilterHelper.ts new file mode 100644 index 0000000000..7a0b3b38b9 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/helpers/LabelFilterHelper.ts @@ -0,0 +1,157 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { AppListItem } from '../types/AppList'; +import { ServiceListItem } from '../types/ServiceList'; +import { WorkloadListItem } from '../types/Workload'; + +type itemsType = AppListItem | ServiceListItem | WorkloadListItem; + +export const isGateway = (labels: { [key: string]: string }): boolean => { + return ( + labels && + 'istio' in labels && + (labels.istio === 'ingressgateway' || labels.istio === 'egressgateway') + ); +}; + +export const isWaypoint = (labels: { [key: string]: string }): boolean => { + return ( + labels && + 'gateway.istio.io/managed' in labels && + labels['gateway.istio.io/managed'] === 'istio.io-mesh-controller' + ); +}; + +const getKeyAndValues = ( + filters: string[], +): { keys: string[]; keyValues: string[] } => { + // keys => List of filters with only Label Presence + // keyValues => List of filters with Label and value + const keys = filters.filter(f => !f.includes('=')); + const keyValues = filters.filter(f => f.includes('=')); + return { keys, keyValues }; +}; + +/* + OR Operation for labels +*/ +const orLabelOperation = ( + labels: { [key: string]: string }, + filters: string[], +): boolean => { + const { keys, keyValues } = getKeyAndValues(filters); + + // Get all keys of labels + const labelKeys = Object.keys(labels); + + // Check presence label + let filterOkForLabel = + labelKeys.filter(label => keys.some(key => label.startsWith(key))).length > + 0; + + if (filterOkForLabel) { + return true; + } + // Check key and value + keyValues.map(filter => { + const [key, value] = filter.split('='); + // Check if multiple values + value.split(',').map(v => { + if (key in labels && !filterOkForLabel) { + // Split label values for serviceList Case where we can have multiple values for a label + filterOkForLabel = labels[key] + .trim() + .split(',') + .some(labelValue => labelValue.trim().startsWith(v.trim())); + } + return undefined; + }); + return undefined; + }); + return filterOkForLabel; +}; + +/* + AND Operation for labels +*/ + +const andLabelOperation = ( + labels: { [key: string]: string }, + filters: string[], +): boolean => { + // We expect this label is ok for the filters with And Operation + let filterOkForLabel: boolean = true; + + const { keys, keyValues } = getKeyAndValues(filters); + + // Get all keys of labels + const labelKeys = Object.keys(labels); + + // Start check label presence + keys.map(k => { + if (!labelKeys.includes(k) && filterOkForLabel) { + filterOkForLabel = false; + } + return undefined; + }); + + // If label presence is validated we continue checking with key,value + if (filterOkForLabel) { + keyValues.map(filter => { + const [key, value] = filter.split('='); + if (key in labels && filterOkForLabel) { + // We need to check if some value of filter match + value.split(',').map(val => { + // Split label values for serviceList Case where we can have multiple values for a label + if ( + !labels[key] + .split(',') + .some(labelVal => labelVal.trim().startsWith(val.trim())) + ) { + filterOkForLabel = false; + } + return undefined; + }); + } else { + // The key is not in the labels so not match AND operation + filterOkForLabel = false; + } + return undefined; + }); + } + + return filterOkForLabel; +}; + +const filterLabelByOp = ( + labels: { [key: string]: string }, + filters: string[], + op: string = 'or', +): boolean => { + return op === 'or' + ? orLabelOperation(labels, filters) + : andLabelOperation(labels, filters); +}; + +export const filterByLabel = ( + items: itemsType[], + filter: string[], + op: string = 'or', +): itemsType[] => { + return filter.length === 0 + ? items + : items.filter(item => filterLabelByOp(item.labels, filter, op)); +}; diff --git a/workspaces/kiali/plugins/kiali/src/helpers/namespaces.ts b/workspaces/kiali/plugins/kiali/src/helpers/namespaces.ts new file mode 100644 index 0000000000..ec967a62f4 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/helpers/namespaces.ts @@ -0,0 +1,37 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { Entity } from '@backstage/catalog-model'; + +import { KIALI_NAMESPACE } from '../components/Router'; + +export const nsEqual = (ns: string[], ns2: string[]): boolean => { + return ( + ns.length === ns2.length && + ns.every((value: any, index: number) => value === ns2[index]) + ); +}; + +export const getEntityNs = (entity: Entity): string[] => { + const annotations = entity?.metadata?.annotations || undefined; + if (!annotations) { + return []; + } + const ant = decodeURIComponent(annotations[KIALI_NAMESPACE]); + if (ant) { + return ant.split(','); + } + return []; +}; diff --git a/workspaces/kiali/plugins/kiali/src/index.ts b/workspaces/kiali/plugins/kiali/src/index.ts new file mode 100644 index 0000000000..fd9bf20e5d --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/index.ts @@ -0,0 +1,24 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export { + kialiPlugin, + EntityKialiContent, + KialiPage, + EntityKialiResourcesCard, + EntityKialiGraphCard, +} from './plugin'; + +export { default as KialiIcon } from '@mui/icons-material/Troubleshoot'; diff --git a/workspaces/kiali/plugins/kiali/src/pages/AppDetails/AppDescription.tsx b/workspaces/kiali/plugins/kiali/src/pages/AppDetails/AppDescription.tsx new file mode 100644 index 0000000000..f575c8799d --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/pages/AppDetails/AppDescription.tsx @@ -0,0 +1,101 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import * as React from 'react'; + +import { Card, CardContent, CardHeader, Typography } from '@material-ui/core'; + +import { DetailDescription } from '../../components/DetailDescription/DetailDescription'; +import { HealthIndicator } from '../../components/Health/HealthIndicator'; +import { Labels } from '../../components/Label/Labels'; +import { PFBadge, PFBadges } from '../../components/Pf/PfBadges'; +import { isMultiCluster, serverConfig } from '../../config'; +import { cardsHeight, kialiStyle } from '../../styles/StyleUtils'; +import { App } from '../../types/App'; +import * as H from '../../types/Health'; + +type AppDescriptionProps = { + app?: App; + health?: H.Health; + view?: string; +}; + +const iconStyle = kialiStyle({ + display: 'inline-block', +}); + +const healthIconStyle = kialiStyle({ + marginLeft: '0.5rem', + verticalAlign: '-0.075rem', +}); + +export const AppDescription: React.FC = ( + props: AppDescriptionProps, +) => { + const appLabels: { [key: string]: string } = {}; + + if (props.app) { + appLabels[serverConfig.istioLabels.appLabelName] = props.app.name; + } + + return props.app ? ( + + + +
    + +
    + + {props.app.name} + + + + +
    + + {props.app.cluster && isMultiCluster && ( +
    + {props.app.cluster} +
    + )} + + } + /> + + + + + +
    + ) : ( + <>Loading + ); +}; diff --git a/workspaces/kiali/plugins/kiali/src/pages/AppDetails/AppDetailsPage.tsx b/workspaces/kiali/plugins/kiali/src/pages/AppDetails/AppDetailsPage.tsx new file mode 100644 index 0000000000..fa268d794c --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/pages/AppDetails/AppDetailsPage.tsx @@ -0,0 +1,214 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import * as React from 'react'; +import { useLocation } from 'react-router-dom'; +import { useAsyncFn, useDebounce } from 'react-use'; + +import { Content, EmptyState } from '@backstage/core-components'; +import { useApi } from '@backstage/core-plugin-api'; + +import { CircularProgress, Tab, Tabs } from '@material-ui/core'; +import { AxiosError } from 'axios'; + +import { HistoryManager } from '../../app/History'; +import { + BreadcrumbView, + getPath, +} from '../../components/BreadcrumbView/BreadcrumbView'; +import { DefaultSecondaryMasthead } from '../../components/DefaultSecondaryMasthead/DefaultSecondaryMasthead'; +import * as FilterHelper from '../../components/FilterList/FilterHelper'; +import { IstioMetrics } from '../../components/Metrics/IstioMetrics'; +import { a11yProps, TabPanel, useStyles } from '../../components/Tab/TabPanel'; +import { TimeDurationComponent } from '../../components/Time/TimeDurationComponent'; +import { getErrorString, kialiApiRef } from '../../services/Api'; +import { KialiContext } from '../../store'; +import { KialiAppState } from '../../store/Store'; +import { baseStyle } from '../../styles/StyleUtils'; +import { App, AppQuery } from '../../types/App'; +import { AppHealth } from '../../types/Health'; +import { MetricsObjectTypes } from '../../types/Metrics'; +import { AppInfo } from './AppInfo'; + +export const AppDetailsPage = (props: { entity?: boolean }) => { + const path = getPath(useLocation()); + const namespace = path.namespace; + const app = path.item; + const kialiClient = useApi(kialiApiRef); + const kialiState = React.useContext(KialiContext) as KialiAppState; + const [appItem, setAppItem] = React.useState(); + const [health, setHealth] = React.useState(); + const [error, setError] = React.useState(); + const [duration, setDuration] = React.useState( + FilterHelper.currentDuration(), + ); + const cluster = HistoryManager.getClusterName(); + const [value, setValue] = React.useState(0); + const classes = useStyles(); + + const grids = () => { + const elements = []; + elements.push( + , + ); + return elements; + }; + + const fetchApp = async () => { + const params: AppQuery = { + rateInterval: `${String(duration)}s`, + health: 'true', + }; + if (!namespace || !app) { + setError(`Could not fetch application: Empty namespace or app name`); + kialiState.alertUtils!.add( + `Could not fetch application: Empty namespace or app name`, + ); + return; + } + + kialiClient + .getApp(namespace, app, params, cluster) + .then((appResponse: App) => { + const healthR = AppHealth.fromJson(namespace, app, appResponse.health, { + rateInterval: duration, + hasSidecar: appResponse.workloads.some(w => w.istioSidecar), + hasAmbient: appResponse.workloads.some(w => w.istioAmbient), + }); + setAppItem(appResponse); + setHealth(healthR); + }) + .catch((err: AxiosError) => { + setError(`Could not fetch application: ${getErrorString(err)}`); + kialiState.alertUtils!.add( + `Could not fetch application: ${getErrorString(err)}`, + ); + }); + }; + + const [{ loading }, refresh] = useAsyncFn( + async () => { + // Check if the config is loaded + await fetchApp(); + }, + [], + { loading: true }, + ); + useDebounce(refresh, 10); + + if (loading) { + return ; + } + + const overviewTab = (): React.ReactElement => { + return ( + <> + {appItem && ( + + )} + + ); + }; + + const inboundTab = (): React.ReactElement => { + return ( + <> + {namespace && app && ( + + )} + + ); + }; + + const outboundTab = (): React.ReactElement => { + return ( + <> + {namespace && app && ( + + )} + + ); + }; + + const handleChange = ( + _event: any, + newValue: React.SetStateAction, + ) => { + setValue(newValue); + }; + + return ( +
    + + + fetchApp()} + /> + {error !== undefined && ( + No App found
    } + /> + )} +
    + + + + + + + {overviewTab()} + + + {inboundTab()} + + + {outboundTab()} + +
    + +
    + ); +}; diff --git a/workspaces/kiali/plugins/kiali/src/pages/AppDetails/AppInfo.tsx b/workspaces/kiali/plugins/kiali/src/pages/AppDetails/AppInfo.tsx new file mode 100644 index 0000000000..331fc93b5d --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/pages/AppDetails/AppInfo.tsx @@ -0,0 +1,46 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import React from 'react'; + +import { Grid } from '@material-ui/core'; + +import { App } from '../../types/App'; +import { DurationInSeconds } from '../../types/Common'; +import { AppHealth } from '../../types/Health'; +import { DRAWER, ENTITY } from '../../types/types'; +import { AppDescription } from './AppDescription'; + +type AppInfoProps = { + app?: App; + duration: DurationInSeconds; + health?: AppHealth; + view?: string; +}; + +export const AppInfo = (appProps: AppInfoProps) => { + const size = appProps.view === ENTITY || appProps.view === DRAWER ? 12 : 4; + return ( + + + + + + ); +}; diff --git a/workspaces/kiali/plugins/kiali/src/pages/AppList/AppListClass.tsx b/workspaces/kiali/plugins/kiali/src/pages/AppList/AppListClass.tsx new file mode 100644 index 0000000000..0b9e72ae46 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/pages/AppList/AppListClass.tsx @@ -0,0 +1,41 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { AppList, AppListItem } from '../../types/AppList'; +import { AppHealth } from '../../types/Health'; +import { sortIstioReferences } from './FiltersAndSorts'; + +export const getAppItems = ( + data: AppList, + rateInterval: number, +): AppListItem[] => { + if (data.applications) { + return data.applications.map(app => ({ + namespace: data.namespace.name, + name: app.name, + istioSidecar: app.istioSidecar, + istioAmbient: app.istioAmbient, + health: AppHealth.fromJson(data.namespace.name, app.name, app.health, { + rateInterval: rateInterval, + hasSidecar: app.istioSidecar, + hasAmbient: app.istioAmbient, + }), + labels: app.labels, + istioReferences: sortIstioReferences(app.istioReferences, true), + cluster: app.cluster, + })); + } + return []; +}; diff --git a/workspaces/kiali/plugins/kiali/src/pages/AppList/AppListPage.tsx b/workspaces/kiali/plugins/kiali/src/pages/AppList/AppListPage.tsx new file mode 100644 index 0000000000..33c2c2b5da --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/pages/AppList/AppListPage.tsx @@ -0,0 +1,182 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import * as React from 'react'; +import { useRef } from 'react'; +import { useAsyncFn, useDebounce } from 'react-use'; + +import { Entity } from '@backstage/catalog-model'; +import { Content } from '@backstage/core-components'; +import { useApi } from '@backstage/core-plugin-api'; + +import { DefaultSecondaryMasthead } from '../../components/DefaultSecondaryMasthead/DefaultSecondaryMasthead'; +import * as FilterHelper from '../../components/FilterList/FilterHelper'; +import { TimeDurationComponent } from '../../components/Time/TimeDurationComponent'; +import { VirtualList } from '../../components/VirtualList/VirtualList'; +import { isMultiCluster } from '../../config'; +import { getEntityNs, nsEqual } from '../../helpers/namespaces'; +import { getErrorString, kialiApiRef } from '../../services/Api'; +import { KialiAppState, KialiContext } from '../../store'; +import { baseStyle } from '../../styles/StyleUtils'; +import { AppListItem } from '../../types/AppList'; +import { DRAWER, ENTITY } from '../../types/types'; +import { NamespaceInfo } from '../Overview/NamespaceInfo'; +import { getNamespaces } from '../Overview/OverviewPage'; +import * as AppListClass from './AppListClass'; + +export const AppListPage = (props: { + view?: string; + entity?: Entity; +}): React.JSX.Element => { + const kialiClient = useApi(kialiApiRef); + const [namespaces, setNamespaces] = React.useState([]); + const [allApps, setApps] = React.useState([]); + const [duration, setDuration] = React.useState( + FilterHelper.currentDuration(), + ); + const kialiState = React.useContext(KialiContext) as KialiAppState; + const activeNs = props.entity + ? getEntityNs(props.entity) + : kialiState.namespaces.activeNamespaces.map(ns => ns.name); + const prevActiveNs = useRef(activeNs); + const prevDuration = useRef(duration); + const [loadingD, setLoading] = React.useState(true); + + const hiddenColumns = isMultiCluster ? [] : ['cluster']; + if (props.view === ENTITY) { + hiddenColumns.push('details'); + } + + const grids = () => { + const elements = []; + elements.push( + , + ); + return elements; + }; + + const fetchApps = async ( + nss: NamespaceInfo[], + timeDuration: number, + ): Promise => { + const health = 'true'; + const istioResources = 'true'; + return Promise.all( + nss.map(async nsInfo => { + return await kialiClient.getApps(nsInfo.name, { + rateInterval: `${String(timeDuration)}s`, + health: health, + istioResources: istioResources, + }); + }), + ) + .then(results => { + let appListItems: AppListItem[] = []; + + results.forEach(response => { + appListItems = appListItems.concat( + AppListClass.getAppItems(response, timeDuration), + ); + }); + setApps(appListItems); + }) + .catch(err => + kialiState.alertUtils?.add( + `Could not fetch services: ${getErrorString(err)}`, + ), + ); + }; + + const getNS = async () => { + kialiClient.getNamespaces().then(namespacesResponse => { + const allNamespaces: NamespaceInfo[] = getNamespaces( + namespacesResponse, + namespaces, + ); + const namespaceInfos = allNamespaces.filter(ns => + activeNs.includes(ns.name), + ); + setNamespaces(namespaceInfos); + fetchApps(namespaceInfos, duration); + }); + setTimeout(() => { + setLoading(false); + }, 400); + }; + + const [_, refresh] = useAsyncFn( + async () => { + await getNS(); + }, + [], + { loading: true }, + ); + useDebounce(refresh, 5); + + React.useEffect(() => { + if ( + duration !== prevDuration.current || + !nsEqual(activeNs, prevActiveNs.current) + ) { + setLoading(true); + getNS(); + prevDuration.current = duration; + prevActiveNs.current = activeNs; + } + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [activeNs, duration]); + + const appContent = () => { + return ( + <> + {props.view !== ENTITY && ( + getNS()} + /> + )} + + + + ); + }; + + return ( +
    + {props.view !== ENTITY && props.view !== DRAWER && ( + {appContent()} + )} + {(props.view === ENTITY || props.view === DRAWER) && ( +
    + {appContent()} +
    + )} +
    + ); +}; diff --git a/workspaces/kiali/plugins/kiali/src/pages/AppList/FiltersAndSorts.ts b/workspaces/kiali/plugins/kiali/src/pages/AppList/FiltersAndSorts.ts new file mode 100644 index 0000000000..077eb73e92 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/pages/AppList/FiltersAndSorts.ts @@ -0,0 +1,73 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { ObjectReference } from '../../types/IstioObjects'; + +export const compareObjectReference = ( + a: ObjectReference, + b: ObjectReference, +): number => { + const cmpObjectType = a.objectType.localeCompare(b.objectType); + if (cmpObjectType !== 0) { + return cmpObjectType; + } + const cmpName = a.name.localeCompare(b.name); + if (cmpName !== 0) { + return cmpName; + } + + return a.namespace.localeCompare(b.namespace); +}; + +// It assumes that is sorted +export const compareObjectReferences = ( + a: ObjectReference[], + b: ObjectReference[], +): number => { + if (a.length === 0 && b.length === 0) { + return 0; + } + if (a.length === 0 && b.length > 0) { + return -1; + } + if (a.length > 0 && b.length === 0) { + return 1; + } + if (a.length !== b.length) { + return a.length - b.length; + } + for (let i = 0; i < a.length; i++) { + const cmp = compareObjectReference(a[i], b[i]); + if (cmp !== 0) { + return cmp; + } + } + return 0; +}; + +// Remove duplicates and sort references +export const sortIstioReferences = ( + unsorted: ObjectReference[], + isAscending: boolean, +): ObjectReference[] => { + const unique = unsorted.filter( + (item, index) => unsorted.indexOf(item) === index, + ); + return unique.sort((a, b) => { + return isAscending + ? compareObjectReference(a, b) + : compareObjectReference(b, a); + }); +}; diff --git a/workspaces/kiali/plugins/kiali/src/pages/IstioConfigDetails/IstioConfigDetailsOverview.tsx b/workspaces/kiali/plugins/kiali/src/pages/IstioConfigDetails/IstioConfigDetailsOverview.tsx new file mode 100644 index 0000000000..791e512270 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/pages/IstioConfigDetails/IstioConfigDetailsOverview.tsx @@ -0,0 +1,206 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import React from 'react'; + +import { + Card, + CardContent, + List, + ListItem, + Tooltip, + Typography, +} from '@material-ui/core'; + +import { HistoryManager } from '../../app/History'; +import { Labels } from '../../components/Label/Labels'; +import { PFBadge } from '../../components/Pf/PfBadges'; +import { LocalTime } from '../../components/Time/LocalTime'; +import { ValidationObjectSummary } from '../../components/Validations/ValidationObjectSummary'; +import { IstioTypes } from '../../components/VirtualList/Config'; +import { KialiIcon } from '../../config/KialiIcon'; +import { kialiStyle } from '../../styles/StyleUtils'; +import { IstioConfigDetails } from '../../types/IstioConfigDetails'; +import { + ObjectReference, + ServiceReference, + ValidationMessage, + ValidationTypes, + WorkloadReference, +} from '../../types/IstioObjects'; +import { + getIstioObject, + getReconciliationCondition, +} from '../../utils/IstioConfigUtils'; +import { IstioConfigReferences } from './IstioConfigReferences'; +import { IstioConfigValidationReferences } from './IstioConfigValidationReferences'; +import { IstioStatusMessageList } from './IstioStatusMessageList'; + +export const IstioConfigDetailsOverview = ( + istioConfigDetails: IstioConfigDetails, +): React.JSX.Element => { + const istioObject = getIstioObject(istioConfigDetails); + const istioValidations = istioConfigDetails.validation; + const statusMessages: ValidationMessage[] | undefined = + istioObject?.status?.validationMessages; + const cluster = HistoryManager.getClusterName(); + + const objectReferences = (): ObjectReference[] => { + const details: IstioConfigDetails = + istioConfigDetails ?? ({} as IstioConfigDetails); + return details.references?.objectReferences ?? ([] as ObjectReference[]); + }; + + const serviceReferences = (): ServiceReference[] => { + const details: IstioConfigDetails = + istioConfigDetails ?? ({} as IstioConfigDetails); + return details.references?.serviceReferences ?? ([] as ServiceReference[]); + }; + + const workloadReferences = (): WorkloadReference[] => { + const details: IstioConfigDetails = + istioConfigDetails ?? ({} as IstioConfigDetails); + return ( + details.references?.workloadReferences ?? ([] as WorkloadReference[]) + ); + }; + + const infoStyle = kialiStyle({ + marginLeft: '0.5rem', + verticalAlign: '-0.06em !important', + }); + + const healthIconStyle = kialiStyle({ + marginLeft: '0.5rem', + verticalAlign: '-0.06em !important', + }); + + const resourceListStyle = kialiStyle({ + $nest: { + '& > ul > li > span': { + float: 'left', + width: '125px', + fontWeight: 700, + }, + }, + }); + const resourceProperties = ( +
    +
      + {istioObject && istioObject.metadata.creationTimestamp && ( +
    • + Created + +
      + +
      +
    • + )} + + {istioObject && istioObject.metadata.resourceVersion && ( +
    • + Version + {istioObject.metadata.resourceVersion} +
    • + )} +
    +
    + ); + + const configurationHasWarnings = (): boolean | undefined => { + return istioValidations?.checks.some(check => { + return check.severity === ValidationTypes.Warning; + }); + }; + + return ( + + + + Overview + + + {istioObject && istioObject.kind && ( + + )} + + {istioObject?.metadata.name} + + + + + + + + {istioValidations && + (!statusMessages || statusMessages.length === 0) && + (!istioValidations.checks || + istioValidations.checks.length === 0) && ( + + + + )} + + {istioObject?.metadata.labels && ( + + + + + + )} + + {((statusMessages && statusMessages.length > 0) || + (istioValidations && + istioValidations.checks && + istioValidations.checks.length > 0)) && ( + + )} + + {istioValidations?.references && ( + + )} + + {istioValidations?.valid && !configurationHasWarnings() && ( + + )} + + + ); +}; diff --git a/workspaces/kiali/plugins/kiali/src/pages/IstioConfigDetails/IstioConfigDetailsPage.tsx b/workspaces/kiali/plugins/kiali/src/pages/IstioConfigDetails/IstioConfigDetailsPage.tsx new file mode 100644 index 0000000000..25e3a54203 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/pages/IstioConfigDetails/IstioConfigDetailsPage.tsx @@ -0,0 +1,146 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import * as React from 'react'; +import AceEditor from 'react-ace'; +import { useLocation } from 'react-router-dom'; + +import { Content } from '@backstage/core-components'; +import { useApi } from '@backstage/core-plugin-api'; + +import { Grid } from '@material-ui/core'; +import jsYaml from 'js-yaml'; + +import { + BreadcrumbView, + getPath, +} from '../../components/BreadcrumbView/BreadcrumbView'; +import { DefaultSecondaryMasthead } from '../../components/DefaultSecondaryMasthead/DefaultSecondaryMasthead'; +import { kialiApiRef } from '../../services/Api'; +import { KialiAppState, KialiContext } from '../../store'; +import { baseStyle } from '../../styles/StyleUtils'; +import { IstioConfigDetails } from '../../types/IstioConfigDetails'; +import { getIstioObject } from '../../utils/IstioConfigUtils'; +// Enables ACE editor YAML themes +import 'ace-builds/src-noconflict/ace'; +import 'ace-builds/src-noconflict/mode-yaml'; +import 'ace-builds/src-noconflict/theme-eclipse'; +import 'ace-builds/src-noconflict/theme-twilight'; + +import { useCallback, useEffect } from 'react'; + +import { useTheme } from '@material-ui/core/styles'; + +import { + AceValidations, + parseKialiValidations, +} from '../../types/AceValidations'; +import { IstioConfigDetailsOverview } from './IstioConfigDetailsOverview'; + +export const IstioConfigDetailsPage = (props: { + entity?: boolean; +}): React.JSX.Element => { + const path = getPath(useLocation()); + const namespace = path.namespace; + const object = path.item; + const objectType = path.istioType; + + const kialiClient = useApi(kialiApiRef); + const kialiState = React.useContext(KialiContext) as KialiAppState; + const [istioConfig, setIstioConfig] = React.useState(); + + const fetchIstioConfig = useCallback(() => { + if (!namespace || !objectType || !object) { + kialiState.alertUtils!.add( + `Could not fetch Istio Config: Empty namespace, object type or object name`, + ); + return; + } + + kialiClient + .getIstioConfigDetail(namespace, objectType, object, true) + .then((istioConfigResponse: IstioConfigDetails) => { + setIstioConfig(istioConfigResponse); + }); + }, [kialiClient, kialiState.alertUtils, namespace, objectType, object]); + + useEffect(() => { + fetchIstioConfig(); + }, [fetchIstioConfig, namespace, objectType, object]); + + const fetchYaml = () => { + const safeDumpOptions = { + styles: { + '!!null': 'canonical', // dump null as ~ + }, + }; + + const istioObject = getIstioObject(istioConfig); + return istioObject ? jsYaml.dump(istioObject, safeDumpOptions) : ''; + }; + + let editorValidations: AceValidations = { + markers: [], + annotations: [], + }; + const yamlSource = fetchYaml(); + const editorStyle = { border: '1px solid #dcdcdc' }; + + const useDefaultTheme = (): string => { + const muiTheme = useTheme(); + if (muiTheme.palette.type === 'light') { + return 'eclipse'; + } + return 'twilight'; + }; + + editorValidations = parseKialiValidations( + yamlSource, + istioConfig?.validation, + ); + + return ( +
    + + + fetchIstioConfig()} + /> + + + + + + {istioConfig && } + + + +
    + ); +}; diff --git a/workspaces/kiali/plugins/kiali/src/pages/IstioConfigDetails/IstioConfigReferences.tsx b/workspaces/kiali/plugins/kiali/src/pages/IstioConfigDetails/IstioConfigReferences.tsx new file mode 100644 index 0000000000..17101eb4e4 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/pages/IstioConfigDetails/IstioConfigReferences.tsx @@ -0,0 +1,118 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import React from 'react'; + +import { List, ListItem, Typography } from '@material-ui/core'; + +import { ReferenceIstioObjectLink } from '../../components/Link/IstioObjectLink'; +import { ServiceLink } from '../../components/Link/ServiceLink'; +import { WorkloadLink } from '../../components/Link/WorkloadLink'; +import { + ObjectReference, + ServiceReference, + WorkloadReference, +} from '../../types/IstioObjects'; + +interface IstioConfigReferencesProps { + objectReferences: ObjectReference[]; + serviceReferences: ServiceReference[]; + workloadReferences: WorkloadReference[]; + isValid: boolean | undefined; + cluster?: string; +} + +export const IstioConfigReferences = (props: IstioConfigReferencesProps) => { + const objectReferencesExists = (): boolean => { + if (props.objectReferences && props.objectReferences.length > 0) { + return true; + } + return false; + }; + + const serviceReferencesExists = (): boolean => { + if (props.serviceReferences && props.serviceReferences.length > 0) { + return true; + } + return false; + }; + + const workloadReferencesExists = (): boolean => { + if (props.workloadReferences && props.workloadReferences.length > 0) { + return true; + } + return false; + }; + + return ( + <> + + References + + + {!objectReferencesExists() && + !serviceReferencesExists() && + !workloadReferencesExists() && ( + <>No references found for this object. + )} + + {serviceReferencesExists() && + props.serviceReferences.map((reference, sRef) => { + return ( + + + + + + ); + })} + + {workloadReferencesExists() && + props.workloadReferences.map((reference, wRef) => { + return ( + + + + + + ); + })} + + {objectReferencesExists() && + props.objectReferences.map((reference, oRef) => { + return ( + + + + + + ); + })} + + ); +}; diff --git a/workspaces/kiali/plugins/kiali/src/pages/IstioConfigDetails/IstioConfigValidationReferences.tsx b/workspaces/kiali/plugins/kiali/src/pages/IstioConfigDetails/IstioConfigValidationReferences.tsx new file mode 100644 index 0000000000..1064daf9bb --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/pages/IstioConfigDetails/IstioConfigValidationReferences.tsx @@ -0,0 +1,53 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import React from 'react'; + +import { List, ListItem, Typography } from '@material-ui/core'; + +import { ReferenceIstioObjectLink } from '../../components/Link/IstioObjectLink'; +import { ObjectReference } from '../../types/IstioObjects'; + +interface IstioConfigReferencesProps { + objectReferences: ObjectReference[]; + cluster?: string; +} + +export const IstioConfigValidationReferences = ( + props: IstioConfigReferencesProps, +) => { + return ( + <> + + Validation References + + + {props.objectReferences && + props.objectReferences.map((reference, i) => { + return ( + + + + ); + })} + + + ); +}; diff --git a/workspaces/kiali/plugins/kiali/src/pages/IstioConfigDetails/IstioStatusMessageList.tsx b/workspaces/kiali/plugins/kiali/src/pages/IstioConfigDetails/IstioStatusMessageList.tsx new file mode 100644 index 0000000000..cf9d766921 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/pages/IstioConfigDetails/IstioStatusMessageList.tsx @@ -0,0 +1,90 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import React from 'react'; + +import { List, ListItem, Tooltip, Typography } from '@material-ui/core'; + +import { Validation } from '../../components/Validations/Validation'; +import { KialiIcon } from '../../config/KialiIcon'; +import { kialiStyle } from '../../styles/StyleUtils'; +import { + IstioLevelToSeverity, + ObjectCheck, + ValidationMessage, + ValidationTypes, +} from '../../types/IstioObjects'; + +interface Props { + messages?: ValidationMessage[]; + checks?: ObjectCheck[]; +} + +const infoStyle = kialiStyle({ + marginLeft: '0.5rem', + verticalAlign: '-0.06em !important', +}); + +export const IstioStatusMessageList = (props: Props) => { + return ( + <> + + Configuration Analysis + + + {(props.messages || []).map((msg: ValidationMessage, i: number) => { + const severity: ValidationTypes = + IstioLevelToSeverity[ + (msg.level as keyof typeof IstioLevelToSeverity) || 'UNKNOWN' + ]; + return ( + + + + {msg.type.code} + + {msg.description ? `: ${msg.description}` : undefined} + + ); + })} + + + {(props.checks || []).map((check: ObjectCheck, i: number) => { + const severity: ValidationTypes = + IstioLevelToSeverity[ + (check.severity.toLocaleUpperCase( + 'en-US', + ) as keyof typeof IstioLevelToSeverity) || 'UNKNOWN' + ]; + return ( + + + {check.code} + + + + + + + ); + })} + + + ); +}; diff --git a/workspaces/kiali/plugins/kiali/src/pages/IstioConfigList/FiltersAndSorts.ts b/workspaces/kiali/plugins/kiali/src/pages/IstioConfigList/FiltersAndSorts.ts new file mode 100644 index 0000000000..c0de91fb67 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/pages/IstioConfigList/FiltersAndSorts.ts @@ -0,0 +1,242 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { serverConfig } from '../../config'; +import { + AllFilterTypes, + FILTER_ACTION_APPEND, + FilterType, + ToggleType, +} from '../../types/Filters'; +import { IstioConfigItem } from '../../types/IstioConfigList'; +import { SortField } from '../../types/SortFilters'; +import { compareValidations } from '../ServiceList/FiltersAndSorts'; + +export const sortFields: SortField[] = [ + { + id: 'namespace', + title: 'Namespace', + isNumeric: false, + param: 'ns', + compare: (a: IstioConfigItem, b: IstioConfigItem): number => { + return ( + a.namespace.localeCompare(b.namespace) || a.name.localeCompare(b.name) + ); + }, + }, + { + id: 'type', + title: 'Type', + isNumeric: false, + param: 'it', + compare: (a: IstioConfigItem, b: IstioConfigItem): number => { + return a.type.localeCompare(b.type) || a.name.localeCompare(b.name); + }, + }, + { + id: 'istioname', + title: 'Istio Name', + isNumeric: false, + param: 'in', + compare: (a: IstioConfigItem, b: IstioConfigItem): number => { + // On same name order is not well defined, we need some fallback methods + // This happens specially on adapters/templates where Istio 1.0.x calls them "handler" + // So, we have a lot of objects with same namespace+name + return ( + a.name.localeCompare(b.name) || + a.namespace.localeCompare(b.namespace) || + a.type.localeCompare(b.type) + ); + }, + }, + { + id: 'configvalidation', + title: 'Config', + isNumeric: false, + param: 'cv', + compare: (a: IstioConfigItem, b: IstioConfigItem) => + compareValidations(a, b), + }, + { + id: 'cluster', + title: 'Cluster', + isNumeric: false, + param: 'cl', + compare: (a: IstioConfigItem, b: IstioConfigItem): number => { + if (a.cluster && b.cluster) { + let sortValue = a.cluster.localeCompare(b.cluster); + if (sortValue === 0) { + sortValue = a.name.localeCompare(b.name); + } + return sortValue; + } + return 0; + }, + }, +]; + +export const istioNameFilter: FilterType = { + category: 'Istio Name', + placeholder: 'Filter by Istio Name', + filterType: AllFilterTypes.text, + action: FILTER_ACTION_APPEND, + filterValues: [], +}; + +// Used when Istio Config is implied +export const istioTypeFilter: FilterType = { + category: 'Type', + placeholder: 'Filter by Type', + filterType: AllFilterTypes.typeAhead, + action: FILTER_ACTION_APPEND, + filterValues: [ + { + id: 'AuthorizationPolicy', + title: 'AuthorizationPolicy', + }, + { + id: 'DestinationRule', + title: 'DestinationRule', + }, + { + id: 'EnvoyFilter', + title: 'EnvoyFilter', + }, + { + id: 'Gateway', + title: 'Gateway', + }, + { + id: 'K8sGateway', + title: 'K8sGateway', + }, + { + id: 'K8sGRPCRoute', + title: 'K8sGRPCRoute', + }, + { + id: 'K8sHTTPRoute', + title: 'K8sHTTPRoute', + }, + { + id: 'K8sReferenceGrant', + title: 'K8sReferenceGrant', + }, + { + id: 'K8sTCPRoute', + title: 'K8sTCPRoute', + }, + { + id: 'K8sTLSRoute', + title: 'K8sTLSRoute', + }, + { + id: 'PeerAuthentication', + title: 'PeerAuthentication', + }, + { + id: 'RequestAuthentication', + title: 'RequestAuthentication', + }, + { + id: 'ServiceEntry', + title: 'ServiceEntry', + }, + { + id: 'Sidecar', + title: 'Sidecar', + }, + { + id: 'Telemetry', + title: 'Telemetry', + }, + { + id: 'VirtualService', + title: 'VirtualService', + }, + { + id: 'WasmPlugin', + title: 'WasmPlugin', + }, + { + id: 'WorkloadEntry', + title: 'WorkloadEntry', + }, + { + id: 'WorkloadGroup', + title: 'WorkloadGroup', + }, + ], +}; + +// Used when Istio Config should be explicit +export const istioConfigTypeFilter = { + ...istioTypeFilter, + category: 'Istio Config Type', + placeholder: 'Filter by Istio Config Type', +}; + +export const configValidationFilter: FilterType = { + category: 'Config', + placeholder: 'Filter by Config Validation', + filterType: AllFilterTypes.select, + action: FILTER_ACTION_APPEND, + filterValues: [ + { + id: 'valid', + title: 'Valid', + }, + { + id: 'warning', + title: 'Warning', + }, + { + id: 'notvalid', + title: 'Not Valid', + }, + { + id: 'notvalidated', + title: 'Not Validated', + }, + ], +}; + +export const availableFilters: FilterType[] = [ + istioTypeFilter, + istioNameFilter, + configValidationFilter, +]; + +const configurationToggle: ToggleType = { + label: 'Configuration Validation', + name: 'configuration', + isChecked: true, +}; + +export const getAvailableToggles = (): ToggleType[] => { + configurationToggle.isChecked = + serverConfig.kialiFeatureFlags.uiDefaults.list.includeValidations; + return [configurationToggle]; +}; + +export const sortIstioItems = ( + unsorted: IstioConfigItem[], + sortField: SortField, + isAscending: boolean, +): IstioConfigItem[] => { + return unsorted.sort( + isAscending ? sortField.compare : (a, b) => sortField.compare(b, a), + ); +}; diff --git a/workspaces/kiali/plugins/kiali/src/pages/IstioConfigList/IstioConfigListPage.tsx b/workspaces/kiali/plugins/kiali/src/pages/IstioConfigList/IstioConfigListPage.tsx new file mode 100644 index 0000000000..89e2f05130 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/pages/IstioConfigList/IstioConfigListPage.tsx @@ -0,0 +1,128 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import * as React from 'react'; +import { useAsyncFn, useDebounce } from 'react-use'; + +import { Content } from '@backstage/core-components'; +import { useApi } from '@backstage/core-plugin-api'; + +import { CircularProgress } from '@material-ui/core'; + +import { DefaultSecondaryMasthead } from '../../components/DefaultSecondaryMasthead/DefaultSecondaryMasthead'; +import { VirtualList } from '../../components/VirtualList/VirtualList'; +import { isMultiCluster } from '../../config'; +import { nsEqual } from '../../helpers/namespaces'; +import { kialiApiRef } from '../../services/Api'; +import { KialiAppState, KialiContext } from '../../store'; +import { baseStyle } from '../../styles/StyleUtils'; +import { IstioConfigItem, toIstioItems } from '../../types/IstioConfigList'; +import { NamespaceInfo } from '../../types/NamespaceInfo'; +import { ENTITY } from '../../types/types'; +import { getNamespaces } from '../Overview/OverviewPage'; + +export const IstioConfigListPage = (props: { + view?: string; +}): React.JSX.Element => { + const kialiClient = useApi(kialiApiRef); + const kialiState = React.useContext(KialiContext) as KialiAppState; + const [namespaces, setNamespaces] = React.useState([]); + const [allIstioConfigs, setIstioConfigs] = React.useState( + [], + ); + const activeNs = kialiState.namespaces.activeNamespaces.map(ns => ns.name); + const prevActiveNs = React.useRef(activeNs); + const [loadingD, setLoading] = React.useState(true); + + const fetchIstioConfigs = async (nss: NamespaceInfo[]): Promise => { + return kialiClient + .getAllIstioConfigs( + nss.map(ns => { + return ns.name; + }), + [], + true, + '', + '', + ) + .then(results => { + let istioItems: IstioConfigItem[] = []; + + nss.forEach(ns => { + istioItems = istioItems.concat(toIstioItems(results[ns.name])); + }); + + setIstioConfigs(istioItems); + }); + }; + + const load = async () => { + kialiClient.getNamespaces().then(namespacesResponse => { + const allNamespaces: NamespaceInfo[] = getNamespaces( + namespacesResponse, + namespaces, + ); + const nsl = allNamespaces.filter(ns => activeNs.includes(ns.name)); + setNamespaces(nsl); + fetchIstioConfigs(nsl); + }); + setTimeout(() => { + setLoading(false); + }, 400); + }; + + const [{ loading }, refresh] = useAsyncFn( + async () => { + // Check if the config is loaded + await load(); + }, + [], + { loading: true }, + ); + useDebounce(refresh, 10); + + React.useEffect(() => { + if (!nsEqual(activeNs, prevActiveNs.current)) { + setLoading(true); + load(); + prevActiveNs.current = activeNs; + } + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [activeNs]); + + if (loading) { + return ; + } + + const hiddenColumns = isMultiCluster ? [] : ['cluster']; + + return ( +
    + + {props.view !== ENTITY && ( + load()} /> + )} + + +
    + ); +}; diff --git a/workspaces/kiali/plugins/kiali/src/pages/Kiali/Header/HelpKiali.tsx b/workspaces/kiali/plugins/kiali/src/pages/Kiali/Header/HelpKiali.tsx new file mode 100644 index 0000000000..0540baea81 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/pages/Kiali/Header/HelpKiali.tsx @@ -0,0 +1,50 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import React from 'react'; + +import { Button } from '@material-ui/core'; +import { QuestionCircleIcon } from '@patternfly/react-icons'; + +import { AboutUIModal } from '../../../components/About/AboutUIModal'; +import { KialiAppState, KialiContext } from '../../../store'; + +export const HelpKiali = (props: { color?: string }) => { + const kialiState = React.useContext(KialiContext) as KialiAppState; + const [showAbout, setShowAbout] = React.useState(false); + + const openAbout = () => { + setShowAbout(true); + }; + + return ( + <> + + + + ); +}; diff --git a/workspaces/kiali/plugins/kiali/src/pages/Kiali/Header/KialiHeader.tsx b/workspaces/kiali/plugins/kiali/src/pages/Kiali/Header/KialiHeader.tsx new file mode 100644 index 0000000000..bd3ba62851 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/pages/Kiali/Header/KialiHeader.tsx @@ -0,0 +1,66 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import React from 'react'; + +import { Header } from '@backstage/core-components'; + +import { Chip, Tooltip } from '@material-ui/core'; +import { ClusterIcon } from '@patternfly/react-icons'; + +import { MessageCenter } from '../../../components/MessageCenter/MessageCenter'; +import { homeCluster } from '../../../config'; +import { KialiAppState, KialiContext } from '../../../store'; +import { HelpKiali } from './HelpKiali'; +import { NamespaceSelector } from './NamespaceSelector'; + +export const KialiHeader = () => { + const kialiState = React.useContext(KialiContext) as KialiAppState; + + return ( +
    }> + Kiali home cluster: {homeCluster?.name}} + style={{ marginTop: '10px', color: 'white' }} + > + } + label={homeCluster?.name} + data-test="home-cluster" + style={{ color: 'white' }} + /> + + + + {kialiState.authentication.session && ( +
    + + User : + {kialiState.authentication.session.username || 'anonymous'} + +
    + )} +
    + ); +}; diff --git a/workspaces/kiali/plugins/kiali/src/pages/Kiali/Header/KialiHeaderEntity.tsx b/workspaces/kiali/plugins/kiali/src/pages/Kiali/Header/KialiHeaderEntity.tsx new file mode 100644 index 0000000000..bb220f3cf6 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/pages/Kiali/Header/KialiHeaderEntity.tsx @@ -0,0 +1,74 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import React from 'react'; + +import { Chip, Grid, Tooltip } from '@material-ui/core'; +import { ClusterIcon } from '@patternfly/react-icons'; + +import { MessageCenter } from '../../../components/MessageCenter/MessageCenter'; +import { homeCluster } from '../../../config'; +import { KialiAppState, KialiContext } from '../../../store'; +import { HelpKiali } from './HelpKiali'; +import { NamespaceSelector } from './NamespaceSelector'; + +export const KialiHeaderEntity = () => { + const kialiState = React.useContext(KialiContext) as KialiAppState; + + return ( +
    + + + + + +
    + Kiali home cluster: {homeCluster?.name}
    }> + } + label={homeCluster?.name} + /> + + + +
    + + {kialiState.authentication.session && ( + +
    + + User : + {kialiState.authentication.session.username || 'anonymous'} + +
    +
    + )} + + + ); +}; diff --git a/workspaces/kiali/plugins/kiali/src/pages/Kiali/Header/KialiTabs.tsx b/workspaces/kiali/plugins/kiali/src/pages/Kiali/Header/KialiTabs.tsx new file mode 100644 index 0000000000..e2ffbbc56f --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/pages/Kiali/Header/KialiTabs.tsx @@ -0,0 +1,95 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import React, { useCallback, useEffect } from 'react'; +import { + Location, + matchRoutes, + useLocation, + useNavigate, + useParams, + useRoutes, +} from 'react-router-dom'; + +import { HeaderTabs } from '@backstage/core-components'; +import { useRouteRef } from '@backstage/core-plugin-api/index'; + +import { pluginName } from '../../../plugin'; +import { + appsRouteRef, + istioConfigRouteRef, + overviewRouteRef, + servicesRouteRef, + trafficGraphRouteRef, + workloadsRouteRef, +} from '../../../routes'; + +const getPath = (loc: Location): number => { + if (loc.pathname.includes('workloads')) { + return 1; + } + if (loc.pathname.includes('services')) { + return 2; + } + if (loc.pathname.includes('applications')) { + return 3; + } + if (loc.pathname.includes('istio')) { + return 4; + } + if (loc.pathname.includes('graph')) { + return 5; + } + return 0; +}; + +const tabs = [ + { id: 'overview', label: 'Overview', path: overviewRouteRef.path }, + { id: 'graph', label: 'Traffic Graph', path: trafficGraphRouteRef.path }, + { id: 'workloads', label: 'Workloads', path: workloadsRouteRef.path }, + { id: 'services', label: 'Services', path: servicesRouteRef.path }, + { id: 'apps', label: 'Applications', path: appsRouteRef.path }, + { id: 'istio', label: 'Istio Config', path: istioConfigRouteRef.path }, +]; +export const KialiTabs = () => { + const location = useLocation(); + const currentPath = `/${useParams()['*']}`; + const [matchedRoute] = matchRoutes(tabs, currentPath) ?? []; + + const currentTabIndex = matchedRoute + ? tabs.findIndex(t => t.path === matchedRoute.route.path) + : 0; + + const navigate = useNavigate(); + const handleTabChange = useCallback( + (index: number) => { + navigate(`/${pluginName}${tabs[index].path}`); + }, + [navigate], + ); + useEffect(() => { + if (currentTabIndex === 0) { + navigate(`/${pluginName}${tabs[0].path}`); + } + }, [currentTabIndex, navigate]); + + return ( + + ); +}; diff --git a/workspaces/kiali/plugins/kiali/src/pages/Kiali/Header/NamespaceSelector.tsx b/workspaces/kiali/plugins/kiali/src/pages/Kiali/Header/NamespaceSelector.tsx new file mode 100644 index 0000000000..2fc9d8ba49 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/pages/Kiali/Header/NamespaceSelector.tsx @@ -0,0 +1,93 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import React from 'react'; + +import { + Checkbox, + InputLabel, + ListItemText, + MenuItem, + Select, +} from '@material-ui/core'; + +import { NamespaceActions } from '../../../actions'; +import { KialiAppState, KialiContext } from '../../../store'; + +export const NamespaceSelector = (props: { page?: boolean }) => { + const kialiState = React.useContext(KialiContext) as KialiAppState; + + const handleChange = (event: any) => { + const { + target: { value }, + } = event; + kialiState.dispatch.namespaceDispatch( + NamespaceActions.setActiveNamespaces( + (kialiState.namespaces.items || []).filter(ns => + (value as string[]).includes(ns.name), + ), + ), + ); + }; + const ITEM_HEIGHT = 48; + const ITEM_PADDING_TOP = 8; + const MenuProps = { + PaperProps: { + style: { + maxHeight: ITEM_HEIGHT * 4.5 + ITEM_PADDING_TOP, + width: 250, + }, + }, + }; + return ( +
    + + Namespaces Selected + + +
    + ); +}; diff --git a/workspaces/kiali/plugins/kiali/src/pages/Kiali/KialiEntity.tsx b/workspaces/kiali/plugins/kiali/src/pages/Kiali/KialiEntity.tsx new file mode 100644 index 0000000000..c81e797100 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/pages/Kiali/KialiEntity.tsx @@ -0,0 +1,53 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import React from 'react'; + +import { Content } from '@backstage/core-components'; + +import { Grid } from '@material-ui/core'; + +import { baseStyle } from '../../styles/StyleUtils'; +import { IstioConfigCard } from '../Overview/IstioConfigCard'; +import { ListViewPage } from '../Overview/ListView/ListViewPage'; +import { OverviewPage } from '../Overview/OverviewPage'; +import { TrafficGraphCard } from '../TrafficGraph/TrafficGraphCard'; + +export const KialiEntity = () => { + return ( +
    + + + + + + + + + + + + + + + + + + + + +
    + ); +}; diff --git a/workspaces/kiali/plugins/kiali/src/pages/Kiali/KialiHelper.tsx b/workspaces/kiali/plugins/kiali/src/pages/Kiali/KialiHelper.tsx new file mode 100644 index 0000000000..65b2fd60fd --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/pages/Kiali/KialiHelper.tsx @@ -0,0 +1,81 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import React from 'react'; + +import { + CodeSnippet, + InfoCard, + Link, + WarningPanel, +} from '@backstage/core-components'; + +import HelpRounded from '@material-ui/icons/HelpRounded'; + +import { KialiChecker } from '../../store/KialiProvider'; + +export const KialiHelper = (props: { check: KialiChecker }) => { + const pretty = () => { + if (props.check.message) { + const helper = props.check.helper; + const attributes = + props.check.missingAttributes && + `Missing attributes: ${props.check.missingAttributes.join(',')}.`; + return ( + <> + + + + {attributes && ( + <> +
    {attributes} + + )} + {helper && ( + <> +
    + {helper} + + )} + + ); + } + return <>; + }; + + const printAuthentication = ( + <> + The authentication provided by Kiali is{' '} + {props.check.authData?.strategy}.
    + You need to install the kiali backend to be able to use this kiali. +
    Follow the steps in{' '} + + Kiali Plugin + + {pretty()} + + ); + + return props.check.verify ? ( + <> + ) : ( + + {props.check.authData ? printAuthentication : pretty()} + + ); +}; diff --git a/workspaces/kiali/plugins/kiali/src/pages/Kiali/KialiNoAnnotation.tsx b/workspaces/kiali/plugins/kiali/src/pages/Kiali/KialiNoAnnotation.tsx new file mode 100644 index 0000000000..52d93cb26c --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/pages/Kiali/KialiNoAnnotation.tsx @@ -0,0 +1,37 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import React from 'react'; + +import { + Content, + MissingAnnotationEmptyState, + Page, +} from '@backstage/core-components'; + +import { ANNOTATION_SUPPORTED } from '../../components/Router'; + +export const KialiNoAnnotation = () => { + return ( + + + + + + ); +}; diff --git a/workspaces/kiali/plugins/kiali/src/pages/Kiali/KialiNoResources.tsx b/workspaces/kiali/plugins/kiali/src/pages/Kiali/KialiNoResources.tsx new file mode 100644 index 0000000000..370d16e46b --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/pages/Kiali/KialiNoResources.tsx @@ -0,0 +1,70 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import React from 'react'; + +import { Entity } from '@backstage/catalog-model'; +import { + CodeSnippet, + Content, + EmptyState, + Page, +} from '@backstage/core-components'; + +import { Box } from '@material-ui/core'; + +import { ANNOTATION_SUPPORTED } from '../../components/Router'; + +export const KialiNoResources = (props: { entity: Entity }) => { + const annotationsKey = Object.keys( + props.entity.metadata.annotations || [], + ).filter(key => ANNOTATION_SUPPORTED.indexOf(key) > -1); + return ( + + + + Kiali detected the annotations: +
      + {annotationsKey.map(key => ( +
    • + {key}:{' '} + {props.entity.metadata.annotations + ? props.entity.metadata.annotations[key] + : 'Not found'} +
    • + ))} +
    +
    + This is the entity loaded. + + + +
    + + } + /> +
    +
    + ); +}; diff --git a/workspaces/kiali/plugins/kiali/src/pages/Kiali/KialiPage.tsx b/workspaces/kiali/plugins/kiali/src/pages/Kiali/KialiPage.tsx new file mode 100644 index 0000000000..a50c32250a --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/pages/Kiali/KialiPage.tsx @@ -0,0 +1,72 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import React from 'react'; + +import { Content, Page } from '@backstage/core-components'; + +import { AppListPage } from '../AppList/AppListPage'; +import { IstioConfigListPage } from '../IstioConfigList/IstioConfigListPage'; +import { OverviewPage } from '../Overview/OverviewPage'; +import { ServiceListPage } from '../ServiceList/ServiceListPage'; +import TrafficGraphPage from '../TrafficGraph/TrafficGraphPage'; +import { WorkloadListPage } from '../WorkloadList/WorkloadListPage'; +import { KialiHeader } from './Header/KialiHeader'; +import { KialiTabs } from './Header/KialiTabs'; +import { KialiNoPath } from './NoPath'; + +const noPath = 'noPath'; +const getPathPage = () => { + const pathname = window.location.pathname.split('/').pop(); + if (pathname && pathname === 'kiali') { + return 'overview'; + } else if (pathname) { + return pathname; + } + return noPath; +}; + +export const KialiPage = () => { + const [selectedTab, _] = React.useState(getPathPage()); + + const renderPath = () => { + switch (selectedTab) { + case 'overview': + return ; + case 'workloads': + return ; + case 'services': + return ; + case 'applications': + return ; + case 'istio': + return ; + case 'graph': + return ; + default: + return ; + } + }; + + return ( + + + + + {renderPath()} + + + ); +}; diff --git a/workspaces/kiali/plugins/kiali/src/pages/Kiali/NoPath.tsx b/workspaces/kiali/plugins/kiali/src/pages/Kiali/NoPath.tsx new file mode 100644 index 0000000000..a23d1ea39f --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/pages/Kiali/NoPath.tsx @@ -0,0 +1,40 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import React from 'react'; +import { useLocation } from 'react-router-dom'; + +import { Content, Link, Page, WarningPanel } from '@backstage/core-components'; +import { useRouteRef } from '@backstage/core-plugin-api'; + +import { rootRouteRef } from '../../routes'; + +export const KialiNoPath = () => { + const location = useLocation().pathname; + const link = useRouteRef(rootRouteRef); + return ( + + + + Path {location} not exist in Kiali Plugin.{' '} + Go to Kiali Plugin + + + + ); +}; diff --git a/workspaces/kiali/plugins/kiali/src/pages/Kiali/index.ts b/workspaces/kiali/plugins/kiali/src/pages/Kiali/index.ts new file mode 100644 index 0000000000..d8fbd1096c --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/pages/Kiali/index.ts @@ -0,0 +1,17 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export * from './KialiPage'; +export * from './NoPath'; diff --git a/workspaces/kiali/plugins/kiali/src/pages/Overview/IstioConfigCard.tsx b/workspaces/kiali/plugins/kiali/src/pages/Overview/IstioConfigCard.tsx new file mode 100644 index 0000000000..e449533440 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/pages/Overview/IstioConfigCard.tsx @@ -0,0 +1,32 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import * as React from 'react'; + +import '@backstage/core-components'; + +import { Card, CardHeader } from '@material-ui/core'; + +import { ENTITY } from '../../types/types'; +import { IstioConfigListPage } from '../IstioConfigList/IstioConfigListPage'; + +export const IstioConfigCard = () => { + return ( + + + + + ); +}; diff --git a/workspaces/kiali/plugins/kiali/src/pages/Overview/ListView/ListViewPage.tsx b/workspaces/kiali/plugins/kiali/src/pages/Overview/ListView/ListViewPage.tsx new file mode 100644 index 0000000000..d276c9399d --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/pages/Overview/ListView/ListViewPage.tsx @@ -0,0 +1,77 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import * as React from 'react'; +import { useSearchParams } from 'react-router-dom'; + +import { CardTab, TabbedCard } from '@backstage/core-components'; + +import { ENTITY } from '../../../types/types'; +import { AppListPage } from '../../AppList/AppListPage'; +import { ServiceListPage } from '../../ServiceList/ServiceListPage'; +import { WorkloadListPage } from '../../WorkloadList/WorkloadListPage'; + +export const ListViewPage = () => { + const [searchParams, setSearchParams] = useSearchParams(); + const tabParam = searchParams.get('tabresources'); + const [tab, setTab] = React.useState(tabParam || 'workloads'); + + const updateTab = (tabvalue: string) => { + setTab(tabvalue); + setSearchParams({ ['tabresources']: tabvalue }); + }; + const tabStyle: React.CSSProperties = { + height: '350px', + overflowY: 'scroll', + }; + + const cardStyle: React.CSSProperties = { + marginRight: '20px', + }; + + return ( +
    + + updateTab('workloads')} + label="Workloads" + > +
    + +
    +
    + updateTab('services')} + label="Services" + > +
    + +
    +
    + updateTab('applications')} + label="Applications" + > +
    + +
    +
    +
    +
    + ); +}; diff --git a/workspaces/kiali/plugins/kiali/src/pages/Overview/NamespaceInfo.ts b/workspaces/kiali/plugins/kiali/src/pages/Overview/NamespaceInfo.ts new file mode 100644 index 0000000000..b42e4d208e --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/pages/Overview/NamespaceInfo.ts @@ -0,0 +1,43 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { IstioConfigList } from '../../types/IstioConfigList'; +import { ValidationStatus } from '../../types/IstioObjects'; +import { ControlPlaneMetricsMap, Metric } from '../../types/Metrics'; +import { TLSStatus } from '../../types/TLSStatus'; + +export type NamespaceInfo = { + name: string; + cluster?: string; + outboundPolicyMode?: string; + status?: NamespaceStatus; + tlsStatus?: TLSStatus; + istioConfig?: IstioConfigList; + validations?: ValidationStatus; + metrics?: Metric[]; + errorMetrics?: Metric[]; + labels?: { [key: string]: string }; + annotations?: { [key: string]: string }; + controlPlaneMetrics?: ControlPlaneMetricsMap; + isAmbient?: boolean; +}; + +export type NamespaceStatus = { + inNotReady: string[]; + inError: string[]; + inWarning: string[]; + inSuccess: string[]; + notAvailable: string[]; +}; diff --git a/workspaces/kiali/plugins/kiali/src/pages/Overview/OverviewCard/CanaryUpgradeProgress.tsx b/workspaces/kiali/plugins/kiali/src/pages/Overview/OverviewCard/CanaryUpgradeProgress.tsx new file mode 100644 index 0000000000..3877b8a969 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/pages/Overview/OverviewCard/CanaryUpgradeProgress.tsx @@ -0,0 +1,92 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import * as React from 'react'; + +import { Tooltip, useTheme } from '@material-ui/core'; +import { + ChartDonutUtilization, + ChartLabel, + ChartThemeColor, +} from '@patternfly/react-charts'; + +import { KialiIcon } from '../../../config/KialiIcon'; +import { kialiStyle } from '../../../styles/StyleUtils'; +import { CanaryUpgradeStatus } from '../../../types/IstioObjects'; + +type Props = { + canaryUpgradeStatus: CanaryUpgradeStatus; +}; + +export const infoStyle = kialiStyle({ + margin: '0px 0px -1px 4px', +}); + +export const CanaryUpgradeProgress = (props: Props) => { + const total = + props.canaryUpgradeStatus.migratedNamespaces.length + + props.canaryUpgradeStatus.pendingNamespaces.length; + const migrated = + total > 0 + ? (props.canaryUpgradeStatus.migratedNamespaces.length * 100) / total + : 0; + const theme = useTheme().palette.type; + return ( +
    +
    +
    + Canary upgrade status + + + + + +
    +
    + + datum.x ? `${datum.x}: ${datum.y.toFixed(2)}%` : null + } + invert + title={`${migrated.toFixed(2)}%`} + height={170} + themeColor={ChartThemeColor.green} + titleComponent={ + + } + /> +
    +
    +

    {`${props.canaryUpgradeStatus.migratedNamespaces.length} of ${total} namespaces migrated`}

    +
    +
    +
    + ); +}; diff --git a/workspaces/kiali/plugins/kiali/src/pages/Overview/OverviewCard/ControlPlaneBadge.tsx b/workspaces/kiali/plugins/kiali/src/pages/Overview/OverviewCard/ControlPlaneBadge.tsx new file mode 100644 index 0000000000..3831f93083 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/pages/Overview/OverviewCard/ControlPlaneBadge.tsx @@ -0,0 +1,59 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import * as React from 'react'; + +import { Chip, makeStyles } from '@material-ui/core'; + +import { AmbientBadge } from '../../../components/Ambient/AmbientBadge'; +import { IstioStatusInline } from '../../../components/IstioStatus/IstioStatusInline'; +import { serverConfig } from '../../../config'; +import { ComponentStatus } from '../../../types/IstioStatus'; +import { isRemoteCluster } from './OverviewCardControlPlaneNamespace'; +import { RemoteClusterBadge } from './RemoteClusterBadge'; + +type Props = { + cluster?: string; + annotations?: { [key: string]: string }; + status: ComponentStatus[]; +}; + +const useStyles = makeStyles(() => ({ + controlPlane: { + backgroundColor: '#f3faf2', + color: '#1e4f18', + marginLeft: '5px', + }, +})); + +export const ControlPlaneBadge = (props: Props): React.JSX.Element => { + const classes = useStyles(); + return ( + <> + + {isRemoteCluster(props.annotations) && } + {serverConfig.ambientEnabled && ( + + )}{' '} + + + ); +}; diff --git a/workspaces/kiali/plugins/kiali/src/pages/Overview/OverviewCard/ControlPlaneNamespaceStatus.tsx b/workspaces/kiali/plugins/kiali/src/pages/Overview/OverviewCard/ControlPlaneNamespaceStatus.tsx new file mode 100644 index 0000000000..9dc23da679 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/pages/Overview/OverviewCard/ControlPlaneNamespaceStatus.tsx @@ -0,0 +1,125 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import * as React from 'react'; + +import { Chip, Tooltip } from '@material-ui/core'; +import { useTheme } from '@material-ui/core/styles'; + +import { KialiIcon } from '../../../config/KialiIcon'; +import { getChipStyle } from '../../../styles/StyleUtils'; +import { OutboundTrafficPolicy } from '../../../types/IstioObjects'; +import { NamespaceInfo } from '../NamespaceInfo'; +import { infoStyle } from './OverviewCardControlPlaneNamespace'; + +type Props = { + namespace: NamespaceInfo; + outboundTrafficPolicy?: OutboundTrafficPolicy; +}; + +export const ControlPlaneNamespaceStatus = (props: Props) => { + const theme = useTheme(); + const chipStyle = getChipStyle(theme); + + let maxProxyPushTime: number | undefined = undefined; + if (props.namespace.controlPlaneMetrics?.istiod_proxy_time) { + maxProxyPushTime = + props.namespace.controlPlaneMetrics?.istiod_proxy_time[0].datapoints.reduce( + (a, b) => (a[1] < b[1] ? a : b), + [Number.MAX_SAFE_INTEGER, Number.MAX_SAFE_INTEGER], + )[1] * 1000; + } + let showProxyPushTime = false; + if (maxProxyPushTime && !isNaN(maxProxyPushTime)) { + showProxyPushTime = true; + } + + return ( +
    + {props.outboundTrafficPolicy && ( +
    +
    + Outbound policy +
    + + This value represents the meshConfig.outboundTrafficPolicy.mode, + that configures the sidecar handling of external services, that + is, those services that are not defined in Istio’s internal + service registry. If this option is set to ALLOW_ANY, the Istio + proxy lets calls to unknown services pass through. If the option + is set to REGISTRY_ONLY, then the Istio proxy blocks any host + without an HTTP service or service entry defined within the mesh +
    + } + > + + {props.outboundTrafficPolicy.mode} + + + } + /> + +
    + )} + {showProxyPushTime && ( +
    +
    + Proxy push time +
    + + This value represents the delay in seconds between config change + and a proxy receiving all required configuration. +
    + } + > + + {maxProxyPushTime?.toFixed(2)} ms + + + } + /> + + + )} + + ); +}; diff --git a/workspaces/kiali/plugins/kiali/src/pages/Overview/OverviewCard/ControlPlaneVersionBadge.tsx b/workspaces/kiali/plugins/kiali/src/pages/Overview/OverviewCard/ControlPlaneVersionBadge.tsx new file mode 100644 index 0000000000..80b08d9617 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/pages/Overview/OverviewCard/ControlPlaneVersionBadge.tsx @@ -0,0 +1,39 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import * as React from 'react'; + +import { Chip } from '@material-ui/core'; + +type Props = { + version: string; + isCanary: boolean; +}; + +export class ControlPlaneVersionBadge extends React.Component { + render() { + return ( + + ); + } +} diff --git a/workspaces/kiali/plugins/kiali/src/pages/Overview/OverviewCard/NamespaceHeader.tsx b/workspaces/kiali/plugins/kiali/src/pages/Overview/OverviewCard/NamespaceHeader.tsx new file mode 100644 index 0000000000..f671dcc8df --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/pages/Overview/OverviewCard/NamespaceHeader.tsx @@ -0,0 +1,98 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import React from 'react'; + +import { CardHeader, Chip } from '@material-ui/core'; + +import { serverConfig } from '../../../config'; +import { CanaryUpgradeStatus } from '../../../types/IstioObjects'; +import { ComponentStatus } from '../../../types/IstioStatus'; +import { NamespaceInfo } from '../NamespaceInfo'; +import { ControlPlaneBadge } from './ControlPlaneBadge'; +import { ControlPlaneVersionBadge } from './ControlPlaneVersionBadge'; + +type NamespaceHeaderProps = { + namespace: NamespaceInfo; + istioAPIEnabled?: boolean; + canaryUpgradeStatus?: CanaryUpgradeStatus; + istioStatus: ComponentStatus[]; +}; + +export const NamespaceHeader = (props: NamespaceHeaderProps) => { + const isIstioSystem = serverConfig.istioNamespace === props.namespace.name; + + const hasCanaryUpgradeConfigured = (): boolean => { + return props.canaryUpgradeStatus + ? props.canaryUpgradeStatus.pendingNamespaces.length > 0 || + props.canaryUpgradeStatus.migratedNamespaces.length > 0 + : false; + }; + return ( + + {props.namespace.name} + {isIstioSystem && ( + + )} + {!props.istioAPIEnabled && ( + + )} + + } + subheader={ + <> + {props.namespace.name !== serverConfig.istioNamespace && + hasCanaryUpgradeConfigured() && + props.canaryUpgradeStatus?.migratedNamespaces.includes( + props.namespace.name, + ) && ( + + )} + {props.namespace.name !== serverConfig.istioNamespace && + hasCanaryUpgradeConfigured() && + props.canaryUpgradeStatus?.pendingNamespaces.includes( + props.namespace.name, + ) && ( + + )} + {props.namespace.name === serverConfig.istioNamespace && + !props.istioAPIEnabled && ( + + )} + + } + /> + ); +}; diff --git a/workspaces/kiali/plugins/kiali/src/pages/Overview/OverviewCard/NamespaceLabels.tsx b/workspaces/kiali/plugins/kiali/src/pages/Overview/OverviewCard/NamespaceLabels.tsx new file mode 100644 index 0000000000..897b4e0788 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/pages/Overview/OverviewCard/NamespaceLabels.tsx @@ -0,0 +1,53 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import React from 'react'; + +import { Tooltip } from '@material-ui/core'; + +import { KialiIcon } from '../../../config'; +import { infoStyle } from './CanaryUpgradeProgress'; + +type NamespaceLabelsprops = { + labels?: { [key: string]: string }; +}; +export const NamespaceLabels = (props: NamespaceLabelsprops) => { + const labelsLength = props.labels + ? `${Object.entries(props.labels).length}` + : 'No'; + const tooltipTitle = ( +
      + {Object.entries(props.labels || []).map(([key, value]) => ( +
    • + {key}={value} +
    • + ))} +
    + ); + return props.labels ? ( + <> +
    + {labelsLength} label{labelsLength !== '1' ? 's' : ''} +
    + + + + + + + ) : ( +
    No labels
    + ); +}; diff --git a/workspaces/kiali/plugins/kiali/src/pages/Overview/OverviewCard/NamespaceStatus.tsx b/workspaces/kiali/plugins/kiali/src/pages/Overview/OverviewCard/NamespaceStatus.tsx new file mode 100644 index 0000000000..e72a326547 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/pages/Overview/OverviewCard/NamespaceStatus.tsx @@ -0,0 +1,139 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import React from 'react'; + +import { Paths } from '../../../config'; +import { + DurationInSeconds, + IntervalInMilliseconds, +} from '../../../types/Common'; +import { DEGRADED, FAILURE, HEALTHY, NOT_READY } from '../../../types/Health'; +import { NamespaceInfo } from '../NamespaceInfo'; +import { switchType } from '../OverviewHelper'; +import { OverviewStatus } from '../OverviewStatus'; +import { OverviewType } from '../OverviewToolbar'; + +type NamespaceStatusProps = { + namespace: NamespaceInfo; + type: OverviewType; + duration: DurationInSeconds; + refreshInterval: IntervalInMilliseconds; +}; + +export const NamespaceStatus = (props: NamespaceStatusProps) => { + const ns = props.namespace; + const targetPage = switchType( + props.type, + Paths.APPLICATIONS, + Paths.SERVICES, + Paths.WORKLOADS, + ); + const name = ns.name; + let nbItems = 0; + if (ns.status) { + nbItems = + ns.status.inError.length + + ns.status.inWarning.length + + ns.status.inSuccess.length + + ns.status.notAvailable.length + + ns.status.inNotReady.length; + } + let text: string; + if (nbItems === 1) { + text = switchType(props.type, '1 application', '1 service', '1 workload'); + } else { + text = `${nbItems}${switchType( + props.type, + ' applications', + ' services', + ' workloads', + )}`; + } + const mainLink = ( +
    + {text} +
    + ); + if (nbItems === ns.status?.notAvailable.length) { + return ( +
    + + {mainLink} +
    N/A
    +
    +
    + ); + } + return ( +
    + + {mainLink} +
    + {ns.status && ns.status.inNotReady.length > 0 && ( + + )} + {ns.status && ns.status.inError.length > 0 && ( + + )} + {ns.status && ns.status.inWarning.length > 0 && ( + + )} + {ns.status && ns.status.inSuccess.length > 0 && ( + + )} +
    +
    +
    + ); +}; diff --git a/workspaces/kiali/plugins/kiali/src/pages/Overview/OverviewCard/OverviewCard.tsx b/workspaces/kiali/plugins/kiali/src/pages/Overview/OverviewCard/OverviewCard.tsx new file mode 100644 index 0000000000..e929f0db8d --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/pages/Overview/OverviewCard/OverviewCard.tsx @@ -0,0 +1,186 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import React from 'react'; + +import { Card, CardContent, Grid } from '@material-ui/core'; + +import * as FilterHelper from '../../../components/FilterList/FilterHelper'; +import { NamespaceMTLSStatus } from '../../../components/MTls/NamespaceMTLSStatus'; +import { TLSInfo } from '../../../components/Overview/TLSInfo'; +import { PFBadge, PFBadges } from '../../../components/Pf/PfBadges'; +import { ValidationSummary } from '../../../components/Validations/ValidationSummary'; +import { isMultiCluster, serverConfig } from '../../../config'; +import { CertsInfo } from '../../../types/CertsInfo'; +import { + DurationInSeconds, + IntervalInMilliseconds, +} from '../../../types/Common'; +import { + CanaryUpgradeStatus, + OutboundTrafficPolicy, + ValidationStatus, +} from '../../../types/IstioObjects'; +import { + ComponentStatus, + IstiodResourceThresholds, +} from '../../../types/IstioStatus'; +import { NamespaceInfo } from '../NamespaceInfo'; +import { DirectionType, OverviewType } from '../OverviewToolbar'; +import { CanaryUpgradeProgress } from './CanaryUpgradeProgress'; +import { ControlPlaneNamespaceStatus } from './ControlPlaneNamespaceStatus'; +import { NamespaceHeader } from './NamespaceHeader'; +import { NamespaceLabels } from './NamespaceLabels'; +import { NamespaceStatus } from './NamespaceStatus'; +import { OverviewCardSparklineCharts } from './OverviewCardSparklineCharts'; + +type OverviewCardProps = { + namespace: NamespaceInfo; + entity?: boolean; + canaryUpgradeStatus?: CanaryUpgradeStatus; + duration: DurationInSeconds; + refreshInterval: IntervalInMilliseconds; + istioAPIEnabled?: boolean; + type: OverviewType; + direction: DirectionType; + certsInfo: CertsInfo[]; + minTLS: string; + outboundTrafficPolicy: OutboundTrafficPolicy; + istiodResourceThresholds?: IstiodResourceThresholds; + istioStatus: ComponentStatus[]; +}; + +export const OverviewCard = (props: OverviewCardProps) => { + const isIstioSystem = serverConfig.istioNamespace === props.namespace.name; + const hasCanaryUpgradeConfigured = (): boolean => { + return props.canaryUpgradeStatus + ? props.canaryUpgradeStatus.pendingNamespaces.length > 0 || + props.canaryUpgradeStatus.migratedNamespaces.length > 0 + : false; + }; + + const renderCharts = (): React.JSX.Element => { + const chart = ( + + ); + const canaryConfigured = hasCanaryUpgradeConfigured(); + return isIstioSystem ? ( + + {canaryConfigured && ( + + + + )} + + {chart} + + + ) : ( + chart + ); + }; + + const renderIstioConfigStatus = (ns: NamespaceInfo): React.JSX.Element => { + let validations: ValidationStatus = { + objectCount: 0, + errors: 0, + warnings: 0, + }; + if (!!ns.validations) { + validations = ns.validations; + } + + return ( + + ); + }; + + return ( + + {!props.entity && } + + {!props.entity && isMultiCluster && props.namespace.cluster && ( + <> + + {props.namespace.cluster} + + )} + + + {!props.entity && ( + <> + +
    +
    + Istio config +
    + {props.namespace.tlsStatus && ( + + + + )} + {props.istioAPIEnabled + ? renderIstioConfigStatus(props.namespace) + : 'N/A'} +
    + + )} + {!props.entity && } + {isIstioSystem && ( + <> + + + + )} +
    + + {renderCharts()} + +
    +
    +
    + ); +}; diff --git a/workspaces/kiali/plugins/kiali/src/pages/Overview/OverviewCard/OverviewCardControlPlaneNamespace.tsx b/workspaces/kiali/plugins/kiali/src/pages/Overview/OverviewCard/OverviewCardControlPlaneNamespace.tsx new file mode 100644 index 0000000000..19653ae898 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/pages/Overview/OverviewCard/OverviewCardControlPlaneNamespace.tsx @@ -0,0 +1,286 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import * as React from 'react'; + +import { Card, CardContent, Grid, Tooltip } from '@material-ui/core'; + +import { SparklineChart } from '../../../components/Charts/SparklineChart'; +import { PFColors } from '../../../components/Pf/PfColors'; +import { KialiIcon } from '../../../config/KialiIcon'; +import { kialiStyle } from '../../../styles/StyleUtils'; +import { DurationInSeconds } from '../../../types/Common'; +import { IstiodResourceThresholds } from '../../../types/IstioStatus'; +import { Datapoint, Metric } from '../../../types/Metrics'; +import { RichDataPoint, VCLine } from '../../../types/VictoryChartInfo'; +import { toLocaleStringWithConditionalDate } from '../../../utils/Date'; +import { getName } from '../../../utils/RateIntervals'; +import { toVCLine } from '../../../utils/VictoryChartsUtils'; + +export const infoStyle = kialiStyle({ + margin: '0px 0px -1px 4px', +}); + +const controlPlaneAnnotation = 'topology.istio.io/controlPlaneClusters'; + +type ControlPlaneProps = { + pilotLatency?: Metric[]; + istiodContainerMemory?: Metric[]; + istiodContainerCpu?: Metric[]; + istiodProcessMemory?: Metric[]; + istiodProcessCpu?: Metric[]; + duration: DurationInSeconds; + istiodResourceThresholds?: IstiodResourceThresholds; +}; + +export function isRemoteCluster(annotations?: { + [key: string]: string; +}): boolean { + if (annotations && annotations[controlPlaneAnnotation]) { + return true; + } + return false; +} + +function showMetrics(metrics: Metric[] | undefined): boolean { + // show metrics if metrics exists and some values at least are not zero + if ( + metrics && + metrics.length > 0 && + metrics[0].datapoints.length > 0 && + metrics[0].datapoints.some(dp => Number(dp[1]) !== 0) + ) { + return true; + } + + return false; +} + +export class OverviewCardControlPlaneNamespace extends React.Component< + ControlPlaneProps, + {} +> { + render() { + const memorySeries: VCLine[] = []; + const cpuSeries: VCLine[] = []; + const memoryThresholds: VCLine[] = []; + const cpuThresholds: VCLine[] = []; + + // The CPU metric can be respresented by a container or a process metric. We need to check which one to use + let cpuMetricSource = 'container'; + let cpu = this.props.istiodContainerCpu; + if (!showMetrics(this.props.istiodContainerCpu)) { + cpu = this.props.istiodProcessCpu; + cpuMetricSource = 'process'; + } + + // The memory metric can be respresented by a container or a process metric. We need to check which one to use + let memoryMetricSource = 'process'; + let memory = this.props.istiodContainerMemory; + if (!showMetrics(this.props.istiodContainerMemory)) { + memory = this.props.istiodProcessMemory; + memoryMetricSource = 'container'; + } + + if (showMetrics(memory)) { + if (memory && memory?.length > 0) { + const data = toVCLine(memory[0].datapoints, 'Mb', PFColors.Green400); + + if (this.props.istiodResourceThresholds?.memory) { + const datapoint0: Datapoint = [ + memory[0].datapoints[0][0], + memory[0].datapoints[0][1], + ]; + datapoint0[1] = this.props.istiodResourceThresholds?.memory; + const datapointn: Datapoint = [ + memory[0].datapoints[memory[0].datapoints.length - 1][0], + memory[0].datapoints[memory[0].datapoints.length - 1][0], + ]; + datapointn[1] = this.props.istiodResourceThresholds?.memory; + const dataThre = toVCLine( + [datapoint0, datapointn], + 'Mb (Threshold)', + PFColors.Green300, + ); + memoryThresholds.push(dataThre); + } + + memorySeries.push(data); + } + } + + if (showMetrics(cpu)) { + if (cpu && cpu?.length > 0) { + const data = toVCLine(cpu[0].datapoints, 'cores', PFColors.Green400); + + if (this.props.istiodResourceThresholds?.cpu) { + const datapoint0: Datapoint = [ + cpu[0].datapoints[0][0], + cpu[0].datapoints[0][1], + ]; + datapoint0[1] = this.props.istiodResourceThresholds?.cpu; + const datapointn: Datapoint = [ + cpu[0].datapoints[cpu[0].datapoints.length - 1][0], + cpu[0].datapoints[cpu[0].datapoints.length - 1][0], + ]; + datapointn[1] = this.props.istiodResourceThresholds?.cpu; + const dataThre = toVCLine( + [datapoint0, datapointn], + 'cores', + PFColors.Green300, + ); + cpuThresholds.push(dataThre); + } + + cpuSeries.push(data); + } + } + return ( +
    +
    +
    + Control plane metrics +
    +
    +
    + + + {showMetrics(memory) && ( + + + + + Memory + + + {getName(this.props.duration).toLocaleLowerCase( + 'en-US', + )} + + This values represents the memory of the istiod{' '} + {memoryMetricSource} +
    + } + > +
    + +
    + + + + + + + `${toLocaleStringWithConditionalDate( + dp.x as Date, + )}\n${dp.y.toFixed(2)} ${dp.name}` + } + series={memorySeries} + labelName="mb" + thresholds={memoryThresholds} + /> + + + )} + {showMetrics(cpu) && ( + + + + + CPU + + + {getName(this.props.duration).toLocaleLowerCase( + 'en-US', + )} + + This values represents cpu of the istiod{' '} + {cpuMetricSource} +
    + } + > +
    + +
    + + + + + + + `${toLocaleStringWithConditionalDate( + dp.x as Date, + )}\n${dp.y.toFixed(2)} ${dp.name}` + } + series={cpuSeries} + labelName="cores" + thresholds={cpuThresholds} + /> + + + )} + + + + + ); + } +} diff --git a/workspaces/kiali/plugins/kiali/src/pages/Overview/OverviewCard/OverviewCardDataPlaneNamespace.tsx b/workspaces/kiali/plugins/kiali/src/pages/Overview/OverviewCard/OverviewCardDataPlaneNamespace.tsx new file mode 100644 index 0000000000..bc420042cc --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/pages/Overview/OverviewCard/OverviewCardDataPlaneNamespace.tsx @@ -0,0 +1,122 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import * as React from 'react'; + +import { SparklineChart } from '../../../components/Charts/SparklineChart'; +import { PFColors } from '../../../components/Pf/PfColors'; +import { DurationInSeconds } from '../../../types/Common'; +import { Metric } from '../../../types/Metrics'; +import { RichDataPoint, VCLine } from '../../../types/VictoryChartInfo'; +import { toLocaleStringWithConditionalDate } from '../../../utils/Date'; +import { getName } from '../../../utils/RateIntervals'; +import { toVCLine } from '../../../utils/VictoryChartsUtils'; +import { DirectionType } from '../OverviewToolbar'; + +type Props = { + metrics?: Metric[]; + errorMetrics?: Metric[]; + duration: DurationInSeconds; + direction: DirectionType; +}; + +function showMetrics(metrics: Metric[] | undefined): boolean { + // show metrics if metrics exists and some values at least are not zero + if ( + metrics && + metrics.length > 0 && + metrics[0].datapoints.some(dp => Number(dp[1]) !== 0) + ) { + return true; + } + + return false; +} + +export class OverviewCardDataPlaneNamespace extends React.Component { + render() { + const series: VCLine[] = []; + + if (showMetrics(this.props.metrics)) { + if (this.props.metrics && this.props.metrics.length > 0) { + const data = toVCLine( + this.props.metrics[0].datapoints, + 'ops (Total)', + PFColors.Info, + ); + series.push(data); + } + + if (this.props.errorMetrics && this.props.errorMetrics.length > 0) { + const dataErrors = toVCLine( + this.props.errorMetrics[0].datapoints, + 'ops (4xx+5xx)', + PFColors.Danger, + ); + series.push(dataErrors); + } + } + + return ( +
    +
    + <> +
    + {series.length > 0 && ( + <> +
    + {`${this.props.direction} traffic, ${getName( + this.props.duration, + ).toLocaleLowerCase('en-US')}`} +
    + + `${toLocaleStringWithConditionalDate( + dp.x as Date, + )}\n${dp.y.toFixed(2)} ${dp.name}` + } + series={series} + labelName="ops" + /> + + )} + {series.length === 0 && ( +
    + No {this.props.direction.toLocaleLowerCase('en-US')} traffic +
    + )} +
    + ); + } +} diff --git a/workspaces/kiali/plugins/kiali/src/pages/Overview/OverviewCard/OverviewCardSparklineCharts.tsx b/workspaces/kiali/plugins/kiali/src/pages/Overview/OverviewCard/OverviewCardSparklineCharts.tsx new file mode 100644 index 0000000000..47422ad63b --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/pages/Overview/OverviewCard/OverviewCardSparklineCharts.tsx @@ -0,0 +1,69 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import * as React from 'react'; + +import { serverConfig } from '../../../config'; +import { DurationInSeconds } from '../../../types/Common'; +import { IstiodResourceThresholds } from '../../../types/IstioStatus'; +import { ControlPlaneMetricsMap, Metric } from '../../../types/Metrics'; +import { DirectionType } from '../OverviewToolbar'; +import { + isRemoteCluster, + OverviewCardControlPlaneNamespace, +} from './OverviewCardControlPlaneNamespace'; +import { OverviewCardDataPlaneNamespace } from './OverviewCardDataPlaneNamespace'; + +type Props = { + name: string; + annotations?: { [key: string]: string }; + duration: DurationInSeconds; + direction: DirectionType; + metrics?: Metric[]; + istioAPIEnabled: boolean; + errorMetrics?: Metric[]; + controlPlaneMetrics?: ControlPlaneMetricsMap; + istiodResourceThresholds?: IstiodResourceThresholds; +}; + +export const OverviewCardSparklineCharts = (props: Props) => { + return ( + <> + {props.name !== serverConfig.istioNamespace && ( + + )} + {props.name === serverConfig.istioNamespace && + props.istioAPIEnabled && + !isRemoteCluster(props.annotations) && ( + + )} + + ); +}; diff --git a/workspaces/kiali/plugins/kiali/src/pages/Overview/OverviewCard/RemoteClusterBadge.tsx b/workspaces/kiali/plugins/kiali/src/pages/Overview/OverviewCard/RemoteClusterBadge.tsx new file mode 100644 index 0000000000..e8ce24ff60 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/pages/Overview/OverviewCard/RemoteClusterBadge.tsx @@ -0,0 +1,30 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import * as React from 'react'; + +import { Chip } from '@material-ui/core'; + +export const RemoteClusterBadge = (): React.JSX.Element => { + return ( + + ); +}; diff --git a/workspaces/kiali/plugins/kiali/src/pages/Overview/OverviewCard/index.ts b/workspaces/kiali/plugins/kiali/src/pages/Overview/OverviewCard/index.ts new file mode 100644 index 0000000000..27a17e4536 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/pages/Overview/OverviewCard/index.ts @@ -0,0 +1,16 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export * from './OverviewCard'; diff --git a/workspaces/kiali/plugins/kiali/src/pages/Overview/OverviewHelper.ts b/workspaces/kiali/plugins/kiali/src/pages/Overview/OverviewHelper.ts new file mode 100644 index 0000000000..5079e4b0d2 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/pages/Overview/OverviewHelper.ts @@ -0,0 +1,30 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { OverviewType } from './OverviewToolbar'; + +export const switchType = ( + type: OverviewType, + caseApp: T, + caseService: U, + caseWorkload: V, +): T | U | V => { + if (type === 'app') { + return caseApp; + } else if (type === 'service') { + return caseService; + } + return caseWorkload; +}; diff --git a/workspaces/kiali/plugins/kiali/src/pages/Overview/OverviewPage.tsx b/workspaces/kiali/plugins/kiali/src/pages/Overview/OverviewPage.tsx new file mode 100644 index 0000000000..c795440ad5 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/pages/Overview/OverviewPage.tsx @@ -0,0 +1,534 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import React, { useRef } from 'react'; + +import { CardTab, Content, TabbedCard } from '@backstage/core-components'; +import { useApi } from '@backstage/core-plugin-api'; + +import { CircularProgress, Grid } from '@material-ui/core'; +import _ from 'lodash'; + +import * as FilterHelper from '../../components/FilterList/FilterHelper'; +import { isMultiCluster, serverConfig } from '../../config'; +import { nsEqual } from '../../helpers/namespaces'; +import { getErrorString, kialiApiRef } from '../../services/Api'; +import { computePrometheusRateParams } from '../../services/Prometheus'; +import { KialiAppState, KialiContext } from '../../store'; +import { baseStyle } from '../../styles/StyleUtils'; +import { + DEGRADED, + FAILURE, + Health, + HEALTHY, + NamespaceAppHealth, + NamespaceServiceHealth, + NamespaceWorkloadHealth, + NOT_READY, +} from '../../types/Health'; +import { + CanaryUpgradeStatus, + OutboundTrafficPolicy, +} from '../../types/IstioObjects'; +import { IstiodResourceThresholds } from '../../types/IstioStatus'; +import { MessageType } from '../../types/MessageCenter'; +import { IstioMetricsOptions } from '../../types/MetricsOptions'; +import { SortField } from '../../types/SortFilters'; +import { nsWideMTLSStatus } from '../../types/TLSStatus'; +import { PromisesRegistry } from '../../utils/CancelablePromises'; +import { NamespaceInfo, NamespaceStatus } from './NamespaceInfo'; +import { OverviewCard } from './OverviewCard'; +import { switchType } from './OverviewHelper'; +import { + currentDirectionType, + currentOverviewType, + DirectionType, + OverviewToolbar, + OverviewType, +} from './OverviewToolbar'; +import * as Sorts from './Sorts'; + +export const getNamespaces = ( + namespacesResponse: NamespaceInfo[], + namespaces: NamespaceInfo[], +): NamespaceInfo[] => { + return namespacesResponse.map(ns => { + const previous = namespaces.find(prev => prev.name === ns.name); + return { + name: ns.name, + cluster: ns.cluster, + isAmbient: ns.isAmbient, + status: previous ? previous.status : undefined, + tlsStatus: previous ? previous.tlsStatus : undefined, + metrics: previous ? previous.metrics : undefined, + errorMetrics: previous ? previous.errorMetrics : undefined, + validations: previous ? previous.validations : undefined, + labels: ns.labels, + annotations: ns.annotations, + controlPlaneMetrics: previous ? previous.controlPlaneMetrics : undefined, + }; + }); +}; + +export const OverviewPage = (props: { entity?: boolean }) => { + const kialiClient = useApi(kialiApiRef); + const kialiState = React.useContext(KialiContext) as KialiAppState; + const activeNsName = kialiState.namespaces.activeNamespaces.map( + ns => ns.name, + ); + const prevActiveNs = useRef(activeNsName); + const promises = new PromisesRegistry(); + const [namespaces, setNamespaces] = React.useState([]); + const [outboundTrafficPolicy, setOutboundTrafficPolicy] = + React.useState({}); + const [canaryUpgradeStatus, setCanaryUpgradeStatus] = React.useState< + CanaryUpgradeStatus | undefined + >(undefined); + const [istiodResourceThresholds, setIstiodResourceThresholds] = + React.useState({ memory: 0, cpu: 0 }); + const [duration, setDuration] = React.useState( + FilterHelper.currentDuration(), + ); + const [overviewType, setOverviewType] = React.useState( + currentOverviewType(), + ); + const [directionType, setDirectionType] = React.useState( + currentDirectionType(), + ); + const [activeNs, setActiveNs] = React.useState([]); + + const sortedNamespaces = (nss: NamespaceInfo[]) => { + nss.sort((a, b) => { + if (a.name === serverConfig.istioNamespace) return -1; + if (b.name === serverConfig.istioNamespace) return 1; + return a.name.localeCompare(b.name); + }); + return nss; + }; + + const fetchHealthChunk = async (chunk: NamespaceInfo[]): Promise => { + const apiFunc = switchType( + overviewType, + kialiClient.getNamespaceAppHealth, + kialiClient.getNamespaceServiceHealth, + kialiClient.getNamespaceWorkloadHealth, + ); + + return Promise.all( + chunk.map(async nsInfo => { + const healthPromise: Promise< + NamespaceAppHealth | NamespaceWorkloadHealth | NamespaceServiceHealth + > = apiFunc(nsInfo.name, duration, nsInfo.cluster); + return healthPromise.then(rs => ({ health: rs, nsInfo: nsInfo })); + }), + ) + .then(results => { + results.forEach(result => { + const nsStatus: NamespaceStatus = { + inNotReady: [], + inError: [], + inWarning: [], + inSuccess: [], + notAvailable: [], + }; + Object.keys(result.health).forEach(item => { + const health: Health = result.health[item]; + const status = health.getGlobalStatus(); + if (status === FAILURE) { + nsStatus.inError.push(item); + } else if (status === DEGRADED) { + nsStatus.inWarning.push(item); + } else if (status === HEALTHY) { + nsStatus.inSuccess.push(item); + } else if (status === NOT_READY) { + nsStatus.inNotReady.push(item); + } else { + nsStatus.notAvailable.push(item); + } + }); + result.nsInfo.status = nsStatus; + }); + }) + .catch(err => + kialiState.alertUtils!.add( + `Could not fetch health: ${getErrorString(err)}`, + ), + ); + }; + + const fetchHealth = ( + nss: NamespaceInfo[], + isAscending: boolean, + sortField: SortField, + ): void => { + _.chunk(nss, 10).forEach(chunk => { + promises + .registerChained('healthchunks', undefined, () => + fetchHealthChunk(chunk), + ) + .then(() => { + let newNamespaces = nss.slice(); + if (sortField.id === 'health') { + newNamespaces = Sorts.sortFunc( + newNamespaces, + sortField, + isAscending, + ); + } + return newNamespaces; + }) + .catch(error => { + kialiState.alertUtils!.add( + `Could not fetch health: ${getErrorString(error)}`, + ); + if (error.isCanceled) { + return []; + } + return error; + }); + }); + }; + + const fetchTLSChunk = async (chunk: NamespaceInfo[]): Promise => { + return Promise.all( + chunk.map(async nsInfo => { + return kialiClient + .getNamespaceTls(nsInfo.name, nsInfo.cluster) + .then(rs => ({ status: rs, nsInfo: nsInfo })); + }), + ) + .then(results => { + results.forEach(result => { + result.nsInfo.tlsStatus = { + status: nsWideMTLSStatus( + result.status.status, + kialiState.meshTLSStatus.status, + ), + autoMTLSEnabled: result.status.autoMTLSEnabled, + minTLS: result.status.minTLS, + }; + }); + }) + .catch(err => + kialiState.alertUtils!.add( + `Could not fetch TLS status: ${getErrorString(err)}`, + ), + ); + }; + + const fetchTLS = ( + nss: NamespaceInfo[], + isAscending: boolean, + sortField: SortField, + ): void => { + _.chunk(nss, 10).forEach(chunk => { + promises + .registerChained('tlschunks', undefined, () => fetchTLSChunk(chunk)) + .then(() => { + let newNamespaces = nss.slice(); + if (sortField.id === 'mtls') { + newNamespaces = Sorts.sortFunc( + newNamespaces, + sortField, + isAscending, + ); + } + return newNamespaces; + }); + }); + }; + + const fetchOutboundTrafficPolicyMode = () => { + kialiClient + .getOutboundTrafficPolicyMode() + .then(response => { + setOutboundTrafficPolicy({ mode: response.mode }); + }) + .catch(error => { + kialiState.alertUtils!.addError( + 'Error fetching Mesh OutboundTrafficPolicy.Mode.', + error, + 'default', + MessageType.ERROR, + ); + }); + }; + + const fetchCanariesStatus = () => + kialiClient + .getCanaryUpgradeStatus() + .then(response => { + setCanaryUpgradeStatus({ + currentVersion: response.currentVersion, + upgradeVersion: response.upgradeVersion, + migratedNamespaces: response.migratedNamespaces, + pendingNamespaces: response.pendingNamespaces, + }); + }) + .catch(error => { + kialiState.alertUtils!.addError( + 'Error fetching canary upgrade status.', + error, + 'default', + MessageType.ERROR, + ); + }); + + const fetchIstiodResourceThresholds = () => { + kialiClient + .getIstiodResourceThresholds() + .then(response => setIstiodResourceThresholds(response)) + .catch(error => { + kialiState.alertUtils!.addError( + 'Error fetching Istiod resource thresholds.', + error, + 'default', + MessageType.ERROR, + ); + }); + }; + + const fetchValidationResultForCluster = async ( + nss: NamespaceInfo[], + cluster: string, + ) => { + return Promise.all([ + kialiClient.getConfigValidations(cluster), + kialiClient.getAllIstioConfigs([], [], false, '', '', cluster), + ]) + .then(results => { + nss.forEach(nsInfo => { + if ( + nsInfo.cluster && + nsInfo.cluster === cluster && + (results[0] as any)[nsInfo.cluster] + ) { + // @ts-expect-error + nsInfo.validations = results[0][nsInfo.cluster][nsInfo.name]; + } + if (nsInfo.cluster && nsInfo.cluster === cluster) { + nsInfo.istioConfig = results[1][nsInfo.name]; + } + }); + }) + .catch(err => + kialiState.alertUtils!.add( + `Could not fetch validations status: ${getErrorString(err)}`, + ), + ); + }; + + const fetchValidations = ( + nss: NamespaceInfo[], + isAscending: boolean, + sortField: SortField, + ) => { + const uniqueClusters = new Set(); + nss.forEach(namespace => { + if (namespace.cluster) { + uniqueClusters.add(namespace.cluster); + } + }); + + uniqueClusters.forEach(cluster => { + promises + .registerChained('validation', undefined, () => + fetchValidationResultForCluster(nss, cluster), + ) + .then(() => { + let newNamespaces = nss.slice(); + if (sortField.id === 'validations') { + newNamespaces = Sorts.sortFunc( + newNamespaces, + sortField, + isAscending, + ); + } + return newNamespaces; + }); + }); + }; + + const fetchMetricsChunk = async (chunk: NamespaceInfo[]) => { + const rateParams = computePrometheusRateParams(duration, 10); + const options: IstioMetricsOptions = { + filters: ['request_count', 'request_error_count'], + duration: duration, + step: rateParams.step, + rateInterval: rateParams.rateInterval, + direction: directionType, + reporter: directionType === 'inbound' ? 'destination' : 'source', + }; + return Promise.all( + chunk.map(nsInfo => { + if (nsInfo.cluster && isMultiCluster) { + options.clusterName = nsInfo.cluster; + } + return kialiClient + .getNamespaceMetrics(nsInfo.name, options) + .then(rs => { + nsInfo.metrics = rs.request_count; + nsInfo.errorMetrics = rs.request_error_count; + if (nsInfo.name === serverConfig.istioNamespace) { + nsInfo.controlPlaneMetrics = { + istiod_proxy_time: rs.pilot_proxy_convergence_time, + istiod_container_cpu: rs.container_cpu_usage_seconds_total, + istiod_container_mem: rs.container_memory_working_set_bytes, + istiod_process_cpu: rs.process_cpu_seconds_total, + istiod_process_mem: rs.process_resident_memory_bytes, + }; + } + return nsInfo; + }); + }), + ).catch(err => + kialiState.alertUtils!.add( + `Could not fetch metrics: ${getErrorString(err)}`, + ), + ); + }; + + const filterActiveNamespaces = (nss: NamespaceInfo[]) => { + return nss.filter(ns => activeNsName.includes(ns.name)); + }; + + const fetchMetrics = async (nss: NamespaceInfo[]) => { + // debounce async for back-pressure, ten by ten + _.chunk(nss, 10).forEach(chunk => { + promises + .registerChained('metricschunks', undefined, () => + fetchMetricsChunk(chunk), + ) + .then(() => { + nss.slice(); + setActiveNs(filterActiveNamespaces(nss)); + }); + }); + }; + + const load = async () => { + await kialiClient.getNamespaces().then(namespacesResponse => { + const allNamespaces: NamespaceInfo[] = getNamespaces( + namespacesResponse, + namespaces, + ); + + // Calculate information + const isAscending = FilterHelper.isCurrentSortAscending(); + const sortField = FilterHelper.currentSortField(Sorts.sortFields); + const sortNs = sortedNamespaces(allNamespaces); + if (!props.entity) { + fetchHealth(sortNs, isAscending, sortField); + fetchTLS(sortNs, isAscending, sortField); + fetchValidations(sortNs, isAscending, sortField); + fetchOutboundTrafficPolicyMode(); + fetchCanariesStatus(); + fetchIstiodResourceThresholds(); + } + fetchMetrics(sortNs); + promises.waitAll(); + setNamespaces(sortNs); + }); + }; + + React.useEffect(() => { + if (!nsEqual(activeNsName, prevActiveNs.current)) { + prevActiveNs.current = activeNsName; + load(); + } + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [activeNsName]); + + React.useEffect(() => { + load(); + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [duration, overviewType, directionType]); + + if (namespaces.length === 0) { + return ; + } + + return ( + <> + {props.entity ? ( +
    + + {activeNs.map(ns => ( + + + + ))} + +
    + ) : ( +
    + + load()} + overviewType={overviewType} + setOverviewType={setOverviewType} + directionType={directionType} + setDirectionType={setDirectionType} + duration={duration} + setDuration={setDuration} + /> + + {activeNs.map((ns, i) => ( + + + + ))} + + +
    + )} + + ); +}; diff --git a/workspaces/kiali/plugins/kiali/src/pages/Overview/OverviewStatus.tsx b/workspaces/kiali/plugins/kiali/src/pages/Overview/OverviewStatus.tsx new file mode 100644 index 0000000000..a81c269c7f --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/pages/Overview/OverviewStatus.tsx @@ -0,0 +1,97 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import * as React from 'react'; + +import { Tooltip } from '@material-ui/core'; + +import { healthFilter } from '../../components/Filters/CommonFilters'; +import { FilterSelected } from '../../components/Filters/StatefulFilters'; +import { healthIndicatorStyle } from '../../components/Health/HealthStyle'; +import { createIcon } from '../../components/Health/Helper'; +import { Paths } from '../../config'; +import { DurationInSeconds, IntervalInMilliseconds } from '../../types/Common'; +import { ActiveFilter, DEFAULT_LABEL_OPERATION } from '../../types/Filters'; +import { Status } from '../../types/Health'; + +type Props = { + id: string; + namespace: string; + status: Status; + items: string[]; + targetPage: Paths; + duration: DurationInSeconds; + refreshInterval: IntervalInMilliseconds; +}; + +export class OverviewStatus extends React.Component { + setFilters = () => { + const filters: ActiveFilter[] = [ + { + category: healthFilter.category, + value: this.props.status.name, + }, + ]; + FilterSelected.setSelected({ + filters: filters, + op: DEFAULT_LABEL_OPERATION, + }); + }; + + render() { + const length = this.props.items.length; + let items = this.props.items; + if (items.length > 6) { + items = items.slice(0, 5); + items.push(`and ${length - items.length} more...`); + } + const tooltipContent = ( +
    + + {this.props.status.name} + + {items.map((app, idx) => { + return ( +
    + + {createIcon(this.props.status, 'sm')} + {' '} + {app} +
    + ); + })} +
    + ); + + return ( + <> + +
    + {createIcon(this.props.status)} + {` ${length}`} +
    +
    + + ); + } +} diff --git a/workspaces/kiali/plugins/kiali/src/pages/Overview/OverviewToolbar.tsx b/workspaces/kiali/plugins/kiali/src/pages/Overview/OverviewToolbar.tsx new file mode 100644 index 0000000000..eb26830aa6 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/pages/Overview/OverviewToolbar.tsx @@ -0,0 +1,144 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import React from 'react'; + +import { Select, SelectItem } from '@backstage/core-components'; + +import { HistoryManager, URLParam } from '../../app/History'; +import { DefaultSecondaryMasthead } from '../../components/DefaultSecondaryMasthead/DefaultSecondaryMasthead'; +import { TimeDurationComponent } from '../../components/Time/TimeDurationComponent'; +import { serverConfig } from '../../config'; + +export enum OverviewDisplayMode { + COMPACT, + EXPAND, + LIST, +} + +const overviewTypes = { + app: 'Apps', + workload: 'Workloads', + service: 'Services', +}; + +const directionTypes = { + inbound: 'Inbound', + outbound: 'Outbound', +}; + +export type OverviewType = keyof typeof overviewTypes; +export type DirectionType = keyof typeof directionTypes; + +type OverviewToolbarProps = { + onRefresh: () => void; + overviewType: OverviewType; + setOverviewType: React.Dispatch>; + directionType: DirectionType; + setDirectionType: React.Dispatch>; + duration: number; + setDuration: React.Dispatch>; +}; + +const healthTypeItems = Object.keys(overviewTypes).map(k => ({ + label: (overviewTypes as any)[k], + value: k, +})); + +const directionTypeItems = Object.keys(directionTypes).map(k => ({ + label: (directionTypes as any)[k], + value: k, +})); + +export const currentOverviewType = (): OverviewType => { + const otype = HistoryManager.getParam(URLParam.OVERVIEW_TYPE); + return (otype as OverviewType) || 'app'; +}; + +export const currentDirectionType = (): DirectionType => { + const drtype = HistoryManager.getParam(URLParam.DIRECTION_TYPE); + return (drtype as DirectionType) || 'inbound'; +}; + +export const getDurationType = (): SelectItem[] => { + const items: SelectItem[] = []; + Object.entries(serverConfig.durations).forEach(([key, value]) => + items.push({ + label: `Last ${value}`, + value: key, + }), + ); + return items; +}; + +export const OverviewToolbar = (props: OverviewToolbarProps) => { + const updateOverviewType = (otype: String) => { + const isOverviewType = (val: String): val is OverviewType => + val === 'app' || val === 'workload' || val === 'service'; + + if (isOverviewType(otype)) { + HistoryManager.setParam(URLParam.OVERVIEW_TYPE, otype); + props.setOverviewType(otype); + } else { + throw new Error('Overview type is not valid.'); + } + }; + + const updateDirectionType = (dtype: String) => { + const isDirectionType = (val: String): val is DirectionType => + val === 'inbound' || val === 'outbound'; + + if (isDirectionType(dtype)) { + HistoryManager.setParam(URLParam.DIRECTION_TYPE, dtype); + props.setDirectionType(dtype); + } else { + throw new Error('Direction type is not valid.'); + } + }; + + const grids = () => { + const elements = []; + elements.push( + updateDirectionType(e as String)} + label="Traffic" + items={directionTypeItems} + selected={props.directionType} + />, + , + ); + return elements; + }; + + return ( + props.onRefresh} + /> + ); +}; diff --git a/workspaces/kiali/plugins/kiali/src/pages/Overview/Sorts.ts b/workspaces/kiali/plugins/kiali/src/pages/Overview/Sorts.ts new file mode 100644 index 0000000000..6cfbe2e304 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/pages/Overview/Sorts.ts @@ -0,0 +1,139 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { serverConfig } from '../../config'; +import { SortField } from '../../types/SortFilters'; +import { NamespaceInfo } from './NamespaceInfo'; + +export const sortFields: SortField[] = [ + { + id: 'namespace', + title: 'Name', + isNumeric: false, + param: 'ns', + compare: (a: NamespaceInfo, b: NamespaceInfo) => + a.name.localeCompare(b.name), + }, + { + id: 'health', + title: 'Health', + isNumeric: false, + param: 'h', + compare: (a: NamespaceInfo, b: NamespaceInfo) => { + if (a.status && b.status) { + let diff = b.status.inError.length - a.status.inError.length; + if (diff !== 0) { + return diff; + } + diff = b.status.inWarning.length - a.status.inWarning.length; + if (diff !== 0) { + return diff; + } + } else if (a.status) { + return -1; + } else if (b.status) { + return 1; + } + // default comparison fallback + return a.name.localeCompare(b.name); + }, + }, + { + id: 'mtls', + title: 'mTLS', + isNumeric: false, + param: 'm', + compare: (a: NamespaceInfo, b: NamespaceInfo) => { + if (a.tlsStatus && b.tlsStatus) { + return a.tlsStatus.status.localeCompare(b.tlsStatus.status); + } else if (a.tlsStatus) { + return -1; + } else if (b.tlsStatus) { + return 1; + } + + // default comparison fallback + return a.name.localeCompare(b.name); + }, + }, + { + id: 'config', + title: 'Istio Config', + isNumeric: false, + param: 'ic', + compare: (a: NamespaceInfo, b: NamespaceInfo) => { + if (a.validations && b.validations) { + if (a.validations.errors === b.validations.errors) { + if (a.validations.warnings === b.validations.warnings) { + if (a.validations.objectCount && b.validations.objectCount) { + if (a.validations.objectCount === b.validations.objectCount) { + // If all equal, use name for sorting + return a.name.localeCompare(b.name); + } + return a.validations.objectCount > b.validations.objectCount + ? -1 + : 1; + } else if (a.validations.objectCount) { + return -1; + } else if (b.validations.objectCount) { + return 1; + } + } else { + return a.validations.warnings > b.validations.warnings ? -1 : 1; + } + } else { + return a.validations.errors > b.validations.errors ? -1 : 1; + } + } else if (a.validations) { + return -1; + } else if (b.validations) { + return 1; + } + + // default comparison fallback + return a.name.localeCompare(b.name); + }, + }, + { + id: 'cluster', + title: 'Cluster', + isNumeric: false, + param: 'cl', + compare: (a: NamespaceInfo, b: NamespaceInfo) => { + if (a.cluster && b.cluster) { + let sortValue = a.cluster.localeCompare(b.cluster); + if (sortValue === 0) { + sortValue = a.name.localeCompare(b.name); + } + return sortValue; + } + return 0; + }, + }, +]; + +export const sortFunc = ( + allNamespaces: NamespaceInfo[], + sortField: SortField, + isAscending: boolean, +) => { + const sortedNamespaces = allNamespaces + .filter(ns => ns.name !== serverConfig.istioNamespace) + .sort(isAscending ? sortField.compare : (a, b) => sortField.compare(b, a)); + + return allNamespaces + .filter(ns => ns.name === serverConfig.istioNamespace) + .concat(sortedNamespaces); +}; diff --git a/workspaces/kiali/plugins/kiali/src/pages/ServiceDetails/ServiceDescription.tsx b/workspaces/kiali/plugins/kiali/src/pages/ServiceDetails/ServiceDescription.tsx new file mode 100644 index 0000000000..97e34a9152 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/pages/ServiceDetails/ServiceDescription.tsx @@ -0,0 +1,259 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import * as React from 'react'; + +import { + Card, + CardContent, + CardHeader, + Tooltip, + Typography, +} from '@material-ui/core'; + +import { DetailDescription } from '../../components/DetailDescription/DetailDescription'; +import { HealthIndicator } from '../../components/Health/HealthIndicator'; +import { Labels } from '../../components/Label/Labels'; +import { renderAPILogo } from '../../components/Logos/Logos'; +import { PFBadge, PFBadges } from '../../components/Pf/PfBadges'; +import { TextOrLink } from '../../components/TextOrLink'; +import { LocalTime } from '../../components/Time/LocalTime'; +import { isMultiCluster, serverConfig } from '../../config'; +import { KialiIcon } from '../../config/KialiIcon'; +import { cardsHeight, kialiStyle } from '../../styles/StyleUtils'; +import { AppWorkload } from '../../types/App'; +import { ServiceDetailsInfo, WorkloadOverview } from '../../types/ServiceInfo'; + +interface ServiceInfoDescriptionProps { + namespace: string; + serviceDetails?: ServiceDetailsInfo; + view?: string; +} + +const resourceListStyle = kialiStyle({ + marginBottom: '0.75rem', + $nest: { + '& > ul > li span': { + float: 'left', + width: '125px', + fontWeight: 700, + }, + }, +}); + +const iconStyle = kialiStyle({ + display: 'inline-block', +}); + +const infoStyle = kialiStyle({ + marginLeft: '0.5rem', + verticalAlign: '-0.125rem', +}); + +const healthIconStyle = kialiStyle({ + marginLeft: '0.5rem', + verticalAlign: '-0.075rem', +}); + +const additionalItemStyle = kialiStyle({ + display: 'flex', + alignItems: 'center', +}); + +export const ServiceDescription: React.FC = ( + props: ServiceInfoDescriptionProps, +) => { + const apps: string[] = []; + const workloads: AppWorkload[] = []; + + if (props.serviceDetails) { + if (props.serviceDetails.workloads) { + props.serviceDetails.workloads + .sort((w1: WorkloadOverview, w2: WorkloadOverview) => + w1.name < w2.name ? -1 : 1, + ) + .forEach(wk => { + if (wk.labels) { + const appName = wk.labels[serverConfig.istioLabels.appLabelName]; + + if (!apps.includes(appName)) { + apps.push(appName); + } + } + + workloads.push({ + workloadName: wk.name, + istioSidecar: wk.istioSidecar, + istioAmbient: wk.istioAmbient, + serviceAccountNames: wk.serviceAccountNames, + labels: wk.labels ?? {}, + }); + }); + } + } + + // We will show service labels only when there is some label that is not present in the selector + let showServiceLabels = false; + + if ( + props.serviceDetails && + props.serviceDetails.service?.labels && + props.serviceDetails.service?.selectors + ) { + const keys = Object.keys(props.serviceDetails.service.labels); + + for (let i = 0; i < keys.length; i++) { + const key = keys[i]; + const value = props.serviceDetails.service.labels[key]; + + if (props.serviceDetails.service.selectors[key] !== value) { + showServiceLabels = true; + break; + } + } + } + + const serviceProperties = ( +
    +
      + {props.serviceDetails && ( +
    • + Created + +
      + +
      +
    • + )} + + {props.serviceDetails && ( +
    • + Version + {props.serviceDetails.service?.resourceVersion} +
    • + )} + + {props.serviceDetails?.service?.additionalDetails?.map( + (additionalItem, idx) => { + return ( +
    • +
      + {additionalItem.title} + {additionalItem.icon && + renderAPILogo(additionalItem.icon, undefined, idx)} +
      + +
    • + ); + }, + )} +
    +
    + ); + + const serviceName = props.serviceDetails + ? props.serviceDetails.service?.name + : 'Service'; + let serviceBadge = PFBadges.Service; + + if (props.serviceDetails && props.serviceDetails.service) { + switch (props.serviceDetails.service.type) { + case 'External': + serviceBadge = PFBadges.ExternalService; + break; + case 'Federation': + serviceBadge = PFBadges.FederatedService; + break; + default: + serviceBadge = PFBadges.Service; + } + } + + return ( + + + +
    + +
    + + {serviceName} + + {serviceProperties} + } + > + <> + + + + + + + +
    + + {props.serviceDetails?.cluster && isMultiCluster && ( +
    + {' '} + {props.serviceDetails.cluster} +
    + )} + + } + /> + + + {props.serviceDetails && showServiceLabels && ( + + )} + + {props.serviceDetails && ( + + )} + + + +
    + ); +}; diff --git a/workspaces/kiali/plugins/kiali/src/pages/ServiceDetails/ServiceDetailsPage.tsx b/workspaces/kiali/plugins/kiali/src/pages/ServiceDetails/ServiceDetailsPage.tsx new file mode 100644 index 0000000000..4b27127f1d --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/pages/ServiceDetails/ServiceDetailsPage.tsx @@ -0,0 +1,262 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import * as React from 'react'; +import { useLocation } from 'react-router-dom'; +import { useAsyncFn, useDebounce } from 'react-use'; + +import { Content, EmptyState } from '@backstage/core-components'; +import { useApi } from '@backstage/core-plugin-api'; + +import { CircularProgress, Tab, Tabs } from '@material-ui/core'; + +import { HistoryManager } from '../../app/History'; +import { + BreadcrumbView, + getPath, +} from '../../components/BreadcrumbView/BreadcrumbView'; +import { DefaultSecondaryMasthead } from '../../components/DefaultSecondaryMasthead/DefaultSecondaryMasthead'; +import * as FilterHelper from '../../components/FilterList/FilterHelper'; +import { IstioMetrics } from '../../components/Metrics/IstioMetrics'; +import { a11yProps, TabPanel, useStyles } from '../../components/Tab/TabPanel'; +import { TimeDurationComponent } from '../../components/Time/TimeDurationComponent'; +import { getErrorString, kialiApiRef } from '../../services/Api'; +import { KialiContext } from '../../store'; +import { KialiAppState } from '../../store/Store'; +import { baseStyle } from '../../styles/StyleUtils'; +import { + Gateway, + K8sGateway, + PeerAuthentication, + Validations, +} from '../../types/IstioObjects'; +import { MetricsObjectTypes } from '../../types/Metrics'; +import { ServiceDetailsInfo } from '../../types/ServiceInfo'; +import { ServiceInfo } from './ServiceInfo'; + +export const ServiceDetailsPage = (props: { entity?: boolean }) => { + const path = getPath(useLocation()); + const namespace = path.namespace; + const service = path.item; + const kialiClient = useApi(kialiApiRef); + const kialiState = React.useContext(KialiContext) as KialiAppState; + const [serviceItem, setServiceItem] = React.useState(); + const [duration, setDuration] = React.useState( + FilterHelper.currentDuration(), + ); + const cluster = HistoryManager.getClusterName(); + const [validations, setValidations] = React.useState(); + const [gateways, setGateways] = React.useState([]); + const [k8sGateways, setK8sGateways] = React.useState([]); + const [error, setError] = React.useState(); + const [peerAuthentication, setPeerAuthentication] = React.useState< + PeerAuthentication[] + >([]); + const [value, setValue] = React.useState(0); + const classes = useStyles(); + + const grids = () => { + const elements = []; + elements.push( + , + ); + return elements; + }; + + const fetchIstioObjects = async () => { + kialiClient + .getAllIstioConfigs( + [namespace ? namespace : ''], + ['gateways', 'k8sgateways', 'peerauthentications'], + false, + '', + '', + cluster, + ) + .then(response => { + const gws: Gateway[] = []; + const k8sGws: K8sGateway[] = []; + const peer: PeerAuthentication[] = []; + Object.values(response.data).forEach(item => { + gws.push(...item.gateways); + k8sGws.push(...item.k8sGateways); + peer.push(...item.peerAuthentication); + }); + setGateways(gws); + setK8sGateways(k8sGws); + setPeerAuthentication(peer); + }) + .catch(gwError => { + kialiState.alertUtils!.add( + `Could not fetch Gateways list: ${getErrorString(gwError)}`, + ); + }); + }; + + const fetchService = async () => { + if (!namespace || !service) { + setError(`Could not fetch service: Empty namespace or service name`); + kialiState.alertUtils?.add( + `Could not fetch service: Empty namespace or service name`, + ); + return; + } + + kialiClient + .getServiceDetail( + namespace ? namespace : '', + service ? service : '', + true, + cluster, + duration, + ) + .then((serviceResponse: ServiceDetailsInfo) => { + setServiceItem(serviceResponse); + setValidations(serviceResponse.validations); + fetchIstioObjects(); + }) + .catch(err => { + setError(`Could not fetch service: ${getErrorString(err)}`); + kialiState.alertUtils!.add( + `Could not fetch service: ${getErrorString(err)}`, + ); + }); + }; + + const [{ loading }, refresh] = useAsyncFn( + async () => { + // Check if the config is loaded + await fetchService(); + }, + [], + { loading: true }, + ); + useDebounce(refresh, 10); + + if (loading) { + return ; + } + + const overviewTab = (): React.ReactElement => { + return ( + <> + {serviceItem && ( + + )} + + ); + }; + + const inboundTab = (): React.ReactElement => { + return ( + <> + {namespace && service && ( + + )} + + ); + }; + + const outboundTab = (): React.ReactElement => { + return ( + <> + {namespace && service && ( + + )} + + ); + }; + + const handleChange = ( + _event: any, + newValue: React.SetStateAction, + ) => { + setValue(newValue); + }; + + return ( +
    + + + fetchService()} + /> + {error !== undefined && ( + No Service found
    } + /> + )} +
    + + + + + + + {overviewTab()} + + + {inboundTab()} + + + {outboundTab()} + +
    + + + ); +}; diff --git a/workspaces/kiali/plugins/kiali/src/pages/ServiceDetails/ServiceInfo.tsx b/workspaces/kiali/plugins/kiali/src/pages/ServiceDetails/ServiceInfo.tsx new file mode 100644 index 0000000000..795c68b857 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/pages/ServiceDetails/ServiceInfo.tsx @@ -0,0 +1,164 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import React from 'react'; + +import { Grid } from '@material-ui/core'; + +import { IstioConfigCard } from '../../components/IstioConfigCard/IstioConfigCard'; +import { DurationInSeconds } from '../../types/Common'; +import { + drToIstioItems, + gwToIstioItems, + k8sGwToIstioItems, + k8sHTTPRouteToIstioItems, + seToIstioItems, + validationKey, + vsToIstioItems, +} from '../../types/IstioConfigList'; +import { + Gateway, + K8sGateway, + ObjectValidation, + PeerAuthentication, + Validations, +} from '../../types/IstioObjects'; +import { ServiceId } from '../../types/ServiceId'; +import { ServiceDetailsInfo } from '../../types/ServiceInfo'; +import { DRAWER, ENTITY } from '../../types/types'; +import { ServiceDescription } from './ServiceDescription'; +import { ServiceNetwork } from './ServiceNetwork'; + +interface Props extends ServiceId { + cluster?: string; + duration: DurationInSeconds; + serviceDetails?: ServiceDetailsInfo; + gateways: Gateway[]; + k8sGateways: K8sGateway[]; + peerAuthentications: PeerAuthentication[]; + validations: Validations; + istioAPIEnabled: boolean; + view?: string; +} + +export const ServiceInfo = (serviceProps: Props) => { + const getServiceValidation = (): ObjectValidation | undefined => { + if ( + serviceProps.validations && + serviceProps.validations.service && + serviceProps.serviceDetails + ) { + return serviceProps.validations.service[ + validationKey( + serviceProps.serviceDetails.service.name, + serviceProps.namespace, + ) + ]; + } + return undefined; + }; + + const vsIstioConfigItems = serviceProps.serviceDetails?.virtualServices + ? vsToIstioItems( + serviceProps.serviceDetails.virtualServices, + serviceProps.serviceDetails.validations, + serviceProps.cluster, + ) + : []; + const drIstioConfigItems = serviceProps.serviceDetails?.destinationRules + ? drToIstioItems( + serviceProps.serviceDetails.destinationRules, + serviceProps.serviceDetails.validations, + serviceProps.cluster, + ) + : []; + const gwIstioConfigItems = + serviceProps?.gateways && serviceProps.serviceDetails?.virtualServices + ? gwToIstioItems( + serviceProps?.gateways, + serviceProps.serviceDetails.virtualServices, + serviceProps.serviceDetails.validations, + serviceProps.cluster, + ) + : []; + const k8sGwIstioConfigItems = + serviceProps?.k8sGateways && serviceProps.serviceDetails?.k8sHTTPRoutes + ? k8sGwToIstioItems( + serviceProps?.k8sGateways, + serviceProps.serviceDetails.k8sHTTPRoutes, + serviceProps.serviceDetails.validations, + serviceProps.cluster, + ) + : []; + const seIstioConfigItems = serviceProps.serviceDetails?.serviceEntries + ? seToIstioItems( + serviceProps.serviceDetails.serviceEntries, + serviceProps.serviceDetails.validations, + serviceProps.cluster, + ) + : []; + const k8sHTTPRouteIstioConfigItems = serviceProps.serviceDetails + ?.k8sHTTPRoutes + ? k8sHTTPRouteToIstioItems( + serviceProps.serviceDetails.k8sHTTPRoutes, + serviceProps.serviceDetails.validations, + serviceProps.cluster, + ) + : []; + const istioConfigItems = seIstioConfigItems.concat( + gwIstioConfigItems.concat( + k8sGwIstioConfigItems.concat( + vsIstioConfigItems.concat( + drIstioConfigItems.concat(k8sHTTPRouteIstioConfigItems), + ), + ), + ), + ); + + const size = + serviceProps.view === ENTITY || serviceProps.view === DRAWER ? 12 : 4; + return ( + <> + {serviceProps.serviceDetails && ( + + + + + {serviceProps.view !== DRAWER && ( + <> + + + + + + + + )} + + )} + + ); +}; diff --git a/workspaces/kiali/plugins/kiali/src/pages/ServiceDetails/ServiceNetwork.tsx b/workspaces/kiali/plugins/kiali/src/pages/ServiceDetails/ServiceNetwork.tsx new file mode 100644 index 0000000000..90730c3e2f --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/pages/ServiceDetails/ServiceNetwork.tsx @@ -0,0 +1,272 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import * as React from 'react'; + +import { + Card, + CardContent, + CardHeader, + Tooltip, + Typography, +} from '@material-ui/core'; + +import { ValidationList } from '../../components/Validations/ValidationList'; +import { KialiIcon } from '../../config/KialiIcon'; +import { cardsHeight, kialiStyle } from '../../styles/StyleUtils'; +import { + Gateway, + ObjectCheck, + ObjectValidation, + VirtualService, +} from '../../types/IstioObjects'; +import { ServiceDetailsInfo } from '../../types/ServiceInfo'; + +type ServiceNetworkProps = { + gateways: Gateway[]; + serviceDetails: ServiceDetailsInfo; + validations?: ObjectValidation; +}; + +type HostnameInfo = { + hostname: string; + fromType: string | undefined; + fromName: string | undefined; +}; + +const resourceListStyle = kialiStyle({ + $nest: { + '& > ul > li > span': { + float: 'left', + width: '125px', + fontWeight: 700, + }, + }, +}); + +const infoStyle = kialiStyle({ + marginLeft: '0.25rem', +}); + +export const ServiceNetwork: React.FC = ( + props: ServiceNetworkProps, +) => { + const getPortChecks = (portId: number): ObjectCheck[] => { + return props.validations + ? props.validations.checks.filter(c => c.path === `spec/ports[${portId}]`) + : []; + }; + + const getPortOver = (portId: number): React.ReactNode => { + return ; + }; + + const hasIssue = (portId: number): boolean => { + return getPortChecks(portId).length > 0; + }; + + const getHostnames = (virtualServices: VirtualService[]): HostnameInfo[] => { + const hostnames: HostnameInfo[] = []; + + virtualServices.forEach(vs => { + vs.spec.hosts?.forEach(host => { + if (host === '*') { + vs.spec.gateways?.forEach(vsGatewayName => { + const vsGateways = props.gateways.filter(gateway => { + return gateway.metadata.name === vsGatewayName; + }); + + vsGateways.forEach(vsGateway => { + vsGateway.spec.servers?.forEach(servers => { + servers.hosts.forEach(hostS => { + hostnames.push({ + hostname: hostS, + fromType: vsGateway.kind, + fromName: vsGateway.metadata.name, + }); + }); + }); + }); + }); + } else { + hostnames.push({ + hostname: host, + fromType: vs.kind, + fromName: vs.metadata.name, + }); + } + }); + }); + + // If there is a wildcard, then it will display only one, the first match + for (const hostnameInfo of hostnames) { + if (hostnameInfo.hostname === '*') { + return [hostnameInfo]; + } + } + + return hostnames; + }; + + return ( + + Network} /> + +
    +
      +
    • + Type + {props.serviceDetails.service?.type} +
    • + + {props.serviceDetails.service && + props.serviceDetails.service?.type !== 'External' && ( +
    • + + {props.serviceDetails.service.type !== 'ExternalName' + ? 'Service IP' + : 'ExternalName'} + + {/* eslint-disable-next-line no-nested-ternary */} + {props.serviceDetails.service.type !== 'ExternalName' + ? props.serviceDetails.service.ip + ? props.serviceDetails.service.ip + : '' + : props.serviceDetails.service.externalName + ? props.serviceDetails.service.externalName + : ''} +
    • + )} + + {props.serviceDetails.endpoints && + props.serviceDetails.endpoints.length > 0 && ( +
    • + Endpoints +
      + {(props.serviceDetails.endpoints ?? []).map( + (endpoint, i) => { + return (endpoint.addresses ?? []).map((address, u) => ( +
      + {address.name !== '' ? ( + + {address.kind}: {address.name} +
      + } + > + + {address.ip}{' '} + + + + ) : ( + <>{address.name} + )} +
      + )); + }, + )} +
    + + )} + + {props.serviceDetails.service && + props.serviceDetails.service.ports && + props.serviceDetails.service.ports.length > 0 && ( +
  5. + Ports +
    + {(props.serviceDetails.service.ports ?? []).map( + (port, i) => { + return ( +
    +
    + + {port.name} {port.port} + + {hasIssue(i) ? getPortOver(i) : undefined} + {port.appProtocol && port.appProtocol !== '' ? ( + + App Protocol: {port.appProtocol} +
    + } + > + + + + + ) : undefined} +
    +
    ({port.protocol})
    +
    + ); + }, + )} + +
  6. + )} + + {props.serviceDetails.virtualServices?.length > 0 && ( +
  7. + Hostnames +
    + {getHostnames(props.serviceDetails.virtualServices).map( + (hostname, i) => { + return ( +
    + + {hostname.fromType} {hostname.fromName}:{' '} + {hostname.hostname} +
    + } + > +
    + + {hostname.hostname} + + + + +
    + +
    + ); + }, + )} + +
  8. + )} + + +
    +
    + ); +}; diff --git a/workspaces/kiali/plugins/kiali/src/pages/ServiceList/FiltersAndSorts.ts b/workspaces/kiali/plugins/kiali/src/pages/ServiceList/FiltersAndSorts.ts new file mode 100644 index 0000000000..59aec6ea73 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/pages/ServiceList/FiltersAndSorts.ts @@ -0,0 +1,376 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { TextInputTypes } from '@patternfly/react-core'; + +import { + filterByHealth, + getFilterSelectedValues, + getPresenceFilterValue, + healthFilter, + istioSidecarFilter, + labelFilter, +} from '../../components/Filters/CommonFilters'; +import { hasMissingSidecar } from '../../components/VirtualList/Config'; +import { serverConfig } from '../../config'; +import { filterByLabel } from '../../helpers/LabelFilterHelper'; +import { calculateErrorRate } from '../../types/ErrorRate'; +import { + ActiveFiltersInfo, + AllFilterTypes, + FILTER_ACTION_APPEND, + FilterType, + ToggleType, +} from '../../types/Filters'; +import { hasHealth } from '../../types/Health'; +import { ServiceListItem } from '../../types/ServiceList'; +import { SortField } from '../../types/SortFilters'; +import { compareObjectReferences } from '../AppList/FiltersAndSorts'; +import { istioConfigTypeFilter } from '../IstioConfigList/FiltersAndSorts'; + +export const compareValidations = < + T extends { validation?: any; name: string }, +>( + a: T, + b: T, +): number => { + let sortValue = -1; + if (a.validation && !b.validation) { + sortValue = -1; + } else if (!a.validation && b.validation) { + sortValue = 1; + } else if (!a.validation && !b.validation) { + sortValue = 0; + } else if (a.validation && b.validation) { + if (a.validation.valid && !b.validation.valid) { + sortValue = -1; + } else if (!a.validation.valid && b.validation.valid) { + sortValue = 1; + } else if (a.validation.valid && b.validation.valid) { + sortValue = a.validation.checks.length - b.validation.checks.length; + } else if (!a.validation.valid && !b.validation.valid) { + sortValue = b.validation.checks.length - a.validation.checks.length; + } + } + + return sortValue || a.name.localeCompare(b.name); +}; + +export const sortFields: SortField[] = [ + { + id: 'namespace', + title: 'Namespace', + isNumeric: false, + param: 'ns', + compare: (a: ServiceListItem, b: ServiceListItem) => { + let sortValue = a.namespace.localeCompare(b.namespace); + if (sortValue === 0) { + sortValue = a.name.localeCompare(b.name); + } + return sortValue; + }, + }, + { + id: 'servicename', + title: 'Service Name', + isNumeric: false, + param: 'sn', + compare: (a: ServiceListItem, b: ServiceListItem) => + a.name.localeCompare(b.name), + }, + { + id: 'details', + title: 'Details', + isNumeric: false, + param: 'is', + compare: (a: ServiceListItem, b: ServiceListItem) => { + // First sort by missing sidecar + const aSC = hasMissingSidecar(a) ? 1 : 0; + const bSC = hasMissingSidecar(b) ? 1 : 0; + if (aSC !== bSC) { + return aSC - bSC; + } + + // Second by Details + const iRefA = a.istioReferences; + const iRefB = b.istioReferences; + const cmpRefs = compareObjectReferences(iRefA, iRefB); + if (cmpRefs !== 0) { + return cmpRefs; + } + + // Then by additional details + const iconA = a.additionalDetailSample && a.additionalDetailSample.icon; + const iconB = b.additionalDetailSample && b.additionalDetailSample.icon; + if (iconA || iconB) { + if (iconA && iconB) { + const cmp = iconA.localeCompare(iconB); + if (cmp !== 0) { + return cmp; + } + } else { + // Make asc => icon absence is last + return iconA ? -1 : 1; + } + } + // Finally by name + return a.name.localeCompare(b.name); + }, + }, + { + id: 'health', + title: 'Health', + isNumeric: false, + param: 'he', + compare: (a, b) => { + if (hasHealth(a) && hasHealth(b)) { + const statusForA = a.health.getGlobalStatus(); + const statusForB = b.health.getGlobalStatus(); + + if (statusForA.priority === statusForB.priority) { + // If both services have same health status, use error rate to determine order. + const ratioA = calculateErrorRate( + a.namespace, + a.name, + 'service', + a.health.requests, + ).errorRatio.global.status.value; + const ratioB = calculateErrorRate( + b.namespace, + b.name, + 'service', + b.health.requests, + ).errorRatio.global.status.value; + return ratioA === ratioB + ? a.name.localeCompare(b.name) + : ratioB - ratioA; + } + + return statusForB.priority - statusForA.priority; + } + return 0; + }, + }, + { + id: 'configvalidation', + title: 'Config', + isNumeric: false, + param: 'cv', + compare: (a: ServiceListItem, b: ServiceListItem) => + compareValidations(a, b), + }, + { + id: 'cluster', + title: 'Cluster', + isNumeric: false, + param: 'cl', + compare: (a: ServiceListItem, b: ServiceListItem) => { + if (a.cluster && b.cluster) { + let sortValue = a.cluster.localeCompare(b.cluster); + if (sortValue === 0) { + sortValue = a.name.localeCompare(b.name); + } + return sortValue; + } + return 0; + }, + }, +]; + +const serviceNameFilter: FilterType = { + category: 'Service Name', + placeholder: 'Filter by Service Name', + filterType: TextInputTypes.text, + action: FILTER_ACTION_APPEND, + filterValues: [], +}; + +const serviceTypeFilter: FilterType = { + category: 'Service Type', + placeholder: 'Filter by Service Type', + filterType: AllFilterTypes.typeAhead, + action: FILTER_ACTION_APPEND, + filterValues: [ + { + id: 'Kubernetes', + title: 'Kubernetes', + }, + { + id: 'External', + title: 'External', + }, + { + id: 'Federation', + title: 'Federation', + }, + ], +}; + +export const availableFilters: FilterType[] = [ + serviceNameFilter, + serviceTypeFilter, + istioConfigTypeFilter, + istioSidecarFilter, + healthFilter, + labelFilter, +]; + +const filterByIstioSidecar = ( + items: ServiceListItem[], + istioSidecar: boolean, +): ServiceListItem[] => { + return items.filter(item => item.istioSidecar === istioSidecar); +}; + +const filterByName = ( + items: ServiceListItem[], + names: string[], +): ServiceListItem[] => { + return items.filter(item => { + let serviceNameFiltered = true; + if (names.length > 0) { + serviceNameFiltered = false; + for (let i = 0; i < names.length; i++) { + if (item.name.includes(names[i])) { + serviceNameFiltered = true; + break; + } + } + } + return serviceNameFiltered; + }); +}; + +const filterByServiceType = ( + items: ServiceListItem[], + serviceTypes: string[], +): ServiceListItem[] => { + return items.filter(item => { + let serviceTypeFiltered = true; + if (serviceTypes.length > 0) { + serviceTypeFiltered = false; + for (let i = 0; i < serviceTypes.length; i++) { + if (item.serviceRegistry.includes(serviceTypes[i])) { + serviceTypeFiltered = true; + break; + } + } + } + return serviceTypeFiltered; + }); +}; + +const filterByIstioType = ( + items: ServiceListItem[], + istioTypes: string[], +): ServiceListItem[] => { + return items.filter( + item => + item.istioReferences.filter(ref => istioTypes.includes(ref.objectType)) + .length !== 0, + ); +}; + +export const filterBy = ( + items: ServiceListItem[], + filters: ActiveFiltersInfo, +): ServiceListItem[] => { + let ret = items; + const istioSidecar = getPresenceFilterValue(istioSidecarFilter, filters); + if (istioSidecar !== undefined) { + ret = filterByIstioSidecar(ret, istioSidecar); + } + + const serviceNamesSelected = getFilterSelectedValues( + serviceNameFilter, + filters, + ); + if (serviceNamesSelected.length > 0) { + ret = filterByName(ret, serviceNamesSelected); + } + + const serviceTypeSelected = getFilterSelectedValues( + serviceTypeFilter, + filters, + ); + if (serviceTypeSelected.length > 0) { + ret = filterByServiceType(ret, serviceTypeSelected); + } + + const serviceFilterSelected = getFilterSelectedValues(labelFilter, filters); + if (serviceFilterSelected.length > 0) { + ret = filterByLabel( + ret, + serviceFilterSelected, + filters.op, + ) as ServiceListItem[]; + } + // We may have to perform a second round of filtering, using data fetched asynchronously (health) + // If not, exit fast + const healthSelected = getFilterSelectedValues(healthFilter, filters); + if (healthSelected.length > 0) { + return filterByHealth(ret, healthSelected); + } + + const istioTypeSelected = getFilterSelectedValues( + istioConfigTypeFilter, + filters, + ); + if (istioTypeSelected.length > 0) { + return filterByIstioType(ret, istioTypeSelected); + } + return ret; +}; + +/** Column Toggle Method */ + +const configurationToggle: ToggleType = { + label: 'Configuration Validation', + name: 'configuration', + isChecked: true, +}; + +const healthToggle: ToggleType = { + label: 'Health', + name: 'health', + isChecked: true, +}; + +const istioResourcesToggle: ToggleType = { + label: 'Istio Resources Detail', + name: 'istioResources', + isChecked: true, +}; + +export const getAvailableToggles = (): ToggleType[] => { + healthToggle.isChecked = + serverConfig.kialiFeatureFlags.uiDefaults.list.includeHealth; + istioResourcesToggle.isChecked = + serverConfig.kialiFeatureFlags.uiDefaults.list.includeIstioResources; + configurationToggle.isChecked = + serverConfig.kialiFeatureFlags.uiDefaults.list.includeValidations; + return [healthToggle, istioResourcesToggle, configurationToggle]; +}; + +// Exported for test +export const sortServices = ( + services: ServiceListItem[], + sortField: SortField, + isAscending: boolean, +): ServiceListItem[] => { + return services.sort( + isAscending ? sortField.compare : (a, b) => sortField.compare(b, a), + ); +}; diff --git a/workspaces/kiali/plugins/kiali/src/pages/ServiceList/ServiceListPage.tsx b/workspaces/kiali/plugins/kiali/src/pages/ServiceList/ServiceListPage.tsx new file mode 100644 index 0000000000..fd71800b84 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/pages/ServiceList/ServiceListPage.tsx @@ -0,0 +1,251 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import * as React from 'react'; +import { useRef } from 'react'; +import { useAsyncFn, useDebounce } from 'react-use'; + +import { Entity } from '@backstage/catalog-model'; +import { Content } from '@backstage/core-components'; +import { useApi } from '@backstage/core-plugin-api'; + +import { CircularProgress } from '@material-ui/core'; + +import { DefaultSecondaryMasthead } from '../../components/DefaultSecondaryMasthead/DefaultSecondaryMasthead'; +import * as FilterHelper from '../../components/FilterList/FilterHelper'; +import { Toggles } from '../../components/Filters/StatefulFilters'; +import { TimeDurationComponent } from '../../components/Time/TimeDurationComponent'; +import { VirtualList } from '../../components/VirtualList/VirtualList'; +import { isMultiCluster } from '../../config'; +import { getEntityNs, nsEqual } from '../../helpers/namespaces'; +import { getErrorString, kialiApiRef } from '../../services/Api'; +import { KialiAppState, KialiContext } from '../../store'; +import { baseStyle } from '../../styles/StyleUtils'; +import { ActiveTogglesInfo } from '../../types/Filters'; +import { ServiceHealth } from '../../types/Health'; +import { validationKey } from '../../types/IstioConfigList'; +import { ObjectValidation, Validations } from '../../types/IstioObjects'; +import { ServiceList, ServiceListItem } from '../../types/ServiceList'; +import { DRAWER, ENTITY } from '../../types/types'; +import { sortIstioReferences } from '../AppList/FiltersAndSorts'; +import { NamespaceInfo } from '../Overview/NamespaceInfo'; +import { getNamespaces } from '../Overview/OverviewPage'; + +export const ServiceListPage = (props: { + view?: string; + entity?: Entity; +}): React.JSX.Element => { + const kialiClient = useApi(kialiApiRef); + const [namespaces, setNamespaces] = React.useState([]); + const [allServices, setServices] = React.useState([]); + const [duration, setDuration] = React.useState( + FilterHelper.currentDuration(), + ); + const kialiState = React.useContext(KialiContext) as KialiAppState; + const activeNs = props.entity + ? getEntityNs(props.entity) + : kialiState.namespaces.activeNamespaces.map(ns => ns.name); + const prevActiveNs = useRef(activeNs); + const prevDuration = useRef(duration); + const activeToggles: ActiveTogglesInfo = Toggles.getToggles(); + const [loadingD, setLoading] = React.useState(true); + + const hiddenColumns = isMultiCluster ? [] : ['cluster']; + if (props.view === ENTITY) { + hiddenColumns.push('details'); + } + + const grids = () => { + const elements = []; + elements.push( + , + ); + return elements; + }; + + const getServiceValidation = ( + name: string, + namespace: string, + validations: Validations, + ): ObjectValidation | undefined => { + const type = 'service'; // Using 'service' directly is disallowed + + if ( + validations[type] && + validations[type][validationKey(name, namespace)] + ) { + return validations[type][validationKey(name, namespace)]; + } + + return undefined; + }; + + const getServiceItem = ( + data: ServiceList, + rateInterval: number, + ): ServiceListItem[] => { + if (data.services) { + return data.services.map(service => ({ + name: service.name, + istioSidecar: service.istioSidecar, + istioAmbient: service.istioAmbient, + namespace: data.namespace.name, + cluster: service.cluster, + health: ServiceHealth.fromJson( + data.namespace.name, + service.name, + service.health, + { + rateInterval: rateInterval, + hasSidecar: service.istioSidecar, + hasAmbient: service.istioAmbient, + }, + ), + validation: getServiceValidation( + service.name, + data.namespace.name, + data.validations, + ), + additionalDetailSample: service.additionalDetailSample, + labels: service.labels ?? {}, + ports: service.ports ?? {}, + istioReferences: sortIstioReferences(service.istioReferences, true), + kialiWizard: service.kialiWizard, + serviceRegistry: service.serviceRegistry, + })); + } + + return []; + }; + + const fetchServices = async ( + nss: NamespaceInfo[], + timeDuration: number, + _: ActiveTogglesInfo, + ): Promise => { + const health = 'true'; + const istioResources = 'true'; + const onlyDefinitions = 'false'; + return Promise.all( + nss.map(async nsInfo => { + return await kialiClient.getServices(nsInfo.name, { + rateInterval: `${String(timeDuration)}s`, + health: health, + istioResources: istioResources, + onlyDefinitions: onlyDefinitions, + }); + }), + ) + .then(results => { + let serviceListItems: ServiceListItem[] = []; + + results.forEach(response => { + serviceListItems = serviceListItems.concat( + getServiceItem(response, duration), + ); + }); + setServices(serviceListItems); + }) + .catch(err => + kialiState.alertUtils?.add( + `Could not fetch services: ${getErrorString(err)}`, + ), + ); + }; + + const load = async () => { + kialiClient.getNamespaces().then(namespacesResponse => { + const allNamespaces: NamespaceInfo[] = getNamespaces( + namespacesResponse, + namespaces, + ); + const nsl = allNamespaces.filter(ns => activeNs.includes(ns.name)); + setNamespaces(nsl); + fetchServices(nsl, duration, activeToggles); + }); + setTimeout(() => { + setLoading(false); + }, 400); + }; + + React.useEffect(() => { + if ( + duration !== prevDuration.current || + !nsEqual(activeNs, prevActiveNs.current) + ) { + setLoading(true); + load(); + prevDuration.current = duration; + prevActiveNs.current = activeNs; + } + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [activeNs, duration]); + + const [{ loading }, refresh] = useAsyncFn( + async () => { + // Check if the config is loaded + await load(); + }, + [], + { loading: true }, + ); + useDebounce(refresh, 10); + + if (loading) { + return ; + } + + const serviceContent = () => { + return ( + <> + {props.view !== ENTITY && ( + load()} + /> + )} + + + + ); + }; + + return ( +
    + {props.view !== ENTITY && props.view !== DRAWER && ( + {serviceContent()} + )} + {(props.view === ENTITY || props.view === DRAWER) && ( +
    + {serviceContent()} +
    + )} +
    + ); +}; diff --git a/workspaces/kiali/plugins/kiali/src/pages/TrafficGraph/TrafficGraphCard.tsx b/workspaces/kiali/plugins/kiali/src/pages/TrafficGraph/TrafficGraphCard.tsx new file mode 100644 index 0000000000..2a05359421 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/pages/TrafficGraph/TrafficGraphCard.tsx @@ -0,0 +1,36 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import * as React from 'react'; + +import '@backstage/core-components'; + +import { useEntity } from '@backstage/plugin-catalog-react'; + +import { Card, CardHeader } from '@material-ui/core'; + +import { ENTITY } from '../../types/types'; +import TrafficGraphPage from './TrafficGraphPage'; + +export const TrafficGraphCard = () => { + const { entity } = useEntity(); + + return ( + + + + + ); +}; diff --git a/workspaces/kiali/plugins/kiali/src/pages/TrafficGraph/TrafficGraphPage.tsx b/workspaces/kiali/plugins/kiali/src/pages/TrafficGraph/TrafficGraphPage.tsx new file mode 100644 index 0000000000..433cadd397 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/pages/TrafficGraph/TrafficGraphPage.tsx @@ -0,0 +1,244 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import React, { useRef, useState } from 'react'; +import { useAsyncFn, useDebounce } from 'react-use'; + +import { Entity } from '@backstage/catalog-model'; +import { Content } from '@backstage/core-components'; +import { useApi } from '@backstage/core-plugin-api'; + +import { CircularProgress, useTheme } from '@material-ui/core'; +import { + action, + createTopologyControlButtons, + defaultControlButtonsOptions, + Model, + TopologyControlBar, + TopologyView, + Visualization, + VisualizationProvider, + VisualizationSurface, +} from '@patternfly/react-topology'; + +import { DefaultSecondaryMasthead } from '../../components/DefaultSecondaryMasthead/DefaultSecondaryMasthead'; +import * as FilterHelper from '../../components/FilterList/FilterHelper'; +import { TimeDurationComponent } from '../../components/Time/TimeDurationComponent'; +import { getEntityNs, nsEqual } from '../../helpers/namespaces'; +import { getErrorString, kialiApiRef } from '../../services/Api'; +import { KialiAppState, KialiContext } from '../../store'; +import { kialiStyle } from '../../styles/StyleUtils'; +import { EdgeLabelMode, GraphType, TrafficRate } from '../../types/Graph'; +import { ENTITY } from '../../types/types'; +import { KialiComponentFactory } from './factories/KialiComponentFactory'; +import { KialiLayoutFactory } from './factories/KialiLayoutFactory'; +import { decorateGraphData } from './util/GraphDecorator'; +import { generateDataModel } from './util/GraphGenerator'; + +const graphStyle = kialiStyle({ + height: '93%', +}); + +const graphConfig = { + id: 'g1', + type: 'graph', + layout: 'Dagre', +}; + +const getVisualization = (): Visualization => { + const vis = new Visualization(); + + vis.registerLayoutFactory(KialiLayoutFactory); + vis.registerComponentFactory(KialiComponentFactory); + vis.setFitToScreenOnLayout(true); + + return vis; +}; + +const getNamespaces = ( + entity: Entity | undefined, + kialiState: KialiAppState, +) => { + if (entity && !kialiState.namespaces) { + return getEntityNs(entity); + } + return kialiState.namespaces.activeNamespaces.map(ns => ns.name); +}; + +function TrafficGraphPage(props: { view?: string; entity?: Entity }) { + const kialiState = React.useContext(KialiContext) as KialiAppState; + const kialiClient = useApi(kialiApiRef); + const theme = useTheme(); + + const htmlElement = document.getElementsByTagName('html')[0]; + if (htmlElement) { + if (theme.palette.type === 'dark') { + htmlElement.classList.add('pf-v5-theme-dark'); + } else { + htmlElement.classList.remove('pf-v5-theme-dark'); + } + } + + const [duration, setDuration] = useState(FilterHelper.currentDuration()); + + const activeNamespaces = getNamespaces(props.entity, kialiState); + const prevActiveNs = useRef(activeNamespaces); + const prevDuration = useRef(duration); + + const [model, setModel] = useState({ + nodes: [], + edges: [], + graph: graphConfig, + }); + + const [controller] = useState(getVisualization()); + + const fetchGraph = async () => { + if (activeNamespaces.length === 0) { + setModel({ + nodes: [], + edges: [], + graph: graphConfig, + }); + return; + } + + const graphQueryElements = { + appenders: 'health,deadNode,istio,serviceEntry,meshCheck,workloadEntry', + activeNamespaces: activeNamespaces.join(','), + namespaces: activeNamespaces.join(','), + graphType: GraphType.VERSIONED_APP, + injectServiceNodes: true, + boxByNamespace: true, + boxByCluster: true, + showOutOfMesh: false, + showSecurity: false, + showVirtualServices: false, + edgeLabels: [ + EdgeLabelMode.TRAFFIC_RATE, + EdgeLabelMode.TRAFFIC_DISTRIBUTION, + ], + trafficRates: [ + TrafficRate.HTTP_REQUEST, + TrafficRate.GRPC_TOTAL, + TrafficRate.TCP_TOTAL, + ], + }; + + try { + const data = await kialiClient.getGraphElements(graphQueryElements); + const graphData = decorateGraphData(data.elements, data.duration); + const g = generateDataModel(graphData, graphQueryElements); + setModel({ + nodes: g.nodes, + edges: g.edges, + graph: graphConfig, + }); + } catch (error: any) { + kialiState.alertUtils?.add( + `Could not fetch services: ${getErrorString(error)}`, + ); + } + }; + + const timeDuration = ( + + ); + + React.useEffect(() => { + if ( + duration !== prevDuration.current || + !nsEqual(activeNamespaces, prevActiveNs.current) + ) { + fetchGraph(); + prevDuration.current = duration; + prevActiveNs.current = activeNamespaces; + } + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [activeNamespaces, duration]); + + React.useEffect(() => { + controller.fromModel(model, false); + }, [model, controller]); + + const [state, refresh] = useAsyncFn( + async () => { + await fetchGraph(); + }, + [], + { loading: true }, + ); + + useDebounce(refresh, 10); + + if (state.loading) { + return ; + } + + return ( + + {props.view !== ENTITY && ( + + )} + { + controller.getGraph().scaleBy(4 / 3); + }), + zoomOutCallback: action(() => { + controller.getGraph().scaleBy(0.75); + }), + fitToScreenCallback: action(() => { + controller.getGraph().fit(80); + }), + resetViewCallback: action(() => { + controller.getGraph().reset(); + controller.getGraph().layout(); + }), + legend: false, + zoomInAriaLabel: '', + zoomOutAriaLabel: '', + fitToScreenAriaLabel: '', + resetViewAriaLabel: '', + zoomInTip: '', + zoomOutTip: '', + fitToScreenTip: '', + resetViewTip: '', + })} + /> + } + > + + + + + + ); +} + +export default TrafficGraphPage; diff --git a/workspaces/kiali/plugins/kiali/src/pages/TrafficGraph/factories/KialiComponentFactory.tsx b/workspaces/kiali/plugins/kiali/src/pages/TrafficGraph/factories/KialiComponentFactory.tsx new file mode 100644 index 0000000000..23be99f347 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/pages/TrafficGraph/factories/KialiComponentFactory.tsx @@ -0,0 +1,49 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { + ComponentFactory, + DefaultGroup, + GraphComponent, + ModelKind, + withPanZoom, + withSelection, +} from '@patternfly/react-topology'; + +import { KialiEdge } from '../styles/KialiEdge'; +import { KialiNode } from '../styles/KialiNode'; + +export const KialiComponentFactory: ComponentFactory = ( + kind: ModelKind, + type: string, +) => { + switch (type) { + case 'group': + return DefaultGroup; + default: + switch (kind) { + case ModelKind.graph: + return withPanZoom()(GraphComponent); + case ModelKind.node: + return KialiNode as any; + case ModelKind.edge: + return withSelection({ multiSelect: false, controlled: false })( + KialiEdge as any, + ); + default: + return undefined; + } + } +}; diff --git a/workspaces/kiali/plugins/kiali/src/pages/TrafficGraph/factories/KialiLayoutFactory.tsx b/workspaces/kiali/plugins/kiali/src/pages/TrafficGraph/factories/KialiLayoutFactory.tsx new file mode 100644 index 0000000000..86350fee6a --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/pages/TrafficGraph/factories/KialiLayoutFactory.tsx @@ -0,0 +1,42 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { + ColaLayout, + Graph, + Layout, + LayoutFactory, +} from '@patternfly/react-topology'; + +import { KialiDagreLayout } from '../layouts/KialiDagreLayout'; + +export const KialiLayoutFactory: LayoutFactory = ( + type: string, + graph: Graph, +): Layout => { + switch (type) { + case 'Dagre': + return new KialiDagreLayout(graph, { + linkDistance: 40, + nodeDistance: 25, + marginx: undefined, + marginy: undefined, + ranker: 'network-simplex', + rankdir: 'LR', + }); + default: + return new ColaLayout(graph, { layoutOnDrag: false }); + } +}; diff --git a/workspaces/kiali/plugins/kiali/src/pages/TrafficGraph/layouts/KialiDagreLayout.ts b/workspaces/kiali/plugins/kiali/src/pages/TrafficGraph/layouts/KialiDagreLayout.ts new file mode 100644 index 0000000000..2c1b583008 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/pages/TrafficGraph/layouts/KialiDagreLayout.ts @@ -0,0 +1,22 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { DagreLayout } from '@patternfly/react-topology'; + +export class KialiDagreLayout extends DagreLayout { + override updateEdgeBendpoints() { + // Your implementation here + } +} diff --git a/workspaces/kiali/plugins/kiali/src/pages/TrafficGraph/styles/KialiEdge.tsx b/workspaces/kiali/plugins/kiali/src/pages/TrafficGraph/styles/KialiEdge.tsx new file mode 100644 index 0000000000..c2d1ac3455 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/pages/TrafficGraph/styles/KialiEdge.tsx @@ -0,0 +1,173 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import * as React from 'react'; + +import { + DefaultEdge, + Edge, + observer, + ScaleDetailsLevel, + WithSelectionProps, +} from '@patternfly/react-topology'; +import useDetailsLevel from '@patternfly/react-topology/dist/esm/hooks/useDetailsLevel'; +import { classes } from 'typestyle'; + +import { PFColors } from '../../../components/Pf/PfColors'; +import { kialiStyle } from '../../../styles/StyleUtils'; + +// This is our styled edge component registered in stylesComponentFactory.tsx. It is responsible for adding customizations that then get passed down to DefaultEdge. The current customizations: +// data.pathStyle?: React.CSSProperties // additional CSS stylings for the edge/path (not the endpoint). +// data.isFind?: boolean // adds graph-find overlay +// data.isUnhighlighted?: boolean // adds unhighlight effects +// data.hasSpans?: Span[] // adds trace overlay +// add showTag prop and show scaled tag on hover (when showTag is false) +// support [lock] icons on edge tags + +const ColorFind = PFColors.Gold400; +const ColorSpan = PFColors.Purple200; +const OverlayOpacity = 0.3; +const OverlayWidth = 30; + +type StyleEdgeProps = { + element: Edge; +} & WithSelectionProps; + +const tagClass = kialiStyle({ + fontFamily: 'Verdana,Arial,Helvetica,sans-serif,pficon', +}); + +const StyleEdgeComponent: React.FC = ({ element, ...rest }) => { + const data = element.getData(); + const detailsLevel = useDetailsLevel(); + + const cssClasses: string[] = []; + + // Change edge color according to the pathStyle + const edgeClass = kialiStyle({ + $nest: { + '& .pf-topology__edge__link': data.pathStyle, + }, + }); + cssClasses.push(edgeClass); + + const edgeHoverClass = kialiStyle({ + $nest: { + '& .pf-topology__edge.pf-m-hover': { + $nest: { + '& .pf-topology__edge__link, & .pf-topology-connector-arrow': + data.pathStyle, + }, + }, + }, + }); + cssClasses.push(edgeHoverClass); + + // Change connector color according to the pathStyle + const connectorClass = kialiStyle({ + $nest: { + '& .pf-topology-connector-arrow': { + stroke: data.pathStyle.stroke, + fill: data.pathStyle.stroke, + }, + }, + }); + cssClasses.push(connectorClass); + + const edgeConnectorArrowHoverStyles = kialiStyle({ + $nest: { + '& .pf-topology__edge.pf-m-hover': { + $nest: { + '& .pf-topology-connector-arrow': { + stroke: data.pathStyle.stroke, + fill: data.pathStyle.stroke, + }, + }, + }, + }, + }); + cssClasses.push(edgeConnectorArrowHoverStyles); + + // If has spans, add the span overlay + if (data.hasSpans) { + const spansClass = kialiStyle({ + $nest: { + '& .pf-topology__edge__background': { + strokeWidth: OverlayWidth, + stroke: ColorSpan, + strokeOpacity: OverlayOpacity, + }, + }, + }); + cssClasses.push(spansClass); + // If isHighlighted, add the highlight overlay + } else if (data.isFind) { + const findClass = kialiStyle({ + $nest: { + '& .pf-topology__edge__background': { + strokeWidth: OverlayWidth, + stroke: ColorFind, + strokeOpacity: OverlayOpacity, + }, + }, + }); + cssClasses.push(findClass); + } + + // Set animation duration velocity + if (data.animationDuration) { + const animationClass = kialiStyle({ + $nest: { + '& .pf-topology__edge__link': { + animationDuration: `${data.animationDuration}s`, + }, + }, + }); + cssClasses.push(animationClass); + } + + // Set the path style when unhighlighted (opacity) + let opacity = 1; + if (data.isUnhighlighted) { + opacity = 0.1; + } + + const passedData = React.useMemo(() => { + const newData = { ...data }; + if (detailsLevel !== ScaleDetailsLevel.high) { + newData.showTag = false; + } + Object.keys(newData).forEach(key => { + if (newData[key] === undefined) { + delete newData[key]; + } + }); + return newData; + }, [data, detailsLevel]); + + return ( + + + + ); +}; + +export const KialiEdge = observer(StyleEdgeComponent); diff --git a/workspaces/kiali/plugins/kiali/src/pages/TrafficGraph/styles/KialiGroup.tsx b/workspaces/kiali/plugins/kiali/src/pages/TrafficGraph/styles/KialiGroup.tsx new file mode 100644 index 0000000000..3206ac81cd --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/pages/TrafficGraph/styles/KialiGroup.tsx @@ -0,0 +1,103 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import React from 'react'; + +import { CubesIcon } from '@patternfly/react-icons'; +import { + DefaultGroup, + Node, + ScaleDetailsLevel, + ShapeProps, + WithSelectionProps, +} from '@patternfly/react-topology'; +import useDetailsLevel from '@patternfly/react-topology/dist/esm/hooks/useDetailsLevel'; + +import { PFColors } from '../../../components/Pf/PfColors'; + +const ICON_PADDING = 20; + +export enum DataTypes { + Default, +} + +type StyleGroupProps = { + element: Node; + collapsible: boolean; + collapsedWidth?: number; + collapsedHeight?: number; + onCollapseChange?: (group: Node, collapsed: boolean) => void; + getCollapsedShape?: (node: Node) => React.FC; + collapsedShadowOffset?: number; // defaults to 10 +} & WithSelectionProps; + +export function KialiGroup({ + element, + collapsedWidth = 75, + collapsedHeight = 75, + ...rest +}: StyleGroupProps) { + const data = element.getData(); + const detailsLevel = useDetailsLevel(); + + const passedData = React.useMemo(() => { + const newData = { ...data }; + Object.keys(newData).forEach(key => { + if (newData[key] === undefined) { + delete newData[key]; + } + }); + return newData; + }, [data]); + + if (data.isFocused) { + element.setData({ ...data, isFocused: false }); + } + + const renderIcon = (): React.ReactNode => { + const iconSize = + Math.min(collapsedWidth, collapsedHeight) - ICON_PADDING * 2; + const Component = CubesIcon; + + return ( + + + + ); + }; + + return ( + + + {element.isCollapsed() ? renderIcon() : null} + + + ); +} diff --git a/workspaces/kiali/plugins/kiali/src/pages/TrafficGraph/styles/KialiNode.tsx b/workspaces/kiali/plugins/kiali/src/pages/TrafficGraph/styles/KialiNode.tsx new file mode 100644 index 0000000000..cc50dce311 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/pages/TrafficGraph/styles/KialiNode.tsx @@ -0,0 +1,163 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import * as React from 'react'; + +import { KeyIcon, TopologyIcon } from '@patternfly/react-icons'; +import { + DefaultNode, + getShapeComponent, + Node, + NodeShape, + observer, + ScaleDetailsLevel, + useHover, + WithSelectionProps, +} from '@patternfly/react-topology'; +import useDetailsLevel from '@patternfly/react-topology/dist/esm/hooks/useDetailsLevel'; + +import { PFColors } from '../../../components/Pf/PfColors'; +import { kialiStyle } from '../../../styles/StyleUtils'; + +// This is the registered Node component override that utilizes our customized Node.tsx component. + +type StyleNodeProps = { + element: Node; +} & WithSelectionProps; + +const renderIcon = (element: Node): React.ReactNode => { + let Component: React.ComponentClass> | undefined; + const data = element.getData(); + const isInaccessible = data.isInaccessible; + const isServiceEntry = data.isServiceEntry; + const isBox = data.isBox; + if (isInaccessible && !isServiceEntry && !isBox) { + Component = KeyIcon; + } + const isOutside = data.isOutside; + if (isOutside && !isBox) { + Component = TopologyIcon; + } + + // this blurb taken from PFT demo StyleNode.tsx, not sure if it's required + // vv + const { width, height } = element.getDimensions(); + const shape = element.getNodeShape(); + const iconSize = + (shape === NodeShape.trapezoid ? width : Math.min(width, height)) - + (shape === NodeShape.stadium ? 5 : 20) * 2; + // ^^ + + return Component ? ( + + + + ) : ( + <> + ); +}; + +const StyleNodeComponent: React.FC = ({ element, ...rest }) => { + const data = element.getData(); + const detailsLevel = useDetailsLevel(); + const [hover, hoverRef] = useHover(); + const ShapeComponent = getShapeComponent(element); + + const ColorFind = PFColors.Gold400; + const ColorSpan = PFColors.Purple200; + const OverlayOpacity = 0.3; + const OverlayWidth = 40; + + const traceOverlayStyle = kialiStyle({ + strokeWidth: OverlayWidth, + stroke: ColorSpan, + strokeOpacity: OverlayOpacity, + }); + + const findOverlayStyle = kialiStyle({ + strokeWidth: OverlayWidth, + stroke: ColorFind, + strokeOpacity: OverlayOpacity, + }); + + // Set the path style when unhighlighted (opacity) + let opacity = 1; + if (data.isUnhighlighted) { + opacity = 0.1; + } + + const passedData = React.useMemo(() => { + const newData = { ...data }; + if (detailsLevel !== ScaleDetailsLevel.high) { + newData.tag = undefined; + } + Object.keys(newData).forEach(key => { + if (newData[key] === undefined) { + delete newData[key]; + } + }); + return newData; + }, [data, detailsLevel]); + + const { width, height } = element.getDimensions(); + + return ( + + {data.hasSpans && ( + + )} + {data.isFind && ( + + )} + + {(hover || detailsLevel !== ScaleDetailsLevel.low) && + renderIcon(element)} + + + ); +}; + +export const KialiNode = observer(StyleNodeComponent); diff --git a/workspaces/kiali/plugins/kiali/src/pages/TrafficGraph/types/EdgeData.ts b/workspaces/kiali/plugins/kiali/src/pages/TrafficGraph/types/EdgeData.ts new file mode 100644 index 0000000000..b2e63089c4 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/pages/TrafficGraph/types/EdgeData.ts @@ -0,0 +1,36 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { + EdgeTerminalType, + GraphElement, + NodeStatus, +} from '@patternfly/react-topology'; + +import { DecoratedGraphEdgeData } from '../../../types/Graph'; +import { Span } from '../../../types/Tracing'; + +export type EdgeData = DecoratedGraphEdgeData & { + endTerminalType: EdgeTerminalType; + hasSpans?: Span[]; + isFind?: boolean; + isHighlighted?: boolean; + isSelected?: boolean; + isUnhighlighted?: boolean; + onHover?: (element: GraphElement, isMouseIn: boolean) => void; + pathStyle?: React.CSSProperties; + tag?: string; + tagStatus?: NodeStatus; +}; diff --git a/workspaces/kiali/plugins/kiali/src/pages/TrafficGraph/types/GraphPFSettings.ts b/workspaces/kiali/plugins/kiali/src/pages/TrafficGraph/types/GraphPFSettings.ts new file mode 100644 index 0000000000..05ad9ef6fa --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/pages/TrafficGraph/types/GraphPFSettings.ts @@ -0,0 +1,27 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { EdgeLabelMode, GraphType, TrafficRate } from '../../../types/Graph'; +import { Namespace } from '../../../types/Namespace'; + +export type GraphPFSettings = { + activeNamespaces: Namespace[]; + edgeLabels: EdgeLabelMode[]; + graphType: GraphType; + showOutOfMesh: boolean; + showSecurity: boolean; + showVirtualServices: boolean; + trafficRates: TrafficRate[]; +}; diff --git a/workspaces/kiali/plugins/kiali/src/pages/TrafficGraph/types/NodeData.ts b/workspaces/kiali/plugins/kiali/src/pages/TrafficGraph/types/NodeData.ts new file mode 100644 index 0000000000..906d7e95a2 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/pages/TrafficGraph/types/NodeData.ts @@ -0,0 +1,93 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { + BadgeLocation, + GraphElement, + LabelPosition, + NodeShape, + NodeStatus, +} from '@patternfly/react-topology'; + +import { + BoxByType, + DecoratedGraphNodeData, + NodeType, +} from '../../../types/Graph'; +import { DEGRADED, FAILURE } from '../../../types/Health'; + +export type NodeData = DecoratedGraphNodeData & { + // These are node.data fields that have an impact on the PFT rendering of the node. + // TODO: Is there an actual type defined for these in PFT? + attachments?: React.ReactNode; // ie. decorators + badge?: string; + badgeBorderColor?: string; + badgeClassName?: string; + badgeColor?: string; + badgeLocation?: BadgeLocation; + badgeTextColor?: string; + column?: number; + component?: React.ReactNode; + icon?: React.ReactNode; + isFind?: boolean; + isHighlighted?: boolean; + isSelected?: boolean; + isUnhighlighted?: boolean; + labelIcon?: React.ReactNode; + labelIconClass?: string; + labelIconPadding?: number; + labelPosition?: LabelPosition; + marginX?: number; + onHover?: (element: GraphElement, isMouseIn: boolean) => void; + row?: number; + secondaryLabel?: string; + setLocation?: boolean; + showContextMenu?: boolean; + showStatusDecorator?: boolean; + statusDecoratorTooltip?: React.ReactNode; + truncateLength?: number; + x?: number; + y?: number; +}; + +export const getNodeStatus = (data: NodeData): NodeStatus => { + if ((data.isBox && data.isBox !== BoxByType.APP) || data.isIdle) { + return NodeStatus.default; + } + + switch (data.healthStatus) { + case DEGRADED.name: + return NodeStatus.warning; + case FAILURE.name: + return NodeStatus.danger; + default: + return NodeStatus.success; + } +}; + +export const getNodeShape = (data: NodeData): NodeShape => { + switch (data.nodeType) { + case NodeType.AGGREGATE: + return NodeShape.hexagon; + case NodeType.APP: + return NodeShape.rect; + case NodeType.SERVICE: + return data.isServiceEntry ? NodeShape.trapezoid : NodeShape.rhombus; + case NodeType.WORKLOAD: + return NodeShape.circle; + default: + return NodeShape.ellipse; + } +}; diff --git a/workspaces/kiali/plugins/kiali/src/pages/TrafficGraph/types/NodeMap.ts b/workspaces/kiali/plugins/kiali/src/pages/TrafficGraph/types/NodeMap.ts new file mode 100644 index 0000000000..7b5310b6d2 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/pages/TrafficGraph/types/NodeMap.ts @@ -0,0 +1,18 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { NodeModel } from '@patternfly/react-topology'; + +export type NodeMap = Map; diff --git a/workspaces/kiali/plugins/kiali/src/pages/TrafficGraph/util/EdgeLabels.ts b/workspaces/kiali/plugins/kiali/src/pages/TrafficGraph/util/EdgeLabels.ts new file mode 100644 index 0000000000..198cf9c1a8 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/pages/TrafficGraph/util/EdgeLabels.ts @@ -0,0 +1,445 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { + EdgeModel, + EdgeTerminalType, + NodeStatus, +} from '@patternfly/react-topology'; +import _ from 'lodash'; + +import { PFColors } from '../../../components/Pf/PfColors'; +import { icons } from '../../../config/Icons'; +import { Rate, RequestTolerance } from '../../../types/ErrorRate/types'; +import { + aggregate, + checkExpr, + getRateHealthConfig, + transformEdgeResponses, +} from '../../../types/ErrorRate/utils'; +import { + DecoratedGraphEdgeData, + DecoratedGraphNodeData, + EdgeLabelMode, + numLabels, + Protocol, + Responses, + TrafficRate, +} from '../../../types/Graph'; +import { + ascendingThresholdCheck, + DEGRADED, + FAILURE, + HEALTHY, + NA, + RATIO_NA, + ThresholdStatus, +} from '../../../types/Health'; +import { RateHealth } from '../../../types/HealthAnnotation'; +import { ToleranceConfig } from '../../../types/ServerConfig'; +import { EdgeData } from '../types/EdgeData'; +import { GraphPFSettings } from '../types/GraphPFSettings'; +import { NodeData } from '../types/NodeData'; +import { NodeMap } from '../types/NodeMap'; + +export const trimFixed = (fixed: string): string => { + if (!fixed.includes('.')) { + return fixed; + } + let newFixed = fixed; + while (newFixed.endsWith('0')) { + newFixed = newFixed.slice(0, -1); + } + return newFixed.endsWith('.') ? newFixed.slice(0, -1) : newFixed; +}; + +// This is due to us never having figured out why a tiny fraction of what-we-expect-to-be-numbers +// are in fact strings. We don't know if our conversion in GraphData.ts has a flaw, or whether +// something else happens post-conversion. +export const safeNum = (num: any): number => { + if (Number.isFinite(num)) { + return num; + } + // this will return NaN if the string is 'NaN' or any other non-number + return Number(num); +}; + +export const toFixedDuration = (num: number): string => { + const newNum = safeNum(num); + if (num < 1000) { + return `${newNum.toFixed(0)}ms`; + } + return `${trimFixed((newNum / 1000.0).toFixed(2))}s`; +}; + +export const toFixedPercent = (num: number): string => { + const newNum = safeNum(num); + return `${trimFixed(newNum.toFixed(1))}%`; +}; + +export const toFixedRequestRate = ( + num: number, + includeUnits: boolean, + units?: string, +): string => { + const newNum = safeNum(num); + const rate = trimFixed(newNum.toFixed(2)); + return includeUnits ? `${rate}${units || 'rps'}` : rate; +}; + +export const toFixedErrRate = (num: number): string => { + const newNum = safeNum(num); + return `${trimFixed(newNum.toFixed(newNum < 1 ? 1 : 0))}%err`; +}; + +export const toFixedByteRate = (num: number, includeUnits: boolean): string => { + const newNum = safeNum(num); + if (newNum < 1024.0) { + const rate = + newNum < 1.0 ? trimFixed(newNum.toFixed(2)) : newNum.toFixed(0); + return includeUnits ? `${rate}bps` : rate; + } + const rate = trimFixed((num / 1024.0).toFixed(2)); + return includeUnits ? `${rate}kps` : rate; +}; + +const getEdgeLabel = ( + edge: EdgeModel, + nodeMap: NodeMap, + settings: GraphPFSettings, +): string => { + const data = edge.data as EdgeData; + const edgeLabels = settings.edgeLabels; + const isVerbose = data.isSelected; + const includeUnits = isVerbose || numLabels(edgeLabels) > 1; + const labels = [] as string[]; + + if (edgeLabels.includes(EdgeLabelMode.TRAFFIC_RATE)) { + let rate = 0; + let pErr = 0; + if (data.http > 0) { + rate = data.http; + pErr = data.httpPercentErr > 0 ? data.httpPercentErr : 0; + } else if (data.grpc > 0) { + rate = data.grpc; + pErr = data.grpcPercentErr > 0 ? data.grpcPercentErr : 0; + } else if (data.tcp > 0) { + rate = data.tcp; + } + + if (rate > 0) { + if (pErr > 0) { + labels.push( + `${toFixedRequestRate(rate, includeUnits)}\n${toFixedErrRate(pErr)}`, + ); + } else { + switch (data.protocol) { + case Protocol.GRPC: + if (settings.trafficRates.includes(TrafficRate.GRPC_REQUEST)) { + labels.push(toFixedRequestRate(rate, includeUnits)); + } else { + labels.push(toFixedRequestRate(rate, includeUnits, 'mps')); + } + break; + case Protocol.TCP: + labels.push(toFixedByteRate(rate, includeUnits)); + break; + default: + labels.push(toFixedRequestRate(rate, includeUnits)); + break; + } + } + } + } + + if (edgeLabels.includes(EdgeLabelMode.RESPONSE_TIME_GROUP)) { + const responseTime = data.responseTime; + + if (responseTime > 0) { + labels.push(toFixedDuration(responseTime)); + } + } + + if (edgeLabels.includes(EdgeLabelMode.THROUGHPUT_GROUP)) { + const rate = data.throughput; + + if (rate > 0) { + labels.push(toFixedByteRate(rate, includeUnits)); + } + } + + if (edgeLabels.includes(EdgeLabelMode.TRAFFIC_DISTRIBUTION)) { + let pReq; + if (data.httpPercentReq > 0) { + pReq = data.httpPercentReq; + } else if (data.grpcPercentReq > 0) { + pReq = data.grpcPercentReq; + } + if (pReq && pReq > 0 && pReq < 100) { + labels.push(toFixedPercent(pReq)); + } + } + + let label = labels.join('\n'); + + if (isVerbose) { + const protocol = data.protocol; + label = protocol ? `${protocol}\n${label}` : label; + } + + const mtlsPercentage = data.isMTLS; + let lockIcon = false; + if (settings.showSecurity && data.hasTraffic) { + if (mtlsPercentage && mtlsPercentage > 0) { + lockIcon = true; + label = `${icons.istio.mtls.ascii}\n${label}`; + } + } + + if (data.hasTraffic && data.responses) { + if (nodeMap.get(edge.target!)?.data?.hasCB) { + const responses = data.responses; + for (const code of _.keys(responses)) { + // TODO: Not 100% sure we want "UH" code here ("no healthy upstream hosts") but based on timing I have + // seen this code returned and not "UO". "UO" is returned only when the circuit breaker is caught open. + // But if open CB is responsible for removing possible destinations the "UH" code seems preferred. + if ('UO' in responses[code] || 'UH' in responses[code]) { + label = lockIcon + ? `${icons.istio.circuitBreaker.className} ${label}` + : `${icons.istio.circuitBreaker.className}\n${label}`; + break; + } + } + } + } + + return label; +}; + +const EdgeColor = PFColors.Success; +const EdgeColorDead = PFColors.Black500; +const EdgeColorDegraded = PFColors.Warning; +const EdgeColorFailure = PFColors.Danger; +const EdgeColorTCPWithTraffic = PFColors.Blue600; + +const getPathStyleStroke = (data: EdgeData): PFColors => { + if (!data.hasTraffic) { + return EdgeColorDead; + } + if (data.protocol === 'tcp') { + return EdgeColorTCPWithTraffic; + } + switch (data.healthStatus) { + case FAILURE.name: + return EdgeColorFailure; + case DEGRADED.name: + return EdgeColorDegraded; + default: + return EdgeColor; + } +}; + +export const getPathStyle = (data: EdgeData): React.CSSProperties => { + return { + stroke: getPathStyleStroke(data), + strokeWidth: 3, + } as React.CSSProperties; +}; + +export const getEdgeStatus = (data: EdgeData): NodeStatus => { + if (!data.hasTraffic) { + return NodeStatus.default; + } + if (data.protocol === 'tcp') { + return NodeStatus.info; + } + + switch (data.healthStatus) { + case FAILURE.name: + return NodeStatus.danger; + case DEGRADED.name: + return NodeStatus.warning; + default: + return NodeStatus.success; + } +}; + +export const setEdgeOptions = ( + edge: EdgeModel, + nodeMap: NodeMap, + settings: GraphPFSettings, +): void => { + const data = edge.data as EdgeData; + + data.endTerminalType = + data.protocol === Protocol.TCP + ? EdgeTerminalType.square + : EdgeTerminalType.directional; + data.pathStyle = getPathStyle(data); + data.tag = getEdgeLabel(edge, nodeMap, settings); + data.tagStatus = getEdgeStatus(data); +}; + +export interface DecoratedGraphEdgeWrapper { + data: DecoratedGraphEdgeData; +} + +export const calculateStatusGraph = ( + requestsTolerances: RequestTolerance[], + traffic: Responses, +): { + status: ThresholdStatus; + protocol: string; + toleranceConfig?: ToleranceConfig; +} => { + // By default the health is NA + const result: { + status: ThresholdStatus; + protocol: string; + toleranceConfig?: ToleranceConfig; + } = { + status: { + value: RATIO_NA, + status: NA, + }, + protocol: '', + toleranceConfig: undefined, + }; + // For each calculate errorRate by tolerance configuration + for (const reqTol of Object.values(requestsTolerances)) { + for (const [protocol, rate] of Object.entries(reqTol.requests)) { + const tolerance = + reqTol.tolerance && checkExpr(reqTol!.tolerance!.protocol, protocol) + ? reqTol.tolerance + : undefined; + // Create threshold for the tolerance + const thresholds = { + degraded: tolerance!.degraded, + failure: tolerance!.failure, + unit: '%', + }; + // Calculate the status + const errRatio = (rate as Rate).errorRatio; + const auxStatus = ascendingThresholdCheck(100 * errRatio, thresholds); + // Check if the status has more priority than the previous one + if (auxStatus.status.priority > result.status.status.priority) { + result.status = auxStatus; + result.protocol = protocol; + result.toleranceConfig = reqTol.tolerance; + } + } + } + if (result.status.status === NA && Object.keys(traffic).length > 0) { + result.status.status = HEALTHY; + result.status.value = 0; + } + return result; +}; + +export const getEdgeHealth = ( + edge: DecoratedGraphEdgeData, + source: DecoratedGraphNodeData, + target: DecoratedGraphNodeData, +): ThresholdStatus => { + const annotationSource = source.hasHealthConfig + ? new RateHealth(source.hasHealthConfig) + : undefined; + const configSource = + annotationSource && annotationSource.toleranceConfig + ? annotationSource.toleranceConfig + : getRateHealthConfig(source.namespace, source.nodeType, source.nodeType) + .tolerance; + const annotationTarget = target.hasHealthConfig + ? new RateHealth(target.hasHealthConfig) + : undefined; + const configTarget = + annotationTarget && annotationTarget.toleranceConfig + ? annotationTarget.toleranceConfig + : getRateHealthConfig(target.namespace, target.nodeType, target.nodeType) + .tolerance; + + // If there is not tolerances with this configuration we'll use defaults + const tolerancesSource = configSource.filter(tol => + checkExpr(tol.direction, 'outbound'), + ); + const tolerancesTarget = configTarget.filter(tol => + checkExpr(tol.direction, 'inbound'), + ); + + // Calculate aggregate + const outboundEdge = aggregate( + transformEdgeResponses(edge.responses, edge.protocol), + tolerancesSource, + ); + const inboundEdge = aggregate( + transformEdgeResponses(edge.responses, edge.protocol), + tolerancesTarget, + ); + + // Calculate status + const outboundEdgeStatus = calculateStatusGraph(outboundEdge, edge.responses); + const inboundEdgeStatus = calculateStatusGraph(inboundEdge, edge.responses); + // Keep status with more priority + return outboundEdgeStatus.status.status.priority > + inboundEdgeStatus.status.status.priority + ? outboundEdgeStatus.status + : inboundEdgeStatus.status; +}; + +export const assignEdgeHealth = ( + edges: DecoratedGraphEdgeWrapper[], + nodeMap: NodeMap, + settings: GraphPFSettings, +): void => { + edges?.forEach(edge => { + const edgeData = edge.data as EdgeData; + + if (!edgeData.hasTraffic) { + return; + } + if (edgeData.protocol === 'tcp') { + return; + } + if ( + edgeData.protocol === 'grpc' && + !settings.trafficRates.includes(TrafficRate.GRPC_REQUEST) + ) { + return; + } + + const sourceNodeData = nodeMap.get(edgeData.source!)?.data as NodeData; + const destNodeData = nodeMap.get(edgeData.target!)?.data as NodeData; + const statusEdge = getEdgeHealth(edgeData, sourceNodeData, destNodeData); + switch (statusEdge.status) { + case FAILURE: + edgeData.healthStatus = FAILURE.name; + return; + case DEGRADED: + edgeData.healthStatus = DEGRADED.name; + return; + default: + // unset implies healthy or n/a + return; + } + }); +}; + +export const getTotalRequest = (traffic: Responses): number => { + let reqRate = 0; + Object.values(traffic).forEach(item => { + Object.values(item.flags).forEach(v => (reqRate += Number(v))); + }); + return reqRate; +}; diff --git a/workspaces/kiali/plugins/kiali/src/pages/TrafficGraph/util/GraphDecorator.ts b/workspaces/kiali/plugins/kiali/src/pages/TrafficGraph/util/GraphDecorator.ts new file mode 100644 index 0000000000..5fd8948c19 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/pages/TrafficGraph/util/GraphDecorator.ts @@ -0,0 +1,278 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { isIstioNamespace } from '../../../config'; +import { + DecoratedGraphEdgeData, + DecoratedGraphEdgeWrapper, + DecoratedGraphElements, + DecoratedGraphNodeData, + DecoratedGraphNodeWrapper, + GraphEdgeWrapper, + GraphElements, + GraphNodeWrapper, + hasProtocolTraffic, +} from '../../../types/Graph'; +import { + AppHealth, + NA, + ServiceHealth, + WorkloadHealth, +} from '../../../types/Health'; + +const toSafeCyFieldName = (fieldName: string): string => { + const alnumString = /^[a-zA-Z0-9]*$/; + const unsafeChar = /[^a-zA-Z0-9]/g; + + if (fieldName.match(alnumString)) { + return fieldName; + } + + return fieldName.replace(unsafeChar, '_'); +}; + +export const decorateGraphData = ( + graphData: GraphElements, + duration: number, +): DecoratedGraphElements => { + const elementsDefaults = { + edges: { + destPrincipal: undefined, + grpc: NaN, + grpcErr: NaN, + grpcPercentErr: NaN, + grpcPercentReq: NaN, + hasTraffic: undefined, + http: NaN, + http3xx: NaN, + http4xx: NaN, + http5xx: NaN, + httpNoResponse: NaN, + httpPercentErr: NaN, + httpPercentReq: NaN, + isMTLS: -1, + protocol: undefined, + responses: undefined, + responseTime: NaN, + sourcePrincipal: undefined, + tcp: NaN, + throughput: NaN, + }, + nodes: { + aggregate: undefined, + aggregateValue: undefined, + app: undefined, + destServices: undefined, + grpcIn: NaN, + grpcInErr: NaN, + grpcOut: NaN, + hasCB: undefined, + hasFaultInjection: undefined, + hasMirroring: undefined, + hasMissingSC: undefined, + hasRequestRouting: undefined, + hasRequestTimeout: undefined, + hasTCPTrafficShifting: undefined, + hasTrafficShifting: undefined, + hasVS: undefined, + healthData: undefined, + health: undefined, + httpIn: NaN, + httpIn3xx: NaN, + httpIn4xx: NaN, + httpIn5xx: NaN, + httpInNoResponse: NaN, + httpOut: NaN, + isBox: undefined, + isDead: undefined, + isIdle: undefined, + isInaccessible: undefined, + isIstio: undefined, + isMisconfigured: undefined, + isOutside: undefined, + isRoot: undefined, + isServiceEntry: undefined, + rank: undefined, + service: undefined, + tcpIn: NaN, + tcpOut: NaN, + version: undefined, + workload: undefined, + }, + }; + // It's not easy to get find/hide to work exactly as users may expect. Because edges represent + // traffic for only one protocol it is best to use 0 defaults for that one protocol, and leave the others + // as NaN. In that way numerical expressions affect only edges for a desired protocol. Because nodes + // can involve traffic from multiple protocols, it seems (for now) best to only set the values explicitly + // supplied in the JSON. + const edgeProtocolDefaults = { + grpc: { + grpc: 0, + grpcErr: 0, + grpcNoResponse: 0, + grpcPercentErr: 0, + grpcPercentReq: 0, + }, + http: { + http: 0, + http3xx: 0, + http4xx: 0, + http5xx: 0, + httpNoResponse: 0, + httpPercentErr: 0, + httpPercentReq: 0, + }, + tcp: { + tcp: 0, + }, + }; + + const propertiesToNumber = ( + object: Record, + keys?: string[], + ) => { + const objectWithNumbers = { ...object }; + const targetKeys = keys ? keys : Object.keys(objectWithNumbers); + for (const key of targetKeys) { + objectWithNumbers[key] = Number(objectWithNumbers[key]); + } + return objectWithNumbers; + }; + + const decoratedGraph: DecoratedGraphElements = {}; + if (graphData) { + if (graphData.nodes) { + decoratedGraph.nodes = graphData.nodes.map((node: GraphNodeWrapper) => { + const decoratedNode: any = { ...node }; + // parse out the traffic data into top level fields for the various protocols. This is done + // to be back compatible with our existing ui code that expects the explicit http and tcp fields. + // We can then set the 'traffic' field undefined because it is not used in the cy element handling. + if (decoratedNode.data.traffic) { + const traffic = decoratedNode.data.traffic; + decoratedNode.data.traffic = undefined; + traffic.forEach((protocol: { rates: Record }) => { + decoratedNode.data = { + ...propertiesToNumber(protocol.rates), + ...decoratedNode.data, + }; + }); + } + // we can do something similar with labels, parse out each to data.label_: + // and then set the field undefined because it is not used in the cy element handling + if (decoratedNode.data.labels) { + const labels = decoratedNode.data.labels; + decoratedNode.data.labels = undefined; + const prefixedLabels: { [key: string]: string } = {}; + for (const key in labels) { + if (labels.hasOwnProperty(key)) { + prefixedLabels[toSafeCyFieldName(`label:${key}`)] = labels[key]; + } + } + decoratedNode.data = { ...prefixedLabels, ...decoratedNode.data }; + } + // node.aggregate is set like aggregate=aggregateValue, split into distinct fields for the ui to use + if (!!decoratedNode.data.aggregate) { + const aggr = decoratedNode.data.aggregate.split('='); + decoratedNode.data.aggregate = aggr[0]; + decoratedNode.data.aggregateValue = aggr[1]; + } + // Calculate health + if (decoratedNode.data.healthData) { + if (Array.isArray(decoratedNode.data.healthData)) { + decoratedNode.data.healthStatus = NA.name; + } else if (decoratedNode.data.healthData.workloadStatus) { + decoratedNode.data.health = WorkloadHealth.fromJson( + decoratedNode.data.namespace, + decoratedNode.data.workload, + decoratedNode.data.healthData, + { + rateInterval: duration, + hasSidecar: true, + hasAmbient: false, + }, + ); + decoratedNode.data.healthStatus = + decoratedNode.data.health.getGlobalStatus().name; + } else if (decoratedNode.data.healthData.workloadStatuses) { + decoratedNode.data.health = AppHealth.fromJson( + decoratedNode.data.namespace, + decoratedNode.data.app, + decoratedNode.data.healthData, + { + rateInterval: duration, + hasSidecar: true, + hasAmbient: false, + }, + ); + decoratedNode.data.healthStatus = + decoratedNode.data.health.getGlobalStatus().name; + } else { + decoratedNode.data.health = ServiceHealth.fromJson( + decoratedNode.data.namespace, + decoratedNode.data.service, + decoratedNode.data.healthData, + { + rateInterval: duration, + hasSidecar: true, + hasAmbient: false, + }, + ); + decoratedNode.data.healthStatus = + decoratedNode.data.health.getGlobalStatus().name; + } + } + const isIstio = isIstioNamespace(decoratedNode.data.namespace) + ? true + : undefined; + // prettier-ignore + decoratedNode.data = { ...elementsDefaults.nodes, ...decoratedNode.data, isIstio: isIstio } as DecoratedGraphNodeData; + // prettier-ignore + return decoratedNode as DecoratedGraphNodeWrapper; + }); + } + if (graphData.edges) { + decoratedGraph.edges = graphData.edges.map((edge: GraphEdgeWrapper) => { + const decoratedEdge: any = { ...edge }; + const { traffic, ...edgeData } = edge.data; + // see comment above about the 'traffic' data handling + if (traffic) { + if (hasProtocolTraffic(traffic)) { + decoratedEdge.data = { + hasTraffic: true, + responses: traffic.responses, + ...edgeProtocolDefaults[traffic.protocol], + ...propertiesToNumber(traffic.rates), + // Base properties that need to be cast as number. + ...propertiesToNumber(edgeData, [ + 'isMtls', + 'responseTime', + 'throughput', + ]), + }; + } + decoratedEdge.data = { + protocol: traffic.protocol, + ...decoratedEdge.data, + }; + } + // prettier-ignore + decoratedEdge.data = { ...elementsDefaults.edges, ...decoratedEdge.data } as DecoratedGraphEdgeData; + // prettier-ignore + return decoratedEdge as DecoratedGraphEdgeWrapper; + }); + } + } + return decoratedGraph; +}; diff --git a/workspaces/kiali/plugins/kiali/src/pages/TrafficGraph/util/GraphGenerator.ts b/workspaces/kiali/plugins/kiali/src/pages/TrafficGraph/util/GraphGenerator.ts new file mode 100644 index 0000000000..f4df2f3e7f --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/pages/TrafficGraph/util/GraphGenerator.ts @@ -0,0 +1,118 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { + EdgeAnimationSpeed, + EdgeModel, + EdgeStyle, + NodeModel, +} from '@patternfly/react-topology'; + +import { DecoratedGraphElements } from '../../../types/Graph'; +import { EdgeData } from '../types/EdgeData'; +import { getNodeShape, getNodeStatus, NodeData } from '../types/NodeData'; +import { assignEdgeHealth, setEdgeOptions } from './EdgeLabels'; +import { setNodeLabel } from './NodeLabels'; + +const DEFAULT_NODE_SIZE = 50; + +export const generateDataModel = ( + graphData: DecoratedGraphElements, + graphSettings: any, +): { edges: EdgeModel[]; nodes: NodeModel[] } => { + const nodeMap: Map = new Map(); + const edges: EdgeModel[] = []; + + function addGroup(data: NodeData): NodeModel { + const group: NodeModel = { + children: [], + collapsed: false, + data: data, + group: true, + id: data.id, + status: getNodeStatus(data), + style: { padding: [35, 35, 35, 35] }, + type: 'group', + }; + setNodeLabel(group, nodeMap, graphSettings); + nodeMap.set(data.id, group); + + return group; + } + + function addNode(data: NodeData): NodeModel { + const node: NodeModel = { + data: data, + height: DEFAULT_NODE_SIZE, + id: data.id, + shape: getNodeShape(data), + status: getNodeStatus(data), + type: 'node', + width: DEFAULT_NODE_SIZE, + }; + setNodeLabel(node, nodeMap, graphSettings); + nodeMap.set(data.id, node); + + return node; + } + + function addEdge(data: EdgeData): EdgeModel { + const edge: EdgeModel = { + animationSpeed: EdgeAnimationSpeed.none, + data: data, + edgeStyle: EdgeStyle.solid, + id: data.id, + source: data.source, + target: data.target, + type: 'edge', + }; + setEdgeOptions(edge, nodeMap, graphSettings); + edges.push(edge); + + return edge; + } + + function addChild(node: NodeModel): void { + const parentId = (node.data as NodeData).parent!; + const parent = nodeMap.get(parentId); + if (parent) { + parent.children?.push(node.id); + } + } + + graphData.nodes?.forEach(n => { + const nd = n.data; + let newNode: NodeModel; + if (nd.isBox) { + newNode = addGroup(nd as NodeData); + } else { + newNode = addNode(nd as NodeData); + } + if (nd.parent) { + addChild(newNode); + } + }); + + // Compute edge healths one time for the graph + assignEdgeHealth(graphData.edges || [], nodeMap, graphSettings); + + graphData.edges?.forEach(e => { + const ed = e.data; + addEdge(ed as EdgeData); + }); + + const nodes = Array.from(nodeMap.values()); + return { nodes: nodes, edges: edges }; +}; diff --git a/workspaces/kiali/plugins/kiali/src/pages/TrafficGraph/util/NodeLabels.tsx b/workspaces/kiali/plugins/kiali/src/pages/TrafficGraph/util/NodeLabels.tsx new file mode 100644 index 0000000000..ae281e006f --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/pages/TrafficGraph/util/NodeLabels.tsx @@ -0,0 +1,137 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { NodeModel } from '@patternfly/react-topology'; + +import { PFBadges, PFBadgeType } from '../../../components/Pf/PfBadges'; +import { BoxByType, GraphType, NodeType, UNKNOWN } from '../../../types/Graph'; +import { GraphPFSettings } from '../types/GraphPFSettings'; +import { NodeData } from '../types/NodeData'; +import { NodeMap } from '../types/NodeMap'; + +export const setNodeLabel = ( + node: NodeModel, + nodeMap: NodeMap, + settings: GraphPFSettings, +): void => { + const data = node.data as NodeData; + const app = data.app || ''; + const nodeType = data.nodeType; + const service = data.service || ''; + const version = data.version || ''; + const workload = data.workload || ''; + const isBox = data.isBox; + const isBoxed = data.parent; + let box1Type: string | undefined = ''; + if (isBoxed) { + const box1 = nodeMap.get(data.parent!); + const box1Data = box1?.data as NodeData; + box1Type = box1Data.isBox; + } + const isAppBoxed = box1Type === BoxByType.APP; + // Badges portion of label... + + // PFT provides the ability to add a single Icon (badge) on the label. Given that we can't + // duplicate what we do with Cytoscape, which is to add multiple badges on the label, + // we'll reserve the single icon to be used only to identify traffic sources (i.e. roots). + // Note that a gateway is a special traffic source. + // Other badges will be added as attachments (decorators) on the node, but that requires + // the Node, not the NodeModel, and it;s no longer part of the label, so it's not done here. + + // Content portion of label (i.e. the text)... + const content: string[] = []; + + switch (nodeType) { + case NodeType.AGGREGATE: + content.unshift(data.aggregateValue!); + break; + case NodeType.APP: + if (isAppBoxed) { + if (settings.graphType === GraphType.APP) { + content.unshift(app); + } else if (version && version !== UNKNOWN) { + content.unshift(version); + } else { + content.unshift(workload ? workload : app); + } + } else { + if (settings.graphType === GraphType.APP || version === UNKNOWN) { + content.unshift(app); + } else { + content.unshift(version); + content.unshift(app); + } + } + break; + case NodeType.BOX: + switch (isBox) { + case BoxByType.APP: + content.unshift(app); + break; + case BoxByType.CLUSTER: + content.unshift(data.cluster); + break; + case BoxByType.NAMESPACE: + content.unshift(data.namespace); + break; + default: + content.unshift('error'); + } + break; + case NodeType.SERVICE: + content.unshift(service); + break; + case NodeType.UNKNOWN: + content.unshift(UNKNOWN); + break; + case NodeType.WORKLOAD: + content.unshift(workload); + break; + default: + content.unshift('error'); + } + + // The final label... + + if (isBox) { + let pfBadge: PFBadgeType | undefined; + switch (isBox) { + case BoxByType.APP: + pfBadge = PFBadges.App; + break; + case BoxByType.CLUSTER: + pfBadge = PFBadges.Cluster; + break; + case BoxByType.NAMESPACE: + pfBadge = PFBadges.Namespace; + break; + default: + pfBadge = undefined; + } + + if (pfBadge) { + data.badge = pfBadge.badge; + } + node.label = content.shift(); + if (content.length > 0) { + data.secondaryLabel = content.join(':'); + } + return; + } + + node.label = content.shift(); + + return; +}; diff --git a/workspaces/kiali/plugins/kiali/src/pages/WorkloadDetails/PodStatus.tsx b/workspaces/kiali/plugins/kiali/src/pages/WorkloadDetails/PodStatus.tsx new file mode 100644 index 0000000000..9bdc0e5c2e --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/pages/WorkloadDetails/PodStatus.tsx @@ -0,0 +1,77 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import React from 'react'; + +import { Tooltip } from '@material-ui/core'; + +import { ValidationStack } from '../../components/Validations/ValidationStack'; +import { createIcon } from '../../config/KialiIcon'; +import { + DEGRADED, + HEALTHY, + isProxyStatusSynced, + mergeStatus, + ProxyStatus, + Status, +} from '../../types/Health'; +import { ObjectCheck, ValidationTypes } from '../../types/IstioObjects'; +import { highestSeverity, validationToHealth } from '../../types/ServiceInfo'; +import { ProxyStatusList } from './ProxyStatusList'; + +type PodStatusProps = { + checks?: ObjectCheck[]; + proxyStatus?: ProxyStatus; +}; + +export const PodStatus: React.FC = (props: PodStatusProps) => { + const proxyStatusSeverity: Status = + props.proxyStatus && !isProxyStatusSynced(props.proxyStatus) + ? DEGRADED + : HEALTHY; + + const showTooltip = (): boolean => { + const validationSeverity: ValidationTypes = highestSeverity( + props.checks || [], + ); + return ( + proxyStatusSeverity.name !== HEALTHY.name || + validationSeverity !== ValidationTypes.Correct + ); + }; + + if (showTooltip()) { + const severityIcon = (): Status => { + const validationSeverity: Status = validationToHealth( + highestSeverity(props.checks ?? []), + ); + return mergeStatus(proxyStatusSeverity, validationSeverity); + }; + + const tooltipContent: React.ReactNode = ( + <> + + + + ); + + return ( + + {createIcon(severityIcon())} + + ); + } + return createIcon(HEALTHY); +}; diff --git a/workspaces/kiali/plugins/kiali/src/pages/WorkloadDetails/ProxyStatusList.tsx b/workspaces/kiali/plugins/kiali/src/pages/WorkloadDetails/ProxyStatusList.tsx new file mode 100644 index 0000000000..87f2ff49ea --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/pages/WorkloadDetails/ProxyStatusList.tsx @@ -0,0 +1,64 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import * as React from 'react'; + +import { PFColors } from '../../components/Pf/PfColors'; +import { kialiStyle } from '../../styles/StyleUtils'; +import { + isProxyStatusComponentSynced, + isProxyStatusSynced, + ProxyStatus, +} from '../../types/Health'; + +type Props = { + status?: ProxyStatus; +}; + +const smallStyle = kialiStyle({ fontSize: '70%', color: PFColors.White }); +const colorStyle = kialiStyle({ fontSize: '1.1rem', color: PFColors.White }); + +export class ProxyStatusList extends React.Component { + statusList = () => { + if (!this.props.status) { + return []; + } + + return [ + { c: 'CDS', s: this.props.status.CDS }, + { c: 'EDS', s: this.props.status.EDS }, + { c: 'LDS', s: this.props.status.LDS }, + { c: 'RDS', s: this.props.status.RDS }, + ].map((value: { c: string; s: string }, _: number) => { + if (!isProxyStatusComponentSynced(value.s)) { + const status = value.s ? value.s : '-'; + return
    {`${value.c}: ${status}`}
    ; + } + return null; + }); + }; + + render() { + if (this.props.status && !isProxyStatusSynced(this.props.status)) { + return ( +
    + Istio Proxy Status + {this.statusList()} +
    + ); + } + return null; + } +} diff --git a/workspaces/kiali/plugins/kiali/src/pages/WorkloadDetails/WorkloadDetailsPage.tsx b/workspaces/kiali/plugins/kiali/src/pages/WorkloadDetails/WorkloadDetailsPage.tsx new file mode 100644 index 0000000000..ba8563a34b --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/pages/WorkloadDetails/WorkloadDetailsPage.tsx @@ -0,0 +1,249 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import * as React from 'react'; +import { useLocation } from 'react-router-dom'; +import { useAsyncFn, useDebounce } from 'react-use'; + +import { Content, EmptyState } from '@backstage/core-components'; +import { useApi } from '@backstage/core-plugin-api'; + +import { CircularProgress, Tab, Tabs } from '@material-ui/core'; + +import { + BreadcrumbView, + getPath, +} from '../../components/BreadcrumbView/BreadcrumbView'; +import { DefaultSecondaryMasthead } from '../../components/DefaultSecondaryMasthead/DefaultSecondaryMasthead'; +import * as FilterHelper from '../../components/FilterList/FilterHelper'; +import { IstioMetrics } from '../../components/Metrics/IstioMetrics'; +import { a11yProps, TabPanel, useStyles } from '../../components/Tab/TabPanel'; +import { TimeDurationComponent } from '../../components/Time/TimeDurationComponent'; +import { getErrorString, kialiApiRef } from '../../services/Api'; +import { KialiAppState, KialiContext } from '../../store'; +import { baseStyle } from '../../styles/StyleUtils'; +import { TimeRange } from '../../types/Common'; +import { WorkloadHealth } from '../../types/Health'; +import { MetricsObjectTypes } from '../../types/Metrics'; +import { Workload, WorkloadQuery } from '../../types/Workload'; +import { WorkloadInfo } from './WorkloadInfo'; +import { WorkloadPodLogs } from './WorkloadPodLogs'; + +export const WorkloadDetailsPage = (props: { entity?: boolean }) => { + const path = getPath(useLocation()); + const namespace = path.namespace; + const workload = path.item; + const kialiClient = useApi(kialiApiRef); + const kialiState = React.useContext(KialiContext) as KialiAppState; + const [workloadItem, setWorkloadItem] = React.useState(); + const [health, setHealth] = React.useState(); + const [error, setError] = React.useState(); + const [duration, setDuration] = React.useState( + FilterHelper.currentDuration(), + ); + const hasPods = workloadItem?.pods?.length; + const [value, setValue] = React.useState(0); + const classes = useStyles(); + + const grids = () => { + const elements = []; + elements.push( + , + ); + return elements; + }; + + const fetchWorkload = async () => { + const query: WorkloadQuery = { + health: 'true', + rateInterval: `${duration.toString()}s`, + validate: 'false', + }; + if (!namespace || !workload) { + setError(`Could not fetch workload: Empty namespace or workload name`); + kialiState.alertUtils?.add( + `Could not fetch workload: Empty namespace or workload name`, + ); + return; + } + kialiClient + .getWorkload(namespace ? namespace : '', workload ? workload : '', query) + .then((workloadResponse: Workload) => { + setWorkloadItem(workloadResponse); + + const wkHealth = WorkloadHealth.fromJson( + namespace ? namespace : '', + workloadResponse.name, + workloadResponse.health, + { + rateInterval: duration, + hasSidecar: workloadResponse.istioSidecar, + hasAmbient: workloadResponse.istioAmbient, + }, + ); + setHealth(wkHealth); + }) + .catch(err => { + setError(`Could not fetch workload: ${getErrorString(err)}`); + kialiState.alertUtils!.add( + `Could not fetch workload: ${getErrorString(err)}`, + ); + }); + }; + + const [{ loading }, refresh] = useAsyncFn( + async () => { + // Check if the config is loaded + await fetchWorkload(); + }, + [], + { loading: true }, + ); + useDebounce(refresh, 10); + + if (loading) { + return ; + } + + const overviewTab = (): React.ReactElement => { + return ( + <> + {workloadItem && ( + + )} + + ); + }; + + const tm: TimeRange = {}; + const logsTab = (): React.ReactElement => { + return ( + <> + {hasPods && namespace && ( + + )} + + ); + }; + + const inboundTab = (): React.ReactElement => { + return ( + <> + {namespace && workload && ( + + )} + + ); + }; + + const outboundTab = (): React.ReactElement => { + return ( + <> + {namespace && workload && ( + + )} + + ); + }; + + const handleChange = ( + _event: any, + newValue: React.SetStateAction, + ) => { + setValue(newValue); + }; + + return ( +
    + + + fetchWorkload()} + /> + {error !== undefined && ( + No Workload found
    } + /> + )} + {error === undefined && ( +
    + + + + + + + + {overviewTab()} + + + {logsTab()} + + + {inboundTab()} + + + {outboundTab()} + +
    + )} + + + ); +}; diff --git a/workspaces/kiali/plugins/kiali/src/pages/WorkloadDetails/WorkloadInfo.tsx b/workspaces/kiali/plugins/kiali/src/pages/WorkloadDetails/WorkloadInfo.tsx new file mode 100644 index 0000000000..381e1049a6 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/pages/WorkloadDetails/WorkloadInfo.tsx @@ -0,0 +1,360 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import React from 'react'; +import { useAsyncFn, useDebounce } from 'react-use'; + +import { useApi } from '@backstage/core-plugin-api'; + +import { CircularProgress, Grid } from '@material-ui/core'; + +import { IstioConfigCard } from '../../components/IstioConfigCard/IstioConfigCard'; +import { isIstioNamespace, serverConfig } from '../../config'; +import { kialiApiRef } from '../../services/Api'; +import { WorkloadHealth } from '../../types/Health'; +import { + IstioConfigItem, + IstioConfigList, + toIstioItems, +} from '../../types/IstioConfigList'; +import { + ContainerInfo, + ObjectCheck, + ObjectValidation, + Pod, + Validations, + ValidationTypes, +} from '../../types/IstioObjects'; +import { DRAWER, ENTITY } from '../../types/types'; +import { Workload } from '../../types/Workload'; +import { WorkloadPods } from './WorkloadPods'; +import { WorkloadDescription } from './WorkloadsDescription'; + +type WorkloadInfoProps = { + entity?: boolean; + duration?: number; + namespace?: string; + workload: Workload; + health?: WorkloadHealth; + view?: string; +}; + +export const WorkloadInfo = (workloadProps: WorkloadInfoProps) => { + const pods = workloadProps.workload.pods || []; + const namespace = workloadProps.namespace ? workloadProps.namespace : ''; + const kialiClient = useApi(kialiApiRef); + const [istioValidations, setIstioValidations] = React.useState< + IstioConfigItem[] | undefined + >(); + const workloadIstioResources = [ + 'gateways', + 'authorizationpolicies', + 'peerauthentications', + 'sidecars', + 'requestauthentications', + 'envoyfilters', + ]; + const labels = workloadProps.workload.labels + ? workloadProps.workload?.labels + : {}; + const wkLabels: string[] = []; + Object.keys(labels).forEach(key => { + const label = key + (labels[key] ? `=${labels[key]}` : ''); + wkLabels.push(label); + }); + const workloadSelector = wkLabels.join(','); + + const wkIstioTypes = [ + { field: 'gateways', validation: 'gateway' }, + { field: 'sidecars', validation: 'sidecar' }, + { field: 'envoyFilters', validation: 'envoyfilter' }, + { field: 'requestAuthentications', validation: 'requestauthentication' }, + { field: 'authorizationPolicies', validation: 'authorizationpolicy' }, + { field: 'peerAuthentications', validation: 'peerauthentication' }, + ]; + + const getValidations = async (istioConfigResponse: IstioConfigList) => { + const istioConfigItems = istioConfigResponse + ? toIstioItems(istioConfigResponse, workloadProps.workload?.cluster || '') + : []; + if (workloadProps.workload) { + if (istioConfigResponse?.validations) { + const typeNames: { [key: string]: string[] } = {}; + wkIstioTypes.forEach(wkIstioType => { + if ( + istioConfigResponse && + istioConfigResponse.validations[wkIstioType.validation] + ) { + typeNames[wkIstioType.validation] = []; + // @ts-ignore + istioConfigResponse[wkIstioType.field]?.forEach(r => + typeNames[wkIstioType.validation].push(r.metadata.name), + ); + } + }); + } + } + + setIstioValidations(istioConfigItems); + }; + + const fetchIstioConfig = async () => { + kialiClient + .getIstioConfig( + namespace, + workloadIstioResources, + true, + '', + workloadSelector, + workloadProps.workload?.cluster, + ) + .then((istioConfigResponse: IstioConfigList) => { + getValidations(istioConfigResponse); + }); + }; + + const [{ loading }, refresh] = useAsyncFn( + async () => { + // Check if the config is loaded + fetchIstioConfig(); + }, + [], + { loading: true }, + ); + + useDebounce(refresh, 10); + if (loading) { + return ; + } + + // All information for validations is fetched in the workload, no need to add another call + const workloadValidations = (workload: Workload): Validations => { + const noIstiosidecar: ObjectCheck = { + message: 'Pod has no Istio sidecar', + severity: ValidationTypes.Warning, + path: '', + }; + const noAppLabel: ObjectCheck = { + message: 'Pod has no app label', + severity: ValidationTypes.Warning, + path: '', + }; + const noVersionLabel: ObjectCheck = { + message: 'Pod has no version label', + severity: ValidationTypes.Warning, + path: '', + }; + const pendingPod: ObjectCheck = { + message: 'Pod is in Pending Phase', + severity: ValidationTypes.Warning, + path: '', + }; + const unknownPod: ObjectCheck = { + message: 'Pod is in Unknown Phase', + severity: ValidationTypes.Warning, + path: '', + }; + const failedPod: ObjectCheck = { + message: 'Pod is in Failed Phase', + severity: ValidationTypes.Error, + path: '', + }; + const failingPodContainer: ObjectCheck = { + message: 'Pod has failing container', + severity: ValidationTypes.Warning, + path: '', + }; + const failingPodIstioContainer: ObjectCheck = { + message: 'Pod has failing Istio container', + severity: ValidationTypes.Warning, + path: '', + }; + const failingPodAppContainer: ObjectCheck = { + message: 'Pod has failing app container', + severity: ValidationTypes.Warning, + path: '', + }; + + const istioLabels = serverConfig.istioLabels; + const istioAnnotations = serverConfig.istioAnnotations; + + const checkPodContainers = ( + containerInfo: ContainerInfo[], + ): ObjectCheck[] => { + const validations: ObjectCheck[] = []; + containerInfo.forEach(c => { + if (!c.isReady && validations.indexOf(failingPodAppContainer) === -1) { + validations.push(failingPodAppContainer); + } + }); + return validations; + }; + + const checkIstioContainers = ( + containerInfo: ContainerInfo[], + ): ObjectCheck[] => { + const validations: ObjectCheck[] = []; + containerInfo.forEach(c => { + if ( + !c.isReady && + validations.indexOf(failingPodIstioContainer) === -1 + ) { + validations.push(failingPodIstioContainer); + } + }); + return validations; + }; + + const addMeshValidations = (pod: Pod): ObjectCheck[] => { + const validations: ObjectCheck[] = []; + if ( + !( + serverConfig.ambientEnabled && + (pod.annotations + ? pod.annotations[istioAnnotations.ambientAnnotation] === + istioAnnotations.ambientAnnotationEnabled + : false) + ) + ) { + validations.push(noIstiosidecar); + } + return validations; + }; + + const getPodValidations = (pod: Pod): ObjectValidation => { + const validations: ObjectValidation = { + name: pod.name, + objectType: 'pod', + valid: true, + checks: [], + }; + + if (!pod.istioContainers || pod.istioContainers.length === 0) { + validations.checks.concat(addMeshValidations(pod)); + } else { + validations.checks.concat(checkIstioContainers(pod.istioContainers)); + } + + if (!pod.containers || pod.containers.length === 0) { + validations.checks.push(failingPodContainer); + } else { + validations.checks.concat(checkPodContainers(pod.containers)); + } + if (!pod.labels) { + validations.checks.push(noAppLabel); + validations.checks.push(noVersionLabel); + } else { + if (!pod.appLabel) { + validations.checks.push(noAppLabel); + } + if (!pod.versionLabel) { + validations.checks.push(noVersionLabel); + } + } + return validations; + }; + + const validations: Validations = {}; + const isWaypoint = + serverConfig.ambientEnabled && + workload.labels && + workload.labels[istioLabels.ambientWaypointLabel] === + istioLabels.ambientWaypointLabelValue; + + if (workload.pods.length > 0) { + validations.pod = {}; + workload.pods.forEach(pod => { + validations.pod[pod.name] = { + name: pod.name, + objectType: 'pod', + valid: true, + checks: [], + }; + if (!isIstioNamespace(namespace) && !isWaypoint) { + validations.pod[pod.name] = getPodValidations(pod); + } + + switch (pod.status) { + case 'Pending': + validations.pod[pod.name].checks.push(pendingPod); + break; + case 'Unknown': + validations.pod[pod.name].checks.push(unknownPod); + break; + case 'Failed': + validations.pod[pod.name].checks.push(failedPod); + break; + default: + // Pod healthy + } + // If statusReason is present + if (pod.statusReason) { + validations.pod[pod.name].checks.push({ + message: pod.statusReason, + severity: ValidationTypes.Warning, + path: '', + }); + } + validations.pod[pod.name].valid = + validations.pod[pod.name].checks.length === 0; + }); + } + return validations; + }; + + const size = + workloadProps.view === ENTITY || workloadProps.view === DRAWER ? 12 : 4; + return ( + <> + {workloadProps.workload && ( + + + + + {workloadProps.view !== DRAWER && ( + <> + + + + + + + + )} + + )} + + ); +}; diff --git a/workspaces/kiali/plugins/kiali/src/pages/WorkloadDetails/WorkloadPodLogs.tsx b/workspaces/kiali/plugins/kiali/src/pages/WorkloadDetails/WorkloadPodLogs.tsx new file mode 100644 index 0000000000..67fb077557 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/pages/WorkloadDetails/WorkloadPodLogs.tsx @@ -0,0 +1,1245 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import * as React from 'react'; +import { CopyToClipboard } from 'react-copy-to-clipboard'; +import { useAsyncFn, useDebounce } from 'react-use'; + +import { useApi } from '@backstage/core-plugin-api'; + +import { + Button, + Card, + CardContent, + Checkbox, + CircularProgress, + FormControlLabel, + Grid, + Input, + List, + Select, + Toolbar, + Tooltip, +} from '@material-ui/core'; +import MenuItem from '@material-ui/core/MenuItem'; +import { Alert } from '@material-ui/lab'; +import memoize from 'micro-memoize'; +import moment from 'moment'; +import screenfull, { Screenfull } from 'screenfull'; + +import { history, URLParam } from '../../app/History'; +import { AccessLogModal } from '../../components/Envoy/AccessLogModal'; +import { RenderComponentScroll } from '../../components/Nav/Page/RenderComponentScroll'; +import { PFBadge, PFBadges } from '../../components/Pf/PfBadges'; +import { PFColors, PFColorVal } from '../../components/Pf/PfColors'; +import { ToolbarDropdown } from '../../components/ToolbarDropdown/ToolbarDropdown'; +import { KialiIcon } from '../../config/KialiIcon'; +import { kialiApiRef } from '../../services/Api'; +import { kialiStyle } from '../../styles/StyleUtils'; +import { + evalTimeRange, + TimeInMilliseconds, + TimeInSeconds, + TimeRange, +} from '../../types/Common'; +import { AccessLog, LogEntry, Pod, PodLogs } from '../../types/IstioObjects'; +import { Span, TracingQuery } from '../../types/Tracing'; +import { PromisesRegistry } from '../../utils/CancelablePromises'; +import { formatDuration } from '../../utils/tracing/TracingHelper'; + +const appContainerColors = [ + PFColors.Blue300, + PFColors.Green300, + PFColors.Purple100, + PFColors.Orange400, +]; +const proxyContainerColor = PFColors.Gold400; +const spanColor = PFColors.Cyan300; + +type ReduxProps = { + timeRange: TimeRange; +}; + +export type WorkloadPodLogsProps = ReduxProps & { + cluster?: string; + lastRefreshAt: TimeInMilliseconds; + namespace: string; + pods: Pod[]; + workload: string; +}; + +type ContainerOption = { + color: PFColorVal; + displayName: string; + isProxy: boolean; + isSelected: boolean; + name: string; +}; + +type Entry = { + logEntry?: LogEntry; + span?: Span; + timestamp: string; + timestampUnix: TimeInSeconds; +}; + +interface WorkloadPodLogsState { + accessLogModals: Map; + containerOptions?: ContainerOption[]; + entries: Entry[]; + fullscreen: boolean; + hideError?: string; + hideLogValue: string; + isTimeOptionsOpen: boolean; + kebabOpen: boolean; + linesTruncatedContainers: string[]; + loadingLogs: boolean; + loadingLogsError?: string; + logWindowSelections: any[]; + maxLines: number; + podValue?: number; + showClearHideLogButton: boolean; + showClearShowLogButton: boolean; + showError?: string; + showLogValue: string; + showSpans: boolean; + showTimestamps: boolean; + showToolbar: boolean; + useRegex: boolean; +} + +const NoLogsFoundMessage = 'No container logs found for the time period.'; + +const MaxLinesOptions = { + '-1': 'All lines', + '100': '100 lines', + '500': '500 lines', + '1000': '1000 lines', + '3000': '3000 lines', + '5000': '5000 lines', + '10000': '10000 lines', + '25000': '25000 lines', +}; + +const alInfoIcon = kialiStyle({ + display: 'flex', + width: '0.75rem', +}); + +const infoIcons = kialiStyle({ + marginLeft: '0.5em', + marginTop: '30%', + width: '1.5rem', +}); + +const toolbarTail = kialiStyle({ + marginTop: '0.125rem', +}); + +const logsDiv = kialiStyle({ + marginRight: '0.5rem', + overflowX: 'scroll', + overflowY: 'hidden', +}); + +const logsDisplay = kialiStyle({ + fontFamily: 'monospace', + margin: 0, + padding: 0, + resize: 'none', + width: '100%', +}); + +const iconStyle = kialiStyle({ + marginLeft: '0.5rem', +}); + +const checkboxStyle = kialiStyle({ + marginRight: '0rem', + marginLeft: '1rem', +}); + +const noLogsStyle = kialiStyle({ + paddingTop: '0.75rem', + paddingLeft: '0.75rem', +}); + +const logLineStyle = kialiStyle({ + display: 'flex', + lineHeight: '1.5rem', + paddingLeft: '0.75rem', +}); + +const logInfoStyleIcon = kialiStyle({ + paddingLeft: 0, + width: '0.75rem', + height: '0.75rem', + fontFamily: 'monospace', + fontSize: '0.75rem', + padding: '10px 10px 0 5px !important', + minWidth: '0 !important', +}); + +const logMessaageStyle = kialiStyle({ + fontSize: '0.75rem', + paddingRight: '1rem', +}); + +const logsBackground = (enabled: boolean): React.CSSProperties => ({ + backgroundColor: enabled ? PFColors.Black1000 : PFColors.Black500, + display: 'table', +}); + +const logsHeight = ( + showToolbar: boolean, + fullscreen: boolean, + showMaxLinesWarning: boolean, +): React.CSSProperties => { + const toolbarHeight = showToolbar ? '0px' : '49px'; + const maxLinesWarningHeight = showMaxLinesWarning ? '27px' : '0px'; + + return { + height: fullscreen + ? `calc(100vh - 130px + ${toolbarHeight} - ${maxLinesWarningHeight})` + : `calc(var(--kiali-details-pages-tab-content-height) - 155px + ${toolbarHeight} - ${maxLinesWarningHeight})`, + }; +}; + +const formatDate = (timestamp: string): string => { + const entryTimestamp = moment(timestamp).format('YYYY-MM-DD HH:mm:ss.SSS'); + + return entryTimestamp; +}; + +export const WorkloadPodLogs = (props: WorkloadPodLogsProps) => { + const promises: PromisesRegistry = new PromisesRegistry(); + const podOptions = (): string[] => { + const toRet: string[] = []; + if (props.pods.length > 0) { + for (let i = 0; i < props.pods.length; ++i) { + toRet[`${i}`] = props.pods[i].name; + } + } + return toRet; + }; + const kialiClient = useApi(kialiApiRef); + const getContainerOptions = (pod: Pod): ContainerOption[] => { + // sort containers by name, consistently positioning proxy container first. + let containers = [...(pod.istioContainers ?? [])]; + containers.push(...(pod.containers ?? [])); + + containers = containers.sort((c1, c2) => { + if (c1.isProxy !== c2.isProxy) { + return c1.isProxy ? 0 : 1; + } + return c1.name < c2.name ? 0 : 1; + }); + + let appContainerCount = 0; + const containerOptions = containers.map(c => { + const name = c.name; + + if (c.isProxy) { + return { + color: proxyContainerColor, + displayName: name, + isProxy: true, + isSelected: true, + name: name, + }; + } + + const color = + appContainerColors[appContainerCount++ % appContainerColors.length]; + return { + color: color, + displayName: name, + isProxy: false, + isSelected: true, + name: name, + }; + }); + + return containerOptions; + }; + const pod = props.pods[0]; + const initState: WorkloadPodLogsState = { + accessLogModals: new Map(), + containerOptions: getContainerOptions(pod), + entries: [], + fullscreen: false, + hideLogValue: '', + isTimeOptionsOpen: false, + kebabOpen: false, + linesTruncatedContainers: [], + loadingLogs: false, + logWindowSelections: [], + podValue: 0, + maxLines: 100, + showClearHideLogButton: true, + showClearShowLogButton: true, + showSpans: false, + showTimestamps: false, + showToolbar: true, + showLogValue: '', + useRegex: false, + }; + + const [workloadPodLogsState, setWorkloadPodLogsState] = + React.useState(initState); + + const fetchEntries = ( + namespace: string, + podName: string, + containerOptions: ContainerOption[], + showSpans: boolean, + maxLines: number, + timeRange: TimeRange, + cluster?: string, + ): void => { + const now: TimeInMilliseconds = Date.now(); + const timeRangeDates = evalTimeRange(timeRange); + const sinceTime: TimeInSeconds = Math.floor( + timeRangeDates[0].getTime() / 1000, + ); + const endTime: TimeInMilliseconds = timeRangeDates[1].getTime(); + + // to save work on the server-side, only supply duration when time range is in the past + let duration = 0; + + if (endTime < now) { + duration = Math.floor(timeRangeDates[1].getTime() / 1000) - sinceTime; + } + + const selectedContainers = containerOptions.filter(c => c.isSelected); + const podPromises: Promise[] = selectedContainers.map( + c => { + return kialiClient.getPodLogs( + namespace, + podName, + c.name, + maxLines, + sinceTime, + duration, + c.isProxy, + cluster, + ); + }, + ); + + if (showSpans) { + // Convert seconds to microseconds + const params: TracingQuery = { + endMicros: endTime * 1000, + startMicros: sinceTime * 1000000, + }; + + podPromises.unshift( + kialiClient.getWorkloadSpans( + namespace, + props.workload, + params, + props.cluster, + ), + ); + } + + promises + .registerAll('logs', podPromises) + .then(responses => { + let entries = [] as Entry[]; + if (showSpans) { + const spans = showSpans ? (responses[0] as Span[]) : ([] as Span[]); + + entries = spans.map(span => { + const startTimeU = Math.floor(span.startTime / 1000); + + return { + timestamp: moment(startTimeU) + .utc() + .format('YYYY-MM-DD HH:mm:ss.SSS'), + timestampUnix: startTimeU, + span: span, + } as Entry; + }); + responses.shift(); + } + const linesTruncatedContainers: string[] = []; + + for (let i = 0; i < responses.length; i++) { + const response = responses[i] as PodLogs; + const containerLogEntries = response.entries as LogEntry[]; + + if (!containerLogEntries) { + continue; + } + + const color = selectedContainers[i].color; + containerLogEntries.forEach(le => { + le.color = color; + entries.push({ + timestamp: le.timestamp, + timestampUnix: le.timestampUnix, + logEntry: le, + } as Entry); + }); + + if (response.linesTruncated) { + // linesTruncatedContainers.push(new URL(responses[i].responseURL).searchParams.get('container')!); + } + } + + const sortedEntries = entries.sort((a, b) => { + return a.timestampUnix - b.timestampUnix; + }); + + const updatedState = { + ...workloadPodLogsState, + entries: sortedEntries, + linesTruncatedContainers: linesTruncatedContainers, + loadingLogs: false, + showSpans: showSpans, + maxLines: maxLines, + }; + setWorkloadPodLogsState(updatedState); + + return; + }) + .catch(error => { + if (error.isCanceled) { + const updatedState = { + ...workloadPodLogsState, + loadingLogs: false, + }; + setWorkloadPodLogsState(updatedState); + return; + } + + const errorMsg = error.response?.data?.error ?? error.message; + const nowDate = Date.now(); + + const updatedState = { + ...workloadPodLogsState, + loadingLogs: false, + entries: [ + { + timestamp: nowDate.toString(), + timestampUnix: nowDate, + logEntry: { + severity: 'Error', + timestamp: nowDate.toString(), + timestampUnix: nowDate, + message: `Failed to fetch workload logs: ${errorMsg}`, + }, + }, + ], + }; + setWorkloadPodLogsState(updatedState); + }); + }; + + const toggleSpans = (checked: boolean): void => { + const urlParams = new URLSearchParams(history.location.search); + urlParams.set(URLParam.SHOW_SPANS, String(checked)); + history.replace(`${history.location.pathname}?${urlParams.toString()}`); + + const updatedState = { + ...workloadPodLogsState, + showSpans: !workloadPodLogsState.showSpans, + }; + setWorkloadPodLogsState(updatedState); + const podL = props.pods[workloadPodLogsState.podValue!]; + fetchEntries( + props.namespace, + podL.name, + workloadPodLogsState.containerOptions + ? workloadPodLogsState.containerOptions + : [], + updatedState.showSpans, + updatedState.maxLines, + props.timeRange, + props.cluster, + ); + }; + + const toggleSelected = (c: ContainerOption): void => { + c.isSelected = !c.isSelected; + + const updatedState = { + ...workloadPodLogsState, + containerOptions: [...workloadPodLogsState.containerOptions!], + }; + setWorkloadPodLogsState(updatedState); + const podL = props.pods[workloadPodLogsState.podValue!]; + fetchEntries( + props.namespace, + podL.name, + [...workloadPodLogsState.containerOptions!], + updatedState.showSpans, + updatedState.maxLines, + props.timeRange, + props.cluster, + ); + }; + + const getContainerLegend = (): React.ReactNode => { + return ( +
    +
    + + + {workloadPodLogsState.containerOptions!.map((c, i) => { + return ( + toggleSelected(c)} + /> + } + label={ + + {c.displayName} + + } + /> + ); + })} +
    +
    + ); + }; + + // filteredEntries is a memoized function which returns the set of entries that should be visible in the + // logs pane, given the values of show and hide filter, and given the "use regex" configuration. + // When the function is called for the first time with certain combination of parameters, the set of filtered + // entries is calculated, cached and returned. Thereafter, if the function is called with the same values, the + // cached set is returned; otherwise, a new set is re-calculated, re-cached and returned, and the old + // set is discarded. + const filteredEntries = memoize( + ( + entries: Entry[], + showValue: string, + hideValue: string, + useRegex: boolean, + ) => { + let filteredEntriesM = entries; + + if (!!showValue) { + if (useRegex) { + try { + const regexp = RegExp(showValue); + filteredEntriesM = filteredEntriesM.filter( + e => !e.logEntry || regexp.test(e.logEntry.message), + ); + + if (!!workloadPodLogsState.showError) { + const updatedState = { + ...workloadPodLogsState, + showError: undefined, + }; + setWorkloadPodLogsState(updatedState); + } + } catch (e) { + if (e instanceof Error) { + const updatedState = { + ...workloadPodLogsState, + showError: `Show: ${e.message}`, + }; + setWorkloadPodLogsState(updatedState); + } + } + } else { + filteredEntriesM = filteredEntriesM.filter( + e => !e.logEntry || e.logEntry.message.includes(showValue), + ); + } + } + + if (!!hideValue) { + if (useRegex) { + try { + const regexp = RegExp(hideValue); + filteredEntriesM = filteredEntriesM.filter( + e => !e.logEntry || !regexp.test(e.logEntry.message), + ); + + if (!!workloadPodLogsState.hideError) { + const updatedState = { + ...workloadPodLogsState, + hideError: undefined, + }; + setWorkloadPodLogsState(updatedState); + } + } catch (e) { + if (e instanceof Error) { + const updatedState = { + ...workloadPodLogsState, + hideError: `Hide: ${e.message}`, + }; + setWorkloadPodLogsState(updatedState); + } + } + } else { + filteredEntriesM = filteredEntriesM.filter( + e => !e.logEntry || !e.logEntry.message.includes(hideValue), + ); + } + } + + return filteredEntriesM; + }, + ); + + const gotoSpan = (span: Span): void => { + const link = + `/namespaces/${props.namespace}/workloads/${props.workload}` + + `?tab=traces&${URLParam.TRACING_TRACE_ID}=${span.traceID}&${URLParam.TRACING_SPAN_ID}=${span.spanID}`; + history.push(link); + }; + + const entryToString = (entry: Entry): string => { + if (entry.logEntry) { + const le = entry.logEntry; + return workloadPodLogsState.showTimestamps + ? `${formatDate(entry.timestamp)} ${le.message}` + : le.message; + } + + const { duration, operationName } = entry.span!; + return `duration: ${formatDuration( + duration, + )}, operationName: ${operationName}`; + }; + + const addAccessLogModal = (k: string, v: AccessLog): void => { + const accessLogModals = new Map( + workloadPodLogsState.accessLogModals, + ); + accessLogModals.set(k, v); + const updatedState = { + ...workloadPodLogsState, + accessLogModals: accessLogModals, + }; + setWorkloadPodLogsState(updatedState); + }; + + const renderLogLine = ({ + index, + style, + showTimestamps, + }: { + index: number; + style?: React.CSSProperties; + showTimestamps: boolean; + }): React.ReactNode => { + const e = filteredEntries( + workloadPodLogsState.entries, + workloadPodLogsState.showLogValue, + workloadPodLogsState.hideLogValue, + workloadPodLogsState.useRegex, + )[index]; + + if (e.span) { + return ( +
    + {showTimestamps && ( + + {e.timestamp} + + )} + + + +

    + {entryToString(e)} +

    +
    + ); + } + + const le = e.logEntry!; + const messageColor = le.color! ?? PFColors.Color200; + + return !le.accessLog ? ( +
    +

    + {entryToString(e)} +

    +
    + ) : ( +
    + {showTimestamps && ( + + {formatDate(le.timestamp)} + + )} + + + + + +

    + {le.message} +

    +
    + ); + }; + + const getLogsDiv = (): React.ReactNode => { + const toggleToolbar = (): void => { + const updatedState = { + ...workloadPodLogsState, + showToolbar: !workloadPodLogsState.showToolbar, + kebabOpen: false, + }; + setWorkloadPodLogsState(updatedState); + }; + + const toggleShowTimestamps = (): void => { + const updatedState = { + ...workloadPodLogsState, + showTimestamps: !workloadPodLogsState.showTimestamps, + kebabOpen: false, + }; + setWorkloadPodLogsState(updatedState); + }; + + const toggleUseRegex = (): void => { + const updatedState = { + ...workloadPodLogsState, + useRegex: !workloadPodLogsState.useRegex, + kebabOpen: false, + }; + setWorkloadPodLogsState(updatedState); + }; + + const kebabActions = () => ( + + ); + + const logEntries = workloadPodLogsState.entries + ? filteredEntries( + workloadPodLogsState.entries, + workloadPodLogsState.showLogValue, + workloadPodLogsState.hideLogValue, + workloadPodLogsState.useRegex, + ) + : []; + + const entriesToString = (entries: Entry[]): string => { + return entries.map(entry => entryToString(entry)).join('\n'); + }; + + const toggleFullscreen = (): void => { + const screenFullAlias = screenfull as Screenfull; // this casting was necessary + + if (screenFullAlias.isFullscreen) { + screenFullAlias.exit(); + } else { + const element = document.getElementById('logs'); + + if (screenFullAlias.isEnabled) { + if (element) { + screenFullAlias.request(element); + } + } + } + }; + + const hasEntries = (entries: Entry[]): boolean => + !!entries && entries.length > 0; + + const renderLogs = (showTimestamps: boolean): React.ReactElement => { + return ( + <> + {filteredEntries( + workloadPodLogsState.entries, + workloadPodLogsState.showLogValue, + workloadPodLogsState.hideLogValue, + workloadPodLogsState.useRegex, + ).map((_, index) => { + return renderLogLine({ + index: index, + showTimestamps: showTimestamps, + }); + })} + + ); + }; + + return ( +
    + + {getContainerLegend()} + +
    + + + + + + + + + + + {kebabActions()} +
    +
    + + {workloadPodLogsState.linesTruncatedContainers.length > 0 && ( +
    + +
    + )} + +
    0, + ), + ...logsBackground(hasEntries(workloadPodLogsState.entries)), + }} + > + + {logEntries.length === 0 ? ( +
    {NoLogsFoundMessage}
    + ) : ( + renderLogs(workloadPodLogsState.showTimestamps) + )} +
    +
    +
    + ); + }; + + const removeAccessLogModal = (_: string): void => { + const accessLogModals = new Map( + workloadPodLogsState.accessLogModals, + ); + const updatedState = { + ...workloadPodLogsState, + accessLogModals: accessLogModals, + kebabOpen: !workloadPodLogsState.kebabOpen, + }; + setWorkloadPodLogsState(updatedState); + }; + + const getAccessLogModals = (): React.ReactNode[] => { + const modals: React.ReactNode[] = []; + let i = 0; + + workloadPodLogsState.accessLogModals.forEach((v, k) => { + modals.push( + removeAccessLogModal(k)} + />, + ); + }); + + return modals; + }; + + const setPod = (podValue: string): void => { + const podL = props.pods[Number(podValue)]; + const containerNames = getContainerOptions(podL); + + const updatedState = { + ...workloadPodLogsState, + containerOptions: containerNames, + podValue: Number(podValue), + }; + setWorkloadPodLogsState(updatedState); + }; + + const setMaxLines = (maxLines: number): void => { + workloadPodLogsState.maxLines = maxLines; + const updatedState = { + ...workloadPodLogsState, + maxLines: maxLines, + }; + setWorkloadPodLogsState(updatedState); + const podL = props.pods[workloadPodLogsState.podValue!]; + fetchEntries( + props.namespace, + podL.name, + workloadPodLogsState.containerOptions + ? workloadPodLogsState.containerOptions + : [], + updatedState.showSpans, + updatedState.maxLines, + props.timeRange, + props.cluster, + ); + }; + + const checkSubmitShow = (event: React.KeyboardEvent): void => { + if (event.key === 'Enter') { + event.preventDefault(); + + const updatedState = { + ...workloadPodLogsState, + showClearShowLogButton: !!(event.target as HTMLInputElement).value, + showLogValue: (event.target as HTMLInputElement).value, + }; + setWorkloadPodLogsState(updatedState); + } + }; + + const clearShow = (): void => { + // TODO: when TextInput refs are fixed in PF4 then use the ref and remove the direct HTMLElement usage + // this.showInputRef.value = ''; + const htmlInputElement: HTMLInputElement = document.getElementById( + 'log_show', + ) as HTMLInputElement; + if (htmlInputElement !== null) { + htmlInputElement.value = ''; + } + + const updatedState = { + ...workloadPodLogsState, + showError: undefined, + showLogValue: '', + showClearShowLogButton: false, + }; + setWorkloadPodLogsState(updatedState); + }; + + const checkSubmitHide = (event: React.KeyboardEvent): void => { + if (event.key === 'Enter') { + event.preventDefault(); + const updatedState = { + ...workloadPodLogsState, + showClearHideLogButton: !!(event.target as HTMLInputElement).value, + hideLogValue: (event.target as HTMLInputElement).value, + }; + setWorkloadPodLogsState(updatedState); + } + }; + + const clearHide = (): void => { + // TODO: when TextInput refs are fixed in PF4 then use the ref and remove the direct HTMLElement usage + // this.hideInputRef.value = ''; + const htmlInputElement: HTMLInputElement = document.getElementById( + 'log_hide', + ) as HTMLInputElement; + + if (htmlInputElement !== null) { + htmlInputElement.value = ''; + } + + const updatedState = { + ...workloadPodLogsState, + hideError: undefined, + hideLogValue: '', + showClearHideLogButton: false, + }; + setWorkloadPodLogsState(updatedState); + }; + + const [{ loading }, refresh] = useAsyncFn( + async () => { + const podL = props.pods[workloadPodLogsState.podValue!]; + // Check if the config is loaded + fetchEntries( + props.namespace, + podL.name, + workloadPodLogsState.containerOptions + ? workloadPodLogsState.containerOptions + : [], + workloadPodLogsState.showSpans, + workloadPodLogsState.maxLines, + props.timeRange, + props.cluster, + ); + }, + [], + { loading: true }, + ); + useDebounce(refresh, 10); + + if (loading) { + return ; + } + + // @ts-ignore + const maxLines = MaxLinesOptions[workloadPodLogsState.maxLines]; + + // @ts-ignore + return ( + <> + + <> + {workloadPodLogsState.containerOptions && ( + + + + + {workloadPodLogsState.showToolbar && ( + +
    + +
    +
    + setPod(key)} + value={workloadPodLogsState.podValue} + label={ + props.pods[workloadPodLogsState.podValue!]?.name + } + options={podOptions()} + /> +
    + + + {workloadPodLogsState.showClearShowLogButton && ( + + + + )} + + + + {workloadPodLogsState.showClearHideLogButton && ( + + + + )} + + {workloadPodLogsState.showError && ( +
    + {workloadPodLogsState.showError} +
    + )} + {workloadPodLogsState.hideError && ( +
    + {workloadPodLogsState.hideError} +
    + )} + +
    + +
    + +
    +
    +
    + + + toggleSpans(checked) + } + /> + } + label={ + + spans + + } + /> +
    + + setMaxLines(Number(key)) + } + value={workloadPodLogsState.maxLines} + label={maxLines} + options={MaxLinesOptions} + tooltip="Truncate after N log lines" + className={toolbarTail} + /> +
    +
    + )} + {getLogsDiv()} + {getAccessLogModals()} +
    +
    +
    +
    + )} + {workloadPodLogsState.loadingLogsError && ( +
    {workloadPodLogsState.loadingLogsError}
    + )} + +
    + + ); +}; diff --git a/workspaces/kiali/plugins/kiali/src/pages/WorkloadDetails/WorkloadPods.tsx b/workspaces/kiali/plugins/kiali/src/pages/WorkloadDetails/WorkloadPods.tsx new file mode 100644 index 0000000000..a0b456a486 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/pages/WorkloadDetails/WorkloadPods.tsx @@ -0,0 +1,188 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import * as React from 'react'; + +import { EmptyState } from '@backstage/core-components'; + +import { + Card, + CardContent, + CardHeader, + Tooltip, + Typography, +} from '@material-ui/core'; + +import { Labels } from '../../components/Label/Labels'; +import { PFBadge, PFBadges } from '../../components/Pf/PfBadges'; +import { SimpleTable, tRow } from '../../components/SimpleTable'; +import { LocalTime } from '../../components/Time/LocalTime'; +import { KialiIcon } from '../../config/KialiIcon'; +import { cardsHeight, kialiStyle } from '../../styles/StyleUtils'; +import { ObjectValidation, Pod } from '../../types/IstioObjects'; +import { PodStatus } from './PodStatus'; + +type WorkloadPodsProps = { + namespace: string; + pods: Pod[]; + validations: { [key: string]: ObjectValidation }; + workload: string; +}; + +const resourceListStyle = kialiStyle({ + margin: '0 0 0.5rem 0', + $nest: { + '& > ul > li > span': { + float: 'left', + width: '125px', + fontWeight: 700, + }, + }, +}); + +const infoStyle = kialiStyle({ + marginLeft: '0.5rem', +}); + +const iconStyle = kialiStyle({ + display: 'inline-block', +}); + +export const WorkloadPods: React.FC = ( + props: WorkloadPodsProps, +) => { + const columns: any[] = [{ title: 'Name' }, { title: 'Status', width: 10 }]; + + const noPods: React.ReactNode = ( + {`No Pods in workload ${props.workload}`}} + /> + ); + + const rows: tRow = props.pods + .sort((p1: Pod, p2: Pod) => (p1.name < p2.name ? -1 : 1)) + .map((pod, _podIdx) => { + let validation: ObjectValidation = {} as ObjectValidation; + + if (props.validations[pod.name]) { + validation = props.validations[pod.name]; + } + + const podProperties = ( +
    +
      +
    • + Created +
      + +
      +
    • + +
    • + Created By +
      + {pod.createdBy && pod.createdBy.length > 0 + ? pod.createdBy + .map(ref => `${ref.name} (${ref.kind})`) + .join(', ') + : 'Not found'} +
      +
    • + +
    • + Service Account +
      + {pod.serviceAccountName ?? 'Not found'} +
      +
    • + +
    • + Istio Init Container +
      + {pod.istioInitContainers + ? pod.istioInitContainers.map(c => `${c.image}`).join(', ') + : 'Not found'} +
      +
    • + +
    • + Istio Container +
      + {pod.istioContainers + ? pod.istioContainers.map(c => `${c.image}`).join(', ') + : 'Not found'} +
      +
    • + +
    • + Labels +
      + +
      +
    • +
    +
    + ); + + return { + cells: [ + +
    + +
    + {pod.name} + {podProperties}} + > +
    + +
    +
    +
    , + , + ], + }; + }); + + return ( + + + Pods + + } + /> + + + + + + ); +}; diff --git a/workspaces/kiali/plugins/kiali/src/pages/WorkloadDetails/WorkloadsDescription.tsx b/workspaces/kiali/plugins/kiali/src/pages/WorkloadDetails/WorkloadsDescription.tsx new file mode 100644 index 0000000000..3a7e0657fb --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/pages/WorkloadDetails/WorkloadsDescription.tsx @@ -0,0 +1,298 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import * as React from 'react'; + +import { + Card, + CardContent, + CardHeader, + Tooltip, + Typography, +} from '@material-ui/core'; + +import { AmbientLabel } from '../../components/Ambient/AmbientLabel'; +import { DetailDescription } from '../../components/DetailDescription/DetailDescription'; +import { HealthIndicator } from '../../components/Health/HealthIndicator'; +import { Labels } from '../../components/Label/Labels'; +import { renderAPILogo, renderRuntimeLogo } from '../../components/Logos/Logos'; +import { MissingAuthPolicy } from '../../components/MissingAuthPolicy/MissingAuthPolicy'; +import { MissingLabel } from '../../components/MissingLabel/MissingLabel'; +import { MissingSidecar } from '../../components/MissingSidecar/MissingSidecar'; +import { PFBadge, PFBadges } from '../../components/Pf/PfBadges'; +import { TextOrLink } from '../../components/TextOrLink'; +import { LocalTime } from '../../components/Time/LocalTime'; +import { isMultiCluster, serverConfig } from '../../config'; +import { KialiIcon } from '../../config/KialiIcon'; +import { isGateway, isWaypoint } from '../../helpers/LabelFilterHelper'; +import { cardsHeight, kialiStyle } from '../../styles/StyleUtils'; +import * as H from '../../types/Health'; +import { validationKey } from '../../types/IstioConfigList'; +import { Workload } from '../../types/Workload'; +import { hasMissingAuthPolicy } from '../../utils/IstioConfigUtils'; + +type WorkloadDescriptionProps = { + health?: H.Health; + entity?: boolean; + namespace: string; + workload: Workload; + view?: string; +}; + +const resourceListStyle = kialiStyle({ + marginBottom: '0.75rem', + $nest: { + '& > ul > li span': { + float: 'left', + width: '125px', + fontWeight: 700, + }, + }, +}); + +export const iconStyle = kialiStyle({ + display: 'inline-block', +}); + +export const infoStyle = kialiStyle({ + marginLeft: '0.5rem', + verticalAlign: '-0.125rem', + display: 'inline-block', +}); + +export const healthIconStyle = kialiStyle({ + marginLeft: '0.5rem', + verticalAlign: '-0.075rem', +}); + +const additionalItemStyle = kialiStyle({ + display: 'flex', + alignItems: 'center', +}); + +const runtimeInfoStyle = kialiStyle({ + display: 'flex', + alignItems: 'center', + marginTop: '0.5rem', +}); + +export const WorkloadDescription: React.FC = ( + props: WorkloadDescriptionProps, +) => { + const workload = props.workload; + const apps: string[] = []; + const services: string[] = []; + + if (workload.labels[serverConfig.istioLabels.appLabelName]) { + apps.push(workload.labels[serverConfig.istioLabels.appLabelName]); + } + + workload.services?.forEach(s => services.push(s.name)); + + const isTemplateLabels = + workload && + [ + 'Deployment', + 'ReplicaSet', + 'ReplicationController', + 'DeploymentConfig', + 'StatefulSet', + ].indexOf(workload.type) >= 0; + + const runtimes = (workload?.runtimes ?? []) + .map(r => r.name) + .filter(name => name !== ''); + + const workloadProperties = workload ? ( + <> +
    +
      + {workload.istioInjectionAnnotation !== undefined && ( +
    • + Istio Injection + {String(workload.istioInjectionAnnotation)} +
    • + )} + +
    • + Type + {workload.type ? workload.type : 'N/A'} +
    • + +
    • + Created +
      + +
      +
    • + +
    • + Version + {workload.resourceVersion} +
    • + + {workload.additionalDetails.map((additionalItem, idx) => { + return ( +
    • +
      + {additionalItem.title} + {additionalItem.icon && + renderAPILogo(additionalItem.icon, undefined, idx)} +
      + +
    • + ); + })} + + {runtimes.length > 0 && ( +
    • +
      + Runtimes +
      + {runtimes + .map((rt, idx) => renderRuntimeLogo(rt, idx)) + .reduce( + (list: React.ReactNode[], elem) => + list.length > 0 + ? [...list, | , elem] + : [elem], + [], + )} +
      +
      +
    • + )} +
    +
    + + ) : undefined; + + return ( + + + +
    + +
    + + {props.workload.name} + + {workloadProperties ? ( + + {workloadProperties} + + } + > +
    + +
    +
    + ) : undefined} + + + + + + {!props.workload.istioSidecar && + !props.workload.istioAmbient && + !isWaypoint(props.workload.labels) && ( + + )} + + {props.workload.istioAmbient && + !isWaypoint(props.workload.labels) && ( + 0 + ? true + : false + } + /> + )} + + {hasMissingAuthPolicy( + validationKey(props.workload.name, props.namespace), + props.workload.validations, + ) && ( + + )} + + {(!props.workload.appLabel || !props.workload.versionLabel) && + !isWaypoint(props.workload.labels) && ( + + )} +
    + + {props.workload?.cluster && isMultiCluster && ( +
    + {props.workload.cluster} +
    + )} + + } + /> + + + {workload.labels && ( + + )} + + +
    + ); +}; diff --git a/workspaces/kiali/plugins/kiali/src/pages/WorkloadList/FiltersAndSorts.tsx b/workspaces/kiali/plugins/kiali/src/pages/WorkloadList/FiltersAndSorts.tsx new file mode 100644 index 0000000000..f82816c8aa --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/pages/WorkloadList/FiltersAndSorts.tsx @@ -0,0 +1,66 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { presenceValues } from '../../components/Filters/CommonFilters'; +import { + ActiveFiltersInfo, + AllFilterTypes, + FILTER_ACTION_APPEND, + FILTER_ACTION_UPDATE, + FilterType, + RunnableFilter, +} from '../../types/Filters'; +import { NamespaceInfo } from '../../types/NamespaceInfo'; + +export const appLabelFilter: FilterType = { + category: 'App Label', + placeholder: 'Filter by App Label Validation', + filterType: AllFilterTypes.select, + action: FILTER_ACTION_UPDATE, + filterValues: presenceValues, +}; + +export const labelFilter: RunnableFilter = { + category: 'Namespace Label', + placeholder: 'Filter by Namespace Label', + filterType: AllFilterTypes.nsLabel, + action: FILTER_ACTION_APPEND, + filterValues: [], + run: (ns: NamespaceInfo, filters: ActiveFiltersInfo) => { + return filters.filters.some(f => { + if (f.value.includes('=')) { + const [k, v] = f.value.split('='); + return v + .split(',') + .some( + val => + !!ns.labels && k in ns.labels && ns.labels[k].startsWith(val), + ); + } + return ( + !!ns.labels && + Object.keys(ns.labels).some(label => label.startsWith(f.value)) + ); + }); + }, +}; + +export const versionLabelFilter: FilterType = { + category: 'Version Label', + placeholder: 'Filter by Version Label Validation', + filterType: AllFilterTypes.select, + action: FILTER_ACTION_UPDATE, + filterValues: presenceValues, +}; diff --git a/workspaces/kiali/plugins/kiali/src/pages/WorkloadList/WorkloadListPage.tsx b/workspaces/kiali/plugins/kiali/src/pages/WorkloadList/WorkloadListPage.tsx new file mode 100644 index 0000000000..f978029eb1 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/pages/WorkloadList/WorkloadListPage.tsx @@ -0,0 +1,189 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import * as React from 'react'; +import { useRef } from 'react'; +import { useAsyncFn, useDebounce } from 'react-use'; + +import { Entity } from '@backstage/catalog-model'; +import { Content } from '@backstage/core-components'; +import { useApi } from '@backstage/core-plugin-api'; + +import { CircularProgress } from '@material-ui/core'; + +import { DefaultSecondaryMasthead } from '../../components/DefaultSecondaryMasthead/DefaultSecondaryMasthead'; +import * as FilterHelper from '../../components/FilterList/FilterHelper'; +import { TimeDurationComponent } from '../../components/Time/TimeDurationComponent'; +import { VirtualList } from '../../components/VirtualList/VirtualList'; +import { isMultiCluster } from '../../config'; +import { useKialiEntityContext } from '../../dynamic/KialiContext'; +import { getEntityNs, nsEqual } from '../../helpers/namespaces'; +import { getErrorString, kialiApiRef } from '../../services/Api'; +import { KialiAppState, KialiContext } from '../../store'; +import { baseStyle } from '../../styles/StyleUtils'; +import { DRAWER, ENTITY } from '../../types/types'; +import { WorkloadListItem } from '../../types/Workload'; +import { NamespaceInfo } from '../Overview/NamespaceInfo'; +import { getNamespaces } from '../Overview/OverviewPage'; + +export const WorkloadListPage = (props: { view?: string; entity?: Entity }) => { + const kialiClient = useApi(kialiApiRef); + const [namespaces, setNamespaces] = React.useState([]); + const [allWorkloads, setWorkloads] = React.useState([]); + const [duration, setDuration] = React.useState( + FilterHelper.currentDuration(), + ); + const kialiState = React.useContext(KialiContext) as KialiAppState; + const kialiContext = useKialiEntityContext(); + + const activeNs = props.entity + ? getEntityNs(props.entity) + : kialiState.namespaces.activeNamespaces.map(ns => ns.name); + const prevActiveNs = useRef(activeNs); + const prevDuration = useRef(duration); + const [loadingData, setLoadingData] = React.useState(true); + + const fetchWorkloads = ( + nss: NamespaceInfo[], + timeDuration: number, + ): Promise => { + return Promise.all( + nss.map(nsInfo => { + return kialiClient + .getWorkloads(nsInfo.name, timeDuration) + .then(workloadsResponse => { + return workloadsResponse; + }); + }), + ) + .then(results => { + let wkList: WorkloadListItem[] = []; + results.forEach(result => { + wkList = Array.from(wkList).concat(result); + }); + setWorkloads(wkList); + }) + .catch(err => { + kialiState.alertUtils?.add( + `Could not fetch workloads: ${getErrorString(err)}`, + ); + }); + }; + + const load = async () => { + if (kialiContext.data) { + setNamespaces(kialiContext.data); + fetchWorkloads(kialiContext.data, duration); + } else { + kialiClient.getNamespaces().then(namespacesResponse => { + const allNamespaces: NamespaceInfo[] = getNamespaces( + namespacesResponse, + namespaces, + ); + const nsl = allNamespaces.filter(ns => activeNs.includes(ns.name)); + setNamespaces(nsl); + fetchWorkloads(nsl, duration); + }); + } + + // Add a delay so it doesn't look like a flash + setTimeout(() => { + setLoadingData(false); + }, 400); + }; + + const [{ loading }, refresh] = useAsyncFn( + async () => { + // Check if the config is loaded + await load(); + }, + [], + { loading: true }, + ); + useDebounce(refresh, 10); + + React.useEffect(() => { + if ( + duration !== prevDuration.current || + !nsEqual(activeNs, prevActiveNs.current) + ) { + setLoadingData(true); + load(); + prevDuration.current = duration; + prevActiveNs.current = activeNs; + } + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [activeNs, duration]); + + if (loading) { + return ; + } + + const hiddenColumns = isMultiCluster ? [] : ['cluster']; + if (props.view === ENTITY) { + hiddenColumns.push('details'); + } + + const grids = () => { + const elements = []; + elements.push( + , + ); + return elements; + }; + + const mainContent = () => { + return ( + <> + {props.view !== ENTITY && ( + load()} + /> + )} + + + + ); + }; + + return ( +
    + {props.view !== ENTITY && props.view !== DRAWER && ( + {mainContent()} + )} + {(props.view === ENTITY || props.view === DRAWER) && ( +
    + {mainContent()} +
    + )} +
    + ); +}; diff --git a/workspaces/kiali/plugins/kiali/src/plugin.test.ts b/workspaces/kiali/plugins/kiali/src/plugin.test.ts new file mode 100644 index 0000000000..e63a429779 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/plugin.test.ts @@ -0,0 +1,22 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { kialiPlugin } from './plugin'; + +describe('kiali', () => { + it('should export plugin', () => { + expect(kialiPlugin).toBeDefined(); + }); +}); diff --git a/workspaces/kiali/plugins/kiali/src/plugin.ts b/workspaces/kiali/plugins/kiali/src/plugin.ts new file mode 100644 index 0000000000..e0ba26aa52 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/plugin.ts @@ -0,0 +1,103 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { + createApiFactory, + createComponentExtension, + createPlugin, + createRoutableExtension, + discoveryApiRef, + identityApiRef, +} from '@backstage/core-plugin-api'; + +import { overviewRouteRef, rootRouteRef, workloadsRouteRef } from './routes'; +import { KialiApiClient, kialiApiRef } from './services/Api'; + +import '@patternfly/patternfly/patternfly.css'; + +export const pluginName = 'kiali'; + +export const kialiPlugin = createPlugin({ + id: pluginName, + routes: { + root: rootRouteRef, + overview: overviewRouteRef, + workloads: workloadsRouteRef, + }, + apis: [ + createApiFactory({ + api: kialiApiRef, + deps: { + discoveryApi: discoveryApiRef, + identityApi: identityApiRef, + }, + factory: ({ discoveryApi, identityApi }) => + new KialiApiClient({ discoveryApi, identityApi }), + }), + ], +}); + +export const KialiPage = kialiPlugin.provide( + createRoutableExtension({ + name: 'KialiPage', + component: () => import('./components/Router').then(m => m.Router), + mountPoint: rootRouteRef, + }), +); + +export const EntityKialiResourcesCard = kialiPlugin.provide( + createComponentExtension({ + name: 'EntityKialiResourcesCard', + component: { + lazy: () => + import('./dynamic/EntityKialiResourcesCard').then( + m => m.EntityKialiResourcesCard, + ), + }, + }), +); + +export const EntityKialiGraphCard = kialiPlugin.provide( + createComponentExtension({ + name: 'EntityKialiGraphCard', + component: { + lazy: () => + import('./dynamic/EntityKialiGraphCard').then( + m => m.EntityKialiGraphCard, + ), + }, + }), +); +/** + * Props of EntityExampleComponent + * + * @public + */ +export type EntityKialiContentProps = { + /** + * Sets the refresh interval in milliseconds. The default value is 10000 (10 seconds) + */ + refreshIntervalMs?: number; +}; + +export const EntityKialiContent: ( + props: EntityKialiContentProps, +) => JSX.Element = kialiPlugin.provide( + createRoutableExtension({ + name: 'EntityKialiContent', + component: () => import('./components/Router').then(m => m.EmbeddedRouter), + mountPoint: rootRouteRef, + }), +); diff --git a/workspaces/kiali/plugins/kiali/src/reducers/HelpDropdown.ts b/workspaces/kiali/plugins/kiali/src/reducers/HelpDropdown.ts new file mode 100644 index 0000000000..5d4b5fb3b3 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/reducers/HelpDropdown.ts @@ -0,0 +1,48 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { getType } from 'typesafe-actions'; + +import { HelpDropdownActions } from '../actions/HelpDropdownActions'; +import { KialiAppAction } from '../actions/KialiAppAction'; +import { StatusState } from '../types/StatusState'; + +export const INITIAL_STATUS_STATE: StatusState = { + status: {}, + externalServices: [], + warningMessages: [], + istioEnvironment: { + isMaistra: false, + istioAPIEnabled: true, + }, +}; + +export const HelpDropdownStateReducer = ( + state: StatusState = INITIAL_STATUS_STATE, + action: KialiAppAction, +): StatusState => { + switch (action.type) { + case getType(HelpDropdownActions.statusRefresh): + return { + ...INITIAL_STATUS_STATE, + status: action.payload.status, + externalServices: action.payload.externalServices, + warningMessages: action.payload.warningMessages, + istioEnvironment: action.payload.istioEnvironment, + }; + default: + return state; + } +}; diff --git a/workspaces/kiali/plugins/kiali/src/reducers/IstioCertsInfoState.ts b/workspaces/kiali/plugins/kiali/src/reducers/IstioCertsInfoState.ts new file mode 100644 index 0000000000..c77ef94ddf --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/reducers/IstioCertsInfoState.ts @@ -0,0 +1,34 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { getType } from 'typesafe-actions'; + +import { IstioCertsInfoActions } from '../actions/IstioCertsInfoActions'; +import { KialiAppAction } from '../actions/KialiAppAction'; +import { CertsInfo } from '../types/CertsInfo'; + +export const INITIAL_ISTIO_CERTS_INFO_STATE: CertsInfo[] = []; + +export const IstioCertsInfoStateReducer = ( + state: CertsInfo[] = INITIAL_ISTIO_CERTS_INFO_STATE, + action: KialiAppAction, +): CertsInfo[] => { + switch (action.type) { + case getType(IstioCertsInfoActions.setinfo): + return action.payload; + default: + return state; + } +}; diff --git a/workspaces/kiali/plugins/kiali/src/reducers/IstioStatusState.ts b/workspaces/kiali/plugins/kiali/src/reducers/IstioStatusState.ts new file mode 100644 index 0000000000..c9336e00d1 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/reducers/IstioStatusState.ts @@ -0,0 +1,35 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { getType } from 'typesafe-actions'; + +import { IstioStatusActions } from '../actions/IstioStatusActions'; +import { KialiAppAction } from '../actions/KialiAppAction'; +import { ComponentStatus } from '../types/IstioStatus'; + +export const INITIAL_ISTIO_STATUS_STATE: ComponentStatus[] = []; + +// This Reducer allows changes to the 'graphDataState' portion of Redux Store +export const IstioStatusStateReducer = ( + state: ComponentStatus[] = INITIAL_ISTIO_STATUS_STATE, + action: KialiAppAction, +): ComponentStatus[] => { + switch (action.type) { + case getType(IstioStatusActions.setinfo): + return action.payload; + default: + return state; + } +}; diff --git a/workspaces/kiali/plugins/kiali/src/reducers/Login.ts b/workspaces/kiali/plugins/kiali/src/reducers/Login.ts new file mode 100644 index 0000000000..f6e9ff4218 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/reducers/Login.ts @@ -0,0 +1,92 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { getType } from 'typesafe-actions'; + +import { LoginActions } from '../actions/LoginActions'; +import { LoginState as LoginStateInterface, LoginStatus } from '../store/Store'; +import { updateState } from '../utils/Reducer'; + +export const INITIAL_LOGIN_STATE: LoginStateInterface = { + landingRoute: undefined, + message: '', + session: undefined, + status: LoginStatus.loggedOut, +}; + +// This Reducer allows changes to the 'loginState' portion of Redux Store +export const LoginReducer = ( + state: LoginStateInterface = INITIAL_LOGIN_STATE, + action: { type: string; payload: any }, +): LoginStateInterface => { + switch (action.type) { + case getType(LoginActions.loginRequest): + return { + ...INITIAL_LOGIN_STATE, + landingRoute: state.landingRoute, + status: LoginStatus.logging, + }; + case getType(LoginActions.loginSuccess): + return { + ...INITIAL_LOGIN_STATE, + ...action.payload, + landingRoute: state.landingRoute, + }; + case getType(LoginActions.loginExtend): + return { + ...INITIAL_LOGIN_STATE, + landingRoute: state.landingRoute, + status: LoginStatus.loggedIn, + session: action.payload.session, + }; + case getType(LoginActions.loginFailure): { + let message = 'Error connecting to Kiali'; + + const response_data = action.payload.error.response.data; + if ( + response_data && + typeof response_data.error === 'string' && + response_data.error.length > 0 + ) { + message = `Login unsuccessful: ${response_data.error}`; + } else if (action.payload.error.response.status === 401) { + message = + 'Unauthorized. The provided credentials are not valid to access Kiali. Please check your credentials and try again.'; + } + + return { + ...INITIAL_LOGIN_STATE, + landingRoute: state.landingRoute, + message: message, + status: LoginStatus.error, + }; + } + case getType(LoginActions.logoutSuccess): + return INITIAL_LOGIN_STATE; + case getType(LoginActions.sessionExpired): + return { + ...INITIAL_LOGIN_STATE, + status: LoginStatus.expired, + message: + 'Your session has expired or was terminated in another window.', + }; + case getType(LoginActions.setLandingRoute): + return updateState(state, { + landingRoute: action.payload, + }); + default: + return state; + } +}; diff --git a/workspaces/kiali/plugins/kiali/src/reducers/MeshTlsState.ts b/workspaces/kiali/plugins/kiali/src/reducers/MeshTlsState.ts new file mode 100644 index 0000000000..43549f4fd0 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/reducers/MeshTlsState.ts @@ -0,0 +1,44 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { getType } from 'typesafe-actions'; + +import { KialiAppAction } from '../actions/KialiAppAction'; +import { MeshTlsActions } from '../actions/MeshTlsActions'; +import { TLSStatus } from '../types/TLSStatus'; + +export const INITIAL_MESH_TLS_STATE: TLSStatus = { + status: '', + autoMTLSEnabled: false, + minTLS: '', +}; + +// This Reducer allows changes to the 'graphDataState' portion of Redux Store +export const MeshTlsStateReducer = ( + state: TLSStatus = INITIAL_MESH_TLS_STATE, + action: KialiAppAction, +): TLSStatus => { + switch (action.type) { + case getType(MeshTlsActions.setinfo): + return { + ...INITIAL_MESH_TLS_STATE, + status: action.payload.status, + autoMTLSEnabled: action.payload.autoMTLSEnabled, + minTLS: action.payload.minTLS, + }; + default: + return state; + } +}; diff --git a/workspaces/kiali/plugins/kiali/src/reducers/MessageCenter.ts b/workspaces/kiali/plugins/kiali/src/reducers/MessageCenter.ts new file mode 100644 index 0000000000..8d3c7f4db4 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/reducers/MessageCenter.ts @@ -0,0 +1,213 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import _ from 'lodash'; +import { getType } from 'typesafe-actions'; + +import { KialiAppAction } from '../actions/KialiAppAction'; +import { LoginActions } from '../actions/LoginActions'; +import { MessageCenterActions } from '../actions/MessageCenterActions'; +import { MessageCenterState } from '../store/Store'; +import { MessageType, NotificationMessage } from '../types/MessageCenter'; +import { updateState } from '../utils/Reducer'; + +export const INITIAL_MESSAGE_CENTER_STATE: MessageCenterState = { + nextId: 0, + groups: [ + { + id: 'systemErrors', + title: 'Open issues', + messages: [], + showActions: false, + hideIfEmpty: true, + }, + { + id: 'default', + title: 'Notifications', + messages: [], + showActions: true, + hideIfEmpty: false, + }, + ], + hidden: true, + expanded: false, + expandedGroupId: 'default', +}; + +const createMessage = ( + id: number, + content: string, + detail: string, + type: MessageType, + count: number, + showNotification: boolean, + created: Date, + showDetail: boolean, + firstTriggered?: Date, +) => { + return { + id, + content, + detail, + type, + count, + show_notification: showNotification, + seen: false, + created: created, + showDetail: showDetail, + firstTriggered, + }; +}; + +// Updates several messages with the same payload, useful for marking messages +// returns the updated state +const updateMessage = ( + state: MessageCenterState, + messageIds: number[], + updater: (message: NotificationMessage) => NotificationMessage, +) => { + const groups = state.groups.map(group => ({ + ...group, + messages: group.messages.map(message => { + if (messageIds.includes(message.id)) { + return updater(message); + } + return message; + }), + })); + return updateState(state, { groups }); +}; + +export const MessageCenterReducer = ( + state: MessageCenterState = INITIAL_MESSAGE_CENTER_STATE, + action: KialiAppAction, +): MessageCenterState => { + switch (action.type) { + case getType(MessageCenterActions.addMessage): { + const { content, detail, groupId, messageType, showNotification } = + action.payload; + const groups = state.groups.map(group => { + if (group.id === groupId) { + const existingMessage = group.messages.find(message => { + // Note, we don't include detail when determining same-ness, just the main content. This is to avoid + // trivial detail differences (like a timestamp). If changing this approach apply the same change below + // for message removal. + return message.content === content; + }); + + // remove the old message from the list + const filteredArray = _.filter(group.messages, message => { + return message.content !== content; + }); + + let count = 1; + let firstTriggered: Date | undefined = undefined; + + if (existingMessage) { + // it is in the list already + firstTriggered = existingMessage.firstTriggered + ? existingMessage.firstTriggered + : existingMessage.created; + + count += existingMessage.count; + } + + const newMessage: NotificationMessage = createMessage( + state.nextId, + content, + detail, + messageType, + count, + showNotification, + new Date(), + false, + firstTriggered, + ); + return { ...group, messages: filteredArray.concat(newMessage) }; + } + return group; + }); + return updateState(state, { groups: groups, nextId: state.nextId + 1 }); + } + + case getType(MessageCenterActions.removeMessage): { + const messageId = action.payload.messageId; + const groups = state.groups.map(group => ({ + ...group, + messages: group.messages.filter(message => { + return !messageId.includes(message.id); + }), + })); + return updateState(state, { groups }); + } + + case getType(MessageCenterActions.toggleMessageDetail): { + return updateMessage(state, action.payload.messageId, message => ({ + ...message, + showDetail: !message.showDetail, + })); + } + + case getType(MessageCenterActions.markAsRead): { + return updateMessage(state, action.payload.messageId, message => ({ + ...message, + seen: true, + show_notification: false, + })); + } + + case getType(MessageCenterActions.hideNotification): { + return updateMessage(state, action.payload.messageId, message => ({ + ...message, + show_notification: false, + })); + } + + case getType(MessageCenterActions.showMessageCenter): + if (state.hidden) { + return updateState(state, { hidden: false }); + } + return state; + + case getType(MessageCenterActions.hideMessageCenter): + if (!state.hidden) { + return updateState(state, { hidden: true }); + } + return state; + + case getType(MessageCenterActions.toggleExpandedMessageCenter): + return updateState(state, { expanded: !state.expanded }); + + case getType(MessageCenterActions.toggleGroup): { + const { groupId } = action.payload; + if (state.expandedGroupId === groupId) { + return updateState(state, { expandedGroupId: undefined }); + } + return updateState(state, { expandedGroupId: groupId }); + } + + case getType(MessageCenterActions.expandGroup): { + const { groupId } = action.payload; + return updateState(state, { expandedGroupId: groupId }); + } + case getType(LoginActions.loginRequest): { + // Let's clear the message center quen user is loggin-in. This ensures + // that messages from a past session won't persist because may be obsolete. + return INITIAL_MESSAGE_CENTER_STATE; + } + default: + return state; + } +}; diff --git a/workspaces/kiali/plugins/kiali/src/reducers/Namespace.ts b/workspaces/kiali/plugins/kiali/src/reducers/Namespace.ts new file mode 100644 index 0000000000..104664538a --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/reducers/Namespace.ts @@ -0,0 +1,110 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { getType } from 'typesafe-actions'; + +import { KialiAppAction } from '../actions/KialiAppAction'; +import { NamespaceActions } from '../actions/NamespaceAction'; +import { NamespaceState } from '../store/Store'; +import { Namespace } from '../types/Namespace'; +import { updateState } from '../utils/Reducer'; + +function filterDuplicateNamespaces(namespaces: Namespace[]): Namespace[] { + const nsMap = new Map(); + namespaces.forEach(ns => nsMap.set(ns.name, ns)); + return Array.from(nsMap.values()); +} + +function namespacesPerCluster(namespaces: Namespace[]): Map { + const clusterMap: Map = new Map(); + namespaces.forEach(namespace => { + const cluster = namespace.cluster; + if (cluster) { + const existingValue = clusterMap.get(cluster) || []; + clusterMap.set(cluster, existingValue.concat(namespace.name)); + } + }); + return clusterMap; +} + +export const INITIAL_NAMESPACE_STATE: NamespaceState = { + activeNamespaces: [], + isFetching: false, + items: [], + lastUpdated: undefined, + filter: '', +}; + +export const NamespaceStateReducer = ( + state: NamespaceState = INITIAL_NAMESPACE_STATE, + action: KialiAppAction, +): NamespaceState => { + switch (action.type) { + case getType(NamespaceActions.toggleActiveNamespace): { + const namespaceIndex = state.activeNamespaces.findIndex( + namespace => namespace.name === action.payload.name, + ); + if (namespaceIndex === -1) { + return updateState(state, { + activeNamespaces: [ + ...state.activeNamespaces, + { name: action.payload.name }, + ], + }); + } + const activeNamespaces = [...state.activeNamespaces]; + activeNamespaces.splice(namespaceIndex, 1); + return updateState(state, { activeNamespaces }); + } + + case getType(NamespaceActions.setActiveNamespaces): + return updateState(state, { + activeNamespaces: filterDuplicateNamespaces(action.payload), + }); + + case getType(NamespaceActions.setFilter): + return updateState(state, { filter: action.payload }); + + case getType(NamespaceActions.requestStarted): + return updateState(state, { + isFetching: true, + }); + + case getType(NamespaceActions.receiveList): { + const names = action.payload.list.map((ns: Namespace) => ns.name); + const validActive = state.activeNamespaces.filter(an => + names.includes(an.name), + ); + let updatedActive = {}; + if (state.activeNamespaces.length !== validActive.length) { + updatedActive = { activeNamespaces: validActive }; + } + return updateState(state, { + isFetching: false, + items: filterDuplicateNamespaces(action.payload.list), + lastUpdated: action.payload.receivedAt, + namespacesPerCluster: namespacesPerCluster(action.payload.list), + ...updatedActive, + }); + } + case getType(NamespaceActions.requestFailed): + return updateState(state, { + isFetching: false, + }); + + default: + return state; + } +}; diff --git a/workspaces/kiali/plugins/kiali/src/reducers/Tracing.ts b/workspaces/kiali/plugins/kiali/src/reducers/Tracing.ts new file mode 100644 index 0000000000..b4497dce1c --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/reducers/Tracing.ts @@ -0,0 +1,18 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { TracingState } from '../store'; + +export const INITIAL_TRACING_STATE: TracingState = {}; diff --git a/workspaces/kiali/plugins/kiali/src/reducers/UserSettingsState.ts b/workspaces/kiali/plugins/kiali/src/reducers/UserSettingsState.ts new file mode 100644 index 0000000000..db75fe2bd3 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/reducers/UserSettingsState.ts @@ -0,0 +1,70 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { getType } from 'typesafe-actions'; + +import { KialiAppAction } from '../actions/KialiAppAction'; +import { UserSettingsActions } from '../actions/UserSettingsActions'; +import { config } from '../config'; +import { UserSettings } from '../store/Store'; +import { updateState } from '../utils/Reducer'; + +export const INITIAL_USER_SETTINGS_STATE: UserSettings = { + duration: config.toolbar.defaultDuration, + timeRange: config.toolbar.defaultTimeRange, + interface: { navCollapse: false }, + refreshInterval: config.toolbar.defaultRefreshInterval, + replayActive: false, + replayQueryTime: 0, +}; + +export const UserSettingsStateReducer = ( + state: UserSettings = INITIAL_USER_SETTINGS_STATE, + action: KialiAppAction, +): UserSettings => { + switch (action.type) { + case getType(UserSettingsActions.navCollapse): + return updateState(state, { + interface: { navCollapse: action.payload.collapse }, + }); + case getType(UserSettingsActions.setDuration): + return updateState(state, { + duration: action.payload, + }); + case getType(UserSettingsActions.setRefreshInterval): { + return updateState(state, { + refreshInterval: action.payload, + }); + } + case getType(UserSettingsActions.setReplayQueryTime): { + return updateState(state, { + replayQueryTime: action.payload, + }); + } + case getType(UserSettingsActions.setTimeRange): { + return updateState(state, { + timeRange: action.payload, + }); + } + case getType(UserSettingsActions.toggleReplayActive): { + return updateState(state, { + replayActive: !state.replayActive, + replayQueryTime: 0, + }); + } + default: + return state; + } +}; diff --git a/workspaces/kiali/plugins/kiali/src/reducers/index.ts b/workspaces/kiali/plugins/kiali/src/reducers/index.ts new file mode 100644 index 0000000000..8f66db57fb --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/reducers/index.ts @@ -0,0 +1,23 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export * from './Login'; +export * from './MeshTlsState'; +export * from './MessageCenter'; +export * from './Namespace'; +export * from './HelpDropdown'; +export * from './IstioStatusState'; +export * from './IstioCertsInfoState'; +export * from './UserSettingsState'; diff --git a/workspaces/kiali/plugins/kiali/src/routes.ts b/workspaces/kiali/plugins/kiali/src/routes.ts new file mode 100644 index 0000000000..8c2f517147 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/routes.ts @@ -0,0 +1,85 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { + createRouteRef, + createSubRouteRef, + SubRouteRef, +} from '@backstage/core-plugin-api'; + +export const rootRouteRef = createRouteRef({ + id: 'kiali', +}); + +/* Kiali Page Routes */ +export const overviewRouteRef = createSubRouteRef({ + id: 'overview', + path: '/overview', + parent: rootRouteRef, +}); + +export const workloadsRouteRef: SubRouteRef = createSubRouteRef({ + id: 'workloads', + path: '/workloads', + parent: rootRouteRef, +}); + +export const servicesRouteRef: SubRouteRef = createSubRouteRef({ + id: 'services', + path: '/services', + parent: rootRouteRef, +}); + +export const appsRouteRef: SubRouteRef = createSubRouteRef({ + id: 'applications', + path: '/applications', + parent: rootRouteRef, +}); + +export const istioConfigRouteRef = createSubRouteRef({ + id: 'istio', + parent: rootRouteRef, + path: '/istio', +}); + +export const trafficGraphRouteRef = createSubRouteRef({ + id: 'kiali-traffic-graph', + parent: rootRouteRef, + path: '/graph', +}); + +export const workloadsDetailRouteRef = createSubRouteRef({ + id: 'kiali/workloads/details', + parent: rootRouteRef, + path: '/workloads/:namespace/:workload', +}); + +export const servicesDetailRouteRef = createSubRouteRef({ + id: 'kiali/services/details', + parent: rootRouteRef, + path: '/services/:namespace/:service', +}); + +export const appDetailRouteRef = createSubRouteRef({ + id: 'kiali/applications/details', + parent: rootRouteRef, + path: '/applications/:namespace/:app', +}); + +export const istioConfigDetailRouteRef = createSubRouteRef({ + id: 'kiali/istio/details', + parent: rootRouteRef, + path: '/istio/:namespace/:objectType/:object', +}); diff --git a/workspaces/kiali/plugins/kiali/src/services/Api.ts b/workspaces/kiali/plugins/kiali/src/services/Api.ts new file mode 100644 index 0000000000..ae36e54660 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/services/Api.ts @@ -0,0 +1,1110 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { Entity } from '@backstage/catalog-model'; +import { + createApiRef, + DiscoveryApi, + IdentityApi, +} from '@backstage/core-plugin-api'; + +import { AxiosError } from 'axios'; + +import { config } from '../config'; +import { App, AppQuery } from '../types/App'; +import { AppList, AppListQuery } from '../types/AppList'; +import { AuthInfo } from '../types/Auth'; +import { CertsInfo } from '../types/CertsInfo'; +import { DurationInSeconds, HTTP_VERBS, TimeInSeconds } from '../types/Common'; +import { DashboardModel } from '../types/Dashboards'; +import { GrafanaInfo } from '../types/GrafanaInfo'; +import { GraphDefinition, GraphElementsQuery } from '../types/Graph'; +import { + AppHealth, + NamespaceAppHealth, + NamespaceServiceHealth, + NamespaceWorkloadHealth, + ServiceHealth, + WorkloadHealth, +} from '../types/Health'; +import { + IstioConfigDetails, + IstioConfigDetailsQuery, +} from '../types/IstioConfigDetails'; +import { + IstioConfigList, + IstioConfigListQuery, + IstioConfigsMap, +} from '../types/IstioConfigList'; +import { + CanaryUpgradeStatus, + LogLevelQuery, + OutboundTrafficPolicy, + PodLogs, + PodLogsQuery, + ValidationStatus, +} from '../types/IstioObjects'; +import { + ComponentStatus, + IstiodResourceThresholds, +} from '../types/IstioStatus'; +import { IstioMetricsMap } from '../types/Metrics'; +import { IstioMetricsOptions } from '../types/MetricsOptions'; +import { Namespace } from '../types/Namespace'; +import { KialiCrippledFeatures, ServerConfig } from '../types/ServerConfig'; +import { ServiceDetailsInfo, ServiceDetailsQuery } from '../types/ServiceInfo'; +import { ServiceList, ServiceListQuery } from '../types/ServiceList'; +import { StatusState } from '../types/StatusState'; +import { TLSStatus } from '../types/TLSStatus'; +import { Span, TracingQuery } from '../types/Tracing'; +import { + Workload, + WorkloadListItem, + WorkloadNamespaceResponse, + WorkloadQuery, +} from '../types/Workload'; +import { filterNsByAnnotation } from '../utils/entityFilter'; + +export const ANONYMOUS_USER = 'anonymous'; + +export interface Response { + data: T; +} + +interface ClusterParam { + clusterName?: string; +} +type QueryParams = T & ClusterParam; + +/** API URLs */ + +const urls = config.api.urls; + +/** Headers Definitions */ + +const loginHeaders = config.login.headers; + +/** Helpers to Requests */ + +const getHeaders = (proxyUrl?: string): { [key: string]: string } => { + if (proxyUrl) { + return { 'Content-Type': 'application/x-www-form-urlencoded' }; + } + return { ...loginHeaders }; +}; + +/** Create content type correctly for a given request type */ +const getHeadersWithMethod = ( + method: HTTP_VERBS, + proxyUrl?: string, +): { [key: string]: string } => { + const allHeaders = getHeaders(proxyUrl); + if (method === HTTP_VERBS.PATCH) { + allHeaders['Content-Type'] = 'application/json'; + } + return allHeaders; +}; + +/* Backstage Requirement*/ + +export interface KialiApi { + isDevEnv(): boolean; + getAuthInfo(): Promise; + getStatus(): Promise; + getNamespaces(): Promise; + getNamespaceAppHealth( + namespace: string, + duration: DurationInSeconds, + cluster?: string, + queryTime?: TimeInSeconds, + ): Promise; + getNamespaceServiceHealth( + namespace: string, + duration: DurationInSeconds, + cluster?: string, + queryTime?: TimeInSeconds, + ): Promise; + getNamespaceWorkloadHealth( + namespace: string, + duration: DurationInSeconds, + cluster?: string, + queryTime?: TimeInSeconds, + ): Promise; + getServerConfig(): Promise; + getMeshTls(cluster?: string): Promise; + getNamespaceTls(namespace: string, cluster?: string): Promise; + getOutboundTrafficPolicyMode(): Promise; + getCanaryUpgradeStatus(): Promise; + getIstiodResourceThresholds(): Promise; + getConfigValidations(cluster?: string): Promise; + getAllIstioConfigs( + namespaces: string[], + objects: string[], + validate: boolean, + labelSelector: string, + workloadSelector: string, + cluster?: string, + ): Promise; + getNamespaceMetrics( + namespace: string, + params: IstioMetricsOptions, + ): Promise>; + getIstioStatus(cluster?: string): Promise; + getIstioCertsInfo(): Promise; + getWorkload( + namespace: string, + name: string, + params: WorkloadQuery, + cluster?: string, + ): Promise; + getWorkloads( + namespace: string, + duration: number, + ): Promise; + getIstioConfig( + namespace: string, + objects: string[], + validate: boolean, + labelSelector: string, + workloadSelector: string, + cluster?: string, + ): Promise; + getIstioConfigDetail( + namespace: string, + objectType: string, + object: string, + validate: boolean, + cluster?: string, + ): Promise; + setEntity(entity?: Entity): void; + status(): Promise; + getPodLogs( + namespace: string, + name: string, + container?: string, + maxLines?: number, + sinceTime?: number, + duration?: DurationInSeconds, + isProxy?: boolean, + cluster?: string, + ): Promise; + getWorkloadSpans( + namespace: string, + workload: string, + params: TracingQuery, + cluster?: string, + ): Promise; + setPodEnvoyProxyLogLevel( + namespace: string, + name: string, + level: string, + cluster?: string, + ): Promise; + getServices( + namespace: string, + params?: ServiceListQuery, + ): Promise; + getServiceDetail( + namespace: string, + service: string, + validate: boolean, + cluster?: string, + rateInterval?: DurationInSeconds, + ): Promise; + getApps(namespace: string, params: AppListQuery): Promise; + getApp( + namespace: string, + app: string, + params: AppQuery, + cluster?: string, + ): Promise; + getWorkloadDashboard( + namespace: string, + workload: string, + params: IstioMetricsOptions, + cluster?: string, + ): Promise; + getAppDashboard( + namespace: string, + app: string, + params: IstioMetricsOptions, + cluster?: string, + ): Promise; + getServiceDashboard( + namespace: string, + service: string, + params: IstioMetricsOptions, + cluster?: string, + ): Promise; + getGrafanaInfo(): Promise; + getAppSpans( + namespace: string, + app: string, + params: TracingQuery, + cluster?: string, + ): Promise; + getServiceSpans( + namespace: string, + service: string, + params: TracingQuery, + cluster?: string, + ): Promise; + getCrippledFeatures(): Promise; + getGraphElements(params: GraphElementsQuery): Promise; +} + +export const kialiApiRef = createApiRef({ + id: 'plugin.kiali.service', +}); + +export interface ErrorAuth { + title: string; + message: string; + helper: string; +} + +export interface Response { + data: T; +} + +export type Options = { + discoveryApi: DiscoveryApi; + identityApi: IdentityApi; +}; +/* End */ + +export class KialiApiClient implements KialiApi { + private readonly discoveryApi: DiscoveryApi; + private readonly identityApi: IdentityApi; + private kialiUrl?: string; + private entity?: Entity; + + constructor(options: Options) { + this.kialiUrl = ''; + this.discoveryApi = options.discoveryApi; + this.identityApi = options.identityApi; + this.entity = undefined; + } + + private newRequest = async ( + method: HTTP_VERBS, + url: string, + queryParams?: any, + data?: any, + proxy: boolean = true, + customParams: boolean = false, + ) => { + if (this.kialiUrl === '') { + this.kialiUrl = `${await this.discoveryApi.getBaseUrl('kiali')}`; + } + const kialiHeaders = getHeadersWithMethod(method); + let params: string; + // This is because, the arrays are stringified as param=value1,value2 + // but kiali needs param[]=value, param[]=value2 + if (customParams) { + params = this.getCustomParams(queryParams); + } else { + params = new URLSearchParams(queryParams).toString(); + } + const endpoint = queryParams ? `${url}${queryParams && `?${params}`}` : url; + const { token: idToken } = await this.identityApi.getCredentials(); + const dataRequest = data ? data : {}; + dataRequest.endpoint = endpoint; + dataRequest.method = method; + + const jsonResponse = await fetch( + `${this.kialiUrl}/${proxy ? 'proxy' : 'status'}`, + { + method: HTTP_VERBS.POST, + headers: { + 'Content-Type': 'application/json', + ...(idToken && { Authorization: `Bearer ${idToken}` }), + ...kialiHeaders, + }, + body: JSON.stringify(dataRequest), + }, + ); + + return jsonResponse.json() as T; + }; + + getCustomParams = (queryParams: any): string => { + let params = ''; + for (const key in queryParams) { + if (Array.isArray(queryParams[key])) { + for (let i = 0; i < queryParams[key].length; i++) { + params += `${key}[]=${queryParams[key]}&`; + } + } else { + params += `${key}=${queryParams[key]}&`; + } + } + return params.slice(0, -1); + }; + + isDevEnv = () => { + return false; + }; + + status = async (): Promise => { + return this.newRequest( + HTTP_VERBS.GET, + urls.status, + {}, + {}, + false, + ).then(resp => resp); + }; + + getAuthInfo = async (): Promise => { + return this.newRequest( + HTTP_VERBS.GET, + urls.authInfo, + {}, + {}, + ).then(resp => resp); + }; + + getStatus = async (): Promise => { + return this.newRequest( + HTTP_VERBS.GET, + urls.status, + {}, + {}, + ).then(resp => resp); + }; + + getNamespaces = async (): Promise => { + return this.newRequest( + HTTP_VERBS.GET, + urls.namespaces, + {}, + {}, + ).then(resp => filterNsByAnnotation(resp, this.entity)); + }; + + getServerConfig = async (): Promise => { + return this.newRequest( + HTTP_VERBS.GET, + urls.serverConfig, + {}, + {}, + ).then(resp => resp); + }; + + /* HEALTH */ + + getNamespaceAppHealth = ( + namespace: string, + duration: DurationInSeconds, + cluster?: string, + queryTime?: TimeInSeconds, + ): Promise => { + const params: any = { + type: 'app', + }; + if (duration) { + params.rateInterval = `${String(duration)}s`; + } + if (queryTime) { + params.queryTime = String(queryTime); + } + if (cluster) { + params.clusterName = cluster; + } + return this.newRequest( + HTTP_VERBS.GET, + urls.namespaceHealth(namespace), + params, + {}, + ).then(response => { + const ret: NamespaceAppHealth = {}; + Object.keys(response).forEach(k => { + ret[k] = AppHealth.fromJson(namespace, k, response[k], { + rateInterval: duration, + hasSidecar: true, + hasAmbient: false, + }); + }); + return ret; + }); + }; + + getNamespaceServiceHealth = ( + namespace: string, + duration: DurationInSeconds, + cluster?: string, + queryTime?: TimeInSeconds, + ): Promise => { + const params: any = { + type: 'service', + }; + if (duration) { + params.rateInterval = `${String(duration)}s`; + } + if (queryTime) { + params.queryTime = String(queryTime); + } + if (cluster) { + params.clusterName = cluster; + } + return this.newRequest( + HTTP_VERBS.GET, + urls.namespaceHealth(namespace), + params, + {}, + ).then(response => { + const ret: NamespaceServiceHealth = {}; + Object.keys(response).forEach(k => { + ret[k] = ServiceHealth.fromJson(namespace, k, response[k], { + rateInterval: duration, + hasSidecar: true, + hasAmbient: false, + }); + }); + return ret; + }); + }; + + getNamespaceWorkloadHealth = ( + namespace: string, + duration: DurationInSeconds, + cluster?: string, + queryTime?: TimeInSeconds, + ): Promise => { + const params: any = { + type: 'workload', + }; + if (duration) { + params.rateInterval = `${String(duration)}s`; + } + if (queryTime) { + params.queryTime = String(queryTime); + } + if (cluster) { + params.clusterName = cluster; + } + return this.newRequest( + HTTP_VERBS.GET, + urls.namespaceHealth(namespace), + params, + {}, + ).then(response => { + const ret: NamespaceWorkloadHealth = {}; + Object.keys(response).forEach(k => { + ret[k] = WorkloadHealth.fromJson(namespace, k, response[k], { + rateInterval: duration, + hasSidecar: true, + hasAmbient: false, + }); + }); + return ret; + }); + }; + + getNamespaceTls = ( + namespace: string, + cluster?: string, + ): Promise => { + const queryParams: any = {}; + if (cluster) { + queryParams.clusterName = cluster; + } + return this.newRequest( + HTTP_VERBS.GET, + urls.namespaceTls(namespace), + queryParams, + {}, + ).then(resp => resp); + }; + + getMeshTls = (cluster?: string): Promise => { + const queryParams: any = {}; + if (cluster) { + queryParams.clusterName = cluster; + } + return this.newRequest( + HTTP_VERBS.GET, + urls.meshTls(), + queryParams, + {}, + ).then(resp => resp); + }; + + getOutboundTrafficPolicyMode = (): Promise => { + return this.newRequest( + HTTP_VERBS.GET, + urls.outboundTrafficPolicyMode(), + {}, + {}, + ).then(resp => resp); + }; + + getCanaryUpgradeStatus = (): Promise => { + return this.newRequest( + HTTP_VERBS.GET, + urls.canaryUpgradeStatus(), + {}, + {}, + ).then(resp => resp); + }; + + getIstiodResourceThresholds = (): Promise => { + return this.newRequest( + HTTP_VERBS.GET, + urls.istiodResourceThresholds(), + {}, + {}, + ).then(resp => resp); + }; + + getConfigValidations = (cluster?: string): Promise => { + const queryParams: any = {}; + if (cluster) { + queryParams.clusterName = cluster; + } + return this.newRequest( + HTTP_VERBS.GET, + urls.configValidations(), + queryParams, + {}, + ).then(resp => resp); + }; + + getAllIstioConfigs = ( + namespaces: string[], + objects: string[], + validate: boolean, + labelSelector: string, + workloadSelector: string, + cluster?: string, + ): Promise => { + const params: any = + namespaces && namespaces.length > 0 + ? { namespaces: namespaces.join(',') } + : {}; + if (objects && objects.length > 0) { + params.objects = objects.join(','); + } + if (validate) { + params.validate = validate; + } + if (labelSelector) { + params.labelSelector = labelSelector; + } + if (workloadSelector) { + params.workloadSelector = workloadSelector; + } + if (cluster) { + params.clusterName = cluster; + } + return this.newRequest( + HTTP_VERBS.GET, + urls.allIstioConfigs(), + params, + {}, + ).then(resp => resp); + }; + + getIstioConfigDetail = async ( + namespace: string, + objectType: string, + object: string, + validate: boolean, + cluster?: string, + ): Promise => { + const queryParams: QueryParams = {}; + + if (cluster) { + queryParams.clusterName = cluster; + } + + if (validate) { + queryParams.validate = true; + queryParams.help = true; + } + + return this.newRequest( + HTTP_VERBS.GET, + urls.istioConfigDetail(namespace, objectType, object), + queryParams, + {}, + ); + }; + + getNamespaceMetrics = ( + namespace: string, + params: IstioMetricsOptions, + ): Promise> => { + return this.newRequest>( + HTTP_VERBS.GET, + urls.namespaceMetrics(namespace), + params, + {}, + ).then(resp => resp); + }; + + getIstioStatus = (cluster?: string): Promise => { + const queryParams: any = {}; + if (cluster) { + queryParams.clusterName = cluster; + } + return this.newRequest( + HTTP_VERBS.GET, + urls.istioStatus(), + queryParams, + {}, + ).then(resp => resp); + }; + + getIstioCertsInfo = (): Promise => { + return this.newRequest( + HTTP_VERBS.GET, + urls.istioCertsInfo(), + {}, + {}, + ).then(resp => resp); + }; + + setEntity = (entity?: Entity) => { + this.entity = entity; + }; + + getWorkloads = async ( + namespace: string, + duration: number, + ): Promise => { + return this.newRequest( + HTTP_VERBS.GET, + urls.workloads(namespace), + { health: true, istioResources: true, rateInterval: `${duration}s` }, + {}, + ).then(resp => { + return resp.workloads.map(w => { + return { + name: w.name, + namespace: resp.namespace.name, + cluster: w.cluster, + type: w.type, + istioSidecar: w.istioSidecar, + istioAmbient: w.istioAmbient, + additionalDetailSample: undefined, + appLabel: w.appLabel, + versionLabel: w.versionLabel, + labels: w.labels, + istioReferences: w.istioReferences, + notCoveredAuthPolicy: w.notCoveredAuthPolicy, + health: WorkloadHealth.fromJson( + resp.namespace.name, + w.name, + w.health, + { + rateInterval: duration, + hasSidecar: w.istioSidecar, + hasAmbient: w.istioAmbient, + }, + ), + }; + }); + }); + }; + + getWorkload = async ( + namespace: string, + name: string, + params: WorkloadQuery, + cluster?: string, + ): Promise => { + const queryParams: QueryParams = { ...params }; + if (cluster) { + queryParams.clusterName = cluster; + } + return this.newRequest( + HTTP_VERBS.GET, + urls.workload(namespace, name), + queryParams, + {}, + ).then(resp => { + return resp; + }); + }; + + getIstioConfig = async ( + namespace: string, + objects: string[], + validate: boolean, + labelSelector: string, + workloadSelector: string, + cluster?: string, + ): Promise => { + const params: QueryParams = {}; + if (objects && objects.length > 0) { + params.objects = objects.join(','); + } + if (validate) { + params.validate = validate; + } + + if (labelSelector) { + params.labelSelector = labelSelector; + } + + if (workloadSelector) { + params.workloadSelector = workloadSelector; + } + + if (cluster) { + params.clusterName = cluster; + } + + return this.newRequest( + HTTP_VERBS.GET, + urls.istioConfig(namespace), + params, + {}, + ).then(resp => { + return resp; + }); + }; + + getPodLogs = async ( + namespace: string, + name: string, + container?: string, + maxLines?: number, + sinceTime?: number, + duration?: DurationInSeconds, + isProxy?: boolean, + cluster?: string, + ): Promise => { + const params: QueryParams = {}; + + if (container) { + params.container = container; + } + + if (sinceTime) { + params.sinceTime = sinceTime; + } + + if (maxLines && maxLines > 0) { + params.maxLines = maxLines; + } + + if (duration && duration > 0) { + params.duration = `${duration}s`; + } + + if (cluster) { + params.clusterName = cluster; + } + + params.isProxy = !!isProxy; + + return this.newRequest( + HTTP_VERBS.GET, + urls.podLogs(namespace, name), + params, + {}, + ).then(resp => { + return resp; + }); + }; + + setPodEnvoyProxyLogLevel = async ( + namespace: string, + name: string, + level: string, + cluster?: string, + ): Promise => { + const params: QueryParams = { level: level }; + + if (cluster) { + params.clusterName = cluster; + } + + return this.newRequest( + HTTP_VERBS.POST, + urls.podEnvoyProxyLogging(namespace, name), + params, + {}, + ).then(resp => { + return resp; + }); + }; + + getWorkloadSpans = async ( + namespace: string, + workload: string, + params: TracingQuery, + cluster?: string, + ): Promise => { + const queryParams: QueryParams = { ...params }; + + if (cluster) { + queryParams.clusterName = cluster; + } + + return this.newRequest( + HTTP_VERBS.GET, + urls.workloadSpans(namespace, workload), + queryParams, + {}, + ).then(resp => { + return resp; + }); + }; + + getServices = async ( + namespace: string, + params?: ServiceListQuery, + ): Promise => { + return this.newRequest( + HTTP_VERBS.GET, + urls.services(namespace), + params, + {}, + ); + }; + + getServiceDetail = async ( + namespace: string, + service: string, + validate: boolean, + cluster?: string, + rateInterval?: DurationInSeconds, + ): Promise => { + const params: QueryParams = {}; + + if (validate) { + params.validate = true; + } + + if (rateInterval) { + params.rateInterval = `${rateInterval}s`; + } + + if (cluster) { + params.clusterName = cluster; + } + + return this.newRequest( + HTTP_VERBS.GET, + urls.service(namespace, service), + params, + {}, + ).then(r => { + const info: ServiceDetailsInfo = r; + + if (info.health) { + // Default rate interval in backend = 600s + info.health = ServiceHealth.fromJson(namespace, service, info.health, { + rateInterval: rateInterval ?? 600, + hasSidecar: info.istioSidecar, + hasAmbient: info.istioAmbient, + }); + } + return info; + }); + }; + + getApps = async ( + namespace: string, + params: AppListQuery, + ): Promise => { + return this.newRequest( + HTTP_VERBS.GET, + urls.apps(namespace), + params, + {}, + ); + }; + + getApp = async ( + namespace: string, + app: string, + params: AppQuery, + cluster?: string, + ): Promise => { + const queryParams: QueryParams = { ...params }; + + if (cluster) { + queryParams.clusterName = cluster; + } + + return this.newRequest( + HTTP_VERBS.GET, + urls.app(namespace, app), + queryParams, + {}, + ); + }; + + getWorkloadDashboard = async ( + namespace: string, + workload: string, + params: IstioMetricsOptions, + cluster?: string, + ): Promise => { + const queryParams: QueryParams = { ...params }; + + if (cluster) { + queryParams.clusterName = cluster; + } + + return this.newRequest( + HTTP_VERBS.GET, + urls.workloadDashboard(namespace, workload), + queryParams, + {}, + undefined, + true, + ); + }; + + getServiceDashboard = async ( + namespace: string, + service: string, + params: IstioMetricsOptions, + cluster?: string, + ): Promise => { + const queryParams: QueryParams = { ...params }; + + if (cluster) { + queryParams.clusterName = cluster; + } + + return this.newRequest( + HTTP_VERBS.GET, + urls.serviceDashboard(namespace, service), + queryParams, + {}, + undefined, + true, + ); + }; + + getAppDashboard = async ( + namespace: string, + app: string, + params: IstioMetricsOptions, + cluster?: string, + ): Promise => { + const queryParams: QueryParams = { ...params }; + + if (cluster) { + queryParams.clusterName = cluster; + } + + return this.newRequest( + HTTP_VERBS.GET, + urls.appDashboard(namespace, app), + queryParams, + {}, + undefined, + true, + ); + }; + + getGrafanaInfo = async (): Promise => { + return this.newRequest(HTTP_VERBS.GET, urls.grafana); + }; + + getAppSpans = async ( + namespace: string, + app: string, + params: TracingQuery, + cluster?: string, + ): Promise => { + const queryParams: QueryParams = { ...params }; + + if (cluster) { + queryParams.clusterName = cluster; + } + + return this.newRequest( + HTTP_VERBS.GET, + urls.appSpans(namespace, app), + queryParams, + {}, + ); + }; + + getServiceSpans = async ( + namespace: string, + service: string, + params: TracingQuery, + cluster?: string, + ): Promise => { + const queryParams: QueryParams = { ...params }; + + if (cluster) { + queryParams.clusterName = cluster; + } + + return this.newRequest( + HTTP_VERBS.GET, + urls.serviceSpans(namespace, service), + queryParams, + {}, + ); + }; + + getCrippledFeatures = async (): Promise => { + return this.newRequest( + HTTP_VERBS.GET, + urls.crippledFeatures, + ); + }; + + getGraphElements = async ( + params: GraphElementsQuery, + ): Promise => { + return this.newRequest( + HTTP_VERBS.GET, + urls.namespacesGraphElements, + params, + ); + }; +} + +export const getErrorString = (error: AxiosError): string => { + if (error && error.response) { + // @ts-expect-error + if (error.response.data && error.response.data.error) { + // @ts-expect-error + return error.response.data.error; + } + if (error.response.statusText) { + let errorString = error.response.statusText; + if (error.response.status === 401) { + errorString += ': Has your session expired? Try logging in again.'; + } + return errorString; + } + } + return ''; +}; + +export const getErrorDetail = (error: AxiosError): string => { + if (error && error.response) { + // @ts-expect-error + if (error.response.data && error.response.data.detail) { + // @ts-expect-error + return error.response.data.detail; + } + } + return ''; +}; diff --git a/workspaces/kiali/plugins/kiali/src/services/Prometheus.ts b/workspaces/kiali/plugins/kiali/src/services/Prometheus.ts new file mode 100644 index 0000000000..8d3c7ccef9 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/services/Prometheus.ts @@ -0,0 +1,53 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { serverConfig } from '../config/ServerConfig'; +import { DurationInSeconds } from '../types/Common'; + +// The step needs to minimally cover 2 datapoints to get any sort of average. So 2*scrape is the bare +// minimum. We set rateInterval=step which basically gives us the rate() of each disjoint set. +// (note, another approach could be to set rateInterval=step+scrape, the overlap could produce some +// smoothing). The rateInterval should typically not be < step or you're just omitting datapoints. +const defaultDataPoints = 50; +const defaultScrapeInterval = 15; // seconds +const minDataPoints = 2; + +export interface PrometheusRateParams { + rateInterval: string; + step: number; +} + +export const computePrometheusRateParams = ( + duration: DurationInSeconds, + dataPoints?: number, + scrapeInterval?: DurationInSeconds, +): PrometheusRateParams => { + let actualDataPoints = dataPoints || defaultDataPoints; + if (actualDataPoints < minDataPoints) { + actualDataPoints = defaultDataPoints; + } + + const configuredScrapeInterval = + serverConfig && serverConfig.prometheus.globalScrapeInterval; + const actualScrapeInterval = + scrapeInterval || configuredScrapeInterval || defaultScrapeInterval; + const minStep = 2 * actualScrapeInterval; + let step = Math.floor(duration / actualDataPoints); + step = step < minStep ? minStep : step; + return { + step: step, + rateInterval: `${step}s`, + }; +}; diff --git a/workspaces/kiali/plugins/kiali/src/setupTests.ts b/workspaces/kiali/plugins/kiali/src/setupTests.ts new file mode 100644 index 0000000000..83e0161dae --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/setupTests.ts @@ -0,0 +1,18 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import '@testing-library/jest-dom'; +import 'jest-canvas-mock'; +import 'cross-fetch/polyfill'; diff --git a/workspaces/kiali/plugins/kiali/src/store/ConfigStore.ts b/workspaces/kiali/plugins/kiali/src/store/ConfigStore.ts new file mode 100644 index 0000000000..153e7d5a65 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/store/ConfigStore.ts @@ -0,0 +1,44 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { + INITIAL_ISTIO_CERTS_INFO_STATE, + INITIAL_ISTIO_STATUS_STATE, + INITIAL_LOGIN_STATE, + INITIAL_MESH_TLS_STATE, + INITIAL_MESSAGE_CENTER_STATE, + INITIAL_NAMESPACE_STATE, + INITIAL_STATUS_STATE, + INITIAL_USER_SETTINGS_STATE, +} from '../reducers'; +import { INITIAL_TRACING_STATE } from '../reducers/Tracing'; +import { KialiAppState } from './Store'; + +// Setup the initial state of the Redux store with defaults +// (instead of having things be undefined until they are populated by query) +// Redux 4.0 actually required this +export const initialStore: KialiAppState = { + authentication: INITIAL_LOGIN_STATE, + istioStatus: INITIAL_ISTIO_STATUS_STATE, + istioCertsInfo: INITIAL_ISTIO_CERTS_INFO_STATE, + meshTLSStatus: INITIAL_MESH_TLS_STATE, + messageCenter: INITIAL_MESSAGE_CENTER_STATE, + namespaces: INITIAL_NAMESPACE_STATE, + tracingState: INITIAL_TRACING_STATE, + statusState: INITIAL_STATUS_STATE, + userSettings: INITIAL_USER_SETTINGS_STATE, + dispatch: {}, +}; diff --git a/workspaces/kiali/plugins/kiali/src/store/Context.ts b/workspaces/kiali/plugins/kiali/src/store/Context.ts new file mode 100644 index 0000000000..7ad5ad9dd2 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/store/Context.ts @@ -0,0 +1,18 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { createContext } from 'react'; + +export const KialiContext = createContext({}); diff --git a/workspaces/kiali/plugins/kiali/src/store/KialiProvider.tsx b/workspaces/kiali/plugins/kiali/src/store/KialiProvider.tsx new file mode 100644 index 0000000000..62ca034f73 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/store/KialiProvider.tsx @@ -0,0 +1,290 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import React from 'react'; +import { useAsyncFn, useDebounce } from 'react-use'; + +import { Entity } from '@backstage/catalog-model'; +import { useApi } from '@backstage/core-plugin-api'; + +import { CircularProgress } from '@material-ui/core'; +import axios from 'axios'; + +import { + HelpDropdownActions, + LoginActions, + NamespaceActions, +} from '../actions'; +import { IstioCertsInfoActions } from '../actions/IstioCertsInfoActions'; +import { IstioStatusActions } from '../actions/IstioStatusActions'; +import { MeshTlsActions } from '../actions/MeshTlsActions'; +import { setServerConfig } from '../config/ServerConfig'; +import { KialiHelper } from '../pages/Kiali/KialiHelper'; +import { KialiNoResources } from '../pages/Kiali/KialiNoResources'; +import { + HelpDropdownStateReducer, + IstioCertsInfoStateReducer, + IstioStatusStateReducer, + LoginReducer, + MessageCenterReducer, + NamespaceStateReducer, + UserSettingsStateReducer, +} from '../reducers'; +import { MeshTlsStateReducer } from '../reducers/MeshTlsState'; +import { kialiApiRef } from '../services/Api'; +import { AuthInfo } from '../types/Auth'; +import { MessageType } from '../types/MessageCenter'; +import { AlertUtils } from '../utils/Alertutils'; +import { PromisesRegistry } from '../utils/CancelablePromises'; +import { initialStore } from './ConfigStore'; +import { KialiContext } from './Context'; + +export enum ValidationCategory { + configuration = 'configuration', + authentication = 'authentication', + versionSupported = 'versionSupported', + networking = 'networking', + unknown = 'unknown', +} + +export type KialiChecker = { + verify: boolean; + category: ValidationCategory; + missingAttributes?: string[]; + title?: string; + message?: string; + helper?: string; + authData?: AuthInfo; +}; + +const initialChecker: KialiChecker = { + verify: true, + category: ValidationCategory.unknown, +}; + +interface Props { + children: React.ReactNode; + entity?: Entity; +} + +export const KialiProvider: React.FC = ({ + children, + entity, +}): JSX.Element => { + const promises = new PromisesRegistry(); + const [kialiCheck, setKialiCheck] = + React.useState(initialChecker); + const [notHaveResources, setNotHaveResources] = React.useState< + boolean | undefined + >(undefined); + const [loginState, loginDispatch] = React.useReducer( + LoginReducer, + initialStore.authentication, + ); + const [meshTLSStatusState, meshTLSStatusDispatch] = React.useReducer( + MeshTlsStateReducer, + initialStore.meshTLSStatus, + ); + const [statusState, statusDispatch] = React.useReducer( + HelpDropdownStateReducer, + initialStore.statusState, + ); + const [messageState, messageDispatch] = React.useReducer( + MessageCenterReducer, + initialStore.messageCenter, + ); + const [namespaceState, namespaceDispatch] = React.useReducer( + NamespaceStateReducer, + initialStore.namespaces, + ); + const [userSettingState, userSettingDispatch] = React.useReducer( + UserSettingsStateReducer, + initialStore.userSettings, + ); + const [istioStatusState, istioStatusDispatch] = React.useReducer( + IstioStatusStateReducer, + initialStore.istioStatus, + ); + const [istioCertsState, istioCertsDispatch] = React.useReducer( + IstioCertsInfoStateReducer, + initialStore.istioCertsInfo, + ); + + const kialiClient = useApi(kialiApiRef); + kialiClient.setEntity(entity); + const alertUtils = new AlertUtils(messageDispatch); + + const fetchNamespaces = async () => { + if (!namespaceState || !namespaceState.isFetching) { + namespaceDispatch(NamespaceActions.requestStarted()); + return kialiClient + .getNamespaces() + .then(data => { + namespaceDispatch( + NamespaceActions.receiveList([...data], new Date()), + ); + if (data.length > 0) { + setNotHaveResources(false); + } else { + setNotHaveResources(true); + } + namespaceDispatch(NamespaceActions.setActiveNamespaces([...data])); + }) + .catch(() => namespaceDispatch(NamespaceActions.requestFailed())); + } + return () => {}; + }; + + const fetchPostLogin = async () => { + try { + const getAuthpromise = promises + .register('getAuth', kialiClient.getAuthInfo()) + .then(response => { + loginDispatch(LoginActions.loginSuccess(response.sessionInfo)); + }); + const getStatusPromise = promises + .register('getStatus', kialiClient.getStatus()) + .then(response => { + statusDispatch(HelpDropdownActions.statusRefresh(response)); + }); + const getMeshTLS = promises + .register('getMeshTLS', kialiClient.getMeshTls()) + .then(response => + meshTLSStatusDispatch(MeshTlsActions.setinfo(response)), + ); + const getIstioCerts = promises + .register('getIstioCerts', kialiClient.getIstioCertsInfo()) + .then(resp => istioCertsDispatch(IstioCertsInfoActions.setinfo(resp))); + const getServerConfig = promises + .register('getServerConfig', kialiClient.getServerConfig()) + .then(resp => setServerConfig(resp)); + const getIstioStatus = promises + .register('getIstiostatus', kialiClient.getIstioStatus()) + .then(resp => istioStatusDispatch(IstioStatusActions.setinfo(resp))); + + await Promise.all([ + getAuthpromise, + getStatusPromise, + getServerConfig, + getMeshTLS, + getIstioCerts, + getIstioStatus, + ]); + await fetchNamespaces(); + } catch (err) { + let errDetails: string | undefined = undefined; + if (axios.isAxiosError(err)) { + if (err.request) { + const response = (err.request as XMLHttpRequest).responseText; + if (response.trim().length > 0) { + errDetails = response; + } + } + } + setKialiCheck({ + verify: false, + category: ValidationCategory.unknown, + message: `Error in axios: ${errDetails || err}`, + }); + } + }; + + const fetchKiali = async () => { + try { + const status = await kialiClient.status(); + if ('verify' in status && !status.verify) { + alertUtils.addError('Could not check configuration and authenticate'); + setKialiCheck(status); + } else { + fetchPostLogin(); + } + } catch (err) { + let errDetails: string | undefined = undefined; + if (axios.isAxiosError(err)) { + if (err.request) { + const response = (err.request as XMLHttpRequest).responseText; + if (response.trim().length > 0) { + errDetails = response; + } + } + alertUtils.addError('Could not fetch auth info', err); + } + setKialiCheck({ + verify: false, + category: ValidationCategory.networking, + message: `Could not fetch auth info: ${errDetails || err}`, + }); + } + }; + + const mockAlerts = () => { + alertUtils.addMessage({ + content: + '[Mock]Could not fetch Grafana info. Turning off links to Grafana.', + detail: 'grafana URL is not set in Kiali configuration', + group: 'default', + type: MessageType.INFO, + showNotification: false, + }); + alertUtils.addMessage({ + content: '[Mock]Could not fetch Graph.', + detail: 'Mock error fetching graph', + }); + }; + + const [{ loading }, refresh] = useAsyncFn( + async () => { + // Check if the config is loaded + await fetchKiali(); + if (kialiClient.isDevEnv()) { + mockAlerts(); + } + }, + [], + { loading: true }, + ); + useDebounce(refresh, 10); + + if (loading) { + return ; + } else if (!!notHaveResources) { + return ; + } + + return ( + + + {kialiCheck.verify && children} + + ); +}; diff --git a/workspaces/kiali/plugins/kiali/src/store/Store.ts b/workspaces/kiali/plugins/kiali/src/store/Store.ts new file mode 100644 index 0000000000..9e81f6ccf0 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/store/Store.ts @@ -0,0 +1,100 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { KialiAppAction } from '../actions/KialiAppAction'; +import { CertsInfo } from '../types/CertsInfo'; +import { RawDate, TimeRange, UserName } from '../types/Common'; +import { ComponentStatus } from '../types/IstioStatus'; +import { NotificationGroup } from '../types/MessageCenter'; +import { Namespace } from '../types/Namespace'; +import { StatusState } from '../types/StatusState'; +import { TLSStatus } from '../types/TLSStatus'; +import { JaegerTrace, TracingInfo } from '../types/TracingInfo'; +import { AlertUtils } from '../utils/Alertutils'; + +export interface NamespaceState { + readonly activeNamespaces: Namespace[]; + readonly filter: string; + readonly items?: Namespace[]; + readonly isFetching: boolean; + readonly lastUpdated?: Date; + readonly namespacesPerCluster?: Map; +} + +export interface MessageCenterState { + nextId: number; // This likely will go away once we have persistence + groups: NotificationGroup[]; + hidden: boolean; + expanded: boolean; + expandedGroupId?: string; +} + +export enum LoginStatus { + logging, + loggedIn, + loggedOut, + error, + expired, +} + +export interface LoginSession { + expiresOn: RawDate; + username: UserName; + kialiCookie: string; +} + +export interface LoginState { + landingRoute?: string; + message: string; + session?: LoginSession; + status: LoginStatus; +} + +export interface InterfaceSettings { + navCollapse: boolean; +} + +export interface UserSettings { + duration: number; + interface: InterfaceSettings; + refreshInterval: number; + replayActive: boolean; + replayQueryTime: number; + timeRange: TimeRange; +} + +export type TracingState = { + info?: TracingInfo; + selectedTrace?: JaegerTrace; +}; + +// This defines the Kiali Global Application State +export interface KialiAppState { + // Global state === across multiple pages + // could also be session state + /** Page Settings */ + authentication: LoginState; + istioStatus: ComponentStatus[]; + istioCertsInfo: CertsInfo[]; + messageCenter: MessageCenterState; + meshTLSStatus: TLSStatus; + namespaces: NamespaceState; + statusState: StatusState; + /** User Settings */ + userSettings: UserSettings; + tracingState: TracingState; + dispatch: { [key: string]: React.Dispatch }; + alertUtils?: AlertUtils; +} diff --git a/workspaces/kiali/plugins/kiali/src/store/index.ts b/workspaces/kiali/plugins/kiali/src/store/index.ts new file mode 100644 index 0000000000..0a7d827171 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/store/index.ts @@ -0,0 +1,17 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export * from './Context'; +export * from './Store'; diff --git a/workspaces/kiali/plugins/kiali/src/styles/AceEditorStyle.ts b/workspaces/kiali/plugins/kiali/src/styles/AceEditorStyle.ts new file mode 100644 index 0000000000..45fecc967c --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/styles/AceEditorStyle.ts @@ -0,0 +1,61 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { NestedCSSProperties } from 'typestyle/lib/types'; + +import { PFColors } from '../components/Pf/PfColors'; +import { kialiStyle } from './StyleUtils'; + +/* + * 70px is the height of the bottom toolbar (save, reload and cancel buttons) + * 100px is the top margin of the yaml editor (Adjusted with RenderComponentScroll). + * So, substracting 170px from the tab content height. + */ +export const istioAceEditorStyle = kialiStyle({ + '--kiali-yaml-editor-height': + 'calc(var(--kiali-details-pages-tab-content-height) - 170px)', + position: 'relative', + minHeight: '200px', + border: `1px solid ${PFColors.BorderColor200}`, + fontSize: 'var(--kiali-global--font-size) !important', + $nest: { + '& div.ace_gutter-cell.ace_info': { + backgroundImage: 'none', + $nest: { + '&::before': { + content: `'\\E92b'`, + fontFamily: 'pficon', + left: '5px', + position: 'absolute', + }, + }, + }, + }, +} as NestedCSSProperties); + +export const istioValidationErrorStyle = kialiStyle({ + position: 'absolute', + background: 'rgba(204, 0, 0, 0.5)', +}); + +export const istioValidationWarningStyle = kialiStyle({ + position: 'absolute', + background: 'rgba(236, 122, 8, 0.5)', +}); + +export const istioValidationInfoStyle = kialiStyle({ + position: 'absolute', + background: PFColors.ColorLight300, +}); diff --git a/workspaces/kiali/plugins/kiali/src/styles/DropdownStyles.ts b/workspaces/kiali/plugins/kiali/src/styles/DropdownStyles.ts new file mode 100644 index 0000000000..f37cb020e8 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/styles/DropdownStyles.ts @@ -0,0 +1,71 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { NestedCSSProperties } from 'typestyle/lib/types'; + +import { PFColors } from '../components/Pf/PfColors'; +import { kialiStyle } from './StyleUtils'; + +export const containerStyle = kialiStyle({ + overflow: 'auto', +}); + +// this emulates Select component .pf-v5-c-select__menu +export const menuStyle = kialiStyle({ + fontSize: 'var(--kiali-global--font-size)', +}); + +// this emulates Select component .pf-v5-c-select__menu but w/o cursor manipulation +export const menuEntryStyle = kialiStyle({ + display: 'inline-block', + width: '100%', +}); + +// this emulates Select component .pf-v5-c-select__menu-group-title but with less bottom padding to conserve space +export const titleStyle = kialiStyle({ + padding: '0.5rem 1rem 0 1rem', + fontWeight: 700, + color: PFColors.Color200, +}); + +const itemStyle: NestedCSSProperties = { + alignItems: 'center', + whiteSpace: 'nowrap', + margin: 0, + padding: '0.375rem 1rem', + display: 'inline-block', +}; + +// this emulates Select component .pf-v5-c-select__menu-item but with less vertical padding to conserve space +export const itemStyleWithoutInfo = kialiStyle(itemStyle); + +// this emulates Select component .pf-v5-c-select__menu-item but with less vertical padding to conserve space +export const itemStyleWithInfo = kialiStyle({ + ...itemStyle, + padding: '0.375rem 0 0.375rem 1rem', +}); + +export const infoStyle = kialiStyle({ + marginLeft: '0.375rem', +}); + +export const groupMenuStyle = kialiStyle({ + textAlign: 'left', +}); + +export const kebabToggleStyle = kialiStyle({ + paddingLeft: '0.5rem', + paddingRight: '0.5rem', +}); diff --git a/workspaces/kiali/plugins/kiali/src/styles/HealthStyle.ts b/workspaces/kiali/plugins/kiali/src/styles/HealthStyle.ts new file mode 100644 index 0000000000..b68cf48778 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/styles/HealthStyle.ts @@ -0,0 +1,32 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { PFColors } from '../components/Pf/PfColors'; +import { kialiStyle } from './StyleUtils'; + +export const healthIndicatorStyle = kialiStyle({ + $nest: { + '& .pf-v5-c-tooltip__content': { + borderWidth: '1px', + textAlign: 'left', + }, + + '& .pf-v5-c-content ul': { + marginBottom: 'var(--pf-v5-c-content--ul--MarginTop)', + marginTop: 0, + color: PFColors.Color100, + }, + }, +}); diff --git a/workspaces/kiali/plugins/kiali/src/styles/StyleUtils.ts b/workspaces/kiali/plugins/kiali/src/styles/StyleUtils.ts new file mode 100644 index 0000000000..1ff8084406 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/styles/StyleUtils.ts @@ -0,0 +1,58 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { Theme } from '@material-ui/core'; +import { useTheme } from '@material-ui/core/styles'; +import { style } from 'typestyle'; +import { NestedCSSProperties } from 'typestyle/lib/types'; + +const cssPrefix = process.env.CSS_PREFIX ?? 'kiali'; + +export const cardsHeight = '300px'; +/** + * Add prefix to CSS classname (mandatory in some plugins like OSSMC) + * Default prefix value is kiali if the environment variable CSS_PREFIX is not defined + */ +export const kialiStyle = (styleProps: NestedCSSProperties) => { + return style({ + $debugName: cssPrefix, + ...styleProps, + }); +}; + +export const baseStyle = kialiStyle({ + display: 'contents', + overflow: 'visible', +}); + +export const linkStyle = kialiStyle({ + color: '#06c', + cursor: 'pointer', +}); + +export const useLinkStyle = () => { + const theme = useTheme(); + + return kialiStyle({ + color: theme.palette.type === 'dark' ? '#9CC9FF' : '#06c', + cursor: 'pointer', + }); +}; + +export const getChipStyle = (theme: Theme) => { + return { + backgroundColor: theme.palette.type === 'dark' ? '#3d5061' : '#e7f1fa', + }; +}; diff --git a/workspaces/kiali/plugins/kiali/src/styles/TabStyles.ts b/workspaces/kiali/plugins/kiali/src/styles/TabStyles.ts new file mode 100644 index 0000000000..4715951f3c --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/styles/TabStyles.ts @@ -0,0 +1,39 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { PFColors } from '../components/Pf/PfColors'; +import { kialiStyle } from './StyleUtils'; + +export const basicTabStyle = kialiStyle({ + $nest: { + '& .pf-v5-c-tabs__list': { + marginLeft: '20px', + }, + + '& .pf-v5-c-tab-content': { + overflowY: 'auto', + height: '600px', + }, + }, +}); + +export const traceTabStyle = kialiStyle({ + $nest: { + '& .pf-v5-c-tabs__list': { + backgroundColor: PFColors.BackgroundColor100, + borderBottom: `1px solid ${PFColors.BorderColor100}`, + }, + }, +}); diff --git a/workspaces/kiali/plugins/kiali/src/types/AceValidations.ts b/workspaces/kiali/plugins/kiali/src/types/AceValidations.ts new file mode 100644 index 0000000000..ab98f76159 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/types/AceValidations.ts @@ -0,0 +1,365 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { IMarker } from 'react-ace'; +import { Annotation } from 'react-ace/types'; + +import { YAMLException } from 'js-yaml'; + +import { + istioValidationErrorStyle, + istioValidationInfoStyle, + istioValidationWarningStyle, +} from '../styles/AceEditorStyle'; +import { HelpMessage, ObjectCheck, ObjectValidation } from './IstioObjects'; + +export const jsYaml = require('js-yaml'); + +export interface AceValidations { + markers: Array; + annotations: Array; +} + +interface AceCheck { + marker: IMarker; + annotation: Annotation; +} + +interface AceMarker { + startRow: number; + startCol: number; + endRow: number; + endCol: number; + position: number; +} + +interface YamlPosition { + position: number; + row: number; + col: number; +} + +const numRows = (yaml: string): number => { + let rows = 0; + for (let i = 0; i < yaml.length; i++) { + if (yaml.charAt(i) === '\n') { + rows++; + } + } + return rows; +}; + +const posToRowCol = (yaml: string, pos: number): YamlPosition => { + const rowCol: YamlPosition = { + position: pos, + row: 0, + col: 0, + }; + let lastNL = -1; + for (let i = 0; i < pos; i++) { + if (yaml.charAt(i) === '\n') { + rowCol.row++; + lastNL = i; + } + } + rowCol.col = lastNL > -1 ? pos - (lastNL + 1) : pos; + return rowCol; +}; + +export const rowColToPos = (yaml: string, row: number, col: number): number => { + let currentRow = 0; + let currentCol = 0; + const pos = -1; + for (let i = 0; i < yaml.length; i++) { + if (yaml.charAt(i) === '\n') { + currentRow++; + currentCol = -1; + } else { + currentCol++; + } + if (currentRow === row && currentCol === col) { + // If col == 0, pos is NL char, so returned pos should be first char after NL + return col === 0 ? i + 1 : i; + } + } + return pos; +}; + +export const parseLine = (yaml: string, row: number): string => { + let i = 0; + let j = 0; + + for (i; i < yaml.length; i++) { + if (yaml.charAt(i) === '\n') { + j = j + 1; + } + + if (j === row) break; + } + + return yaml.substring(i + 1, yaml.indexOf('\n', i + 1)); +}; + +/* + Find a token inside a yaml based string. + Returns the row/col coordinates of the token. + It manages special cases where a token is an array. + */ +const parseMarker = ( + yaml: string, + startsFrom: number, + token: string, + isArray: boolean, + arrayIndex?: number, +): AceMarker => { + const aceMarker: AceMarker = { + startRow: 0, + startCol: 0, + endRow: 0, + endCol: 0, + position: -1, + }; + + let tokenPos = startsFrom; + + // Find start of the spec part first, this should skip the whole metadata part + if (startsFrom < 0) { + tokenPos = yaml.indexOf('spec:', tokenPos); + } + + // Find initial token position + tokenPos = yaml.indexOf(token, tokenPos); + if (tokenPos < 0) { + return aceMarker; + } + + const maxRows = numRows(yaml); + + // Array should find first '-' token to situate pos + if (isArray && arrayIndex !== undefined) { + tokenPos = yaml.indexOf('-', tokenPos); + // We should find the right '-' under the same col of the yaml + const firstArrayRowCol = posToRowCol(yaml, tokenPos); + let row = firstArrayRowCol.row; + const col = firstArrayRowCol.col; + let arrayIndexPos = tokenPos; + let indexRow = 0; + // Iterate to find next '-' token according arrayIndex + while (row < maxRows && indexRow < arrayIndex) { + row++; + const checkPos = rowColToPos(yaml, row, col); + if (yaml.charAt(checkPos) === '-') { + arrayIndexPos = checkPos; + indexRow++; + } + } + const arrayRowCol = posToRowCol(yaml, arrayIndexPos); + aceMarker.position = arrayIndexPos + 1; // Increase the index to not repeat same finding on next iteration + aceMarker.startRow = arrayRowCol.row; + aceMarker.startCol = arrayRowCol.col; + } else { + const tokenRowCol = posToRowCol(yaml, tokenPos); + aceMarker.position = tokenPos + token.length; // Increase the index to not repeat same finding on next iteration + aceMarker.startRow = tokenRowCol.row; + aceMarker.startCol = tokenRowCol.col; + } + + // Once start is calculated, we should calculate the end of the element iterating by rows + for (let row = aceMarker.startRow + 1; row < maxRows + 1; row++) { + // It searches by row and column, starting from the beginning of the line + for (let col = 0; col <= aceMarker.startCol; col++) { + const endTokenPos = rowColToPos(yaml, row, col); + // We need to differentiate if token is an array or not to mark the end of the mark + if ( + yaml.charAt(endTokenPos) !== ' ' && + (isArray || yaml.charAt(endTokenPos) !== '-') + ) { + aceMarker.endRow = row; + aceMarker.endCol = 0; + return aceMarker; + } + } + } + return aceMarker; +}; + +export const parseHelpAnnotations = ( + yaml: string, + helpMessages: HelpMessage[], +): Annotation[] => { + const annotations: Annotation[] = []; + const lastPosition = -1; + + helpMessages.forEach(hm => { + const marker = parseMarker( + yaml, + lastPosition, + hm.objectField.substring(hm.objectField.lastIndexOf('.') + 1), + false, + ); + + const annotation = { + row: marker.startRow, + column: marker.startCol, + type: 'info', + text: 'This field has help information. Check the side panel for more information.', + }; + + if (marker.position !== -1) { + annotations.push(annotation); + } + }); + + return annotations; +}; + +const getSeverityClassName = (severity: string) => { + switch (severity) { + case 'error': + return istioValidationErrorStyle; + case 'warning': + return istioValidationWarningStyle; + case 'info': + default: + return istioValidationInfoStyle; + } +}; + +const parseCheck = (yaml: string, check: ObjectCheck): AceCheck => { + const severity = + check.severity === 'error' || check.severity === 'warning' + ? check.severity + : 'info'; + const marker: IMarker = { + startRow: 0, + startCol: 0, + endRow: 0, + endCol: 0, + className: getSeverityClassName(severity), + type: 'fullLine', + }; + const annotation = { + row: 0, + column: 0, + type: severity, + text: (check.code ? `${check.code} ` : '') + check.message, + }; + let aceMarker = { + startRow: 0, + startCol: 0, + endRow: 0, + endCol: 0, + position: -1, + }; + /* + Potential paths: + - + - spec/hosts + - spec/host + - spec/[]/route + - spec/[]/route[nDestination] + - spec/[]/route[]/weight/ + - spec/[nRoute]/route[nDestination]/destination + */ + if (check.path.length > 0) { + const tokens: string[] = check.path.split('/'); + // It skips the first 'spec' token + if (tokens.length > 1) { + for (let i = 1; i < tokens.length; i++) { + const token = tokens[i]; + // Check if token has an array or not + if (token.indexOf('[') > -1 && token.indexOf(']') > -1) { + const startPos = token.indexOf('['); + const endPos = token.indexOf(']'); + const arrayIndex = +token.substr(startPos + 1, endPos - startPos - 1); + const subtoken = token.substr(0, startPos); + aceMarker = parseMarker( + yaml, + aceMarker.position, + subtoken, + true, + arrayIndex, + ); + } else { + aceMarker = parseMarker(yaml, aceMarker.position, token, false); + } + } + } + } + + marker.startRow = aceMarker.startRow; + marker.startCol = aceMarker.startCol; + // React Ace editor has a flip in the marker indexes + marker.endRow = aceMarker.endRow > 0 ? aceMarker.endRow - 1 : 0; + marker.endCol = aceMarker.endCol; + annotation.row = marker.startRow; + return { marker: marker, annotation: annotation }; +}; + +export const parseKialiValidations = ( + yamlInput: string, + kialiValidations?: ObjectValidation, +): AceValidations => { + const aceValidations: AceValidations = { + markers: [], + annotations: [], + }; + + if ( + !kialiValidations || + yamlInput.length === 0 || + Object.keys(kialiValidations).length === 0 + ) { + return aceValidations; + } + + kialiValidations.checks.forEach(check => { + const aceCheck = parseCheck(yamlInput, check); + aceValidations.markers.push(aceCheck.marker); + aceValidations.annotations.push(aceCheck.annotation); + }); + return aceValidations; +}; + +export const parseYamlValidations = (yamlInput: string): AceValidations => { + const parsedValidations: AceValidations = { + markers: [], + annotations: [], + }; + try { + jsYaml.safeLoadAll(yamlInput); + } catch (e) { + if (e instanceof YAMLException) { + const row = e.mark && e.mark.line ? e.mark.line : 0; + const col = e.mark && e.mark.column ? e.mark.column : 0; + const message = e.message ? e.message : ''; + parsedValidations.markers.push({ + startRow: row, + startCol: 0, + endRow: row + 1, + endCol: 0, + className: istioValidationErrorStyle, + type: 'fullLine', + }); + parsedValidations.annotations.push({ + row: row, + column: col, + type: 'error', + text: message, + }); + } + } + return parsedValidations; +}; diff --git a/workspaces/kiali/plugins/kiali/src/types/App.ts b/workspaces/kiali/plugins/kiali/src/types/App.ts new file mode 100644 index 0000000000..29dbce1b73 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/types/App.ts @@ -0,0 +1,47 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { AppHealthResponse } from '../types/Health'; +import { Namespace } from './Namespace'; +import { Runtime } from './Workload'; + +export interface AppId { + app: string; + cluster?: string; + namespace: string; +} + +export interface AppWorkload { + istioSidecar: boolean; + istioAmbient: boolean; + labels: { [key: string]: string }; + serviceAccountNames: string[]; + workloadName: string; +} + +export interface App { + cluster?: string; + health: AppHealthResponse; + name: string; + namespace: Namespace; + runtimes: Runtime[]; + serviceNames: string[]; + workloads: AppWorkload[]; +} + +export interface AppQuery { + health: 'true' | 'false'; + rateInterval: string; +} diff --git a/workspaces/kiali/plugins/kiali/src/types/AppList.ts b/workspaces/kiali/plugins/kiali/src/types/AppList.ts new file mode 100644 index 0000000000..5c7066625f --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/types/AppList.ts @@ -0,0 +1,43 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { AppHealth } from './Health'; +import { ObjectReference } from './IstioObjects'; +import { Namespace } from './Namespace'; + +export interface AppOverview { + cluster?: string; + health: AppHealth; + istioAmbient: boolean; + istioReferences: ObjectReference[]; + istioSidecar: boolean; + labels: { [key: string]: string }; + name: string; +} + +export interface AppListItem extends AppOverview { + namespace: string; +} + +export interface AppList { + applications: AppOverview[]; + namespace: Namespace; +} + +export interface AppListQuery { + health: 'true' | 'false'; + istioResources: 'true' | 'false'; + rateInterval: string; +} diff --git a/workspaces/kiali/plugins/kiali/src/types/Auth.ts b/workspaces/kiali/plugins/kiali/src/types/Auth.ts new file mode 100644 index 0000000000..4c2e69845d --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/types/Auth.ts @@ -0,0 +1,50 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export interface AuthConfig { + authorizationEndpoint?: string; + logoutEndpoint?: string; + logoutRedirect?: string; + strategy: AuthStrategy; +} + +export type AuthInfo = { + sessionInfo: SessionInfo; +} & AuthConfig; + +export enum AuthStrategy { + anonymous = 'anonymous', + openshift = 'openshift', + token = 'token', + openid = 'openid', + header = 'header', +} + +// Stores the result of a computation: +// hold = stop all computation and wait for a side-effect, such as a redirect +// continue = continue... +// success = authentication was a success, session is available +// failure = authentication failed, session is undefined but error is available +export enum AuthResult { + HOLD = 'hold', + CONTINUE = 'continue', + SUCCESS = 'success', + FAILURE = 'failure', +} + +export interface SessionInfo { + username?: string; + expiresOn?: string; +} diff --git a/workspaces/kiali/plugins/kiali/src/types/CertsInfo.ts b/workspaces/kiali/plugins/kiali/src/types/CertsInfo.ts new file mode 100644 index 0000000000..3510a5ae61 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/types/CertsInfo.ts @@ -0,0 +1,26 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export interface CertsInfo { + secretName: string; + secretNamespace: string; + dnsNames: String[]; + issuer: string; + subject: string; + notBefore: string; + notAfter: string; + error: string; + accessible: boolean; +} diff --git a/workspaces/kiali/plugins/kiali/src/types/Common.ts b/workspaces/kiali/plugins/kiali/src/types/Common.ts new file mode 100644 index 0000000000..bf876a7eaa --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/types/Common.ts @@ -0,0 +1,134 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { defaultMetricsDuration } from '../components/Metrics/Helper'; + +export type AppenderString = string; + +export type UserName = string; +export type Password = string; +export type RawDate = string; + +export type KioskMode = string; + +export enum HTTP_VERBS { + DELETE = 'DELETE', + GET = 'get', + PATCH = 'patch', + POST = 'post', + PUT = 'put', +} + +export const PF_THEME_DARK = 'pf-v5-theme-dark'; +export const KIALI_THEME = 'kiali-theme'; + +export const enum Theme { + LIGHT = 'Light', + DARK = 'Dark', +} + +export type TargetKind = 'app' | 'service' | 'workload'; + +export const MILLISECONDS = 1000; + +export const UNIT_TIME = { + SECOND: 1, + MINUTE: 60, + HOUR: 3600, + DAY: 24 * 3600, +}; + +export type TimeInMilliseconds = number; +export type TimeInSeconds = number; + +export type IntervalInMilliseconds = number; +export type DurationInSeconds = number; + +export type BoundsInMilliseconds = { + from?: TimeInMilliseconds; + to?: TimeInMilliseconds; +}; + +// Redux doesn't work well with type composition +export type TimeRange = { + from?: TimeInMilliseconds; + to?: TimeInMilliseconds; + rangeDuration?: DurationInSeconds; +}; + +export const boundsToDuration = ( + bounds: BoundsInMilliseconds, +): DurationInSeconds => { + return Math.floor( + ((bounds.to || new Date().getTime()) - + (bounds.from || new Date().getTime())) / + 1000, + ); +}; + +export const durationToBounds = ( + duration: DurationInSeconds, +): BoundsInMilliseconds => { + return { + from: new Date().getTime() - duration * 1000, + }; +}; + +export const isEqualTimeRange = (t1: TimeRange, t2: TimeRange): boolean => { + if (t1.from && t2.from && t1.from !== t2.from) { + return false; + } + if (t1.to && t2.to && t1.to !== t2.to) { + return false; + } + if ( + t1.rangeDuration && + t2.rangeDuration && + t1.rangeDuration !== t2.rangeDuration + ) { + return false; + } + return true; +}; + +// Type-guarding TimeRange: executes first callback when range is a duration, or second callback when it's a bounded range, mapping to a value +export function guardTimeRange( + range: TimeRange, + ifDuration: (d: DurationInSeconds) => T, + ifBounded: (b: BoundsInMilliseconds) => T, +): T { + if (range.from) { + const b: BoundsInMilliseconds = { + from: range.from, + }; + if (range.to) { + b.to = range.to; + } + return ifBounded(b); + } + if (range.rangeDuration) { + return ifDuration(range.rangeDuration); + } + // It shouldn't reach here a TimeRange should have DurationInSeconds or BoundsInMilliseconds + return ifDuration(defaultMetricsDuration); +} + +export const evalTimeRange = (range: TimeRange): [Date, Date] => { + const bounds = guardTimeRange(range, durationToBounds, b => b); + return [ + bounds.from ? new Date(bounds.from) : new Date(), + bounds.to ? new Date(bounds.to) : new Date(), + ]; +}; diff --git a/workspaces/kiali/plugins/kiali/src/types/Dashboards.ts b/workspaces/kiali/plugins/kiali/src/types/Dashboards.ts new file mode 100644 index 0000000000..f836876d3e --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/types/Dashboards.ts @@ -0,0 +1,62 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { LabelDisplayName, Metric, PromLabel } from './Metrics'; + +export interface DashboardModel { + title: string; + charts: ChartModel[]; + aggregations: AggregationModel[]; + externalLinks: ExternalLink[]; + rows: number; +} + +export type SpanValue = 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12; +export type ChartType = 'area' | 'line' | 'bar' | 'scatter'; +export type XAxisType = 'time' | 'series'; + +export interface ChartModel { + name: string; + unit: string; + spans: SpanValue; + rowSpans?: SpanValue; + chartType?: ChartType; + min?: number; + max?: number; + metrics: Metric[]; + error?: string; + startCollapsed: boolean; + xAxis?: XAxisType; +} + +export interface AggregationModel { + label: PromLabel; + displayName: LabelDisplayName; + singleSelection: boolean; +} + +export interface ExternalLink { + url: string; + name: string; + variables: ExternalLinkVariables; +} + +export interface ExternalLinkVariables { + app?: string; + namespace?: string; + service?: string; + version?: string; + workload?: string; +} diff --git a/workspaces/kiali/plugins/kiali/src/types/ErrorMsg.ts b/workspaces/kiali/plugins/kiali/src/types/ErrorMsg.ts new file mode 100644 index 0000000000..8b2c515085 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/types/ErrorMsg.ts @@ -0,0 +1,19 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export type ErrorMsg = { + title: string; + description: string; +}; diff --git a/workspaces/kiali/plugins/kiali/src/types/ErrorRate/ErrorRate.ts b/workspaces/kiali/plugins/kiali/src/types/ErrorRate/ErrorRate.ts new file mode 100644 index 0000000000..619e248acf --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/types/ErrorRate/ErrorRate.ts @@ -0,0 +1,224 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { + getRequestErrorsStatus, + HEALTHY, + NA, + RATIO_NA, + RequestHealth, + RequestType, + ThresholdStatus, +} from '../Health'; +import { RateHealth } from '../HealthAnnotation'; +import { ToleranceConfig } from '../ServerConfig'; +import { ErrorRatio, Rate, RequestTolerance } from './types'; +import { + checkExpr, + emptyRate, + getErrorCodeRate, + getRateHealthConfig, +} from './utils'; + +export const generateRateForTolerance = ( + tol: RequestTolerance, + requests: { [key: string]: { [key: string]: number } }, +) => { + for (const [protocol, req] of Object.entries(requests)) { + if (checkExpr(tol!.tolerance!.protocol, protocol)) { + for (const [code, value] of Object.entries(req)) { + if (!Object.keys(tol.requests).includes(protocol)) { + tol.requests[protocol] = emptyRate(); + } + (tol.requests[protocol] as Rate).requestRate += Number(value); + if (checkExpr(tol!.tolerance!.code, code)) { + (tol.requests[protocol] as Rate).errorRate += Number(value); + } + } + } + if (Object.keys(tol.requests).includes(protocol)) { + if ((tol.requests[protocol] as Rate).requestRate === 0) { + (tol.requests[protocol] as Rate).errorRatio = -1; + } else { + (tol.requests[protocol] as Rate).errorRatio = + (tol.requests[protocol] as Rate).errorRate / + (tol.requests[protocol] as Rate).requestRate; + } + } + } +}; + +// Aggregate the results +export const aggregate = ( + request: RequestType, + tolerances?: ToleranceConfig[], +): RequestTolerance[] => { + const result: RequestTolerance[] = []; + if (request && tolerances) { + for (const tol of Object.values(tolerances)) { + const newReqTol: RequestTolerance = { tolerance: tol, requests: {} }; + generateRateForTolerance(newReqTol, request); + result.push(newReqTol); + } + } + return result; +}; + +// Sum the inbound and outbound request for calculating the global status +export const sumRequests = ( + inbound: RequestType, + outbound: RequestType, +): RequestType => { + const result: RequestType = {}; + // init result with a deep clone of inbound + for (const [protocol, req] of Object.entries(inbound)) { + result[protocol] = {}; + for (const [code, rate] of Object.entries(req)) { + result[protocol][code] = rate; + } + } + for (const [protocol, req] of Object.entries(outbound)) { + if (!Object.keys(result).includes(protocol)) { + result[protocol] = {}; + } + for (const [code, rate] of Object.entries(req)) { + if (!Object.keys(result[protocol]).includes(code)) { + result[protocol][code] = 0; + } + result[protocol][code] += rate; + } + } + return result; +}; + +const getAggregate = ( + requests: RequestHealth, + conf: ToleranceConfig[], +): { + global: RequestTolerance[]; + inbound: RequestTolerance[]; + outbound: RequestTolerance[]; +} => { + // Get all tolerances where direction is inbound + const inboundTolerances = conf?.filter(tol => + checkExpr(tol.direction, 'inbound'), + ); + // Get all tolerances where direction is outbound + const outboundTolerances = conf?.filter(tol => + checkExpr(tol.direction, 'outbound'), + ); + + return { + global: aggregate(sumRequests(requests.inbound, requests.outbound), conf), + inbound: aggregate(requests.inbound, inboundTolerances), + outbound: aggregate(requests.outbound, outboundTolerances), + }; +}; + +export const calculateStatus = ( + requestTolerances: RequestTolerance[], +): { + status: ThresholdStatus; + protocol: string; + toleranceConfig?: ToleranceConfig; +} => { + const result: { + status: ThresholdStatus; + protocol: string; + toleranceConfig?: ToleranceConfig; + } = { + status: { + value: RATIO_NA, + status: NA, + }, + protocol: '', + toleranceConfig: undefined, + }; + + for (const reqTol of Object.values(requestTolerances)) { + for (const [protocol, rate] of Object.entries(reqTol.requests)) { + const tolerance = + reqTol.tolerance && checkExpr(reqTol!.tolerance!.protocol, protocol) + ? reqTol.tolerance + : undefined; + // Calculate the status for the tolerance provided + const auxStatus = getRequestErrorsStatus( + (rate as Rate).errorRatio, + tolerance, + ); + // Check the priority of the status + if (auxStatus.status.priority > result.status.status.priority) { + result.status = auxStatus; + result.protocol = protocol; + result.toleranceConfig = reqTol.tolerance; + } + } + } + return result; +}; + +export const calculateErrorRate = ( + ns: string, + name: string, + kind: string, + requests: RequestHealth, +): { errorRatio: ErrorRatio; config: ToleranceConfig[] } => { + // Get the first configuration that match with the case + const rateAnnotation = new RateHealth(requests.healthAnnotations); + const conf = + rateAnnotation.toleranceConfig || + getRateHealthConfig(ns, name, kind)?.tolerance; + + // Get aggregate + const status = getAggregate(requests, conf); + const globalStatus = calculateStatus(status.global); + + if (globalStatus.status.status !== HEALTHY) { + return { + errorRatio: { + global: globalStatus, + inbound: calculateStatus(status.inbound), + outbound: calculateStatus(status.outbound), + }, + config: conf, + }; + } + const result = { + errorRatio: { + global: globalStatus, + inbound: calculateStatus(status.inbound), + outbound: calculateStatus(status.outbound), + }, + config: conf, + }; + + // IF status is HEALTHY return errorCodes + if ( + result.errorRatio.inbound.status.status === HEALTHY || + result.errorRatio.outbound.status.status === HEALTHY + ) { + const valuesErrorCodes = getErrorCodeRate(requests); + result.errorRatio.inbound.status.value = + result.errorRatio.inbound.status.status === HEALTHY + ? valuesErrorCodes.inbound + : result.errorRatio.inbound.status.value; + result.errorRatio.outbound.status.value = + result.errorRatio.outbound.status.status === HEALTHY + ? valuesErrorCodes.outbound + : result.errorRatio.outbound.status.value; + } + // In that case we want to keep values + return result; +}; diff --git a/workspaces/kiali/plugins/kiali/src/types/ErrorRate/index.ts b/workspaces/kiali/plugins/kiali/src/types/ErrorRate/index.ts new file mode 100644 index 0000000000..bf6a615d7a --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/types/ErrorRate/index.ts @@ -0,0 +1,34 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { + aggregate, + calculateErrorRate, + calculateStatus, + sumRequests, +} from './ErrorRate'; +import { DEFAULTCONF, getRateHealthConfig } from './utils'; + +export { calculateErrorRate, DEFAULTCONF }; + +/* + +Export for testing + +*/ +export const getRateHealthConfigTEST = getRateHealthConfig; +export const calculateStatusTEST = calculateStatus; +export const aggregateTEST = aggregate; +export const sumRequestsTEST = sumRequests; diff --git a/workspaces/kiali/plugins/kiali/src/types/ErrorRate/types.ts b/workspaces/kiali/plugins/kiali/src/types/ErrorRate/types.ts new file mode 100644 index 0000000000..80b5579bb5 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/types/ErrorRate/types.ts @@ -0,0 +1,64 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { ThresholdStatus } from '../Health'; +import { ToleranceConfig } from '../ServerConfig'; + +/* +Error Ratio for: + - Global: Inbound and Outbound requests + - Inbound Requests + - Outbound Requests + */ +export interface ErrorRatio { + global: { + status: ThresholdStatus; + protocol?: string; + toleranceConfig?: ToleranceConfig; + }; + inbound: { + status: ThresholdStatus; + protocol?: string; + toleranceConfig?: ToleranceConfig; + }; + outbound: { + status: ThresholdStatus; + protocol?: string; + toleranceConfig?: ToleranceConfig; + }; +} + +/* +Rate Interface: +- The number of requests in t seconds requested by the user +- The number of requests with error code +- The ratio % of errors +*/ + +export interface Rate { + requestRate: number; + errorRate: number; + errorRatio: number; +} + +/* +RequestTolerance interface +- Tolerance configuration applied +- Requests error rate calculation for the tolerance Configuration where key is the protocol +*/ +export interface RequestTolerance { + tolerance: ToleranceConfig; + requests: { [key: string]: Rate | number }; +} diff --git a/workspaces/kiali/plugins/kiali/src/types/ErrorRate/utils.ts b/workspaces/kiali/plugins/kiali/src/types/ErrorRate/utils.ts new file mode 100644 index 0000000000..155de7a2c9 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/types/ErrorRate/utils.ts @@ -0,0 +1,171 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { serverConfig } from '../../config'; +import { ResponseDetail, Responses } from '../Graph'; +import { RequestHealth, RequestType } from '../Health'; +import { + HealthAnnotationConfig, + HealthAnnotationType, +} from '../HealthAnnotation'; +import { + RateHealthConfig, + RegexConfig, + ToleranceConfig, +} from '../ServerConfig'; +import { generateRateForTolerance } from './ErrorRate'; +import { Rate, RequestTolerance } from './types'; + +export const emptyRate = (): Rate => { + return { requestRate: 0, errorRate: 0, errorRatio: 0 }; +}; + +export const DEFAULTCONF = { + http: new RegExp('^[4|5]\\d\\d$'), + grpc: new RegExp('^[1-9]$|^1[0-6]$'), +}; + +export const requestsErrorRateCode = (requests: RequestType): number => { + const rate: Rate = emptyRate(); + for (const [protocol, req] of Object.entries(requests)) { + for (const [code, value] of Object.entries(req)) { + rate.requestRate += value; + if ( + Object.keys(DEFAULTCONF).includes(protocol) && + (DEFAULTCONF as any)[protocol].test(code) + ) { + rate.errorRate += value; + } + } + } + return rate.requestRate === 0 + ? -1 + : (rate.errorRate / rate.requestRate) * 100; +}; + +export const getHealthRateAnnotation = ( + config?: HealthAnnotationType, +): string | undefined => { + return config && HealthAnnotationConfig.HEALTH_RATE in config + ? config[HealthAnnotationConfig.HEALTH_RATE] + : undefined; +}; + +export const getErrorCodeRate = ( + requests: RequestHealth, +): { inbound: number; outbound: number } => { + return { + inbound: requestsErrorRateCode(requests.inbound), + outbound: requestsErrorRateCode(requests.outbound), + }; +}; + +/* +Cached this method to avoid use regexp in next calculations to improve performance + */ +export const checkExpr = ( + value: RegexConfig | undefined, + testV: string, +): boolean => { + let reg = value; + if (!reg) { + return true; + } + if (typeof value === 'string') { + reg = new RegExp(value); + } + return (reg as RegExp).test(testV); +}; + +// Cache the configuration to avoid multiple calls to regExp +export const configCache: { [key: string]: RateHealthConfig } = {}; + +export const getRateHealthConfig = ( + ns: string, + name: string, + kind: string, +): RateHealthConfig => { + const key = `${ns}_${kind}_${name}`; + // If we have the configuration cached then return it + if (configCache[key]) { + return configCache[key]; + } + if (serverConfig.healthConfig && serverConfig.healthConfig.rate) { + for (const rate of serverConfig.healthConfig.rate) { + if ( + checkExpr(rate.namespace, ns) && + checkExpr(rate.name, name) && + checkExpr(rate.kind, kind) + ) { + configCache[key] = rate; + return rate; + } + } + } + return serverConfig.healthConfig.rate[ + serverConfig.healthConfig.rate.length - 1 + ]; +}; + +/* +For Responses object like { "200": { flags: { "-": 1.2, "XXX": 3.1}, hosts: ...} } Transform to RequestType + +Return object like: {"http": { "200": 4.3}} +*/ +export const transformEdgeResponses = ( + requests: Responses, + protocol: string, +): RequestType => { + const prot: { [key: string]: number } = {}; + const result: RequestType = {}; + result[protocol] = prot; + for (const [code, responseDetail] of Object.entries(requests)) { + const percentRate = Object.values( + (responseDetail as ResponseDetail).flags, + ).reduce((acc, value) => String(Number(acc) + Number(value))); + result[protocol][code] = Number(percentRate); + } + + return result; +}; + +/* + For requests type like { "http": { "200": 3.2, "501": 2.3 } ...} and a Tolerance Configuration to apply calculate the RequestToleranceGraph[] + + Return an array object where each item is a type RequestToleranceGraph by tolerance configuration passed by parameter + + Sample: + + [{ + tolerance: TOLERANCE CONFIGURATION, + requests: {"http": 4.3} + }] + where this requests are the sum of rates where match the tolerance configuration. + +*/ +export const aggregate = ( + request: RequestType, + tolerances?: ToleranceConfig[], +): RequestTolerance[] => { + const result: RequestTolerance[] = []; + if (request && tolerances) { + for (const tol of Object.values(tolerances)) { + const newReqTol: RequestTolerance = { tolerance: tol, requests: {} }; + generateRateForTolerance(newReqTol, request); + result.push(newReqTol); + } + } + return result; +}; diff --git a/workspaces/kiali/plugins/kiali/src/types/Filters.ts b/workspaces/kiali/plugins/kiali/src/types/Filters.ts new file mode 100644 index 0000000000..9199bcadc2 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/types/Filters.ts @@ -0,0 +1,85 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export enum TextInputTypes { + text = 'text', + date = 'date', + datetimeLocal = 'datetime-local', + email = 'email', + month = 'month', + number = 'number', + password = 'password', + search = 'search', + tel = 'tel', + time = 'time', + url = 'url', +} + +// FilterValue maps a Patternfly property. Modify with care. +export interface FilterValue { + id: string; + title: string; +} + +export enum NonInputTypes { + typeAhead = 'typeahead', + select = 'select', + label = 'label', + nsLabel = 'nsLabel', +} + +export const AllFilterTypes = { + ...TextInputTypes, + ...NonInputTypes, +}; + +// FilterType maps a Patternfly property. Modify with care. +export interface FilterType { + category: string; // unique filter category name, should be suitable for display or URL query parameter + placeholder: string; + filterType: NonInputTypes | TextInputTypes; + action: string; + filterValues: FilterValue[]; + loader?: () => Promise; +} + +export interface RunnableFilter extends FilterType { + run: (item: T, filters: ActiveFiltersInfo) => boolean; +} + +export const FILTER_ACTION_APPEND = 'append'; +export const FILTER_ACTION_UPDATE = 'update'; + +export interface ActiveFilter { + category: string; + value: string; +} + +export type LabelOperation = 'and' | 'or'; +export const ID_LABEL_OPERATION = 'opLabel'; +export const DEFAULT_LABEL_OPERATION: LabelOperation = 'or'; + +export interface ActiveFiltersInfo { + filters: ActiveFilter[]; + op: LabelOperation; +} + +export interface ToggleType { + label: string; + name: string; + isChecked: boolean; +} + +export type ActiveTogglesInfo = Map; diff --git a/workspaces/kiali/plugins/kiali/src/types/GrafanaInfo.ts b/workspaces/kiali/plugins/kiali/src/types/GrafanaInfo.ts new file mode 100644 index 0000000000..ce77a06f1d --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/types/GrafanaInfo.ts @@ -0,0 +1,32 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { ExternalLink } from './Dashboards'; + +export const ISTIO_MESH_DASHBOARD = 'Istio Mesh Dashboard'; +export const ISTIO_CONTROL_PLANE_DASHBOARD = 'Istio Control Plane Dashboard'; +export const ISTIO_PERFORMANCE_DASHBOARD = 'Istio Performance Dashboard'; +export const ISTIO_WASM_EXTENSION_DASHBOARD = 'Istio Wasm Extension Dashboard'; + +export const ISTIO_DASHBOARDS: string[] = [ + ISTIO_MESH_DASHBOARD, + ISTIO_CONTROL_PLANE_DASHBOARD, + ISTIO_PERFORMANCE_DASHBOARD, + ISTIO_WASM_EXTENSION_DASHBOARD, +]; + +export interface GrafanaInfo { + externalLinks: ExternalLink[]; +} diff --git a/workspaces/kiali/plugins/kiali/src/types/Graph.ts b/workspaces/kiali/plugins/kiali/src/types/Graph.ts new file mode 100644 index 0000000000..5b6e0b9b0e --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/types/Graph.ts @@ -0,0 +1,638 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { AppenderString, DurationInSeconds, TimeInSeconds } from './Common'; +import { Health } from './Health'; +import { HealthAnnotationType } from './HealthAnnotation'; +import { Namespace } from './Namespace'; + +export interface Layout { + name: string; +} + +export const SUMMARY_PANEL_CHART_WIDTH = 250; +export type SummaryType = 'graph' | 'node' | 'edge' | 'box'; +export interface SummaryData { + isPF?: boolean; + summaryType: SummaryType; + summaryTarget: any; +} + +export enum Protocol { + GRPC = 'grpc', + HTTP = 'http', + TCP = 'tcp', +} + +export interface SummaryPanelPropType { + data: SummaryData; + duration: DurationInSeconds; + graphType: GraphType; + injectServiceNodes: boolean; + kiosk: string; + namespaces: Namespace[]; + queryTime: TimeInSeconds; + rateInterval: string; + step: number; + trafficRates: TrafficRate[]; +} + +export enum EdgeMode { + ALL = 'all', + NONE = 'none', + UNHEALTHY = 'unhealthy', +} + +export enum EdgeLabelMode { + RESPONSE_TIME_GROUP = 'responseTime', + RESPONSE_TIME_AVERAGE = 'avg', + RESPONSE_TIME_P50 = 'rt50', + RESPONSE_TIME_P95 = 'rt95', + RESPONSE_TIME_P99 = 'rt99', + THROUGHPUT_GROUP = 'throughput', + THROUGHPUT_REQUEST = 'throughputRequest', + THROUGHPUT_RESPONSE = 'throughputResponse', + TRAFFIC_DISTRIBUTION = 'trafficDistribution', + TRAFFIC_RATE = 'trafficRate', +} + +export const isResponseTimeMode = (mode: EdgeLabelMode): boolean => { + return ( + mode === EdgeLabelMode.RESPONSE_TIME_GROUP || + mode === EdgeLabelMode.RESPONSE_TIME_AVERAGE || + mode === EdgeLabelMode.RESPONSE_TIME_P50 || + mode === EdgeLabelMode.RESPONSE_TIME_P95 || + mode === EdgeLabelMode.RESPONSE_TIME_P99 + ); +}; + +export const isThroughputMode = (mode: EdgeLabelMode): boolean => { + return ( + mode === EdgeLabelMode.THROUGHPUT_GROUP || + mode === EdgeLabelMode.THROUGHPUT_REQUEST || + mode === EdgeLabelMode.THROUGHPUT_RESPONSE + ); +}; + +export enum RankMode { + RANK_BY_INBOUND_EDGES = 'inboundEdges', + RANK_BY_OUTBOUND_EDGES = 'outboundEdges', +} + +export type RankResult = { + // Number of discrete rankings, N for the current scoring. N in [0..100]. 0 indicates no active rankings. + upperBound: number; +}; + +export const numLabels = (modes: EdgeLabelMode[]): number => { + return modes.filter( + m => + m !== EdgeLabelMode.RESPONSE_TIME_GROUP && + m !== EdgeLabelMode.THROUGHPUT_GROUP, + ).length; +}; + +export enum TrafficRate { + GRPC_GROUP = 'grpc', + GRPC_RECEIVED = 'grpcReceived', // response_messages + GRPC_REQUEST = 'grpcRequest', + GRPC_SENT = 'grpcSent', // request_messages + GRPC_TOTAL = 'grpcTotal', // sent_bytes + received_bytes + HTTP_GROUP = 'http', + HTTP_REQUEST = 'httpRequest', + TCP_GROUP = 'tcp', + TCP_RECEIVED = 'tcpReceived', // received_bytes + TCP_SENT = 'tcpSent', // sent_bytes + TCP_TOTAL = 'tcpTotal', // sent_bytes + received_bytes +} + +export const DefaultTrafficRates: TrafficRate[] = [ + TrafficRate.GRPC_GROUP, + TrafficRate.GRPC_REQUEST, + TrafficRate.HTTP_GROUP, + TrafficRate.HTTP_REQUEST, + TrafficRate.TCP_GROUP, + TrafficRate.TCP_SENT, +]; + +export const isGrpcRate = (rate: TrafficRate): boolean => { + return ( + rate === TrafficRate.GRPC_GROUP || + rate === TrafficRate.GRPC_RECEIVED || + rate === TrafficRate.GRPC_REQUEST || + rate === TrafficRate.GRPC_SENT || + rate === TrafficRate.GRPC_TOTAL + ); +}; + +export const toGrpcRate = (rate: string): TrafficRate | undefined => { + switch (rate) { + case 'received': + return TrafficRate.GRPC_RECEIVED; + case 'requests': + case 'request': + return TrafficRate.GRPC_REQUEST; + case 'sent': + return TrafficRate.GRPC_SENT; + case 'total': + return TrafficRate.GRPC_TOTAL; + default: + return undefined; + } +}; + +export const isHttpRate = (rate: TrafficRate): boolean => { + return rate === TrafficRate.HTTP_GROUP || rate === TrafficRate.HTTP_REQUEST; +}; + +export const toHttpRate = (rate: string): TrafficRate | undefined => { + switch (rate) { + case 'requests': + case 'request': + return TrafficRate.HTTP_REQUEST; + default: + return undefined; + } +}; + +export const isTcpRate = (rate: TrafficRate): boolean => { + return ( + rate === TrafficRate.TCP_GROUP || + rate === TrafficRate.TCP_RECEIVED || + rate === TrafficRate.TCP_SENT || + rate === TrafficRate.TCP_TOTAL + ); +}; + +export const toTcpRate = (rate: string): TrafficRate | undefined => { + switch (rate) { + case 'received': + return TrafficRate.TCP_RECEIVED; + case 'sent': + return TrafficRate.TCP_SENT; + case 'total': + return TrafficRate.TCP_TOTAL; + default: + return undefined; + } +}; + +export enum GraphType { + APP = 'app', + SERVICE = 'service', + VERSIONED_APP = 'versionedApp', + WORKLOAD = 'workload', +} + +export enum BoxByType { + APP = 'app', + CLUSTER = 'cluster', + NAMESPACE = 'namespace', +} + +export enum NodeType { + AGGREGATE = 'aggregate', + APP = 'app', + BOX = 'box', + SERVICE = 'service', + UNKNOWN = 'unknown', + WORKLOAD = 'workload', +} + +export const CLUSTER_DEFAULT = 'Kubernetes'; // Istio default cluster, typically indicates a single-cluster env +export const UNKNOWN = 'unknown'; + +export interface NodeParamsType { + aggregate?: string; + aggregateValue?: string; + app: string; + namespace: Namespace; + nodeType: NodeType; + service: string; + version?: string; + workload: string; + cluster?: string; +} + +// This data is stored in the _global scratch area in the cy graph +// for use by code that needs access to it. +// We can add more props to this scratch data as the need arises. +export const CytoscapeGlobalScratchNamespace = '_global'; +export type CytoscapeGlobalScratchData = { + activeNamespaces: Namespace[]; + edgeLabels: EdgeLabelMode[]; + forceLabels: boolean; + graphType: GraphType; + homeCluster: string; + showOutOfMesh: boolean; + showSecurity: boolean; + showVirtualServices: boolean; + trafficRates: TrafficRate[]; +}; + +export interface CytoscapeBaseEvent { + summaryType: SummaryType; // what the summary panel should show + summaryTarget: any; // the cytoscape element that was the target of the event +} + +export interface GraphEvent extends CytoscapeBaseEvent { + isPF?: boolean; +} + +// Graph Structures + +type PercentageOfTrafficByFlag = { + [flag: string]: string; +}; + +type PercentageOfTrafficByHost = { + [host: string]: string; +}; + +export type ResponseDetail = { + flags: PercentageOfTrafficByFlag; + hosts: PercentageOfTrafficByHost; +}; + +export type Responses = { + [responseCode: string]: ResponseDetail; +}; + +type ValidProtocols = 'http' | 'grpc' | 'tcp'; + +export type ProtocolNoTraffic = { + protocol: ValidProtocols; +}; + +export type ProtocolTrafficHttp = { + protocol: 'http'; + rates: { + http: string; + httpPercentErr?: string; + }; + responses: Responses; +}; + +export type ProtocolTrafficGrpc = { + protocol: 'grpc'; + rates: { + grpc: string; + grpcPercentErr?: string; + }; + responses: Responses; +}; + +export type ProtocolTrafficTcp = { + protocol: 'tcp'; + rates: { + tcp: string; + }; + responses: Responses; +}; + +export type ProtocolWithTraffic = + | ProtocolTrafficHttp + | ProtocolTrafficTcp + | ProtocolTrafficGrpc; +export type ProtocolTraffic = ProtocolWithTraffic | ProtocolNoTraffic; + +export const hasProtocolTraffic = ( + protocolTraffic: ProtocolTraffic, +): protocolTraffic is ProtocolWithTraffic => { + return ( + (protocolTraffic as ProtocolWithTraffic).rates !== undefined && + (protocolTraffic as ProtocolWithTraffic).responses !== undefined + ); +}; + +export const prettyProtocol = (protocol: ValidProtocols): string => { + switch (protocol.toLocaleLowerCase('en-US')) { + case 'http': + return 'HTTP'; + case 'tcp': + return 'TCP'; + default: + return 'gRPC'; + } +}; + +export interface DestService { + cluster: string; + namespace: string; + name: string; +} + +export interface DestService { + cluster: string; + namespace: string; + name: string; +} + +export interface SEInfo { + hosts: string[]; + location: string; + namespace: string; // namespace represents where the ServiceEntry object is defined and not necessarily the namespace of the node. +} + +export interface WEInfo { + name: string; +} + +export interface GraphRequestsHealth { + inbound: { [idx: string]: { [idx: string]: number } }; + outbound: { [idx: string]: { [idx: string]: number } }; + healthAnnotations: { [idx: string]: string }; +} + +export interface GraphWorkloadStatus { + name: string; + desiredReplicas: number; + currentReplicas: number; + availableReplicas: number; + syncedProxies: number; +} + +export interface GraphNodeAppHealth { + workloadStatuses: GraphWorkloadStatus[]; + requests: GraphRequestsHealth; +} + +export interface GraphNodeWorkloadHealth { + workloadStatus: GraphWorkloadStatus; + requests: GraphRequestsHealth; +} + +export interface GraphNodeServiceHealth { + requests: GraphRequestsHealth; +} + +export type GraphNodeHealthData = + | GraphNodeAppHealth + | GraphNodeWorkloadHealth + | GraphNodeServiceHealth + | [] + | null; + +// Node data expected from server +export interface GraphNodeData { + // required + cluster: string; + id: string; + namespace: string; + nodeType: NodeType; + + // optional + aggregate?: string; + aggregateValue?: string; + app?: string; + destServices?: DestService[]; + hasCB?: boolean; + hasFaultInjection?: boolean; + hasHealthConfig?: HealthAnnotationType; + hasMirroring?: boolean; + hasRequestRouting?: boolean; + hasRequestTimeout?: boolean; + hasTCPTrafficShifting?: boolean; + hasTrafficShifting?: boolean; + hasVS?: { + hostnames?: string[]; + }; + hasWorkloadEntry?: WEInfo[]; + healthData?: GraphNodeHealthData; + isBox?: string; + isDead?: boolean; + isIdle?: boolean; + isInaccessible?: boolean; + isGateway?: { + ingressInfo?: { + hostnames?: string[]; + }; + egressInfo?: { + hostnames?: string[]; + }; + gatewayAPIInfo?: { + hostnames?: string[]; + }; + }; + isK8sGatewayAPI?: boolean; + isMisconfigured?: string; + isOutOfMesh?: boolean; + isOutside?: boolean; + isRoot?: boolean; + isServiceEntry?: SEInfo; + labels?: { [key: string]: string }; + parent?: string; + service?: string; + traffic?: ProtocolTraffic[]; + version?: string; + workload?: string; +} + +// Edge data expected from server +export interface GraphEdgeData { + id: string; + source: string; + target: string; + destPrincipal?: string; + responseTime?: number; + sourcePrincipal?: string; + traffic?: ProtocolTraffic; + isMTLS?: number; +} + +export interface GraphElementsQuery { + appenders?: AppenderString; + boxBy?: string; + duration?: string; + graphType?: GraphType; + includeIdleEdges?: boolean; + injectServiceNodes?: boolean; + namespaces?: string; + queryTime?: string; + rateGrpc?: string; + rateHttp?: string; + rateTcp?: string; + responseTime?: string; + throughputType?: string; + waypoints?: boolean; +} + +export interface GraphNodeWrapper { + data: GraphNodeData; +} + +export interface GraphEdgeWrapper { + data: GraphEdgeData; +} + +export interface GraphElements { + nodes?: GraphNodeWrapper[]; + edges?: GraphEdgeWrapper[]; +} + +export interface GraphDefinition { + duration: number; + elements: GraphElements; + graphType: GraphType; + timestamp: number; +} + +// Node data after decorating at fetch-time (what is mainly used by ui code) +export interface DecoratedGraphNodeData extends GraphNodeData { + grpcIn: number; + grpcInErr: number; + grpcInNoResponse: number; + grpcOut: number; + health: Health; + healthStatus: string; // status name + httpIn: number; + httpIn3xx: number; + httpIn4xx: number; + httpIn5xx: number; + httpInNoResponse: number; + httpOut: number; + tcpIn: number; + tcpOut: number; + + traffic: never; + + // computed values... + + // true if has istio namespace + isIstio?: boolean; + // assigned when node ranking is enabled. relative importance from most to least important [1..100]. Multiple nodes can have same rank. + rank?: number; +} + +// Edge data after decorating at fetch-time (what is mainly used by ui code) +export interface DecoratedGraphEdgeData extends GraphEdgeData { + grpc: number; + grpcErr: number; + grpcNoResponse: number; + grpcPercentErr: number; + grpcPercentReq: number; + http: number; + http3xx: number; + http4xx: number; + http5xx: number; + httpNoResponse: number; + httpPercentErr: number; + httpPercentReq: number; + protocol: ValidProtocols; + responses: Responses; + tcp: number; + + // During the decoration process, we make non-optional some number attributes (giving them a default value) + // computed, true if traffic rate > 0 + hasTraffic?: boolean; + // Default value -1 + isMTLS: number; + // Default value NaN + responseTime: number; + // Default value NaN + throughput: number; + + // computed values... + + // assigned when graph is updated, the edge health depends on the node health, traffic, and config + healthStatus?: string; // status name +} + +export interface DecoratedGraphNodeWrapper { + data: DecoratedGraphNodeData; +} + +export interface DecoratedGraphEdgeWrapper { + data: DecoratedGraphEdgeData; +} + +export interface DecoratedGraphElements { + nodes?: DecoratedGraphNodeWrapper[]; + edges?: DecoratedGraphEdgeWrapper[]; +} + +export const EdgeAttr = { + destPrincipal: 'destPrincipal', + grpc: 'grpc', + grpcErr: 'grpcErr', + grpcNoResponse: 'grpcNoResponse', + grpcPercentErr: 'grpcPercentErr', + grpcPercentReq: 'grpcPercentReq', + hasTraffic: 'hasTraffic', + healthStatus: 'healthStatus', + http: 'http', + http3xx: 'http3xx', + http4xx: 'http4xx', + http5xx: 'http5xx', + httpNoResponse: 'httpNoResponse', + httpPercentErr: 'httpPercentErr', + httpPercentReq: 'httpPercentReq', + id: 'id', + isMTLS: 'isMTLS', + protocol: 'protocol', + responses: 'responses', + responseTime: 'responseTime', + sourcePrincipal: 'sourcePrincipal', + tcp: 'tcp', + throughput: 'throughput', +}; + +export const NodeAttr = { + aggregate: 'aggregate', + aggregateValue: 'aggregateValue', + app: 'app', + cluster: 'cluster', + destServices: 'destServices', + grpcIn: 'grpcIn', + grpcInErr: 'grpcInErr', + grpcInNoResponse: 'grpcInNoResponse', + grpcOut: 'grpcOut', + hasCB: 'hasCB', + hasFaultInjection: 'hasFaultInjection', + hasMirroring: 'hasMirroring', + hasRequestRouting: 'hasRequestRouting', + hasRequestTimeout: 'hasRequestTimeout', + hasTCPTrafficShifting: 'hasTCPTrafficShifting', + hasTrafficShifting: 'hasTrafficShifting', + hasVS: 'hasVS', + hasWorkloadEntry: 'hasWorkloadEntry', + health: 'health', + healthStatus: 'healthStatus', + httpIn: 'httpIn', + httpIn3xx: 'httpIn3xx', + httpIn4xx: 'httpIn4xx', + httpIn5xx: 'httpIn5xx', + httpInNoResponse: 'httpInNoResponse', + httpOut: 'httpOut', + id: 'id', + isBox: 'isBox', + isDead: 'isDead', + isIdle: 'isIdle', + isInaccessible: 'isInaccessible', + isIstio: 'isIstio', + isMisconfigured: 'isMisconfigured', + isOutOfMesh: 'isOutOfMesh', + isOutside: 'isOutside', + isRoot: 'isRoot', + isServiceEntry: 'isServiceEntry', + namespace: 'namespace', + nodeType: 'nodeType', + rank: 'rank', + service: 'service', + tcpIn: 'tcpIn', + tcpOut: 'tcpOut', + version: 'version', + workload: 'workload', +}; diff --git a/workspaces/kiali/plugins/kiali/src/types/Health.ts b/workspaces/kiali/plugins/kiali/src/types/Health.ts new file mode 100644 index 0000000000..a0a515bc51 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/types/Health.ts @@ -0,0 +1,662 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { + CheckCircleIcon, + ExclamationCircleIcon, + ExclamationTriangleIcon, + MinusCircleIcon, + UnknownIcon, +} from '@patternfly/react-icons'; +import { SVGIconProps } from '@patternfly/react-icons/dist/js/createIcon'; + +import { PFColors } from '../components/Pf/PfColors'; +import { serverConfig } from '../config'; +import { getName } from '../utils/RateIntervals'; +import { calculateErrorRate } from './ErrorRate'; +import { HealthAnnotationType } from './HealthAnnotation'; +import { ToleranceConfig } from './ServerConfig'; + +interface HealthConfig { + items: HealthItem[]; + statusConfig?: HealthItemConfig; +} + +export interface HealthItem { + status: Status; + title: string; + text?: string; + children?: HealthSubItem[]; +} + +export interface HealthItemConfig { + status: Status; + title: string; + text?: string; + value: number; + threshold?: ToleranceConfig; +} + +export interface HealthSubItem { + status: Status; + text: string; + value?: number; +} + +export interface WorkloadStatus { + name: string; + desiredReplicas: number; + currentReplicas: number; + availableReplicas: number; + syncedProxies: number; +} + +export interface AppHealthResponse { + workloadStatuses: WorkloadStatus[]; + requests: RequestHealth; +} + +export interface WorkloadHealthResponse { + workloadStatus: WorkloadStatus; + requests: RequestHealth; +} + +export const TRAFFICSTATUS = 'Traffic Status'; + +const createTrafficTitle = (time: string) => { + return `${TRAFFICSTATUS} (Last ${time})`; +}; + +/* +RequestType interface +- where the structure is type {: {:value ...} ...} + +Example: { "http": {"200": 2, "404": 1 ...} ... } +*/ +export interface RequestType { + [key: string]: { [key: string]: number }; +} +export interface RequestHealth { + inbound: RequestType; + outbound: RequestType; + healthAnnotations: HealthAnnotationType; +} + +export interface Status { + name: string; + color: string; + priority: number; + icon: React.ComponentClass; + class: string; +} + +export interface ProxyStatus { + CDS: string; + EDS: string; + LDS: string; + RDS: string; +} + +export const FAILURE: Status = { + name: 'Failure', + color: PFColors.Danger, + priority: 4, + icon: ExclamationCircleIcon, + class: 'icon-failure', +}; +export const DEGRADED: Status = { + name: 'Degraded', + color: PFColors.Warning, + priority: 3, + icon: ExclamationTriangleIcon, + class: 'icon-degraded', +}; +export const NOT_READY: Status = { + name: 'Not Ready', + color: PFColors.InfoBackground, + priority: 2, + icon: MinusCircleIcon, + class: 'icon-idle', +}; +export const HEALTHY: Status = { + name: 'Healthy', + color: PFColors.Success, + priority: 1, + icon: CheckCircleIcon, + class: 'icon-healthy', +}; +export const NA: Status = { + name: 'No health information', + color: PFColors.Color200, + priority: 0, + icon: UnknownIcon, + class: 'icon-na', +}; + +interface Thresholds { + degraded: number; + failure: number; + unit: string; +} + +export interface ThresholdStatus { + value: number; + status: Status; + violation?: string; +} + +export const POD_STATUS = 'Pod Status'; + +// Use -1 rather than NaN to allow straigthforward comparison +export const RATIO_NA = -1; + +export const ratioCheck = ( + availableReplicas: number, + currentReplicas: number, + desiredReplicas: number, + syncedProxies: number, +): Status => { + /* + NOT READY STATE + */ + // User has scaled down a workload, then desired replicas will be 0 and it's not an error condition + if (desiredReplicas === 0) { + return NOT_READY; + } + + /* + DEGRADED STATE + */ + // When a workload has available pods but less than desired defined by user it should be marked as degraded + if ( + desiredReplicas > 0 && + currentReplicas > 0 && + availableReplicas > 0 && + (currentReplicas < desiredReplicas || availableReplicas < desiredReplicas) + ) { + return DEGRADED; + } + + /* + FAILURE STATE + */ + // When availableReplicas is 0 but user has marked a desired > 0, that's an error condition + if (desiredReplicas > 0 && availableReplicas === 0) { + return FAILURE; + } + + // Pending Pods means problems + if ( + desiredReplicas === availableReplicas && + availableReplicas !== currentReplicas + ) { + return FAILURE; + } + + // When there are proxies that are not sync, degrade + if (syncedProxies >= 0 && syncedProxies < desiredReplicas) { + return DEGRADED; + } + + /* + HEALTHY STATE + */ + if ( + desiredReplicas === currentReplicas && + currentReplicas === availableReplicas && + availableReplicas === desiredReplicas + ) { + return HEALTHY; + } + + // Other combination could mean a degraded situation + return DEGRADED; +}; + +export const proxyStatusMessage = ( + syncedProxies: number, + desiredReplicas: number, +): string => { + if (syncedProxies < desiredReplicas) { + const unsynced = desiredReplicas - syncedProxies; + return ` (${unsynced}${unsynced !== 1 ? ' proxies' : ' proxy'} unsynced)`; + } + return ''; +}; + +export const isProxyStatusComponentSynced = ( + componentStatus: string, +): boolean => { + return componentStatus === 'Synced'; +}; + +export const isProxyStatusSynced = (status: ProxyStatus): boolean => { + return ( + isProxyStatusComponentSynced(status.CDS) && + isProxyStatusComponentSynced(status.EDS) && + isProxyStatusComponentSynced(status.LDS) && + isProxyStatusComponentSynced(status.RDS) + ); +}; + +export const mergeStatus = (s1: Status, s2: Status): Status => { + return s1.priority > s2.priority ? s1 : s2; +}; + +export const ascendingThresholdCheck = ( + value: number, + thresholds: Thresholds, +): ThresholdStatus => { + if (value > 0) { + if (value >= thresholds.failure) { + return { + value: value, + status: FAILURE, + violation: `${value.toFixed(2)}${thresholds.unit}>=${ + thresholds.failure + }${thresholds.unit}`, + }; + } else if (value >= thresholds.degraded) { + return { + value: value, + status: DEGRADED, + violation: `${value.toFixed(2)}${thresholds.unit}>=${ + thresholds.degraded + }${thresholds.unit}`, + }; + } + } + + return { value: value, status: HEALTHY }; +}; + +export const getRequestErrorsStatus = ( + ratio: number, + tolerance?: ToleranceConfig, +): ThresholdStatus => { + if (tolerance && ratio >= 0) { + const thresholds = { + degraded: tolerance.degraded, + failure: tolerance.failure, + unit: '%', + }; + return ascendingThresholdCheck(100 * ratio, thresholds); + } + + return { + value: RATIO_NA, + status: NA, + }; +}; + +export const getRequestErrorsSubItem = ( + thresholdStatus: ThresholdStatus, + prefix: string, +): HealthSubItem => { + return { + status: thresholdStatus.status, + text: `${prefix}:${ + thresholdStatus.status === NA + ? 'No requests' + : `${thresholdStatus.value.toFixed(2)}%` + }`, + value: thresholdStatus.status === NA ? 0 : thresholdStatus.value, + }; +}; + +export abstract class Health { + constructor(public health: HealthConfig) {} + + getGlobalStatus(): Status { + return this.health.items + .map(i => i.status) + .reduce((prev, cur) => mergeStatus(prev, cur), NA); + } + + getStatusConfig(): ToleranceConfig | undefined { + // Check if the config applied is the kiali defaults one + const tolConfDefault = + serverConfig.healthConfig.rate[serverConfig.healthConfig.rate.length - 1] + ?.tolerance; + if (tolConfDefault) { + for (const tol of tolConfDefault) { + // Check if the tolerance applied is one of kiali defaults + if ( + this.health.statusConfig && + tol === this.health.statusConfig.threshold + ) { + // In the case is a kiali's default return undefined + return undefined; + } + } + } + // Otherwise return the threshold configuration that kiali used to calculate the status + return this.health.statusConfig?.threshold; + } + + getTrafficStatus(): HealthItem | undefined { + for (let i = 0; i < this.health.items.length; i++) { + const item = this.health.items[i]; + if (item.title.startsWith(TRAFFICSTATUS)) { + return item; + } + } + return undefined; + } + + getWorkloadStatus(): HealthItem | undefined { + for (let i = 0; i < this.health.items.length; i++) { + const item = this.health.items[i]; + if (item.title.startsWith(POD_STATUS)) { + return item; + } + } + return undefined; + } +} + +interface HealthContext { + rateInterval: number; + hasSidecar: boolean; + hasAmbient: boolean; +} + +export class ServiceHealth extends Health { + public static fromJson = ( + ns: string, + srv: string, + json: any, + ctx: HealthContext, + ) => new ServiceHealth(ns, srv, json.requests, ctx); + + private static computeItems( + ns: string, + srv: string, + requests: RequestHealth, + ctx: HealthContext, + ): HealthConfig { + const items: HealthItem[] = []; + let statusConfig: HealthItemConfig | undefined = undefined; + if (ctx.hasSidecar) { + // Request errors + const reqError = calculateErrorRate(ns, srv, 'service', requests); + const reqErrorsText = + reqError.errorRatio.global.status.status === NA + ? 'No requests' + : `${reqError.errorRatio.global.status.value.toFixed(2)}%`; + const item: HealthItem = { + title: createTrafficTitle( + getName(ctx.rateInterval).toLocaleLowerCase('en-US'), + ), + status: reqError.errorRatio.global.status.status, + children: [ + { + text: `Inbound: ${reqErrorsText}`, + status: reqError.errorRatio.global.status.status, + value: reqError.errorRatio.global.status.value, + }, + ], + }; + items.push(item); + statusConfig = { + title: createTrafficTitle( + getName(ctx.rateInterval).toLocaleLowerCase('en-US'), + ), + status: reqError.errorRatio.global.status.status, + threshold: reqError.errorRatio.global.toleranceConfig, + value: reqError.errorRatio.global.status.value, + }; + } else { + items.push({ + title: TRAFFICSTATUS, + status: NA, + text: 'No Istio sidecar', + }); + } + return { items, statusConfig }; + } + + constructor( + ns: string, + srv: string, + public requests: RequestHealth, + ctx: HealthContext, + ) { + super(ServiceHealth.computeItems(ns, srv, requests, ctx)); + } +} + +export class AppHealth extends Health { + public static fromJson = ( + ns: string, + app: string, + json: any, + ctx: HealthContext, + ) => new AppHealth(ns, app, json.workloadStatuses, json.requests, ctx); + + private static computeItems( + ns: string, + app: string, + workloadStatuses: WorkloadStatus[], + requests: RequestHealth, + ctx: HealthContext, + ): HealthConfig { + const items: HealthItem[] = []; + let statusConfig: HealthItemConfig | undefined = undefined; + { + // Pods + const children: HealthSubItem[] = workloadStatuses.map(d => { + const status = ratioCheck( + d.availableReplicas, + d.currentReplicas, + d.desiredReplicas, + d.syncedProxies, + ); + let proxyMessage = ''; + if (d.syncedProxies >= 0) { + proxyMessage = proxyStatusMessage(d.syncedProxies, d.desiredReplicas); + } + return { + text: `${d.name}: ${d.availableReplicas} / ${d.desiredReplicas}${proxyMessage}`, + status: status, + }; + }); + const podsStatus = children + .map(i => i.status) + .reduce((prev, cur) => mergeStatus(prev, cur), NA); + const item: HealthItem = { + title: POD_STATUS, + status: podsStatus, + children: children, + }; + items.push(item); + } + + // Request errors + if (ctx.hasSidecar) { + const reqError = calculateErrorRate(ns, app, 'app', requests); + const reqIn = reqError.errorRatio.inbound.status; + const reqOut = reqError.errorRatio.outbound.status; + const both = mergeStatus(reqIn.status, reqOut.status); + const item: HealthItem = { + title: createTrafficTitle( + getName(ctx.rateInterval).toLocaleLowerCase('en-US'), + ), + status: both, + children: [ + getRequestErrorsSubItem(reqIn, 'Inbound'), + getRequestErrorsSubItem(reqOut, 'Outbound'), + ], + }; + statusConfig = { + title: createTrafficTitle( + getName(ctx.rateInterval).toLocaleLowerCase('en-US'), + ), + status: reqError.errorRatio.global.status.status, + threshold: reqError.errorRatio.global.toleranceConfig, + value: reqError.errorRatio.global.status.value, + }; + items.push(item); + } + return { items, statusConfig }; + } + + constructor( + ns: string, + app: string, + workloadStatuses: WorkloadStatus[], + public requests: RequestHealth, + ctx: HealthContext, + ) { + super(AppHealth.computeItems(ns, app, workloadStatuses, requests, ctx)); + } +} + +export class WorkloadHealth extends Health { + public static fromJson = ( + ns: string, + workload: string, + json: any, + ctx: HealthContext, + ) => + new WorkloadHealth(ns, workload, json.workloadStatus, json.requests, ctx); + + private static computeItems( + ns: string, + workload: string, + workloadStatus: WorkloadStatus, + requests: RequestHealth, + ctx: HealthContext, + ): HealthConfig { + const items: HealthItem[] = []; + let statusConfig: HealthItemConfig | undefined = undefined; + if (workloadStatus) { + // Pods + const podsStatus = ratioCheck( + workloadStatus.availableReplicas, + workloadStatus.currentReplicas, + workloadStatus.desiredReplicas, + workloadStatus.syncedProxies, + ); + const item: HealthItem = { + title: POD_STATUS, + status: podsStatus, + children: [ + { + text: `${workloadStatus.name}: ${workloadStatus.availableReplicas} / ${workloadStatus.desiredReplicas}`, + status: podsStatus, + }, + ], + }; + if (podsStatus !== NA && podsStatus !== HEALTHY) { + item.children = [ + { + status: podsStatus, + text: `${workloadStatus.desiredReplicas} desired pod${ + workloadStatus.desiredReplicas !== 1 ? 's' : '' + }`, + }, + { + status: podsStatus, + text: `${workloadStatus.currentReplicas} current pod${ + workloadStatus.currentReplicas !== 1 ? 's' : '' + }`, + }, + { + status: podsStatus, + text: `${workloadStatus.availableReplicas} available pod${ + workloadStatus.availableReplicas !== 1 ? 's' : '' + }`, + }, + ]; + + if (workloadStatus.syncedProxies >= 0) { + item.children.push({ + status: podsStatus, + text: `${workloadStatus.syncedProxies} synced prox${ + workloadStatus.availableReplicas !== 1 ? 'ies' : 'y' + }`, + }); + } + } + items.push(item); + } + // Request errors + if (ctx.hasSidecar) { + const reqError = calculateErrorRate(ns, workload, 'workload', requests); + const reqIn = reqError.errorRatio.inbound.status; + const reqOut = reqError.errorRatio.outbound.status; + const both = mergeStatus(reqIn.status, reqOut.status); + const item: HealthItem = { + title: createTrafficTitle( + getName(ctx.rateInterval).toLocaleLowerCase('en-US'), + ), + status: both, + children: [ + getRequestErrorsSubItem(reqIn, 'Inbound'), + getRequestErrorsSubItem(reqOut, 'Outbound'), + ], + }; + items.push(item); + + statusConfig = { + title: createTrafficTitle( + getName(ctx.rateInterval).toLocaleLowerCase('en-US'), + ), + status: reqError.errorRatio.global.status.status, + threshold: reqError.errorRatio.global.toleranceConfig, + value: reqError.errorRatio.global.status.value, + }; + } + return { items, statusConfig }; + } + + constructor( + ns: string, + workload: string, + workloadStatus: WorkloadStatus, + public requests: RequestHealth, + ctx: HealthContext, + ) { + super( + WorkloadHealth.computeItems(ns, workload, workloadStatus, requests, ctx), + ); + } +} + +export const healthNotAvailable = (): AppHealth => { + return new AppHealth( + '', + '', + [], + { inbound: {}, outbound: {}, healthAnnotations: {} }, + { rateInterval: 60, hasSidecar: true, hasAmbient: false }, + ); +}; + +export type NamespaceAppHealth = { [app: string]: AppHealth }; +export type NamespaceServiceHealth = { [service: string]: ServiceHealth }; +export type NamespaceWorkloadHealth = { [workload: string]: WorkloadHealth }; + +export type WithAppHealth = T & { health: AppHealth }; +export type WithServiceHealth = T & { health: ServiceHealth }; +export type WithWorkloadHealth = T & { health: WorkloadHealth }; + +export type WithHealth = + | WithAppHealth + | WithServiceHealth + | WithWorkloadHealth; +// @ts-expect-error +export const hasHealth = (val: T): val is WithHealth => !!val.health; diff --git a/workspaces/kiali/plugins/kiali/src/types/HealthAnnotation.ts b/workspaces/kiali/plugins/kiali/src/types/HealthAnnotation.ts new file mode 100644 index 0000000000..b4ad95a4ac --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/types/HealthAnnotation.ts @@ -0,0 +1,102 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { ToleranceConfig } from './ServerConfig'; + +export enum HealthAnnotationConfig { + HEALTH_RATE = 'health.kiali.io/rate', +} + +/* +Health Annotation +- Map key-value with annotations related with health configuration +*/ +export type HealthAnnotationType = { [key: string]: string }; + +export class HealthAnnotation { + healthAnnotations: HealthAnnotationType; + + constructor(annotations: HealthAnnotationType) { + this.healthAnnotations = annotations; + } +} + +const isNumeric = (val: string): boolean => { + return !isNaN(Number(val)); +}; + +export class RateHealth extends HealthAnnotation { + annotation: string; + isValid: boolean; + toleranceConfig?: ToleranceConfig[]; + + constructor(annotations: HealthAnnotationType) { + super(annotations); + this.annotation = annotations[HealthAnnotationConfig.HEALTH_RATE] || ''; + if (this.annotation && this.annotation.length > 0) { + this.isValid = this.validate(); + this.toleranceConfig = this.isValid + ? this.getToleranceConfig() + : undefined; + } else { + this.isValid = false; + } + } + + validate = () => { + return !this.annotation + .split(';') + .some(annotate => this.isNotValidAnnotation(annotate)); + }; + + getToleranceConfig = (): ToleranceConfig[] => { + const configs: ToleranceConfig[] = []; + if (this.isValid) { + this.annotation.split(';').forEach(annotate => { + const splits = annotate.split(','); + configs.push({ + code: this.convertRegex(splits[0], true), + degraded: Number(splits[1]), + failure: Number(splits[2]), + protocol: this.convertRegex(splits[3]), + direction: this.convertRegex(splits[4]), + }); + }); + } + return configs; + }; + + private convertRegex = (str: string, code: boolean = false): RegExp => { + if (code) { + return new RegExp(str.replace(/x|X/g, '\\d')); + } + return new RegExp(str); + }; + + private isNotValidAnnotation = (annotation: string): boolean => { + const splits = annotation.split(','); + // Be sure annotation type 4xx,10,20,htpp,inbound + if (splits.length !== 5) { + return true; + } + // validate Thresholds are numbers and degraded is lower than failure + if (!(isNumeric(splits[1]) && isNumeric(splits[2]))) { + return true; + } + const degraded = Number(splits[1]); + const failure = Number(splits[2]); + return degraded > failure ? true : false; + }; +} diff --git a/workspaces/kiali/plugins/kiali/src/types/IstioConfigDetails.ts b/workspaces/kiali/plugins/kiali/src/types/IstioConfigDetails.ts new file mode 100644 index 0000000000..9be39b57aa --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/types/IstioConfigDetails.ts @@ -0,0 +1,136 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { AceOptions } from 'react-ace/types'; + +import { + AuthorizationPolicy, + DestinationRule, + EnvoyFilter, + Gateway, + HelpMessage, + IstioObject, + K8sGateway, + K8sGRPCRoute, + K8sHTTPRoute, + K8sReferenceGrant, + K8sTCPRoute, + K8sTLSRoute, + ObjectValidation, + PeerAuthentication, + References, + RequestAuthentication, + ServiceEntry, + Sidecar, + Telemetry, + VirtualService, + WasmPlugin, + WorkloadEntry, + WorkloadGroup, +} from './IstioObjects'; +import { Namespace } from './Namespace'; +import { ResourcePermissions } from './Permissions'; + +export interface IstioConfigId { + namespace: string; + objectType: string; + object: string; +} + +export interface IstioConfigDetails { + authorizationPolicy: AuthorizationPolicy; + cluster?: string; + destinationRule: DestinationRule; + envoyFilter: EnvoyFilter; + gateway: Gateway; + help?: HelpMessage[]; + k8sGRPCRoute: K8sGRPCRoute; + k8sGateway: K8sGateway; + k8sHTTPRoute: K8sHTTPRoute; + k8sReferenceGrant: K8sReferenceGrant; + k8sTCPRoute: K8sTCPRoute; + k8sTLSRoute: K8sTLSRoute; + namespace: Namespace; + peerAuthentication: PeerAuthentication; + permissions: ResourcePermissions; + references?: References; + requestAuthentication: RequestAuthentication; + serviceEntry: ServiceEntry; + sidecar: Sidecar; + telemetry: Telemetry; + validation: ObjectValidation; + virtualService: VirtualService; + wasmPlugin: WasmPlugin; + workloadEntry: WorkloadEntry; + workloadGroup: WorkloadGroup; +} + +export const aceOptions: AceOptions = { + showPrintMargin: false, + autoScrollEditorIntoView: true, +}; + +export const safeDumpOptions = { + styles: { + '!!null': 'canonical', // dump null as ~ + }, +}; + +export interface ParsedSearch { + type?: string; + name?: string; +} + +export interface IstioPermissions { + [namespace: string]: { + [type: string]: ResourcePermissions; + }; +} + +// Helper function to compare two IstioConfigDetails iterating over its IstioObject children. +// When an IstioObject child has changed (resourceVersion is different) it will return a tuple with +// boolean: true if resourceVersion has changed in newer version +// string: IstioObject child +// string: resourceVersion of newer version +export const compareResourceVersion = ( + oldIstioConfigDetails, + newIstioConfigDetails: IstioConfigDetails, +): [boolean, string, string] => { + const keys = Object.keys(oldIstioConfigDetails); + for (let i = 0; i < keys.length; i++) { + const key = keys[i]; + const oldIstioObject = oldIstioConfigDetails[key] as IstioObject; + const newIstioObject = newIstioConfigDetails[key] as IstioObject; + if ( + oldIstioObject && + newIstioObject && + oldIstioObject.metadata && + newIstioObject.metadata && + oldIstioObject.metadata.resourceVersion && + newIstioObject.metadata.resourceVersion && + oldIstioObject.metadata.resourceVersion !== + newIstioObject.metadata.resourceVersion + ) { + return [true, key, newIstioObject.metadata.resourceVersion]; + } + } + return [false, '', '']; +}; + +export interface IstioConfigDetailsQuery { + help?: boolean; + validate?: boolean; +} diff --git a/workspaces/kiali/plugins/kiali/src/types/IstioConfigList.ts b/workspaces/kiali/plugins/kiali/src/types/IstioConfigList.ts new file mode 100644 index 0000000000..fae5a21577 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/types/IstioConfigList.ts @@ -0,0 +1,560 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { + AuthorizationPolicy, + DestinationRule, + EnvoyFilter, + Gateway, + K8sGateway, + K8sGRPCRoute, + K8sHTTPRoute, + K8sReferenceGrant, + K8sTCPRoute, + K8sTLSRoute, + ObjectValidation, + PeerAuthentication, + RequestAuthentication, + ServiceEntry, + Sidecar, + Telemetry, + Validations, + VirtualService, + WasmPlugin, + WorkloadEntry, + WorkloadGroup, +} from './IstioObjects'; +import { Namespace } from './Namespace'; +import { ResourcePermissions } from './Permissions'; + +export interface IstioConfigItem { + authorizationPolicy?: AuthorizationPolicy; + cluster?: string; + creationTimestamp?: string; + destinationRule?: DestinationRule; + envoyFilter?: EnvoyFilter; + gateway?: Gateway; + k8sGRPCRoute?: K8sGRPCRoute; + k8sGateway?: K8sGateway; + k8sHTTPRoute?: K8sHTTPRoute; + k8sReferenceGrant?: K8sReferenceGrant; + k8sTCPRoute?: K8sTCPRoute; + k8sTLSRoute?: K8sTLSRoute; + name: string; + namespace: string; + peerAuthentication?: PeerAuthentication; + requestAuthentication?: RequestAuthentication; + resourceVersion?: string; + serviceEntry?: ServiceEntry; + sidecar?: Sidecar; + telemetry?: Telemetry; + type: string; + validation?: ObjectValidation; + virtualService?: VirtualService; + wasmPlugin?: WasmPlugin; + workloadEntry?: WorkloadEntry; + workloadGroup?: WorkloadGroup; +} + +export declare type IstioConfigsMap = { [key: string]: IstioConfigList }; + +export interface IstioConfigList { + namespace: Namespace; + gateways: Gateway[]; + k8sGateways: K8sGateway[]; + k8sHTTPRoutes: K8sHTTPRoute[]; + virtualServices: VirtualService[]; + destinationRules: DestinationRule[]; + serviceEntries: ServiceEntry[]; + workloadEntries: WorkloadEntry[]; + workloadGroups: WorkloadGroup[]; + envoyFilters: EnvoyFilter[]; + authorizationPolicies: AuthorizationPolicy[]; + sidecars: Sidecar[]; + wasmPlugins: WasmPlugin[]; + telemetries: Telemetry[]; + peerAuthentications: PeerAuthentication[]; + requestAuthentications: RequestAuthentication[]; + permissions: { [key: string]: ResourcePermissions }; + validations: Validations; +} + +export interface IstioConfigListQuery { + labelSelector?: string; + objects?: string; + validate?: boolean; + workloadSelector?: string; +} + +export const dicIstioType = { + Sidecar: 'sidecars', + Gateway: 'gateways', + K8sGateway: 'k8sgateways', + K8sHTTPRoute: 'k8shttproutes', + VirtualService: 'virtualservices', + DestinationRule: 'destinationrules', + ServiceEntry: 'serviceentries', + AuthorizationPolicy: 'authorizationpolicies', + PeerAuthentication: 'peerauthentications', + RequestAuthentication: 'requestauthentications', + WorkloadEntry: 'workloadentries', + WorkloadGroup: 'workloadgroups', + EnvoyFilter: 'envoyfilters', + WasmPlugin: 'wasmPlugins', + Telemetry: 'telemetries', + + gateways: 'Gateway', + k8sgateways: 'K8sGateway', + k8shttproutes: 'K8sHTTPRoute', + virtualservices: 'VirtualService', + destinationrules: 'DestinationRule', + serviceentries: 'ServiceEntry', + authorizationpolicies: 'AuthorizationPolicy', + sidecars: 'Sidecar', + peerauthentications: 'PeerAuthentication', + requestauthentications: 'RequestAuthentication', + workloadentries: 'WorkloadEntry', + workloadgroups: 'WorkloadGroup', + envoyfilters: 'EnvoyFilter', + telemetries: 'Telemetry', + wasmplugins: 'WasmPlugin', + + gateway: 'Gateway', + k8sgateway: 'K8sGateway', + k8shttproute: 'K8sHTTPRoute', + virtualservice: 'VirtualService', + destinationrule: 'DestinationRule', + serviceentry: 'ServiceEntry', + authorizationpolicy: 'AuthorizationPolicy', + sidecar: 'Sidecar', + wasmplugin: 'WasmPlugin', + telemetry: 'Telemetry', + peerauthentication: 'PeerAuthentication', + requestauthentication: 'RequestAuthentication', + workloadentry: 'WorkloadEntry', + workloadgroup: 'WorkloadGroup', + envoyfilter: 'EnvoyFilter', +}; + +export function validationKey(name: string, namespace?: string): string { + if (namespace !== undefined) { + return `${name}.${namespace}`; + } + return name; +} + +const includeName = (name: string, names: string[]) => { + for (let i = 0; i < names.length; i++) { + if (name.includes(names[i])) { + return true; + } + } + return false; +}; + +export const filterByName = ( + unfiltered: IstioConfigList, + names: string[], +): IstioConfigList => { + if (names && names.length === 0) { + return unfiltered; + } + return { + namespace: unfiltered.namespace, + gateways: unfiltered.gateways.filter(gw => + includeName(gw.metadata.name, names), + ), + k8sGateways: unfiltered.k8sGateways.filter(gw => + includeName(gw.metadata.name, names), + ), + k8sHTTPRoutes: unfiltered.k8sHTTPRoutes.filter(route => + includeName(route.metadata.name, names), + ), + virtualServices: unfiltered.virtualServices.filter(vs => + includeName(vs.metadata.name, names), + ), + destinationRules: unfiltered.destinationRules.filter(dr => + includeName(dr.metadata.name, names), + ), + serviceEntries: unfiltered.serviceEntries.filter(se => + includeName(se.metadata.name, names), + ), + authorizationPolicies: unfiltered.authorizationPolicies.filter(rc => + includeName(rc.metadata.name, names), + ), + sidecars: unfiltered.sidecars.filter(sc => + includeName(sc.metadata.name, names), + ), + peerAuthentications: unfiltered.peerAuthentications.filter(pa => + includeName(pa.metadata.name, names), + ), + requestAuthentications: unfiltered.requestAuthentications.filter(ra => + includeName(ra.metadata.name, names), + ), + workloadEntries: unfiltered.workloadEntries.filter(we => + includeName(we.metadata.name, names), + ), + workloadGroups: unfiltered.workloadGroups.filter(wg => + includeName(wg.metadata.name, names), + ), + envoyFilters: unfiltered.envoyFilters.filter(ef => + includeName(ef.metadata.name, names), + ), + wasmPlugins: unfiltered.wasmPlugins.filter(wp => + includeName(wp.metadata.name, names), + ), + telemetries: unfiltered.telemetries.filter(tm => + includeName(tm.metadata.name, names), + ), + validations: unfiltered.validations, + permissions: unfiltered.permissions, + }; +}; + +export const filterByConfigValidation = ( + unfiltered: IstioConfigItem[], + configFilters: string[], +): IstioConfigItem[] => { + if (configFilters && configFilters.length === 0) { + return unfiltered; + } + const filtered: IstioConfigItem[] = []; + + const filterByValid = configFilters.indexOf('Valid') > -1; + const filterByNotValid = configFilters.indexOf('Not Valid') > -1; + const filterByNotValidated = configFilters.indexOf('Not Validated') > -1; + const filterByWarning = configFilters.indexOf('Warning') > -1; + if ( + filterByValid && + filterByNotValid && + filterByNotValidated && + filterByWarning + ) { + return unfiltered; + } + + unfiltered.forEach(item => { + if (filterByValid && item.validation && item.validation.valid) { + filtered.push(item); + } + if (filterByNotValid && item.validation && !item.validation.valid) { + filtered.push(item); + } + if (filterByNotValidated && !item.validation) { + filtered.push(item); + } + if ( + filterByWarning && + item.validation && + item.validation.checks.filter(i => i.severity === 'warning').length > 0 + ) { + filtered.push(item); + } + }); + return filtered; +}; + +export const toIstioItems = ( + istioConfigList: IstioConfigList, + cluster?: string, +): IstioConfigItem[] => { + const istioItems: IstioConfigItem[] = []; + + const hasValidations = (type: string, name: string, namespace: string) => + istioConfigList.validations[type] && + istioConfigList.validations[type][validationKey(name, namespace)]; + + const nonItems = ['validations', 'permissions', 'namespace', 'cluster']; + + Object.keys(istioConfigList).forEach(field => { + if (nonItems.indexOf(field) > -1) { + // These items do not belong to the IstioConfigItem[] + return; + } + // @ts-expect-error + const typeNameProto = dicIstioType[field.toLocaleLowerCase('en-US')]; // ex. serviceEntries -> ServiceEntry + const typeName = typeNameProto?.toLocaleLowerCase('en-US'); // ex. ServiceEntry -> serviceentry + const entryName = + typeNameProto?.charAt(0).toLocaleLowerCase('en-US') + + typeNameProto?.slice(1); + // @ts-expect-error + let entries = istioConfigList[field]; + if (entries && !(entries instanceof Array)) { + // VirtualServices, DestinationRules + entries = entries.items; + } + + if (!entries) { + return; + } + // @ts-expect-error + entries.forEach(entry => { + const item = { + namespace: istioConfigList.namespace.name, + cluster: cluster, + type: typeName, + name: entry.metadata.name, + creationTimestamp: entry.metadata.creationTimestamp, + resourceVersion: entry.metadata.resourceVersion, + validation: hasValidations( + typeName, + entry.metadata.name, + entry.metadata.namespace, + ) + ? istioConfigList.validations[typeName][ + validationKey(entry.metadata.name, entry.metadata.namespace) + ] + : undefined, + }; + // @ts-expect-error + item[entryName] = entry; + istioItems.push(item); + }); + }); + + return istioItems; +}; + +export const vsToIstioItems = ( + vss: VirtualService[], + validations: Validations, + cluster?: string, +): IstioConfigItem[] => { + const istioItems: IstioConfigItem[] = []; + const hasValidations = (vKey: string) => + validations.virtualservice && validations.virtualservice[vKey]; + + const typeNameProto = dicIstioType.virtualservices; // ex. serviceEntries -> ServiceEntry + const typeName = typeNameProto.toLocaleLowerCase('en-US'); // ex. ServiceEntry -> serviceentry + const entryName = + typeNameProto.charAt(0).toLocaleLowerCase('en-US') + typeNameProto.slice(1); + + vss.forEach(vs => { + const vKey = validationKey(vs.metadata.name, vs.metadata.namespace); + const item = { + cluster: cluster, + namespace: vs.metadata.namespace || '', + type: typeName, + name: vs.metadata.name, + creationTimestamp: vs.metadata.creationTimestamp, + resourceVersion: vs.metadata.resourceVersion, + validation: hasValidations(vKey) + ? validations.virtualservice[vKey] + : undefined, + }; + // @ts-expect-error + item[entryName] = vs; + istioItems.push(item); + }); + return istioItems; +}; + +export const drToIstioItems = ( + drs: DestinationRule[], + validations: Validations, + cluster?: string, +): IstioConfigItem[] => { + const istioItems: IstioConfigItem[] = []; + const hasValidations = (vKey: string) => + validations.destinationrule && validations.destinationrule[vKey]; + + const typeNameProto = dicIstioType.destinationrules; // ex. serviceEntries -> ServiceEntry + const typeName = typeNameProto.toLocaleLowerCase('en-US'); // ex. ServiceEntry -> serviceentry + const entryName = + typeNameProto.charAt(0).toLocaleLowerCase('en-US') + typeNameProto.slice(1); + + drs.forEach(dr => { + const vKey = validationKey(dr.metadata.name, dr.metadata.namespace); + const item = { + cluster: cluster, + namespace: dr.metadata.namespace || '', + type: typeName, + name: dr.metadata.name, + creationTimestamp: dr.metadata.creationTimestamp, + resourceVersion: dr.metadata.resourceVersion, + validation: hasValidations(vKey) + ? validations.destinationrule[vKey] + : undefined, + }; + // @ts-expect-error + item[entryName] = dr; + istioItems.push(item); + }); + return istioItems; +}; + +export const gwToIstioItems = ( + gws: Gateway[], + vss: VirtualService[], + validations: Validations, + cluster?: string, +): IstioConfigItem[] => { + const istioItems: IstioConfigItem[] = []; + const hasValidations = (vKey: string) => + validations.gateway && validations.gateway[vKey]; + const vsGateways = new Set(); + + const typeNameProto = dicIstioType.gateways; // ex. serviceEntries -> ServiceEntry + const typeName = typeNameProto.toLocaleLowerCase('en-US'); // ex. ServiceEntry -> serviceentry + const entryName = + typeNameProto.charAt(0).toLocaleLowerCase('en-US') + typeNameProto.slice(1); + + vss.forEach(vs => { + vs.spec.gateways?.forEach(vsGatewayName => { + if (vsGatewayName.indexOf('/') < 0) { + vsGateways.add(`${vs.metadata.namespace}/${vsGatewayName}`); + } else { + vsGateways.add(vsGatewayName); + } + }); + }); + + gws.forEach(gw => { + if (vsGateways.has(`${gw.metadata.namespace}/${gw.metadata.name}`)) { + const vKey = validationKey(gw.metadata.name, gw.metadata.namespace); + const item = { + cluster: cluster, + namespace: gw.metadata.namespace || '', + type: typeName, + name: gw.metadata.name, + creationTimestamp: gw.metadata.creationTimestamp, + resourceVersion: gw.metadata.resourceVersion, + validation: hasValidations(vKey) + ? validations.gateway[vKey] + : undefined, + }; + // @ts-expect-error + item[entryName] = gw; + istioItems.push(item); + } + }); + return istioItems; +}; + +export const k8sGwToIstioItems = ( + gws: K8sGateway[], + k8srs: K8sHTTPRoute[], + validations: Validations, + cluster?: string, +): IstioConfigItem[] => { + const istioItems: IstioConfigItem[] = []; + const hasValidations = (vKey: string) => + validations.k8sgateway && validations.k8sgateway[vKey]; + const k8sGateways = new Set(); + + const typeNameProto = dicIstioType.k8sgateways; // ex. serviceEntries -> ServiceEntry + const typeName = typeNameProto.toLocaleLowerCase('en-US'); // ex. ServiceEntry -> serviceentry + const entryName = + typeNameProto.charAt(0).toLocaleLowerCase('en-US') + typeNameProto.slice(1); + + k8srs.forEach(k8sr => { + k8sr.spec.parentRefs?.forEach(parentRef => { + if (!parentRef.namespace) { + k8sGateways.add(`${k8sr.metadata.namespace}/${parentRef.name}`); + } else { + k8sGateways.add(`${parentRef.namespace}/${parentRef.name}`); + } + }); + }); + + gws.forEach(gw => { + if (k8sGateways.has(`${gw.metadata.namespace}/${gw.metadata.name}`)) { + const vKey = validationKey(gw.metadata.name, gw.metadata.namespace); + const item = { + cluster: cluster, + namespace: gw.metadata.namespace || '', + type: typeName, + name: gw.metadata.name, + creationTimestamp: gw.metadata.creationTimestamp, + resourceVersion: gw.metadata.resourceVersion, + validation: hasValidations(vKey) + ? validations.k8sgateway[vKey] + : undefined, + }; + // @ts-expect-error + item[entryName] = gw; + istioItems.push(item); + } + }); + return istioItems; +}; + +export const seToIstioItems = ( + see: ServiceEntry[], + validations: Validations, + cluster?: string, +): IstioConfigItem[] => { + const istioItems: IstioConfigItem[] = []; + const hasValidations = (vKey: string) => + validations.serviceentry && validations.serviceentry[vKey]; + + const typeNameProto = dicIstioType.serviceentries; // ex. serviceEntries -> ServiceEntry + const typeName = typeNameProto.toLocaleLowerCase('en-US'); // ex. ServiceEntry -> serviceentry + const entryName = + typeNameProto.charAt(0).toLocaleLowerCase('en-US') + typeNameProto.slice(1); + + see.forEach(se => { + const vKey = validationKey(se.metadata.name, se.metadata.namespace); + const item = { + cluster: cluster, + namespace: se.metadata.namespace || '', + type: typeName, + name: se.metadata.name, + creationTimestamp: se.metadata.creationTimestamp, + resourceVersion: se.metadata.resourceVersion, + validation: hasValidations(vKey) + ? validations.serviceentry[vKey] + : undefined, + }; + // @ts-expect-error + item[entryName] = se; + istioItems.push(item); + }); + return istioItems; +}; + +export const k8sHTTPRouteToIstioItems = ( + routes: K8sHTTPRoute[], + validations: Validations, + cluster?: string, +): IstioConfigItem[] => { + const istioItems: IstioConfigItem[] = []; + const hasValidations = (vKey: string) => + validations.k8shttproute && validations.k8shttproute[vKey]; + + const typeNameProto = dicIstioType.k8shttproutes; // ex. serviceEntries -> ServiceEntry + const typeName = typeNameProto.toLocaleLowerCase('en-US'); // ex. ServiceEntry -> serviceentry + const entryName = + typeNameProto.charAt(0).toLocaleLowerCase('en-US') + typeNameProto.slice(1); + + routes.forEach(route => { + const vKey = validationKey(route.metadata.name, route.metadata.namespace); + const item = { + cluster: cluster, + namespace: route.metadata.namespace || '', + type: typeName, + name: route.metadata.name, + creationTimestamp: route.metadata.creationTimestamp, + resourceVersion: route.metadata.resourceVersion, + validation: hasValidations(vKey) + ? validations.k8shttproute[vKey] + : undefined, + }; + // @ts-expect-error + item[entryName] = route; + istioItems.push(item); + }); + return istioItems; +}; diff --git a/workspaces/kiali/plugins/kiali/src/types/IstioObjects.ts b/workspaces/kiali/plugins/kiali/src/types/IstioObjects.ts new file mode 100644 index 0000000000..18b3526b4d --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/types/IstioObjects.ts @@ -0,0 +1,1485 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { + KIALI_RELATED_LABEL, + KIALI_WIZARD_LABEL, +} from '../components/IstioWizards/WizardActions'; +import { PFColorVal } from '../components/Pf/PfColors'; +import { TimeInSeconds } from './Common'; +import { ProxyStatus } from './Health'; +import { Namespace } from './Namespace'; +import { ServicePort } from './ServiceInfo'; + +// Common types + +export interface HelpMessage { + objectField: string; + message: string; +} + +export interface K8sInitializer { + name?: string; +} + +export interface K8sStatus { + status?: string; + message?: string; + reason?: string; +} + +export interface K8sInitializers { + pending?: K8sInitializer[]; + result?: K8sStatus; +} + +export interface K8sMetadata { + name: string; + generateName?: string; + namespace?: string; + selfLink?: string; + uid?: string; + resourceVersion?: string; + generation?: number; + creationTimestamp?: string; + deletionTimestamp?: string; + deletionGracePeriodSeconds?: number; + labels?: { [key: string]: string }; + annotations?: { [key: string]: string }; + ownerReferences?: K8sOwnerReference[]; + initializers?: K8sInitializers[]; + finalizers?: string[]; + clusterName?: string; +} + +export interface IstioObject { + kind?: string; + apiVersion?: string; + metadata: K8sMetadata; + status?: IstioStatus; +} + +export interface IstioStatus { + validationMessages?: ValidationMessage[]; + conditions?: StatusCondition[]; +} + +export interface ValidationMessage { + description?: string; + documentationUrl: string; + level?: string; + type: ValidationMessageType; +} + +export interface StatusCondition { + type: string; + status: boolean; + message: string; +} + +export interface ValidationMessageType { + code: string; +} + +// validations are grouped per 'objectType' first in the first map and 'name' in the inner map +export type Validations = { + [key1: string]: { [key2: string]: ObjectValidation }; +}; + +export enum ValidationTypes { + Error = 'error', + Warning = 'warning', + Correct = 'correct', + Info = 'info', +} + +export const IstioLevelToSeverity = { + UNKNOWN: ValidationTypes.Info, + ERROR: ValidationTypes.Error, + WARNING: ValidationTypes.Warning, + INFO: ValidationTypes.Info, +}; + +export interface ObjectValidation { + name: string; + objectType: string; + valid: boolean; + checks: ObjectCheck[]; + references?: ObjectReference[]; +} + +export interface ObjectCheck { + code?: string; + message: string; + severity: ValidationTypes; + path: string; +} + +export interface ObjectReference { + objectType: string; + name: string; + namespace: string; +} + +export interface PodReference { + name: string; + kind: string; +} + +export interface References { + objectReferences: ObjectReference[]; + serviceReferences: ServiceReference[]; + workloadReferences: WorkloadReference[]; +} + +export interface ServiceReference { + name: string; + namespace: string; +} + +export interface ValidationStatus { + errors: number; + objectCount?: number; + warnings: number; +} + +export interface WorkloadReference { + name: string; + namespace: string; +} + +export interface ContainerInfo { + name: string; + image: string; + isProxy: boolean; + isReady: boolean; +} + +// 1.6 +export interface Port { + number: number; + protocol: string; + name: string; + targetPort?: number; +} + +export interface Pod { + name: string; + annotations?: { [key: string]: string }; + labels?: { [key: string]: string }; + createdAt: string; + createdBy: PodReference[]; + containers?: ContainerInfo[]; + istioContainers?: ContainerInfo[]; + istioInitContainers?: ContainerInfo[]; + serviceAccountName: string; + status: string; + statusMessage?: string; + statusReason?: string; + appLabel: boolean; + versionLabel: boolean; + proxyStatus?: ProxyStatus; +} + +// models Engarde Istio proxy AccessLog +export type AccessLog = { + // Authority is the request authority header %REQ(:AUTHORITY)% + authority: string; + // BytesReceived in response to the request %BYTES_RECEIVED% + bytes_received: string; + // BytesSent as part of the request body %BYTES_SENT% + bytes_sent: string; + // Duration of the request %DURATION% + duration: string; + // ForwardedFor is the X-Forwarded-For header value %REQ(FORWARDED-FOR)% + forwarded_for: string; + // Method is the HTTP method %REQ(:METHOD)% + method: string; + // Protocol can either be HTTP or TCP %PROTOCOL% + protocol: string; + // RequestId is the envoy generated X-REQUEST-ID header "%REQ(X-REQUEST-ID)%" + request_id: string; + // ResponseFlags provide any additional details about the response or connection, if any. %RESPONSE_FLAGS% + response_flags: string; + // StatusCode is the response status code %RESPONSE_CODE% + status_code: string; + // TcpServiceTime is the time the tcp request took + tcp_service_time: string; + // Timestamp is the Start Time %START_TIME% + timestamp: string; + // UpstreamService is the upstream host the request is intended for %UPSTREAM_HOST% + upstream_service: string; + // UpstreamServiceTime is the time taken to reach target host %RESP(X-ENVOY-UPSTREAM-SERVICE-TIME)% + upstream_service_time: string; + // UpstreamCluster is the upstream envoy cluster being reached %UPSTREAM_CLUSTER% + upstream_cluster: string; + // UpstreamLocal is the local address of the upstream connection %UPSTREAM_LOCAL_ADDRESS% + upstream_local: string; + // DownstreamLocal is the local address of the downstream connection %DOWNSTREAM_LOCAL_ADDRESS% + downstream_local: string; + // DownstreamRemote is the remote address of the downstream connection %DOWNSTREAM_REMOTE_ADDRESS% + downstream_remote: string; + // RequestedServer is the String value set on ssl connection socket for Server Name Indication (SNI) %REQUESTED_SERVER_NAME% + requested_server: string; + // RouteName is the name of the VirtualService route which matched this request %ROUTE_NAME% + route_name: string; + // UpstreamFailureReason is the upstream transport failure reason %UPSTREAM_TRANSPORT_FAILURE_REASON% + upstream_failure_reason: string; + // UriParam is the params field of the request path + uri_param: string; + // UriPath is the base request path + uri_path: string; + // UserAgent is the request User Agent field %REQ(USER-AGENT)%" + user_agent: string; + // The following fields are unused/ignored + // + // MixerStatus is the dynamic metadata information for the mixer status %DYNAMIC_METADATA(mixer:status)% + // mixer_status: string; + // OriginalMessage is the original raw log line. + // original_message: string; + // ParseError provides a string value if a parse error occured. + // parse_error: string; +}; + +export type LogEntry = { + accessLog?: AccessLog; + color?: PFColorVal; + message: string; + severity: string; + timestamp: string; + timestampUnix: TimeInSeconds; +}; + +export interface PodLogs { + entries: LogEntry[]; + linesTruncated?: boolean; +} + +export interface PodLogsQuery { + container?: string; + duration?: string; + isProxy?: boolean; + maxLines?: number; + sinceTime?: number; +} + +export interface LogLevelQuery { + level: string; +} + +export interface EnvoyProxyDump { + configDump?: EnvoyConfigDump; + bootstrap?: BootstrapSummary; + clusters?: ClusterSummary[]; + listeners?: ListenerSummary[]; + routes?: RouteSummary[]; +} + +export interface EnvoyConfigDump { + configs: any[]; +} + +export type EnvoySummary = ClusterSummary | RouteSummary | ListenerSummary; + +export interface ClusterSummary { + service_fqdn: Host; + port: number; + subset: string; + direction: string; + type: number; + destination_rule: string; +} + +export interface ListenerSummary { + address: string; + port: number; + match: string; + destination: string; +} + +export interface RouteSummary { + name: string; + domains: Host; + match: string; + virtual_service: string; +} + +export interface BootstrapSummary { + bootstrap: any; +} + +export interface Service { + name: string; + createdAt: string; + resourceVersion: string; + namespace: Namespace; + labels?: { [key: string]: string }; + type: string; + ip: string; + ports?: ServicePort[]; +} + +export interface Host { + service: string; + namespace: string; + cluster?: string; +} + +export interface IstioService { + name?: string; + namespace?: string; + domain?: string; + service?: string; + labels?: { [key: string]: string }; +} + +// 1.6 +export interface L4MatchAttributes { + destinationSubnets?: string[]; + port?: number; + sourceLabels?: { [key: string]: string }; + gateways?: string[]; + sourceName?: string; +} + +// 1.6 +export interface TLSMatchAttributes { + sniHosts: string[]; + destinationSubnets?: string[]; + port?: number; + sourceLabels?: { [key: string]: string }; + gateways?: string[]; + sourceName?: string; +} + +// 1.6 +export interface StringMatch { + exact?: string; + prefix?: string; + regex?: string; +} + +// 1.6 +export interface HeaderOperations { + set?: { [key: string]: string }; + add?: { [key: string]: string }; + remove?: string[]; +} + +// 1.6 +export interface Headers { + request?: HeaderOperations; + response?: HeaderOperations; +} + +// 1.6 +export interface HTTPRouteDestination { + destination: Destination; + weight?: number; + headers?: Headers; +} + +// 1.6 +export interface RouteDestination { + destination: Destination; + weight?: number; +} + +// 1.6 +export interface HTTPRedirect { + uri?: string; + authority?: string; + redirectCode?: number; +} + +// 1.6 +export interface Delegate { + name?: string; + namespace?: string; +} + +// 1.6 +export interface HTTPRewrite { + uri?: string; + authority?: string; +} + +// 1.6 +export interface HTTPRetry { + attempts: number; + perTryTimeout?: string; + retryOn?: string; + retryRemoteLocalities?: boolean; +} + +// 1.6 +export interface HTTPFaultInjection { + delay?: Delay; + abort?: Abort; +} + +// 1.6 +export interface Percent { + value: number; +} + +// 1.6 +export interface Delay { + fixedDelay: string; + percentage?: Percent; +} + +// 1.6 +export interface Abort { + httpStatus: number; + percentage?: Percent; +} + +// 1.6 +export interface CorsPolicy { + allowOrigin?: StringMatch[]; + allowMethods?: string[]; + allowHeaders?: string[]; + exposeHeaders?: string[]; + maxAge?: string; + allowCredentials?: string; +} + +// Destination Rule + +export interface HTTPCookie { + name: string; + path?: string; + ttl: string; +} + +// 1.6 +export interface ConsistentHashLB { + httpHeaderName?: string | null; + httpCookie?: HTTPCookie | null; + useSourceIp?: boolean | null; + httpQueryParameterName?: string | null; + minimumRingSize?: number; +} + +// 1.6 +export interface Distribute { + from?: string; + to?: { [key: string]: number }; +} + +// 1.6 +export interface Failover { + from?: string; + to?: string; +} + +// 1.6 +export interface LocalityLoadBalancerSetting { + distribute?: Distribute[]; + failover?: Failover[]; + enabled?: boolean; +} + +// 1.6 +export interface LoadBalancerSettings { + simple?: string | null; + consistentHash?: ConsistentHashLB | null; + localityLbSetting?: LocalityLoadBalancerSetting | null; +} + +// 1.6 +export interface TcpKeepalive { + probes?: number; + time?: string; + interval?: string; +} + +// 1.6 +export interface ConnectionPoolSettingsTCPSettings { + maxConnections?: number; + connectTimeout?: string; + tcpKeepalive?: TcpKeepalive; +} + +// 1.6 +export interface ConnectionPoolSettingsHTTPSettings { + http1MaxPendingRequests?: number; + http2MaxRequests?: number; + maxRequestsPerConnection?: number; + maxRetries?: number; + idleTimeout?: string; + h2UpgradePolicy?: string; +} + +// 1.6 +export interface ConnectionPoolSettings { + tcp?: ConnectionPoolSettingsTCPSettings; + http?: ConnectionPoolSettingsHTTPSettings; +} + +// 1.6 +export interface OutlierDetection { + consecutiveErrors?: number; + consecutive5xxErrors?: number; + interval?: string; + baseEjectionTime?: string; + maxEjectionPercent?: number; + minHealthPercent?: number; +} + +// 1.6 +export interface ClientTLSSettings { + mode: string; + clientCertificate?: string | null; + privateKey?: string | null; + caCertificates?: string | null; + subjectAltNames?: string[] | null; + sni?: string | null; +} + +// 1.6 +export interface PortTrafficPolicy { + port?: PortSelector; + loadBalancer?: LoadBalancerSettings; + connectionPool?: ConnectionPoolSettings; + outlierDetection?: OutlierDetection; + tls?: ClientTLSSettings; +} + +// 1.6 +export interface TrafficPolicy { + loadBalancer?: LoadBalancerSettings | null; + connectionPool?: ConnectionPoolSettings; + outlierDetection?: OutlierDetection; + tls?: ClientTLSSettings | null; + portLevelSettings?: PortTrafficPolicy[]; +} + +// 1.6 +export interface Subset { + name: string; + labels?: { [key: string]: string }; + trafficPolicy?: TrafficPolicy; +} + +// 1.6 +export interface DestinationRuleSpec { + host?: string; + trafficPolicy?: TrafficPolicy | null; + subsets?: Subset[]; + exportTo?: string[]; +} + +// 1.6 +export interface DestinationRule extends IstioObject { + spec: DestinationRuleSpec; +} + +export class DestinationRuleC implements DestinationRule { + metadata: K8sMetadata = { name: '' }; + spec: DestinationRuleSpec = {}; + + constructor(dr: DestinationRule) { + Object.assign(this, dr); + } + + static fromDrArray(drs: DestinationRule[]) { + return drs.map(item => new DestinationRuleC(item)); + } + + hasPeerAuthentication(): string { + if ( + !!this.metadata && + !!this.metadata.annotations && + this.metadata.annotations[KIALI_RELATED_LABEL] !== undefined + ) { + const anno = this.metadata.annotations[KIALI_RELATED_LABEL]; + const parts = anno.split('/'); + if (parts.length > 1) { + return parts[1]; + } + } + return ''; + } +} + +// Virtual Service + +// 1.6 +export interface PortSelector { + name?: string; + number: number; +} + +// 1.6 +export interface Destination { + host: string; + subset?: string; + port?: PortSelector; +} + +// 1.6 +export interface HTTPMatchRequest { + name?: string; + uri?: StringMatch; + scheme?: StringMatch; + method?: StringMatch; + authority?: StringMatch; + headers?: { [key: string]: StringMatch }; + port?: PortSelector; + sourceLabels?: { [key: string]: string }; + gateways?: string[]; + queryParams?: { [key: string]: StringMatch }; + ignoreUriCase?: boolean; + withoutHeaders?: { [key: string]: StringMatch }; + sourceNamespace?: string; +} + +// 1.6 +export interface HTTPRoute { + name?: string; + match?: HTTPMatchRequest[]; + route?: HTTPRouteDestination[]; + redirect?: HTTPRedirect; + delegate?: Delegate; + rewrite?: HTTPRewrite; + timeout?: string; + retries?: HTTPRetry; + fault?: HTTPFaultInjection; + mirror?: Destination; + mirrorPercentage?: Percent; + corsPolicy?: CorsPolicy; + headers?: Headers; +} + +// 1.6 +export interface TCPRoute { + match?: L4MatchAttributes[]; + route?: RouteDestination[]; +} + +// 1.6 +export interface TLSRoute { + match?: TLSMatchAttributes[]; + route?: RouteDestination[]; +} + +// 1.6 +export interface VirtualServiceSpec { + hosts?: string[]; + gateways?: string[] | null; + http?: HTTPRoute[]; + tls?: TLSRoute[]; + tcp?: TCPRoute[]; + exportTo?: string[] | null; +} + +// 1.6 +export interface VirtualService extends IstioObject { + spec: VirtualServiceSpec; +} + +export function getWizardUpdateLabel( + vs: VirtualService | VirtualService[] | null, + k8sr: K8sHTTPRoute | K8sHTTPRoute[] | null, +) { + let label = getVirtualServiceUpdateLabel(vs); + if (label === '') { + label = getK8sHTTPRouteUpdateLabel(k8sr); + } + return label; +} + +export function getVirtualServiceUpdateLabel( + vs: VirtualService | VirtualService[] | null, +) { + if (!vs) { + return ''; + } + + let virtualService: VirtualService | null = null; + if ('length' in vs) { + if (vs.length === 1) { + virtualService = vs[0]; + } + } else { + virtualService = vs; + } + + if ( + virtualService && + virtualService.metadata.labels && + virtualService.metadata.labels[KIALI_WIZARD_LABEL] + ) { + return virtualService.metadata.labels[KIALI_WIZARD_LABEL]; + } + return ''; +} + +export function getK8sHTTPRouteUpdateLabel( + k8sr: K8sHTTPRoute | K8sHTTPRoute[] | null, +) { + if (!k8sr) { + return ''; + } + + let k8sHTTPRoute: K8sHTTPRoute | null = null; + if ('length' in k8sr) { + if (k8sr.length === 1) { + k8sHTTPRoute = k8sr[0]; + } + } else { + k8sHTTPRoute = k8sr; + } + + if ( + k8sHTTPRoute && + k8sHTTPRoute.metadata.labels && + k8sHTTPRoute.metadata.labels[KIALI_WIZARD_LABEL] + ) { + return k8sHTTPRoute.metadata.labels[KIALI_WIZARD_LABEL]; + } + return ''; +} + +export interface K8sOwnerReference { + apiVersion: string; + kind: string; + name: string; + uid: string; + controller?: boolean; + blockOwnerDeletion?: boolean; +} + +// 1.6 +export interface GatewaySpec { + servers?: Server[]; + selector?: { [key: string]: string }; +} + +// 1.6 +export interface Gateway extends IstioObject { + spec: GatewaySpec; +} + +export function getGatewaysAsList(gws: Gateway[]): string[] { + return gws + .map(gateway => `${gateway.metadata.namespace}/${gateway.metadata.name}`) + .sort((a, b) => a.localeCompare(b)); +} + +export function filterAutogeneratedGateways(gws: Gateway[]): Gateway[] { + return gws.filter( + gateway => !gateway.metadata.name.includes('autogenerated-k8s'), + ); +} + +export function getK8sGatewaysAsList(k8sGws: K8sGateway[]): string[] { + if (k8sGws) { + return k8sGws + .map(gateway => `${gateway.metadata.namespace}/${gateway.metadata.name}`) + .sort((a, b) => a.localeCompare(b)); + } + return []; +} + +// K8s Gateway API https://istio.io/latest/docs/tasks/traffic-management/ingress/gateway-api/ + +export interface Listener { + name: string; + hostname: string; + port: number; + protocol: string; + allowedRoutes: AllowedRoutes; +} + +export interface Address { + type: string; + value: string; +} + +export interface AllowedRoutes { + namespaces: FromNamespaces; +} + +export interface LabelSelector { + matchLabels: { [key: string]: string }; +} + +export interface FromNamespaces { + from: string; + selector: LabelSelector; +} + +export interface ParentRef { + name: string; + namespace: string; +} + +export interface K8sGatewaySpec { + listeners?: Listener[]; + addresses?: Address[]; + gatewayClassName: string; +} + +export interface K8sGateway extends IstioObject { + spec: K8sGatewaySpec; +} + +export interface K8sHTTPRouteSpec { + parentRefs?: ParentRef[]; + hostnames?: string[]; + rules?: K8sRouteRule[]; +} + +export interface K8sRouteRule { + matches?: K8sHTTPRouteMatch[]; + filters?: K8sHTTPRouteFilter[]; + backendRefs?: K8sRouteBackendRef[]; +} + +export interface K8sRouteBackendRef { + name: string; + weight?: number; + port?: number; + namespace?: string; + filters?: K8sHTTPRouteFilter[]; +} + +export interface K8sHTTPRouteFilter { + requestRedirect?: K8sHTTPRouteRequestRedirect; + requestHeaderModifier?: K8sHTTPHeaderFilter; + requestMirror?: K8sHTTPRequestMirrorFilter; + type?: string; +} + +export interface K8sHTTPRequestMirrorFilter { + backendRef?: K8sRouteBackendRef; +} + +export interface K8sHTTPHeaderFilter { + set?: HTTPHeader[]; + add?: HTTPHeader[]; + remove?: string[]; +} + +export interface K8sHTTPRouteRequestRedirect { + scheme?: string; + hostname?: string; + port?: number; + statusCode?: number; +} + +export interface K8sHTTPRouteMatch { + path?: HTTPMatch; + headers?: HTTPMatch[]; + queryParams?: HTTPMatch[]; + method?: string; +} + +export interface HTTPMatch { + type?: string; + name?: string; + value?: string; +} + +export interface K8sHTTPRoute extends IstioObject { + spec: K8sHTTPRouteSpec; +} + +// Sidecar resource https://preliminary.istio.io/docs/reference/config/networking/v1alpha3/sidecar + +// 1.6 +export enum CaptureMode { + DEFAULT = 'DEFAULT', + IPTABLES = 'IPTABLES', + NONE = 'NONE', +} + +// 1.6 +export interface IstioEgressListener { + port?: Port; + bind?: string; + captureMode?: CaptureMode; + hosts: string[]; + localhostServerTls?: ServerTLSSettings; +} + +// 1.6 +export interface IstioIngressListener { + port: Port; + bind?: string; + captureMode?: CaptureMode; + defaultEndpoint: string; + localhostClientTls?: ClientTLSSettings; +} + +// 1.6 +export interface WorkloadSelector { + labels: { [key: string]: string }; +} + +// 1.6 +export interface OutboundTrafficPolicy { + mode?: string; +} + +// 1.6 +export interface Localhost { + clientTls?: ClientTLSSettings; + serverTls?: ServerTLSSettings; +} + +// 1.6 +export interface SidecarSpec { + workloadSelector?: WorkloadSelector; + ingress?: IstioIngressListener[]; + egress?: IstioEgressListener[]; + outboundTrafficPolicy?: OutboundTrafficPolicy; + localhost?: Localhost; +} + +// 1.6 +export interface Sidecar extends IstioObject { + spec: SidecarSpec; +} + +// 1.6 +export interface Server { + port: ServerPort; + hosts: string[]; + tls?: ServerTLSSettings; +} + +export interface ServerForm { + number: string; + protocol: string; + name: string; + hosts: string[]; + tlsMode: string; + tlsServerCertificate: string; + tlsPrivateKey: string; + tlsCaCertificate: string; +} + +// 1.6 +export interface ServerPort { + number: number; + protocol: string; + name: string; +} + +// 1.6 +export interface ServerTLSSettings { + httpsRedirect?: boolean; + mode?: string; + serverCertificate?: string; + privateKey?: string; + caCertificates?: string; + credentialName?: string; + subjectAltNames?: string[]; + verifyCertificateSpki?: string[]; + verifyCertificateHash?: string[]; + minProtocolVersion?: string; + maxProtocolVersion?: string; + cipherSuites?: string[]; +} + +// 1.6 +export interface ServiceEntrySpec { + hosts?: string[]; + addresses?: string[]; + ports?: Port[]; + location?: string; + resolution?: string; + endpoints?: WorkloadEntrySpec[]; + exportTo?: string[]; + subjectAltNames?: string[]; + workloadSelector?: WorkloadSelector; +} + +// 1.6 +export interface ServiceEntry extends IstioObject { + spec: ServiceEntrySpec; +} + +export interface WasmPlugin extends IstioObject { + spec: WasmPluginSpec; +} + +export interface WasmPluginSpec extends IstioObject { + workloadSelector?: WorkloadSelector; + url: string; + pluginName: string; +} + +export interface Telemetry extends IstioObject { + spec: TelemetrySpec; +} + +export interface TelemetrySpec extends IstioObject { + workloadSelector?: WorkloadSelector; +} + +export interface Endpoint { + address: string; + ports: { [key: string]: number }; + labels: { [key: string]: string }; +} + +export interface Match { + clause: { [attributeName: string]: { [matchType: string]: string } }; +} + +export interface TargetSelector { + name: string; + ports?: PortSelector[]; +} + +export enum MutualTlsMode { + STRICT = 'STRICT', + PERMISSIVE = 'PERMISSIVE', +} + +export interface MutualTls { + allowTls: boolean; + mode: MutualTlsMode; +} + +export interface PeerAuthenticationMethod { + mtls: MutualTls; +} + +export interface Jwt { + issuer: string; + audiences: string[]; + jwksUri?: string; + jwtHeaders: string[]; + jwtParams: string[]; +} + +export interface OriginAuthenticationMethod { + jwt: Jwt; +} + +export enum PrincipalBinding { + USE_PEER = 'USE_PEER', + USE_ORIGIN = 'USE_ORIGIN', +} + +export interface AuthorizationPolicy extends IstioObject { + spec: AuthorizationPolicySpec; +} + +export interface AuthorizationPolicyWorkloadSelector { + matchLabels: { [key: string]: string }; +} + +export interface AuthorizationPolicySpec { + selector?: AuthorizationPolicyWorkloadSelector; + rules?: AuthorizationPolicyRule[]; + action?: string; +} + +export interface AuthorizationPolicyRule { + from?: RuleFrom[]; + to?: RuleTo[]; + when?: Condition[]; +} + +export interface RuleFrom { + source: Source; +} + +export interface Source { + principals?: string[]; + notPrincipals?: string[]; + requestPrincipals?: string[]; + notRequestPrincipals?: string[]; + namespaces?: string[]; + notNamespaces?: string[]; + ipBlocks?: string[]; + notIpBlocks?: string[]; +} + +export interface RuleTo { + operation: Operation; +} + +export interface Operation { + hosts?: string[]; + notHosts?: string[]; + ports?: string[]; + notPorts?: string[]; + methods?: string[]; + notMethods?: string[]; + paths?: string[]; + notPaths?: string[]; +} + +export interface Condition { + key: string; + values?: string[]; + notValues?: string[]; +} + +export interface PeerAuthentication extends IstioObject { + spec: PeerAuthenticationSpec; +} + +export interface K8sGRPCRoute extends IstioObject { + spec: K8sGRPCRouteSpec; +} + +export interface K8sReferenceGrant extends IstioObject { + spec: K8sReferenceGrantSpec; +} + +export interface K8sTCPRoute extends IstioObject { + spec: K8sTCPRouteSpec; +} + +export interface K8sTLSRoute extends IstioObject { + spec: K8sTLSRouteSpec; +} + +export interface K8sCommonRouteSpec { + parentRefs?: ParentRef[]; +} + +export interface K8sGRPCRouteSpec extends K8sCommonRouteSpec { + hostnames?: string[]; + rules?: K8sGRPCRouteRule[]; +} + +export interface K8sHTTPRouteSpec extends K8sCommonRouteSpec { + hostnames?: string[]; + rules?: K8sHTTPRouteRule[]; +} + +export interface K8sReferenceGrantSpec { + from?: K8sReferenceRule[]; + to?: K8sReferenceRule[]; +} + +export interface K8sTCPRouteSpec extends K8sCommonRouteSpec { + rules?: K8sTCPRouteRule[]; +} + +export interface K8sTLSRouteSpec extends K8sCommonRouteSpec { + hostnames?: string[]; + rules?: K8sTLSRouteRule[]; +} + +// rest of attributes used by k8s gateway objects +export interface K8sGRPCRouteRule { + backendRefs?: K8sRouteBackendRef[]; + matches?: K8sGRPCRouteMatch[]; +} + +export interface K8sHTTPRouteRule { + backendRefs?: K8sRouteBackendRef[]; + filters?: K8sHTTPRouteFilter[]; + matches?: K8sHTTPRouteMatch[]; +} + +export interface K8sReferenceRule { + group: string; + kind: string; + namespace?: string; +} + +export interface K8sTCPRouteRule { + backendRefs?: K8sRouteBackendRef[]; +} + +export interface K8sTLSRouteRule { + backendRefs?: K8sRouteBackendRef[]; +} + +export interface K8sGRPCHeaderMatch { + name?: string; + type?: string; + value?: string; +} + +export interface K8sGRPCMethodMatch { + method?: string; + service?: string; + type?: string; +} + +export interface K8sGRPCRouteMatch { + headers?: K8sGRPCHeaderMatch[]; + method?: K8sGRPCMethodMatch; +} + +export interface K8sHTTPMatch { + name?: string; + type?: string; + value?: string; +} + +export interface K8sHTTPRouteFilter { + requestHeaderModifier?: K8sHTTPHeaderFilter; + requestMirror?: K8sHTTPRequestMirrorFilter; + requestRedirect?: K8sHTTPRouteRequestRedirect; + type?: string; +} + +export interface K8sHTTPRouteMatch { + headers?: K8sHTTPMatch[]; + method?: string; + path?: K8sHTTPMatch; + queryParams?: K8sHTTPMatch[]; +} + +export interface K8sHTTPRouteRequestRedirect { + hostname?: string; + port?: number; + scheme?: string; + statusCode?: number; +} + +export interface K8sHTTPHeaderFilter { + add?: HTTPHeader[]; + remove?: string[]; + set?: HTTPHeader[]; +} + +export interface K8sHTTPRequestMirrorFilter { + backendRef?: K8sRouteBackendRef; +} + +export interface K8sRouteBackendRef { + filters?: K8sHTTPRouteFilter[]; + name: string; + namespace?: string; + port?: number; + weight?: number; +} + +export interface PeerAuthenticationSpec { + selector?: PeerAuthenticationWorkloadSelector; + mtls?: PeerAuthenticationMutualTls; + portLevelMtls?: { [key: number]: PeerAuthenticationMutualTls }; +} + +export interface PeerAuthenticationWorkloadSelector { + matchLabels: { [key: string]: string }; +} + +export interface PeerAuthenticationMutualTls { + mode: PeerAuthenticationMutualTLSMode; +} + +export enum PeerAuthenticationMutualTLSMode { + UNSET = 'UNSET', + DISABLE = 'DISABLE', + PERMISSIVE = 'PERMISSIVE', + STRICT = 'STRICT', +} + +// 1.6 +export interface WorkloadEntry extends IstioObject { + spec: WorkloadEntrySpec; +} + +export interface WorkloadEntrySpec { + address: string; + ports?: { [key: string]: number }; + labels?: { [key: string]: string }; + network?: string; + locality?: string; + weight?: number; + serviceAccount?: string; +} + +export interface WorkloadGroup extends IstioObject { + spec: WorkloadGroupSpec; +} + +export interface WorkloadGroupSpec { + // Note that WorkloadGroup has a metadata section inside Spec + metadata?: K8sMetadata; + template: WorkloadEntrySpec; + probe?: ReadinessProbe; +} + +export interface ReadinessProbe { + initialDelaySeconds?: number; + timeoutSeconds?: number; + periodSeconds?: number; + successThreshold?: number; + failureThreshold?: number; + httpGet?: HTTPHealthCheckConfig; + tcpSocket?: TCPHealthCheckConfig; + exec?: ExecHealthCheckConfig; +} + +export interface HTTPHealthCheckConfig { + path?: string; + port: number; + host?: string; + scheme?: string; + httpHeaders?: HTTPHeader[]; +} + +export interface HTTPHeader { + name?: string; + value?: string; +} + +export interface TCPHealthCheckConfig { + host?: string; + port: number; +} + +export interface ExecHealthCheckConfig { + command?: string[]; +} + +export interface WorkloadMatchSelector { + matchLabels: { [key: string]: string }; +} + +export interface JWTHeader { + name: string; + prefix?: string; +} + +export interface JWTRule { + issuer?: string; + audiences?: string[]; + jwksUri?: string; + jwks?: string; + fromHeaders?: JWTHeader[]; + fromParams?: string[]; + outputPayloadToHeader?: string; + forwardOriginalToken?: boolean; +} + +// 1.6 +export interface RequestAuthentication extends IstioObject { + spec: RequestAuthenticationSpec; +} + +// 1.6 +export interface RequestAuthenticationSpec { + selector?: WorkloadMatchSelector; + jwtRules: JWTRule[]; +} + +export interface ProxyMatch { + proxyVersion?: string; + metadata?: { [key: string]: string }; +} + +export interface SubFilterMatch { + name?: string; +} + +export interface FilterMatch { + name?: string; + subFilter?: SubFilterMatch; +} + +export interface FilterChainMatch { + name?: string; + sni?: string; + transportProtocol?: string; + applicationProtocols?: string; + filter?: FilterMatch; +} + +export interface ListenerMatch { + portNumber?: number; + filterChain?: FilterChainMatch; +} + +export interface RouteMatch { + name?: string; + action?: string; +} + +export interface VirtualHostMatch { + name?: string; + route?: RouteMatch; +} + +export interface RouteConfigurationMatch { + portNumber?: number; + portName?: string; + gateway?: string; + vhost?: VirtualHostMatch; + name?: string; +} + +export interface ClusterMatch { + portNumber?: number; + service?: string; + subset?: string; + name?: string; +} + +export interface EnvoyConfigObjectMatch { + context?: string; + proxy?: ProxyMatch; + listener?: ListenerMatch; + routeConfiguration?: RouteConfigurationMatch; + cluster?: ClusterMatch; +} + +export interface Patch { + operation?: string; + value?: any; +} + +export interface EnvoyConfigObjectPatch { + applyTo?: string; + match?: EnvoyConfigObjectMatch; + patch?: Patch; +} + +export interface EnvoyFilterSpec { + workloadSelector?: WorkloadSelector; + configPatches: EnvoyConfigObjectPatch[]; +} + +export interface EnvoyFilter extends IstioObject { + spec: EnvoyFilterSpec; +} + +export interface AttributeInfo { + description?: string; + valueType: string; +} + +export interface APIKey { + query?: string; + header?: string; + cookie?: string; +} + +export interface CanaryUpgradeStatus { + currentVersion: string; + upgradeVersion: string; + migratedNamespaces: string[]; + pendingNamespaces: string[]; +} + +export const MAX_PORT = 65535; +export const MIN_PORT = 0; diff --git a/workspaces/kiali/plugins/kiali/src/types/IstioStatus.ts b/workspaces/kiali/plugins/kiali/src/types/IstioStatus.ts new file mode 100644 index 0000000000..2f7b9dc65a --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/types/IstioStatus.ts @@ -0,0 +1,33 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export enum Status { + Healthy = 'Healthy', + Unhealthy = 'Unhealthy', + Unreachable = 'Unreachable', + NotFound = 'NotFound', + NotReady = 'NotReady', +} + +export interface ComponentStatus { + name: string; + status: Status; + is_core: boolean; +} + +export interface IstiodResourceThresholds { + memory: number; + cpu: number; +} diff --git a/workspaces/kiali/plugins/kiali/src/types/Mesh.ts b/workspaces/kiali/plugins/kiali/src/types/Mesh.ts new file mode 100644 index 0000000000..7dbaad7ccd --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/types/Mesh.ts @@ -0,0 +1,33 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export interface MeshCluster { + apiEndpoint: string; + isKialiHome: boolean; + kialiInstances: KialiInstance[]; + name: string; + network: string; + secretName: string; +} + +export interface KialiInstance { + serviceName: string; + namespace: string; + operatorResource: string; + url: string; + version: string; +} + +export type MeshClusters = MeshCluster[]; diff --git a/workspaces/kiali/plugins/kiali/src/types/MessageCenter.ts b/workspaces/kiali/plugins/kiali/src/types/MessageCenter.ts new file mode 100644 index 0000000000..8dd65024b8 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/types/MessageCenter.ts @@ -0,0 +1,44 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export enum MessageType { + ERROR = 'error', + WARNING = 'warning', + SUCCESS = 'success', + INFO = 'info', +} + +export interface NotificationMessage { + id: number; + seen: boolean; + type: MessageType; + content: string; + detail: string; + created: Date; + firstTriggered?: Date; // when was it first triggered + count: number; // how many times did this message occur + + showDetail: boolean; + show_notification: boolean; + groupId?: string; +} + +export interface NotificationGroup { + id: string; + title: string; + messages: NotificationMessage[]; + showActions: boolean; + hideIfEmpty: boolean; +} diff --git a/workspaces/kiali/plugins/kiali/src/types/Metrics.ts b/workspaces/kiali/plugins/kiali/src/types/Metrics.ts new file mode 100644 index 0000000000..61e059571c --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/types/Metrics.ts @@ -0,0 +1,90 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +export type Datapoint = [number, number, number?]; + +export interface Metric { + labels: Labels; + datapoints: Datapoint[]; + name: string; + stat?: string; +} + +export type ControlPlaneMetricsMap = { + istiod_proxy_time?: Metric[]; + istiod_container_cpu?: Metric[]; + istiod_container_mem?: Metric[]; + istiod_process_cpu?: Metric[]; + istiod_process_mem?: Metric[]; +}; + +export type IstioMetricsMap = { + grpc_received?: Metric[]; + grpc_sent?: Metric[]; + request_count?: Metric[]; + request_error_count?: Metric[]; + request_duration_millis?: Metric[]; + request_throughput?: Metric[]; + response_throughput?: Metric[]; + request_size?: Metric[]; + response_size?: Metric[]; + tcp_received?: Metric[]; + tcp_sent?: Metric[]; + pilot_proxy_convergence_time?: Metric[]; + container_cpu_usage_seconds_total?: Metric[]; + container_memory_working_set_bytes?: Metric[]; + process_cpu_seconds_total?: Metric[]; + process_resident_memory_bytes?: Metric[]; +}; + +export enum MetricsObjectTypes { + SERVICE, + WORKLOAD, + APP, +} + +export interface MetricsStatsResult { + stats: MetricsStatsMap; + // Note: warnings here is for non-blocking errors, it's set when some stats are available, but not all, for instance due to inaccessible namespaces + // For more serious errors (e.g. prometheus inaccessible) the query would return an HTTP error + warnings?: string[]; +} + +// Key is built from query params, see StatsComparison.genKey. The same key needs to be generated server-side for matching. +export type MetricsStatsMap = { [key: string]: MetricsStats }; + +export interface MetricsStats { + isCompact: boolean; + responseTimes: Stat[]; +} + +export interface Stat { + name: string; + value: number; +} + +export type LabelDisplayName = string; +export type PromLabel = string; + +// Collection of values for a single label, associated to a show/hide flag +export type SingleLabelValues = { [key: string]: boolean }; + +// Map of all labels (using prometheus name), each with its set of values +export type AllPromLabelsValues = Map; + +export type Labels = { + [key: string]: string; +}; diff --git a/workspaces/kiali/plugins/kiali/src/types/MetricsOptions.ts b/workspaces/kiali/plugins/kiali/src/types/MetricsOptions.ts new file mode 100644 index 0000000000..cd3fc26f23 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/types/MetricsOptions.ts @@ -0,0 +1,83 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { TargetKind } from './Common'; + +export interface MetricsQuery { + rateInterval?: string; + rateFunc?: string; + queryTime?: number; + duration?: number; + step?: number; + quantiles?: string[]; + avg?: boolean; + byLabels?: string[]; +} + +export interface DashboardQuery extends MetricsQuery { + rawDataAggregator?: Aggregator; + labelsFilters?: string; + additionalLabels?: string; + workload?: string; + workloadType?: string; + cluster?: string; +} + +export type Aggregator = 'sum' | 'avg' | 'min' | 'max' | 'stddev' | 'stdvar'; + +export interface IstioMetricsOptions extends MetricsQuery { + direction: Direction; + filters?: string[]; + requestProtocol?: string; + reporter: Reporter; + clusterName?: string; +} + +export type Reporter = 'source' | 'destination' | 'both'; +export type Direction = 'inbound' | 'outbound'; + +export interface Target { + namespace: string; + name: string; + kind: TargetKind; + cluster?: string; +} + +export interface MetricsStatsQuery { + avg: boolean; + direction: Direction; + interval: string; + peerTarget?: Target; + quantiles: string[]; + queryTime: number; + target: Target; +} +const genTargetKey = (target: Target): string => { + return `${target.namespace}:${target.kind}:${target.name}`; +}; + +// !! genStatsKey HAS to mirror backend's models.MetricsStatsQuery#GenKey in models/metrics.go +export const genStatsKey = ( + target: Target, + peer: Target | undefined, + direction: string, + interval: string, +): string => { + const peerKey = peer ? genTargetKey(peer) : ''; + return `${genTargetKey(target)}:${peerKey}:${direction}:${interval}`; +}; + +export const statsQueryToKey = (q: MetricsStatsQuery) => + genStatsKey(q.target, q.peerTarget, q.direction, q.interval); diff --git a/workspaces/kiali/plugins/kiali/src/types/Namespace.ts b/workspaces/kiali/plugins/kiali/src/types/Namespace.ts new file mode 100644 index 0000000000..147e856052 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/types/Namespace.ts @@ -0,0 +1,31 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export interface Namespace { + name: string; + cluster?: string; + isAmbient?: boolean; + labels?: { [key: string]: string }; + annotations?: { [key: string]: string }; +} + +export const namespaceFromString = (namespace: string) => ({ name: namespace }); + +export const namespacesFromString = (namespaces: string) => { + return namespaces.split(',').map(name => namespaceFromString(name)); +}; + +export const namespacesToString = (namespaces: Namespace[]) => + namespaces.map(namespace => namespace.name).join(','); diff --git a/workspaces/kiali/plugins/kiali/src/types/NamespaceInfo.tsx b/workspaces/kiali/plugins/kiali/src/types/NamespaceInfo.tsx new file mode 100644 index 0000000000..d27ade2fc9 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/types/NamespaceInfo.tsx @@ -0,0 +1,43 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { IstioConfigList } from './IstioConfigList'; +import { ValidationStatus } from './IstioObjects'; +import { ControlPlaneMetricsMap, Metric } from './Metrics'; +import { TLSStatus } from './TLSStatus'; + +export type NamespaceInfo = { + annotations?: { [key: string]: string }; + controlPlaneMetrics?: ControlPlaneMetricsMap; + cluster?: string; + errorMetrics?: Metric[]; + isAmbient?: boolean; + istioConfig?: IstioConfigList; + labels?: { [key: string]: string }; + metrics?: Metric[]; + name: string; + outboundPolicyMode?: string; + status?: NamespaceStatus; + tlsStatus?: TLSStatus; + validations?: ValidationStatus; +}; + +export type NamespaceStatus = { + inError: string[]; + inNotReady: string[]; + inSuccess: string[]; + inWarning: string[]; + notAvailable: string[]; +}; diff --git a/workspaces/kiali/plugins/kiali/src/types/Overlay.ts b/workspaces/kiali/plugins/kiali/src/types/Overlay.ts new file mode 100644 index 0000000000..eada069f9a --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/types/Overlay.ts @@ -0,0 +1,28 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { LineInfo, VCDataPoint, VCLine } from './VictoryChartInfo'; + +export type OverlayInfo = { + lineInfo: T; + // eslint-disable-next-line @typescript-eslint/no-explicit-any + dataStyle: any; // see "data" in https://formidable.com/open-source/victory/docs/common-props/#style + buckets?: number; +}; + +export type Overlay = { + vcLine: VCLine; + info: OverlayInfo; +}; diff --git a/workspaces/kiali/plugins/kiali/src/types/Permissions.ts b/workspaces/kiali/plugins/kiali/src/types/Permissions.ts new file mode 100644 index 0000000000..5e4e6d25b9 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/types/Permissions.ts @@ -0,0 +1,38 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { serverConfig } from '../config'; + +export interface ResourcePermissions { + create: boolean; + update: boolean; + delete: boolean; +} + +export function canCreate(privs?: ResourcePermissions) { + return ( + privs !== undefined && privs.create && !serverConfig.deployment.viewOnlyMode + ); +} + +export function canUpdate(privs?: ResourcePermissions) { + return ( + privs !== undefined && privs.update && !serverConfig.deployment.viewOnlyMode + ); +} + +export function canDelete(privs?: ResourcePermissions) { + return privs?.delete && !serverConfig.deployment.viewOnlyMode; +} diff --git a/workspaces/kiali/plugins/kiali/src/types/ServerConfig.ts b/workspaces/kiali/plugins/kiali/src/types/ServerConfig.ts new file mode 100644 index 0000000000..50a11ca8a8 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/types/ServerConfig.ts @@ -0,0 +1,160 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { DurationInSeconds } from './Common'; +import { MeshCluster } from './Mesh'; + +export type IstioLabelKey = + | 'ambientWaypointLabel' + | 'ambientWaypointLabelValue' + | 'appLabelName' + | 'versionLabelName' + | 'injectionLabelName' + | 'injectionLabelRev'; + +interface DeploymentConfig { + viewOnlyMode: boolean; +} + +interface IstioAnnotations { + ambientAnnotation: string; + ambientAnnotationEnabled: string; + // this could also be the name of the pod label, both label and annotation are supported + istioInjectionAnnotation: string; +} + +interface GraphFindOption { + autoSelect: boolean; + description: string; + expression: string; +} + +interface GraphTraffic { + grpc: string; + http: string; + tcp: string; +} + +interface GraphSettings { + fontLabel: number; + minFontBadge: number; + minFontLabel: number; +} + +interface GraphUIDefaults { + findOptions: GraphFindOption[]; + hideOptions: GraphFindOption[]; + impl: 'both' | 'cy' | 'pf'; + settings: GraphSettings; + traffic: GraphTraffic; +} + +interface ListUIDefaults { + includeHealth: boolean; + includeIstioResources: boolean; + includeValidations: boolean; + showIncludeToggles: boolean; +} + +interface UIDefaults { + graph: GraphUIDefaults; + list: ListUIDefaults; + metricsPerRefresh?: string; + namespaces?: string[]; + refreshInterval?: string; +} + +interface CertificatesInformationIndicators { + enabled: boolean; +} + +interface KialiFeatureFlags { + certificatesInformationIndicators: CertificatesInformationIndicators; + disabledFeatures: string[]; + istioInjectionAction: boolean; + istioAnnotationAction: boolean; + istioUpgradeAction: boolean; + uiDefaults: UIDefaults; +} + +// Not based exactly on Kiali configuration but rather whether things like prometheus config +// allow for certain Kiali features. True means the feature is crippled, false means supported. +export interface KialiCrippledFeatures { + requestSize: boolean; + requestSizeAverage: boolean; + requestSizePercentiles: boolean; + responseSize: boolean; + responseSizeAverage: boolean; + responseSizePercentiles: boolean; + responseTime: boolean; + responseTimeAverage: boolean; + responseTimePercentiles: boolean; +} + +interface IstioCanaryRevision { + current: string; + upgrade: string; +} + +/* + Health Config +*/ +export type RegexConfig = string | RegExp; + +export interface HealthConfig { + rate: RateHealthConfig[]; +} + +// rateHealthConfig +export interface RateHealthConfig { + namespace?: RegexConfig; + kind?: RegexConfig; + name?: RegexConfig; + tolerance: ToleranceConfig[]; +} +// toleranceConfig +export interface ToleranceConfig { + code: RegexConfig; + degraded: number; + failure: number; + protocol?: RegexConfig; + direction?: RegexConfig; +} + +/* + End Health Config +*/ + +export interface ServerConfig { + accessibleNamespaces: Array; + ambientEnabled: boolean; + authStrategy: string; + clusters: { [key: string]: MeshCluster }; + deployment: DeploymentConfig; + gatewayAPIEnabled: boolean; + healthConfig: HealthConfig; + installationTag?: string; + istioAnnotations: IstioAnnotations; + istioCanaryRevision: IstioCanaryRevision; + istioIdentityDomain: string; + istioNamespace: string; + istioLabels: { [key in IstioLabelKey]: string }; + kialiFeatureFlags: KialiFeatureFlags; + logLevel: string; + prometheus: { + globalScrapeInterval?: DurationInSeconds; + storageTsdbRetention?: DurationInSeconds; + }; +} diff --git a/workspaces/kiali/plugins/kiali/src/types/ServiceId.ts b/workspaces/kiali/plugins/kiali/src/types/ServiceId.ts new file mode 100644 index 0000000000..1c9d8cdcfd --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/types/ServiceId.ts @@ -0,0 +1,19 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export interface ServiceId { + namespace: string; + service: string; +} diff --git a/workspaces/kiali/plugins/kiali/src/types/ServiceInfo.ts b/workspaces/kiali/plugins/kiali/src/types/ServiceInfo.ts new file mode 100644 index 0000000000..9494f7bdfb --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/types/ServiceInfo.ts @@ -0,0 +1,252 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { KIALI_WIZARD_LABEL } from '../components/IstioWizards/WizardActions'; +import { + DEGRADED, + FAILURE, + HEALTHY, + NA, + ServiceHealth, + Status, +} from './Health'; +import { + DestinationRule, + getWizardUpdateLabel, + K8sHTTPRoute, + ObjectCheck, + ObjectValidation, + ServiceEntry, + Validations, + ValidationTypes, + VirtualService, +} from './IstioObjects'; +import { ResourcePermissions } from './Permissions'; +import { ServiceOverview } from './ServiceList'; +import { TLSStatus } from './TLSStatus'; +import { AdditionalItem } from './Workload'; + +export interface ServicePort { + name: string; + port: number; + protocol: string; + appProtocol?: string; + istioProtocol: string; + tlsMode: string; +} + +export interface Endpoints { + addresses?: EndpointAddress[]; + ports?: ServicePort[]; +} + +interface EndpointAddress { + ip: string; + kind?: string; + name?: string; + istioProtocol?: string; + tlsMode?: string; +} + +export interface WorkloadOverview { + name: string; + type: string; + istioSidecar: boolean; + istioAmbient: boolean; + labels?: { [key: string]: string }; + resourceVersion: string; + createdAt: string; + serviceAccountNames: string[]; +} + +export interface Service { + additionalDetails: AdditionalItem[]; + type: string; + name: string; + createdAt: string; + resourceVersion: string; + ip: string; + ports?: ServicePort[]; + annotations: { [key: string]: string }; + externalName: string; + labels?: { [key: string]: string }; + selectors?: { [key: string]: string }; + cluster?: string; +} + +export interface ServiceDetailsInfo { + service: Service; + endpoints?: Endpoints[]; + istioSidecar: boolean; + istioAmbient: boolean; + virtualServices: VirtualService[]; + k8sHTTPRoutes: K8sHTTPRoute[]; + destinationRules: DestinationRule[]; + serviceEntries: ServiceEntry[]; + istioPermissions: ResourcePermissions; + health?: ServiceHealth; + workloads?: WorkloadOverview[]; + subServices?: ServiceOverview[]; + namespaceMTLS?: TLSStatus; + validations: Validations; + additionalDetails: AdditionalItem[]; + cluster?: string; +} + +export interface ServiceDetailsQuery { + rateInterval?: string; + validate?: boolean; +} + +export function getServiceDetailsUpdateLabel( + serviceDetails: ServiceDetailsInfo | null, +) { + return getWizardUpdateLabel( + serviceDetails?.virtualServices || null, + serviceDetails?.k8sHTTPRoutes || null, + ); +} + +export function hasServiceDetailsTrafficRouting( + serviceDetails: ServiceDetailsInfo | null, +): boolean; +export function hasServiceDetailsTrafficRouting( + vsList: VirtualService[], + drList: DestinationRule[], + routeList?: K8sHTTPRoute[], +): boolean; +export function hasServiceDetailsTrafficRouting( + serviceDetailsOrVsList: ServiceDetailsInfo | VirtualService[] | null, + drList?: DestinationRule[], + routeList?: K8sHTTPRoute[], +): boolean { + let virtualServicesList: VirtualService[]; + let destinationRulesList: DestinationRule[]; + let httpRoutesList: K8sHTTPRoute[]; + + if (serviceDetailsOrVsList === null) { + return false; + } + + if ('length' in serviceDetailsOrVsList) { + virtualServicesList = serviceDetailsOrVsList; + destinationRulesList = drList || []; + httpRoutesList = routeList || []; + } else { + virtualServicesList = serviceDetailsOrVsList.virtualServices; + destinationRulesList = serviceDetailsOrVsList.destinationRules; + httpRoutesList = serviceDetailsOrVsList.k8sHTTPRoutes; + } + + return ( + virtualServicesList.length > 0 || + destinationRulesList.length > 0 || + httpRoutesList.length > 0 + ); +} + +const higherThan = [ + 'error-warning', + 'error-improvement', + 'error-correct', + 'warning-improvement', + 'warning-correct', + 'improvement-correct', +]; + +export const higherSeverity = ( + a: ValidationTypes, + b: ValidationTypes, +): boolean => { + return higherThan.includes(`${a}-${b}`); +}; + +export const highestSeverity = (checks: ObjectCheck[]): ValidationTypes => { + let severity: ValidationTypes = ValidationTypes.Correct; + + checks.forEach(check => { + if (higherSeverity(check.severity, severity)) { + severity = check.severity; + } + }); + + return severity; +}; + +export const validationToHealth = (severity: ValidationTypes): Status => { + let status: Status = NA; + if (severity === ValidationTypes.Correct) { + status = HEALTHY; + } else if (severity === ValidationTypes.Warning) { + status = DEGRADED; + } else if (severity === ValidationTypes.Error) { + status = FAILURE; + } + return status; +}; + +const numberOfChecks = (type: ValidationTypes, object: ObjectValidation) => + (object && object.checks ? object.checks : []).filter( + i => i.severity === type, + ).length; + +export const validationToSeverity = ( + object: ObjectValidation, +): ValidationTypes => { + const warnChecks = numberOfChecks(ValidationTypes.Warning, object); + const errChecks = numberOfChecks(ValidationTypes.Error, object); + if (errChecks > 0) { + return ValidationTypes.Error; + } else if (warnChecks > 0) { + return ValidationTypes.Warning; + } + return ValidationTypes.Correct; +}; + +export const checkForPath = ( + object: ObjectValidation | undefined, + path: string, +): ObjectCheck[] => { + if (!object || !object.checks) { + return []; + } + + return object.checks.filter(item => { + return item.path === path; + }); +}; + +export const globalChecks = (object: ObjectValidation): ObjectCheck[] => { + return checkForPath(object, ''); +}; + +export function getServiceWizardLabel(serviceDetails: Service): string { + if ( + serviceDetails && + serviceDetails.labels && + serviceDetails.labels[KIALI_WIZARD_LABEL] + ) { + return serviceDetails.labels[KIALI_WIZARD_LABEL]; + } + return ''; +} + +export function getServicePort(ports: { [key: string]: number }): number { + let port = 80; + if (ports) { + port = Object.values(ports)[0]; + } + return port; +} diff --git a/workspaces/kiali/plugins/kiali/src/types/ServiceList.ts b/workspaces/kiali/plugins/kiali/src/types/ServiceList.ts new file mode 100644 index 0000000000..1a08855663 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/types/ServiceList.ts @@ -0,0 +1,51 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { ServiceHealth } from './Health'; +import { ObjectReference, ObjectValidation, Validations } from './IstioObjects'; +import { Namespace } from './Namespace'; +import { AdditionalItem } from './Workload'; + +export interface ServiceList { + namespace: Namespace; + services: ServiceOverview[]; + validations: Validations; +} + +export interface ServiceOverview { + name: string; + cluster?: string; + istioSidecar: boolean; + istioAmbient: boolean; + additionalDetailSample?: AdditionalItem; + labels: { [key: string]: string }; + ports: { [key: string]: number }; + istioReferences: ObjectReference[]; + kialiWizard: string; + serviceRegistry: string; + health: ServiceHealth; +} + +export interface ServiceListItem extends ServiceOverview { + namespace: string; + validation?: ObjectValidation; +} + +export interface ServiceListQuery { + health: 'true' | 'false'; + istioResources: 'true' | 'false'; + onlyDefinitions: 'true' | 'false'; + rateInterval: string; +} diff --git a/workspaces/kiali/plugins/kiali/src/types/SortFilters.ts b/workspaces/kiali/plugins/kiali/src/types/SortFilters.ts new file mode 100644 index 0000000000..c08631fbb6 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/types/SortFilters.ts @@ -0,0 +1,25 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { Health } from './Health'; + +export interface SortField { + id: string; + title: string; // Used when building a dropdown of sort options, this is not a column header + isNumeric: boolean; + param: string; + compare: (a: T | WithHealth, b: T | WithHealth) => number; +} +type WithHealth = T & { health: Health }; diff --git a/workspaces/kiali/plugins/kiali/src/types/StatusState.ts b/workspaces/kiali/plugins/kiali/src/types/StatusState.ts new file mode 100644 index 0000000000..d552390552 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/types/StatusState.ts @@ -0,0 +1,45 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export enum StatusKey { + DISABLED_FEATURES = 'Disabled features', + KIALI_CORE_COMMIT_HASH = 'Kiali commit hash', + KIALI_CORE_VERSION = 'Kiali version', + KIALI_CONTAINER_VERSION = 'Kiali container version', + KIALI_STATE = 'Kiali state', + MESH_NAME = 'Mesh name', + MESH_VERSION = 'Mesh version', + KIALI_EXTERNAL_URL = 'kialiExternalUrl', +} + +export type Status = { [K in StatusKey]?: string }; + +export interface ExternalServiceInfo { + name: string; + version?: string; + url?: string; +} + +export interface IstioEnvironment { + isMaistra: boolean; + istioAPIEnabled: boolean; +} + +export interface StatusState { + status: Status; + externalServices: ExternalServiceInfo[]; + warningMessages: string[]; + istioEnvironment: IstioEnvironment; +} diff --git a/workspaces/kiali/plugins/kiali/src/types/TLSStatus.ts b/workspaces/kiali/plugins/kiali/src/types/TLSStatus.ts new file mode 100644 index 0000000000..e23e247443 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/types/TLSStatus.ts @@ -0,0 +1,49 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export enum MTLSStatuses { + ENABLED = 'MTLS_ENABLED', + ENABLED_DEFAULT = 'MTLS_ENABLED_DEFAULT', + ENABLED_EXTENDED = 'MTLS_ENABLED_EXTENDED', + PARTIALLY = 'MTLS_PARTIALLY_ENABLED', + PARTIALLY_DEFAULT = 'MTLS_PARTIALLY_ENABLED_DEFAULT', + AUTO_DEFAULT = 'AUTO_MTLS_DEFAULT', + NOT_ENABLED = 'MTLS_NOT_ENABLED', + DISABLED = 'MTLS_DISABLED', +} + +export interface TLSStatus { + status: string; + autoMTLSEnabled: boolean; + minTLS: string; +} + +export const nsWideMTLSStatus = ( + nsStatus: string, + meshStatus: string, +): string => { + let finalStatus = nsStatus; + + // When mTLS is enabled meshwide but not disabled at ns level + // Then the ns has mtls enabled + if ( + meshStatus === MTLSStatuses.ENABLED && + nsStatus === MTLSStatuses.NOT_ENABLED + ) { + finalStatus = MTLSStatuses.ENABLED_EXTENDED; + } + + return finalStatus; +}; diff --git a/workspaces/kiali/plugins/kiali/src/types/Tracing.ts b/workspaces/kiali/plugins/kiali/src/types/Tracing.ts new file mode 100644 index 0000000000..cd347a67c9 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/types/Tracing.ts @@ -0,0 +1,41 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export type TracingQuery = { + startMicros: number; + endMicros?: number; + tags?: string; + limit?: number; + minDuration?: number; +}; + +export type Span = { + traceID: string; + spanID: string; + operationName: string; + startTime: number; + duration: number; + tags: Tag[]; + warnings?: string[]; + traceSize: number; +}; + +export type Tag = { + key: string; + type: string; + value: any; +}; + +export const TEMPO = 'tempo'; diff --git a/workspaces/kiali/plugins/kiali/src/types/TracingInfo.ts b/workspaces/kiali/plugins/kiali/src/types/TracingInfo.ts new file mode 100644 index 0000000000..21e8337173 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/types/TracingInfo.ts @@ -0,0 +1,144 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { Target } from './MetricsOptions'; + +export interface TracingInfo { + enabled: boolean; + integration: boolean; + namespaceSelector: boolean; + provider: string; + url: string; + whiteListIstioSystem: string[]; +} + +export type KeyValuePair = { + key: string; + type: string; + value: any; +}; + +export type Log = { + fields: Array; + timestamp: number; +}; + +export type SpanReference = { + refType: 'CHILD_OF' | 'FOLLOWS_FROM'; + // eslint-disable-next-line no-use-before-define + span: Span | null | undefined; + spanID: string; + traceID: string; +}; + +export type Process = { + serviceName: string; + tags: Array; +}; + +export type SpanData = { + duration: number; + logs: Array; + operationName: string; + processID: string; + references?: Array; + spanID: string; + startTime: number; + tags?: Array; + traceID: string; + warnings?: Array | null; +}; + +export type Span = SpanData & { + depth: number; + hasChildren: boolean; + process: Process; + references: NonNullable; + relativeStartTime: number; + tags: NonNullable; + warnings: NonNullable; +}; + +export type RichSpanData = Span & { + app: string; + cluster?: string; + component: string; + info: OpenTracingBaseInfo; + linkToApp?: string; + linkToWorkload?: string; + namespace: string; + pod?: string; + type: 'envoy' | 'http' | 'tcp' | 'unknown'; + workload?: string; +}; + +export type OpenTracingBaseInfo = { + component?: string; + hasError: boolean; +}; + +export type OpenTracingHTTPInfo = OpenTracingBaseInfo & { + direction?: 'inbound' | 'outbound'; + method?: string; + statusCode?: number; + url?: string; +}; + +export type OpenTracingTCPInfo = OpenTracingBaseInfo & { + direction?: 'inbound' | 'outbound'; + peerAddress?: string; + peerHostname?: string; + topic?: string; +}; + +export type EnvoySpanInfo = OpenTracingHTTPInfo & { + peer?: Target; + responseFlags?: string; +}; + +export type TraceData = { + matched?: number; // Tempo returns the number of total spans matched + processes: Record; + spans: S[]; + traceID: string; +}; + +export type JaegerTrace = TraceData & { + duration: number; + endTime: number; + matched?: number; // Tempo returns the number of total spans matched + services: { name: string; numberOfSpans: number }[]; + startTime: number; + traceName: string; +}; + +export type TracingError = { + code?: number; + msg: string; + traceID?: string; +}; + +export type TracingResponse = { + data: JaegerTrace[] | null; + errors: TracingError[]; + fromAllClusters: boolean; + tracingServiceName: string; +}; + +export type TracingSingleResponse = { + data: JaegerTrace | null; + errors: TracingError[]; +}; diff --git a/workspaces/kiali/plugins/kiali/src/types/VictoryChartInfo.ts b/workspaces/kiali/plugins/kiali/src/types/VictoryChartInfo.ts new file mode 100644 index 0000000000..00ce51d0ff --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/types/VictoryChartInfo.ts @@ -0,0 +1,81 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export interface LegendInfo { + height: number; + itemsPerRow: number; + fontSizeLabels: number; +} + +// eslint-disable-next-line @typescript-eslint/no-explicit-any +type Style = any; + +export type VCDataPoint = { + name: string; + x: number | Date | string; + y: number; + y0?: number; + style?: Style; +}; + +export type LineInfo = { + name: string; + color: string; + unit?: string; + symbol?: string; + size?: number; + scaleFactor?: number; +}; + +export type RichDataPoint = VCDataPoint & LineInfo; + +export type BucketDataPoint = { + name: string; + start: number | Date; + end: number | Date; + x: number | Date; + y: number[]; + style?: Style; +}; +export type RawOrBucket = T & + (VCDataPoint | BucketDataPoint); + +export type LegendItem = { + name: string; + symbol: { fill: string; type?: string }; +}; + +// Create a legend object recognized by Victory. "Type" is optional (default is a square), it refers to a shape ('circle', 'star', etc.) +export const makeLegend = ( + name: string, + color: string, + type?: string, +): LegendItem => { + return { + name: name, + symbol: { + fill: color, + type: type, + }, + }; +}; + +export type VCLine = { + datapoints: T[]; + color?: string; + legendItem: LegendItem; +}; + +export type VCLines = VCLine[]; diff --git a/workspaces/kiali/plugins/kiali/src/types/Workload.ts b/workspaces/kiali/plugins/kiali/src/types/Workload.ts new file mode 100644 index 0000000000..6f4fc60ce0 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/types/Workload.ts @@ -0,0 +1,126 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { WorkloadHealth, WorkloadHealthResponse } from './Health'; +import { ObjectReference, Pod, Service, Validations } from './IstioObjects'; +import { Namespace } from './Namespace'; + +export interface WorkloadId { + namespace: string; + workload: string; +} + +export interface Workload { + name: string; + cluster?: string; + type: string; + createdAt: string; + resourceVersion: string; + istioInjectionAnnotation?: boolean; + istioSidecar: boolean; + istioAmbient: boolean; + labels: { [key: string]: string }; + appLabel: boolean; + versionLabel: boolean; + replicas: Number; + availableReplicas: Number; + pods: Pod[]; + annotations: { [key: string]: string }; + health?: WorkloadHealthResponse; + services: Service[]; + runtimes: Runtime[]; + additionalDetails: AdditionalItem[]; + validations?: Validations; + waypointWorkloads: Workload[]; +} + +export const emptyWorkload: Workload = { + name: '', + type: '', + createdAt: '', + resourceVersion: '', + istioSidecar: true, // true until proven otherwise + istioAmbient: false, + labels: {}, + appLabel: false, + versionLabel: false, + replicas: 0, + availableReplicas: 0, + pods: [], + annotations: {}, + services: [], + runtimes: [], + additionalDetails: [], + waypointWorkloads: [], +}; + +export const WorkloadType = { + CronJob: 'CronJob', + DaemonSet: 'DaemonSet', + Deployment: 'Deployment', + DeploymentConfig: 'DeploymentConfig', + Job: 'Job', + Pod: 'Pod', + ReplicaSet: 'ReplicaSet', + ReplicationController: 'ReplicationController', + StatefulSet: 'StatefulSet', +}; + +export interface WorkloadOverview { + name: string; + cluster?: string; + type: string; + istioSidecar: boolean; + istioAmbient: boolean; + additionalDetailSample?: AdditionalItem; + appLabel: boolean; + versionLabel: boolean; + labels: { [key: string]: string }; + istioReferences: ObjectReference[]; + notCoveredAuthPolicy: boolean; + health: WorkloadHealth; +} + +export interface WorkloadListItem extends WorkloadOverview { + namespace: string; +} + +export interface WorkloadNamespaceResponse { + namespace: Namespace; + workloads: WorkloadOverview[]; + validations: Validations; +} + +export interface Runtime { + name: string; + dashboardRefs: DashboardRef[]; +} + +export interface DashboardRef { + template: string; + title: string; +} + +export interface AdditionalItem { + title: string; + value: string; + icon?: string; +} + +export interface WorkloadQuery { + health: 'true' | 'false'; + rateInterval: string; + validate: 'true' | 'false'; +} diff --git a/workspaces/kiali/plugins/kiali/src/types/types.ts b/workspaces/kiali/plugins/kiali/src/types/types.ts new file mode 100644 index 0000000000..c0566237d5 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/types/types.ts @@ -0,0 +1,32 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import axios, { AxiosError, AxiosResponse } from 'axios'; + +export const ENTITY = 'entity'; +export const DRAWER = 'drawer'; + +export interface KialiError { + detail: string; + error: string; +} + +export type ApiResponse = Partial> & { + data: T; +}; + +export type ApiError = AxiosError; + +export const isApiError = axios.isAxiosError; diff --git a/workspaces/kiali/plugins/kiali/src/utils/Alertutils.ts b/workspaces/kiali/plugins/kiali/src/utils/Alertutils.ts new file mode 100644 index 0000000000..f974b459e8 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/utils/Alertutils.ts @@ -0,0 +1,154 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { Dispatch } from 'react'; + +import axios, { AxiosError } from 'axios'; + +import { KialiAppAction } from '../actions/KialiAppAction'; +import { MessageCenterActions } from '../actions/MessageCenterActions'; +import * as API from '../services/Api'; +import { MessageType } from '../types/MessageCenter'; + +export type Message = { + content: string; + detail?: string; + group?: string; + type?: MessageType; + showNotification?: boolean; +}; + +export const extractAxiosError = ( + message: string, + error: AxiosError, +): { content: string; detail: string } => { + const errorString: string = API.getErrorString(error); + const errorDetail: string = API.getErrorDetail(error); + if (message) { + // combine error string and detail into a single detail + if (errorString && errorDetail) { + return { + content: message, + detail: `${errorString}\nAdditional Detail:\n${errorDetail}`, + }; + } else if (errorDetail) { + return { content: message, detail: errorDetail }; + } + return { content: message, detail: errorString }; + } + return { content: errorString, detail: errorDetail }; +}; + +export class AlertUtils { + dispatch: Dispatch; + + constructor(dispatch: Dispatch) { + this.dispatch = dispatch; + } + + add = (content: string, group?: string, type?: MessageType) => { + this.dispatch(MessageCenterActions.addMessage(content, '', group, type)); + }; + + addInfo = ( + content: string, + showNotification?: boolean, + group?: string, + detail?: string, + ) => { + this.dispatch( + MessageCenterActions.addMessage( + content, + detail ?? '', + group, + MessageType.INFO, + showNotification, + ), + ); + }; + + addSuccess = ( + content: string, + showNotification?: boolean, + group?: string, + detail?: string, + ) => { + this.dispatch( + MessageCenterActions.addMessage( + content, + detail ?? '', + group, + MessageType.SUCCESS, + showNotification, + ), + ); + }; + + addWarning = ( + content: string, + showNotification?: boolean, + group?: string, + detail?: string, + ) => { + this.dispatch( + MessageCenterActions.addMessage( + content, + detail ?? '', + group, + MessageType.WARNING, + showNotification, + ), + ); + }; + + addMessage = (msg: Message) => { + this.dispatch( + MessageCenterActions.addMessage( + msg.content, + msg.detail ?? '', + msg.group, + msg.type, + msg.showNotification, + ), + ); + }; + + addError = ( + message: string, + error?: Error, + group?: string, + type?: MessageType, + detail?: string, + ) => { + if (axios.isAxiosError(error)) { + const finalType: MessageType = type ?? MessageType.ERROR; + const err = extractAxiosError(message, error); + this.addMessage({ + ...err, + group: group, + type: finalType, + }); + } else { + this.dispatch( + MessageCenterActions.addMessage( + message, + detail ?? '', + group, + MessageType.ERROR, + ), + ); + } + }; +} diff --git a/workspaces/kiali/plugins/kiali/src/utils/Callback.ts b/workspaces/kiali/plugins/kiali/src/utils/Callback.ts new file mode 100644 index 0000000000..bd8d23d3aa --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/utils/Callback.ts @@ -0,0 +1,44 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { useEffect, useRef, useState } from 'react'; + +type CallBackType = (updatedValue: T) => void; + +type SetStateType = T | ((prev: T) => T); + +type RetType = ( + initialValue: T | (() => T), +) => [T, (newValue: SetStateType, callback?: CallBackType) => void]; + +const useCallbackState: RetType = (initialValue: T | (() => T)) => { + const [state, _setState] = useState(initialValue); + const callbackQueue = useRef[]>([]); + + useEffect(() => { + callbackQueue.current.forEach(cb => cb(state)); + callbackQueue.current = []; + }, [state]); + + const setState = (newValue: SetStateType, callback?: CallBackType) => { + _setState(newValue); + if (callback && typeof callback === 'function') { + callbackQueue.current.push(callback); + } + }; + return [state, setState]; +}; + +export default useCallbackState; diff --git a/workspaces/kiali/plugins/kiali/src/utils/CancelablePromises.ts b/workspaces/kiali/plugins/kiali/src/utils/CancelablePromises.ts new file mode 100644 index 0000000000..258dcdecd8 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/utils/CancelablePromises.ts @@ -0,0 +1,109 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export class CancelablePromise { + promise: Promise; + next?: CancelablePromise; + private hasCanceled = false; + + constructor(promise: Promise) { + this.promise = new Promise((resolve, reject) => { + promise.then( + val => (this.hasCanceled ? reject({ isCanceled: true }) : resolve(val)), + error => + this.hasCanceled ? reject({ isCanceled: true }) : reject(error), + ); + }); + } + + cancel() { + this.hasCanceled = true; + if (this.next) { + this.next.cancel(); + } + } + + chain(mapper: (t: T) => Promise): CancelablePromise { + // eslint-disable-next-line + let last: CancelablePromise = this; + while (last.next) { + last = last.next; + } + last.next = new CancelablePromise( + this.promise.then(t => (this.hasCanceled ? t : mapper(t))), + ); + this.promise = last.next.promise; + return last.next; + } +} + +export const makeCancelablePromise = ( + promise: Promise, +): CancelablePromise => { + return new CancelablePromise(promise); +}; + +export class PromisesRegistry { + private promises: Map> = new Map(); + + register(key: string, promise: Promise): Promise { + const previous = this.promises.get(key); + if (previous) { + previous.cancel(); + } + const cancelable = makeCancelablePromise(promise); + this.promises.set(key, cancelable); + return cancelable.promise; + } + + registerChained( + key: string, + initial: T, + mapper: (t: T) => Promise, + ): Promise { + const previous = this.promises.get(key); + if (previous) { + previous.chain(mapper); + return previous.promise; + } + const cancelable = new CancelablePromise(mapper(initial)); + this.promises.set(key, cancelable); + return cancelable.promise; + } + async waitAll() { + await Promise.all(this.promises); + } + + registerAll(key: string, promises: Promise[]): Promise { + return this.register(key, Promise.all(promises)); + } + + cancelAll() { + this.promises.forEach(promise => promise.cancel()); + this.promises.clear(); + } + + cancel(key: string) { + const previous = this.promises.get(key); + if (previous) { + previous.cancel(); + this.promises.delete(key); + } + } + + has(key: string): boolean { + return this.promises.has(key); + } +} diff --git a/workspaces/kiali/plugins/kiali/src/utils/Common.ts b/workspaces/kiali/plugins/kiali/src/utils/Common.ts new file mode 100644 index 0000000000..196615278c --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/utils/Common.ts @@ -0,0 +1,64 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { Namespace } from '../types/Namespace'; + +// @ts-expect-error +export const removeDuplicatesArray = a => + [...Array.from(new Set(a))] as string[]; + +export const arrayEquals = ( + a1: T[], + a2: T[], + comparator: (v1: T, v2: T) => boolean, +) => { + if (a1.length !== a2.length) { + return false; + } + for (let i = 0; i < a1.length; ++i) { + if (!comparator(a1[i], a2[i])) { + return false; + } + } + return true; +}; + +export const namespaceEquals = (ns1: Namespace[], ns2: Namespace[]): boolean => + arrayEquals(ns1, ns2, (n1, n2) => n1.name === n2.name); + +export function groupBy(items: T[], key: keyof T): { [key: string]: T[] } { + return items.reduce( + (result, item) => ({ + ...result, + [item[key as string]]: [...(result[item[key as string]] || []), item], + }), + {} as { [key: string]: T[] }, + ); +} + +export type validationType = 'success' | 'warning' | 'error' | 'default'; +export const isValid = ( + isValidS?: boolean, + isWarning?: boolean, +): validationType => { + if (isValidS === undefined) { + return 'default'; + } + if (isValidS) { + return 'success'; + } + return isWarning ? 'warning' : 'error'; +}; diff --git a/workspaces/kiali/plugins/kiali/src/utils/Date.ts b/workspaces/kiali/plugins/kiali/src/utils/Date.ts new file mode 100644 index 0000000000..96be7dcadb --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/utils/Date.ts @@ -0,0 +1,22 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export const toLocaleStringWithConditionalDate = (date: Date): string => { + const nowDate = new Date().toLocaleDateString(); + const thisDate = date.toLocaleDateString(); + return nowDate === thisDate + ? date.toLocaleTimeString() + : date.toLocaleString(); +}; diff --git a/workspaces/kiali/plugins/kiali/src/utils/Formatter.ts b/workspaces/kiali/plugins/kiali/src/utils/Formatter.ts new file mode 100644 index 0000000000..3525f917c7 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/utils/Formatter.ts @@ -0,0 +1,166 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +type D3FormatFunc = ( + specifier: string, +) => (n: number | { valueOf(): number }) => string; + +const formatSI = ( + d3Format: D3FormatFunc, + val: number, + suffix: string, + withUnit: boolean, +): string => { + const fmt = d3Format('~s')(val); + let si = ''; + // Insert space before SI + // "fmt" can be something like: + // - "9k" => we want "9 kB" + // - "9" => we want "9 B" + for (let i = fmt.length - 1; i >= 0; i--) { + const c = fmt.charAt(i); + if (c >= '0' && c <= '9') { + const res = fmt.substr(0, i + 1); + return withUnit ? `${res} ${si}${suffix}` : res; + } + si = c + si; + } + // Weird: no number found? + return withUnit ? fmt + suffix : fmt; +}; + +const formatData = ( + d3Format: D3FormatFunc, + val: number, + threshold: number, + units: string[], + withUnit: boolean, +): string => { + if (Math.abs(val) < threshold) { + return `${val} `; + } + let u = -1; + let value = val; + do { + value /= threshold; + ++u; + } while (Math.abs(value) >= threshold && u < units.length - 1); + const unit = d3Format('~r')(value); + return withUnit ? `${unit} ${units[u]}` : unit; +}; + +const formatDataSI = ( + d3Format: D3FormatFunc, + val: number, + suffix: string, + withUnit: boolean, +): string => { + const formD = formatData( + d3Format, + val, + 1000, + ['k', 'M', 'G', 'T', 'P', 'E', 'Z', 'Y'], + withUnit, + ); + return withUnit ? formD + suffix : formD; +}; + +const formatDataIEC = ( + d3Format: D3FormatFunc, + val: number, + suffix: string, + withUnit: boolean, +): string => { + const formD = formatData( + d3Format, + val, + 1024, + ['Ki', 'Mi', 'Gi', 'Ti', 'Pi', 'Ei', 'Zi', 'Yi'], + withUnit, + ); + return withUnit ? formD + suffix : formD; +}; + +export const getUnit = ( + d3Format: D3FormatFunc, + unit: string, + value: number, +) => { + // Round to dismiss float imprecision + const val = Math.round(value * 10000) / 10000; + let unitResult = ''; + switch (unit) { + case 'seconds': + unitResult = formatSI(d3Format, val, 's', true); + break; + case 'bytes': + case 'bytes-si': + unitResult = formatDataSI(d3Format, val, 'B', true); + break; + case 'bytes-iec': + unitResult = formatDataIEC(d3Format, val, 'B', true); + break; + case 'bitrate': + case 'bitrate-si': + unitResult = formatDataSI(d3Format, val, 'bit/s', true); + break; + case 'bitrate-iec': + unitResult = formatDataIEC(d3Format, val, 'bit/s', true); + break; + case 'connrate': + unitResult = formatDataSI(d3Format, val, 'conn/s', true); + break; + case 'msgrate': + unitResult = formatDataSI(d3Format, val, 'msg/s', true); + break; + default: + // Fallback to default SI scaler: + unitResult = formatDataSI(d3Format, val, unit, true); + break; + } + return unitResult.split(' ')[1]; +}; + +export const getFormatter = ( + d3Format: D3FormatFunc, + unit: string, + withUnit: boolean = false, +) => { + return (val: number): string => { + // Round to dismiss float imprecision + const value = Math.round(val * 10000) / 10000; + switch (unit) { + case 'seconds': + return formatSI(d3Format, value, 's', withUnit); + case 'bytes': + case 'bytes-si': + return formatDataSI(d3Format, value, 'B', withUnit); + case 'bytes-iec': + return formatDataIEC(d3Format, value, 'B', withUnit); + case 'bitrate': + case 'bitrate-si': + return formatDataSI(d3Format, value, 'bit/s', withUnit); + case 'bitrate-iec': + return formatDataIEC(d3Format, value, 'bit/s', withUnit); + case 'connrate': + return formatDataSI(d3Format, value, 'conn/s', withUnit); + case 'msgrate': + return formatDataSI(d3Format, value, 'msg/s', withUnit); + default: + // Fallback to default SI scaler: + return formatDataSI(d3Format, value, unit, withUnit); + } + }; +}; diff --git a/workspaces/kiali/plugins/kiali/src/utils/IstioConfigUtils.ts b/workspaces/kiali/plugins/kiali/src/utils/IstioConfigUtils.ts new file mode 100644 index 0000000000..80c6940125 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/utils/IstioConfigUtils.ts @@ -0,0 +1,245 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import _ from 'lodash'; + +import { IstioConfigDetails } from '../types/IstioConfigDetails'; +import { IstioConfigItem } from '../types/IstioConfigList'; +import { + IstioObject, + ObjectCheck, + OutlierDetection, + StatusCondition, + Validations, +} from '../types/IstioObjects'; + +export const mergeJsonPatch = ( + objectModified: object, + object?: object, +): object => { + if (!object) { + return objectModified; + } + const customizer = ( + objValue: object | null, + srcValue: object, + ): object | null => { + if (!objValue) { + return null; + } + if (_.isObject(objValue) && _.isObject(srcValue)) { + _.mergeWith(objValue, srcValue, customizer); + } + return objValue; + }; + _.mergeWith(objectModified, object, customizer); + return objectModified; +}; + +const k8sHostRegexp = + /^(\*\.)?[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$/; +const nsRegexp = + /^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[-a-z0-9]([-a-z0-9]*[a-z0-9])?)*$/; +const hostRegexp = + /(?=^.{4,253}$)(^((?!-)(([a-zA-Z0-9-]{0,62}[a-zA-Z0-9])|\*)\.)+[a-zA-Z]{2,63}$)/; +const ipRegexp = + /^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\/([0-9]|[1-2][0-9]|3[0-2]))?$/; +const durationRegexp = /^[\d]{1,10}\.?[\d]{0,10}(h|m|s|ms)$/; + +// K8s gateway hosts have only dnsName +export const isK8sGatewayHostValid = (k8sGatewayHost: string): boolean => { + if (k8sGatewayHost.length < 1 && k8sGatewayHost.length > 253) { + return false; + } + + // K8s gateway host must be fqdn but not ip address + if ( + k8sGatewayHost.split('.').length < 2 || + k8sGatewayHost.search(ipRegexp) === 0 + ) { + return false; + } + + return k8sGatewayHost.search(k8sHostRegexp) === 0; +}; + +// Used to check if Sidecar and Gateway host expressions are valid +export const isServerHostValid = ( + serverHost: string, + nsMandatory: boolean, +): boolean => { + if (serverHost.length === 0) { + return false; + } + // / + const parts = serverHost.split('/'); + // More than one / + if (parts.length > 2) { + return false; + } + // Force that namespace/dnsName are present + if (nsMandatory && parts.length < 2) { + return false; + } + + // parts[0] is a dns + let dnsValid = true; + let hostValid = true; + let dns = ''; + let host = ''; + if (parts.length === 2) { + dns = parts[0]; + host = parts[1]; + + if (dns !== '.' && dns !== '*') { + dnsValid = parts[0].search(nsRegexp) === 0; + } + } else { + host = parts[0]; + } + + if (host !== '*') { + hostValid = host.search(hostRegexp) === 0; + } + return dnsValid && hostValid; +}; + +export const isValidIp = (ip: string): boolean => { + return ipRegexp.test(ip); +}; + +export const isValidUrl = (url: string): boolean => { + try { + // eslint-disable-next-line no-new + new URL(url); + } catch (__) { + return false; + } + return true; +}; + +export const isValidDuration = (duration: string): boolean => { + if ( + duration === '0ms' || + duration === '0s' || + duration === '0m' || + duration === '0h' + ) { + return false; + } + return durationRegexp.test(duration); +}; + +export const isValidAbortStatusCode = (statusCode: number): boolean => { + return statusCode >= 100 && statusCode <= 599; +}; + +export const isValidOutlierDetection = ( + outlierDetection: OutlierDetection, +): boolean => { + if ( + outlierDetection.interval && + !isValidDuration(outlierDetection.interval) + ) { + return false; + } + if ( + outlierDetection.baseEjectionTime && + !isValidDuration(outlierDetection.baseEjectionTime) + ) { + return false; + } + return true; +}; + +export const hasMissingAuthPolicy = ( + workloadName: string, + validations: Validations | undefined, +): boolean => { + let hasMissingAP = false; + + if (!validations) { + return hasMissingAP; + } + + if (validations.workload && validations.workload[workloadName]) { + const workloadValidation = validations.workload[workloadName]; + + workloadValidation.checks.forEach((check: ObjectCheck) => { + if (check.code === 'KIA1301') { + hasMissingAP = true; + } + }); + } + + return hasMissingAP; +}; + +export const getIstioObject = ( + istioObjectDetails?: IstioConfigDetails | IstioConfigItem, +): IstioObject | undefined => { + let istioObject: IstioObject | undefined; + if (istioObjectDetails) { + if (istioObjectDetails.gateway) { + istioObject = istioObjectDetails.gateway; + } else if (istioObjectDetails.k8sGateway) { + istioObject = istioObjectDetails.k8sGateway; + } else if (istioObjectDetails.k8sGRPCRoute) { + istioObject = istioObjectDetails.k8sGRPCRoute; + } else if (istioObjectDetails.k8sHTTPRoute) { + istioObject = istioObjectDetails.k8sHTTPRoute; + } else if (istioObjectDetails.k8sReferenceGrant) { + istioObject = istioObjectDetails.k8sReferenceGrant; + } else if (istioObjectDetails.k8sTCPRoute) { + istioObject = istioObjectDetails.k8sTCPRoute; + } else if (istioObjectDetails.k8sTLSRoute) { + istioObject = istioObjectDetails.k8sTLSRoute; + } else if (istioObjectDetails.virtualService) { + istioObject = istioObjectDetails.virtualService; + } else if (istioObjectDetails.destinationRule) { + istioObject = istioObjectDetails.destinationRule; + } else if (istioObjectDetails.serviceEntry) { + istioObject = istioObjectDetails.serviceEntry; + } else if (istioObjectDetails.workloadEntry) { + istioObject = istioObjectDetails.workloadEntry; + } else if (istioObjectDetails.workloadGroup) { + istioObject = istioObjectDetails.workloadGroup; + } else if (istioObjectDetails.envoyFilter) { + istioObject = istioObjectDetails.envoyFilter; + } else if (istioObjectDetails.authorizationPolicy) { + istioObject = istioObjectDetails.authorizationPolicy; + } else if (istioObjectDetails.peerAuthentication) { + istioObject = istioObjectDetails.peerAuthentication; + } else if (istioObjectDetails.requestAuthentication) { + istioObject = istioObjectDetails.requestAuthentication; + } else if (istioObjectDetails.sidecar) { + istioObject = istioObjectDetails.sidecar; + } else if (istioObjectDetails.wasmPlugin) { + istioObject = istioObjectDetails.wasmPlugin; + } else if (istioObjectDetails.telemetry) { + istioObject = istioObjectDetails.telemetry; + } + } + return istioObject; +}; + +export const getReconciliationCondition = ( + istioConfigDetails?: IstioConfigDetails | IstioConfigItem, +): StatusCondition | undefined => { + const istioObject = getIstioObject(istioConfigDetails); + return istioObject?.status?.conditions?.find( + condition => condition.type === 'Reconciled', + ); +}; diff --git a/workspaces/kiali/plugins/kiali/src/utils/RateIntervals.ts b/workspaces/kiali/plugins/kiali/src/utils/RateIntervals.ts new file mode 100644 index 0000000000..0596041204 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/utils/RateIntervals.ts @@ -0,0 +1,34 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { config } from '../config'; +import { serverConfig } from '../config/ServerConfig'; +import { IntervalInMilliseconds } from '../types/Common'; + +export const getName = (durationSeconds: number): string => { + const name = serverConfig.durations[durationSeconds]; + if (name) { + return name; + } + return `${durationSeconds} seconds`; +}; + +export const getRefreshIntervalName = ( + refreshInterval: IntervalInMilliseconds, +): string => { + // @ts-expect-error + const refreshIntervalOption = config.toolbar.refreshInterval[refreshInterval]; + return refreshIntervalOption.replace('Every ', ''); +}; diff --git a/workspaces/kiali/plugins/kiali/src/utils/Reducer.ts b/workspaces/kiali/plugins/kiali/src/utils/Reducer.ts new file mode 100644 index 0000000000..6d30fe4304 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/utils/Reducer.ts @@ -0,0 +1,18 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export const updateState = (oldState: S, updatedState: Partial): S => { + return { ...oldState, ...updatedState }; +}; diff --git a/workspaces/kiali/plugins/kiali/src/utils/ResponseFlags.ts b/workspaces/kiali/plugins/kiali/src/utils/ResponseFlags.ts new file mode 100644 index 0000000000..a1a315f754 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/utils/ResponseFlags.ts @@ -0,0 +1,82 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +// https://www.envoyproxy.io/docs/envoy/latest/configuration/observability/access_log/usage +export const responseFlags = { + DC: { + code: '500', + help: 'Downstream connection termination', + short: 'Downstream cx term', + }, + DI: { help: 'Delayed via fault injection' }, + DPE: { + help: ' Downstream request had an HTTP protocol error (is port type correct?)', + short: 'Downstream invalid HTTP', + }, + FI: { help: 'Aborted via fault injection' }, + IH: { + code: '400', + help: 'Invalid value for a strictly-checked header', + short: 'Invalid header value', + }, + LH: { + code: '503', + help: 'Local service failed health check request', + short: 'Failed health check', + }, + LR: { code: '503', help: 'Connection local reset' }, + NR: { + code: '404', + help: 'No route configured (check DestinationRule or VirtualService)', + short: 'No route', + }, + RL: { + code: '429', + help: 'Ratelimited locally by the HTTP rate limit filter', + short: 'Rate limit', + }, + RLSE: { help: 'Rate limited service error' }, + SI: { code: '408', help: 'Stream idle timeout' }, + UAEX: { help: 'Unauthorized external service' }, + UC: { + code: '503', + help: 'Upstream connection termination', + short: 'Upstream cx term', + }, + UF: { + code: '503', + help: 'Upstream connection failure (check for mutual TLS configuration conflict)', + short: 'Upstream cx failure', + }, + UH: { + code: '503', + help: 'No healthy upstream hosts in upstream cluster', + short: 'No healthy upstream', + }, + UMSDR: { help: 'Upstream request reached max stream duration' }, + UO: { + code: '503', + help: 'Upstream overflow (circuit breaker open)', + short: 'Circuit breaker open', + }, + UR: { code: '503', help: 'Upstream remote reset' }, + URX: { + code: '503', + help: 'Upstream retry limit (HTTP) or Max connect attempts (TCP) exceeded', + short: 'Upstream retry/connect limit', + }, + UT: { code: '504', help: 'Upstream request timeout' }, +}; diff --git a/workspaces/kiali/plugins/kiali/src/utils/SafeRender.tsx b/workspaces/kiali/plugins/kiali/src/utils/SafeRender.tsx new file mode 100644 index 0000000000..29087c8d84 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/utils/SafeRender.tsx @@ -0,0 +1,34 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import * as React from 'react'; + +import { ErrorCircleOIcon } from '@patternfly/react-icons'; + +export const canRender = (value: any): boolean => { + return typeof value !== 'object'; +}; + +export const renderErrorMessage = (message: string): any => { + return ( + <> + {`${message} `} + + ); +}; + +export const safeRender = (value: any, message = 'Invalid value'): any => { + return canRender(value) ? value : renderErrorMessage(message); +}; diff --git a/workspaces/kiali/plugins/kiali/src/utils/TimeSeriesUtils.ts b/workspaces/kiali/plugins/kiali/src/utils/TimeSeriesUtils.ts new file mode 100644 index 0000000000..346156d14e --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/utils/TimeSeriesUtils.ts @@ -0,0 +1,138 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { AllPromLabelsValues, Labels, Metric } from '../types/Metrics'; + +type KVMapper = (key: string, value: string) => string; +export type LabelsInfo = { + values: AllPromLabelsValues; + prettifier?: KVMapper; +}; + +const isVisibleMetric = ( + labels: Labels, + labelValues: AllPromLabelsValues, +): boolean => { + for (const promLabelName in labels) { + if (Object.prototype.hasOwnProperty.call(labels, promLabelName)) { + const actualValue = labels[promLabelName]; + const values = labelValues.get(promLabelName); + if ( + values && + Object.prototype.hasOwnProperty.call(values, actualValue) && + !values[actualValue] + ) { + return false; + } + } + } + return true; +}; + +const getMultipleValuesLabels = (metrics: Metric[]): Set => { + const singleValueLabels = new Map(); + const multipleValuesLabels = new Set(); + metrics.forEach(m => { + Object.entries(m.labels).forEach(e => { + if (multipleValuesLabels.has(e[0])) { + return; + } + const value = singleValueLabels.get(e[0]); + if (value === undefined) { + singleValueLabels.set(e[0], e[1]); + } else if (value !== e[1]) { + singleValueLabels.delete(e[0]); + multipleValuesLabels.add(e[0]); + } + }); + }); + return multipleValuesLabels; +}; + +const mapStatForDisplay = (stat?: string): string | undefined => { + switch (stat) { + case '0.5': + return 'p50'; + case '0.95': + return 'p95'; + case '0.99': + return 'p99'; + case '0.999': + return 'p99.9'; + default: + return stat; + } +}; + +const renameMetrics = ( + metrics: Metric[], + labelPrettifier?: KVMapper, +): Metric[] => { + let hasSeveralFamilyNames = false; + if (metrics.length > 0) { + const firstName = metrics[0].name; + hasSeveralFamilyNames = metrics.some(s => s.name !== firstName); + } + const multipleValuesLabels = getMultipleValuesLabels(metrics); + return metrics.map(m => { + const name = m.name; + const stat = mapStatForDisplay(m.stat); + const labelsNoReporter = { ...m.labels }; + delete labelsNoReporter.reporter; + const otherLabels = Object.entries(labelsNoReporter) + .filter(e => multipleValuesLabels.has(e[0])) + .map(e => (labelPrettifier ? labelPrettifier(e[0], e[1]) : e[1])); + const labels = (stat ? [stat] : []).concat(otherLabels).join(','); + let finalName = ''; + if (labels === '') { + // E.g. Serie A + finalName = name; + } else if (hasSeveralFamilyNames) { + // E.g. Serie A [p99,another_label_value] + finalName = `${name} [${labels}]`; + } else { + // E.g. p99,another_label_value + // (since we only have a single serie name, it is considered implicit and we save some characters space) + finalName = labels; + } + return { + ...m, + name: finalName, + }; + }); +}; + +export const filterAndRenameMetric = ( + metrics: Metric[], + labels: LabelsInfo, +): Metric[] => { + const filtered = metrics.filter(m => + isVisibleMetric(m.labels, labels.values), + ); + return renameMetrics(filtered, labels.prettifier); +}; + +export const generateKey = (metrics: Metric[], chartName: string): string => { + if (metrics.length === 0) { + return 'blank'; + } + + const labelNames = Object.keys(metrics[0].labels); + if (labelNames.length === 0) { + return chartName; + } + + return `${chartName}-${labelNames.join('-')}`; +}; diff --git a/workspaces/kiali/plugins/kiali/src/utils/VictoryChartsUtils.ts b/workspaces/kiali/plugins/kiali/src/utils/VictoryChartsUtils.ts new file mode 100644 index 0000000000..9ee042fe42 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/utils/VictoryChartsUtils.ts @@ -0,0 +1,266 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { ChartModel, XAxisType } from '../types/Dashboards'; +import { Datapoint, Metric } from '../types/Metrics'; +import { Overlay, OverlayInfo } from '../types/Overlay'; +import { + BucketDataPoint, + LegendItem, + LineInfo, + makeLegend, + RichDataPoint, + VCDataPoint, + VCLine, + VCLines, +} from '../types/VictoryChartInfo'; +import { filterAndRenameMetric, LabelsInfo } from './TimeSeriesUtils'; + +export const toVCDatapoints = ( + dps: Datapoint[], + name: string, +): VCDataPoint[] => { + return dps + .map(dp => { + return { + name: name, + x: new Date(dp[0] * 1000), + y: Number(dp[1]), + y0: dp.length > 2 ? dp[2] : undefined, + }; + }) + .filter(dp => !isNaN(dp.y) && (dp.y0 === undefined || !isNaN(dp.y0))); +}; + +export const toVCSinglePoint = ( + dps: Datapoint[], + name: string, +): VCDataPoint[] => { + const last = dps + .filter(dp => !isNaN(dp[1]) && (dp[2] === undefined || !isNaN(dp[2]))) + .reduce((p, c) => (c[0] > p[0] ? c : p)); + if (last) { + return [ + { + name: name, + time: new Date(last[0] * 1000), + x: 0, // placeholder + y: Number(last[1]), + y0: last[2] ?? Number(last[1]), + } as VCDataPoint, + ]; + } + return []; +}; + +const buildVCLine = ( + dps: VCDataPoint[], + lineInfo: T, +): VCLine => { + const datapoints: (VCDataPoint & T)[] = dps.map(dp => ({ + ...lineInfo, + ...dp, + })); + const legendItem: LegendItem = makeLegend( + lineInfo.name, + lineInfo.color, + lineInfo.symbol, + ); + return { + datapoints: datapoints, + legendItem: legendItem, + color: lineInfo.color, + }; +}; + +export const toVCLine = ( + dps: Datapoint[], + name: string, + color: string, +): VCLine => { + return buildVCLine(toVCDatapoints(dps, name), { name: name, color: color }); +}; + +export const toVCLines = ( + metrics: Metric[], + unit: string, + colors: string[], + xAxis: XAxisType = 'time', +): VCLines => { + // In case "reporter" is in the labels, arrange the metrics in source-destination pairs to + // draw area charts. + if (metrics.length > 0 && metrics[0].labels?.reporter !== undefined) { + const pairedMetrics: { [key: string]: [Metric?, Metric?] } = {}; + metrics.forEach(metric => { + const reporter = metric.labels.reporter; + const labelsNoReporter = { ...metric.labels }; + delete labelsNoReporter.reporter; + let labelsStr = Object.keys(labelsNoReporter) + .map(k => `${k}=${labelsNoReporter[k]}`) + .sort((a, b) => a.localeCompare(b)) + .join(','); + labelsStr = `name=${metric.name},stat=${metric.stat}% ${labelsStr}`; + + if (!pairedMetrics[labelsStr]) { + pairedMetrics[labelsStr] = [undefined, undefined]; + } + + pairedMetrics[labelsStr][reporter === 'source' ? 0 : 1] = metric; + }); + + return Object.values(pairedMetrics).map((twoLines, i) => { + const color = colors[i % colors.length]; + + let datapoints: Datapoint[] = []; + let name: string = ''; + if (twoLines[0] !== undefined && twoLines[1] !== undefined) { + name = twoLines[0].name; + const minDatapointsLength = + twoLines[0].datapoints.length < twoLines[1].datapoints.length + ? twoLines[0].datapoints.length + : twoLines[1].datapoints.length; + + for ( + let j = 0, sourceIdx = 0, destIdx = 0; + j < minDatapointsLength; + j++ + ) { + if ( + twoLines[0].datapoints[sourceIdx][0] !== + twoLines[1].datapoints[destIdx][0] + ) { + // Usually, all series have the same samples at same timestamps (i.e. series are time synced or synced on the x axis). + // There are rare cases when there are some additional samples usually at the beginning or end of some series. + // If this happens, let's skip these additional samples, to have properly x-axis synced values. + if ( + twoLines[0].datapoints[sourceIdx][0] < + twoLines[1].datapoints[destIdx][0] + ) { + sourceIdx++; + } else { + destIdx++; + } + continue; + } + + datapoints.push([ + twoLines[0].datapoints[sourceIdx][0], + twoLines[0].datapoints[sourceIdx][1], + twoLines[1].datapoints[destIdx][1], + ]); + sourceIdx++; + destIdx++; + } + } else if (twoLines[0] !== undefined) { + // Assign zero value to "y0" to denote "no data" for the destination reporter + name = twoLines[0].name; + datapoints = twoLines[0].datapoints.map(d => [d[0], d[1], 0]); + } else if (twoLines[1] !== undefined) { + // Assign zero value to "y" to denote "no data" for the source reporter + name = twoLines[1].name; + datapoints = twoLines[1].datapoints.map(d => [d[0], 0, d[1]]); + } + + const dps = + xAxis === 'time' + ? toVCDatapoints(datapoints, name) + : toVCSinglePoint(datapoints, name); + return buildVCLine(dps, { name: name, unit: unit, color: color }); + }); + } + + return metrics.map((line, i) => { + const color = colors[i % colors.length]; + const dps = + xAxis === 'time' + ? toVCDatapoints(line.datapoints, line.name) + : toVCSinglePoint(line.datapoints, line.name); + return buildVCLine(dps, { name: line.name, unit: unit, color: color }); + }); +}; + +export const getDataSupplier = ( + chart: ChartModel, + labels: LabelsInfo, + colors: string[], +): (() => VCLines) => { + return () => { + const filtered = filterAndRenameMetric(chart.metrics, labels); + return toVCLines(filtered, chart.unit, colors, chart.xAxis || 'time'); + }; +}; + +// toBuckets accumulates datapoints into bukets. +// The result is still a (smaller) list of VCDataPoints, but with Y value being an array of values instead of a single value. +// This data structure is required by VictoryBoxPlot object. +export const toBuckets = ( + nbuckets: number, + datapoints: VCDataPoint[], + lineInfo: T, + timeWindow?: [Date, Date], +): (T & BucketDataPoint)[] => { + if (datapoints.length === 0) { + return []; + } + // xBuilder will preserve X-axis type when building buckets (either dates or raw numbers) + const xBuilder: (x: number) => number | Date = + typeof datapoints[0].x === 'object' ? x => new Date(x) : x => x; + + let min = 0; + let max = 0; + if (timeWindow) { + min = timeWindow[0].getTime(); + max = timeWindow[1].getTime(); + } else { + const times = datapoints.map(dp => Number(dp.x)); + min = Math.min(...times); + max = Math.max(...times); + } + const bucketSize = (1 + max - min) / nbuckets; + // Create $nbuckets buckets at regular intervals with preset / static content $dpInject + const buckets: (T & BucketDataPoint)[] = Array.from( + { length: nbuckets }, + (_, idx) => { + const start = Math.floor(min + idx * bucketSize); + const end = Math.floor(start + bucketSize - 1); + return { + ...lineInfo, + start: xBuilder(start), + end: xBuilder(end), + x: xBuilder(Math.floor(start + bucketSize / 2)), + y: [], + }; + }, + ); + datapoints.forEach(dp => { + // Get bucket index from timestamp + const idx = Math.floor((Number(dp.x) - min) / bucketSize); + // This index might be out of range when a timeWindow is provided, so protect against that + if (idx >= 0 && idx < buckets.length) { + buckets[idx].y.push(dp.y); + } + }); + return buckets.filter(b => b.y.length > 0); +}; + +export const toOverlay = ( + info: OverlayInfo, + dps: VCDataPoint[], +): Overlay => { + return { + info: info, + vcLine: buildVCLine(dps, info.lineInfo), + }; +}; diff --git a/workspaces/kiali/plugins/kiali/src/utils/VictoryEvents.ts b/workspaces/kiali/plugins/kiali/src/utils/VictoryEvents.ts new file mode 100644 index 0000000000..1fb806ed81 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/utils/VictoryEvents.ts @@ -0,0 +1,108 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { LineInfo, RawOrBucket } from '../types/VictoryChartInfo'; + +interface EventItem { + legendName: string; + idx: number; + serieID: string[]; + onClick?: ( + props: RawOrBucket, + ) => Partial> | null; + onMouseOver?: ( + props: RawOrBucket, + ) => Partial> | null; + onMouseOut?: ( + props: RawOrBucket, + ) => Partial> | null; +} + +export type VCEvent = { + childName?: string[]; + target: string; + eventKey?: string; + eventHandlers: EventHandlers; +}; + +type EventHandlers = { + onClick?: (event: MouseEvent) => EventMutation[]; + onMouseOver?: (event: MouseEvent) => EventMutation[]; + onMouseOut?: (event: MouseEvent) => EventMutation[]; +}; + +type EventMutation = { + childName: string[]; + target: string; + mutation: ( + props: RawOrBucket, + ) => Partial> | null; +}; + +export const addLegendEvent = (events: VCEvent[], item: EventItem): void => { + const eventHandlers: EventHandlers = {}; + if (item.onClick) { + eventHandlers.onClick = e => { + e.stopPropagation(); + return [ + { + childName: [item.serieID[0]], + target: 'data', + mutation: props => item.onClick!(props), + }, + { + childName: [item.serieID[0]], + target: 'data', + eventKey: 'all', + mutation: () => null, + }, + ]; + }; + } + if (item.onMouseOver) { + eventHandlers.onMouseOver = () => { + return [ + { + childName: item.serieID, + target: 'data', + eventKey: 'all', + mutation: props => item.onMouseOver!(props), + }, + ]; + }; + eventHandlers.onMouseOut = () => { + return [ + { + childName: item.serieID, + target: 'data', + eventKey: 'all', + mutation: props => (item.onMouseOut ? item.onMouseOut(props) : null), + }, + ]; + }; + } + events.push({ + childName: [item.legendName], + target: 'data', + eventKey: String(item.idx), + eventHandlers: eventHandlers, + }); + events.push({ + childName: [item.legendName], + target: 'labels', + eventKey: String(item.idx), + eventHandlers: eventHandlers, + }); +}; diff --git a/workspaces/kiali/plugins/kiali/src/utils/backstageLinks.tsx b/workspaces/kiali/plugins/kiali/src/utils/backstageLinks.tsx new file mode 100644 index 0000000000..e3be3d9fa9 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/utils/backstageLinks.tsx @@ -0,0 +1,122 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import * as React from 'react'; + +import { Link } from '@backstage/core-components'; +import { + RouteFunc, + SubRouteRef, + useRouteRef, +} from '@backstage/core-plugin-api'; + +import { isMultiCluster } from '../config'; +import { + appDetailRouteRef, + appsRouteRef, + istioConfigDetailRouteRef, + istioConfigRouteRef, + rootRouteRef, + servicesDetailRouteRef, + servicesRouteRef, + workloadsDetailRouteRef, + workloadsRouteRef, +} from '../routes'; + +type routeRefParams = undefined | { [key: string]: string }; +export const backstageRoutesObject: { + [key: string]: { id: string; ref: SubRouteRef }; +} = { + workloads: { id: 'workload', ref: workloadsDetailRouteRef }, + services: { id: 'service', ref: servicesDetailRouteRef }, + applications: { id: 'app', ref: appDetailRouteRef }, + istio: { id: 'object', ref: istioConfigDetailRouteRef }, +}; + +export const backstageRoutesSection: { [key: string]: SubRouteRef } = { + istio: istioConfigRouteRef, + workloads: workloadsRouteRef, + services: servicesRouteRef, + applications: appsRouteRef, +}; + +const addQuery = (endpoint: string, cluster?: string, query?: string) => { + let queryParam = query; + if (cluster && isMultiCluster) { + queryParam += queryParam ? '&' : ''; + queryParam += `clusterName=${cluster}`; + } + return queryParam ? `${endpoint}?${queryParam}` : endpoint; +}; + +interface BackstageLinkProps { + cluster?: string; + key?: string; + className?: string; + entity?: boolean; + root?: boolean; + name?: string; + type: string; + namespace?: string; + objectType?: string; + query?: string; + children?: React.ReactNode; + onClick?: React.MouseEventHandler; +} + +const getRef = (type: string, entity?: boolean, root?: boolean) => { + if (entity && root) { + return rootRouteRef; + } + + if (!entity && root) { + return backstageRoutesSection[type]; + } + + return backstageRoutesObject[type].ref; +}; + +export const BackstageObjectLink = (props: BackstageLinkProps) => { + const { name, type, objectType, namespace, query, cluster } = props; + const link: RouteFunc = useRouteRef( + getRef(type, props.entity, props.root), + ); + let to = ''; + if (!props.root) { + const items: { [key: string]: string } = { namespace: namespace || '' }; + + if (type && name) { + items[backstageRoutesObject[type].id] = name; + } + if (objectType) { + items.objectType = objectType; + } + to = link(items); + } else { + to = link(); + } + const href = addQuery(to, cluster, query); + return ( + + {props.children || `${namespace}/${name}`} + + ); +}; diff --git a/workspaces/kiali/plugins/kiali/src/utils/entityFilter.ts b/workspaces/kiali/plugins/kiali/src/utils/entityFilter.ts new file mode 100644 index 0000000000..f61e04f134 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/utils/entityFilter.ts @@ -0,0 +1,80 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { Entity } from '@backstage/catalog-model'; + +import { + KIALI_ANNOTATION, + KIALI_LABEL_SELECTOR_QUERY_ANNOTATION, + KIALI_NAMESPACE, +} from '../components/Router'; +import { Namespace } from '../types/Namespace'; + +const filterById = (ns: Namespace[], value: string): Namespace[] => { + const values = value.split(','); + return ns.filter( + n => n.labels && values.includes(n.labels[KIALI_ANNOTATION]), + ); +}; + +const filterBySelector = (ns: Namespace[], value: string): Namespace[] => { + const values = value.split(','); + return ns.filter( + n => + values.filter(v => { + const [key, valueLabel] = v.split('='); + return n.labels && n.labels[key] === valueLabel; + }).length > 0, + ); +}; + +const filterByNs = (ns: Namespace[], value: string): Namespace[] => { + const values = value.split(','); + return ns.filter(n => values.includes(n.name)); +}; + +export const filterNsByAnnotation = ( + ns: Namespace[], + entity: Entity | undefined, +): Namespace[] => { + if (!entity) { + return ns; + } + const annotations = entity?.metadata?.annotations || undefined; + if (!annotations) { + return []; + } + + let nsFilter = ns; + nsFilter = annotations[KIALI_ANNOTATION] + ? filterById(nsFilter, decodeURIComponent(annotations[KIALI_ANNOTATION])) + : nsFilter; + nsFilter = annotations[KIALI_LABEL_SELECTOR_QUERY_ANNOTATION] + ? filterBySelector( + nsFilter, + decodeURIComponent(annotations[KIALI_LABEL_SELECTOR_QUERY_ANNOTATION]), + ) + : nsFilter; + nsFilter = annotations[KIALI_NAMESPACE] + ? filterByNs(nsFilter, decodeURIComponent(annotations[KIALI_NAMESPACE])) + : nsFilter; + return nsFilter; +}; + +export const exportedForTesting = { + filterById, + filterBySelector, + filterByNs, +}; diff --git a/workspaces/kiali/plugins/kiali/src/utils/tracing/TraceTransform.ts b/workspaces/kiali/plugins/kiali/src/utils/tracing/TraceTransform.ts new file mode 100644 index 0000000000..bb121f2f97 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/utils/tracing/TraceTransform.ts @@ -0,0 +1,348 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import _isEqual from 'lodash/isEqual'; + +import { + JaegerTrace, + KeyValuePair, + RichSpanData, + Span, + SpanData, + TraceData, +} from '../../types/TracingInfo'; +import { extractSpanInfo, getWorkloadFromSpan } from './TracingHelper'; + +class TreeNode { + value: string; + children: any[]; + + static iterFunction( + fn: (arg0: any, arg1: any, arg2: number) => any, + depth = 0, + ) { + return (node: { value: any }) => fn(node.value, node, depth); + } + + static searchFunction(search: any) { + if (typeof search === 'function') { + return search; + } + + return (value: any, node: TreeNode) => + search instanceof TreeNode ? node === search : value === search; + } + + constructor(value: string, children = []) { + this.value = value; + this.children = children; + } + + get depth() { + return this.children.reduce( + (depth, child) => Math.max(child.depth + 1, depth), + 1, + ); + } + + get size() { + let i = 0; + this.walk(() => i++); + return i; + } + + addChild(child: string) { + // @ts-ignore + this.children.push(child instanceof TreeNode ? child : new TreeNode(child)); + return this; + } + + find(search: any) { + const searchFn = TreeNode.iterFunction(TreeNode.searchFunction(search)); + if (searchFn(this)) { + return this; + } + for (let i = 0; i < this.children.length; i++) { + const result = this.children[i].find(search); + if (result) { + return result; + } + } + return null; + } + + getPath(search: any) { + const searchFn = TreeNode.iterFunction(TreeNode.searchFunction(search)); + + // @ts-ignore + const findPath = (currentNode, currentPath) => { + // skip if we already found the result + const attempt = currentPath.concat([currentNode]); + // base case: return the array when there is a match + if (searchFn(currentNode)) { + return attempt; + } + for (let i = 0; i < currentNode.children.length; i++) { + const child = currentNode.children[i]; + // @ts-ignore + const match = findPath(child, attempt); + if (match) { + return match; + } + } + return null; + }; + + return findPath(this, []); + } + + walk( + fn: { + (): number; + (spanID: string, node: TreeNode, depth?: number): void; + (arg0: any, arg1: any, arg2: any): void; + }, + depth = 0, + ) { + const nodeStack: any[] = []; + let actualDepth = depth; + nodeStack.push({ node: this, depth: actualDepth }); + while (nodeStack.length) { + const { node, depth: nodeDepth } = nodeStack.pop(); + fn(node.value, node, nodeDepth); + actualDepth = nodeDepth + 1; + let i = node.children.length - 1; + while (i >= 0) { + nodeStack.push({ node: node.children[i], depth: actualDepth }); + i--; + } + } + } +} + +function deduplicateTags(spanTags: Array) { + const warningsHash: Map = new Map(); + const tags: Array = spanTags.reduce>( + (uniqueTags, tag) => { + if (!uniqueTags.some(t => t.key === tag.key && t.value === tag.value)) { + uniqueTags.push(tag); + } else { + warningsHash.set( + `${tag.key}:${tag.value}`, + `Duplicate tag "${tag.key}:${tag.value}"`, + ); + } + return uniqueTags; + }, + [], + ); + const warnings = Array.from(warningsHash.values()); + return { tags, warnings }; +} + +export const TREE_ROOT_ID = '__root__'; + +export const spansSort = (a: SpanData, b: SpanData) => + +(a.startTime > b.startTime) || +(a.startTime === b.startTime) - 1; + +export function getTraceSpanIdsAsTree(trace: TraceData) { + const nodesById = new Map( + trace.spans.map(span => [span.spanID, new TreeNode(span.spanID)]), + ); + const spansById = new Map(trace.spans.map(span => [span.spanID, span])); + const root = new TreeNode(TREE_ROOT_ID); + trace.spans.forEach(span => { + const node = nodesById.get(span.spanID); + if (Array.isArray(span.references) && span.references.length) { + const { refType, spanID: parentID } = span.references[0]; + if (refType === 'CHILD_OF' || refType === 'FOLLOWS_FROM') { + const parent = nodesById.get(parentID) || root; + parent.children.push(node); + } else { + throw new Error(`Unrecognized ref type: ${refType}`); + } + } else { + root.children.push(node); + } + }); + const comparator = (a: { value: string }, b: { value: string }) => + spansSort(spansById.get(a.value)!, spansById.get(b.value)!); + trace.spans.forEach(span => { + const node: any = nodesById.get(span.spanID); + if (node.children.length > 1) { + node.children.sort(comparator); + } + }); + root.children.sort(comparator); + return root; +} + +// Extracts some information from a span to make it suitable for table-display +export const transformSpanData = ( + span: Span, + cluster?: string, +): RichSpanData => { + span.warnings = span.warnings || []; + span.tags = span.tags || []; + span.references = span.references || []; + const tagsInfo = deduplicateTags(span.tags); + span.tags = tagsInfo.tags; + span.warnings = span.warnings.concat(tagsInfo.warnings); + const { type, info } = extractSpanInfo(span); + const workloadNs = getWorkloadFromSpan(span); + + const split = span.process.serviceName.split('.'); + const app = split[0]; + // eslint-disable-next-line no-nested-ternary + const namespace = workloadNs + ? workloadNs.namespace + : split.length > 1 + ? split[1] + : undefined; + + const linkToApp = namespace + ? `/namespaces/${namespace}/applications/${app}` + : undefined; + const linkToWorkload = workloadNs + ? `/namespaces/${workloadNs.namespace}/workloads/${workloadNs.workload}` + : undefined; + return { + ...span, + type: type, + info: info, + component: info.component || 'unknown', + namespace: namespace || 'unknown', + app: app, + linkToApp: linkToApp, + workload: workloadNs?.workload, + pod: workloadNs?.pod, + linkToWorkload: linkToWorkload, + cluster: cluster, + }; +}; + +/** + * NOTE: Mutates `data` - Transform the HTTP response data into the form the app + * generally requires. + */ +export function transformTraceData( + data: TraceData, + cluster?: string, +): JaegerTrace | null { + let { traceID } = data; + if (!traceID) { + return null; + } + traceID = traceID.toLocaleLowerCase('en-US'); + + let traceEndTime = 0; + let traceStartTime = Number.MAX_SAFE_INTEGER; + const spanIdCounts = new Map(); + const spanMap = new Map(); + // filter out spans with empty start times + // eslint-disable-next-line no-param-reassign + data.spans = data.spans.filter(span => Boolean(span.startTime)); + + const max = data.spans.length; + for (let i = 0; i < max; i++) { + const span: Span = data.spans[i] as Span; + const { startTime, duration, processID } = span; + // + let spanID = span.spanID; + // check for start / end time for the trace + if (startTime < traceStartTime) { + traceStartTime = startTime; + } + if (startTime + duration > traceEndTime) { + traceEndTime = startTime + duration; + } + // make sure span IDs are unique + const idCount = spanIdCounts.get(spanID); + if (idCount !== null) { + // eslint-disable-next-line no-console + console.warn( + `Dupe spanID, ${idCount + 1} x ${spanID}`, + span, + spanMap.get(spanID), + ); + if (_isEqual(span, spanMap.get(spanID))) { + // eslint-disable-next-line no-console + console.warn('\t two spans with same ID have `isEqual(...) === true`'); + } + spanIdCounts.set(spanID, idCount + 1); + spanID = `${spanID}_${idCount}`; + span.spanID = spanID; + } else { + spanIdCounts.set(spanID, 1); + } + // For otel format traces + if (typeof data.processes[processID] !== 'undefined') { + span.process = data.processes[processID]; + } + + spanMap.set(spanID, transformSpanData(span, cluster)); + } + // tree is necessary to sort the spans, so children follow parents, and + // siblings are sorted by start time + const tree = getTraceSpanIdsAsTree(data); + const spans: RichSpanData[] = []; + const svcCounts: Record = {}; + let traceName = ''; + + // @ts-ignore + tree.walk((spanID: string, node: TreeNode, depth: number = 0) => { + if (spanID === '__root__') { + return; + } + const span = spanMap.get(spanID); + if (!span) { + return; + } + const { serviceName } = span.process; + svcCounts[serviceName] = (svcCounts[serviceName] || 0) + 1; + if ((!span.references || !span.references.length) && traceName === '') { + traceName = span.operationName; + } + span.relativeStartTime = span.startTime - traceStartTime; + span.depth = depth - 1; + span.hasChildren = node.children.length > 0; + span.references.forEach(ref => { + const refSpan = spanMap.get(ref.spanID) as Span; + if (refSpan) { + // eslint-disable-next-line no-param-reassign + ref.span = refSpan; + } + }); + spans.push(span); + }); + const services = Object.keys(svcCounts).map(name => ({ + name, + numberOfSpans: svcCounts[name], + })); + return { + services, + spans, + traceID, + traceName, + // can't use spread operator for intersection types + // repl: https://goo.gl/4Z23MJ + // issue: https://github.com/facebook/flow/issues/1511 + processes: data.processes, + duration: traceEndTime - traceStartTime, + startTime: traceStartTime, + endTime: traceEndTime, + matched: data.matched, + }; +} diff --git a/workspaces/kiali/plugins/kiali/src/utils/tracing/TracingHelper.tsx b/workspaces/kiali/plugins/kiali/src/utils/tracing/TracingHelper.tsx new file mode 100644 index 0000000000..47f21bec75 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/utils/tracing/TracingHelper.tsx @@ -0,0 +1,334 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import _round from 'lodash/round'; +import moment from 'moment'; + +import { retrieveTimeRange } from '../../components/Time/TimeRangeHelper'; +import { + DurationInSeconds, + durationToBounds, + guardTimeRange, +} from '../../types/Common'; +import { + EnvoySpanInfo, + JaegerTrace, + KeyValuePair, + OpenTracingBaseInfo, + OpenTracingHTTPInfo, + OpenTracingTCPInfo, + Span, +} from '../../types/TracingInfo'; +import { spansSort } from './TraceTransform'; + +export const defaultTracingDuration: DurationInSeconds = 600; + +export const isErrorTag = ({ key, value }: KeyValuePair) => + key === 'error' && (value === true || value === 'true'); + +export const getTimeRangeMicros = () => { + const range = retrieveTimeRange(); + // Convert any time range (like duration) to bounded from/to + const boundsMillis = guardTimeRange(range, durationToBounds, b => b); + // Not necessary, we know that guardTimeRange will always send a default + const defaultFrom = new Date().getTime() - defaultTracingDuration * 1000; + // Convert to microseconds + return { + from: boundsMillis.from ? boundsMillis.from * 1000 : defaultFrom * 1000, + to: boundsMillis.to ? boundsMillis.to * 1000 : undefined, + }; +}; + +type WorkloadAndNamespace = { + pod: string; + workload: string; + namespace: string; +}; + +const replicasetFromPodRegex = /^([a-z0-9-.]+)-[a-z0-9]+$/; + +// Pod template hash should be made of alphanum without vowels, '0', '1' and '3' +// (see https://github.com/kubernetes/kubernetes/blob/release-1.17/staging/src/k8s.io/apimachinery/pkg/util/rand/rand.go#L83) +const templateHashRegex = /^[bcdfghjklmnpqrstvwxz2456789]{6,16}$/; +const adjustWorkloadNameFromReplicaset = (replicaset: string): string => { + // This is a best effort to try to disambiguate deployment-like workloads versus replicaset-like workloads + // Workloads can be: + // - foo-fg65h9p7qj (deployment) + // - bar-replicaset (replicaset) + // In the first case, we want to keep "foo", but in the second case we need the whole "bar-replicaset" string. + // This is not 100% guaranteed, there's still a small chance that a replica set is wrongly seen as a deployment-like workload. + // That happens when: + // - it contains at least one dash '-' + // - AND the part after the last dash is: + // . between 6 and 16 characters long + // . AND compound exclusively of alphanums characters except vowels, '0', '1' and '3' + const parts = replicaset.split('-'); + if (parts.length < 2) { + return replicaset; + } + const templateHashCandidate = parts[parts.length - 1]; + if (templateHashRegex.test(templateHashCandidate)) { + return replicaset.substring( + 0, + replicaset.length - templateHashCandidate.length - 1, + ); + } + return replicaset; +}; + +const extractWorkloadFromPod = ( + pod: string, + ns: string, +): WorkloadAndNamespace | undefined => { + const result = replicasetFromPodRegex.exec(pod); + if (result && result.length === 2) { + return { + pod: pod, + workload: adjustWorkloadNameFromReplicaset(result[1]), + namespace: ns, + }; + } + return undefined; +}; + +export const getWorkloadFromSpan = ( + span: Span, +): WorkloadAndNamespace | undefined => { + const nodeKV = span.tags.find(tag => tag.key === 'node_id'); + if (nodeKV) { + // Example of node value: + // sidecar~172.17.0.20~ai-locals-6d8996bff-ztg6z.default~default.svc.cluster.local + const parts = nodeKV.value.split('~'); + if (parts.length < 3) { + return undefined; + } + const podWithNamespace = parts[2]; + const nsIdx = podWithNamespace.lastIndexOf('.'); + if (nsIdx >= 0) { + return extractWorkloadFromPod( + podWithNamespace.substring(0, nsIdx), + podWithNamespace.substring(nsIdx + 1), + ); + } + return undefined; + } + // Tag not found => try with 'hostname' in process' tags + const hostnameKV = span.process.tags.find(tag => tag.key === 'hostname'); + if (hostnameKV) { + const svcNs = span.process.serviceName.split('.'); + return extractWorkloadFromPod( + hostnameKV.value, + svcNs.length > 1 ? svcNs[1] : '', + ); + } + return undefined; +}; + +export const findParent = (span: Span): Span | undefined => { + if (Array.isArray(span.references)) { + const ref = span.references.find( + s => s.refType === 'CHILD_OF' || s.refType === 'FOLLOWS_FROM', + ); + return ref?.span || undefined; + } + return undefined; +}; + +export const findChildren = (span: Span, trace: JaegerTrace): Span[] => { + return trace.spans + .filter(s => findParent(s)?.spanID === span.spanID) + .sort(spansSort); +}; + +export const searchParentWorkload = ( + span: Span, +): WorkloadAndNamespace | undefined => { + const parent = findParent(span); + return parent ? getWorkloadFromSpan(parent) : undefined; +}; + +type AppAndNamespace = { app: string; namespace: string }; +export const getAppFromSpan = (span: Span): AppAndNamespace | undefined => { + const split = span.process.serviceName.split('.'); + return { app: split[0], namespace: split.length > 1 ? split[1] : '' }; +}; + +export const searchParentApp = (span: Span): AppAndNamespace | undefined => { + const parent = findParent(span); + return parent ? getAppFromSpan(parent) : undefined; +}; + +export const getSpanType = ( + span: Span, +): 'envoy' | 'http' | 'tcp' | 'unknown' => { + const component = span.tags.find(tag => tag.key === 'component'); + if (component?.value === 'proxy') { + return 'envoy'; + } + if (span.tags.some(t => t.key.startsWith('http.'))) { + return 'http'; + } + if (span.tags.some(t => t.key.startsWith('peer.'))) { + return 'tcp'; + } + return 'unknown'; +}; + +export const extractOpenTracingBaseInfo = (span: Span): OpenTracingBaseInfo => { + const info: OpenTracingBaseInfo = { hasError: false }; + span.tags.forEach(t => { + if (t.key === 'component') { + info.component = t.value; + } + if (isErrorTag(t)) { + info.hasError = true; + } + }); + return info; +}; + +export const extractOpenTracingHTTPInfo = (span: Span): OpenTracingHTTPInfo => { + // See https://github.com/opentracing/specification/blob/master/semantic_conventions.md + const info: OpenTracingHTTPInfo = extractOpenTracingBaseInfo(span); + span.tags.forEach(t => { + if (t.key === 'http.status_code') { + const val = parseInt(t.value, 10); + if (!isNaN(val) && val > 0) { + info.statusCode = val; + } + } else if (t.key === 'http.url') { + info.url = t.value; + } else if (t.key === 'http.method') { + info.method = t.value; + } else if (t.key === 'span.kind') { + if (t.value === 'client') { + info.direction = 'outbound'; + } else if (t.value === 'server') { + info.direction = 'inbound'; + } + } + }); + return info; +}; + +export const extractOpenTracingTCPInfo = (span: Span): OpenTracingTCPInfo => { + // See https://github.com/opentracing/specification/blob/master/semantic_conventions.md + const info: OpenTracingTCPInfo = extractOpenTracingBaseInfo(span); + span.tags.forEach(t => { + if (t.key === 'message_bus.destination') { + info.topic = t.value; + } else if (t.key === 'peer.address') { + info.peerAddress = t.value; + } else if (t.key === 'peer.hostname') { + info.peerHostname = t.value; + } else if (t.key === 'span.kind') { + if (t.value === 'producer' || t.value === 'client') { + info.direction = 'outbound'; + } else if (t.value === 'consumer' || t.value === 'server') { + info.direction = 'inbound'; + } + } + }); + return info; +}; + +export const extractEnvoySpanInfo = (span: Span): EnvoySpanInfo => { + const info: EnvoySpanInfo = extractOpenTracingHTTPInfo(span); + span.tags.forEach(t => { + if (t.key === 'response_flags') { + if (t.value !== '-') { + info.responseFlags = t.value; + } + } else if (t.key === 'upstream_cluster') { + const parts = (t.value as string).split('|'); + if (parts.length === 4) { + if (parts[0] === 'outbound') { + const svcParts = parts[3].split('.'); + if (svcParts.length === 5) { + info.direction = 'outbound'; + info.peer = { + name: svcParts[0], + namespace: svcParts[1], + kind: 'service', + }; + } + } else if (parts[0] === 'inbound') { + const wkdNs = searchParentWorkload(span); + if (wkdNs) { + info.direction = 'inbound'; + info.peer = { + name: wkdNs.workload, + namespace: wkdNs.namespace, + kind: 'workload', + }; + } + } + } + } + }); + return info; +}; + +export const extractSpanInfo = (span: Span) => { + const type = getSpanType(span); + const info = + // eslint-disable-next-line no-nested-ternary + type === 'envoy' + ? extractEnvoySpanInfo(span) + : // eslint-disable-next-line no-nested-ternary + type === 'http' + ? extractOpenTracingHTTPInfo(span) + : type === 'tcp' + ? extractOpenTracingTCPInfo(span) + : extractOpenTracingBaseInfo(span); + return { type: type, info: info }; +}; + +export const sameSpans = (a: Span[], b: Span[]): boolean => { + return a.map(s => s.spanID).join() === b.map(s => s.spanID).join(); +}; + +export function formatDuration(micros: number): string { + let d = micros / 1000; + let unit = 'ms'; + if (d >= 1000) { + unit = 's'; + d /= 1000; + } + return _round(d, 2) + unit; +} + +const TODAY = 'Today'; +const YESTERDAY = 'Yesterday'; + +export function formatRelativeDate(value: any, fullMonthName: boolean = false) { + const m = moment.isMoment(value) ? value : moment(value); + const monthFormat = fullMonthName ? 'MMMM' : 'MMM'; + const dt = new Date(); + if (dt.getFullYear() !== m.year()) { + return m.format(`${monthFormat} D, YYYY`); + } + const mMonth = m.month(); + const mDate = m.date(); + const date = dt.getDate(); + if (mMonth === dt.getMonth() && mDate === date) { + return TODAY; + } + dt.setDate(date - 1); + if (mMonth === dt.getMonth() && mDate === dt.getDate()) { + return YESTERDAY; + } + return m.format(`${monthFormat} D`); +} diff --git a/workspaces/kiali/yarn.lock b/workspaces/kiali/yarn.lock index 8f4935137a..7521dd05bd 100644 --- a/workspaces/kiali/yarn.lock +++ b/workspaces/kiali/yarn.lock @@ -5,6 +5,13 @@ __metadata: version: 6 cacheKey: 8 +"@adobe/css-tools@npm:^4.4.0": + version: 4.4.1 + resolution: "@adobe/css-tools@npm:4.4.1" + checksum: bbded8a03c314afee0fb0b42922f664f437e0e2f0b86eeeb06dee9d02cd8fc958cf87aa3314952b00074e0b22fc5b8da23f45b61b6f8291c8aaa7cffc56a76e9 + languageName: node + linkType: hard + "@ampproject/remapping@npm:^2.2.0": version: 2.3.0 resolution: "@ampproject/remapping@npm:2.3.0" @@ -26,6 +33,17 @@ __metadata: languageName: node linkType: hard +"@apidevtools/json-schema-ref-parser@npm:^11.7.0": + version: 11.7.3 + resolution: "@apidevtools/json-schema-ref-parser@npm:11.7.3" + dependencies: + "@jsdevtools/ono": ^7.1.3 + "@types/json-schema": ^7.0.15 + js-yaml: ^4.1.0 + checksum: 3496edfb2c3d2f9a5a7a49795b4d560f1e4957015aef473775f4b5f2db55a4ddfb3778783401ddd24e7db2930a67a370fb8c68840d8bae0a2a581e0e57fc2f58 + languageName: node + linkType: hard + "@apidevtools/openapi-schemas@npm:^2.1.0": version: 2.1.0 resolution: "@apidevtools/openapi-schemas@npm:2.1.0" @@ -67,6 +85,97 @@ __metadata: languageName: node linkType: hard +"@ardatan/sync-fetch@npm:^0.0.1": + version: 0.0.1 + resolution: "@ardatan/sync-fetch@npm:0.0.1" + dependencies: + node-fetch: ^2.6.1 + checksum: af39bdfb4c2b35bd2c6acc540a5e302730dae17e73d3a18cd1a4aa50c1c741cb1869dffdef1379c491da5ad2e3cfa2bf3a8064e6046c12b46c6a97f54f100a8d + languageName: node + linkType: hard + +"@asyncapi/avro-schema-parser@npm:^3.0.15": + version: 3.0.24 + resolution: "@asyncapi/avro-schema-parser@npm:3.0.24" + dependencies: + "@asyncapi/parser": ^3.1.0 + "@types/json-schema": ^7.0.11 + avsc: ^5.7.6 + checksum: 87d59d157c75e1000b813e386999d9a02553d58fcc1340c2a241f46d0a3638a32281d5136b360bc5065c20ea2ab1ae94fcc1227481eb0dcef5d7ea3396bd3e55 + languageName: node + linkType: hard + +"@asyncapi/openapi-schema-parser@npm:^3.0.15": + version: 3.0.24 + resolution: "@asyncapi/openapi-schema-parser@npm:3.0.24" + dependencies: + "@asyncapi/parser": ^3.1.0 + "@openapi-contrib/openapi-schema-to-json-schema": ~3.2.0 + ajv: ^8.11.0 + ajv-errors: ^3.0.0 + ajv-formats: ^2.1.1 + checksum: 35a443c30a01bd26923027bbf3c639056466917333c0a7882a66cbb2ec361c5dae2575eaf9bdbe847c424b7a518ec8325167f4770202abd07aa4d3b0394887e9 + languageName: node + linkType: hard + +"@asyncapi/parser@npm:^3.0.7, @asyncapi/parser@npm:^3.1.0, @asyncapi/parser@npm:^3.4.0": + version: 3.4.0 + resolution: "@asyncapi/parser@npm:3.4.0" + dependencies: + "@asyncapi/specs": ^6.8.0 + "@openapi-contrib/openapi-schema-to-json-schema": ~3.2.0 + "@stoplight/json": 3.21.0 + "@stoplight/json-ref-readers": ^1.2.2 + "@stoplight/json-ref-resolver": ^3.1.5 + "@stoplight/spectral-core": ^1.18.3 + "@stoplight/spectral-functions": ^1.7.2 + "@stoplight/spectral-parsers": ^1.0.2 + "@stoplight/spectral-ref-resolver": ^1.0.3 + "@stoplight/types": ^13.12.0 + "@types/json-schema": ^7.0.11 + "@types/urijs": ^1.19.19 + ajv: ^8.17.1 + ajv-errors: ^3.0.0 + ajv-formats: ^2.1.1 + avsc: ^5.7.5 + js-yaml: ^4.1.0 + jsonpath-plus: ^10.0.0 + node-fetch: 2.6.7 + checksum: 158eab3b910258ad3c66ebbf94a86bbab4c78d6b4fb0d62980a3bef0e33358f914790e8044c59ef34f6cd25e963d2e5d37e940fc340056c8e9fe14343c8f2ee8 + languageName: node + linkType: hard + +"@asyncapi/protobuf-schema-parser@npm:^3.2.4": + version: 3.4.0 + resolution: "@asyncapi/protobuf-schema-parser@npm:3.4.0" + dependencies: + "@asyncapi/parser": ^3.4.0 + "@types/protocol-buffers-schema": ^3.4.3 + protobufjs: ^7.4.0 + checksum: 6842c26cf5a2e03b68e83f89fb19529524057daa83aca1cfddd298494a9c729cd0bcabe0a159b56f5b2b14644c1a4906b6ce70714e58ec17ce587c928f84a96d + languageName: node + linkType: hard + +"@asyncapi/react-component@npm:1.3.1": + version: 1.3.1 + resolution: "@asyncapi/react-component@npm:1.3.1" + dependencies: + "@asyncapi/avro-schema-parser": ^3.0.15 + "@asyncapi/openapi-schema-parser": ^3.0.15 + "@asyncapi/parser": ^3.0.7 + "@asyncapi/protobuf-schema-parser": ^3.2.4 + highlight.js: ^10.7.2 + isomorphic-dompurify: ^0.13.0 + marked: ^4.0.14 + openapi-sampler: ^1.2.1 + use-resize-observer: ^8.0.0 + peerDependencies: + react: ">=16.8.0" + react-dom: ">=16.8.0" + checksum: d70992809223643e17bab39352d4fc31b188cd83f548e6ec16d9a638d448a96d1f52e4d9900c9e6a3070211ad6b9ddbb5e992e48445385dbf6cb4c5165d95dac + languageName: node + linkType: hard + "@asyncapi/specs@npm:^4.1.0": version: 4.3.1 resolution: "@asyncapi/specs@npm:4.3.1" @@ -76,6 +185,26 @@ __metadata: languageName: node linkType: hard +"@asyncapi/specs@npm:^6.8.0": + version: 6.8.0 + resolution: "@asyncapi/specs@npm:6.8.0" + dependencies: + "@types/json-schema": ^7.0.11 + checksum: 8a968a9fb842fa0facf4b727cca4e17792cca26b08f8df4f3c5e32a015a9e30c8a2651f76faaabf0933ec2796b9e6318fc7a8abb64a7a95930637ab3af2bebb4 + languageName: node + linkType: hard + +"@aws-crypto/crc32@npm:3.0.0": + version: 3.0.0 + resolution: "@aws-crypto/crc32@npm:3.0.0" + dependencies: + "@aws-crypto/util": ^3.0.0 + "@aws-sdk/types": ^3.222.0 + tslib: ^1.11.1 + checksum: 9fdb3e837fc54119b017ea34fd0a6d71d2c88075d99e1e818a5158e0ad30ced67ddbcc423a11ceeef6cc465ab5ffd91830acab516470b48237ca7abd51be9642 + languageName: node + linkType: hard + "@aws-crypto/crc32@npm:5.2.0": version: 5.2.0 resolution: "@aws-crypto/crc32@npm:5.2.0" @@ -127,7 +256,7 @@ __metadata: languageName: node linkType: hard -"@aws-crypto/sha256-js@npm:5.2.0, @aws-crypto/sha256-js@npm:^5.2.0": +"@aws-crypto/sha256-js@npm:5.2.0, @aws-crypto/sha256-js@npm:^5.0.0, @aws-crypto/sha256-js@npm:^5.2.0": version: 5.2.0 resolution: "@aws-crypto/sha256-js@npm:5.2.0" dependencies: @@ -147,6 +276,17 @@ __metadata: languageName: node linkType: hard +"@aws-crypto/util@npm:^3.0.0": + version: 3.0.0 + resolution: "@aws-crypto/util@npm:3.0.0" + dependencies: + "@aws-sdk/types": ^3.222.0 + "@aws-sdk/util-utf8-browser": ^3.0.0 + tslib: ^1.11.1 + checksum: d29d5545048721aae3d60b236708535059733019a105f8a64b4e4a8eab7cf8dde1546dc56bff7de20d36140a4d1f0f4693e639c5732a7059273a7b1e56354776 + languageName: node + linkType: hard + "@aws-crypto/util@npm:^5.2.0": version: 5.2.0 resolution: "@aws-crypto/util@npm:5.2.0" @@ -652,6 +792,44 @@ __metadata: languageName: node linkType: hard +"@aws-sdk/eventstream-codec@npm:3.370.0": + version: 3.370.0 + resolution: "@aws-sdk/eventstream-codec@npm:3.370.0" + dependencies: + "@aws-crypto/crc32": 3.0.0 + "@aws-sdk/types": 3.370.0 + "@aws-sdk/util-hex-encoding": 3.310.0 + tslib: ^2.5.0 + checksum: 0366991b92e3801798b0145021e185ac87b559aaef447e086f0964164ff71983afa6575ddc2e94ca7d7ceb307e2f16ec376f97fdccfdbc29a93330fffa43e386 + languageName: node + linkType: hard + +"@aws-sdk/is-array-buffer@npm:3.310.0": + version: 3.310.0 + resolution: "@aws-sdk/is-array-buffer@npm:3.310.0" + dependencies: + tslib: ^2.5.0 + checksum: ddd1536ad16e29186fb5055bc279cfe9790b7c32552e1ee21e31d4e410e1df297b06c94c6117f854ec368d29e60a231dd8cc77e5b604a6260e7602876fd047f8 + languageName: node + linkType: hard + +"@aws-sdk/lib-storage@npm:^3.350.0": + version: 3.714.0 + resolution: "@aws-sdk/lib-storage@npm:3.714.0" + dependencies: + "@smithy/abort-controller": ^3.1.9 + "@smithy/middleware-endpoint": ^3.2.5 + "@smithy/smithy-client": ^3.5.0 + buffer: 5.6.0 + events: 3.3.0 + stream-browserify: 3.0.0 + tslib: ^2.6.2 + peerDependencies: + "@aws-sdk/client-s3": ^3.714.0 + checksum: 94875eeca3f72c2753f739f8f36f5cc102d004a38beb276c7a8211ab48b1e5a01fd95b5ea3ea2d254abeb2077a5e0ef68aa33ae06812114adfd0198ce2e82224 + languageName: node + linkType: hard + "@aws-sdk/middleware-bucket-endpoint@npm:3.679.0": version: 3.679.0 resolution: "@aws-sdk/middleware-bucket-endpoint@npm:3.679.0" @@ -820,6 +998,22 @@ __metadata: languageName: node linkType: hard +"@aws-sdk/signature-v4@npm:^3.347.0": + version: 3.370.0 + resolution: "@aws-sdk/signature-v4@npm:3.370.0" + dependencies: + "@aws-sdk/eventstream-codec": 3.370.0 + "@aws-sdk/is-array-buffer": 3.310.0 + "@aws-sdk/types": 3.370.0 + "@aws-sdk/util-hex-encoding": 3.310.0 + "@aws-sdk/util-middleware": 3.370.0 + "@aws-sdk/util-uri-escape": 3.310.0 + "@aws-sdk/util-utf8": 3.310.0 + tslib: ^2.5.0 + checksum: 3652cca13da1c60b80d98274a49feaf30feee0f85908b4a89e0d262532904286fafa6f515a455348e20f6f9a2efbcdcd20ee3a704b892eb01d2fcfd784af8bc7 + languageName: node + linkType: hard + "@aws-sdk/token-providers@npm:3.679.0": version: 3.679.0 resolution: "@aws-sdk/token-providers@npm:3.679.0" @@ -864,6 +1058,16 @@ __metadata: languageName: node linkType: hard +"@aws-sdk/util-buffer-from@npm:3.310.0": + version: 3.310.0 + resolution: "@aws-sdk/util-buffer-from@npm:3.310.0" + dependencies: + "@aws-sdk/is-array-buffer": 3.310.0 + tslib: ^2.5.0 + checksum: 9c3bd9c0664a0cbb5270eb285a662274bb9c46ae0d79e0275a85e74659a4b1f094bab900994780fd70dd0152dc6d2d33a8bc681d87f3911fa48eae9f6c3558d6 + languageName: node + linkType: hard + "@aws-sdk/util-endpoints@npm:3.679.0": version: 3.679.0 resolution: "@aws-sdk/util-endpoints@npm:3.679.0" @@ -876,6 +1080,15 @@ __metadata: languageName: node linkType: hard +"@aws-sdk/util-hex-encoding@npm:3.310.0": + version: 3.310.0 + resolution: "@aws-sdk/util-hex-encoding@npm:3.310.0" + dependencies: + tslib: ^2.5.0 + checksum: 97b8d7e0e406189cdbd4fccb0a497dd247a22d54b18caf5a64a63d19d2535b95a64ee79ecf81b13f741bda1d565eb11448d4fd39617e4b86fc8626b05485d98c + languageName: node + linkType: hard + "@aws-sdk/util-locate-window@npm:^3.0.0": version: 3.679.0 resolution: "@aws-sdk/util-locate-window@npm:3.679.0" @@ -885,6 +1098,24 @@ __metadata: languageName: node linkType: hard +"@aws-sdk/util-middleware@npm:3.370.0": + version: 3.370.0 + resolution: "@aws-sdk/util-middleware@npm:3.370.0" + dependencies: + tslib: ^2.5.0 + checksum: a39565cf6e99e7d5ee883af75dd01168822acb8679ec0b1fea5ac99301b1c9a2dc8bde9da11a6780dd3a7681a15e408166b4407e8c6617706d9c53bc191783f2 + languageName: node + linkType: hard + +"@aws-sdk/util-uri-escape@npm:3.310.0": + version: 3.310.0 + resolution: "@aws-sdk/util-uri-escape@npm:3.310.0" + dependencies: + tslib: ^2.5.0 + checksum: 614c0a43b238b7371b6655a5961e21c57b708de3e1ce3138bd56284bedc48888e5c7d2a6965544108c3334fcdc45e9ddba86b2470c8e6901559ad7be8e21d418 + languageName: node + linkType: hard + "@aws-sdk/util-user-agent-browser@npm:3.679.0": version: 3.679.0 resolution: "@aws-sdk/util-user-agent-browser@npm:3.679.0" @@ -915,6 +1146,25 @@ __metadata: languageName: node linkType: hard +"@aws-sdk/util-utf8-browser@npm:^3.0.0": + version: 3.259.0 + resolution: "@aws-sdk/util-utf8-browser@npm:3.259.0" + dependencies: + tslib: ^2.3.1 + checksum: b6a1e580da1c9b62c749814182a7649a748ca4253edb4063aa521df97d25b76eae3359eb1680b86f71aac668e05cc05c514379bca39ebf4ba998ae4348412da8 + languageName: node + linkType: hard + +"@aws-sdk/util-utf8@npm:3.310.0": + version: 3.310.0 + resolution: "@aws-sdk/util-utf8@npm:3.310.0" + dependencies: + "@aws-sdk/util-buffer-from": 3.310.0 + tslib: ^2.5.0 + checksum: 4045e79b8e3593e12233b359ba77d1b4c162fd9fcb4ab3b58b711c41b725552306dd91402b8d57ce5be080c76309f046a7a0c4ff704d12f9ba71e3b25b810086 + languageName: node + linkType: hard + "@aws-sdk/xml-builder@npm:3.679.0": version: 3.679.0 resolution: "@aws-sdk/xml-builder@npm:3.679.0" @@ -925,7 +1175,7 @@ __metadata: languageName: node linkType: hard -"@azure/abort-controller@npm:^2.0.0": +"@azure/abort-controller@npm:^2.0.0, @azure/abort-controller@npm:^2.1.2": version: 2.1.2 resolution: "@azure/abort-controller@npm:2.1.2" dependencies: @@ -945,7 +1195,7 @@ __metadata: languageName: node linkType: hard -"@azure/core-client@npm:^1.9.2": +"@azure/core-client@npm:^1.3.0, @azure/core-client@npm:^1.6.2, @azure/core-client@npm:^1.9.2": version: 1.9.2 resolution: "@azure/core-client@npm:1.9.2" dependencies: @@ -960,6 +1210,54 @@ __metadata: languageName: node linkType: hard +"@azure/core-http-compat@npm:^2.0.0": + version: 2.1.2 + resolution: "@azure/core-http-compat@npm:2.1.2" + dependencies: + "@azure/abort-controller": ^2.0.0 + "@azure/core-client": ^1.3.0 + "@azure/core-rest-pipeline": ^1.3.0 + checksum: 387d0187607d95a6876f63d4b689210bce6ad243f48e56413136ba3875a8a9c4e238813307fb0cf0c53298f4b9d0893d04321c9331812bc74cf0f4e3e6872069 + languageName: node + linkType: hard + +"@azure/core-lro@npm:^2.2.0": + version: 2.7.2 + resolution: "@azure/core-lro@npm:2.7.2" + dependencies: + "@azure/abort-controller": ^2.0.0 + "@azure/core-util": ^1.2.0 + "@azure/logger": ^1.0.0 + tslib: ^2.6.2 + checksum: dc2e5bbb004a86704bcf584422cd099b7a6beef57ce6501afacced65f4f3b5fbba57a2439f701687237867552a661fd6568f8b3c9e3eacdfd9039004772f85b0 + languageName: node + linkType: hard + +"@azure/core-paging@npm:^1.1.1": + version: 1.6.2 + resolution: "@azure/core-paging@npm:1.6.2" + dependencies: + tslib: ^2.6.2 + checksum: 4b57f953998473ee784c3ea774a8b54f4be0ec239bd43cbabe28113ca18f141455289713302d4fcd802898dd7ab58380ff575b7ce9400ec1ec20c505791c0b25 + languageName: node + linkType: hard + +"@azure/core-rest-pipeline@npm:^1.10.1, @azure/core-rest-pipeline@npm:^1.3.0": + version: 1.18.1 + resolution: "@azure/core-rest-pipeline@npm:1.18.1" + dependencies: + "@azure/abort-controller": ^2.0.0 + "@azure/core-auth": ^1.8.0 + "@azure/core-tracing": ^1.0.1 + "@azure/core-util": ^1.11.0 + "@azure/logger": ^1.0.0 + http-proxy-agent: ^7.0.0 + https-proxy-agent: ^7.0.0 + tslib: ^2.6.2 + checksum: 24b173d5f92daa95f23006470ea5c0ded4657ba62558d7ac2892b8f7389c0d9d5fe6fa71ffa6caa1192fdd8bbf2a399336390f01c2b0010417d462e47fbeb9c5 + languageName: node + linkType: hard + "@azure/core-rest-pipeline@npm:^1.17.0, @azure/core-rest-pipeline@npm:^1.9.1": version: 1.17.0 resolution: "@azure/core-rest-pipeline@npm:1.17.0" @@ -976,7 +1274,7 @@ __metadata: languageName: node linkType: hard -"@azure/core-tracing@npm:^1.0.0, @azure/core-tracing@npm:^1.0.1": +"@azure/core-tracing@npm:^1.0.0, @azure/core-tracing@npm:^1.0.1, @azure/core-tracing@npm:^1.1.2": version: 1.2.0 resolution: "@azure/core-tracing@npm:1.2.0" dependencies: @@ -985,7 +1283,7 @@ __metadata: languageName: node linkType: hard -"@azure/core-util@npm:^1.11.0, @azure/core-util@npm:^1.6.1, @azure/core-util@npm:^1.9.0": +"@azure/core-util@npm:^1.11.0, @azure/core-util@npm:^1.2.0, @azure/core-util@npm:^1.6.1, @azure/core-util@npm:^1.9.0": version: 1.11.0 resolution: "@azure/core-util@npm:1.11.0" dependencies: @@ -995,6 +1293,16 @@ __metadata: languageName: node linkType: hard +"@azure/core-xml@npm:^1.4.3": + version: 1.4.4 + resolution: "@azure/core-xml@npm:1.4.4" + dependencies: + fast-xml-parser: ^4.4.1 + tslib: ^2.6.2 + checksum: 05537e7e3bf9dcf0b5b18726ae59977f867aa4f9ed368f010c57a0a24d0a9a1608aab9dd9db9762cd1176d6dfabf69e1ae671327275c575310c0e029153e8179 + languageName: node + linkType: hard + "@azure/identity@npm:^4.0.0": version: 4.5.0 resolution: "@azure/identity@npm:4.5.0" @@ -1053,6 +1361,27 @@ __metadata: languageName: node linkType: hard +"@azure/storage-blob@npm:^12.5.0": + version: 12.26.0 + resolution: "@azure/storage-blob@npm:12.26.0" + dependencies: + "@azure/abort-controller": ^2.1.2 + "@azure/core-auth": ^1.4.0 + "@azure/core-client": ^1.6.2 + "@azure/core-http-compat": ^2.0.0 + "@azure/core-lro": ^2.2.0 + "@azure/core-paging": ^1.1.1 + "@azure/core-rest-pipeline": ^1.10.1 + "@azure/core-tracing": ^1.1.2 + "@azure/core-util": ^1.6.1 + "@azure/core-xml": ^1.4.3 + "@azure/logger": ^1.0.0 + events: ^3.0.0 + tslib: ^2.2.0 + checksum: c3f7572bc54cd9e74ac73fa9225cc9398a716e574ff9b637e5b27faf4ac2d6207dc64b39f5dcff1671c4cb6730fbd765ebf796abd3e18ef95f5071d613ce3a13 + languageName: node + linkType: hard + "@babel/code-frame@npm:7.0.0": version: 7.0.0 resolution: "@babel/code-frame@npm:7.0.0" @@ -1073,6 +1402,17 @@ __metadata: languageName: node linkType: hard +"@babel/code-frame@npm:^7.10.4": + version: 7.26.2 + resolution: "@babel/code-frame@npm:7.26.2" + dependencies: + "@babel/helper-validator-identifier": ^7.25.9 + js-tokens: ^4.0.0 + picocolors: ^1.0.0 + checksum: db13f5c42d54b76c1480916485e6900748bbcb0014a8aca87f50a091f70ff4e0d0a6db63cade75eb41fcc3d2b6ba0a7f89e343def4f96f00269b41b8ab8dd7b8 + languageName: node + linkType: hard + "@babel/compat-data@npm:^7.22.6, @babel/compat-data@npm:^7.25.9, @babel/compat-data@npm:^7.26.0": version: 7.26.0 resolution: "@babel/compat-data@npm:7.26.0" @@ -1203,7 +1543,7 @@ __metadata: languageName: node linkType: hard -"@babel/helper-module-imports@npm:^7.25.9": +"@babel/helper-module-imports@npm:^7.16.7, @babel/helper-module-imports@npm:^7.25.9": version: 7.25.9 resolution: "@babel/helper-module-imports@npm:7.25.9" dependencies: @@ -2418,7 +2758,17 @@ __metadata: languageName: node linkType: hard -"@babel/runtime@npm:^7.15.4, @babel/runtime@npm:^7.21.0, @babel/runtime@npm:^7.5.5, @babel/runtime@npm:^7.8.4": +"@babel/runtime-corejs3@npm:^7.20.7, @babel/runtime-corejs3@npm:^7.22.15, @babel/runtime-corejs3@npm:^7.24.7": + version: 7.26.0 + resolution: "@babel/runtime-corejs3@npm:7.26.0" + dependencies: + core-js-pure: ^3.30.2 + regenerator-runtime: ^0.14.0 + checksum: c6c5adac03e33aa4b5bb636a677aa2a6e400b91d91aac5674448d20af4100b80a8bedfb742338e4236e22c092d3edeb27210efdf48bd13ec353bd899f097ff41 + languageName: node + linkType: hard + +"@babel/runtime@npm:^7.0.0, @babel/runtime@npm:^7.1.2, @babel/runtime@npm:^7.10.1, @babel/runtime@npm:^7.12.5, @babel/runtime@npm:^7.15.4, @babel/runtime@npm:^7.18.3, @babel/runtime@npm:^7.18.6, @babel/runtime@npm:^7.2.0, @babel/runtime@npm:^7.20.6, @babel/runtime@npm:^7.21.0, @babel/runtime@npm:^7.23.9, @babel/runtime@npm:^7.3.1, @babel/runtime@npm:^7.4.4, @babel/runtime@npm:^7.5.5, @babel/runtime@npm:^7.6.0, @babel/runtime@npm:^7.7.6, @babel/runtime@npm:^7.8.3, @babel/runtime@npm:^7.8.4, @babel/runtime@npm:^7.8.7, @babel/runtime@npm:^7.9.2": version: 7.26.0 resolution: "@babel/runtime@npm:7.26.0" dependencies: @@ -2463,7 +2813,7 @@ __metadata: languageName: node linkType: hard -"@backstage-community/plugin-kiali-backend@workspace:plugins/kiali-backend": +"@backstage-community/plugin-kiali-backend@workspace:^, @backstage-community/plugin-kiali-backend@workspace:plugins/kiali-backend": version: 0.0.0-use.local resolution: "@backstage-community/plugin-kiali-backend@workspace:plugins/kiali-backend" dependencies: @@ -2489,6 +2839,97 @@ __metadata: languageName: unknown linkType: soft +"@backstage-community/plugin-kiali@workspace:^, @backstage-community/plugin-kiali@workspace:plugins/kiali": + version: 0.0.0-use.local + resolution: "@backstage-community/plugin-kiali@workspace:plugins/kiali" + dependencies: + "@backstage/catalog-model": ^1.7.0 + "@backstage/cli": 0.28.2 + "@backstage/core-components": ^0.16.2 + "@backstage/core-plugin-api": ^1.10.0 + "@backstage/dev-utils": 1.1.2 + "@backstage/plugin-catalog-react": ^1.14.0 + "@backstage/test-utils": 1.7.0 + "@material-ui/core": ^4.9.13 + "@material-ui/icons": ^4.11.3 + "@material-ui/lab": ^4.0.0-alpha.45 + "@mui/icons-material": ^5.15.8 + "@patternfly/patternfly": ^5.1.0 + "@patternfly/react-charts": ^7.1.1 + "@patternfly/react-core": ^5.1.1 + "@patternfly/react-icons": ^5.1.1 + "@patternfly/react-topology": 5.3.0 + "@playwright/test": 1.45.3 + "@redhat-developer/red-hat-developer-hub-theme": 0.4.0 + "@testing-library/dom": ^10.0.0 + "@testing-library/jest-dom": ^6.0.0 + "@testing-library/react": ^15.0.0 + "@types/lodash": ^4.14.151 + "@types/node": 20.14.2 + "@types/react": ^18.2.58 + "@types/react-copy-to-clipboard": 5.0.7 + "@types/react-dom": ^18.2.19 + "@types/regression": 2.0.6 + ace-builds: ^1.32.7 + axios: ^1.7.4 + canvas: ^2.11.2 + cross-fetch: 4.0.0 + cytoscape: 3.30.2 + d3-format: ^3.1.0 + deep-freeze: 0.0.1 + history: ^5.3.0 + jest-canvas-mock: 2.5.2 + js-yaml: ^3.13.1 + json-beautify: 1.1.1 + lodash: ^4.17.21 + micro-memoize: 4.1.2 + moment: ^2.29.4 + prettier: 3.3.3 + prop-types: ^15.8.1 + react: ^16.13.1 || ^17.0.0 || ^18.0.0 + react-ace: 9.5.0 + react-copy-to-clipboard: 5.x + react-dom: ^16.13.1 || ^17.0.0 || ^18.0.0 + react-router-dom: ^6.0.0 + react-use: ^17.4.0 + regression: ^2.0.1 + screenfull: 5.2.0 + start-server-and-test: 2.0.8 + typesafe-actions: ^4.2.1 + typestyle: ^2.4.0 + victory-box-plot: ^36.9.1 + victory-core: ^36.9.1 + victory-voronoi-container: ^36.9.1 + peerDependencies: + react: ^16.13.1 || ^17.0.0 || ^18.0.0 + react-dom: ^16.13.1 || ^17.0.0 || ^18.0.0 + react-router-dom: ^6.0.0 + languageName: unknown + linkType: soft + +"@backstage/app-defaults@npm:^1.5.12": + version: 1.5.15 + resolution: "@backstage/app-defaults@npm:1.5.15" + dependencies: + "@backstage/core-app-api": ^1.15.3 + "@backstage/core-components": ^0.16.2 + "@backstage/core-plugin-api": ^1.10.2 + "@backstage/plugin-permission-react": ^0.4.29 + "@backstage/theme": ^0.6.3 + "@material-ui/core": ^4.12.2 + "@material-ui/icons": ^4.9.1 + peerDependencies: + "@types/react": ^16.13.1 || ^17.0.0 || ^18.0.0 + react: ^16.13.1 || ^17.0.0 || ^18.0.0 + react-dom: ^16.13.1 || ^17.0.0 || ^18.0.0 + react-router-dom: 6.0.0-beta.0 || ^6.3.0 + peerDependenciesMeta: + "@types/react": + optional: true + checksum: 46378a8b2b82cca764adb836ee323f91e4510beaf1665ad0ca602c974bab3043922d09448c246f1f4205223ca289c70665895e2e6138f5fd6a27f0e138ecdcbd + languageName: node + linkType: hard + "@backstage/backend-app-api@npm:^1.0.0, @backstage/backend-app-api@npm:^1.0.1": version: 1.0.1 resolution: "@backstage/backend-app-api@npm:1.0.1" @@ -2530,6 +2971,43 @@ __metadata: languageName: node linkType: hard +"@backstage/backend-app-api@npm:^1.0.2, @backstage/backend-app-api@npm:^1.1.0": + version: 1.1.0 + resolution: "@backstage/backend-app-api@npm:1.1.0" + dependencies: + "@backstage/backend-plugin-api": ^1.1.0 + "@backstage/cli-common": ^0.1.15 + "@backstage/config": ^1.3.1 + "@backstage/config-loader": ^1.9.3 + "@backstage/errors": ^1.2.6 + "@backstage/plugin-auth-node": ^0.5.5 + "@backstage/plugin-permission-node": ^0.8.6 + "@backstage/types": ^1.2.0 + "@manypkg/get-packages": ^1.1.3 + compression: ^1.7.4 + cookie: ^0.7.0 + cors: ^2.8.5 + helmet: ^6.0.0 + jose: ^5.0.0 + knex: ^3.0.0 + lodash: ^4.17.21 + logform: ^2.3.2 + luxon: ^3.0.0 + minimatch: ^9.0.0 + minimist: ^1.2.5 + morgan: ^1.10.0 + node-forge: ^1.3.1 + path-to-regexp: ^8.0.0 + selfsigned: ^2.0.0 + stoppable: ^1.1.0 + triple-beam: ^1.4.1 + uuid: ^11.0.0 + winston: ^3.2.1 + winston-transport: ^4.5.0 + checksum: 0a394e95af0b49c6eaf7948211b1ad2ba6f00d97c7728f6df2ece8897f13da0d5a3903ab2657898037b0b76806d8c4fd1115478bbd6511bb9cf352d609cb4c18 + languageName: node + linkType: hard + "@backstage/backend-common@npm:^0.25.0": version: 0.25.0 resolution: "@backstage/backend-common@npm:0.25.0" @@ -2685,32 +3163,234 @@ __metadata: languageName: node linkType: hard -"@backstage/backend-dev-utils@npm:^0.1.5": - version: 0.1.5 - resolution: "@backstage/backend-dev-utils@npm:0.1.5" - checksum: 7c7eced8cc6fe88b6b54d7b9f04953dbfd07846772368a0b269d4e75da30133b61e4fe29782c0dc0aa547234d75ff60a985f378f92911680a9172fa8f2820e5b - languageName: node - linkType: hard - -"@backstage/backend-plugin-api@npm:^1.0.0, @backstage/backend-plugin-api@npm:^1.0.1": - version: 1.0.1 - resolution: "@backstage/backend-plugin-api@npm:1.0.1" +"@backstage/backend-defaults@npm:^0.5.1": + version: 0.5.3 + resolution: "@backstage/backend-defaults@npm:0.5.3" dependencies: - "@backstage/cli-common": ^0.1.14 - "@backstage/config": ^1.2.0 - "@backstage/errors": ^1.2.4 - "@backstage/plugin-auth-node": ^0.5.3 - "@backstage/plugin-permission-common": ^0.8.1 - "@backstage/types": ^1.1.1 + "@aws-sdk/abort-controller": ^3.347.0 + "@aws-sdk/client-codecommit": ^3.350.0 + "@aws-sdk/client-s3": ^3.350.0 + "@aws-sdk/credential-providers": ^3.350.0 + "@aws-sdk/types": ^3.347.0 + "@backstage/backend-app-api": ^1.0.2 + "@backstage/backend-dev-utils": ^0.1.5 + "@backstage/backend-plugin-api": ^1.0.2 + "@backstage/cli-common": ^0.1.15 + "@backstage/cli-node": ^0.2.10 + "@backstage/config": ^1.3.0 + "@backstage/config-loader": ^1.9.2 + "@backstage/errors": ^1.2.5 + "@backstage/integration": ^1.15.2 + "@backstage/integration-aws-node": ^0.1.13 + "@backstage/plugin-auth-node": ^0.5.4 + "@backstage/plugin-events-node": ^0.4.5 + "@backstage/plugin-permission-node": ^0.8.5 + "@backstage/types": ^1.2.0 + "@google-cloud/storage": ^7.0.0 + "@keyv/memcache": ^1.3.5 + "@keyv/redis": ^2.5.3 + "@manypkg/get-packages": ^1.1.3 + "@octokit/rest": ^19.0.3 + "@opentelemetry/api": ^1.3.0 + "@types/cors": ^2.8.6 "@types/express": ^4.17.6 - "@types/luxon": ^3.0.0 - express: ^4.17.1 - knex: ^3.0.0 + archiver: ^7.0.0 + base64-stream: ^1.0.0 + better-sqlite3: ^11.0.0 + compression: ^1.7.4 + concat-stream: ^2.0.0 + cookie: ^0.7.0 + cors: ^2.8.5 + cron: ^3.0.0 + express: ^4.17.1 + express-promise-router: ^4.1.0 + fs-extra: ^11.2.0 + git-url-parse: ^15.0.0 + helmet: ^6.0.0 + isomorphic-git: ^1.23.0 + jose: ^5.0.0 + keyv: ^4.5.2 + knex: ^3.0.0 + lodash: ^4.17.21 + logform: ^2.3.2 + luxon: ^3.0.0 + minimatch: ^9.0.0 + minimist: ^1.2.5 + morgan: ^1.10.0 + mysql2: ^3.0.0 + node-fetch: ^2.7.0 + node-forge: ^1.3.1 + p-limit: ^3.1.0 + path-to-regexp: ^8.0.0 + pg: ^8.11.3 + pg-connection-string: ^2.3.0 + pg-format: ^1.0.4 + raw-body: ^2.4.1 + selfsigned: ^2.0.0 + stoppable: ^1.1.0 + tar: ^6.1.12 + triple-beam: ^1.4.1 + uuid: ^11.0.0 + winston: ^3.2.1 + winston-transport: ^4.5.0 + yauzl: ^3.0.0 + yn: ^4.0.0 + zod: ^3.22.4 + checksum: 92be8c95a2a41ee4c040a4046703026127a5d3194828f907e862413c5c49bc305181bdf9734970f2e95909ceba6021cc8e28513631df43e92d2d5658d4f1bcce + languageName: node + linkType: hard + +"@backstage/backend-defaults@npm:^0.6.0": + version: 0.6.0 + resolution: "@backstage/backend-defaults@npm:0.6.0" + dependencies: + "@aws-sdk/abort-controller": ^3.347.0 + "@aws-sdk/client-codecommit": ^3.350.0 + "@aws-sdk/client-s3": ^3.350.0 + "@aws-sdk/credential-providers": ^3.350.0 + "@aws-sdk/types": ^3.347.0 + "@azure/identity": ^4.0.0 + "@azure/storage-blob": ^12.5.0 + "@backstage/backend-app-api": ^1.1.0 + "@backstage/backend-dev-utils": ^0.1.5 + "@backstage/backend-plugin-api": ^1.1.0 + "@backstage/cli-common": ^0.1.15 + "@backstage/cli-node": ^0.2.11 + "@backstage/config": ^1.3.1 + "@backstage/config-loader": ^1.9.3 + "@backstage/errors": ^1.2.6 + "@backstage/integration": ^1.16.0 + "@backstage/integration-aws-node": ^0.1.14 + "@backstage/plugin-auth-node": ^0.5.5 + "@backstage/plugin-events-node": ^0.4.6 + "@backstage/plugin-permission-node": ^0.8.6 + "@backstage/types": ^1.2.0 + "@google-cloud/storage": ^7.0.0 + "@keyv/memcache": ^2.0.1 + "@keyv/redis": ^4.0.1 + "@manypkg/get-packages": ^1.1.3 + "@octokit/rest": ^19.0.3 + "@opentelemetry/api": ^1.9.0 + "@types/cors": ^2.8.6 + "@types/express": ^4.17.6 + archiver: ^7.0.0 + base64-stream: ^1.0.0 + better-sqlite3: ^11.0.0 + compression: ^1.7.4 + concat-stream: ^2.0.0 + cookie: ^0.7.0 + cors: ^2.8.5 + cron: ^3.0.0 + express: ^4.17.1 + express-promise-router: ^4.1.0 + fs-extra: ^11.2.0 + git-url-parse: ^15.0.0 + helmet: ^6.0.0 + isomorphic-git: ^1.23.0 + jose: ^5.0.0 + keyv: ^5.2.1 + knex: ^3.0.0 + lodash: ^4.17.21 + logform: ^2.3.2 + luxon: ^3.0.0 + minimatch: ^9.0.0 + minimist: ^1.2.5 + mysql2: ^3.0.0 + node-fetch: ^2.7.0 + node-forge: ^1.3.1 + p-limit: ^3.1.0 + p-throttle: ^4.1.1 + path-to-regexp: ^8.0.0 + pg: ^8.11.3 + pg-connection-string: ^2.3.0 + pg-format: ^1.0.4 + raw-body: ^2.4.1 + selfsigned: ^2.0.0 + tar: ^6.1.12 + triple-beam: ^1.4.1 + uuid: ^11.0.0 + winston: ^3.2.1 + winston-transport: ^4.5.0 + yauzl: ^3.0.0 + yn: ^4.0.0 + zod: ^3.22.4 + peerDependencies: + "@google-cloud/cloud-sql-connector": ^1.4.0 + peerDependenciesMeta: + "@google-cloud/cloud-sql-connector": + optional: true + checksum: 28ed87b948f72a88db942240af0b6b4e6543606be85f3fc1ef89ab2a8187dfcc0a23aeafb54e43bb34671c97cc43912c6604d4e968a3228d68acf4f90c2615d5 + languageName: node + linkType: hard + +"@backstage/backend-dev-utils@npm:^0.1.5": + version: 0.1.5 + resolution: "@backstage/backend-dev-utils@npm:0.1.5" + checksum: 7c7eced8cc6fe88b6b54d7b9f04953dbfd07846772368a0b269d4e75da30133b61e4fe29782c0dc0aa547234d75ff60a985f378f92911680a9172fa8f2820e5b + languageName: node + linkType: hard + +"@backstage/backend-openapi-utils@npm:^0.4.0": + version: 0.4.0 + resolution: "@backstage/backend-openapi-utils@npm:0.4.0" + dependencies: + "@apidevtools/swagger-parser": ^10.1.0 + "@backstage/backend-plugin-api": ^1.1.0 + "@backstage/errors": ^1.2.6 + "@backstage/types": ^1.2.0 + "@types/express": ^4.17.6 + "@types/express-serve-static-core": ^4.17.5 + ajv: ^8.16.0 + express: ^4.17.1 + express-openapi-validator: ^5.0.4 + express-promise-router: ^4.1.0 + get-port: ^5.1.1 + json-schema-to-ts: ^3.0.0 + lodash: ^4.17.21 + mockttp: ^3.13.0 + openapi-merge: ^1.3.2 + openapi3-ts: ^3.1.2 + checksum: e2108143f324ecbd0373248ef7dbdf64582f21edfd027c183c8381f7459bab5bf1fef8bf2bd109cfabec6cc32c9298b85bcd6376487f7129b88c8985a34fe47a + languageName: node + linkType: hard + +"@backstage/backend-plugin-api@npm:^1.0.0, @backstage/backend-plugin-api@npm:^1.0.1": + version: 1.0.1 + resolution: "@backstage/backend-plugin-api@npm:1.0.1" + dependencies: + "@backstage/cli-common": ^0.1.14 + "@backstage/config": ^1.2.0 + "@backstage/errors": ^1.2.4 + "@backstage/plugin-auth-node": ^0.5.3 + "@backstage/plugin-permission-common": ^0.8.1 + "@backstage/types": ^1.1.1 + "@types/express": ^4.17.6 + "@types/luxon": ^3.0.0 + express: ^4.17.1 + knex: ^3.0.0 luxon: ^3.0.0 checksum: a0d1dce15c1c90eec64e4f8d7d2eddd4ab43ebf4573db041b1ee835f27939e97eb162c20661fbafb3e8bc223c422512eea1a0327700164e51e328d620ca925c8 languageName: node linkType: hard +"@backstage/backend-plugin-api@npm:^1.0.2, @backstage/backend-plugin-api@npm:^1.1.0": + version: 1.1.0 + resolution: "@backstage/backend-plugin-api@npm:1.1.0" + dependencies: + "@backstage/cli-common": ^0.1.15 + "@backstage/config": ^1.3.1 + "@backstage/errors": ^1.2.6 + "@backstage/plugin-auth-node": ^0.5.5 + "@backstage/plugin-permission-common": ^0.8.3 + "@backstage/types": ^1.2.0 + "@types/express": ^4.17.6 + "@types/luxon": ^3.0.0 + knex: ^3.0.0 + luxon: ^3.0.0 + checksum: 0a58762708c714511f7be16dcc6f5ceb80fb572f14f812887de2c93d83da4c70a62288fe0becb86b85f1319dcea1c632891bf2869bdca14b94d16d8066dba9ae + languageName: node + linkType: hard + "@backstage/backend-test-utils@npm:1.0.0": version: 1.0.0 resolution: "@backstage/backend-test-utils@npm:1.0.0" @@ -2761,6 +3441,18 @@ __metadata: languageName: node linkType: hard +"@backstage/catalog-client@npm:^1.9.0": + version: 1.9.0 + resolution: "@backstage/catalog-client@npm:1.9.0" + dependencies: + "@backstage/catalog-model": ^1.7.2 + "@backstage/errors": ^1.2.6 + cross-fetch: ^4.0.0 + uri-template: ^2.0.0 + checksum: ef26c36aee89ab1e8700fc681f5f62aa188cda714ae8bfe65ea154dc73ee6986ebabf2910805687d7eb66841765b0b6430c701726ec1f8171585a552e1f8d44f + languageName: node + linkType: hard + "@backstage/catalog-model@npm:^1.7.0": version: 1.7.0 resolution: "@backstage/catalog-model@npm:1.7.0" @@ -2773,6 +3465,18 @@ __metadata: languageName: node linkType: hard +"@backstage/catalog-model@npm:^1.7.2": + version: 1.7.2 + resolution: "@backstage/catalog-model@npm:1.7.2" + dependencies: + "@backstage/errors": ^1.2.6 + "@backstage/types": ^1.2.0 + ajv: ^8.10.0 + lodash: ^4.17.21 + checksum: 97b166303e9428c03e20750360f830a3810e70362143429e847df552cc197c60a560075f59776515518f618d9e754e377d07abaefaf6b73df8b08385f3bdd00d + languageName: node + linkType: hard + "@backstage/cli-common@npm:^0.1.14": version: 0.1.14 resolution: "@backstage/cli-common@npm:0.1.14" @@ -2780,6 +3484,29 @@ __metadata: languageName: node linkType: hard +"@backstage/cli-common@npm:^0.1.15": + version: 0.1.15 + resolution: "@backstage/cli-common@npm:0.1.15" + checksum: fbfded2ff0122c28c2104fa40703486c0fe5c43acd68de2659533d46ebc11f296a06c45499d0ced1579a75ee6002739d2cb90f08fe2587e887d79b82d4f91515 + languageName: node + linkType: hard + +"@backstage/cli-node@npm:^0.2.10, @backstage/cli-node@npm:^0.2.11": + version: 0.2.11 + resolution: "@backstage/cli-node@npm:0.2.11" + dependencies: + "@backstage/cli-common": ^0.1.15 + "@backstage/errors": ^1.2.6 + "@backstage/types": ^1.2.0 + "@manypkg/get-packages": ^1.1.3 + "@yarnpkg/parsers": ^3.0.0 + fs-extra: ^11.2.0 + semver: ^7.5.3 + zod: ^3.22.4 + checksum: 7dffc03c9abcb2699cd46211d9ef46a72231a8167e26d0cc236e6631d37dac80979ce725e879e366c4b5a15dda2d5f19ca6255eddc351319a0aa7dded737cf5d + languageName: node + linkType: hard + "@backstage/cli-node@npm:^0.2.8, @backstage/cli-node@npm:^0.2.9": version: 0.2.9 resolution: "@backstage/cli-node@npm:0.2.9" @@ -2933,9 +3660,9 @@ __metadata: languageName: node linkType: hard -"@backstage/cli@npm:^0.28.0": - version: 0.28.1 - resolution: "@backstage/cli@npm:0.28.1" +"@backstage/cli@npm:0.28.2": + version: 0.28.2 + resolution: "@backstage/cli@npm:0.28.2" dependencies: "@backstage/catalog-model": ^1.7.0 "@backstage/cli-common": ^0.1.14 @@ -3045,7 +3772,7 @@ __metadata: terser-webpack-plugin: ^5.1.3 ts-morph: ^23.0.0 util: ^0.12.3 - webpack: ^5.70.0 + webpack: ^5.94.0 webpack-dev-server: ^5.0.0 webpack-node-externals: ^3.0.0 yaml: ^2.0.0 @@ -3081,27 +3808,179 @@ __metadata: optional: true bin: backstage-cli: bin/backstage-cli - checksum: 5fe0537c30b69fa1236682b76ff713442e93ee62c904419a21e7343d9fa55076d8a38af89ff2d6e3e183add84ef1e46f136e0ff0be12cc3577517a493e5c0746 + checksum: 32e75a897a7a7b14df6ce43b66fdd5c9fb11b54b88fd3655257055536c77d38bf2d0c5fefbd44348f6250493673396c566eab695007f89d870757956ef659159 languageName: node linkType: hard -"@backstage/config-loader@npm:^1.9.1": - version: 1.9.1 - resolution: "@backstage/config-loader@npm:1.9.1" +"@backstage/cli@npm:^0.28.0": + version: 0.28.1 + resolution: "@backstage/cli@npm:0.28.1" dependencies: + "@backstage/catalog-model": ^1.7.0 "@backstage/cli-common": ^0.1.14 + "@backstage/cli-node": ^0.2.9 "@backstage/config": ^1.2.0 + "@backstage/config-loader": ^1.9.1 "@backstage/errors": ^1.2.4 + "@backstage/eslint-plugin": ^0.1.10 + "@backstage/integration": ^1.15.1 + "@backstage/release-manifests": ^0.0.11 "@backstage/types": ^1.1.1 - "@types/json-schema": ^7.0.6 - ajv: ^8.10.0 - chokidar: ^3.5.2 + "@manypkg/get-packages": ^1.1.3 + "@module-federation/enhanced": ^0.6.0 + "@octokit/graphql": ^5.0.0 + "@octokit/graphql-schema": ^13.7.0 + "@octokit/oauth-app": ^4.2.0 + "@octokit/request": ^6.0.0 + "@pmmmwh/react-refresh-webpack-plugin": ^0.5.7 + "@rollup/plugin-commonjs": ^26.0.0 + "@rollup/plugin-json": ^6.0.0 + "@rollup/plugin-node-resolve": ^15.0.0 + "@rollup/plugin-yaml": ^4.0.0 + "@spotify/eslint-config-base": ^15.0.0 + "@spotify/eslint-config-react": ^15.0.0 + "@spotify/eslint-config-typescript": ^15.0.0 + "@sucrase/webpack-loader": ^2.0.0 + "@svgr/core": 6.5.x + "@svgr/plugin-jsx": 6.5.x + "@svgr/plugin-svgo": 6.5.x + "@svgr/rollup": 6.5.x + "@svgr/webpack": 6.5.x + "@swc/core": ^1.3.46 + "@swc/helpers": ^0.5.0 + "@swc/jest": ^0.2.22 + "@types/jest": ^29.5.11 + "@types/webpack-env": ^1.15.2 + "@typescript-eslint/eslint-plugin": ^6.12.0 + "@typescript-eslint/parser": ^6.7.2 + "@yarnpkg/lockfile": ^1.1.0 + "@yarnpkg/parsers": ^3.0.0 + bfj: ^8.0.0 + buffer: ^6.0.3 + chalk: ^4.0.0 + chokidar: ^3.3.1 + commander: ^12.0.0 + cross-fetch: ^4.0.0 + cross-spawn: ^7.0.3 + css-loader: ^6.5.1 + ctrlc-windows: ^2.1.0 + esbuild: ^0.24.0 + esbuild-loader: ^4.0.0 + eslint: ^8.6.0 + eslint-config-prettier: ^9.0.0 + eslint-formatter-friendly: ^7.0.0 + eslint-plugin-deprecation: ^2.0.0 + eslint-plugin-import: ^2.25.4 + eslint-plugin-jest: ^28.0.0 + eslint-plugin-jsx-a11y: ^6.5.1 + eslint-plugin-react: ^7.28.0 + eslint-plugin-react-hooks: ^4.3.0 + eslint-plugin-unused-imports: ^3.0.0 + eslint-webpack-plugin: ^4.0.0 + express: ^4.17.1 + fork-ts-checker-webpack-plugin: ^9.0.0 fs-extra: ^11.2.0 + git-url-parse: ^15.0.0 + glob: ^7.1.7 + global-agent: ^3.0.0 + globby: ^11.1.0 + handlebars: ^4.7.3 + html-webpack-plugin: ^5.3.1 + inquirer: ^8.2.0 + jest: ^29.7.0 + jest-cli: ^29.7.0 + jest-css-modules: ^2.1.0 + jest-environment-jsdom: ^29.0.2 + jest-runtime: ^29.0.2 json-schema: ^0.4.0 - json-schema-merge-allof: ^0.8.1 - json-schema-traverse: ^1.0.0 lodash: ^4.17.21 - minimist: ^1.2.5 + mini-css-extract-plugin: ^2.4.2 + minimatch: ^9.0.0 + node-fetch: ^2.7.0 + node-libs-browser: ^2.2.1 + npm-packlist: ^5.0.0 + ora: ^5.3.0 + p-limit: ^3.1.0 + p-queue: ^6.6.2 + pirates: ^4.0.6 + postcss: ^8.1.0 + process: ^0.11.10 + raw-loader: ^4.0.2 + react-dev-utils: ^12.0.0-next.60 + react-refresh: ^0.14.0 + recursive-readdir: ^2.2.2 + replace-in-file: ^7.1.0 + rollup: ^4.0.0 + rollup-plugin-dts: ^6.1.0 + rollup-plugin-esbuild: ^6.1.1 + rollup-plugin-postcss: ^4.0.0 + rollup-pluginutils: ^2.8.2 + run-script-webpack-plugin: ^0.2.0 + semver: ^7.5.3 + style-loader: ^3.3.1 + sucrase: ^3.20.2 + swc-loader: ^0.2.3 + tar: ^6.1.12 + terser-webpack-plugin: ^5.1.3 + ts-morph: ^23.0.0 + util: ^0.12.3 + webpack: ^5.70.0 + webpack-dev-server: ^5.0.0 + webpack-node-externals: ^3.0.0 + yaml: ^2.0.0 + yargs: ^16.2.0 + yml-loader: ^2.1.0 + yn: ^4.0.0 + zod: ^3.22.4 + peerDependencies: + "@modyfi/vite-plugin-yaml": ^1.1.0 + "@rspack/core": ^1.0.10 + "@rspack/dev-server": ^1.0.9 + "@rspack/plugin-react-refresh": ^1.0.0 + "@vitejs/plugin-react": ^4.0.4 + vite: ^4.4.9 + vite-plugin-html: ^3.2.0 + vite-plugin-node-polyfills: ^0.22.0 + peerDependenciesMeta: + "@modyfi/vite-plugin-yaml": + optional: true + "@rspack/core": + optional: true + "@rspack/dev-server": + optional: true + "@rspack/plugin-react-refresh": + optional: true + "@vitejs/plugin-react": + optional: true + vite: + optional: true + vite-plugin-html: + optional: true + vite-plugin-node-polyfills: + optional: true + bin: + backstage-cli: bin/backstage-cli + checksum: 5fe0537c30b69fa1236682b76ff713442e93ee62c904419a21e7343d9fa55076d8a38af89ff2d6e3e183add84ef1e46f136e0ff0be12cc3577517a493e5c0746 + languageName: node + linkType: hard + +"@backstage/config-loader@npm:^1.9.1": + version: 1.9.1 + resolution: "@backstage/config-loader@npm:1.9.1" + dependencies: + "@backstage/cli-common": ^0.1.14 + "@backstage/config": ^1.2.0 + "@backstage/errors": ^1.2.4 + "@backstage/types": ^1.1.1 + "@types/json-schema": ^7.0.6 + ajv: ^8.10.0 + chokidar: ^3.5.2 + fs-extra: ^11.2.0 + json-schema: ^0.4.0 + json-schema-merge-allof: ^0.8.1 + json-schema-traverse: ^1.0.0 + lodash: ^4.17.21 + minimist: ^1.2.5 node-fetch: ^2.7.0 typescript-json-schema: ^0.65.0 yaml: ^2.0.0 @@ -3109,6 +3988,29 @@ __metadata: languageName: node linkType: hard +"@backstage/config-loader@npm:^1.9.2, @backstage/config-loader@npm:^1.9.3": + version: 1.9.3 + resolution: "@backstage/config-loader@npm:1.9.3" + dependencies: + "@backstage/cli-common": ^0.1.15 + "@backstage/config": ^1.3.1 + "@backstage/errors": ^1.2.6 + "@backstage/types": ^1.2.0 + "@types/json-schema": ^7.0.6 + ajv: ^8.10.0 + chokidar: ^3.5.2 + fs-extra: ^11.2.0 + json-schema: ^0.4.0 + json-schema-merge-allof: ^0.8.1 + json-schema-traverse: ^1.0.0 + lodash: ^4.17.21 + minimist: ^1.2.5 + typescript-json-schema: ^0.65.0 + yaml: ^2.0.0 + checksum: 210e7482c488bb9afe9c77791a4914a08e012322a7514a2a559ddc03863eae30bb0c5e9514b5ed306d307bdfc7ab5cc0b938c092e888cf21cbc86c54ba16687a + languageName: node + linkType: hard + "@backstage/config@npm:^1.2.0": version: 1.2.0 resolution: "@backstage/config@npm:1.2.0" @@ -3119,6 +4021,218 @@ __metadata: languageName: node linkType: hard +"@backstage/config@npm:^1.3.0, @backstage/config@npm:^1.3.1": + version: 1.3.1 + resolution: "@backstage/config@npm:1.3.1" + dependencies: + "@backstage/errors": ^1.2.6 + "@backstage/types": ^1.2.0 + ms: ^2.1.3 + checksum: aa193687f19b0f6d928eab8474e30425723bd86bb272f9576ce731edb580d403c339cda2a10553c48e50d08b4f3fb4c79f9fd63f8e8156b8e5da69e4ca83ba86 + languageName: node + linkType: hard + +"@backstage/core-app-api@npm:^1.15.1, @backstage/core-app-api@npm:^1.15.3": + version: 1.15.3 + resolution: "@backstage/core-app-api@npm:1.15.3" + dependencies: + "@backstage/config": ^1.3.1 + "@backstage/core-plugin-api": ^1.10.2 + "@backstage/types": ^1.2.0 + "@backstage/version-bridge": ^1.0.10 + "@types/prop-types": ^15.7.3 + history: ^5.0.0 + i18next: ^22.4.15 + lodash: ^4.17.21 + prop-types: ^15.7.2 + react-use: ^17.2.4 + zen-observable: ^0.10.0 + zod: ^3.22.4 + peerDependencies: + "@types/react": ^16.13.1 || ^17.0.0 || ^18.0.0 + react: ^16.13.1 || ^17.0.0 || ^18.0.0 + react-dom: ^16.13.1 || ^17.0.0 || ^18.0.0 + react-router-dom: 6.0.0-beta.0 || ^6.3.0 + peerDependenciesMeta: + "@types/react": + optional: true + checksum: cba984dc0afe7b6bbb1b8fdc4bfc349bceab766d189c7517e39502042d38084c3d54610610e1ba305c8c1e5ccaa4a298c2640910d0a15d6741848c62c2436cc5 + languageName: node + linkType: hard + +"@backstage/core-compat-api@npm:^0.3.1, @backstage/core-compat-api@npm:^0.3.4": + version: 0.3.4 + resolution: "@backstage/core-compat-api@npm:0.3.4" + dependencies: + "@backstage/core-plugin-api": ^1.10.2 + "@backstage/frontend-plugin-api": ^0.9.3 + "@backstage/version-bridge": ^1.0.10 + lodash: ^4.17.21 + peerDependencies: + "@types/react": ^16.13.1 || ^17.0.0 || ^18.0.0 + react: ^16.13.1 || ^17.0.0 || ^18.0.0 + react-dom: ^16.13.1 || ^17.0.0 || ^18.0.0 + react-router-dom: 6.0.0-beta.0 || ^6.3.0 + peerDependenciesMeta: + "@types/react": + optional: true + checksum: f6912e18abb9f549e50c102a2ff1198b06f41598392deeace7e43d812e2bc665e73a585e14922e12014e497a25b579388b1a3c9c094f6c6dc210e12bc10c391f + languageName: node + linkType: hard + +"@backstage/core-components@npm:^0.15.1": + version: 0.15.1 + resolution: "@backstage/core-components@npm:0.15.1" + dependencies: + "@backstage/config": ^1.2.0 + "@backstage/core-plugin-api": ^1.10.0 + "@backstage/errors": ^1.2.4 + "@backstage/theme": ^0.6.0 + "@backstage/version-bridge": ^1.0.10 + "@date-io/core": ^1.3.13 + "@material-table/core": ^3.1.0 + "@material-ui/core": ^4.12.2 + "@material-ui/icons": ^4.9.1 + "@material-ui/lab": 4.0.0-alpha.61 + "@react-hookz/web": ^24.0.0 + "@types/react-sparklines": ^1.7.0 + ansi-regex: ^6.0.1 + classnames: ^2.2.6 + d3-selection: ^3.0.0 + d3-shape: ^3.0.0 + d3-zoom: ^3.0.0 + dagre: ^0.8.5 + linkify-react: 4.1.3 + linkifyjs: 4.1.3 + lodash: ^4.17.21 + pluralize: ^8.0.0 + qs: ^6.9.4 + rc-progress: 3.5.1 + react-helmet: 6.1.0 + react-hook-form: ^7.12.2 + react-idle-timer: 5.7.2 + react-markdown: ^8.0.0 + react-sparklines: ^1.7.0 + react-syntax-highlighter: ^15.4.5 + react-use: ^17.3.2 + react-virtualized-auto-sizer: ^1.0.11 + react-window: ^1.8.6 + remark-gfm: ^3.0.1 + zen-observable: ^0.10.0 + zod: ^3.22.4 + peerDependencies: + "@types/react": ^16.13.1 || ^17.0.0 || ^18.0.0 + react: ^16.13.1 || ^17.0.0 || ^18.0.0 + react-dom: ^16.13.1 || ^17.0.0 || ^18.0.0 + react-router-dom: 6.0.0-beta.0 || ^6.3.0 + peerDependenciesMeta: + "@types/react": + optional: true + checksum: 1eee1340919893194b34e9ab4237147910caecf1158c511481bbb80630bdd66d7dc0e156f0c1448e6b301689e32f7b98c0bb2f8127f2ffe85e596d9871903fcd + languageName: node + linkType: hard + +"@backstage/core-components@npm:^0.16.2": + version: 0.16.2 + resolution: "@backstage/core-components@npm:0.16.2" + dependencies: + "@backstage/config": ^1.3.1 + "@backstage/core-plugin-api": ^1.10.2 + "@backstage/errors": ^1.2.6 + "@backstage/theme": ^0.6.3 + "@backstage/version-bridge": ^1.0.10 + "@date-io/core": ^1.3.13 + "@material-table/core": ^3.1.0 + "@material-ui/core": ^4.12.2 + "@material-ui/icons": ^4.9.1 + "@material-ui/lab": 4.0.0-alpha.61 + "@react-hookz/web": ^24.0.0 + "@testing-library/react": ^16.0.0 + "@types/react-sparklines": ^1.7.0 + ansi-regex: ^6.0.1 + classnames: ^2.2.6 + d3-selection: ^3.0.0 + d3-shape: ^3.0.0 + d3-zoom: ^3.0.0 + dagre: ^0.8.5 + linkify-react: 4.1.3 + linkifyjs: 4.1.3 + lodash: ^4.17.21 + pluralize: ^8.0.0 + qs: ^6.9.4 + rc-progress: 3.5.1 + react-helmet: 6.1.0 + react-hook-form: ^7.12.2 + react-idle-timer: 5.7.2 + react-markdown: ^8.0.0 + react-sparklines: ^1.7.0 + react-syntax-highlighter: ^15.4.5 + react-use: ^17.3.2 + react-virtualized-auto-sizer: ^1.0.11 + react-window: ^1.8.6 + remark-gfm: ^3.0.1 + zen-observable: ^0.10.0 + zod: ^3.22.4 + peerDependencies: + "@types/react": ^16.13.1 || ^17.0.0 || ^18.0.0 + react: ^16.13.1 || ^17.0.0 || ^18.0.0 + react-dom: ^16.13.1 || ^17.0.0 || ^18.0.0 + react-router-dom: 6.0.0-beta.0 || ^6.3.0 + peerDependenciesMeta: + "@types/react": + optional: true + checksum: 7d9c89e3abca65828399958cbca5642f003ff8d1b0a5d9b45b36f7fc1b9607df30f74c369b04e11d194e691cd55e26822c726dec4e5b005c25b284ac7c5240bc + languageName: node + linkType: hard + +"@backstage/core-plugin-api@npm:^1.10.0, @backstage/core-plugin-api@npm:^1.10.2": + version: 1.10.2 + resolution: "@backstage/core-plugin-api@npm:1.10.2" + dependencies: + "@backstage/config": ^1.3.1 + "@backstage/errors": ^1.2.6 + "@backstage/types": ^1.2.0 + "@backstage/version-bridge": ^1.0.10 + history: ^5.0.0 + peerDependencies: + "@types/react": ^16.13.1 || ^17.0.0 || ^18.0.0 + react: ^16.13.1 || ^17.0.0 || ^18.0.0 + react-dom: ^16.13.1 || ^17.0.0 || ^18.0.0 + react-router-dom: 6.0.0-beta.0 || ^6.3.0 + peerDependenciesMeta: + "@types/react": + optional: true + checksum: c2bb2857237ca2453fddd1361142ab7fb26345ae833e90383a83fc8a186b31efef5d60e96423c21ebad4dd47c677e5f4a87460149a10eabdb790cbac844f83ae + languageName: node + linkType: hard + +"@backstage/dev-utils@npm:1.1.2": + version: 1.1.2 + resolution: "@backstage/dev-utils@npm:1.1.2" + dependencies: + "@backstage/app-defaults": ^1.5.12 + "@backstage/catalog-model": ^1.7.0 + "@backstage/core-app-api": ^1.15.1 + "@backstage/core-components": ^0.15.1 + "@backstage/core-plugin-api": ^1.10.0 + "@backstage/integration-react": ^1.2.0 + "@backstage/plugin-catalog-react": ^1.14.0 + "@backstage/theme": ^0.6.0 + "@material-ui/core": ^4.12.2 + "@material-ui/icons": ^4.9.1 + react-use: ^17.2.4 + peerDependencies: + "@types/react": ^16.13.1 || ^17.0.0 || ^18.0.0 + react: ^16.13.1 || ^17.0.0 || ^18.0.0 + react-dom: ^16.13.1 || ^17.0.0 || ^18.0.0 + react-router-dom: 6.0.0-beta.0 || ^6.3.0 + peerDependenciesMeta: + "@types/react": + optional: true + checksum: 6695acd5d4633892a3f55848e95b3ea2c969ad0f4601134aad1256a5366505f29fcfe1b0ee35c6086c1b16a92706fa585b6d91fdbff30bf0697d47815e6724b6 + languageName: node + linkType: hard + "@backstage/e2e-test-utils@npm:^0.1.1": version: 0.1.1 resolution: "@backstage/e2e-test-utils@npm:0.1.1" @@ -3144,6 +4258,16 @@ __metadata: languageName: node linkType: hard +"@backstage/errors@npm:^1.2.5, @backstage/errors@npm:^1.2.6": + version: 1.2.6 + resolution: "@backstage/errors@npm:1.2.6" + dependencies: + "@backstage/types": ^1.2.0 + serialize-error: ^8.0.1 + checksum: 9867157464cf5f8821109faa46c101a30f94b701e08b7cb23c5884a2e83aa4b06ff7118b62210da84db1a770b1171ec219b161caf04748ad4b8c2f90a9f0fdc5 + languageName: node + linkType: hard + "@backstage/eslint-plugin@npm:^0.1.10, @backstage/eslint-plugin@npm:^0.1.9": version: 0.1.10 resolution: "@backstage/eslint-plugin@npm:0.1.10" @@ -3154,6 +4278,103 @@ __metadata: languageName: node linkType: hard +"@backstage/frontend-app-api@npm:^0.10.3": + version: 0.10.3 + resolution: "@backstage/frontend-app-api@npm:0.10.3" + dependencies: + "@backstage/config": ^1.3.1 + "@backstage/core-app-api": ^1.15.3 + "@backstage/core-plugin-api": ^1.10.2 + "@backstage/errors": ^1.2.6 + "@backstage/frontend-defaults": ^0.1.4 + "@backstage/frontend-plugin-api": ^0.9.3 + "@backstage/types": ^1.2.0 + "@backstage/version-bridge": ^1.0.10 + lodash: ^4.17.21 + zod: ^3.22.4 + peerDependencies: + "@types/react": ^16.13.1 || ^17.0.0 || ^18.0.0 + react: ^16.13.1 || ^17.0.0 || ^18.0.0 + react-dom: ^16.13.1 || ^17.0.0 || ^18.0.0 + react-router-dom: 6.0.0-beta.0 || ^6.3.0 + peerDependenciesMeta: + "@types/react": + optional: true + checksum: f263f50e6299ffdb31112069833a5d722c088c1c5c87b3dd18297f06e2162854eea269643fde2b2d3df246ba7634becbd78d890e68ce41274b5a35fa6b016305 + languageName: node + linkType: hard + +"@backstage/frontend-defaults@npm:^0.1.4": + version: 0.1.4 + resolution: "@backstage/frontend-defaults@npm:0.1.4" + dependencies: + "@backstage/config": ^1.3.1 + "@backstage/errors": ^1.2.6 + "@backstage/frontend-app-api": ^0.10.3 + "@backstage/frontend-plugin-api": ^0.9.3 + "@backstage/plugin-app": ^0.1.4 + "@react-hookz/web": ^24.0.0 + peerDependencies: + "@types/react": ^16.13.1 || ^17.0.0 || ^18.0.0 + react: ^16.13.1 || ^17.0.0 || ^18.0.0 + react-dom: ^16.13.1 || ^17.0.0 || ^18.0.0 + react-router-dom: 6.0.0-beta.0 || ^6.3.0 + peerDependenciesMeta: + "@types/react": + optional: true + checksum: a4d8fb347f7424f1f2cc305d8d311130bd696e1aeca8ec119ddf0d268d73a746c58054015f5c696ef885cd429dff5ed49b2ac4c768160b2c87be2f0735dbf0da + languageName: node + linkType: hard + +"@backstage/frontend-plugin-api@npm:^0.9.0, @backstage/frontend-plugin-api@npm:^0.9.3": + version: 0.9.3 + resolution: "@backstage/frontend-plugin-api@npm:0.9.3" + dependencies: + "@backstage/core-components": ^0.16.2 + "@backstage/core-plugin-api": ^1.10.2 + "@backstage/types": ^1.2.0 + "@backstage/version-bridge": ^1.0.10 + "@material-ui/core": ^4.12.4 + lodash: ^4.17.21 + zod: ^3.22.4 + zod-to-json-schema: ^3.21.4 + peerDependencies: + "@types/react": ^16.13.1 || ^17.0.0 || ^18.0.0 + react: ^16.13.1 || ^17.0.0 || ^18.0.0 + react-dom: ^16.13.1 || ^17.0.0 || ^18.0.0 + react-router-dom: 6.0.0-beta.0 || ^6.3.0 + peerDependenciesMeta: + "@types/react": + optional: true + checksum: c2e1056f3338b8df5d30c61947994f1a707dc08d97e6b5ebb87722ddcac23c60fc006bc1917bf0929609098512da05ed232c2dc9c237c16979aea63681f81cb4 + languageName: node + linkType: hard + +"@backstage/frontend-test-utils@npm:^0.2.4": + version: 0.2.4 + resolution: "@backstage/frontend-test-utils@npm:0.2.4" + dependencies: + "@backstage/config": ^1.3.1 + "@backstage/frontend-app-api": ^0.10.3 + "@backstage/frontend-plugin-api": ^0.9.3 + "@backstage/plugin-app": ^0.1.4 + "@backstage/test-utils": ^1.7.3 + "@backstage/types": ^1.2.0 + "@backstage/version-bridge": ^1.0.10 + zod: ^3.22.4 + peerDependencies: + "@testing-library/react": ^16.0.0 + "@types/react": ^16.13.1 || ^17.0.0 || ^18.0.0 + react: ^16.13.1 || ^17.0.0 || ^18.0.0 + react-dom: ^16.13.1 || ^17.0.0 || ^18.0.0 + react-router-dom: 6.0.0-beta.0 || ^6.3.0 + peerDependenciesMeta: + "@types/react": + optional: true + checksum: f3ff1b748e3edb01f557f875bbc4eade8bbdb0a63331494790b2c9f4e7ca140b85a35b3783a067cb5bd3243b521d285716ff74262ff1c0dcdf76fe7ef6c77af5 + languageName: node + linkType: hard + "@backstage/integration-aws-node@npm:^0.1.12": version: 0.1.12 resolution: "@backstage/integration-aws-node@npm:0.1.12" @@ -3169,6 +4390,42 @@ __metadata: languageName: node linkType: hard +"@backstage/integration-aws-node@npm:^0.1.13, @backstage/integration-aws-node@npm:^0.1.14": + version: 0.1.14 + resolution: "@backstage/integration-aws-node@npm:0.1.14" + dependencies: + "@aws-sdk/client-sts": ^3.350.0 + "@aws-sdk/credential-provider-node": ^3.350.0 + "@aws-sdk/credential-providers": ^3.350.0 + "@aws-sdk/types": ^3.347.0 + "@aws-sdk/util-arn-parser": ^3.310.0 + "@backstage/config": ^1.3.1 + "@backstage/errors": ^1.2.6 + checksum: 65b5a0f8c3b7936441eb0e7d853fb8f3feb6cb06421c2d9aa8f209503eaf625b88213a01747aa03fd3d6189be1c8ff301821f37506e813d4e76d9df53ad00f0e + languageName: node + linkType: hard + +"@backstage/integration-react@npm:^1.2.0, @backstage/integration-react@npm:^1.2.2": + version: 1.2.2 + resolution: "@backstage/integration-react@npm:1.2.2" + dependencies: + "@backstage/config": ^1.3.1 + "@backstage/core-plugin-api": ^1.10.2 + "@backstage/integration": ^1.16.0 + "@material-ui/core": ^4.12.2 + "@material-ui/icons": ^4.9.1 + peerDependencies: + "@types/react": ^16.13.1 || ^17.0.0 || ^18.0.0 + react: ^16.13.1 || ^17.0.0 || ^18.0.0 + react-dom: ^16.13.1 || ^17.0.0 || ^18.0.0 + react-router-dom: 6.0.0-beta.0 || ^6.3.0 + peerDependenciesMeta: + "@types/react": + optional: true + checksum: cf238ee64138a0fe2bd3957b3f852b3b2514176f557d532db2a358626540c00c021bd189ca1754cb40d536a62eeb1939e0fd9d4a37fc29a4df1e3e35bcd90578 + languageName: node + linkType: hard + "@backstage/integration@npm:^1.15.0, @backstage/integration@npm:^1.15.1": version: 1.15.1 resolution: "@backstage/integration@npm:1.15.1" @@ -3186,16947 +4443,28687 @@ __metadata: languageName: node linkType: hard -"@backstage/plugin-auth-node@npm:^0.5.2, @backstage/plugin-auth-node@npm:^0.5.3": - version: 0.5.3 - resolution: "@backstage/plugin-auth-node@npm:0.5.3" +"@backstage/integration@npm:^1.15.2, @backstage/integration@npm:^1.16.0": + version: 1.16.0 + resolution: "@backstage/integration@npm:1.16.0" dependencies: - "@backstage/backend-common": ^0.25.0 - "@backstage/backend-plugin-api": ^1.0.1 - "@backstage/catalog-client": ^1.7.1 - "@backstage/catalog-model": ^1.7.0 - "@backstage/config": ^1.2.0 - "@backstage/errors": ^1.2.4 - "@backstage/types": ^1.1.1 - "@types/express": "*" - "@types/passport": ^1.0.3 - express: ^4.17.1 - jose: ^5.0.0 + "@azure/identity": ^4.0.0 + "@azure/storage-blob": ^12.5.0 + "@backstage/config": ^1.3.1 + "@backstage/errors": ^1.2.6 + "@octokit/auth-app": ^4.0.0 + "@octokit/rest": ^19.0.3 + cross-fetch: ^4.0.0 + git-url-parse: ^15.0.0 lodash: ^4.17.21 - node-fetch: ^2.7.0 - passport: ^0.7.0 - winston: ^3.2.1 - zod: ^3.22.4 - zod-to-json-schema: ^3.21.4 - zod-validation-error: ^3.4.0 - checksum: 6a8fcac434b3653011aa634fab973b9bdc9daf141335948669bcbd8e2c5f97e0797feaaaae34e17e20334835cdb83fea6c7b50939f1a18f9c88e245406230c50 + luxon: ^3.0.0 + checksum: d116f5b7ff06f6e520626c91c4551557a2a13a65b4914d62f6629744c6651e8925f901d193dcec9274a484c29147900daaa93c93b9acd9f98a7b06abf101a555 languageName: node linkType: hard -"@backstage/plugin-events-node@npm:^0.4.0, @backstage/plugin-events-node@npm:^0.4.2": - version: 0.4.3 - resolution: "@backstage/plugin-events-node@npm:0.4.3" +"@backstage/plugin-api-docs@npm:^0.11.11": + version: 0.11.11 + resolution: "@backstage/plugin-api-docs@npm:0.11.11" dependencies: - "@backstage/backend-plugin-api": ^1.0.1 - "@backstage/errors": ^1.2.4 - "@backstage/types": ^1.1.1 - cross-fetch: ^4.0.0 - uri-template: ^2.0.0 - checksum: fd66714810b787dd3b4a3e97b62746bfb9981b7cc8f5cf6188718f9249a7f000e6e3fcf8ef512dc202078082ca9dc74cadaf0566e316aab44dbf80b367e0a646 + "@asyncapi/react-component": 1.3.1 + "@backstage/catalog-model": ^1.7.0 + "@backstage/core-compat-api": ^0.3.1 + "@backstage/core-components": ^0.15.1 + "@backstage/core-plugin-api": ^1.10.0 + "@backstage/frontend-plugin-api": ^0.9.0 + "@backstage/plugin-catalog": ^1.24.0 + "@backstage/plugin-catalog-common": ^1.1.0 + "@backstage/plugin-catalog-react": ^1.14.0 + "@backstage/plugin-permission-react": ^0.4.27 + "@graphiql/react": ^0.23.0 + "@material-ui/core": ^4.12.2 + "@material-ui/icons": ^4.9.1 + "@material-ui/lab": 4.0.0-alpha.61 + graphiql: 3.1.1 + graphql: ^16.0.0 + graphql-config: ^5.0.2 + graphql-ws: ^5.4.1 + isomorphic-form-data: ^2.0.0 + swagger-ui-react: ^5.0.0 + peerDependencies: + "@types/react": ^16.13.1 || ^17.0.0 || ^18.0.0 + react: ^16.13.1 || ^17.0.0 || ^18.0.0 + react-dom: ^16.13.1 || ^17.0.0 || ^18.0.0 + react-router-dom: 6.0.0-beta.0 || ^6.3.0 + peerDependenciesMeta: + "@types/react": + optional: true + checksum: 145d864463a852f35d89ad51a7f599578cfacc7de4ea90611cdd337dbcf92a3a52bb33e64f38b102806ddf97dcbee9a9e2e9f38ff334244f8502f3c193a1a2ec languageName: node linkType: hard -"@backstage/plugin-permission-common@npm:^0.8.1": - version: 0.8.1 - resolution: "@backstage/plugin-permission-common@npm:0.8.1" - dependencies: - "@backstage/config": ^1.2.0 - "@backstage/errors": ^1.2.4 - "@backstage/types": ^1.1.1 - cross-fetch: ^4.0.0 - uuid: ^9.0.0 - zod: ^3.22.4 - zod-to-json-schema: ^3.20.4 - checksum: 00f71b998aecefcf413b335ef67897be2210f9cecb1f58bb28e466f68acd04276e3105f2e99ad242792dfd2902e4ae7ea023efb8cda92447aef92a10b83d87e5 - languageName: node - linkType: hard - -"@backstage/plugin-permission-node@npm:^0.8.4": - version: 0.8.4 - resolution: "@backstage/plugin-permission-node@npm:0.8.4" +"@backstage/plugin-app-backend@npm:^0.3.76": + version: 0.3.76 + resolution: "@backstage/plugin-app-backend@npm:0.3.76" dependencies: "@backstage/backend-common": ^0.25.0 "@backstage/backend-plugin-api": ^1.0.1 "@backstage/config": ^1.2.0 + "@backstage/config-loader": ^1.9.1 "@backstage/errors": ^1.2.4 + "@backstage/plugin-app-node": ^0.1.26 "@backstage/plugin-auth-node": ^0.5.3 - "@backstage/plugin-permission-common": ^0.8.1 + "@backstage/types": ^1.1.1 "@types/express": ^4.17.6 express: ^4.17.1 express-promise-router: ^4.1.0 - zod: ^3.22.4 - zod-to-json-schema: ^3.20.4 - checksum: a00c269e4777ff5e10db7a3859110f3a487c91e4c9422eb0650cbef3cfffc3dbd2f38e98fd793daef8242da2777ffbd87adb5715d21f0dff998b90c65261904e + fs-extra: ^11.2.0 + globby: ^11.0.0 + helmet: ^6.0.0 + knex: ^3.0.0 + lodash: ^4.17.21 + luxon: ^3.0.0 + yn: ^4.0.0 + checksum: d732efa6f692c631c13b90db5a32135fa950fc43ab35d8f4be075851e943304edc93074617747b5b78ee7d93c93ecfedd61e81f4617b3f081db3a04e3b20da5b languageName: node linkType: hard -"@backstage/release-manifests@npm:^0.0.11": - version: 0.0.11 - resolution: "@backstage/release-manifests@npm:0.0.11" +"@backstage/plugin-app-node@npm:^0.1.26": + version: 0.1.28 + resolution: "@backstage/plugin-app-node@npm:0.1.28" dependencies: - cross-fetch: ^4.0.0 - checksum: c03a21524436f1e423a40ac15f685b7f13ce3205e2684ce859571db3b70c78d783b3e1702ba3ffb2ba2d446f7444e8c592c6696b7c618fbf6648e91cb4c4fe07 + "@backstage/backend-plugin-api": ^1.1.0 + "@backstage/config-loader": ^1.9.3 + "@types/express": ^4.17.6 + express: ^4.17.1 + fs-extra: ^11.2.0 + checksum: ee523c274e671ae60e5413e8688843fa61d37140bcabfcdd9f29ae216fe393eebc1f023ef3d764ab81e32a8462f5bfb843df8e0995854cbc46c4633bae9db365 languageName: node linkType: hard -"@backstage/repo-tools@npm:^0.10.0": - version: 0.10.0 - resolution: "@backstage/repo-tools@npm:0.10.0" - dependencies: - "@apidevtools/swagger-parser": ^10.1.0 - "@apisyouwonthate/style-guide": ^1.4.0 - "@backstage/backend-plugin-api": ^1.0.1 - "@backstage/catalog-model": ^1.7.0 - "@backstage/cli-common": ^0.1.14 - "@backstage/cli-node": ^0.2.9 - "@backstage/config-loader": ^1.9.1 - "@backstage/errors": ^1.2.4 - "@manypkg/get-packages": ^1.1.3 - "@microsoft/api-documenter": ^7.25.7 - "@microsoft/api-extractor": ^7.47.2 - "@openapitools/openapi-generator-cli": ^2.7.0 - "@stoplight/spectral-core": ^1.18.0 - "@stoplight/spectral-formatters": ^1.1.0 - "@stoplight/spectral-functions": ^1.7.2 - "@stoplight/spectral-parsers": ^1.0.2 - "@stoplight/spectral-rulesets": ^1.18.0 - "@stoplight/spectral-runtime": ^1.1.2 - "@stoplight/types": ^14.0.0 - "@useoptic/openapi-utilities": ^0.55.0 - chalk: ^4.0.0 - codeowners-utils: ^1.0.2 - command-exists: ^1.2.9 - commander: ^12.0.0 - fs-extra: ^11.2.0 - glob: ^8.0.3 - is-glob: ^4.0.3 - js-yaml: ^4.1.0 - lodash: ^4.17.21 - minimatch: ^9.0.0 - p-limit: ^3.0.2 - portfinder: ^1.0.32 - ts-morph: ^23.0.0 - yaml-diff-patch: ^2.0.0 - peerDependencies: - "@microsoft/api-extractor-model": "*" - "@microsoft/tsdoc": "*" - "@microsoft/tsdoc-config": "*" - "@useoptic/optic": ^1.0.0 - prettier: ^2.8.1 - typescript: "> 3.0.0" +"@backstage/plugin-app@npm:^0.1.4": + version: 0.1.4 + resolution: "@backstage/plugin-app@npm:0.1.4" + dependencies: + "@backstage/core-components": ^0.16.2 + "@backstage/core-plugin-api": ^1.10.2 + "@backstage/frontend-plugin-api": ^0.9.3 + "@backstage/integration-react": ^1.2.2 + "@backstage/plugin-permission-react": ^0.4.29 + "@backstage/theme": ^0.6.3 + "@material-ui/core": ^4.9.13 + "@material-ui/icons": ^4.9.1 + "@material-ui/lab": ^4.0.0-alpha.61 + react-use: ^17.2.4 + peerDependencies: + "@types/react": ^16.13.1 || ^17.0.0 || ^18.0.0 + react: ^16.13.1 || ^17.0.0 || ^18.0.0 + react-dom: ^16.13.1 || ^17.0.0 || ^18.0.0 + react-router-dom: 6.0.0-beta.0 || ^6.3.0 peerDependenciesMeta: - prettier: + "@types/react": optional: true - bin: - backstage-repo-tools: bin/backstage-repo-tools - checksum: 8a68c69f053edadd087d829823880902d8e6d55e77d756d6b4ba4640af29493036ac5fa08cec08666b59ddfb27cacf4975fd24ac7ba785dab5b1d8a96df62bec - languageName: node - linkType: hard - -"@backstage/types@npm:^1.1.1": - version: 1.1.1 - resolution: "@backstage/types@npm:1.1.1" - checksum: 54bd9e53570cf2a7a8d9ae30e7181ee6b669b7f543949391a2168f616e1f7b13f0419f324941a87aa15f723d0313eda8f212db2077675421d6f91484f477c4f5 + checksum: 6f3ef0e975a85834e3f3f07e1bbe91a0822bfcbcd0c7c38f1a0f610f39bd7513fbe61bbb69236ce76727de8c98284c37fa2aba22b29aefc2032a3fe51a440bee languageName: node linkType: hard -"@balena/dockerignore@npm:^1.0.2": - version: 1.0.2 - resolution: "@balena/dockerignore@npm:1.0.2" - checksum: 0d39f8fbcfd1a983a44bced54508471ab81aaaa40e2c62b46a9f97eac9d6b265790799f16919216db486331dedaacdde6ecbd6b7abe285d39bc50de111991699 +"@backstage/plugin-auth-backend-module-atlassian-provider@npm:^0.3.1, @backstage/plugin-auth-backend-module-atlassian-provider@npm:^0.3.3": + version: 0.3.3 + resolution: "@backstage/plugin-auth-backend-module-atlassian-provider@npm:0.3.3" + dependencies: + "@backstage/backend-plugin-api": ^1.1.0 + "@backstage/plugin-auth-node": ^0.5.5 + express: ^4.18.2 + passport: ^0.7.0 + passport-atlassian-oauth2: ^2.1.0 + checksum: 500819d2d4597d6745f84b706525425f64aa6e1027f4bfde39d23225b9c0155aad61214ad20ba64aa9106cc32ec7fb80bcdf465b705cdaaa87b7277fe144006c languageName: node linkType: hard -"@bcoe/v8-coverage@npm:^0.2.3": - version: 0.2.3 - resolution: "@bcoe/v8-coverage@npm:0.2.3" - checksum: 850f9305536d0f2bd13e9e0881cb5f02e4f93fad1189f7b2d4bebf694e3206924eadee1068130d43c11b750efcc9405f88a8e42ef098b6d75239c0f047de1a27 +"@backstage/plugin-auth-backend-module-auth0-provider@npm:^0.1.1, @backstage/plugin-auth-backend-module-auth0-provider@npm:^0.1.3": + version: 0.1.3 + resolution: "@backstage/plugin-auth-backend-module-auth0-provider@npm:0.1.3" + dependencies: + "@backstage/backend-plugin-api": ^1.1.0 + "@backstage/plugin-auth-node": ^0.5.5 + express: ^4.17.1 + passport-auth0: ^1.4.3 + passport-oauth2: ^1.6.1 + checksum: 40fb863f1e951ba6b1426606cb84916bc5ac56c4248b2e26e92cb8bd9b73bf54fc81a8c9f33468cf459f473bf7904ab805f00a1d3598eb2f487b339ff0c15b4a languageName: node linkType: hard -"@changesets/apply-release-plan@npm:^7.0.5": - version: 7.0.5 - resolution: "@changesets/apply-release-plan@npm:7.0.5" +"@backstage/plugin-auth-backend-module-aws-alb-provider@npm:^0.2.1": + version: 0.2.1 + resolution: "@backstage/plugin-auth-backend-module-aws-alb-provider@npm:0.2.1" dependencies: - "@changesets/config": ^3.0.3 - "@changesets/get-version-range-type": ^0.4.0 - "@changesets/git": ^3.0.1 - "@changesets/should-skip-package": ^0.1.1 - "@changesets/types": ^6.0.0 - "@manypkg/get-packages": ^1.1.3 - detect-indent: ^6.0.0 - fs-extra: ^7.0.1 - lodash.startcase: ^4.4.0 - outdent: ^0.5.0 - prettier: ^2.7.1 - resolve-from: ^5.0.0 - semver: ^7.5.3 - checksum: f6a1b90d89fd08b46c11fad05d5fee510ff8a1888c163fd6221ccfb045eab013fa57c0c32c5697d6406852a39cf4df01b44f3ecca4746f30bd610bec54aa9abf + "@backstage/backend-common": ^0.25.0 + "@backstage/backend-plugin-api": ^1.0.1 + "@backstage/errors": ^1.2.4 + "@backstage/plugin-auth-backend": ^0.23.1 + "@backstage/plugin-auth-node": ^0.5.3 + jose: ^5.0.0 + node-cache: ^5.1.2 + node-fetch: ^2.7.0 + checksum: 4e294fbb06dd0c38c370a9e04d351b2ed5143934605bc6c5f415c5067797a42ab72f909acd19cf1f1dccb93e0dc010354b08d8c348d4db7122e0bf8d440405e6 languageName: node linkType: hard -"@changesets/assemble-release-plan@npm:^6.0.4": - version: 6.0.4 - resolution: "@changesets/assemble-release-plan@npm:6.0.4" +"@backstage/plugin-auth-backend-module-aws-alb-provider@npm:^0.3.1": + version: 0.3.1 + resolution: "@backstage/plugin-auth-backend-module-aws-alb-provider@npm:0.3.1" dependencies: - "@changesets/errors": ^0.2.0 - "@changesets/get-dependents-graph": ^2.1.2 - "@changesets/should-skip-package": ^0.1.1 - "@changesets/types": ^6.0.0 - "@manypkg/get-packages": ^1.1.3 - semver: ^7.5.3 - checksum: 948066a8ca8e12390599f641a0439b6a4d6c1c2a9958f58596aa50cf68d7d594b28acc1eb6bd0ad17df2025f0614006e44728a2614fad2a3d54c669568bf6d65 + "@backstage/backend-plugin-api": ^1.1.0 + "@backstage/errors": ^1.2.6 + "@backstage/plugin-auth-backend": ^0.24.1 + "@backstage/plugin-auth-node": ^0.5.5 + jose: ^5.0.0 + node-cache: ^5.1.2 + checksum: d6e91c7523947c25c83d31a0a9bd307a0bf8a70ca6198cd7654868000a2be53afdcdd5b280e2c962a81362f2c1de3dee95132af9d1a9a7420e02300cf9a87614 languageName: node linkType: hard -"@changesets/changelog-git@npm:^0.2.0": - version: 0.2.0 - resolution: "@changesets/changelog-git@npm:0.2.0" +"@backstage/plugin-auth-backend-module-azure-easyauth-provider@npm:^0.2.1, @backstage/plugin-auth-backend-module-azure-easyauth-provider@npm:^0.2.3": + version: 0.2.3 + resolution: "@backstage/plugin-auth-backend-module-azure-easyauth-provider@npm:0.2.3" dependencies: - "@changesets/types": ^6.0.0 - checksum: 132660f7fdabbdda00ac803cc822d6427a1a38a17a5f414e87ad32f6dc4cbef5280a147ecdc087a28dc06c8bd0762f8d6e7132d01b8a4142b59fbe1bc2177034 + "@backstage/backend-plugin-api": ^1.1.0 + "@backstage/catalog-model": ^1.7.2 + "@backstage/errors": ^1.2.6 + "@backstage/plugin-auth-node": ^0.5.5 + "@types/passport": ^1.0.16 + express: ^4.19.2 + jose: ^5.0.0 + passport: ^0.7.0 + checksum: 2c9c2ff7f1829f1123a14bcfe22a0623f4d5769d27701606d69617c9f2f2beb91b5059625b230d30f3f612fede06ca7c922a1e80d0ebd11bf9326f786e58c02b languageName: node linkType: hard -"@changesets/cli@npm:^2.27.1": - version: 2.27.9 - resolution: "@changesets/cli@npm:2.27.9" +"@backstage/plugin-auth-backend-module-bitbucket-provider@npm:^0.2.1, @backstage/plugin-auth-backend-module-bitbucket-provider@npm:^0.2.3": + version: 0.2.3 + resolution: "@backstage/plugin-auth-backend-module-bitbucket-provider@npm:0.2.3" dependencies: - "@changesets/apply-release-plan": ^7.0.5 - "@changesets/assemble-release-plan": ^6.0.4 - "@changesets/changelog-git": ^0.2.0 - "@changesets/config": ^3.0.3 - "@changesets/errors": ^0.2.0 - "@changesets/get-dependents-graph": ^2.1.2 - "@changesets/get-release-plan": ^4.0.4 - "@changesets/git": ^3.0.1 - "@changesets/logger": ^0.1.1 - "@changesets/pre": ^2.0.1 - "@changesets/read": ^0.6.1 - "@changesets/should-skip-package": ^0.1.1 - "@changesets/types": ^6.0.0 - "@changesets/write": ^0.3.2 - "@manypkg/get-packages": ^1.1.3 - ansi-colors: ^4.1.3 - ci-info: ^3.7.0 - enquirer: ^2.3.0 - external-editor: ^3.1.0 - fs-extra: ^7.0.1 - mri: ^1.2.0 - p-limit: ^2.2.0 - package-manager-detector: ^0.2.0 - picocolors: ^1.1.0 - resolve-from: ^5.0.0 - semver: ^7.5.3 - spawndamnit: ^2.0.0 - term-size: ^2.1.0 - bin: - changeset: bin.js - checksum: 4bd36c152f9f93716b001f3ed849717588d2a9eb97f058e86f95ba6a43d8e4311073174251150aabb96f0a1ab5f8ab5ee6a32f85fc9248363f92b3826227cb9d + "@backstage/backend-plugin-api": ^1.1.0 + "@backstage/plugin-auth-node": ^0.5.5 + express: ^4.18.2 + passport: ^0.7.0 + passport-bitbucket-oauth2: ^0.1.2 + checksum: bfa7fbe3fc94d639908a4eb3f288f2f2fd3684b8094f760a878f9fd608d8d86eac4257f84c59a5f4251f52849bb6e9621767006f7e0960a72226789a17847314 languageName: node linkType: hard -"@changesets/config@npm:^3.0.3": - version: 3.0.3 - resolution: "@changesets/config@npm:3.0.3" +"@backstage/plugin-auth-backend-module-bitbucket-server-provider@npm:^0.1.1, @backstage/plugin-auth-backend-module-bitbucket-server-provider@npm:^0.1.3": + version: 0.1.3 + resolution: "@backstage/plugin-auth-backend-module-bitbucket-server-provider@npm:0.1.3" dependencies: - "@changesets/errors": ^0.2.0 - "@changesets/get-dependents-graph": ^2.1.2 - "@changesets/logger": ^0.1.1 - "@changesets/types": ^6.0.0 - "@manypkg/get-packages": ^1.1.3 - fs-extra: ^7.0.1 - micromatch: ^4.0.2 - checksum: f216f497e09c0fcdd4c397fc3998d1651a171b89981d2bed2a6c23c0f55ffa4e240cadbd13902bf91c218686165689a5183674a5b4682d80d3d5b8b9c569f5f1 + "@backstage/backend-plugin-api": ^1.1.0 + "@backstage/plugin-auth-node": ^0.5.5 + passport: ^0.7.0 + passport-oauth2: ^1.6.1 + checksum: b4c2d9fcfcca85c094166daeef1f8fb7e3d14c60b2f60627793e7af563502e750c5a29085af71d22cdb5793bf3a1c93e7b69041040e628ecb90db1db64b5346a languageName: node linkType: hard -"@changesets/errors@npm:^0.2.0": - version: 0.2.0 - resolution: "@changesets/errors@npm:0.2.0" +"@backstage/plugin-auth-backend-module-cloudflare-access-provider@npm:^0.3.1, @backstage/plugin-auth-backend-module-cloudflare-access-provider@npm:^0.3.3": + version: 0.3.3 + resolution: "@backstage/plugin-auth-backend-module-cloudflare-access-provider@npm:0.3.3" dependencies: - extendable-error: ^0.1.5 - checksum: 4b79373f92287af4f723e8dbbccaf0299aa8735fc043243d0ad587f04a7614615ea50180be575d4438b9f00aa82d1cf85e902b77a55bdd3e0a8dd97e77b18c60 + "@backstage/backend-plugin-api": ^1.1.0 + "@backstage/config": ^1.3.1 + "@backstage/errors": ^1.2.6 + "@backstage/plugin-auth-node": ^0.5.5 + express: ^4.18.2 + jose: ^5.0.0 + checksum: 3078d994dd0a31c345cfa017c88855de1fe2a3408d78bbf4cef957c35eb3ffac8930669dae5431fef2ee677a74cff8788b9eb03514ef8c282410a3e341628a9e languageName: node linkType: hard -"@changesets/get-dependents-graph@npm:^2.1.2": - version: 2.1.2 - resolution: "@changesets/get-dependents-graph@npm:2.1.2" +"@backstage/plugin-auth-backend-module-gcp-iap-provider@npm:^0.3.1, @backstage/plugin-auth-backend-module-gcp-iap-provider@npm:^0.3.3": + version: 0.3.3 + resolution: "@backstage/plugin-auth-backend-module-gcp-iap-provider@npm:0.3.3" dependencies: - "@changesets/types": ^6.0.0 - "@manypkg/get-packages": ^1.1.3 - picocolors: ^1.1.0 - semver: ^7.5.3 - checksum: 38446343e43f9b8731098e3b42d2525d5399d59cfccc09bdb62c9a48de60c7a893882050202badca3b5cab8405e6deb82e88258a56a318e42749fa60d96d874a + "@backstage/backend-plugin-api": ^1.1.0 + "@backstage/errors": ^1.2.6 + "@backstage/plugin-auth-node": ^0.5.5 + "@backstage/types": ^1.2.0 + google-auth-library: ^9.0.0 + checksum: 911cba93765c81bf64093c93e9d7e145d85dc836aa9ccfeff4e846eb335a97cafca81fffff8ee627951c3e8b141d850f4d3fec118679b9750cb8695baa747335 languageName: node linkType: hard -"@changesets/get-release-plan@npm:^4.0.4": - version: 4.0.4 - resolution: "@changesets/get-release-plan@npm:4.0.4" +"@backstage/plugin-auth-backend-module-github-provider@npm:^0.2.1, @backstage/plugin-auth-backend-module-github-provider@npm:^0.2.3": + version: 0.2.3 + resolution: "@backstage/plugin-auth-backend-module-github-provider@npm:0.2.3" dependencies: - "@changesets/assemble-release-plan": ^6.0.4 - "@changesets/config": ^3.0.3 - "@changesets/pre": ^2.0.1 - "@changesets/read": ^0.6.1 - "@changesets/types": ^6.0.0 - "@manypkg/get-packages": ^1.1.3 - checksum: 7217347f5bfaa56f97d3964e28e23a109d60c42b7c879c0cab6934feb30bdbdebb6dd0e81b4ecb5ec414be442d566b6af90d9224f6a48a52b6c5269c337f54a6 + "@backstage/backend-plugin-api": ^1.1.0 + "@backstage/plugin-auth-node": ^0.5.5 + passport-github2: ^0.1.12 + checksum: b0e995bbfc91dcd6b0ecc167ec08cc0499e04e96f50b4c48c783c7b09c44d727789b3ac09831170c69c978a216fe5b2cd29e8ef47d493e5cfe0fd770ecb95cc8 languageName: node linkType: hard -"@changesets/get-version-range-type@npm:^0.4.0": - version: 0.4.0 - resolution: "@changesets/get-version-range-type@npm:0.4.0" - checksum: 2e8c511e658e193f48de7f09522649c4cf072932f0cbe0f252a7f2703d7775b0b90b632254526338795d0658e340be9dff3879cfc8eba4534b8cd6071efff8c9 +"@backstage/plugin-auth-backend-module-gitlab-provider@npm:^0.2.1, @backstage/plugin-auth-backend-module-gitlab-provider@npm:^0.2.3": + version: 0.2.3 + resolution: "@backstage/plugin-auth-backend-module-gitlab-provider@npm:0.2.3" + dependencies: + "@backstage/backend-plugin-api": ^1.1.0 + "@backstage/plugin-auth-node": ^0.5.5 + express: ^4.18.2 + passport: ^0.7.0 + passport-gitlab2: ^5.0.0 + checksum: 0129778e83d8fc9d8952d496f50cd5c882655f992df193935c4eefad5775b1fcecfeca88485dee65ec8382e5109a2b9b080b7668d08eab59318b168257eaa150 languageName: node linkType: hard -"@changesets/git@npm:^3.0.1": - version: 3.0.1 - resolution: "@changesets/git@npm:3.0.1" +"@backstage/plugin-auth-backend-module-google-provider@npm:^0.2.1, @backstage/plugin-auth-backend-module-google-provider@npm:^0.2.3": + version: 0.2.3 + resolution: "@backstage/plugin-auth-backend-module-google-provider@npm:0.2.3" dependencies: - "@changesets/errors": ^0.2.0 - "@manypkg/get-packages": ^1.1.3 - is-subdir: ^1.1.1 - micromatch: ^4.0.2 - spawndamnit: ^2.0.0 - checksum: 46d780fecd3dbdafde7c96dde7fe35a8461bc6edbff1de92d490971a99f021d60c5b4606a1d4fb778567146810090ede6610cf89407c14bde88edaa246801539 + "@backstage/backend-plugin-api": ^1.1.0 + "@backstage/plugin-auth-node": ^0.5.5 + google-auth-library: ^9.0.0 + passport-google-oauth20: ^2.0.0 + checksum: 5e4a2392f8206e4ebe362162e22b1b797b20dd6ad28e6218b59f93596420937e6efd6f56148fa95a0fc20bccaa7381264b329a70643de5bb5b2af51080cf6a5a languageName: node linkType: hard -"@changesets/logger@npm:^0.1.1": - version: 0.1.1 - resolution: "@changesets/logger@npm:0.1.1" +"@backstage/plugin-auth-backend-module-guest-provider@npm:^0.2.1": + version: 0.2.3 + resolution: "@backstage/plugin-auth-backend-module-guest-provider@npm:0.2.3" dependencies: - picocolors: ^1.1.0 - checksum: acca50ef6bf6e446b46eb576b32f1955bf4579dbf4bbc316768ed2c1d4ba4066c9c73b114eedefaa1b3e360b1060a020e6bd3dbdbc44b74da732df92307beab0 + "@backstage/backend-plugin-api": ^1.1.0 + "@backstage/catalog-model": ^1.7.2 + "@backstage/errors": ^1.2.6 + "@backstage/plugin-auth-node": ^0.5.5 + passport-oauth2: ^1.7.0 + checksum: 763570fda58c20404824c71f5c0f639e09bc947e9cdafaf0948251eaa3a2d2398ee5555eaaa9d14e7d0f1a62a0b6674d37457cc4421d2107d2321c5ead48fb15 languageName: node linkType: hard -"@changesets/parse@npm:^0.4.0": - version: 0.4.0 - resolution: "@changesets/parse@npm:0.4.0" +"@backstage/plugin-auth-backend-module-microsoft-provider@npm:^0.2.1, @backstage/plugin-auth-backend-module-microsoft-provider@npm:^0.2.3": + version: 0.2.3 + resolution: "@backstage/plugin-auth-backend-module-microsoft-provider@npm:0.2.3" dependencies: - "@changesets/types": ^6.0.0 - js-yaml: ^3.13.1 - checksum: 3dd970b244479746233ebd357cfff3816cf9f344ebf2cf0c7c55ce8579adfd3f506978e86ad61222dc3acf1548a2105ffdd8b3e940b3f82b225741315cee2bf0 + "@backstage/backend-plugin-api": ^1.1.0 + "@backstage/plugin-auth-node": ^0.5.5 + express: ^4.18.2 + jose: ^5.0.0 + passport-microsoft: ^1.0.0 + checksum: ac56d374990a340263ba42b70100812aa561e05741752c615aba67d94b4364286dc3defb6b338764ad8c834987259c7f29dbb943ec21ea9707f58d3f479131a4 languageName: node linkType: hard -"@changesets/pre@npm:^2.0.1": - version: 2.0.1 - resolution: "@changesets/pre@npm:2.0.1" +"@backstage/plugin-auth-backend-module-oauth2-provider@npm:^0.3.1, @backstage/plugin-auth-backend-module-oauth2-provider@npm:^0.3.3": + version: 0.3.3 + resolution: "@backstage/plugin-auth-backend-module-oauth2-provider@npm:0.3.3" dependencies: - "@changesets/errors": ^0.2.0 - "@changesets/types": ^6.0.0 - "@manypkg/get-packages": ^1.1.3 - fs-extra: ^7.0.1 - checksum: fbe94283dce0223ee79c12fa221105752ac89eb885b77e300ec755682cb06cc0145e10335f4bc6cb26d63473e549556c2b1c8c866242419aee5e41986379652a + "@backstage/backend-plugin-api": ^1.1.0 + "@backstage/plugin-auth-node": ^0.5.5 + passport: ^0.7.0 + passport-oauth2: ^1.6.1 + checksum: 9021087768985da64550651872496c94ea056bcf8f0eb3c04bed8229c6ac10fc7148ffc978a6beaf9170bc6142e8e450d4c993e1e8aafb284813abf53f8be285 languageName: node linkType: hard -"@changesets/read@npm:^0.6.1": - version: 0.6.1 - resolution: "@changesets/read@npm:0.6.1" +"@backstage/plugin-auth-backend-module-oauth2-proxy-provider@npm:^0.2.1, @backstage/plugin-auth-backend-module-oauth2-proxy-provider@npm:^0.2.3": + version: 0.2.3 + resolution: "@backstage/plugin-auth-backend-module-oauth2-proxy-provider@npm:0.2.3" dependencies: - "@changesets/git": ^3.0.1 - "@changesets/logger": ^0.1.1 - "@changesets/parse": ^0.4.0 - "@changesets/types": ^6.0.0 - fs-extra: ^7.0.1 - p-filter: ^2.1.0 - picocolors: ^1.1.0 - checksum: d00a18a3d04af5c76e7b763096650ebe16589864ab04eaf9e99c88aa77542f64de547b585037fc204d2055f9dd47fae94c789e2f173d3507a4e29dbe6609dd5b + "@backstage/backend-plugin-api": ^1.1.0 + "@backstage/errors": ^1.2.6 + "@backstage/plugin-auth-node": ^0.5.5 + jose: ^5.0.0 + checksum: 0003eda5c3a80ed193d97b569c272da58b4f251c889f8b68d58b5c088e5485283160249bdb556296d72570da1987bc3c491c292c658a7e56197c857b13c79835 languageName: node linkType: hard -"@changesets/should-skip-package@npm:^0.1.1": - version: 0.1.1 - resolution: "@changesets/should-skip-package@npm:0.1.1" +"@backstage/plugin-auth-backend-module-oidc-provider@npm:^0.3.1, @backstage/plugin-auth-backend-module-oidc-provider@npm:^0.3.3": + version: 0.3.3 + resolution: "@backstage/plugin-auth-backend-module-oidc-provider@npm:0.3.3" dependencies: - "@changesets/types": ^6.0.0 - "@manypkg/get-packages": ^1.1.3 - checksum: d187ef22495deb63e678d0ff65e8627701e2b52c25bd59dde10ce8646be8d605c0ed0a6af020dd825b137c2fc748fdc6cef52e7774bad4c7a4f404bf182a85cf + "@backstage/backend-plugin-api": ^1.1.0 + "@backstage/plugin-auth-backend": ^0.24.1 + "@backstage/plugin-auth-node": ^0.5.5 + express: ^4.18.2 + openid-client: ^5.5.0 + passport: ^0.7.0 + checksum: fb20f84b97ae2f69547531ccb44fd6f3a2fb28529205d5a46b63ba5969e71bee27050fac0df498efd6ad0ee3cbc2aa3f916090f9b4ff5d583f158e0929f77c6a languageName: node linkType: hard -"@changesets/types@npm:^4.0.1": - version: 4.1.0 - resolution: "@changesets/types@npm:4.1.0" - checksum: 72c1f58044178ca867dd9349ecc4b7c233ce3781bb03b5b72a70c3166fbbab54a2f2cb19a81f96b4649ba004442c8734569fba238be4dd737fb4624a135c6098 +"@backstage/plugin-auth-backend-module-okta-provider@npm:^0.1.1, @backstage/plugin-auth-backend-module-okta-provider@npm:^0.1.3": + version: 0.1.3 + resolution: "@backstage/plugin-auth-backend-module-okta-provider@npm:0.1.3" + dependencies: + "@backstage/backend-plugin-api": ^1.1.0 + "@backstage/plugin-auth-node": ^0.5.5 + "@davidzemon/passport-okta-oauth": ^0.0.5 + express: ^4.18.2 + passport: ^0.7.0 + checksum: 70c683063260d8cd712c9a07c0b1e2fc5ebed27237318350704d7c2dd0a515e4c06f54201f4ef9c57977ab0695f9107421f3907602977e13ddea3842229ebf4b languageName: node linkType: hard -"@changesets/types@npm:^6.0.0": - version: 6.0.0 - resolution: "@changesets/types@npm:6.0.0" - checksum: d528b5d712f62c26ea422c7d34ccf6eac57a353c0733d96716db3c796ecd9bba5d496d48b37d5d46b784dc45b69c06ce3345fa3515df981bb68456cad68e6465 +"@backstage/plugin-auth-backend-module-onelogin-provider@npm:^0.2.1, @backstage/plugin-auth-backend-module-onelogin-provider@npm:^0.2.3": + version: 0.2.3 + resolution: "@backstage/plugin-auth-backend-module-onelogin-provider@npm:0.2.3" + dependencies: + "@backstage/backend-plugin-api": ^1.1.0 + "@backstage/plugin-auth-node": ^0.5.5 + express: ^4.18.2 + passport: ^0.7.0 + passport-onelogin-oauth: ^0.0.1 + checksum: db99e6645b7f386163cfb87f08e0d5a8fb7cf45b0f4113c0babae4a79522029fa3421712530cb77a403fb7dce2c81bbce51babec48fa4fa98ad7185cc05eed26 languageName: node linkType: hard -"@changesets/write@npm:^0.3.2": - version: 0.3.2 - resolution: "@changesets/write@npm:0.3.2" +"@backstage/plugin-auth-backend@npm:^0.23.1": + version: 0.23.1 + resolution: "@backstage/plugin-auth-backend@npm:0.23.1" dependencies: - "@changesets/types": ^6.0.0 - fs-extra: ^7.0.1 - human-id: ^1.0.2 - prettier: ^2.7.1 - checksum: 553ed0ba6bd6397784f5e0e2921794bd7417a3c4fb810f1abb15e7072bf9d312af74308ff743161c6ea01478884cebcaf9cee02e5c70e2c7552b2774960ee07c + "@backstage/backend-common": ^0.25.0 + "@backstage/backend-plugin-api": ^1.0.1 + "@backstage/catalog-client": ^1.7.1 + "@backstage/catalog-model": ^1.7.0 + "@backstage/config": ^1.2.0 + "@backstage/errors": ^1.2.4 + "@backstage/plugin-auth-backend-module-atlassian-provider": ^0.3.1 + "@backstage/plugin-auth-backend-module-auth0-provider": ^0.1.1 + "@backstage/plugin-auth-backend-module-aws-alb-provider": ^0.2.1 + "@backstage/plugin-auth-backend-module-azure-easyauth-provider": ^0.2.1 + "@backstage/plugin-auth-backend-module-bitbucket-provider": ^0.2.1 + "@backstage/plugin-auth-backend-module-bitbucket-server-provider": ^0.1.1 + "@backstage/plugin-auth-backend-module-cloudflare-access-provider": ^0.3.1 + "@backstage/plugin-auth-backend-module-gcp-iap-provider": ^0.3.1 + "@backstage/plugin-auth-backend-module-github-provider": ^0.2.1 + "@backstage/plugin-auth-backend-module-gitlab-provider": ^0.2.1 + "@backstage/plugin-auth-backend-module-google-provider": ^0.2.1 + "@backstage/plugin-auth-backend-module-microsoft-provider": ^0.2.1 + "@backstage/plugin-auth-backend-module-oauth2-provider": ^0.3.1 + "@backstage/plugin-auth-backend-module-oauth2-proxy-provider": ^0.2.1 + "@backstage/plugin-auth-backend-module-oidc-provider": ^0.3.1 + "@backstage/plugin-auth-backend-module-okta-provider": ^0.1.1 + "@backstage/plugin-auth-backend-module-onelogin-provider": ^0.2.1 + "@backstage/plugin-auth-node": ^0.5.3 + "@backstage/plugin-catalog-node": ^1.13.1 + "@backstage/types": ^1.1.1 + "@google-cloud/firestore": ^7.0.0 + "@node-saml/passport-saml": ^5.0.0 + "@types/express": ^4.17.6 + "@types/passport": ^1.0.3 + compression: ^1.7.4 + connect-session-knex: ^4.0.0 + cookie-parser: ^1.4.5 + cors: ^2.8.5 + express: ^4.17.1 + express-promise-router: ^4.1.0 + express-session: ^1.17.1 + fs-extra: ^11.2.0 + google-auth-library: ^9.0.0 + jose: ^5.0.0 + knex: ^3.0.0 + lodash: ^4.17.21 + luxon: ^3.0.0 + minimatch: ^9.0.0 + morgan: ^1.10.0 + node-cache: ^5.1.2 + node-fetch: ^2.7.0 + openid-client: ^5.2.1 + passport: ^0.7.0 + passport-auth0: ^1.4.3 + passport-github2: ^0.1.12 + passport-google-oauth20: ^2.0.0 + passport-microsoft: ^1.0.0 + passport-oauth2: ^1.6.1 + passport-onelogin-oauth: ^0.0.1 + uuid: ^9.0.0 + winston: ^3.2.1 + yn: ^4.0.0 + checksum: 6043cef12af321082c0961bbf73b9f8b525c56a241dfe631c544080f945712d76eb1dbcacea06043e3469f1d55c44a1595d53a138135072bf0b383ad5c1d845e languageName: node linkType: hard -"@colors/colors@npm:1.6.0, @colors/colors@npm:^1.6.0": - version: 1.6.0 - resolution: "@colors/colors@npm:1.6.0" - checksum: aa209963e0c3218e80a4a20553ba8c0fbb6fa13140540b4e5f97923790be06801fc90172c1114fc8b7e888b3d012b67298cde6b9e81521361becfaee400c662f +"@backstage/plugin-auth-backend@npm:^0.24.1": + version: 0.24.1 + resolution: "@backstage/plugin-auth-backend@npm:0.24.1" + dependencies: + "@backstage/backend-common": ^0.25.0 + "@backstage/backend-plugin-api": ^1.1.0 + "@backstage/catalog-client": ^1.9.0 + "@backstage/catalog-model": ^1.7.2 + "@backstage/config": ^1.3.1 + "@backstage/errors": ^1.2.6 + "@backstage/plugin-auth-backend-module-atlassian-provider": ^0.3.3 + "@backstage/plugin-auth-backend-module-auth0-provider": ^0.1.3 + "@backstage/plugin-auth-backend-module-aws-alb-provider": ^0.3.1 + "@backstage/plugin-auth-backend-module-azure-easyauth-provider": ^0.2.3 + "@backstage/plugin-auth-backend-module-bitbucket-provider": ^0.2.3 + "@backstage/plugin-auth-backend-module-bitbucket-server-provider": ^0.1.3 + "@backstage/plugin-auth-backend-module-cloudflare-access-provider": ^0.3.3 + "@backstage/plugin-auth-backend-module-gcp-iap-provider": ^0.3.3 + "@backstage/plugin-auth-backend-module-github-provider": ^0.2.3 + "@backstage/plugin-auth-backend-module-gitlab-provider": ^0.2.3 + "@backstage/plugin-auth-backend-module-google-provider": ^0.2.3 + "@backstage/plugin-auth-backend-module-microsoft-provider": ^0.2.3 + "@backstage/plugin-auth-backend-module-oauth2-provider": ^0.3.3 + "@backstage/plugin-auth-backend-module-oauth2-proxy-provider": ^0.2.3 + "@backstage/plugin-auth-backend-module-oidc-provider": ^0.3.3 + "@backstage/plugin-auth-backend-module-okta-provider": ^0.1.3 + "@backstage/plugin-auth-backend-module-onelogin-provider": ^0.2.3 + "@backstage/plugin-auth-node": ^0.5.5 + "@backstage/plugin-catalog-node": ^1.15.0 + "@backstage/types": ^1.2.0 + "@google-cloud/firestore": ^7.0.0 + "@node-saml/passport-saml": ^5.0.0 + "@types/express": ^4.17.6 + "@types/passport": ^1.0.3 + compression: ^1.7.4 + connect-session-knex: ^4.0.0 + cookie-parser: ^1.4.5 + cors: ^2.8.5 + express: ^4.17.1 + express-promise-router: ^4.1.0 + express-session: ^1.17.1 + fs-extra: ^11.2.0 + google-auth-library: ^9.0.0 + jose: ^5.0.0 + knex: ^3.0.0 + lodash: ^4.17.21 + luxon: ^3.0.0 + minimatch: ^9.0.0 + morgan: ^1.10.0 + node-cache: ^5.1.2 + openid-client: ^5.2.1 + passport: ^0.7.0 + passport-auth0: ^1.4.3 + passport-github2: ^0.1.12 + passport-google-oauth20: ^2.0.0 + passport-microsoft: ^1.0.0 + passport-oauth2: ^1.6.1 + passport-onelogin-oauth: ^0.0.1 + uuid: ^11.0.0 + winston: ^3.2.1 + yn: ^4.0.0 + checksum: 968bbdc086813c92cdffab46932a334e867ba25a0cf8cd582f7d1d4a39ef0f6f3ead1d02c6f157c6477194a94969bbb905bd1ec197d052bc8f36e1e4429ffc12 languageName: node linkType: hard -"@cspotcode/source-map-support@npm:^0.8.0": - version: 0.8.1 - resolution: "@cspotcode/source-map-support@npm:0.8.1" +"@backstage/plugin-auth-node@npm:^0.5.2, @backstage/plugin-auth-node@npm:^0.5.3": + version: 0.5.3 + resolution: "@backstage/plugin-auth-node@npm:0.5.3" dependencies: - "@jridgewell/trace-mapping": 0.3.9 - checksum: 5718f267085ed8edb3e7ef210137241775e607ee18b77d95aa5bd7514f47f5019aa2d82d96b3bf342ef7aa890a346fa1044532ff7cc3009e7d24fce3ce6200fa + "@backstage/backend-common": ^0.25.0 + "@backstage/backend-plugin-api": ^1.0.1 + "@backstage/catalog-client": ^1.7.1 + "@backstage/catalog-model": ^1.7.0 + "@backstage/config": ^1.2.0 + "@backstage/errors": ^1.2.4 + "@backstage/types": ^1.1.1 + "@types/express": "*" + "@types/passport": ^1.0.3 + express: ^4.17.1 + jose: ^5.0.0 + lodash: ^4.17.21 + node-fetch: ^2.7.0 + passport: ^0.7.0 + winston: ^3.2.1 + zod: ^3.22.4 + zod-to-json-schema: ^3.21.4 + zod-validation-error: ^3.4.0 + checksum: 6a8fcac434b3653011aa634fab973b9bdc9daf141335948669bcbd8e2c5f97e0797feaaaae34e17e20334835cdb83fea6c7b50939f1a18f9c88e245406230c50 languageName: node linkType: hard -"@dabh/diagnostics@npm:^2.0.2": - version: 2.0.3 - resolution: "@dabh/diagnostics@npm:2.0.3" +"@backstage/plugin-auth-node@npm:^0.5.4, @backstage/plugin-auth-node@npm:^0.5.5": + version: 0.5.5 + resolution: "@backstage/plugin-auth-node@npm:0.5.5" dependencies: - colorspace: 1.1.x - enabled: 2.0.x - kuler: ^2.0.0 - checksum: 4879600c55c8315a0fb85fbb19057bad1adc08f0a080a8cb4e2b63f723c379bfc4283b68123a2b078d367b327dd8df12fcb27464efe791addc0a48b9df6d79a1 + "@backstage/backend-common": ^0.25.0 + "@backstage/backend-plugin-api": ^1.1.0 + "@backstage/catalog-client": ^1.9.0 + "@backstage/catalog-model": ^1.7.2 + "@backstage/config": ^1.3.1 + "@backstage/errors": ^1.2.6 + "@backstage/types": ^1.2.0 + "@types/express": ^4.17.6 + "@types/passport": ^1.0.3 + express: ^4.17.1 + jose: ^5.0.0 + lodash: ^4.17.21 + passport: ^0.7.0 + winston: ^3.2.1 + zod: ^3.22.4 + zod-to-json-schema: ^3.21.4 + zod-validation-error: ^3.4.0 + checksum: a9c3e4ed16ce4bde26797719636045a3bf01bf07813952ef7b970b96a0b518e858ad77ee4f35bfbe5cb905f2bfe47540688f1239f108bea69920a360357339d9 languageName: node linkType: hard -"@esbuild/aix-ppc64@npm:0.21.5": - version: 0.21.5 - resolution: "@esbuild/aix-ppc64@npm:0.21.5" - conditions: os=aix & cpu=ppc64 +"@backstage/plugin-auth-react@npm:^0.1.10": + version: 0.1.10 + resolution: "@backstage/plugin-auth-react@npm:0.1.10" + dependencies: + "@backstage/core-components": ^0.16.2 + "@backstage/core-plugin-api": ^1.10.2 + "@backstage/errors": ^1.2.6 + "@material-ui/core": ^4.9.13 + "@react-hookz/web": ^24.0.0 + peerDependencies: + "@types/react": ^16.13.1 || ^17.0.0 || ^18.0.0 + react: ^16.13.1 || ^17.0.0 || ^18.0.0 + react-dom: ^16.13.1 || ^17.0.0 || ^18.0.0 + react-router-dom: 6.0.0-beta.0 || ^6.3.0 + peerDependenciesMeta: + "@types/react": + optional: true + checksum: df4ad537ebce06253c50ebb914e0fc062eeff6e0983a2cc217acbf565c51530734e9f102f08b4f73c6f828778964d67c2d72fe20ec8f64a443311ee939f40295 languageName: node linkType: hard -"@esbuild/aix-ppc64@npm:0.23.1": - version: 0.23.1 - resolution: "@esbuild/aix-ppc64@npm:0.23.1" - conditions: os=aix & cpu=ppc64 +"@backstage/plugin-bitbucket-cloud-common@npm:^0.2.26": + version: 0.2.26 + resolution: "@backstage/plugin-bitbucket-cloud-common@npm:0.2.26" + dependencies: + "@backstage/integration": ^1.16.0 + cross-fetch: ^4.0.0 + checksum: 2fb2c5b788206f4573650f5266fd0de2329d0c74cbaabb05ff0309962cdab29233b1ab82b72075a89d105560c695493db70dbf047618253c545b6af1a0289e28 languageName: node linkType: hard -"@esbuild/aix-ppc64@npm:0.24.0": - version: 0.24.0 - resolution: "@esbuild/aix-ppc64@npm:0.24.0" - conditions: os=aix & cpu=ppc64 +"@backstage/plugin-catalog-backend-module-logs@npm:^0.1.2": + version: 0.1.5 + resolution: "@backstage/plugin-catalog-backend-module-logs@npm:0.1.5" + dependencies: + "@backstage/backend-plugin-api": ^1.1.0 + "@backstage/plugin-catalog-backend": ^1.29.0 + "@backstage/plugin-events-node": ^0.4.6 + checksum: f2127c115bde82d4b44a01fef8b7e3024b6e75e2601ae4c2979ae14a3348d2862e7e77f3b52b90567f446da6f6d905a763b822f1f90644d725e86f978fab7fd3 languageName: node linkType: hard -"@esbuild/android-arm64@npm:0.16.17": - version: 0.16.17 - resolution: "@esbuild/android-arm64@npm:0.16.17" - conditions: os=android & cpu=arm64 +"@backstage/plugin-catalog-backend-module-scaffolder-entity-model@npm:^0.2.1, @backstage/plugin-catalog-backend-module-scaffolder-entity-model@npm:^0.2.3": + version: 0.2.3 + resolution: "@backstage/plugin-catalog-backend-module-scaffolder-entity-model@npm:0.2.3" + dependencies: + "@backstage/backend-plugin-api": ^1.1.0 + "@backstage/catalog-model": ^1.7.2 + "@backstage/plugin-catalog-common": ^1.1.2 + "@backstage/plugin-catalog-node": ^1.15.0 + "@backstage/plugin-scaffolder-common": ^1.5.8 + checksum: 0aeb5f6f02660c307af7334a37383f6215ae3e76422c4d509db5a6ce6997e7bbc6902148a3f8077363fb7f853f49e29d4bda13d532f24dc2191a5b5d8334878d languageName: node linkType: hard -"@esbuild/android-arm64@npm:0.21.5": - version: 0.21.5 - resolution: "@esbuild/android-arm64@npm:0.21.5" - conditions: os=android & cpu=arm64 +"@backstage/plugin-catalog-backend@npm:^1.27.0, @backstage/plugin-catalog-backend@npm:^1.29.0": + version: 1.29.0 + resolution: "@backstage/plugin-catalog-backend@npm:1.29.0" + dependencies: + "@backstage/backend-common": ^0.25.0 + "@backstage/backend-openapi-utils": ^0.4.0 + "@backstage/backend-plugin-api": ^1.1.0 + "@backstage/catalog-client": ^1.9.0 + "@backstage/catalog-model": ^1.7.2 + "@backstage/config": ^1.3.1 + "@backstage/errors": ^1.2.6 + "@backstage/integration": ^1.16.0 + "@backstage/plugin-catalog-common": ^1.1.2 + "@backstage/plugin-catalog-node": ^1.15.0 + "@backstage/plugin-events-node": ^0.4.6 + "@backstage/plugin-permission-common": ^0.8.3 + "@backstage/plugin-permission-node": ^0.8.6 + "@backstage/plugin-search-backend-module-catalog": ^0.2.6 + "@backstage/types": ^1.2.0 + "@opentelemetry/api": ^1.9.0 + "@types/express": ^4.17.6 + codeowners-utils: ^1.0.2 + core-js: ^3.6.5 + express: ^4.17.1 + fast-json-stable-stringify: ^2.1.0 + fs-extra: ^11.2.0 + git-url-parse: ^15.0.0 + glob: ^7.1.6 + knex: ^3.0.0 + lodash: ^4.17.21 + luxon: ^3.0.0 + minimatch: ^9.0.0 + p-limit: ^3.0.2 + prom-client: ^15.0.0 + uuid: ^11.0.0 + yaml: ^2.0.0 + yn: ^4.0.0 + zod: ^3.22.4 + checksum: e2ac0e6c4780823004ae07c7d1310de944d790f5391b257173204f7cacdf3bb54e1b6713e1dbda30dfb9ae263c77caeadf90df3413d88db41e3cbd57d244211e languageName: node linkType: hard -"@esbuild/android-arm64@npm:0.23.1": - version: 0.23.1 - resolution: "@esbuild/android-arm64@npm:0.23.1" - conditions: os=android & cpu=arm64 +"@backstage/plugin-catalog-common@npm:^1.1.0, @backstage/plugin-catalog-common@npm:^1.1.2": + version: 1.1.2 + resolution: "@backstage/plugin-catalog-common@npm:1.1.2" + dependencies: + "@backstage/catalog-model": ^1.7.2 + "@backstage/plugin-permission-common": ^0.8.3 + "@backstage/plugin-search-common": ^1.2.16 + checksum: ec4190c708f3e98fe09fcea56480ac36311a6b11a5a351f0e273c3ab39c45dec039e67aafc7974c73e14170350a3aedd6a5f4a009173536427b3c72c9fb45352 + languageName: node + linkType: hard + +"@backstage/plugin-catalog-graph@npm:^0.4.11": + version: 0.4.14 + resolution: "@backstage/plugin-catalog-graph@npm:0.4.14" + dependencies: + "@backstage/catalog-client": ^1.9.0 + "@backstage/catalog-model": ^1.7.2 + "@backstage/core-compat-api": ^0.3.4 + "@backstage/core-components": ^0.16.2 + "@backstage/core-plugin-api": ^1.10.2 + "@backstage/frontend-plugin-api": ^0.9.3 + "@backstage/plugin-catalog-react": ^1.15.0 + "@backstage/types": ^1.2.0 + "@material-ui/core": ^4.12.2 + "@material-ui/icons": ^4.9.1 + "@material-ui/lab": 4.0.0-alpha.61 + classnames: ^2.3.1 + lodash: ^4.17.15 + p-limit: ^3.1.0 + qs: ^6.9.4 + react-use: ^17.2.4 + peerDependencies: + "@types/react": ^16.13.1 || ^17.0.0 || ^18.0.0 + react: ^16.13.1 || ^17.0.0 || ^18.0.0 + react-dom: ^16.13.1 || ^17.0.0 || ^18.0.0 + react-router-dom: 6.0.0-beta.0 || ^6.3.0 + peerDependenciesMeta: + "@types/react": + optional: true + checksum: cf97cd5594fb73b39cd938c8b4c2f3217482735faa24f25553d46b964883d2b2592ef0692871e248028f694ae82173f2bb3e1ac3d30b7b7da075c296c48037a8 + languageName: node + linkType: hard + +"@backstage/plugin-catalog-import@npm:^0.12.5": + version: 0.12.8 + resolution: "@backstage/plugin-catalog-import@npm:0.12.8" + dependencies: + "@backstage/catalog-client": ^1.9.0 + "@backstage/catalog-model": ^1.7.2 + "@backstage/config": ^1.3.1 + "@backstage/core-compat-api": ^0.3.4 + "@backstage/core-components": ^0.16.2 + "@backstage/core-plugin-api": ^1.10.2 + "@backstage/errors": ^1.2.6 + "@backstage/frontend-plugin-api": ^0.9.3 + "@backstage/integration": ^1.16.0 + "@backstage/integration-react": ^1.2.2 + "@backstage/plugin-catalog-common": ^1.1.2 + "@backstage/plugin-catalog-react": ^1.15.0 + "@material-ui/core": ^4.12.2 + "@material-ui/icons": ^4.9.1 + "@material-ui/lab": 4.0.0-alpha.61 + "@octokit/rest": ^19.0.3 + git-url-parse: ^15.0.0 + js-base64: ^3.6.0 + lodash: ^4.17.21 + react-hook-form: ^7.12.2 + react-use: ^17.2.4 + yaml: ^2.0.0 + peerDependencies: + "@types/react": ^16.13.1 || ^17.0.0 || ^18.0.0 + react: ^16.13.1 || ^17.0.0 || ^18.0.0 + react-dom: ^16.13.1 || ^17.0.0 || ^18.0.0 + react-router-dom: 6.0.0-beta.0 || ^6.3.0 + peerDependenciesMeta: + "@types/react": + optional: true + checksum: 41859ecfe54b55add32d466c575a9ae49ddebc1b619e52edf9061f927ed456cde32262fb2e9e8ff5e5460ecdc17a4da5c587fda6e89ca6a89715961440271b95 + languageName: node + linkType: hard + +"@backstage/plugin-catalog-node@npm:^1.13.1, @backstage/plugin-catalog-node@npm:^1.15.0": + version: 1.15.0 + resolution: "@backstage/plugin-catalog-node@npm:1.15.0" + dependencies: + "@backstage/backend-plugin-api": ^1.1.0 + "@backstage/catalog-client": ^1.9.0 + "@backstage/catalog-model": ^1.7.2 + "@backstage/errors": ^1.2.6 + "@backstage/plugin-catalog-common": ^1.1.2 + "@backstage/plugin-permission-common": ^0.8.3 + "@backstage/plugin-permission-node": ^0.8.6 + "@backstage/types": ^1.2.0 + checksum: 2d87606b8d02b7bed1fd1d3fc5b96008a6b8b6c46ea0f18246ddab6f1c8f9159bdfdf814192d0e858c829c1ade05f70061a840b02ab91fc4422ec5e45e979505 + languageName: node + linkType: hard + +"@backstage/plugin-catalog-react@npm:^1.14.0, @backstage/plugin-catalog-react@npm:^1.15.0": + version: 1.15.0 + resolution: "@backstage/plugin-catalog-react@npm:1.15.0" + dependencies: + "@backstage/catalog-client": ^1.9.0 + "@backstage/catalog-model": ^1.7.2 + "@backstage/core-compat-api": ^0.3.4 + "@backstage/core-components": ^0.16.2 + "@backstage/core-plugin-api": ^1.10.2 + "@backstage/errors": ^1.2.6 + "@backstage/frontend-plugin-api": ^0.9.3 + "@backstage/frontend-test-utils": ^0.2.4 + "@backstage/integration-react": ^1.2.2 + "@backstage/plugin-catalog-common": ^1.1.2 + "@backstage/plugin-permission-common": ^0.8.3 + "@backstage/plugin-permission-react": ^0.4.29 + "@backstage/types": ^1.2.0 + "@backstage/version-bridge": ^1.0.10 + "@material-ui/core": ^4.12.2 + "@material-ui/icons": ^4.9.1 + "@material-ui/lab": 4.0.0-alpha.61 + "@react-hookz/web": ^24.0.0 + classnames: ^2.2.6 + lodash: ^4.17.21 + material-ui-popup-state: ^1.9.3 + qs: ^6.9.4 + react-use: ^17.2.4 + yaml: ^2.0.0 + zen-observable: ^0.10.0 + peerDependencies: + "@types/react": ^16.13.1 || ^17.0.0 || ^18.0.0 + react: ^16.13.1 || ^17.0.0 || ^18.0.0 + react-dom: ^16.13.1 || ^17.0.0 || ^18.0.0 + react-router-dom: 6.0.0-beta.0 || ^6.3.0 + peerDependenciesMeta: + "@types/react": + optional: true + checksum: d94aafd1f9c81bceb4917f3e49a9d3dddd409f41684373d826b79fbcd4059a896dfcf908263ea5a5c78dfbbc2eb3c43cd1cc97129c22fe0f98a8d91032a005c0 + languageName: node + linkType: hard + +"@backstage/plugin-catalog@npm:^1.24.0": + version: 1.26.0 + resolution: "@backstage/plugin-catalog@npm:1.26.0" + dependencies: + "@backstage/catalog-client": ^1.9.0 + "@backstage/catalog-model": ^1.7.2 + "@backstage/core-compat-api": ^0.3.4 + "@backstage/core-components": ^0.16.2 + "@backstage/core-plugin-api": ^1.10.2 + "@backstage/errors": ^1.2.6 + "@backstage/frontend-plugin-api": ^0.9.3 + "@backstage/integration-react": ^1.2.2 + "@backstage/plugin-catalog-common": ^1.1.2 + "@backstage/plugin-catalog-react": ^1.15.0 + "@backstage/plugin-permission-react": ^0.4.29 + "@backstage/plugin-scaffolder-common": ^1.5.8 + "@backstage/plugin-search-common": ^1.2.16 + "@backstage/plugin-search-react": ^1.8.4 + "@backstage/types": ^1.2.0 + "@material-ui/core": ^4.12.2 + "@material-ui/icons": ^4.9.1 + "@material-ui/lab": 4.0.0-alpha.61 + "@mui/utils": ^5.14.15 + dataloader: ^2.0.0 + expiry-map: ^2.0.0 + history: ^5.0.0 + lodash: ^4.17.21 + pluralize: ^8.0.0 + react-use: ^17.2.4 + zen-observable: ^0.10.0 + peerDependencies: + "@types/react": ^16.13.1 || ^17.0.0 || ^18.0.0 + react: ^16.13.1 || ^17.0.0 || ^18.0.0 + react-dom: ^16.13.1 || ^17.0.0 || ^18.0.0 + react-router-dom: 6.0.0-beta.0 || ^6.3.0 + peerDependenciesMeta: + "@types/react": + optional: true + checksum: 29565eafbd38ed701dca477a80bcfe7940944ae2418a59a7eca8b103ca6c86e7b035b68fa6e2ef711d2d04deea479964c17bfa20159955395c4f2770e3cff3eb languageName: node linkType: hard -"@esbuild/android-arm64@npm:0.24.0": - version: 0.24.0 - resolution: "@esbuild/android-arm64@npm:0.24.0" - conditions: os=android & cpu=arm64 +"@backstage/plugin-events-node@npm:^0.4.0, @backstage/plugin-events-node@npm:^0.4.2": + version: 0.4.3 + resolution: "@backstage/plugin-events-node@npm:0.4.3" + dependencies: + "@backstage/backend-plugin-api": ^1.0.1 + "@backstage/errors": ^1.2.4 + "@backstage/types": ^1.1.1 + cross-fetch: ^4.0.0 + uri-template: ^2.0.0 + checksum: fd66714810b787dd3b4a3e97b62746bfb9981b7cc8f5cf6188718f9249a7f000e6e3fcf8ef512dc202078082ca9dc74cadaf0566e316aab44dbf80b367e0a646 languageName: node linkType: hard -"@esbuild/android-arm@npm:0.16.17": - version: 0.16.17 - resolution: "@esbuild/android-arm@npm:0.16.17" - conditions: os=android & cpu=arm +"@backstage/plugin-events-node@npm:^0.4.5, @backstage/plugin-events-node@npm:^0.4.6": + version: 0.4.6 + resolution: "@backstage/plugin-events-node@npm:0.4.6" + dependencies: + "@backstage/backend-plugin-api": ^1.1.0 + "@backstage/errors": ^1.2.6 + "@backstage/types": ^1.2.0 + cross-fetch: ^4.0.0 + uri-template: ^2.0.0 + checksum: ffe365ec94cf98d5d62099b735658ee3f1b3a90d34066689fb101cb55ebca919e502d9e05277b088b9c2a194b64789edbe7820569b0a85e6edeee0dce9e24283 languageName: node linkType: hard -"@esbuild/android-arm@npm:0.21.5": - version: 0.21.5 - resolution: "@esbuild/android-arm@npm:0.21.5" - conditions: os=android & cpu=arm - languageName: node - linkType: hard - -"@esbuild/android-arm@npm:0.23.1": - version: 0.23.1 - resolution: "@esbuild/android-arm@npm:0.23.1" - conditions: os=android & cpu=arm - languageName: node - linkType: hard - -"@esbuild/android-arm@npm:0.24.0": - version: 0.24.0 - resolution: "@esbuild/android-arm@npm:0.24.0" - conditions: os=android & cpu=arm +"@backstage/plugin-kubernetes-backend@npm:^0.18.7": + version: 0.18.7 + resolution: "@backstage/plugin-kubernetes-backend@npm:0.18.7" + dependencies: + "@aws-crypto/sha256-js": ^5.0.0 + "@aws-sdk/credential-providers": ^3.350.0 + "@aws-sdk/signature-v4": ^3.347.0 + "@azure/identity": ^4.0.0 + "@backstage/backend-common": ^0.25.0 + "@backstage/backend-plugin-api": ^1.0.1 + "@backstage/catalog-client": ^1.7.1 + "@backstage/catalog-model": ^1.7.0 + "@backstage/config": ^1.2.0 + "@backstage/errors": ^1.2.4 + "@backstage/integration-aws-node": ^0.1.12 + "@backstage/plugin-auth-node": ^0.5.3 + "@backstage/plugin-catalog-node": ^1.13.1 + "@backstage/plugin-kubernetes-common": ^0.8.3 + "@backstage/plugin-kubernetes-node": ^0.1.20 + "@backstage/plugin-permission-common": ^0.8.1 + "@backstage/plugin-permission-node": ^0.8.4 + "@backstage/types": ^1.1.1 + "@google-cloud/container": ^5.0.0 + "@jest-mock/express": ^2.0.1 + "@kubernetes/client-node": 0.20.0 + "@types/express": ^4.17.6 + "@types/http-proxy-middleware": ^1.0.0 + "@types/luxon": ^3.0.0 + compression: ^1.7.4 + cors: ^2.8.5 + express: ^4.17.1 + express-promise-router: ^4.1.0 + fs-extra: ^11.2.0 + helmet: ^6.0.0 + http-proxy-middleware: ^2.0.6 + lodash: ^4.17.21 + luxon: ^3.0.0 + morgan: ^1.10.0 + node-fetch: ^2.7.0 + stream-buffers: ^3.0.2 + winston: ^3.2.1 + yn: ^4.0.0 + checksum: d2997c45e0772ad5b6cf555921e72120d0c2003ed6ae2bcf6fbff7dc2ef2a9b76882b392bbdc1e6c9899fa1d284cfd97c59fe434b83779bd299681fa1d132905 languageName: node linkType: hard -"@esbuild/android-x64@npm:0.16.17": - version: 0.16.17 - resolution: "@esbuild/android-x64@npm:0.16.17" - conditions: os=android & cpu=x64 +"@backstage/plugin-kubernetes-common@npm:^0.8.3": + version: 0.8.3 + resolution: "@backstage/plugin-kubernetes-common@npm:0.8.3" + dependencies: + "@backstage/catalog-model": ^1.7.0 + "@backstage/plugin-permission-common": ^0.8.1 + "@backstage/types": ^1.1.1 + "@kubernetes/client-node": 0.20.0 + kubernetes-models: ^4.3.1 + lodash: ^4.17.21 + luxon: ^3.0.0 + checksum: 948c473f9656e039ee74fd5c724d520b09899cabf6713ab89c587492e542648385892fb1fa0f3872260707cfb3cd71d81bbfcd737e468f71a4080bd503e710a2 languageName: node linkType: hard -"@esbuild/android-x64@npm:0.21.5": - version: 0.21.5 - resolution: "@esbuild/android-x64@npm:0.21.5" - conditions: os=android & cpu=x64 +"@backstage/plugin-kubernetes-node@npm:^0.1.20": + version: 0.1.20 + resolution: "@backstage/plugin-kubernetes-node@npm:0.1.20" + dependencies: + "@backstage/backend-plugin-api": ^1.0.1 + "@backstage/catalog-model": ^1.7.0 + "@backstage/plugin-kubernetes-common": ^0.8.3 + "@backstage/types": ^1.1.1 + "@kubernetes/client-node": ^0.20.0 + node-fetch: ^2.7.0 + winston: ^3.2.1 + checksum: 6b9f3af235f521b7a3418c7e1f47261bb384b801f57634087f5efaadd4a3348e0d28d97625b1252a5e25957a161a382f73290b01128c76c04e29db1ce9f5ab83 languageName: node linkType: hard -"@esbuild/android-x64@npm:0.23.1": - version: 0.23.1 - resolution: "@esbuild/android-x64@npm:0.23.1" - conditions: os=android & cpu=x64 +"@backstage/plugin-kubernetes-react@npm:^0.4.4": + version: 0.4.4 + resolution: "@backstage/plugin-kubernetes-react@npm:0.4.4" + dependencies: + "@backstage/catalog-model": ^1.7.0 + "@backstage/core-components": ^0.15.1 + "@backstage/core-plugin-api": ^1.10.0 + "@backstage/errors": ^1.2.4 + "@backstage/plugin-kubernetes-common": ^0.8.3 + "@backstage/types": ^1.1.1 + "@kubernetes-models/apimachinery": ^2.0.0 + "@kubernetes-models/base": ^5.0.0 + "@kubernetes/client-node": ^0.20.0 + "@material-ui/core": ^4.9.13 + "@material-ui/icons": ^4.11.3 + "@material-ui/lab": ^4.0.0-alpha.61 + cronstrue: ^2.32.0 + js-yaml: ^4.1.0 + kubernetes-models: ^4.3.1 + lodash: ^4.17.21 + luxon: ^3.0.0 + react-use: ^17.4.0 + xterm: ^5.3.0 + xterm-addon-attach: ^0.9.0 + xterm-addon-fit: ^0.8.0 + peerDependencies: + "@types/react": ^16.13.1 || ^17.0.0 || ^18.0.0 + react: ^16.13.1 || ^17.0.0 || ^18.0.0 + react-dom: ^16.13.1 || ^17.0.0 || ^18.0.0 + react-router-dom: 6.0.0-beta.0 || ^6.3.0 + peerDependenciesMeta: + "@types/react": + optional: true + checksum: bb96e77a798a701315424701f005786c753a29c4483d7b2a71c6e56a36e54b203874356edd52e203645f92a69bb72e48190d5934a6b328b6a34235319af26e38 languageName: node linkType: hard -"@esbuild/android-x64@npm:0.24.0": - version: 0.24.0 - resolution: "@esbuild/android-x64@npm:0.24.0" - conditions: os=android & cpu=x64 +"@backstage/plugin-kubernetes@npm:^0.11.16": + version: 0.11.16 + resolution: "@backstage/plugin-kubernetes@npm:0.11.16" + dependencies: + "@backstage/catalog-model": ^1.7.0 + "@backstage/core-compat-api": ^0.3.1 + "@backstage/core-components": ^0.15.1 + "@backstage/core-plugin-api": ^1.10.0 + "@backstage/frontend-plugin-api": ^0.9.0 + "@backstage/plugin-catalog-react": ^1.14.0 + "@backstage/plugin-kubernetes-common": ^0.8.3 + "@backstage/plugin-kubernetes-react": ^0.4.4 + "@kubernetes-models/apimachinery": ^2.0.0 + "@kubernetes-models/base": ^5.0.0 + "@kubernetes/client-node": 0.20.0 + "@material-ui/core": ^4.12.2 + cronstrue: ^2.2.0 + js-yaml: ^4.0.0 + kubernetes-models: ^4.1.0 + lodash: ^4.17.21 + luxon: ^3.0.0 + xterm: ^5.2.1 + xterm-addon-attach: ^0.9.0 + xterm-addon-fit: ^0.8.0 + peerDependencies: + "@types/react": ^16.13.1 || ^17.0.0 || ^18.0.0 + react: ^16.13.1 || ^17.0.0 || ^18.0.0 + react-dom: ^16.13.1 || ^17.0.0 || ^18.0.0 + react-router-dom: 6.0.0-beta.0 || ^6.3.0 + peerDependenciesMeta: + "@types/react": + optional: true + checksum: 59bc25ccaf1c8ab521c4361c13c06ec853607fa6ac0bc7d50c103134cb090e1d5d1143b23fb2f135ce1c16b6c3b1107a31fc6a27a09ec3e3786ebf2ee0af2f90 languageName: node linkType: hard -"@esbuild/darwin-arm64@npm:0.16.17": - version: 0.16.17 - resolution: "@esbuild/darwin-arm64@npm:0.16.17" - conditions: os=darwin & cpu=arm64 +"@backstage/plugin-org@npm:^0.6.31": + version: 0.6.34 + resolution: "@backstage/plugin-org@npm:0.6.34" + dependencies: + "@backstage/catalog-model": ^1.7.2 + "@backstage/core-compat-api": ^0.3.4 + "@backstage/core-components": ^0.16.2 + "@backstage/core-plugin-api": ^1.10.2 + "@backstage/frontend-plugin-api": ^0.9.3 + "@backstage/plugin-catalog-common": ^1.1.2 + "@backstage/plugin-catalog-react": ^1.15.0 + "@material-ui/core": ^4.12.2 + "@material-ui/icons": ^4.9.1 + "@material-ui/lab": 4.0.0-alpha.61 + lodash: ^4.17.21 + p-limit: ^3.1.0 + pluralize: ^8.0.0 + qs: ^6.10.1 + react-use: ^17.2.4 + peerDependencies: + "@types/react": ^16.13.1 || ^17.0.0 || ^18.0.0 + react: ^16.13.1 || ^17.0.0 || ^18.0.0 + react-dom: ^16.13.1 || ^17.0.0 || ^18.0.0 + react-router-dom: 6.0.0-beta.0 || ^6.3.0 + peerDependenciesMeta: + "@types/react": + optional: true + checksum: 415baab8a980993abb99b0efa466e6ff37a7f96b5e9f1b9ba2d291869b86f251110ec4e9b26aef51109ab683e79727254a9d0a495ea67886dfc207c5b56b1f10 languageName: node linkType: hard -"@esbuild/darwin-arm64@npm:0.21.5": - version: 0.21.5 - resolution: "@esbuild/darwin-arm64@npm:0.21.5" - conditions: os=darwin & cpu=arm64 +"@backstage/plugin-permission-backend-module-allow-all-policy@npm:^0.2.1": + version: 0.2.3 + resolution: "@backstage/plugin-permission-backend-module-allow-all-policy@npm:0.2.3" + dependencies: + "@backstage/backend-plugin-api": ^1.1.0 + "@backstage/plugin-auth-node": ^0.5.5 + "@backstage/plugin-permission-common": ^0.8.3 + "@backstage/plugin-permission-node": ^0.8.6 + checksum: b89c187c6222d7fa9034b06821b72ea80d103ef58e8845f86fb6c71de345c1f86c11f59290257105a77124849c908758c44b27531f172af46176255b05b9c501 languageName: node linkType: hard -"@esbuild/darwin-arm64@npm:0.23.1": - version: 0.23.1 - resolution: "@esbuild/darwin-arm64@npm:0.23.1" - conditions: os=darwin & cpu=arm64 +"@backstage/plugin-permission-backend@npm:^0.5.50": + version: 0.5.52 + resolution: "@backstage/plugin-permission-backend@npm:0.5.52" + dependencies: + "@backstage/backend-common": ^0.25.0 + "@backstage/backend-plugin-api": ^1.1.0 + "@backstage/config": ^1.3.1 + "@backstage/errors": ^1.2.6 + "@backstage/plugin-auth-node": ^0.5.5 + "@backstage/plugin-permission-common": ^0.8.3 + "@backstage/plugin-permission-node": ^0.8.6 + "@types/express": ^4.17.6 + dataloader: ^2.0.0 + express: ^4.17.1 + express-promise-router: ^4.1.0 + lodash: ^4.17.21 + yn: ^4.0.0 + zod: ^3.22.4 + checksum: 1c69bb034181421a691460a2b091471e07b51b939a968ddc777cdd0dab36e3ad7302b7fb4cac1707622c269c6e81006ee9eba8ad9cf1d2f8b7579c4ae06586f3 languageName: node linkType: hard -"@esbuild/darwin-arm64@npm:0.24.0": - version: 0.24.0 - resolution: "@esbuild/darwin-arm64@npm:0.24.0" - conditions: os=darwin & cpu=arm64 +"@backstage/plugin-permission-common@npm:^0.8.1": + version: 0.8.1 + resolution: "@backstage/plugin-permission-common@npm:0.8.1" + dependencies: + "@backstage/config": ^1.2.0 + "@backstage/errors": ^1.2.4 + "@backstage/types": ^1.1.1 + cross-fetch: ^4.0.0 + uuid: ^9.0.0 + zod: ^3.22.4 + zod-to-json-schema: ^3.20.4 + checksum: 00f71b998aecefcf413b335ef67897be2210f9cecb1f58bb28e466f68acd04276e3105f2e99ad242792dfd2902e4ae7ea023efb8cda92447aef92a10b83d87e5 languageName: node linkType: hard -"@esbuild/darwin-x64@npm:0.16.17": - version: 0.16.17 - resolution: "@esbuild/darwin-x64@npm:0.16.17" - conditions: os=darwin & cpu=x64 +"@backstage/plugin-permission-common@npm:^0.8.3": + version: 0.8.3 + resolution: "@backstage/plugin-permission-common@npm:0.8.3" + dependencies: + "@backstage/config": ^1.3.1 + "@backstage/errors": ^1.2.6 + "@backstage/types": ^1.2.0 + cross-fetch: ^4.0.0 + uuid: ^11.0.0 + zod: ^3.22.4 + zod-to-json-schema: ^3.20.4 + checksum: cd8c91a6ce615d5689c9eb53f457d5c5bb85ca104061bd83d9e2f177acd6810f840e532c0b4850d0466dc68ce41650e19df50f91e78ab35f9355bb76a0c4809e languageName: node linkType: hard -"@esbuild/darwin-x64@npm:0.21.5": - version: 0.21.5 - resolution: "@esbuild/darwin-x64@npm:0.21.5" - conditions: os=darwin & cpu=x64 +"@backstage/plugin-permission-node@npm:^0.8.4": + version: 0.8.4 + resolution: "@backstage/plugin-permission-node@npm:0.8.4" + dependencies: + "@backstage/backend-common": ^0.25.0 + "@backstage/backend-plugin-api": ^1.0.1 + "@backstage/config": ^1.2.0 + "@backstage/errors": ^1.2.4 + "@backstage/plugin-auth-node": ^0.5.3 + "@backstage/plugin-permission-common": ^0.8.1 + "@types/express": ^4.17.6 + express: ^4.17.1 + express-promise-router: ^4.1.0 + zod: ^3.22.4 + zod-to-json-schema: ^3.20.4 + checksum: a00c269e4777ff5e10db7a3859110f3a487c91e4c9422eb0650cbef3cfffc3dbd2f38e98fd793daef8242da2777ffbd87adb5715d21f0dff998b90c65261904e languageName: node linkType: hard -"@esbuild/darwin-x64@npm:0.23.1": - version: 0.23.1 - resolution: "@esbuild/darwin-x64@npm:0.23.1" - conditions: os=darwin & cpu=x64 +"@backstage/plugin-permission-node@npm:^0.8.5, @backstage/plugin-permission-node@npm:^0.8.6": + version: 0.8.6 + resolution: "@backstage/plugin-permission-node@npm:0.8.6" + dependencies: + "@backstage/backend-common": ^0.25.0 + "@backstage/backend-plugin-api": ^1.1.0 + "@backstage/config": ^1.3.1 + "@backstage/errors": ^1.2.6 + "@backstage/plugin-auth-node": ^0.5.5 + "@backstage/plugin-permission-common": ^0.8.3 + "@types/express": ^4.17.6 + express: ^4.17.1 + express-promise-router: ^4.1.0 + zod: ^3.22.4 + zod-to-json-schema: ^3.20.4 + checksum: dbb4e52362c98ea3566a63ab27e09ca99fb6c34f40e3821277fcfafa2e9157c98d19484d829cb4fbdb9971b7a5afe31147fa372442041ff838968b40fd97ec5d languageName: node linkType: hard -"@esbuild/darwin-x64@npm:0.24.0": - version: 0.24.0 - resolution: "@esbuild/darwin-x64@npm:0.24.0" - conditions: os=darwin & cpu=x64 +"@backstage/plugin-permission-react@npm:^0.4.27, @backstage/plugin-permission-react@npm:^0.4.29": + version: 0.4.29 + resolution: "@backstage/plugin-permission-react@npm:0.4.29" + dependencies: + "@backstage/config": ^1.3.1 + "@backstage/core-plugin-api": ^1.10.2 + "@backstage/plugin-permission-common": ^0.8.3 + swr: ^2.0.0 + peerDependencies: + "@types/react": ^16.13.1 || ^17.0.0 || ^18.0.0 + react: ^16.13.1 || ^17.0.0 || ^18.0.0 + react-dom: ^16.13.1 || ^17.0.0 || ^18.0.0 + react-router-dom: 6.0.0-beta.0 || ^6.3.0 + peerDependenciesMeta: + "@types/react": + optional: true + checksum: 4fe663b2d46f54e4878f579306802c84f238611822b929d5099d527e97fa3211872c85a51cb3fefddcff0231b92ba6d70a25971a7119ada2a03126e76cd8c006 languageName: node linkType: hard -"@esbuild/freebsd-arm64@npm:0.16.17": - version: 0.16.17 - resolution: "@esbuild/freebsd-arm64@npm:0.16.17" - conditions: os=freebsd & cpu=arm64 +"@backstage/plugin-proxy-backend@npm:^0.5.7": + version: 0.5.9 + resolution: "@backstage/plugin-proxy-backend@npm:0.5.9" + dependencies: + "@backstage/backend-common": ^0.25.0 + "@backstage/backend-plugin-api": ^1.1.0 + "@backstage/config": ^1.3.1 + "@backstage/types": ^1.2.0 + "@types/express": ^4.17.6 + express: ^4.17.1 + express-promise-router: ^4.1.0 + http-proxy-middleware: ^2.0.0 + morgan: ^1.10.0 + uuid: ^11.0.0 + winston: ^3.2.1 + yaml: ^2.0.0 + yn: ^4.0.0 + yup: ^1.0.0 + checksum: 37b18fd8ae2ec0f9285a5d8bdb7ae4c4f6831101be57a46f8d10f9767bd409e6f3ff26c0a8c45999c48b59a255d75cc88c2d52fcb5bbf8b84bda37bed71d7a48 languageName: node linkType: hard -"@esbuild/freebsd-arm64@npm:0.21.5": - version: 0.21.5 - resolution: "@esbuild/freebsd-arm64@npm:0.21.5" - conditions: os=freebsd & cpu=arm64 +"@backstage/plugin-scaffolder-backend-module-azure@npm:^0.2.4": + version: 0.2.4 + resolution: "@backstage/plugin-scaffolder-backend-module-azure@npm:0.2.4" + dependencies: + "@backstage/backend-plugin-api": ^1.1.0 + "@backstage/config": ^1.3.1 + "@backstage/errors": ^1.2.6 + "@backstage/integration": ^1.16.0 + "@backstage/plugin-scaffolder-node": ^0.6.2 + azure-devops-node-api: ^14.0.0 + yaml: ^2.0.0 + checksum: fa6d3632263c45ba5dbe4762e1a22a2cc5153f5c10903e39feae461962a6e1331f327ea2da04c17c6c540f105b1dc44c98077c14ca36fe616935cff47e7e28b3 languageName: node linkType: hard -"@esbuild/freebsd-arm64@npm:0.23.1": - version: 0.23.1 - resolution: "@esbuild/freebsd-arm64@npm:0.23.1" - conditions: os=freebsd & cpu=arm64 +"@backstage/plugin-scaffolder-backend-module-bitbucket-cloud@npm:^0.2.4": + version: 0.2.4 + resolution: "@backstage/plugin-scaffolder-backend-module-bitbucket-cloud@npm:0.2.4" + dependencies: + "@backstage/backend-plugin-api": ^1.1.0 + "@backstage/config": ^1.3.1 + "@backstage/errors": ^1.2.6 + "@backstage/integration": ^1.16.0 + "@backstage/plugin-bitbucket-cloud-common": ^0.2.26 + "@backstage/plugin-scaffolder-node": ^0.6.2 + fs-extra: ^11.2.0 + yaml: ^2.0.0 + checksum: c0eaff4b200ee9a7ddb0242465f38522baf37817f6c87d2740e043a77a10ce958589f7406214abb391233faed978af5934b6eea92c73e1820f48509b64921d3f languageName: node linkType: hard -"@esbuild/freebsd-arm64@npm:0.24.0": - version: 0.24.0 - resolution: "@esbuild/freebsd-arm64@npm:0.24.0" - conditions: os=freebsd & cpu=arm64 +"@backstage/plugin-scaffolder-backend-module-bitbucket-server@npm:^0.2.4": + version: 0.2.4 + resolution: "@backstage/plugin-scaffolder-backend-module-bitbucket-server@npm:0.2.4" + dependencies: + "@backstage/backend-plugin-api": ^1.1.0 + "@backstage/config": ^1.3.1 + "@backstage/errors": ^1.2.6 + "@backstage/integration": ^1.16.0 + "@backstage/plugin-scaffolder-node": ^0.6.2 + fs-extra: ^11.2.0 + yaml: ^2.0.0 + checksum: 91adb87381d1e843867495ec4089922765ef35cd059f21260731dbf1fd6767ea3f2f7b077e8c111009c22d702406eb5686e09c6a57796cc8c48b8a722642cba8 languageName: node linkType: hard -"@esbuild/freebsd-x64@npm:0.16.17": - version: 0.16.17 - resolution: "@esbuild/freebsd-x64@npm:0.16.17" - conditions: os=freebsd & cpu=x64 +"@backstage/plugin-scaffolder-backend-module-bitbucket@npm:^0.3.5": + version: 0.3.5 + resolution: "@backstage/plugin-scaffolder-backend-module-bitbucket@npm:0.3.5" + dependencies: + "@backstage/backend-plugin-api": ^1.1.0 + "@backstage/config": ^1.3.1 + "@backstage/errors": ^1.2.6 + "@backstage/integration": ^1.16.0 + "@backstage/plugin-scaffolder-backend-module-bitbucket-cloud": ^0.2.4 + "@backstage/plugin-scaffolder-backend-module-bitbucket-server": ^0.2.4 + "@backstage/plugin-scaffolder-node": ^0.6.2 + fs-extra: ^11.2.0 + yaml: ^2.0.0 + checksum: f8013ccbba649ea3d20b3b5c02e2c8aedc48992178fc3ef3903713d5d1cf1cccfb8eeadde2b7377607f0276f046d9cf94b7329eadabfd86d05f12b248e2179e6 languageName: node linkType: hard -"@esbuild/freebsd-x64@npm:0.21.5": - version: 0.21.5 - resolution: "@esbuild/freebsd-x64@npm:0.21.5" - conditions: os=freebsd & cpu=x64 +"@backstage/plugin-scaffolder-backend-module-gerrit@npm:^0.2.4": + version: 0.2.4 + resolution: "@backstage/plugin-scaffolder-backend-module-gerrit@npm:0.2.4" + dependencies: + "@backstage/backend-plugin-api": ^1.1.0 + "@backstage/config": ^1.3.1 + "@backstage/errors": ^1.2.6 + "@backstage/integration": ^1.16.0 + "@backstage/plugin-scaffolder-node": ^0.6.2 + yaml: ^2.0.0 + checksum: fa304b238afefda5895769b5138819f1980caec2aa492da4af789f31f068f1f07c6b6015f89227cd267554eb5c0722f17c9381985a069b9ed1b96c2d66b233b5 languageName: node linkType: hard -"@esbuild/freebsd-x64@npm:0.23.1": - version: 0.23.1 - resolution: "@esbuild/freebsd-x64@npm:0.23.1" - conditions: os=freebsd & cpu=x64 +"@backstage/plugin-scaffolder-backend-module-gitea@npm:^0.2.4": + version: 0.2.4 + resolution: "@backstage/plugin-scaffolder-backend-module-gitea@npm:0.2.4" + dependencies: + "@backstage/backend-plugin-api": ^1.1.0 + "@backstage/config": ^1.3.1 + "@backstage/errors": ^1.2.6 + "@backstage/integration": ^1.16.0 + "@backstage/plugin-scaffolder-node": ^0.6.2 + yaml: ^2.0.0 + checksum: ec96d39236dc4204e21d2d8a83d2ca5acde3beb75cc6ea6797414ce2864ad8cc7658e232e729e4fd7cd8d912597d633d9d81b5efd28a9129feb58343abe09796 languageName: node linkType: hard -"@esbuild/freebsd-x64@npm:0.24.0": - version: 0.24.0 - resolution: "@esbuild/freebsd-x64@npm:0.24.0" - conditions: os=freebsd & cpu=x64 +"@backstage/plugin-scaffolder-backend-module-github@npm:^0.5.4": + version: 0.5.4 + resolution: "@backstage/plugin-scaffolder-backend-module-github@npm:0.5.4" + dependencies: + "@backstage/backend-common": ^0.25.0 + "@backstage/backend-plugin-api": ^1.1.0 + "@backstage/catalog-client": ^1.9.0 + "@backstage/catalog-model": ^1.7.2 + "@backstage/config": ^1.3.1 + "@backstage/errors": ^1.2.6 + "@backstage/integration": ^1.16.0 + "@backstage/plugin-scaffolder-node": ^0.6.2 + "@octokit/webhooks": ^10.9.2 + libsodium-wrappers: ^0.7.11 + octokit: ^3.0.0 + octokit-plugin-create-pull-request: ^5.0.0 + yaml: ^2.0.0 + checksum: 8659cd41d9135ee235fc637239b2e4dfac381cfacd7d5581f69aa41462e424cbe9249ff9138819349836bc238569b2346f3bdebe10a6d898f962112b23c73204 languageName: node linkType: hard -"@esbuild/linux-arm64@npm:0.16.17": - version: 0.16.17 - resolution: "@esbuild/linux-arm64@npm:0.16.17" - conditions: os=linux & cpu=arm64 +"@backstage/plugin-scaffolder-backend-module-gitlab@npm:^0.7.0": + version: 0.7.0 + resolution: "@backstage/plugin-scaffolder-backend-module-gitlab@npm:0.7.0" + dependencies: + "@backstage/backend-common": ^0.25.0 + "@backstage/backend-plugin-api": ^1.1.0 + "@backstage/config": ^1.3.1 + "@backstage/errors": ^1.2.6 + "@backstage/integration": ^1.16.0 + "@backstage/plugin-scaffolder-node": ^0.6.2 + "@gitbeaker/rest": ^41.2.0 + luxon: ^3.0.0 + winston: ^3.2.1 + yaml: ^2.0.0 + zod: ^3.22.4 + checksum: f1d8e2116769cecb169d9142087dddf2c9a5be5842dff6f4d16db0885ae90dbf48a236de7c126a76459b8d3accc56bda66dd8af863e34c39a2eefb6b0bc06229 languageName: node linkType: hard -"@esbuild/linux-arm64@npm:0.21.5": - version: 0.21.5 - resolution: "@esbuild/linux-arm64@npm:0.21.5" - conditions: os=linux & cpu=arm64 - languageName: node - linkType: hard - -"@esbuild/linux-arm64@npm:0.23.1": - version: 0.23.1 - resolution: "@esbuild/linux-arm64@npm:0.23.1" - conditions: os=linux & cpu=arm64 - languageName: node - linkType: hard - -"@esbuild/linux-arm64@npm:0.24.0": - version: 0.24.0 - resolution: "@esbuild/linux-arm64@npm:0.24.0" - conditions: os=linux & cpu=arm64 - languageName: node - linkType: hard - -"@esbuild/linux-arm@npm:0.16.17": - version: 0.16.17 - resolution: "@esbuild/linux-arm@npm:0.16.17" - conditions: os=linux & cpu=arm - languageName: node - linkType: hard - -"@esbuild/linux-arm@npm:0.21.5": - version: 0.21.5 - resolution: "@esbuild/linux-arm@npm:0.21.5" - conditions: os=linux & cpu=arm - languageName: node - linkType: hard - -"@esbuild/linux-arm@npm:0.23.1": - version: 0.23.1 - resolution: "@esbuild/linux-arm@npm:0.23.1" - conditions: os=linux & cpu=arm - languageName: node - linkType: hard - -"@esbuild/linux-arm@npm:0.24.0": - version: 0.24.0 - resolution: "@esbuild/linux-arm@npm:0.24.0" - conditions: os=linux & cpu=arm - languageName: node - linkType: hard - -"@esbuild/linux-ia32@npm:0.16.17": - version: 0.16.17 - resolution: "@esbuild/linux-ia32@npm:0.16.17" - conditions: os=linux & cpu=ia32 +"@backstage/plugin-scaffolder-backend@npm:^1.26.0": + version: 1.28.0 + resolution: "@backstage/plugin-scaffolder-backend@npm:1.28.0" + dependencies: + "@backstage/backend-common": ^0.25.0 + "@backstage/backend-defaults": ^0.6.0 + "@backstage/backend-plugin-api": ^1.1.0 + "@backstage/catalog-client": ^1.9.0 + "@backstage/catalog-model": ^1.7.2 + "@backstage/config": ^1.3.1 + "@backstage/errors": ^1.2.6 + "@backstage/integration": ^1.16.0 + "@backstage/plugin-auth-node": ^0.5.5 + "@backstage/plugin-bitbucket-cloud-common": ^0.2.26 + "@backstage/plugin-catalog-backend-module-scaffolder-entity-model": ^0.2.3 + "@backstage/plugin-catalog-node": ^1.15.0 + "@backstage/plugin-events-node": ^0.4.6 + "@backstage/plugin-permission-common": ^0.8.3 + "@backstage/plugin-permission-node": ^0.8.6 + "@backstage/plugin-scaffolder-backend-module-azure": ^0.2.4 + "@backstage/plugin-scaffolder-backend-module-bitbucket": ^0.3.5 + "@backstage/plugin-scaffolder-backend-module-bitbucket-cloud": ^0.2.4 + "@backstage/plugin-scaffolder-backend-module-bitbucket-server": ^0.2.4 + "@backstage/plugin-scaffolder-backend-module-gerrit": ^0.2.4 + "@backstage/plugin-scaffolder-backend-module-gitea": ^0.2.4 + "@backstage/plugin-scaffolder-backend-module-github": ^0.5.4 + "@backstage/plugin-scaffolder-backend-module-gitlab": ^0.7.0 + "@backstage/plugin-scaffolder-common": ^1.5.8 + "@backstage/plugin-scaffolder-node": ^0.6.2 + "@backstage/types": ^1.2.0 + "@opentelemetry/api": ^1.9.0 + "@types/express": ^4.17.6 + "@types/luxon": ^3.0.0 + concat-stream: ^2.0.0 + express: ^4.17.1 + express-promise-router: ^4.1.0 + fs-extra: ^11.2.0 + globby: ^11.0.0 + isbinaryfile: ^5.0.0 + isolated-vm: ^5.0.1 + jsonschema: ^1.2.6 + knex: ^3.0.0 + lodash: ^4.17.21 + logform: ^2.3.2 + luxon: ^3.0.0 + nunjucks: ^3.2.3 + p-limit: ^3.1.0 + p-queue: ^6.6.2 + prom-client: ^15.0.0 + tar: ^6.1.12 + triple-beam: ^1.4.1 + uuid: ^11.0.0 + winston: ^3.2.1 + winston-transport: ^4.7.0 + yaml: ^2.0.0 + zen-observable: ^0.10.0 + zod: ^3.22.4 + checksum: af82bde65c80b198baacd892abb7e3177ffaad4a041501f46e2e12f719ba837c95336861d03d0b78e8ad96288b97dff2a7201c71a9d0dfd325554ebc1807cf7e languageName: node linkType: hard -"@esbuild/linux-ia32@npm:0.21.5": - version: 0.21.5 - resolution: "@esbuild/linux-ia32@npm:0.21.5" - conditions: os=linux & cpu=ia32 +"@backstage/plugin-scaffolder-common@npm:^1.5.8": + version: 1.5.8 + resolution: "@backstage/plugin-scaffolder-common@npm:1.5.8" + dependencies: + "@backstage/catalog-model": ^1.7.2 + "@backstage/plugin-permission-common": ^0.8.3 + "@backstage/types": ^1.2.0 + checksum: 6c61a51dc56564f921cd3b604b2802154d6c6aea9a6695ebfbcf7e30411b25a09b28ea93d009cb1622107c65173c2f644eec63dd3d51726bf94876209d32be00 languageName: node linkType: hard -"@esbuild/linux-ia32@npm:0.23.1": - version: 0.23.1 - resolution: "@esbuild/linux-ia32@npm:0.23.1" - conditions: os=linux & cpu=ia32 +"@backstage/plugin-scaffolder-node@npm:^0.6.2": + version: 0.6.2 + resolution: "@backstage/plugin-scaffolder-node@npm:0.6.2" + dependencies: + "@backstage/backend-common": ^0.25.0 + "@backstage/backend-plugin-api": ^1.1.0 + "@backstage/catalog-model": ^1.7.2 + "@backstage/errors": ^1.2.6 + "@backstage/integration": ^1.16.0 + "@backstage/plugin-scaffolder-common": ^1.5.8 + "@backstage/types": ^1.2.0 + concat-stream: ^2.0.0 + fs-extra: ^11.2.0 + globby: ^11.0.0 + isomorphic-git: ^1.23.0 + jsonschema: ^1.2.6 + p-limit: ^3.1.0 + tar: ^6.1.12 + winston: ^3.2.1 + zod: ^3.22.4 + zod-to-json-schema: ^3.20.4 + checksum: ab743ee3fd716063794bf1e4f46944241bdc917230da94106c467d06eebb5114f954fb96845961de1e6bebd21f426977da320592afd6ea64efa43a71a987fb0a + languageName: node + linkType: hard + +"@backstage/plugin-scaffolder-react@npm:^1.14.2": + version: 1.14.2 + resolution: "@backstage/plugin-scaffolder-react@npm:1.14.2" + dependencies: + "@backstage/catalog-client": ^1.9.0 + "@backstage/catalog-model": ^1.7.2 + "@backstage/core-components": ^0.16.2 + "@backstage/core-plugin-api": ^1.10.2 + "@backstage/frontend-plugin-api": ^0.9.3 + "@backstage/plugin-catalog-react": ^1.15.0 + "@backstage/plugin-permission-react": ^0.4.29 + "@backstage/plugin-scaffolder-common": ^1.5.8 + "@backstage/theme": ^0.6.3 + "@backstage/types": ^1.2.0 + "@backstage/version-bridge": ^1.0.10 + "@material-ui/core": ^4.12.2 + "@material-ui/icons": ^4.9.1 + "@material-ui/lab": 4.0.0-alpha.61 + "@react-hookz/web": ^24.0.0 + "@rjsf/core": 5.23.1 + "@rjsf/material-ui": 5.23.1 + "@rjsf/utils": 5.23.1 + "@rjsf/validator-ajv8": 5.23.1 + "@types/json-schema": ^7.0.9 + ajv-errors: ^3.0.0 + classnames: ^2.2.6 + flatted: 3.3.2 + humanize-duration: ^3.25.1 + json-schema: ^0.4.0 + json-schema-library: ^9.0.0 + lodash: ^4.17.21 + luxon: ^3.0.0 + qs: ^6.9.4 + react-use: ^17.2.4 + use-immer: ^0.10.0 + zen-observable: ^0.10.0 + zod: ^3.22.4 + zod-to-json-schema: ^3.20.4 + peerDependencies: + "@types/react": ^16.13.1 || ^17.0.0 || ^18.0.0 + react: ^16.13.1 || ^17.0.0 || ^18.0.0 + react-dom: ^16.13.1 || ^17.0.0 || ^18.0.0 + react-router-dom: 6.0.0-beta.0 || ^6.3.0 + peerDependenciesMeta: + "@types/react": + optional: true + checksum: 4d17c955e0ab6da2b23499c48a1a8952a7fd69f639304f48c8f04554e4526236e0cc93bb22b276ef77661d4d4da996515154f881e345e392017159aa46812c2a + languageName: node + linkType: hard + +"@backstage/plugin-scaffolder@npm:^1.26.0": + version: 1.27.2 + resolution: "@backstage/plugin-scaffolder@npm:1.27.2" + dependencies: + "@backstage/catalog-client": ^1.9.0 + "@backstage/catalog-model": ^1.7.2 + "@backstage/core-compat-api": ^0.3.4 + "@backstage/core-components": ^0.16.2 + "@backstage/core-plugin-api": ^1.10.2 + "@backstage/errors": ^1.2.6 + "@backstage/frontend-plugin-api": ^0.9.3 + "@backstage/integration": ^1.16.0 + "@backstage/integration-react": ^1.2.2 + "@backstage/plugin-catalog-common": ^1.1.2 + "@backstage/plugin-catalog-react": ^1.15.0 + "@backstage/plugin-permission-react": ^0.4.29 + "@backstage/plugin-scaffolder-common": ^1.5.8 + "@backstage/plugin-scaffolder-react": ^1.14.2 + "@backstage/types": ^1.2.0 + "@codemirror/language": ^6.0.0 + "@codemirror/legacy-modes": ^6.1.0 + "@codemirror/view": ^6.0.0 + "@material-ui/core": ^4.12.2 + "@material-ui/icons": ^4.9.1 + "@material-ui/lab": 4.0.0-alpha.61 + "@microsoft/fetch-event-source": ^2.0.1 + "@react-hookz/web": ^24.0.0 + "@rjsf/core": 5.23.1 + "@rjsf/material-ui": 5.23.1 + "@rjsf/utils": 5.23.1 + "@rjsf/validator-ajv8": 5.23.1 + "@uiw/react-codemirror": ^4.9.3 + classnames: ^2.2.6 + git-url-parse: ^15.0.0 + humanize-duration: ^3.25.1 + idb-keyval: 5.1.5 + json-schema: ^0.4.0 + json-schema-library: ^9.0.0 + jszip: ^3.10.1 + lodash: ^4.17.21 + luxon: ^3.0.0 + qs: ^6.9.4 + react-resizable: ^3.0.5 + react-use: ^17.2.4 + react-window: ^1.8.10 + yaml: ^2.0.0 + zen-observable: ^0.10.0 + zod: ^3.22.4 + zod-to-json-schema: ^3.20.4 + peerDependencies: + "@types/react": ^16.13.1 || ^17.0.0 || ^18.0.0 + react: ^16.13.1 || ^17.0.0 || ^18.0.0 + react-dom: ^16.13.1 || ^17.0.0 || ^18.0.0 + react-router-dom: 6.0.0-beta.0 || ^6.3.0 + peerDependenciesMeta: + "@types/react": + optional: true + checksum: 27173eef9a5f5a2b5bace7470f11d8d255f1da6f5ebdcce60a4ea8b34d2a017cc1e9b088b11cc24a7bd183b901731f6e64c7f0ecd6d326123e31eb852bf46c31 languageName: node linkType: hard -"@esbuild/linux-ia32@npm:0.24.0": - version: 0.24.0 - resolution: "@esbuild/linux-ia32@npm:0.24.0" - conditions: os=linux & cpu=ia32 +"@backstage/plugin-search-backend-module-catalog@npm:^0.2.3, @backstage/plugin-search-backend-module-catalog@npm:^0.2.6": + version: 0.2.6 + resolution: "@backstage/plugin-search-backend-module-catalog@npm:0.2.6" + dependencies: + "@backstage/backend-common": ^0.25.0 + "@backstage/backend-plugin-api": ^1.1.0 + "@backstage/catalog-client": ^1.9.0 + "@backstage/catalog-model": ^1.7.2 + "@backstage/config": ^1.3.1 + "@backstage/errors": ^1.2.6 + "@backstage/plugin-catalog-common": ^1.1.2 + "@backstage/plugin-catalog-node": ^1.15.0 + "@backstage/plugin-permission-common": ^0.8.3 + "@backstage/plugin-search-backend-node": ^1.3.6 + "@backstage/plugin-search-common": ^1.2.16 + checksum: 06af6b448cb67fbd1b6f6d4870b0869a641d76b7b33ed8fd9d709767143f292d0d6cda8a93c699bace09611aeef8fa783db0604f7dbeb5e72c59c848fd549e1a languageName: node linkType: hard -"@esbuild/linux-loong64@npm:0.16.17": - version: 0.16.17 - resolution: "@esbuild/linux-loong64@npm:0.16.17" - conditions: os=linux & cpu=loong64 +"@backstage/plugin-search-backend-module-pg@npm:^0.5.36": + version: 0.5.39 + resolution: "@backstage/plugin-search-backend-module-pg@npm:0.5.39" + dependencies: + "@backstage/backend-common": ^0.25.0 + "@backstage/backend-plugin-api": ^1.1.0 + "@backstage/config": ^1.3.1 + "@backstage/plugin-search-backend-node": ^1.3.6 + "@backstage/plugin-search-common": ^1.2.16 + knex: ^3.0.0 + lodash: ^4.17.21 + uuid: ^11.0.0 + checksum: ee59838a97ab3299ca0a69e01c05a69e76103da1076b83eb3c388c8a82dcc485ff147a54b2591fc6b702f014d87612082889dca253c5eb81a0a326b203559678 languageName: node linkType: hard -"@esbuild/linux-loong64@npm:0.21.5": - version: 0.21.5 - resolution: "@esbuild/linux-loong64@npm:0.21.5" - conditions: os=linux & cpu=loong64 +"@backstage/plugin-search-backend-module-techdocs@npm:^0.3.0, @backstage/plugin-search-backend-module-techdocs@npm:^0.3.4": + version: 0.3.4 + resolution: "@backstage/plugin-search-backend-module-techdocs@npm:0.3.4" + dependencies: + "@backstage/backend-common": ^0.25.0 + "@backstage/backend-plugin-api": ^1.1.0 + "@backstage/catalog-client": ^1.9.0 + "@backstage/catalog-model": ^1.7.2 + "@backstage/config": ^1.3.1 + "@backstage/plugin-catalog-common": ^1.1.2 + "@backstage/plugin-catalog-node": ^1.15.0 + "@backstage/plugin-permission-common": ^0.8.3 + "@backstage/plugin-search-backend-node": ^1.3.6 + "@backstage/plugin-search-common": ^1.2.16 + "@backstage/plugin-techdocs-node": ^1.12.15 + lodash: ^4.17.21 + p-limit: ^3.1.0 + checksum: 3f023972267b62a1571c1eb385ce6412c9c910963364026c528aebc2dc6356310f4f41288b5f8330e7b04ff3d4fe30271493f04b72e85c84b343a44bd59d78e6 languageName: node linkType: hard -"@esbuild/linux-loong64@npm:0.23.1": - version: 0.23.1 - resolution: "@esbuild/linux-loong64@npm:0.23.1" - conditions: os=linux & cpu=loong64 +"@backstage/plugin-search-backend-node@npm:^1.3.3, @backstage/plugin-search-backend-node@npm:^1.3.6": + version: 1.3.6 + resolution: "@backstage/plugin-search-backend-node@npm:1.3.6" + dependencies: + "@backstage/backend-plugin-api": ^1.1.0 + "@backstage/config": ^1.3.1 + "@backstage/errors": ^1.2.6 + "@backstage/plugin-permission-common": ^0.8.3 + "@backstage/plugin-search-common": ^1.2.16 + "@types/lunr": ^2.3.3 + lodash: ^4.17.21 + lunr: ^2.3.9 + ndjson: ^2.0.0 + uuid: ^11.0.0 + checksum: 59df3dbe4ce80ec181ba42396a5bd1e272c8e06ecbb9116a4dc8ac33c25f720599f24cece6a7717d155e94bf39207eaae82aa6f3859acb529204a049a54cc020 languageName: node linkType: hard -"@esbuild/linux-loong64@npm:0.24.0": - version: 0.24.0 - resolution: "@esbuild/linux-loong64@npm:0.24.0" - conditions: os=linux & cpu=loong64 +"@backstage/plugin-search-backend@npm:^1.6.0": + version: 1.8.0 + resolution: "@backstage/plugin-search-backend@npm:1.8.0" + dependencies: + "@backstage/backend-common": ^0.25.0 + "@backstage/backend-defaults": ^0.6.0 + "@backstage/backend-openapi-utils": ^0.4.0 + "@backstage/backend-plugin-api": ^1.1.0 + "@backstage/config": ^1.3.1 + "@backstage/errors": ^1.2.6 + "@backstage/plugin-permission-common": ^0.8.3 + "@backstage/plugin-permission-node": ^0.8.6 + "@backstage/plugin-search-backend-node": ^1.3.6 + "@backstage/plugin-search-common": ^1.2.16 + "@backstage/types": ^1.2.0 + "@types/express": ^4.17.6 + dataloader: ^2.0.0 + express: ^4.17.1 + lodash: ^4.17.21 + qs: ^6.10.1 + yn: ^4.0.0 + zod: ^3.22.4 + checksum: 0ff0249ea09c36490534e03b8a320084832afa33a67830ef76e675da623ec7a51933175cdcfc5e4d51209f82ffc4a4bafefcd55894a6f4bb0deafd65f0285028 languageName: node linkType: hard -"@esbuild/linux-mips64el@npm:0.16.17": - version: 0.16.17 - resolution: "@esbuild/linux-mips64el@npm:0.16.17" - conditions: os=linux & cpu=mips64el +"@backstage/plugin-search-common@npm:^1.2.16": + version: 1.2.16 + resolution: "@backstage/plugin-search-common@npm:1.2.16" + dependencies: + "@backstage/plugin-permission-common": ^0.8.3 + "@backstage/types": ^1.2.0 + checksum: b4694b4be71dfbeac9352fc0f6dfc5b7d21f3fa69b15f9ff8efb22de2453e71c4f02340726325c7213e296a8bb07eaf60de552e3b6b13b40d97d53486b350389 languageName: node linkType: hard -"@esbuild/linux-mips64el@npm:0.21.5": - version: 0.21.5 - resolution: "@esbuild/linux-mips64el@npm:0.21.5" - conditions: os=linux & cpu=mips64el +"@backstage/plugin-search-react@npm:^1.8.1, @backstage/plugin-search-react@npm:^1.8.4": + version: 1.8.4 + resolution: "@backstage/plugin-search-react@npm:1.8.4" + dependencies: + "@backstage/core-components": ^0.16.2 + "@backstage/core-plugin-api": ^1.10.2 + "@backstage/frontend-plugin-api": ^0.9.3 + "@backstage/plugin-search-common": ^1.2.16 + "@backstage/theme": ^0.6.3 + "@backstage/types": ^1.2.0 + "@backstage/version-bridge": ^1.0.10 + "@material-ui/core": ^4.12.2 + "@material-ui/icons": ^4.9.1 + "@material-ui/lab": 4.0.0-alpha.61 + lodash: ^4.17.21 + qs: ^6.9.4 + react-use: ^17.3.2 + uuid: ^11.0.2 + peerDependencies: + "@types/react": ^16.13.1 || ^17.0.0 || ^18.0.0 + react: ^16.13.1 || ^17.0.0 || ^18.0.0 + react-dom: ^16.13.1 || ^17.0.0 || ^18.0.0 + react-router-dom: 6.0.0-beta.0 || ^6.3.0 + peerDependenciesMeta: + "@types/react": + optional: true + checksum: e79ca8653fc148cdacd5dcc2cd846f3871989e332fbec329e2dcfea72a8f04d586117d7dadef4d4a85ccb97b3406a64ae31a3d6557839ef49b22019563879de9 + languageName: node + linkType: hard + +"@backstage/plugin-search@npm:^1.4.18": + version: 1.4.21 + resolution: "@backstage/plugin-search@npm:1.4.21" + dependencies: + "@backstage/core-compat-api": ^0.3.4 + "@backstage/core-components": ^0.16.2 + "@backstage/core-plugin-api": ^1.10.2 + "@backstage/errors": ^1.2.6 + "@backstage/frontend-plugin-api": ^0.9.3 + "@backstage/plugin-catalog-react": ^1.15.0 + "@backstage/plugin-search-common": ^1.2.16 + "@backstage/plugin-search-react": ^1.8.4 + "@backstage/types": ^1.2.0 + "@backstage/version-bridge": ^1.0.10 + "@material-ui/core": ^4.12.2 + "@material-ui/icons": ^4.9.1 + qs: ^6.9.4 + react-use: ^17.2.4 + peerDependencies: + "@types/react": ^16.13.1 || ^17.0.0 || ^18.0.0 + react: ^16.13.1 || ^17.0.0 || ^18.0.0 + react-dom: ^16.13.1 || ^17.0.0 || ^18.0.0 + react-router-dom: 6.0.0-beta.0 || ^6.3.0 + peerDependenciesMeta: + "@types/react": + optional: true + checksum: 93f2ff7b183ef3a5a668f094a1fdff10cd5133204effe42dbb52c9ef66b21821ca08c34380cfb9428f93f9dfa822a51d1f9b04ef8d497dfed69541a2b020248c languageName: node linkType: hard -"@esbuild/linux-mips64el@npm:0.23.1": - version: 0.23.1 - resolution: "@esbuild/linux-mips64el@npm:0.23.1" - conditions: os=linux & cpu=mips64el +"@backstage/plugin-signals-react@npm:^0.0.8": + version: 0.0.8 + resolution: "@backstage/plugin-signals-react@npm:0.0.8" + dependencies: + "@backstage/core-plugin-api": ^1.10.2 + "@backstage/types": ^1.2.0 + "@material-ui/core": ^4.12.4 + peerDependencies: + "@types/react": ^16.13.1 || ^17.0.0 || ^18.0.0 + react: ^16.13.1 || ^17.0.0 || ^18.0.0 + react-dom: ^16.13.1 || ^17.0.0 || ^18.0.0 + react-router-dom: 6.0.0-beta.0 || ^6.3.0 + peerDependenciesMeta: + "@types/react": + optional: true + checksum: ae23e88aa262e2ccba5cf8fc192095d2629960ae790d91755f22f48ba3c8e07db653e4f3e9c3a92791c2d86c75a144914446c891b04ec98f2ebb145dfd6c5a12 languageName: node linkType: hard -"@esbuild/linux-mips64el@npm:0.24.0": - version: 0.24.0 - resolution: "@esbuild/linux-mips64el@npm:0.24.0" - conditions: os=linux & cpu=mips64el +"@backstage/plugin-techdocs-backend@npm:^1.11.0": + version: 1.11.4 + resolution: "@backstage/plugin-techdocs-backend@npm:1.11.4" + dependencies: + "@backstage/backend-common": ^0.25.0 + "@backstage/backend-plugin-api": ^1.1.0 + "@backstage/catalog-client": ^1.9.0 + "@backstage/catalog-model": ^1.7.2 + "@backstage/config": ^1.3.1 + "@backstage/errors": ^1.2.6 + "@backstage/integration": ^1.16.0 + "@backstage/plugin-catalog-common": ^1.1.2 + "@backstage/plugin-catalog-node": ^1.15.0 + "@backstage/plugin-permission-common": ^0.8.3 + "@backstage/plugin-search-backend-module-techdocs": ^0.3.4 + "@backstage/plugin-techdocs-common": ^0.1.0 + "@backstage/plugin-techdocs-node": ^1.12.15 + "@types/express": ^4.17.6 + express: ^4.17.1 + express-promise-router: ^4.1.0 + fs-extra: ^11.2.0 + knex: ^3.0.0 + lodash: ^4.17.21 + p-limit: ^3.1.0 + winston: ^3.2.1 + checksum: 90bec22503f8e7d266d35ca8f77ab6ad9aea3ca3a8608a487ce1c67d8bec882d5669a5880b027ff51fcc8a2f33c037c03eb152611dbf9ea7829298eeb095fe7b languageName: node linkType: hard -"@esbuild/linux-ppc64@npm:0.16.17": - version: 0.16.17 - resolution: "@esbuild/linux-ppc64@npm:0.16.17" - conditions: os=linux & cpu=ppc64 +"@backstage/plugin-techdocs-common@npm:^0.1.0": + version: 0.1.0 + resolution: "@backstage/plugin-techdocs-common@npm:0.1.0" + checksum: e38752e54cd4d516e6ab4908dca16cad7863ecd8c81cf4f0d52a4dbe159c3a2080788f3941395b45011dd47d72930236cd44567a5c7a39efb9a3a037df1b2cba languageName: node linkType: hard -"@esbuild/linux-ppc64@npm:0.21.5": - version: 0.21.5 - resolution: "@esbuild/linux-ppc64@npm:0.21.5" - conditions: os=linux & cpu=ppc64 +"@backstage/plugin-techdocs-module-addons-contrib@npm:^1.1.16": + version: 1.1.19 + resolution: "@backstage/plugin-techdocs-module-addons-contrib@npm:1.1.19" + dependencies: + "@backstage/core-components": ^0.16.2 + "@backstage/core-plugin-api": ^1.10.2 + "@backstage/integration": ^1.16.0 + "@backstage/integration-react": ^1.2.2 + "@backstage/plugin-techdocs-react": ^1.2.12 + "@material-ui/core": ^4.12.2 + "@material-ui/icons": ^4.9.1 + "@react-hookz/web": ^24.0.0 + git-url-parse: ^15.0.0 + photoswipe: ^5.3.7 + peerDependencies: + "@types/react": ^16.13.1 || ^17.0.0 || ^18.0.0 + react: ^16.13.1 || ^17.0.0 || ^18.0.0 + react-dom: ^16.13.1 || ^17.0.0 || ^18.0.0 + react-router-dom: 6.0.0-beta.0 || ^6.3.0 + peerDependenciesMeta: + "@types/react": + optional: true + checksum: 120770752a347e4ab5ec7a271402a6c502d54c9e0ce802dfebf8d5baf3ac90383276b59a602a8a55353f10d47cca2bc80b2363b98300bb76ba84c798b9539d12 languageName: node linkType: hard -"@esbuild/linux-ppc64@npm:0.23.1": - version: 0.23.1 - resolution: "@esbuild/linux-ppc64@npm:0.23.1" - conditions: os=linux & cpu=ppc64 +"@backstage/plugin-techdocs-node@npm:^1.12.15": + version: 1.12.15 + resolution: "@backstage/plugin-techdocs-node@npm:1.12.15" + dependencies: + "@aws-sdk/client-s3": ^3.350.0 + "@aws-sdk/credential-providers": ^3.350.0 + "@aws-sdk/lib-storage": ^3.350.0 + "@aws-sdk/types": ^3.347.0 + "@azure/identity": ^4.0.0 + "@azure/storage-blob": ^12.5.0 + "@backstage/backend-plugin-api": ^1.1.0 + "@backstage/catalog-model": ^1.7.2 + "@backstage/config": ^1.3.1 + "@backstage/errors": ^1.2.6 + "@backstage/integration": ^1.16.0 + "@backstage/integration-aws-node": ^0.1.14 + "@backstage/plugin-search-common": ^1.2.16 + "@backstage/plugin-techdocs-common": ^0.1.0 + "@google-cloud/storage": ^7.0.0 + "@smithy/node-http-handler": ^3.0.0 + "@trendyol-js/openstack-swift-sdk": ^0.0.7 + "@types/express": ^4.17.6 + dockerode: ^4.0.0 + express: ^4.17.1 + fs-extra: ^11.2.0 + git-url-parse: ^15.0.0 + hpagent: ^1.2.0 + js-yaml: ^4.0.0 + json5: ^2.1.3 + mime-types: ^2.1.27 + p-limit: ^3.1.0 + recursive-readdir: ^2.2.2 + winston: ^3.2.1 + checksum: 77ec565f8c5b5712df33353d912504460f2e968edd701fd23f80e07e9369c7afd86418ef715f2ba7cbf3691aa742b6004382680ff03db4ac33b2d73d75e356ef languageName: node linkType: hard -"@esbuild/linux-ppc64@npm:0.24.0": - version: 0.24.0 - resolution: "@esbuild/linux-ppc64@npm:0.24.0" - conditions: os=linux & cpu=ppc64 +"@backstage/plugin-techdocs-react@npm:^1.2.12, @backstage/plugin-techdocs-react@npm:^1.2.9": + version: 1.2.12 + resolution: "@backstage/plugin-techdocs-react@npm:1.2.12" + dependencies: + "@backstage/catalog-model": ^1.7.2 + "@backstage/config": ^1.3.1 + "@backstage/core-components": ^0.16.2 + "@backstage/core-plugin-api": ^1.10.2 + "@backstage/version-bridge": ^1.0.10 + "@material-ui/core": ^4.12.2 + "@material-ui/styles": ^4.11.0 + jss: ~10.10.0 + lodash: ^4.17.21 + react-helmet: 6.1.0 + react-use: ^17.2.4 + peerDependencies: + "@types/react": ^16.13.1 || ^17.0.0 || ^18.0.0 + react: ^16.13.1 || ^17.0.0 || ^18.0.0 + react-dom: ^16.13.1 || ^17.0.0 || ^18.0.0 + react-router-dom: 6.0.0-beta.0 || ^6.3.0 + peerDependenciesMeta: + "@types/react": + optional: true + checksum: 457868cdc3be965c26e39f74f8b02bf3ce3bcfa0dbe049833c1369ae56928aa46038099a97db6a2c7ba735f8bef99209c0980c26a499a6f02840a2b0ea7c16f1 + languageName: node + linkType: hard + +"@backstage/plugin-techdocs@npm:^1.11.0": + version: 1.12.0 + resolution: "@backstage/plugin-techdocs@npm:1.12.0" + dependencies: + "@backstage/catalog-model": ^1.7.2 + "@backstage/config": ^1.3.1 + "@backstage/core-compat-api": ^0.3.4 + "@backstage/core-components": ^0.16.2 + "@backstage/core-plugin-api": ^1.10.2 + "@backstage/errors": ^1.2.6 + "@backstage/frontend-plugin-api": ^0.9.3 + "@backstage/integration": ^1.16.0 + "@backstage/integration-react": ^1.2.2 + "@backstage/plugin-auth-react": ^0.1.10 + "@backstage/plugin-catalog-react": ^1.15.0 + "@backstage/plugin-search-common": ^1.2.16 + "@backstage/plugin-search-react": ^1.8.4 + "@backstage/plugin-techdocs-common": ^0.1.0 + "@backstage/plugin-techdocs-react": ^1.2.12 + "@backstage/theme": ^0.6.3 + "@material-ui/core": ^4.12.2 + "@material-ui/icons": ^4.9.1 + "@material-ui/lab": 4.0.0-alpha.61 + "@material-ui/styles": ^4.10.0 + "@microsoft/fetch-event-source": ^2.0.1 + dompurify: ^3.0.0 + git-url-parse: ^15.0.0 + jss: ~10.10.0 + lodash: ^4.17.21 + react-helmet: 6.1.0 + react-use: ^17.2.4 + peerDependencies: + "@types/react": ^16.13.1 || ^17.0.0 || ^18.0.0 + react: ^16.13.1 || ^17.0.0 || ^18.0.0 + react-dom: ^16.13.1 || ^17.0.0 || ^18.0.0 + react-router-dom: 6.0.0-beta.0 || ^6.3.0 + peerDependenciesMeta: + "@types/react": + optional: true + checksum: a6282fd1e7b861371fdb9b8ed50669626b8d3512d5abe090af255ed17c1115044ba0a1924d639d29eceb3d2e097925808c487b7617efc2088023a4d96c7b0e75 languageName: node linkType: hard -"@esbuild/linux-riscv64@npm:0.16.17": - version: 0.16.17 - resolution: "@esbuild/linux-riscv64@npm:0.16.17" - conditions: os=linux & cpu=riscv64 +"@backstage/plugin-user-settings-common@npm:^0.0.1": + version: 0.0.1 + resolution: "@backstage/plugin-user-settings-common@npm:0.0.1" + checksum: f3441e1b8891d34588a2fbf4dcddacad2d3732ca2f14128e8736ed6afb85debb63ba365bfc32a66f30e7112c1ebd7a22ee793e87feb84647c4e48f6d3bec227e + languageName: node + linkType: hard + +"@backstage/plugin-user-settings@npm:^0.8.14": + version: 0.8.17 + resolution: "@backstage/plugin-user-settings@npm:0.8.17" + dependencies: + "@backstage/catalog-model": ^1.7.2 + "@backstage/core-app-api": ^1.15.3 + "@backstage/core-compat-api": ^0.3.4 + "@backstage/core-components": ^0.16.2 + "@backstage/core-plugin-api": ^1.10.2 + "@backstage/errors": ^1.2.6 + "@backstage/frontend-plugin-api": ^0.9.3 + "@backstage/plugin-catalog-react": ^1.15.0 + "@backstage/plugin-signals-react": ^0.0.8 + "@backstage/plugin-user-settings-common": ^0.0.1 + "@backstage/theme": ^0.6.3 + "@backstage/types": ^1.2.0 + "@material-ui/core": ^4.12.2 + "@material-ui/icons": ^4.9.1 + "@material-ui/lab": 4.0.0-alpha.61 + react-use: ^17.2.4 + zen-observable: ^0.10.0 + peerDependencies: + "@types/react": ^16.13.1 || ^17.0.0 || ^18.0.0 + react: ^16.13.1 || ^17.0.0 || ^18.0.0 + react-dom: ^16.13.1 || ^17.0.0 || ^18.0.0 + react-router-dom: 6.0.0-beta.0 || ^6.3.0 + peerDependenciesMeta: + "@types/react": + optional: true + checksum: b3c6d391582df0ded387e813f636186f4317ed1e1adfcd02d5532da788cbd8b24782914c5e1d7104d71c3748d8cd7cf4379ca976d24cfef97088fff7a07ceab6 languageName: node linkType: hard -"@esbuild/linux-riscv64@npm:0.21.5": - version: 0.21.5 - resolution: "@esbuild/linux-riscv64@npm:0.21.5" - conditions: os=linux & cpu=riscv64 +"@backstage/release-manifests@npm:^0.0.11": + version: 0.0.11 + resolution: "@backstage/release-manifests@npm:0.0.11" + dependencies: + cross-fetch: ^4.0.0 + checksum: c03a21524436f1e423a40ac15f685b7f13ce3205e2684ce859571db3b70c78d783b3e1702ba3ffb2ba2d446f7444e8c592c6696b7c618fbf6648e91cb4c4fe07 languageName: node linkType: hard -"@esbuild/linux-riscv64@npm:0.23.1": - version: 0.23.1 - resolution: "@esbuild/linux-riscv64@npm:0.23.1" - conditions: os=linux & cpu=riscv64 +"@backstage/repo-tools@npm:^0.10.0": + version: 0.10.0 + resolution: "@backstage/repo-tools@npm:0.10.0" + dependencies: + "@apidevtools/swagger-parser": ^10.1.0 + "@apisyouwonthate/style-guide": ^1.4.0 + "@backstage/backend-plugin-api": ^1.0.1 + "@backstage/catalog-model": ^1.7.0 + "@backstage/cli-common": ^0.1.14 + "@backstage/cli-node": ^0.2.9 + "@backstage/config-loader": ^1.9.1 + "@backstage/errors": ^1.2.4 + "@manypkg/get-packages": ^1.1.3 + "@microsoft/api-documenter": ^7.25.7 + "@microsoft/api-extractor": ^7.47.2 + "@openapitools/openapi-generator-cli": ^2.7.0 + "@stoplight/spectral-core": ^1.18.0 + "@stoplight/spectral-formatters": ^1.1.0 + "@stoplight/spectral-functions": ^1.7.2 + "@stoplight/spectral-parsers": ^1.0.2 + "@stoplight/spectral-rulesets": ^1.18.0 + "@stoplight/spectral-runtime": ^1.1.2 + "@stoplight/types": ^14.0.0 + "@useoptic/openapi-utilities": ^0.55.0 + chalk: ^4.0.0 + codeowners-utils: ^1.0.2 + command-exists: ^1.2.9 + commander: ^12.0.0 + fs-extra: ^11.2.0 + glob: ^8.0.3 + is-glob: ^4.0.3 + js-yaml: ^4.1.0 + lodash: ^4.17.21 + minimatch: ^9.0.0 + p-limit: ^3.0.2 + portfinder: ^1.0.32 + ts-morph: ^23.0.0 + yaml-diff-patch: ^2.0.0 + peerDependencies: + "@microsoft/api-extractor-model": "*" + "@microsoft/tsdoc": "*" + "@microsoft/tsdoc-config": "*" + "@useoptic/optic": ^1.0.0 + prettier: ^2.8.1 + typescript: "> 3.0.0" + peerDependenciesMeta: + prettier: + optional: true + bin: + backstage-repo-tools: bin/backstage-repo-tools + checksum: 8a68c69f053edadd087d829823880902d8e6d55e77d756d6b4ba4640af29493036ac5fa08cec08666b59ddfb27cacf4975fd24ac7ba785dab5b1d8a96df62bec languageName: node linkType: hard -"@esbuild/linux-riscv64@npm:0.24.0": - version: 0.24.0 - resolution: "@esbuild/linux-riscv64@npm:0.24.0" - conditions: os=linux & cpu=riscv64 +"@backstage/test-utils@npm:1.7.0": + version: 1.7.0 + resolution: "@backstage/test-utils@npm:1.7.0" + dependencies: + "@backstage/config": ^1.2.0 + "@backstage/core-app-api": ^1.15.1 + "@backstage/core-plugin-api": ^1.10.0 + "@backstage/plugin-permission-common": ^0.8.1 + "@backstage/plugin-permission-react": ^0.4.27 + "@backstage/theme": ^0.6.0 + "@backstage/types": ^1.1.1 + "@material-ui/core": ^4.12.2 + "@material-ui/icons": ^4.9.1 + cross-fetch: ^4.0.0 + i18next: ^22.4.15 + zen-observable: ^0.10.0 + peerDependencies: + "@testing-library/react": ^16.0.0 + "@types/jest": "*" + "@types/react": ^16.13.1 || ^17.0.0 || ^18.0.0 + react: ^16.13.1 || ^17.0.0 || ^18.0.0 + react-dom: ^16.13.1 || ^17.0.0 || ^18.0.0 + react-router-dom: 6.0.0-beta.0 || ^6.3.0 + peerDependenciesMeta: + "@types/jest": + optional: true + "@types/react": + optional: true + checksum: a2510b9b2cde88ba636af2d09d30d8349b80167a9408e416b2245771f5138dfd56745a6b08ecad64ec7f9656d2b5a15d9ab15dbcd695d3981db49e272d8a3260 languageName: node linkType: hard -"@esbuild/linux-s390x@npm:0.16.17": - version: 0.16.17 - resolution: "@esbuild/linux-s390x@npm:0.16.17" - conditions: os=linux & cpu=s390x +"@backstage/test-utils@npm:^1.7.0, @backstage/test-utils@npm:^1.7.3": + version: 1.7.3 + resolution: "@backstage/test-utils@npm:1.7.3" + dependencies: + "@backstage/config": ^1.3.1 + "@backstage/core-app-api": ^1.15.3 + "@backstage/core-plugin-api": ^1.10.2 + "@backstage/plugin-permission-common": ^0.8.3 + "@backstage/plugin-permission-react": ^0.4.29 + "@backstage/theme": ^0.6.3 + "@backstage/types": ^1.2.0 + "@material-ui/core": ^4.12.2 + "@material-ui/icons": ^4.9.1 + cross-fetch: ^4.0.0 + i18next: ^22.4.15 + zen-observable: ^0.10.0 + peerDependencies: + "@testing-library/react": ^16.0.0 + "@types/jest": "*" + "@types/react": ^16.13.1 || ^17.0.0 || ^18.0.0 + react: ^16.13.1 || ^17.0.0 || ^18.0.0 + react-dom: ^16.13.1 || ^17.0.0 || ^18.0.0 + react-router-dom: 6.0.0-beta.0 || ^6.3.0 + peerDependenciesMeta: + "@types/jest": + optional: true + "@types/react": + optional: true + checksum: 46d13417a0e3e8b6db2d4ab536729e8f9575db320f0d0e5ded38cafb71571122b9b610d36f98e0674a3300469511408e608d277590c1a9b8dede05d73fc793ae languageName: node linkType: hard -"@esbuild/linux-s390x@npm:0.21.5": - version: 0.21.5 - resolution: "@esbuild/linux-s390x@npm:0.21.5" - conditions: os=linux & cpu=s390x +"@backstage/theme@npm:^0.6.0, @backstage/theme@npm:^0.6.3": + version: 0.6.3 + resolution: "@backstage/theme@npm:0.6.3" + dependencies: + "@emotion/react": ^11.10.5 + "@emotion/styled": ^11.10.5 + "@mui/material": ^5.12.2 + peerDependencies: + "@material-ui/core": ^4.12.2 + "@types/react": ^16.13.1 || ^17.0.0 || ^18.0.0 + react: ^16.13.1 || ^17.0.0 || ^18.0.0 + react-dom: ^16.13.1 || ^17.0.0 || ^18.0.0 + react-router-dom: 6.0.0-beta.0 || ^6.3.0 + peerDependenciesMeta: + "@types/react": + optional: true + checksum: 597713cfbbb91bd4d31f33d04d296766ea76afe00a04133af5b25422941fc89d4dcc2ec476450980690fa3df1dcc16c8b0b1c5bf6425b77d962604a758fc60f0 languageName: node linkType: hard -"@esbuild/linux-s390x@npm:0.23.1": - version: 0.23.1 - resolution: "@esbuild/linux-s390x@npm:0.23.1" - conditions: os=linux & cpu=s390x +"@backstage/types@npm:^1.1.1": + version: 1.1.1 + resolution: "@backstage/types@npm:1.1.1" + checksum: 54bd9e53570cf2a7a8d9ae30e7181ee6b669b7f543949391a2168f616e1f7b13f0419f324941a87aa15f723d0313eda8f212db2077675421d6f91484f477c4f5 languageName: node linkType: hard -"@esbuild/linux-s390x@npm:0.24.0": - version: 0.24.0 - resolution: "@esbuild/linux-s390x@npm:0.24.0" - conditions: os=linux & cpu=s390x +"@backstage/types@npm:^1.2.0": + version: 1.2.0 + resolution: "@backstage/types@npm:1.2.0" + checksum: a8b22a95b7c64bde31927e18f6892bb0be949bd1a7bc5d9ef1e4d9df984ff80144148a6019a69d1084f6214fcb9536fdd7d8f2fb3708ef373ff2e1bac28442b0 languageName: node linkType: hard -"@esbuild/linux-x64@npm:0.16.17": - version: 0.16.17 - resolution: "@esbuild/linux-x64@npm:0.16.17" - conditions: os=linux & cpu=x64 +"@backstage/version-bridge@npm:^1.0.10": + version: 1.0.10 + resolution: "@backstage/version-bridge@npm:1.0.10" + peerDependencies: + "@types/react": ^16.13.1 || ^17.0.0 || ^18.0.0 + react: ^16.13.1 || ^17.0.0 || ^18.0.0 + react-dom: ^16.13.1 || ^17.0.0 || ^18.0.0 + react-router-dom: 6.0.0-beta.0 || ^6.3.0 + peerDependenciesMeta: + "@types/react": + optional: true + checksum: f24c02c071aecf5a9557602252dc458a6db93393960b9f4a51dc649c1886afcfaae3f3a46ce3c846721ea56a112c0c604de52782e19f495daec2b16ae7e72af4 languageName: node linkType: hard -"@esbuild/linux-x64@npm:0.21.5": - version: 0.21.5 - resolution: "@esbuild/linux-x64@npm:0.21.5" - conditions: os=linux & cpu=x64 +"@balena/dockerignore@npm:^1.0.2": + version: 1.0.2 + resolution: "@balena/dockerignore@npm:1.0.2" + checksum: 0d39f8fbcfd1a983a44bced54508471ab81aaaa40e2c62b46a9f97eac9d6b265790799f16919216db486331dedaacdde6ecbd6b7abe285d39bc50de111991699 languageName: node linkType: hard -"@esbuild/linux-x64@npm:0.23.1": - version: 0.23.1 - resolution: "@esbuild/linux-x64@npm:0.23.1" - conditions: os=linux & cpu=x64 +"@bcoe/v8-coverage@npm:^0.2.3": + version: 0.2.3 + resolution: "@bcoe/v8-coverage@npm:0.2.3" + checksum: 850f9305536d0f2bd13e9e0881cb5f02e4f93fad1189f7b2d4bebf694e3206924eadee1068130d43c11b750efcc9405f88a8e42ef098b6d75239c0f047de1a27 languageName: node linkType: hard -"@esbuild/linux-x64@npm:0.24.0": - version: 0.24.0 - resolution: "@esbuild/linux-x64@npm:0.24.0" - conditions: os=linux & cpu=x64 +"@braintree/sanitize-url@npm:=7.0.4": + version: 7.0.4 + resolution: "@braintree/sanitize-url@npm:7.0.4" + checksum: e613da3aa3e2139c3a5cf0121c7d6520c109d9b94540b3967ffff76714f3b2b0e99f4f3f7387f16cf1c189fc0041c6f010ca6e786c73d4ef3221cca0ede38f74 languageName: node linkType: hard -"@esbuild/netbsd-x64@npm:0.16.17": - version: 0.16.17 - resolution: "@esbuild/netbsd-x64@npm:0.16.17" - conditions: os=netbsd & cpu=x64 +"@changesets/apply-release-plan@npm:^7.0.5": + version: 7.0.5 + resolution: "@changesets/apply-release-plan@npm:7.0.5" + dependencies: + "@changesets/config": ^3.0.3 + "@changesets/get-version-range-type": ^0.4.0 + "@changesets/git": ^3.0.1 + "@changesets/should-skip-package": ^0.1.1 + "@changesets/types": ^6.0.0 + "@manypkg/get-packages": ^1.1.3 + detect-indent: ^6.0.0 + fs-extra: ^7.0.1 + lodash.startcase: ^4.4.0 + outdent: ^0.5.0 + prettier: ^2.7.1 + resolve-from: ^5.0.0 + semver: ^7.5.3 + checksum: f6a1b90d89fd08b46c11fad05d5fee510ff8a1888c163fd6221ccfb045eab013fa57c0c32c5697d6406852a39cf4df01b44f3ecca4746f30bd610bec54aa9abf languageName: node linkType: hard -"@esbuild/netbsd-x64@npm:0.21.5": - version: 0.21.5 - resolution: "@esbuild/netbsd-x64@npm:0.21.5" - conditions: os=netbsd & cpu=x64 +"@changesets/assemble-release-plan@npm:^6.0.4": + version: 6.0.4 + resolution: "@changesets/assemble-release-plan@npm:6.0.4" + dependencies: + "@changesets/errors": ^0.2.0 + "@changesets/get-dependents-graph": ^2.1.2 + "@changesets/should-skip-package": ^0.1.1 + "@changesets/types": ^6.0.0 + "@manypkg/get-packages": ^1.1.3 + semver: ^7.5.3 + checksum: 948066a8ca8e12390599f641a0439b6a4d6c1c2a9958f58596aa50cf68d7d594b28acc1eb6bd0ad17df2025f0614006e44728a2614fad2a3d54c669568bf6d65 languageName: node linkType: hard -"@esbuild/netbsd-x64@npm:0.23.1": - version: 0.23.1 - resolution: "@esbuild/netbsd-x64@npm:0.23.1" - conditions: os=netbsd & cpu=x64 +"@changesets/changelog-git@npm:^0.2.0": + version: 0.2.0 + resolution: "@changesets/changelog-git@npm:0.2.0" + dependencies: + "@changesets/types": ^6.0.0 + checksum: 132660f7fdabbdda00ac803cc822d6427a1a38a17a5f414e87ad32f6dc4cbef5280a147ecdc087a28dc06c8bd0762f8d6e7132d01b8a4142b59fbe1bc2177034 languageName: node linkType: hard -"@esbuild/netbsd-x64@npm:0.24.0": - version: 0.24.0 - resolution: "@esbuild/netbsd-x64@npm:0.24.0" - conditions: os=netbsd & cpu=x64 +"@changesets/cli@npm:^2.27.1": + version: 2.27.9 + resolution: "@changesets/cli@npm:2.27.9" + dependencies: + "@changesets/apply-release-plan": ^7.0.5 + "@changesets/assemble-release-plan": ^6.0.4 + "@changesets/changelog-git": ^0.2.0 + "@changesets/config": ^3.0.3 + "@changesets/errors": ^0.2.0 + "@changesets/get-dependents-graph": ^2.1.2 + "@changesets/get-release-plan": ^4.0.4 + "@changesets/git": ^3.0.1 + "@changesets/logger": ^0.1.1 + "@changesets/pre": ^2.0.1 + "@changesets/read": ^0.6.1 + "@changesets/should-skip-package": ^0.1.1 + "@changesets/types": ^6.0.0 + "@changesets/write": ^0.3.2 + "@manypkg/get-packages": ^1.1.3 + ansi-colors: ^4.1.3 + ci-info: ^3.7.0 + enquirer: ^2.3.0 + external-editor: ^3.1.0 + fs-extra: ^7.0.1 + mri: ^1.2.0 + p-limit: ^2.2.0 + package-manager-detector: ^0.2.0 + picocolors: ^1.1.0 + resolve-from: ^5.0.0 + semver: ^7.5.3 + spawndamnit: ^2.0.0 + term-size: ^2.1.0 + bin: + changeset: bin.js + checksum: 4bd36c152f9f93716b001f3ed849717588d2a9eb97f058e86f95ba6a43d8e4311073174251150aabb96f0a1ab5f8ab5ee6a32f85fc9248363f92b3826227cb9d languageName: node linkType: hard -"@esbuild/openbsd-arm64@npm:0.23.1": - version: 0.23.1 - resolution: "@esbuild/openbsd-arm64@npm:0.23.1" - conditions: os=openbsd & cpu=arm64 +"@changesets/config@npm:^3.0.3": + version: 3.0.3 + resolution: "@changesets/config@npm:3.0.3" + dependencies: + "@changesets/errors": ^0.2.0 + "@changesets/get-dependents-graph": ^2.1.2 + "@changesets/logger": ^0.1.1 + "@changesets/types": ^6.0.0 + "@manypkg/get-packages": ^1.1.3 + fs-extra: ^7.0.1 + micromatch: ^4.0.2 + checksum: f216f497e09c0fcdd4c397fc3998d1651a171b89981d2bed2a6c23c0f55ffa4e240cadbd13902bf91c218686165689a5183674a5b4682d80d3d5b8b9c569f5f1 languageName: node linkType: hard -"@esbuild/openbsd-arm64@npm:0.24.0": - version: 0.24.0 - resolution: "@esbuild/openbsd-arm64@npm:0.24.0" - conditions: os=openbsd & cpu=arm64 +"@changesets/errors@npm:^0.2.0": + version: 0.2.0 + resolution: "@changesets/errors@npm:0.2.0" + dependencies: + extendable-error: ^0.1.5 + checksum: 4b79373f92287af4f723e8dbbccaf0299aa8735fc043243d0ad587f04a7614615ea50180be575d4438b9f00aa82d1cf85e902b77a55bdd3e0a8dd97e77b18c60 languageName: node linkType: hard -"@esbuild/openbsd-x64@npm:0.16.17": - version: 0.16.17 - resolution: "@esbuild/openbsd-x64@npm:0.16.17" - conditions: os=openbsd & cpu=x64 +"@changesets/get-dependents-graph@npm:^2.1.2": + version: 2.1.2 + resolution: "@changesets/get-dependents-graph@npm:2.1.2" + dependencies: + "@changesets/types": ^6.0.0 + "@manypkg/get-packages": ^1.1.3 + picocolors: ^1.1.0 + semver: ^7.5.3 + checksum: 38446343e43f9b8731098e3b42d2525d5399d59cfccc09bdb62c9a48de60c7a893882050202badca3b5cab8405e6deb82e88258a56a318e42749fa60d96d874a languageName: node linkType: hard -"@esbuild/openbsd-x64@npm:0.21.5": - version: 0.21.5 - resolution: "@esbuild/openbsd-x64@npm:0.21.5" - conditions: os=openbsd & cpu=x64 +"@changesets/get-release-plan@npm:^4.0.4": + version: 4.0.4 + resolution: "@changesets/get-release-plan@npm:4.0.4" + dependencies: + "@changesets/assemble-release-plan": ^6.0.4 + "@changesets/config": ^3.0.3 + "@changesets/pre": ^2.0.1 + "@changesets/read": ^0.6.1 + "@changesets/types": ^6.0.0 + "@manypkg/get-packages": ^1.1.3 + checksum: 7217347f5bfaa56f97d3964e28e23a109d60c42b7c879c0cab6934feb30bdbdebb6dd0e81b4ecb5ec414be442d566b6af90d9224f6a48a52b6c5269c337f54a6 languageName: node linkType: hard -"@esbuild/openbsd-x64@npm:0.23.1": - version: 0.23.1 - resolution: "@esbuild/openbsd-x64@npm:0.23.1" - conditions: os=openbsd & cpu=x64 +"@changesets/get-version-range-type@npm:^0.4.0": + version: 0.4.0 + resolution: "@changesets/get-version-range-type@npm:0.4.0" + checksum: 2e8c511e658e193f48de7f09522649c4cf072932f0cbe0f252a7f2703d7775b0b90b632254526338795d0658e340be9dff3879cfc8eba4534b8cd6071efff8c9 languageName: node linkType: hard -"@esbuild/openbsd-x64@npm:0.24.0": - version: 0.24.0 - resolution: "@esbuild/openbsd-x64@npm:0.24.0" - conditions: os=openbsd & cpu=x64 +"@changesets/git@npm:^3.0.1": + version: 3.0.1 + resolution: "@changesets/git@npm:3.0.1" + dependencies: + "@changesets/errors": ^0.2.0 + "@manypkg/get-packages": ^1.1.3 + is-subdir: ^1.1.1 + micromatch: ^4.0.2 + spawndamnit: ^2.0.0 + checksum: 46d780fecd3dbdafde7c96dde7fe35a8461bc6edbff1de92d490971a99f021d60c5b4606a1d4fb778567146810090ede6610cf89407c14bde88edaa246801539 languageName: node linkType: hard -"@esbuild/sunos-x64@npm:0.16.17": - version: 0.16.17 - resolution: "@esbuild/sunos-x64@npm:0.16.17" - conditions: os=sunos & cpu=x64 +"@changesets/logger@npm:^0.1.1": + version: 0.1.1 + resolution: "@changesets/logger@npm:0.1.1" + dependencies: + picocolors: ^1.1.0 + checksum: acca50ef6bf6e446b46eb576b32f1955bf4579dbf4bbc316768ed2c1d4ba4066c9c73b114eedefaa1b3e360b1060a020e6bd3dbdbc44b74da732df92307beab0 languageName: node linkType: hard -"@esbuild/sunos-x64@npm:0.21.5": - version: 0.21.5 - resolution: "@esbuild/sunos-x64@npm:0.21.5" - conditions: os=sunos & cpu=x64 +"@changesets/parse@npm:^0.4.0": + version: 0.4.0 + resolution: "@changesets/parse@npm:0.4.0" + dependencies: + "@changesets/types": ^6.0.0 + js-yaml: ^3.13.1 + checksum: 3dd970b244479746233ebd357cfff3816cf9f344ebf2cf0c7c55ce8579adfd3f506978e86ad61222dc3acf1548a2105ffdd8b3e940b3f82b225741315cee2bf0 languageName: node linkType: hard -"@esbuild/sunos-x64@npm:0.23.1": - version: 0.23.1 - resolution: "@esbuild/sunos-x64@npm:0.23.1" - conditions: os=sunos & cpu=x64 +"@changesets/pre@npm:^2.0.1": + version: 2.0.1 + resolution: "@changesets/pre@npm:2.0.1" + dependencies: + "@changesets/errors": ^0.2.0 + "@changesets/types": ^6.0.0 + "@manypkg/get-packages": ^1.1.3 + fs-extra: ^7.0.1 + checksum: fbe94283dce0223ee79c12fa221105752ac89eb885b77e300ec755682cb06cc0145e10335f4bc6cb26d63473e549556c2b1c8c866242419aee5e41986379652a languageName: node linkType: hard -"@esbuild/sunos-x64@npm:0.24.0": - version: 0.24.0 - resolution: "@esbuild/sunos-x64@npm:0.24.0" - conditions: os=sunos & cpu=x64 +"@changesets/read@npm:^0.6.1": + version: 0.6.1 + resolution: "@changesets/read@npm:0.6.1" + dependencies: + "@changesets/git": ^3.0.1 + "@changesets/logger": ^0.1.1 + "@changesets/parse": ^0.4.0 + "@changesets/types": ^6.0.0 + fs-extra: ^7.0.1 + p-filter: ^2.1.0 + picocolors: ^1.1.0 + checksum: d00a18a3d04af5c76e7b763096650ebe16589864ab04eaf9e99c88aa77542f64de547b585037fc204d2055f9dd47fae94c789e2f173d3507a4e29dbe6609dd5b languageName: node linkType: hard -"@esbuild/win32-arm64@npm:0.16.17": - version: 0.16.17 - resolution: "@esbuild/win32-arm64@npm:0.16.17" - conditions: os=win32 & cpu=arm64 +"@changesets/should-skip-package@npm:^0.1.1": + version: 0.1.1 + resolution: "@changesets/should-skip-package@npm:0.1.1" + dependencies: + "@changesets/types": ^6.0.0 + "@manypkg/get-packages": ^1.1.3 + checksum: d187ef22495deb63e678d0ff65e8627701e2b52c25bd59dde10ce8646be8d605c0ed0a6af020dd825b137c2fc748fdc6cef52e7774bad4c7a4f404bf182a85cf languageName: node linkType: hard -"@esbuild/win32-arm64@npm:0.21.5": - version: 0.21.5 - resolution: "@esbuild/win32-arm64@npm:0.21.5" - conditions: os=win32 & cpu=arm64 +"@changesets/types@npm:^4.0.1": + version: 4.1.0 + resolution: "@changesets/types@npm:4.1.0" + checksum: 72c1f58044178ca867dd9349ecc4b7c233ce3781bb03b5b72a70c3166fbbab54a2f2cb19a81f96b4649ba004442c8734569fba238be4dd737fb4624a135c6098 languageName: node linkType: hard -"@esbuild/win32-arm64@npm:0.23.1": - version: 0.23.1 - resolution: "@esbuild/win32-arm64@npm:0.23.1" - conditions: os=win32 & cpu=arm64 +"@changesets/types@npm:^6.0.0": + version: 6.0.0 + resolution: "@changesets/types@npm:6.0.0" + checksum: d528b5d712f62c26ea422c7d34ccf6eac57a353c0733d96716db3c796ecd9bba5d496d48b37d5d46b784dc45b69c06ce3345fa3515df981bb68456cad68e6465 languageName: node linkType: hard -"@esbuild/win32-arm64@npm:0.24.0": - version: 0.24.0 - resolution: "@esbuild/win32-arm64@npm:0.24.0" - conditions: os=win32 & cpu=arm64 +"@changesets/write@npm:^0.3.2": + version: 0.3.2 + resolution: "@changesets/write@npm:0.3.2" + dependencies: + "@changesets/types": ^6.0.0 + fs-extra: ^7.0.1 + human-id: ^1.0.2 + prettier: ^2.7.1 + checksum: 553ed0ba6bd6397784f5e0e2921794bd7417a3c4fb810f1abb15e7072bf9d312af74308ff743161c6ea01478884cebcaf9cee02e5c70e2c7552b2774960ee07c languageName: node linkType: hard -"@esbuild/win32-ia32@npm:0.16.17": - version: 0.16.17 - resolution: "@esbuild/win32-ia32@npm:0.16.17" - conditions: os=win32 & cpu=ia32 +"@codemirror/autocomplete@npm:^6.0.0": + version: 6.18.4 + resolution: "@codemirror/autocomplete@npm:6.18.4" + dependencies: + "@codemirror/language": ^6.0.0 + "@codemirror/state": ^6.0.0 + "@codemirror/view": ^6.17.0 + "@lezer/common": ^1.0.0 + checksum: 4216f45a17f6cfd8d33df53f940396f7d3707662570bf3a79d8d333f926e273a265fac13c362e29e3fa57ccdf444f1a047862f5f56c672cfc669c87ee975858f languageName: node linkType: hard -"@esbuild/win32-ia32@npm:0.21.5": - version: 0.21.5 - resolution: "@esbuild/win32-ia32@npm:0.21.5" - conditions: os=win32 & cpu=ia32 +"@codemirror/commands@npm:^6.0.0, @codemirror/commands@npm:^6.1.0": + version: 6.7.1 + resolution: "@codemirror/commands@npm:6.7.1" + dependencies: + "@codemirror/language": ^6.0.0 + "@codemirror/state": ^6.4.0 + "@codemirror/view": ^6.27.0 + "@lezer/common": ^1.1.0 + checksum: 507ae0cc7f3a7bd869bca0de7e942ecb2bc0bd95a42484e5b06835ebf8caf7626c39d2bea26cefab99d07ab83ba5934afd2d07ce00dac4190aca014523f3c97e languageName: node linkType: hard -"@esbuild/win32-ia32@npm:0.23.1": - version: 0.23.1 - resolution: "@esbuild/win32-ia32@npm:0.23.1" - conditions: os=win32 & cpu=ia32 +"@codemirror/language@npm:^6.0.0": + version: 6.10.7 + resolution: "@codemirror/language@npm:6.10.7" + dependencies: + "@codemirror/state": ^6.0.0 + "@codemirror/view": ^6.23.0 + "@lezer/common": ^1.1.0 + "@lezer/highlight": ^1.0.0 + "@lezer/lr": ^1.0.0 + style-mod: ^4.0.0 + checksum: c9b71e2df8559bc677edae293a825a0dd196c98d49a6e20a98cc6bea51a01c67d268b07b5a761d7ac15b1d65415e17af1f644d5629ab4207268804e71cd48d7c languageName: node linkType: hard -"@esbuild/win32-ia32@npm:0.24.0": - version: 0.24.0 - resolution: "@esbuild/win32-ia32@npm:0.24.0" - conditions: os=win32 & cpu=ia32 +"@codemirror/legacy-modes@npm:^6.1.0": + version: 6.4.2 + resolution: "@codemirror/legacy-modes@npm:6.4.2" + dependencies: + "@codemirror/language": ^6.0.0 + checksum: fe55df97efe980a573ff5572f480eae323d7652a4a61435c654a90142def7102218023590112de7cd826c495ecaadae68a89fb5e5d4323d207af267bcce1d0c1 languageName: node linkType: hard -"@esbuild/win32-x64@npm:0.16.17": - version: 0.16.17 - resolution: "@esbuild/win32-x64@npm:0.16.17" - conditions: os=win32 & cpu=x64 +"@codemirror/lint@npm:^6.0.0": + version: 6.8.4 + resolution: "@codemirror/lint@npm:6.8.4" + dependencies: + "@codemirror/state": ^6.0.0 + "@codemirror/view": ^6.35.0 + crelt: ^1.0.5 + checksum: 640e3dd44eb167d952eb5c5b8518919ba46e164aa3471776342f7f9361e676b4627a76a9f01d51b22127b97413f2bc9b8c60299d8dfdd5fc8ad0225d42de7669 languageName: node linkType: hard -"@esbuild/win32-x64@npm:0.21.5": - version: 0.21.5 - resolution: "@esbuild/win32-x64@npm:0.21.5" - conditions: os=win32 & cpu=x64 +"@codemirror/search@npm:^6.0.0": + version: 6.5.8 + resolution: "@codemirror/search@npm:6.5.8" + dependencies: + "@codemirror/state": ^6.0.0 + "@codemirror/view": ^6.0.0 + crelt: ^1.0.5 + checksum: 0f9633037492a7b647b606c30255ea42c4327319e643be7ea3aa2913ed8e4aa662589f457e376636521c7d4d1215fae0e8939f127db9c0790b19ae3b654c3bc4 languageName: node linkType: hard -"@esbuild/win32-x64@npm:0.23.1": - version: 0.23.1 - resolution: "@esbuild/win32-x64@npm:0.23.1" - conditions: os=win32 & cpu=x64 +"@codemirror/state@npm:^6.0.0, @codemirror/state@npm:^6.1.1, @codemirror/state@npm:^6.4.0, @codemirror/state@npm:^6.5.0": + version: 6.5.0 + resolution: "@codemirror/state@npm:6.5.0" + dependencies: + "@marijn/find-cluster-break": ^1.0.0 + checksum: f7fbed072cc67bf250f7d231668a00b988748cacaaa2ce3ea74ff13c7c392db76000e7d517933521cc6ad9dc3651c7b6d33accab3e3d4b9816cd3c5714661a84 languageName: node linkType: hard -"@esbuild/win32-x64@npm:0.24.0": - version: 0.24.0 - resolution: "@esbuild/win32-x64@npm:0.24.0" - conditions: os=win32 & cpu=x64 +"@codemirror/theme-one-dark@npm:^6.0.0": + version: 6.1.2 + resolution: "@codemirror/theme-one-dark@npm:6.1.2" + dependencies: + "@codemirror/language": ^6.0.0 + "@codemirror/state": ^6.0.0 + "@codemirror/view": ^6.0.0 + "@lezer/highlight": ^1.0.0 + checksum: 29bc09f79534115f62658caf3d0db527fe347d058b69a8c7f580ae636827377aadd0606fd0d83dbab8d6f3b0a5df53d3253c619341b5fb93d2c8291a8efb9556 languageName: node linkType: hard -"@eslint-community/eslint-utils@npm:^4.2.0, @eslint-community/eslint-utils@npm:^4.4.0": - version: 4.4.1 - resolution: "@eslint-community/eslint-utils@npm:4.4.1" +"@codemirror/view@npm:^6.0.0, @codemirror/view@npm:^6.17.0, @codemirror/view@npm:^6.23.0, @codemirror/view@npm:^6.27.0, @codemirror/view@npm:^6.35.0": + version: 6.36.0 + resolution: "@codemirror/view@npm:6.36.0" dependencies: - eslint-visitor-keys: ^3.4.3 - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 - checksum: a7ffc838eb6a9ef594cda348458ccf38f34439ac77dc090fa1c120024bcd4eb911dfd74d5ef44d42063e7949fa7c5123ce714a015c4abb917d4124be1bd32bfe + "@codemirror/state": ^6.5.0 + style-mod: ^4.1.0 + w3c-keyname: ^2.2.4 + checksum: 646ac34bbb2a29a6018e611de898e17ae8634bb63509463751114699316e561e803ede6ae70a930e5b9d4953f333b52b7853480c8776c77e685a012b00bd06fe languageName: node linkType: hard -"@eslint-community/regexpp@npm:^4.5.1, @eslint-community/regexpp@npm:^4.6.1": - version: 4.12.1 - resolution: "@eslint-community/regexpp@npm:4.12.1" - checksum: 0d628680e204bc316d545b4993d3658427ca404ae646ce541fcc65306b8c712c340e5e573e30fb9f85f4855c0c5f6dca9868931f2fcced06417fbe1a0c6cd2d6 +"@colors/colors@npm:1.6.0, @colors/colors@npm:^1.6.0": + version: 1.6.0 + resolution: "@colors/colors@npm:1.6.0" + checksum: aa209963e0c3218e80a4a20553ba8c0fbb6fa13140540b4e5f97923790be06801fc90172c1114fc8b7e888b3d012b67298cde6b9e81521361becfaee400c662f languageName: node linkType: hard -"@eslint/eslintrc@npm:^2.1.4": - version: 2.1.4 - resolution: "@eslint/eslintrc@npm:2.1.4" +"@cspotcode/source-map-support@npm:^0.8.0": + version: 0.8.1 + resolution: "@cspotcode/source-map-support@npm:0.8.1" dependencies: - ajv: ^6.12.4 - debug: ^4.3.2 - espree: ^9.6.0 - globals: ^13.19.0 - ignore: ^5.2.0 - import-fresh: ^3.2.1 - js-yaml: ^4.1.0 - minimatch: ^3.1.2 - strip-json-comments: ^3.1.1 - checksum: 10957c7592b20ca0089262d8c2a8accbad14b4f6507e35416c32ee6b4dbf9cad67dfb77096bbd405405e9ada2b107f3797fe94362e1c55e0b09d6e90dd149127 + "@jridgewell/trace-mapping": 0.3.9 + checksum: 5718f267085ed8edb3e7ef210137241775e607ee18b77d95aa5bd7514f47f5019aa2d82d96b3bf342ef7aa890a346fa1044532ff7cc3009e7d24fce3ce6200fa languageName: node linkType: hard -"@eslint/js@npm:8.57.1": - version: 8.57.1 - resolution: "@eslint/js@npm:8.57.1" - checksum: 2afb77454c06e8316793d2e8e79a0154854d35e6782a1217da274ca60b5044d2c69d6091155234ed0551a1e408f86f09dd4ece02752c59568fa403e60611e880 +"@dabh/diagnostics@npm:^2.0.2": + version: 2.0.3 + resolution: "@dabh/diagnostics@npm:2.0.3" + dependencies: + colorspace: 1.1.x + enabled: 2.0.x + kuler: ^2.0.0 + checksum: 4879600c55c8315a0fb85fbb19057bad1adc08f0a080a8cb4e2b63f723c379bfc4283b68123a2b078d367b327dd8df12fcb27464efe791addc0a48b9df6d79a1 languageName: node linkType: hard -"@fastify/busboy@npm:^2.0.0": - version: 2.1.1 - resolution: "@fastify/busboy@npm:2.1.1" - checksum: 42c32ef75e906c9a4809c1e1930a5ca6d4ddc8d138e1a8c8ba5ea07f997db32210617d23b2e4a85fe376316a41a1a0439fc6ff2dedf5126d96f45a9d80754fb2 +"@date-io/core@npm:1.x, @date-io/core@npm:^1.3.13": + version: 1.3.13 + resolution: "@date-io/core@npm:1.3.13" + checksum: 5a9e9d1de20f0346a3c7d2d5946190caef4bfb0b64d82ba1f4c566657a9192667c94ebe7f438d11d4286d9c190974daad4fb2159294225cd8af4d9a140239879 languageName: node linkType: hard -"@gar/promisify@npm:^1.1.3": - version: 1.1.3 - resolution: "@gar/promisify@npm:1.1.3" - checksum: 4059f790e2d07bf3c3ff3e0fec0daa8144fe35c1f6e0111c9921bd32106adaa97a4ab096ad7dab1e28ee6a9060083c4d1a4ada42a7f5f3f7a96b8812e2b757c1 +"@date-io/date-fns@npm:^1.3.13": + version: 1.3.13 + resolution: "@date-io/date-fns@npm:1.3.13" + dependencies: + "@date-io/core": ^1.3.13 + peerDependencies: + date-fns: ^2.0.0 + checksum: 0026c0e538ea4add57a11936ff6bdb07e99f25275f8bb28c4702bbb7e82c3a41b3e8124132aa719180d462c01a26a3b4801e41b7349cdb73813749d4bf5e8fbd languageName: node linkType: hard -"@google-cloud/paginator@npm:^5.0.0": - version: 5.0.2 - resolution: "@google-cloud/paginator@npm:5.0.2" +"@davidzemon/passport-okta-oauth@npm:^0.0.5": + version: 0.0.5 + resolution: "@davidzemon/passport-okta-oauth@npm:0.0.5" dependencies: - arrify: ^2.0.0 - extend: ^3.0.2 - checksum: eeb4a387807270ba9f69f22d7439d60c5bd6663573c2da9ea7d998c373d77671d77450b87f0f229c28418df654af4064e70554fa4dcde7edb3c0f5c05f208246 + "@types/passport-oauth2": ^1.4.11 + passport-oauth2: ^1.6.1 + pkginfo: ^0.4.1 + uid2: ^1.0.0 + checksum: 0bd7c33ffd34a7fed4c6a43704792817b8ea6d0783060c32a55619d50b05c79db6f0a8e23b15327a4c7ce0cd8ea2d7486f320eebae3d4ca73e36baa415802ec4 languageName: node linkType: hard -"@google-cloud/projectify@npm:^4.0.0": - version: 4.0.0 - resolution: "@google-cloud/projectify@npm:4.0.0" - checksum: 973d28414ae200433333a3c315aebb881ced42ea4afe6f3f8520d2fecded75e76c913f5189fea8fb29ce6ca36117c4f44001b3c503eecdd3ac7f02597a98354a +"@emotion/babel-plugin@npm:^11.13.5": + version: 11.13.5 + resolution: "@emotion/babel-plugin@npm:11.13.5" + dependencies: + "@babel/helper-module-imports": ^7.16.7 + "@babel/runtime": ^7.18.3 + "@emotion/hash": ^0.9.2 + "@emotion/memoize": ^0.9.0 + "@emotion/serialize": ^1.3.3 + babel-plugin-macros: ^3.1.0 + convert-source-map: ^1.5.0 + escape-string-regexp: ^4.0.0 + find-root: ^1.1.0 + source-map: ^0.5.7 + stylis: 4.2.0 + checksum: c41df7e6c19520e76d1939f884be878bf88b5ba00bd3de9d05c5b6c5baa5051686ab124d7317a0645de1b017b574d8139ae1d6390ec267fbe8e85a5252afb542 languageName: node linkType: hard -"@google-cloud/promisify@npm:^4.0.0": - version: 4.0.0 - resolution: "@google-cloud/promisify@npm:4.0.0" - checksum: edd189398c5ed5b7b64a373177d77c87d076a248c31b8ae878bb91e2411d89860108bcb948c349f32628973a823bd131beb53ec008fd613a8cb466ef1d89de49 +"@emotion/cache@npm:^11.13.5, @emotion/cache@npm:^11.14.0": + version: 11.14.0 + resolution: "@emotion/cache@npm:11.14.0" + dependencies: + "@emotion/memoize": ^0.9.0 + "@emotion/sheet": ^1.4.0 + "@emotion/utils": ^1.4.2 + "@emotion/weak-memoize": ^0.4.0 + stylis: 4.2.0 + checksum: 0a81591541ea43bc7851742e6444b7800d72e98006f94e775ae6ea0806662d14e0a86ff940f5f19d33b4bb2c427c882aa65d417e7322a6e0d5f20fe65ed920c9 languageName: node linkType: hard -"@google-cloud/storage@npm:^7.0.0": - version: 7.13.0 - resolution: "@google-cloud/storage@npm:7.13.0" +"@emotion/hash@npm:^0.8.0": + version: 0.8.0 + resolution: "@emotion/hash@npm:0.8.0" + checksum: 4b35d88a97e67275c1d990c96d3b0450451d089d1508619488fc0acb882cb1ac91e93246d471346ebd1b5402215941ef4162efe5b51534859b39d8b3a0e3ffaa + languageName: node + linkType: hard + +"@emotion/hash@npm:^0.9.2": + version: 0.9.2 + resolution: "@emotion/hash@npm:0.9.2" + checksum: 379bde2830ccb0328c2617ec009642321c0e009a46aa383dfbe75b679c6aea977ca698c832d225a893901f29d7b3eef0e38cf341f560f6b2b56f1ff23c172387 + languageName: node + linkType: hard + +"@emotion/is-prop-valid@npm:^0.8.2": + version: 0.8.8 + resolution: "@emotion/is-prop-valid@npm:0.8.8" dependencies: - "@google-cloud/paginator": ^5.0.0 - "@google-cloud/projectify": ^4.0.0 - "@google-cloud/promisify": ^4.0.0 - abort-controller: ^3.0.0 - async-retry: ^1.3.3 - duplexify: ^4.1.3 - fast-xml-parser: ^4.4.1 - gaxios: ^6.0.2 - google-auth-library: ^9.6.3 - html-entities: ^2.5.2 - mime: ^3.0.0 - p-limit: ^3.0.1 - retry-request: ^7.0.0 - teeny-request: ^9.0.0 - uuid: ^8.0.0 - checksum: b5e61b3123f2924aae17f3b1e9aa97092e999f2097c00d90d85329212219cd6b6a63a65fd84d228791b534e4747e96d430007c4a507b37f3e1d6e42a98d4e7e2 + "@emotion/memoize": 0.7.4 + checksum: bb7ec6d48c572c540e24e47cc94fc2f8dec2d6a342ae97bc9c8b6388d9b8d283862672172a1bb62d335c02662afe6291e10c71e9b8642664a8b43416cdceffac languageName: node linkType: hard -"@humanwhocodes/config-array@npm:^0.13.0": - version: 0.13.0 - resolution: "@humanwhocodes/config-array@npm:0.13.0" +"@emotion/is-prop-valid@npm:^1.3.0": + version: 1.3.1 + resolution: "@emotion/is-prop-valid@npm:1.3.1" dependencies: - "@humanwhocodes/object-schema": ^2.0.3 - debug: ^4.3.1 - minimatch: ^3.0.5 - checksum: eae69ff9134025dd2924f0b430eb324981494be26f0fddd267a33c28711c4db643242cf9fddf7dadb9d16c96b54b2d2c073e60a56477df86e0173149313bd5d6 + "@emotion/memoize": ^0.9.0 + checksum: fe6549d54f389e1a17cb02d832af7ee85fb6ea126fc18d02ca47216e8ff19332c1983f4a0ba68602cfcd3b325ffd4ebf0b2d0c6270f1e7e6fe3fca4ba7741e1a languageName: node linkType: hard -"@humanwhocodes/module-importer@npm:^1.0.1": - version: 1.0.1 - resolution: "@humanwhocodes/module-importer@npm:1.0.1" - checksum: 0fd22007db8034a2cdf2c764b140d37d9020bbfce8a49d3ec5c05290e77d4b0263b1b972b752df8c89e5eaa94073408f2b7d977aed131faf6cf396ebb5d7fb61 +"@emotion/memoize@npm:0.7.4": + version: 0.7.4 + resolution: "@emotion/memoize@npm:0.7.4" + checksum: 4e3920d4ec95995657a37beb43d3f4b7d89fed6caa2b173a4c04d10482d089d5c3ea50bbc96618d918b020f26ed6e9c4026bbd45433566576c1f7b056c3271dc languageName: node linkType: hard -"@humanwhocodes/object-schema@npm:^2.0.3": - version: 2.0.3 - resolution: "@humanwhocodes/object-schema@npm:2.0.3" - checksum: d3b78f6c5831888c6ecc899df0d03bcc25d46f3ad26a11d7ea52944dc36a35ef543fad965322174238d677a43d5c694434f6607532cff7077062513ad7022631 +"@emotion/memoize@npm:^0.9.0": + version: 0.9.0 + resolution: "@emotion/memoize@npm:0.9.0" + checksum: 038132359397348e378c593a773b1148cd0cf0a2285ffd067a0f63447b945f5278860d9de718f906a74c7c940ba1783ac2ca18f1c06a307b01cc0e3944e783b1 languageName: node linkType: hard -"@ianvs/prettier-plugin-sort-imports@npm:^4.3.1": - version: 4.3.1 - resolution: "@ianvs/prettier-plugin-sort-imports@npm:4.3.1" +"@emotion/react@npm:^11.10.5": + version: 11.14.0 + resolution: "@emotion/react@npm:11.14.0" dependencies: - "@babel/core": ^7.24.0 - "@babel/generator": ^7.23.6 - "@babel/parser": ^7.24.0 - "@babel/traverse": ^7.24.0 - "@babel/types": ^7.24.0 - semver: ^7.5.2 + "@babel/runtime": ^7.18.3 + "@emotion/babel-plugin": ^11.13.5 + "@emotion/cache": ^11.14.0 + "@emotion/serialize": ^1.3.3 + "@emotion/use-insertion-effect-with-fallbacks": ^1.2.0 + "@emotion/utils": ^1.4.2 + "@emotion/weak-memoize": ^0.4.0 + hoist-non-react-statics: ^3.3.1 peerDependencies: - "@vue/compiler-sfc": 2.7.x || 3.x - prettier: 2 || 3 + react: ">=16.8.0" peerDependenciesMeta: - "@vue/compiler-sfc": + "@types/react": optional: true - checksum: 50af027d8b182893f247efa4c197259919c4796bea216b2a2323d0ced327c9f22785d7f8866b084566491fe7943640bb75457a724957bda92ee4c633fb2be9e6 + checksum: 3cf023b11d132b56168713764d6fced8e5a1f0687dfe0caa2782dfd428c8f9e30f9826a919965a311d87b523cd196722aaf75919cd0f6bd0fd57f8a6a0281500 languageName: node linkType: hard -"@internal/kiali@workspace:.": - version: 0.0.0-use.local - resolution: "@internal/kiali@workspace:." +"@emotion/serialize@npm:^1.3.3": + version: 1.3.3 + resolution: "@emotion/serialize@npm:1.3.3" dependencies: - "@backstage/cli": ^0.28.0 - "@backstage/e2e-test-utils": ^0.1.1 - "@backstage/repo-tools": ^0.10.0 - "@changesets/cli": ^2.27.1 - "@ianvs/prettier-plugin-sort-imports": ^4.3.1 - "@spotify/prettier-config": ^12.0.0 - knip: ^5.27.4 - node-gyp: ^9.0.0 - prettier: ^2.3.2 - typescript: ~5.3.0 - languageName: unknown - linkType: soft - -"@ioredis/commands@npm:^1.1.1": - version: 1.2.0 - resolution: "@ioredis/commands@npm:1.2.0" - checksum: 9b20225ba36ef3e5caf69b3c0720597c3016cc9b1e157f519ea388f621dd9037177f84cfe7e25c4c32dad7dd90c70ff9123cd411f747e053cf292193c9c461e2 + "@emotion/hash": ^0.9.2 + "@emotion/memoize": ^0.9.0 + "@emotion/unitless": ^0.10.0 + "@emotion/utils": ^1.4.2 + csstype: ^3.0.2 + checksum: 510331233767ae4e09e925287ca2c7269b320fa1d737ea86db5b3c861a734483ea832394c0c1fe5b21468fe335624a75e72818831d303ba38125f54f44ba02e7 languageName: node linkType: hard -"@isaacs/cliui@npm:^8.0.2": - version: 8.0.2 - resolution: "@isaacs/cliui@npm:8.0.2" - dependencies: - string-width: ^5.1.2 - string-width-cjs: "npm:string-width@^4.2.0" - strip-ansi: ^7.0.1 - strip-ansi-cjs: "npm:strip-ansi@^6.0.1" - wrap-ansi: ^8.1.0 - wrap-ansi-cjs: "npm:wrap-ansi@^7.0.0" - checksum: 4a473b9b32a7d4d3cfb7a614226e555091ff0c5a29a1734c28c72a182c2f6699b26fc6b5c2131dfd841e86b185aea714c72201d7c98c2fba5f17709333a67aeb +"@emotion/sheet@npm:^1.4.0": + version: 1.4.0 + resolution: "@emotion/sheet@npm:1.4.0" + checksum: eeb1212e3289db8e083e72e7e401cd6d1a84deece87e9ce184f7b96b9b5dbd6f070a89057255a6ff14d9865c3ce31f27c39248a053e4cdd875540359042586b4 languageName: node linkType: hard -"@istanbuljs/load-nyc-config@npm:^1.0.0": - version: 1.1.0 - resolution: "@istanbuljs/load-nyc-config@npm:1.1.0" +"@emotion/styled@npm:^11.10.5": + version: 11.14.0 + resolution: "@emotion/styled@npm:11.14.0" dependencies: - camelcase: ^5.3.1 - find-up: ^4.1.0 - get-package-type: ^0.1.0 - js-yaml: ^3.13.1 - resolve-from: ^5.0.0 - checksum: d578da5e2e804d5c93228450a1380e1a3c691de4953acc162f387b717258512a3e07b83510a936d9fab03eac90817473917e24f5d16297af3867f59328d58568 + "@babel/runtime": ^7.18.3 + "@emotion/babel-plugin": ^11.13.5 + "@emotion/is-prop-valid": ^1.3.0 + "@emotion/serialize": ^1.3.3 + "@emotion/use-insertion-effect-with-fallbacks": ^1.2.0 + "@emotion/utils": ^1.4.2 + peerDependencies: + "@emotion/react": ^11.0.0-rc.0 + react: ">=16.8.0" + peerDependenciesMeta: + "@types/react": + optional: true + checksum: 9c1b842e942e69fb6037d1ab161046d2bcfeff95fd2ccfdab30acaaf6b89dc07b14bb00f8cc8ec14df11e6746c8e4e1d781bc54d10bd739aab44966ded64d4fb languageName: node linkType: hard -"@istanbuljs/schema@npm:^0.1.2, @istanbuljs/schema@npm:^0.1.3": - version: 0.1.3 - resolution: "@istanbuljs/schema@npm:0.1.3" - checksum: 5282759d961d61350f33d9118d16bcaed914ebf8061a52f4fa474b2cb08720c9c81d165e13b82f2e5a8a212cc5af482f0c6fc1ac27b9e067e5394c9a6ed186c9 +"@emotion/unitless@npm:^0.10.0": + version: 0.10.0 + resolution: "@emotion/unitless@npm:0.10.0" + checksum: d79346df31a933e6d33518e92636afeb603ce043f3857d0a39a2ac78a09ef0be8bedff40130930cb25df1beeee12d96ee38613963886fa377c681a89970b787c languageName: node linkType: hard -"@janus-idp/cli@npm:1.16.0": - version: 1.16.0 - resolution: "@janus-idp/cli@npm:1.16.0" - dependencies: - "@backstage/cli-common": ^0.1.14 - "@backstage/cli-node": ^0.2.8 - "@backstage/config": ^1.2.0 - "@backstage/config-loader": ^1.9.1 - "@backstage/errors": ^1.2.4 - "@backstage/eslint-plugin": ^0.1.9 - "@backstage/types": ^1.1.1 - "@manypkg/get-packages": ^1.1.3 - "@openshift/dynamic-plugin-sdk-webpack": ^3.0.0 - "@pmmmwh/react-refresh-webpack-plugin": ^0.5.7 - "@rollup/plugin-commonjs": ^25.0.4 - "@rollup/plugin-json": ^6.0.0 - "@rollup/plugin-node-resolve": ^15.2.1 - "@rollup/plugin-yaml": ^4.0.0 - "@svgr/rollup": ^8.1.0 - "@svgr/webpack": ^6.5.1 - "@yarnpkg/lockfile": ^1.1.0 - "@yarnpkg/parsers": ^3.0.0-rc.4 - bfj: ^8.0.0 - chalk: ^4.0.0 - chokidar: ^3.3.1 - codeowners: ^5.1.1 - commander: ^9.1.0 - css-loader: ^6.5.1 - esbuild: ^0.23.0 - esbuild-loader: ^2.18.0 - eslint: ^8.49.0 - eslint-config-prettier: ^8.10.0 - eslint-webpack-plugin: ^3.2.0 - fork-ts-checker-webpack-plugin: ^7.0.0-alpha.8 - fs-extra: ^10.1.0 - gitconfiglocal: 2.1.0 - handlebars: ^4.7.7 - html-webpack-plugin: ^5.3.1 - is-native-module: ^1.1.3 - lodash: ^4.17.21 - mini-css-extract-plugin: ^2.4.2 - node-libs-browser: ^2.2.1 - npm-packlist: ^5.0.0 - ora: ^5.3.0 - postcss: ^8.2.13 - react-dev-utils: ^12.0.0-next.60 - react-refresh: ^0.14.0 - recursive-readdir: ^2.2.2 - rollup: ^2.78.0 - rollup-plugin-dts: ^4.0.1 - rollup-plugin-esbuild: ^4.7.2 - rollup-plugin-postcss: ^4.0.0 - rollup-pluginutils: ^2.8.2 - semver: ^7.5.4 - style-loader: ^3.3.1 - swc-loader: ^0.2.3 - typescript-json-schema: ^0.64.0 - webpack: ^5.89.0 - webpack-dev-server: ^4.15.1 - yml-loader: ^2.1.0 - yn: ^4.0.0 +"@emotion/use-insertion-effect-with-fallbacks@npm:^1.2.0": + version: 1.2.0 + resolution: "@emotion/use-insertion-effect-with-fallbacks@npm:1.2.0" peerDependencies: - "@microsoft/api-extractor": ^7.21.2 - peerDependenciesMeta: - "@microsoft/api-extractor": - optional: true - bin: - janus-cli: bin/janus-cli - checksum: 7b0a40a32a9334fa4fda248710fa60b47ef5e768c13b0c1f267aab0e556760c56619b9ad8708e19ed0fc8cfa7bc8b53b37bac35a6aed2627e77bebbd93db5cbb + react: ">=16.8.0" + checksum: 8ff6aec7f2924526ff8c8f8f93d4b8236376e2e12c435314a18c9a373016e24dfdf984e82bbc83712b8e90ff4783cd765eb39fc7050d1a43245e5728740ddd71 languageName: node linkType: hard -"@jest/console@npm:^29.7.0": - version: 29.7.0 - resolution: "@jest/console@npm:29.7.0" - dependencies: - "@jest/types": ^29.6.3 - "@types/node": "*" - chalk: ^4.0.0 - jest-message-util: ^29.7.0 - jest-util: ^29.7.0 - slash: ^3.0.0 - checksum: 0e3624e32c5a8e7361e889db70b170876401b7d70f509a2538c31d5cd50deb0c1ae4b92dc63fe18a0902e0a48c590c21d53787a0df41a52b34fa7cab96c384d6 +"@emotion/utils@npm:^1.4.2": + version: 1.4.2 + resolution: "@emotion/utils@npm:1.4.2" + checksum: 04cf76849c6401205c058b82689fd0ec5bf501aed6974880fe9681a1d61543efb97e848f4c38664ac4a9068c7ad2d1cb84f73bde6cf95f1208aa3c28e0190321 languageName: node linkType: hard -"@jest/core@npm:^29.7.0": - version: 29.7.0 - resolution: "@jest/core@npm:29.7.0" - dependencies: - "@jest/console": ^29.7.0 - "@jest/reporters": ^29.7.0 - "@jest/test-result": ^29.7.0 - "@jest/transform": ^29.7.0 - "@jest/types": ^29.6.3 - "@types/node": "*" - ansi-escapes: ^4.2.1 - chalk: ^4.0.0 - ci-info: ^3.2.0 - exit: ^0.1.2 - graceful-fs: ^4.2.9 - jest-changed-files: ^29.7.0 - jest-config: ^29.7.0 - jest-haste-map: ^29.7.0 - jest-message-util: ^29.7.0 - jest-regex-util: ^29.6.3 - jest-resolve: ^29.7.0 - jest-resolve-dependencies: ^29.7.0 - jest-runner: ^29.7.0 - jest-runtime: ^29.7.0 - jest-snapshot: ^29.7.0 - jest-util: ^29.7.0 - jest-validate: ^29.7.0 - jest-watcher: ^29.7.0 - micromatch: ^4.0.4 - pretty-format: ^29.7.0 - slash: ^3.0.0 - strip-ansi: ^6.0.0 - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - checksum: af759c9781cfc914553320446ce4e47775ae42779e73621c438feb1e4231a5d4862f84b1d8565926f2d1aab29b3ec3dcfdc84db28608bdf5f29867124ebcfc0d +"@emotion/weak-memoize@npm:^0.4.0": + version: 0.4.0 + resolution: "@emotion/weak-memoize@npm:0.4.0" + checksum: db5da0e89bd752c78b6bd65a1e56231f0abebe2f71c0bd8fc47dff96408f7065b02e214080f99924f6a3bfe7ee15afc48dad999d76df86b39b16e513f7a94f52 languageName: node linkType: hard -"@jest/create-cache-key-function@npm:^29.7.0": - version: 29.7.0 - resolution: "@jest/create-cache-key-function@npm:29.7.0" - dependencies: - "@jest/types": ^29.6.3 - checksum: 681bc761fa1d6fa3dd77578d444f97f28296ea80755e90e46d1c8fa68661b9e67f54dd38b988742db636d26cf160450dc6011892cec98b3a7ceb58cad8ff3aae +"@esbuild/aix-ppc64@npm:0.21.5": + version: 0.21.5 + resolution: "@esbuild/aix-ppc64@npm:0.21.5" + conditions: os=aix & cpu=ppc64 languageName: node linkType: hard -"@jest/environment@npm:^29.7.0": - version: 29.7.0 - resolution: "@jest/environment@npm:29.7.0" - dependencies: - "@jest/fake-timers": ^29.7.0 - "@jest/types": ^29.6.3 - "@types/node": "*" - jest-mock: ^29.7.0 - checksum: 6fb398143b2543d4b9b8d1c6dbce83fa5247f84f550330604be744e24c2bd2178bb893657d62d1b97cf2f24baf85c450223f8237cccb71192c36a38ea2272934 +"@esbuild/aix-ppc64@npm:0.23.1": + version: 0.23.1 + resolution: "@esbuild/aix-ppc64@npm:0.23.1" + conditions: os=aix & cpu=ppc64 languageName: node linkType: hard -"@jest/expect-utils@npm:^29.7.0": - version: 29.7.0 - resolution: "@jest/expect-utils@npm:29.7.0" - dependencies: - jest-get-type: ^29.6.3 - checksum: 75eb177f3d00b6331bcaa057e07c0ccb0733a1d0a1943e1d8db346779039cb7f103789f16e502f888a3096fb58c2300c38d1f3748b36a7fa762eb6f6d1b160ed +"@esbuild/aix-ppc64@npm:0.24.0": + version: 0.24.0 + resolution: "@esbuild/aix-ppc64@npm:0.24.0" + conditions: os=aix & cpu=ppc64 languageName: node linkType: hard -"@jest/expect@npm:^29.7.0": - version: 29.7.0 - resolution: "@jest/expect@npm:29.7.0" - dependencies: - expect: ^29.7.0 - jest-snapshot: ^29.7.0 - checksum: a01cb85fd9401bab3370618f4b9013b90c93536562222d920e702a0b575d239d74cecfe98010aaec7ad464f67cf534a353d92d181646a4b792acaa7e912ae55e +"@esbuild/android-arm64@npm:0.16.17": + version: 0.16.17 + resolution: "@esbuild/android-arm64@npm:0.16.17" + conditions: os=android & cpu=arm64 languageName: node linkType: hard -"@jest/fake-timers@npm:^29.7.0": - version: 29.7.0 - resolution: "@jest/fake-timers@npm:29.7.0" - dependencies: - "@jest/types": ^29.6.3 - "@sinonjs/fake-timers": ^10.0.2 - "@types/node": "*" - jest-message-util: ^29.7.0 - jest-mock: ^29.7.0 - jest-util: ^29.7.0 - checksum: caf2bbd11f71c9241b458d1b5a66cbe95debc5a15d96442444b5d5c7ba774f523c76627c6931cca5e10e76f0d08761f6f1f01a608898f4751a0eee54fc3d8d00 +"@esbuild/android-arm64@npm:0.21.5": + version: 0.21.5 + resolution: "@esbuild/android-arm64@npm:0.21.5" + conditions: os=android & cpu=arm64 languageName: node linkType: hard -"@jest/globals@npm:^29.7.0": - version: 29.7.0 - resolution: "@jest/globals@npm:29.7.0" - dependencies: - "@jest/environment": ^29.7.0 - "@jest/expect": ^29.7.0 - "@jest/types": ^29.6.3 - jest-mock: ^29.7.0 - checksum: 97dbb9459135693ad3a422e65ca1c250f03d82b2a77f6207e7fa0edd2c9d2015fbe4346f3dc9ebff1678b9d8da74754d4d440b7837497f8927059c0642a22123 +"@esbuild/android-arm64@npm:0.23.1": + version: 0.23.1 + resolution: "@esbuild/android-arm64@npm:0.23.1" + conditions: os=android & cpu=arm64 languageName: node linkType: hard -"@jest/reporters@npm:^29.7.0": - version: 29.7.0 - resolution: "@jest/reporters@npm:29.7.0" - dependencies: - "@bcoe/v8-coverage": ^0.2.3 - "@jest/console": ^29.7.0 - "@jest/test-result": ^29.7.0 - "@jest/transform": ^29.7.0 - "@jest/types": ^29.6.3 - "@jridgewell/trace-mapping": ^0.3.18 - "@types/node": "*" - chalk: ^4.0.0 - collect-v8-coverage: ^1.0.0 - exit: ^0.1.2 - glob: ^7.1.3 - graceful-fs: ^4.2.9 - istanbul-lib-coverage: ^3.0.0 - istanbul-lib-instrument: ^6.0.0 - istanbul-lib-report: ^3.0.0 - istanbul-lib-source-maps: ^4.0.0 - istanbul-reports: ^3.1.3 - jest-message-util: ^29.7.0 - jest-util: ^29.7.0 - jest-worker: ^29.7.0 - slash: ^3.0.0 - string-length: ^4.0.1 - strip-ansi: ^6.0.0 - v8-to-istanbul: ^9.0.1 - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - checksum: 7eadabd62cc344f629024b8a268ecc8367dba756152b761bdcb7b7e570a3864fc51b2a9810cd310d85e0a0173ef002ba4528d5ea0329fbf66ee2a3ada9c40455 +"@esbuild/android-arm64@npm:0.24.0": + version: 0.24.0 + resolution: "@esbuild/android-arm64@npm:0.24.0" + conditions: os=android & cpu=arm64 languageName: node linkType: hard -"@jest/schemas@npm:^29.6.3": - version: 29.6.3 - resolution: "@jest/schemas@npm:29.6.3" - dependencies: - "@sinclair/typebox": ^0.27.8 - checksum: 910040425f0fc93cd13e68c750b7885590b8839066dfa0cd78e7def07bbb708ad869381f725945d66f2284de5663bbecf63e8fdd856e2ae6e261ba30b1687e93 +"@esbuild/android-arm@npm:0.16.17": + version: 0.16.17 + resolution: "@esbuild/android-arm@npm:0.16.17" + conditions: os=android & cpu=arm languageName: node linkType: hard -"@jest/source-map@npm:^29.6.3": - version: 29.6.3 - resolution: "@jest/source-map@npm:29.6.3" - dependencies: - "@jridgewell/trace-mapping": ^0.3.18 - callsites: ^3.0.0 - graceful-fs: ^4.2.9 - checksum: bcc5a8697d471396c0003b0bfa09722c3cd879ad697eb9c431e6164e2ea7008238a01a07193dfe3cbb48b1d258eb7251f6efcea36f64e1ebc464ea3c03ae2deb +"@esbuild/android-arm@npm:0.21.5": + version: 0.21.5 + resolution: "@esbuild/android-arm@npm:0.21.5" + conditions: os=android & cpu=arm languageName: node linkType: hard -"@jest/test-result@npm:^29.7.0": - version: 29.7.0 - resolution: "@jest/test-result@npm:29.7.0" - dependencies: - "@jest/console": ^29.7.0 - "@jest/types": ^29.6.3 - "@types/istanbul-lib-coverage": ^2.0.0 - collect-v8-coverage: ^1.0.0 - checksum: 67b6317d526e335212e5da0e768e3b8ab8a53df110361b80761353ad23b6aea4432b7c5665bdeb87658ea373b90fb1afe02ed3611ef6c858c7fba377505057fa +"@esbuild/android-arm@npm:0.23.1": + version: 0.23.1 + resolution: "@esbuild/android-arm@npm:0.23.1" + conditions: os=android & cpu=arm languageName: node linkType: hard -"@jest/test-sequencer@npm:^29.7.0": - version: 29.7.0 - resolution: "@jest/test-sequencer@npm:29.7.0" - dependencies: - "@jest/test-result": ^29.7.0 - graceful-fs: ^4.2.9 - jest-haste-map: ^29.7.0 - slash: ^3.0.0 - checksum: 73f43599017946be85c0b6357993b038f875b796e2f0950487a82f4ebcb115fa12131932dd9904026b4ad8be131fe6e28bd8d0aa93b1563705185f9804bff8bd +"@esbuild/android-arm@npm:0.24.0": + version: 0.24.0 + resolution: "@esbuild/android-arm@npm:0.24.0" + conditions: os=android & cpu=arm languageName: node linkType: hard -"@jest/transform@npm:^29.7.0": - version: 29.7.0 - resolution: "@jest/transform@npm:29.7.0" - dependencies: - "@babel/core": ^7.11.6 - "@jest/types": ^29.6.3 - "@jridgewell/trace-mapping": ^0.3.18 - babel-plugin-istanbul: ^6.1.1 - chalk: ^4.0.0 - convert-source-map: ^2.0.0 - fast-json-stable-stringify: ^2.1.0 - graceful-fs: ^4.2.9 - jest-haste-map: ^29.7.0 - jest-regex-util: ^29.6.3 - jest-util: ^29.7.0 - micromatch: ^4.0.4 - pirates: ^4.0.4 - slash: ^3.0.0 - write-file-atomic: ^4.0.2 - checksum: 0f8ac9f413903b3cb6d240102db848f2a354f63971ab885833799a9964999dd51c388162106a807f810071f864302cdd8e3f0c241c29ce02d85a36f18f3f40ab +"@esbuild/android-x64@npm:0.16.17": + version: 0.16.17 + resolution: "@esbuild/android-x64@npm:0.16.17" + conditions: os=android & cpu=x64 languageName: node linkType: hard -"@jest/types@npm:^29.6.3": - version: 29.6.3 - resolution: "@jest/types@npm:29.6.3" - dependencies: - "@jest/schemas": ^29.6.3 - "@types/istanbul-lib-coverage": ^2.0.0 - "@types/istanbul-reports": ^3.0.0 - "@types/node": "*" - "@types/yargs": ^17.0.8 - chalk: ^4.0.0 - checksum: a0bcf15dbb0eca6bdd8ce61a3fb055349d40268622a7670a3b2eb3c3dbafe9eb26af59938366d520b86907b9505b0f9b29b85cec11579a9e580694b87cd90fcc +"@esbuild/android-x64@npm:0.21.5": + version: 0.21.5 + resolution: "@esbuild/android-x64@npm:0.21.5" + conditions: os=android & cpu=x64 languageName: node linkType: hard -"@jridgewell/gen-mapping@npm:^0.3.2, @jridgewell/gen-mapping@npm:^0.3.5": - version: 0.3.5 - resolution: "@jridgewell/gen-mapping@npm:0.3.5" - dependencies: - "@jridgewell/set-array": ^1.2.1 - "@jridgewell/sourcemap-codec": ^1.4.10 - "@jridgewell/trace-mapping": ^0.3.24 - checksum: ff7a1764ebd76a5e129c8890aa3e2f46045109dabde62b0b6c6a250152227647178ff2069ea234753a690d8f3c4ac8b5e7b267bbee272bffb7f3b0a370ab6e52 +"@esbuild/android-x64@npm:0.23.1": + version: 0.23.1 + resolution: "@esbuild/android-x64@npm:0.23.1" + conditions: os=android & cpu=x64 languageName: node linkType: hard -"@jridgewell/resolve-uri@npm:^3.0.3, @jridgewell/resolve-uri@npm:^3.1.0": - version: 3.1.2 - resolution: "@jridgewell/resolve-uri@npm:3.1.2" - checksum: 83b85f72c59d1c080b4cbec0fef84528963a1b5db34e4370fa4bd1e3ff64a0d80e0cee7369d11d73c704e0286fb2865b530acac7a871088fbe92b5edf1000870 +"@esbuild/android-x64@npm:0.24.0": + version: 0.24.0 + resolution: "@esbuild/android-x64@npm:0.24.0" + conditions: os=android & cpu=x64 languageName: node linkType: hard -"@jridgewell/set-array@npm:^1.2.1": - version: 1.2.1 - resolution: "@jridgewell/set-array@npm:1.2.1" - checksum: 832e513a85a588f8ed4f27d1279420d8547743cc37fcad5a5a76fc74bb895b013dfe614d0eed9cb860048e6546b798f8f2652020b4b2ba0561b05caa8c654b10 +"@esbuild/darwin-arm64@npm:0.16.17": + version: 0.16.17 + resolution: "@esbuild/darwin-arm64@npm:0.16.17" + conditions: os=darwin & cpu=arm64 languageName: node linkType: hard -"@jridgewell/source-map@npm:^0.3.3": - version: 0.3.6 - resolution: "@jridgewell/source-map@npm:0.3.6" - dependencies: - "@jridgewell/gen-mapping": ^0.3.5 - "@jridgewell/trace-mapping": ^0.3.25 - checksum: c9dc7d899397df95e3c9ec287b93c0b56f8e4453cd20743e2b9c8e779b1949bc3cccf6c01bb302779e46560eb45f62ea38d19fedd25370d814734268450a9f30 +"@esbuild/darwin-arm64@npm:0.21.5": + version: 0.21.5 + resolution: "@esbuild/darwin-arm64@npm:0.21.5" + conditions: os=darwin & cpu=arm64 languageName: node linkType: hard -"@jridgewell/sourcemap-codec@npm:^1.4.10, @jridgewell/sourcemap-codec@npm:^1.4.14, @jridgewell/sourcemap-codec@npm:^1.5.0": - version: 1.5.0 - resolution: "@jridgewell/sourcemap-codec@npm:1.5.0" - checksum: 05df4f2538b3b0f998ea4c1cd34574d0feba216fa5d4ccaef0187d12abf82eafe6021cec8b49f9bb4d90f2ba4582ccc581e72986a5fcf4176ae0cfeb04cf52ec +"@esbuild/darwin-arm64@npm:0.23.1": + version: 0.23.1 + resolution: "@esbuild/darwin-arm64@npm:0.23.1" + conditions: os=darwin & cpu=arm64 languageName: node linkType: hard -"@jridgewell/trace-mapping@npm:0.3.9": - version: 0.3.9 - resolution: "@jridgewell/trace-mapping@npm:0.3.9" - dependencies: - "@jridgewell/resolve-uri": ^3.0.3 - "@jridgewell/sourcemap-codec": ^1.4.10 - checksum: d89597752fd88d3f3480845691a05a44bd21faac18e2185b6f436c3b0fd0c5a859fbbd9aaa92050c4052caf325ad3e10e2e1d1b64327517471b7d51babc0ddef +"@esbuild/darwin-arm64@npm:0.24.0": + version: 0.24.0 + resolution: "@esbuild/darwin-arm64@npm:0.24.0" + conditions: os=darwin & cpu=arm64 languageName: node linkType: hard -"@jridgewell/trace-mapping@npm:^0.3.12, @jridgewell/trace-mapping@npm:^0.3.18, @jridgewell/trace-mapping@npm:^0.3.20, @jridgewell/trace-mapping@npm:^0.3.24, @jridgewell/trace-mapping@npm:^0.3.25": - version: 0.3.25 - resolution: "@jridgewell/trace-mapping@npm:0.3.25" - dependencies: - "@jridgewell/resolve-uri": ^3.1.0 - "@jridgewell/sourcemap-codec": ^1.4.14 - checksum: 9d3c40d225e139987b50c48988f8717a54a8c994d8a948ee42e1412e08988761d0754d7d10b803061cc3aebf35f92a5dbbab493bd0e1a9ef9e89a2130e83ba34 +"@esbuild/darwin-x64@npm:0.16.17": + version: 0.16.17 + resolution: "@esbuild/darwin-x64@npm:0.16.17" + conditions: os=darwin & cpu=x64 languageName: node linkType: hard -"@jsdevtools/ono@npm:^7.1.3": - version: 7.1.3 - resolution: "@jsdevtools/ono@npm:7.1.3" - checksum: 2297fcd472ba810bffe8519d2249171132844c7174f3a16634f9260761c8c78bc0428a4190b5b6d72d45673c13918ab9844d706c3ed4ef8f62ab11a2627a08ad +"@esbuild/darwin-x64@npm:0.21.5": + version: 0.21.5 + resolution: "@esbuild/darwin-x64@npm:0.21.5" + conditions: os=darwin & cpu=x64 languageName: node linkType: hard -"@jsep-plugin/regex@npm:^1.0.1": - version: 1.0.3 - resolution: "@jsep-plugin/regex@npm:1.0.3" - peerDependencies: - jsep: ^0.4.0||^1.0.0 - checksum: a57718ae5c86bd10ff5de51843a771b96a10a9c6b5c5f4e02aa5318257c3d5fdec96f8b389fcbe129c7a6ad6b0746d9a0fd934c949b80882230fbc14b548c922 +"@esbuild/darwin-x64@npm:0.23.1": + version: 0.23.1 + resolution: "@esbuild/darwin-x64@npm:0.23.1" + conditions: os=darwin & cpu=x64 languageName: node linkType: hard -"@jsep-plugin/ternary@npm:^1.0.2": - version: 1.1.3 - resolution: "@jsep-plugin/ternary@npm:1.1.3" - peerDependencies: - jsep: ^0.4.0||^1.0.0 - checksum: c05408b0302844723f98b90787425beb4e8ad14029df3d98e88b9d61343d81201a7f0bf3db5806dcf0378c7be69f5b4c9fcd04f055bda282c73f4d1b425e502a +"@esbuild/darwin-x64@npm:0.24.0": + version: 0.24.0 + resolution: "@esbuild/darwin-x64@npm:0.24.0" + conditions: os=darwin & cpu=x64 languageName: node linkType: hard -"@jsonjoy.com/base64@npm:^1.1.1": - version: 1.1.2 - resolution: "@jsonjoy.com/base64@npm:1.1.2" - peerDependencies: - tslib: 2 - checksum: 00dbf9cbc6ecb3af0e58288a305cc4ee3dfca9efa24443d98061756e8f6de4d6d2d3764bdfde07f2b03e6ce56db27c8a59b490bd134bf3d8122b4c6b394c7010 - languageName: node - linkType: hard +"@esbuild/freebsd-arm64@npm:0.16.17": + version: 0.16.17 + resolution: "@esbuild/freebsd-arm64@npm:0.16.17" + conditions: os=freebsd & cpu=arm64 + languageName: node + linkType: hard -"@jsonjoy.com/json-pack@npm:^1.0.3": - version: 1.1.0 - resolution: "@jsonjoy.com/json-pack@npm:1.1.0" - dependencies: - "@jsonjoy.com/base64": ^1.1.1 - "@jsonjoy.com/util": ^1.1.2 - hyperdyperid: ^1.2.0 - thingies: ^1.20.0 - peerDependencies: - tslib: 2 - checksum: 5c89a01814d5a7464639c3cbd4dbbcbf19165e9e6d6cc3cc985f8a7594fc2c5ac3a29e4f49f9ddf029979ec26ab980960a250db044173798509d0ea388c2ae26 +"@esbuild/freebsd-arm64@npm:0.21.5": + version: 0.21.5 + resolution: "@esbuild/freebsd-arm64@npm:0.21.5" + conditions: os=freebsd & cpu=arm64 languageName: node linkType: hard -"@jsonjoy.com/util@npm:^1.1.2, @jsonjoy.com/util@npm:^1.3.0": - version: 1.5.0 - resolution: "@jsonjoy.com/util@npm:1.5.0" - peerDependencies: - tslib: 2 - checksum: 62892928e1223798e3d910be8dde4fdceaddf2ebdd4bdc0c50495b8ee33503317adf7b5118cd8f5a63045e3f232d70e95fb0279828caf1ec392ffeeb7ea129b8 +"@esbuild/freebsd-arm64@npm:0.23.1": + version: 0.23.1 + resolution: "@esbuild/freebsd-arm64@npm:0.23.1" + conditions: os=freebsd & cpu=arm64 languageName: node linkType: hard -"@keyv/memcache@npm:^1.3.5": - version: 1.4.1 - resolution: "@keyv/memcache@npm:1.4.1" - dependencies: - json-buffer: ^3.0.1 - memjs: ^1.3.2 - checksum: bee66686af965aa3bdd78ccd7c67658b424d32578936e894d3aa42ff616ef653f8ecc439f4ea28fc51ed04a68502e445fc8ff836bd142b38509787712b6ec04d +"@esbuild/freebsd-arm64@npm:0.24.0": + version: 0.24.0 + resolution: "@esbuild/freebsd-arm64@npm:0.24.0" + conditions: os=freebsd & cpu=arm64 languageName: node linkType: hard -"@keyv/redis@npm:^2.5.3": - version: 2.8.5 - resolution: "@keyv/redis@npm:2.8.5" - dependencies: - ioredis: ^5.4.1 - checksum: 87ffec61d31fa9de128ba3e5a7b616535ddbdaa4d92cbc9e1a9fab143adf967135e9cca16e192e8f52cc1ba00ed2a7f10eca9944d7550385530dab95333e81ef +"@esbuild/freebsd-x64@npm:0.16.17": + version: 0.16.17 + resolution: "@esbuild/freebsd-x64@npm:0.16.17" + conditions: os=freebsd & cpu=x64 languageName: node linkType: hard -"@keyv/serialize@npm:*": - version: 1.0.1 - resolution: "@keyv/serialize@npm:1.0.1" - dependencies: - buffer: ^6.0.3 - checksum: ff3dd9a6246b17fca3d1b0aba312dea931059fdecc36027f4d8133e59dbb3554a0a516b1f3dfc7fb2b3ca7a3d6fa307804f299566ab214febd3fb9d0502eebed +"@esbuild/freebsd-x64@npm:0.21.5": + version: 0.21.5 + resolution: "@esbuild/freebsd-x64@npm:0.21.5" + conditions: os=freebsd & cpu=x64 languageName: node linkType: hard -"@kubernetes/client-node@npm:0.20.0": - version: 0.20.0 - resolution: "@kubernetes/client-node@npm:0.20.0" - dependencies: - "@types/js-yaml": ^4.0.1 - "@types/node": ^20.1.1 - "@types/request": ^2.47.1 - "@types/ws": ^8.5.3 - byline: ^5.0.0 - isomorphic-ws: ^5.0.0 - js-yaml: ^4.1.0 - jsonpath-plus: ^7.2.0 - openid-client: ^5.3.0 - request: ^2.88.0 - rfc4648: ^1.3.0 - stream-buffers: ^3.0.2 - tar: ^6.1.11 - tslib: ^2.4.1 - ws: ^8.11.0 - dependenciesMeta: - openid-client: - optional: true - checksum: c7c2ec9c597b5579ec452bcc13647feeaa3eaf93601afa5d9a4e06b5fe91d2cafa444a1da07b5330a7596f0e07e107d6abe4acabc5998f7bedf43cd0ab8bf343 +"@esbuild/freebsd-x64@npm:0.23.1": + version: 0.23.1 + resolution: "@esbuild/freebsd-x64@npm:0.23.1" + conditions: os=freebsd & cpu=x64 languageName: node linkType: hard -"@leichtgewicht/ip-codec@npm:^2.0.1": - version: 2.0.5 - resolution: "@leichtgewicht/ip-codec@npm:2.0.5" - checksum: 4fcd025d0a923cb6b87b631a83436a693b255779c583158bbeacde6b4dd75b94cc1eba1c9c188de5fc36c218d160524ea08bfe4ef03a056b00ff14126d66f881 +"@esbuild/freebsd-x64@npm:0.24.0": + version: 0.24.0 + resolution: "@esbuild/freebsd-x64@npm:0.24.0" + conditions: os=freebsd & cpu=x64 languageName: node linkType: hard -"@lukeed/csprng@npm:^1.0.0": - version: 1.1.0 - resolution: "@lukeed/csprng@npm:1.1.0" - checksum: 926f5f7fc629470ca9a8af355bfcd0271d34535f7be3890f69902432bddc3262029bb5dbe9025542cf6c9883d878692eef2815fc2f3ba5b92e9da1f9eba2e51b +"@esbuild/linux-arm64@npm:0.16.17": + version: 0.16.17 + resolution: "@esbuild/linux-arm64@npm:0.16.17" + conditions: os=linux & cpu=arm64 languageName: node linkType: hard -"@manypkg/find-root@npm:^1.1.0": - version: 1.1.0 - resolution: "@manypkg/find-root@npm:1.1.0" - dependencies: - "@babel/runtime": ^7.5.5 - "@types/node": ^12.7.1 - find-up: ^4.1.0 - fs-extra: ^8.1.0 - checksum: f0fd881a5a81a351cb6561cd24117e8ee9481bbf3b6d1c7d9d10bef1f4744ca2ba3d064713e83c0a0574416d1e5b4a4c6c414aad91913c4a1c6040d87283ac50 +"@esbuild/linux-arm64@npm:0.21.5": + version: 0.21.5 + resolution: "@esbuild/linux-arm64@npm:0.21.5" + conditions: os=linux & cpu=arm64 languageName: node linkType: hard -"@manypkg/get-packages@npm:^1.1.3": - version: 1.1.3 - resolution: "@manypkg/get-packages@npm:1.1.3" - dependencies: - "@babel/runtime": ^7.5.5 - "@changesets/types": ^4.0.1 - "@manypkg/find-root": ^1.1.0 - fs-extra: ^8.1.0 - globby: ^11.0.0 - read-yaml-file: ^1.1.0 - checksum: f5a756e5a659e0e1c33f48852d56826d170d5b10a3cdea89ce4fcaa77678d8799aa4004b30e1985c87b73dbc390b95bb6411b78336dd1e0db87c08c74b5c0e74 +"@esbuild/linux-arm64@npm:0.23.1": + version: 0.23.1 + resolution: "@esbuild/linux-arm64@npm:0.23.1" + conditions: os=linux & cpu=arm64 languageName: node linkType: hard -"@microsoft/api-documenter@npm:^7.25.7": - version: 7.25.21 - resolution: "@microsoft/api-documenter@npm:7.25.21" - dependencies: - "@microsoft/api-extractor-model": 7.29.8 - "@microsoft/tsdoc": ~0.15.0 - "@rushstack/node-core-library": 5.9.0 - "@rushstack/terminal": 0.14.2 - "@rushstack/ts-command-line": 4.23.0 - js-yaml: ~3.13.1 - resolve: ~1.22.1 - bin: - api-documenter: bin/api-documenter - checksum: a45c33f2b2f3425b8bfaea6fd6ca985c9df21b85b46531c1e028153d9553629e33f5c3b04c6dfd63873aaae4285dacfc541d10b9aa4a0756b3c440ebf70179cc +"@esbuild/linux-arm64@npm:0.24.0": + version: 0.24.0 + resolution: "@esbuild/linux-arm64@npm:0.24.0" + conditions: os=linux & cpu=arm64 languageName: node linkType: hard -"@microsoft/api-extractor-model@npm:7.29.8": - version: 7.29.8 - resolution: "@microsoft/api-extractor-model@npm:7.29.8" - dependencies: - "@microsoft/tsdoc": ~0.15.0 - "@microsoft/tsdoc-config": ~0.17.0 - "@rushstack/node-core-library": 5.9.0 - checksum: 95a6b5df089d8bf44555f4565a6f0eda9323917266b2f4730b606aeb2c7f36df7c2cbcae9ca48a9198af7a33442cda8ce2c791e0f4c7c92f3bdaee6c3190b1f5 +"@esbuild/linux-arm@npm:0.16.17": + version: 0.16.17 + resolution: "@esbuild/linux-arm@npm:0.16.17" + conditions: os=linux & cpu=arm languageName: node linkType: hard -"@microsoft/api-extractor@npm:^7.47.2": - version: 7.47.11 - resolution: "@microsoft/api-extractor@npm:7.47.11" - dependencies: - "@microsoft/api-extractor-model": 7.29.8 - "@microsoft/tsdoc": ~0.15.0 - "@microsoft/tsdoc-config": ~0.17.0 - "@rushstack/node-core-library": 5.9.0 - "@rushstack/rig-package": 0.5.3 - "@rushstack/terminal": 0.14.2 - "@rushstack/ts-command-line": 4.23.0 - lodash: ~4.17.15 - minimatch: ~3.0.3 - resolve: ~1.22.1 - semver: ~7.5.4 - source-map: ~0.6.1 - typescript: 5.4.2 - bin: - api-extractor: bin/api-extractor - checksum: 1ae7634c21e20fe191b5297a03b87547b03e9db4ee3439809363e554bcc7610ebd43dd71d30db5fbee573b7f84a2e1fa6ab3bdf320500a266b7c7c1ccc6049b2 +"@esbuild/linux-arm@npm:0.21.5": + version: 0.21.5 + resolution: "@esbuild/linux-arm@npm:0.21.5" + conditions: os=linux & cpu=arm languageName: node linkType: hard -"@microsoft/tsdoc-config@npm:~0.17.0": - version: 0.17.0 - resolution: "@microsoft/tsdoc-config@npm:0.17.0" - dependencies: - "@microsoft/tsdoc": 0.15.0 - ajv: ~8.12.0 - jju: ~1.4.0 - resolve: ~1.22.2 - checksum: dd2de8247d0fc29608da83edf4ab73a21370f6ce10d089853303e91b135fdb1436ccec3bd1024f235dd3180dfe5dae7342989eadd03af55cf06f0e974e5fc213 +"@esbuild/linux-arm@npm:0.23.1": + version: 0.23.1 + resolution: "@esbuild/linux-arm@npm:0.23.1" + conditions: os=linux & cpu=arm languageName: node linkType: hard -"@microsoft/tsdoc@npm:0.15.0, @microsoft/tsdoc@npm:~0.15.0": - version: 0.15.0 - resolution: "@microsoft/tsdoc@npm:0.15.0" - checksum: 3f693cff07b220b68563e3f86e9f94a9c8d0791a7446f76149c7d62ae5ed5cb4578bb48b9b5f9baa3dd9a9f77be81903c74654a41e0ca4ecf78936654952a8d4 +"@esbuild/linux-arm@npm:0.24.0": + version: 0.24.0 + resolution: "@esbuild/linux-arm@npm:0.24.0" + conditions: os=linux & cpu=arm languageName: node linkType: hard -"@module-federation/bridge-react-webpack-plugin@npm:0.6.13": - version: 0.6.13 - resolution: "@module-federation/bridge-react-webpack-plugin@npm:0.6.13" - dependencies: - "@module-federation/sdk": 0.6.13 - "@types/semver": 7.5.8 - semver: 7.6.3 - checksum: b5e33fd4a2f6dc5bc0d17af026ac0b9247c78bbcc6de8e3d0e20301c9b72fb59ac6355ea7d790ea352784f73e2e460b3fa52c2771ea077cbf944f78fbae56389 +"@esbuild/linux-ia32@npm:0.16.17": + version: 0.16.17 + resolution: "@esbuild/linux-ia32@npm:0.16.17" + conditions: os=linux & cpu=ia32 languageName: node linkType: hard -"@module-federation/data-prefetch@npm:0.6.13": - version: 0.6.13 - resolution: "@module-federation/data-prefetch@npm:0.6.13" - dependencies: - "@module-federation/runtime": 0.6.13 - "@module-federation/sdk": 0.6.13 - fs-extra: 9.1.0 - peerDependencies: - react: ">=16.9.0" - react-dom: ">=16.9.0" - checksum: 4223ef7e84194cc029aa57af94475c3753a71c66134dca22ba3566d44f7eb5972adaaf8ac8c439fc6294f3ebbe090bbebee0ec136df6285072e3f9cf38a2f01a +"@esbuild/linux-ia32@npm:0.21.5": + version: 0.21.5 + resolution: "@esbuild/linux-ia32@npm:0.21.5" + conditions: os=linux & cpu=ia32 languageName: node linkType: hard -"@module-federation/dts-plugin@npm:0.6.13": - version: 0.6.13 - resolution: "@module-federation/dts-plugin@npm:0.6.13" - dependencies: - "@module-federation/managers": 0.6.13 - "@module-federation/sdk": 0.6.13 - "@module-federation/third-party-dts-extractor": 0.6.13 - adm-zip: ^0.5.10 - ansi-colors: ^4.1.3 - axios: ^1.7.4 - chalk: 3.0.0 - fs-extra: 9.1.0 - isomorphic-ws: 5.0.0 - koa: 2.15.3 - lodash.clonedeepwith: 4.5.0 - log4js: 6.9.1 - node-schedule: 2.1.1 - rambda: ^9.1.0 - ws: 8.18.0 - peerDependencies: - typescript: ^4.9.0 || ^5.0.0 - vue-tsc: ">=1.0.24" - peerDependenciesMeta: - vue-tsc: - optional: true - checksum: 9752250ea3fa49c8bfc52fb9c58c1472bd2d231d4c1574b5991f496d572be953117fc50f1080a041b51c488bd7a894806442faa712a1f78ef90bc0f83d2e287b +"@esbuild/linux-ia32@npm:0.23.1": + version: 0.23.1 + resolution: "@esbuild/linux-ia32@npm:0.23.1" + conditions: os=linux & cpu=ia32 languageName: node linkType: hard -"@module-federation/enhanced@npm:^0.6.0": - version: 0.6.13 - resolution: "@module-federation/enhanced@npm:0.6.13" - dependencies: - "@module-federation/bridge-react-webpack-plugin": 0.6.13 - "@module-federation/data-prefetch": 0.6.13 - "@module-federation/dts-plugin": 0.6.13 - "@module-federation/managers": 0.6.13 - "@module-federation/manifest": 0.6.13 - "@module-federation/rspack": 0.6.13 - "@module-federation/runtime-tools": 0.6.13 - "@module-federation/sdk": 0.6.13 - btoa: ^1.2.1 - upath: 2.0.1 - peerDependencies: - typescript: ^4.9.0 || ^5.0.0 - vue-tsc: ">=1.0.24" - webpack: ^5.0.0 - peerDependenciesMeta: - typescript: - optional: true - vue-tsc: - optional: true - webpack: - optional: true - checksum: 76d351e42aba4afcd460b8089a3013fab0faba0144f2d76479a478d1a1ef97f50882b1dde85c66fd18c9eb13ba2656b1bee270466385a83a083a9eaddaf83125 +"@esbuild/linux-ia32@npm:0.24.0": + version: 0.24.0 + resolution: "@esbuild/linux-ia32@npm:0.24.0" + conditions: os=linux & cpu=ia32 languageName: node linkType: hard -"@module-federation/managers@npm:0.6.13": - version: 0.6.13 - resolution: "@module-federation/managers@npm:0.6.13" - dependencies: - "@module-federation/sdk": 0.6.13 - find-pkg: 2.0.0 - fs-extra: 9.1.0 - checksum: 75f7bb65a6d187bdd635245bc816bc302a95f42c37e1fa7973da224da23c85172fd6bb289b01deb0c4abd1c43e14a49f20c0ab258f9cd5a46d8178219c4f6756 +"@esbuild/linux-loong64@npm:0.16.17": + version: 0.16.17 + resolution: "@esbuild/linux-loong64@npm:0.16.17" + conditions: os=linux & cpu=loong64 languageName: node linkType: hard -"@module-federation/manifest@npm:0.6.13": - version: 0.6.13 - resolution: "@module-federation/manifest@npm:0.6.13" - dependencies: - "@module-federation/dts-plugin": 0.6.13 - "@module-federation/managers": 0.6.13 - "@module-federation/sdk": 0.6.13 - chalk: 3.0.0 - find-pkg: 2.0.0 - checksum: ef9564ee50e297083022eb622abce604628e730535e29b93d4d97e22a28b3726fc9064bd937124b12285ad9249cd9b99a0fd1d657bd6c0ec9244248dda680d42 +"@esbuild/linux-loong64@npm:0.21.5": + version: 0.21.5 + resolution: "@esbuild/linux-loong64@npm:0.21.5" + conditions: os=linux & cpu=loong64 languageName: node linkType: hard -"@module-federation/rspack@npm:0.6.13": - version: 0.6.13 - resolution: "@module-federation/rspack@npm:0.6.13" - dependencies: - "@module-federation/bridge-react-webpack-plugin": 0.6.13 - "@module-federation/dts-plugin": 0.6.13 - "@module-federation/managers": 0.6.13 - "@module-federation/manifest": 0.6.13 - "@module-federation/runtime-tools": 0.6.13 - "@module-federation/sdk": 0.6.13 - peerDependencies: - typescript: ^4.9.0 || ^5.0.0 - vue-tsc: ">=1.0.24" - peerDependenciesMeta: - typescript: - optional: true - vue-tsc: - optional: true - checksum: a1ac18d988899428b09f3f6b175aaf34b7a169c5cf5f4ba59437993e747c7a76693a92ea8004e5368f87f3110b6bac310f9518a2be8377e58da81ad88f08a4c5 +"@esbuild/linux-loong64@npm:0.23.1": + version: 0.23.1 + resolution: "@esbuild/linux-loong64@npm:0.23.1" + conditions: os=linux & cpu=loong64 languageName: node linkType: hard -"@module-federation/runtime-tools@npm:0.6.13": - version: 0.6.13 - resolution: "@module-federation/runtime-tools@npm:0.6.13" - dependencies: - "@module-federation/runtime": 0.6.13 - "@module-federation/webpack-bundler-runtime": 0.6.13 - checksum: 8651fa502dd25c269624d2e1192538ce48380ea7ed8cac68598d8609dc79e769c6b083f810f1f0beaf6475bd0850c8dcca8e1e6b89b97b3b33268a0bbd602cdd +"@esbuild/linux-loong64@npm:0.24.0": + version: 0.24.0 + resolution: "@esbuild/linux-loong64@npm:0.24.0" + conditions: os=linux & cpu=loong64 languageName: node linkType: hard -"@module-federation/runtime@npm:0.6.13": - version: 0.6.13 - resolution: "@module-federation/runtime@npm:0.6.13" - dependencies: - "@module-federation/sdk": 0.6.13 - checksum: 09e007a27376201679200cc866b29dcccdde11d1c635393fa599d6f313be1b8aeaf13467443c8eb64776b999302844893d6143ad8c99d19c4043bb36ef00c3a8 +"@esbuild/linux-mips64el@npm:0.16.17": + version: 0.16.17 + resolution: "@esbuild/linux-mips64el@npm:0.16.17" + conditions: os=linux & cpu=mips64el languageName: node linkType: hard -"@module-federation/sdk@npm:0.6.13": - version: 0.6.13 - resolution: "@module-federation/sdk@npm:0.6.13" - checksum: e9c2ff5c496bdc79babe728aa1bce8e1cf8a8302e4da2e815f557c8b8969fbd92db9d1072d2a7f654111503e96f4761fe71e0b3ab55de40da469ca39a334581d +"@esbuild/linux-mips64el@npm:0.21.5": + version: 0.21.5 + resolution: "@esbuild/linux-mips64el@npm:0.21.5" + conditions: os=linux & cpu=mips64el languageName: node linkType: hard -"@module-federation/third-party-dts-extractor@npm:0.6.13": - version: 0.6.13 - resolution: "@module-federation/third-party-dts-extractor@npm:0.6.13" - dependencies: - find-pkg: 2.0.0 - fs-extra: 9.1.0 - resolve: 1.22.8 - checksum: 2ffe8b7c69c6b47b8ae70156608637466a2ab8106b62a672dafda268546efbb90043864bb80605cf6b352197b56d175788c103caa794b7521fa212a34deb9f03 +"@esbuild/linux-mips64el@npm:0.23.1": + version: 0.23.1 + resolution: "@esbuild/linux-mips64el@npm:0.23.1" + conditions: os=linux & cpu=mips64el languageName: node linkType: hard -"@module-federation/webpack-bundler-runtime@npm:0.6.13": - version: 0.6.13 - resolution: "@module-federation/webpack-bundler-runtime@npm:0.6.13" - dependencies: - "@module-federation/runtime": 0.6.13 - "@module-federation/sdk": 0.6.13 - checksum: bdbe0bb993c77d7fc53f285cefb73d8e257cfdc73648d3e2d3198ed8061f1122d0774846085d2e08787bc5a0842bfae7d99477034d1d6e0f2d31b2c7c2b9a1f9 +"@esbuild/linux-mips64el@npm:0.24.0": + version: 0.24.0 + resolution: "@esbuild/linux-mips64el@npm:0.24.0" + conditions: os=linux & cpu=mips64el languageName: node linkType: hard -"@mswjs/cookies@npm:^0.2.2": - version: 0.2.2 - resolution: "@mswjs/cookies@npm:0.2.2" - dependencies: - "@types/set-cookie-parser": ^2.4.0 - set-cookie-parser: ^2.4.6 - checksum: 23b1ef56d57efcc1b44600076f531a1fb703855af342a31e01bad4adaf0dab51f6d3b5595a95a7988c3f612ba075835f9a06c52833205284d101eb9a51dd72b0 +"@esbuild/linux-ppc64@npm:0.16.17": + version: 0.16.17 + resolution: "@esbuild/linux-ppc64@npm:0.16.17" + conditions: os=linux & cpu=ppc64 languageName: node linkType: hard -"@mswjs/interceptors@npm:^0.17.10": - version: 0.17.10 - resolution: "@mswjs/interceptors@npm:0.17.10" - dependencies: - "@open-draft/until": ^1.0.3 - "@types/debug": ^4.1.7 - "@xmldom/xmldom": ^0.8.3 - debug: ^4.3.3 - headers-polyfill: 3.2.5 - outvariant: ^1.2.1 - strict-event-emitter: ^0.2.4 - web-encoding: ^1.1.5 - checksum: 0e6d32f399144b5cefe6fd7620f2776c83adc9bbbbccf2eb4ea347332be059f585136c44168c09b544c41cd3d686f88e43432e10192227a24fbb0c98a2f52dc8 +"@esbuild/linux-ppc64@npm:0.21.5": + version: 0.21.5 + resolution: "@esbuild/linux-ppc64@npm:0.21.5" + conditions: os=linux & cpu=ppc64 languageName: node linkType: hard -"@nestjs/axios@npm:3.1.0": - version: 3.1.0 - resolution: "@nestjs/axios@npm:3.1.0" - peerDependencies: - "@nestjs/common": ^7.0.0 || ^8.0.0 || ^9.0.0 || ^10.0.0 - axios: ^1.3.1 - rxjs: ^6.0.0 || ^7.0.0 - checksum: 75481841feb022b417e1a9cc6fc205878b8299b8c5077d4ae156ca97a5042de1a52c29d3138eb7662e028782ea98e209bf061c6f76fdd27fd32a586adfb6fbca +"@esbuild/linux-ppc64@npm:0.23.1": + version: 0.23.1 + resolution: "@esbuild/linux-ppc64@npm:0.23.1" + conditions: os=linux & cpu=ppc64 languageName: node linkType: hard -"@nestjs/common@npm:10.4.5": - version: 10.4.5 - resolution: "@nestjs/common@npm:10.4.5" - dependencies: - iterare: 1.2.1 - tslib: 2.7.0 - uid: 2.0.2 - peerDependencies: - class-transformer: "*" - class-validator: "*" - reflect-metadata: ^0.1.12 || ^0.2.0 - rxjs: ^7.1.0 - peerDependenciesMeta: - class-transformer: - optional: true - class-validator: - optional: true - checksum: 4d98b3f27099ee17dd63fae46eda23980de209c542e72ddc0e626a8f0c3d5c5236c41dc51b421ecb2b0ac1405321689afea16235952b6d41a20aedce14964c47 +"@esbuild/linux-ppc64@npm:0.24.0": + version: 0.24.0 + resolution: "@esbuild/linux-ppc64@npm:0.24.0" + conditions: os=linux & cpu=ppc64 languageName: node linkType: hard -"@nestjs/core@npm:10.4.5": - version: 10.4.5 - resolution: "@nestjs/core@npm:10.4.5" - dependencies: - "@nuxtjs/opencollective": 0.3.2 - fast-safe-stringify: 2.1.1 - iterare: 1.2.1 - path-to-regexp: 3.3.0 - tslib: 2.7.0 - uid: 2.0.2 - peerDependencies: - "@nestjs/common": ^10.0.0 - "@nestjs/microservices": ^10.0.0 - "@nestjs/platform-express": ^10.0.0 - "@nestjs/websockets": ^10.0.0 - reflect-metadata: ^0.1.12 || ^0.2.0 - rxjs: ^7.1.0 - peerDependenciesMeta: - "@nestjs/microservices": - optional: true - "@nestjs/platform-express": - optional: true - "@nestjs/websockets": - optional: true - checksum: 768315ef5065e208fd9da4139a0d3fc576e860d51f40c5485032d0f0c2431ba60bfd44aa0726cedbab8bbf5d1c221efd6f1eb9c34e33524144d9c033f0f5f978 +"@esbuild/linux-riscv64@npm:0.16.17": + version: 0.16.17 + resolution: "@esbuild/linux-riscv64@npm:0.16.17" + conditions: os=linux & cpu=riscv64 languageName: node linkType: hard -"@nodelib/fs.scandir@npm:2.1.5": - version: 2.1.5 - resolution: "@nodelib/fs.scandir@npm:2.1.5" - dependencies: - "@nodelib/fs.stat": 2.0.5 - run-parallel: ^1.1.9 - checksum: a970d595bd23c66c880e0ef1817791432dbb7acbb8d44b7e7d0e7a22f4521260d4a83f7f9fd61d44fda4610105577f8f58a60718105fb38352baed612fd79e59 +"@esbuild/linux-riscv64@npm:0.21.5": + version: 0.21.5 + resolution: "@esbuild/linux-riscv64@npm:0.21.5" + conditions: os=linux & cpu=riscv64 languageName: node linkType: hard -"@nodelib/fs.stat@npm:2.0.5, @nodelib/fs.stat@npm:^2.0.2": - version: 2.0.5 - resolution: "@nodelib/fs.stat@npm:2.0.5" - checksum: 012480b5ca9d97bff9261571dbbec7bbc6033f69cc92908bc1ecfad0792361a5a1994bc48674b9ef76419d056a03efadfce5a6cf6dbc0a36559571a7a483f6f0 +"@esbuild/linux-riscv64@npm:0.23.1": + version: 0.23.1 + resolution: "@esbuild/linux-riscv64@npm:0.23.1" + conditions: os=linux & cpu=riscv64 languageName: node linkType: hard -"@nodelib/fs.walk@npm:1.2.8, @nodelib/fs.walk@npm:^1.2.3, @nodelib/fs.walk@npm:^1.2.6, @nodelib/fs.walk@npm:^1.2.8": - version: 1.2.8 - resolution: "@nodelib/fs.walk@npm:1.2.8" - dependencies: - "@nodelib/fs.scandir": 2.1.5 - fastq: ^1.6.0 - checksum: 190c643f156d8f8f277bf2a6078af1ffde1fd43f498f187c2db24d35b4b4b5785c02c7dc52e356497b9a1b65b13edc996de08de0b961c32844364da02986dc53 - languageName: node - linkType: hard - -"@npmcli/agent@npm:^2.0.0": - version: 2.2.2 - resolution: "@npmcli/agent@npm:2.2.2" - dependencies: - agent-base: ^7.1.0 - http-proxy-agent: ^7.0.0 - https-proxy-agent: ^7.0.1 - lru-cache: ^10.0.1 - socks-proxy-agent: ^8.0.3 - checksum: 67de7b88cc627a79743c88bab35e023e23daf13831a8aa4e15f998b92f5507b644d8ffc3788afc8e64423c612e0785a6a92b74782ce368f49a6746084b50d874 +"@esbuild/linux-riscv64@npm:0.24.0": + version: 0.24.0 + resolution: "@esbuild/linux-riscv64@npm:0.24.0" + conditions: os=linux & cpu=riscv64 languageName: node linkType: hard -"@npmcli/fs@npm:^2.1.0": - version: 2.1.2 - resolution: "@npmcli/fs@npm:2.1.2" - dependencies: - "@gar/promisify": ^1.1.3 - semver: ^7.3.5 - checksum: 405074965e72d4c9d728931b64d2d38e6ea12066d4fad651ac253d175e413c06fe4350970c783db0d749181da8fe49c42d3880bd1cbc12cd68e3a7964d820225 +"@esbuild/linux-s390x@npm:0.16.17": + version: 0.16.17 + resolution: "@esbuild/linux-s390x@npm:0.16.17" + conditions: os=linux & cpu=s390x languageName: node linkType: hard -"@npmcli/fs@npm:^3.1.0": - version: 3.1.1 - resolution: "@npmcli/fs@npm:3.1.1" - dependencies: - semver: ^7.3.5 - checksum: d960cab4b93adcb31ce223bfb75c5714edbd55747342efb67dcc2f25e023d930a7af6ece3e75f2f459b6f38fc14d031c766f116cd124fdc937fd33112579e820 +"@esbuild/linux-s390x@npm:0.21.5": + version: 0.21.5 + resolution: "@esbuild/linux-s390x@npm:0.21.5" + conditions: os=linux & cpu=s390x languageName: node linkType: hard -"@npmcli/move-file@npm:^2.0.0": - version: 2.0.1 - resolution: "@npmcli/move-file@npm:2.0.1" - dependencies: - mkdirp: ^1.0.4 - rimraf: ^3.0.2 - checksum: 52dc02259d98da517fae4cb3a0a3850227bdae4939dda1980b788a7670636ca2b4a01b58df03dd5f65c1e3cb70c50fa8ce5762b582b3f499ec30ee5ce1fd9380 +"@esbuild/linux-s390x@npm:0.23.1": + version: 0.23.1 + resolution: "@esbuild/linux-s390x@npm:0.23.1" + conditions: os=linux & cpu=s390x languageName: node linkType: hard -"@nuxtjs/opencollective@npm:0.3.2": - version: 0.3.2 - resolution: "@nuxtjs/opencollective@npm:0.3.2" - dependencies: - chalk: ^4.1.0 - consola: ^2.15.0 - node-fetch: ^2.6.1 - bin: - opencollective: bin/opencollective.js - checksum: fd3737c12edf55b5c2279674664c3ed5e756410ea82e9cd324c3f0e032ed5ccd8df1959ec69ea97f2f1c9c33c884aae3d7a7108a73ea0faa90d74ea47cf364d4 +"@esbuild/linux-s390x@npm:0.24.0": + version: 0.24.0 + resolution: "@esbuild/linux-s390x@npm:0.24.0" + conditions: os=linux & cpu=s390x languageName: node linkType: hard -"@octokit/auth-app@npm:^4.0.0": - version: 4.0.13 - resolution: "@octokit/auth-app@npm:4.0.13" - dependencies: - "@octokit/auth-oauth-app": ^5.0.0 - "@octokit/auth-oauth-user": ^2.0.0 - "@octokit/request": ^6.0.0 - "@octokit/request-error": ^3.0.0 - "@octokit/types": ^9.0.0 - deprecation: ^2.3.1 - lru-cache: ^9.0.0 - universal-github-app-jwt: ^1.1.1 - universal-user-agent: ^6.0.0 - checksum: 809004bc3e985fd4911cc42060fecd7b88e609e1334b90c4f79711aa27cade03fa1d930945ea8f7339ddd8d4514dd220a6ae8489faefa9e0ce6881519a02fc37 +"@esbuild/linux-x64@npm:0.16.17": + version: 0.16.17 + resolution: "@esbuild/linux-x64@npm:0.16.17" + conditions: os=linux & cpu=x64 languageName: node linkType: hard -"@octokit/auth-oauth-app@npm:^5.0.0": - version: 5.0.6 - resolution: "@octokit/auth-oauth-app@npm:5.0.6" - dependencies: - "@octokit/auth-oauth-device": ^4.0.0 - "@octokit/auth-oauth-user": ^2.0.0 - "@octokit/request": ^6.0.0 - "@octokit/types": ^9.0.0 - "@types/btoa-lite": ^1.0.0 - btoa-lite: ^1.0.0 - universal-user-agent: ^6.0.0 - checksum: 2101b70d148409ce24be3b7b5c033b03d92362a7b5786c441532187dac59826dba0ffbe245beb0c4cec55bc4b843b84b4b2ba0ad8ec46a31cc15451f80705b19 +"@esbuild/linux-x64@npm:0.21.5": + version: 0.21.5 + resolution: "@esbuild/linux-x64@npm:0.21.5" + conditions: os=linux & cpu=x64 languageName: node linkType: hard -"@octokit/auth-oauth-device@npm:^4.0.0": - version: 4.0.5 - resolution: "@octokit/auth-oauth-device@npm:4.0.5" - dependencies: - "@octokit/oauth-methods": ^2.0.0 - "@octokit/request": ^6.0.0 - "@octokit/types": ^9.0.0 - universal-user-agent: ^6.0.0 - checksum: 361824ba13c56beb05016b48b7d492f7439650abbb9e687c9f3e82ef4830790e1aae3d78c6e95dc317278146442c59821d87bf0b9b3c6d53f87117fe32b380d0 +"@esbuild/linux-x64@npm:0.23.1": + version: 0.23.1 + resolution: "@esbuild/linux-x64@npm:0.23.1" + conditions: os=linux & cpu=x64 languageName: node linkType: hard -"@octokit/auth-oauth-user@npm:^2.0.0": - version: 2.1.2 - resolution: "@octokit/auth-oauth-user@npm:2.1.2" - dependencies: - "@octokit/auth-oauth-device": ^4.0.0 - "@octokit/oauth-methods": ^2.0.0 - "@octokit/request": ^6.0.0 - "@octokit/types": ^9.0.0 - btoa-lite: ^1.0.0 - universal-user-agent: ^6.0.0 - checksum: cbb4994452b38fecebfd93bcf56b5ac7853f3bb880a42b00eec2fc6a9fdc6582293247cc8ead10814903f47195353c6450fe1a964184def7fe6e746da911b8bc +"@esbuild/linux-x64@npm:0.24.0": + version: 0.24.0 + resolution: "@esbuild/linux-x64@npm:0.24.0" + conditions: os=linux & cpu=x64 languageName: node linkType: hard -"@octokit/auth-token@npm:^3.0.0": - version: 3.0.4 - resolution: "@octokit/auth-token@npm:3.0.4" - checksum: 42f533a873d4192e6df406b3176141c1f95287423ebdc4cf23a38bb77ee00ccbc0e60e3fbd5874234fc2ed2e67bbc6035e3b0561dacc1d078adb5c4ced3579e3 +"@esbuild/netbsd-x64@npm:0.16.17": + version: 0.16.17 + resolution: "@esbuild/netbsd-x64@npm:0.16.17" + conditions: os=netbsd & cpu=x64 languageName: node linkType: hard -"@octokit/auth-unauthenticated@npm:^3.0.0": - version: 3.0.5 - resolution: "@octokit/auth-unauthenticated@npm:3.0.5" - dependencies: - "@octokit/request-error": ^3.0.0 - "@octokit/types": ^9.0.0 - checksum: 8372d732af9aeb09e51fc51c9aca00fb4522e182caf514898a27c5d7e33cfd8e39f9d00f7868cfc34ad437280a0fcafb312624a2968526110249e07b2b96b269 +"@esbuild/netbsd-x64@npm:0.21.5": + version: 0.21.5 + resolution: "@esbuild/netbsd-x64@npm:0.21.5" + conditions: os=netbsd & cpu=x64 languageName: node linkType: hard -"@octokit/core@npm:^4.0.0, @octokit/core@npm:^4.2.1": - version: 4.2.4 - resolution: "@octokit/core@npm:4.2.4" - dependencies: - "@octokit/auth-token": ^3.0.0 - "@octokit/graphql": ^5.0.0 - "@octokit/request": ^6.0.0 - "@octokit/request-error": ^3.0.0 - "@octokit/types": ^9.0.0 - before-after-hook: ^2.2.0 - universal-user-agent: ^6.0.0 - checksum: ac8ab47440a31b0228a034aacac6994b64d6b073ad5b688b4c5157fc5ee0d1af1c926e6087bf17fd7244ee9c5998839da89065a90819bde4a97cb77d4edf58a6 +"@esbuild/netbsd-x64@npm:0.23.1": + version: 0.23.1 + resolution: "@esbuild/netbsd-x64@npm:0.23.1" + conditions: os=netbsd & cpu=x64 languageName: node linkType: hard -"@octokit/endpoint@npm:^7.0.0": - version: 7.0.6 - resolution: "@octokit/endpoint@npm:7.0.6" - dependencies: - "@octokit/types": ^9.0.0 - is-plain-object: ^5.0.0 - universal-user-agent: ^6.0.0 - checksum: 7caebf30ceec50eb7f253341ed419df355232f03d4638a95c178ee96620400db7e4a5e15d89773fe14db19b8653d4ab4cc81b2e93ca0c760b4e0f7eb7ad80301 +"@esbuild/netbsd-x64@npm:0.24.0": + version: 0.24.0 + resolution: "@esbuild/netbsd-x64@npm:0.24.0" + conditions: os=netbsd & cpu=x64 languageName: node linkType: hard -"@octokit/graphql-schema@npm:^13.7.0": - version: 13.10.0 - resolution: "@octokit/graphql-schema@npm:13.10.0" - dependencies: - graphql: ^16.0.0 - graphql-tag: ^2.10.3 - checksum: fdec9c9a4df1f90b733ea0e24964744faceaf65e5d350b1727892e8e0e5821df1d29aec5cfa039925a044c6f56d4ed2028505108db7fbc0c68011053853c2411 +"@esbuild/openbsd-arm64@npm:0.23.1": + version: 0.23.1 + resolution: "@esbuild/openbsd-arm64@npm:0.23.1" + conditions: os=openbsd & cpu=arm64 languageName: node linkType: hard -"@octokit/graphql@npm:^5.0.0": - version: 5.0.6 - resolution: "@octokit/graphql@npm:5.0.6" - dependencies: - "@octokit/request": ^6.0.0 - "@octokit/types": ^9.0.0 - universal-user-agent: ^6.0.0 - checksum: 7be545d348ef31dcab0a2478dd64d5746419a2f82f61459c774602bcf8a9b577989c18001f50b03f5f61a3d9e34203bdc021a4e4d75ff2d981e8c9c09cf8a65c +"@esbuild/openbsd-arm64@npm:0.24.0": + version: 0.24.0 + resolution: "@esbuild/openbsd-arm64@npm:0.24.0" + conditions: os=openbsd & cpu=arm64 languageName: node linkType: hard -"@octokit/oauth-app@npm:^4.2.0": - version: 4.2.4 - resolution: "@octokit/oauth-app@npm:4.2.4" - dependencies: - "@octokit/auth-oauth-app": ^5.0.0 - "@octokit/auth-oauth-user": ^2.0.0 - "@octokit/auth-unauthenticated": ^3.0.0 - "@octokit/core": ^4.0.0 - "@octokit/oauth-authorization-url": ^5.0.0 - "@octokit/oauth-methods": ^2.0.0 - "@types/aws-lambda": ^8.10.83 - fromentries: ^1.3.1 - universal-user-agent: ^6.0.0 - checksum: 6d9798c9e63e84f3cb3031ac3f06f45c6ea053fd201be9a07a508786fd400479d7d9f6f85707d0fff7f094a265c7e966a2fa4c884001b99f02ddd927bf499d06 +"@esbuild/openbsd-x64@npm:0.16.17": + version: 0.16.17 + resolution: "@esbuild/openbsd-x64@npm:0.16.17" + conditions: os=openbsd & cpu=x64 languageName: node linkType: hard -"@octokit/oauth-authorization-url@npm:^5.0.0": - version: 5.0.0 - resolution: "@octokit/oauth-authorization-url@npm:5.0.0" - checksum: bc457c4af9559e9e8f752e643fc9d116247f4e4246e69959d99b9e39196c93d7af53c1c8e3bd946bd0e4fc29f7ba27efe9bced8525ffa41fe45ef56a8281014b +"@esbuild/openbsd-x64@npm:0.21.5": + version: 0.21.5 + resolution: "@esbuild/openbsd-x64@npm:0.21.5" + conditions: os=openbsd & cpu=x64 languageName: node linkType: hard -"@octokit/oauth-methods@npm:^2.0.0": - version: 2.0.6 - resolution: "@octokit/oauth-methods@npm:2.0.6" - dependencies: - "@octokit/oauth-authorization-url": ^5.0.0 - "@octokit/request": ^6.2.3 - "@octokit/request-error": ^3.0.3 - "@octokit/types": ^9.0.0 - btoa-lite: ^1.0.0 - checksum: 151b933d79d6fbf36fdfae8cdc868a3d43316352eaccf46cb8c420cfd238658275e41996d2d377177553bc0c637c3aefe8ca99c1ab7fd62054654b6119b7b1cc +"@esbuild/openbsd-x64@npm:0.23.1": + version: 0.23.1 + resolution: "@esbuild/openbsd-x64@npm:0.23.1" + conditions: os=openbsd & cpu=x64 languageName: node linkType: hard -"@octokit/openapi-types@npm:^18.0.0": - version: 18.1.1 - resolution: "@octokit/openapi-types@npm:18.1.1" - checksum: 94f42977fd2fcb9983c781fd199bc11218885a1226d492680bfb1268524a1b2af48a768eef90c63b80a2874437de641d59b3b7f640a5afa93e7c21fe1a79069a +"@esbuild/openbsd-x64@npm:0.24.0": + version: 0.24.0 + resolution: "@esbuild/openbsd-x64@npm:0.24.0" + conditions: os=openbsd & cpu=x64 languageName: node linkType: hard -"@octokit/plugin-paginate-rest@npm:^6.1.2": - version: 6.1.2 - resolution: "@octokit/plugin-paginate-rest@npm:6.1.2" - dependencies: - "@octokit/tsconfig": ^1.0.2 - "@octokit/types": ^9.2.3 - peerDependencies: - "@octokit/core": ">=4" - checksum: a7b3e686c7cbd27ec07871cde6e0b1dc96337afbcef426bbe3067152a17b535abd480db1861ca28c88d93db5f7bfdbcadd0919ead19818c28a69d0e194038065 +"@esbuild/sunos-x64@npm:0.16.17": + version: 0.16.17 + resolution: "@esbuild/sunos-x64@npm:0.16.17" + conditions: os=sunos & cpu=x64 languageName: node linkType: hard -"@octokit/plugin-request-log@npm:^1.0.4": - version: 1.0.4 - resolution: "@octokit/plugin-request-log@npm:1.0.4" - peerDependencies: - "@octokit/core": ">=3" - checksum: 2086db00056aee0f8ebd79797b5b57149ae1014e757ea08985b71eec8c3d85dbb54533f4fd34b6b9ecaa760904ae6a7536be27d71e50a3782ab47809094bfc0c +"@esbuild/sunos-x64@npm:0.21.5": + version: 0.21.5 + resolution: "@esbuild/sunos-x64@npm:0.21.5" + conditions: os=sunos & cpu=x64 languageName: node linkType: hard -"@octokit/plugin-rest-endpoint-methods@npm:^7.1.2": - version: 7.2.3 - resolution: "@octokit/plugin-rest-endpoint-methods@npm:7.2.3" - dependencies: - "@octokit/types": ^10.0.0 - peerDependencies: - "@octokit/core": ">=3" - checksum: 21dfb98514dbe900c29cddb13b335bbce43d613800c6b17eba3c1fd31d17e69c1960f3067f7bf864bb38fdd5043391f4a23edee42729d8c7fbabd00569a80336 +"@esbuild/sunos-x64@npm:0.23.1": + version: 0.23.1 + resolution: "@esbuild/sunos-x64@npm:0.23.1" + conditions: os=sunos & cpu=x64 languageName: node linkType: hard -"@octokit/request-error@npm:^3.0.0, @octokit/request-error@npm:^3.0.3": - version: 3.0.3 - resolution: "@octokit/request-error@npm:3.0.3" - dependencies: - "@octokit/types": ^9.0.0 - deprecation: ^2.0.0 - once: ^1.4.0 - checksum: 5db0b514732686b627e6ed9ef1ccdbc10501f1b271a9b31f784783f01beee70083d7edcfeb35fbd7e569fa31fdd6762b1ff6b46101700d2d97e7e48e749520d0 +"@esbuild/sunos-x64@npm:0.24.0": + version: 0.24.0 + resolution: "@esbuild/sunos-x64@npm:0.24.0" + conditions: os=sunos & cpu=x64 languageName: node linkType: hard -"@octokit/request@npm:^6.0.0, @octokit/request@npm:^6.2.3": - version: 6.2.8 - resolution: "@octokit/request@npm:6.2.8" - dependencies: - "@octokit/endpoint": ^7.0.0 - "@octokit/request-error": ^3.0.0 - "@octokit/types": ^9.0.0 - is-plain-object: ^5.0.0 - node-fetch: ^2.6.7 - universal-user-agent: ^6.0.0 - checksum: 3747106f50d7c462131ff995b13defdd78024b7becc40283f4ac9ea0af2391ff33a0bb476a05aa710346fe766d20254979079a1d6f626112015ba271fe38f3e2 +"@esbuild/win32-arm64@npm:0.16.17": + version: 0.16.17 + resolution: "@esbuild/win32-arm64@npm:0.16.17" + conditions: os=win32 & cpu=arm64 languageName: node linkType: hard -"@octokit/rest@npm:^19.0.3": - version: 19.0.13 - resolution: "@octokit/rest@npm:19.0.13" - dependencies: - "@octokit/core": ^4.2.1 - "@octokit/plugin-paginate-rest": ^6.1.2 - "@octokit/plugin-request-log": ^1.0.4 - "@octokit/plugin-rest-endpoint-methods": ^7.1.2 - checksum: ca1553e3fe46efabffef60e68e4a228d4cc0f0d545daf7f019560f666d3e934c6f3a6402a42bbd786af4f3c0a6e69380776312f01b7d52998fe1bbdd1b068f69 +"@esbuild/win32-arm64@npm:0.21.5": + version: 0.21.5 + resolution: "@esbuild/win32-arm64@npm:0.21.5" + conditions: os=win32 & cpu=arm64 languageName: node linkType: hard -"@octokit/tsconfig@npm:^1.0.2": - version: 1.0.2 - resolution: "@octokit/tsconfig@npm:1.0.2" - checksum: 74d56f3e9f326a8dd63700e9a51a7c75487180629c7a68bbafee97c612fbf57af8347369bfa6610b9268a3e8b833c19c1e4beb03f26db9a9dce31f6f7a19b5b1 +"@esbuild/win32-arm64@npm:0.23.1": + version: 0.23.1 + resolution: "@esbuild/win32-arm64@npm:0.23.1" + conditions: os=win32 & cpu=arm64 languageName: node linkType: hard -"@octokit/types@npm:^10.0.0": - version: 10.0.0 - resolution: "@octokit/types@npm:10.0.0" - dependencies: - "@octokit/openapi-types": ^18.0.0 - checksum: 8aafba2ff0cd2435fb70c291bf75ed071c0fa8a865cf6169648732068a35dec7b85a345851f18920ec5f3e94ee0e954988485caac0da09ec3f6781cc44fe153a +"@esbuild/win32-arm64@npm:0.24.0": + version: 0.24.0 + resolution: "@esbuild/win32-arm64@npm:0.24.0" + conditions: os=win32 & cpu=arm64 languageName: node linkType: hard -"@octokit/types@npm:^9.0.0, @octokit/types@npm:^9.2.3": - version: 9.3.2 - resolution: "@octokit/types@npm:9.3.2" - dependencies: - "@octokit/openapi-types": ^18.0.0 - checksum: f55d096aaed3e04b8308d4422104fb888f355988056ba7b7ef0a4c397b8a3e54290d7827b06774dbe0c9ce55280b00db486286954f9c265aa6b03091026d9da8 +"@esbuild/win32-ia32@npm:0.16.17": + version: 0.16.17 + resolution: "@esbuild/win32-ia32@npm:0.16.17" + conditions: os=win32 & cpu=ia32 languageName: node linkType: hard -"@open-draft/until@npm:^1.0.3": - version: 1.0.3 - resolution: "@open-draft/until@npm:1.0.3" - checksum: 323e92ebef0150ed0f8caedc7d219b68cdc50784fa4eba0377eef93533d3f46514eb2400ced83dda8c51bddc3d2c7b8e9cf95e5ec85ab7f62dfc015d174f62f2 +"@esbuild/win32-ia32@npm:0.21.5": + version: 0.21.5 + resolution: "@esbuild/win32-ia32@npm:0.21.5" + conditions: os=win32 & cpu=ia32 languageName: node linkType: hard -"@openapitools/openapi-generator-cli@npm:^2.7.0": - version: 2.15.0 - resolution: "@openapitools/openapi-generator-cli@npm:2.15.0" - dependencies: - "@nestjs/axios": 3.1.0 - "@nestjs/common": 10.4.5 - "@nestjs/core": 10.4.5 - "@nuxtjs/opencollective": 0.3.2 - axios: 1.7.7 - chalk: 4.1.2 - commander: 8.3.0 - compare-versions: 4.1.4 - concurrently: 6.5.1 - console.table: 0.10.0 - fs-extra: 10.1.0 - glob: 9.3.5 - inquirer: 8.2.6 - lodash: 4.17.21 - proxy-agent: 6.4.0 - reflect-metadata: 0.1.13 - rxjs: 7.8.1 - tslib: 2.7.0 - bin: - openapi-generator-cli: main.js - checksum: 2ea04baf61b526bb8a1c12121fe07ca6f95fa5884f0ca9af8030292cfead39e79707f2649d1cf36ec266c9d199b5ded4165fbd4f6ba089be028bce9f616fbf19 +"@esbuild/win32-ia32@npm:0.23.1": + version: 0.23.1 + resolution: "@esbuild/win32-ia32@npm:0.23.1" + conditions: os=win32 & cpu=ia32 languageName: node linkType: hard -"@openshift/dynamic-plugin-sdk-webpack@npm:^3.0.0": - version: 3.0.1 - resolution: "@openshift/dynamic-plugin-sdk-webpack@npm:3.0.1" - dependencies: - lodash: ^4.17.21 - yup: ^0.32.11 - peerDependencies: - webpack: ^5.75.0 - checksum: 5c52a4528b7a30a12263e3c5c5a77a9edb97a151316d5db3472d1451104bd0f06cd7384e7168d3ee1b87b9b7dac5a9589beeb4e15c2f662c8523d8f487e1e032 +"@esbuild/win32-ia32@npm:0.24.0": + version: 0.24.0 + resolution: "@esbuild/win32-ia32@npm:0.24.0" + conditions: os=win32 & cpu=ia32 languageName: node linkType: hard -"@opentelemetry/api@npm:^1.3.0": - version: 1.9.0 - resolution: "@opentelemetry/api@npm:1.9.0" - checksum: 9e88e59d53ced668f3daaecfd721071c5b85a67dd386f1c6f051d1be54375d850016c881f656ffbe9a03bedae85f7e89c2f2b635313f9c9b195ad033cdc31020 +"@esbuild/win32-x64@npm:0.16.17": + version: 0.16.17 + resolution: "@esbuild/win32-x64@npm:0.16.17" + conditions: os=win32 & cpu=x64 languageName: node linkType: hard -"@pkgjs/parseargs@npm:^0.11.0": - version: 0.11.0 - resolution: "@pkgjs/parseargs@npm:0.11.0" - checksum: 6ad6a00fc4f2f2cfc6bff76fb1d88b8ee20bc0601e18ebb01b6d4be583733a860239a521a7fbca73b612e66705078809483549d2b18f370eb346c5155c8e4a0f +"@esbuild/win32-x64@npm:0.21.5": + version: 0.21.5 + resolution: "@esbuild/win32-x64@npm:0.21.5" + conditions: os=win32 & cpu=x64 languageName: node linkType: hard -"@pmmmwh/react-refresh-webpack-plugin@npm:^0.5.7": - version: 0.5.15 - resolution: "@pmmmwh/react-refresh-webpack-plugin@npm:0.5.15" - dependencies: - ansi-html: ^0.0.9 - core-js-pure: ^3.23.3 - error-stack-parser: ^2.0.6 - html-entities: ^2.1.0 - loader-utils: ^2.0.4 - schema-utils: ^4.2.0 - source-map: ^0.7.3 - peerDependencies: - "@types/webpack": 4.x || 5.x - react-refresh: ">=0.10.0 <1.0.0" - sockjs-client: ^1.4.0 - type-fest: ">=0.17.0 <5.0.0" - webpack: ">=4.43.0 <6.0.0" - webpack-dev-server: 3.x || 4.x || 5.x - webpack-hot-middleware: 2.x - webpack-plugin-serve: 0.x || 1.x - peerDependenciesMeta: - "@types/webpack": - optional: true - sockjs-client: - optional: true - type-fest: - optional: true - webpack-dev-server: - optional: true - webpack-hot-middleware: - optional: true - webpack-plugin-serve: - optional: true - checksum: 82df6244146209d63a12f0ca2e70b05274ee058c7e6d6eb4ced1228afde3b039a7f3f3cc0c76f1bb4b28deadbcf08bc2821c814f0bfee06979128578300fff3d +"@esbuild/win32-x64@npm:0.23.1": + version: 0.23.1 + resolution: "@esbuild/win32-x64@npm:0.23.1" + conditions: os=win32 & cpu=x64 languageName: node linkType: hard -"@rollup/plugin-commonjs@npm:^25.0.4": - version: 25.0.8 - resolution: "@rollup/plugin-commonjs@npm:25.0.8" - dependencies: - "@rollup/pluginutils": ^5.0.1 - commondir: ^1.0.1 - estree-walker: ^2.0.2 - glob: ^8.0.3 - is-reference: 1.2.1 - magic-string: ^0.30.3 - peerDependencies: - rollup: ^2.68.0||^3.0.0||^4.0.0 - peerDependenciesMeta: - rollup: - optional: true - checksum: dd105ee5625fbcaf832c0cf80be0aaf6a86bbd8fe99ff911f9ac4b78c79f26e9e99442b5aa0cc1136b5ddf89ec0b6c5728e5341ac04d687aef1b53063670b395 +"@esbuild/win32-x64@npm:0.24.0": + version: 0.24.0 + resolution: "@esbuild/win32-x64@npm:0.24.0" + conditions: os=win32 & cpu=x64 languageName: node linkType: hard -"@rollup/plugin-commonjs@npm:^26.0.0": - version: 26.0.3 - resolution: "@rollup/plugin-commonjs@npm:26.0.3" +"@eslint-community/eslint-utils@npm:^4.2.0, @eslint-community/eslint-utils@npm:^4.4.0": + version: 4.4.1 + resolution: "@eslint-community/eslint-utils@npm:4.4.1" dependencies: - "@rollup/pluginutils": ^5.0.1 - commondir: ^1.0.1 - estree-walker: ^2.0.2 - glob: ^10.4.1 - is-reference: 1.2.1 - magic-string: ^0.30.3 + eslint-visitor-keys: ^3.4.3 peerDependencies: - rollup: ^2.68.0||^3.0.0||^4.0.0 - peerDependenciesMeta: - rollup: - optional: true - checksum: 6f3ce53054f9b2edfd04a673c7572b5f8ba6b8416da55a7aef670a9b4630caf46e3e8d74b481d05e1d9f9cb98fa96228e23abad10ab2c95a6cc0b1a0065568e6 + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + checksum: a7ffc838eb6a9ef594cda348458ccf38f34439ac77dc090fa1c120024bcd4eb911dfd74d5ef44d42063e7949fa7c5123ce714a015c4abb917d4124be1bd32bfe languageName: node linkType: hard -"@rollup/plugin-json@npm:^6.0.0": - version: 6.1.0 - resolution: "@rollup/plugin-json@npm:6.1.0" - dependencies: - "@rollup/pluginutils": ^5.1.0 - peerDependencies: - rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 - peerDependenciesMeta: - rollup: - optional: true - checksum: cc018d20c80242a2b8b44fae61a968049cf31bb8406218187cc7cda35747616594e79452dd65722e7da6dd825b392e90d4599d43cd4461a02fefa2865945164e +"@eslint-community/regexpp@npm:^4.5.1, @eslint-community/regexpp@npm:^4.6.1": + version: 4.12.1 + resolution: "@eslint-community/regexpp@npm:4.12.1" + checksum: 0d628680e204bc316d545b4993d3658427ca404ae646ce541fcc65306b8c712c340e5e573e30fb9f85f4855c0c5f6dca9868931f2fcced06417fbe1a0c6cd2d6 languageName: node linkType: hard -"@rollup/plugin-node-resolve@npm:^15.0.0, @rollup/plugin-node-resolve@npm:^15.2.1": - version: 15.3.0 - resolution: "@rollup/plugin-node-resolve@npm:15.3.0" +"@eslint/eslintrc@npm:^2.1.4": + version: 2.1.4 + resolution: "@eslint/eslintrc@npm:2.1.4" dependencies: - "@rollup/pluginutils": ^5.0.1 - "@types/resolve": 1.20.2 - deepmerge: ^4.2.2 - is-module: ^1.0.0 - resolve: ^1.22.1 - peerDependencies: - rollup: ^2.78.0||^3.0.0||^4.0.0 - peerDependenciesMeta: - rollup: - optional: true - checksum: 90e4e94b173e7edd57e374ac0cc0a69cc6f1b4507e83731132ac6fa1747d96a5648a48441e4452728429b6db5e67561439b7b2f4d2c6a941a33d38be56d871b4 + ajv: ^6.12.4 + debug: ^4.3.2 + espree: ^9.6.0 + globals: ^13.19.0 + ignore: ^5.2.0 + import-fresh: ^3.2.1 + js-yaml: ^4.1.0 + minimatch: ^3.1.2 + strip-json-comments: ^3.1.1 + checksum: 10957c7592b20ca0089262d8c2a8accbad14b4f6507e35416c32ee6b4dbf9cad67dfb77096bbd405405e9ada2b107f3797fe94362e1c55e0b09d6e90dd149127 languageName: node linkType: hard -"@rollup/plugin-yaml@npm:^4.0.0": - version: 4.1.2 - resolution: "@rollup/plugin-yaml@npm:4.1.2" - dependencies: - "@rollup/pluginutils": ^5.0.1 - js-yaml: ^4.1.0 - tosource: ^2.0.0-alpha.3 - peerDependencies: - rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 - peerDependenciesMeta: - rollup: - optional: true - checksum: a044bb4568a10712465553ea5f31c13a2b7bc371a7f8382014e6b8048c0a264f5645f83f4d70ce9ab46b75117b94cdc032b597e9315fd2adcd8f30637f44bbea +"@eslint/js@npm:8.57.1": + version: 8.57.1 + resolution: "@eslint/js@npm:8.57.1" + checksum: 2afb77454c06e8316793d2e8e79a0154854d35e6782a1217da274ca60b5044d2c69d6091155234ed0551a1e408f86f09dd4ece02752c59568fa403e60611e880 languageName: node linkType: hard -"@rollup/pluginutils@npm:^4.1.1, @rollup/pluginutils@npm:^4.2.1": - version: 4.2.1 - resolution: "@rollup/pluginutils@npm:4.2.1" - dependencies: - estree-walker: ^2.0.1 - picomatch: ^2.2.2 - checksum: 6bc41f22b1a0f1efec3043899e4d3b6b1497b3dea4d94292d8f83b4cf07a1073ecbaedd562a22d11913ff7659f459677b01b09e9598a98936e746780ecc93a12 +"@fastify/busboy@npm:^2.0.0": + version: 2.1.1 + resolution: "@fastify/busboy@npm:2.1.1" + checksum: 42c32ef75e906c9a4809c1e1930a5ca6d4ddc8d138e1a8c8ba5ea07f997db32210617d23b2e4a85fe376316a41a1a0439fc6ff2dedf5126d96f45a9d80754fb2 languageName: node linkType: hard -"@rollup/pluginutils@npm:^5.0.1, @rollup/pluginutils@npm:^5.0.2, @rollup/pluginutils@npm:^5.0.5, @rollup/pluginutils@npm:^5.1.0": - version: 5.1.3 - resolution: "@rollup/pluginutils@npm:5.1.3" +"@floating-ui/core@npm:^1.6.0": + version: 1.6.8 + resolution: "@floating-ui/core@npm:1.6.8" dependencies: - "@types/estree": ^1.0.0 - estree-walker: ^2.0.2 - picomatch: ^4.0.2 - peerDependencies: - rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 - peerDependenciesMeta: - rollup: - optional: true - checksum: a6e9bac8ae94da39679dae390b53b43fe7a218f8fa2bfecf86e59be4da4ba02ac004f166daf55f03506e49108399394f13edeb62cce090f8cfc967b29f4738bf + "@floating-ui/utils": ^0.2.8 + checksum: 82faa6ea9d57e466779324e51308d6d49c098fb9d184a08d9bb7f4fad83f08cc070fc491f8d56f0cad44a16215fb43f9f829524288413e6c33afcb17303698de languageName: node linkType: hard -"@rollup/rollup-android-arm-eabi@npm:4.24.3": - version: 4.24.3 - resolution: "@rollup/rollup-android-arm-eabi@npm:4.24.3" - conditions: os=android & cpu=arm +"@floating-ui/dom@npm:^1.0.0": + version: 1.6.12 + resolution: "@floating-ui/dom@npm:1.6.12" + dependencies: + "@floating-ui/core": ^1.6.0 + "@floating-ui/utils": ^0.2.8 + checksum: 956514ed100c0c853e73ace9e3c877b7e535444d7c31326f687a7690d49cb1e59ef457e9c93b76141aea0d280e83ed5a983bb852718b62eea581f755454660f6 languageName: node linkType: hard -"@rollup/rollup-android-arm64@npm:4.24.3": - version: 4.24.3 - resolution: "@rollup/rollup-android-arm64@npm:4.24.3" - conditions: os=android & cpu=arm64 +"@floating-ui/react-dom@npm:^2.0.0": + version: 2.1.2 + resolution: "@floating-ui/react-dom@npm:2.1.2" + dependencies: + "@floating-ui/dom": ^1.0.0 + peerDependencies: + react: ">=16.8.0" + react-dom: ">=16.8.0" + checksum: 25bb031686e23062ed4222a8946e76b3f9021d40a48437bd747233c4964a766204b8a55f34fa8b259839af96e60db7c6e3714d81f1de06914294f90e86ffbc48 languageName: node linkType: hard -"@rollup/rollup-darwin-arm64@npm:4.24.3": - version: 4.24.3 - resolution: "@rollup/rollup-darwin-arm64@npm:4.24.3" - conditions: os=darwin & cpu=arm64 +"@floating-ui/utils@npm:^0.2.8": + version: 0.2.8 + resolution: "@floating-ui/utils@npm:0.2.8" + checksum: deb98bba017c4e073c7ad5740d4dec33a4d3e0942d412e677ac0504f3dade15a68fc6fd164d43c93c0bb0bcc5dc5015c1f4080dfb1a6161140fe660624f7c875 languageName: node linkType: hard -"@rollup/rollup-darwin-x64@npm:4.24.3": - version: 4.24.3 - resolution: "@rollup/rollup-darwin-x64@npm:4.24.3" - conditions: os=darwin & cpu=x64 +"@gar/promisify@npm:^1.1.3": + version: 1.1.3 + resolution: "@gar/promisify@npm:1.1.3" + checksum: 4059f790e2d07bf3c3ff3e0fec0daa8144fe35c1f6e0111c9921bd32106adaa97a4ab096ad7dab1e28ee6a9060083c4d1a4ada42a7f5f3f7a96b8812e2b757c1 languageName: node linkType: hard -"@rollup/rollup-freebsd-arm64@npm:4.24.3": - version: 4.24.3 - resolution: "@rollup/rollup-freebsd-arm64@npm:4.24.3" - conditions: os=freebsd & cpu=arm64 +"@gitbeaker/core@npm:^41.3.0": + version: 41.3.0 + resolution: "@gitbeaker/core@npm:41.3.0" + dependencies: + "@gitbeaker/requester-utils": ^41.3.0 + qs: ^6.12.2 + xcase: ^2.0.1 + checksum: 7b42c2af717002a54a1a6fdaa4056f2dbf6b52c6c33de68d1ad035b301609322f5b980d0da48918518dde105f4d88b39976cf4510a3d19a34e11b991c111e8fc languageName: node linkType: hard -"@rollup/rollup-freebsd-x64@npm:4.24.3": - version: 4.24.3 - resolution: "@rollup/rollup-freebsd-x64@npm:4.24.3" - conditions: os=freebsd & cpu=x64 +"@gitbeaker/requester-utils@npm:^41.3.0": + version: 41.3.0 + resolution: "@gitbeaker/requester-utils@npm:41.3.0" + dependencies: + picomatch-browser: ^2.2.6 + qs: ^6.12.2 + rate-limiter-flexible: ^4.0.1 + xcase: ^2.0.1 + checksum: 28dc17e995450988e62f9e76557bf0a2fe0a41db2ffc3e088ed5c71009daaa1f26563ad67b61738c6ca5bfde9d25f067a189f4bc0a7e097d5ffa49991d24cd38 languageName: node linkType: hard -"@rollup/rollup-linux-arm-gnueabihf@npm:4.24.3": - version: 4.24.3 - resolution: "@rollup/rollup-linux-arm-gnueabihf@npm:4.24.3" - conditions: os=linux & cpu=arm & libc=glibc +"@gitbeaker/rest@npm:^41.2.0": + version: 41.3.0 + resolution: "@gitbeaker/rest@npm:41.3.0" + dependencies: + "@gitbeaker/core": ^41.3.0 + "@gitbeaker/requester-utils": ^41.3.0 + checksum: 96aa8d5e7ff3ca0e27f874df8b435fb12d20e6975d2291de26c90b7c2e201c286ffd241884b609b2200ddc4e28a331563b1b2d6767a1dd0160fc341f88761016 languageName: node linkType: hard -"@rollup/rollup-linux-arm-musleabihf@npm:4.24.3": - version: 4.24.3 - resolution: "@rollup/rollup-linux-arm-musleabihf@npm:4.24.3" - conditions: os=linux & cpu=arm & libc=musl +"@google-cloud/container@npm:^5.0.0": + version: 5.19.0 + resolution: "@google-cloud/container@npm:5.19.0" + dependencies: + google-gax: ^4.0.3 + checksum: 90a31ce375115c9860dfbf2359ffc9052fccf73848e14909820d02a293d0d84705df41e7a24a0913bf093f0aa5b844e8d8d6b1a0f57a2590592e3c75579b4a37 languageName: node linkType: hard -"@rollup/rollup-linux-arm64-gnu@npm:4.24.3": - version: 4.24.3 - resolution: "@rollup/rollup-linux-arm64-gnu@npm:4.24.3" - conditions: os=linux & cpu=arm64 & libc=glibc +"@google-cloud/firestore@npm:^7.0.0": + version: 7.11.0 + resolution: "@google-cloud/firestore@npm:7.11.0" + dependencies: + "@opentelemetry/api": ^1.3.0 + fast-deep-equal: ^3.1.1 + functional-red-black-tree: ^1.0.1 + google-gax: ^4.3.3 + protobufjs: ^7.2.6 + checksum: b926123db5e3f37704c0aa51baee1726b72910a37c7fe99bbfe048afb1fba7fa40d7e5f7c017c7284ebd9273c0237da5c00fac81772ba0de1bed97dc9b71e709 languageName: node linkType: hard -"@rollup/rollup-linux-arm64-musl@npm:4.24.3": - version: 4.24.3 - resolution: "@rollup/rollup-linux-arm64-musl@npm:4.24.3" - conditions: os=linux & cpu=arm64 & libc=musl +"@google-cloud/paginator@npm:^5.0.0": + version: 5.0.2 + resolution: "@google-cloud/paginator@npm:5.0.2" + dependencies: + arrify: ^2.0.0 + extend: ^3.0.2 + checksum: eeb4a387807270ba9f69f22d7439d60c5bd6663573c2da9ea7d998c373d77671d77450b87f0f229c28418df654af4064e70554fa4dcde7edb3c0f5c05f208246 languageName: node linkType: hard -"@rollup/rollup-linux-powerpc64le-gnu@npm:4.24.3": - version: 4.24.3 - resolution: "@rollup/rollup-linux-powerpc64le-gnu@npm:4.24.3" - conditions: os=linux & cpu=ppc64 & libc=glibc +"@google-cloud/projectify@npm:^4.0.0": + version: 4.0.0 + resolution: "@google-cloud/projectify@npm:4.0.0" + checksum: 973d28414ae200433333a3c315aebb881ced42ea4afe6f3f8520d2fecded75e76c913f5189fea8fb29ce6ca36117c4f44001b3c503eecdd3ac7f02597a98354a languageName: node linkType: hard -"@rollup/rollup-linux-riscv64-gnu@npm:4.24.3": - version: 4.24.3 - resolution: "@rollup/rollup-linux-riscv64-gnu@npm:4.24.3" - conditions: os=linux & cpu=riscv64 & libc=glibc +"@google-cloud/promisify@npm:^4.0.0": + version: 4.0.0 + resolution: "@google-cloud/promisify@npm:4.0.0" + checksum: edd189398c5ed5b7b64a373177d77c87d076a248c31b8ae878bb91e2411d89860108bcb948c349f32628973a823bd131beb53ec008fd613a8cb466ef1d89de49 languageName: node linkType: hard -"@rollup/rollup-linux-s390x-gnu@npm:4.24.3": - version: 4.24.3 - resolution: "@rollup/rollup-linux-s390x-gnu@npm:4.24.3" - conditions: os=linux & cpu=s390x & libc=glibc +"@google-cloud/storage@npm:^7.0.0": + version: 7.13.0 + resolution: "@google-cloud/storage@npm:7.13.0" + dependencies: + "@google-cloud/paginator": ^5.0.0 + "@google-cloud/projectify": ^4.0.0 + "@google-cloud/promisify": ^4.0.0 + abort-controller: ^3.0.0 + async-retry: ^1.3.3 + duplexify: ^4.1.3 + fast-xml-parser: ^4.4.1 + gaxios: ^6.0.2 + google-auth-library: ^9.6.3 + html-entities: ^2.5.2 + mime: ^3.0.0 + p-limit: ^3.0.1 + retry-request: ^7.0.0 + teeny-request: ^9.0.0 + uuid: ^8.0.0 + checksum: b5e61b3123f2924aae17f3b1e9aa97092e999f2097c00d90d85329212219cd6b6a63a65fd84d228791b534e4747e96d430007c4a507b37f3e1d6e42a98d4e7e2 languageName: node linkType: hard -"@rollup/rollup-linux-x64-gnu@npm:4.24.3": - version: 4.24.3 - resolution: "@rollup/rollup-linux-x64-gnu@npm:4.24.3" - conditions: os=linux & cpu=x64 & libc=glibc +"@graphiql/react@npm:^0.20.3": + version: 0.20.4 + resolution: "@graphiql/react@npm:0.20.4" + dependencies: + "@graphiql/toolkit": ^0.9.1 + "@headlessui/react": ^1.7.15 + "@radix-ui/react-dialog": ^1.0.4 + "@radix-ui/react-dropdown-menu": ^2.0.5 + "@radix-ui/react-tooltip": ^1.0.6 + "@radix-ui/react-visually-hidden": ^1.0.3 + "@types/codemirror": ^5.60.8 + clsx: ^1.2.1 + codemirror: ^5.65.3 + codemirror-graphql: ^2.0.11 + copy-to-clipboard: ^3.2.0 + framer-motion: ^6.5.1 + graphql-language-service: ^5.2.0 + markdown-it: ^12.2.0 + set-value: ^4.1.0 + peerDependencies: + graphql: ^15.5.0 || ^16.0.0 + react: ^16.8.0 || ^17 || ^18 + react-dom: ^16.8.0 || ^17 || ^18 + checksum: 7460136ce65de5e4215fed141f80de2f74a7699ac6eeae1f1961745faa053548e5b8d997db7633e5fc54d8d562bf7b663af5d298178b366ba90aa6f2d6f858ff languageName: node linkType: hard -"@rollup/rollup-linux-x64-musl@npm:4.24.3": - version: 4.24.3 - resolution: "@rollup/rollup-linux-x64-musl@npm:4.24.3" - conditions: os=linux & cpu=x64 & libc=musl +"@graphiql/react@npm:^0.23.0": + version: 0.23.1 + resolution: "@graphiql/react@npm:0.23.1" + dependencies: + "@graphiql/toolkit": ^0.9.2 + "@headlessui/react": ^1.7.15 + "@radix-ui/react-dialog": ^1.0.4 + "@radix-ui/react-dropdown-menu": ^2.0.5 + "@radix-ui/react-tooltip": ^1.0.6 + "@radix-ui/react-visually-hidden": ^1.0.3 + "@types/codemirror": ^5.60.8 + clsx: ^1.2.1 + codemirror: ^5.65.3 + codemirror-graphql: ^2.0.13 + copy-to-clipboard: ^3.2.0 + framer-motion: ^6.5.1 + graphql-language-service: ^5.2.2 + markdown-it: ^14.1.0 + set-value: ^4.1.0 + peerDependencies: + graphql: ^15.5.0 || ^16.0.0 + react: ^16.8.0 || ^17 || ^18 + react-dom: ^16.8.0 || ^17 || ^18 + checksum: 688458fd55613cf7940b850d5207c54a28d0ea6e819d815caf2411b51b8b9e2e4b0df39d3b4329e0b12ff14fbf99a4dfd1d09c0397db5af80d664a589d962a1a + languageName: node + linkType: hard + +"@graphiql/toolkit@npm:^0.9.1, @graphiql/toolkit@npm:^0.9.2": + version: 0.9.2 + resolution: "@graphiql/toolkit@npm:0.9.2" + dependencies: + "@n1ru4l/push-pull-async-iterable-iterator": ^3.1.0 + meros: ^1.1.4 + peerDependencies: + graphql: ^15.5.0 || ^16.0.0 + graphql-ws: ">= 4.5.0" + peerDependenciesMeta: + graphql-ws: + optional: true + checksum: 4474a998a948d0df5cef8371245b0e895be40803a07e49231ab91798aa761880e6e4a684478a44b723c013f0e8206dab3d86e5b0fc9b688df035fa9f1fa29734 languageName: node linkType: hard -"@rollup/rollup-win32-arm64-msvc@npm:4.24.3": - version: 4.24.3 - resolution: "@rollup/rollup-win32-arm64-msvc@npm:4.24.3" - conditions: os=win32 & cpu=arm64 +"@graphql-hive/gateway-abort-signal-any@npm:^0.0.1": + version: 0.0.1 + resolution: "@graphql-hive/gateway-abort-signal-any@npm:0.0.1" + dependencies: + tslib: ^2.8.1 + checksum: 363f8876318add3fcddea78590e329e0e79d358ac41ceb51bef541b02f1d76ca34828f37d92a050236fdd11f930b65178f42be9469c0ec726decb2e337625331 languageName: node linkType: hard -"@rollup/rollup-win32-ia32-msvc@npm:4.24.3": - version: 4.24.3 - resolution: "@rollup/rollup-win32-ia32-msvc@npm:4.24.3" - conditions: os=win32 & cpu=ia32 +"@graphql-tools/batch-execute@npm:^9.0.10": + version: 9.0.10 + resolution: "@graphql-tools/batch-execute@npm:9.0.10" + dependencies: + "@graphql-tools/utils": ^10.6.2 + dataloader: ^2.2.3 + tslib: ^2.8.1 + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + checksum: 700009a491f95b97979d8b2becc2d4b4be22418b66ebd1e59fca9b6a9409ee4a981577c35123e3e54384245a9e71d12398158b22b1e4e8b7cd5c67a8873ed612 languageName: node linkType: hard -"@rollup/rollup-win32-x64-msvc@npm:4.24.3": - version: 4.24.3 - resolution: "@rollup/rollup-win32-x64-msvc@npm:4.24.3" - conditions: os=win32 & cpu=x64 +"@graphql-tools/delegate@npm:^10.2.8": + version: 10.2.8 + resolution: "@graphql-tools/delegate@npm:10.2.8" + dependencies: + "@graphql-tools/batch-execute": ^9.0.10 + "@graphql-tools/executor": ^1.3.8 + "@graphql-tools/schema": ^10.0.11 + "@graphql-tools/utils": ^10.6.2 + "@repeaterjs/repeater": ^3.0.6 + dataloader: ^2.2.3 + dset: ^3.1.2 + tslib: ^2.8.1 + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + checksum: 9ac5fc49e3da29b6892c9753d99474656541ef1196d63679d4a20df74a5b393341d4a10ba5ec68adce6310f44c0d01777ca7eaeb3f39ae290ace8db48f91e93d languageName: node linkType: hard -"@rtsao/scc@npm:^1.1.0": - version: 1.1.0 - resolution: "@rtsao/scc@npm:1.1.0" - checksum: 17d04adf404e04c1e61391ed97bca5117d4c2767a76ae3e879390d6dec7b317fcae68afbf9e98badee075d0b64fa60f287729c4942021b4d19cd01db77385c01 +"@graphql-tools/executor-graphql-ws@npm:^1.3.2": + version: 1.3.5 + resolution: "@graphql-tools/executor-graphql-ws@npm:1.3.5" + dependencies: + "@graphql-tools/utils": ^10.6.2 + "@whatwg-node/disposablestack": ^0.0.5 + graphql-ws: ^5.14.0 + isomorphic-ws: ^5.0.0 + tslib: ^2.8.1 + ws: ^8.17.1 + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + checksum: 0b5a7b7eb64427e1763399a6946cfe0d48e972b5e18831ba86238fcd3ab3fa1e1db7f213e493f6eaeb49abe274097060b22cf5277d5a959ae880a6daffc791bf languageName: node linkType: hard -"@rushstack/node-core-library@npm:5.9.0": - version: 5.9.0 - resolution: "@rushstack/node-core-library@npm:5.9.0" +"@graphql-tools/executor-http@npm:^1.1.9": + version: 1.2.1 + resolution: "@graphql-tools/executor-http@npm:1.2.1" dependencies: - ajv: ~8.13.0 - ajv-draft-04: ~1.0.0 - ajv-formats: ~3.0.1 - fs-extra: ~7.0.1 - import-lazy: ~4.0.0 - jju: ~1.4.0 - resolve: ~1.22.1 - semver: ~7.5.4 + "@graphql-hive/gateway-abort-signal-any": ^0.0.1 + "@graphql-tools/utils": ^10.6.2 + "@repeaterjs/repeater": ^3.0.4 + "@whatwg-node/disposablestack": ^0.0.5 + "@whatwg-node/fetch": ^0.10.1 + extract-files: ^11.0.0 + meros: ^1.2.1 + tslib: ^2.8.1 + value-or-promise: ^1.0.12 peerDependencies: - "@types/node": "*" - peerDependenciesMeta: - "@types/node": - optional: true - checksum: beb558f118a796260f7df38b48b6669a94bbdb9711715785e0c5a426bd3a38c14721c03fc05e7a33883ec25a331ef0fb9e36438bb451ace021a7248a4f1fc74b + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + checksum: c837973e555ab78a85c8bb23c7218c831a7ee3a4b40f0873bf5053dbda7ef7faa76f5f4d70682a9176f719d84a6959b32acaec05e1f11e91784d8f60153b5646 languageName: node linkType: hard -"@rushstack/rig-package@npm:0.5.3": - version: 0.5.3 - resolution: "@rushstack/rig-package@npm:0.5.3" +"@graphql-tools/executor-legacy-ws@npm:^1.1.7": + version: 1.1.7 + resolution: "@graphql-tools/executor-legacy-ws@npm:1.1.7" dependencies: - resolve: ~1.22.1 - strip-json-comments: ~3.1.1 - checksum: bf3eadfc434bff273893efd22b319fe159d0e3b95729cb32ce3ad9f4ab4b6fabe3c4dd7f03ee0ddc7b480f0d989e908349eae6d6dce3500f896728a085af7aab + "@graphql-tools/utils": ^10.6.4 + "@types/ws": ^8.0.0 + isomorphic-ws: ^5.0.0 + tslib: ^2.4.0 + ws: ^8.17.1 + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + checksum: cb699104527140f48886af400dbf409e73e17a387de8278396d021222f887af42a5e74381a1c229ff5282833f47fc75a04a41eb936fe28868c54beb8be282b14 languageName: node linkType: hard -"@rushstack/terminal@npm:0.14.2": - version: 0.14.2 - resolution: "@rushstack/terminal@npm:0.14.2" +"@graphql-tools/executor@npm:^1.3.8": + version: 1.3.9 + resolution: "@graphql-tools/executor@npm:1.3.9" dependencies: - "@rushstack/node-core-library": 5.9.0 - supports-color: ~8.1.1 + "@graphql-tools/utils": ^10.6.4 + "@graphql-typed-document-node/core": ^3.2.0 + "@repeaterjs/repeater": ^3.0.4 + "@whatwg-node/disposablestack": ^0.0.5 + tslib: ^2.4.0 + value-or-promise: ^1.0.12 peerDependencies: - "@types/node": "*" - peerDependenciesMeta: - "@types/node": - optional: true - checksum: 90d38e6979737dcd97fdfdcebcc378194eed32a994341846235769273b6446b702e53e51e18fc8a373e8ed989c5622216aa6804198b8c7ae0e65cd6b103b90a1 + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + checksum: c148b9e99278dc23048f5155e75139c5a2d7a94482fa489443f0ed9d3fdaa59019107d1ceb4fd2c477872d52d33af480cf11bfb0b14f31b7bfdb1f6945074dad languageName: node linkType: hard -"@rushstack/ts-command-line@npm:4.23.0": - version: 4.23.0 - resolution: "@rushstack/ts-command-line@npm:4.23.0" +"@graphql-tools/graphql-file-loader@npm:^8.0.0": + version: 8.0.8 + resolution: "@graphql-tools/graphql-file-loader@npm:8.0.8" dependencies: - "@rushstack/terminal": 0.14.2 - "@types/argparse": 1.0.38 - argparse: ~1.0.9 - string-argv: ~0.3.1 - checksum: 4f3d77c5b2998bbc551d02e882f0c7b8e7aed0d97ad6e4ee45b2d6281a209087f738fc1a021397088ffbe666c4eae462c1d8c4a14dc031dddee2af055b12f794 + "@graphql-tools/import": 7.0.8 + "@graphql-tools/utils": ^10.6.4 + globby: ^11.0.3 + tslib: ^2.4.0 + unixify: ^1.0.0 + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + checksum: eb00c546aa6707d9b6e2267f1d16a41b96749a0b2397880bfb568842ab9ee1ed30b946fd3601c5d2b89b41abf8c6b038f96861cf9c829d033df89844ddddf345 languageName: node linkType: hard -"@sinclair/typebox@npm:^0.27.8": - version: 0.27.8 - resolution: "@sinclair/typebox@npm:0.27.8" - checksum: 00bd7362a3439021aa1ea51b0e0d0a0e8ca1351a3d54c606b115fdcc49b51b16db6e5f43b4fe7a28c38688523e22a94d49dd31168868b655f0d4d50f032d07a1 +"@graphql-tools/import@npm:7.0.8": + version: 7.0.8 + resolution: "@graphql-tools/import@npm:7.0.8" + dependencies: + "@graphql-tools/utils": ^10.6.4 + resolve-from: 5.0.0 + tslib: ^2.4.0 + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + checksum: e5205fc1580491d5ce87657434f40ba1989a390c870e8b3237cd024adbbc42b41d94cf1ac8d7363ea5f0291a20cdadea8c30355eeb1b3fcadbd8172e4440028a languageName: node linkType: hard -"@sinonjs/commons@npm:^3.0.0": - version: 3.0.1 - resolution: "@sinonjs/commons@npm:3.0.1" +"@graphql-tools/json-file-loader@npm:^8.0.0": + version: 8.0.8 + resolution: "@graphql-tools/json-file-loader@npm:8.0.8" dependencies: - type-detect: 4.0.8 - checksum: a7c3e7cc612352f4004873747d9d8b2d4d90b13a6d483f685598c945a70e734e255f1ca5dc49702515533c403b32725defff148177453b3f3915bcb60e9d4601 + "@graphql-tools/utils": ^10.6.4 + globby: ^11.0.3 + tslib: ^2.4.0 + unixify: ^1.0.0 + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + checksum: 41a5a3434c3e9f65c3a61e72d1f8a4a35cde1d5be8910a9990d23c24ff18a8a31e176c8c91e633ac51f38d5663e6783540daa59d938416025a1e0600f64b0a15 languageName: node linkType: hard -"@sinonjs/fake-timers@npm:^10.0.2": - version: 10.3.0 - resolution: "@sinonjs/fake-timers@npm:10.3.0" +"@graphql-tools/load@npm:^8.0.0": + version: 8.0.9 + resolution: "@graphql-tools/load@npm:8.0.9" dependencies: - "@sinonjs/commons": ^3.0.0 - checksum: 614d30cb4d5201550c940945d44c9e0b6d64a888ff2cd5b357f95ad6721070d6b8839cd10e15b76bf5e14af0bcc1d8f9ec00d49a46318f1f669a4bec1d7f3148 + "@graphql-tools/schema": ^10.0.13 + "@graphql-tools/utils": ^10.6.4 + p-limit: 3.1.0 + tslib: ^2.4.0 + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + checksum: 5154619ef845e34ead6fdcb9ed2c1a44783ec940972655e31a8b534949ec85a5bc14c4bede8a91c5571154517fed8b2ffcb525e2643de51a4fe886d314fc1932 languageName: node linkType: hard -"@smithy/abort-controller@npm:^3.1.6": - version: 3.1.6 - resolution: "@smithy/abort-controller@npm:3.1.6" +"@graphql-tools/merge@npm:8.3.1": + version: 8.3.1 + resolution: "@graphql-tools/merge@npm:8.3.1" dependencies: - "@smithy/types": ^3.6.0 - tslib: ^2.6.2 - checksum: abba34cc47b6f7951402da1f94465616b84dedf55e0b0467b53f7848b9cb3e82b94869fa637278aa2f65809613e872582791053fd23299e026edada4a5ec1c1c + "@graphql-tools/utils": 8.9.0 + tslib: ^2.4.0 + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + checksum: 16af6be2249f4f500a4c2f5d3db2e0efd56ad69b5e10499649c6fc979c257af12e131112304a16699654b54daab37a80737e0538478bc45a0053b9bc859a7ac1 languageName: node linkType: hard -"@smithy/chunked-blob-reader-native@npm:^3.0.1": - version: 3.0.1 - resolution: "@smithy/chunked-blob-reader-native@npm:3.0.1" +"@graphql-tools/merge@npm:^9.0.0, @graphql-tools/merge@npm:^9.0.14": + version: 9.0.14 + resolution: "@graphql-tools/merge@npm:9.0.14" dependencies: - "@smithy/util-base64": ^3.0.0 - tslib: ^2.6.2 - checksum: b133aebc7662923f88eb859acf3dee95d54fb99effef3ed34384e137d479a8e88549f7888d037919f2821480689ea57892c9d7eeb730fa622ee9f55e3bb9a684 + "@graphql-tools/utils": ^10.6.4 + tslib: ^2.4.0 + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + checksum: 07a65bef47d60317a4d7ed593efa1355e01016e9f0401a4fd22d82d42b17b7a38223612a80a3a8c23d657ed75e4ebe80888814ea33f90b8b2a0d8dfac49b4e3c languageName: node linkType: hard -"@smithy/chunked-blob-reader@npm:^4.0.0": - version: 4.0.0 - resolution: "@smithy/chunked-blob-reader@npm:4.0.0" +"@graphql-tools/schema@npm:^10.0.11, @graphql-tools/schema@npm:^10.0.13": + version: 10.0.13 + resolution: "@graphql-tools/schema@npm:10.0.13" dependencies: - tslib: ^2.6.2 - checksum: 45107be7b56efc598e445bf73e45694be10b933dcd5c0c38910311c463eff473e1eb82452b11ed6772986b518565ee8f3bec68cdfefe7c4a9a0c4b9968b582d8 + "@graphql-tools/merge": ^9.0.14 + "@graphql-tools/utils": ^10.6.4 + tslib: ^2.4.0 + value-or-promise: ^1.0.12 + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + checksum: a8a9505da30cda6b2e52309f104f3b76d9703b47357607e449d11907cef50ceeaf4d252751bffcbbcfbf8cf8d1fe4140655f2ef28dd59f88c88646e756393ad1 languageName: node linkType: hard -"@smithy/config-resolver@npm:^3.0.10, @smithy/config-resolver@npm:^3.0.9": - version: 3.0.10 - resolution: "@smithy/config-resolver@npm:3.0.10" +"@graphql-tools/schema@npm:^8.5.0": + version: 8.5.1 + resolution: "@graphql-tools/schema@npm:8.5.1" dependencies: - "@smithy/node-config-provider": ^3.1.9 - "@smithy/types": ^3.6.0 - "@smithy/util-config-provider": ^3.0.0 - "@smithy/util-middleware": ^3.0.8 - tslib: ^2.6.2 - checksum: 55c2355db7eabfd70f0bf288d58cb0238f43b754d91f46febf7fd04617e6107d26e2899ede2b37fbd977980bb12fdbdb688fc5f53654202e946fe3c258cef5d1 + "@graphql-tools/merge": 8.3.1 + "@graphql-tools/utils": 8.9.0 + tslib: ^2.4.0 + value-or-promise: 1.0.11 + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + checksum: 91363cd4371e347af40ef66f7d903b5d4f5998bfaec9214768e6a795136ef6372f9f225e05e18daacd929e23695811f15e791c6cbe082bf5b5d03b16b1f874f8 languageName: node linkType: hard -"@smithy/core@npm:^2.4.8, @smithy/core@npm:^2.5.1": - version: 2.5.1 - resolution: "@smithy/core@npm:2.5.1" +"@graphql-tools/url-loader@npm:^8.0.0": + version: 8.0.20 + resolution: "@graphql-tools/url-loader@npm:8.0.20" dependencies: - "@smithy/middleware-serde": ^3.0.8 - "@smithy/protocol-http": ^4.1.5 - "@smithy/types": ^3.6.0 - "@smithy/util-body-length-browser": ^3.0.0 - "@smithy/util-middleware": ^3.0.8 - "@smithy/util-stream": ^3.2.1 - "@smithy/util-utf8": ^3.0.0 - tslib: ^2.6.2 - checksum: 9175f48eca64f6b304335e32e09c6276aadf7d26cb9180da0a120a2b07c12d8dbe51de2ccce78e98c60729ce4eefe28e7ca95c169432a8049560564d780d1a81 + "@ardatan/sync-fetch": ^0.0.1 + "@graphql-tools/executor-graphql-ws": ^1.3.2 + "@graphql-tools/executor-http": ^1.1.9 + "@graphql-tools/executor-legacy-ws": ^1.1.7 + "@graphql-tools/utils": ^10.6.4 + "@graphql-tools/wrap": ^10.0.16 + "@types/ws": ^8.0.0 + "@whatwg-node/fetch": ^0.10.0 + isomorphic-ws: ^5.0.0 + tslib: ^2.4.0 + value-or-promise: ^1.0.11 + ws: ^8.17.1 + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + checksum: fed280fb0afef3a883ea5ce765af992f3808f37983bc9a6b6a050c51d430e3b94131378db966c5c65f4d2c3ecb6031faef7097ac2a4e6d31601bddfba03b5403 languageName: node linkType: hard -"@smithy/credential-provider-imds@npm:^3.2.4, @smithy/credential-provider-imds@npm:^3.2.5": - version: 3.2.5 - resolution: "@smithy/credential-provider-imds@npm:3.2.5" +"@graphql-tools/utils@npm:8.9.0": + version: 8.9.0 + resolution: "@graphql-tools/utils@npm:8.9.0" dependencies: - "@smithy/node-config-provider": ^3.1.9 - "@smithy/property-provider": ^3.1.8 - "@smithy/types": ^3.6.0 - "@smithy/url-parser": ^3.0.8 - tslib: ^2.6.2 - checksum: 4c8941e3c3806f605930c31e461b0b0fd6384f782c7df92b35e30581eca02d7c4c6d6f2b1c5cdb08fcf4823d98f0ceadc8481def968f1266f761df5dac672d8f + tslib: ^2.4.0 + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + checksum: 8d1d8a11722e211dc8723cd3fd7a97fa5401ab22146e4240a0f9d45547792476c34814ff914524578beec961db7b0ff23a6ddff8fe059764537e594cff35c906 languageName: node linkType: hard -"@smithy/eventstream-codec@npm:^3.1.7": - version: 3.1.7 - resolution: "@smithy/eventstream-codec@npm:3.1.7" +"@graphql-tools/utils@npm:^10.0.0, @graphql-tools/utils@npm:^10.6.2, @graphql-tools/utils@npm:^10.6.4": + version: 10.6.4 + resolution: "@graphql-tools/utils@npm:10.6.4" dependencies: - "@aws-crypto/crc32": 5.2.0 - "@smithy/types": ^3.6.0 - "@smithy/util-hex-encoding": ^3.0.0 - tslib: ^2.6.2 - checksum: e0a3b187e984ca6a248dbd591f9c4d5b981df5018c46c4cb9ebf47cf5f354be124471a121e9dc9c25ce80e089f2ed5847a15666e89c83327d7e25ea4d46fb92e + "@graphql-typed-document-node/core": ^3.1.1 + cross-inspect: 1.0.1 + dset: ^3.1.2 + tslib: ^2.4.0 + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + checksum: b3915ae1508f26fc777624fbeb93864981c29419a6fbcf72fbd28c4b5617bf90323d6198a84938d56c266f7de9bf74dca7672985642a1556c4a8854b3e3f7ff0 languageName: node linkType: hard -"@smithy/eventstream-serde-browser@npm:^3.0.10": - version: 3.0.11 - resolution: "@smithy/eventstream-serde-browser@npm:3.0.11" +"@graphql-tools/utils@npm:^8.8.0": + version: 8.13.1 + resolution: "@graphql-tools/utils@npm:8.13.1" dependencies: - "@smithy/eventstream-serde-universal": ^3.0.10 - "@smithy/types": ^3.6.0 - tslib: ^2.6.2 - checksum: ca430cd9541889f1e22a508247c52f84387b51c1c580bdd7acd93ca74347bcaaf1cdfbf04709ce3667afcfa0e3602bbfcb018a6290b3966411a3aa48a38f3aa7 + tslib: ^2.4.0 + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + checksum: ff04fdeb29e9ac596ea53386cd5b23cd741bb14c1997c6b0ba3c34ca165bd82b528a355e8c8e2ba726eb39e833ba9cbb0851ba0addb8c6d367089a1145bf9a49 languageName: node linkType: hard -"@smithy/eventstream-serde-config-resolver@npm:^3.0.7": - version: 3.0.8 - resolution: "@smithy/eventstream-serde-config-resolver@npm:3.0.8" +"@graphql-tools/wrap@npm:^10.0.16": + version: 10.0.26 + resolution: "@graphql-tools/wrap@npm:10.0.26" dependencies: - "@smithy/types": ^3.6.0 - tslib: ^2.6.2 - checksum: 44da1b399e296c713643e60ff7fbd34a62c8bba147ea515e6ba98293df11275b62ada04307750d8f8015f717bbe13d317453f47e0d02dc714debc4e043eb7105 + "@graphql-tools/delegate": ^10.2.8 + "@graphql-tools/schema": ^10.0.11 + "@graphql-tools/utils": ^10.6.2 + tslib: ^2.8.1 + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + checksum: 353d7f98bf18592b4596b185421dc22c9290776bb4cc57964522adc49757f8a85aa0e42ee747ede9e8532a09aa7668410f7ae7547ee22d50f362ed8ccc9bbf9a languageName: node linkType: hard -"@smithy/eventstream-serde-node@npm:^3.0.9": - version: 3.0.10 - resolution: "@smithy/eventstream-serde-node@npm:3.0.10" - dependencies: - "@smithy/eventstream-serde-universal": ^3.0.10 - "@smithy/types": ^3.6.0 - tslib: ^2.6.2 - checksum: 8e8f71bfa25d017f7914ad74258cf5f8c68a6bdc33ab32b126d95e0cb7ea796488d06405695f90e8af90668302e282ac8d4e66e70eca48d92d0cfa3b8e9592f2 +"@graphql-typed-document-node/core@npm:^3.1.1, @graphql-typed-document-node/core@npm:^3.2.0": + version: 3.2.0 + resolution: "@graphql-typed-document-node/core@npm:3.2.0" + peerDependencies: + graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + checksum: fa44443accd28c8cf4cb96aaaf39d144a22e8b091b13366843f4e97d19c7bfeaf609ce3c7603a4aeffe385081eaf8ea245d078633a7324c11c5ec4b2011bb76d languageName: node linkType: hard -"@smithy/eventstream-serde-universal@npm:^3.0.10": - version: 3.0.10 - resolution: "@smithy/eventstream-serde-universal@npm:3.0.10" +"@grpc/grpc-js@npm:^1.10.9": + version: 1.12.4 + resolution: "@grpc/grpc-js@npm:1.12.4" dependencies: - "@smithy/eventstream-codec": ^3.1.7 - "@smithy/types": ^3.6.0 - tslib: ^2.6.2 - checksum: ee3717312841438f5e173866475f47aa7a56a9426657bc89fffc497c15356617688ed17d6a09533918c11fbff68ce6f7998fd9d746030a9bc25a5e353ca8e9c0 + "@grpc/proto-loader": ^0.7.13 + "@js-sdsl/ordered-map": ^4.4.2 + checksum: 6dab69c70173735b775717361662ed5a931d2ca1bc9f3ed5f7095a05f26eb59489b1805b0a8f78b77f34d48a896f358ca951f0ce38d8053d18b0d5d0fd92837f languageName: node linkType: hard -"@smithy/fetch-http-handler@npm:^3.2.9": - version: 3.2.9 - resolution: "@smithy/fetch-http-handler@npm:3.2.9" +"@grpc/proto-loader@npm:^0.7.13": + version: 0.7.13 + resolution: "@grpc/proto-loader@npm:0.7.13" dependencies: - "@smithy/protocol-http": ^4.1.4 - "@smithy/querystring-builder": ^3.0.7 - "@smithy/types": ^3.5.0 - "@smithy/util-base64": ^3.0.0 - tslib: ^2.6.2 - checksum: 3b8eed12bff9d39e23989ea424e112530e01c81f983f15a3bfc4265baa06feb230267d095588705c5a8002cc4a2bfcd834b0341bff60a6236dcc24599ecf8327 + lodash.camelcase: ^4.3.0 + long: ^5.0.0 + protobufjs: ^7.2.5 + yargs: ^17.7.2 + bin: + proto-loader-gen-types: build/bin/proto-loader-gen-types.js + checksum: 399c1b8a4627f93dc31660d9636ea6bf58be5675cc7581e3df56a249369e5be02c6cd0d642c5332b0d5673bc8621619bc06fb045aa3e8f57383737b5d35930dc languageName: node linkType: hard -"@smithy/fetch-http-handler@npm:^4.0.0": - version: 4.0.0 - resolution: "@smithy/fetch-http-handler@npm:4.0.0" - dependencies: - "@smithy/protocol-http": ^4.1.5 - "@smithy/querystring-builder": ^3.0.8 - "@smithy/types": ^3.6.0 - "@smithy/util-base64": ^3.0.0 - tslib: ^2.6.2 - checksum: 43fc88515227e0d66b6b6a56a8e7a7f9c9690b32c51265859d40c1f4ace3a8a9ebba78e095715fe85a508d32c4f237c09f722e1e0c86d15a3fc81edc961a5051 +"@hapi/hoek@npm:^9.0.0, @hapi/hoek@npm:^9.3.0": + version: 9.3.0 + resolution: "@hapi/hoek@npm:9.3.0" + checksum: 4771c7a776242c3c022b168046af4e324d116a9d2e1d60631ee64f474c6e38d1bb07092d898bf95c7bc5d334c5582798a1456321b2e53ca817d4e7c88bc25b43 languageName: node linkType: hard -"@smithy/hash-blob-browser@npm:^3.1.6": - version: 3.1.7 - resolution: "@smithy/hash-blob-browser@npm:3.1.7" +"@hapi/topo@npm:^5.1.0": + version: 5.1.0 + resolution: "@hapi/topo@npm:5.1.0" dependencies: - "@smithy/chunked-blob-reader": ^4.0.0 - "@smithy/chunked-blob-reader-native": ^3.0.1 - "@smithy/types": ^3.6.0 - tslib: ^2.6.2 - checksum: d1e790e63147357f1c5b210cacf727f6ad75c78d8246c98a1d9af17a757ce9d2621a0a21e5171b4de9526ce731db15a1288c489c6f396d54314f74a29d667ae4 + "@hapi/hoek": ^9.0.0 + checksum: 604dfd5dde76d5c334bd03f9001fce69c7ce529883acf92da96f4fe7e51221bf5e5110e964caca287a6a616ba027c071748ab636ff178ad750547fba611d6014 languageName: node linkType: hard -"@smithy/hash-node@npm:^3.0.7": - version: 3.0.8 - resolution: "@smithy/hash-node@npm:3.0.8" +"@headlessui/react@npm:^1.7.15": + version: 1.7.19 + resolution: "@headlessui/react@npm:1.7.19" dependencies: - "@smithy/types": ^3.6.0 - "@smithy/util-buffer-from": ^3.0.0 - "@smithy/util-utf8": ^3.0.0 - tslib: ^2.6.2 - checksum: 9a2e2e8ea044008345e64406a5ecbc23a507b00eae42e71455f0b05c638a21da57a68e43d73254236203187d7943b864c750fc62f95825cc5340dd95767530c3 + "@tanstack/react-virtual": ^3.0.0-beta.60 + client-only: ^0.0.1 + peerDependencies: + react: ^16 || ^17 || ^18 + react-dom: ^16 || ^17 || ^18 + checksum: 2a343a5fcf1f45e870cc94613231b89a8da78114001ffafa4751a0eceae7569ff9237aff1f2aedfa6f6e53ee3bb9ba5e5d19ebf1878fee3ff4f3c733fddc1087 languageName: node linkType: hard -"@smithy/hash-stream-node@npm:^3.1.6": - version: 3.1.7 - resolution: "@smithy/hash-stream-node@npm:3.1.7" +"@httptoolkit/httpolyglot@npm:^2.2.1": + version: 2.2.2 + resolution: "@httptoolkit/httpolyglot@npm:2.2.2" dependencies: - "@smithy/types": ^3.6.0 - "@smithy/util-utf8": ^3.0.0 - tslib: ^2.6.2 - checksum: 2bd580a8759a68c991fa5817d47e828029648a870ad52da8ba175819d6324603934e0d34b83139ac21ddb265f9adcaffbd696105ca0783b193fd5805dc3e3ca3 + "@types/node": "*" + checksum: a08a7ef025bbcf2163dd2d3a9b2c4783c353bc5b0a8a07c65aef87fa530500dc77942db83e28e51bb5d1fc2cb992011622d05ae1347340aa4565c4eefa38ee22 languageName: node linkType: hard -"@smithy/invalid-dependency@npm:^3.0.7": - version: 3.0.8 - resolution: "@smithy/invalid-dependency@npm:3.0.8" +"@httptoolkit/subscriptions-transport-ws@npm:^0.11.2": + version: 0.11.2 + resolution: "@httptoolkit/subscriptions-transport-ws@npm:0.11.2" dependencies: - "@smithy/types": ^3.6.0 - tslib: ^2.6.2 - checksum: ad55921e703ea3396a7d03b4515c2c0100d3c494865594a8a73b160e2913cac442d61a2545bcb248fedf00bb150cce2c33827d1d12527e34070e7fd8e114d2d6 + backo2: ^1.0.2 + eventemitter3: ^3.1.0 + iterall: ^1.2.1 + symbol-observable: ^1.0.4 + ws: ^8.8.0 + peerDependencies: + graphql: ^15.7.2 || ^16.0.0 + checksum: a2d99b4d8e46b46fd5d4fac3456fa685dba7d876908e632c73af014fdcc92ae1f77f8c542e8b63ae747a164e9d2e4be95c5046665f9e7b5622f02dc6d7d04549 languageName: node linkType: hard -"@smithy/is-array-buffer@npm:^2.2.0": - version: 2.2.0 - resolution: "@smithy/is-array-buffer@npm:2.2.0" +"@httptoolkit/websocket-stream@npm:^6.0.1": + version: 6.0.1 + resolution: "@httptoolkit/websocket-stream@npm:6.0.1" dependencies: - tslib: ^2.6.2 - checksum: cd12c2e27884fec89ca8966d33c9dc34d3234efe89b33a9b309c61ebcde463e6f15f6a02d31d4fddbfd6e5904743524ca5b95021b517b98fe10957c2da0cd5fc + "@types/ws": "*" + duplexify: ^3.5.1 + inherits: ^2.0.1 + isomorphic-ws: ^4.0.1 + readable-stream: ^2.3.3 + safe-buffer: ^5.1.2 + ws: "*" + xtend: ^4.0.0 + checksum: e70059c24499abab695e7bc269aefc1a751d161296975a4af932577497c4ecd66b7745dc0c63608e06989442db996d76e563bce08156563bac7bc3411ad9bcee languageName: node linkType: hard -"@smithy/is-array-buffer@npm:^3.0.0": - version: 3.0.0 - resolution: "@smithy/is-array-buffer@npm:3.0.0" +"@humanwhocodes/config-array@npm:^0.13.0": + version: 0.13.0 + resolution: "@humanwhocodes/config-array@npm:0.13.0" dependencies: - tslib: ^2.6.2 - checksum: ce7440fcb1ce3c46722cff11c33e2f62a9df86d74fa2054a8e6b540302a91211cf6e4e3b1b7aac7030c6c8909158c1b6867c394201fa8afc6b631979956610e5 + "@humanwhocodes/object-schema": ^2.0.3 + debug: ^4.3.1 + minimatch: ^3.0.5 + checksum: eae69ff9134025dd2924f0b430eb324981494be26f0fddd267a33c28711c4db643242cf9fddf7dadb9d16c96b54b2d2c073e60a56477df86e0173149313bd5d6 languageName: node linkType: hard -"@smithy/md5-js@npm:^3.0.7": - version: 3.0.8 - resolution: "@smithy/md5-js@npm:3.0.8" - dependencies: - "@smithy/types": ^3.6.0 - "@smithy/util-utf8": ^3.0.0 - tslib: ^2.6.2 - checksum: 3159a01ff4fab7ebbfa41c2ba6baa5f4c2333dafff6232dea956fc82a6354ad97a70c67f4a28e7c919a5e6be418a3c2427073948739941b194ab9bd238e13290 +"@humanwhocodes/module-importer@npm:^1.0.1": + version: 1.0.1 + resolution: "@humanwhocodes/module-importer@npm:1.0.1" + checksum: 0fd22007db8034a2cdf2c764b140d37d9020bbfce8a49d3ec5c05290e77d4b0263b1b972b752df8c89e5eaa94073408f2b7d977aed131faf6cf396ebb5d7fb61 languageName: node linkType: hard -"@smithy/middleware-content-length@npm:^3.0.9": - version: 3.0.10 - resolution: "@smithy/middleware-content-length@npm:3.0.10" - dependencies: - "@smithy/protocol-http": ^4.1.5 - "@smithy/types": ^3.6.0 - tslib: ^2.6.2 - checksum: 776fd9014240109328b6823be8649322390bde7aa468750920be3e6ed268a4e380f5b3fcfbe15b2b8af1b6e4b4fedda9a446b76cc247ca252b95380646ac80b5 +"@humanwhocodes/object-schema@npm:^2.0.3": + version: 2.0.3 + resolution: "@humanwhocodes/object-schema@npm:2.0.3" + checksum: d3b78f6c5831888c6ecc899df0d03bcc25d46f3ad26a11d7ea52944dc36a35ef543fad965322174238d677a43d5c694434f6607532cff7077062513ad7022631 languageName: node linkType: hard -"@smithy/middleware-endpoint@npm:^3.1.4, @smithy/middleware-endpoint@npm:^3.2.1": - version: 3.2.1 - resolution: "@smithy/middleware-endpoint@npm:3.2.1" +"@ianvs/prettier-plugin-sort-imports@npm:^4.3.1": + version: 4.3.1 + resolution: "@ianvs/prettier-plugin-sort-imports@npm:4.3.1" dependencies: - "@smithy/core": ^2.5.1 - "@smithy/middleware-serde": ^3.0.8 - "@smithy/node-config-provider": ^3.1.9 - "@smithy/shared-ini-file-loader": ^3.1.9 - "@smithy/types": ^3.6.0 - "@smithy/url-parser": ^3.0.8 - "@smithy/util-middleware": ^3.0.8 - tslib: ^2.6.2 - checksum: acc41e1b665b6a0c3cf2952a44b4cd1ce980866b44fe4b0ed9208a6067c3aa15ebe646623b14375be6c04ab73fa74fb95eeeca6905fc27092ce93495c77d8b9b + "@babel/core": ^7.24.0 + "@babel/generator": ^7.23.6 + "@babel/parser": ^7.24.0 + "@babel/traverse": ^7.24.0 + "@babel/types": ^7.24.0 + semver: ^7.5.2 + peerDependencies: + "@vue/compiler-sfc": 2.7.x || 3.x + prettier: 2 || 3 + peerDependenciesMeta: + "@vue/compiler-sfc": + optional: true + checksum: 50af027d8b182893f247efa4c197259919c4796bea216b2a2323d0ced327c9f22785d7f8866b084566491fe7943640bb75457a724957bda92ee4c633fb2be9e6 languageName: node linkType: hard -"@smithy/middleware-retry@npm:^3.0.23": - version: 3.0.25 - resolution: "@smithy/middleware-retry@npm:3.0.25" - dependencies: - "@smithy/node-config-provider": ^3.1.9 - "@smithy/protocol-http": ^4.1.5 - "@smithy/service-error-classification": ^3.0.8 - "@smithy/smithy-client": ^3.4.2 - "@smithy/types": ^3.6.0 - "@smithy/util-middleware": ^3.0.8 - "@smithy/util-retry": ^3.0.8 - tslib: ^2.6.2 - uuid: ^9.0.1 - checksum: d10264cbff951b3b9585b54cc0e67de6099ed67461a34d83266e197fc48bea45fc7207ed7329c567390be6f08aeb84a6e7fef5f4fd770da9cad0028fc6f61d65 +"@internal/kiali@workspace:.": + version: 0.0.0-use.local + resolution: "@internal/kiali@workspace:." + dependencies: + "@backstage/cli": ^0.28.0 + "@backstage/e2e-test-utils": ^0.1.1 + "@backstage/repo-tools": ^0.10.0 + "@changesets/cli": ^2.27.1 + "@ianvs/prettier-plugin-sort-imports": ^4.3.1 + "@spotify/prettier-config": ^12.0.0 + concurrently: ^8.2.2 + knip: ^5.27.4 + node-gyp: ^9.0.0 + prettier: ^2.3.2 + typescript: ~5.3.0 + languageName: unknown + linkType: soft + +"@ioredis/commands@npm:^1.1.1": + version: 1.2.0 + resolution: "@ioredis/commands@npm:1.2.0" + checksum: 9b20225ba36ef3e5caf69b3c0720597c3016cc9b1e157f519ea388f621dd9037177f84cfe7e25c4c32dad7dd90c70ff9123cd411f747e053cf292193c9c461e2 languageName: node linkType: hard -"@smithy/middleware-serde@npm:^3.0.7, @smithy/middleware-serde@npm:^3.0.8": - version: 3.0.8 - resolution: "@smithy/middleware-serde@npm:3.0.8" +"@isaacs/cliui@npm:^8.0.2": + version: 8.0.2 + resolution: "@isaacs/cliui@npm:8.0.2" dependencies: - "@smithy/types": ^3.6.0 - tslib: ^2.6.2 - checksum: 3d1ba269680bcf0cea6ea1c0e6d20eaf9de3597a687533607cc1ec49dad8669424e41bf3498dcdd21613f7791b0406db1846c2cdd6571682e4be8cb8055a85da + string-width: ^5.1.2 + string-width-cjs: "npm:string-width@^4.2.0" + strip-ansi: ^7.0.1 + strip-ansi-cjs: "npm:strip-ansi@^6.0.1" + wrap-ansi: ^8.1.0 + wrap-ansi-cjs: "npm:wrap-ansi@^7.0.0" + checksum: 4a473b9b32a7d4d3cfb7a614226e555091ff0c5a29a1734c28c72a182c2f6699b26fc6b5c2131dfd841e86b185aea714c72201d7c98c2fba5f17709333a67aeb languageName: node linkType: hard -"@smithy/middleware-stack@npm:^3.0.7, @smithy/middleware-stack@npm:^3.0.8": - version: 3.0.8 - resolution: "@smithy/middleware-stack@npm:3.0.8" +"@istanbuljs/load-nyc-config@npm:^1.0.0": + version: 1.1.0 + resolution: "@istanbuljs/load-nyc-config@npm:1.1.0" dependencies: - "@smithy/types": ^3.6.0 - tslib: ^2.6.2 - checksum: c4a24dcdb1db8f347d266ee97676daf1f5bb495aa6c1e59992378bebe39265be14be5c3f7cf9ae35a8ffe68476cfcfe9000a87e9b00062538359c4507f4060ea + camelcase: ^5.3.1 + find-up: ^4.1.0 + get-package-type: ^0.1.0 + js-yaml: ^3.13.1 + resolve-from: ^5.0.0 + checksum: d578da5e2e804d5c93228450a1380e1a3c691de4953acc162f387b717258512a3e07b83510a936d9fab03eac90817473917e24f5d16297af3867f59328d58568 languageName: node linkType: hard -"@smithy/node-config-provider@npm:^3.1.8, @smithy/node-config-provider@npm:^3.1.9": - version: 3.1.9 - resolution: "@smithy/node-config-provider@npm:3.1.9" - dependencies: - "@smithy/property-provider": ^3.1.8 - "@smithy/shared-ini-file-loader": ^3.1.9 - "@smithy/types": ^3.6.0 - tslib: ^2.6.2 - checksum: fc0d27ff620475f406cb0f3e8527e8dcf56449ec3faad96b9738d26ec825d1b75a55b2f28750efbde383d163c5e25bb32ad09ba59d7d40e491898b9cc6a2eb2a +"@istanbuljs/schema@npm:^0.1.2, @istanbuljs/schema@npm:^0.1.3": + version: 0.1.3 + resolution: "@istanbuljs/schema@npm:0.1.3" + checksum: 5282759d961d61350f33d9118d16bcaed914ebf8061a52f4fa474b2cb08720c9c81d165e13b82f2e5a8a212cc5af482f0c6fc1ac27b9e067e5394c9a6ed186c9 languageName: node linkType: hard -"@smithy/node-http-handler@npm:^3.2.4, @smithy/node-http-handler@npm:^3.2.5": - version: 3.2.5 - resolution: "@smithy/node-http-handler@npm:3.2.5" +"@janus-idp/cli@npm:1.16.0": + version: 1.16.0 + resolution: "@janus-idp/cli@npm:1.16.0" dependencies: - "@smithy/abort-controller": ^3.1.6 - "@smithy/protocol-http": ^4.1.5 - "@smithy/querystring-builder": ^3.0.8 - "@smithy/types": ^3.6.0 - tslib: ^2.6.2 - checksum: ea8d4148dd760f031f9eeb2aec2480685bb1a40d7ac9c482eb3170df0316cae58433a6c803d85b046c132a19b8b4874741fae054355b5584facbd46c18889c83 + "@backstage/cli-common": ^0.1.14 + "@backstage/cli-node": ^0.2.8 + "@backstage/config": ^1.2.0 + "@backstage/config-loader": ^1.9.1 + "@backstage/errors": ^1.2.4 + "@backstage/eslint-plugin": ^0.1.9 + "@backstage/types": ^1.1.1 + "@manypkg/get-packages": ^1.1.3 + "@openshift/dynamic-plugin-sdk-webpack": ^3.0.0 + "@pmmmwh/react-refresh-webpack-plugin": ^0.5.7 + "@rollup/plugin-commonjs": ^25.0.4 + "@rollup/plugin-json": ^6.0.0 + "@rollup/plugin-node-resolve": ^15.2.1 + "@rollup/plugin-yaml": ^4.0.0 + "@svgr/rollup": ^8.1.0 + "@svgr/webpack": ^6.5.1 + "@yarnpkg/lockfile": ^1.1.0 + "@yarnpkg/parsers": ^3.0.0-rc.4 + bfj: ^8.0.0 + chalk: ^4.0.0 + chokidar: ^3.3.1 + codeowners: ^5.1.1 + commander: ^9.1.0 + css-loader: ^6.5.1 + esbuild: ^0.23.0 + esbuild-loader: ^2.18.0 + eslint: ^8.49.0 + eslint-config-prettier: ^8.10.0 + eslint-webpack-plugin: ^3.2.0 + fork-ts-checker-webpack-plugin: ^7.0.0-alpha.8 + fs-extra: ^10.1.0 + gitconfiglocal: 2.1.0 + handlebars: ^4.7.7 + html-webpack-plugin: ^5.3.1 + is-native-module: ^1.1.3 + lodash: ^4.17.21 + mini-css-extract-plugin: ^2.4.2 + node-libs-browser: ^2.2.1 + npm-packlist: ^5.0.0 + ora: ^5.3.0 + postcss: ^8.2.13 + react-dev-utils: ^12.0.0-next.60 + react-refresh: ^0.14.0 + recursive-readdir: ^2.2.2 + rollup: ^2.78.0 + rollup-plugin-dts: ^4.0.1 + rollup-plugin-esbuild: ^4.7.2 + rollup-plugin-postcss: ^4.0.0 + rollup-pluginutils: ^2.8.2 + semver: ^7.5.4 + style-loader: ^3.3.1 + swc-loader: ^0.2.3 + typescript-json-schema: ^0.64.0 + webpack: ^5.89.0 + webpack-dev-server: ^4.15.1 + yml-loader: ^2.1.0 + yn: ^4.0.0 + peerDependencies: + "@microsoft/api-extractor": ^7.21.2 + peerDependenciesMeta: + "@microsoft/api-extractor": + optional: true + bin: + janus-cli: bin/janus-cli + checksum: 7b0a40a32a9334fa4fda248710fa60b47ef5e768c13b0c1f267aab0e556760c56619b9ad8708e19ed0fc8cfa7bc8b53b37bac35a6aed2627e77bebbd93db5cbb languageName: node linkType: hard -"@smithy/property-provider@npm:^3.1.7, @smithy/property-provider@npm:^3.1.8": - version: 3.1.8 - resolution: "@smithy/property-provider@npm:3.1.8" +"@jest-mock/express@npm:^2.0.1": + version: 2.1.0 + resolution: "@jest-mock/express@npm:2.1.0" dependencies: - "@smithy/types": ^3.6.0 - tslib: ^2.6.2 - checksum: acf8a3cc0cad53503870580e164b41d79e34f1129c5b6fcf99d8dc09a0a89055889430f9552bead9bafc82775fed5f5f4c8eb3f7e53d91f759bb164a3a68cea5 + "@types/express": ^4.17.21 + checksum: 305b72c214c1e80ed16271aa48e4d6d906346f5221a4e873d1e8ae48c32c2316cb88bed819b195c934c339b9ab41d4b34c4e41ac66feefe980d2cd16bc0b6d20 languageName: node linkType: hard -"@smithy/protocol-http@npm:^4.1.4, @smithy/protocol-http@npm:^4.1.5": - version: 4.1.5 - resolution: "@smithy/protocol-http@npm:4.1.5" +"@jest/console@npm:^29.7.0": + version: 29.7.0 + resolution: "@jest/console@npm:29.7.0" dependencies: - "@smithy/types": ^3.6.0 - tslib: ^2.6.2 - checksum: 2e581594d03ff367ebc0a1ab0443e8b148f39a3ea810333861f4aed639239e5a261bedbb49f6555cfdb9682b88cd881715764c2dfe7e18a7a003385a0b6200d5 + "@jest/types": ^29.6.3 + "@types/node": "*" + chalk: ^4.0.0 + jest-message-util: ^29.7.0 + jest-util: ^29.7.0 + slash: ^3.0.0 + checksum: 0e3624e32c5a8e7361e889db70b170876401b7d70f509a2538c31d5cd50deb0c1ae4b92dc63fe18a0902e0a48c590c21d53787a0df41a52b34fa7cab96c384d6 languageName: node linkType: hard -"@smithy/querystring-builder@npm:^3.0.7, @smithy/querystring-builder@npm:^3.0.8": - version: 3.0.8 - resolution: "@smithy/querystring-builder@npm:3.0.8" +"@jest/core@npm:^29.7.0": + version: 29.7.0 + resolution: "@jest/core@npm:29.7.0" dependencies: - "@smithy/types": ^3.6.0 - "@smithy/util-uri-escape": ^3.0.0 - tslib: ^2.6.2 - checksum: b07a766fb1e94e06116aef6534a31bbd4bb1bb94844d61c67615316d19aac82f94781fab779655bc03a46d70dda9caf3ad991a3e41548fbbba92783103f4f43e + "@jest/console": ^29.7.0 + "@jest/reporters": ^29.7.0 + "@jest/test-result": ^29.7.0 + "@jest/transform": ^29.7.0 + "@jest/types": ^29.6.3 + "@types/node": "*" + ansi-escapes: ^4.2.1 + chalk: ^4.0.0 + ci-info: ^3.2.0 + exit: ^0.1.2 + graceful-fs: ^4.2.9 + jest-changed-files: ^29.7.0 + jest-config: ^29.7.0 + jest-haste-map: ^29.7.0 + jest-message-util: ^29.7.0 + jest-regex-util: ^29.6.3 + jest-resolve: ^29.7.0 + jest-resolve-dependencies: ^29.7.0 + jest-runner: ^29.7.0 + jest-runtime: ^29.7.0 + jest-snapshot: ^29.7.0 + jest-util: ^29.7.0 + jest-validate: ^29.7.0 + jest-watcher: ^29.7.0 + micromatch: ^4.0.4 + pretty-format: ^29.7.0 + slash: ^3.0.0 + strip-ansi: ^6.0.0 + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + checksum: af759c9781cfc914553320446ce4e47775ae42779e73621c438feb1e4231a5d4862f84b1d8565926f2d1aab29b3ec3dcfdc84db28608bdf5f29867124ebcfc0d languageName: node linkType: hard -"@smithy/querystring-parser@npm:^3.0.8": - version: 3.0.8 - resolution: "@smithy/querystring-parser@npm:3.0.8" +"@jest/create-cache-key-function@npm:^29.7.0": + version: 29.7.0 + resolution: "@jest/create-cache-key-function@npm:29.7.0" dependencies: - "@smithy/types": ^3.6.0 - tslib: ^2.6.2 - checksum: 4ad9edfd96f084432157abd4953840f051ca4678963193bdc0ec7b210c79a649ddc023e327c39bd835ef7f56447dfaf2e47210738799ba9d044befacbe316a25 + "@jest/types": ^29.6.3 + checksum: 681bc761fa1d6fa3dd77578d444f97f28296ea80755e90e46d1c8fa68661b9e67f54dd38b988742db636d26cf160450dc6011892cec98b3a7ceb58cad8ff3aae languageName: node linkType: hard -"@smithy/service-error-classification@npm:^3.0.8": - version: 3.0.8 - resolution: "@smithy/service-error-classification@npm:3.0.8" +"@jest/environment@npm:^29.7.0": + version: 29.7.0 + resolution: "@jest/environment@npm:29.7.0" dependencies: - "@smithy/types": ^3.6.0 - checksum: cba6d33eb0e7482e557c303638416ea8678f80fa5782c97dd67e5b72741f22e2446370dc0ef9b16802d73cdfb7a5e4e5587c1d4abb5aa5ca9c33525137b4cf2b + "@jest/fake-timers": ^29.7.0 + "@jest/types": ^29.6.3 + "@types/node": "*" + jest-mock: ^29.7.0 + checksum: 6fb398143b2543d4b9b8d1c6dbce83fa5247f84f550330604be744e24c2bd2178bb893657d62d1b97cf2f24baf85c450223f8237cccb71192c36a38ea2272934 languageName: node linkType: hard -"@smithy/shared-ini-file-loader@npm:^3.1.8, @smithy/shared-ini-file-loader@npm:^3.1.9": - version: 3.1.9 - resolution: "@smithy/shared-ini-file-loader@npm:3.1.9" +"@jest/expect-utils@npm:^29.7.0": + version: 29.7.0 + resolution: "@jest/expect-utils@npm:29.7.0" dependencies: - "@smithy/types": ^3.6.0 - tslib: ^2.6.2 - checksum: 571cc785659551d875fb76c53d116bf6f3978d1b698be096e9218dbbe1dd42efbfb174e151528103888faf7c9854e66f3e5ca395b9c359e37f876c20b22a4f97 + jest-get-type: ^29.6.3 + checksum: 75eb177f3d00b6331bcaa057e07c0ccb0733a1d0a1943e1d8db346779039cb7f103789f16e502f888a3096fb58c2300c38d1f3748b36a7fa762eb6f6d1b160ed languageName: node linkType: hard -"@smithy/signature-v4@npm:^4.2.0": - version: 4.2.1 - resolution: "@smithy/signature-v4@npm:4.2.1" +"@jest/expect@npm:^29.7.0": + version: 29.7.0 + resolution: "@jest/expect@npm:29.7.0" dependencies: - "@smithy/is-array-buffer": ^3.0.0 - "@smithy/protocol-http": ^4.1.5 - "@smithy/types": ^3.6.0 - "@smithy/util-hex-encoding": ^3.0.0 - "@smithy/util-middleware": ^3.0.8 - "@smithy/util-uri-escape": ^3.0.0 - "@smithy/util-utf8": ^3.0.0 - tslib: ^2.6.2 - checksum: 783d8c0a780fbb94084819ea624e75a72daf84c480fa3215b0edd7689041925dbbab3e2785acdfef564c5623631d09aae4915f27cfd1357d2bd0f26349041e56 + expect: ^29.7.0 + jest-snapshot: ^29.7.0 + checksum: a01cb85fd9401bab3370618f4b9013b90c93536562222d920e702a0b575d239d74cecfe98010aaec7ad464f67cf534a353d92d181646a4b792acaa7e912ae55e languageName: node linkType: hard -"@smithy/smithy-client@npm:^3.4.0, @smithy/smithy-client@npm:^3.4.2": - version: 3.4.2 - resolution: "@smithy/smithy-client@npm:3.4.2" +"@jest/fake-timers@npm:^29.7.0": + version: 29.7.0 + resolution: "@jest/fake-timers@npm:29.7.0" dependencies: - "@smithy/core": ^2.5.1 - "@smithy/middleware-endpoint": ^3.2.1 - "@smithy/middleware-stack": ^3.0.8 - "@smithy/protocol-http": ^4.1.5 - "@smithy/types": ^3.6.0 - "@smithy/util-stream": ^3.2.1 - tslib: ^2.6.2 - checksum: 4b53e695e18bf0ed4805dd66839e272129be5384f6de5356a2adc03311f5c372766b490a3c001086aec8728f6c9bb90ca625a09e9b4c3fe875c1ee7567118f34 + "@jest/types": ^29.6.3 + "@sinonjs/fake-timers": ^10.0.2 + "@types/node": "*" + jest-message-util: ^29.7.0 + jest-mock: ^29.7.0 + jest-util: ^29.7.0 + checksum: caf2bbd11f71c9241b458d1b5a66cbe95debc5a15d96442444b5d5c7ba774f523c76627c6931cca5e10e76f0d08761f6f1f01a608898f4751a0eee54fc3d8d00 languageName: node linkType: hard -"@smithy/types@npm:^1.1.0": - version: 1.2.0 - resolution: "@smithy/types@npm:1.2.0" +"@jest/globals@npm:^29.7.0": + version: 29.7.0 + resolution: "@jest/globals@npm:29.7.0" dependencies: - tslib: ^2.5.0 - checksum: 376a1402d356a8dddd804af66ff2d273e57e332a3e9537a98039b47572684aae044d5fcd879ac6eee5cc08640ea00fbef0725a6a16026db5fb8d189473d44fe6 + "@jest/environment": ^29.7.0 + "@jest/expect": ^29.7.0 + "@jest/types": ^29.6.3 + jest-mock: ^29.7.0 + checksum: 97dbb9459135693ad3a422e65ca1c250f03d82b2a77f6207e7fa0edd2c9d2015fbe4346f3dc9ebff1678b9d8da74754d4d440b7837497f8927059c0642a22123 languageName: node linkType: hard -"@smithy/types@npm:^3.5.0, @smithy/types@npm:^3.6.0": - version: 3.6.0 - resolution: "@smithy/types@npm:3.6.0" +"@jest/reporters@npm:^29.7.0": + version: 29.7.0 + resolution: "@jest/reporters@npm:29.7.0" dependencies: - tslib: ^2.6.2 - checksum: 4f581dc1c3e2dee8e1134fafb47de2c301330ea668214eb1a81d26b85acdb48a7e52008da0d15a402e998a79bed285a74b88949a5a4a3fe0aef38c28620ab795 + "@bcoe/v8-coverage": ^0.2.3 + "@jest/console": ^29.7.0 + "@jest/test-result": ^29.7.0 + "@jest/transform": ^29.7.0 + "@jest/types": ^29.6.3 + "@jridgewell/trace-mapping": ^0.3.18 + "@types/node": "*" + chalk: ^4.0.0 + collect-v8-coverage: ^1.0.0 + exit: ^0.1.2 + glob: ^7.1.3 + graceful-fs: ^4.2.9 + istanbul-lib-coverage: ^3.0.0 + istanbul-lib-instrument: ^6.0.0 + istanbul-lib-report: ^3.0.0 + istanbul-lib-source-maps: ^4.0.0 + istanbul-reports: ^3.1.3 + jest-message-util: ^29.7.0 + jest-util: ^29.7.0 + jest-worker: ^29.7.0 + slash: ^3.0.0 + string-length: ^4.0.1 + strip-ansi: ^6.0.0 + v8-to-istanbul: ^9.0.1 + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + checksum: 7eadabd62cc344f629024b8a268ecc8367dba756152b761bdcb7b7e570a3864fc51b2a9810cd310d85e0a0173ef002ba4528d5ea0329fbf66ee2a3ada9c40455 languageName: node linkType: hard -"@smithy/url-parser@npm:^3.0.7, @smithy/url-parser@npm:^3.0.8": - version: 3.0.8 - resolution: "@smithy/url-parser@npm:3.0.8" +"@jest/schemas@npm:^29.6.3": + version: 29.6.3 + resolution: "@jest/schemas@npm:29.6.3" dependencies: - "@smithy/querystring-parser": ^3.0.8 - "@smithy/types": ^3.6.0 - tslib: ^2.6.2 - checksum: 1bf2143b298a4afdf6a8fa40f7b018ad59eb79b717e2bafcd8634c20893485c456c12fe73659d342a3d3a51cdbb10afea61fac285e7ce5fa0f66d7695ad7d10b + "@sinclair/typebox": ^0.27.8 + checksum: 910040425f0fc93cd13e68c750b7885590b8839066dfa0cd78e7def07bbb708ad869381f725945d66f2284de5663bbecf63e8fdd856e2ae6e261ba30b1687e93 languageName: node linkType: hard -"@smithy/util-base64@npm:^3.0.0": - version: 3.0.0 - resolution: "@smithy/util-base64@npm:3.0.0" +"@jest/source-map@npm:^29.6.3": + version: 29.6.3 + resolution: "@jest/source-map@npm:29.6.3" dependencies: - "@smithy/util-buffer-from": ^3.0.0 - "@smithy/util-utf8": ^3.0.0 - tslib: ^2.6.2 - checksum: 413f26046a7e98b2661a078f218a8d040c820fc5a02f5e364aff58c3957e28fde1ac4048c2ebbad5d87b9da4b9aa98a8d4a7fb0d2ce97def33738bd7d8d79aa0 + "@jridgewell/trace-mapping": ^0.3.18 + callsites: ^3.0.0 + graceful-fs: ^4.2.9 + checksum: bcc5a8697d471396c0003b0bfa09722c3cd879ad697eb9c431e6164e2ea7008238a01a07193dfe3cbb48b1d258eb7251f6efcea36f64e1ebc464ea3c03ae2deb languageName: node linkType: hard -"@smithy/util-body-length-browser@npm:^3.0.0": - version: 3.0.0 - resolution: "@smithy/util-body-length-browser@npm:3.0.0" +"@jest/test-result@npm:^29.7.0": + version: 29.7.0 + resolution: "@jest/test-result@npm:29.7.0" dependencies: - tslib: ^2.6.2 - checksum: b01d8258b9a25b262734fc49cefefe48583ba193c3eefd49a6f7fd5922c3015d23dda88b52f3dd9a16827cad16b5b9425eef01e91bd0c71bb5abc469d2952c07 + "@jest/console": ^29.7.0 + "@jest/types": ^29.6.3 + "@types/istanbul-lib-coverage": ^2.0.0 + collect-v8-coverage: ^1.0.0 + checksum: 67b6317d526e335212e5da0e768e3b8ab8a53df110361b80761353ad23b6aea4432b7c5665bdeb87658ea373b90fb1afe02ed3611ef6c858c7fba377505057fa languageName: node linkType: hard -"@smithy/util-body-length-node@npm:^3.0.0": - version: 3.0.0 - resolution: "@smithy/util-body-length-node@npm:3.0.0" +"@jest/test-sequencer@npm:^29.7.0": + version: 29.7.0 + resolution: "@jest/test-sequencer@npm:29.7.0" dependencies: - tslib: ^2.6.2 - checksum: da1baf4790609d3dc28c88385c7274fdf9b91a641fe3c5af22b78e18156df17bd470181348f43b2c739680936b1dafb1526158dfd817c3d9ecb71e653b4cbe3f + "@jest/test-result": ^29.7.0 + graceful-fs: ^4.2.9 + jest-haste-map: ^29.7.0 + slash: ^3.0.0 + checksum: 73f43599017946be85c0b6357993b038f875b796e2f0950487a82f4ebcb115fa12131932dd9904026b4ad8be131fe6e28bd8d0aa93b1563705185f9804bff8bd languageName: node linkType: hard -"@smithy/util-buffer-from@npm:^2.2.0": - version: 2.2.0 - resolution: "@smithy/util-buffer-from@npm:2.2.0" +"@jest/transform@npm:^29.7.0": + version: 29.7.0 + resolution: "@jest/transform@npm:29.7.0" dependencies: - "@smithy/is-array-buffer": ^2.2.0 - tslib: ^2.6.2 - checksum: 424c5b7368ae5880a8f2732e298d17879a19ca925f24ca45e1c6c005f717bb15b76eb28174d308d81631ad457ea0088aab0fd3255dd42f45a535c81944ad64d3 + "@babel/core": ^7.11.6 + "@jest/types": ^29.6.3 + "@jridgewell/trace-mapping": ^0.3.18 + babel-plugin-istanbul: ^6.1.1 + chalk: ^4.0.0 + convert-source-map: ^2.0.0 + fast-json-stable-stringify: ^2.1.0 + graceful-fs: ^4.2.9 + jest-haste-map: ^29.7.0 + jest-regex-util: ^29.6.3 + jest-util: ^29.7.0 + micromatch: ^4.0.4 + pirates: ^4.0.4 + slash: ^3.0.0 + write-file-atomic: ^4.0.2 + checksum: 0f8ac9f413903b3cb6d240102db848f2a354f63971ab885833799a9964999dd51c388162106a807f810071f864302cdd8e3f0c241c29ce02d85a36f18f3f40ab languageName: node linkType: hard -"@smithy/util-buffer-from@npm:^3.0.0": - version: 3.0.0 - resolution: "@smithy/util-buffer-from@npm:3.0.0" +"@jest/types@npm:^29.6.3": + version: 29.6.3 + resolution: "@jest/types@npm:29.6.3" dependencies: - "@smithy/is-array-buffer": ^3.0.0 - tslib: ^2.6.2 - checksum: 1bfc4ab093fe98132bbc1ccd36a0b9ad75a31ed26bac4b7e9350205513a2481eb190ae44679ab4fecc5e10d367b5e6592bbfbf792671579d17d17bd7f7f233f5 + "@jest/schemas": ^29.6.3 + "@types/istanbul-lib-coverage": ^2.0.0 + "@types/istanbul-reports": ^3.0.0 + "@types/node": "*" + "@types/yargs": ^17.0.8 + chalk: ^4.0.0 + checksum: a0bcf15dbb0eca6bdd8ce61a3fb055349d40268622a7670a3b2eb3c3dbafe9eb26af59938366d520b86907b9505b0f9b29b85cec11579a9e580694b87cd90fcc languageName: node linkType: hard -"@smithy/util-config-provider@npm:^3.0.0": - version: 3.0.0 - resolution: "@smithy/util-config-provider@npm:3.0.0" +"@jridgewell/gen-mapping@npm:^0.3.2, @jridgewell/gen-mapping@npm:^0.3.5": + version: 0.3.5 + resolution: "@jridgewell/gen-mapping@npm:0.3.5" dependencies: - tslib: ^2.6.2 - checksum: fc0f5f57d30261cf3a6693d8e338b9d269332c478ee18d905309a769844188190caf0564855d7e84f6c61e56aa556195dda89f65e8c30791951cf4999e4a70e7 + "@jridgewell/set-array": ^1.2.1 + "@jridgewell/sourcemap-codec": ^1.4.10 + "@jridgewell/trace-mapping": ^0.3.24 + checksum: ff7a1764ebd76a5e129c8890aa3e2f46045109dabde62b0b6c6a250152227647178ff2069ea234753a690d8f3c4ac8b5e7b267bbee272bffb7f3b0a370ab6e52 languageName: node linkType: hard -"@smithy/util-defaults-mode-browser@npm:^3.0.23": - version: 3.0.25 - resolution: "@smithy/util-defaults-mode-browser@npm:3.0.25" - dependencies: - "@smithy/property-provider": ^3.1.8 - "@smithy/smithy-client": ^3.4.2 - "@smithy/types": ^3.6.0 - bowser: ^2.11.0 - tslib: ^2.6.2 - checksum: 87c4b346d753712f7fe501920c6bb9712d7ec56670e49aa5d6db40ebe0f0cfa58d9e1d27e96e40c6be1721cf81bd0b2f29c077efc3b8dece074e3a6d175fa1a4 +"@jridgewell/resolve-uri@npm:^3.0.3, @jridgewell/resolve-uri@npm:^3.1.0": + version: 3.1.2 + resolution: "@jridgewell/resolve-uri@npm:3.1.2" + checksum: 83b85f72c59d1c080b4cbec0fef84528963a1b5db34e4370fa4bd1e3ff64a0d80e0cee7369d11d73c704e0286fb2865b530acac7a871088fbe92b5edf1000870 languageName: node linkType: hard -"@smithy/util-defaults-mode-node@npm:^3.0.23": - version: 3.0.25 - resolution: "@smithy/util-defaults-mode-node@npm:3.0.25" - dependencies: - "@smithy/config-resolver": ^3.0.10 - "@smithy/credential-provider-imds": ^3.2.5 - "@smithy/node-config-provider": ^3.1.9 - "@smithy/property-provider": ^3.1.8 - "@smithy/smithy-client": ^3.4.2 - "@smithy/types": ^3.6.0 - tslib: ^2.6.2 - checksum: e34c44bb5cbc8036765aa4f52e648a753b477b6653834291f7a2e0d82b7b58c1e741eac9a9a95d39b6f751c05013909c36ac0818e0015c24201af9d2e2fb0f5a +"@jridgewell/set-array@npm:^1.2.1": + version: 1.2.1 + resolution: "@jridgewell/set-array@npm:1.2.1" + checksum: 832e513a85a588f8ed4f27d1279420d8547743cc37fcad5a5a76fc74bb895b013dfe614d0eed9cb860048e6546b798f8f2652020b4b2ba0561b05caa8c654b10 languageName: node linkType: hard -"@smithy/util-endpoints@npm:^2.1.3": - version: 2.1.4 - resolution: "@smithy/util-endpoints@npm:2.1.4" +"@jridgewell/source-map@npm:^0.3.3": + version: 0.3.6 + resolution: "@jridgewell/source-map@npm:0.3.6" dependencies: - "@smithy/node-config-provider": ^3.1.9 - "@smithy/types": ^3.6.0 - tslib: ^2.6.2 - checksum: 523df0a35807f3493cccaf1b76f88e14dedd3d9f29fe26a6f8c73cdfe09e57c67a1d3029cc585995b0f7fe20e07afa8b4dfa5f1d631a0c4c06c9f68075b61bad + "@jridgewell/gen-mapping": ^0.3.5 + "@jridgewell/trace-mapping": ^0.3.25 + checksum: c9dc7d899397df95e3c9ec287b93c0b56f8e4453cd20743e2b9c8e779b1949bc3cccf6c01bb302779e46560eb45f62ea38d19fedd25370d814734268450a9f30 languageName: node linkType: hard -"@smithy/util-hex-encoding@npm:^3.0.0": - version: 3.0.0 - resolution: "@smithy/util-hex-encoding@npm:3.0.0" - dependencies: - tslib: ^2.6.2 - checksum: dd32fd71e915825987a18bf7c0f8f0c4956d0b17a0ee71592b5563bb20e04f24dbf81d36161aac07caab3bb5e535cc609fce20aa4a38f66b457c4c6f5c7748d9 +"@jridgewell/sourcemap-codec@npm:^1.4.10, @jridgewell/sourcemap-codec@npm:^1.4.14, @jridgewell/sourcemap-codec@npm:^1.4.15, @jridgewell/sourcemap-codec@npm:^1.5.0": + version: 1.5.0 + resolution: "@jridgewell/sourcemap-codec@npm:1.5.0" + checksum: 05df4f2538b3b0f998ea4c1cd34574d0feba216fa5d4ccaef0187d12abf82eafe6021cec8b49f9bb4d90f2ba4582ccc581e72986a5fcf4176ae0cfeb04cf52ec languageName: node linkType: hard -"@smithy/util-middleware@npm:^3.0.7, @smithy/util-middleware@npm:^3.0.8": - version: 3.0.8 - resolution: "@smithy/util-middleware@npm:3.0.8" +"@jridgewell/trace-mapping@npm:0.3.9": + version: 0.3.9 + resolution: "@jridgewell/trace-mapping@npm:0.3.9" dependencies: - "@smithy/types": ^3.6.0 - tslib: ^2.6.2 - checksum: 6933c012f47c8b547b4986133a9dc2b264e9d71def155c4a9bce1bd1afbd73cb8e936c50ebc80190fc1d5bb26aee73ba012c567766dcd8a13c3d06bef841ab3c - languageName: node - linkType: hard - -"@smithy/util-retry@npm:^3.0.7, @smithy/util-retry@npm:^3.0.8": - version: 3.0.8 - resolution: "@smithy/util-retry@npm:3.0.8" - dependencies: - "@smithy/service-error-classification": ^3.0.8 - "@smithy/types": ^3.6.0 - tslib: ^2.6.2 - checksum: 5c0c63beb867828e6fd54f5fd83de412180df02de42f678df0f5a4412d10bfb5a74c22aa83a6f364c8292b5c82be94fe7af35d1ebe4e50a2c05946520f2ea870 + "@jridgewell/resolve-uri": ^3.0.3 + "@jridgewell/sourcemap-codec": ^1.4.10 + checksum: d89597752fd88d3f3480845691a05a44bd21faac18e2185b6f436c3b0fd0c5a859fbbd9aaa92050c4052caf325ad3e10e2e1d1b64327517471b7d51babc0ddef languageName: node linkType: hard -"@smithy/util-stream@npm:^3.1.9, @smithy/util-stream@npm:^3.2.1": - version: 3.2.1 - resolution: "@smithy/util-stream@npm:3.2.1" +"@jridgewell/trace-mapping@npm:^0.3.12, @jridgewell/trace-mapping@npm:^0.3.18, @jridgewell/trace-mapping@npm:^0.3.20, @jridgewell/trace-mapping@npm:^0.3.24, @jridgewell/trace-mapping@npm:^0.3.25": + version: 0.3.25 + resolution: "@jridgewell/trace-mapping@npm:0.3.25" dependencies: - "@smithy/fetch-http-handler": ^4.0.0 - "@smithy/node-http-handler": ^3.2.5 - "@smithy/types": ^3.6.0 - "@smithy/util-base64": ^3.0.0 - "@smithy/util-buffer-from": ^3.0.0 - "@smithy/util-hex-encoding": ^3.0.0 - "@smithy/util-utf8": ^3.0.0 - tslib: ^2.6.2 - checksum: 3dc2b005d48a2e5ccb0761e7a7869f8af24d34a93eaa34f0586ba42fe79f13d48efb676e4aacbf02a54f1a225eb851d2c706c016f5f9d0b4fc127d8be69f5d90 + "@jridgewell/resolve-uri": ^3.1.0 + "@jridgewell/sourcemap-codec": ^1.4.14 + checksum: 9d3c40d225e139987b50c48988f8717a54a8c994d8a948ee42e1412e08988761d0754d7d10b803061cc3aebf35f92a5dbbab493bd0e1a9ef9e89a2130e83ba34 languageName: node linkType: hard -"@smithy/util-uri-escape@npm:^3.0.0": - version: 3.0.0 - resolution: "@smithy/util-uri-escape@npm:3.0.0" - dependencies: - tslib: ^2.6.2 - checksum: d7ee01c978e2b08d0a89a3b678f5d5e5d5bb4ab4ab85567a238b1a6195dff1bdaf9ae62497e7f32ff5121b3dc007c370bcb6e8ef79b01fe5acdec5bbce8c7ce4 +"@js-sdsl/ordered-map@npm:^4.4.2": + version: 4.4.2 + resolution: "@js-sdsl/ordered-map@npm:4.4.2" + checksum: a927ae4ff8565ecb75355cc6886a4f8fadbf2af1268143c96c0cce3ba01261d241c3f4ba77f21f3f017a00f91dfe9e0673e95f830255945c80a0e96c6d30508a languageName: node linkType: hard -"@smithy/util-utf8@npm:^2.0.0": - version: 2.3.0 - resolution: "@smithy/util-utf8@npm:2.3.0" - dependencies: - "@smithy/util-buffer-from": ^2.2.0 - tslib: ^2.6.2 - checksum: 00e55d4b4e37d48be0eef3599082402b933c52a1407fed7e8e8ad76d94d81a0b30b8bfaf2047c59d9c3af31e5f20e7a8c959cb7ae270f894255e05a2229964f0 +"@jsdevtools/ono@npm:7.1.3, @jsdevtools/ono@npm:^7.1.3": + version: 7.1.3 + resolution: "@jsdevtools/ono@npm:7.1.3" + checksum: 2297fcd472ba810bffe8519d2249171132844c7174f3a16634f9260761c8c78bc0428a4190b5b6d72d45673c13918ab9844d706c3ed4ef8f62ab11a2627a08ad languageName: node linkType: hard -"@smithy/util-utf8@npm:^3.0.0": - version: 3.0.0 - resolution: "@smithy/util-utf8@npm:3.0.0" - dependencies: - "@smithy/util-buffer-from": ^3.0.0 - tslib: ^2.6.2 - checksum: d97be1748963263a1161ba80417d82318b977b38542f3fdf0379b0162461188be680e5bfb66a89d65652f0fad6ecf2ab23a43205979216e50602488f73434da3 +"@jsep-plugin/assignment@npm:^1.3.0": + version: 1.3.0 + resolution: "@jsep-plugin/assignment@npm:1.3.0" + peerDependencies: + jsep: ^0.4.0||^1.0.0 + checksum: 5549497d403a6c00969d61202a6d3dafc5a349929d190a524363dcfacb3436dbda3d9f88b2ec1330247a594ad3c5f1c17b0997769d0b206802281bad6cf9a410 languageName: node linkType: hard -"@smithy/util-waiter@npm:^3.1.6": - version: 3.1.7 - resolution: "@smithy/util-waiter@npm:3.1.7" - dependencies: - "@smithy/abort-controller": ^3.1.6 - "@smithy/types": ^3.6.0 - tslib: ^2.6.2 - checksum: 190d992898d0c7d776c806657703c1ebd0ba2c24f4042ed0251dc8653799aefe12848a0445ee16cdbb05b76b5c81fc803b271957954aa614aaccb99dd3338caa +"@jsep-plugin/regex@npm:^1.0.1": + version: 1.0.3 + resolution: "@jsep-plugin/regex@npm:1.0.3" + peerDependencies: + jsep: ^0.4.0||^1.0.0 + checksum: a57718ae5c86bd10ff5de51843a771b96a10a9c6b5c5f4e02aa5318257c3d5fdec96f8b389fcbe129c7a6ad6b0746d9a0fd934c949b80882230fbc14b548c922 languageName: node linkType: hard -"@snyk/github-codeowners@npm:1.1.0": - version: 1.1.0 - resolution: "@snyk/github-codeowners@npm:1.1.0" - dependencies: - commander: ^4.1.1 - ignore: ^5.1.8 - p-map: ^4.0.0 - bin: - github-codeowners: dist/cli.js - checksum: 133f867fa968f96229ebce724d8aedaa124218e20add96a3a7d39ea45e52007fee50cc90c39e406c9e662483d003da9326e00dc4d612afa5c2ca069d1cdab9d7 +"@jsep-plugin/regex@npm:^1.0.4": + version: 1.0.4 + resolution: "@jsep-plugin/regex@npm:1.0.4" + peerDependencies: + jsep: ^0.4.0||^1.0.0 + checksum: 78ef01554535ac6c108851a2a6d86377bce10de01a263ad7b31f9b37c8aa9fc6c49f24b753e5da7d771c5921c913e43c1c33e0bc0fa5d02562d906c83a237836 languageName: node linkType: hard -"@spotify/eslint-config-base@npm:^15.0.0": - version: 15.0.0 - resolution: "@spotify/eslint-config-base@npm:15.0.0" +"@jsep-plugin/ternary@npm:^1.0.2": + version: 1.1.3 + resolution: "@jsep-plugin/ternary@npm:1.1.3" peerDependencies: - eslint: ">=7.x" - checksum: 265a4d807b5236030466a3a8373f41e51a9b4939b450d47ed2cb4704485004a5d64b2f9e024e865b4f5eea61ab6bbe439442e4ca2ac06e52a3b5c7e94c2d6b27 + jsep: ^0.4.0||^1.0.0 + checksum: c05408b0302844723f98b90787425beb4e8ad14029df3d98e88b9d61343d81201a7f0bf3db5806dcf0378c7be69f5b4c9fcd04f055bda282c73f4d1b425e502a languageName: node linkType: hard -"@spotify/eslint-config-react@npm:^15.0.0": - version: 15.0.0 - resolution: "@spotify/eslint-config-react@npm:15.0.0" +"@jsonjoy.com/base64@npm:^1.1.1": + version: 1.1.2 + resolution: "@jsonjoy.com/base64@npm:1.1.2" peerDependencies: - eslint: ">=8.x" - eslint-plugin-jsx-a11y: 6.x - eslint-plugin-react: ">=7.7.0 <8" - eslint-plugin-react-hooks: ^4.0.0 - checksum: 42e16f63d51b2230d2e4eba6524d2d9278d480827c5d2ab32f96253bafd4d8ceb87c37d8429601e36642ff30c86b92011ad4efd26c83db4037478ad118497cce + tslib: 2 + checksum: 00dbf9cbc6ecb3af0e58288a305cc4ee3dfca9efa24443d98061756e8f6de4d6d2d3764bdfde07f2b03e6ce56db27c8a59b490bd134bf3d8122b4c6b394c7010 languageName: node linkType: hard -"@spotify/eslint-config-typescript@npm:^15.0.0": - version: 15.0.0 - resolution: "@spotify/eslint-config-typescript@npm:15.0.0" +"@jsonjoy.com/json-pack@npm:^1.0.3": + version: 1.1.0 + resolution: "@jsonjoy.com/json-pack@npm:1.1.0" + dependencies: + "@jsonjoy.com/base64": ^1.1.1 + "@jsonjoy.com/util": ^1.1.2 + hyperdyperid: ^1.2.0 + thingies: ^1.20.0 peerDependencies: - "@typescript-eslint/eslint-plugin": ">=5" - "@typescript-eslint/parser": ">=5" - eslint: ">=8.x" - checksum: d30d07e1e2e0e18cc583a72ca74b5fdb80ee26e6529de26e1e85d1416ca5396c942efaccc2613287365c7ac3659378b0ba0cdda3df25c7e5cdbd7317f1cbe885 + tslib: 2 + checksum: 5c89a01814d5a7464639c3cbd4dbbcbf19165e9e6d6cc3cc985f8a7594fc2c5ac3a29e4f49f9ddf029979ec26ab980960a250db044173798509d0ea388c2ae26 languageName: node linkType: hard -"@spotify/prettier-config@npm:^12.0.0": - version: 12.0.0 - resolution: "@spotify/prettier-config@npm:12.0.0" +"@jsonjoy.com/util@npm:^1.1.2, @jsonjoy.com/util@npm:^1.3.0": + version: 1.5.0 + resolution: "@jsonjoy.com/util@npm:1.5.0" peerDependencies: - prettier: 2.x - checksum: 04732b96af895269bb8a988ba309e80bd7b87c785837e06f72ff938e8895c5a3a3211fa37b54c6a2b502e88587a437c2be3ccb486a84aff02c2f6fb4582a4a97 + tslib: 2 + checksum: 62892928e1223798e3d910be8dde4fdceaddf2ebdd4bdc0c50495b8ee33503317adf7b5118cd8f5a63045e3f232d70e95fb0279828caf1ec392ffeeb7ea129b8 languageName: node linkType: hard -"@stoplight/better-ajv-errors@npm:1.0.3": - version: 1.0.3 - resolution: "@stoplight/better-ajv-errors@npm:1.0.3" +"@juggle/resize-observer@npm:^3.3.1": + version: 3.4.0 + resolution: "@juggle/resize-observer@npm:3.4.0" + checksum: 2505028c05cc2e17639fcad06218b1c4b60f932a4ebb4b41ab546ef8c157031ae377e3f560903801f6d01706dbefd4943b6c4704bf19ed86dfa1c62f1473a570 + languageName: node + linkType: hard + +"@kamilkisiela/fast-url-parser@npm:^1.1.4": + version: 1.1.4 + resolution: "@kamilkisiela/fast-url-parser@npm:1.1.4" + checksum: 921d305eff1fce5c7c669aee5cfe39e50109968addb496c23f0a42253d030e3cd5865eb01b13245915923bee452db75ba8a8254e69b0d0575d3c168efce7091e + languageName: node + linkType: hard + +"@keyv/memcache@npm:^1.3.5": + version: 1.4.1 + resolution: "@keyv/memcache@npm:1.4.1" dependencies: - jsonpointer: ^5.0.0 - leven: ^3.1.0 - peerDependencies: - ajv: ">=8" - checksum: 642fe5636a72a86de72e4ffc7bbf07499fc09d8446b386f31d3667b07dd1849d921c38a74c109a9e2554d405b6e90dc150728a0c455bf93f158ff139e0538ddd + json-buffer: ^3.0.1 + memjs: ^1.3.2 + checksum: bee66686af965aa3bdd78ccd7c67658b424d32578936e894d3aa42ff616ef653f8ecc439f4ea28fc51ed04a68502e445fc8ff836bd142b38509787712b6ec04d languageName: node linkType: hard -"@stoplight/json-ref-readers@npm:1.2.2": - version: 1.2.2 - resolution: "@stoplight/json-ref-readers@npm:1.2.2" +"@keyv/memcache@npm:^2.0.1": + version: 2.0.1 + resolution: "@keyv/memcache@npm:2.0.1" dependencies: - node-fetch: ^2.6.0 - tslib: ^1.14.1 - checksum: 31b0e78b119f7afd7dd84a4fbb0c4aaceeb6e889179e785ddb9880ee548d4d161dce5743451ef6dad4b7a902d9f0711909c87b63ad794bede234a144bcf2b2b4 + "@keyv/serialize": "*" + buffer: ^6.0.3 + memjs: ^1.3.2 + checksum: 357b320fb3998e7bff9e3a5702da3cc0d4337586f1a04392dfb490cef7af2c039c3ecda922b18029cc9de6e9310a91cde1602b0851fb86acb93b629200458cc2 languageName: node linkType: hard -"@stoplight/json-ref-resolver@npm:~3.1.6": - version: 3.1.6 - resolution: "@stoplight/json-ref-resolver@npm:3.1.6" +"@keyv/redis@npm:^2.5.3": + version: 2.8.5 + resolution: "@keyv/redis@npm:2.8.5" dependencies: - "@stoplight/json": ^3.21.0 - "@stoplight/path": ^1.3.2 - "@stoplight/types": ^12.3.0 || ^13.0.0 - "@types/urijs": ^1.19.19 - dependency-graph: ~0.11.0 - fast-memoize: ^2.5.2 - immer: ^9.0.6 - lodash: ^4.17.21 - tslib: ^2.6.0 - urijs: ^1.19.11 - checksum: 57c944cc8cee51b18fd8165aae7431eddf3b6ca96f2de7a264d890f18a869e5abb7750d48a77455ee1c688ac440efa4115bc8e912efce7c83140834bae49879e + ioredis: ^5.4.1 + checksum: 87ffec61d31fa9de128ba3e5a7b616535ddbdaa4d92cbc9e1a9fab143adf967135e9cca16e192e8f52cc1ba00ed2a7f10eca9944d7550385530dab95333e81ef languageName: node linkType: hard -"@stoplight/json@npm:^3.17.0, @stoplight/json@npm:^3.17.1, @stoplight/json@npm:^3.21.0, @stoplight/json@npm:~3.21.0": - version: 3.21.7 - resolution: "@stoplight/json@npm:3.21.7" +"@keyv/redis@npm:^4.0.1": + version: 4.1.0 + resolution: "@keyv/redis@npm:4.1.0" dependencies: - "@stoplight/ordered-object-literal": ^1.0.3 - "@stoplight/path": ^1.3.2 - "@stoplight/types": ^13.6.0 - jsonc-parser: ~2.2.1 - lodash: ^4.17.21 - safe-stable-stringify: ^1.1 - checksum: 5b0cd67e91e8f4cfac7ff0fe37c07e203611f429e8af7fce51cacb82f9c97150a3fa3aeda41daa9e65bc42d217b630bf01a8bf1f6db12b047079b0da9d7cd9af + cluster-key-slot: ^1.1.2 + keyv: ^5.2.1 + redis: ^4.7.0 + checksum: 71508c7a51f1c6eddd2a103e1f8271de8ab7fbd3c10a0163dabeebd4621632a9b04c158529d08518350e21def55ff931cf96cc20efd0855c75a18e2a10c52b7f languageName: node linkType: hard -"@stoplight/ordered-object-literal@npm:^1.0.3, @stoplight/ordered-object-literal@npm:^1.0.5": - version: 1.0.5 - resolution: "@stoplight/ordered-object-literal@npm:1.0.5" - checksum: 84fe385ed742c5298fd5bee3f95366bfe17a2b99ed52f9b323180756d3495078dfb3bf7e5f49f3c8dee7b79f2e8358b38fe4977b7b6475f0094765160d716bb5 +"@keyv/serialize@npm:*, @keyv/serialize@npm:^1.0.1": + version: 1.0.1 + resolution: "@keyv/serialize@npm:1.0.1" + dependencies: + buffer: ^6.0.3 + checksum: ff3dd9a6246b17fca3d1b0aba312dea931059fdecc36027f4d8133e59dbb3554a0a516b1f3dfc7fb2b3ca7a3d6fa307804f299566ab214febd3fb9d0502eebed languageName: node linkType: hard -"@stoplight/path@npm:1.3.2, @stoplight/path@npm:^1.3.2": - version: 1.3.2 - resolution: "@stoplight/path@npm:1.3.2" - checksum: 8a1143cef9edcf9fd8cb24ca3f250693d475ce1f635f0dc95e5b045aad303fbf4d702c939f0c4ed8d28a04208d1aa4471fb10912ef1e3a94a9e6810878a7cfbb +"@kubernetes-models/apimachinery@npm:^2.0.0, @kubernetes-models/apimachinery@npm:^2.0.2": + version: 2.0.2 + resolution: "@kubernetes-models/apimachinery@npm:2.0.2" + dependencies: + "@kubernetes-models/base": ^5.0.1 + "@kubernetes-models/validate": ^4.0.0 + "@swc/helpers": ^0.5.8 + checksum: f99c50fc3c8446e6b525b74970c7dafe217fe3ffb944078c70b6c21ca0138040b44d094b57fb9218b1e52a5e4c802f1ea93d57c776b08eee59874be286f5545d languageName: node linkType: hard -"@stoplight/spectral-core@npm:^1.15.1, @stoplight/spectral-core@npm:^1.18.0, @stoplight/spectral-core@npm:^1.7.0, @stoplight/spectral-core@npm:^1.8.0, @stoplight/spectral-core@npm:^1.8.1": - version: 1.19.1 - resolution: "@stoplight/spectral-core@npm:1.19.1" +"@kubernetes-models/base@npm:^5.0.0, @kubernetes-models/base@npm:^5.0.1": + version: 5.0.1 + resolution: "@kubernetes-models/base@npm:5.0.1" dependencies: - "@stoplight/better-ajv-errors": 1.0.3 - "@stoplight/json": ~3.21.0 - "@stoplight/path": 1.3.2 - "@stoplight/spectral-parsers": ^1.0.0 - "@stoplight/spectral-ref-resolver": ^1.0.4 - "@stoplight/spectral-runtime": ^1.0.0 - "@stoplight/types": ~13.6.0 - "@types/es-aggregate-error": ^1.0.2 - "@types/json-schema": ^7.0.11 - ajv: ^8.17.1 - ajv-errors: ~3.0.0 - ajv-formats: ~2.1.0 - es-aggregate-error: ^1.0.7 - jsonpath-plus: 7.1.0 - lodash: ~4.17.21 - lodash.topath: ^4.5.2 - minimatch: 3.1.2 - nimma: 0.2.2 - pony-cause: ^1.0.0 - simple-eval: 1.0.0 - tslib: ^2.3.0 - checksum: 35495c3f72eacd02d74b0913ad5a8cdad7573ab06c08cc9f6b44abd68e0c8b2229df9efee11cfe8a47ffeea802ce2b3bb17e378dffe5eab47504f70abd8b492c + "@kubernetes-models/validate": ^4.0.0 + is-plain-object: ^5.0.0 + tslib: ^2.4.0 + checksum: 9d0506b9b4b4ac366feb97f574e84f59d957377bb5c4c929332c3db8bd58bb70bcb1045d007d89369a73521591f7d0d5f651c43fca0779ed65d157258b6fd59a languageName: node linkType: hard -"@stoplight/spectral-formats@npm:^1.2.0, @stoplight/spectral-formats@npm:^1.7.0": - version: 1.7.0 - resolution: "@stoplight/spectral-formats@npm:1.7.0" +"@kubernetes-models/validate@npm:^4.0.0": + version: 4.0.0 + resolution: "@kubernetes-models/validate@npm:4.0.0" dependencies: - "@stoplight/json": ^3.17.0 - "@stoplight/spectral-core": ^1.8.0 - "@types/json-schema": ^7.0.7 - tslib: ^2.3.1 - checksum: eccc2a6c099c7cbdd7c0b6c48b7fbfa334cdc2323958790496aa0295af27ef42ccae8b40e05c742aa3431da724b8d494c837af1af60f86d05189853b95b7c2c9 + ajv: ^8.12.0 + ajv-formats: ^2.1.1 + ajv-formats-draft2019: ^1.6.1 + ajv-i18n: ^4.2.0 + is-cidr: ^4.0.0 + re2-wasm: ^1.0.2 + tslib: ^2.4.0 + dependenciesMeta: + re2-wasm: + optional: true + checksum: 983c873a674b16714b88c444fcfeba555a3349036b263e1e41441e80d58be8b783fee8ce8217b2e5a8fda6c9893ea377f9635d6a37d85c412b327c1bbad4fdef languageName: node linkType: hard -"@stoplight/spectral-formatters@npm:^1.1.0": - version: 1.4.0 - resolution: "@stoplight/spectral-formatters@npm:1.4.0" +"@kubernetes/client-node@npm:0.20.0, @kubernetes/client-node@npm:^0.20.0": + version: 0.20.0 + resolution: "@kubernetes/client-node@npm:0.20.0" dependencies: - "@stoplight/path": ^1.3.2 - "@stoplight/spectral-core": ^1.15.1 - "@stoplight/spectral-runtime": ^1.1.0 - "@stoplight/types": ^13.15.0 - "@types/markdown-escape": ^1.1.3 - chalk: 4.1.2 - cliui: 7.0.4 - lodash: ^4.17.21 - markdown-escape: ^2.0.0 - node-sarif-builder: ^2.0.3 - strip-ansi: 6.0 - text-table: ^0.2.0 - tslib: ^2.5.0 - checksum: fd8b0c96df54b1afa1e2c325edac6a95df0ce4c9a14e3cd46786d229259417eeec7795e7c7ccf4e896a343c5dbd06e62f8692214985acd786d19485bd512958d + "@types/js-yaml": ^4.0.1 + "@types/node": ^20.1.1 + "@types/request": ^2.47.1 + "@types/ws": ^8.5.3 + byline: ^5.0.0 + isomorphic-ws: ^5.0.0 + js-yaml: ^4.1.0 + jsonpath-plus: ^7.2.0 + openid-client: ^5.3.0 + request: ^2.88.0 + rfc4648: ^1.3.0 + stream-buffers: ^3.0.2 + tar: ^6.1.11 + tslib: ^2.4.1 + ws: ^8.11.0 + dependenciesMeta: + openid-client: + optional: true + checksum: c7c2ec9c597b5579ec452bcc13647feeaa3eaf93601afa5d9a4e06b5fe91d2cafa444a1da07b5330a7596f0e07e107d6abe4acabc5998f7bedf43cd0ab8bf343 languageName: node linkType: hard -"@stoplight/spectral-functions@npm:^1.5.1, @stoplight/spectral-functions@npm:^1.6.1, @stoplight/spectral-functions@npm:^1.7.2": - version: 1.9.0 - resolution: "@stoplight/spectral-functions@npm:1.9.0" - dependencies: - "@stoplight/better-ajv-errors": 1.0.3 - "@stoplight/json": ^3.17.1 - "@stoplight/spectral-core": ^1.7.0 - "@stoplight/spectral-formats": ^1.7.0 - "@stoplight/spectral-runtime": ^1.1.0 - ajv: ^8.17.1 - ajv-draft-04: ~1.0.0 - ajv-errors: ~3.0.0 - ajv-formats: ~2.1.0 - lodash: ~4.17.21 - tslib: ^2.3.0 - checksum: 278dc6e84b3b4fdef73f6b2b2cc7071140ade604dbc938b3946203253f37c0977659a609dc148df6f73668ddcb84a809e279643a12fd3f4372e72e97973f0058 +"@leichtgewicht/ip-codec@npm:^2.0.1": + version: 2.0.5 + resolution: "@leichtgewicht/ip-codec@npm:2.0.5" + checksum: 4fcd025d0a923cb6b87b631a83436a693b255779c583158bbeacde6b4dd75b94cc1eba1c9c188de5fc36c218d160524ea08bfe4ef03a056b00ff14126d66f881 languageName: node linkType: hard -"@stoplight/spectral-parsers@npm:^1.0.0, @stoplight/spectral-parsers@npm:^1.0.2": - version: 1.0.4 - resolution: "@stoplight/spectral-parsers@npm:1.0.4" - dependencies: - "@stoplight/json": ~3.21.0 - "@stoplight/types": ^14.1.1 - "@stoplight/yaml": ~4.3.0 - tslib: ^2.3.1 - checksum: ca88183661651d99b40da254316fec062c219253ea3054151b9379e7c492121cdeef49a2d1ac08cd89b2f89f7d16dbc4ecf9da6d7a7539979ac6418991fe804a +"@lezer/common@npm:^1.0.0, @lezer/common@npm:^1.1.0": + version: 1.2.3 + resolution: "@lezer/common@npm:1.2.3" + checksum: 9b5f52d949adae69d077f56c0b1c2295923108c3dfb241dd9f17654ff708f3eab81ff9fa7f0d0e4a668eabdcb9d961c73e75caca87c966ca1436e30e49130fcb languageName: node linkType: hard -"@stoplight/spectral-ref-resolver@npm:^1.0.4": - version: 1.0.4 - resolution: "@stoplight/spectral-ref-resolver@npm:1.0.4" +"@lezer/highlight@npm:^1.0.0": + version: 1.2.1 + resolution: "@lezer/highlight@npm:1.2.1" dependencies: - "@stoplight/json-ref-readers": 1.2.2 - "@stoplight/json-ref-resolver": ~3.1.6 - "@stoplight/spectral-runtime": ^1.1.2 - dependency-graph: 0.11.0 - tslib: ^2.3.1 - checksum: 1e9b2e211d2724e0bab7d817a5128f7b6cab9f0f5281d07223ace1d541a51a0eb3901b9f7b02d4b0484df1cb2a3f7239ec33a974321438d3d08ce7996fd6fcc4 + "@lezer/common": ^1.0.0 + checksum: a8822d7e37f79ff64669eb2df4a9f9d16580e88f2b276a646092e19a9bdccac304e92510e200e35869a8b1f6c27eba5972c508d347a277e9b722d582ab7a23d5 languageName: node linkType: hard -"@stoplight/spectral-rulesets@npm:^1.18.0": - version: 1.20.2 - resolution: "@stoplight/spectral-rulesets@npm:1.20.2" +"@lezer/lr@npm:^1.0.0": + version: 1.4.2 + resolution: "@lezer/lr@npm:1.4.2" dependencies: - "@asyncapi/specs": ^4.1.0 - "@stoplight/better-ajv-errors": 1.0.3 - "@stoplight/json": ^3.17.0 - "@stoplight/spectral-core": ^1.8.1 - "@stoplight/spectral-formats": ^1.7.0 - "@stoplight/spectral-functions": ^1.5.1 - "@stoplight/spectral-runtime": ^1.1.1 - "@stoplight/types": ^13.6.0 - "@types/json-schema": ^7.0.7 - ajv: ^8.17.1 - ajv-formats: ~2.1.0 - json-schema-traverse: ^1.0.0 - leven: 3.1.0 - lodash: ~4.17.21 - tslib: ^2.3.0 - checksum: 53b8515864f7132cd727073886adbf61fcbe39543ddf6d975799c75d9ef13d91f3940d5585c81c72da3c94365fd735d8935e885a3ac388c67d03a943af37977f + "@lezer/common": ^1.0.0 + checksum: 94318ad046c7dfcc8d37e26cb85b99623c39aef60aa51ec2abb30928e7a649f38fa5520f34bd5b356f1db11b6991999589f039e87c8949b0f163be3764f029d8 languageName: node linkType: hard -"@stoplight/spectral-runtime@npm:^1.0.0, @stoplight/spectral-runtime@npm:^1.1.0, @stoplight/spectral-runtime@npm:^1.1.1, @stoplight/spectral-runtime@npm:^1.1.2": - version: 1.1.2 - resolution: "@stoplight/spectral-runtime@npm:1.1.2" - dependencies: - "@stoplight/json": ^3.17.0 - "@stoplight/path": ^1.3.2 - "@stoplight/types": ^12.3.0 - abort-controller: ^3.0.0 - lodash: ^4.17.21 - node-fetch: ^2.6.7 - tslib: ^2.3.1 - checksum: 35964a38f82384e6e0158988173a50ab7f473a2ed6e942073de023bd28fb696b5b913336a84d016b046346294be9cfa3a88c6a908c2622c0ceb36f16ca76e084 +"@lukeed/csprng@npm:^1.0.0": + version: 1.1.0 + resolution: "@lukeed/csprng@npm:1.1.0" + checksum: 926f5f7fc629470ca9a8af355bfcd0271d34535f7be3890f69902432bddc3262029bb5dbe9025542cf6c9883d878692eef2815fc2f3ba5b92e9da1f9eba2e51b languageName: node linkType: hard -"@stoplight/types@npm:^12.3.0": - version: 12.5.0 - resolution: "@stoplight/types@npm:12.5.0" +"@manypkg/find-root@npm:^1.1.0": + version: 1.1.0 + resolution: "@manypkg/find-root@npm:1.1.0" dependencies: - "@types/json-schema": ^7.0.4 - utility-types: ^3.10.0 - checksum: fe4a09df6e1c2f0cdb53f474b180cc7b8184e814e1ac4427d199642f10958335f597060530a908c0e5800ba2569d077afe124a51deaee466255ce942e1e03941 + "@babel/runtime": ^7.5.5 + "@types/node": ^12.7.1 + find-up: ^4.1.0 + fs-extra: ^8.1.0 + checksum: f0fd881a5a81a351cb6561cd24117e8ee9481bbf3b6d1c7d9d10bef1f4744ca2ba3d064713e83c0a0574416d1e5b4a4c6c414aad91913c4a1c6040d87283ac50 languageName: node linkType: hard -"@stoplight/types@npm:^12.3.0 || ^13.0.0, @stoplight/types@npm:^13.15.0, @stoplight/types@npm:^13.6.0": - version: 13.20.0 - resolution: "@stoplight/types@npm:13.20.0" +"@manypkg/get-packages@npm:^1.1.3": + version: 1.1.3 + resolution: "@manypkg/get-packages@npm:1.1.3" dependencies: - "@types/json-schema": ^7.0.4 - utility-types: ^3.10.0 - checksum: b4c7ee22a8d4377aa9b2f901887c17b4a27d1009b2b9348962b2c6a72100ca954d11293a6dd2de01920e8fdc589e31b20ad84421eb0bf5edd9aeef5b5810f04b + "@babel/runtime": ^7.5.5 + "@changesets/types": ^4.0.1 + "@manypkg/find-root": ^1.1.0 + fs-extra: ^8.1.0 + globby: ^11.0.0 + read-yaml-file: ^1.1.0 + checksum: f5a756e5a659e0e1c33f48852d56826d170d5b10a3cdea89ce4fcaa77678d8799aa4004b30e1985c87b73dbc390b95bb6411b78336dd1e0db87c08c74b5c0e74 languageName: node linkType: hard -"@stoplight/types@npm:^14.0.0, @stoplight/types@npm:^14.1.1": - version: 14.1.1 - resolution: "@stoplight/types@npm:14.1.1" +"@mapbox/node-pre-gyp@npm:^1.0.0": + version: 1.0.11 + resolution: "@mapbox/node-pre-gyp@npm:1.0.11" dependencies: - "@types/json-schema": ^7.0.4 - utility-types: ^3.10.0 - checksum: 1da2e683e88afe2f72c3b3af341537bc9bac153d224f65744ca60d44eade93609ce91172064ae27093e1ebfa7bcbf05fb232a1910d83b2aee5b1eed4bb726200 + detect-libc: ^2.0.0 + https-proxy-agent: ^5.0.0 + make-dir: ^3.1.0 + node-fetch: ^2.6.7 + nopt: ^5.0.0 + npmlog: ^5.0.1 + rimraf: ^3.0.2 + semver: ^7.3.5 + tar: ^6.1.11 + bin: + node-pre-gyp: bin/node-pre-gyp + checksum: b848f6abc531a11961d780db813cc510ca5a5b6bf3184d72134089c6875a91c44d571ba6c1879470020803f7803609e7b2e6e429651c026fe202facd11d444b8 languageName: node linkType: hard -"@stoplight/types@npm:~13.6.0": - version: 13.6.0 - resolution: "@stoplight/types@npm:13.6.0" - dependencies: - "@types/json-schema": ^7.0.4 - utility-types: ^3.10.0 - checksum: 4cc81cf29decc0392f15c71b21fd11cd806bcf99168ae4509ed41c2b7dbcfbd5a83c7f9f320edb5a518cc483fd18dd8794c54b232fb6a6f2a7b6e9fb6ca20269 +"@marijn/find-cluster-break@npm:^1.0.0": + version: 1.0.2 + resolution: "@marijn/find-cluster-break@npm:1.0.2" + checksum: 0d836de25e04d58325813401ef3c2d34caf040da985a5935fcbc9d84e7b47a21bdb15f57d70c2bf0960bd29ed3dbbb1afd00cdd0fc4fafbee7fd0ffe7d508ae1 languageName: node linkType: hard -"@stoplight/yaml-ast-parser@npm:0.0.50": - version: 0.0.50 - resolution: "@stoplight/yaml-ast-parser@npm:0.0.50" - checksum: dd46f2e39cef4e3a56276202872282bc435c5f92ea7cf344abd6722fbdab62547ec7d2b84983c6c05aaa2776ac29efd53affe6d9753cce10ef37b4e15ce6ccdc +"@material-table/core@npm:^3.1.0": + version: 3.2.5 + resolution: "@material-table/core@npm:3.2.5" + dependencies: + "@babel/runtime": ^7.12.5 + "@date-io/date-fns": ^1.3.13 + "@material-ui/pickers": ^3.2.10 + "@material-ui/styles": ^4.11.4 + classnames: ^2.2.6 + date-fns: ^2.16.1 + debounce: ^1.2.0 + fast-deep-equal: ^3.1.3 + prop-types: ^15.7.2 + react-beautiful-dnd: ^13.0.0 + react-double-scrollbar: 0.0.15 + uuid: ^3.4.0 + peerDependencies: + "@date-io/core": ^1.3.13 + "@material-ui/core": ^4.11.2 + react: ">=16.8.0" + react-dom: ">=16.8.0" + checksum: 707e85cfcb8c1cfc8eb78ea6991509879f774081d7a54ad428f702fe00478b6d3707d0fd85f4ad443ebcfac0c0cab79c046c4d5083adcbc767615445667b50cf + languageName: node + linkType: hard + +"@material-ui/core@npm:^4.12.2, @material-ui/core@npm:^4.12.4, @material-ui/core@npm:^4.9.13": + version: 4.12.4 + resolution: "@material-ui/core@npm:4.12.4" + dependencies: + "@babel/runtime": ^7.4.4 + "@material-ui/styles": ^4.11.5 + "@material-ui/system": ^4.12.2 + "@material-ui/types": 5.1.0 + "@material-ui/utils": ^4.11.3 + "@types/react-transition-group": ^4.2.0 + clsx: ^1.0.4 + hoist-non-react-statics: ^3.3.2 + popper.js: 1.16.1-lts + prop-types: ^15.7.2 + react-is: ^16.8.0 || ^17.0.0 + react-transition-group: ^4.4.0 + peerDependencies: + "@types/react": ^16.8.6 || ^17.0.0 + react: ^16.8.0 || ^17.0.0 + react-dom: ^16.8.0 || ^17.0.0 + peerDependenciesMeta: + "@types/react": + optional: true + checksum: 96b48deccda87ced841b1db45bed2be6d2b6d1b4eae72cd5c9b931201cb72026330688e0fead54e715bcead40b267ea88bde781c9f1563b1a71a5c51bf187289 languageName: node linkType: hard -"@stoplight/yaml@npm:~4.3.0": - version: 4.3.0 - resolution: "@stoplight/yaml@npm:4.3.0" +"@material-ui/icons@npm:^4.11.3, @material-ui/icons@npm:^4.9.1": + version: 4.11.3 + resolution: "@material-ui/icons@npm:4.11.3" dependencies: - "@stoplight/ordered-object-literal": ^1.0.5 - "@stoplight/types": ^14.1.1 - "@stoplight/yaml-ast-parser": 0.0.50 - tslib: ^2.2.0 - checksum: f113f600a62b75c76c96c27ce3713ba2c48be205fca73097699b66b6f861411c6917dcc5afa4dd08c17fe63f5181b49fa2be9c6500140ea5d05a107ffcb48a4f + "@babel/runtime": ^7.4.4 + peerDependencies: + "@material-ui/core": ^4.0.0 + "@types/react": ^16.8.6 || ^17.0.0 + react: ^16.8.0 || ^17.0.0 + react-dom: ^16.8.0 || ^17.0.0 + peerDependenciesMeta: + "@types/react": + optional: true + checksum: f849a8c4fecddc112cfa94105a2c72e763ff76b9f8da74135b7bbadfd294ed6685897cbea6a2128099be0ce37843784893d8c64da6bde37d020956ab9067206c languageName: node linkType: hard -"@sucrase/webpack-loader@npm:^2.0.0": - version: 2.0.0 - resolution: "@sucrase/webpack-loader@npm:2.0.0" +"@material-ui/lab@npm:4.0.0-alpha.61, @material-ui/lab@npm:^4.0.0-alpha.45, @material-ui/lab@npm:^4.0.0-alpha.61": + version: 4.0.0-alpha.61 + resolution: "@material-ui/lab@npm:4.0.0-alpha.61" dependencies: - loader-utils: ^1.1.0 + "@babel/runtime": ^7.4.4 + "@material-ui/utils": ^4.11.3 + clsx: ^1.0.4 + prop-types: ^15.7.2 + react-is: ^16.8.0 || ^17.0.0 peerDependencies: - sucrase: ^3 - checksum: 16578991b1b888ac5bec5628bd24db9e21651bbbe30de076aece8787f115d8971ac87a20bc75446187c73c3185851ec2233d5b6f18c4a2dd53fbbb1ed4e488b4 + "@material-ui/core": ^4.12.1 + "@types/react": ^16.8.6 || ^17.0.0 + react: ^16.8.0 || ^17.0.0 + react-dom: ^16.8.0 || ^17.0.0 + peerDependenciesMeta: + "@types/react": + optional: true + checksum: 8774a07d72615301e0099415580f87ea8f3d1d106f79e0b014738e302dd3e21959abf01d6c0a629e2e9afb8cb91abd8e9686c2886cddff06c27e6a8a8e063ea0 + languageName: node + linkType: hard + +"@material-ui/pickers@npm:^3.2.10": + version: 3.3.11 + resolution: "@material-ui/pickers@npm:3.3.11" + dependencies: + "@babel/runtime": ^7.6.0 + "@date-io/core": 1.x + "@types/styled-jsx": ^2.2.8 + clsx: ^1.0.2 + react-transition-group: ^4.0.0 + rifm: ^0.7.0 + peerDependencies: + "@date-io/core": ^1.3.6 + "@material-ui/core": ^4.0.0 + prop-types: ^15.6.0 + react: ^16.8.0 || ^17.0.0 + react-dom: ^16.8.0 || ^17.0.0 + checksum: c97822ae407877d1aa9ab7b14c335511d6879ca2546455ac7a3b156d70966b5678372a6d4d3470c2dced84e59857e2c1e1b2be61d26ab43f7f29806666f33064 + languageName: node + linkType: hard + +"@material-ui/styles@npm:^4.10.0, @material-ui/styles@npm:^4.11.0, @material-ui/styles@npm:^4.11.4, @material-ui/styles@npm:^4.11.5": + version: 4.11.5 + resolution: "@material-ui/styles@npm:4.11.5" + dependencies: + "@babel/runtime": ^7.4.4 + "@emotion/hash": ^0.8.0 + "@material-ui/types": 5.1.0 + "@material-ui/utils": ^4.11.3 + clsx: ^1.0.4 + csstype: ^2.5.2 + hoist-non-react-statics: ^3.3.2 + jss: ^10.5.1 + jss-plugin-camel-case: ^10.5.1 + jss-plugin-default-unit: ^10.5.1 + jss-plugin-global: ^10.5.1 + jss-plugin-nested: ^10.5.1 + jss-plugin-props-sort: ^10.5.1 + jss-plugin-rule-value-function: ^10.5.1 + jss-plugin-vendor-prefixer: ^10.5.1 + prop-types: ^15.7.2 + peerDependencies: + "@types/react": ^16.8.6 || ^17.0.0 + react: ^16.8.0 || ^17.0.0 + react-dom: ^16.8.0 || ^17.0.0 + peerDependenciesMeta: + "@types/react": + optional: true + checksum: dbf3985ef57c1b7dae3fd916d5bfd61f2097afb93c9e1f64832cfcb8fc9bbf38a504c9632ed7b76eb5d235670083d9e66d35942bc976b7cd148c71d75b808e82 languageName: node linkType: hard -"@svgr/babel-plugin-add-jsx-attribute@npm:8.0.0": - version: 8.0.0 - resolution: "@svgr/babel-plugin-add-jsx-attribute@npm:8.0.0" +"@material-ui/system@npm:^4.12.2": + version: 4.12.2 + resolution: "@material-ui/system@npm:4.12.2" + dependencies: + "@babel/runtime": ^7.4.4 + "@material-ui/utils": ^4.11.3 + csstype: ^2.5.2 + prop-types: ^15.7.2 peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 3fc8e35d16f5abe0af5efe5851f27581225ac405d6a1ca44cda0df064cddfcc29a428c48c2e4bef6cebf627c9ac2f652a096030edb02cf5a120ce28d3c234710 + "@types/react": ^16.8.6 || ^17.0.0 + react: ^16.8.0 || ^17.0.0 + react-dom: ^16.8.0 || ^17.0.0 + peerDependenciesMeta: + "@types/react": + optional: true + checksum: ebe6b3cc5f111034eacd763014f3260f7647b5e0cd132870f2ee18855cf3d51a996b4633035fe6f5f8965489944db4ac0cb3b71b84a765faa35a6861532ac9f6 languageName: node linkType: hard -"@svgr/babel-plugin-add-jsx-attribute@npm:^6.5.1": - version: 6.5.1 - resolution: "@svgr/babel-plugin-add-jsx-attribute@npm:6.5.1" +"@material-ui/types@npm:5.1.0": + version: 5.1.0 + resolution: "@material-ui/types@npm:5.1.0" peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: cab83832830a57735329ed68f67c03b57ca21fa037b0134847b0c5c0ef4beca89956d7dacfbf7b2a10fd901e7009e877512086db2ee918b8c69aee7742ae32c0 + "@types/react": "*" + peerDependenciesMeta: + "@types/react": + optional: true + checksum: 64ac0938ee6f48011ba596f7422ab0660d9a8d9b4f5f183b39bd63185b1ce724209f65580f0af686d59b524603ffa57418ca2d443b69bec894303f80779c61f8 languageName: node linkType: hard -"@svgr/babel-plugin-remove-jsx-attribute@npm:*, @svgr/babel-plugin-remove-jsx-attribute@npm:8.0.0": - version: 8.0.0 - resolution: "@svgr/babel-plugin-remove-jsx-attribute@npm:8.0.0" +"@material-ui/types@npm:^6.0.1": + version: 6.0.2 + resolution: "@material-ui/types@npm:6.0.2" peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: ff992893c6c4ac802713ba3a97c13be34e62e6d981c813af40daabcd676df68a72a61bd1e692bb1eda3587f1b1d700ea462222ae2153bb0f46886632d4f88d08 + "@types/react": "*" + peerDependenciesMeta: + "@types/react": + optional: true + checksum: cc1704059bc4cfc0296ead70d9bc8e58467b0699cdaba05b11b10d0119833ee635186a3acb202d11ed6c33d4872efafeed6cad23fca2b260eb5e94bd779be46f languageName: node linkType: hard -"@svgr/babel-plugin-remove-jsx-empty-expression@npm:*, @svgr/babel-plugin-remove-jsx-empty-expression@npm:8.0.0": - version: 8.0.0 - resolution: "@svgr/babel-plugin-remove-jsx-empty-expression@npm:8.0.0" +"@material-ui/utils@npm:^4.11.3": + version: 4.11.3 + resolution: "@material-ui/utils@npm:4.11.3" + dependencies: + "@babel/runtime": ^7.4.4 + prop-types: ^15.7.2 + react-is: ^16.8.0 || ^17.0.0 peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 0fb691b63a21bac00da3aa2dccec50d0d5a5b347ff408d60803b84410d8af168f2656e4ba1ee1f24dab0ae4e4af77901f2928752bb0434c1f6788133ec599ec8 + react: ^16.8.0 || ^17.0.0 + react-dom: ^16.8.0 || ^17.0.0 + checksum: 05ff67c982b33d3b4260cfaeaf566f3ccaecaebb231907ed626bcc30322d89d705bfe79b8805c0dda2f1dc2cfa98ca9d731ec8ae12868da7a98568a41c7dc231 languageName: node linkType: hard -"@svgr/babel-plugin-replace-jsx-attribute-value@npm:8.0.0": - version: 8.0.0 - resolution: "@svgr/babel-plugin-replace-jsx-attribute-value@npm:8.0.0" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 1edda65ef4f4dd8f021143c8ec276a08f6baa6f733b8e8ee2e7775597bf6b97afb47fdeefd579d6ae6c959fe2e634f55cd61d99377631212228c8cfb351b8921 +"@microsoft/api-documenter@npm:^7.25.7": + version: 7.25.21 + resolution: "@microsoft/api-documenter@npm:7.25.21" + dependencies: + "@microsoft/api-extractor-model": 7.29.8 + "@microsoft/tsdoc": ~0.15.0 + "@rushstack/node-core-library": 5.9.0 + "@rushstack/terminal": 0.14.2 + "@rushstack/ts-command-line": 4.23.0 + js-yaml: ~3.13.1 + resolve: ~1.22.1 + bin: + api-documenter: bin/api-documenter + checksum: a45c33f2b2f3425b8bfaea6fd6ca985c9df21b85b46531c1e028153d9553629e33f5c3b04c6dfd63873aaae4285dacfc541d10b9aa4a0756b3c440ebf70179cc languageName: node linkType: hard -"@svgr/babel-plugin-replace-jsx-attribute-value@npm:^6.5.1": - version: 6.5.1 - resolution: "@svgr/babel-plugin-replace-jsx-attribute-value@npm:6.5.1" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: b7d2125758e766e1ebd14b92216b800bdc976959bc696dbfa1e28682919147c1df4bb8b1b5fd037d7a83026e27e681fea3b8d3741af8d3cf4c9dfa3d412125df +"@microsoft/api-extractor-model@npm:7.29.8": + version: 7.29.8 + resolution: "@microsoft/api-extractor-model@npm:7.29.8" + dependencies: + "@microsoft/tsdoc": ~0.15.0 + "@microsoft/tsdoc-config": ~0.17.0 + "@rushstack/node-core-library": 5.9.0 + checksum: 95a6b5df089d8bf44555f4565a6f0eda9323917266b2f4730b606aeb2c7f36df7c2cbcae9ca48a9198af7a33442cda8ce2c791e0f4c7c92f3bdaee6c3190b1f5 languageName: node linkType: hard -"@svgr/babel-plugin-svg-dynamic-title@npm:8.0.0": - version: 8.0.0 - resolution: "@svgr/babel-plugin-svg-dynamic-title@npm:8.0.0" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 876cec891488992e6a9aebb8155e2bea4ec461b4718c51de36e988e00e271c6d9d01ef6be17b9effd44b2b3d7db0b41c161a5904a46ae6f38b26b387ad7f3709 +"@microsoft/api-extractor@npm:^7.47.2": + version: 7.47.11 + resolution: "@microsoft/api-extractor@npm:7.47.11" + dependencies: + "@microsoft/api-extractor-model": 7.29.8 + "@microsoft/tsdoc": ~0.15.0 + "@microsoft/tsdoc-config": ~0.17.0 + "@rushstack/node-core-library": 5.9.0 + "@rushstack/rig-package": 0.5.3 + "@rushstack/terminal": 0.14.2 + "@rushstack/ts-command-line": 4.23.0 + lodash: ~4.17.15 + minimatch: ~3.0.3 + resolve: ~1.22.1 + semver: ~7.5.4 + source-map: ~0.6.1 + typescript: 5.4.2 + bin: + api-extractor: bin/api-extractor + checksum: 1ae7634c21e20fe191b5297a03b87547b03e9db4ee3439809363e554bcc7610ebd43dd71d30db5fbee573b7f84a2e1fa6ab3bdf320500a266b7c7c1ccc6049b2 languageName: node linkType: hard -"@svgr/babel-plugin-svg-dynamic-title@npm:^6.5.1": - version: 6.5.1 - resolution: "@svgr/babel-plugin-svg-dynamic-title@npm:6.5.1" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 0fd42ebf127ae9163ef341e84972daa99bdcb9e6ed3f83aabd95ee173fddc43e40e02fa847fbc0a1058cf5549f72b7960a2c5e22c3e4ac18f7e3ac81277852ae +"@microsoft/fetch-event-source@npm:^2.0.1": + version: 2.0.1 + resolution: "@microsoft/fetch-event-source@npm:2.0.1" + checksum: a50e1c0f33220206967266d0a4bbba0703e2793b079d9f6e6bfd48f71b2115964a803e14cf6e902c6fab321edc084f26022334f5eaacc2cec87f174715d41852 languageName: node linkType: hard -"@svgr/babel-plugin-svg-em-dimensions@npm:8.0.0": - version: 8.0.0 - resolution: "@svgr/babel-plugin-svg-em-dimensions@npm:8.0.0" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: be0e2d391164428327d9ec469a52cea7d93189c6b0e2c290999e048f597d777852f701c64dca44cd45b31ed14a7f859520326e2e4ad7c3a4545d0aa235bc7e9a +"@microsoft/tsdoc-config@npm:~0.17.0": + version: 0.17.0 + resolution: "@microsoft/tsdoc-config@npm:0.17.0" + dependencies: + "@microsoft/tsdoc": 0.15.0 + ajv: ~8.12.0 + jju: ~1.4.0 + resolve: ~1.22.2 + checksum: dd2de8247d0fc29608da83edf4ab73a21370f6ce10d089853303e91b135fdb1436ccec3bd1024f235dd3180dfe5dae7342989eadd03af55cf06f0e974e5fc213 languageName: node linkType: hard -"@svgr/babel-plugin-svg-em-dimensions@npm:^6.5.1": - version: 6.5.1 - resolution: "@svgr/babel-plugin-svg-em-dimensions@npm:6.5.1" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: c1550ee9f548526fa66fd171e3ffb5696bfc4e4cd108a631d39db492c7410dc10bba4eb5a190e9df824bf806130ccc586ae7d2e43c547e6a4f93bbb29a18f344 +"@microsoft/tsdoc@npm:0.15.0, @microsoft/tsdoc@npm:~0.15.0": + version: 0.15.0 + resolution: "@microsoft/tsdoc@npm:0.15.0" + checksum: 3f693cff07b220b68563e3f86e9f94a9c8d0791a7446f76149c7d62ae5ed5cb4578bb48b9b5f9baa3dd9a9f77be81903c74654a41e0ca4ecf78936654952a8d4 languageName: node linkType: hard -"@svgr/babel-plugin-transform-react-native-svg@npm:8.1.0": - version: 8.1.0 - resolution: "@svgr/babel-plugin-transform-react-native-svg@npm:8.1.0" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 85b434a57572f53bd2b9f0606f253e1fcf57b4a8c554ec3f2d43ed17f50d8cae200cb3aaf1ec9d626e1456e8b135dce530ae047eb0bed6d4bf98a752d6640459 +"@module-federation/bridge-react-webpack-plugin@npm:0.6.13": + version: 0.6.13 + resolution: "@module-federation/bridge-react-webpack-plugin@npm:0.6.13" + dependencies: + "@module-federation/sdk": 0.6.13 + "@types/semver": 7.5.8 + semver: 7.6.3 + checksum: b5e33fd4a2f6dc5bc0d17af026ac0b9247c78bbcc6de8e3d0e20301c9b72fb59ac6355ea7d790ea352784f73e2e460b3fa52c2771ea077cbf944f78fbae56389 languageName: node linkType: hard -"@svgr/babel-plugin-transform-react-native-svg@npm:^6.5.1": - version: 6.5.1 - resolution: "@svgr/babel-plugin-transform-react-native-svg@npm:6.5.1" +"@module-federation/data-prefetch@npm:0.6.13": + version: 0.6.13 + resolution: "@module-federation/data-prefetch@npm:0.6.13" + dependencies: + "@module-federation/runtime": 0.6.13 + "@module-federation/sdk": 0.6.13 + fs-extra: 9.1.0 peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 4c924af22b948b812629e80efb90ad1ec8faae26a232d8ca8a06b46b53e966a2c415a57806a3ff0ea806a622612e546422719b69ec6839717a7755dac19171d9 + react: ">=16.9.0" + react-dom: ">=16.9.0" + checksum: 4223ef7e84194cc029aa57af94475c3753a71c66134dca22ba3566d44f7eb5972adaaf8ac8c439fc6294f3ebbe090bbebee0ec136df6285072e3f9cf38a2f01a languageName: node linkType: hard -"@svgr/babel-plugin-transform-svg-component@npm:8.0.0": - version: 8.0.0 - resolution: "@svgr/babel-plugin-transform-svg-component@npm:8.0.0" +"@module-federation/dts-plugin@npm:0.6.13": + version: 0.6.13 + resolution: "@module-federation/dts-plugin@npm:0.6.13" + dependencies: + "@module-federation/managers": 0.6.13 + "@module-federation/sdk": 0.6.13 + "@module-federation/third-party-dts-extractor": 0.6.13 + adm-zip: ^0.5.10 + ansi-colors: ^4.1.3 + axios: ^1.7.4 + chalk: 3.0.0 + fs-extra: 9.1.0 + isomorphic-ws: 5.0.0 + koa: 2.15.3 + lodash.clonedeepwith: 4.5.0 + log4js: 6.9.1 + node-schedule: 2.1.1 + rambda: ^9.1.0 + ws: 8.18.0 peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 04e2023d75693eeb0890341c40e449881184663056c249be7e5c80168e4aabb0fadd255e8d5d2dbf54b8c2a6e700efba994377135bfa4060dc4a2e860116ef8c + typescript: ^4.9.0 || ^5.0.0 + vue-tsc: ">=1.0.24" + peerDependenciesMeta: + vue-tsc: + optional: true + checksum: 9752250ea3fa49c8bfc52fb9c58c1472bd2d231d4c1574b5991f496d572be953117fc50f1080a041b51c488bd7a894806442faa712a1f78ef90bc0f83d2e287b languageName: node linkType: hard -"@svgr/babel-plugin-transform-svg-component@npm:^6.5.1": - version: 6.5.1 - resolution: "@svgr/babel-plugin-transform-svg-component@npm:6.5.1" +"@module-federation/enhanced@npm:^0.6.0": + version: 0.6.13 + resolution: "@module-federation/enhanced@npm:0.6.13" + dependencies: + "@module-federation/bridge-react-webpack-plugin": 0.6.13 + "@module-federation/data-prefetch": 0.6.13 + "@module-federation/dts-plugin": 0.6.13 + "@module-federation/managers": 0.6.13 + "@module-federation/manifest": 0.6.13 + "@module-federation/rspack": 0.6.13 + "@module-federation/runtime-tools": 0.6.13 + "@module-federation/sdk": 0.6.13 + btoa: ^1.2.1 + upath: 2.0.1 peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: e496bb5ee871feb6bcab250b6e067322da7dd5c9c2b530b41e5586fe090f86611339b49d0a909c334d9b24cbca0fa755c949a2526c6ad03c6b5885666874cf5f + typescript: ^4.9.0 || ^5.0.0 + vue-tsc: ">=1.0.24" + webpack: ^5.0.0 + peerDependenciesMeta: + typescript: + optional: true + vue-tsc: + optional: true + webpack: + optional: true + checksum: 76d351e42aba4afcd460b8089a3013fab0faba0144f2d76479a478d1a1ef97f50882b1dde85c66fd18c9eb13ba2656b1bee270466385a83a083a9eaddaf83125 languageName: node linkType: hard -"@svgr/babel-preset@npm:8.1.0": - version: 8.1.0 - resolution: "@svgr/babel-preset@npm:8.1.0" +"@module-federation/managers@npm:0.6.13": + version: 0.6.13 + resolution: "@module-federation/managers@npm:0.6.13" dependencies: - "@svgr/babel-plugin-add-jsx-attribute": 8.0.0 - "@svgr/babel-plugin-remove-jsx-attribute": 8.0.0 - "@svgr/babel-plugin-remove-jsx-empty-expression": 8.0.0 - "@svgr/babel-plugin-replace-jsx-attribute-value": 8.0.0 - "@svgr/babel-plugin-svg-dynamic-title": 8.0.0 - "@svgr/babel-plugin-svg-em-dimensions": 8.0.0 - "@svgr/babel-plugin-transform-react-native-svg": 8.1.0 - "@svgr/babel-plugin-transform-svg-component": 8.0.0 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 3a67930f080b8891e1e8e2595716b879c944d253112bae763dce59807ba23454d162216c8d66a0a0e3d4f38a649ecd6c387e545d1e1261dd69a68e9a3392ee08 + "@module-federation/sdk": 0.6.13 + find-pkg: 2.0.0 + fs-extra: 9.1.0 + checksum: 75f7bb65a6d187bdd635245bc816bc302a95f42c37e1fa7973da224da23c85172fd6bb289b01deb0c4abd1c43e14a49f20c0ab258f9cd5a46d8178219c4f6756 languageName: node linkType: hard -"@svgr/babel-preset@npm:^6.5.1": - version: 6.5.1 - resolution: "@svgr/babel-preset@npm:6.5.1" +"@module-federation/manifest@npm:0.6.13": + version: 0.6.13 + resolution: "@module-federation/manifest@npm:0.6.13" dependencies: - "@svgr/babel-plugin-add-jsx-attribute": ^6.5.1 - "@svgr/babel-plugin-remove-jsx-attribute": "*" - "@svgr/babel-plugin-remove-jsx-empty-expression": "*" - "@svgr/babel-plugin-replace-jsx-attribute-value": ^6.5.1 - "@svgr/babel-plugin-svg-dynamic-title": ^6.5.1 - "@svgr/babel-plugin-svg-em-dimensions": ^6.5.1 - "@svgr/babel-plugin-transform-react-native-svg": ^6.5.1 - "@svgr/babel-plugin-transform-svg-component": ^6.5.1 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 9f124be39a8e64f909162f925b3a63ddaa5a342a5e24fc0b7f7d9d4d7f7e3b916596c754fb557dc259928399cad5366a27cb231627a0d2dcc4b13ac521cf05af + "@module-federation/dts-plugin": 0.6.13 + "@module-federation/managers": 0.6.13 + "@module-federation/sdk": 0.6.13 + chalk: 3.0.0 + find-pkg: 2.0.0 + checksum: ef9564ee50e297083022eb622abce604628e730535e29b93d4d97e22a28b3726fc9064bd937124b12285ad9249cd9b99a0fd1d657bd6c0ec9244248dda680d42 languageName: node linkType: hard -"@svgr/core@npm:6.5.x, @svgr/core@npm:^6.5.1": - version: 6.5.1 - resolution: "@svgr/core@npm:6.5.1" +"@module-federation/rspack@npm:0.6.13": + version: 0.6.13 + resolution: "@module-federation/rspack@npm:0.6.13" dependencies: - "@babel/core": ^7.19.6 - "@svgr/babel-preset": ^6.5.1 - "@svgr/plugin-jsx": ^6.5.1 - camelcase: ^6.2.0 - cosmiconfig: ^7.0.1 - checksum: fd6d6d5da5aeb956703310480b626c1fb3e3973ad9fe8025efc1dcf3d895f857b70d100c63cf32cebb20eb83c9607bafa464c9436e18fe6fe4fafdc73ed6b1a5 + "@module-federation/bridge-react-webpack-plugin": 0.6.13 + "@module-federation/dts-plugin": 0.6.13 + "@module-federation/managers": 0.6.13 + "@module-federation/manifest": 0.6.13 + "@module-federation/runtime-tools": 0.6.13 + "@module-federation/sdk": 0.6.13 + peerDependencies: + typescript: ^4.9.0 || ^5.0.0 + vue-tsc: ">=1.0.24" + peerDependenciesMeta: + typescript: + optional: true + vue-tsc: + optional: true + checksum: a1ac18d988899428b09f3f6b175aaf34b7a169c5cf5f4ba59437993e747c7a76693a92ea8004e5368f87f3110b6bac310f9518a2be8377e58da81ad88f08a4c5 languageName: node linkType: hard -"@svgr/core@npm:8.1.0": - version: 8.1.0 - resolution: "@svgr/core@npm:8.1.0" +"@module-federation/runtime-tools@npm:0.6.13": + version: 0.6.13 + resolution: "@module-federation/runtime-tools@npm:0.6.13" dependencies: - "@babel/core": ^7.21.3 - "@svgr/babel-preset": 8.1.0 - camelcase: ^6.2.0 - cosmiconfig: ^8.1.3 - snake-case: ^3.0.4 - checksum: da4a12865c7dc59829d58df8bd232d6c85b7115fda40da0d2f844a1a51886e2e945560596ecfc0345d37837ac457de86a931e8b8d8550e729e0c688c02250d8a + "@module-federation/runtime": 0.6.13 + "@module-federation/webpack-bundler-runtime": 0.6.13 + checksum: 8651fa502dd25c269624d2e1192538ce48380ea7ed8cac68598d8609dc79e769c6b083f810f1f0beaf6475bd0850c8dcca8e1e6b89b97b3b33268a0bbd602cdd languageName: node linkType: hard -"@svgr/hast-util-to-babel-ast@npm:8.0.0": - version: 8.0.0 - resolution: "@svgr/hast-util-to-babel-ast@npm:8.0.0" +"@module-federation/runtime@npm:0.6.13": + version: 0.6.13 + resolution: "@module-federation/runtime@npm:0.6.13" dependencies: - "@babel/types": ^7.21.3 - entities: ^4.4.0 - checksum: 88401281a38bbc7527e65ff5437970414391a86158ef4b4046c89764c156d2d39ecd7cce77be8a51994c9fb3249170cb1eb8b9128b62faaa81743ef6ed3534ab + "@module-federation/sdk": 0.6.13 + checksum: 09e007a27376201679200cc866b29dcccdde11d1c635393fa599d6f313be1b8aeaf13467443c8eb64776b999302844893d6143ad8c99d19c4043bb36ef00c3a8 languageName: node linkType: hard -"@svgr/hast-util-to-babel-ast@npm:^6.5.1": - version: 6.5.1 - resolution: "@svgr/hast-util-to-babel-ast@npm:6.5.1" - dependencies: - "@babel/types": ^7.20.0 - entities: ^4.4.0 - checksum: 37923cce1b3f4e2039077b0c570b6edbabe37d1cf1a6ee35e71e0fe00f9cffac450eec45e9720b1010418131a999cb0047331ba1b6d1d2c69af1b92ac785aacf +"@module-federation/sdk@npm:0.6.13": + version: 0.6.13 + resolution: "@module-federation/sdk@npm:0.6.13" + checksum: e9c2ff5c496bdc79babe728aa1bce8e1cf8a8302e4da2e815f557c8b8969fbd92db9d1072d2a7f654111503e96f4761fe71e0b3ab55de40da469ca39a334581d languageName: node linkType: hard -"@svgr/plugin-jsx@npm:6.5.x, @svgr/plugin-jsx@npm:^6.5.1": - version: 6.5.1 - resolution: "@svgr/plugin-jsx@npm:6.5.1" - dependencies: - "@babel/core": ^7.19.6 - "@svgr/babel-preset": ^6.5.1 - "@svgr/hast-util-to-babel-ast": ^6.5.1 - svg-parser: ^2.0.4 - peerDependencies: - "@svgr/core": ^6.0.0 - checksum: 42f22847a6bdf930514d7bedd3c5e1fd8d53eb3594779f9db16cb94c762425907c375cd8ec789114e100a4d38068aca6c7ab5efea4c612fba63f0630c44cc859 - languageName: node - linkType: hard - -"@svgr/plugin-jsx@npm:8.1.0": - version: 8.1.0 - resolution: "@svgr/plugin-jsx@npm:8.1.0" +"@module-federation/third-party-dts-extractor@npm:0.6.13": + version: 0.6.13 + resolution: "@module-federation/third-party-dts-extractor@npm:0.6.13" dependencies: - "@babel/core": ^7.21.3 - "@svgr/babel-preset": 8.1.0 - "@svgr/hast-util-to-babel-ast": 8.0.0 - svg-parser: ^2.0.4 - peerDependencies: - "@svgr/core": "*" - checksum: 0418a9780753d3544912ee2dad5d2cf8d12e1ba74df8053651b3886aeda54d5f0f7d2dece0af5e0d838332c4f139a57f0dabaa3ca1afa4d1a765efce6a7656f2 + find-pkg: 2.0.0 + fs-extra: 9.1.0 + resolve: 1.22.8 + checksum: 2ffe8b7c69c6b47b8ae70156608637466a2ab8106b62a672dafda268546efbb90043864bb80605cf6b352197b56d175788c103caa794b7521fa212a34deb9f03 languageName: node linkType: hard -"@svgr/plugin-svgo@npm:6.5.x, @svgr/plugin-svgo@npm:^6.5.1": - version: 6.5.1 - resolution: "@svgr/plugin-svgo@npm:6.5.1" +"@module-federation/webpack-bundler-runtime@npm:0.6.13": + version: 0.6.13 + resolution: "@module-federation/webpack-bundler-runtime@npm:0.6.13" dependencies: - cosmiconfig: ^7.0.1 - deepmerge: ^4.2.2 - svgo: ^2.8.0 - peerDependencies: - "@svgr/core": "*" - checksum: cd2833530ac0485221adc2146fd992ab20d79f4b12eebcd45fa859721dd779483158e11dfd9a534858fe468416b9412416e25cbe07ac7932c44ed5fa2021c72e + "@module-federation/runtime": 0.6.13 + "@module-federation/sdk": 0.6.13 + checksum: bdbe0bb993c77d7fc53f285cefb73d8e257cfdc73648d3e2d3198ed8061f1122d0774846085d2e08787bc5a0842bfae7d99477034d1d6e0f2d31b2c7c2b9a1f9 languageName: node linkType: hard -"@svgr/plugin-svgo@npm:8.1.0": - version: 8.1.0 - resolution: "@svgr/plugin-svgo@npm:8.1.0" +"@motionone/animation@npm:^10.12.0": + version: 10.18.0 + resolution: "@motionone/animation@npm:10.18.0" dependencies: - cosmiconfig: ^8.1.3 - deepmerge: ^4.3.1 - svgo: ^3.0.2 - peerDependencies: - "@svgr/core": "*" - checksum: 59d9d214cebaacca9ca71a561f463d8b7e5a68ca9443e4792a42d903acd52259b1790c0680bc6afecc3f00a255a6cbd7ea278a9f625bac443620ea58a590c2d0 + "@motionone/easing": ^10.18.0 + "@motionone/types": ^10.17.1 + "@motionone/utils": ^10.18.0 + tslib: ^2.3.1 + checksum: 841cb9f4843a89e5e4560b9f960f52cbe78afc86f87c769f71e9edb3aadd53fb87982b7e11914428f228b29fd580756be531369c2ffac06432550afa4e87d1c3 languageName: node linkType: hard -"@svgr/rollup@npm:6.5.x": - version: 6.5.1 - resolution: "@svgr/rollup@npm:6.5.1" +"@motionone/dom@npm:10.12.0": + version: 10.12.0 + resolution: "@motionone/dom@npm:10.12.0" dependencies: - "@babel/core": ^7.19.6 - "@babel/plugin-transform-react-constant-elements": ^7.18.12 - "@babel/preset-env": ^7.19.4 - "@babel/preset-react": ^7.18.6 - "@babel/preset-typescript": ^7.18.6 - "@rollup/pluginutils": ^4.2.1 - "@svgr/core": ^6.5.1 - "@svgr/plugin-jsx": ^6.5.1 - "@svgr/plugin-svgo": ^6.5.1 - checksum: 809198a655c280b434d762829aeab0c48e545daaa7a520ac87d5e7cfe96402eb4d0c01f8b25959fcc37a2ce4aa1a53c9e1c4ccb1206cd5833883a34db5799dd4 + "@motionone/animation": ^10.12.0 + "@motionone/generators": ^10.12.0 + "@motionone/types": ^10.12.0 + "@motionone/utils": ^10.12.0 + hey-listen: ^1.0.8 + tslib: ^2.3.1 + checksum: 123356f28e44362c4f081aae3df22e576f46bfcb07e01257b2ac64a115668448f29b8de67e4b6e692c5407cffb78ffe7cf9fa1bc064007482bab5dd23a69d380 languageName: node linkType: hard -"@svgr/rollup@npm:^8.1.0": - version: 8.1.0 - resolution: "@svgr/rollup@npm:8.1.0" +"@motionone/easing@npm:^10.18.0": + version: 10.18.0 + resolution: "@motionone/easing@npm:10.18.0" dependencies: - "@babel/core": ^7.21.3 - "@babel/plugin-transform-react-constant-elements": ^7.21.3 - "@babel/preset-env": ^7.20.2 - "@babel/preset-react": ^7.18.6 - "@babel/preset-typescript": ^7.21.0 - "@rollup/pluginutils": ^5.0.2 - "@svgr/core": 8.1.0 - "@svgr/plugin-jsx": 8.1.0 - "@svgr/plugin-svgo": 8.1.0 - checksum: 728e2d5ac9765e83852743c209663b4b32ca4182e42bfcf13a75d2205b041b14ee34013344589cd79ba9b0ba35cc86436524ffd4362b60d636305ffb2a3b4eb1 + "@motionone/utils": ^10.18.0 + tslib: ^2.3.1 + checksum: 6bd37f7a9d5a88f868cc0ad6e47d2ba8d9fefd7da84fccfea7ed77ec08c2e6d1e42df88dda462665102a5cf03f748231a1a077de7054b5a8ccb0fbf36f61b1e7 languageName: node linkType: hard -"@svgr/webpack@npm:6.5.x, @svgr/webpack@npm:^6.5.1": - version: 6.5.1 - resolution: "@svgr/webpack@npm:6.5.1" +"@motionone/generators@npm:^10.12.0": + version: 10.18.0 + resolution: "@motionone/generators@npm:10.18.0" dependencies: - "@babel/core": ^7.19.6 - "@babel/plugin-transform-react-constant-elements": ^7.18.12 - "@babel/preset-env": ^7.19.4 - "@babel/preset-react": ^7.18.6 - "@babel/preset-typescript": ^7.18.6 - "@svgr/core": ^6.5.1 - "@svgr/plugin-jsx": ^6.5.1 - "@svgr/plugin-svgo": ^6.5.1 - checksum: d10582eb4fa82a5b6d314cb49f2c640af4fd3a60f5b76095d2b14e383ef6a43a6f4674b68774a21787dbde69dec0a251cfcfc3f9a96c82754ba5d5c6daf785f0 - languageName: node - linkType: hard - -"@swc/core-darwin-arm64@npm:1.7.40": - version: 1.7.40 - resolution: "@swc/core-darwin-arm64@npm:1.7.40" - conditions: os=darwin & cpu=arm64 + "@motionone/types": ^10.17.1 + "@motionone/utils": ^10.18.0 + tslib: ^2.3.1 + checksum: 51a0e075681697b11d0771998cac8c76a745f00141502f81adb953896992b7f49478965e4afe696bc83361afaae8d2f1057d71c25b21035fe67258ff73764f1c languageName: node linkType: hard -"@swc/core-darwin-x64@npm:1.7.40": - version: 1.7.40 - resolution: "@swc/core-darwin-x64@npm:1.7.40" - conditions: os=darwin & cpu=x64 +"@motionone/types@npm:^10.12.0, @motionone/types@npm:^10.17.1": + version: 10.17.1 + resolution: "@motionone/types@npm:10.17.1" + checksum: 3fa74db64e371e61a7f7669d7d541d11c9a8dd871032d59c69041e3b2e07a67ad2ed8767cb9273bac90eed4e1f76efc1f14c8673c2e9a288f6070ee0fef64a25 languageName: node linkType: hard -"@swc/core-linux-arm-gnueabihf@npm:1.7.40": - version: 1.7.40 - resolution: "@swc/core-linux-arm-gnueabihf@npm:1.7.40" - conditions: os=linux & cpu=arm +"@motionone/utils@npm:^10.12.0, @motionone/utils@npm:^10.18.0": + version: 10.18.0 + resolution: "@motionone/utils@npm:10.18.0" + dependencies: + "@motionone/types": ^10.17.1 + hey-listen: ^1.0.8 + tslib: ^2.3.1 + checksum: a27f9afde693a0cbbbcb33962b12bbe40dd2cfa514b0732f3c7953c5ef4beed738e1e8172a2de89e3b9f74a253ef0a70d7f3efb730be97b77d7176a3ffacb67a languageName: node linkType: hard -"@swc/core-linux-arm64-gnu@npm:1.7.40": - version: 1.7.40 - resolution: "@swc/core-linux-arm64-gnu@npm:1.7.40" - conditions: os=linux & cpu=arm64 & libc=glibc +"@mswjs/cookies@npm:^0.2.2": + version: 0.2.2 + resolution: "@mswjs/cookies@npm:0.2.2" + dependencies: + "@types/set-cookie-parser": ^2.4.0 + set-cookie-parser: ^2.4.6 + checksum: 23b1ef56d57efcc1b44600076f531a1fb703855af342a31e01bad4adaf0dab51f6d3b5595a95a7988c3f612ba075835f9a06c52833205284d101eb9a51dd72b0 languageName: node linkType: hard -"@swc/core-linux-arm64-musl@npm:1.7.40": - version: 1.7.40 - resolution: "@swc/core-linux-arm64-musl@npm:1.7.40" - conditions: os=linux & cpu=arm64 & libc=musl +"@mswjs/interceptors@npm:^0.17.10": + version: 0.17.10 + resolution: "@mswjs/interceptors@npm:0.17.10" + dependencies: + "@open-draft/until": ^1.0.3 + "@types/debug": ^4.1.7 + "@xmldom/xmldom": ^0.8.3 + debug: ^4.3.3 + headers-polyfill: 3.2.5 + outvariant: ^1.2.1 + strict-event-emitter: ^0.2.4 + web-encoding: ^1.1.5 + checksum: 0e6d32f399144b5cefe6fd7620f2776c83adc9bbbbccf2eb4ea347332be059f585136c44168c09b544c41cd3d686f88e43432e10192227a24fbb0c98a2f52dc8 languageName: node linkType: hard -"@swc/core-linux-x64-gnu@npm:1.7.40": - version: 1.7.40 - resolution: "@swc/core-linux-x64-gnu@npm:1.7.40" - conditions: os=linux & cpu=x64 & libc=glibc +"@mui/core-downloads-tracker@npm:^5.16.12": + version: 5.16.12 + resolution: "@mui/core-downloads-tracker@npm:5.16.12" + checksum: ade13080e61da63394556e8e3da5c8d20147b1b51f73487f8972bbf25812efa90e1a757d83145e55b215f7e1c08a2e4b65a081e0f25ce2992e076f35aa17ba94 languageName: node linkType: hard -"@swc/core-linux-x64-musl@npm:1.7.40": - version: 1.7.40 - resolution: "@swc/core-linux-x64-musl@npm:1.7.40" - conditions: os=linux & cpu=x64 & libc=musl +"@mui/icons-material@npm:^5.15.8": + version: 5.16.12 + resolution: "@mui/icons-material@npm:5.16.12" + dependencies: + "@babel/runtime": ^7.23.9 + peerDependencies: + "@mui/material": ^5.0.0 + "@types/react": ^17.0.0 || ^18.0.0 || ^19.0.0 + react: ^17.0.0 || ^18.0.0 || ^19.0.0 + peerDependenciesMeta: + "@types/react": + optional: true + checksum: 932b48e64e80ff6c01f359fe469a36f1195127abe42cdc4dcfc444b79e861e018dfc3a86c13f6158ba43997b1fdbee5fab337c728b05833f9d66875f4250c3e0 languageName: node linkType: hard -"@swc/core-win32-arm64-msvc@npm:1.7.40": - version: 1.7.40 - resolution: "@swc/core-win32-arm64-msvc@npm:1.7.40" - conditions: os=win32 & cpu=arm64 +"@mui/material@npm:^5.12.2": + version: 5.16.12 + resolution: "@mui/material@npm:5.16.12" + dependencies: + "@babel/runtime": ^7.23.9 + "@mui/core-downloads-tracker": ^5.16.12 + "@mui/system": ^5.16.12 + "@mui/types": ^7.2.15 + "@mui/utils": ^5.16.12 + "@popperjs/core": ^2.11.8 + "@types/react-transition-group": ^4.4.10 + clsx: ^2.1.0 + csstype: ^3.1.3 + prop-types: ^15.8.1 + react-is: ^19.0.0 + react-transition-group: ^4.4.5 + peerDependencies: + "@emotion/react": ^11.5.0 + "@emotion/styled": ^11.3.0 + "@types/react": ^17.0.0 || ^18.0.0 || ^19.0.0 + react: ^17.0.0 || ^18.0.0 || ^19.0.0 + react-dom: ^17.0.0 || ^18.0.0 || ^19.0.0 + peerDependenciesMeta: + "@emotion/react": + optional: true + "@emotion/styled": + optional: true + "@types/react": + optional: true + checksum: a29677300bb38fddf2e4455cf497233676a6a4ee982b1d4ff4c5b520ce608da526ba934d6670747e207bea354725e68854a4e5671c0980f70dba0f9cf20178c8 languageName: node linkType: hard -"@swc/core-win32-ia32-msvc@npm:1.7.40": - version: 1.7.40 - resolution: "@swc/core-win32-ia32-msvc@npm:1.7.40" - conditions: os=win32 & cpu=ia32 +"@mui/private-theming@npm:^5.16.12": + version: 5.16.12 + resolution: "@mui/private-theming@npm:5.16.12" + dependencies: + "@babel/runtime": ^7.23.9 + "@mui/utils": ^5.16.12 + prop-types: ^15.8.1 + peerDependencies: + "@types/react": ^17.0.0 || ^18.0.0 || ^19.0.0 + react: ^17.0.0 || ^18.0.0 || ^19.0.0 + peerDependenciesMeta: + "@types/react": + optional: true + checksum: a51ddd672545be389528d501fe591c3fd03d1317373760eb942e6bd489e56a9bd0da7add01c9420a1007b113902caef2fadf7c9cb4f9b17ea9b2e0007979cb71 languageName: node linkType: hard -"@swc/core-win32-x64-msvc@npm:1.7.40": - version: 1.7.40 - resolution: "@swc/core-win32-x64-msvc@npm:1.7.40" - conditions: os=win32 & cpu=x64 +"@mui/styled-engine@npm:^5.16.12": + version: 5.16.12 + resolution: "@mui/styled-engine@npm:5.16.12" + dependencies: + "@babel/runtime": ^7.23.9 + "@emotion/cache": ^11.13.5 + csstype: ^3.1.3 + prop-types: ^15.8.1 + peerDependencies: + "@emotion/react": ^11.4.1 + "@emotion/styled": ^11.3.0 + react: ^17.0.0 || ^18.0.0 || ^19.0.0 + peerDependenciesMeta: + "@emotion/react": + optional: true + "@emotion/styled": + optional: true + checksum: fa762742ef0a41077dfa0c12c5e3441e32d357192f32fc16b29ee7897ce92a4665cd644b09655dea02fe402da4fc83649901bd34822af784ed359bcc6572ee39 languageName: node linkType: hard -"@swc/core@npm:^1.3.46": - version: 1.7.40 - resolution: "@swc/core@npm:1.7.40" +"@mui/system@npm:^5.16.12": + version: 5.16.12 + resolution: "@mui/system@npm:5.16.12" dependencies: - "@swc/core-darwin-arm64": 1.7.40 - "@swc/core-darwin-x64": 1.7.40 - "@swc/core-linux-arm-gnueabihf": 1.7.40 - "@swc/core-linux-arm64-gnu": 1.7.40 - "@swc/core-linux-arm64-musl": 1.7.40 - "@swc/core-linux-x64-gnu": 1.7.40 - "@swc/core-linux-x64-musl": 1.7.40 - "@swc/core-win32-arm64-msvc": 1.7.40 - "@swc/core-win32-ia32-msvc": 1.7.40 - "@swc/core-win32-x64-msvc": 1.7.40 - "@swc/counter": ^0.1.3 - "@swc/types": ^0.1.13 + "@babel/runtime": ^7.23.9 + "@mui/private-theming": ^5.16.12 + "@mui/styled-engine": ^5.16.12 + "@mui/types": ^7.2.15 + "@mui/utils": ^5.16.12 + clsx: ^2.1.0 + csstype: ^3.1.3 + prop-types: ^15.8.1 peerDependencies: - "@swc/helpers": "*" - dependenciesMeta: - "@swc/core-darwin-arm64": - optional: true - "@swc/core-darwin-x64": - optional: true - "@swc/core-linux-arm-gnueabihf": - optional: true - "@swc/core-linux-arm64-gnu": - optional: true - "@swc/core-linux-arm64-musl": - optional: true - "@swc/core-linux-x64-gnu": - optional: true - "@swc/core-linux-x64-musl": - optional: true - "@swc/core-win32-arm64-msvc": + "@emotion/react": ^11.5.0 + "@emotion/styled": ^11.3.0 + "@types/react": ^17.0.0 || ^18.0.0 || ^19.0.0 + react: ^17.0.0 || ^18.0.0 || ^19.0.0 + peerDependenciesMeta: + "@emotion/react": optional: true - "@swc/core-win32-ia32-msvc": + "@emotion/styled": optional: true - "@swc/core-win32-x64-msvc": + "@types/react": optional: true + checksum: 261fbf349e6ef1462f46d92221697efe0aefcde33975eeb214dd2fa97b77ca76236cae0c221bc9e30e84775b8d3ebd9a4dd779666e833f671cf7b3a11a50a39d + languageName: node + linkType: hard + +"@mui/types@npm:^7.2.15": + version: 7.2.20 + resolution: "@mui/types@npm:7.2.20" + peerDependencies: + "@types/react": ^17.0.0 || ^18.0.0 || ^19.0.0 peerDependenciesMeta: - "@swc/helpers": + "@types/react": optional: true - checksum: edd6554056b7fc8931d82327201c615d7b51d281f51da92ca807d9e2aa45a3f7e52be4b7c77d0913ac3b20703f21e2c430d3537b92e684688e21a0c02622160c + checksum: 71f27a90ddbfca3520908ac40cc11768ec0e656e529c405c0c8307f9d9dec2dc61631b0357b00e6cef7f7129d1372dfb7bca373931ccd6ff678256f7c80ebc11 languageName: node linkType: hard -"@swc/counter@npm:^0.1.3": - version: 0.1.3 - resolution: "@swc/counter@npm:0.1.3" - checksum: df8f9cfba9904d3d60f511664c70d23bb323b3a0803ec9890f60133954173047ba9bdeabce28cd70ba89ccd3fd6c71c7b0bd58be85f611e1ffbe5d5c18616598 +"@mui/utils@npm:^5.14.15, @mui/utils@npm:^5.16.12": + version: 5.16.12 + resolution: "@mui/utils@npm:5.16.12" + dependencies: + "@babel/runtime": ^7.23.9 + "@mui/types": ^7.2.15 + "@types/prop-types": ^15.7.12 + clsx: ^2.1.1 + prop-types: ^15.8.1 + react-is: ^19.0.0 + peerDependencies: + "@types/react": ^17.0.0 || ^18.0.0 || ^19.0.0 + react: ^17.0.0 || ^18.0.0 || ^19.0.0 + peerDependenciesMeta: + "@types/react": + optional: true + checksum: 0f6df27d39d9c7c5dcd041fc8a2e40bd222180aaa140c7c4f7f7a79e79edbd2f15ffcd407ab27ec58142a2cb9858f078cf20f0ccb0d854ec7a426475bf0dabce languageName: node linkType: hard -"@swc/helpers@npm:^0.5.0": - version: 0.5.13 - resolution: "@swc/helpers@npm:0.5.13" - dependencies: - tslib: ^2.4.0 - checksum: d50c2c10da6ef940af423c6b03ad9c3c94cf9de59314b1e921a7d1bcc081a6074481c9d67b655fc8fe66a73288f98b25950743792a63882bfb5793b362494fc0 +"@n1ru4l/push-pull-async-iterable-iterator@npm:^3.1.0": + version: 3.2.0 + resolution: "@n1ru4l/push-pull-async-iterable-iterator@npm:3.2.0" + checksum: 2c7bdbc6c3d8f0aa05c2e3e80c4a856f766e6113a86198fd0df2448117f7cfa71ee2946f6aa7e745caec6ac04d19a5a61c6c80c6fdbf686d43984b3791f0a04d languageName: node linkType: hard -"@swc/jest@npm:^0.2.22": - version: 0.2.36 - resolution: "@swc/jest@npm:0.2.36" - dependencies: - "@jest/create-cache-key-function": ^29.7.0 - "@swc/counter": ^0.1.3 - jsonc-parser: ^3.2.0 +"@nestjs/axios@npm:3.1.0": + version: 3.1.0 + resolution: "@nestjs/axios@npm:3.1.0" peerDependencies: - "@swc/core": "*" - checksum: 14f2e696ac093e23dae1e2e57d894bbcde4de6fe80341a26c8d0d8cbae5aae31832f8fa32dc698529f128d19a76aeedf2227f59480de6dab5eb3f30bfdf9b71a + "@nestjs/common": ^7.0.0 || ^8.0.0 || ^9.0.0 || ^10.0.0 + axios: ^1.3.1 + rxjs: ^6.0.0 || ^7.0.0 + checksum: 75481841feb022b417e1a9cc6fc205878b8299b8c5077d4ae156ca97a5042de1a52c29d3138eb7662e028782ea98e209bf061c6f76fdd27fd32a586adfb6fbca languageName: node linkType: hard -"@swc/types@npm:^0.1.13": - version: 0.1.13 - resolution: "@swc/types@npm:0.1.13" +"@nestjs/common@npm:10.4.5": + version: 10.4.5 + resolution: "@nestjs/common@npm:10.4.5" dependencies: - "@swc/counter": ^0.1.3 - checksum: 4d9ef0fba20e410bee38b20b60eeb284a1284c1cf6b5f84754b6f5e467e5e0621e2db67dc31e22c524a8d63f36d0a1d530126cd97752a85f140d91bf53553e01 + iterare: 1.2.1 + tslib: 2.7.0 + uid: 2.0.2 + peerDependencies: + class-transformer: "*" + class-validator: "*" + reflect-metadata: ^0.1.12 || ^0.2.0 + rxjs: ^7.1.0 + peerDependenciesMeta: + class-transformer: + optional: true + class-validator: + optional: true + checksum: 4d98b3f27099ee17dd63fae46eda23980de209c542e72ddc0e626a8f0c3d5c5236c41dc51b421ecb2b0ac1405321689afea16235952b6d41a20aedce14964c47 languageName: node linkType: hard -"@tootallnate/once@npm:2": - version: 2.0.0 - resolution: "@tootallnate/once@npm:2.0.0" - checksum: ad87447820dd3f24825d2d947ebc03072b20a42bfc96cbafec16bff8bbda6c1a81fcb0be56d5b21968560c5359a0af4038a68ba150c3e1694fe4c109a063bed8 +"@nestjs/core@npm:10.4.5": + version: 10.4.5 + resolution: "@nestjs/core@npm:10.4.5" + dependencies: + "@nuxtjs/opencollective": 0.3.2 + fast-safe-stringify: 2.1.1 + iterare: 1.2.1 + path-to-regexp: 3.3.0 + tslib: 2.7.0 + uid: 2.0.2 + peerDependencies: + "@nestjs/common": ^10.0.0 + "@nestjs/microservices": ^10.0.0 + "@nestjs/platform-express": ^10.0.0 + "@nestjs/websockets": ^10.0.0 + reflect-metadata: ^0.1.12 || ^0.2.0 + rxjs: ^7.1.0 + peerDependenciesMeta: + "@nestjs/microservices": + optional: true + "@nestjs/platform-express": + optional: true + "@nestjs/websockets": + optional: true + checksum: 768315ef5065e208fd9da4139a0d3fc576e860d51f40c5485032d0f0c2431ba60bfd44aa0726cedbab8bbf5d1c221efd6f1eb9c34e33524144d9c033f0f5f978 languageName: node linkType: hard -"@tootallnate/quickjs-emscripten@npm:^0.23.0": - version: 0.23.0 - resolution: "@tootallnate/quickjs-emscripten@npm:0.23.0" - checksum: c350a2947ffb80b22e14ff35099fd582d1340d65723384a0fd0515e905e2534459ad2f301a43279a37308a27c99273c932e64649abd57d0bb3ca8c557150eccc +"@node-saml/node-saml@npm:^5.0.0": + version: 5.0.0 + resolution: "@node-saml/node-saml@npm:5.0.0" + dependencies: + "@types/debug": ^4.1.12 + "@types/qs": ^6.9.11 + "@types/xml-encryption": ^1.2.4 + "@types/xml2js": ^0.4.14 + "@xmldom/is-dom-node": ^1.0.1 + "@xmldom/xmldom": ^0.8.10 + debug: ^4.3.4 + xml-crypto: ^6.0.0 + xml-encryption: ^3.0.2 + xml2js: ^0.6.2 + xmlbuilder: ^15.1.1 + xpath: ^0.0.34 + checksum: 6a9ff9d922befc8ccb3338fe8f989eba66d3f781a3d1f39c4bd1d5c58fc1acd74ae05d94a08ef9c4ff1990ad38d0ca97135de52bbfe79196594e76f75e7b7e13 languageName: node linkType: hard -"@trysound/sax@npm:0.2.0": - version: 0.2.0 - resolution: "@trysound/sax@npm:0.2.0" - checksum: 11226c39b52b391719a2a92e10183e4260d9651f86edced166da1d95f39a0a1eaa470e44d14ac685ccd6d3df7e2002433782872c0feeb260d61e80f21250e65c +"@node-saml/passport-saml@npm:^5.0.0": + version: 5.0.0 + resolution: "@node-saml/passport-saml@npm:5.0.0" + dependencies: + "@node-saml/node-saml": ^5.0.0 + "@types/express": ^4.17.21 + "@types/passport": ^1.0.16 + "@types/passport-strategy": ^0.2.38 + passport: ^0.7.0 + passport-strategy: ^1.0.0 + checksum: f5a5e3f731decd7cc3fa5effdd462e3265fa9da4455014041c62e678212b86200ec07e34083f6107c2db79157334e8f6af8658220bb865ad579317ca9465b05b languageName: node linkType: hard -"@ts-morph/common@npm:~0.24.0": - version: 0.24.0 - resolution: "@ts-morph/common@npm:0.24.0" +"@nodelib/fs.scandir@npm:2.1.5": + version: 2.1.5 + resolution: "@nodelib/fs.scandir@npm:2.1.5" dependencies: - fast-glob: ^3.3.2 - minimatch: ^9.0.4 - mkdirp: ^3.0.1 - path-browserify: ^1.0.1 - checksum: 793bc8a47c93ab55c6c036f94480d3b0e948661aef4bb7dbc29279b1dda2fc4fce809a88e221537867a313541842e12d1ecbd32b4769688abe1303807ec09db6 + "@nodelib/fs.stat": 2.0.5 + run-parallel: ^1.1.9 + checksum: a970d595bd23c66c880e0ef1817791432dbb7acbb8d44b7e7d0e7a22f4521260d4a83f7f9fd61d44fda4610105577f8f58a60718105fb38352baed612fd79e59 languageName: node linkType: hard -"@tsconfig/node10@npm:^1.0.7": - version: 1.0.11 - resolution: "@tsconfig/node10@npm:1.0.11" - checksum: 51fe47d55fe1b80ec35e6e5ed30a13665fd3a531945350aa74a14a1e82875fb60b350c2f2a5e72a64831b1b6bc02acb6760c30b3738b54954ec2dea82db7a267 +"@nodelib/fs.stat@npm:2.0.5, @nodelib/fs.stat@npm:^2.0.2": + version: 2.0.5 + resolution: "@nodelib/fs.stat@npm:2.0.5" + checksum: 012480b5ca9d97bff9261571dbbec7bbc6033f69cc92908bc1ecfad0792361a5a1994bc48674b9ef76419d056a03efadfce5a6cf6dbc0a36559571a7a483f6f0 languageName: node linkType: hard -"@tsconfig/node12@npm:^1.0.7": - version: 1.0.11 - resolution: "@tsconfig/node12@npm:1.0.11" - checksum: 5ce29a41b13e7897a58b8e2df11269c5395999e588b9a467386f99d1d26f6c77d1af2719e407621412520ea30517d718d5192a32403b8dfcc163bf33e40a338a +"@nodelib/fs.walk@npm:1.2.8, @nodelib/fs.walk@npm:^1.2.3, @nodelib/fs.walk@npm:^1.2.6, @nodelib/fs.walk@npm:^1.2.8": + version: 1.2.8 + resolution: "@nodelib/fs.walk@npm:1.2.8" + dependencies: + "@nodelib/fs.scandir": 2.1.5 + fastq: ^1.6.0 + checksum: 190c643f156d8f8f277bf2a6078af1ffde1fd43f498f187c2db24d35b4b4b5785c02c7dc52e356497b9a1b65b13edc996de08de0b961c32844364da02986dc53 languageName: node linkType: hard -"@tsconfig/node14@npm:^1.0.0": - version: 1.0.3 - resolution: "@tsconfig/node14@npm:1.0.3" - checksum: 19275fe80c4c8d0ad0abed6a96dbf00642e88b220b090418609c4376e1cef81bf16237bf170ad1b341452feddb8115d8dd2e5acdfdea1b27422071163dc9ba9d +"@npmcli/agent@npm:^2.0.0": + version: 2.2.2 + resolution: "@npmcli/agent@npm:2.2.2" + dependencies: + agent-base: ^7.1.0 + http-proxy-agent: ^7.0.0 + https-proxy-agent: ^7.0.1 + lru-cache: ^10.0.1 + socks-proxy-agent: ^8.0.3 + checksum: 67de7b88cc627a79743c88bab35e023e23daf13831a8aa4e15f998b92f5507b644d8ffc3788afc8e64423c612e0785a6a92b74782ce368f49a6746084b50d874 languageName: node linkType: hard -"@tsconfig/node16@npm:^1.0.2": - version: 1.0.4 - resolution: "@tsconfig/node16@npm:1.0.4" - checksum: 202319785901f942a6e1e476b872d421baec20cf09f4b266a1854060efbf78cde16a4d256e8bc949d31e6cd9a90f1e8ef8fb06af96a65e98338a2b6b0de0a0ff +"@npmcli/fs@npm:^2.1.0": + version: 2.1.2 + resolution: "@npmcli/fs@npm:2.1.2" + dependencies: + "@gar/promisify": ^1.1.3 + semver: ^7.3.5 + checksum: 405074965e72d4c9d728931b64d2d38e6ea12066d4fad651ac253d175e413c06fe4350970c783db0d749181da8fe49c42d3880bd1cbc12cd68e3a7964d820225 languageName: node linkType: hard -"@types/argparse@npm:1.0.38": - version: 1.0.38 - resolution: "@types/argparse@npm:1.0.38" - checksum: 26ed7e3f1e3595efdb883a852f5205f971b798e4c28b7e30a32c5298eee596e8b45834ce831f014d250b9730819ab05acff5b31229666d3af4ba465b4697d0eb +"@npmcli/fs@npm:^3.1.0": + version: 3.1.1 + resolution: "@npmcli/fs@npm:3.1.1" + dependencies: + semver: ^7.3.5 + checksum: d960cab4b93adcb31ce223bfb75c5714edbd55747342efb67dcc2f25e023d930a7af6ece3e75f2f459b6f38fc14d031c766f116cd124fdc937fd33112579e820 languageName: node linkType: hard -"@types/aws-lambda@npm:^8.10.83": - version: 8.10.145 - resolution: "@types/aws-lambda@npm:8.10.145" - checksum: 4beb4febe8eb7da3087e009b4d1df61de5e9a7336792424254ca1e24740e17ee701de21423a125dcd26afb499003557e717cc824e24c47c916d2de6b0c245482 +"@npmcli/move-file@npm:^2.0.0": + version: 2.0.1 + resolution: "@npmcli/move-file@npm:2.0.1" + dependencies: + mkdirp: ^1.0.4 + rimraf: ^3.0.2 + checksum: 52dc02259d98da517fae4cb3a0a3850227bdae4939dda1980b788a7670636ca2b4a01b58df03dd5f65c1e3cb70c50fa8ce5762b582b3f499ec30ee5ce1fd9380 languageName: node linkType: hard -"@types/babel__core@npm:^7.1.14": - version: 7.20.5 - resolution: "@types/babel__core@npm:7.20.5" +"@nuxtjs/opencollective@npm:0.3.2": + version: 0.3.2 + resolution: "@nuxtjs/opencollective@npm:0.3.2" dependencies: - "@babel/parser": ^7.20.7 - "@babel/types": ^7.20.7 - "@types/babel__generator": "*" - "@types/babel__template": "*" - "@types/babel__traverse": "*" - checksum: a3226f7930b635ee7a5e72c8d51a357e799d19cbf9d445710fa39ab13804f79ab1a54b72ea7d8e504659c7dfc50675db974b526142c754398d7413aa4bc30845 + chalk: ^4.1.0 + consola: ^2.15.0 + node-fetch: ^2.6.1 + bin: + opencollective: bin/opencollective.js + checksum: fd3737c12edf55b5c2279674664c3ed5e756410ea82e9cd324c3f0e032ed5ccd8df1959ec69ea97f2f1c9c33c884aae3d7a7108a73ea0faa90d74ea47cf364d4 languageName: node linkType: hard -"@types/babel__generator@npm:*": - version: 7.6.8 - resolution: "@types/babel__generator@npm:7.6.8" +"@octokit/app@npm:^14.0.2": + version: 14.1.0 + resolution: "@octokit/app@npm:14.1.0" dependencies: - "@babel/types": ^7.0.0 - checksum: 5b332ea336a2efffbdeedb92b6781949b73498606ddd4205462f7d96dafd45ff3618770b41de04c4881e333dd84388bfb8afbdf6f2764cbd98be550d85c6bb48 + "@octokit/auth-app": ^6.0.0 + "@octokit/auth-unauthenticated": ^5.0.0 + "@octokit/core": ^5.0.0 + "@octokit/oauth-app": ^6.0.0 + "@octokit/plugin-paginate-rest": ^9.0.0 + "@octokit/types": ^12.0.0 + "@octokit/webhooks": ^12.0.4 + checksum: 2a27ea831d0367b07f3c4109bbc840c7ae7d5a52d3129593cd867364794eb51b16b0fc308b116a89af9a2f19553c72346e03dd07b952e82c222ed1e7880dfcac languageName: node linkType: hard -"@types/babel__template@npm:*": - version: 7.4.4 - resolution: "@types/babel__template@npm:7.4.4" +"@octokit/auth-app@npm:^4.0.0": + version: 4.0.13 + resolution: "@octokit/auth-app@npm:4.0.13" dependencies: - "@babel/parser": ^7.1.0 - "@babel/types": ^7.0.0 - checksum: d7a02d2a9b67e822694d8e6a7ddb8f2b71a1d6962dfd266554d2513eefbb205b33ca71a0d163b1caea3981ccf849211f9964d8bd0727124d18ace45aa6c9ae29 + "@octokit/auth-oauth-app": ^5.0.0 + "@octokit/auth-oauth-user": ^2.0.0 + "@octokit/request": ^6.0.0 + "@octokit/request-error": ^3.0.0 + "@octokit/types": ^9.0.0 + deprecation: ^2.3.1 + lru-cache: ^9.0.0 + universal-github-app-jwt: ^1.1.1 + universal-user-agent: ^6.0.0 + checksum: 809004bc3e985fd4911cc42060fecd7b88e609e1334b90c4f79711aa27cade03fa1d930945ea8f7339ddd8d4514dd220a6ae8489faefa9e0ce6881519a02fc37 languageName: node linkType: hard -"@types/babel__traverse@npm:*, @types/babel__traverse@npm:^7.0.6": - version: 7.20.6 - resolution: "@types/babel__traverse@npm:7.20.6" +"@octokit/auth-app@npm:^6.0.0": + version: 6.1.3 + resolution: "@octokit/auth-app@npm:6.1.3" dependencies: - "@babel/types": ^7.20.7 - checksum: 2bdc65eb62232c2d5c1086adeb0c31e7980e6fd7e50a3483b4a724a1a1029c84d9cb59749cf8de612f9afa2bc14c85b8f50e64e21f8a4398fa77eb9059a4283c + "@octokit/auth-oauth-app": ^7.1.0 + "@octokit/auth-oauth-user": ^4.1.0 + "@octokit/request": ^8.3.1 + "@octokit/request-error": ^5.1.0 + "@octokit/types": ^13.1.0 + deprecation: ^2.3.1 + lru-cache: "npm:@wolfy1339/lru-cache@^11.0.2-patch.1" + universal-github-app-jwt: ^1.1.2 + universal-user-agent: ^6.0.0 + checksum: 997a4abd2b85b3751d63034b38ecbf8b711ee212f99df32586812e8e99637fc29f50e051f51c1dec04e0f8de3f9cb8c722c65eb1890e02b6b3e3f6dc1323fa93 languageName: node linkType: hard -"@types/body-parser@npm:*": - version: 1.19.5 - resolution: "@types/body-parser@npm:1.19.5" +"@octokit/auth-oauth-app@npm:^5.0.0": + version: 5.0.6 + resolution: "@octokit/auth-oauth-app@npm:5.0.6" dependencies: - "@types/connect": "*" - "@types/node": "*" - checksum: 1e251118c4b2f61029cc43b0dc028495f2d1957fe8ee49a707fb940f86a9bd2f9754230805598278fe99958b49e9b7e66eec8ef6a50ab5c1f6b93e1ba2aaba82 + "@octokit/auth-oauth-device": ^4.0.0 + "@octokit/auth-oauth-user": ^2.0.0 + "@octokit/request": ^6.0.0 + "@octokit/types": ^9.0.0 + "@types/btoa-lite": ^1.0.0 + btoa-lite: ^1.0.0 + universal-user-agent: ^6.0.0 + checksum: 2101b70d148409ce24be3b7b5c033b03d92362a7b5786c441532187dac59826dba0ffbe245beb0c4cec55bc4b843b84b4b2ba0ad8ec46a31cc15451f80705b19 languageName: node linkType: hard -"@types/bonjour@npm:^3.5.13, @types/bonjour@npm:^3.5.9": - version: 3.5.13 - resolution: "@types/bonjour@npm:3.5.13" +"@octokit/auth-oauth-app@npm:^7.0.0, @octokit/auth-oauth-app@npm:^7.1.0": + version: 7.1.0 + resolution: "@octokit/auth-oauth-app@npm:7.1.0" dependencies: - "@types/node": "*" - checksum: e827570e097bd7d625a673c9c208af2d1a22fa3885c0a1646533cf24394c839c3e5f60ac1bc60c0ddcc69c0615078c9fb2c01b42596c7c582d895d974f2409ee + "@octokit/auth-oauth-device": ^6.1.0 + "@octokit/auth-oauth-user": ^4.1.0 + "@octokit/request": ^8.3.1 + "@octokit/types": ^13.0.0 + "@types/btoa-lite": ^1.0.0 + btoa-lite: ^1.0.0 + universal-user-agent: ^6.0.0 + checksum: 021e13c138279e9edd7d6dcdc484a2658ae07b834ec3f5f41158e3870b3413deb09024408d1615731c960243ba710ca638a868dcd2583f7eb80fa6204b70657b languageName: node linkType: hard -"@types/btoa-lite@npm:^1.0.0": - version: 1.0.2 - resolution: "@types/btoa-lite@npm:1.0.2" - checksum: 4c46b163c881a75522c7556dd7a7df8a0d4c680a45e8bac34e50864e1c2d9df8dc90b99f75199154c60ef2faff90896b7e5f11df6936c94167a3e5e1c6f4d935 +"@octokit/auth-oauth-device@npm:^4.0.0": + version: 4.0.5 + resolution: "@octokit/auth-oauth-device@npm:4.0.5" + dependencies: + "@octokit/oauth-methods": ^2.0.0 + "@octokit/request": ^6.0.0 + "@octokit/types": ^9.0.0 + universal-user-agent: ^6.0.0 + checksum: 361824ba13c56beb05016b48b7d492f7439650abbb9e687c9f3e82ef4830790e1aae3d78c6e95dc317278146442c59821d87bf0b9b3c6d53f87117fe32b380d0 languageName: node linkType: hard -"@types/caseless@npm:*": - version: 0.12.5 - resolution: "@types/caseless@npm:0.12.5" - checksum: f6a3628add76d27005495914c9c3873a93536957edaa5b69c63b46fe10b4649a6fecf16b676c1695f46aab851da47ec6047dcf3570fa8d9b6883492ff6d074e0 +"@octokit/auth-oauth-device@npm:^6.1.0": + version: 6.1.0 + resolution: "@octokit/auth-oauth-device@npm:6.1.0" + dependencies: + "@octokit/oauth-methods": ^4.1.0 + "@octokit/request": ^8.3.1 + "@octokit/types": ^13.0.0 + universal-user-agent: ^6.0.0 + checksum: 2824f74ea5eca3d8da9793f463ebca725c8a13a241085015f96f037771ef3e5fa82d5842f538353c683b709d8d32ccd481bfc0ba8cbcde708916ea95a78dd0d2 languageName: node linkType: hard -"@types/connect-history-api-fallback@npm:^1.3.5, @types/connect-history-api-fallback@npm:^1.5.4": - version: 1.5.4 - resolution: "@types/connect-history-api-fallback@npm:1.5.4" +"@octokit/auth-oauth-user@npm:^2.0.0": + version: 2.1.2 + resolution: "@octokit/auth-oauth-user@npm:2.1.2" dependencies: - "@types/express-serve-static-core": "*" - "@types/node": "*" - checksum: e1dee43b8570ffac02d2d47a2b4ba80d3ca0dd1840632dafb221da199e59dbe3778d3d7303c9e23c6b401f37c076935a5bc2aeae1c4e5feaefe1c371fe2073fd + "@octokit/auth-oauth-device": ^4.0.0 + "@octokit/oauth-methods": ^2.0.0 + "@octokit/request": ^6.0.0 + "@octokit/types": ^9.0.0 + btoa-lite: ^1.0.0 + universal-user-agent: ^6.0.0 + checksum: cbb4994452b38fecebfd93bcf56b5ac7853f3bb880a42b00eec2fc6a9fdc6582293247cc8ead10814903f47195353c6450fe1a964184def7fe6e746da911b8bc languageName: node linkType: hard -"@types/connect@npm:*": - version: 3.4.38 - resolution: "@types/connect@npm:3.4.38" +"@octokit/auth-oauth-user@npm:^4.0.0, @octokit/auth-oauth-user@npm:^4.1.0": + version: 4.1.0 + resolution: "@octokit/auth-oauth-user@npm:4.1.0" dependencies: - "@types/node": "*" - checksum: 7eb1bc5342a9604facd57598a6c62621e244822442976c443efb84ff745246b10d06e8b309b6e80130026a396f19bf6793b7cecd7380169f369dac3bfc46fb99 + "@octokit/auth-oauth-device": ^6.1.0 + "@octokit/oauth-methods": ^4.1.0 + "@octokit/request": ^8.3.1 + "@octokit/types": ^13.0.0 + btoa-lite: ^1.0.0 + universal-user-agent: ^6.0.0 + checksum: 581197a427c1ef153350e46de7315c9da1a98904b67e5e13aed88d36e334d95d869f8f12a35ed70d7232c6afd6d3912200988e41959e30c83f880d072ee8b8ba languageName: node linkType: hard -"@types/cookie@npm:^0.4.1": - version: 0.4.1 - resolution: "@types/cookie@npm:0.4.1" - checksum: 3275534ed69a76c68eb1a77d547d75f99fedc80befb75a3d1d03662fb08d697e6f8b1274e12af1a74c6896071b11510631ba891f64d30c78528d0ec45a9c1a18 +"@octokit/auth-token@npm:^3.0.0": + version: 3.0.4 + resolution: "@octokit/auth-token@npm:3.0.4" + checksum: 42f533a873d4192e6df406b3176141c1f95287423ebdc4cf23a38bb77ee00ccbc0e60e3fbd5874234fc2ed2e67bbc6035e3b0561dacc1d078adb5c4ced3579e3 languageName: node linkType: hard -"@types/cookiejar@npm:^2.1.5": - version: 2.1.5 - resolution: "@types/cookiejar@npm:2.1.5" - checksum: 04d5990e87b6387532d15a87d9ec9b2eb783039291193863751dcfd7fc723a3b3aa30ce4c06b03975cba58632e933772f1ff031af23eaa3ac7f94e71afa6e073 +"@octokit/auth-token@npm:^4.0.0": + version: 4.0.0 + resolution: "@octokit/auth-token@npm:4.0.0" + checksum: d78f4dc48b214d374aeb39caec4fdbf5c1e4fd8b9fcb18f630b1fe2cbd5a880fca05445f32b4561f41262cb551746aeb0b49e89c95c6dd99299706684d0cae2f languageName: node linkType: hard -"@types/cors@npm:^2.8.6": - version: 2.8.17 - resolution: "@types/cors@npm:2.8.17" +"@octokit/auth-unauthenticated@npm:^3.0.0": + version: 3.0.5 + resolution: "@octokit/auth-unauthenticated@npm:3.0.5" dependencies: - "@types/node": "*" - checksum: 469bd85e29a35977099a3745c78e489916011169a664e97c4c3d6538143b0a16e4cc72b05b407dc008df3892ed7bf595f9b7c0f1f4680e169565ee9d64966bde + "@octokit/request-error": ^3.0.0 + "@octokit/types": ^9.0.0 + checksum: 8372d732af9aeb09e51fc51c9aca00fb4522e182caf514898a27c5d7e33cfd8e39f9d00f7868cfc34ad437280a0fcafb312624a2968526110249e07b2b96b269 languageName: node linkType: hard -"@types/debug@npm:^4.1.7": - version: 4.1.12 - resolution: "@types/debug@npm:4.1.12" +"@octokit/auth-unauthenticated@npm:^5.0.0": + version: 5.0.1 + resolution: "@octokit/auth-unauthenticated@npm:5.0.1" dependencies: - "@types/ms": "*" - checksum: 47876a852de8240bfdaf7481357af2b88cb660d30c72e73789abf00c499d6bc7cd5e52f41c915d1b9cd8ec9fef5b05688d7b7aef17f7f272c2d04679508d1053 + "@octokit/request-error": ^5.0.0 + "@octokit/types": ^12.0.0 + checksum: b6eed1fc15d47f45411c0229dd6613dd8fd4b79afbac23b8c47818da692a35d54f57e088294d9b71ce4dcc0f58ce0c77d12cd2700370d87770059248b9a8fbba languageName: node linkType: hard -"@types/docker-modem@npm:*": - version: 3.0.6 - resolution: "@types/docker-modem@npm:3.0.6" +"@octokit/core@npm:^4.0.0, @octokit/core@npm:^4.2.1": + version: 4.2.4 + resolution: "@octokit/core@npm:4.2.4" dependencies: - "@types/node": "*" - "@types/ssh2": "*" - checksum: cc58e8189f6ec5a2b8ca890207402178a97ddac8c80d125dc65d8ab29034b5db736de15e99b91b2d74e66d14e26e73b6b8b33216613dd15fd3aa6b82c11a83ed + "@octokit/auth-token": ^3.0.0 + "@octokit/graphql": ^5.0.0 + "@octokit/request": ^6.0.0 + "@octokit/request-error": ^3.0.0 + "@octokit/types": ^9.0.0 + before-after-hook: ^2.2.0 + universal-user-agent: ^6.0.0 + checksum: ac8ab47440a31b0228a034aacac6994b64d6b073ad5b688b4c5157fc5ee0d1af1c926e6087bf17fd7244ee9c5998839da89065a90819bde4a97cb77d4edf58a6 languageName: node linkType: hard -"@types/dockerode@npm:^3.3.0, @types/dockerode@npm:^3.3.29": - version: 3.3.31 - resolution: "@types/dockerode@npm:3.3.31" +"@octokit/core@npm:^5.0.0": + version: 5.2.0 + resolution: "@octokit/core@npm:5.2.0" dependencies: - "@types/docker-modem": "*" - "@types/node": "*" - "@types/ssh2": "*" - checksum: f634f18dc0633f8324faefcde53bcd3d8f3c4bd74d31078cbeb65d2e1597f9abcf12c2158abfaea13dc816bae0f5fa08d0bb570d4214ab0df1ded90db5ebabfe + "@octokit/auth-token": ^4.0.0 + "@octokit/graphql": ^7.1.0 + "@octokit/request": ^8.3.1 + "@octokit/request-error": ^5.1.0 + "@octokit/types": ^13.0.0 + before-after-hook: ^2.2.0 + universal-user-agent: ^6.0.0 + checksum: 57d5f02b759b569323dcb76cc72bf94ea7d0de58638c118ee14ec3e37d303c505893137dd72918328794844f35c74b3cd16999319c4b40d410a310d44a9b7566 languageName: node linkType: hard -"@types/es-aggregate-error@npm:^1.0.2": - version: 1.0.6 - resolution: "@types/es-aggregate-error@npm:1.0.6" +"@octokit/endpoint@npm:^7.0.0": + version: 7.0.6 + resolution: "@octokit/endpoint@npm:7.0.6" dependencies: - "@types/node": "*" - checksum: a5b2155f664a3460d3cbc1e84e76fc0f3e751c6cebb04bf79d38e2809f44a4ba6765b83761a1e5cc0bba1b7852f7ba4fae2231110dee6218405835024dd372ac + "@octokit/types": ^9.0.0 + is-plain-object: ^5.0.0 + universal-user-agent: ^6.0.0 + checksum: 7caebf30ceec50eb7f253341ed419df355232f03d4638a95c178ee96620400db7e4a5e15d89773fe14db19b8653d4ab4cc81b2e93ca0c760b4e0f7eb7ad80301 languageName: node linkType: hard -"@types/eslint@npm:^7.29.0 || ^8.4.1, @types/eslint@npm:^8.56.10": - version: 8.56.12 - resolution: "@types/eslint@npm:8.56.12" +"@octokit/endpoint@npm:^9.0.1": + version: 9.0.5 + resolution: "@octokit/endpoint@npm:9.0.5" dependencies: - "@types/estree": "*" - "@types/json-schema": "*" - checksum: 0f7710ee02a256c499514251f527f84de964bb29487db840408e4cde79283124a38935597636d2265756c34dd1d902e1b00ae78930d4a0b55111909cb7b80d84 + "@octokit/types": ^13.1.0 + universal-user-agent: ^6.0.0 + checksum: d5cc2df9bd4603844c163eea05eec89c677cfe699c6f065fe86b83123e34554ec16d429e8142dec1e2b4cf56591ef0ce5b1763f250c87bc8e7bf6c74ba59ae82 languageName: node linkType: hard -"@types/estree@npm:*, @types/estree@npm:1.0.6, @types/estree@npm:^1.0.0, @types/estree@npm:^1.0.5": - version: 1.0.6 - resolution: "@types/estree@npm:1.0.6" - checksum: 8825d6e729e16445d9a1dd2fb1db2edc5ed400799064cd4d028150701031af012ba30d6d03fe9df40f4d7a437d0de6d2b256020152b7b09bde9f2e420afdffd9 +"@octokit/graphql-schema@npm:^13.7.0": + version: 13.10.0 + resolution: "@octokit/graphql-schema@npm:13.10.0" + dependencies: + graphql: ^16.0.0 + graphql-tag: ^2.10.3 + checksum: fdec9c9a4df1f90b733ea0e24964744faceaf65e5d350b1727892e8e0e5821df1d29aec5cfa039925a044c6f56d4ed2028505108db7fbc0c68011053853c2411 languageName: node linkType: hard -"@types/express-serve-static-core@npm:*, @types/express-serve-static-core@npm:^5.0.0": - version: 5.0.1 - resolution: "@types/express-serve-static-core@npm:5.0.1" +"@octokit/graphql@npm:^5.0.0": + version: 5.0.6 + resolution: "@octokit/graphql@npm:5.0.6" dependencies: - "@types/node": "*" - "@types/qs": "*" - "@types/range-parser": "*" - "@types/send": "*" - checksum: e9daf9bc0d83f593aa2fdcb7c3f9c0a8747bfdf6d8a5ee48ed8d8cc4dc2ed52bdc75d20f6fec9ef00a1aa5ade4c7f16668ff1c020911b50394472844813b1cdb + "@octokit/request": ^6.0.0 + "@octokit/types": ^9.0.0 + universal-user-agent: ^6.0.0 + checksum: 7be545d348ef31dcab0a2478dd64d5746419a2f82f61459c774602bcf8a9b577989c18001f50b03f5f61a3d9e34203bdc021a4e4d75ff2d981e8c9c09cf8a65c languageName: node linkType: hard -"@types/express-serve-static-core@npm:^4.17.33, @types/express-serve-static-core@npm:^4.17.5": - version: 4.19.6 - resolution: "@types/express-serve-static-core@npm:4.19.6" +"@octokit/graphql@npm:^7.1.0": + version: 7.1.0 + resolution: "@octokit/graphql@npm:7.1.0" dependencies: - "@types/node": "*" - "@types/qs": "*" - "@types/range-parser": "*" - "@types/send": "*" - checksum: b0576eddc2d25ccdf10e68ba09598b87a4d7b2ad04a81dc847cb39fe56beb0b6a5cc017b1e00aa0060cb3b38e700384ce96d291a116a0f1e54895564a104aae9 + "@octokit/request": ^8.3.0 + "@octokit/types": ^13.0.0 + universal-user-agent: ^6.0.0 + checksum: 7b2706796e0269fc033ed149ea211117bcacf53115fd142c1eeafc06ebc5b6290e4e48c03d6276c210d72e3695e8598f83caac556cd00714fc1f8e4707d77448 languageName: node linkType: hard -"@types/express@npm:*": - version: 5.0.0 - resolution: "@types/express@npm:5.0.0" +"@octokit/oauth-app@npm:^4.2.0": + version: 4.2.4 + resolution: "@octokit/oauth-app@npm:4.2.4" dependencies: - "@types/body-parser": "*" - "@types/express-serve-static-core": ^5.0.0 - "@types/qs": "*" - "@types/serve-static": "*" - checksum: ef68d8e2b7593c930093b1e79bf4df15413773508c9acd6a1a933ed7017f2a4892a8d128b2222d7eab9a3fa43181067a378c2600d9258bd7ae917f170e962df4 + "@octokit/auth-oauth-app": ^5.0.0 + "@octokit/auth-oauth-user": ^2.0.0 + "@octokit/auth-unauthenticated": ^3.0.0 + "@octokit/core": ^4.0.0 + "@octokit/oauth-authorization-url": ^5.0.0 + "@octokit/oauth-methods": ^2.0.0 + "@types/aws-lambda": ^8.10.83 + fromentries: ^1.3.1 + universal-user-agent: ^6.0.0 + checksum: 6d9798c9e63e84f3cb3031ac3f06f45c6ea053fd201be9a07a508786fd400479d7d9f6f85707d0fff7f094a265c7e966a2fa4c884001b99f02ddd927bf499d06 languageName: node linkType: hard -"@types/express@npm:4.17.21, @types/express@npm:^4.17.13, @types/express@npm:^4.17.21, @types/express@npm:^4.17.6": - version: 4.17.21 - resolution: "@types/express@npm:4.17.21" - dependencies: - "@types/body-parser": "*" - "@types/express-serve-static-core": ^4.17.33 - "@types/qs": "*" - "@types/serve-static": "*" - checksum: fb238298630370a7392c7abdc80f495ae6c716723e114705d7e3fb67e3850b3859bbfd29391463a3fb8c0b32051847935933d99e719c0478710f8098ee7091c5 +"@octokit/oauth-app@npm:^6.0.0": + version: 6.1.0 + resolution: "@octokit/oauth-app@npm:6.1.0" + dependencies: + "@octokit/auth-oauth-app": ^7.0.0 + "@octokit/auth-oauth-user": ^4.0.0 + "@octokit/auth-unauthenticated": ^5.0.0 + "@octokit/core": ^5.0.0 + "@octokit/oauth-authorization-url": ^6.0.2 + "@octokit/oauth-methods": ^4.0.0 + "@types/aws-lambda": ^8.10.83 + universal-user-agent: ^6.0.0 + checksum: 4759ef41624928efee484802e3a6280d7a92205f435e0d299bc4b1e39661427d7f9ec33ef0d752dd6ee665e37d4afa81c8a6aea10ba53b8eb7da66167b0c52d4 languageName: node linkType: hard -"@types/graceful-fs@npm:^4.1.3": - version: 4.1.9 - resolution: "@types/graceful-fs@npm:4.1.9" - dependencies: - "@types/node": "*" - checksum: 79d746a8f053954bba36bd3d94a90c78de995d126289d656fb3271dd9f1229d33f678da04d10bce6be440494a5a73438e2e363e92802d16b8315b051036c5256 +"@octokit/oauth-authorization-url@npm:^5.0.0": + version: 5.0.0 + resolution: "@octokit/oauth-authorization-url@npm:5.0.0" + checksum: bc457c4af9559e9e8f752e643fc9d116247f4e4246e69959d99b9e39196c93d7af53c1c8e3bd946bd0e4fc29f7ba27efe9bced8525ffa41fe45ef56a8281014b languageName: node linkType: hard -"@types/html-minifier-terser@npm:^6.0.0": - version: 6.1.0 - resolution: "@types/html-minifier-terser@npm:6.1.0" - checksum: eb843f6a8d662d44fb18ec61041117734c6aae77aa38df1be3b4712e8e50ffaa35f1e1c92fdd0fde14a5675fecf457abcd0d15a01fae7506c91926176967f452 +"@octokit/oauth-authorization-url@npm:^6.0.2": + version: 6.0.2 + resolution: "@octokit/oauth-authorization-url@npm:6.0.2" + checksum: 0f11169a3eeb782cc08312c923de1a702b25ae033b972ba40380b6d72cb3f684543c8b6a5cf6f05936fdc6b8892070d4f7581138d8efc1b4c4a55ae6d7762327 languageName: node linkType: hard -"@types/http-errors@npm:*": - version: 2.0.4 - resolution: "@types/http-errors@npm:2.0.4" - checksum: 1f3d7c3b32c7524811a45690881736b3ef741bf9849ae03d32ad1ab7062608454b150a4e7f1351f83d26a418b2d65af9bdc06198f1c079d75578282884c4e8e3 +"@octokit/oauth-methods@npm:^2.0.0": + version: 2.0.6 + resolution: "@octokit/oauth-methods@npm:2.0.6" + dependencies: + "@octokit/oauth-authorization-url": ^5.0.0 + "@octokit/request": ^6.2.3 + "@octokit/request-error": ^3.0.3 + "@octokit/types": ^9.0.0 + btoa-lite: ^1.0.0 + checksum: 151b933d79d6fbf36fdfae8cdc868a3d43316352eaccf46cb8c420cfd238658275e41996d2d377177553bc0c637c3aefe8ca99c1ab7fd62054654b6119b7b1cc languageName: node linkType: hard -"@types/http-proxy@npm:^1.17.8": - version: 1.17.15 - resolution: "@types/http-proxy@npm:1.17.15" +"@octokit/oauth-methods@npm:^4.0.0, @octokit/oauth-methods@npm:^4.1.0": + version: 4.1.0 + resolution: "@octokit/oauth-methods@npm:4.1.0" dependencies: - "@types/node": "*" - checksum: d96eaf4e22232b587b46256b89c20525c453216684481015cf50fb385b0b319b883749ccb77dee9af57d107e8440cdacd56f4234f65176d317e9777077ff5bf3 + "@octokit/oauth-authorization-url": ^6.0.2 + "@octokit/request": ^8.3.1 + "@octokit/request-error": ^5.1.0 + "@octokit/types": ^13.0.0 + btoa-lite: ^1.0.0 + checksum: 2ca42f054a3b92f6f3fa9a984df7d75cc8c1f19aba5f6fc9636499dde3a8031e33148cbc936cace103b1eb7fe79d978aee7077aa6f69e0dd996ee345a10f2aa4 languageName: node linkType: hard -"@types/istanbul-lib-coverage@npm:*, @types/istanbul-lib-coverage@npm:^2.0.0, @types/istanbul-lib-coverage@npm:^2.0.1": - version: 2.0.6 - resolution: "@types/istanbul-lib-coverage@npm:2.0.6" - checksum: 3feac423fd3e5449485afac999dcfcb3d44a37c830af898b689fadc65d26526460bedb889db278e0d4d815a670331796494d073a10ee6e3a6526301fe7415778 +"@octokit/openapi-types@npm:^14.0.0": + version: 14.0.0 + resolution: "@octokit/openapi-types@npm:14.0.0" + checksum: 0a1f8f3be998cd82c5a640e9166d43fd183b33d5d36f5e1a9b81608e94d0da87c01ec46c9988f69cd26585d4e2ffc4d3ec99ee4f75e5fe997fc86dad0aa8293c languageName: node linkType: hard -"@types/istanbul-lib-report@npm:*": - version: 3.0.3 - resolution: "@types/istanbul-lib-report@npm:3.0.3" - dependencies: - "@types/istanbul-lib-coverage": "*" - checksum: b91e9b60f865ff08cb35667a427b70f6c2c63e88105eadd29a112582942af47ed99c60610180aa8dcc22382fa405033f141c119c69b95db78c4c709fbadfeeb4 +"@octokit/openapi-types@npm:^18.0.0": + version: 18.1.1 + resolution: "@octokit/openapi-types@npm:18.1.1" + checksum: 94f42977fd2fcb9983c781fd199bc11218885a1226d492680bfb1268524a1b2af48a768eef90c63b80a2874437de641d59b3b7f640a5afa93e7c21fe1a79069a languageName: node linkType: hard -"@types/istanbul-reports@npm:^3.0.0": - version: 3.0.4 - resolution: "@types/istanbul-reports@npm:3.0.4" - dependencies: - "@types/istanbul-lib-report": "*" - checksum: 93eb18835770b3431f68ae9ac1ca91741ab85f7606f310a34b3586b5a34450ec038c3eed7ab19266635499594de52ff73723a54a72a75b9f7d6a956f01edee95 +"@octokit/openapi-types@npm:^20.0.0": + version: 20.0.0 + resolution: "@octokit/openapi-types@npm:20.0.0" + checksum: 23ff7613750f8b5790a0cbed5a2048728a7909e50d726932831044908357a932c7fc0613fb7b86430a49d31b3d03a180632ea5dd936535bfbc1176391a199e96 languageName: node linkType: hard -"@types/jest@npm:^29.5.11": - version: 29.5.14 - resolution: "@types/jest@npm:29.5.14" - dependencies: - expect: ^29.0.0 - pretty-format: ^29.0.0 - checksum: 18dba4623f26661641d757c63da2db45e9524c9be96a29ef713c703a9a53792df9ecee9f7365a0858ddbd6440d98fe6b65ca67895ca5884b73cbc7ffc11f3838 +"@octokit/openapi-types@npm:^22.2.0": + version: 22.2.0 + resolution: "@octokit/openapi-types@npm:22.2.0" + checksum: eca41feac2b83298e0d95e253ac1c5b6d65155ac57f65c5fd8d4a485d9728922d85ff4bee0e815a1f3a5421311db092bdb6da9d6104a1b1843d8b274bcad9630 languageName: node linkType: hard -"@types/js-levenshtein@npm:^1.1.1": - version: 1.1.3 - resolution: "@types/js-levenshtein@npm:1.1.3" - checksum: eb338696da976925ea8448a42d775d7615a14323dceeb08909f187d0b3d3b4c1f67a1c36ef586b1c2318b70ab141bba8fc58311ba1c816711704605aec09db8b +"@octokit/plugin-paginate-graphql@npm:^4.0.0": + version: 4.0.1 + resolution: "@octokit/plugin-paginate-graphql@npm:4.0.1" + peerDependencies: + "@octokit/core": ">=5" + checksum: 109d895303d39c1ba362a260c71202f3c92798faa4f4e05638023685b5ac9191cee61759ea0eee43b9ce945cf8c52aebf2dbd54c392165e86448d6421e97b0f5 languageName: node linkType: hard -"@types/js-yaml@npm:^4.0.1": - version: 4.0.9 - resolution: "@types/js-yaml@npm:4.0.9" - checksum: e5e5e49b5789a29fdb1f7d204f82de11cb9e8f6cb24ab064c616da5d6e1b3ccfbf95aa5d1498a9fbd3b9e745564e69b4a20b6c530b5a8bbb2d4eb830cda9bc69 +"@octokit/plugin-paginate-rest@npm:11.3.1": + version: 11.3.1 + resolution: "@octokit/plugin-paginate-rest@npm:11.3.1" + dependencies: + "@octokit/types": ^13.5.0 + peerDependencies: + "@octokit/core": 5 + checksum: 42c7c08e7287b4b85d2ae47852d2ffeb238c134ad6bcff18bddc154b15f6bec31778816c0763181401c370198390db7f6b0c3c44750fdfeec459594f7f4b5933 languageName: node linkType: hard -"@types/jsdom@npm:^20.0.0": - version: 20.0.1 - resolution: "@types/jsdom@npm:20.0.1" +"@octokit/plugin-paginate-rest@npm:^6.1.2": + version: 6.1.2 + resolution: "@octokit/plugin-paginate-rest@npm:6.1.2" dependencies: - "@types/node": "*" - "@types/tough-cookie": "*" - parse5: ^7.0.0 - checksum: d55402c5256ef451f93a6e3d3881f98339fe73a5ac2030588df056d6835df8367b5a857b48d27528289057e26dcdd3f502edc00cb877c79174cb3a4c7f2198c1 + "@octokit/tsconfig": ^1.0.2 + "@octokit/types": ^9.2.3 + peerDependencies: + "@octokit/core": ">=4" + checksum: a7b3e686c7cbd27ec07871cde6e0b1dc96337afbcef426bbe3067152a17b535abd480db1861ca28c88d93db5f7bfdbcadd0919ead19818c28a69d0e194038065 languageName: node linkType: hard -"@types/json-schema@npm:*, @types/json-schema@npm:^7.0.11, @types/json-schema@npm:^7.0.12, @types/json-schema@npm:^7.0.4, @types/json-schema@npm:^7.0.5, @types/json-schema@npm:^7.0.6, @types/json-schema@npm:^7.0.7, @types/json-schema@npm:^7.0.8, @types/json-schema@npm:^7.0.9": - version: 7.0.15 - resolution: "@types/json-schema@npm:7.0.15" - checksum: 97ed0cb44d4070aecea772b7b2e2ed971e10c81ec87dd4ecc160322ffa55ff330dace1793489540e3e318d90942064bb697cc0f8989391797792d919737b3b98 +"@octokit/plugin-paginate-rest@npm:^9.0.0": + version: 9.2.1 + resolution: "@octokit/plugin-paginate-rest@npm:9.2.1" + dependencies: + "@octokit/types": ^12.6.0 + peerDependencies: + "@octokit/core": 5 + checksum: 554ad17a7dcfd7028e321ffcae233f8ae7975569084f19d9b6217b47fb182e2604145108de7a9029777e6dc976b27b2dd7387e2e47a77532a72e6c195880576d languageName: node linkType: hard -"@types/json5@npm:^0.0.29": - version: 0.0.29 - resolution: "@types/json5@npm:0.0.29" - checksum: e60b153664572116dfea673c5bda7778dbff150498f44f998e34b5886d8afc47f16799280e4b6e241c0472aef1bc36add771c569c68fc5125fc2ae519a3eb9ac +"@octokit/plugin-request-log@npm:^1.0.4": + version: 1.0.4 + resolution: "@octokit/plugin-request-log@npm:1.0.4" + peerDependencies: + "@octokit/core": ">=3" + checksum: 2086db00056aee0f8ebd79797b5b57149ae1014e757ea08985b71eec8c3d85dbb54533f4fd34b6b9ecaa760904ae6a7536be27d71e50a3782ab47809094bfc0c languageName: node linkType: hard -"@types/jsonwebtoken@npm:^9.0.0": - version: 9.0.7 - resolution: "@types/jsonwebtoken@npm:9.0.7" +"@octokit/plugin-rest-endpoint-methods@npm:13.2.2": + version: 13.2.2 + resolution: "@octokit/plugin-rest-endpoint-methods@npm:13.2.2" dependencies: - "@types/node": "*" - checksum: 872b62e2a50ec399d695402ccddfeb5cd66a6c3d28511f27453b932b6b67eb82c2d0ecaa864939848b88b3a8276c2492647bf5707bc82a6ac7e420d3412b9047 + "@octokit/types": ^13.5.0 + peerDependencies: + "@octokit/core": ^5 + checksum: 347b3a891a561ed1dcc307a2dce42ca48c318c465ad91a26225d3d6493aef1b7ff868e6c56a0d7aa4170d028c7429ca1ec52aed6be34615a6ed701c3bcafdb17 languageName: node linkType: hard -"@types/keyv@npm:^4.2.0": - version: 4.2.0 - resolution: "@types/keyv@npm:4.2.0" +"@octokit/plugin-rest-endpoint-methods@npm:^7.1.2": + version: 7.2.3 + resolution: "@octokit/plugin-rest-endpoint-methods@npm:7.2.3" dependencies: - keyv: "*" - checksum: 8713da9382b9346d664866a6cab2f91b0fd479f61379af891303a618e9a2abad6f347adc38a0850540e3f2dad278427de24e7555339264fddb04d1d17d3b50e0 - languageName: node - linkType: hard - -"@types/lodash@npm:^4.14.175": - version: 4.17.12 - resolution: "@types/lodash@npm:4.17.12" - checksum: 7b564e4114f09ce5ae31a2e9493592baf20bb498507f3705c5d91cf838c2298b4f6a06f2d6c8dc608fcac63e210a2b7b13388c7a5e220e15688f813521030127 + "@octokit/types": ^10.0.0 + peerDependencies: + "@octokit/core": ">=3" + checksum: 21dfb98514dbe900c29cddb13b335bbce43d613800c6b17eba3c1fd31d17e69c1960f3067f7bf864bb38fdd5043391f4a23edee42729d8c7fbabd00569a80336 languageName: node linkType: hard -"@types/luxon@npm:^3.0.0, @types/luxon@npm:~3.4.0": - version: 3.4.2 - resolution: "@types/luxon@npm:3.4.2" - checksum: 6f92d5bd02e89f310395753506bcd9cef3a56f5940f7a50db2a2b9822bce753553ac767d143cb5b4f9ed5ddd4a84e64f89ff538082ceb4d18739af7781b56925 +"@octokit/plugin-retry@npm:^6.0.0": + version: 6.1.0 + resolution: "@octokit/plugin-retry@npm:6.1.0" + dependencies: + "@octokit/request-error": ^5.0.0 + "@octokit/types": ^13.0.0 + bottleneck: ^2.15.3 + peerDependencies: + "@octokit/core": 5 + checksum: 95233dcd4c9a3e8a6a448eec95cc850b0d0b24ddfbfb8bb7f082bdedfcb81aca598cbc18d6e50f9c10976414ad3b83a6a2c4edb4c617da9b3399d4726b77ee82 languageName: node linkType: hard -"@types/markdown-escape@npm:^1.1.3": - version: 1.1.3 - resolution: "@types/markdown-escape@npm:1.1.3" - checksum: cb2e410993271f0ccc526190391a08344f4f602be69e06fee989d36d5886866ba9ba2184054895d0ad2a12d57b02f3ccf86d7a1fe8904be48bcc1ee61b98e32f +"@octokit/plugin-throttling@npm:^8.0.0": + version: 8.2.0 + resolution: "@octokit/plugin-throttling@npm:8.2.0" + dependencies: + "@octokit/types": ^12.2.0 + bottleneck: ^2.15.3 + peerDependencies: + "@octokit/core": ^5.0.0 + checksum: 12c357175783bcd0feea454ece57f033928948a0555dc97c79675b56d2cc79043d2a5e28a7554d3531f1de13583634df3b48fb9609f79e8bb3adad92820bd807 languageName: node linkType: hard -"@types/methods@npm:^1.1.4": - version: 1.1.4 - resolution: "@types/methods@npm:1.1.4" - checksum: ad2a7178486f2fd167750f3eb920ab032a947ff2e26f55c86670a6038632d790b46f52e5b6ead5823f1e53fc68028f1e9ddd15cfead7903e04517c88debd72b1 +"@octokit/request-error@npm:^3.0.0, @octokit/request-error@npm:^3.0.3": + version: 3.0.3 + resolution: "@octokit/request-error@npm:3.0.3" + dependencies: + "@octokit/types": ^9.0.0 + deprecation: ^2.0.0 + once: ^1.4.0 + checksum: 5db0b514732686b627e6ed9ef1ccdbc10501f1b271a9b31f784783f01beee70083d7edcfeb35fbd7e569fa31fdd6762b1ff6b46101700d2d97e7e48e749520d0 languageName: node linkType: hard -"@types/mime@npm:^1": - version: 1.3.5 - resolution: "@types/mime@npm:1.3.5" - checksum: e29a5f9c4776f5229d84e525b7cd7dd960b51c30a0fb9a028c0821790b82fca9f672dab56561e2acd9e8eed51d431bde52eafdfef30f643586c4162f1aecfc78 +"@octokit/request-error@npm:^5.0.0, @octokit/request-error@npm:^5.1.0": + version: 5.1.0 + resolution: "@octokit/request-error@npm:5.1.0" + dependencies: + "@octokit/types": ^13.1.0 + deprecation: ^2.0.0 + once: ^1.4.0 + checksum: 2cdbb8e44072323b5e1c8c385727af6700e3e492d55bc1e8d0549c4a3d9026914f915866323d371b1f1772326d6e902341c872679cc05c417ffc15cadf5f4a4e languageName: node linkType: hard -"@types/ms@npm:*": - version: 0.7.34 - resolution: "@types/ms@npm:0.7.34" - checksum: f38d36e7b6edecd9badc9cf50474159e9da5fa6965a75186cceaf883278611b9df6669dc3a3cc122b7938d317b68a9e3d573d316fcb35d1be47ec9e468c6bd8a +"@octokit/request@npm:^6.0.0, @octokit/request@npm:^6.2.3": + version: 6.2.8 + resolution: "@octokit/request@npm:6.2.8" + dependencies: + "@octokit/endpoint": ^7.0.0 + "@octokit/request-error": ^3.0.0 + "@octokit/types": ^9.0.0 + is-plain-object: ^5.0.0 + node-fetch: ^2.6.7 + universal-user-agent: ^6.0.0 + checksum: 3747106f50d7c462131ff995b13defdd78024b7becc40283f4ac9ea0af2391ff33a0bb476a05aa710346fe766d20254979079a1d6f626112015ba271fe38f3e2 languageName: node linkType: hard -"@types/node-forge@npm:^1.3.0": - version: 1.3.11 - resolution: "@types/node-forge@npm:1.3.11" +"@octokit/request@npm:^8.3.0, @octokit/request@npm:^8.3.1": + version: 8.4.0 + resolution: "@octokit/request@npm:8.4.0" dependencies: - "@types/node": "*" - checksum: 1e86bd55b92a492eaafd75f6d01f31e7d86a5cdadd0c6bcdc0b1df4103b7f99bb75b832efd5217c7ddda5c781095dc086a868e20b9de00f5a427ddad4c296cd5 + "@octokit/endpoint": ^9.0.1 + "@octokit/request-error": ^5.1.0 + "@octokit/types": ^13.1.0 + universal-user-agent: ^6.0.0 + checksum: 3d937e817a85c0adf447ab46b428ccd702c31b2091e47adec90583ec2242bd64666306fe8188628fb139aa4752e19400eb7652b0f5ca33cd9e77bbb2c60b202a languageName: node linkType: hard -"@types/node@npm:*": - version: 22.8.2 - resolution: "@types/node@npm:22.8.2" +"@octokit/rest@npm:^19.0.3": + version: 19.0.13 + resolution: "@octokit/rest@npm:19.0.13" dependencies: - undici-types: ~6.19.8 - checksum: 8d57352fe563e8de78311c2f799e8c3805cbec3840dfa54d5168588c30112d1e87a7940ebdbdcebb1f0094e26b7e626dfadd9683f5c60d8a76e9082051fea14a + "@octokit/core": ^4.2.1 + "@octokit/plugin-paginate-rest": ^6.1.2 + "@octokit/plugin-request-log": ^1.0.4 + "@octokit/plugin-rest-endpoint-methods": ^7.1.2 + checksum: ca1553e3fe46efabffef60e68e4a228d4cc0f0d545daf7f019560f666d3e934c6f3a6402a42bbd786af4f3c0a6e69380776312f01b7d52998fe1bbdd1b068f69 languageName: node linkType: hard -"@types/node@npm:^12.7.1": - version: 12.20.55 - resolution: "@types/node@npm:12.20.55" - checksum: e4f86785f4092706e0d3b0edff8dca5a13b45627e4b36700acd8dfe6ad53db71928c8dee914d4276c7fd3b6ccd829aa919811c9eb708a2c8e4c6eb3701178c37 +"@octokit/tsconfig@npm:^1.0.2": + version: 1.0.2 + resolution: "@octokit/tsconfig@npm:1.0.2" + checksum: 74d56f3e9f326a8dd63700e9a51a7c75487180629c7a68bbafee97c612fbf57af8347369bfa6610b9268a3e8b833c19c1e4beb03f26db9a9dce31f6f7a19b5b1 languageName: node linkType: hard -"@types/node@npm:^16.9.2": - version: 16.18.115 - resolution: "@types/node@npm:16.18.115" - checksum: a9caf3a72b8fca0a945c04b99502615f297fc9d12779147822cf10b4a3fe77161b631ae239b9522cf9ccda90fcd9d49abe255bd2012a3347f677210610760d6d +"@octokit/types@npm:^10.0.0": + version: 10.0.0 + resolution: "@octokit/types@npm:10.0.0" + dependencies: + "@octokit/openapi-types": ^18.0.0 + checksum: 8aafba2ff0cd2435fb70c291bf75ed071c0fa8a865cf6169648732068a35dec7b85a345851f18920ec5f3e94ee0e954988485caac0da09ec3f6781cc44fe153a languageName: node linkType: hard -"@types/node@npm:^18.11.18, @types/node@npm:^18.11.9": - version: 18.19.60 - resolution: "@types/node@npm:18.19.60" +"@octokit/types@npm:^12.0.0, @octokit/types@npm:^12.2.0, @octokit/types@npm:^12.6.0": + version: 12.6.0 + resolution: "@octokit/types@npm:12.6.0" dependencies: - undici-types: ~5.26.4 - checksum: 3cd21254a9f2175d6f652d9d5b9afc0261903e0dfd54355074bf5bd81d6606738bcfdb5581538037e9bd42886c8f5e96596245409fb8cde7fe13751d07bc1495 + "@octokit/openapi-types": ^20.0.0 + checksum: 850235f425584499a2266d5c585c1c2462ae11e25c650567142f3342cb9ce589c8c8fed87705811ca93271fd28c68e1fa77b88b67b97015d7b63d269fa46ed05 languageName: node linkType: hard -"@types/node@npm:^20.1.1": - version: 20.17.2 - resolution: "@types/node@npm:20.17.2" +"@octokit/types@npm:^13.0.0, @octokit/types@npm:^13.1.0, @octokit/types@npm:^13.5.0": + version: 13.6.2 + resolution: "@octokit/types@npm:13.6.2" dependencies: - undici-types: ~6.19.2 - checksum: 3e9be67728001fb2a0ba730d8e909559fb09b992443d8d9cc9009be717cb44c673f52a734d5802a67ff50c8ddd8ef7d9eba40e9d2a82a73098e081d2625260e6 + "@octokit/openapi-types": ^22.2.0 + checksum: c4e51da1ccabc028b70fc90ca58d65091862a7fe3a65ec2692681f473a0aee4c355abfd15fd547bce3a9800d07c1592603fe84b4223e7beea0d493e4fcc1a65e languageName: node linkType: hard -"@types/parse-json@npm:^4.0.0": - version: 4.0.2 - resolution: "@types/parse-json@npm:4.0.2" - checksum: 5bf62eec37c332ad10059252fc0dab7e7da730764869c980b0714777ad3d065e490627be9f40fc52f238ffa3ac4199b19de4127196910576c2fe34dd47c7a470 +"@octokit/types@npm:^8.0.0": + version: 8.2.1 + resolution: "@octokit/types@npm:8.2.1" + dependencies: + "@octokit/openapi-types": ^14.0.0 + checksum: 92f2fe5ea8c4c6ddbb2363c74cd865c64e5753eaa4895bc925b5064390890b1441c5406015d8a92285f386cc7e6fe714c47fe4beda370fcda9177153299c9e37 languageName: node linkType: hard -"@types/passport@npm:^1.0.3": - version: 1.0.17 - resolution: "@types/passport@npm:1.0.17" +"@octokit/types@npm:^9.0.0, @octokit/types@npm:^9.2.3": + version: 9.3.2 + resolution: "@octokit/types@npm:9.3.2" dependencies: - "@types/express": "*" - checksum: b131d5963576e759f972f038bb7461dcaaa1dc484a488eb093eac6a9f8d4f51c9b7adcd432ae84e3ecb68839dfba16f6d569f36664330b6af59d36ff3c4c64e2 + "@octokit/openapi-types": ^18.0.0 + checksum: f55d096aaed3e04b8308d4422104fb888f355988056ba7b7ef0a4c397b8a3e54290d7827b06774dbe0c9ce55280b00db486286954f9c265aa6b03091026d9da8 languageName: node linkType: hard -"@types/qs@npm:*, @types/qs@npm:^6.9.6": - version: 6.9.16 - resolution: "@types/qs@npm:6.9.16" - checksum: 2e8918150c12735630f7ee16b770c72949274938c30306025f68aaf977227f41fe0c698ed93db1099e04916d582ac5a1faf7e3c7061c8d885d9169f59a184b6c +"@octokit/webhooks-methods@npm:^3.0.0": + version: 3.0.3 + resolution: "@octokit/webhooks-methods@npm:3.0.3" + checksum: 1caccc8b27ad53bbb8e39cf3db98a3ef5abcec9f919024d7f89618a5156044c6585871cc97176ec63fb2503bfe6b6ca8e4a18313e1eaed1c0163b194a4dada09 languageName: node linkType: hard -"@types/range-parser@npm:*": - version: 1.2.7 - resolution: "@types/range-parser@npm:1.2.7" - checksum: 95640233b689dfbd85b8c6ee268812a732cf36d5affead89e806fe30da9a430767af8ef2cd661024fd97e19d61f3dec75af2df5e80ec3bea000019ab7028629a +"@octokit/webhooks-methods@npm:^4.1.0": + version: 4.1.0 + resolution: "@octokit/webhooks-methods@npm:4.1.0" + checksum: 0ce67220156d554ae4bc6a7230ae62c0389b9bbee1f6d1077947e64645ee864f0702778e86427d59ae970176620753f54edb44665cedbeb9bc22b9348a074427 languageName: node linkType: hard -"@types/request@npm:^2.47.1, @types/request@npm:^2.48.8": - version: 2.48.12 - resolution: "@types/request@npm:2.48.12" - dependencies: - "@types/caseless": "*" - "@types/node": "*" - "@types/tough-cookie": "*" - form-data: ^2.5.0 - checksum: 20dfad0a46b4249bf42f09c51fbd4d02ec6738c5152194b5c7c69bab80b00eae9cc71df4489ffa929d0968d453ef7d0823d1f98871efed563a4fdb57bf0a4c58 +"@octokit/webhooks-types@npm:6.11.0": + version: 6.11.0 + resolution: "@octokit/webhooks-types@npm:6.11.0" + checksum: af35ac7a3d8d95bf9906fb3a8f6075cf9cb10707c79444fa82df2d64596125f515a35a4995b4548b84ee042c7c1b1cc120e05ece4a197af541a52f154bf4bcce languageName: node linkType: hard -"@types/resolve@npm:1.20.2": - version: 1.20.2 - resolution: "@types/resolve@npm:1.20.2" - checksum: 61c2cad2499ffc8eab36e3b773945d337d848d3ac6b7b0a87c805ba814bc838ef2f262fc0f109bfd8d2e0898ff8bd80ad1025f9ff64f1f71d3d4294c9f14e5f6 +"@octokit/webhooks-types@npm:7.6.1": + version: 7.6.1 + resolution: "@octokit/webhooks-types@npm:7.6.1" + checksum: 5b3aa8e63c4eaf511e571dbd55868688cb2ec68c41f02238b4894336e2220fa19a723be83b6383621fbaa90695056a64533959a9cc6ffdbd27faa58b22e6ef51 languageName: node linkType: hard -"@types/retry@npm:0.12.0": - version: 0.12.0 - resolution: "@types/retry@npm:0.12.0" - checksum: 61a072c7639f6e8126588bf1eb1ce8835f2cb9c2aba795c4491cf6310e013267b0c8488039857c261c387e9728c1b43205099223f160bb6a76b4374f741b5603 +"@octokit/webhooks@npm:^10.9.2": + version: 10.9.2 + resolution: "@octokit/webhooks@npm:10.9.2" + dependencies: + "@octokit/request-error": ^3.0.0 + "@octokit/webhooks-methods": ^3.0.0 + "@octokit/webhooks-types": 6.11.0 + aggregate-error: ^3.1.0 + checksum: 06ad79021adf9facff3937d387ed5949a2c42ef550401ce2b12df88816b2de30f5b868129a7af523c6036d18b76fb89d22c71d26223f1c2e07c40552f45f6387 languageName: node linkType: hard -"@types/retry@npm:0.12.2": - version: 0.12.2 - resolution: "@types/retry@npm:0.12.2" - checksum: e5675035717b39ce4f42f339657cae9637cf0c0051cf54314a6a2c44d38d91f6544be9ddc0280587789b6afd056be5d99dbe3e9f4df68c286c36321579b1bf4a +"@octokit/webhooks@npm:^12.0.4": + version: 12.3.1 + resolution: "@octokit/webhooks@npm:12.3.1" + dependencies: + "@octokit/request-error": ^5.0.0 + "@octokit/webhooks-methods": ^4.1.0 + "@octokit/webhooks-types": 7.6.1 + aggregate-error: ^3.1.0 + checksum: 883be6e06a18e59884914f43818dc6249612401905b98c133e6e6f52f039fa5a65b420a2bdd7b2a7c248ada6b23504963fdd3685719a42798a40d838a832026f languageName: node linkType: hard -"@types/sarif@npm:^2.1.4": - version: 2.1.7 - resolution: "@types/sarif@npm:2.1.7" - checksum: ee5d30f5a2678091502343fba7905e85d25dbb545f920de9fc8a7c6693509b491a043168970a16325730cc0c88de54d2b6b3de0c2caa31645c8ebf558c5553af +"@open-draft/until@npm:^1.0.3": + version: 1.0.3 + resolution: "@open-draft/until@npm:1.0.3" + checksum: 323e92ebef0150ed0f8caedc7d219b68cdc50784fa4eba0377eef93533d3f46514eb2400ced83dda8c51bddc3d2c7b8e9cf95e5ec85ab7f62dfc015d174f62f2 languageName: node linkType: hard -"@types/semver@npm:7.5.8, @types/semver@npm:^7.5.0": - version: 7.5.8 - resolution: "@types/semver@npm:7.5.8" - checksum: ea6f5276f5b84c55921785a3a27a3cd37afee0111dfe2bcb3e03c31819c197c782598f17f0b150a69d453c9584cd14c4c4d7b9a55d2c5e6cacd4d66fdb3b3663 +"@openapi-contrib/openapi-schema-to-json-schema@npm:~3.2.0": + version: 3.2.0 + resolution: "@openapi-contrib/openapi-schema-to-json-schema@npm:3.2.0" + dependencies: + fast-deep-equal: ^3.1.3 + checksum: c47cbf85bee3e38e06a627efbbdffd78c95cdadebf6d935092c8ff616e31a69fcfd739a5d9cca5b4b2c6aef49f8dbced6c300eac1f8ade66b3fab403df19ccb2 languageName: node linkType: hard -"@types/send@npm:*": - version: 0.17.4 - resolution: "@types/send@npm:0.17.4" +"@openapitools/openapi-generator-cli@npm:^2.7.0": + version: 2.15.0 + resolution: "@openapitools/openapi-generator-cli@npm:2.15.0" dependencies: - "@types/mime": ^1 - "@types/node": "*" - checksum: cf4db48251bbb03cd6452b4de6e8e09e2d75390a92fd798eca4a803df06444adc94ed050246c94c7ed46fb97be1f63607f0e1f13c3ce83d71788b3e08640e5e0 + "@nestjs/axios": 3.1.0 + "@nestjs/common": 10.4.5 + "@nestjs/core": 10.4.5 + "@nuxtjs/opencollective": 0.3.2 + axios: 1.7.7 + chalk: 4.1.2 + commander: 8.3.0 + compare-versions: 4.1.4 + concurrently: 6.5.1 + console.table: 0.10.0 + fs-extra: 10.1.0 + glob: 9.3.5 + inquirer: 8.2.6 + lodash: 4.17.21 + proxy-agent: 6.4.0 + reflect-metadata: 0.1.13 + rxjs: 7.8.1 + tslib: 2.7.0 + bin: + openapi-generator-cli: main.js + checksum: 2ea04baf61b526bb8a1c12121fe07ca6f95fa5884f0ca9af8030292cfead39e79707f2649d1cf36ec266c9d199b5ded4165fbd4f6ba089be028bce9f616fbf19 languageName: node linkType: hard -"@types/serve-index@npm:^1.9.1, @types/serve-index@npm:^1.9.4": - version: 1.9.4 - resolution: "@types/serve-index@npm:1.9.4" +"@openshift/dynamic-plugin-sdk-webpack@npm:^3.0.0": + version: 3.0.1 + resolution: "@openshift/dynamic-plugin-sdk-webpack@npm:3.0.1" dependencies: - "@types/express": "*" - checksum: 72727c88d54da5b13275ebfb75dcdc4aa12417bbe9da1939e017c4c5f0c906fae843aa4e0fbfe360e7ee9df2f3d388c21abfc488f77ce58693fb57809f8ded92 + lodash: ^4.17.21 + yup: ^0.32.11 + peerDependencies: + webpack: ^5.75.0 + checksum: 5c52a4528b7a30a12263e3c5c5a77a9edb97a151316d5db3472d1451104bd0f06cd7384e7168d3ee1b87b9b7dac5a9589beeb4e15c2f662c8523d8f487e1e032 languageName: node linkType: hard -"@types/serve-static@npm:*, @types/serve-static@npm:^1.13.10, @types/serve-static@npm:^1.15.5": - version: 1.15.7 - resolution: "@types/serve-static@npm:1.15.7" - dependencies: - "@types/http-errors": "*" - "@types/node": "*" - "@types/send": "*" - checksum: bbbf00dbd84719da2250a462270dc68964006e8d62f41fe3741abd94504ba3688f420a49afb2b7478921a1544d3793183ffa097c5724167da777f4e0c7f1a7d6 +"@opentelemetry/api@npm:^1.3.0, @opentelemetry/api@npm:^1.4.0, @opentelemetry/api@npm:^1.9.0": + version: 1.9.0 + resolution: "@opentelemetry/api@npm:1.9.0" + checksum: 9e88e59d53ced668f3daaecfd721071c5b85a67dd386f1c6f051d1be54375d850016c881f656ffbe9a03bedae85f7e89c2f2b635313f9c9b195ad033cdc31020 languageName: node linkType: hard -"@types/set-cookie-parser@npm:^2.4.0": - version: 2.4.10 - resolution: "@types/set-cookie-parser@npm:2.4.10" - dependencies: - "@types/node": "*" - checksum: 105cc90c7d7deeb344858f720b58bd137356586545ac00d1a448e050bfcc0f385553ff26bc9c674bd8c2e953a458149eadb1945ee3d1eee81e6c0656236ebc0a +"@patternfly/patternfly@npm:^5.1.0": + version: 5.4.2 + resolution: "@patternfly/patternfly@npm:5.4.2" + checksum: 1cc2c3f7020f050eb4bd72d57a48473c7fad9c931b16e3c8e8ba7f0d94654d22a1944b3593b6b118a1b28f14749ae6a630622efd6c1cd54b6f08cd360b186cb3 languageName: node linkType: hard -"@types/sockjs@npm:^0.3.33, @types/sockjs@npm:^0.3.36": - version: 0.3.36 - resolution: "@types/sockjs@npm:0.3.36" +"@patternfly/react-charts@npm:^7.1.1": + version: 7.4.7 + resolution: "@patternfly/react-charts@npm:7.4.7" dependencies: - "@types/node": "*" - checksum: b4b5381122465d80ea8b158537c00bc82317222d3fb31fd7229ff25b31fa89134abfbab969118da55622236bf3d8fee75759f3959908b5688991f492008f29bc + "@patternfly/react-styles": ^5.4.1 + "@patternfly/react-tokens": ^5.4.1 + hoist-non-react-statics: ^3.3.2 + lodash: ^4.17.21 + tslib: ^2.7.0 + victory-area: ^37.1.1 + victory-axis: ^37.1.1 + victory-bar: ^37.1.1 + victory-box-plot: ^37.1.1 + victory-chart: ^37.1.1 + victory-core: ^37.1.1 + victory-create-container: ^37.1.1 + victory-cursor-container: ^37.1.1 + victory-group: ^37.1.1 + victory-legend: ^37.1.1 + victory-line: ^37.1.1 + victory-pie: ^37.1.1 + victory-scatter: ^37.1.1 + victory-stack: ^37.1.1 + victory-tooltip: ^37.1.1 + victory-voronoi-container: ^37.1.1 + victory-zoom-container: ^37.1.1 + peerDependencies: + react: ^17 || ^18 + react-dom: ^17 || ^18 + checksum: 12053e92d884d7cf7ff2cb1c59eac6cb94b9df275f6dbeb690b8585c82b9ad403b85ff9c9473c468301b4f88a3205fca0e8f02c211aee60a60faccfd1401681c + languageName: node + linkType: hard + +"@patternfly/react-core@npm:^5.1.1": + version: 5.4.12 + resolution: "@patternfly/react-core@npm:5.4.12" + dependencies: + "@patternfly/react-icons": ^5.4.2 + "@patternfly/react-styles": ^5.4.1 + "@patternfly/react-tokens": ^5.4.1 + focus-trap: 7.6.2 + react-dropzone: ^14.2.3 + tslib: ^2.7.0 + peerDependencies: + react: ^17 || ^18 + react-dom: ^17 || ^18 + checksum: f73dfa1d7eaa33762277b5ca58378b99cf61dee25499f10702beab632e560bd2996acde8d04ff8eff446806f4f90ac9b68bbd17406e8aadb6d2c671248cce4fb + languageName: node + linkType: hard + +"@patternfly/react-icons@npm:^5.1.1, @patternfly/react-icons@npm:^5.4.2": + version: 5.4.2 + resolution: "@patternfly/react-icons@npm:5.4.2" + peerDependencies: + react: ^17 || ^18 + react-dom: ^17 || ^18 + checksum: 3f23a2e52f962b923ac28eccc4bdabbc0f2f698f8ff1dc9fec8c164123ebf921501ba86a6a4566607118f38c8924974a1d7976f9ab87c33b318be507b1e34946 languageName: node linkType: hard -"@types/ssh2-streams@npm:*": - version: 0.1.12 - resolution: "@types/ssh2-streams@npm:0.1.12" - dependencies: - "@types/node": "*" - checksum: aa0aa45e40cfca34b4443dafa8d28ff49196c05c71867cbf0a8cdd5127be4d8a3840819543fcad16535653ca8b0e29217671ed6500ff1e7a3ad2442c5d1b40a6 +"@patternfly/react-styles@npm:^5.1.1, @patternfly/react-styles@npm:^5.4.1": + version: 5.4.1 + resolution: "@patternfly/react-styles@npm:5.4.1" + checksum: 6fb1ec38a017acd1cf1262b39c69f70a650ed7f205d5433c83087957395e6e487914ed1992a67de37718ea536145fc974d7d9dbc6460ae38d668035f4c6d0c1b languageName: node linkType: hard -"@types/ssh2@npm:*": - version: 1.15.1 - resolution: "@types/ssh2@npm:1.15.1" - dependencies: - "@types/node": ^18.11.18 - checksum: 6a10b4da60817f2939cac18006a7ccbc6421facf2370a263072fc5290b1f5d445b385c5f309e93ce447bb33ad92dac18f562ccda20f092076da1c1a55da299fb +"@patternfly/react-tokens@npm:^5.4.1": + version: 5.4.1 + resolution: "@patternfly/react-tokens@npm:5.4.1" + checksum: d6f51cbd31db797ed42b148f58ecb28bcc93bdcdf39d0f20b8db5ac40ac2998002ddfad764af38c2f00bc366ac57b1c12fdd42a55e7a30fe3b01e26739e770cf languageName: node linkType: hard -"@types/ssh2@npm:^0.5.48": - version: 0.5.52 - resolution: "@types/ssh2@npm:0.5.52" - dependencies: - "@types/node": "*" - "@types/ssh2-streams": "*" - checksum: bc1c76ac727ad73ddd59ba849cf0ea3ed2e930439e7a363aff24f04f29b74f9b1976369b869dc9a018223c9fb8ad041c09a0f07aea8cf46a8c920049188cddae +"@patternfly/react-topology@npm:5.3.0": + version: 5.3.0 + resolution: "@patternfly/react-topology@npm:5.3.0" + dependencies: + "@patternfly/react-core": ^5.1.1 + "@patternfly/react-icons": ^5.1.1 + "@patternfly/react-styles": ^5.1.1 + "@types/d3": ^7.4.0 + "@types/d3-force": ^1.2.1 + "@types/dagre": 0.7.42 + "@types/react-measure": ^2.0.6 + d3: ^7.8.0 + dagre: 0.8.2 + mobx: ^6.9.0 + mobx-react: ^7.6.0 + point-in-svg-path: ^1.0.1 + popper.js: ^1.16.1 + react-measure: ^2.3.0 + tslib: ^2.0.0 + webcola: 3.4.0 + peerDependencies: + react: ^17 || ^18 + react-dom: ^17 || ^18 + checksum: f0d4f0a3bcb371a94e7ca20e996119cfd448791baa974e8d3c246f0484be062ccaec215ce71ef3a7917faf1b30cffda7785ebb81d97ca8ea7ee9b12d79bf0b73 languageName: node linkType: hard -"@types/stack-utils@npm:^2.0.0": - version: 2.0.3 - resolution: "@types/stack-utils@npm:2.0.3" - checksum: 72576cc1522090fe497337c2b99d9838e320659ac57fa5560fcbdcbafcf5d0216c6b3a0a8a4ee4fdb3b1f5e3420aa4f6223ab57b82fef3578bec3206425c6cf5 +"@pkgjs/parseargs@npm:^0.11.0": + version: 0.11.0 + resolution: "@pkgjs/parseargs@npm:0.11.0" + checksum: 6ad6a00fc4f2f2cfc6bff76fb1d88b8ee20bc0601e18ebb01b6d4be583733a860239a521a7fbca73b612e66705078809483549d2b18f370eb346c5155c8e4a0f languageName: node linkType: hard -"@types/superagent@npm:*": - version: 8.1.9 - resolution: "@types/superagent@npm:8.1.9" +"@playwright/test@npm:1.45.3": + version: 1.45.3 + resolution: "@playwright/test@npm:1.45.3" dependencies: - "@types/cookiejar": ^2.1.5 - "@types/methods": ^1.1.4 - "@types/node": "*" - form-data: ^4.0.0 - checksum: 530d8c2e87706315c82c8c9696500c40621de3353bc54ea9b104947f3530243abf54d0a49a6ae219d4947606a102ceb94bedfc43b9cc49f74069a18cbb3be8e2 + playwright: 1.45.3 + bin: + playwright: cli.js + checksum: 3e2c88d40f98cf94ab7947263804d1ee78c4bb21a35c8dbb64855eed5565ffc688509c5f07bda5438cba6c354374981448dcba3dbe326d1699b4fef75c9ce43d languageName: node linkType: hard -"@types/supertest@npm:2.0.16": - version: 2.0.16 - resolution: "@types/supertest@npm:2.0.16" +"@playwright/test@npm:^1.32.3": + version: 1.49.1 + resolution: "@playwright/test@npm:1.49.1" dependencies: - "@types/superagent": "*" - checksum: 2fc998ea698e0467cdbe3bea0ebce2027ea3a45a13e51a6cecb0435f44b486faecf99c34d8702d2d7fe033e6e09fdd2b374af52ecc8d0c69a1deec66b8c0dd52 + playwright: 1.49.1 + bin: + playwright: cli.js + checksum: cdbd16df3d773dc8e522d79b4b961e25c2e1b1d4f3ec45eb711078ab5d11bca47caafe833e2be2f923328fbd012405a9ee31d9b449d184077598546a36847e69 languageName: node linkType: hard -"@types/tough-cookie@npm:*": - version: 4.0.5 - resolution: "@types/tough-cookie@npm:4.0.5" - checksum: f19409d0190b179331586365912920d192733112a195e870c7f18d20ac8adb7ad0b0ff69dad430dba8bc2be09593453a719cfea92dc3bda19748fd158fe1498d +"@pmmmwh/react-refresh-webpack-plugin@npm:^0.5.7": + version: 0.5.15 + resolution: "@pmmmwh/react-refresh-webpack-plugin@npm:0.5.15" + dependencies: + ansi-html: ^0.0.9 + core-js-pure: ^3.23.3 + error-stack-parser: ^2.0.6 + html-entities: ^2.1.0 + loader-utils: ^2.0.4 + schema-utils: ^4.2.0 + source-map: ^0.7.3 + peerDependencies: + "@types/webpack": 4.x || 5.x + react-refresh: ">=0.10.0 <1.0.0" + sockjs-client: ^1.4.0 + type-fest: ">=0.17.0 <5.0.0" + webpack: ">=4.43.0 <6.0.0" + webpack-dev-server: 3.x || 4.x || 5.x + webpack-hot-middleware: 2.x + webpack-plugin-serve: 0.x || 1.x + peerDependenciesMeta: + "@types/webpack": + optional: true + sockjs-client: + optional: true + type-fest: + optional: true + webpack-dev-server: + optional: true + webpack-hot-middleware: + optional: true + webpack-plugin-serve: + optional: true + checksum: 82df6244146209d63a12f0ca2e70b05274ee058c7e6d6eb4ced1228afde3b039a7f3f3cc0c76f1bb4b28deadbcf08bc2821c814f0bfee06979128578300fff3d languageName: node linkType: hard -"@types/triple-beam@npm:^1.3.2": - version: 1.3.5 - resolution: "@types/triple-beam@npm:1.3.5" - checksum: 519b6a1b30d4571965c9706ad5400a200b94e4050feca3e7856e3ea7ac00ec9903e32e9a10e2762d0f7e472d5d03e5f4b29c16c0bd8c1f77c8876c683b2231f1 +"@popperjs/core@npm:^2.11.8": + version: 2.11.8 + resolution: "@popperjs/core@npm:2.11.8" + checksum: e5c69fdebf52a4012f6a1f14817ca8e9599cb1be73dd1387e1785e2ed5e5f0862ff817f420a87c7fc532add1f88a12e25aeb010ffcbdc98eace3d55ce2139cf0 languageName: node linkType: hard -"@types/urijs@npm:^1.19.19": - version: 1.19.25 - resolution: "@types/urijs@npm:1.19.25" - checksum: cce3fd2845d5e143f4130134a5f6ff7e02b4dfc05f4d13c7b28a404fd9420bb8a6483a572c0662693bb18c5b3d8f814270aa75f3fd539f32fae22d005e755b5d +"@protobufjs/aspromise@npm:^1.1.1, @protobufjs/aspromise@npm:^1.1.2": + version: 1.1.2 + resolution: "@protobufjs/aspromise@npm:1.1.2" + checksum: 011fe7ef0826b0fd1a95935a033a3c0fd08483903e1aa8f8b4e0704e3233406abb9ee25350ec0c20bbecb2aad8da0dcea58b392bbd77d6690736f02c143865d2 languageName: node linkType: hard -"@types/uuid@npm:^9.0.1": - version: 9.0.8 - resolution: "@types/uuid@npm:9.0.8" - checksum: b8c60b7ba8250356b5088302583d1704a4e1a13558d143c549c408bf8920535602ffc12394ede77f8a8083511b023704bc66d1345792714002bfa261b17c5275 +"@protobufjs/base64@npm:^1.1.2": + version: 1.1.2 + resolution: "@protobufjs/base64@npm:1.1.2" + checksum: 67173ac34de1e242c55da52c2f5bdc65505d82453893f9b51dc74af9fe4c065cf4a657a4538e91b0d4a1a1e0a0642215e31894c31650ff6e3831471061e1ee9e languageName: node linkType: hard -"@types/webpack-env@npm:^1.15.2": - version: 1.18.5 - resolution: "@types/webpack-env@npm:1.18.5" - checksum: 4ca8eb4c44e1e1807c3e245442fce7aaf2816a163056de9436bbac44cc47c8bc5b1c9a330dc05748d6616431b1fb5bd5379733fb1da0b78d03c59f4ec824c184 +"@protobufjs/codegen@npm:^2.0.4": + version: 2.0.4 + resolution: "@protobufjs/codegen@npm:2.0.4" + checksum: 59240c850b1d3d0b56d8f8098dd04787dcaec5c5bd8de186fa548de86b86076e1c50e80144b90335e705a044edf5bc8b0998548474c2a10a98c7e004a1547e4b languageName: node linkType: hard -"@types/ws@npm:^8.5.10, @types/ws@npm:^8.5.3, @types/ws@npm:^8.5.5": - version: 8.5.12 - resolution: "@types/ws@npm:8.5.12" +"@protobufjs/eventemitter@npm:^1.1.0": + version: 1.1.0 + resolution: "@protobufjs/eventemitter@npm:1.1.0" + checksum: 0369163a3d226851682f855f81413cbf166cd98f131edb94a0f67f79e75342d86e89df9d7a1df08ac28be2bc77e0a7f0200526bb6c2a407abbfee1f0262d5fd7 + languageName: node + linkType: hard + +"@protobufjs/fetch@npm:^1.1.0": + version: 1.1.0 + resolution: "@protobufjs/fetch@npm:1.1.0" dependencies: - "@types/node": "*" - checksum: ddefb6ad1671f70ce73b38a5f47f471d4d493864fca7c51f002a86e5993d031294201c5dced6d5018fb8905ad46888d65c7f20dd54fc165910b69f42fba9a6d0 + "@protobufjs/aspromise": ^1.1.1 + "@protobufjs/inquire": ^1.1.0 + checksum: 3fce7e09eb3f1171dd55a192066450f65324fd5f7cc01a431df01bb00d0a895e6bfb5b0c5561ce157ee1d886349c90703d10a4e11a1a256418ff591b969b3477 languageName: node linkType: hard -"@types/yargs-parser@npm:*": - version: 21.0.3 - resolution: "@types/yargs-parser@npm:21.0.3" - checksum: ef236c27f9432983e91432d974243e6c4cdae227cb673740320eff32d04d853eed59c92ca6f1142a335cfdc0e17cccafa62e95886a8154ca8891cc2dec4ee6fc +"@protobufjs/float@npm:^1.0.2": + version: 1.0.2 + resolution: "@protobufjs/float@npm:1.0.2" + checksum: 5781e1241270b8bd1591d324ca9e3a3128d2f768077a446187a049e36505e91bc4156ed5ac3159c3ce3d2ba3743dbc757b051b2d723eea9cd367bfd54ab29b2f languageName: node linkType: hard -"@types/yargs@npm:^17.0.8": - version: 17.0.33 - resolution: "@types/yargs@npm:17.0.33" - dependencies: - "@types/yargs-parser": "*" - checksum: ee013f257472ab643cb0584cf3e1ff9b0c44bca1c9ba662395300a7f1a6c55fa9d41bd40ddff42d99f5d95febb3907c9ff600fbcb92dadbec22c6a76de7e1236 +"@protobufjs/inquire@npm:^1.1.0": + version: 1.1.0 + resolution: "@protobufjs/inquire@npm:1.1.0" + checksum: ca06f02eaf65ca36fb7498fc3492b7fc087bfcc85c702bac5b86fad34b692bdce4990e0ef444c1e2aea8c034227bd1f0484be02810d5d7e931c55445555646f4 languageName: node linkType: hard -"@typescript-eslint/eslint-plugin@npm:^6.12.0": - version: 6.21.0 - resolution: "@typescript-eslint/eslint-plugin@npm:6.21.0" +"@protobufjs/path@npm:^1.1.2": + version: 1.1.2 + resolution: "@protobufjs/path@npm:1.1.2" + checksum: 856eeb532b16a7aac071cacde5c5620df800db4c80cee6dbc56380524736205aae21e5ae47739114bf669ab5e8ba0e767a282ad894f3b5e124197cb9224445ee + languageName: node + linkType: hard + +"@protobufjs/pool@npm:^1.1.0": + version: 1.1.0 + resolution: "@protobufjs/pool@npm:1.1.0" + checksum: d6a34fbbd24f729e2a10ee915b74e1d77d52214de626b921b2d77288bd8f2386808da2315080f2905761527cceffe7ec34c7647bd21a5ae41a25e8212ff79451 + languageName: node + linkType: hard + +"@protobufjs/utf8@npm:^1.1.0": + version: 1.1.0 + resolution: "@protobufjs/utf8@npm:1.1.0" + checksum: f9bf3163d13aaa3b6f5e6fbf37a116e094ea021c0e1f2a7ccd0e12a29e2ce08dafba4e8b36e13f8ed7397e1591610ce880ed1289af4d66cf4ace8a36a9557278 + languageName: node + linkType: hard + +"@radix-ui/primitive@npm:1.1.1": + version: 1.1.1 + resolution: "@radix-ui/primitive@npm:1.1.1" + checksum: d7e819177590108b74139809d52ec043c0962ae3513e947998be575fb13639c5c1c091896ddcf1d6a22a777d44ade59d22c2019ce9099607fc62a5de09c59707 + languageName: node + linkType: hard + +"@radix-ui/react-arrow@npm:1.1.1": + version: 1.1.1 + resolution: "@radix-ui/react-arrow@npm:1.1.1" dependencies: - "@eslint-community/regexpp": ^4.5.1 - "@typescript-eslint/scope-manager": 6.21.0 - "@typescript-eslint/type-utils": 6.21.0 - "@typescript-eslint/utils": 6.21.0 - "@typescript-eslint/visitor-keys": 6.21.0 - debug: ^4.3.4 - graphemer: ^1.4.0 - ignore: ^5.2.4 - natural-compare: ^1.4.0 - semver: ^7.5.4 - ts-api-utils: ^1.0.1 + "@radix-ui/react-primitive": 2.0.1 peerDependencies: - "@typescript-eslint/parser": ^6.0.0 || ^6.0.0-alpha - eslint: ^7.0.0 || ^8.0.0 + "@types/react": "*" + "@types/react-dom": "*" + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: - typescript: + "@types/react": optional: true - checksum: 5ef2c502255e643e98051e87eb682c2a257e87afd8ec3b9f6274277615e1c2caf3131b352244cfb1987b8b2c415645eeacb9113fa841fc4c9b2ac46e8aed6efd + "@types/react-dom": + optional: true + checksum: c75505c2858cffff7c742e888b635879f9a6d95e08bf5ae939be33f97e1171379bc6b5354ec0cd3d12624bdbe5a830ee6aa0fb1f46b1af160b488bc54e64d486 languageName: node linkType: hard -"@typescript-eslint/parser@npm:^6.7.2": - version: 6.21.0 - resolution: "@typescript-eslint/parser@npm:6.21.0" +"@radix-ui/react-collection@npm:1.1.1": + version: 1.1.1 + resolution: "@radix-ui/react-collection@npm:1.1.1" dependencies: - "@typescript-eslint/scope-manager": 6.21.0 - "@typescript-eslint/types": 6.21.0 - "@typescript-eslint/typescript-estree": 6.21.0 - "@typescript-eslint/visitor-keys": 6.21.0 - debug: ^4.3.4 + "@radix-ui/react-compose-refs": 1.1.1 + "@radix-ui/react-context": 1.1.1 + "@radix-ui/react-primitive": 2.0.1 + "@radix-ui/react-slot": 1.1.1 peerDependencies: - eslint: ^7.0.0 || ^8.0.0 + "@types/react": "*" + "@types/react-dom": "*" + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: - typescript: + "@types/react": optional: true - checksum: 162fe3a867eeeffda7328bce32dae45b52283c68c8cb23258fb9f44971f761991af61f71b8c9fe1aa389e93dfe6386f8509c1273d870736c507d76dd40647b68 + "@types/react-dom": + optional: true + checksum: 413fbcb542ae5efefab05053a9cc3380586e7bc3d36427845a62749d90284986333e609066b952cc6ccd0a8ef49e8de773ea1cd294aecff3cdb1eb4047e97c2f languageName: node linkType: hard -"@typescript-eslint/scope-manager@npm:6.21.0": - version: 6.21.0 - resolution: "@typescript-eslint/scope-manager@npm:6.21.0" - dependencies: - "@typescript-eslint/types": 6.21.0 - "@typescript-eslint/visitor-keys": 6.21.0 - checksum: 71028b757da9694528c4c3294a96cc80bc7d396e383a405eab3bc224cda7341b88e0fc292120b35d3f31f47beac69f7083196c70616434072fbcd3d3e62d3376 +"@radix-ui/react-compose-refs@npm:1.1.1": + version: 1.1.1 + resolution: "@radix-ui/react-compose-refs@npm:1.1.1" + peerDependencies: + "@types/react": "*" + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + "@types/react": + optional: true + checksum: 1be82f9f7fab96cc10f167a2e4f976e0135a63d473334f664c06f02af13bc5ea1994cb0505f89ed190d756cb65d57506721c030908af07e49b9e3cfd36044f33 languageName: node linkType: hard -"@typescript-eslint/scope-manager@npm:8.12.2": - version: 8.12.2 - resolution: "@typescript-eslint/scope-manager@npm:8.12.2" - dependencies: - "@typescript-eslint/types": 8.12.2 - "@typescript-eslint/visitor-keys": 8.12.2 - checksum: dd960238f1cf0f24e6c16525f0cbdb6cf65bfc3cfe650f376ecda2583c378c2e3a7eb4c2d57e04e009626d009018226b722a670ca283086c2a6cc1931c2268d8 +"@radix-ui/react-context@npm:1.1.1": + version: 1.1.1 + resolution: "@radix-ui/react-context@npm:1.1.1" + peerDependencies: + "@types/react": "*" + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + "@types/react": + optional: true + checksum: 9a04db236685dacc2f5ab2bdcfc4c82b974998e712ab97d79b11d5b4ef073d24aa9392398c876ef6cb3c59f40299285ceee3646187ad818cdad4fe1c74469d3f languageName: node linkType: hard -"@typescript-eslint/type-utils@npm:6.21.0": - version: 6.21.0 - resolution: "@typescript-eslint/type-utils@npm:6.21.0" - dependencies: - "@typescript-eslint/typescript-estree": 6.21.0 - "@typescript-eslint/utils": 6.21.0 - debug: ^4.3.4 - ts-api-utils: ^1.0.1 - peerDependencies: - eslint: ^7.0.0 || ^8.0.0 +"@radix-ui/react-dialog@npm:^1.0.4": + version: 1.1.4 + resolution: "@radix-ui/react-dialog@npm:1.1.4" + dependencies: + "@radix-ui/primitive": 1.1.1 + "@radix-ui/react-compose-refs": 1.1.1 + "@radix-ui/react-context": 1.1.1 + "@radix-ui/react-dismissable-layer": 1.1.3 + "@radix-ui/react-focus-guards": 1.1.1 + "@radix-ui/react-focus-scope": 1.1.1 + "@radix-ui/react-id": 1.1.0 + "@radix-ui/react-portal": 1.1.3 + "@radix-ui/react-presence": 1.1.2 + "@radix-ui/react-primitive": 2.0.1 + "@radix-ui/react-slot": 1.1.1 + "@radix-ui/react-use-controllable-state": 1.1.0 + aria-hidden: ^1.1.1 + react-remove-scroll: ^2.6.1 + peerDependencies: + "@types/react": "*" + "@types/react-dom": "*" + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: - typescript: + "@types/react": optional: true - checksum: 77025473f4d80acf1fafcce99c5c283e557686a61861febeba9c9913331f8a41e930bf5cd8b7a54db502a57b6eb8ea6d155cbd4f41349ed00e3d7aeb1f477ddc + "@types/react-dom": + optional: true + checksum: 695b35c7283adfe2be4ad88d30f0ad08be099a55dfd54e49ede61074846255b426eb57734509b5fc6f349439a051b48e44e58b542c2605383aa721a1b2bd7861 languageName: node linkType: hard -"@typescript-eslint/types@npm:6.21.0": - version: 6.21.0 - resolution: "@typescript-eslint/types@npm:6.21.0" - checksum: 9501b47d7403417af95fc1fb72b2038c5ac46feac0e1598a46bcb43e56a606c387e9dcd8a2a0abe174c91b509f2d2a8078b093786219eb9a01ab2fbf9ee7b684 +"@radix-ui/react-direction@npm:1.1.0": + version: 1.1.0 + resolution: "@radix-ui/react-direction@npm:1.1.0" + peerDependencies: + "@types/react": "*" + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + "@types/react": + optional: true + checksum: 25ad0d1d65ad08c93cebfbefdff9ef2602e53f4573a66b37d2c366ede9485e75ec6fc8e7dd7d2939b34ea5504ca0fe6ac4a3acc2f6ee9b62d131d65486eafd49 languageName: node linkType: hard -"@typescript-eslint/types@npm:8.12.2": - version: 8.12.2 - resolution: "@typescript-eslint/types@npm:8.12.2" - checksum: b0f7effdac842428b15d76710295a8b4f1fe1ff14e40fbb10c8f571c11fd517d75d76decbecf90412bc5eabce0cd4ac0acf53d6b0d8ba2bdde86ab3b627bdac2 +"@radix-ui/react-dismissable-layer@npm:1.1.3": + version: 1.1.3 + resolution: "@radix-ui/react-dismissable-layer@npm:1.1.3" + dependencies: + "@radix-ui/primitive": 1.1.1 + "@radix-ui/react-compose-refs": 1.1.1 + "@radix-ui/react-primitive": 2.0.1 + "@radix-ui/react-use-callback-ref": 1.1.0 + "@radix-ui/react-use-escape-keydown": 1.1.0 + peerDependencies: + "@types/react": "*" + "@types/react-dom": "*" + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + "@types/react": + optional: true + "@types/react-dom": + optional: true + checksum: 26d15726bdb274aeb8d801fd163051c270707fb19e9bac4e0e90b368e79063a5347a0b15dc3aadc0bbafa157674e9e796d785d720bd5132c059ac5294ac73a81 languageName: node linkType: hard -"@typescript-eslint/typescript-estree@npm:6.21.0": - version: 6.21.0 - resolution: "@typescript-eslint/typescript-estree@npm:6.21.0" - dependencies: - "@typescript-eslint/types": 6.21.0 - "@typescript-eslint/visitor-keys": 6.21.0 - debug: ^4.3.4 - globby: ^11.1.0 - is-glob: ^4.0.3 - minimatch: 9.0.3 - semver: ^7.5.4 - ts-api-utils: ^1.0.1 +"@radix-ui/react-dropdown-menu@npm:^2.0.5": + version: 2.1.4 + resolution: "@radix-ui/react-dropdown-menu@npm:2.1.4" + dependencies: + "@radix-ui/primitive": 1.1.1 + "@radix-ui/react-compose-refs": 1.1.1 + "@radix-ui/react-context": 1.1.1 + "@radix-ui/react-id": 1.1.0 + "@radix-ui/react-menu": 2.1.4 + "@radix-ui/react-primitive": 2.0.1 + "@radix-ui/react-use-controllable-state": 1.1.0 + peerDependencies: + "@types/react": "*" + "@types/react-dom": "*" + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: - typescript: + "@types/react": optional: true - checksum: dec02dc107c4a541e14fb0c96148f3764b92117c3b635db3a577b5a56fc48df7a556fa853fb82b07c0663b4bf2c484c9f245c28ba3e17e5cb0918ea4cab2ea21 + "@types/react-dom": + optional: true + checksum: 51014b38daab21d32164813d228b182e5dbf90c77115e5c32b8bbd37696a303485fe30fa2e0a097e1ca3f474cad0dd15efcecc3f567b5edf0a79b5092fe3b4e0 languageName: node linkType: hard -"@typescript-eslint/typescript-estree@npm:8.12.2": - version: 8.12.2 - resolution: "@typescript-eslint/typescript-estree@npm:8.12.2" - dependencies: - "@typescript-eslint/types": 8.12.2 - "@typescript-eslint/visitor-keys": 8.12.2 - debug: ^4.3.4 - fast-glob: ^3.3.2 - is-glob: ^4.0.3 - minimatch: ^9.0.4 - semver: ^7.6.0 - ts-api-utils: ^1.3.0 +"@radix-ui/react-focus-guards@npm:1.1.1": + version: 1.1.1 + resolution: "@radix-ui/react-focus-guards@npm:1.1.1" + peerDependencies: + "@types/react": "*" + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: - typescript: + "@types/react": optional: true - checksum: 923d297ba891cbaf4f00618db2313123238657b179f56a5d42d02a4e6433c513f73a9dd9aa62cd2c5b9fb2c5912a59319eb0a14ef2403792e15757142722309a + checksum: ac8dd31f48fa0500bafd9368f2f06c5a06918dccefa89fa5dc77ca218dc931a094a81ca57f6b181138029822f7acdd5280dceccf5ba4d9263c754fb8f7961879 languageName: node linkType: hard -"@typescript-eslint/utils@npm:6.21.0, @typescript-eslint/utils@npm:^6.0.0": - version: 6.21.0 - resolution: "@typescript-eslint/utils@npm:6.21.0" +"@radix-ui/react-focus-scope@npm:1.1.1": + version: 1.1.1 + resolution: "@radix-ui/react-focus-scope@npm:1.1.1" dependencies: - "@eslint-community/eslint-utils": ^4.4.0 - "@types/json-schema": ^7.0.12 - "@types/semver": ^7.5.0 - "@typescript-eslint/scope-manager": 6.21.0 - "@typescript-eslint/types": 6.21.0 - "@typescript-eslint/typescript-estree": 6.21.0 - semver: ^7.5.4 + "@radix-ui/react-compose-refs": 1.1.1 + "@radix-ui/react-primitive": 2.0.1 + "@radix-ui/react-use-callback-ref": 1.1.0 peerDependencies: - eslint: ^7.0.0 || ^8.0.0 - checksum: b129b3a4aebec8468259f4589985cb59ea808afbfdb9c54f02fad11e17d185e2bf72bb332f7c36ec3c09b31f18fc41368678b076323e6e019d06f74ee93f7bf2 + "@types/react": "*" + "@types/react-dom": "*" + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + "@types/react": + optional: true + "@types/react-dom": + optional: true + checksum: 8716fe9b029a66f81b37e4e22457dd0fc7b4dba573d712454e18ead850f256d84cd994eeebcc31dd7780cf1028b6410d9ebe152fff4478d3b4ce2700690a38f4 languageName: node linkType: hard -"@typescript-eslint/utils@npm:^6.0.0 || ^7.0.0 || ^8.0.0": - version: 8.12.2 - resolution: "@typescript-eslint/utils@npm:8.12.2" +"@radix-ui/react-id@npm:1.1.0": + version: 1.1.0 + resolution: "@radix-ui/react-id@npm:1.1.0" dependencies: - "@eslint-community/eslint-utils": ^4.4.0 - "@typescript-eslint/scope-manager": 8.12.2 - "@typescript-eslint/types": 8.12.2 - "@typescript-eslint/typescript-estree": 8.12.2 + "@radix-ui/react-use-layout-effect": 1.1.0 peerDependencies: - eslint: ^8.57.0 || ^9.0.0 - checksum: 7ae4ef40d0961642fc31644c47e05f751369b47f3d9f5ea4e6c6eaa09d534efc6a2ea89f12368eed7dc8b32a7378e533f84379f70f2acd85418815f63b249b18 + "@types/react": "*" + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + "@types/react": + optional: true + checksum: 6fbc9d1739b3b082412da10359e63967b4f3a60383ebda4c9e56b07a722d29bee53b203b3b1418f88854a29315a7715867133bb149e6e22a027a048cdd20d970 languageName: node linkType: hard -"@typescript-eslint/visitor-keys@npm:6.21.0": - version: 6.21.0 - resolution: "@typescript-eslint/visitor-keys@npm:6.21.0" - dependencies: - "@typescript-eslint/types": 6.21.0 - eslint-visitor-keys: ^3.4.1 - checksum: 67c7e6003d5af042d8703d11538fca9d76899f0119130b373402819ae43f0bc90d18656aa7add25a24427ccf1a0efd0804157ba83b0d4e145f06107d7d1b7433 +"@radix-ui/react-menu@npm:2.1.4": + version: 2.1.4 + resolution: "@radix-ui/react-menu@npm:2.1.4" + dependencies: + "@radix-ui/primitive": 1.1.1 + "@radix-ui/react-collection": 1.1.1 + "@radix-ui/react-compose-refs": 1.1.1 + "@radix-ui/react-context": 1.1.1 + "@radix-ui/react-direction": 1.1.0 + "@radix-ui/react-dismissable-layer": 1.1.3 + "@radix-ui/react-focus-guards": 1.1.1 + "@radix-ui/react-focus-scope": 1.1.1 + "@radix-ui/react-id": 1.1.0 + "@radix-ui/react-popper": 1.2.1 + "@radix-ui/react-portal": 1.1.3 + "@radix-ui/react-presence": 1.1.2 + "@radix-ui/react-primitive": 2.0.1 + "@radix-ui/react-roving-focus": 1.1.1 + "@radix-ui/react-slot": 1.1.1 + "@radix-ui/react-use-callback-ref": 1.1.0 + aria-hidden: ^1.1.1 + react-remove-scroll: ^2.6.1 + peerDependencies: + "@types/react": "*" + "@types/react-dom": "*" + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + "@types/react": + optional: true + "@types/react-dom": + optional: true + checksum: 2a20db7c017075d3ceb07b076dfdbdc3c4d26825642e2f52d4bda9947078725db129c2b41a93a6f1393526eca3bf586f54dc47a9a66e1eef621c94a55a216aa4 languageName: node linkType: hard -"@typescript-eslint/visitor-keys@npm:8.12.2": - version: 8.12.2 - resolution: "@typescript-eslint/visitor-keys@npm:8.12.2" - dependencies: - "@typescript-eslint/types": 8.12.2 - eslint-visitor-keys: ^3.4.3 - checksum: 97b919a0f0982e16a46ed568ae195906ec4aed7db358308d2311e9829ceb7f521e4a2017b3bdedad264ee61fdf08d3d12ada7d5622f13b20ac324118fe5b8447 +"@radix-ui/react-popper@npm:1.2.1": + version: 1.2.1 + resolution: "@radix-ui/react-popper@npm:1.2.1" + dependencies: + "@floating-ui/react-dom": ^2.0.0 + "@radix-ui/react-arrow": 1.1.1 + "@radix-ui/react-compose-refs": 1.1.1 + "@radix-ui/react-context": 1.1.1 + "@radix-ui/react-primitive": 2.0.1 + "@radix-ui/react-use-callback-ref": 1.1.0 + "@radix-ui/react-use-layout-effect": 1.1.0 + "@radix-ui/react-use-rect": 1.1.0 + "@radix-ui/react-use-size": 1.1.0 + "@radix-ui/rect": 1.1.0 + peerDependencies: + "@types/react": "*" + "@types/react-dom": "*" + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + "@types/react": + optional: true + "@types/react-dom": + optional: true + checksum: 1416acda53d06d497d40a587e02ef821dcb955f2eee86bad3a9acacfd7fda8601e5d36a9cbe5e47d200052169ccd2d840b685c51e7192afdf3fc7fa072274ee0 languageName: node linkType: hard -"@ungap/structured-clone@npm:^1.2.0": - version: 1.2.0 - resolution: "@ungap/structured-clone@npm:1.2.0" - checksum: 4f656b7b4672f2ce6e272f2427d8b0824ed11546a601d8d5412b9d7704e83db38a8d9f402ecdf2b9063fc164af842ad0ec4a55819f621ed7e7ea4d1efcc74524 +"@radix-ui/react-portal@npm:1.1.3": + version: 1.1.3 + resolution: "@radix-ui/react-portal@npm:1.1.3" + dependencies: + "@radix-ui/react-primitive": 2.0.1 + "@radix-ui/react-use-layout-effect": 1.1.0 + peerDependencies: + "@types/react": "*" + "@types/react-dom": "*" + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + "@types/react": + optional: true + "@types/react-dom": + optional: true + checksum: 470fb50c940772d05cc268e219b3d15848909dcd0a2dc1952965d0af905992f0ccab99e99c490dea6564c441397eba720b8425ba9f4582c94bef40ebe27ac0d0 languageName: node linkType: hard -"@useoptic/json-pointer-helpers@npm:0.55.1": - version: 0.55.1 - resolution: "@useoptic/json-pointer-helpers@npm:0.55.1" +"@radix-ui/react-presence@npm:1.1.2": + version: 1.1.2 + resolution: "@radix-ui/react-presence@npm:1.1.2" dependencies: - jsonpointer: ^5.0.1 - minimatch: 9.0.3 - checksum: 874db1e25c4abecf29faf95c51d39d127ac50ee9f1ad9654babb3a0257a7c321e54312bf66214ac188e3f92f7e9c342fd81565356c0472689c120ea40465b15d + "@radix-ui/react-compose-refs": 1.1.1 + "@radix-ui/react-use-layout-effect": 1.1.0 + peerDependencies: + "@types/react": "*" + "@types/react-dom": "*" + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + "@types/react": + optional: true + "@types/react-dom": + optional: true + checksum: 0345bc8d3e1ddcbf4b864025833c71f3d76e4801ce16ad126a98aed816be6e819c4fe01097c6c1320771b947f5a14929cc610d18e7a1438cfb5573289fa4d4a6 languageName: node linkType: hard -"@useoptic/openapi-utilities@npm:^0.55.0": - version: 0.55.1 - resolution: "@useoptic/openapi-utilities@npm:0.55.1" +"@radix-ui/react-primitive@npm:2.0.1": + version: 2.0.1 + resolution: "@radix-ui/react-primitive@npm:2.0.1" dependencies: - "@useoptic/json-pointer-helpers": 0.55.1 - ajv: ^8.6.0 - ajv-errors: ~3.0.0 - ajv-formats: ~2.1.0 - chalk: ^4.1.2 - fast-deep-equal: ^3.1.3 - is-url: ^1.2.4 - js-yaml: ^4.1.0 - json-stable-stringify: ^1.0.1 - lodash.groupby: ^4.6.0 - lodash.isequal: ^4.5.0 - lodash.omit: ^4.5.0 - node-machine-id: ^1.1.12 - openapi-types: ^12.0.2 - ts-invariant: ^0.9.3 - url-join: ^4.0.1 - yaml-ast-parser: ^0.0.43 - checksum: 53f9ebc645d69cb1ede0263bb3dc2786cfb18f7e5a3da734898c3d9cc2109d581cd6238cec77e6eaae2f478da4ed134abca8255977e68fd06418966a65a9bbe6 + "@radix-ui/react-slot": 1.1.1 + peerDependencies: + "@types/react": "*" + "@types/react-dom": "*" + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + "@types/react": + optional: true + "@types/react-dom": + optional: true + checksum: d75882209101155f20babcff9475b887929db6473cd8e5b56d0c24d24d0042202e0fa785e6d6c6b322a96d9777cd0ef7610def9e11ea69839c6b204f1c99cf16 languageName: node linkType: hard -"@webassemblyjs/ast@npm:1.12.1, @webassemblyjs/ast@npm:^1.12.1": - version: 1.12.1 - resolution: "@webassemblyjs/ast@npm:1.12.1" +"@radix-ui/react-roving-focus@npm:1.1.1": + version: 1.1.1 + resolution: "@radix-ui/react-roving-focus@npm:1.1.1" + dependencies: + "@radix-ui/primitive": 1.1.1 + "@radix-ui/react-collection": 1.1.1 + "@radix-ui/react-compose-refs": 1.1.1 + "@radix-ui/react-context": 1.1.1 + "@radix-ui/react-direction": 1.1.0 + "@radix-ui/react-id": 1.1.0 + "@radix-ui/react-primitive": 2.0.1 + "@radix-ui/react-use-callback-ref": 1.1.0 + "@radix-ui/react-use-controllable-state": 1.1.0 + peerDependencies: + "@types/react": "*" + "@types/react-dom": "*" + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + "@types/react": + optional: true + "@types/react-dom": + optional: true + checksum: f3a78bd15cca322b384758c938106414b4cbe99aa58ca3eb12ec9d66552c7fa137128e846f413a6b7027f4bed04b2233c9aad8adb1ba07e14ed7a697f972d4f6 + languageName: node + linkType: hard + +"@radix-ui/react-slot@npm:1.1.1": + version: 1.1.1 + resolution: "@radix-ui/react-slot@npm:1.1.1" dependencies: - "@webassemblyjs/helper-numbers": 1.11.6 - "@webassemblyjs/helper-wasm-bytecode": 1.11.6 - checksum: 31bcc64147236bd7b1b6d29d1f419c1f5845c785e1e42dc9e3f8ca2e05a029e9393a271b84f3a5bff2a32d35f51ff59e2181a6e5f953fe88576acd6750506202 + "@radix-ui/react-compose-refs": 1.1.1 + peerDependencies: + "@types/react": "*" + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + "@types/react": + optional: true + checksum: ac391b921dcde1a71db8307247b36cd6908e0886d7a7b0babeb25158292bc29b61ccfb3f83279bfad11fe1f0f90e3e2f3de93b1174f36d107d77b073fe1a652a languageName: node linkType: hard -"@webassemblyjs/floating-point-hex-parser@npm:1.11.6": - version: 1.11.6 - resolution: "@webassemblyjs/floating-point-hex-parser@npm:1.11.6" - checksum: 29b08758841fd8b299c7152eda36b9eb4921e9c584eb4594437b5cd90ed6b920523606eae7316175f89c20628da14326801090167cc7fbffc77af448ac84b7e2 +"@radix-ui/react-tooltip@npm:^1.0.6": + version: 1.1.6 + resolution: "@radix-ui/react-tooltip@npm:1.1.6" + dependencies: + "@radix-ui/primitive": 1.1.1 + "@radix-ui/react-compose-refs": 1.1.1 + "@radix-ui/react-context": 1.1.1 + "@radix-ui/react-dismissable-layer": 1.1.3 + "@radix-ui/react-id": 1.1.0 + "@radix-ui/react-popper": 1.2.1 + "@radix-ui/react-portal": 1.1.3 + "@radix-ui/react-presence": 1.1.2 + "@radix-ui/react-primitive": 2.0.1 + "@radix-ui/react-slot": 1.1.1 + "@radix-ui/react-use-controllable-state": 1.1.0 + "@radix-ui/react-visually-hidden": 1.1.1 + peerDependencies: + "@types/react": "*" + "@types/react-dom": "*" + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + "@types/react": + optional: true + "@types/react-dom": + optional: true + checksum: aabbb2c3a7592419fcf41d306582c57307e9518ee29d80e0a8f811bb29ade72144ee35a4f4a120e5143dee46813017fe4e087f351503929553a94e3af986305f languageName: node linkType: hard -"@webassemblyjs/helper-api-error@npm:1.11.6": - version: 1.11.6 - resolution: "@webassemblyjs/helper-api-error@npm:1.11.6" - checksum: e8563df85161096343008f9161adb138a6e8f3c2cc338d6a36011aa55eabb32f2fd138ffe63bc278d009ada001cc41d263dadd1c0be01be6c2ed99076103689f +"@radix-ui/react-use-callback-ref@npm:1.1.0": + version: 1.1.0 + resolution: "@radix-ui/react-use-callback-ref@npm:1.1.0" + peerDependencies: + "@types/react": "*" + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + "@types/react": + optional: true + checksum: 2ec7903c67e3034b646005556f44fd975dc5204db6885fc58403e3584f27d95f0b573bc161de3d14fab9fda25150bf3b91f718d299fdfc701c736bd0bd2281fa languageName: node linkType: hard -"@webassemblyjs/helper-buffer@npm:1.12.1": - version: 1.12.1 - resolution: "@webassemblyjs/helper-buffer@npm:1.12.1" - checksum: c3ffb723024130308db608e86e2bdccd4868bbb62dffb0a9a1530606496f79c87f8565bd8e02805ce64912b71f1a70ee5fb00307258b0c082c3abf961d097eca +"@radix-ui/react-use-controllable-state@npm:1.1.0": + version: 1.1.0 + resolution: "@radix-ui/react-use-controllable-state@npm:1.1.0" + dependencies: + "@radix-ui/react-use-callback-ref": 1.1.0 + peerDependencies: + "@types/react": "*" + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + "@types/react": + optional: true + checksum: a6c167cf8eb0744effbeab1f92ea6c0ad71838b222670c0488599f28eecd941d87ac1eed4b5d3b10df6dc7b7b2edb88a54e99d92c2942ce3b21f81d5c188f32d languageName: node linkType: hard -"@webassemblyjs/helper-numbers@npm:1.11.6": - version: 1.11.6 - resolution: "@webassemblyjs/helper-numbers@npm:1.11.6" +"@radix-ui/react-use-escape-keydown@npm:1.1.0": + version: 1.1.0 + resolution: "@radix-ui/react-use-escape-keydown@npm:1.1.0" dependencies: - "@webassemblyjs/floating-point-hex-parser": 1.11.6 - "@webassemblyjs/helper-api-error": 1.11.6 - "@xtuc/long": 4.2.2 - checksum: f4b562fa219f84368528339e0f8d273ad44e047a07641ffcaaec6f93e5b76fd86490a009aa91a294584e1436d74b0a01fa9fde45e333a4c657b58168b04da424 + "@radix-ui/react-use-callback-ref": 1.1.0 + peerDependencies: + "@types/react": "*" + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + "@types/react": + optional: true + checksum: 9bf88ea272b32ea0f292afd336780a59c5646f795036b7e6105df2d224d73c54399ee5265f61d571eb545d28382491a8b02dc436e3088de8dae415d58b959b71 languageName: node linkType: hard -"@webassemblyjs/helper-wasm-bytecode@npm:1.11.6": - version: 1.11.6 - resolution: "@webassemblyjs/helper-wasm-bytecode@npm:1.11.6" - checksum: 3535ef4f1fba38de3475e383b3980f4bbf3de72bbb631c2b6584c7df45be4eccd62c6ff48b5edd3f1bcff275cfd605a37679ec199fc91fd0a7705d7f1e3972dc +"@radix-ui/react-use-layout-effect@npm:1.1.0": + version: 1.1.0 + resolution: "@radix-ui/react-use-layout-effect@npm:1.1.0" + peerDependencies: + "@types/react": "*" + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + "@types/react": + optional: true + checksum: 271ea0bf1cd74718895a68414a6e95537737f36e02ad08eeb61a82b229d6abda9cff3135a479e134e1f0ce2c3ff97bb85babbdce751985fb755a39b231d7ccf2 languageName: node linkType: hard -"@webassemblyjs/helper-wasm-section@npm:1.12.1": - version: 1.12.1 - resolution: "@webassemblyjs/helper-wasm-section@npm:1.12.1" +"@radix-ui/react-use-rect@npm:1.1.0": + version: 1.1.0 + resolution: "@radix-ui/react-use-rect@npm:1.1.0" dependencies: - "@webassemblyjs/ast": 1.12.1 - "@webassemblyjs/helper-buffer": 1.12.1 - "@webassemblyjs/helper-wasm-bytecode": 1.11.6 - "@webassemblyjs/wasm-gen": 1.12.1 - checksum: c19810cdd2c90ff574139b6d8c0dda254d42d168a9e5b3d353d1bc085f1d7164ccd1b3c05592a45a939c47f7e403dc8d03572bb686642f06a3d02932f6f0bc8f + "@radix-ui/rect": 1.1.0 + peerDependencies: + "@types/react": "*" + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + "@types/react": + optional: true + checksum: facc9528af43df3b01952dbb915ff751b5924db2c31d41f053ddea19a7cc5cac5b096c4d7a2059e8f564a3f0d4a95bcd909df8faed52fa01709af27337628e2c languageName: node linkType: hard -"@webassemblyjs/ieee754@npm:1.11.6": - version: 1.11.6 - resolution: "@webassemblyjs/ieee754@npm:1.11.6" +"@radix-ui/react-use-size@npm:1.1.0": + version: 1.1.0 + resolution: "@radix-ui/react-use-size@npm:1.1.0" dependencies: - "@xtuc/ieee754": ^1.2.0 - checksum: 13574b8e41f6ca39b700e292d7edf102577db5650fe8add7066a320aa4b7a7c09a5056feccac7a74eb68c10dea9546d4461412af351f13f6b24b5f32379b49de + "@radix-ui/react-use-layout-effect": 1.1.0 + peerDependencies: + "@types/react": "*" + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + "@types/react": + optional: true + checksum: 01a11d4c07fc620b8a081e53d7ec8495b19a11e02688f3d9f47cf41a5fe0428d1e52ed60b2bf88dfd447dc2502797b9dad2841097389126dd108530913c4d90d languageName: node linkType: hard -"@webassemblyjs/leb128@npm:1.11.6": - version: 1.11.6 - resolution: "@webassemblyjs/leb128@npm:1.11.6" +"@radix-ui/react-visually-hidden@npm:1.1.1, @radix-ui/react-visually-hidden@npm:^1.0.3": + version: 1.1.1 + resolution: "@radix-ui/react-visually-hidden@npm:1.1.1" dependencies: - "@xtuc/long": 4.2.2 - checksum: 7ea942dc9777d4b18a5ebfa3a937b30ae9e1d2ce1fee637583ed7f376334dd1d4274f813d2e250056cca803e0952def4b954913f1a3c9068bcd4ab4ee5143bf0 + "@radix-ui/react-primitive": 2.0.1 + peerDependencies: + "@types/react": "*" + "@types/react-dom": "*" + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + "@types/react": + optional: true + "@types/react-dom": + optional: true + checksum: ccbdf29811283fb257f0b0f8604923e6fe349a264986463f6d6a20946fc51e243527985e69f0af27659f78fd7a4199dacbba5bfc7af3667aa409cd23a0ae3283 languageName: node linkType: hard -"@webassemblyjs/utf8@npm:1.11.6": - version: 1.11.6 - resolution: "@webassemblyjs/utf8@npm:1.11.6" - checksum: 807fe5b5ce10c390cfdd93e0fb92abda8aebabb5199980681e7c3743ee3306a75729bcd1e56a3903980e96c885ee53ef901fcbaac8efdfa480f9c0dae1d08713 +"@radix-ui/rect@npm:1.1.0": + version: 1.1.0 + resolution: "@radix-ui/rect@npm:1.1.0" + checksum: 1ad93efbc9fc3b878bae5e8bb26ffa1005235d8b5b9fca8339eb5dbcf7bf53abc9ccd2a8ce128557820168c8600521e48e0ea4dda96aa5f116381f66f46aeda3 languageName: node linkType: hard -"@webassemblyjs/wasm-edit@npm:^1.12.1": - version: 1.12.1 - resolution: "@webassemblyjs/wasm-edit@npm:1.12.1" - dependencies: - "@webassemblyjs/ast": 1.12.1 - "@webassemblyjs/helper-buffer": 1.12.1 - "@webassemblyjs/helper-wasm-bytecode": 1.11.6 - "@webassemblyjs/helper-wasm-section": 1.12.1 - "@webassemblyjs/wasm-gen": 1.12.1 - "@webassemblyjs/wasm-opt": 1.12.1 - "@webassemblyjs/wasm-parser": 1.12.1 - "@webassemblyjs/wast-printer": 1.12.1 - checksum: ae23642303f030af888d30c4ef37b08dfec7eab6851a9575a616e65d1219f880d9223913a39056dd654e49049d76e97555b285d1f7e56935047abf578cce0692 +"@react-hookz/deep-equal@npm:^1.0.4": + version: 1.0.4 + resolution: "@react-hookz/deep-equal@npm:1.0.4" + checksum: 0923e364d309e32ee54e0850471a86488faf149d7a04ee838552cf5d54f493964623a8d742880ec82410cc1105530123f056e66dfc72b7da235d4cc93fad708f languageName: node linkType: hard -"@webassemblyjs/wasm-gen@npm:1.12.1": - version: 1.12.1 - resolution: "@webassemblyjs/wasm-gen@npm:1.12.1" +"@react-hookz/web@npm:^24.0.0": + version: 24.0.4 + resolution: "@react-hookz/web@npm:24.0.4" dependencies: - "@webassemblyjs/ast": 1.12.1 - "@webassemblyjs/helper-wasm-bytecode": 1.11.6 - "@webassemblyjs/ieee754": 1.11.6 - "@webassemblyjs/leb128": 1.11.6 - "@webassemblyjs/utf8": 1.11.6 - checksum: 5787626bb7f0b033044471ddd00ce0c9fe1ee4584e8b73e232051e3a4c99ba1a102700d75337151c8b6055bae77eefa4548960c610a5e4a504e356bd872138ff + "@react-hookz/deep-equal": ^1.0.4 + peerDependencies: + js-cookie: ^3.0.5 + react: ^16.8 || ^17 || ^18 + react-dom: ^16.8 || ^17 || ^18 + peerDependenciesMeta: + js-cookie: + optional: true + checksum: 842dd51a2c875814c7468632315d756e79fcdff2882d7224e8e06c630f95ab788b6a59c29c0318cb049a18be97537803be8e3dbae12de34b2ae1290ababe266a languageName: node linkType: hard -"@webassemblyjs/wasm-opt@npm:1.12.1": - version: 1.12.1 - resolution: "@webassemblyjs/wasm-opt@npm:1.12.1" - dependencies: - "@webassemblyjs/ast": 1.12.1 - "@webassemblyjs/helper-buffer": 1.12.1 - "@webassemblyjs/wasm-gen": 1.12.1 - "@webassemblyjs/wasm-parser": 1.12.1 - checksum: 0e8fa8a0645304a1e18ff40d3db5a2e9233ebaa169b19fcc651d6fc9fe2cac0ce092ddee927318015ae735d9cd9c5d97c0cafb6a51dcd2932ac73587b62df991 +"@redhat-developer/red-hat-developer-hub-theme@npm:0.4.0": + version: 0.4.0 + resolution: "@redhat-developer/red-hat-developer-hub-theme@npm:0.4.0" + peerDependencies: + "@backstage/theme": ^0.5.2 + "@emotion/react": ^11.11.1 + "@emotion/styled": ^11.11.0 + "@material-ui/core": ^4.12.4 + "@material-ui/icons": ^4.11.3 + "@mui/icons-material": ^5.14.19 + "@mui/material": ^5.14.20 + checksum: 8684f8faa2fe87100dba2c19f1e1a306e808cf98bc65da829c3203a325ea6520a93e54c174e25a220ccf8280ecc2750a178a0d18b12f5ba354c7c415e8a9dc7b languageName: node linkType: hard -"@webassemblyjs/wasm-parser@npm:1.12.1, @webassemblyjs/wasm-parser@npm:^1.12.1": - version: 1.12.1 - resolution: "@webassemblyjs/wasm-parser@npm:1.12.1" - dependencies: - "@webassemblyjs/ast": 1.12.1 - "@webassemblyjs/helper-api-error": 1.11.6 - "@webassemblyjs/helper-wasm-bytecode": 1.11.6 - "@webassemblyjs/ieee754": 1.11.6 - "@webassemblyjs/leb128": 1.11.6 - "@webassemblyjs/utf8": 1.11.6 - checksum: 176015de3551ac068cd4505d837414f258d9ade7442bd71efb1232fa26c9f6d7d4e11a5c816caeed389943f409af7ebff6899289a992d7a70343cb47009d21a8 +"@redis/bloom@npm:1.2.0": + version: 1.2.0 + resolution: "@redis/bloom@npm:1.2.0" + peerDependencies: + "@redis/client": ^1.0.0 + checksum: 8c214227287d6b278109098bca00afc601cf84f7da9c6c24f4fa7d3854b946170e5893aa86ed607ba017a4198231d570541c79931b98b6d50b262971022d1d6c languageName: node linkType: hard -"@webassemblyjs/wast-printer@npm:1.12.1": - version: 1.12.1 - resolution: "@webassemblyjs/wast-printer@npm:1.12.1" +"@redis/client@npm:1.6.0": + version: 1.6.0 + resolution: "@redis/client@npm:1.6.0" dependencies: - "@webassemblyjs/ast": 1.12.1 - "@xtuc/long": 4.2.2 - checksum: 2974b5dda8d769145ba0efd886ea94a601e61fb37114c14f9a9a7606afc23456799af652ac3052f284909bd42edc3665a76bc9b50f95f0794c053a8a1757b713 + cluster-key-slot: 1.1.2 + generic-pool: 3.9.0 + yallist: 4.0.0 + checksum: c01c89a793541dc6908a97f375fec3ac28bed7f92b1c20351a3073ce75c0263998a30c3316cbb76e6a4403059d9982d40aec0bc8f1b3cab43615edaaf05980da languageName: node linkType: hard -"@xmldom/xmldom@npm:^0.8.3": - version: 0.8.10 - resolution: "@xmldom/xmldom@npm:0.8.10" - checksum: 4c136aec31fb3b49aaa53b6fcbfe524d02a1dc0d8e17ee35bd3bf35e9ce1344560481cd1efd086ad1a4821541482528672306d5e37cdbd187f33d7fadd3e2cf0 +"@redis/graph@npm:1.1.1": + version: 1.1.1 + resolution: "@redis/graph@npm:1.1.1" + peerDependencies: + "@redis/client": ^1.0.0 + checksum: caf9b9a3ff82a08ae543c356a3fed548399ae79aba5ed08ce6cf1b522b955eb5cee4406b0ed0c6899345f8fbc06dfd6cd51304ae8422c3ebbc468f53294dc509 languageName: node linkType: hard -"@xtuc/ieee754@npm:^1.2.0": - version: 1.2.0 - resolution: "@xtuc/ieee754@npm:1.2.0" - checksum: ac56d4ca6e17790f1b1677f978c0c6808b1900a5b138885d3da21732f62e30e8f0d9120fcf8f6edfff5100ca902b46f8dd7c1e3f903728634523981e80e2885a +"@redis/json@npm:1.0.7": + version: 1.0.7 + resolution: "@redis/json@npm:1.0.7" + peerDependencies: + "@redis/client": ^1.0.0 + checksum: a84d51c06a2af9a42eff5a6db795e7c0f7ada27d958f5d762b6f9778f413399dbe6a0c2ab00dd7ccc5fdab5f2940afbab4a56c2b1c284a2326d0f79965d5bba1 languageName: node linkType: hard -"@xtuc/long@npm:4.2.2": - version: 4.2.2 - resolution: "@xtuc/long@npm:4.2.2" - checksum: 8ed0d477ce3bc9c6fe2bf6a6a2cc316bb9c4127c5a7827bae947fa8ec34c7092395c5a283cc300c05b5fa01cbbfa1f938f410a7bf75db7c7846fea41949989ec +"@redis/search@npm:1.2.0": + version: 1.2.0 + resolution: "@redis/search@npm:1.2.0" + peerDependencies: + "@redis/client": ^1.0.0 + checksum: 256ddf8b30f216b605e571c9085e0efd5e3b43229b57db8ba0eea3376540ada437b68509c3bb0354e3c784f5fa1b825593cc602ebbfc5cbfa9e46d5c7be67eb6 languageName: node linkType: hard -"@yarnpkg/lockfile@npm:^1.1.0": +"@redis/time-series@npm:1.1.0": version: 1.1.0 - resolution: "@yarnpkg/lockfile@npm:1.1.0" - checksum: 05b881b4866a3546861fee756e6d3812776ea47fa6eb7098f983d6d0eefa02e12b66c3fff931574120f196286a7ad4879ce02743c8bb2be36c6a576c7852083a + resolution: "@redis/time-series@npm:1.1.0" + peerDependencies: + "@redis/client": ^1.0.0 + checksum: 785f024e1c83866708beb254f765e561ccd6e6caad61b697223b3355ee92ca1e99a4d312c4ce03a3d6a29a223f38a2ec844c80b47990fa3bd9ddc56a30c1376f languageName: node linkType: hard -"@yarnpkg/parsers@npm:^3.0.0, @yarnpkg/parsers@npm:^3.0.0-rc.4": - version: 3.0.2 - resolution: "@yarnpkg/parsers@npm:3.0.2" - dependencies: - js-yaml: ^3.10.0 - tslib: ^2.4.0 - checksum: fb40a87ae7c9f3fc0b2a6b7d84375d1c69ae8304daf598c089b52966bfb4ac94fbd2dcd87ed041970416e03d34359cb5ff16be5f5601f48d1f936213a8edaf4d +"@remix-run/router@npm:1.21.0": + version: 1.21.0 + resolution: "@remix-run/router@npm:1.21.0" + checksum: d9477a7772053ad0ffcf03385cfb1a54e56f8a56d1f9f5062de3b1dfcbd019dd73282a00a5a72aa55c120771110982448c165c1405d64540aaef13051a8e45cc languageName: node linkType: hard -"@zxing/text-encoding@npm:0.9.0": - version: 0.9.0 - resolution: "@zxing/text-encoding@npm:0.9.0" - checksum: c23b12aee7639382e4949961304a1294776afaffa40f579e09ffecd0e5e68cf26ef3edd75009de46da8a536e571448755ca68b3e2ea707d53793c0edb2e2c34a +"@repeaterjs/repeater@npm:^3.0.4, @repeaterjs/repeater@npm:^3.0.6": + version: 3.0.6 + resolution: "@repeaterjs/repeater@npm:3.0.6" + checksum: aae878b953162bec77c94b45f2236ddfc01a65308267c7cb30220fa2f8511654a302c0d32aad228c58241d685607d7bb35b6d528b2879355e6636ff08fddb266 languageName: node linkType: hard -"abab@npm:^2.0.6": - version: 2.0.6 - resolution: "abab@npm:2.0.6" - checksum: 6ffc1af4ff315066c62600123990d87551ceb0aafa01e6539da77b0f5987ac7019466780bf480f1787576d4385e3690c81ccc37cfda12819bf510b8ab47e5a3e +"@rjsf/core@npm:5.23.1": + version: 5.23.1 + resolution: "@rjsf/core@npm:5.23.1" + dependencies: + lodash: ^4.17.21 + lodash-es: ^4.17.21 + markdown-to-jsx: ^7.4.1 + nanoid: ^3.3.7 + prop-types: ^15.8.1 + peerDependencies: + "@rjsf/utils": ^5.23.x + react: ^16.14.0 || >=17 + checksum: acb5b1541b7e6f9911dce33455c297402fc1b2278b0c688073decdea977efae7d4227962eaadeb48fd14c2a8e4bba73a80df975b1c49aa2e2b933c2646ab4904 languageName: node linkType: hard -"abbrev@npm:^1.0.0": - version: 1.1.1 - resolution: "abbrev@npm:1.1.1" - checksum: a4a97ec07d7ea112c517036882b2ac22f3109b7b19077dc656316d07d308438aac28e4d9746dc4d84bf6b1e75b4a7b0a5f3cb30592419f128ca9a8cee3bcfa17 +"@rjsf/material-ui@npm:5.23.1": + version: 5.23.1 + resolution: "@rjsf/material-ui@npm:5.23.1" + peerDependencies: + "@material-ui/core": ^4.12.3 + "@material-ui/icons": ^4.11.2 + "@rjsf/core": ^5.23.x + "@rjsf/utils": ^5.23.x + react: ^16.14.0 || >=17 + checksum: ae0d401edd407c534406cce60fda2725fc246286cbedd8a8e4031097d4d318761fd8a4f35339d0f3f857a3dc863b88a75002d6900176052913bb629d0ebde4f9 languageName: node linkType: hard -"abbrev@npm:^2.0.0": - version: 2.0.0 - resolution: "abbrev@npm:2.0.0" - checksum: 0e994ad2aa6575f94670d8a2149afe94465de9cedaaaac364e7fb43a40c3691c980ff74899f682f4ca58fa96b4cbd7421a015d3a6defe43a442117d7821a2f36 +"@rjsf/utils@npm:5.23.1": + version: 5.23.1 + resolution: "@rjsf/utils@npm:5.23.1" + dependencies: + json-schema-merge-allof: ^0.8.1 + jsonpointer: ^5.0.1 + lodash: ^4.17.21 + lodash-es: ^4.17.21 + react-is: ^18.2.0 + peerDependencies: + react: ^16.14.0 || >=17 + checksum: 7580419cf07416fe1e608ed171c30b25b3a78cfebba7d97e3120fe2e40f702fd0e61494e6c823281091522b053a39a83ab31ceb97c078cfb39ac636dc2d997c1 languageName: node linkType: hard -"abort-controller@npm:^3.0.0": - version: 3.0.0 - resolution: "abort-controller@npm:3.0.0" +"@rjsf/validator-ajv8@npm:5.23.1": + version: 5.23.1 + resolution: "@rjsf/validator-ajv8@npm:5.23.1" dependencies: - event-target-shim: ^5.0.0 - checksum: 170bdba9b47b7e65906a28c8ce4f38a7a369d78e2271706f020849c1bfe0ee2067d4261df8bbb66eb84f79208fd5b710df759d64191db58cfba7ce8ef9c54b75 + ajv: ^8.12.0 + ajv-formats: ^2.1.1 + lodash: ^4.17.21 + lodash-es: ^4.17.21 + peerDependencies: + "@rjsf/utils": ^5.23.x + checksum: 3eca428bd682ea8226558e0c719f263912ad8d6fde2c3ee817c5c106070fd3142f614dc35e15819000f8f00f9c00aa654c2dab5fd3a7318164ad6420d53068f5 languageName: node linkType: hard -"accepts@npm:^1.3.5, accepts@npm:~1.3.4, accepts@npm:~1.3.5, accepts@npm:~1.3.8": - version: 1.3.8 - resolution: "accepts@npm:1.3.8" +"@rollup/plugin-commonjs@npm:^25.0.4": + version: 25.0.8 + resolution: "@rollup/plugin-commonjs@npm:25.0.8" dependencies: - mime-types: ~2.1.34 - negotiator: 0.6.3 - checksum: 50c43d32e7b50285ebe84b613ee4a3aa426715a7d131b65b786e2ead0fd76b6b60091b9916d3478a75f11f162628a2139991b6c03ab3f1d9ab7c86075dc8eab4 + "@rollup/pluginutils": ^5.0.1 + commondir: ^1.0.1 + estree-walker: ^2.0.2 + glob: ^8.0.3 + is-reference: 1.2.1 + magic-string: ^0.30.3 + peerDependencies: + rollup: ^2.68.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + checksum: dd105ee5625fbcaf832c0cf80be0aaf6a86bbd8fe99ff911f9ac4b78c79f26e9e99442b5aa0cc1136b5ddf89ec0b6c5728e5341ac04d687aef1b53063670b395 languageName: node linkType: hard -"acorn-globals@npm:^7.0.0": - version: 7.0.1 - resolution: "acorn-globals@npm:7.0.1" +"@rollup/plugin-commonjs@npm:^26.0.0": + version: 26.0.3 + resolution: "@rollup/plugin-commonjs@npm:26.0.3" dependencies: - acorn: ^8.1.0 - acorn-walk: ^8.0.2 - checksum: 2a2998a547af6d0db5f0cdb90acaa7c3cbca6709010e02121fb8b8617c0fbd8bab0b869579903fde358ac78454356a14fadcc1a672ecb97b04b1c2ccba955ce8 + "@rollup/pluginutils": ^5.0.1 + commondir: ^1.0.1 + estree-walker: ^2.0.2 + glob: ^10.4.1 + is-reference: 1.2.1 + magic-string: ^0.30.3 + peerDependencies: + rollup: ^2.68.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + checksum: 6f3ce53054f9b2edfd04a673c7572b5f8ba6b8416da55a7aef670a9b4630caf46e3e8d74b481d05e1d9f9cb98fa96228e23abad10ab2c95a6cc0b1a0065568e6 languageName: node linkType: hard -"acorn-import-attributes@npm:^1.9.5": - version: 1.9.5 - resolution: "acorn-import-attributes@npm:1.9.5" +"@rollup/plugin-json@npm:^6.0.0": + version: 6.1.0 + resolution: "@rollup/plugin-json@npm:6.1.0" + dependencies: + "@rollup/pluginutils": ^5.1.0 peerDependencies: - acorn: ^8 - checksum: 1c0c49b6a244503964ae46ae850baccf306e84caf99bc2010ed6103c69a423987b07b520a6c619f075d215388bd4923eccac995886a54309eda049ab78a4be95 + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + checksum: cc018d20c80242a2b8b44fae61a968049cf31bb8406218187cc7cda35747616594e79452dd65722e7da6dd825b392e90d4599d43cd4461a02fefa2865945164e languageName: node linkType: hard -"acorn-jsx@npm:^5.3.2": - version: 5.3.2 - resolution: "acorn-jsx@npm:5.3.2" +"@rollup/plugin-node-resolve@npm:^15.0.0, @rollup/plugin-node-resolve@npm:^15.2.1": + version: 15.3.0 + resolution: "@rollup/plugin-node-resolve@npm:15.3.0" + dependencies: + "@rollup/pluginutils": ^5.0.1 + "@types/resolve": 1.20.2 + deepmerge: ^4.2.2 + is-module: ^1.0.0 + resolve: ^1.22.1 peerDependencies: - acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 - checksum: c3d3b2a89c9a056b205b69530a37b972b404ee46ec8e5b341666f9513d3163e2a4f214a71f4dfc7370f5a9c07472d2fd1c11c91c3f03d093e37637d95da98950 + rollup: ^2.78.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + checksum: 90e4e94b173e7edd57e374ac0cc0a69cc6f1b4507e83731132ac6fa1747d96a5648a48441e4452728429b6db5e67561439b7b2f4d2c6a941a33d38be56d871b4 languageName: node linkType: hard -"acorn-walk@npm:^8.0.2, acorn-walk@npm:^8.1.1": - version: 8.3.4 - resolution: "acorn-walk@npm:8.3.4" +"@rollup/plugin-yaml@npm:^4.0.0": + version: 4.1.2 + resolution: "@rollup/plugin-yaml@npm:4.1.2" dependencies: - acorn: ^8.11.0 - checksum: 4ff03f42323e7cf90f1683e08606b0f460e1e6ac263d2730e3df91c7665b6f64e696db6ea27ee4bed18c2599569be61f28a8399fa170c611161a348c402ca19c + "@rollup/pluginutils": ^5.0.1 + js-yaml: ^4.1.0 + tosource: ^2.0.0-alpha.3 + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + checksum: a044bb4568a10712465553ea5f31c13a2b7bc371a7f8382014e6b8048c0a264f5645f83f4d70ce9ab46b75117b94cdc032b597e9315fd2adcd8f30637f44bbea languageName: node linkType: hard -"acorn@npm:^8.1.0, acorn@npm:^8.11.0, acorn@npm:^8.4.1, acorn@npm:^8.7.1, acorn@npm:^8.8.1, acorn@npm:^8.8.2, acorn@npm:^8.9.0": - version: 8.14.0 - resolution: "acorn@npm:8.14.0" - bin: - acorn: bin/acorn - checksum: 8755074ba55fff94e84e81c72f1013c2d9c78e973c31231c8ae505a5f966859baf654bddd75046bffd73ce816b149298977fff5077a3033dedba0ae2aad152d4 +"@rollup/pluginutils@npm:^4.1.1, @rollup/pluginutils@npm:^4.2.1": + version: 4.2.1 + resolution: "@rollup/pluginutils@npm:4.2.1" + dependencies: + estree-walker: ^2.0.1 + picomatch: ^2.2.2 + checksum: 6bc41f22b1a0f1efec3043899e4d3b6b1497b3dea4d94292d8f83b4cf07a1073ecbaedd562a22d11913ff7659f459677b01b09e9598a98936e746780ecc93a12 languageName: node linkType: hard -"address@npm:^1.0.1, address@npm:^1.1.2": - version: 1.2.2 - resolution: "address@npm:1.2.2" - checksum: ace439960c1e3564d8f523aff23a841904bf33a2a7c2e064f7f60a064194075758b9690e65bd9785692a4ef698a998c57eb74d145881a1cecab8ba658ddb1607 +"@rollup/pluginutils@npm:^5.0.1, @rollup/pluginutils@npm:^5.0.2, @rollup/pluginutils@npm:^5.0.5, @rollup/pluginutils@npm:^5.1.0": + version: 5.1.3 + resolution: "@rollup/pluginutils@npm:5.1.3" + dependencies: + "@types/estree": ^1.0.0 + estree-walker: ^2.0.2 + picomatch: ^4.0.2 + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + checksum: a6e9bac8ae94da39679dae390b53b43fe7a218f8fa2bfecf86e59be4da4ba02ac004f166daf55f03506e49108399394f13edeb62cce090f8cfc967b29f4738bf languageName: node linkType: hard -"adm-zip@npm:^0.5.10": - version: 0.5.16 - resolution: "adm-zip@npm:0.5.16" - checksum: 1f4104f3462b99e1b34d78ccfbdcf47e533a9cc7f894cedec6cd67b06cc6ad0b3a45241d66df5471050c7abbdd67e5707e3959fc76d75176ed6101a5b2a580d5 +"@rollup/rollup-android-arm-eabi@npm:4.24.3": + version: 4.24.3 + resolution: "@rollup/rollup-android-arm-eabi@npm:4.24.3" + conditions: os=android & cpu=arm languageName: node linkType: hard -"agent-base@npm:6, agent-base@npm:^6.0.2": - version: 6.0.2 - resolution: "agent-base@npm:6.0.2" - dependencies: - debug: 4 - checksum: f52b6872cc96fd5f622071b71ef200e01c7c4c454ee68bc9accca90c98cfb39f2810e3e9aa330435835eedc8c23f4f8a15267f67c6e245d2b33757575bdac49d +"@rollup/rollup-android-arm64@npm:4.24.3": + version: 4.24.3 + resolution: "@rollup/rollup-android-arm64@npm:4.24.3" + conditions: os=android & cpu=arm64 languageName: node linkType: hard -"agent-base@npm:^7.0.2, agent-base@npm:^7.1.0, agent-base@npm:^7.1.1": - version: 7.1.1 - resolution: "agent-base@npm:7.1.1" - dependencies: - debug: ^4.3.4 - checksum: 51c158769c5c051482f9ca2e6e1ec085ac72b5a418a9b31b4e82fe6c0a6699adb94c1c42d246699a587b3335215037091c79e0de512c516f73b6ea844202f037 +"@rollup/rollup-darwin-arm64@npm:4.24.3": + version: 4.24.3 + resolution: "@rollup/rollup-darwin-arm64@npm:4.24.3" + conditions: os=darwin & cpu=arm64 languageName: node linkType: hard -"agentkeepalive@npm:^4.2.1": - version: 4.5.0 - resolution: "agentkeepalive@npm:4.5.0" - dependencies: - humanize-ms: ^1.2.1 - checksum: 13278cd5b125e51eddd5079f04d6fe0914ac1b8b91c1f3db2c1822f99ac1a7457869068997784342fe455d59daaff22e14fb7b8c3da4e741896e7e31faf92481 +"@rollup/rollup-darwin-x64@npm:4.24.3": + version: 4.24.3 + resolution: "@rollup/rollup-darwin-x64@npm:4.24.3" + conditions: os=darwin & cpu=x64 languageName: node linkType: hard -"aggregate-error@npm:^3.0.0": - version: 3.1.0 - resolution: "aggregate-error@npm:3.1.0" - dependencies: - clean-stack: ^2.0.0 - indent-string: ^4.0.0 - checksum: 1101a33f21baa27a2fa8e04b698271e64616b886795fd43c31068c07533c7b3facfcaf4e9e0cab3624bd88f729a592f1c901a1a229c9e490eafce411a8644b79 +"@rollup/rollup-freebsd-arm64@npm:4.24.3": + version: 4.24.3 + resolution: "@rollup/rollup-freebsd-arm64@npm:4.24.3" + conditions: os=freebsd & cpu=arm64 languageName: node linkType: hard -"ajv-draft-04@npm:^1.0.0, ajv-draft-04@npm:~1.0.0": - version: 1.0.0 - resolution: "ajv-draft-04@npm:1.0.0" - peerDependencies: - ajv: ^8.5.0 - peerDependenciesMeta: - ajv: - optional: true - checksum: 3f11fa0e7f7359bef6608657f02ab78e9cc62b1fb7bdd860db0d00351b3863a1189c1a23b72466d2d82726cab4eb20725c76f5e7c134a89865e2bfd0e6828137 +"@rollup/rollup-freebsd-x64@npm:4.24.3": + version: 4.24.3 + resolution: "@rollup/rollup-freebsd-x64@npm:4.24.3" + conditions: os=freebsd & cpu=x64 languageName: node linkType: hard -"ajv-errors@npm:~3.0.0": - version: 3.0.0 - resolution: "ajv-errors@npm:3.0.0" - peerDependencies: - ajv: ^8.0.1 - checksum: f3d1610a104fa776c2f90534acbe2113842a40d5ee446062da9e956ae6de6959afc997da1e3948c47316faa225255fc2d9d97aacd0803f47998fb38156d3d03c +"@rollup/rollup-linux-arm-gnueabihf@npm:4.24.3": + version: 4.24.3 + resolution: "@rollup/rollup-linux-arm-gnueabihf@npm:4.24.3" + conditions: os=linux & cpu=arm & libc=glibc languageName: node linkType: hard -"ajv-formats@npm:^2.1.1, ajv-formats@npm:~2.1.0": - version: 2.1.1 - resolution: "ajv-formats@npm:2.1.1" - dependencies: - ajv: ^8.0.0 - peerDependencies: - ajv: ^8.0.0 - peerDependenciesMeta: - ajv: - optional: true - checksum: 4a287d937f1ebaad4683249a4c40c0fa3beed30d9ddc0adba04859026a622da0d317851316ea64b3680dc60f5c3c708105ddd5d5db8fe595d9d0207fd19f90b7 +"@rollup/rollup-linux-arm-musleabihf@npm:4.24.3": + version: 4.24.3 + resolution: "@rollup/rollup-linux-arm-musleabihf@npm:4.24.3" + conditions: os=linux & cpu=arm & libc=musl languageName: node linkType: hard -"ajv-formats@npm:~3.0.1": - version: 3.0.1 - resolution: "ajv-formats@npm:3.0.1" - dependencies: - ajv: ^8.0.0 - peerDependencies: - ajv: ^8.0.0 - peerDependenciesMeta: - ajv: - optional: true - checksum: f4e1fe232d67fcafc02eafe373a7a9962351e0439dd0736647ca75c93c3da23b430b6502c255ab4315410ae330d4f3013ac9fe226c40b2524ca93a58e786d086 +"@rollup/rollup-linux-arm64-gnu@npm:4.24.3": + version: 4.24.3 + resolution: "@rollup/rollup-linux-arm64-gnu@npm:4.24.3" + conditions: os=linux & cpu=arm64 & libc=glibc languageName: node linkType: hard -"ajv-keywords@npm:^3.4.1, ajv-keywords@npm:^3.5.2": - version: 3.5.2 - resolution: "ajv-keywords@npm:3.5.2" - peerDependencies: - ajv: ^6.9.1 - checksum: 7dc5e5931677a680589050f79dcbe1fefbb8fea38a955af03724229139175b433c63c68f7ae5f86cf8f65d55eb7c25f75a046723e2e58296707617ca690feae9 +"@rollup/rollup-linux-arm64-musl@npm:4.24.3": + version: 4.24.3 + resolution: "@rollup/rollup-linux-arm64-musl@npm:4.24.3" + conditions: os=linux & cpu=arm64 & libc=musl languageName: node linkType: hard -"ajv-keywords@npm:^5.1.0": - version: 5.1.0 - resolution: "ajv-keywords@npm:5.1.0" - dependencies: - fast-deep-equal: ^3.1.3 - peerDependencies: - ajv: ^8.8.2 - checksum: c35193940b853119242c6757787f09ecf89a2c19bcd36d03ed1a615e710d19d450cb448bfda407b939aba54b002368c8bff30529cc50a0536a8e10bcce300421 +"@rollup/rollup-linux-powerpc64le-gnu@npm:4.24.3": + version: 4.24.3 + resolution: "@rollup/rollup-linux-powerpc64le-gnu@npm:4.24.3" + conditions: os=linux & cpu=ppc64 & libc=glibc languageName: node linkType: hard -"ajv@npm:^6.12.2, ajv@npm:^6.12.3, ajv@npm:^6.12.4, ajv@npm:^6.12.5": - version: 6.12.6 - resolution: "ajv@npm:6.12.6" - dependencies: - fast-deep-equal: ^3.1.1 - fast-json-stable-stringify: ^2.0.0 - json-schema-traverse: ^0.4.1 - uri-js: ^4.2.2 - checksum: 874972efe5c4202ab0a68379481fbd3d1b5d0a7bd6d3cc21d40d3536ebff3352a2a1fabb632d4fd2cc7fe4cbdcd5ed6782084c9bbf7f32a1536d18f9da5007d4 +"@rollup/rollup-linux-riscv64-gnu@npm:4.24.3": + version: 4.24.3 + resolution: "@rollup/rollup-linux-riscv64-gnu@npm:4.24.3" + conditions: os=linux & cpu=riscv64 & libc=glibc languageName: node linkType: hard -"ajv@npm:^8.0.0, ajv@npm:^8.10.0, ajv@npm:^8.17.1, ajv@npm:^8.6.0, ajv@npm:^8.6.3, ajv@npm:^8.9.0": - version: 8.17.1 - resolution: "ajv@npm:8.17.1" - dependencies: - fast-deep-equal: ^3.1.3 - fast-uri: ^3.0.1 - json-schema-traverse: ^1.0.0 - require-from-string: ^2.0.2 - checksum: 1797bf242cfffbaf3b870d13565bd1716b73f214bb7ada9a497063aada210200da36e3ed40237285f3255acc4feeae91b1fb183625331bad27da95973f7253d9 +"@rollup/rollup-linux-s390x-gnu@npm:4.24.3": + version: 4.24.3 + resolution: "@rollup/rollup-linux-s390x-gnu@npm:4.24.3" + conditions: os=linux & cpu=s390x & libc=glibc languageName: node linkType: hard -"ajv@npm:~8.12.0": - version: 8.12.0 - resolution: "ajv@npm:8.12.0" - dependencies: - fast-deep-equal: ^3.1.1 - json-schema-traverse: ^1.0.0 - require-from-string: ^2.0.2 - uri-js: ^4.2.2 - checksum: 4dc13714e316e67537c8b31bc063f99a1d9d9a497eb4bbd55191ac0dcd5e4985bbb71570352ad6f1e76684fb6d790928f96ba3b2d4fd6e10024be9612fe3f001 +"@rollup/rollup-linux-x64-gnu@npm:4.24.3": + version: 4.24.3 + resolution: "@rollup/rollup-linux-x64-gnu@npm:4.24.3" + conditions: os=linux & cpu=x64 & libc=glibc languageName: node linkType: hard -"ajv@npm:~8.13.0": - version: 8.13.0 - resolution: "ajv@npm:8.13.0" - dependencies: - fast-deep-equal: ^3.1.3 - json-schema-traverse: ^1.0.0 - require-from-string: ^2.0.2 - uri-js: ^4.4.1 - checksum: 6de82d0b2073e645ca3300561356ddda0234f39b35d2125a8700b650509b296f41c00ab69f53178bbe25ad688bd6ac3747ab44101f2f4bd245952e8fd6ccc3c1 +"@rollup/rollup-linux-x64-musl@npm:4.24.3": + version: 4.24.3 + resolution: "@rollup/rollup-linux-x64-musl@npm:4.24.3" + conditions: os=linux & cpu=x64 & libc=musl languageName: node linkType: hard -"ansi-colors@npm:^4.1.1, ansi-colors@npm:^4.1.3": - version: 4.1.3 - resolution: "ansi-colors@npm:4.1.3" - checksum: a9c2ec842038a1fabc7db9ece7d3177e2fe1c5dc6f0c51ecfbf5f39911427b89c00b5dc6b8bd95f82a26e9b16aaae2e83d45f060e98070ce4d1333038edceb0e +"@rollup/rollup-win32-arm64-msvc@npm:4.24.3": + version: 4.24.3 + resolution: "@rollup/rollup-win32-arm64-msvc@npm:4.24.3" + conditions: os=win32 & cpu=arm64 languageName: node linkType: hard -"ansi-escapes@npm:^4.2.1": - version: 4.3.2 - resolution: "ansi-escapes@npm:4.3.2" - dependencies: - type-fest: ^0.21.3 - checksum: 93111c42189c0a6bed9cdb4d7f2829548e943827ee8479c74d6e0b22ee127b2a21d3f8b5ca57723b8ef78ce011fbfc2784350eb2bde3ccfccf2f575fa8489815 +"@rollup/rollup-win32-ia32-msvc@npm:4.24.3": + version: 4.24.3 + resolution: "@rollup/rollup-win32-ia32-msvc@npm:4.24.3" + conditions: os=win32 & cpu=ia32 languageName: node linkType: hard -"ansi-html-community@npm:^0.0.8": - version: 0.0.8 - resolution: "ansi-html-community@npm:0.0.8" - bin: - ansi-html: bin/ansi-html - checksum: 04c568e8348a636963f915e48eaa3e01218322e1169acafdd79c384f22e5558c003f79bbc480c1563865497482817c7eed025f0653ebc17642fededa5cb42089 +"@rollup/rollup-win32-x64-msvc@npm:4.24.3": + version: 4.24.3 + resolution: "@rollup/rollup-win32-x64-msvc@npm:4.24.3" + conditions: os=win32 & cpu=x64 languageName: node linkType: hard -"ansi-html@npm:^0.0.9": - version: 0.0.9 - resolution: "ansi-html@npm:0.0.9" - bin: - ansi-html: bin/ansi-html - checksum: a03754d6f66bae33938ed8bb3dd98174b7f4895ebe45226185036ed4a1388a7aaf2f2b9581608f0626432ba7add92cfc590aa6475a78bbb90d9d1e1d1af8cbe6 +"@rtsao/scc@npm:^1.1.0": + version: 1.1.0 + resolution: "@rtsao/scc@npm:1.1.0" + checksum: 17d04adf404e04c1e61391ed97bca5117d4c2767a76ae3e879390d6dec7b317fcae68afbf9e98badee075d0b64fa60f287729c4942021b4d19cd01db77385c01 languageName: node linkType: hard -"ansi-regex@npm:^4.1.0": - version: 4.1.1 - resolution: "ansi-regex@npm:4.1.1" - checksum: b1a6ee44cb6ecdabaa770b2ed500542714d4395d71c7e5c25baa631f680fb2ad322eb9ba697548d498a6fd366949fc8b5bfcf48d49a32803611f648005b01888 +"@rushstack/node-core-library@npm:5.9.0": + version: 5.9.0 + resolution: "@rushstack/node-core-library@npm:5.9.0" + dependencies: + ajv: ~8.13.0 + ajv-draft-04: ~1.0.0 + ajv-formats: ~3.0.1 + fs-extra: ~7.0.1 + import-lazy: ~4.0.0 + jju: ~1.4.0 + resolve: ~1.22.1 + semver: ~7.5.4 + peerDependencies: + "@types/node": "*" + peerDependenciesMeta: + "@types/node": + optional: true + checksum: beb558f118a796260f7df38b48b6669a94bbdb9711715785e0c5a426bd3a38c14721c03fc05e7a33883ec25a331ef0fb9e36438bb451ace021a7248a4f1fc74b languageName: node linkType: hard -"ansi-regex@npm:^5.0.1": - version: 5.0.1 - resolution: "ansi-regex@npm:5.0.1" - checksum: 2aa4bb54caf2d622f1afdad09441695af2a83aa3fe8b8afa581d205e57ed4261c183c4d3877cee25794443fde5876417d859c108078ab788d6af7e4fe52eb66b +"@rushstack/rig-package@npm:0.5.3": + version: 0.5.3 + resolution: "@rushstack/rig-package@npm:0.5.3" + dependencies: + resolve: ~1.22.1 + strip-json-comments: ~3.1.1 + checksum: bf3eadfc434bff273893efd22b319fe159d0e3b95729cb32ce3ad9f4ab4b6fabe3c4dd7f03ee0ddc7b480f0d989e908349eae6d6dce3500f896728a085af7aab languageName: node linkType: hard -"ansi-regex@npm:^6.0.1": - version: 6.1.0 - resolution: "ansi-regex@npm:6.1.0" - checksum: 495834a53b0856c02acd40446f7130cb0f8284f4a39afdab20d5dc42b2e198b1196119fe887beed8f9055c4ff2055e3b2f6d4641d0be018cdfb64fedf6fc1aac +"@rushstack/terminal@npm:0.14.2": + version: 0.14.2 + resolution: "@rushstack/terminal@npm:0.14.2" + dependencies: + "@rushstack/node-core-library": 5.9.0 + supports-color: ~8.1.1 + peerDependencies: + "@types/node": "*" + peerDependenciesMeta: + "@types/node": + optional: true + checksum: 90d38e6979737dcd97fdfdcebcc378194eed32a994341846235769273b6446b702e53e51e18fc8a373e8ed989c5622216aa6804198b8c7ae0e65cd6b103b90a1 languageName: node linkType: hard -"ansi-styles@npm:^3.2.1": - version: 3.2.1 - resolution: "ansi-styles@npm:3.2.1" +"@rushstack/ts-command-line@npm:4.23.0": + version: 4.23.0 + resolution: "@rushstack/ts-command-line@npm:4.23.0" dependencies: - color-convert: ^1.9.0 - checksum: d85ade01c10e5dd77b6c89f34ed7531da5830d2cb5882c645f330079975b716438cd7ebb81d0d6e6b4f9c577f19ae41ab55f07f19786b02f9dfd9e0377395665 + "@rushstack/terminal": 0.14.2 + "@types/argparse": 1.0.38 + argparse: ~1.0.9 + string-argv: ~0.3.1 + checksum: 4f3d77c5b2998bbc551d02e882f0c7b8e7aed0d97ad6e4ee45b2d6281a209087f738fc1a021397088ffbe666c4eae462c1d8c4a14dc031dddee2af055b12f794 languageName: node linkType: hard -"ansi-styles@npm:^4.0.0, ansi-styles@npm:^4.1.0": - version: 4.3.0 - resolution: "ansi-styles@npm:4.3.0" - dependencies: - color-convert: ^2.0.1 - checksum: 513b44c3b2105dd14cc42a19271e80f386466c4be574bccf60b627432f9198571ebf4ab1e4c3ba17347658f4ee1711c163d574248c0c1cdc2d5917a0ad582ec4 +"@sagold/json-pointer@npm:^5.1.2": + version: 5.1.2 + resolution: "@sagold/json-pointer@npm:5.1.2" + checksum: e29afd3f7e21196e369b332e99504472742ac5a0c141438071e822d3bd9fa55164a14dd25cc0396f2d50b0f9d9b76161e81c83c2035e16e72731b98130968cda languageName: node linkType: hard -"ansi-styles@npm:^5.0.0": - version: 5.2.0 - resolution: "ansi-styles@npm:5.2.0" - checksum: d7f4e97ce0623aea6bc0d90dcd28881ee04cba06c570b97fd3391bd7a268eedfd9d5e2dd4fdcbdd82b8105df5faf6f24aaedc08eaf3da898e702db5948f63469 +"@sagold/json-query@npm:^6.1.3": + version: 6.2.0 + resolution: "@sagold/json-query@npm:6.2.0" + dependencies: + "@sagold/json-pointer": ^5.1.2 + ebnf: ^1.9.1 + checksum: 1c29a1bb81fa14573d37f485170083b0f43ecee66d08422f8ff6d3083ab65954cff9178502132d87175f34cf1e432e1ee7985d60417e350a730de907c63ef633 languageName: node linkType: hard -"ansi-styles@npm:^6.1.0": - version: 6.2.1 - resolution: "ansi-styles@npm:6.2.1" - checksum: ef940f2f0ced1a6347398da88a91da7930c33ecac3c77b72c5905f8b8fe402c52e6fde304ff5347f616e27a742da3f1dc76de98f6866c69251ad0b07a66776d9 +"@scarf/scarf@npm:=1.4.0": + version: 1.4.0 + resolution: "@scarf/scarf@npm:1.4.0" + checksum: def62aa403f7e63165ccb219efd2c420fc0b7357b0ba43397f635e4aa813ace1cdf3855a93fc559b4619bcc0469ae4767b8cb72af30ea5c0522bf4a2ecb18198 languageName: node linkType: hard -"any-promise@npm:^1.0.0": - version: 1.3.0 - resolution: "any-promise@npm:1.3.0" - checksum: 0ee8a9bdbe882c90464d75d1f55cf027f5458650c4bd1f0467e65aec38ccccda07ca5844969ee77ed46d04e7dded3eaceb027e8d32f385688523fe305fa7e1de +"@sideway/address@npm:^4.1.5": + version: 4.1.5 + resolution: "@sideway/address@npm:4.1.5" + dependencies: + "@hapi/hoek": ^9.0.0 + checksum: 3e3ea0f00b4765d86509282290368a4a5fd39a7995fdc6de42116ca19a96120858e56c2c995081def06e1c53e1f8bccc7d013f6326602bec9d56b72ee2772b9d languageName: node linkType: hard -"anymatch@npm:^3.0.3, anymatch@npm:~3.1.2": - version: 3.1.3 - resolution: "anymatch@npm:3.1.3" - dependencies: - normalize-path: ^3.0.0 - picomatch: ^2.0.4 - checksum: 3e044fd6d1d26545f235a9fe4d7a534e2029d8e59fa7fd9f2a6eb21230f6b5380ea1eaf55136e60cbf8e613544b3b766e7a6fa2102e2a3a117505466e3025dc2 +"@sideway/formula@npm:^3.0.1": + version: 3.0.1 + resolution: "@sideway/formula@npm:3.0.1" + checksum: e4beeebc9dbe2ff4ef0def15cec0165e00d1612e3d7cea0bc9ce5175c3263fc2c818b679bd558957f49400ee7be9d4e5ac90487e1625b4932e15c4aa7919c57a languageName: node linkType: hard -"aproba@npm:^1.0.3 || ^2.0.0": +"@sideway/pinpoint@npm:^2.0.0": version: 2.0.0 - resolution: "aproba@npm:2.0.0" - checksum: 5615cadcfb45289eea63f8afd064ab656006361020e1735112e346593856f87435e02d8dcc7ff0d11928bc7d425f27bc7c2a84f6c0b35ab0ff659c814c138a24 + resolution: "@sideway/pinpoint@npm:2.0.0" + checksum: 0f4491e5897fcf5bf02c46f5c359c56a314e90ba243f42f0c100437935daa2488f20482f0f77186bd6bf43345095a95d8143ecf8b1f4d876a7bc0806aba9c3d2 languageName: node linkType: hard -"archiver-utils@npm:^5.0.0, archiver-utils@npm:^5.0.2": - version: 5.0.2 - resolution: "archiver-utils@npm:5.0.2" - dependencies: - glob: ^10.0.0 - graceful-fs: ^4.2.0 - is-stream: ^2.0.1 - lazystream: ^1.0.0 - lodash: ^4.17.15 - normalize-path: ^3.0.0 - readable-stream: ^4.0.0 - checksum: 7dc4f3001dc373bd0fa7671ebf08edf6f815cbc539c78b5478a2eaa67e52e3fc0e92f562cdef2ba016c4dcb5468d3d069eb89535c6844da4a5bb0baf08ad5720 +"@sinclair/typebox@npm:^0.27.8": + version: 0.27.8 + resolution: "@sinclair/typebox@npm:0.27.8" + checksum: 00bd7362a3439021aa1ea51b0e0d0a0e8ca1351a3d54c606b115fdcc49b51b16db6e5f43b4fe7a28c38688523e22a94d49dd31168868b655f0d4d50f032d07a1 languageName: node linkType: hard -"archiver@npm:^7.0.0, archiver@npm:^7.0.1": - version: 7.0.1 - resolution: "archiver@npm:7.0.1" +"@sinonjs/commons@npm:^3.0.0": + version: 3.0.1 + resolution: "@sinonjs/commons@npm:3.0.1" dependencies: - archiver-utils: ^5.0.2 - async: ^3.2.4 - buffer-crc32: ^1.0.0 - readable-stream: ^4.0.0 - readdir-glob: ^1.1.2 - tar-stream: ^3.0.0 - zip-stream: ^6.0.1 - checksum: f93bcc00f919e0bbb6bf38fddf111d6e4d1ed34721b73cc073edd37278303a7a9f67aa4abd6fd2beb80f6c88af77f2eb4f60276343f67605e3aea404e5ad93ea + type-detect: 4.0.8 + checksum: a7c3e7cc612352f4004873747d9d8b2d4d90b13a6d483f685598c945a70e734e255f1ca5dc49702515533c403b32725defff148177453b3f3915bcb60e9d4601 languageName: node linkType: hard -"are-we-there-yet@npm:^3.0.0": - version: 3.0.1 - resolution: "are-we-there-yet@npm:3.0.1" +"@sinonjs/fake-timers@npm:^10.0.2": + version: 10.3.0 + resolution: "@sinonjs/fake-timers@npm:10.3.0" dependencies: - delegates: ^1.0.0 - readable-stream: ^3.6.0 - checksum: 52590c24860fa7173bedeb69a4c05fb573473e860197f618b9a28432ee4379049336727ae3a1f9c4cb083114601c1140cee578376164d0e651217a9843f9fe83 + "@sinonjs/commons": ^3.0.0 + checksum: 614d30cb4d5201550c940945d44c9e0b6d64a888ff2cd5b357f95ad6721070d6b8839cd10e15b76bf5e14af0bcc1d8f9ec00d49a46318f1f669a4bec1d7f3148 languageName: node linkType: hard -"arg@npm:^4.1.0": - version: 4.1.3 - resolution: "arg@npm:4.1.3" - checksum: 544af8dd3f60546d3e4aff084d451b96961d2267d668670199692f8d054f0415d86fc5497d0e641e91546f0aa920e7c29e5250e99fc89f5552a34b5d93b77f43 +"@smithy/abort-controller@npm:^3.1.6": + version: 3.1.6 + resolution: "@smithy/abort-controller@npm:3.1.6" + dependencies: + "@smithy/types": ^3.6.0 + tslib: ^2.6.2 + checksum: abba34cc47b6f7951402da1f94465616b84dedf55e0b0467b53f7848b9cb3e82b94869fa637278aa2f65809613e872582791053fd23299e026edada4a5ec1c1c languageName: node linkType: hard -"argparse@npm:^1.0.7, argparse@npm:~1.0.9": - version: 1.0.10 - resolution: "argparse@npm:1.0.10" +"@smithy/abort-controller@npm:^3.1.9": + version: 3.1.9 + resolution: "@smithy/abort-controller@npm:3.1.9" dependencies: - sprintf-js: ~1.0.2 - checksum: 7ca6e45583a28de7258e39e13d81e925cfa25d7d4aacbf806a382d3c02fcb13403a07fb8aeef949f10a7cfe4a62da0e2e807b348a5980554cc28ee573ef95945 + "@smithy/types": ^3.7.2 + tslib: ^2.6.2 + checksum: 0d15ce236a14cc5193b76e6990a224957926404dd683c23000b9370a230d9331b36a4cb805521b0d713aec80b2ea78b22e0c44b03d52aa77c8d998915aafd2ac languageName: node linkType: hard -"argparse@npm:^2.0.1": - version: 2.0.1 - resolution: "argparse@npm:2.0.1" - checksum: 83644b56493e89a254bae05702abf3a1101b4fa4d0ca31df1c9985275a5a5bd47b3c27b7fa0b71098d41114d8ca000e6ed90cad764b306f8a503665e4d517ced +"@smithy/chunked-blob-reader-native@npm:^3.0.1": + version: 3.0.1 + resolution: "@smithy/chunked-blob-reader-native@npm:3.0.1" + dependencies: + "@smithy/util-base64": ^3.0.0 + tslib: ^2.6.2 + checksum: b133aebc7662923f88eb859acf3dee95d54fb99effef3ed34384e137d479a8e88549f7888d037919f2821480689ea57892c9d7eeb730fa622ee9f55e3bb9a684 languageName: node linkType: hard -"aria-query@npm:^5.3.2": - version: 5.3.2 - resolution: "aria-query@npm:5.3.2" - checksum: d971175c85c10df0f6d14adfe6f1292409196114ab3c62f238e208b53103686f46cc70695a4f775b73bc65f6a09b6a092fd963c4f3a5a7d690c8fc5094925717 +"@smithy/chunked-blob-reader@npm:^4.0.0": + version: 4.0.0 + resolution: "@smithy/chunked-blob-reader@npm:4.0.0" + dependencies: + tslib: ^2.6.2 + checksum: 45107be7b56efc598e445bf73e45694be10b933dcd5c0c38910311c463eff473e1eb82452b11ed6772986b518565ee8f3bec68cdfefe7c4a9a0c4b9968b582d8 languageName: node linkType: hard -"array-buffer-byte-length@npm:^1.0.1": - version: 1.0.1 - resolution: "array-buffer-byte-length@npm:1.0.1" +"@smithy/config-resolver@npm:^3.0.10, @smithy/config-resolver@npm:^3.0.9": + version: 3.0.10 + resolution: "@smithy/config-resolver@npm:3.0.10" dependencies: - call-bind: ^1.0.5 - is-array-buffer: ^3.0.4 - checksum: 53524e08f40867f6a9f35318fafe467c32e45e9c682ba67b11943e167344d2febc0f6977a17e699b05699e805c3e8f073d876f8bbf1b559ed494ad2cd0fae09e + "@smithy/node-config-provider": ^3.1.9 + "@smithy/types": ^3.6.0 + "@smithy/util-config-provider": ^3.0.0 + "@smithy/util-middleware": ^3.0.8 + tslib: ^2.6.2 + checksum: 55c2355db7eabfd70f0bf288d58cb0238f43b754d91f46febf7fd04617e6107d26e2899ede2b37fbd977980bb12fdbdb688fc5f53654202e946fe3c258cef5d1 languageName: node linkType: hard -"array-flatten@npm:1.1.1": - version: 1.1.1 - resolution: "array-flatten@npm:1.1.1" - checksum: a9925bf3512d9dce202112965de90c222cd59a4fbfce68a0951d25d965cf44642931f40aac72309c41f12df19afa010ecadceb07cfff9ccc1621e99d89ab5f3b +"@smithy/core@npm:^2.4.8, @smithy/core@npm:^2.5.1": + version: 2.5.1 + resolution: "@smithy/core@npm:2.5.1" + dependencies: + "@smithy/middleware-serde": ^3.0.8 + "@smithy/protocol-http": ^4.1.5 + "@smithy/types": ^3.6.0 + "@smithy/util-body-length-browser": ^3.0.0 + "@smithy/util-middleware": ^3.0.8 + "@smithy/util-stream": ^3.2.1 + "@smithy/util-utf8": ^3.0.0 + tslib: ^2.6.2 + checksum: 9175f48eca64f6b304335e32e09c6276aadf7d26cb9180da0a120a2b07c12d8dbe51de2ccce78e98c60729ce4eefe28e7ca95c169432a8049560564d780d1a81 languageName: node linkType: hard -"array-includes@npm:^3.1.6, array-includes@npm:^3.1.8": - version: 3.1.8 - resolution: "array-includes@npm:3.1.8" +"@smithy/core@npm:^2.5.5": + version: 2.5.5 + resolution: "@smithy/core@npm:2.5.5" dependencies: - call-bind: ^1.0.7 - define-properties: ^1.2.1 - es-abstract: ^1.23.2 - es-object-atoms: ^1.0.0 - get-intrinsic: ^1.2.4 - is-string: ^1.0.7 - checksum: eb39ba5530f64e4d8acab39297c11c1c5be2a4ea188ab2b34aba5fb7224d918f77717a9d57a3e2900caaa8440e59431bdaf5c974d5212ef65d97f132e38e2d91 + "@smithy/middleware-serde": ^3.0.11 + "@smithy/protocol-http": ^4.1.8 + "@smithy/types": ^3.7.2 + "@smithy/util-body-length-browser": ^3.0.0 + "@smithy/util-middleware": ^3.0.11 + "@smithy/util-stream": ^3.3.2 + "@smithy/util-utf8": ^3.0.0 + tslib: ^2.6.2 + checksum: 32df1fdaca5f8d24abd68e13453d1dcfb1040d955bf6571ae2e5fa84418d16412b953429cb6507227045c8587b15709e1e0a44878d8c24e6064adc4fd1221db9 languageName: node linkType: hard -"array-union@npm:^2.1.0": - version: 2.1.0 - resolution: "array-union@npm:2.1.0" - checksum: 5bee12395cba82da674931df6d0fea23c4aa4660cb3b338ced9f828782a65caa232573e6bf3968f23e0c5eb301764a382cef2f128b170a9dc59de0e36c39f98d +"@smithy/credential-provider-imds@npm:^3.2.4, @smithy/credential-provider-imds@npm:^3.2.5": + version: 3.2.5 + resolution: "@smithy/credential-provider-imds@npm:3.2.5" + dependencies: + "@smithy/node-config-provider": ^3.1.9 + "@smithy/property-provider": ^3.1.8 + "@smithy/types": ^3.6.0 + "@smithy/url-parser": ^3.0.8 + tslib: ^2.6.2 + checksum: 4c8941e3c3806f605930c31e461b0b0fd6384f782c7df92b35e30581eca02d7c4c6d6f2b1c5cdb08fcf4823d98f0ceadc8481def968f1266f761df5dac672d8f languageName: node linkType: hard -"array.prototype.findlast@npm:^1.2.5": - version: 1.2.5 - resolution: "array.prototype.findlast@npm:1.2.5" +"@smithy/eventstream-codec@npm:^3.1.7": + version: 3.1.7 + resolution: "@smithy/eventstream-codec@npm:3.1.7" dependencies: - call-bind: ^1.0.7 - define-properties: ^1.2.1 - es-abstract: ^1.23.2 - es-errors: ^1.3.0 - es-object-atoms: ^1.0.0 - es-shim-unscopables: ^1.0.2 - checksum: 83ce4ad95bae07f136d316f5a7c3a5b911ac3296c3476abe60225bc4a17938bf37541972fcc37dd5adbc99cbb9c928c70bbbfc1c1ce549d41a415144030bb446 + "@aws-crypto/crc32": 5.2.0 + "@smithy/types": ^3.6.0 + "@smithy/util-hex-encoding": ^3.0.0 + tslib: ^2.6.2 + checksum: e0a3b187e984ca6a248dbd591f9c4d5b981df5018c46c4cb9ebf47cf5f354be124471a121e9dc9c25ce80e089f2ed5847a15666e89c83327d7e25ea4d46fb92e languageName: node linkType: hard -"array.prototype.findlastindex@npm:^1.2.5": - version: 1.2.5 - resolution: "array.prototype.findlastindex@npm:1.2.5" +"@smithy/eventstream-serde-browser@npm:^3.0.10": + version: 3.0.11 + resolution: "@smithy/eventstream-serde-browser@npm:3.0.11" dependencies: - call-bind: ^1.0.7 - define-properties: ^1.2.1 - es-abstract: ^1.23.2 - es-errors: ^1.3.0 - es-object-atoms: ^1.0.0 - es-shim-unscopables: ^1.0.2 - checksum: 2c81cff2a75deb95bf1ed89b6f5f2bfbfb882211e3b7cc59c3d6b87df774cd9d6b36949a8ae39ac476e092c1d4a4905f5ee11a86a456abb10f35f8211ae4e710 + "@smithy/eventstream-serde-universal": ^3.0.10 + "@smithy/types": ^3.6.0 + tslib: ^2.6.2 + checksum: ca430cd9541889f1e22a508247c52f84387b51c1c580bdd7acd93ca74347bcaaf1cdfbf04709ce3667afcfa0e3602bbfcb018a6290b3966411a3aa48a38f3aa7 languageName: node linkType: hard -"array.prototype.flat@npm:^1.3.1, array.prototype.flat@npm:^1.3.2": - version: 1.3.2 - resolution: "array.prototype.flat@npm:1.3.2" +"@smithy/eventstream-serde-config-resolver@npm:^3.0.7": + version: 3.0.8 + resolution: "@smithy/eventstream-serde-config-resolver@npm:3.0.8" dependencies: - call-bind: ^1.0.2 - define-properties: ^1.2.0 - es-abstract: ^1.22.1 - es-shim-unscopables: ^1.0.0 - checksum: 5d6b4bf102065fb3f43764bfff6feb3295d372ce89591e6005df3d0ce388527a9f03c909af6f2a973969a4d178ab232ffc9236654149173e0e187ec3a1a6b87b + "@smithy/types": ^3.6.0 + tslib: ^2.6.2 + checksum: 44da1b399e296c713643e60ff7fbd34a62c8bba147ea515e6ba98293df11275b62ada04307750d8f8015f717bbe13d317453f47e0d02dc714debc4e043eb7105 languageName: node linkType: hard -"array.prototype.flatmap@npm:^1.3.2": - version: 1.3.2 - resolution: "array.prototype.flatmap@npm:1.3.2" +"@smithy/eventstream-serde-node@npm:^3.0.9": + version: 3.0.10 + resolution: "@smithy/eventstream-serde-node@npm:3.0.10" dependencies: - call-bind: ^1.0.2 - define-properties: ^1.2.0 - es-abstract: ^1.22.1 - es-shim-unscopables: ^1.0.0 - checksum: ce09fe21dc0bcd4f30271f8144083aa8c13d4639074d6c8dc82054b847c7fc9a0c97f857491f4da19d4003e507172a78f4bcd12903098adac8b9cd374f734be3 + "@smithy/eventstream-serde-universal": ^3.0.10 + "@smithy/types": ^3.6.0 + tslib: ^2.6.2 + checksum: 8e8f71bfa25d017f7914ad74258cf5f8c68a6bdc33ab32b126d95e0cb7ea796488d06405695f90e8af90668302e282ac8d4e66e70eca48d92d0cfa3b8e9592f2 languageName: node linkType: hard -"array.prototype.tosorted@npm:^1.1.4": - version: 1.1.4 - resolution: "array.prototype.tosorted@npm:1.1.4" +"@smithy/eventstream-serde-universal@npm:^3.0.10": + version: 3.0.10 + resolution: "@smithy/eventstream-serde-universal@npm:3.0.10" dependencies: - call-bind: ^1.0.7 - define-properties: ^1.2.1 - es-abstract: ^1.23.3 - es-errors: ^1.3.0 - es-shim-unscopables: ^1.0.2 - checksum: e4142d6f556bcbb4f393c02e7dbaea9af8f620c040450c2be137c9cbbd1a17f216b9c688c5f2c08fbb038ab83f55993fa6efdd9a05881d84693c7bcb5422127a + "@smithy/eventstream-codec": ^3.1.7 + "@smithy/types": ^3.6.0 + tslib: ^2.6.2 + checksum: ee3717312841438f5e173866475f47aa7a56a9426657bc89fffc497c15356617688ed17d6a09533918c11fbff68ce6f7998fd9d746030a9bc25a5e353ca8e9c0 languageName: node linkType: hard -"arraybuffer.prototype.slice@npm:^1.0.3": - version: 1.0.3 - resolution: "arraybuffer.prototype.slice@npm:1.0.3" +"@smithy/fetch-http-handler@npm:^3.2.9": + version: 3.2.9 + resolution: "@smithy/fetch-http-handler@npm:3.2.9" dependencies: - array-buffer-byte-length: ^1.0.1 - call-bind: ^1.0.5 - define-properties: ^1.2.1 - es-abstract: ^1.22.3 - es-errors: ^1.2.1 - get-intrinsic: ^1.2.3 - is-array-buffer: ^3.0.4 - is-shared-array-buffer: ^1.0.2 - checksum: 352259cba534dcdd969c92ab002efd2ba5025b2e3b9bead3973150edbdf0696c629d7f4b3f061c5931511e8207bdc2306da614703c820b45dabce39e3daf7e3e + "@smithy/protocol-http": ^4.1.4 + "@smithy/querystring-builder": ^3.0.7 + "@smithy/types": ^3.5.0 + "@smithy/util-base64": ^3.0.0 + tslib: ^2.6.2 + checksum: 3b8eed12bff9d39e23989ea424e112530e01c81f983f15a3bfc4265baa06feb230267d095588705c5a8002cc4a2bfcd834b0341bff60a6236dcc24599ecf8327 languageName: node linkType: hard -"arrify@npm:^2.0.0": - version: 2.0.1 - resolution: "arrify@npm:2.0.1" - checksum: 067c4c1afd182806a82e4c1cb8acee16ab8b5284fbca1ce29408e6e91281c36bb5b612f6ddfbd40a0f7a7e0c75bf2696eb94c027f6e328d6e9c52465c98e4209 +"@smithy/fetch-http-handler@npm:^4.0.0": + version: 4.0.0 + resolution: "@smithy/fetch-http-handler@npm:4.0.0" + dependencies: + "@smithy/protocol-http": ^4.1.5 + "@smithy/querystring-builder": ^3.0.8 + "@smithy/types": ^3.6.0 + "@smithy/util-base64": ^3.0.0 + tslib: ^2.6.2 + checksum: 43fc88515227e0d66b6b6a56a8e7a7f9c9690b32c51265859d40c1f4ace3a8a9ebba78e095715fe85a508d32c4f237c09f722e1e0c86d15a3fc81edc961a5051 languageName: node linkType: hard -"asap@npm:^2.0.0": - version: 2.0.6 - resolution: "asap@npm:2.0.6" - checksum: b296c92c4b969e973260e47523207cd5769abd27c245a68c26dc7a0fe8053c55bb04360237cb51cab1df52be939da77150ace99ad331fb7fb13b3423ed73ff3d +"@smithy/fetch-http-handler@npm:^4.1.2": + version: 4.1.2 + resolution: "@smithy/fetch-http-handler@npm:4.1.2" + dependencies: + "@smithy/protocol-http": ^4.1.8 + "@smithy/querystring-builder": ^3.0.11 + "@smithy/types": ^3.7.2 + "@smithy/util-base64": ^3.0.0 + tslib: ^2.6.2 + checksum: 30dd0fa9bacec24c97e536fe4423541c9aafe6231049e2bc2693bb6cbb0aaaadc26c3ab0424e53cc08cce3770816e378570cd8f9b47e7a3375cdc82fdf667a9a languageName: node linkType: hard -"asn1.js@npm:^4.10.1": - version: 4.10.1 - resolution: "asn1.js@npm:4.10.1" +"@smithy/hash-blob-browser@npm:^3.1.6": + version: 3.1.7 + resolution: "@smithy/hash-blob-browser@npm:3.1.7" dependencies: - bn.js: ^4.0.0 - inherits: ^2.0.1 - minimalistic-assert: ^1.0.0 - checksum: 9289a1a55401238755e3142511d7b8f6fc32f08c86ff68bd7100da8b6c186179dd6b14234fba2f7f6099afcd6758a816708485efe44bc5b2a6ec87d9ceeddbb5 + "@smithy/chunked-blob-reader": ^4.0.0 + "@smithy/chunked-blob-reader-native": ^3.0.1 + "@smithy/types": ^3.6.0 + tslib: ^2.6.2 + checksum: d1e790e63147357f1c5b210cacf727f6ad75c78d8246c98a1d9af17a757ce9d2621a0a21e5171b4de9526ce731db15a1288c489c6f396d54314f74a29d667ae4 languageName: node linkType: hard -"asn1@npm:^0.2.6, asn1@npm:~0.2.3": - version: 0.2.6 - resolution: "asn1@npm:0.2.6" - dependencies: - safer-buffer: ~2.1.0 - checksum: 39f2ae343b03c15ad4f238ba561e626602a3de8d94ae536c46a4a93e69578826305366dc09fbb9b56aec39b4982a463682f259c38e59f6fa380cd72cd61e493d - languageName: node - linkType: hard - -"assert-plus@npm:1.0.0, assert-plus@npm:^1.0.0": - version: 1.0.0 - resolution: "assert-plus@npm:1.0.0" - checksum: 19b4340cb8f0e6a981c07225eacac0e9d52c2644c080198765d63398f0075f83bbc0c8e95474d54224e297555ad0d631c1dcd058adb1ddc2437b41a6b424ac64 +"@smithy/hash-node@npm:^3.0.7": + version: 3.0.8 + resolution: "@smithy/hash-node@npm:3.0.8" + dependencies: + "@smithy/types": ^3.6.0 + "@smithy/util-buffer-from": ^3.0.0 + "@smithy/util-utf8": ^3.0.0 + tslib: ^2.6.2 + checksum: 9a2e2e8ea044008345e64406a5ecbc23a507b00eae42e71455f0b05c638a21da57a68e43d73254236203187d7943b864c750fc62f95825cc5340dd95767530c3 languageName: node linkType: hard -"assert@npm:^1.1.1": - version: 1.5.1 - resolution: "assert@npm:1.5.1" +"@smithy/hash-stream-node@npm:^3.1.6": + version: 3.1.7 + resolution: "@smithy/hash-stream-node@npm:3.1.7" dependencies: - object.assign: ^4.1.4 - util: ^0.10.4 - checksum: bfc539da97545f9b2989395d6b85be40b70649ce57464f3cc6e61f4975fb097ba0689c386f95bdb4c3ab867931e40a565c9e193ae3c02263a8e92acb17c9dc93 + "@smithy/types": ^3.6.0 + "@smithy/util-utf8": ^3.0.0 + tslib: ^2.6.2 + checksum: 2bd580a8759a68c991fa5817d47e828029648a870ad52da8ba175819d6324603934e0d34b83139ac21ddb265f9adcaffbd696105ca0783b193fd5805dc3e3ca3 languageName: node linkType: hard -"ast-types-flow@npm:^0.0.8": - version: 0.0.8 - resolution: "ast-types-flow@npm:0.0.8" - checksum: 0a64706609a179233aac23817837abab614f3548c252a2d3d79ea1e10c74aa28a0846e11f466cf72771b6ed8713abc094dcf8c40c3ec4207da163efa525a94a8 +"@smithy/invalid-dependency@npm:^3.0.7": + version: 3.0.8 + resolution: "@smithy/invalid-dependency@npm:3.0.8" + dependencies: + "@smithy/types": ^3.6.0 + tslib: ^2.6.2 + checksum: ad55921e703ea3396a7d03b4515c2c0100d3c494865594a8a73b160e2913cac442d61a2545bcb248fedf00bb150cce2c33827d1d12527e34070e7fd8e114d2d6 languageName: node linkType: hard -"ast-types@npm:^0.13.4": - version: 0.13.4 - resolution: "ast-types@npm:0.13.4" +"@smithy/is-array-buffer@npm:^2.2.0": + version: 2.2.0 + resolution: "@smithy/is-array-buffer@npm:2.2.0" dependencies: - tslib: ^2.0.1 - checksum: 5a51f7b70588ecced3601845a0e203279ca2f5fdc184416a0a1640c93ec0a267241d6090a328e78eebb8de81f8754754e0a4f1558ba2a3d638f8ccbd0b1f0eff + tslib: ^2.6.2 + checksum: cd12c2e27884fec89ca8966d33c9dc34d3234efe89b33a9b309c61ebcde463e6f15f6a02d31d4fddbfd6e5904743524ca5b95021b517b98fe10957c2da0cd5fc languageName: node linkType: hard -"astring@npm:^1.8.1": - version: 1.9.0 - resolution: "astring@npm:1.9.0" - bin: - astring: bin/astring - checksum: 69ffde3643f5280c6846231a995af878a94d3eab41d1a19a86b8c15f456453f63a7982cf5dd72d270b9f50dd26763a3e1e48377c961b7df16f550132b6dba805 +"@smithy/is-array-buffer@npm:^3.0.0": + version: 3.0.0 + resolution: "@smithy/is-array-buffer@npm:3.0.0" + dependencies: + tslib: ^2.6.2 + checksum: ce7440fcb1ce3c46722cff11c33e2f62a9df86d74fa2054a8e6b540302a91211cf6e4e3b1b7aac7030c6c8909158c1b6867c394201fa8afc6b631979956610e5 languageName: node linkType: hard -"async-lock@npm:^1.4.1": - version: 1.4.1 - resolution: "async-lock@npm:1.4.1" - checksum: 29e70cd892932b7c202437786cedc39ff62123cb6941014739bd3cabd6106326416e9e7c21285a5d1dc042cad239a0f7ec9c44658491ee4a615fd36a21c1d10a +"@smithy/md5-js@npm:^3.0.7": + version: 3.0.8 + resolution: "@smithy/md5-js@npm:3.0.8" + dependencies: + "@smithy/types": ^3.6.0 + "@smithy/util-utf8": ^3.0.0 + tslib: ^2.6.2 + checksum: 3159a01ff4fab7ebbfa41c2ba6baa5f4c2333dafff6232dea956fc82a6354ad97a70c67f4a28e7c919a5e6be418a3c2427073948739941b194ab9bd238e13290 languageName: node linkType: hard -"async-retry@npm:^1.3.3": - version: 1.3.3 - resolution: "async-retry@npm:1.3.3" +"@smithy/middleware-content-length@npm:^3.0.9": + version: 3.0.10 + resolution: "@smithy/middleware-content-length@npm:3.0.10" dependencies: - retry: 0.13.1 - checksum: 38a7152ff7265a9321ea214b9c69e8224ab1febbdec98efbbde6e562f17ff68405569b796b1c5271f354aef8783665d29953f051f68c1fc45306e61aec82fdc4 + "@smithy/protocol-http": ^4.1.5 + "@smithy/types": ^3.6.0 + tslib: ^2.6.2 + checksum: 776fd9014240109328b6823be8649322390bde7aa468750920be3e6ed268a4e380f5b3fcfbe15b2b8af1b6e4b4fedda9a446b76cc247ca252b95380646ac80b5 languageName: node linkType: hard -"async@npm:^2.6.4": - version: 2.6.4 - resolution: "async@npm:2.6.4" +"@smithy/middleware-endpoint@npm:^3.1.4, @smithy/middleware-endpoint@npm:^3.2.1": + version: 3.2.1 + resolution: "@smithy/middleware-endpoint@npm:3.2.1" dependencies: - lodash: ^4.17.14 - checksum: a52083fb32e1ebe1d63e5c5624038bb30be68ff07a6c8d7dfe35e47c93fc144bd8652cbec869e0ac07d57dde387aa5f1386be3559cdee799cb1f789678d88e19 + "@smithy/core": ^2.5.1 + "@smithy/middleware-serde": ^3.0.8 + "@smithy/node-config-provider": ^3.1.9 + "@smithy/shared-ini-file-loader": ^3.1.9 + "@smithy/types": ^3.6.0 + "@smithy/url-parser": ^3.0.8 + "@smithy/util-middleware": ^3.0.8 + tslib: ^2.6.2 + checksum: acc41e1b665b6a0c3cf2952a44b4cd1ce980866b44fe4b0ed9208a6067c3aa15ebe646623b14375be6c04ab73fa74fb95eeeca6905fc27092ce93495c77d8b9b languageName: node linkType: hard -"async@npm:^3.2.3, async@npm:^3.2.4": - version: 3.2.6 - resolution: "async@npm:3.2.6" - checksum: ee6eb8cd8a0ab1b58bd2a3ed6c415e93e773573a91d31df9d5ef559baafa9dab37d3b096fa7993e84585cac3697b2af6ddb9086f45d3ac8cae821bb2aab65682 +"@smithy/middleware-endpoint@npm:^3.2.5": + version: 3.2.5 + resolution: "@smithy/middleware-endpoint@npm:3.2.5" + dependencies: + "@smithy/core": ^2.5.5 + "@smithy/middleware-serde": ^3.0.11 + "@smithy/node-config-provider": ^3.1.12 + "@smithy/shared-ini-file-loader": ^3.1.12 + "@smithy/types": ^3.7.2 + "@smithy/url-parser": ^3.0.11 + "@smithy/util-middleware": ^3.0.11 + tslib: ^2.6.2 + checksum: d89909c85f608404871a8ef0b6e468840cba8b36656288d5aa53bf93288f010dfbc385f2ba5a1b06e5c3eb63271501142949d65e0bec903521176ab274e76d21 languageName: node linkType: hard -"asynckit@npm:^0.4.0": - version: 0.4.0 - resolution: "asynckit@npm:0.4.0" - checksum: 7b78c451df768adba04e2d02e63e2d0bf3b07adcd6e42b4cf665cb7ce899bedd344c69a1dcbce355b5f972d597b25aaa1c1742b52cffd9caccb22f348114f6be +"@smithy/middleware-retry@npm:^3.0.23": + version: 3.0.25 + resolution: "@smithy/middleware-retry@npm:3.0.25" + dependencies: + "@smithy/node-config-provider": ^3.1.9 + "@smithy/protocol-http": ^4.1.5 + "@smithy/service-error-classification": ^3.0.8 + "@smithy/smithy-client": ^3.4.2 + "@smithy/types": ^3.6.0 + "@smithy/util-middleware": ^3.0.8 + "@smithy/util-retry": ^3.0.8 + tslib: ^2.6.2 + uuid: ^9.0.1 + checksum: d10264cbff951b3b9585b54cc0e67de6099ed67461a34d83266e197fc48bea45fc7207ed7329c567390be6f08aeb84a6e7fef5f4fd770da9cad0028fc6f61d65 languageName: node linkType: hard -"at-least-node@npm:^1.0.0": - version: 1.0.0 - resolution: "at-least-node@npm:1.0.0" - checksum: 463e2f8e43384f1afb54bc68485c436d7622acec08b6fad269b421cb1d29cebb5af751426793d0961ed243146fe4dc983402f6d5a51b720b277818dbf6f2e49e +"@smithy/middleware-serde@npm:^3.0.11": + version: 3.0.11 + resolution: "@smithy/middleware-serde@npm:3.0.11" + dependencies: + "@smithy/types": ^3.7.2 + tslib: ^2.6.2 + checksum: dbc180567a7bab74a645853abdc911fc03d1adedea0dcdfbf9259fef274fdc0a9ad3548479537d58176e1eeadcab7d30582a920731bd201dfc29f067265718ec languageName: node linkType: hard -"available-typed-arrays@npm:^1.0.7": - version: 1.0.7 - resolution: "available-typed-arrays@npm:1.0.7" +"@smithy/middleware-serde@npm:^3.0.7, @smithy/middleware-serde@npm:^3.0.8": + version: 3.0.8 + resolution: "@smithy/middleware-serde@npm:3.0.8" dependencies: - possible-typed-array-names: ^1.0.0 - checksum: 1aa3ffbfe6578276996de660848b6e95669d9a95ad149e3dd0c0cda77db6ee1dbd9d1dd723b65b6d277b882dd0c4b91a654ae9d3cf9e1254b7e93e4908d78fd3 + "@smithy/types": ^3.6.0 + tslib: ^2.6.2 + checksum: 3d1ba269680bcf0cea6ea1c0e6d20eaf9de3597a687533607cc1ec49dad8669424e41bf3498dcdd21613f7791b0406db1846c2cdd6571682e4be8cb8055a85da languageName: node linkType: hard -"aws-sign2@npm:~0.7.0": - version: 0.7.0 - resolution: "aws-sign2@npm:0.7.0" - checksum: b148b0bb0778098ad8cf7e5fc619768bcb51236707ca1d3e5b49e41b171166d8be9fdc2ea2ae43d7decf02989d0aaa3a9c4caa6f320af95d684de9b548a71525 +"@smithy/middleware-stack@npm:^3.0.11": + version: 3.0.11 + resolution: "@smithy/middleware-stack@npm:3.0.11" + dependencies: + "@smithy/types": ^3.7.2 + tslib: ^2.6.2 + checksum: 65fa1a3815dc091dccfde1e24de74768ca55fabb18eba3868acd295a1566f8345538238b3f3db242d03ec989ac785933176291340feae755815d8c43f5135810 languageName: node linkType: hard -"aws-ssl-profiles@npm:^1.1.1": - version: 1.1.2 - resolution: "aws-ssl-profiles@npm:1.1.2" - checksum: bfcf9b2cbb9788e24e4af39a1e8b4a8afbdf65773b6a1636e643c10068ffbae46b28277c4c9f9321179400b2080092db040ba4513f9143f22d1bb053a12dab2b +"@smithy/middleware-stack@npm:^3.0.7, @smithy/middleware-stack@npm:^3.0.8": + version: 3.0.8 + resolution: "@smithy/middleware-stack@npm:3.0.8" + dependencies: + "@smithy/types": ^3.6.0 + tslib: ^2.6.2 + checksum: c4a24dcdb1db8f347d266ee97676daf1f5bb495aa6c1e59992378bebe39265be14be5c3f7cf9ae35a8ffe68476cfcfe9000a87e9b00062538359c4507f4060ea languageName: node linkType: hard -"aws4@npm:^1.8.0": - version: 1.13.2 - resolution: "aws4@npm:1.13.2" - checksum: 9ac924e4a91c088b4928ea86b68d8c4558b0e6289ccabaae0e3e96a611bd75277c2eab6e3965821028768700516f612b929a5ce822f33a8771f74ba2a8cedb9c +"@smithy/node-config-provider@npm:^3.1.12": + version: 3.1.12 + resolution: "@smithy/node-config-provider@npm:3.1.12" + dependencies: + "@smithy/property-provider": ^3.1.11 + "@smithy/shared-ini-file-loader": ^3.1.12 + "@smithy/types": ^3.7.2 + tslib: ^2.6.2 + checksum: 42b61e2286387046f55130f2e0c11048c41310789441fee708bc498bb2a3b44c75d4b4e1a6fcca5c3ac593b73d1b73c082e556f0d4eab3966561eae52513db2e languageName: node linkType: hard -"axe-core@npm:^4.10.0": - version: 4.10.2 - resolution: "axe-core@npm:4.10.2" - checksum: 2b9b1c93ea73ea9f206604e4e17bd771d2d835f077bde54517d73028b8865c69b209460e73d5b109968cbdb39ab3d28943efa5695189bd79e16421ce1706719e +"@smithy/node-config-provider@npm:^3.1.8, @smithy/node-config-provider@npm:^3.1.9": + version: 3.1.9 + resolution: "@smithy/node-config-provider@npm:3.1.9" + dependencies: + "@smithy/property-provider": ^3.1.8 + "@smithy/shared-ini-file-loader": ^3.1.9 + "@smithy/types": ^3.6.0 + tslib: ^2.6.2 + checksum: fc0d27ff620475f406cb0f3e8527e8dcf56449ec3faad96b9738d26ec825d1b75a55b2f28750efbde383d163c5e25bb32ad09ba59d7d40e491898b9cc6a2eb2a languageName: node linkType: hard -"axios@npm:1.7.7, axios@npm:^1.7.4": - version: 1.7.7 - resolution: "axios@npm:1.7.7" +"@smithy/node-http-handler@npm:^3.0.0, @smithy/node-http-handler@npm:^3.3.2": + version: 3.3.2 + resolution: "@smithy/node-http-handler@npm:3.3.2" dependencies: - follow-redirects: ^1.15.6 - form-data: ^4.0.0 - proxy-from-env: ^1.1.0 - checksum: 882d4fe0ec694a07c7f5c1f68205eb6dc5a62aecdb632cc7a4a3d0985188ce3030e0b277e1a8260ac3f194d314ae342117660a151fabffdc5081ca0b5a8b47fe + "@smithy/abort-controller": ^3.1.9 + "@smithy/protocol-http": ^4.1.8 + "@smithy/querystring-builder": ^3.0.11 + "@smithy/types": ^3.7.2 + tslib: ^2.6.2 + checksum: f4d70ca9ba6d62ae9c3257c069a42ff9c0d3bce28625e7ebab34bc3196eb5a2a1cb2c20d3409b8d1a9c24f0a5d0b3d0809904ceea8d87c4fb991474fd0d9fd31 languageName: node linkType: hard -"axobject-query@npm:^4.1.0": - version: 4.1.0 - resolution: "axobject-query@npm:4.1.0" - checksum: 7d1e87bf0aa7ae7a76cd39ab627b7c48fda3dc40181303d9adce4ba1d5b5ce73b5e5403ee6626ec8e91090448c887294d6144e24b6741a976f5be9347e3ae1df +"@smithy/node-http-handler@npm:^3.2.4, @smithy/node-http-handler@npm:^3.2.5": + version: 3.2.5 + resolution: "@smithy/node-http-handler@npm:3.2.5" + dependencies: + "@smithy/abort-controller": ^3.1.6 + "@smithy/protocol-http": ^4.1.5 + "@smithy/querystring-builder": ^3.0.8 + "@smithy/types": ^3.6.0 + tslib: ^2.6.2 + checksum: ea8d4148dd760f031f9eeb2aec2480685bb1a40d7ac9c482eb3170df0316cae58433a6c803d85b046c132a19b8b4874741fae054355b5584facbd46c18889c83 languageName: node linkType: hard -"b4a@npm:^1.6.4": - version: 1.6.7 - resolution: "b4a@npm:1.6.7" - checksum: afe4e239b49c0ef62236fe0d788ac9bd9d7eac7e9855b0d1835593cd0efcc7be394f9cc28a747a2ed2cdcb0a48c3528a551a196f472eb625457c711169c9efa2 +"@smithy/property-provider@npm:^3.1.11": + version: 3.1.11 + resolution: "@smithy/property-provider@npm:3.1.11" + dependencies: + "@smithy/types": ^3.7.2 + tslib: ^2.6.2 + checksum: c6f4d4bb241381254083df95c36e8632fb7e54437ab5ad56cb6b1bf6c6b81072f396fa958a700037b1ab3efb6c25fb1f7aeb92560366f35fa14055c34077ea30 languageName: node linkType: hard -"babel-jest@npm:^29.7.0": - version: 29.7.0 - resolution: "babel-jest@npm:29.7.0" +"@smithy/property-provider@npm:^3.1.7, @smithy/property-provider@npm:^3.1.8": + version: 3.1.8 + resolution: "@smithy/property-provider@npm:3.1.8" dependencies: - "@jest/transform": ^29.7.0 - "@types/babel__core": ^7.1.14 - babel-plugin-istanbul: ^6.1.1 - babel-preset-jest: ^29.6.3 - chalk: ^4.0.0 - graceful-fs: ^4.2.9 - slash: ^3.0.0 - peerDependencies: - "@babel/core": ^7.8.0 - checksum: ee6f8e0495afee07cac5e4ee167be705c711a8cc8a737e05a587a131fdae2b3c8f9aa55dfd4d9c03009ac2d27f2de63d8ba96d3e8460da4d00e8af19ef9a83f7 + "@smithy/types": ^3.6.0 + tslib: ^2.6.2 + checksum: acf8a3cc0cad53503870580e164b41d79e34f1129c5b6fcf99d8dc09a0a89055889430f9552bead9bafc82775fed5f5f4c8eb3f7e53d91f759bb164a3a68cea5 languageName: node linkType: hard -"babel-plugin-istanbul@npm:^6.1.1": - version: 6.1.1 - resolution: "babel-plugin-istanbul@npm:6.1.1" +"@smithy/protocol-http@npm:^4.1.4, @smithy/protocol-http@npm:^4.1.5": + version: 4.1.5 + resolution: "@smithy/protocol-http@npm:4.1.5" dependencies: - "@babel/helper-plugin-utils": ^7.0.0 - "@istanbuljs/load-nyc-config": ^1.0.0 - "@istanbuljs/schema": ^0.1.2 - istanbul-lib-instrument: ^5.0.4 - test-exclude: ^6.0.0 - checksum: cb4fd95738219f232f0aece1116628cccff16db891713c4ccb501cddbbf9272951a5df81f2f2658dfdf4b3e7b236a9d5cbcf04d5d8c07dd5077297339598061a + "@smithy/types": ^3.6.0 + tslib: ^2.6.2 + checksum: 2e581594d03ff367ebc0a1ab0443e8b148f39a3ea810333861f4aed639239e5a261bedbb49f6555cfdb9682b88cd881715764c2dfe7e18a7a003385a0b6200d5 languageName: node linkType: hard -"babel-plugin-jest-hoist@npm:^29.6.3": - version: 29.6.3 - resolution: "babel-plugin-jest-hoist@npm:29.6.3" +"@smithy/protocol-http@npm:^4.1.8": + version: 4.1.8 + resolution: "@smithy/protocol-http@npm:4.1.8" dependencies: - "@babel/template": ^7.3.3 - "@babel/types": ^7.3.3 - "@types/babel__core": ^7.1.14 - "@types/babel__traverse": ^7.0.6 - checksum: 51250f22815a7318f17214a9d44650ba89551e6d4f47a2dc259128428324b52f5a73979d010cefd921fd5a720d8c1d55ad74ff601cd94c7bd44d5f6292fde2d1 + "@smithy/types": ^3.7.2 + tslib: ^2.6.2 + checksum: 43cdc163137f09dc5f2419ab75c9f31ca7c1da9210023c027be5fa29455543bdc10ab886449dc1399d7ea21ab4b83ba828714f31d06c1638999fa17d5bba0626 languageName: node linkType: hard -"babel-plugin-polyfill-corejs2@npm:^0.4.10": - version: 0.4.11 - resolution: "babel-plugin-polyfill-corejs2@npm:0.4.11" +"@smithy/querystring-builder@npm:^3.0.11": + version: 3.0.11 + resolution: "@smithy/querystring-builder@npm:3.0.11" dependencies: - "@babel/compat-data": ^7.22.6 - "@babel/helper-define-polyfill-provider": ^0.6.2 - semver: ^6.3.1 - peerDependencies: - "@babel/core": ^7.4.0 || ^8.0.0-0 <8.0.0 - checksum: f098353ce7c7dde1a1d2710858e01b471e85689110c9e37813e009072347eb8c55d5f84d20d3bf1cab31755f20078ba90f8855fdc4686a9daa826a95ff280bd7 + "@smithy/types": ^3.7.2 + "@smithy/util-uri-escape": ^3.0.0 + tslib: ^2.6.2 + checksum: 168f3104b2db0b704f211e18a318dffdbaaa9675b62ca44c892267c7825295e10041c1c82086cdcd1a7a05f1db95c0a1c74540d8b6d9c9504b13bb89387186fd languageName: node linkType: hard -"babel-plugin-polyfill-corejs3@npm:^0.10.6": - version: 0.10.6 - resolution: "babel-plugin-polyfill-corejs3@npm:0.10.6" +"@smithy/querystring-builder@npm:^3.0.7, @smithy/querystring-builder@npm:^3.0.8": + version: 3.0.8 + resolution: "@smithy/querystring-builder@npm:3.0.8" dependencies: - "@babel/helper-define-polyfill-provider": ^0.6.2 - core-js-compat: ^3.38.0 - peerDependencies: - "@babel/core": ^7.4.0 || ^8.0.0-0 <8.0.0 - checksum: f762f29f7acca576897c63149c850f0a72babd3fb9ea436a2e36f0c339161c4b912a77828541d8188ce8a91e50965c6687120cf36071eabb1b7aa92f279e2164 + "@smithy/types": ^3.6.0 + "@smithy/util-uri-escape": ^3.0.0 + tslib: ^2.6.2 + checksum: b07a766fb1e94e06116aef6534a31bbd4bb1bb94844d61c67615316d19aac82f94781fab779655bc03a46d70dda9caf3ad991a3e41548fbbba92783103f4f43e languageName: node linkType: hard -"babel-plugin-polyfill-regenerator@npm:^0.6.1": - version: 0.6.2 - resolution: "babel-plugin-polyfill-regenerator@npm:0.6.2" +"@smithy/querystring-parser@npm:^3.0.11": + version: 3.0.11 + resolution: "@smithy/querystring-parser@npm:3.0.11" dependencies: - "@babel/helper-define-polyfill-provider": ^0.6.2 - peerDependencies: - "@babel/core": ^7.4.0 || ^8.0.0-0 <8.0.0 - checksum: 150233571072b6b3dfe946242da39cba8587b7f908d1c006f7545fc88b0e3c3018d445739beb61e7a75835f0c2751dbe884a94ff9b245ec42369d9267e0e1b3f + "@smithy/types": ^3.7.2 + tslib: ^2.6.2 + checksum: 2aa2ce6a8da9c7c4a89b900fd83b84915f7e17a668376a4e1257eca10d4d6eeedef529be8ab9e94415c58cb4b33f3e6bd82bb6131d6b0bd12bb1a942b54acb6e languageName: node linkType: hard -"babel-preset-current-node-syntax@npm:^1.0.0": - version: 1.1.0 - resolution: "babel-preset-current-node-syntax@npm:1.1.0" +"@smithy/querystring-parser@npm:^3.0.8": + version: 3.0.8 + resolution: "@smithy/querystring-parser@npm:3.0.8" dependencies: - "@babel/plugin-syntax-async-generators": ^7.8.4 - "@babel/plugin-syntax-bigint": ^7.8.3 - "@babel/plugin-syntax-class-properties": ^7.12.13 - "@babel/plugin-syntax-class-static-block": ^7.14.5 - "@babel/plugin-syntax-import-attributes": ^7.24.7 - "@babel/plugin-syntax-import-meta": ^7.10.4 - "@babel/plugin-syntax-json-strings": ^7.8.3 - "@babel/plugin-syntax-logical-assignment-operators": ^7.10.4 - "@babel/plugin-syntax-nullish-coalescing-operator": ^7.8.3 - "@babel/plugin-syntax-numeric-separator": ^7.10.4 - "@babel/plugin-syntax-object-rest-spread": ^7.8.3 - "@babel/plugin-syntax-optional-catch-binding": ^7.8.3 - "@babel/plugin-syntax-optional-chaining": ^7.8.3 - "@babel/plugin-syntax-private-property-in-object": ^7.14.5 - "@babel/plugin-syntax-top-level-await": ^7.14.5 - peerDependencies: - "@babel/core": ^7.0.0 - checksum: 9f93fac975eaba296c436feeca1031ca0539143c4066eaf5d1ba23525a31850f03b651a1049caea7287df837a409588c8252c15627ad3903f17864c8e25ed64b + "@smithy/types": ^3.6.0 + tslib: ^2.6.2 + checksum: 4ad9edfd96f084432157abd4953840f051ca4678963193bdc0ec7b210c79a649ddc023e327c39bd835ef7f56447dfaf2e47210738799ba9d044befacbe316a25 languageName: node linkType: hard -"babel-preset-jest@npm:^29.6.3": - version: 29.6.3 - resolution: "babel-preset-jest@npm:29.6.3" +"@smithy/service-error-classification@npm:^3.0.8": + version: 3.0.8 + resolution: "@smithy/service-error-classification@npm:3.0.8" dependencies: - babel-plugin-jest-hoist: ^29.6.3 - babel-preset-current-node-syntax: ^1.0.0 - peerDependencies: - "@babel/core": ^7.0.0 - checksum: aa4ff2a8a728d9d698ed521e3461a109a1e66202b13d3494e41eea30729a5e7cc03b3a2d56c594423a135429c37bf63a9fa8b0b9ce275298be3095a88c69f6fb + "@smithy/types": ^3.6.0 + checksum: cba6d33eb0e7482e557c303638416ea8678f80fa5782c97dd67e5b72741f22e2446370dc0ef9b16802d73cdfb7a5e4e5587c1d4abb5aa5ca9c33525137b4cf2b languageName: node linkType: hard -"balanced-match@npm:^1.0.0": - version: 1.0.2 - resolution: "balanced-match@npm:1.0.2" - checksum: 9706c088a283058a8a99e0bf91b0a2f75497f185980d9ffa8b304de1d9e58ebda7c72c07ebf01dadedaac5b2907b2c6f566f660d62bd336c3468e960403b9d65 +"@smithy/shared-ini-file-loader@npm:^3.1.12": + version: 3.1.12 + resolution: "@smithy/shared-ini-file-loader@npm:3.1.12" + dependencies: + "@smithy/types": ^3.7.2 + tslib: ^2.6.2 + checksum: f726604f0f176d8f05eb0adc0878474a04ebefc2796ad72ca7c40d83f8bac65ef1239c9b1f8faa25838787a9aa3f83f28c50f150db76000b900bf220934d4bc7 languageName: node linkType: hard -"bare-events@npm:^2.0.0, bare-events@npm:^2.2.0": - version: 2.5.0 - resolution: "bare-events@npm:2.5.0" - checksum: 5aa10716e7f33c5dfc471fd657eee2a33f2db0f78b3c83b5cdd1a45a7e7871114a69460ea96cd838807c55eb470b9e53dd0dfda8c83cced1352cc8253cebff48 +"@smithy/shared-ini-file-loader@npm:^3.1.8, @smithy/shared-ini-file-loader@npm:^3.1.9": + version: 3.1.9 + resolution: "@smithy/shared-ini-file-loader@npm:3.1.9" + dependencies: + "@smithy/types": ^3.6.0 + tslib: ^2.6.2 + checksum: 571cc785659551d875fb76c53d116bf6f3978d1b698be096e9218dbbe1dd42efbfb174e151528103888faf7c9854e66f3e5ca395b9c359e37f876c20b22a4f97 languageName: node linkType: hard -"bare-fs@npm:^2.1.1": - version: 2.3.5 - resolution: "bare-fs@npm:2.3.5" +"@smithy/signature-v4@npm:^4.2.0": + version: 4.2.1 + resolution: "@smithy/signature-v4@npm:4.2.1" dependencies: - bare-events: ^2.0.0 - bare-path: ^2.0.0 - bare-stream: ^2.0.0 - checksum: 071b1dff94a213eaf0b41693953959bf10af2deade597a56ff206a5d833579d56bc8530aa4614bb88bf39fd6d52f2404f7c36af4695109ffa756a13837ac3d91 + "@smithy/is-array-buffer": ^3.0.0 + "@smithy/protocol-http": ^4.1.5 + "@smithy/types": ^3.6.0 + "@smithy/util-hex-encoding": ^3.0.0 + "@smithy/util-middleware": ^3.0.8 + "@smithy/util-uri-escape": ^3.0.0 + "@smithy/util-utf8": ^3.0.0 + tslib: ^2.6.2 + checksum: 783d8c0a780fbb94084819ea624e75a72daf84c480fa3215b0edd7689041925dbbab3e2785acdfef564c5623631d09aae4915f27cfd1357d2bd0f26349041e56 languageName: node linkType: hard -"bare-os@npm:^2.1.0": - version: 2.4.4 - resolution: "bare-os@npm:2.4.4" - checksum: e90088a7dc0307c020350a28df8ec5564cae5a4b7a213d8509d70831d7064308e2ed31de801b68f474cb004ad3a0a66bd28c38374d270484d9025ee71af20396 +"@smithy/smithy-client@npm:^3.4.0, @smithy/smithy-client@npm:^3.4.2": + version: 3.4.2 + resolution: "@smithy/smithy-client@npm:3.4.2" + dependencies: + "@smithy/core": ^2.5.1 + "@smithy/middleware-endpoint": ^3.2.1 + "@smithy/middleware-stack": ^3.0.8 + "@smithy/protocol-http": ^4.1.5 + "@smithy/types": ^3.6.0 + "@smithy/util-stream": ^3.2.1 + tslib: ^2.6.2 + checksum: 4b53e695e18bf0ed4805dd66839e272129be5384f6de5356a2adc03311f5c372766b490a3c001086aec8728f6c9bb90ca625a09e9b4c3fe875c1ee7567118f34 languageName: node linkType: hard -"bare-path@npm:^2.0.0, bare-path@npm:^2.1.0": - version: 2.1.3 - resolution: "bare-path@npm:2.1.3" - dependencies: - bare-os: ^2.1.0 - checksum: 20301aeb05b735852a396515464908e51e896922c3bb353ef2a09ff54e81ced94e6ad857bb0a36d2ce659c42bd43dd5c3d5643edd8faaf910ee9950c4e137b88 +"@smithy/smithy-client@npm:^3.5.0": + version: 3.5.0 + resolution: "@smithy/smithy-client@npm:3.5.0" + dependencies: + "@smithy/core": ^2.5.5 + "@smithy/middleware-endpoint": ^3.2.5 + "@smithy/middleware-stack": ^3.0.11 + "@smithy/protocol-http": ^4.1.8 + "@smithy/types": ^3.7.2 + "@smithy/util-stream": ^3.3.2 + tslib: ^2.6.2 + checksum: 17c7f5b4b0e722ed345ca0a4ecece31e8c87db133a369bfaac605abfe50d5874a1711cc6836955c74216ba14290dd594a50033ec77b6ea50d5732738391fa6ee languageName: node linkType: hard -"bare-stream@npm:^2.0.0": - version: 2.3.2 - resolution: "bare-stream@npm:2.3.2" +"@smithy/types@npm:^1.1.0": + version: 1.2.0 + resolution: "@smithy/types@npm:1.2.0" dependencies: - streamx: ^2.20.0 - checksum: 051c817f0b74617d99002a91c61e6fa2b56bff3bb329c5ab4a817287bc1f46f3aef5f13bc11201b344a91873782a45f755d3910012381f16e47feee2194fd792 + tslib: ^2.5.0 + checksum: 376a1402d356a8dddd804af66ff2d273e57e332a3e9537a98039b47572684aae044d5fcd879ac6eee5cc08640ea00fbef0725a6a16026db5fb8d189473d44fe6 languageName: node linkType: hard -"base64-js@npm:^1.0.2, base64-js@npm:^1.3.0, base64-js@npm:^1.3.1": - version: 1.5.1 - resolution: "base64-js@npm:1.5.1" - checksum: 669632eb3745404c2f822a18fc3a0122d2f9a7a13f7fb8b5823ee19d1d2ff9ee5b52c53367176ea4ad093c332fd5ab4bd0ebae5a8e27917a4105a4cfc86b1005 +"@smithy/types@npm:^3.5.0, @smithy/types@npm:^3.6.0": + version: 3.6.0 + resolution: "@smithy/types@npm:3.6.0" + dependencies: + tslib: ^2.6.2 + checksum: 4f581dc1c3e2dee8e1134fafb47de2c301330ea668214eb1a81d26b85acdb48a7e52008da0d15a402e998a79bed285a74b88949a5a4a3fe0aef38c28620ab795 languageName: node linkType: hard -"base64-stream@npm:^1.0.0": - version: 1.0.0 - resolution: "base64-stream@npm:1.0.0" - checksum: 45ee0ffaa30350e21f7bd58eedeeeb4567297e2537eac71000e00cc38be8578bdaa7fda59c30302dc9ed58c18b235e440207425abb81bd89de9a3ef79348921b +"@smithy/types@npm:^3.7.2": + version: 3.7.2 + resolution: "@smithy/types@npm:3.7.2" + dependencies: + tslib: ^2.6.2 + checksum: f3ae277d2f81eeb67c12e651b2e999225cda115dff8fab257a77fbe3739d32c515dbd19218590dd2c33d203259b00c80c9fc6027f8484c50725390a8fc0f1e3e languageName: node linkType: hard -"basic-auth@npm:~2.0.1": - version: 2.0.1 - resolution: "basic-auth@npm:2.0.1" +"@smithy/url-parser@npm:^3.0.11": + version: 3.0.11 + resolution: "@smithy/url-parser@npm:3.0.11" dependencies: - safe-buffer: 5.1.2 - checksum: 3419b805d5dfc518f3a05dcf42aa53aa9ce820e50b6df5097f9e186322e1bc733c36722b624802cd37e791035aa73b828ed814d8362333d42d7f5cd04d7a5e48 + "@smithy/querystring-parser": ^3.0.11 + "@smithy/types": ^3.7.2 + tslib: ^2.6.2 + checksum: 1af2edc53b969255c231028b034115f8d21807fd4ffa052ae4a03f9c47b28f8679a7c709626f9d549d537a7d63d20596c89515e229fc84114122fc9b51bb4519 languageName: node linkType: hard -"basic-ftp@npm:^5.0.2": - version: 5.0.5 - resolution: "basic-ftp@npm:5.0.5" - checksum: bc82d1c1c61cd838eaca96d68ece888bacf07546642fb6b9b8328ed410756f5935f8cf43a42cb44bb343e0565e28e908adc54c298bd2f1a6e0976871fb11fec6 +"@smithy/url-parser@npm:^3.0.7, @smithy/url-parser@npm:^3.0.8": + version: 3.0.8 + resolution: "@smithy/url-parser@npm:3.0.8" + dependencies: + "@smithy/querystring-parser": ^3.0.8 + "@smithy/types": ^3.6.0 + tslib: ^2.6.2 + checksum: 1bf2143b298a4afdf6a8fa40f7b018ad59eb79b717e2bafcd8634c20893485c456c12fe73659d342a3d3a51cdbb10afea61fac285e7ce5fa0f66d7695ad7d10b languageName: node linkType: hard -"batch@npm:0.6.1": - version: 0.6.1 - resolution: "batch@npm:0.6.1" - checksum: 61f9934c7378a51dce61b915586191078ef7f1c3eca707fdd58b96ff2ff56d9e0af2bdab66b1462301a73c73374239e6542d9821c0af787f3209a23365d07e7f +"@smithy/util-base64@npm:^3.0.0": + version: 3.0.0 + resolution: "@smithy/util-base64@npm:3.0.0" + dependencies: + "@smithy/util-buffer-from": ^3.0.0 + "@smithy/util-utf8": ^3.0.0 + tslib: ^2.6.2 + checksum: 413f26046a7e98b2661a078f218a8d040c820fc5a02f5e364aff58c3957e28fde1ac4048c2ebbad5d87b9da4b9aa98a8d4a7fb0d2ce97def33738bd7d8d79aa0 languageName: node linkType: hard -"bcrypt-pbkdf@npm:^1.0.0, bcrypt-pbkdf@npm:^1.0.2": - version: 1.0.2 - resolution: "bcrypt-pbkdf@npm:1.0.2" +"@smithy/util-body-length-browser@npm:^3.0.0": + version: 3.0.0 + resolution: "@smithy/util-body-length-browser@npm:3.0.0" dependencies: - tweetnacl: ^0.14.3 - checksum: 4edfc9fe7d07019609ccf797a2af28351736e9d012c8402a07120c4453a3b789a15f2ee1530dc49eee8f7eb9379331a8dd4b3766042b9e502f74a68e7f662291 + tslib: ^2.6.2 + checksum: b01d8258b9a25b262734fc49cefefe48583ba193c3eefd49a6f7fd5922c3015d23dda88b52f3dd9a16827cad16b5b9425eef01e91bd0c71bb5abc469d2952c07 languageName: node linkType: hard -"before-after-hook@npm:^2.2.0": - version: 2.2.3 - resolution: "before-after-hook@npm:2.2.3" - checksum: a1a2430976d9bdab4cd89cb50d27fa86b19e2b41812bf1315923b0cba03371ebca99449809226425dd3bcef20e010db61abdaff549278e111d6480034bebae87 +"@smithy/util-body-length-node@npm:^3.0.0": + version: 3.0.0 + resolution: "@smithy/util-body-length-node@npm:3.0.0" + dependencies: + tslib: ^2.6.2 + checksum: da1baf4790609d3dc28c88385c7274fdf9b91a641fe3c5af22b78e18156df17bd470181348f43b2c739680936b1dafb1526158dfd817c3d9ecb71e653b4cbe3f languageName: node linkType: hard -"better-path-resolve@npm:1.0.0": - version: 1.0.0 - resolution: "better-path-resolve@npm:1.0.0" +"@smithy/util-buffer-from@npm:^2.2.0": + version: 2.2.0 + resolution: "@smithy/util-buffer-from@npm:2.2.0" dependencies: - is-windows: ^1.0.0 - checksum: 5392dbe04e7fe68b944eb37961d9dfa147aaac3ee9ee3f6e13d42e2c9fbe949e68d16e896c14ee9016fa5f8e6e53ec7fd8b5f01b50a32067a7d94ac9cfb9a050 + "@smithy/is-array-buffer": ^2.2.0 + tslib: ^2.6.2 + checksum: 424c5b7368ae5880a8f2732e298d17879a19ca925f24ca45e1c6c005f717bb15b76eb28174d308d81631ad457ea0088aab0fd3255dd42f45a535c81944ad64d3 languageName: node linkType: hard -"better-sqlite3@npm:^11.0.0": - version: 11.5.0 - resolution: "better-sqlite3@npm:11.5.0" +"@smithy/util-buffer-from@npm:^3.0.0": + version: 3.0.0 + resolution: "@smithy/util-buffer-from@npm:3.0.0" dependencies: - bindings: ^1.5.0 - node-gyp: latest - prebuild-install: ^7.1.1 - checksum: 37acef8d4272ad57fe211aa5a2e177f95443eafb794c7db6c2d0dae0a4fe4c2ef508b8b970d82f1d9744d009677d82067279f45e27d4155a5e68a578f5c5c051 + "@smithy/is-array-buffer": ^3.0.0 + tslib: ^2.6.2 + checksum: 1bfc4ab093fe98132bbc1ccd36a0b9ad75a31ed26bac4b7e9350205513a2481eb190ae44679ab4fecc5e10d367b5e6592bbfbf792671579d17d17bd7f7f233f5 languageName: node linkType: hard -"bfj@npm:^8.0.0": - version: 8.0.0 - resolution: "bfj@npm:8.0.0" +"@smithy/util-config-provider@npm:^3.0.0": + version: 3.0.0 + resolution: "@smithy/util-config-provider@npm:3.0.0" dependencies: - bluebird: ^3.7.2 - check-types: ^11.2.3 - hoopy: ^0.1.4 - jsonpath: ^1.1.1 - tryer: ^1.0.1 - checksum: f22d49cd2661a92e7526015edac0e02858a881a36438fe4e67df320dddc08cba09e197a7e128f282abc2c26127f5abb3ca8e8b7eff0737df20e5b8c4ee6273e9 + tslib: ^2.6.2 + checksum: fc0f5f57d30261cf3a6693d8e338b9d269332c478ee18d905309a769844188190caf0564855d7e84f6c61e56aa556195dda89f65e8c30791951cf4999e4a70e7 languageName: node linkType: hard -"big.js@npm:^5.2.2": - version: 5.2.2 - resolution: "big.js@npm:5.2.2" - checksum: b89b6e8419b097a8fb4ed2399a1931a68c612bce3cfd5ca8c214b2d017531191070f990598de2fc6f3f993d91c0f08aa82697717f6b3b8732c9731866d233c9e - languageName: node +"@smithy/util-defaults-mode-browser@npm:^3.0.23": + version: 3.0.25 + resolution: "@smithy/util-defaults-mode-browser@npm:3.0.25" + dependencies: + "@smithy/property-provider": ^3.1.8 + "@smithy/smithy-client": ^3.4.2 + "@smithy/types": ^3.6.0 + bowser: ^2.11.0 + tslib: ^2.6.2 + checksum: 87c4b346d753712f7fe501920c6bb9712d7ec56670e49aa5d6db40ebe0f0cfa58d9e1d27e96e40c6be1721cf81bd0b2f29c077efc3b8dece074e3a6d175fa1a4 + languageName: node linkType: hard -"bignumber.js@npm:^9.0.0": - version: 9.1.2 - resolution: "bignumber.js@npm:9.1.2" - checksum: 582c03af77ec9cb0ebd682a373ee6c66475db94a4325f92299621d544aa4bd45cb45fd60001610e94aef8ae98a0905fa538241d9638d4422d57abbeeac6fadaf +"@smithy/util-defaults-mode-node@npm:^3.0.23": + version: 3.0.25 + resolution: "@smithy/util-defaults-mode-node@npm:3.0.25" + dependencies: + "@smithy/config-resolver": ^3.0.10 + "@smithy/credential-provider-imds": ^3.2.5 + "@smithy/node-config-provider": ^3.1.9 + "@smithy/property-provider": ^3.1.8 + "@smithy/smithy-client": ^3.4.2 + "@smithy/types": ^3.6.0 + tslib: ^2.6.2 + checksum: e34c44bb5cbc8036765aa4f52e648a753b477b6653834291f7a2e0d82b7b58c1e741eac9a9a95d39b6f751c05013909c36ac0818e0015c24201af9d2e2fb0f5a languageName: node linkType: hard -"binary-extensions@npm:^2.0.0": - version: 2.3.0 - resolution: "binary-extensions@npm:2.3.0" - checksum: bcad01494e8a9283abf18c1b967af65ee79b0c6a9e6fcfafebfe91dbe6e0fc7272bafb73389e198b310516ae04f7ad17d79aacf6cb4c0d5d5202a7e2e52c7d98 +"@smithy/util-endpoints@npm:^2.1.3": + version: 2.1.4 + resolution: "@smithy/util-endpoints@npm:2.1.4" + dependencies: + "@smithy/node-config-provider": ^3.1.9 + "@smithy/types": ^3.6.0 + tslib: ^2.6.2 + checksum: 523df0a35807f3493cccaf1b76f88e14dedd3d9f29fe26a6f8c73cdfe09e57c67a1d3029cc585995b0f7fe20e07afa8b4dfa5f1d631a0c4c06c9f68075b61bad languageName: node linkType: hard -"bindings@npm:^1.5.0": - version: 1.5.0 - resolution: "bindings@npm:1.5.0" +"@smithy/util-hex-encoding@npm:^3.0.0": + version: 3.0.0 + resolution: "@smithy/util-hex-encoding@npm:3.0.0" dependencies: - file-uri-to-path: 1.0.0 - checksum: 65b6b48095717c2e6105a021a7da4ea435aa8d3d3cd085cb9e85bcb6e5773cf318c4745c3f7c504412855940b585bdf9b918236612a1c7a7942491de176f1ae7 + tslib: ^2.6.2 + checksum: dd32fd71e915825987a18bf7c0f8f0c4956d0b17a0ee71592b5563bb20e04f24dbf81d36161aac07caab3bb5e535cc609fce20aa4a38f66b457c4c6f5c7748d9 languageName: node linkType: hard -"bl@npm:^4.0.3, bl@npm:^4.1.0": - version: 4.1.0 - resolution: "bl@npm:4.1.0" +"@smithy/util-middleware@npm:^3.0.11": + version: 3.0.11 + resolution: "@smithy/util-middleware@npm:3.0.11" dependencies: - buffer: ^5.5.0 - inherits: ^2.0.4 - readable-stream: ^3.4.0 - checksum: 9e8521fa7e83aa9427c6f8ccdcba6e8167ef30cc9a22df26effcc5ab682ef91d2cbc23a239f945d099289e4bbcfae7a192e9c28c84c6202e710a0dfec3722662 + "@smithy/types": ^3.7.2 + tslib: ^2.6.2 + checksum: 74079b9b10af88699c1cbdfd8f8bf8750899c9a36076c256997c3eafa18993178a05ef5fae83cfcdecf63c0e89c23fdd4fea9893419d1d481deecf580292fc33 languageName: node linkType: hard -"bluebird@npm:^3.7.2": - version: 3.7.2 - resolution: "bluebird@npm:3.7.2" - checksum: 869417503c722e7dc54ca46715f70e15f4d9c602a423a02c825570862d12935be59ed9c7ba34a9b31f186c017c23cac6b54e35446f8353059c101da73eac22ef +"@smithy/util-middleware@npm:^3.0.7, @smithy/util-middleware@npm:^3.0.8": + version: 3.0.8 + resolution: "@smithy/util-middleware@npm:3.0.8" + dependencies: + "@smithy/types": ^3.6.0 + tslib: ^2.6.2 + checksum: 6933c012f47c8b547b4986133a9dc2b264e9d71def155c4a9bce1bd1afbd73cb8e936c50ebc80190fc1d5bb26aee73ba012c567766dcd8a13c3d06bef841ab3c languageName: node linkType: hard -"bn.js@npm:^4.0.0, bn.js@npm:^4.1.0, bn.js@npm:^4.11.9": - version: 4.12.0 - resolution: "bn.js@npm:4.12.0" - checksum: 39afb4f15f4ea537b55eaf1446c896af28ac948fdcf47171961475724d1bb65118cca49fa6e3d67706e4790955ec0e74de584e45c8f1ef89f46c812bee5b5a12 +"@smithy/util-retry@npm:^3.0.7, @smithy/util-retry@npm:^3.0.8": + version: 3.0.8 + resolution: "@smithy/util-retry@npm:3.0.8" + dependencies: + "@smithy/service-error-classification": ^3.0.8 + "@smithy/types": ^3.6.0 + tslib: ^2.6.2 + checksum: 5c0c63beb867828e6fd54f5fd83de412180df02de42f678df0f5a4412d10bfb5a74c22aa83a6f364c8292b5c82be94fe7af35d1ebe4e50a2c05946520f2ea870 languageName: node linkType: hard -"bn.js@npm:^5.2.1": - version: 5.2.1 - resolution: "bn.js@npm:5.2.1" - checksum: 3dd8c8d38055fedfa95c1d5fc3c99f8dd547b36287b37768db0abab3c239711f88ff58d18d155dd8ad902b0b0cee973747b7ae20ea12a09473272b0201c9edd3 +"@smithy/util-stream@npm:^3.1.9, @smithy/util-stream@npm:^3.2.1": + version: 3.2.1 + resolution: "@smithy/util-stream@npm:3.2.1" + dependencies: + "@smithy/fetch-http-handler": ^4.0.0 + "@smithy/node-http-handler": ^3.2.5 + "@smithy/types": ^3.6.0 + "@smithy/util-base64": ^3.0.0 + "@smithy/util-buffer-from": ^3.0.0 + "@smithy/util-hex-encoding": ^3.0.0 + "@smithy/util-utf8": ^3.0.0 + tslib: ^2.6.2 + checksum: 3dc2b005d48a2e5ccb0761e7a7869f8af24d34a93eaa34f0586ba42fe79f13d48efb676e4aacbf02a54f1a225eb851d2c706c016f5f9d0b4fc127d8be69f5d90 languageName: node linkType: hard -"body-parser@npm:1.20.3": - version: 1.20.3 - resolution: "body-parser@npm:1.20.3" +"@smithy/util-stream@npm:^3.3.2": + version: 3.3.2 + resolution: "@smithy/util-stream@npm:3.3.2" dependencies: - bytes: 3.1.2 - content-type: ~1.0.5 - debug: 2.6.9 - depd: 2.0.0 - destroy: 1.2.0 - http-errors: 2.0.0 - iconv-lite: 0.4.24 - on-finished: 2.4.1 - qs: 6.13.0 - raw-body: 2.5.2 - type-is: ~1.6.18 - unpipe: 1.0.0 - checksum: 1a35c59a6be8d852b00946330141c4f142c6af0f970faa87f10ad74f1ee7118078056706a05ae3093c54dabca9cd3770fa62a170a85801da1a4324f04381167d + "@smithy/fetch-http-handler": ^4.1.2 + "@smithy/node-http-handler": ^3.3.2 + "@smithy/types": ^3.7.2 + "@smithy/util-base64": ^3.0.0 + "@smithy/util-buffer-from": ^3.0.0 + "@smithy/util-hex-encoding": ^3.0.0 + "@smithy/util-utf8": ^3.0.0 + tslib: ^2.6.2 + checksum: def72c8102a2b3ae50d17f13eedc5622332c4ad7adf6109f69a73a9cc2e6c2543c08e05150179575cca01951d693d10aceef1ef6a42bef8025656a6676327186 languageName: node linkType: hard -"bonjour-service@npm:^1.0.11, bonjour-service@npm:^1.2.1": - version: 1.2.1 - resolution: "bonjour-service@npm:1.2.1" +"@smithy/util-uri-escape@npm:^3.0.0": + version: 3.0.0 + resolution: "@smithy/util-uri-escape@npm:3.0.0" dependencies: - fast-deep-equal: ^3.1.3 - multicast-dns: ^7.2.5 - checksum: b65b3e6e3a07e97f2da5806afb76f3946d5a6426b72e849a0236dc3c9d3612fb8c5359ebade4be7eb63f74a37670c53a53be2ff17f4f709811fda77f600eb25b + tslib: ^2.6.2 + checksum: d7ee01c978e2b08d0a89a3b678f5d5e5d5bb4ab4ab85567a238b1a6195dff1bdaf9ae62497e7f32ff5121b3dc007c370bcb6e8ef79b01fe5acdec5bbce8c7ce4 languageName: node linkType: hard -"boolbase@npm:^1.0.0": - version: 1.0.0 - resolution: "boolbase@npm:1.0.0" - checksum: 3e25c80ef626c3a3487c73dbfc70ac322ec830666c9ad915d11b701142fab25ec1e63eff2c450c74347acfd2de854ccde865cd79ef4db1683f7c7b046ea43bb0 +"@smithy/util-utf8@npm:^2.0.0": + version: 2.3.0 + resolution: "@smithy/util-utf8@npm:2.3.0" + dependencies: + "@smithy/util-buffer-from": ^2.2.0 + tslib: ^2.6.2 + checksum: 00e55d4b4e37d48be0eef3599082402b933c52a1407fed7e8e8ad76d94d81a0b30b8bfaf2047c59d9c3af31e5f20e7a8c959cb7ae270f894255e05a2229964f0 languageName: node linkType: hard -"boolean@npm:^3.0.1": - version: 3.2.0 - resolution: "boolean@npm:3.2.0" - checksum: fb29535b8bf710ef45279677a86d14f5185d604557204abd2ca5fa3fb2a5c80e04d695c8dbf13ab269991977a79bb6c04b048220a6b2a3849853faa94f4a7d77 +"@smithy/util-utf8@npm:^3.0.0": + version: 3.0.0 + resolution: "@smithy/util-utf8@npm:3.0.0" + dependencies: + "@smithy/util-buffer-from": ^3.0.0 + tslib: ^2.6.2 + checksum: d97be1748963263a1161ba80417d82318b977b38542f3fdf0379b0162461188be680e5bfb66a89d65652f0fad6ecf2ab23a43205979216e50602488f73434da3 languageName: node linkType: hard -"bowser@npm:^2.11.0": - version: 2.11.0 - resolution: "bowser@npm:2.11.0" - checksum: 29c3f01f22e703fa6644fc3b684307442df4240b6e10f6cfe1b61c6ca5721073189ca97cdeedb376081148c8518e33b1d818a57f781d70b0b70e1f31fb48814f +"@smithy/util-waiter@npm:^3.1.6": + version: 3.1.7 + resolution: "@smithy/util-waiter@npm:3.1.7" + dependencies: + "@smithy/abort-controller": ^3.1.6 + "@smithy/types": ^3.6.0 + tslib: ^2.6.2 + checksum: 190d992898d0c7d776c806657703c1ebd0ba2c24f4042ed0251dc8653799aefe12848a0445ee16cdbb05b76b5c81fc803b271957954aa614aaccb99dd3338caa languageName: node linkType: hard -"brace-expansion@npm:^1.1.7": - version: 1.1.11 - resolution: "brace-expansion@npm:1.1.11" +"@snyk/github-codeowners@npm:1.1.0": + version: 1.1.0 + resolution: "@snyk/github-codeowners@npm:1.1.0" dependencies: - balanced-match: ^1.0.0 - concat-map: 0.0.1 - checksum: faf34a7bb0c3fcf4b59c7808bc5d2a96a40988addf2e7e09dfbb67a2251800e0d14cd2bfc1aa79174f2f5095c54ff27f46fb1289fe2d77dac755b5eb3434cc07 + commander: ^4.1.1 + ignore: ^5.1.8 + p-map: ^4.0.0 + bin: + github-codeowners: dist/cli.js + checksum: 133f867fa968f96229ebce724d8aedaa124218e20add96a3a7d39ea45e52007fee50cc90c39e406c9e662483d003da9326e00dc4d612afa5c2ca069d1cdab9d7 languageName: node linkType: hard -"brace-expansion@npm:^2.0.1": - version: 2.0.1 - resolution: "brace-expansion@npm:2.0.1" - dependencies: - balanced-match: ^1.0.0 - checksum: a61e7cd2e8a8505e9f0036b3b6108ba5e926b4b55089eeb5550cd04a471fe216c96d4fe7e4c7f995c728c554ae20ddfc4244cad10aef255e72b62930afd233d1 +"@spotify/eslint-config-base@npm:^15.0.0": + version: 15.0.0 + resolution: "@spotify/eslint-config-base@npm:15.0.0" + peerDependencies: + eslint: ">=7.x" + checksum: 265a4d807b5236030466a3a8373f41e51a9b4939b450d47ed2cb4704485004a5d64b2f9e024e865b4f5eea61ab6bbe439442e4ca2ac06e52a3b5c7e94c2d6b27 languageName: node linkType: hard -"braces@npm:^3.0.3, braces@npm:~3.0.2": - version: 3.0.3 - resolution: "braces@npm:3.0.3" - dependencies: - fill-range: ^7.1.1 - checksum: b95aa0b3bd909f6cd1720ffcf031aeaf46154dd88b4da01f9a1d3f7ea866a79eba76a6d01cbc3c422b2ee5cdc39a4f02491058d5df0d7bf6e6a162a832df1f69 +"@spotify/eslint-config-react@npm:^15.0.0": + version: 15.0.0 + resolution: "@spotify/eslint-config-react@npm:15.0.0" + peerDependencies: + eslint: ">=8.x" + eslint-plugin-jsx-a11y: 6.x + eslint-plugin-react: ">=7.7.0 <8" + eslint-plugin-react-hooks: ^4.0.0 + checksum: 42e16f63d51b2230d2e4eba6524d2d9278d480827c5d2ab32f96253bafd4d8ceb87c37d8429601e36642ff30c86b92011ad4efd26c83db4037478ad118497cce languageName: node linkType: hard -"brorand@npm:^1.0.1, brorand@npm:^1.1.0": - version: 1.1.0 - resolution: "brorand@npm:1.1.0" - checksum: 8a05c9f3c4b46572dec6ef71012b1946db6cae8c7bb60ccd4b7dd5a84655db49fe043ecc6272e7ef1f69dc53d6730b9e2a3a03a8310509a3d797a618cbee52be +"@spotify/eslint-config-typescript@npm:^15.0.0": + version: 15.0.0 + resolution: "@spotify/eslint-config-typescript@npm:15.0.0" + peerDependencies: + "@typescript-eslint/eslint-plugin": ">=5" + "@typescript-eslint/parser": ">=5" + eslint: ">=8.x" + checksum: d30d07e1e2e0e18cc583a72ca74b5fdb80ee26e6529de26e1e85d1416ca5396c942efaccc2613287365c7ac3659378b0ba0cdda3df25c7e5cdbd7317f1cbe885 languageName: node linkType: hard -"browserify-aes@npm:^1.0.4, browserify-aes@npm:^1.2.0": - version: 1.2.0 - resolution: "browserify-aes@npm:1.2.0" - dependencies: - buffer-xor: ^1.0.3 - cipher-base: ^1.0.0 - create-hash: ^1.1.0 - evp_bytestokey: ^1.0.3 - inherits: ^2.0.1 - safe-buffer: ^5.0.1 - checksum: 4a17c3eb55a2aa61c934c286f34921933086bf6d67f02d4adb09fcc6f2fc93977b47d9d884c25619144fccd47b3b3a399e1ad8b3ff5a346be47270114bcf7104 +"@spotify/prettier-config@npm:^12.0.0": + version: 12.0.0 + resolution: "@spotify/prettier-config@npm:12.0.0" + peerDependencies: + prettier: 2.x + checksum: 04732b96af895269bb8a988ba309e80bd7b87c785837e06f72ff938e8895c5a3a3211fa37b54c6a2b502e88587a437c2be3ccb486a84aff02c2f6fb4582a4a97 languageName: node linkType: hard -"browserify-cipher@npm:^1.0.1": - version: 1.0.1 - resolution: "browserify-cipher@npm:1.0.1" +"@stoplight/better-ajv-errors@npm:1.0.3": + version: 1.0.3 + resolution: "@stoplight/better-ajv-errors@npm:1.0.3" dependencies: - browserify-aes: ^1.0.4 - browserify-des: ^1.0.0 - evp_bytestokey: ^1.0.0 - checksum: 2d8500acf1ee535e6bebe808f7a20e4c3a9e2ed1a6885fff1facbfd201ac013ef030422bec65ca9ece8ffe82b03ca580421463f9c45af6c8415fd629f4118c13 + jsonpointer: ^5.0.0 + leven: ^3.1.0 + peerDependencies: + ajv: ">=8" + checksum: 642fe5636a72a86de72e4ffc7bbf07499fc09d8446b386f31d3667b07dd1849d921c38a74c109a9e2554d405b6e90dc150728a0c455bf93f158ff139e0538ddd languageName: node linkType: hard -"browserify-des@npm:^1.0.0": - version: 1.0.2 - resolution: "browserify-des@npm:1.0.2" +"@stoplight/json-ref-readers@npm:1.2.2, @stoplight/json-ref-readers@npm:^1.2.2": + version: 1.2.2 + resolution: "@stoplight/json-ref-readers@npm:1.2.2" dependencies: - cipher-base: ^1.0.1 - des.js: ^1.0.0 - inherits: ^2.0.1 - safe-buffer: ^5.1.2 - checksum: b15a3e358a1d78a3b62ddc06c845d02afde6fc826dab23f1b9c016e643e7b1fda41de628d2110b712f6a44fb10cbc1800bc6872a03ddd363fb50768e010395b7 - languageName: node - linkType: hard - -"browserify-rsa@npm:^4.0.0, browserify-rsa@npm:^4.1.0": - version: 4.1.1 - resolution: "browserify-rsa@npm:4.1.1" - dependencies: - bn.js: ^5.2.1 - randombytes: ^2.1.0 - safe-buffer: ^5.2.1 - checksum: 2628508646331791c29312bbf274c076a237437a17178ea9bdc75c577fb4164a0da0b137deaadf6ade623701332377c5c2ceb0ff6f991c744a576e790ec95852 - languageName: node - linkType: hard - -"browserify-sign@npm:^4.2.3": - version: 4.2.3 - resolution: "browserify-sign@npm:4.2.3" - dependencies: - bn.js: ^5.2.1 - browserify-rsa: ^4.1.0 - create-hash: ^1.2.0 - create-hmac: ^1.1.7 - elliptic: ^6.5.5 - hash-base: ~3.0 - inherits: ^2.0.4 - parse-asn1: ^5.1.7 - readable-stream: ^2.3.8 - safe-buffer: ^5.2.1 - checksum: 403a8061d229ae31266670345b4a7c00051266761d2c9bbeb68b1a9bcb05f68143b16110cf23a171a5d6716396a1f41296282b3e73eeec0a1871c77f0ff4ee6b + node-fetch: ^2.6.0 + tslib: ^1.14.1 + checksum: 31b0e78b119f7afd7dd84a4fbb0c4aaceeb6e889179e785ddb9880ee548d4d161dce5743451ef6dad4b7a902d9f0711909c87b63ad794bede234a144bcf2b2b4 languageName: node linkType: hard -"browserify-zlib@npm:^0.2.0": - version: 0.2.0 - resolution: "browserify-zlib@npm:0.2.0" +"@stoplight/json-ref-resolver@npm:^3.1.5, @stoplight/json-ref-resolver@npm:~3.1.6": + version: 3.1.6 + resolution: "@stoplight/json-ref-resolver@npm:3.1.6" dependencies: - pako: ~1.0.5 - checksum: 5cd9d6a665190fedb4a97dfbad8dabc8698d8a507298a03f42c734e96d58ca35d3c7d4085e283440bbca1cd1938cff85031728079bedb3345310c58ab1ec92d6 + "@stoplight/json": ^3.21.0 + "@stoplight/path": ^1.3.2 + "@stoplight/types": ^12.3.0 || ^13.0.0 + "@types/urijs": ^1.19.19 + dependency-graph: ~0.11.0 + fast-memoize: ^2.5.2 + immer: ^9.0.6 + lodash: ^4.17.21 + tslib: ^2.6.0 + urijs: ^1.19.11 + checksum: 57c944cc8cee51b18fd8165aae7431eddf3b6ca96f2de7a264d890f18a869e5abb7750d48a77455ee1c688ac440efa4115bc8e912efce7c83140834bae49879e languageName: node linkType: hard -"browserslist@npm:^4.0.0, browserslist@npm:^4.18.1, browserslist@npm:^4.21.10, browserslist@npm:^4.21.4, browserslist@npm:^4.23.3, browserslist@npm:^4.24.0": - version: 4.24.2 - resolution: "browserslist@npm:4.24.2" +"@stoplight/json@npm:3.21.0": + version: 3.21.0 + resolution: "@stoplight/json@npm:3.21.0" dependencies: - caniuse-lite: ^1.0.30001669 - electron-to-chromium: ^1.5.41 - node-releases: ^2.0.18 - update-browserslist-db: ^1.1.1 - bin: - browserslist: cli.js - checksum: cf64085f12132d38638f38937a255edb82c7551b164a98577b055dd79719187a816112f7b97b9739e400c4954cd66479c0d7a843cb816e346f4795dc24fd5d97 + "@stoplight/ordered-object-literal": ^1.0.3 + "@stoplight/path": ^1.3.2 + "@stoplight/types": ^13.6.0 + jsonc-parser: ~2.2.1 + lodash: ^4.17.21 + safe-stable-stringify: ^1.1 + checksum: 16fe56a6804cd47837bd82d85a8500c4226669558f3feda55d8fb0cd615ca2261622963700f04f049cf30a3a9764eb3c861516003d948743b6ae85dbbabf8a59 languageName: node linkType: hard -"bser@npm:2.1.1": - version: 2.1.1 - resolution: "bser@npm:2.1.1" +"@stoplight/json@npm:^3.17.0, @stoplight/json@npm:^3.17.1, @stoplight/json@npm:^3.21.0, @stoplight/json@npm:~3.21.0": + version: 3.21.7 + resolution: "@stoplight/json@npm:3.21.7" dependencies: - node-int64: ^0.4.0 - checksum: 9ba4dc58ce86300c862bffc3ae91f00b2a03b01ee07f3564beeeaf82aa243b8b03ba53f123b0b842c190d4399b94697970c8e7cf7b1ea44b61aa28c3526a4449 + "@stoplight/ordered-object-literal": ^1.0.3 + "@stoplight/path": ^1.3.2 + "@stoplight/types": ^13.6.0 + jsonc-parser: ~2.2.1 + lodash: ^4.17.21 + safe-stable-stringify: ^1.1 + checksum: 5b0cd67e91e8f4cfac7ff0fe37c07e203611f429e8af7fce51cacb82f9c97150a3fa3aeda41daa9e65bc42d217b630bf01a8bf1f6db12b047079b0da9d7cd9af languageName: node linkType: hard -"btoa-lite@npm:^1.0.0": - version: 1.0.0 - resolution: "btoa-lite@npm:1.0.0" - checksum: c2d61993b801f8e35a96f20692a45459c753d9baa29d86d1343e714f8d6bbe7069f1a20a5ae868488f3fb137d5bd0c560f6fbbc90b5a71050919d2d2c97c0475 +"@stoplight/ordered-object-literal@npm:^1.0.3, @stoplight/ordered-object-literal@npm:^1.0.5": + version: 1.0.5 + resolution: "@stoplight/ordered-object-literal@npm:1.0.5" + checksum: 84fe385ed742c5298fd5bee3f95366bfe17a2b99ed52f9b323180756d3495078dfb3bf7e5f49f3c8dee7b79f2e8358b38fe4977b7b6475f0094765160d716bb5 languageName: node linkType: hard -"btoa@npm:^1.2.1": - version: 1.2.1 - resolution: "btoa@npm:1.2.1" - bin: - btoa: bin/btoa.js - checksum: afbf004fb1b1d530e053ffa66ef5bd3878b101c59d808ac947fcff96810b4452abba2b54be687adadea2ba9efc7af48b04228742789bf824ef93f103767e690c +"@stoplight/path@npm:1.3.2, @stoplight/path@npm:^1.3.2": + version: 1.3.2 + resolution: "@stoplight/path@npm:1.3.2" + checksum: 8a1143cef9edcf9fd8cb24ca3f250693d475ce1f635f0dc95e5b045aad303fbf4d702c939f0c4ed8d28a04208d1aa4471fb10912ef1e3a94a9e6810878a7cfbb languageName: node linkType: hard -"buffer-crc32@npm:^1.0.0": - version: 1.0.0 - resolution: "buffer-crc32@npm:1.0.0" - checksum: bc114c0e02fe621249e0b5093c70e6f12d4c2b1d8ddaf3b1b7bbe3333466700100e6b1ebdc12c050d0db845bc582c4fce8c293da487cc483f97eea027c480b23 +"@stoplight/spectral-core@npm:^1.15.1, @stoplight/spectral-core@npm:^1.18.0, @stoplight/spectral-core@npm:^1.7.0, @stoplight/spectral-core@npm:^1.8.0, @stoplight/spectral-core@npm:^1.8.1": + version: 1.19.1 + resolution: "@stoplight/spectral-core@npm:1.19.1" + dependencies: + "@stoplight/better-ajv-errors": 1.0.3 + "@stoplight/json": ~3.21.0 + "@stoplight/path": 1.3.2 + "@stoplight/spectral-parsers": ^1.0.0 + "@stoplight/spectral-ref-resolver": ^1.0.4 + "@stoplight/spectral-runtime": ^1.0.0 + "@stoplight/types": ~13.6.0 + "@types/es-aggregate-error": ^1.0.2 + "@types/json-schema": ^7.0.11 + ajv: ^8.17.1 + ajv-errors: ~3.0.0 + ajv-formats: ~2.1.0 + es-aggregate-error: ^1.0.7 + jsonpath-plus: 7.1.0 + lodash: ~4.17.21 + lodash.topath: ^4.5.2 + minimatch: 3.1.2 + nimma: 0.2.2 + pony-cause: ^1.0.0 + simple-eval: 1.0.0 + tslib: ^2.3.0 + checksum: 35495c3f72eacd02d74b0913ad5a8cdad7573ab06c08cc9f6b44abd68e0c8b2229df9efee11cfe8a47ffeea802ce2b3bb17e378dffe5eab47504f70abd8b492c languageName: node linkType: hard -"buffer-crc32@npm:~0.2.3": - version: 0.2.13 - resolution: "buffer-crc32@npm:0.2.13" - checksum: 06252347ae6daca3453b94e4b2f1d3754a3b146a111d81c68924c22d91889a40623264e95e67955b1cb4a68cbedf317abeabb5140a9766ed248973096db5ce1c +"@stoplight/spectral-core@npm:^1.18.3": + version: 1.19.4 + resolution: "@stoplight/spectral-core@npm:1.19.4" + dependencies: + "@stoplight/better-ajv-errors": 1.0.3 + "@stoplight/json": ~3.21.0 + "@stoplight/path": 1.3.2 + "@stoplight/spectral-parsers": ^1.0.0 + "@stoplight/spectral-ref-resolver": ^1.0.4 + "@stoplight/spectral-runtime": ^1.1.2 + "@stoplight/types": ~13.6.0 + "@types/es-aggregate-error": ^1.0.2 + "@types/json-schema": ^7.0.11 + ajv: ^8.17.1 + ajv-errors: ~3.0.0 + ajv-formats: ~2.1.0 + es-aggregate-error: ^1.0.7 + jsonpath-plus: 10.2.0 + lodash: ~4.17.21 + lodash.topath: ^4.5.2 + minimatch: 3.1.2 + nimma: 0.2.3 + pony-cause: ^1.1.1 + simple-eval: 1.0.1 + tslib: ^2.8.1 + checksum: c9efb0892a80f66f58309e297e7cb27580847403a5625f95b0332dbba4e3fe360f04aa60339d61824a025e3ee6296c2f73e1ca7119b783f9349f21d971b73dd8 languageName: node linkType: hard -"buffer-equal-constant-time@npm:1.0.1": - version: 1.0.1 - resolution: "buffer-equal-constant-time@npm:1.0.1" - checksum: 80bb945f5d782a56f374b292770901065bad21420e34936ecbe949e57724b4a13874f735850dd1cc61f078773c4fb5493a41391e7bda40d1fa388d6bd80daaab +"@stoplight/spectral-formats@npm:^1.2.0, @stoplight/spectral-formats@npm:^1.7.0": + version: 1.7.0 + resolution: "@stoplight/spectral-formats@npm:1.7.0" + dependencies: + "@stoplight/json": ^3.17.0 + "@stoplight/spectral-core": ^1.8.0 + "@types/json-schema": ^7.0.7 + tslib: ^2.3.1 + checksum: eccc2a6c099c7cbdd7c0b6c48b7fbfa334cdc2323958790496aa0295af27ef42ccae8b40e05c742aa3431da724b8d494c837af1af60f86d05189853b95b7c2c9 languageName: node linkType: hard -"buffer-from@npm:^1.0.0": - version: 1.1.2 - resolution: "buffer-from@npm:1.1.2" - checksum: 0448524a562b37d4d7ed9efd91685a5b77a50672c556ea254ac9a6d30e3403a517d8981f10e565db24e8339413b43c97ca2951f10e399c6125a0d8911f5679bb +"@stoplight/spectral-formatters@npm:^1.1.0": + version: 1.4.0 + resolution: "@stoplight/spectral-formatters@npm:1.4.0" + dependencies: + "@stoplight/path": ^1.3.2 + "@stoplight/spectral-core": ^1.15.1 + "@stoplight/spectral-runtime": ^1.1.0 + "@stoplight/types": ^13.15.0 + "@types/markdown-escape": ^1.1.3 + chalk: 4.1.2 + cliui: 7.0.4 + lodash: ^4.17.21 + markdown-escape: ^2.0.0 + node-sarif-builder: ^2.0.3 + strip-ansi: 6.0 + text-table: ^0.2.0 + tslib: ^2.5.0 + checksum: fd8b0c96df54b1afa1e2c325edac6a95df0ce4c9a14e3cd46786d229259417eeec7795e7c7ccf4e896a343c5dbd06e62f8692214985acd786d19485bd512958d languageName: node linkType: hard -"buffer-xor@npm:^1.0.3": - version: 1.0.3 - resolution: "buffer-xor@npm:1.0.3" - checksum: 10c520df29d62fa6e785e2800e586a20fc4f6dfad84bcdbd12e1e8a83856de1cb75c7ebd7abe6d036bbfab738a6cf18a3ae9c8e5a2e2eb3167ca7399ce65373a +"@stoplight/spectral-functions@npm:^1.5.1, @stoplight/spectral-functions@npm:^1.6.1, @stoplight/spectral-functions@npm:^1.7.2": + version: 1.9.0 + resolution: "@stoplight/spectral-functions@npm:1.9.0" + dependencies: + "@stoplight/better-ajv-errors": 1.0.3 + "@stoplight/json": ^3.17.1 + "@stoplight/spectral-core": ^1.7.0 + "@stoplight/spectral-formats": ^1.7.0 + "@stoplight/spectral-runtime": ^1.1.0 + ajv: ^8.17.1 + ajv-draft-04: ~1.0.0 + ajv-errors: ~3.0.0 + ajv-formats: ~2.1.0 + lodash: ~4.17.21 + tslib: ^2.3.0 + checksum: 278dc6e84b3b4fdef73f6b2b2cc7071140ade604dbc938b3946203253f37c0977659a609dc148df6f73668ddcb84a809e279643a12fd3f4372e72e97973f0058 languageName: node linkType: hard -"buffer@npm:^4.3.0": - version: 4.9.2 - resolution: "buffer@npm:4.9.2" +"@stoplight/spectral-parsers@npm:^1.0.0, @stoplight/spectral-parsers@npm:^1.0.2": + version: 1.0.4 + resolution: "@stoplight/spectral-parsers@npm:1.0.4" dependencies: - base64-js: ^1.0.2 - ieee754: ^1.1.4 - isarray: ^1.0.0 - checksum: 8801bc1ba08539f3be70eee307a8b9db3d40f6afbfd3cf623ab7ef41dffff1d0a31de0addbe1e66e0ca5f7193eeb667bfb1ecad3647f8f1b0750de07c13295c3 + "@stoplight/json": ~3.21.0 + "@stoplight/types": ^14.1.1 + "@stoplight/yaml": ~4.3.0 + tslib: ^2.3.1 + checksum: ca88183661651d99b40da254316fec062c219253ea3054151b9379e7c492121cdeef49a2d1ac08cd89b2f89f7d16dbc4ecf9da6d7a7539979ac6418991fe804a languageName: node linkType: hard -"buffer@npm:^5.5.0": - version: 5.7.1 - resolution: "buffer@npm:5.7.1" +"@stoplight/spectral-ref-resolver@npm:^1.0.3": + version: 1.0.5 + resolution: "@stoplight/spectral-ref-resolver@npm:1.0.5" dependencies: - base64-js: ^1.3.1 - ieee754: ^1.1.13 - checksum: e2cf8429e1c4c7b8cbd30834ac09bd61da46ce35f5c22a78e6c2f04497d6d25541b16881e30a019c6fd3154150650ccee27a308eff3e26229d788bbdeb08ab84 + "@stoplight/json-ref-readers": 1.2.2 + "@stoplight/json-ref-resolver": ~3.1.6 + "@stoplight/spectral-runtime": ^1.1.2 + dependency-graph: 0.11.0 + tslib: ^2.8.1 + checksum: 054ab74e9ed9b12b7b6d6826c8b89e7a3d46632855eca1bd454930a1e09e0d4423fda219931a021eb50098d13f22823178b0b2fae90eac08cd6b600f447e1cf2 languageName: node linkType: hard -"buffer@npm:^6.0.3": - version: 6.0.3 - resolution: "buffer@npm:6.0.3" +"@stoplight/spectral-ref-resolver@npm:^1.0.4": + version: 1.0.4 + resolution: "@stoplight/spectral-ref-resolver@npm:1.0.4" dependencies: - base64-js: ^1.3.1 - ieee754: ^1.2.1 - checksum: 5ad23293d9a731e4318e420025800b42bf0d264004c0286c8cc010af7a270c7a0f6522e84f54b9ad65cbd6db20b8badbfd8d2ebf4f80fa03dab093b89e68c3f9 + "@stoplight/json-ref-readers": 1.2.2 + "@stoplight/json-ref-resolver": ~3.1.6 + "@stoplight/spectral-runtime": ^1.1.2 + dependency-graph: 0.11.0 + tslib: ^2.3.1 + checksum: 1e9b2e211d2724e0bab7d817a5128f7b6cab9f0f5281d07223ace1d541a51a0eb3901b9f7b02d4b0484df1cb2a3f7239ec33a974321438d3d08ce7996fd6fcc4 languageName: node linkType: hard -"buildcheck@npm:~0.0.6": - version: 0.0.6 - resolution: "buildcheck@npm:0.0.6" - checksum: ad61759dc98d62e931df2c9f54ccac7b522e600c6e13bdcfdc2c9a872a818648c87765ee209c850f022174da4dd7c6a450c00357c5391705d26b9c5807c2a076 - languageName: node - linkType: hard - -"builtin-status-codes@npm:^3.0.0": - version: 3.0.0 - resolution: "builtin-status-codes@npm:3.0.0" - checksum: 1119429cf4b0d57bf76b248ad6f529167d343156ebbcc4d4e4ad600484f6bc63002595cbb61b67ad03ce55cd1d3c4711c03bbf198bf24653b8392420482f3773 +"@stoplight/spectral-rulesets@npm:^1.18.0": + version: 1.20.2 + resolution: "@stoplight/spectral-rulesets@npm:1.20.2" + dependencies: + "@asyncapi/specs": ^4.1.0 + "@stoplight/better-ajv-errors": 1.0.3 + "@stoplight/json": ^3.17.0 + "@stoplight/spectral-core": ^1.8.1 + "@stoplight/spectral-formats": ^1.7.0 + "@stoplight/spectral-functions": ^1.5.1 + "@stoplight/spectral-runtime": ^1.1.1 + "@stoplight/types": ^13.6.0 + "@types/json-schema": ^7.0.7 + ajv: ^8.17.1 + ajv-formats: ~2.1.0 + json-schema-traverse: ^1.0.0 + leven: 3.1.0 + lodash: ~4.17.21 + tslib: ^2.3.0 + checksum: 53b8515864f7132cd727073886adbf61fcbe39543ddf6d975799c75d9ef13d91f3940d5585c81c72da3c94365fd735d8935e885a3ac388c67d03a943af37977f languageName: node linkType: hard -"bundle-name@npm:^4.1.0": - version: 4.1.0 - resolution: "bundle-name@npm:4.1.0" +"@stoplight/spectral-runtime@npm:^1.0.0, @stoplight/spectral-runtime@npm:^1.1.0, @stoplight/spectral-runtime@npm:^1.1.1, @stoplight/spectral-runtime@npm:^1.1.2": + version: 1.1.2 + resolution: "@stoplight/spectral-runtime@npm:1.1.2" dependencies: - run-applescript: ^7.0.0 - checksum: 1d966c8d2dbf4d9d394e53b724ac756c2414c45c01340b37743621f59cc565a435024b394ddcb62b9b335d1c9a31f4640eb648c3fec7f97ee74dc0694c9beb6c + "@stoplight/json": ^3.17.0 + "@stoplight/path": ^1.3.2 + "@stoplight/types": ^12.3.0 + abort-controller: ^3.0.0 + lodash: ^4.17.21 + node-fetch: ^2.6.7 + tslib: ^2.3.1 + checksum: 35964a38f82384e6e0158988173a50ab7f473a2ed6e942073de023bd28fb696b5b913336a84d016b046346294be9cfa3a88c6a908c2622c0ceb36f16ca76e084 languageName: node linkType: hard -"byline@npm:^5.0.0": - version: 5.0.0 - resolution: "byline@npm:5.0.0" - checksum: 737ca83e8eda2976728dae62e68bc733aea095fab08db4c6f12d3cee3cf45b6f97dce45d1f6b6ff9c2c947736d10074985b4425b31ce04afa1985a4ef3d334a7 +"@stoplight/types@npm:^12.3.0": + version: 12.5.0 + resolution: "@stoplight/types@npm:12.5.0" + dependencies: + "@types/json-schema": ^7.0.4 + utility-types: ^3.10.0 + checksum: fe4a09df6e1c2f0cdb53f474b180cc7b8184e814e1ac4427d199642f10958335f597060530a908c0e5800ba2569d077afe124a51deaee466255ce942e1e03941 languageName: node linkType: hard -"bytes@npm:3.0.0": - version: 3.0.0 - resolution: "bytes@npm:3.0.0" - checksum: a2b386dd8188849a5325f58eef69c3b73c51801c08ffc6963eddc9be244089ba32d19347caf6d145c86f315ae1b1fc7061a32b0c1aa6379e6a719090287ed101 +"@stoplight/types@npm:^12.3.0 || ^13.0.0, @stoplight/types@npm:^13.12.0, @stoplight/types@npm:^13.15.0, @stoplight/types@npm:^13.6.0": + version: 13.20.0 + resolution: "@stoplight/types@npm:13.20.0" + dependencies: + "@types/json-schema": ^7.0.4 + utility-types: ^3.10.0 + checksum: b4c7ee22a8d4377aa9b2f901887c17b4a27d1009b2b9348962b2c6a72100ca954d11293a6dd2de01920e8fdc589e31b20ad84421eb0bf5edd9aeef5b5810f04b languageName: node linkType: hard -"bytes@npm:3.1.2": - version: 3.1.2 - resolution: "bytes@npm:3.1.2" - checksum: e4bcd3948d289c5127591fbedf10c0b639ccbf00243504e4e127374a15c3bc8eed0d28d4aaab08ff6f1cf2abc0cce6ba3085ed32f4f90e82a5683ce0014e1b6e +"@stoplight/types@npm:^14.0.0, @stoplight/types@npm:^14.1.1": + version: 14.1.1 + resolution: "@stoplight/types@npm:14.1.1" + dependencies: + "@types/json-schema": ^7.0.4 + utility-types: ^3.10.0 + checksum: 1da2e683e88afe2f72c3b3af341537bc9bac153d224f65744ca60d44eade93609ce91172064ae27093e1ebfa7bcbf05fb232a1910d83b2aee5b1eed4bb726200 languageName: node linkType: hard -"cacache@npm:^16.1.0": - version: 16.1.3 - resolution: "cacache@npm:16.1.3" +"@stoplight/types@npm:~13.6.0": + version: 13.6.0 + resolution: "@stoplight/types@npm:13.6.0" dependencies: - "@npmcli/fs": ^2.1.0 - "@npmcli/move-file": ^2.0.0 - chownr: ^2.0.0 - fs-minipass: ^2.1.0 - glob: ^8.0.1 - infer-owner: ^1.0.4 - lru-cache: ^7.7.1 - minipass: ^3.1.6 - minipass-collect: ^1.0.2 - minipass-flush: ^1.0.5 - minipass-pipeline: ^1.2.4 - mkdirp: ^1.0.4 - p-map: ^4.0.0 - promise-inflight: ^1.0.1 - rimraf: ^3.0.2 - ssri: ^9.0.0 - tar: ^6.1.11 - unique-filename: ^2.0.0 - checksum: d91409e6e57d7d9a3a25e5dcc589c84e75b178ae8ea7de05cbf6b783f77a5fae938f6e8fda6f5257ed70000be27a681e1e44829251bfffe4c10216002f8f14e6 + "@types/json-schema": ^7.0.4 + utility-types: ^3.10.0 + checksum: 4cc81cf29decc0392f15c71b21fd11cd806bcf99168ae4509ed41c2b7dbcfbd5a83c7f9f320edb5a518cc483fd18dd8794c54b232fb6a6f2a7b6e9fb6ca20269 languageName: node linkType: hard -"cacache@npm:^18.0.0": - version: 18.0.4 - resolution: "cacache@npm:18.0.4" - dependencies: - "@npmcli/fs": ^3.1.0 - fs-minipass: ^3.0.0 - glob: ^10.2.2 - lru-cache: ^10.0.1 - minipass: ^7.0.3 - minipass-collect: ^2.0.1 - minipass-flush: ^1.0.5 - minipass-pipeline: ^1.2.4 - p-map: ^4.0.0 - ssri: ^10.0.0 - tar: ^6.1.11 - unique-filename: ^3.0.0 - checksum: b7422c113b4ec750f33beeca0f426a0024c28e3172f332218f48f963e5b970647fa1ac05679fe5bb448832c51efea9fda4456b9a95c3a1af1105fe6c1833cde2 +"@stoplight/yaml-ast-parser@npm:0.0.50": + version: 0.0.50 + resolution: "@stoplight/yaml-ast-parser@npm:0.0.50" + checksum: dd46f2e39cef4e3a56276202872282bc435c5f92ea7cf344abd6722fbdab62547ec7d2b84983c6c05aaa2776ac29efd53affe6d9753cce10ef37b4e15ce6ccdc languageName: node linkType: hard -"cache-content-type@npm:^1.0.0": - version: 1.0.1 - resolution: "cache-content-type@npm:1.0.1" +"@stoplight/yaml@npm:~4.3.0": + version: 4.3.0 + resolution: "@stoplight/yaml@npm:4.3.0" dependencies: - mime-types: ^2.1.18 - ylru: ^1.2.0 - checksum: 18db4d59452669ccbfd7146a1510a37eb28e9eccf18ca7a4eb603dff2edc5cccdca7498fc3042a2978f76f11151fba486eb9eb69d9afa3fb124957870aef4fd3 + "@stoplight/ordered-object-literal": ^1.0.5 + "@stoplight/types": ^14.1.1 + "@stoplight/yaml-ast-parser": 0.0.50 + tslib: ^2.2.0 + checksum: f113f600a62b75c76c96c27ce3713ba2c48be205fca73097699b66b6f861411c6917dcc5afa4dd08c17fe63f5181b49fa2be9c6500140ea5d05a107ffcb48a4f languageName: node linkType: hard -"call-bind@npm:^1.0.2, call-bind@npm:^1.0.5, call-bind@npm:^1.0.6, call-bind@npm:^1.0.7": - version: 1.0.7 - resolution: "call-bind@npm:1.0.7" +"@sucrase/webpack-loader@npm:^2.0.0": + version: 2.0.0 + resolution: "@sucrase/webpack-loader@npm:2.0.0" dependencies: - es-define-property: ^1.0.0 - es-errors: ^1.3.0 - function-bind: ^1.1.2 - get-intrinsic: ^1.2.4 - set-function-length: ^1.2.1 - checksum: 295c0c62b90dd6522e6db3b0ab1ce26bdf9e7404215bda13cfee25b626b5ff1a7761324d58d38b1ef1607fc65aca2d06e44d2e18d0dfc6c14b465b00d8660029 + loader-utils: ^1.1.0 + peerDependencies: + sucrase: ^3 + checksum: 16578991b1b888ac5bec5628bd24db9e21651bbbe30de076aece8787f115d8971ac87a20bc75446187c73c3185851ec2233d5b6f18c4a2dd53fbbb1ed4e488b4 languageName: node linkType: hard -"call-me-maybe@npm:^1.0.1": - version: 1.0.2 - resolution: "call-me-maybe@npm:1.0.2" - checksum: 42ff2d0bed5b207e3f0122589162eaaa47ba618f79ad2382fe0ba14d9e49fbf901099a6227440acc5946f86a4953e8aa2d242b330b0a5de4d090bb18f8935cae +"@svgr/babel-plugin-add-jsx-attribute@npm:8.0.0": + version: 8.0.0 + resolution: "@svgr/babel-plugin-add-jsx-attribute@npm:8.0.0" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 3fc8e35d16f5abe0af5efe5851f27581225ac405d6a1ca44cda0df064cddfcc29a428c48c2e4bef6cebf627c9ac2f652a096030edb02cf5a120ce28d3c234710 languageName: node linkType: hard -"callsites@npm:^3.0.0": - version: 3.1.0 - resolution: "callsites@npm:3.1.0" - checksum: 072d17b6abb459c2ba96598918b55868af677154bec7e73d222ef95a8fdb9bbf7dae96a8421085cdad8cd190d86653b5b6dc55a4484f2e5b2e27d5e0c3fc15b3 +"@svgr/babel-plugin-add-jsx-attribute@npm:^6.5.1": + version: 6.5.1 + resolution: "@svgr/babel-plugin-add-jsx-attribute@npm:6.5.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: cab83832830a57735329ed68f67c03b57ca21fa037b0134847b0c5c0ef4beca89956d7dacfbf7b2a10fd901e7009e877512086db2ee918b8c69aee7742ae32c0 languageName: node linkType: hard -"camel-case@npm:^4.1.2": - version: 4.1.2 - resolution: "camel-case@npm:4.1.2" - dependencies: - pascal-case: ^3.1.2 - tslib: ^2.0.3 - checksum: bcbd25cd253b3cbc69be3f535750137dbf2beb70f093bdc575f73f800acc8443d34fd52ab8f0a2413c34f1e8203139ffc88428d8863e4dfe530cfb257a379ad6 +"@svgr/babel-plugin-remove-jsx-attribute@npm:*, @svgr/babel-plugin-remove-jsx-attribute@npm:8.0.0": + version: 8.0.0 + resolution: "@svgr/babel-plugin-remove-jsx-attribute@npm:8.0.0" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: ff992893c6c4ac802713ba3a97c13be34e62e6d981c813af40daabcd676df68a72a61bd1e692bb1eda3587f1b1d700ea462222ae2153bb0f46886632d4f88d08 languageName: node linkType: hard -"camelcase@npm:^5.3.1": - version: 5.3.1 - resolution: "camelcase@npm:5.3.1" - checksum: e6effce26b9404e3c0f301498184f243811c30dfe6d0b9051863bd8e4034d09c8c2923794f280d6827e5aa055f6c434115ff97864a16a963366fb35fd673024b +"@svgr/babel-plugin-remove-jsx-empty-expression@npm:*, @svgr/babel-plugin-remove-jsx-empty-expression@npm:8.0.0": + version: 8.0.0 + resolution: "@svgr/babel-plugin-remove-jsx-empty-expression@npm:8.0.0" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 0fb691b63a21bac00da3aa2dccec50d0d5a5b347ff408d60803b84410d8af168f2656e4ba1ee1f24dab0ae4e4af77901f2928752bb0434c1f6788133ec599ec8 languageName: node linkType: hard -"camelcase@npm:^6.2.0": - version: 6.3.0 - resolution: "camelcase@npm:6.3.0" - checksum: 8c96818a9076434998511251dcb2761a94817ea17dbdc37f47ac080bd088fc62c7369429a19e2178b993497132c8cbcf5cc1f44ba963e76782ba469c0474938d +"@svgr/babel-plugin-replace-jsx-attribute-value@npm:8.0.0": + version: 8.0.0 + resolution: "@svgr/babel-plugin-replace-jsx-attribute-value@npm:8.0.0" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 1edda65ef4f4dd8f021143c8ec276a08f6baa6f733b8e8ee2e7775597bf6b97afb47fdeefd579d6ae6c959fe2e634f55cd61d99377631212228c8cfb351b8921 languageName: node linkType: hard -"caniuse-api@npm:^3.0.0": - version: 3.0.0 - resolution: "caniuse-api@npm:3.0.0" - dependencies: - browserslist: ^4.0.0 - caniuse-lite: ^1.0.0 - lodash.memoize: ^4.1.2 - lodash.uniq: ^4.5.0 - checksum: db2a229383b20d0529b6b589dde99d7b6cb56ba371366f58cbbfa2929c9f42c01f873e2b6ef641d4eda9f0b4118de77dbb2805814670bdad4234bf08e720b0b4 +"@svgr/babel-plugin-replace-jsx-attribute-value@npm:^6.5.1": + version: 6.5.1 + resolution: "@svgr/babel-plugin-replace-jsx-attribute-value@npm:6.5.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: b7d2125758e766e1ebd14b92216b800bdc976959bc696dbfa1e28682919147c1df4bb8b1b5fd037d7a83026e27e681fea3b8d3741af8d3cf4c9dfa3d412125df languageName: node linkType: hard -"caniuse-lite@npm:^1.0.0, caniuse-lite@npm:^1.0.30001669": - version: 1.0.30001674 - resolution: "caniuse-lite@npm:1.0.30001674" - checksum: 05bbb4f9823b38ac157678be69c4ec4aa39fbbf6af3ffaffe89c8f5b118a1883d2e7c0065e9a71149061ab653bf332f2fa6256c195b16db85e49651b52f109df +"@svgr/babel-plugin-svg-dynamic-title@npm:8.0.0": + version: 8.0.0 + resolution: "@svgr/babel-plugin-svg-dynamic-title@npm:8.0.0" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 876cec891488992e6a9aebb8155e2bea4ec461b4718c51de36e988e00e271c6d9d01ef6be17b9effd44b2b3d7db0b41c161a5904a46ae6f38b26b387ad7f3709 languageName: node linkType: hard -"caseless@npm:~0.12.0": - version: 0.12.0 - resolution: "caseless@npm:0.12.0" - checksum: b43bd4c440aa1e8ee6baefee8063b4850fd0d7b378f6aabc796c9ec8cb26d27fb30b46885350777d9bd079c5256c0e1329ad0dc7c2817e0bb466810ebb353751 +"@svgr/babel-plugin-svg-dynamic-title@npm:^6.5.1": + version: 6.5.1 + resolution: "@svgr/babel-plugin-svg-dynamic-title@npm:6.5.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 0fd42ebf127ae9163ef341e84972daa99bdcb9e6ed3f83aabd95ee173fddc43e40e02fa847fbc0a1058cf5549f72b7960a2c5e22c3e4ac18f7e3ac81277852ae languageName: node linkType: hard -"chalk@npm:2.4.2, chalk@npm:^2.4.2": - version: 2.4.2 - resolution: "chalk@npm:2.4.2" - dependencies: - ansi-styles: ^3.2.1 - escape-string-regexp: ^1.0.5 - supports-color: ^5.3.0 - checksum: ec3661d38fe77f681200f878edbd9448821924e0f93a9cefc0e26a33b145f1027a2084bf19967160d11e1f03bfe4eaffcabf5493b89098b2782c3fe0b03d80c2 +"@svgr/babel-plugin-svg-em-dimensions@npm:8.0.0": + version: 8.0.0 + resolution: "@svgr/babel-plugin-svg-em-dimensions@npm:8.0.0" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: be0e2d391164428327d9ec469a52cea7d93189c6b0e2c290999e048f597d777852f701c64dca44cd45b31ed14a7f859520326e2e4ad7c3a4545d0aa235bc7e9a languageName: node linkType: hard -"chalk@npm:3.0.0": - version: 3.0.0 - resolution: "chalk@npm:3.0.0" - dependencies: - ansi-styles: ^4.1.0 - supports-color: ^7.1.0 - checksum: 8e3ddf3981c4da405ddbd7d9c8d91944ddf6e33d6837756979f7840a29272a69a5189ecae0ff84006750d6d1e92368d413335eab4db5476db6e6703a1d1e0505 +"@svgr/babel-plugin-svg-em-dimensions@npm:^6.5.1": + version: 6.5.1 + resolution: "@svgr/babel-plugin-svg-em-dimensions@npm:6.5.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: c1550ee9f548526fa66fd171e3ffb5696bfc4e4cd108a631d39db492c7410dc10bba4eb5a190e9df824bf806130ccc586ae7d2e43c547e6a4f93bbb29a18f344 languageName: node linkType: hard -"chalk@npm:4.1.2, chalk@npm:^4.0.0, chalk@npm:^4.1.0, chalk@npm:^4.1.1, chalk@npm:^4.1.2": - version: 4.1.2 - resolution: "chalk@npm:4.1.2" - dependencies: - ansi-styles: ^4.1.0 - supports-color: ^7.1.0 - checksum: fe75c9d5c76a7a98d45495b91b2172fa3b7a09e0cc9370e5c8feb1c567b85c4288e2b3fded7cfdd7359ac28d6b3844feb8b82b8686842e93d23c827c417e83fc +"@svgr/babel-plugin-transform-react-native-svg@npm:8.1.0": + version: 8.1.0 + resolution: "@svgr/babel-plugin-transform-react-native-svg@npm:8.1.0" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 85b434a57572f53bd2b9f0606f253e1fcf57b4a8c554ec3f2d43ed17f50d8cae200cb3aaf1ec9d626e1456e8b135dce530ae047eb0bed6d4bf98a752d6640459 languageName: node linkType: hard -"char-regex@npm:^1.0.2": - version: 1.0.2 - resolution: "char-regex@npm:1.0.2" - checksum: b563e4b6039b15213114626621e7a3d12f31008bdce20f9c741d69987f62aeaace7ec30f6018890ad77b2e9b4d95324c9f5acfca58a9441e3b1dcdd1e2525d17 +"@svgr/babel-plugin-transform-react-native-svg@npm:^6.5.1": + version: 6.5.1 + resolution: "@svgr/babel-plugin-transform-react-native-svg@npm:6.5.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 4c924af22b948b812629e80efb90ad1ec8faae26a232d8ca8a06b46b53e966a2c415a57806a3ff0ea806a622612e546422719b69ec6839717a7755dac19171d9 languageName: node linkType: hard -"chardet@npm:^0.7.0": - version: 0.7.0 - resolution: "chardet@npm:0.7.0" - checksum: 6fd5da1f5d18ff5712c1e0aed41da200d7c51c28f11b36ee3c7b483f3696dabc08927fc6b227735eb8f0e1215c9a8abd8154637f3eff8cada5959df7f58b024d +"@svgr/babel-plugin-transform-svg-component@npm:8.0.0": + version: 8.0.0 + resolution: "@svgr/babel-plugin-transform-svg-component@npm:8.0.0" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 04e2023d75693eeb0890341c40e449881184663056c249be7e5c80168e4aabb0fadd255e8d5d2dbf54b8c2a6e700efba994377135bfa4060dc4a2e860116ef8c languageName: node linkType: hard -"check-types@npm:^11.2.3": - version: 11.2.3 - resolution: "check-types@npm:11.2.3" - checksum: f99ff09ae65e63cfcfa40a1275c0a70d8c43ffbf9ac35095f3bf030cc70361c92e075a9975a1144329e50b4fe4620be6bedb4568c18abc96071a3e23aed3ed8e +"@svgr/babel-plugin-transform-svg-component@npm:^6.5.1": + version: 6.5.1 + resolution: "@svgr/babel-plugin-transform-svg-component@npm:6.5.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: e496bb5ee871feb6bcab250b6e067322da7dd5c9c2b530b41e5586fe090f86611339b49d0a909c334d9b24cbca0fa755c949a2526c6ad03c6b5885666874cf5f languageName: node linkType: hard -"chokidar@npm:^3.3.1, chokidar@npm:^3.4.2, chokidar@npm:^3.5.2, chokidar@npm:^3.5.3, chokidar@npm:^3.6.0": - version: 3.6.0 - resolution: "chokidar@npm:3.6.0" +"@svgr/babel-preset@npm:8.1.0": + version: 8.1.0 + resolution: "@svgr/babel-preset@npm:8.1.0" dependencies: - anymatch: ~3.1.2 - braces: ~3.0.2 - fsevents: ~2.3.2 - glob-parent: ~5.1.2 - is-binary-path: ~2.1.0 - is-glob: ~4.0.1 - normalize-path: ~3.0.0 - readdirp: ~3.6.0 - dependenciesMeta: - fsevents: - optional: true - checksum: d2f29f499705dcd4f6f3bbed79a9ce2388cf530460122eed3b9c48efeab7a4e28739c6551fd15bec9245c6b9eeca7a32baa64694d64d9b6faeb74ddb8c4a413d - languageName: node - linkType: hard - -"chownr@npm:^1.1.1": - version: 1.1.4 - resolution: "chownr@npm:1.1.4" - checksum: 115648f8eb38bac5e41c3857f3e663f9c39ed6480d1349977c4d96c95a47266fcacc5a5aabf3cb6c481e22d72f41992827db47301851766c4fd77ac21a4f081d + "@svgr/babel-plugin-add-jsx-attribute": 8.0.0 + "@svgr/babel-plugin-remove-jsx-attribute": 8.0.0 + "@svgr/babel-plugin-remove-jsx-empty-expression": 8.0.0 + "@svgr/babel-plugin-replace-jsx-attribute-value": 8.0.0 + "@svgr/babel-plugin-svg-dynamic-title": 8.0.0 + "@svgr/babel-plugin-svg-em-dimensions": 8.0.0 + "@svgr/babel-plugin-transform-react-native-svg": 8.1.0 + "@svgr/babel-plugin-transform-svg-component": 8.0.0 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 3a67930f080b8891e1e8e2595716b879c944d253112bae763dce59807ba23454d162216c8d66a0a0e3d4f38a649ecd6c387e545d1e1261dd69a68e9a3392ee08 languageName: node linkType: hard -"chownr@npm:^2.0.0": - version: 2.0.0 - resolution: "chownr@npm:2.0.0" - checksum: c57cf9dd0791e2f18a5ee9c1a299ae6e801ff58fee96dc8bfd0dcb4738a6ce58dd252a3605b1c93c6418fe4f9d5093b28ffbf4d66648cb2a9c67eaef9679be2f +"@svgr/babel-preset@npm:^6.5.1": + version: 6.5.1 + resolution: "@svgr/babel-preset@npm:6.5.1" + dependencies: + "@svgr/babel-plugin-add-jsx-attribute": ^6.5.1 + "@svgr/babel-plugin-remove-jsx-attribute": "*" + "@svgr/babel-plugin-remove-jsx-empty-expression": "*" + "@svgr/babel-plugin-replace-jsx-attribute-value": ^6.5.1 + "@svgr/babel-plugin-svg-dynamic-title": ^6.5.1 + "@svgr/babel-plugin-svg-em-dimensions": ^6.5.1 + "@svgr/babel-plugin-transform-react-native-svg": ^6.5.1 + "@svgr/babel-plugin-transform-svg-component": ^6.5.1 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 9f124be39a8e64f909162f925b3a63ddaa5a342a5e24fc0b7f7d9d4d7f7e3b916596c754fb557dc259928399cad5366a27cb231627a0d2dcc4b13ac521cf05af languageName: node linkType: hard -"chrome-trace-event@npm:^1.0.2": - version: 1.0.4 - resolution: "chrome-trace-event@npm:1.0.4" - checksum: fcbbd9dd0cd5b48444319007cc0c15870fd8612cc0df320908aa9d5e8a244084d48571eb28bf3c58c19327d2c5838f354c2d89fac3956d8e992273437401ac19 +"@svgr/core@npm:6.5.x, @svgr/core@npm:^6.5.1": + version: 6.5.1 + resolution: "@svgr/core@npm:6.5.1" + dependencies: + "@babel/core": ^7.19.6 + "@svgr/babel-preset": ^6.5.1 + "@svgr/plugin-jsx": ^6.5.1 + camelcase: ^6.2.0 + cosmiconfig: ^7.0.1 + checksum: fd6d6d5da5aeb956703310480b626c1fb3e3973ad9fe8025efc1dcf3d895f857b70d100c63cf32cebb20eb83c9607bafa464c9436e18fe6fe4fafdc73ed6b1a5 languageName: node linkType: hard -"ci-info@npm:^3.2.0, ci-info@npm:^3.7.0": - version: 3.9.0 - resolution: "ci-info@npm:3.9.0" - checksum: 6b19dc9b2966d1f8c2041a838217299718f15d6c4b63ae36e4674edd2bee48f780e94761286a56aa59eb305a85fbea4ddffb7630ec063e7ec7e7e5ad42549a87 +"@svgr/core@npm:8.1.0": + version: 8.1.0 + resolution: "@svgr/core@npm:8.1.0" + dependencies: + "@babel/core": ^7.21.3 + "@svgr/babel-preset": 8.1.0 + camelcase: ^6.2.0 + cosmiconfig: ^8.1.3 + snake-case: ^3.0.4 + checksum: da4a12865c7dc59829d58df8bd232d6c85b7115fda40da0d2f844a1a51886e2e945560596ecfc0345d37837ac457de86a931e8b8d8550e729e0c688c02250d8a languageName: node linkType: hard -"cipher-base@npm:^1.0.0, cipher-base@npm:^1.0.1, cipher-base@npm:^1.0.3": - version: 1.0.4 - resolution: "cipher-base@npm:1.0.4" +"@svgr/hast-util-to-babel-ast@npm:8.0.0": + version: 8.0.0 + resolution: "@svgr/hast-util-to-babel-ast@npm:8.0.0" dependencies: - inherits: ^2.0.1 - safe-buffer: ^5.0.1 - checksum: 47d3568dbc17431a339bad1fe7dff83ac0891be8206911ace3d3b818fc695f376df809bea406e759cdea07fff4b454fa25f1013e648851bec790c1d75763032e + "@babel/types": ^7.21.3 + entities: ^4.4.0 + checksum: 88401281a38bbc7527e65ff5437970414391a86158ef4b4046c89764c156d2d39ecd7cce77be8a51994c9fb3249170cb1eb8b9128b62faaa81743ef6ed3534ab languageName: node linkType: hard -"cjs-module-lexer@npm:^1.0.0": - version: 1.4.1 - resolution: "cjs-module-lexer@npm:1.4.1" - checksum: 2556807a99aec1f9daac60741af96cd613a707f343174ae7967da46402c91dced411bf830d209f2e93be4cecea46fc75cecf1f17c799d7d8a9e1dd6204bfcd22 +"@svgr/hast-util-to-babel-ast@npm:^6.5.1": + version: 6.5.1 + resolution: "@svgr/hast-util-to-babel-ast@npm:6.5.1" + dependencies: + "@babel/types": ^7.20.0 + entities: ^4.4.0 + checksum: 37923cce1b3f4e2039077b0c570b6edbabe37d1cf1a6ee35e71e0fe00f9cffac450eec45e9720b1010418131a999cb0047331ba1b6d1d2c69af1b92ac785aacf languageName: node linkType: hard -"clean-css@npm:^5.2.2": - version: 5.3.3 - resolution: "clean-css@npm:5.3.3" +"@svgr/plugin-jsx@npm:6.5.x, @svgr/plugin-jsx@npm:^6.5.1": + version: 6.5.1 + resolution: "@svgr/plugin-jsx@npm:6.5.1" dependencies: - source-map: ~0.6.0 - checksum: 941987c14860dd7d346d5cf121a82fd2caf8344160b1565c5387f7ccca4bbcaf885bace961be37c4f4713ce2d8c488dd89483c1add47bb779790edbfdcc79cbc + "@babel/core": ^7.19.6 + "@svgr/babel-preset": ^6.5.1 + "@svgr/hast-util-to-babel-ast": ^6.5.1 + svg-parser: ^2.0.4 + peerDependencies: + "@svgr/core": ^6.0.0 + checksum: 42f22847a6bdf930514d7bedd3c5e1fd8d53eb3594779f9db16cb94c762425907c375cd8ec789114e100a4d38068aca6c7ab5efea4c612fba63f0630c44cc859 languageName: node linkType: hard -"clean-git-ref@npm:^2.0.1": - version: 2.0.1 - resolution: "clean-git-ref@npm:2.0.1" - checksum: b25f585ed47040ea5d699d40a2bb84d1f35afd651f3fcc05fb077224358ffd3d7509fc9edbfc4570f1fc732c987e03ac7d8ec31524ac503ac35c53cb1f5e3bf9 +"@svgr/plugin-jsx@npm:8.1.0": + version: 8.1.0 + resolution: "@svgr/plugin-jsx@npm:8.1.0" + dependencies: + "@babel/core": ^7.21.3 + "@svgr/babel-preset": 8.1.0 + "@svgr/hast-util-to-babel-ast": 8.0.0 + svg-parser: ^2.0.4 + peerDependencies: + "@svgr/core": "*" + checksum: 0418a9780753d3544912ee2dad5d2cf8d12e1ba74df8053651b3886aeda54d5f0f7d2dece0af5e0d838332c4f139a57f0dabaa3ca1afa4d1a765efce6a7656f2 languageName: node linkType: hard -"clean-stack@npm:^2.0.0": - version: 2.2.0 - resolution: "clean-stack@npm:2.2.0" - checksum: 2ac8cd2b2f5ec986a3c743935ec85b07bc174d5421a5efc8017e1f146a1cf5f781ae962618f416352103b32c9cd7e203276e8c28241bbe946160cab16149fb68 +"@svgr/plugin-svgo@npm:6.5.x, @svgr/plugin-svgo@npm:^6.5.1": + version: 6.5.1 + resolution: "@svgr/plugin-svgo@npm:6.5.1" + dependencies: + cosmiconfig: ^7.0.1 + deepmerge: ^4.2.2 + svgo: ^2.8.0 + peerDependencies: + "@svgr/core": "*" + checksum: cd2833530ac0485221adc2146fd992ab20d79f4b12eebcd45fa859721dd779483158e11dfd9a534858fe468416b9412416e25cbe07ac7932c44ed5fa2021c72e languageName: node linkType: hard -"cli-cursor@npm:^3.1.0": - version: 3.1.0 - resolution: "cli-cursor@npm:3.1.0" +"@svgr/plugin-svgo@npm:8.1.0": + version: 8.1.0 + resolution: "@svgr/plugin-svgo@npm:8.1.0" dependencies: - restore-cursor: ^3.1.0 - checksum: 2692784c6cd2fd85cfdbd11f53aea73a463a6d64a77c3e098b2b4697a20443f430c220629e1ca3b195ea5ac4a97a74c2ee411f3807abf6df2b66211fec0c0a29 + cosmiconfig: ^8.1.3 + deepmerge: ^4.3.1 + svgo: ^3.0.2 + peerDependencies: + "@svgr/core": "*" + checksum: 59d9d214cebaacca9ca71a561f463d8b7e5a68ca9443e4792a42d903acd52259b1790c0680bc6afecc3f00a255a6cbd7ea278a9f625bac443620ea58a590c2d0 languageName: node linkType: hard -"cli-spinners@npm:^2.5.0": - version: 2.9.2 - resolution: "cli-spinners@npm:2.9.2" - checksum: 1bd588289b28432e4676cb5d40505cfe3e53f2e4e10fbe05c8a710a154d6fe0ce7836844b00d6858f740f2ffe67cdc36e0fce9c7b6a8430e80e6388d5aa4956c +"@svgr/rollup@npm:6.5.x": + version: 6.5.1 + resolution: "@svgr/rollup@npm:6.5.1" + dependencies: + "@babel/core": ^7.19.6 + "@babel/plugin-transform-react-constant-elements": ^7.18.12 + "@babel/preset-env": ^7.19.4 + "@babel/preset-react": ^7.18.6 + "@babel/preset-typescript": ^7.18.6 + "@rollup/pluginutils": ^4.2.1 + "@svgr/core": ^6.5.1 + "@svgr/plugin-jsx": ^6.5.1 + "@svgr/plugin-svgo": ^6.5.1 + checksum: 809198a655c280b434d762829aeab0c48e545daaa7a520ac87d5e7cfe96402eb4d0c01f8b25959fcc37a2ce4aa1a53c9e1c4ccb1206cd5833883a34db5799dd4 languageName: node linkType: hard -"cli-width@npm:^3.0.0": - version: 3.0.0 - resolution: "cli-width@npm:3.0.0" - checksum: 4c94af3769367a70e11ed69aa6095f1c600c0ff510f3921ab4045af961820d57c0233acfa8b6396037391f31b4c397e1f614d234294f979ff61430a6c166c3f6 +"@svgr/rollup@npm:^8.1.0": + version: 8.1.0 + resolution: "@svgr/rollup@npm:8.1.0" + dependencies: + "@babel/core": ^7.21.3 + "@babel/plugin-transform-react-constant-elements": ^7.21.3 + "@babel/preset-env": ^7.20.2 + "@babel/preset-react": ^7.18.6 + "@babel/preset-typescript": ^7.21.0 + "@rollup/pluginutils": ^5.0.2 + "@svgr/core": 8.1.0 + "@svgr/plugin-jsx": 8.1.0 + "@svgr/plugin-svgo": 8.1.0 + checksum: 728e2d5ac9765e83852743c209663b4b32ca4182e42bfcf13a75d2205b041b14ee34013344589cd79ba9b0ba35cc86436524ffd4362b60d636305ffb2a3b4eb1 languageName: node linkType: hard -"cliui@npm:7.0.4, cliui@npm:^7.0.2": - version: 7.0.4 - resolution: "cliui@npm:7.0.4" - dependencies: - string-width: ^4.2.0 - strip-ansi: ^6.0.0 - wrap-ansi: ^7.0.0 - checksum: ce2e8f578a4813806788ac399b9e866297740eecd4ad1823c27fd344d78b22c5f8597d548adbcc46f0573e43e21e751f39446c5a5e804a12aace402b7a315d7f - languageName: node - linkType: hard - -"cliui@npm:^8.0.1": - version: 8.0.1 - resolution: "cliui@npm:8.0.1" +"@svgr/webpack@npm:6.5.x, @svgr/webpack@npm:^6.5.1": + version: 6.5.1 + resolution: "@svgr/webpack@npm:6.5.1" dependencies: - string-width: ^4.2.0 - strip-ansi: ^6.0.1 - wrap-ansi: ^7.0.0 - checksum: 79648b3b0045f2e285b76fb2e24e207c6db44323581e421c3acbd0e86454cba1b37aea976ab50195a49e7384b871e6dfb2247ad7dec53c02454ac6497394cb56 + "@babel/core": ^7.19.6 + "@babel/plugin-transform-react-constant-elements": ^7.18.12 + "@babel/preset-env": ^7.19.4 + "@babel/preset-react": ^7.18.6 + "@babel/preset-typescript": ^7.18.6 + "@svgr/core": ^6.5.1 + "@svgr/plugin-jsx": ^6.5.1 + "@svgr/plugin-svgo": ^6.5.1 + checksum: d10582eb4fa82a5b6d314cb49f2c640af4fd3a60f5b76095d2b14e383ef6a43a6f4674b68774a21787dbde69dec0a251cfcfc3f9a96c82754ba5d5c6daf785f0 languageName: node linkType: hard -"clone@npm:^1.0.2": - version: 1.0.4 - resolution: "clone@npm:1.0.4" - checksum: d06418b7335897209e77bdd430d04f882189582e67bd1f75a04565f3f07f5b3f119a9d670c943b6697d0afb100f03b866b3b8a1f91d4d02d72c4ecf2bb64b5dd +"@swagger-api/apidom-ast@npm:^1.0.0-beta.5": + version: 1.0.0-beta.5 + resolution: "@swagger-api/apidom-ast@npm:1.0.0-beta.5" + dependencies: + "@babel/runtime-corejs3": ^7.20.7 + "@swagger-api/apidom-error": ^1.0.0-beta.5 + "@types/ramda": ~0.30.0 + ramda: ~0.30.0 + ramda-adjunct: ^5.0.0 + unraw: ^3.0.0 + checksum: 7c46f284d99c3098bc332dc3ef35a5cd0b4c3785a3fd56722f4fc07b423d8d55d7eb446763da5cf4d380fbfea3390c70bd5e5c15de87b4268730ba845b9f54fd languageName: node linkType: hard -"cluster-key-slot@npm:^1.1.0": - version: 1.1.2 - resolution: "cluster-key-slot@npm:1.1.2" - checksum: be0ad2d262502adc998597e83f9ded1b80f827f0452127c5a37b22dfca36bab8edf393f7b25bb626006fb9fb2436106939ede6d2d6ecf4229b96a47f27edd681 +"@swagger-api/apidom-core@npm:>=1.0.0-beta.3 <1.0.0-rc.0, @swagger-api/apidom-core@npm:^1.0.0-beta.5": + version: 1.0.0-beta.5 + resolution: "@swagger-api/apidom-core@npm:1.0.0-beta.5" + dependencies: + "@babel/runtime-corejs3": ^7.20.7 + "@swagger-api/apidom-ast": ^1.0.0-beta.5 + "@swagger-api/apidom-error": ^1.0.0-beta.5 + "@types/ramda": ~0.30.0 + minim: ~0.23.8 + ramda: ~0.30.0 + ramda-adjunct: ^5.0.0 + short-unique-id: ^5.0.2 + ts-mixer: ^6.0.3 + checksum: db5e76049eb96eccf5c956a0fdfb7582019be097646286ee8e0ba1881fa2618abadcf8156da6a6183e2c3d15e0fedbea22901282922d1975fe69e4bf0d7fec94 languageName: node linkType: hard -"co@npm:^4.6.0": - version: 4.6.0 - resolution: "co@npm:4.6.0" - checksum: 5210d9223010eb95b29df06a91116f2cf7c8e0748a9013ed853b53f362ea0e822f1e5bb054fb3cefc645239a4cf966af1f6133a3b43f40d591f3b68ed6cf0510 +"@swagger-api/apidom-error@npm:>=1.0.0-beta.3 <1.0.0-rc.0, @swagger-api/apidom-error@npm:^1.0.0-beta.3 <1.0.0-rc.0, @swagger-api/apidom-error@npm:^1.0.0-beta.5": + version: 1.0.0-beta.5 + resolution: "@swagger-api/apidom-error@npm:1.0.0-beta.5" + dependencies: + "@babel/runtime-corejs3": ^7.20.7 + checksum: 77f719ce147546aaa350df9ed49f12ab793fabc9a8c061877960a22a6dff7210cc004c02f0a10c807aa6b5513af7bdd37b672a7ceb73189fa5950571f806a4cb languageName: node linkType: hard -"code-block-writer@npm:^13.0.1": - version: 13.0.3 - resolution: "code-block-writer@npm:13.0.3" - checksum: 8e234f0ec2db9625d5efb9f05bdae79da6559bb4d9df94a6aa79a89a7b5ae25093b70d309fc5122840c9c07995cb14b4dd3f98a30f8878e3a3372e177df79454 +"@swagger-api/apidom-json-pointer@npm:>=1.0.0-beta.3 <1.0.0-rc.0, @swagger-api/apidom-json-pointer@npm:^1.0.0-beta.3 <1.0.0-rc.0, @swagger-api/apidom-json-pointer@npm:^1.0.0-beta.5": + version: 1.0.0-beta.5 + resolution: "@swagger-api/apidom-json-pointer@npm:1.0.0-beta.5" + dependencies: + "@babel/runtime-corejs3": ^7.20.7 + "@swagger-api/apidom-core": ^1.0.0-beta.5 + "@swagger-api/apidom-error": ^1.0.0-beta.5 + "@types/ramda": ~0.30.0 + ramda: ~0.30.0 + ramda-adjunct: ^5.0.0 + checksum: b018073a75c3fad269140504fe5623bd5041dca1ad80c249ab031b63d1c4ed0756e268fea0846f21476fc7d72fa40fcf3fefc230bfa751caf9efe587bd01124a languageName: node linkType: hard -"codeowners-utils@npm:^1.0.2": - version: 1.0.2 - resolution: "codeowners-utils@npm:1.0.2" +"@swagger-api/apidom-ns-api-design-systems@npm:^1.0.0-beta.5": + version: 1.0.0-beta.5 + resolution: "@swagger-api/apidom-ns-api-design-systems@npm:1.0.0-beta.5" dependencies: - cross-spawn: ^7.0.2 - find-up: ^4.1.0 - ignore: ^5.1.4 - locate-path: ^5.0.0 - checksum: 1e1c1f271ad4d4b4b25f6d19fc61f177f010bfb95de9af26662bb09c2f4f5572c1f3c8e9552aff15924f1c97058812bd5b5064d1eea721cc70e17490dae3fb02 + "@babel/runtime-corejs3": ^7.20.7 + "@swagger-api/apidom-core": ^1.0.0-beta.5 + "@swagger-api/apidom-error": ^1.0.0-beta.5 + "@swagger-api/apidom-ns-openapi-3-1": ^1.0.0-beta.5 + "@types/ramda": ~0.30.0 + ramda: ~0.30.0 + ramda-adjunct: ^5.0.0 + ts-mixer: ^6.0.3 + checksum: b661b9140b3e5968ec1669c3529c9169a12b96500466a5c87e4b479507d0f09443abb3a03370d5d6751f1b6951d743b357519244bd4c989084388e2b43d60603 languageName: node linkType: hard -"codeowners@npm:^5.1.1": - version: 5.1.1 - resolution: "codeowners@npm:5.1.1" +"@swagger-api/apidom-ns-asyncapi-2@npm:^1.0.0-beta.3 <1.0.0-rc.0, @swagger-api/apidom-ns-asyncapi-2@npm:^1.0.0-beta.5": + version: 1.0.0-beta.5 + resolution: "@swagger-api/apidom-ns-asyncapi-2@npm:1.0.0-beta.5" dependencies: - "@nodelib/fs.walk": ^1.2.6 - commander: ^6.2.1 - find-up: ^2.1.0 - ignore: ^3.3.10 - is-directory: ^0.3.1 - lodash.intersection: ^4.4.0 - lodash.maxby: ^4.6.0 - lodash.padend: ^4.6.1 - true-case-path: ^1.0.3 - bin: - codeowners: index.js - checksum: 9ffd67403e9d0defc5b9906dd986734c2c2a02cad758ab95b722558a1817f47925dd2bac58327b860edd66806bf5cd72a24b1f377fe6215cf0576fee3bfbac48 + "@babel/runtime-corejs3": ^7.20.7 + "@swagger-api/apidom-core": ^1.0.0-beta.5 + "@swagger-api/apidom-ns-json-schema-draft-7": ^1.0.0-beta.5 + "@types/ramda": ~0.30.0 + ramda: ~0.30.0 + ramda-adjunct: ^5.0.0 + ts-mixer: ^6.0.3 + checksum: e7b8c5af72442fa267f2981bd02d1450997f1022068071966bcebb13e7afbaf0c1416de3dc73e57f9cf2a0b08d1a72a3e0dd40fdf8e2b32c63c69f078518617f languageName: node linkType: hard -"collect-v8-coverage@npm:^1.0.0": - version: 1.0.2 - resolution: "collect-v8-coverage@npm:1.0.2" - checksum: c10f41c39ab84629d16f9f6137bc8a63d332244383fc368caf2d2052b5e04c20cd1fd70f66fcf4e2422b84c8226598b776d39d5f2d2a51867cc1ed5d1982b4da +"@swagger-api/apidom-ns-json-schema-draft-4@npm:^1.0.0-beta.5": + version: 1.0.0-beta.5 + resolution: "@swagger-api/apidom-ns-json-schema-draft-4@npm:1.0.0-beta.5" + dependencies: + "@babel/runtime-corejs3": ^7.20.7 + "@swagger-api/apidom-ast": ^1.0.0-beta.5 + "@swagger-api/apidom-core": ^1.0.0-beta.5 + "@types/ramda": ~0.30.0 + ramda: ~0.30.0 + ramda-adjunct: ^5.0.0 + ts-mixer: ^6.0.4 + checksum: c58fd53a087bcb9c0c238eee23f5fc2e452d4a88bde99dbcb020c2295ed385926ca51052e046f4d1e8a2d20898cb28a6d3cfb57c23b9bff5446bfd10f95ba6aa languageName: node linkType: hard -"color-convert@npm:^1.9.0, color-convert@npm:^1.9.3": - version: 1.9.3 - resolution: "color-convert@npm:1.9.3" +"@swagger-api/apidom-ns-json-schema-draft-6@npm:^1.0.0-beta.5": + version: 1.0.0-beta.5 + resolution: "@swagger-api/apidom-ns-json-schema-draft-6@npm:1.0.0-beta.5" dependencies: - color-name: 1.1.3 - checksum: fd7a64a17cde98fb923b1dd05c5f2e6f7aefda1b60d67e8d449f9328b4e53b228a428fd38bfeaeb2db2ff6b6503a776a996150b80cdf224062af08a5c8a3a203 + "@babel/runtime-corejs3": ^7.20.7 + "@swagger-api/apidom-core": ^1.0.0-beta.5 + "@swagger-api/apidom-error": ^1.0.0-beta.5 + "@swagger-api/apidom-ns-json-schema-draft-4": ^1.0.0-beta.5 + "@types/ramda": ~0.30.0 + ramda: ~0.30.0 + ramda-adjunct: ^5.0.0 + ts-mixer: ^6.0.4 + checksum: 1a069aee8e9ff445bfd523298f50905177226070f587e3e371c2a68aa8031c39e7e9d7e0c47ff6ae8876baaa80b6f8b79c3a357e0c7ebcd592ebb20015f4ccc1 languageName: node linkType: hard -"color-convert@npm:^2.0.1": - version: 2.0.1 - resolution: "color-convert@npm:2.0.1" +"@swagger-api/apidom-ns-json-schema-draft-7@npm:^1.0.0-beta.5": + version: 1.0.0-beta.5 + resolution: "@swagger-api/apidom-ns-json-schema-draft-7@npm:1.0.0-beta.5" dependencies: - color-name: ~1.1.4 - checksum: 79e6bdb9fd479a205c71d89574fccfb22bd9053bd98c6c4d870d65c132e5e904e6034978e55b43d69fcaa7433af2016ee203ce76eeba9cfa554b373e7f7db336 + "@babel/runtime-corejs3": ^7.20.7 + "@swagger-api/apidom-core": ^1.0.0-beta.5 + "@swagger-api/apidom-error": ^1.0.0-beta.5 + "@swagger-api/apidom-ns-json-schema-draft-6": ^1.0.0-beta.5 + "@types/ramda": ~0.30.0 + ramda: ~0.30.0 + ramda-adjunct: ^5.0.0 + ts-mixer: ^6.0.4 + checksum: 62c62eba1cc554760897e26b0a5e88b74b42c898c12002afcb4d9df37146218bddff751ac8b1392c83947d55dac7a7b81b3ad6d2c222e3acf20bbc49438d2e6f languageName: node linkType: hard -"color-name@npm:1.1.3": - version: 1.1.3 - resolution: "color-name@npm:1.1.3" - checksum: 09c5d3e33d2105850153b14466501f2bfb30324a2f76568a408763a3b7433b0e50e5b4ab1947868e65cb101bb7cb75029553f2c333b6d4b8138a73fcc133d69d +"@swagger-api/apidom-ns-openapi-2@npm:^1.0.0-beta.3 <1.0.0-rc.0, @swagger-api/apidom-ns-openapi-2@npm:^1.0.0-beta.5": + version: 1.0.0-beta.5 + resolution: "@swagger-api/apidom-ns-openapi-2@npm:1.0.0-beta.5" + dependencies: + "@babel/runtime-corejs3": ^7.20.7 + "@swagger-api/apidom-core": ^1.0.0-beta.5 + "@swagger-api/apidom-error": ^1.0.0-beta.5 + "@swagger-api/apidom-ns-json-schema-draft-4": ^1.0.0-beta.5 + "@types/ramda": ~0.30.0 + ramda: ~0.30.0 + ramda-adjunct: ^5.0.0 + ts-mixer: ^6.0.3 + checksum: 551e65fce5fb8ce29466ce7f09b5e3fd522a6d23de417856a41f228761eb4d9f5e92438a00d708c55d386a9b72e8a8f704b19aa33324871534567ef9b69adaae languageName: node linkType: hard -"color-name@npm:^1.0.0, color-name@npm:~1.1.4": - version: 1.1.4 - resolution: "color-name@npm:1.1.4" - checksum: b0445859521eb4021cd0fb0cc1a75cecf67fceecae89b63f62b201cca8d345baf8b952c966862a9d9a2632987d4f6581f0ec8d957dfacece86f0a7919316f610 +"@swagger-api/apidom-ns-openapi-3-0@npm:^1.0.0-beta.3 <1.0.0-rc.0, @swagger-api/apidom-ns-openapi-3-0@npm:^1.0.0-beta.5": + version: 1.0.0-beta.5 + resolution: "@swagger-api/apidom-ns-openapi-3-0@npm:1.0.0-beta.5" + dependencies: + "@babel/runtime-corejs3": ^7.20.7 + "@swagger-api/apidom-core": ^1.0.0-beta.5 + "@swagger-api/apidom-error": ^1.0.0-beta.5 + "@swagger-api/apidom-ns-json-schema-draft-4": ^1.0.0-beta.5 + "@types/ramda": ~0.30.0 + ramda: ~0.30.0 + ramda-adjunct: ^5.0.0 + ts-mixer: ^6.0.3 + checksum: 7a64e57b0d1688622333bd94d6541c95beb513ba152599820d8a1ca04f694a0b9a49ddce3e0396dc8dbc61f630d7bc6bce89dbfb4f300db174bf72f6f4c6c2a8 languageName: node linkType: hard -"color-string@npm:^1.6.0": - version: 1.9.1 - resolution: "color-string@npm:1.9.1" +"@swagger-api/apidom-ns-openapi-3-1@npm:>=1.0.0-beta.3 <1.0.0-rc.0, @swagger-api/apidom-ns-openapi-3-1@npm:^1.0.0-beta.3 <1.0.0-rc.0, @swagger-api/apidom-ns-openapi-3-1@npm:^1.0.0-beta.5": + version: 1.0.0-beta.5 + resolution: "@swagger-api/apidom-ns-openapi-3-1@npm:1.0.0-beta.5" dependencies: - color-name: ^1.0.0 - simple-swizzle: ^0.2.2 - checksum: c13fe7cff7885f603f49105827d621ce87f4571d78ba28ef4a3f1a104304748f620615e6bf065ecd2145d0d9dad83a3553f52bb25ede7239d18e9f81622f1cc5 + "@babel/runtime-corejs3": ^7.20.7 + "@swagger-api/apidom-ast": ^1.0.0-beta.5 + "@swagger-api/apidom-core": ^1.0.0-beta.5 + "@swagger-api/apidom-json-pointer": ^1.0.0-beta.5 + "@swagger-api/apidom-ns-openapi-3-0": ^1.0.0-beta.5 + "@types/ramda": ~0.30.0 + ramda: ~0.30.0 + ramda-adjunct: ^5.0.0 + ts-mixer: ^6.0.3 + checksum: 59352feab47be62c22a38d5cd2b0383f26caa13253c68fe677f0a8eb17a6cc57c20b66a1b5a4fdb1fc63e01e4c3b7f8b910291ca67c14c27d077e4e8db29f23c languageName: node linkType: hard -"color-support@npm:^1.1.3": - version: 1.1.3 - resolution: "color-support@npm:1.1.3" - bin: - color-support: bin.js - checksum: 9b7356817670b9a13a26ca5af1c21615463b500783b739b7634a0c2047c16cef4b2865d7576875c31c3cddf9dd621fa19285e628f20198b233a5cfdda6d0793b +"@swagger-api/apidom-ns-workflows-1@npm:^1.0.0-beta.3 <1.0.0-rc.0, @swagger-api/apidom-ns-workflows-1@npm:^1.0.0-beta.5": + version: 1.0.0-beta.5 + resolution: "@swagger-api/apidom-ns-workflows-1@npm:1.0.0-beta.5" + dependencies: + "@babel/runtime-corejs3": ^7.20.7 + "@swagger-api/apidom-core": ^1.0.0-beta.5 + "@swagger-api/apidom-ns-openapi-3-1": ^1.0.0-beta.5 + "@types/ramda": ~0.30.0 + ramda: ~0.30.0 + ramda-adjunct: ^5.0.0 + ts-mixer: ^6.0.3 + checksum: c85afb9154964ba1861285fe7200fecf9d023fcf071a6a393dd51387699c2fbd2a1ecbe357b3adc8525f0cd771a101b25d0df23b55d2c104c7d238859dc084a5 languageName: node linkType: hard -"color@npm:^3.1.3": - version: 3.2.1 - resolution: "color@npm:3.2.1" +"@swagger-api/apidom-parser-adapter-api-design-systems-json@npm:^1.0.0-beta.3 <1.0.0-rc.0": + version: 1.0.0-beta.5 + resolution: "@swagger-api/apidom-parser-adapter-api-design-systems-json@npm:1.0.0-beta.5" dependencies: - color-convert: ^1.9.3 - color-string: ^1.6.0 - checksum: f81220e8b774d35865c2561be921f5652117638dcda7ca4029262046e37fc2444ac7bbfdd110cf1fd9c074a4ee5eda8f85944ffbdda26186b602dd9bb05f6400 + "@babel/runtime-corejs3": ^7.20.7 + "@swagger-api/apidom-core": ^1.0.0-beta.5 + "@swagger-api/apidom-ns-api-design-systems": ^1.0.0-beta.5 + "@swagger-api/apidom-parser-adapter-json": ^1.0.0-beta.5 + "@types/ramda": ~0.30.0 + ramda: ~0.30.0 + ramda-adjunct: ^5.0.0 + checksum: 9f3f95b58e17738fe615ff03441c33a54b095e6dfb6e52c4d5a6e72927574b1e0c9acec75d52cf7d0159bb4a3766094b21b4950b233174625bd02512b61a6099 languageName: node linkType: hard -"colord@npm:^2.9.1": - version: 2.9.3 - resolution: "colord@npm:2.9.3" - checksum: 95d909bfbcfd8d5605cbb5af56f2d1ce2b323990258fd7c0d2eb0e6d3bb177254d7fb8213758db56bb4ede708964f78c6b992b326615f81a18a6aaf11d64c650 +"@swagger-api/apidom-parser-adapter-api-design-systems-yaml@npm:^1.0.0-beta.3 <1.0.0-rc.0": + version: 1.0.0-beta.5 + resolution: "@swagger-api/apidom-parser-adapter-api-design-systems-yaml@npm:1.0.0-beta.5" + dependencies: + "@babel/runtime-corejs3": ^7.20.7 + "@swagger-api/apidom-core": ^1.0.0-beta.5 + "@swagger-api/apidom-ns-api-design-systems": ^1.0.0-beta.5 + "@swagger-api/apidom-parser-adapter-yaml-1-2": ^1.0.0-beta.5 + "@types/ramda": ~0.30.0 + ramda: ~0.30.0 + ramda-adjunct: ^5.0.0 + checksum: ccc80cdf2fbaceece20fcc3640d6c93018b44282f8df3d125e03b3210c2c6f55776bc5a39b88a03b5bf04f0ef37d983903f79b1a7d2ad44661f69578b90a9d6c languageName: node linkType: hard -"colorette@npm:2.0.19": - version: 2.0.19 - resolution: "colorette@npm:2.0.19" - checksum: 888cf5493f781e5fcf54ce4d49e9d7d698f96ea2b2ef67906834bb319a392c667f9ec69f4a10e268d2946d13a9503d2d19b3abaaaf174e3451bfe91fb9d82427 +"@swagger-api/apidom-parser-adapter-asyncapi-json-2@npm:^1.0.0-beta.3 <1.0.0-rc.0": + version: 1.0.0-beta.5 + resolution: "@swagger-api/apidom-parser-adapter-asyncapi-json-2@npm:1.0.0-beta.5" + dependencies: + "@babel/runtime-corejs3": ^7.20.7 + "@swagger-api/apidom-core": ^1.0.0-beta.5 + "@swagger-api/apidom-ns-asyncapi-2": ^1.0.0-beta.5 + "@swagger-api/apidom-parser-adapter-json": ^1.0.0-beta.5 + "@types/ramda": ~0.30.0 + ramda: ~0.30.0 + ramda-adjunct: ^5.0.0 + checksum: 8d5e7e1b1a902a608574e9f7ecdf931809f77f75d5b9a6429893894e4eb27de59e838b8de5c6e5cfbc7b9d55937ef86c5d15e6dee2175e312467814afd830e4f languageName: node linkType: hard -"colorette@npm:^2.0.10": - version: 2.0.20 - resolution: "colorette@npm:2.0.20" - checksum: 0c016fea2b91b733eb9f4bcdb580018f52c0bc0979443dad930e5037a968237ac53d9beb98e218d2e9235834f8eebce7f8e080422d6194e957454255bde71d3d +"@swagger-api/apidom-parser-adapter-asyncapi-yaml-2@npm:^1.0.0-beta.3 <1.0.0-rc.0": + version: 1.0.0-beta.5 + resolution: "@swagger-api/apidom-parser-adapter-asyncapi-yaml-2@npm:1.0.0-beta.5" + dependencies: + "@babel/runtime-corejs3": ^7.20.7 + "@swagger-api/apidom-core": ^1.0.0-beta.5 + "@swagger-api/apidom-ns-asyncapi-2": ^1.0.0-beta.5 + "@swagger-api/apidom-parser-adapter-yaml-1-2": ^1.0.0-beta.5 + "@types/ramda": ~0.30.0 + ramda: ~0.30.0 + ramda-adjunct: ^5.0.0 + checksum: 8c5c60a0ff8cbf728e7b557fc1b1a9ac2f7e509ba46fc67fd32c60b4da5daf1003fa468f88d88b441333bc299c322a24c7bfbc61df0f101334be6debd7cf181a languageName: node linkType: hard -"colorspace@npm:1.1.x": - version: 1.1.4 - resolution: "colorspace@npm:1.1.4" +"@swagger-api/apidom-parser-adapter-json@npm:^1.0.0-beta.3 <1.0.0-rc.0, @swagger-api/apidom-parser-adapter-json@npm:^1.0.0-beta.5": + version: 1.0.0-beta.5 + resolution: "@swagger-api/apidom-parser-adapter-json@npm:1.0.0-beta.5" dependencies: - color: ^3.1.3 - text-hex: 1.0.x - checksum: bb3934ef3c417e961e6d03d7ca60ea6e175947029bfadfcdb65109b01881a1c0ecf9c2b0b59abcd0ee4a0d7c1eae93beed01b0e65848936472270a0b341ebce8 + "@babel/runtime-corejs3": ^7.20.7 + "@swagger-api/apidom-ast": ^1.0.0-beta.5 + "@swagger-api/apidom-core": ^1.0.0-beta.5 + "@swagger-api/apidom-error": ^1.0.0-beta.5 + "@types/ramda": ~0.30.0 + node-gyp: latest + ramda: ~0.30.0 + ramda-adjunct: ^5.0.0 + tree-sitter: =0.22.1 + tree-sitter-json: =0.24.8 + web-tree-sitter: =0.24.5 + checksum: 9bf5305b54167f9bd76cc0ab617cf1bc2abd140c51ae80febf18f1afd98be53ba1936d5ee0d3e7d7ff6145ba3f4c874eedfece9f8d287a6a7cbb382cc75c528a languageName: node linkType: hard -"combined-stream@npm:^1.0.6, combined-stream@npm:^1.0.8, combined-stream@npm:~1.0.6": - version: 1.0.8 - resolution: "combined-stream@npm:1.0.8" +"@swagger-api/apidom-parser-adapter-openapi-json-2@npm:^1.0.0-beta.3 <1.0.0-rc.0": + version: 1.0.0-beta.5 + resolution: "@swagger-api/apidom-parser-adapter-openapi-json-2@npm:1.0.0-beta.5" dependencies: - delayed-stream: ~1.0.0 - checksum: 49fa4aeb4916567e33ea81d088f6584749fc90c7abec76fd516bf1c5aa5c79f3584b5ba3de6b86d26ddd64bae5329c4c7479343250cfe71c75bb366eae53bb7c + "@babel/runtime-corejs3": ^7.20.7 + "@swagger-api/apidom-core": ^1.0.0-beta.5 + "@swagger-api/apidom-ns-openapi-2": ^1.0.0-beta.5 + "@swagger-api/apidom-parser-adapter-json": ^1.0.0-beta.5 + "@types/ramda": ~0.30.0 + ramda: ~0.30.0 + ramda-adjunct: ^5.0.0 + checksum: 7345bf9ff60d0b67c5d84b21a81c55a0e940e4670f5faa31ad9b9a6d5d95aee00fb2fe4fef8d8095b603c65f3d7c020946fb06a8c5a206ae6b8fd70b9b5c2419 languageName: node linkType: hard -"command-exists@npm:^1.2.9": - version: 1.2.9 - resolution: "command-exists@npm:1.2.9" - checksum: 729ae3d88a2058c93c58840f30341b7f82688a573019535d198b57a4d8cb0135ced0ad7f52b591e5b28a90feb2c675080ce916e56254a0f7c15cb2395277cac3 +"@swagger-api/apidom-parser-adapter-openapi-json-3-0@npm:^1.0.0-beta.3 <1.0.0-rc.0": + version: 1.0.0-beta.5 + resolution: "@swagger-api/apidom-parser-adapter-openapi-json-3-0@npm:1.0.0-beta.5" + dependencies: + "@babel/runtime-corejs3": ^7.20.7 + "@swagger-api/apidom-core": ^1.0.0-beta.5 + "@swagger-api/apidom-ns-openapi-3-0": ^1.0.0-beta.5 + "@swagger-api/apidom-parser-adapter-json": ^1.0.0-beta.5 + "@types/ramda": ~0.30.0 + ramda: ~0.30.0 + ramda-adjunct: ^5.0.0 + checksum: ddc43ce6bb64555ffe2987654184f8e7854ab012b15ca7e8d21865e5159ba3e83c9d85baafadb48fd8c818062a1e0ad6df0165f45380f4c96debdb41e7d22649 languageName: node linkType: hard -"commander@npm:8.3.0, commander@npm:^8.3.0": - version: 8.3.0 - resolution: "commander@npm:8.3.0" - checksum: 0f82321821fc27b83bd409510bb9deeebcfa799ff0bf5d102128b500b7af22872c0c92cb6a0ebc5a4cf19c6b550fba9cedfa7329d18c6442a625f851377bacf0 +"@swagger-api/apidom-parser-adapter-openapi-json-3-1@npm:^1.0.0-beta.3 <1.0.0-rc.0": + version: 1.0.0-beta.5 + resolution: "@swagger-api/apidom-parser-adapter-openapi-json-3-1@npm:1.0.0-beta.5" + dependencies: + "@babel/runtime-corejs3": ^7.20.7 + "@swagger-api/apidom-core": ^1.0.0-beta.5 + "@swagger-api/apidom-ns-openapi-3-1": ^1.0.0-beta.5 + "@swagger-api/apidom-parser-adapter-json": ^1.0.0-beta.5 + "@types/ramda": ~0.30.0 + ramda: ~0.30.0 + ramda-adjunct: ^5.0.0 + checksum: 82992ead718a43c69f35d90f3842fdee42a4a3ac9ee80739ab4354330f3549c9bae0a60faf8793268e942c46b61b84f32a4d2dc0a225f234b1e6c578d65b8082 languageName: node linkType: hard -"commander@npm:^10.0.0": - version: 10.0.1 - resolution: "commander@npm:10.0.1" - checksum: 436901d64a818295803c1996cd856621a74f30b9f9e28a588e726b2b1670665bccd7c1a77007ebf328729f0139838a88a19265858a0fa7a8728c4656796db948 +"@swagger-api/apidom-parser-adapter-openapi-yaml-2@npm:^1.0.0-beta.3 <1.0.0-rc.0": + version: 1.0.0-beta.5 + resolution: "@swagger-api/apidom-parser-adapter-openapi-yaml-2@npm:1.0.0-beta.5" + dependencies: + "@babel/runtime-corejs3": ^7.20.7 + "@swagger-api/apidom-core": ^1.0.0-beta.5 + "@swagger-api/apidom-ns-openapi-2": ^1.0.0-beta.5 + "@swagger-api/apidom-parser-adapter-yaml-1-2": ^1.0.0-beta.5 + "@types/ramda": ~0.30.0 + ramda: ~0.30.0 + ramda-adjunct: ^5.0.0 + checksum: 6dea1bd388662eb72c66e2dbcf66af12f5d67fad42170d339a5973dad5543ca0c766f1ca9473eb525d53ff23ce3f2c9ef88e5fd3e9330e9d0b416bc6641862dc languageName: node linkType: hard -"commander@npm:^12.0.0": - version: 12.1.0 - resolution: "commander@npm:12.1.0" - checksum: 68e9818b00fc1ed9cdab9eb16905551c2b768a317ae69a5e3c43924c2b20ac9bb65b27e1cab36aeda7b6496376d4da908996ba2c0b5d79463e0fb1e77935d514 +"@swagger-api/apidom-parser-adapter-openapi-yaml-3-0@npm:^1.0.0-beta.3 <1.0.0-rc.0": + version: 1.0.0-beta.5 + resolution: "@swagger-api/apidom-parser-adapter-openapi-yaml-3-0@npm:1.0.0-beta.5" + dependencies: + "@babel/runtime-corejs3": ^7.20.7 + "@swagger-api/apidom-core": ^1.0.0-beta.5 + "@swagger-api/apidom-ns-openapi-3-0": ^1.0.0-beta.5 + "@swagger-api/apidom-parser-adapter-yaml-1-2": ^1.0.0-beta.5 + "@types/ramda": ~0.30.0 + ramda: ~0.30.0 + ramda-adjunct: ^5.0.0 + checksum: 732eacbeb5baf8bdddc22c6f14b00740742ef16318e06eefdac49175dbb7887a28cf9e0e6521962d042ea0de45f8fceb8d2858833f46d7773338a8d94cf09d78 languageName: node linkType: hard -"commander@npm:^2.20.0": - version: 2.20.3 - resolution: "commander@npm:2.20.3" - checksum: ab8c07884e42c3a8dbc5dd9592c606176c7eb5c1ca5ff274bcf907039b2c41de3626f684ea75ccf4d361ba004bbaff1f577d5384c155f3871e456bdf27becf9e +"@swagger-api/apidom-parser-adapter-openapi-yaml-3-1@npm:^1.0.0-beta.3 <1.0.0-rc.0": + version: 1.0.0-beta.5 + resolution: "@swagger-api/apidom-parser-adapter-openapi-yaml-3-1@npm:1.0.0-beta.5" + dependencies: + "@babel/runtime-corejs3": ^7.20.7 + "@swagger-api/apidom-core": ^1.0.0-beta.5 + "@swagger-api/apidom-ns-openapi-3-1": ^1.0.0-beta.5 + "@swagger-api/apidom-parser-adapter-yaml-1-2": ^1.0.0-beta.5 + "@types/ramda": ~0.30.0 + ramda: ~0.30.0 + ramda-adjunct: ^5.0.0 + checksum: 91bbd995e57664e6661f4abd79ab4666d65597c7deadd559d1716d766927c248e88701917c85176c85b980d25448cdae52233d7e2e9e2a71a2a154a920f49100 languageName: node linkType: hard -"commander@npm:^4.0.0, commander@npm:^4.1.1": - version: 4.1.1 - resolution: "commander@npm:4.1.1" - checksum: d7b9913ff92cae20cb577a4ac6fcc121bd6223319e54a40f51a14740a681ad5c574fd29a57da478a5f234a6fa6c52cbf0b7c641353e03c648b1ae85ba670b977 +"@swagger-api/apidom-parser-adapter-workflows-json-1@npm:^1.0.0-beta.3 <1.0.0-rc.0": + version: 1.0.0-beta.5 + resolution: "@swagger-api/apidom-parser-adapter-workflows-json-1@npm:1.0.0-beta.5" + dependencies: + "@babel/runtime-corejs3": ^7.20.7 + "@swagger-api/apidom-core": ^1.0.0-beta.5 + "@swagger-api/apidom-ns-workflows-1": ^1.0.0-beta.5 + "@swagger-api/apidom-parser-adapter-json": ^1.0.0-beta.5 + "@types/ramda": ~0.30.0 + ramda: ~0.30.0 + ramda-adjunct: ^5.0.0 + checksum: 8d8fc6f59daa023d4f1cdb10264f211d950d10193cbe655f14090a6951475f3f0445f969c042865c995238dfaea070c443f239fbbc6fca321926741455150fc4 languageName: node linkType: hard -"commander@npm:^6.2.1": - version: 6.2.1 - resolution: "commander@npm:6.2.1" - checksum: d7090410c0de6bc5c67d3ca41c41760d6d268f3c799e530aafb73b7437d1826bbf0d2a3edac33f8b57cc9887b4a986dce307fa5557e109be40eadb7c43b21742 +"@swagger-api/apidom-parser-adapter-workflows-yaml-1@npm:^1.0.0-beta.3 <1.0.0-rc.0": + version: 1.0.0-beta.5 + resolution: "@swagger-api/apidom-parser-adapter-workflows-yaml-1@npm:1.0.0-beta.5" + dependencies: + "@babel/runtime-corejs3": ^7.20.7 + "@swagger-api/apidom-core": ^1.0.0-beta.5 + "@swagger-api/apidom-ns-workflows-1": ^1.0.0-beta.5 + "@swagger-api/apidom-parser-adapter-yaml-1-2": ^1.0.0-beta.5 + "@types/ramda": ~0.30.0 + ramda: ~0.30.0 + ramda-adjunct: ^5.0.0 + checksum: 5992747478d8e6b7f09894a58edad2063a8f6eca3c7ee5b2af399dcc5b0a5d7d01d0555eb02f47556e3299a3e59c9ac029c7c7f2217474dcac2eb9090f9ebd40 languageName: node linkType: hard -"commander@npm:^7.2.0": - version: 7.2.0 - resolution: "commander@npm:7.2.0" - checksum: 53501cbeee61d5157546c0bef0fedb6cdfc763a882136284bed9a07225f09a14b82d2a84e7637edfd1a679fb35ed9502fd58ef1d091e6287f60d790147f68ddc +"@swagger-api/apidom-parser-adapter-yaml-1-2@npm:^1.0.0-beta.3 <1.0.0-rc.0, @swagger-api/apidom-parser-adapter-yaml-1-2@npm:^1.0.0-beta.5": + version: 1.0.0-beta.5 + resolution: "@swagger-api/apidom-parser-adapter-yaml-1-2@npm:1.0.0-beta.5" + dependencies: + "@babel/runtime-corejs3": ^7.20.7 + "@swagger-api/apidom-ast": ^1.0.0-beta.5 + "@swagger-api/apidom-core": ^1.0.0-beta.5 + "@swagger-api/apidom-error": ^1.0.0-beta.5 + "@tree-sitter-grammars/tree-sitter-yaml": =0.7.0 + "@types/ramda": ~0.30.0 + node-gyp: latest + ramda: ~0.30.0 + ramda-adjunct: ^5.0.0 + tree-sitter: =0.22.1 + web-tree-sitter: =0.24.5 + checksum: 3bcfd8d08239d2cabb46f6c639f11d7175729caa059b1c439be7b95edaa5b7b54593e3e2e630de3267db6c0da1a5955204c127fa9aac82892650a444c19ed54f + languageName: node + linkType: hard + +"@swagger-api/apidom-reference@npm:>=1.0.0-beta.3 <1.0.0-rc.0": + version: 1.0.0-beta.5 + resolution: "@swagger-api/apidom-reference@npm:1.0.0-beta.5" + dependencies: + "@babel/runtime-corejs3": ^7.20.7 + "@swagger-api/apidom-core": ^1.0.0-beta.5 + "@swagger-api/apidom-error": ^1.0.0-beta.3 <1.0.0-rc.0 + "@swagger-api/apidom-json-pointer": ^1.0.0-beta.3 <1.0.0-rc.0 + "@swagger-api/apidom-ns-asyncapi-2": ^1.0.0-beta.3 <1.0.0-rc.0 + "@swagger-api/apidom-ns-openapi-2": ^1.0.0-beta.3 <1.0.0-rc.0 + "@swagger-api/apidom-ns-openapi-3-0": ^1.0.0-beta.3 <1.0.0-rc.0 + "@swagger-api/apidom-ns-openapi-3-1": ^1.0.0-beta.3 <1.0.0-rc.0 + "@swagger-api/apidom-ns-workflows-1": ^1.0.0-beta.3 <1.0.0-rc.0 + "@swagger-api/apidom-parser-adapter-api-design-systems-json": ^1.0.0-beta.3 <1.0.0-rc.0 + "@swagger-api/apidom-parser-adapter-api-design-systems-yaml": ^1.0.0-beta.3 <1.0.0-rc.0 + "@swagger-api/apidom-parser-adapter-asyncapi-json-2": ^1.0.0-beta.3 <1.0.0-rc.0 + "@swagger-api/apidom-parser-adapter-asyncapi-yaml-2": ^1.0.0-beta.3 <1.0.0-rc.0 + "@swagger-api/apidom-parser-adapter-json": ^1.0.0-beta.3 <1.0.0-rc.0 + "@swagger-api/apidom-parser-adapter-openapi-json-2": ^1.0.0-beta.3 <1.0.0-rc.0 + "@swagger-api/apidom-parser-adapter-openapi-json-3-0": ^1.0.0-beta.3 <1.0.0-rc.0 + "@swagger-api/apidom-parser-adapter-openapi-json-3-1": ^1.0.0-beta.3 <1.0.0-rc.0 + "@swagger-api/apidom-parser-adapter-openapi-yaml-2": ^1.0.0-beta.3 <1.0.0-rc.0 + "@swagger-api/apidom-parser-adapter-openapi-yaml-3-0": ^1.0.0-beta.3 <1.0.0-rc.0 + "@swagger-api/apidom-parser-adapter-openapi-yaml-3-1": ^1.0.0-beta.3 <1.0.0-rc.0 + "@swagger-api/apidom-parser-adapter-workflows-json-1": ^1.0.0-beta.3 <1.0.0-rc.0 + "@swagger-api/apidom-parser-adapter-workflows-yaml-1": ^1.0.0-beta.3 <1.0.0-rc.0 + "@swagger-api/apidom-parser-adapter-yaml-1-2": ^1.0.0-beta.3 <1.0.0-rc.0 + "@types/ramda": ~0.30.0 + axios: ^1.7.4 + minimatch: ^7.4.3 + process: ^0.11.10 + ramda: ~0.30.0 + ramda-adjunct: ^5.0.0 + dependenciesMeta: + "@swagger-api/apidom-error": + optional: true + "@swagger-api/apidom-json-pointer": + optional: true + "@swagger-api/apidom-ns-asyncapi-2": + optional: true + "@swagger-api/apidom-ns-openapi-2": + optional: true + "@swagger-api/apidom-ns-openapi-3-0": + optional: true + "@swagger-api/apidom-ns-openapi-3-1": + optional: true + "@swagger-api/apidom-ns-workflows-1": + optional: true + "@swagger-api/apidom-parser-adapter-api-design-systems-json": + optional: true + "@swagger-api/apidom-parser-adapter-api-design-systems-yaml": + optional: true + "@swagger-api/apidom-parser-adapter-asyncapi-json-2": + optional: true + "@swagger-api/apidom-parser-adapter-asyncapi-yaml-2": + optional: true + "@swagger-api/apidom-parser-adapter-json": + optional: true + "@swagger-api/apidom-parser-adapter-openapi-json-2": + optional: true + "@swagger-api/apidom-parser-adapter-openapi-json-3-0": + optional: true + "@swagger-api/apidom-parser-adapter-openapi-json-3-1": + optional: true + "@swagger-api/apidom-parser-adapter-openapi-yaml-2": + optional: true + "@swagger-api/apidom-parser-adapter-openapi-yaml-3-0": + optional: true + "@swagger-api/apidom-parser-adapter-openapi-yaml-3-1": + optional: true + "@swagger-api/apidom-parser-adapter-workflows-json-1": + optional: true + "@swagger-api/apidom-parser-adapter-workflows-yaml-1": + optional: true + "@swagger-api/apidom-parser-adapter-yaml-1-2": + optional: true + checksum: 990d7bf29a5e18f21534149a38c7ae2fc8a0a040cca20c7aea4d241e3b0551e48af1d32d560ef8b80edd80b5369d0a1b7cb7a7a49aa089d984f535058381314a languageName: node linkType: hard -"commander@npm:^9.1.0": - version: 9.5.0 - resolution: "commander@npm:9.5.0" - checksum: c7a3e27aa59e913b54a1bafd366b88650bc41d6651f0cbe258d4ff09d43d6a7394232a4dadd0bf518b3e696fdf595db1028a0d82c785b88bd61f8a440cecfade +"@swc/core-darwin-arm64@npm:1.7.40": + version: 1.7.40 + resolution: "@swc/core-darwin-arm64@npm:1.7.40" + conditions: os=darwin & cpu=arm64 languageName: node linkType: hard -"commondir@npm:^1.0.1": - version: 1.0.1 - resolution: "commondir@npm:1.0.1" - checksum: 59715f2fc456a73f68826285718503340b9f0dd89bfffc42749906c5cf3d4277ef11ef1cca0350d0e79204f00f1f6d83851ececc9095dc88512a697ac0b9bdcb +"@swc/core-darwin-x64@npm:1.7.40": + version: 1.7.40 + resolution: "@swc/core-darwin-x64@npm:1.7.40" + conditions: os=darwin & cpu=x64 languageName: node linkType: hard -"compare-versions@npm:4.1.4": - version: 4.1.4 - resolution: "compare-versions@npm:4.1.4" - checksum: c1617544b79c2f36a1d543c50efd0da1a994040294c8923218080bc0df46da83ca414e3378282e93cab073744995124946417d130d8987e8efb5d1a73c0c4ba6 +"@swc/core-linux-arm-gnueabihf@npm:1.7.40": + version: 1.7.40 + resolution: "@swc/core-linux-arm-gnueabihf@npm:1.7.40" + conditions: os=linux & cpu=arm languageName: node linkType: hard -"component-emitter@npm:^1.3.0": - version: 1.3.1 - resolution: "component-emitter@npm:1.3.1" - checksum: 94550aa462c7bd5a61c1bc480e28554aa306066930152d1b1844a0dd3845d4e5db7e261ddec62ae184913b3e59b55a2ad84093b9d3596a8f17c341514d6c483d +"@swc/core-linux-arm64-gnu@npm:1.7.40": + version: 1.7.40 + resolution: "@swc/core-linux-arm64-gnu@npm:1.7.40" + conditions: os=linux & cpu=arm64 & libc=glibc languageName: node linkType: hard -"compress-commons@npm:^6.0.2": - version: 6.0.2 - resolution: "compress-commons@npm:6.0.2" - dependencies: - crc-32: ^1.2.0 - crc32-stream: ^6.0.0 - is-stream: ^2.0.1 - normalize-path: ^3.0.0 - readable-stream: ^4.0.0 - checksum: 37d79a54f91344ecde352588e0a128f28ce619b085acd4f887defd76978a0640e3454a42c7dcadb0191bb3f971724ae4b1f9d6ef9620034aa0427382099ac946 +"@swc/core-linux-arm64-musl@npm:1.7.40": + version: 1.7.40 + resolution: "@swc/core-linux-arm64-musl@npm:1.7.40" + conditions: os=linux & cpu=arm64 & libc=musl languageName: node linkType: hard -"compressible@npm:~2.0.16": - version: 2.0.18 - resolution: "compressible@npm:2.0.18" - dependencies: - mime-db: ">= 1.43.0 < 2" - checksum: 58321a85b375d39230405654721353f709d0c1442129e9a17081771b816302a012471a9b8f4864c7dbe02eef7f2aaac3c614795197092262e94b409c9be108f0 +"@swc/core-linux-x64-gnu@npm:1.7.40": + version: 1.7.40 + resolution: "@swc/core-linux-x64-gnu@npm:1.7.40" + conditions: os=linux & cpu=x64 & libc=glibc languageName: node linkType: hard -"compression@npm:^1.7.4": - version: 1.7.4 - resolution: "compression@npm:1.7.4" - dependencies: - accepts: ~1.3.5 - bytes: 3.0.0 - compressible: ~2.0.16 - debug: 2.6.9 - on-headers: ~1.0.2 - safe-buffer: 5.1.2 - vary: ~1.1.2 - checksum: 35c0f2eb1f28418978615dc1bc02075b34b1568f7f56c62d60f4214d4b7cc00d0f6d282b5f8a954f59872396bd770b6b15ffd8aa94c67d4bce9b8887b906999b +"@swc/core-linux-x64-musl@npm:1.7.40": + version: 1.7.40 + resolution: "@swc/core-linux-x64-musl@npm:1.7.40" + conditions: os=linux & cpu=x64 & libc=musl languageName: node linkType: hard -"compute-gcd@npm:^1.2.1": - version: 1.2.1 - resolution: "compute-gcd@npm:1.2.1" - dependencies: - validate.io-array: ^1.0.3 - validate.io-function: ^1.0.2 - validate.io-integer-array: ^1.0.0 - checksum: 51cf33b75f7c8db5142fcb99a9d84a40260993fed8e02a7ab443834186c3ab99b3fd20b30ad9075a6a9d959d69df6da74dd3be8a59c78d9f2fe780ebda8242e1 +"@swc/core-win32-arm64-msvc@npm:1.7.40": + version: 1.7.40 + resolution: "@swc/core-win32-arm64-msvc@npm:1.7.40" + conditions: os=win32 & cpu=arm64 languageName: node linkType: hard -"compute-lcm@npm:^1.1.2": - version: 1.1.2 - resolution: "compute-lcm@npm:1.1.2" - dependencies: - compute-gcd: ^1.2.1 - validate.io-array: ^1.0.3 - validate.io-function: ^1.0.2 - validate.io-integer-array: ^1.0.0 - checksum: d499ab57dcb48e8d0fd233b99844a06d1cc56115602c920c586e998ebba60293731f5b6976e8a1e83ae6cbfe86716f62d9432e8d94913fed8bd8352f447dc917 +"@swc/core-win32-ia32-msvc@npm:1.7.40": + version: 1.7.40 + resolution: "@swc/core-win32-ia32-msvc@npm:1.7.40" + conditions: os=win32 & cpu=ia32 languageName: node linkType: hard -"concat-map@npm:0.0.1": - version: 0.0.1 - resolution: "concat-map@npm:0.0.1" - checksum: 902a9f5d8967a3e2faf138d5cb784b9979bad2e6db5357c5b21c568df4ebe62bcb15108af1b2253744844eb964fc023fbd9afbbbb6ddd0bcc204c6fb5b7bf3af +"@swc/core-win32-x64-msvc@npm:1.7.40": + version: 1.7.40 + resolution: "@swc/core-win32-x64-msvc@npm:1.7.40" + conditions: os=win32 & cpu=x64 languageName: node linkType: hard -"concat-stream@npm:^2.0.0": - version: 2.0.0 - resolution: "concat-stream@npm:2.0.0" +"@swc/core@npm:^1.3.46": + version: 1.7.40 + resolution: "@swc/core@npm:1.7.40" dependencies: - buffer-from: ^1.0.0 - inherits: ^2.0.3 - readable-stream: ^3.0.2 - typedarray: ^0.0.6 - checksum: d7f75d48f0ecd356c1545d87e22f57b488172811b1181d96021c7c4b14ab8855f5313280263dca44bb06e5222f274d047da3e290a38841ef87b59719bde967c7 + "@swc/core-darwin-arm64": 1.7.40 + "@swc/core-darwin-x64": 1.7.40 + "@swc/core-linux-arm-gnueabihf": 1.7.40 + "@swc/core-linux-arm64-gnu": 1.7.40 + "@swc/core-linux-arm64-musl": 1.7.40 + "@swc/core-linux-x64-gnu": 1.7.40 + "@swc/core-linux-x64-musl": 1.7.40 + "@swc/core-win32-arm64-msvc": 1.7.40 + "@swc/core-win32-ia32-msvc": 1.7.40 + "@swc/core-win32-x64-msvc": 1.7.40 + "@swc/counter": ^0.1.3 + "@swc/types": ^0.1.13 + peerDependencies: + "@swc/helpers": "*" + dependenciesMeta: + "@swc/core-darwin-arm64": + optional: true + "@swc/core-darwin-x64": + optional: true + "@swc/core-linux-arm-gnueabihf": + optional: true + "@swc/core-linux-arm64-gnu": + optional: true + "@swc/core-linux-arm64-musl": + optional: true + "@swc/core-linux-x64-gnu": + optional: true + "@swc/core-linux-x64-musl": + optional: true + "@swc/core-win32-arm64-msvc": + optional: true + "@swc/core-win32-ia32-msvc": + optional: true + "@swc/core-win32-x64-msvc": + optional: true + peerDependenciesMeta: + "@swc/helpers": + optional: true + checksum: edd6554056b7fc8931d82327201c615d7b51d281f51da92ca807d9e2aa45a3f7e52be4b7c77d0913ac3b20703f21e2c430d3537b92e684688e21a0c02622160c languageName: node linkType: hard -"concat-with-sourcemaps@npm:^1.1.0": - version: 1.1.0 - resolution: "concat-with-sourcemaps@npm:1.1.0" +"@swc/counter@npm:^0.1.3": + version: 0.1.3 + resolution: "@swc/counter@npm:0.1.3" + checksum: df8f9cfba9904d3d60f511664c70d23bb323b3a0803ec9890f60133954173047ba9bdeabce28cd70ba89ccd3fd6c71c7b0bd58be85f611e1ffbe5d5c18616598 + languageName: node + linkType: hard + +"@swc/helpers@npm:^0.5.0": + version: 0.5.13 + resolution: "@swc/helpers@npm:0.5.13" dependencies: - source-map: ^0.6.1 - checksum: 57faa6f4a6f38a1846a58f96b2745ec8435755e0021f069e89085c651d091b78d9bc20807ea76c38c85021acca80dc2fa4cedda666aade169b602604215d25b9 + tslib: ^2.4.0 + checksum: d50c2c10da6ef940af423c6b03ad9c3c94cf9de59314b1e921a7d1bcc081a6074481c9d67b655fc8fe66a73288f98b25950743792a63882bfb5793b362494fc0 languageName: node linkType: hard -"concurrently@npm:6.5.1": - version: 6.5.1 - resolution: "concurrently@npm:6.5.1" +"@swc/helpers@npm:^0.5.8": + version: 0.5.15 + resolution: "@swc/helpers@npm:0.5.15" dependencies: - chalk: ^4.1.0 - date-fns: ^2.16.1 - lodash: ^4.17.21 - rxjs: ^6.6.3 - spawn-command: ^0.0.2-1 - supports-color: ^8.1.0 - tree-kill: ^1.2.2 - yargs: ^16.2.0 - bin: - concurrently: bin/concurrently.js - checksum: 3f4d89b464fa5c9fb6f9489b46594c30ba54eff6ff10ab3cb5f30f64b74c83be664623a0f0cc731a3cb3f057a1f4a3292f7d3470c012a292c44aca31f214a3fa + tslib: ^2.8.0 + checksum: 1a9e0dbb792b2d1e0c914d69c201dbc96af3a0e6e6e8cf5a7f7d6a5d7b0e8b762915cd4447acb6b040e2ecc1ed49822875a7239f99a2d63c96c3c3407fb6fccf languageName: node linkType: hard -"connect-history-api-fallback@npm:^2.0.0": - version: 2.0.0 - resolution: "connect-history-api-fallback@npm:2.0.0" - checksum: dc5368690f4a5c413889792f8df70d5941ca9da44523cde3f87af0745faee5ee16afb8195434550f0504726642734f2683d6c07f8b460f828a12c45fbd4c9a68 +"@swc/jest@npm:^0.2.22": + version: 0.2.36 + resolution: "@swc/jest@npm:0.2.36" + dependencies: + "@jest/create-cache-key-function": ^29.7.0 + "@swc/counter": ^0.1.3 + jsonc-parser: ^3.2.0 + peerDependencies: + "@swc/core": "*" + checksum: 14f2e696ac093e23dae1e2e57d894bbcde4de6fe80341a26c8d0d8cbae5aae31832f8fa32dc698529f128d19a76aeedf2227f59480de6dab5eb3f30bfdf9b71a languageName: node linkType: hard -"consola@npm:^2.15.0": - version: 2.15.3 - resolution: "consola@npm:2.15.3" - checksum: 8ef7a09b703ec67ac5c389a372a33b6dc97eda6c9876443a60d76a3076eea0259e7f67a4e54fd5a52f97df73690822d090cf8b7e102b5761348afef7c6d03e28 +"@swc/types@npm:^0.1.13": + version: 0.1.13 + resolution: "@swc/types@npm:0.1.13" + dependencies: + "@swc/counter": ^0.1.3 + checksum: 4d9ef0fba20e410bee38b20b60eeb284a1284c1cf6b5f84754b6f5e467e5e0621e2db67dc31e22c524a8d63f36d0a1d530126cd97752a85f140d91bf53553e01 languageName: node linkType: hard -"console-browserify@npm:^1.1.0": - version: 1.2.0 - resolution: "console-browserify@npm:1.2.0" - checksum: 226591eeff8ed68e451dffb924c1fb750c654d54b9059b3b261d360f369d1f8f70650adecf2c7136656236a4bfeb55c39281b5d8a55d792ebbb99efd3d848d52 +"@tanstack/react-virtual@npm:^3.0.0-beta.60": + version: 3.11.2 + resolution: "@tanstack/react-virtual@npm:3.11.2" + dependencies: + "@tanstack/virtual-core": 3.11.2 + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + checksum: a1136da0ec4c2ecbd4f996d8b84f228f0b8d851b15806e01049a160ad1d9b2eef0e0a491035fe017c6f84a0e125334f69ea23b32c180df23614ea4a8eeb7490c languageName: node linkType: hard -"console-control-strings@npm:^1.1.0": - version: 1.1.0 - resolution: "console-control-strings@npm:1.1.0" - checksum: 8755d76787f94e6cf79ce4666f0c5519906d7f5b02d4b884cf41e11dcd759ed69c57da0670afd9236d229a46e0f9cf519db0cd829c6dca820bb5a5c3def584ed +"@tanstack/virtual-core@npm:3.11.2": + version: 3.11.2 + resolution: "@tanstack/virtual-core@npm:3.11.2" + checksum: b5c91662461e3edd1cba0efbaa89e1d061c8bb605bb78d1e87e2a687335c740a731c96a81798b05491df4882ff2fbd27b312f5e7440e4f9d553a81fb2283156a languageName: node linkType: hard -"console.table@npm:0.10.0": - version: 0.10.0 - resolution: "console.table@npm:0.10.0" +"@testing-library/dom@npm:^10.0.0": + version: 10.4.0 + resolution: "@testing-library/dom@npm:10.4.0" dependencies: - easy-table: 1.1.0 - checksum: 4c1460e3105a5f7df5bfa372844104a20e487fc0fccc5821c169a39def3249759554fc132621074ad6695664a1a8d558dd385c0e7f290acb2eaca51466474bb9 + "@babel/code-frame": ^7.10.4 + "@babel/runtime": ^7.12.5 + "@types/aria-query": ^5.0.1 + aria-query: 5.3.0 + chalk: ^4.1.0 + dom-accessibility-api: ^0.5.9 + lz-string: ^1.5.0 + pretty-format: ^27.0.2 + checksum: bb128b90be0c8cd78c5f5e67aa45f53de614cc048a2b50b230e736ec710805ac6c73375af354b83c74d710b3928d52b83a273a4cb89de4eb3efe49e91e706837 languageName: node linkType: hard -"constants-browserify@npm:^1.0.0": - version: 1.0.0 - resolution: "constants-browserify@npm:1.0.0" - checksum: f7ac8c6d0b6e4e0c77340a1d47a3574e25abd580bfd99ad707b26ff7618596cf1a5e5ce9caf44715e9e01d4a5d12cb3b4edaf1176f34c19adb2874815a56e64f +"@testing-library/dom@npm:^9.0.0": + version: 9.3.4 + resolution: "@testing-library/dom@npm:9.3.4" + dependencies: + "@babel/code-frame": ^7.10.4 + "@babel/runtime": ^7.12.5 + "@types/aria-query": ^5.0.1 + aria-query: 5.1.3 + chalk: ^4.1.0 + dom-accessibility-api: ^0.5.9 + lz-string: ^1.5.0 + pretty-format: ^27.0.2 + checksum: dfd6fb0d6c7b4dd716ba3c47309bc9541b4a55772cb61758b4f396b3785efe2dbc75dc63423545c039078c7ffcc5e4b8c67c2db1b6af4799580466036f70026f languageName: node linkType: hard -"content-disposition@npm:0.5.4, content-disposition@npm:~0.5.2": - version: 0.5.4 - resolution: "content-disposition@npm:0.5.4" +"@testing-library/jest-dom@npm:^6.0.0": + version: 6.6.3 + resolution: "@testing-library/jest-dom@npm:6.6.3" dependencies: - safe-buffer: 5.2.1 - checksum: afb9d545e296a5171d7574fcad634b2fdf698875f4006a9dd04a3e1333880c5c0c98d47b560d01216fb6505a54a2ba6a843ee3a02ec86d7e911e8315255f56c3 + "@adobe/css-tools": ^4.4.0 + aria-query: ^5.0.0 + chalk: ^3.0.0 + css.escape: ^1.5.1 + dom-accessibility-api: ^0.6.3 + lodash: ^4.17.21 + redent: ^3.0.0 + checksum: c1dc4260b05309a0084416639006cd105849acc5b102bef682a3b19bd6fce07ff6762085fc7f2599546c995a2fc66fdb1d70e50e22a634a0098524056cc9e511 languageName: node linkType: hard -"content-type@npm:^1.0.4, content-type@npm:~1.0.4, content-type@npm:~1.0.5": - version: 1.0.5 - resolution: "content-type@npm:1.0.5" - checksum: 566271e0a251642254cde0f845f9dd4f9856e52d988f4eb0d0dcffbb7a1f8ec98de7a5215fc628f3bce30fe2fb6fd2bc064b562d721658c59b544e2d34ea2766 +"@testing-library/react@npm:^14.0.0": + version: 14.3.1 + resolution: "@testing-library/react@npm:14.3.1" + dependencies: + "@babel/runtime": ^7.12.5 + "@testing-library/dom": ^9.0.0 + "@types/react-dom": ^18.0.0 + peerDependencies: + react: ^18.0.0 + react-dom: ^18.0.0 + checksum: b057d4c9db5a523acfc24d7bc4665a924ab8d6f252c7f51eecf7dd30f1239413e1134925fd5cc9cbdef80496af64c04e6719b2081f89fe05ba87e8c6305bcc16 languageName: node linkType: hard -"convert-source-map@npm:^2.0.0": - version: 2.0.0 - resolution: "convert-source-map@npm:2.0.0" - checksum: 63ae9933be5a2b8d4509daca5124e20c14d023c820258e484e32dc324d34c2754e71297c94a05784064ad27615037ef677e3f0c00469fb55f409d2bb21261035 +"@testing-library/react@npm:^15.0.0": + version: 15.0.7 + resolution: "@testing-library/react@npm:15.0.7" + dependencies: + "@babel/runtime": ^7.12.5 + "@testing-library/dom": ^10.0.0 + "@types/react-dom": ^18.0.0 + peerDependencies: + "@types/react": ^18.0.0 + react: ^18.0.0 + react-dom: ^18.0.0 + peerDependenciesMeta: + "@types/react": + optional: true + checksum: eb33fd82eb811bb8612aa154e430a2c1c251d5ed45a477ef57fe20095db494ea7dcfa6b1e1e2bffb0c7ee10c86e408745d95a879be8ca8fbe301bb91e5f2e5db languageName: node linkType: hard -"cookie-signature@npm:1.0.6": - version: 1.0.6 - resolution: "cookie-signature@npm:1.0.6" - checksum: f4e1b0a98a27a0e6e66fd7ea4e4e9d8e038f624058371bf4499cfcd8f3980be9a121486995202ba3fca74fbed93a407d6d54d43a43f96fd28d0bd7a06761591a +"@testing-library/react@npm:^16.0.0": + version: 16.1.0 + resolution: "@testing-library/react@npm:16.1.0" + dependencies: + "@babel/runtime": ^7.12.5 + peerDependencies: + "@testing-library/dom": ^10.0.0 + "@types/react": ^18.0.0 || ^19.0.0 + "@types/react-dom": ^18.0.0 || ^19.0.0 + react: ^18.0.0 || ^19.0.0 + react-dom: ^18.0.0 || ^19.0.0 + peerDependenciesMeta: + "@types/react": + optional: true + "@types/react-dom": + optional: true + checksum: 5dc8e7abda23d108c29f43cdacd43fad750e981ee87ee8902fb349a2683f2f774ef1136f2d3ef3d9efb87e8b04426c43d7b46e95511cd7c9d37b10c3bdd3e9e2 languageName: node linkType: hard -"cookie@npm:0.7.1": - version: 0.7.1 - resolution: "cookie@npm:0.7.1" - checksum: cec5e425549b3650eb5c3498a9ba3cde0b9cd419e3b36e4b92739d30b4d89e0b678b98c1ddc209ce7cf958cd3215671fd6ac47aec21f10c2a0cc68abd399d8a7 +"@testing-library/user-event@npm:^14.0.0": + version: 14.5.2 + resolution: "@testing-library/user-event@npm:14.5.2" + peerDependencies: + "@testing-library/dom": ">=7.21.4" + checksum: d76937dffcf0082fbf3bb89eb2b81a31bf5448048dd61c33928c5f10e33a58e035321d39145cefd469bb5a499c68a5b4086b22f1a44e3e7c7e817dc5f6782867 languageName: node linkType: hard -"cookie@npm:^0.4.2": - version: 0.4.2 - resolution: "cookie@npm:0.4.2" - checksum: a00833c998bedf8e787b4c342defe5fa419abd96b32f4464f718b91022586b8f1bafbddd499288e75c037642493c83083da426c6a9080d309e3bd90fd11baa9b +"@tokenizer/token@npm:^0.3.0": + version: 0.3.0 + resolution: "@tokenizer/token@npm:0.3.0" + checksum: 1d575d02d2a9f0c5a4ca5180635ebd2ad59e0f18b42a65f3d04844148b49b3db35cf00b6012a1af2d59c2ab3caca59451c5689f747ba8667ee586ad717ee58e1 languageName: node linkType: hard -"cookie@npm:^0.6.0": - version: 0.6.0 - resolution: "cookie@npm:0.6.0" - checksum: f56a7d32a07db5458e79c726b77e3c2eff655c36792f2b6c58d351fb5f61531e5b1ab7f46987150136e366c65213cbe31729e02a3eaed630c3bf7334635fb410 +"@tootallnate/once@npm:1": + version: 1.1.2 + resolution: "@tootallnate/once@npm:1.1.2" + checksum: e1fb1bbbc12089a0cb9433dc290f97bddd062deadb6178ce9bcb93bb7c1aecde5e60184bc7065aec42fe1663622a213493c48bbd4972d931aae48315f18e1be9 languageName: node linkType: hard -"cookie@npm:^0.7.0": - version: 0.7.2 - resolution: "cookie@npm:0.7.2" - checksum: 9bf8555e33530affd571ea37b615ccad9b9a34febbf2c950c86787088eb00a8973690833b0f8ebd6b69b753c62669ea60cec89178c1fb007bf0749abed74f93e +"@tootallnate/once@npm:2": + version: 2.0.0 + resolution: "@tootallnate/once@npm:2.0.0" + checksum: ad87447820dd3f24825d2d947ebc03072b20a42bfc96cbafec16bff8bbda6c1a81fcb0be56d5b21968560c5359a0af4038a68ba150c3e1694fe4c109a063bed8 languageName: node linkType: hard -"cookiejar@npm:^2.1.4": - version: 2.1.4 - resolution: "cookiejar@npm:2.1.4" - checksum: c4442111963077dc0e5672359956d6556a195d31cbb35b528356ce5f184922b99ac48245ac05ed86cf993f7df157c56da10ab3efdadfed79778a0d9b1b092d5b +"@tootallnate/quickjs-emscripten@npm:^0.23.0": + version: 0.23.0 + resolution: "@tootallnate/quickjs-emscripten@npm:0.23.0" + checksum: c350a2947ffb80b22e14ff35099fd582d1340d65723384a0fd0515e905e2534459ad2f301a43279a37308a27c99273c932e64649abd57d0bb3ca8c557150eccc languageName: node linkType: hard -"cookies@npm:~0.9.0": - version: 0.9.1 - resolution: "cookies@npm:0.9.1" +"@tree-sitter-grammars/tree-sitter-yaml@npm:=0.7.0": + version: 0.7.0 + resolution: "@tree-sitter-grammars/tree-sitter-yaml@npm:0.7.0" dependencies: - depd: ~2.0.0 - keygrip: ~1.1.0 - checksum: 213e4d14847b582fbd8a003203d3621a4b9fa792a315c37954e89332d38fac5bcc34ba92ef316ad6d5fe28f0187aaa115927fbbe2080744ad1707a93b4313247 + node-addon-api: ^8.3.0 + node-gyp: latest + node-gyp-build: ^4.8.4 + peerDependencies: + tree-sitter: ^0.22.1 + peerDependenciesMeta: + tree-sitter: + optional: true + checksum: e1483d30b3f7604b111a86f854522a5dc880f2d7fb552150628f5186063fb537631d696fc1713da040a6d4bbac8fbf8b4a7eb5cb1d72d1cfb72af1f849899961 languageName: node linkType: hard -"core-js-compat@npm:^3.38.0, core-js-compat@npm:^3.38.1": - version: 3.38.1 - resolution: "core-js-compat@npm:3.38.1" +"@trendyol-js/openstack-swift-sdk@npm:^0.0.7": + version: 0.0.7 + resolution: "@trendyol-js/openstack-swift-sdk@npm:0.0.7" dependencies: - browserslist: ^4.23.3 - checksum: a0a5673bcd59f588f0cd0b59cdacd4712b82909738a87406d334dd412eb3d273ae72b275bdd8e8fef63fca9ef12b42ed651be139c7c44c8a1acb423c8906992e + agentkeepalive: ^4.1.4 + axios: ^1.0.0 + axios-cached-dns-resolve: 0.5.2 + file-type: ^16.5.4 + checksum: 06d39c350d9c70a4fee0ff7bc12f29784a92e162b5a72dd28aacccfa523826f113d599cbb706b631f534c2dcb48cc252078e853e3dfa953c6223606d052f64b8 languageName: node linkType: hard -"core-js-pure@npm:^3.23.3": - version: 3.38.1 - resolution: "core-js-pure@npm:3.38.1" - checksum: 95ca2e75df371571b0d41cba81e1f6335a2ba1f080e80f8edfa124ad3041880fe72e10f2144527a700a3d993dbf9f7cada3e04a927a66604bc49d0c4951567fb - languageName: node - linkType: hard +"@trysound/sax@npm:0.2.0": + version: 0.2.0 + resolution: "@trysound/sax@npm:0.2.0" + checksum: 11226c39b52b391719a2a92e10183e4260d9651f86edced166da1d95f39a0a1eaa470e44d14ac685ccd6d3df7e2002433782872c0feeb260d61e80f21250e65c + languageName: node + linkType: hard -"core-util-is@npm:1.0.2": - version: 1.0.2 - resolution: "core-util-is@npm:1.0.2" - checksum: 7a4c925b497a2c91421e25bf76d6d8190f0b2359a9200dbeed136e63b2931d6294d3b1893eda378883ed363cd950f44a12a401384c609839ea616befb7927dab +"@ts-morph/common@npm:~0.24.0": + version: 0.24.0 + resolution: "@ts-morph/common@npm:0.24.0" + dependencies: + fast-glob: ^3.3.2 + minimatch: ^9.0.4 + mkdirp: ^3.0.1 + path-browserify: ^1.0.1 + checksum: 793bc8a47c93ab55c6c036f94480d3b0e948661aef4bb7dbc29279b1dda2fc4fce809a88e221537867a313541842e12d1ecbd32b4769688abe1303807ec09db6 languageName: node linkType: hard -"core-util-is@npm:~1.0.0": - version: 1.0.3 - resolution: "core-util-is@npm:1.0.3" - checksum: 9de8597363a8e9b9952491ebe18167e3b36e7707569eed0ebf14f8bba773611376466ae34575bca8cfe3c767890c859c74056084738f09d4e4a6f902b2ad7d99 +"@tsconfig/node10@npm:^1.0.7": + version: 1.0.11 + resolution: "@tsconfig/node10@npm:1.0.11" + checksum: 51fe47d55fe1b80ec35e6e5ed30a13665fd3a531945350aa74a14a1e82875fb60b350c2f2a5e72a64831b1b6bc02acb6760c30b3738b54954ec2dea82db7a267 languageName: node linkType: hard -"cors@npm:^2.8.5": - version: 2.8.5 - resolution: "cors@npm:2.8.5" - dependencies: - object-assign: ^4 - vary: ^1 - checksum: ced838404ccd184f61ab4fdc5847035b681c90db7ac17e428f3d81d69e2989d2b680cc254da0e2554f5ed4f8a341820a1ce3d1c16b499f6e2f47a1b9b07b5006 +"@tsconfig/node12@npm:^1.0.7": + version: 1.0.11 + resolution: "@tsconfig/node12@npm:1.0.11" + checksum: 5ce29a41b13e7897a58b8e2df11269c5395999e588b9a467386f99d1d26f6c77d1af2719e407621412520ea30517d718d5192a32403b8dfcc163bf33e40a338a languageName: node linkType: hard -"cosmiconfig@npm:^6.0.0": - version: 6.0.0 - resolution: "cosmiconfig@npm:6.0.0" - dependencies: - "@types/parse-json": ^4.0.0 - import-fresh: ^3.1.0 - parse-json: ^5.0.0 - path-type: ^4.0.0 - yaml: ^1.7.2 - checksum: 8eed7c854b91643ecb820767d0deb038b50780ecc3d53b0b19e03ed8aabed4ae77271198d1ae3d49c3b110867edf679f5faad924820a8d1774144a87cb6f98fc +"@tsconfig/node14@npm:^1.0.0": + version: 1.0.3 + resolution: "@tsconfig/node14@npm:1.0.3" + checksum: 19275fe80c4c8d0ad0abed6a96dbf00642e88b220b090418609c4376e1cef81bf16237bf170ad1b341452feddb8115d8dd2e5acdfdea1b27422071163dc9ba9d languageName: node linkType: hard -"cosmiconfig@npm:^7.0.1": - version: 7.1.0 - resolution: "cosmiconfig@npm:7.1.0" - dependencies: - "@types/parse-json": ^4.0.0 - import-fresh: ^3.2.1 - parse-json: ^5.0.0 - path-type: ^4.0.0 - yaml: ^1.10.0 - checksum: c53bf7befc1591b2651a22414a5e786cd5f2eeaa87f3678a3d49d6069835a9d8d1aef223728e98aa8fec9a95bf831120d245096db12abe019fecb51f5696c96f +"@tsconfig/node16@npm:^1.0.2": + version: 1.0.4 + resolution: "@tsconfig/node16@npm:1.0.4" + checksum: 202319785901f942a6e1e476b872d421baec20cf09f4b266a1854060efbf78cde16a4d256e8bc949d31e6cd9a90f1e8ef8fb06af96a65e98338a2b6b0de0a0ff languageName: node linkType: hard -"cosmiconfig@npm:^8.1.3, cosmiconfig@npm:^8.2.0": - version: 8.3.6 - resolution: "cosmiconfig@npm:8.3.6" - dependencies: - import-fresh: ^3.3.0 - js-yaml: ^4.1.0 - parse-json: ^5.2.0 - path-type: ^4.0.0 - peerDependencies: - typescript: ">=4.9.5" - peerDependenciesMeta: - typescript: - optional: true - checksum: dc339ebea427898c9e03bf01b56ba7afbac07fc7d2a2d5a15d6e9c14de98275a9565da949375aee1809591c152c0a3877bb86dbeaf74d5bd5aaa79955ad9e7a0 +"@types/argparse@npm:1.0.38": + version: 1.0.38 + resolution: "@types/argparse@npm:1.0.38" + checksum: 26ed7e3f1e3595efdb883a852f5205f971b798e4c28b7e30a32c5298eee596e8b45834ce831f014d250b9730819ab05acff5b31229666d3af4ba465b4697d0eb languageName: node linkType: hard -"cpu-features@npm:~0.0.10": - version: 0.0.10 - resolution: "cpu-features@npm:0.0.10" - dependencies: - buildcheck: ~0.0.6 - nan: ^2.19.0 - node-gyp: latest - checksum: ab17e25cea0b642bdcfd163d3d872be4cc7d821e854d41048557799e990d672ee1cc7bd1d4e7c4de0309b1683d4c001d36ba8569b5035d1e7e2ff2d681f681d7 +"@types/aria-query@npm:^5.0.1": + version: 5.0.4 + resolution: "@types/aria-query@npm:5.0.4" + checksum: ad8b87e4ad64255db5f0a73bc2b4da9b146c38a3a8ab4d9306154334e0fc67ae64e76bfa298eebd1e71830591fb15987e5de7111bdb36a2221bdc379e3415fb0 languageName: node linkType: hard -"crc-32@npm:^1.2.0": - version: 1.2.2 - resolution: "crc-32@npm:1.2.2" - bin: - crc32: bin/crc32.njs - checksum: ad2d0ad0cbd465b75dcaeeff0600f8195b686816ab5f3ba4c6e052a07f728c3e70df2e3ca9fd3d4484dc4ba70586e161ca5a2334ec8bf5a41bf022a6103ff243 +"@types/aws-lambda@npm:^8.10.83": + version: 8.10.145 + resolution: "@types/aws-lambda@npm:8.10.145" + checksum: 4beb4febe8eb7da3087e009b4d1df61de5e9a7336792424254ca1e24740e17ee701de21423a125dcd26afb499003557e717cc824e24c47c916d2de6b0c245482 languageName: node linkType: hard -"crc32-stream@npm:^6.0.0": - version: 6.0.0 - resolution: "crc32-stream@npm:6.0.0" +"@types/babel__core@npm:^7.1.14": + version: 7.20.5 + resolution: "@types/babel__core@npm:7.20.5" dependencies: - crc-32: ^1.2.0 - readable-stream: ^4.0.0 - checksum: e6edc2f81bc387daef6d18b2ac18c2ffcb01b554d3b5c7d8d29b177505aafffba574658fdd23922767e8dab1183d1962026c98c17e17fb272794c33293ef607c + "@babel/parser": ^7.20.7 + "@babel/types": ^7.20.7 + "@types/babel__generator": "*" + "@types/babel__template": "*" + "@types/babel__traverse": "*" + checksum: a3226f7930b635ee7a5e72c8d51a357e799d19cbf9d445710fa39ab13804f79ab1a54b72ea7d8e504659c7dfc50675db974b526142c754398d7413aa4bc30845 languageName: node linkType: hard -"create-ecdh@npm:^4.0.4": - version: 4.0.4 - resolution: "create-ecdh@npm:4.0.4" +"@types/babel__generator@npm:*": + version: 7.6.8 + resolution: "@types/babel__generator@npm:7.6.8" dependencies: - bn.js: ^4.1.0 - elliptic: ^6.5.3 - checksum: 0dd7fca9711d09e152375b79acf1e3f306d1a25ba87b8ff14c2fd8e68b83aafe0a7dd6c4e540c9ffbdd227a5fa1ad9b81eca1f233c38bb47770597ba247e614b + "@babel/types": ^7.0.0 + checksum: 5b332ea336a2efffbdeedb92b6781949b73498606ddd4205462f7d96dafd45ff3618770b41de04c4881e333dd84388bfb8afbdf6f2764cbd98be550d85c6bb48 languageName: node linkType: hard -"create-hash@npm:^1.1.0, create-hash@npm:^1.1.2, create-hash@npm:^1.2.0": - version: 1.2.0 - resolution: "create-hash@npm:1.2.0" +"@types/babel__template@npm:*": + version: 7.4.4 + resolution: "@types/babel__template@npm:7.4.4" dependencies: - cipher-base: ^1.0.1 - inherits: ^2.0.1 - md5.js: ^1.3.4 - ripemd160: ^2.0.1 - sha.js: ^2.4.0 - checksum: 02a6ae3bb9cd4afee3fabd846c1d8426a0e6b495560a977ba46120c473cb283be6aa1cace76b5f927cf4e499c6146fb798253e48e83d522feba807d6b722eaa9 + "@babel/parser": ^7.1.0 + "@babel/types": ^7.0.0 + checksum: d7a02d2a9b67e822694d8e6a7ddb8f2b71a1d6962dfd266554d2513eefbb205b33ca71a0d163b1caea3981ccf849211f9964d8bd0727124d18ace45aa6c9ae29 languageName: node linkType: hard -"create-hmac@npm:^1.1.4, create-hmac@npm:^1.1.7": - version: 1.1.7 - resolution: "create-hmac@npm:1.1.7" +"@types/babel__traverse@npm:*, @types/babel__traverse@npm:^7.0.6": + version: 7.20.6 + resolution: "@types/babel__traverse@npm:7.20.6" dependencies: - cipher-base: ^1.0.3 - create-hash: ^1.1.0 - inherits: ^2.0.1 - ripemd160: ^2.0.0 - safe-buffer: ^5.0.1 - sha.js: ^2.4.8 - checksum: ba12bb2257b585a0396108c72830e85f882ab659c3320c83584b1037f8ab72415095167ced80dc4ce8e446a8ecc4b2acf36d87befe0707d73b26cf9dc77440ed + "@babel/types": ^7.20.7 + checksum: 2bdc65eb62232c2d5c1086adeb0c31e7980e6fd7e50a3483b4a724a1a1029c84d9cb59749cf8de612f9afa2bc14c85b8f50e64e21f8a4398fa77eb9059a4283c languageName: node linkType: hard -"create-jest@npm:^29.7.0": - version: 29.7.0 - resolution: "create-jest@npm:29.7.0" +"@types/body-parser@npm:*": + version: 1.19.5 + resolution: "@types/body-parser@npm:1.19.5" dependencies: - "@jest/types": ^29.6.3 - chalk: ^4.0.0 - exit: ^0.1.2 - graceful-fs: ^4.2.9 - jest-config: ^29.7.0 - jest-util: ^29.7.0 - prompts: ^2.0.1 - bin: - create-jest: bin/create-jest.js - checksum: 1427d49458adcd88547ef6fa39041e1fe9033a661293aa8d2c3aa1b4967cb5bf4f0c00436c7a61816558f28ba2ba81a94d5c962e8022ea9a883978fc8e1f2945 + "@types/connect": "*" + "@types/node": "*" + checksum: 1e251118c4b2f61029cc43b0dc028495f2d1957fe8ee49a707fb940f86a9bd2f9754230805598278fe99958b49e9b7e66eec8ef6a50ab5c1f6b93e1ba2aaba82 languageName: node linkType: hard -"create-require@npm:^1.1.0": - version: 1.1.1 - resolution: "create-require@npm:1.1.1" - checksum: a9a1503d4390d8b59ad86f4607de7870b39cad43d929813599a23714831e81c520bddf61bcdd1f8e30f05fd3a2b71ae8538e946eb2786dc65c2bbc520f692eff +"@types/bonjour@npm:^3.5.13, @types/bonjour@npm:^3.5.9": + version: 3.5.13 + resolution: "@types/bonjour@npm:3.5.13" + dependencies: + "@types/node": "*" + checksum: e827570e097bd7d625a673c9c208af2d1a22fa3885c0a1646533cf24394c839c3e5f60ac1bc60c0ddcc69c0615078c9fb2c01b42596c7c582d895d974f2409ee languageName: node linkType: hard -"cron-parser@npm:^4.2.0": - version: 4.9.0 - resolution: "cron-parser@npm:4.9.0" - dependencies: - luxon: ^3.2.1 - checksum: 3cf248fc5cae6c19ec7124962b1cd84b76f02b9bc4f58976b3bd07624db3ef10aaf1548efcc2d2dcdab0dad4f12029d640a55ecce05ea5e1596af9db585502cf +"@types/btoa-lite@npm:^1.0.0": + version: 1.0.2 + resolution: "@types/btoa-lite@npm:1.0.2" + checksum: 4c46b163c881a75522c7556dd7a7df8a0d4c680a45e8bac34e50864e1c2d9df8dc90b99f75199154c60ef2faff90896b7e5f11df6936c94167a3e5e1c6f4d935 languageName: node linkType: hard -"cron@npm:^3.0.0": - version: 3.1.8 - resolution: "cron@npm:3.1.8" - dependencies: - "@types/luxon": ~3.4.0 - luxon: ~3.5.0 - checksum: 470ada23ae25b64fe9d529d3421df1d9a18716693c710e617ba79263a7883d7d5292f9ef0e067fd47b82019b9fa313a461dacd381c8feadb136849b460ddee4c +"@types/caseless@npm:*": + version: 0.12.5 + resolution: "@types/caseless@npm:0.12.5" + checksum: f6a3628add76d27005495914c9c3873a93536957edaa5b69c63b46fe10b4649a6fecf16b676c1695f46aab851da47ec6047dcf3570fa8d9b6883492ff6d074e0 languageName: node linkType: hard -"cross-fetch@npm:^4.0.0": - version: 4.0.0 - resolution: "cross-fetch@npm:4.0.0" +"@types/codemirror@npm:^0.0.90": + version: 0.0.90 + resolution: "@types/codemirror@npm:0.0.90" dependencies: - node-fetch: ^2.6.12 - checksum: ecca4f37ffa0e8283e7a8a590926b66713a7ef7892757aa36c2d20ffa27b0ac5c60dcf453119c809abe5923fc0bae3702a4d896bfb406ef1077b0d0018213e24 + "@types/tern": "*" + checksum: f4594b9bc95306bbbe24d967e0749e28fe7b1e461c41621429b8c8bc295bda1704d99c1d7d5496efd987ee80d24f055155ddd742fa0c975cd69f279ccdaa0af9 languageName: node linkType: hard -"cross-spawn@npm:^5.1.0": - version: 5.1.0 - resolution: "cross-spawn@npm:5.1.0" +"@types/codemirror@npm:^5.60.8": + version: 5.60.15 + resolution: "@types/codemirror@npm:5.60.15" dependencies: - lru-cache: ^4.0.1 - shebang-command: ^1.2.0 - which: ^1.2.9 - checksum: 726939c9954fc70c20e538923feaaa33bebc253247d13021737c3c7f68cdc3e0a57f720c0fe75057c0387995349f3f12e20e9bfdbf12274db28019c7ea4ec166 + "@types/tern": "*" + checksum: cfad3f569de48fba3efa44fdfeba77933e231486a52cc80cff7ce6eeeed5b447a5bc2b11e2226bc00ccee332c661e53e35a15cf14eb835f434a6a402d9462f5f languageName: node linkType: hard -"cross-spawn@npm:^7.0.0, cross-spawn@npm:^7.0.2, cross-spawn@npm:^7.0.3": - version: 7.0.3 - resolution: "cross-spawn@npm:7.0.3" +"@types/connect-history-api-fallback@npm:^1.3.5, @types/connect-history-api-fallback@npm:^1.5.4": + version: 1.5.4 + resolution: "@types/connect-history-api-fallback@npm:1.5.4" dependencies: - path-key: ^3.1.0 - shebang-command: ^2.0.0 - which: ^2.0.1 - checksum: 671cc7c7288c3a8406f3c69a3ae2fc85555c04169e9d611def9a675635472614f1c0ed0ef80955d5b6d4e724f6ced67f0ad1bb006c2ea643488fcfef994d7f52 + "@types/express-serve-static-core": "*" + "@types/node": "*" + checksum: e1dee43b8570ffac02d2d47a2b4ba80d3ca0dd1840632dafb221da199e59dbe3778d3d7303c9e23c6b401f37c076935a5bc2aeae1c4e5feaefe1c371fe2073fd languageName: node linkType: hard -"crypto-browserify@npm:^3.11.0": - version: 3.12.1 - resolution: "crypto-browserify@npm:3.12.1" +"@types/connect@npm:*": + version: 3.4.38 + resolution: "@types/connect@npm:3.4.38" dependencies: - browserify-cipher: ^1.0.1 - browserify-sign: ^4.2.3 - create-ecdh: ^4.0.4 - create-hash: ^1.2.0 - create-hmac: ^1.1.7 - diffie-hellman: ^5.0.3 - hash-base: ~3.0.4 - inherits: ^2.0.4 - pbkdf2: ^3.1.2 - public-encrypt: ^4.0.3 - randombytes: ^2.1.0 - randomfill: ^1.0.4 - checksum: 4e643dd5acfff80fbe2cc567feb75a22d726cc4df34772c988f326976c3c1ee1f8a611a33498dab11568cff3e134f0bd44a0e1f4c216585e5877ab5327cdb6fc + "@types/node": "*" + checksum: 7eb1bc5342a9604facd57598a6c62621e244822442976c443efb84ff745246b10d06e8b309b6e80130026a396f19bf6793b7cecd7380169f369dac3bfc46fb99 languageName: node linkType: hard -"css-declaration-sorter@npm:^6.3.1": - version: 6.4.1 - resolution: "css-declaration-sorter@npm:6.4.1" - peerDependencies: - postcss: ^8.0.9 - checksum: cbdc9e0d481011b1a28fd5b60d4eb55fe204391d31a0b1b490b2cecf4baa85810f9b8c48adab4df644f4718104ed3ed72c64a9745e3216173767bf4aeca7f9b8 +"@types/cookie@npm:^0.4.1": + version: 0.4.1 + resolution: "@types/cookie@npm:0.4.1" + checksum: 3275534ed69a76c68eb1a77d547d75f99fedc80befb75a3d1d03662fb08d697e6f8b1274e12af1a74c6896071b11510631ba891f64d30c78528d0ec45a9c1a18 languageName: node linkType: hard -"css-loader@npm:^6.5.1": - version: 6.11.0 - resolution: "css-loader@npm:6.11.0" - dependencies: - icss-utils: ^5.1.0 - postcss: ^8.4.33 - postcss-modules-extract-imports: ^3.1.0 - postcss-modules-local-by-default: ^4.0.5 - postcss-modules-scope: ^3.2.0 - postcss-modules-values: ^4.0.0 - postcss-value-parser: ^4.2.0 - semver: ^7.5.4 - peerDependencies: - "@rspack/core": 0.x || 1.x - webpack: ^5.0.0 - peerDependenciesMeta: - "@rspack/core": - optional: true - webpack: - optional: true - checksum: 5c8d35975a7121334905394e88e28f05df72f037dbed2fb8fec4be5f0b313ae73a13894ba791867d4a4190c35896da84a7fd0c54fb426db55d85ba5e714edbe3 +"@types/cookiejar@npm:^2.1.5": + version: 2.1.5 + resolution: "@types/cookiejar@npm:2.1.5" + checksum: 04d5990e87b6387532d15a87d9ec9b2eb783039291193863751dcfd7fc723a3b3aa30ce4c06b03975cba58632e933772f1ff031af23eaa3ac7f94e71afa6e073 languageName: node linkType: hard -"css-select@npm:^4.1.3": - version: 4.3.0 - resolution: "css-select@npm:4.3.0" +"@types/cors@npm:^2.8.6": + version: 2.8.17 + resolution: "@types/cors@npm:2.8.17" dependencies: - boolbase: ^1.0.0 - css-what: ^6.0.1 - domhandler: ^4.3.1 - domutils: ^2.8.0 - nth-check: ^2.0.1 - checksum: d6202736839194dd7f910320032e7cfc40372f025e4bf21ca5bf6eb0a33264f322f50ba9c0adc35dadd342d3d6fae5ca244779a4873afbfa76561e343f2058e0 + "@types/node": "*" + checksum: 469bd85e29a35977099a3745c78e489916011169a664e97c4c3d6538143b0a16e4cc72b05b407dc008df3892ed7bf595f9b7c0f1f4680e169565ee9d64966bde languageName: node linkType: hard -"css-select@npm:^5.1.0": - version: 5.1.0 - resolution: "css-select@npm:5.1.0" - dependencies: - boolbase: ^1.0.0 - css-what: ^6.1.0 - domhandler: ^5.0.2 - domutils: ^3.0.1 - nth-check: ^2.0.1 - checksum: 2772c049b188d3b8a8159907192e926e11824aea525b8282981f72ba3f349cf9ecd523fdf7734875ee2cb772246c22117fc062da105b6d59afe8dcd5c99c9bda +"@types/d3-array@npm:*, @types/d3-array@npm:^3.0.3": + version: 3.2.1 + resolution: "@types/d3-array@npm:3.2.1" + checksum: 8a41cee0969e53bab3f56cc15c4e6c9d76868d6daecb2b7d8c9ce71e0ececccc5a8239697cc52dadf5c665f287426de5c8ef31a49e7ad0f36e8846889a383df4 languageName: node linkType: hard -"css-tree@npm:^1.1.2, css-tree@npm:^1.1.3": - version: 1.1.3 - resolution: "css-tree@npm:1.1.3" +"@types/d3-axis@npm:*": + version: 3.0.6 + resolution: "@types/d3-axis@npm:3.0.6" dependencies: - mdn-data: 2.0.14 - source-map: ^0.6.1 - checksum: 79f9b81803991b6977b7fcb1588799270438274d89066ce08f117f5cdb5e20019b446d766c61506dd772c839df84caa16042d6076f20c97187f5abe3b50e7d1f + "@types/d3-selection": "*" + checksum: ea1065d9e6d134c04427763603cbe9d549b8b5785b8ae0d002b5b14a362619d5b8f5ee3c2fda8b36b7e5a413cbcd387e1a2d89898b919a9f0cc91ad4e67b5ab5 languageName: node linkType: hard -"css-tree@npm:^2.3.1": - version: 2.3.1 - resolution: "css-tree@npm:2.3.1" +"@types/d3-brush@npm:*": + version: 3.0.6 + resolution: "@types/d3-brush@npm:3.0.6" dependencies: - mdn-data: 2.0.30 - source-map-js: ^1.0.1 - checksum: 493cc24b5c22b05ee5314b8a0d72d8a5869491c1458017ae5ed75aeb6c3596637dbe1b11dac2548974624adec9f7a1f3a6cf40593dc1f9185eb0e8279543fbc0 + "@types/d3-selection": "*" + checksum: e5166bc53e5c914b1fed0a6ce55ca14d76ae11c5afd16b724b8ae47989e977c4af02bb07496d1ccd0a77f4ccd9a2ca7345e1d289bcfce16490fe4b39a9e0d170 languageName: node linkType: hard -"css-tree@npm:~2.2.0": - version: 2.2.1 - resolution: "css-tree@npm:2.2.1" - dependencies: - mdn-data: 2.0.28 - source-map-js: ^1.0.1 - checksum: b94aa8cc2f09e6f66c91548411fcf74badcbad3e150345074715012d16333ce573596ff5dfca03c2a87edf1924716db765120f94247e919d72753628ba3aba27 +"@types/d3-chord@npm:*": + version: 3.0.6 + resolution: "@types/d3-chord@npm:3.0.6" + checksum: b511cf372ed8a0086d37a715c0d4aca811b614454e1f7c1561fbcd46863beaccdb115d274a7a992a30a8218393fbc3e1fdd7ca6e9d572e729a4570002c327083 languageName: node linkType: hard -"css-what@npm:^6.0.1, css-what@npm:^6.1.0": - version: 6.1.0 - resolution: "css-what@npm:6.1.0" - checksum: b975e547e1e90b79625918f84e67db5d33d896e6de846c9b584094e529f0c63e2ab85ee33b9daffd05bff3a146a1916bec664e18bb76dd5f66cbff9fc13b2bbe +"@types/d3-color@npm:*": + version: 3.1.3 + resolution: "@types/d3-color@npm:3.1.3" + checksum: 8a0e79a709929502ec4effcee2c786465b9aec51b653ba0b5d05dbfec3e84f418270dd603002d94021885061ff592f614979193bd7a02ad76317f5608560e357 languageName: node linkType: hard -"cssesc@npm:^3.0.0": - version: 3.0.0 - resolution: "cssesc@npm:3.0.0" - bin: - cssesc: bin/cssesc - checksum: f8c4ababffbc5e2ddf2fa9957dda1ee4af6048e22aeda1869d0d00843223c1b13ad3f5d88b51caa46c994225eacb636b764eb807a8883e2fb6f99b4f4e8c48b2 +"@types/d3-contour@npm:*": + version: 3.0.6 + resolution: "@types/d3-contour@npm:3.0.6" + dependencies: + "@types/d3-array": "*" + "@types/geojson": "*" + checksum: 83c13eb0567e95d6675d6d81cbeab38d0899c5af70a7c69354e23e0860ddb2f3e911d2cacd33a8baa60ce7846b38785a337b2d7c8d2763a1340bfb999b4bd2ab languageName: node linkType: hard -"cssnano-preset-default@npm:^5.2.14": - version: 5.2.14 - resolution: "cssnano-preset-default@npm:5.2.14" - dependencies: - css-declaration-sorter: ^6.3.1 - cssnano-utils: ^3.1.0 - postcss-calc: ^8.2.3 - postcss-colormin: ^5.3.1 - postcss-convert-values: ^5.1.3 - postcss-discard-comments: ^5.1.2 - postcss-discard-duplicates: ^5.1.0 - postcss-discard-empty: ^5.1.1 - postcss-discard-overridden: ^5.1.0 - postcss-merge-longhand: ^5.1.7 - postcss-merge-rules: ^5.1.4 - postcss-minify-font-values: ^5.1.0 - postcss-minify-gradients: ^5.1.1 - postcss-minify-params: ^5.1.4 - postcss-minify-selectors: ^5.2.1 - postcss-normalize-charset: ^5.1.0 - postcss-normalize-display-values: ^5.1.0 - postcss-normalize-positions: ^5.1.1 - postcss-normalize-repeat-style: ^5.1.1 - postcss-normalize-string: ^5.1.0 - postcss-normalize-timing-functions: ^5.1.0 - postcss-normalize-unicode: ^5.1.1 - postcss-normalize-url: ^5.1.0 - postcss-normalize-whitespace: ^5.1.1 - postcss-ordered-values: ^5.1.3 - postcss-reduce-initial: ^5.1.2 - postcss-reduce-transforms: ^5.1.0 - postcss-svgo: ^5.1.0 - postcss-unique-selectors: ^5.1.1 - peerDependencies: - postcss: ^8.2.15 - checksum: d3bbbe3d50c6174afb28d0bdb65b511fdab33952ec84810aef58b87189f3891c34aaa8b6a6101acd5314f8acded839b43513e39a75f91a698ddc985a1b1d9e95 +"@types/d3-delaunay@npm:*": + version: 6.0.4 + resolution: "@types/d3-delaunay@npm:6.0.4" + checksum: 502fe0eb91f7d05b0f57904d68028c24348a54b1e5458009caf662de995d0e59bd82cd701b4af0087d614ee9e456d415fe32d63c25272ca753bf12b3f27b2d77 languageName: node linkType: hard -"cssnano-utils@npm:^3.1.0": - version: 3.1.0 - resolution: "cssnano-utils@npm:3.1.0" - peerDependencies: - postcss: ^8.2.15 - checksum: 975c84ce9174cf23bb1da1e9faed8421954607e9ea76440cd3bb0c1bea7e17e490d800fca5ae2812d1d9e9d5524eef23ede0a3f52497d7ccc628e5d7321536f2 +"@types/d3-dispatch@npm:*": + version: 3.0.6 + resolution: "@types/d3-dispatch@npm:3.0.6" + checksum: f82076c7d205885480d363c92c19b8e0d6b9e529a3a78ce772f96a7cc4cce01f7941141f148828337035fac9676b13e7440565530491d560fdf12e562cb56573 languageName: node linkType: hard -"cssnano@npm:^5.0.1": - version: 5.1.15 - resolution: "cssnano@npm:5.1.15" +"@types/d3-drag@npm:*": + version: 3.0.7 + resolution: "@types/d3-drag@npm:3.0.7" dependencies: - cssnano-preset-default: ^5.2.14 - lilconfig: ^2.0.3 - yaml: ^1.10.2 - peerDependencies: - postcss: ^8.2.15 - checksum: ca9e1922178617c66c2f1548824b2c7af2ecf69cc3a187fc96bf8d29251c2e84d9e4966c69cf64a2a6a057a37dff7d6d057bc8a2a0957e6ea382e452ae9d0bbb + "@types/d3-selection": "*" + checksum: 1107cb1667ead79073741c06ea4a9e8e4551698f6c9c60821e327a6aa30ca2ba0b31a6fe767af85a2e38a22d2305f6c45b714df15c2bba68adf58978223a5fc5 languageName: node linkType: hard -"csso@npm:^4.2.0": - version: 4.2.0 - resolution: "csso@npm:4.2.0" - dependencies: - css-tree: ^1.1.2 - checksum: 380ba9663da3bcea58dee358a0d8c4468bb6539be3c439dc266ac41c047217f52fd698fb7e4b6b6ccdfb8cf53ef4ceed8cc8ceccb8dfca2aa628319826b5b998 +"@types/d3-dsv@npm:*": + version: 3.0.7 + resolution: "@types/d3-dsv@npm:3.0.7" + checksum: 5025e01459827d09d14e0d00281995a04042ce9e3e76444c5a65466c1d29649d82cbfaa9251e33837bf576f5c587525d8d8ff5aacc6bd3b831824d54449261b9 languageName: node linkType: hard -"csso@npm:^5.0.5": - version: 5.0.5 - resolution: "csso@npm:5.0.5" +"@types/d3-ease@npm:*, @types/d3-ease@npm:^3.0.0": + version: 3.0.2 + resolution: "@types/d3-ease@npm:3.0.2" + checksum: 0885219966294bfc99548f37297e1c75e75da812a5f3ec941977ebb57dcab0a25acec5b2bbd82d09a49d387daafca08521ca269b7e4c27ddca7768189e987b54 + languageName: node + linkType: hard + +"@types/d3-fetch@npm:*": + version: 3.0.7 + resolution: "@types/d3-fetch@npm:3.0.7" dependencies: - css-tree: ~2.2.0 - checksum: 0ad858d36bf5012ed243e9ec69962a867509061986d2ee07cc040a4b26e4d062c00d4c07e5ba8d430706ceb02dd87edd30a52b5937fd45b1b6f2119c4993d59a + "@types/d3-dsv": "*" + checksum: e60cf60b25cbc49b2066ac2a3638f610c7379000562b0f499dd90fd57a8cb9740c24667a70496c2a66456d42867afeffb1722a75b26d95e7d7ee8667d96b0b36 languageName: node linkType: hard -"cssom@npm:^0.5.0": - version: 0.5.0 - resolution: "cssom@npm:0.5.0" - checksum: 823471aa30091c59e0a305927c30e7768939b6af70405808f8d2ce1ca778cddcb24722717392438329d1691f9a87cb0183b64b8d779b56a961546d54854fde01 +"@types/d3-force@npm:*": + version: 3.0.10 + resolution: "@types/d3-force@npm:3.0.10" + checksum: 0faf1321ddd85f7bf25769ee97513b380a897791ad1cd6c4282f09e0108e566132fad80f4c73cdb592a352139b22388d3c77458298a00f92ef72e27019fb33c7 languageName: node linkType: hard -"cssom@npm:~0.3.6": - version: 0.3.8 - resolution: "cssom@npm:0.3.8" - checksum: 24beb3087c76c0d52dd458be9ee1fbc80ac771478a9baef35dd258cdeb527c68eb43204dd439692bb2b1ae5272fa5f2946d10946edab0d04f1078f85e06bc7f6 +"@types/d3-force@npm:^1.2.1": + version: 1.2.7 + resolution: "@types/d3-force@npm:1.2.7" + checksum: 9290f55beebcb4826b9b92dab2bb5204ca76a546ef5d84ded789f915605196da52d548f0a7b23c6e4327a1361096a20b096a9918148d1e0f3a10945a332b1844 languageName: node linkType: hard -"cssstyle@npm:^2.3.0": - version: 2.3.0 - resolution: "cssstyle@npm:2.3.0" - dependencies: - cssom: ~0.3.6 - checksum: 5f05e6fd2e3df0b44695c2f08b9ef38b011862b274e320665176467c0725e44a53e341bc4959a41176e83b66064ab786262e7380fd1cabeae6efee0d255bb4e3 +"@types/d3-format@npm:*": + version: 3.0.4 + resolution: "@types/d3-format@npm:3.0.4" + checksum: e69421cd93861a0c080084b0b23d4a5d6a427497559e46898189002fb756dae2c7c858b465308f6bcede7272b90e39ce8adab810bded2309035a5d9556c59134 languageName: node linkType: hard -"ctrlc-windows@npm:^2.1.0": - version: 2.1.0 - resolution: "ctrlc-windows@npm:2.1.0" - checksum: 0f0582ba9516290d3e90ea7b91710f8b9b110e1ed29b7c84ebd44c16368b2553722b86a17226120ca3ea0ef679ac3596f48104cc113cfb7c3d07260f6c92e38b +"@types/d3-geo@npm:*": + version: 3.1.0 + resolution: "@types/d3-geo@npm:3.1.0" + dependencies: + "@types/geojson": "*" + checksum: a4b2daa8a64012912ce7186891e8554af123925dca344c111b771e168a37477e02d504c6c94ee698440380e8c4f3f373d6755be97935da30eae0904f6745ce40 languageName: node linkType: hard -"damerau-levenshtein@npm:^1.0.8": - version: 1.0.8 - resolution: "damerau-levenshtein@npm:1.0.8" - checksum: d240b7757544460ae0586a341a53110ab0a61126570ef2d8c731e3eab3f0cb6e488e2609e6a69b46727635de49be20b071688698744417ff1b6c1d7ccd03e0de +"@types/d3-hierarchy@npm:*": + version: 3.1.7 + resolution: "@types/d3-hierarchy@npm:3.1.7" + checksum: 69746b3a65e0fe0ceb3ffcb1a8840a61e271eadb32eccb5034f0fce036d24801aef924ee45b99246580c9f7c81839ab0555f776a11773d82e860d522a2ff1c0e languageName: node linkType: hard -"dashdash@npm:^1.12.0": - version: 1.14.1 - resolution: "dashdash@npm:1.14.1" +"@types/d3-interpolate@npm:*, @types/d3-interpolate@npm:^3.0.1": + version: 3.0.4 + resolution: "@types/d3-interpolate@npm:3.0.4" dependencies: - assert-plus: ^1.0.0 - checksum: 3634c249570f7f34e3d34f866c93f866c5b417f0dd616275decae08147dcdf8fccfaa5947380ccfb0473998ea3a8057c0b4cd90c875740ee685d0624b2983598 + "@types/d3-color": "*" + checksum: efd2770e174e84fc7316fdafe03cf3688451f767dde1fa6211610137f495be7f3923db7e1723a6961a0e0e9ae0ed969f4f47c038189fa0beb1d556b447922622 languageName: node linkType: hard -"data-uri-to-buffer@npm:^6.0.2": - version: 6.0.2 - resolution: "data-uri-to-buffer@npm:6.0.2" - checksum: 8b6927c33f9b54037f442856be0aa20e5fd49fa6c9c8ceece408dc306445d593ad72d207d57037c529ce65f413b421da800c6827b1dbefb607b8056f17123a61 +"@types/d3-path@npm:*": + version: 3.1.0 + resolution: "@types/d3-path@npm:3.1.0" + checksum: 1e81b56ed33ba1ac954a8c42c78c3fcf2716927fe5d01b2003591193ad3b639572a3dfcedd9bf78b6b73215a5cfb01cede8f25c936e95ac18fbe3858f9b62f5c languageName: node linkType: hard -"data-urls@npm:^3.0.2": +"@types/d3-polygon@npm:*": version: 3.0.2 - resolution: "data-urls@npm:3.0.2" - dependencies: - abab: ^2.0.6 - whatwg-mimetype: ^3.0.0 - whatwg-url: ^11.0.0 - checksum: 033fc3dd0fba6d24bc9a024ddcf9923691dd24f90a3d26f6545d6a2f71ec6956f93462f2cdf2183cc46f10dc01ed3bcb36731a8208456eb1a08147e571fe2a76 + resolution: "@types/d3-polygon@npm:3.0.2" + checksum: 7cf1eadb54f02dd3617512b558f4c0f3811f8a6a8c887d9886981c3cc251db28b68329b2b0707d9f517231a72060adbb08855227f89bef6ef30caedc0a67cab2 languageName: node linkType: hard -"data-view-buffer@npm:^1.0.1": - version: 1.0.1 - resolution: "data-view-buffer@npm:1.0.1" - dependencies: - call-bind: ^1.0.6 - es-errors: ^1.3.0 - is-data-view: ^1.0.1 - checksum: ce24348f3c6231223b216da92e7e6a57a12b4af81a23f27eff8feabdf06acfb16c00639c8b705ca4d167f761cfc756e27e5f065d0a1f840c10b907fdaf8b988c +"@types/d3-quadtree@npm:*": + version: 3.0.6 + resolution: "@types/d3-quadtree@npm:3.0.6" + checksum: 631fb1a50dbe4fb0c97574891b180ec3d6a0f524bbd8aee8dfd44eda405e7ed1ca2b03d5568a35f697d09e5e4b598117e149236874b0c8764979a3d6242bb0bc languageName: node linkType: hard -"data-view-byte-length@npm:^1.0.1": - version: 1.0.1 - resolution: "data-view-byte-length@npm:1.0.1" - dependencies: - call-bind: ^1.0.7 - es-errors: ^1.3.0 - is-data-view: ^1.0.1 - checksum: dbb3200edcb7c1ef0d68979834f81d64fd8cab2f7691b3a4c6b97e67f22182f3ec2c8602efd7b76997b55af6ff8bce485829c1feda4fa2165a6b71fb7baa4269 +"@types/d3-random@npm:*": + version: 3.0.3 + resolution: "@types/d3-random@npm:3.0.3" + checksum: 33285b57768a724d2466ac1deec002432805c9df3e475ffb7f7fec66681cfe3e18d2f68b7f8ba45f400b274907bbebfe8adff14c9a97ef1987e476135e784925 languageName: node linkType: hard -"data-view-byte-offset@npm:^1.0.0": - version: 1.0.0 - resolution: "data-view-byte-offset@npm:1.0.0" - dependencies: - call-bind: ^1.0.6 - es-errors: ^1.3.0 - is-data-view: ^1.0.1 - checksum: 7f0bf8720b7414ca719eedf1846aeec392f2054d7af707c5dc9a753cc77eb8625f067fa901e0b5127e831f9da9056138d894b9c2be79c27a21f6db5824f009c2 +"@types/d3-scale-chromatic@npm:*": + version: 3.1.0 + resolution: "@types/d3-scale-chromatic@npm:3.1.0" + checksum: cb7b86deac077c7c217a52a3f658cdfb812cff8708404fbfe54918c03ead545e1df87df377e9c4eab21c9d6c1aeee6471320e02a5b6b27e2e3f786a12a82ab02 languageName: node linkType: hard -"date-fns@npm:^2.16.1": - version: 2.30.0 - resolution: "date-fns@npm:2.30.0" +"@types/d3-scale@npm:*, @types/d3-scale@npm:^4.0.2": + version: 4.0.8 + resolution: "@types/d3-scale@npm:4.0.8" dependencies: - "@babel/runtime": ^7.21.0 - checksum: f7be01523282e9bb06c0cd2693d34f245247a29098527d4420628966a2d9aad154bd0e90a6b1cf66d37adcb769cd108cf8a7bd49d76db0fb119af5cdd13644f4 + "@types/d3-time": "*" + checksum: 3b1906da895564f73bb3d0415033d9a8aefe7c4f516f970176d5b2ff7a417bd27ae98486e9a9aa0472001dc9885a9204279a1973a985553bdb3ee9bbc1b94018 languageName: node linkType: hard -"date-format@npm:^4.0.14": - version: 4.0.14 - resolution: "date-format@npm:4.0.14" - checksum: dfe5139df6af5759b9dd3c007b899b3f60d45a9240ffeee6314ab74e6ab52e9b519a44ccf285888bdd6b626c66ee9b4c8a523075fa1140617b5beb1cbb9b18d1 +"@types/d3-selection@npm:*": + version: 3.0.11 + resolution: "@types/d3-selection@npm:3.0.11" + checksum: 4b76630f76dffdafc73cdc786d73e7b4c96f40546483074b3da0e7fe83fd7f5ed9bc6c50f79bcef83595f943dcc9ed6986953350f39371047af644cc39c41b43 languageName: node linkType: hard -"debug@npm:2.6.9, debug@npm:^2.6.0": - version: 2.6.9 - resolution: "debug@npm:2.6.9" +"@types/d3-shape@npm:*, @types/d3-shape@npm:^3.1.0": + version: 3.1.6 + resolution: "@types/d3-shape@npm:3.1.6" dependencies: - ms: 2.0.0 - checksum: d2f51589ca66df60bf36e1fa6e4386b318c3f1e06772280eea5b1ae9fd3d05e9c2b7fd8a7d862457d00853c75b00451aa2d7459b924629ee385287a650f58fe6 + "@types/d3-path": "*" + checksum: bd765be021019c43c8dca066a798a1de28a051d1213db6ca25f76c9e577da7ec40a592e3bda7628383ab48cb87164fe60b95eb5ec23761b2012bd0adb30c549a languageName: node linkType: hard -"debug@npm:4, debug@npm:^4.1.0, debug@npm:^4.1.1, debug@npm:^4.3.1, debug@npm:^4.3.2, debug@npm:^4.3.3, debug@npm:^4.3.4, debug@npm:^4.3.5": - version: 4.3.7 - resolution: "debug@npm:4.3.7" - dependencies: - ms: ^2.1.3 - peerDependenciesMeta: - supports-color: - optional: true - checksum: 822d74e209cd910ef0802d261b150314bbcf36c582ccdbb3e70f0894823c17e49a50d3e66d96b633524263975ca16b6a833f3e3b7e030c157169a5fabac63160 +"@types/d3-time-format@npm:*": + version: 4.0.3 + resolution: "@types/d3-time-format@npm:4.0.3" + checksum: e981fc9780697a9d8c5d1ddf1167d9c6bc28e4e610afddff1384fe55e6eb52cb65309b2a0a1d4cf817413b0a80b9f1a652fe0b2cb8054ace4eafff80a6093aa5 languageName: node linkType: hard -"debug@npm:4.3.4": - version: 4.3.4 - resolution: "debug@npm:4.3.4" +"@types/d3-time@npm:*, @types/d3-time@npm:^3.0.0": + version: 3.0.4 + resolution: "@types/d3-time@npm:3.0.4" + checksum: 0c296884571ce70c4bbd4ea9cd1c93c0c8aee602c6c806b056187dd4ee49daf70c2f41da94b25ba0d796edf8ca83cbb87fe6d1cdda7ca669ab800170ece1c12b + languageName: node + linkType: hard + +"@types/d3-timer@npm:*, @types/d3-timer@npm:^3.0.0": + version: 3.0.2 + resolution: "@types/d3-timer@npm:3.0.2" + checksum: 1643eebfa5f4ae3eb00b556bbc509444d88078208ec2589ddd8e4a24f230dd4cf2301e9365947e70b1bee33f63aaefab84cd907822aae812b9bc4871b98ab0e1 + languageName: node + linkType: hard + +"@types/d3-transition@npm:*": + version: 3.0.9 + resolution: "@types/d3-transition@npm:3.0.9" dependencies: - ms: 2.1.2 - peerDependenciesMeta: - supports-color: - optional: true - checksum: 3dbad3f94ea64f34431a9cbf0bafb61853eda57bff2880036153438f50fb5a84f27683ba0d8e5426bf41a8c6ff03879488120cf5b3a761e77953169c0600a708 + "@types/d3-selection": "*" + checksum: c8608b1ac7cf09acfe387f3d41074631adcdfd7f2c8ca2efb378309adf0e9fc8469dbcf0d7a8c40fd1f03f2d2bf05fcda0cde7aa356ae8533a141dcab4dff221 languageName: node linkType: hard -"debug@npm:^3.2.7": - version: 3.2.7 - resolution: "debug@npm:3.2.7" +"@types/d3-zoom@npm:*": + version: 3.0.8 + resolution: "@types/d3-zoom@npm:3.0.8" + dependencies: + "@types/d3-interpolate": "*" + "@types/d3-selection": "*" + checksum: a1685728949ed39faf8ce162cc13338639c57bc2fd4d55fc7902b2632cad2bc2a808941263e57ce6685647e8a6a0a556e173386a52d6bb74c9ed6195b68be3de + languageName: node + linkType: hard + +"@types/d3@npm:^7.4.0": + version: 7.4.3 + resolution: "@types/d3@npm:7.4.3" + dependencies: + "@types/d3-array": "*" + "@types/d3-axis": "*" + "@types/d3-brush": "*" + "@types/d3-chord": "*" + "@types/d3-color": "*" + "@types/d3-contour": "*" + "@types/d3-delaunay": "*" + "@types/d3-dispatch": "*" + "@types/d3-drag": "*" + "@types/d3-dsv": "*" + "@types/d3-ease": "*" + "@types/d3-fetch": "*" + "@types/d3-force": "*" + "@types/d3-format": "*" + "@types/d3-geo": "*" + "@types/d3-hierarchy": "*" + "@types/d3-interpolate": "*" + "@types/d3-path": "*" + "@types/d3-polygon": "*" + "@types/d3-quadtree": "*" + "@types/d3-random": "*" + "@types/d3-scale": "*" + "@types/d3-scale-chromatic": "*" + "@types/d3-selection": "*" + "@types/d3-shape": "*" + "@types/d3-time": "*" + "@types/d3-time-format": "*" + "@types/d3-timer": "*" + "@types/d3-transition": "*" + "@types/d3-zoom": "*" + checksum: 12234aa093c8661546168becdd8956e892b276f525d96f65a7b32fed886fc6a569fe5a1171bff26fef2a5663960635f460c9504a6f2d242ba281a2b6c8c6465c + languageName: node + linkType: hard + +"@types/dagre@npm:0.7.42": + version: 0.7.42 + resolution: "@types/dagre@npm:0.7.42" + checksum: c63a0e9155df7d00b4e3bd5a781a69a958cf7281d2fec90cbea0e553841cd41bef3b35c749b1b481811ac7d81d25eb8a8366ea17ac647a907828e399ccdce82d + languageName: node + linkType: hard + +"@types/debug@npm:^4.0.0, @types/debug@npm:^4.1.12, @types/debug@npm:^4.1.7": + version: 4.1.12 + resolution: "@types/debug@npm:4.1.12" dependencies: - ms: ^2.1.1 - checksum: b3d8c5940799914d30314b7c3304a43305fd0715581a919dacb8b3176d024a782062368405b47491516d2091d6462d4d11f2f4974a405048094f8bfebfa3071c + "@types/ms": "*" + checksum: 47876a852de8240bfdaf7481357af2b88cb660d30c72e73789abf00c499d6bc7cd5e52f41c915d1b9cd8ec9fef5b05688d7b7aef17f7f272c2d04679508d1053 languageName: node linkType: hard -"decimal.js@npm:^10.4.2": - version: 10.4.3 - resolution: "decimal.js@npm:10.4.3" - checksum: 796404dcfa9d1dbfdc48870229d57f788b48c21c603c3f6554a1c17c10195fc1024de338b0cf9e1efe0c7c167eeb18f04548979bcc5fdfabebb7cc0ae3287bae +"@types/docker-modem@npm:*": + version: 3.0.6 + resolution: "@types/docker-modem@npm:3.0.6" + dependencies: + "@types/node": "*" + "@types/ssh2": "*" + checksum: cc58e8189f6ec5a2b8ca890207402178a97ddac8c80d125dc65d8ab29034b5db736de15e99b91b2d74e66d14e26e73b6b8b33216613dd15fd3aa6b82c11a83ed languageName: node linkType: hard -"decompress-response@npm:^6.0.0": - version: 6.0.0 - resolution: "decompress-response@npm:6.0.0" +"@types/dockerode@npm:^3.3.0, @types/dockerode@npm:^3.3.29": + version: 3.3.31 + resolution: "@types/dockerode@npm:3.3.31" dependencies: - mimic-response: ^3.1.0 - checksum: d377cf47e02d805e283866c3f50d3d21578b779731e8c5072d6ce8c13cc31493db1c2f6784da9d1d5250822120cefa44f1deab112d5981015f2e17444b763812 + "@types/docker-modem": "*" + "@types/node": "*" + "@types/ssh2": "*" + checksum: f634f18dc0633f8324faefcde53bcd3d8f3c4bd74d31078cbeb65d2e1597f9abcf12c2158abfaea13dc816bae0f5fa08d0bb570d4214ab0df1ded90db5ebabfe languageName: node linkType: hard -"dedent@npm:^1.0.0": - version: 1.5.3 - resolution: "dedent@npm:1.5.3" - peerDependencies: - babel-plugin-macros: ^3.1.0 - peerDependenciesMeta: - babel-plugin-macros: - optional: true - checksum: 045b595557b2a8ea2eb9b0b4623d764e9a87326486fe2b61191b4342ed93dc01245644d8a09f3108a50c0ee7965f1eedd92e4a3a503ed89ea8e810566ea27f9a +"@types/dompurify@npm:^2.1.0": + version: 2.4.0 + resolution: "@types/dompurify@npm:2.4.0" + dependencies: + "@types/trusted-types": "*" + checksum: b48cd81e997794ebc390c7c5bef1a67ec14a6f2f0521973e07e06af186c7583abe114d94d24868c0632b9573f5bd77131a4b76f3fffdf089ba99a4e53dd46c39 languageName: node linkType: hard -"deep-equal@npm:~1.0.1": - version: 1.0.1 - resolution: "deep-equal@npm:1.0.1" - checksum: 5af8cbfcebf190491878a498caccc7dc9592f8ebd1685b976eacc3825619d222b5e929923163b92c4f414494e2b884f7ebf00c022e8198e8292deb70dd9785f4 +"@types/es-aggregate-error@npm:^1.0.2": + version: 1.0.6 + resolution: "@types/es-aggregate-error@npm:1.0.6" + dependencies: + "@types/node": "*" + checksum: a5b2155f664a3460d3cbc1e84e76fc0f3e751c6cebb04bf79d38e2809f44a4ba6765b83761a1e5cc0bba1b7852f7ba4fae2231110dee6218405835024dd372ac languageName: node linkType: hard -"deep-extend@npm:^0.6.0": - version: 0.6.0 - resolution: "deep-extend@npm:0.6.0" - checksum: 7be7e5a8d468d6b10e6a67c3de828f55001b6eb515d014f7aeb9066ce36bd5717161eb47d6a0f7bed8a9083935b465bc163ee2581c8b128d29bf61092fdf57a7 +"@types/eslint-scope@npm:^3.7.7": + version: 3.7.7 + resolution: "@types/eslint-scope@npm:3.7.7" + dependencies: + "@types/eslint": "*" + "@types/estree": "*" + checksum: e2889a124aaab0b89af1bab5959847c5bec09809209255de0e63b9f54c629a94781daa04adb66bffcdd742f5e25a17614fb933965093c0eea64aacda4309380e languageName: node linkType: hard -"deep-is@npm:^0.1.3, deep-is@npm:~0.1.3": - version: 0.1.4 - resolution: "deep-is@npm:0.1.4" - checksum: edb65dd0d7d1b9c40b2f50219aef30e116cedd6fc79290e740972c132c09106d2e80aa0bc8826673dd5a00222d4179c84b36a790eef63a4c4bca75a37ef90804 +"@types/eslint@npm:*": + version: 9.6.1 + resolution: "@types/eslint@npm:9.6.1" + dependencies: + "@types/estree": "*" + "@types/json-schema": "*" + checksum: c286e79707ab604b577cf8ce51d9bbb9780e3d6a68b38a83febe13fa05b8012c92de17c28532fac2b03d3c460123f5055d603a579685325246ca1c86828223e0 languageName: node linkType: hard -"deepmerge@npm:^4.2.2, deepmerge@npm:^4.3.1": - version: 4.3.1 - resolution: "deepmerge@npm:4.3.1" - checksum: 2024c6a980a1b7128084170c4cf56b0fd58a63f2da1660dcfe977415f27b17dbe5888668b59d0b063753f3220719d5e400b7f113609489c90160bb9a5518d052 +"@types/eslint@npm:^7.29.0 || ^8.4.1, @types/eslint@npm:^8.56.10": + version: 8.56.12 + resolution: "@types/eslint@npm:8.56.12" + dependencies: + "@types/estree": "*" + "@types/json-schema": "*" + checksum: 0f7710ee02a256c499514251f527f84de964bb29487db840408e4cde79283124a38935597636d2265756c34dd1d902e1b00ae78930d4a0b55111909cb7b80d84 languageName: node linkType: hard -"default-browser-id@npm:^5.0.0": - version: 5.0.0 - resolution: "default-browser-id@npm:5.0.0" - checksum: 185bfaecec2c75fa423544af722a3469b20704c8d1942794a86e4364fe7d9e8e9f63241a5b769d61c8151993bc65833a5b959026fa1ccea343b3db0a33aa6deb +"@types/estree@npm:*, @types/estree@npm:1.0.6, @types/estree@npm:^1.0.0, @types/estree@npm:^1.0.5, @types/estree@npm:^1.0.6": + version: 1.0.6 + resolution: "@types/estree@npm:1.0.6" + checksum: 8825d6e729e16445d9a1dd2fb1db2edc5ed400799064cd4d028150701031af012ba30d6d03fe9df40f4d7a437d0de6d2b256020152b7b09bde9f2e420afdffd9 languageName: node linkType: hard -"default-browser@npm:^5.2.1": - version: 5.2.1 - resolution: "default-browser@npm:5.2.1" +"@types/express-serve-static-core@npm:*, @types/express-serve-static-core@npm:^5.0.0": + version: 5.0.1 + resolution: "@types/express-serve-static-core@npm:5.0.1" dependencies: - bundle-name: ^4.1.0 - default-browser-id: ^5.0.0 - checksum: afab7eff7b7f5f7a94d9114d1ec67273d3fbc539edf8c0f80019879d53aa71e867303c6f6d7cffeb10a6f3cfb59d4f963dba3f9c96830b4540cc7339a1bf9840 + "@types/node": "*" + "@types/qs": "*" + "@types/range-parser": "*" + "@types/send": "*" + checksum: e9daf9bc0d83f593aa2fdcb7c3f9c0a8747bfdf6d8a5ee48ed8d8cc4dc2ed52bdc75d20f6fec9ef00a1aa5ade4c7f16668ff1c020911b50394472844813b1cdb languageName: node linkType: hard -"default-gateway@npm:^6.0.3": - version: 6.0.3 - resolution: "default-gateway@npm:6.0.3" +"@types/express-serve-static-core@npm:^4.17.33, @types/express-serve-static-core@npm:^4.17.5": + version: 4.19.6 + resolution: "@types/express-serve-static-core@npm:4.19.6" dependencies: - execa: ^5.0.0 - checksum: 126f8273ecac8ee9ff91ea778e8784f6cd732d77c3157e8c5bdd6ed03651b5291f71446d05bc02d04073b1e67583604db5394ea3cf992ede0088c70ea15b7378 + "@types/node": "*" + "@types/qs": "*" + "@types/range-parser": "*" + "@types/send": "*" + checksum: b0576eddc2d25ccdf10e68ba09598b87a4d7b2ad04a81dc847cb39fe56beb0b6a5cc017b1e00aa0060cb3b38e700384ce96d291a116a0f1e54895564a104aae9 languageName: node linkType: hard -"defaults@npm:^1.0.3": - version: 1.0.4 - resolution: "defaults@npm:1.0.4" +"@types/express@npm:*": + version: 5.0.0 + resolution: "@types/express@npm:5.0.0" dependencies: - clone: ^1.0.2 - checksum: 3a88b7a587fc076b84e60affad8b85245c01f60f38fc1d259e7ac1d89eb9ce6abb19e27215de46b98568dd5bc48471730b327637e6f20b0f1bc85cf00440c80a + "@types/body-parser": "*" + "@types/express-serve-static-core": ^5.0.0 + "@types/qs": "*" + "@types/serve-static": "*" + checksum: ef68d8e2b7593c930093b1e79bf4df15413773508c9acd6a1a933ed7017f2a4892a8d128b2222d7eab9a3fa43181067a378c2600d9258bd7ae917f170e962df4 languageName: node linkType: hard -"define-data-property@npm:^1.0.1, define-data-property@npm:^1.1.4": - version: 1.1.4 - resolution: "define-data-property@npm:1.1.4" +"@types/express@npm:4.17.21, @types/express@npm:^4.17.13, @types/express@npm:^4.17.21, @types/express@npm:^4.17.6": + version: 4.17.21 + resolution: "@types/express@npm:4.17.21" dependencies: - es-define-property: ^1.0.0 - es-errors: ^1.3.0 - gopd: ^1.0.1 - checksum: 8068ee6cab694d409ac25936eb861eea704b7763f7f342adbdfe337fc27c78d7ae0eff2364b2917b58c508d723c7a074326d068eef2e45c4edcd85cf94d0313b + "@types/body-parser": "*" + "@types/express-serve-static-core": ^4.17.33 + "@types/qs": "*" + "@types/serve-static": "*" + checksum: fb238298630370a7392c7abdc80f495ae6c716723e114705d7e3fb67e3850b3859bbfd29391463a3fb8c0b32051847935933d99e719c0478710f8098ee7091c5 languageName: node linkType: hard -"define-lazy-prop@npm:^2.0.0": - version: 2.0.0 - resolution: "define-lazy-prop@npm:2.0.0" - checksum: 0115fdb065e0490918ba271d7339c42453d209d4cb619dfe635870d906731eff3e1ade8028bb461ea27ce8264ec5e22c6980612d332895977e89c1bbc80fcee2 +"@types/geojson@npm:*": + version: 7946.0.15 + resolution: "@types/geojson@npm:7946.0.15" + checksum: 226d7ab59540632b19f7889c76c4c586a5104c18c43a81f32974aa035eafe557f86bd5a79ca5568bb63cbe5bfa9014c8e9a29cb0bb3d2f0bd71b0cc13ad8ccb3 languageName: node linkType: hard -"define-lazy-prop@npm:^3.0.0": - version: 3.0.0 - resolution: "define-lazy-prop@npm:3.0.0" - checksum: 54884f94caac0791bf6395a3ec530ce901cf71c47b0196b8754f3fd17edb6c0e80149c1214429d851873bb0d689dbe08dcedbb2306dc45c8534a5934723851b6 +"@types/graceful-fs@npm:^4.1.3": + version: 4.1.9 + resolution: "@types/graceful-fs@npm:4.1.9" + dependencies: + "@types/node": "*" + checksum: 79d746a8f053954bba36bd3d94a90c78de995d126289d656fb3271dd9f1229d33f678da04d10bce6be440494a5a73438e2e363e92802d16b8315b051036c5256 languageName: node linkType: hard -"define-properties@npm:^1.1.3, define-properties@npm:^1.2.0, define-properties@npm:^1.2.1": - version: 1.2.1 - resolution: "define-properties@npm:1.2.1" +"@types/hast@npm:^2.0.0": + version: 2.3.10 + resolution: "@types/hast@npm:2.3.10" dependencies: - define-data-property: ^1.0.1 - has-property-descriptors: ^1.0.0 - object-keys: ^1.1.1 - checksum: b4ccd00597dd46cb2d4a379398f5b19fca84a16f3374e2249201992f36b30f6835949a9429669ee6b41b6e837205a163eadd745e472069e70dfc10f03e5fcc12 + "@types/unist": ^2 + checksum: 41531b7fbf590b02452996fc63272479c20a07269e370bd6514982cbcd1819b4b84d3ea620f2410d1b9541a23d08ce2eeb0a592145d05e00e249c3d56700d460 languageName: node linkType: hard -"degenerator@npm:^5.0.0": - version: 5.0.1 - resolution: "degenerator@npm:5.0.1" +"@types/hoist-non-react-statics@npm:^3.3.0": + version: 3.3.6 + resolution: "@types/hoist-non-react-statics@npm:3.3.6" dependencies: - ast-types: ^0.13.4 - escodegen: ^2.1.0 - esprima: ^4.0.1 - checksum: a64fa39cdf6c2edd75188157d32338ee9de7193d7dbb2aeb4acb1eb30fa4a15ed80ba8dae9bd4d7b085472cf174a5baf81adb761aaa8e326771392c922084152 + "@types/react": "*" + hoist-non-react-statics: ^3.3.0 + checksum: f03e43bd081876c49584ffa0eb690d69991f258203efca44dcc30efdda49a50653ff06402917d1edc9cb7e2adebbe9e2d1d0e739bc99c1b5372103b1cc534e47 languageName: node linkType: hard -"delayed-stream@npm:~1.0.0": - version: 1.0.0 - resolution: "delayed-stream@npm:1.0.0" - checksum: 46fe6e83e2cb1d85ba50bd52803c68be9bd953282fa7096f51fc29edd5d67ff84ff753c51966061e5ba7cb5e47ef6d36a91924eddb7f3f3483b1c560f77a0020 +"@types/html-minifier-terser@npm:^6.0.0": + version: 6.1.0 + resolution: "@types/html-minifier-terser@npm:6.1.0" + checksum: eb843f6a8d662d44fb18ec61041117734c6aae77aa38df1be3b4712e8e50ffaa35f1e1c92fdd0fde14a5675fecf457abcd0d15a01fae7506c91926176967f452 languageName: node linkType: hard -"delegates@npm:^1.0.0": - version: 1.0.0 - resolution: "delegates@npm:1.0.0" - checksum: a51744d9b53c164ba9c0492471a1a2ffa0b6727451bdc89e31627fdf4adda9d51277cfcbfb20f0a6f08ccb3c436f341df3e92631a3440226d93a8971724771fd +"@types/http-errors@npm:*": + version: 2.0.4 + resolution: "@types/http-errors@npm:2.0.4" + checksum: 1f3d7c3b32c7524811a45690881736b3ef741bf9849ae03d32ad1ab7062608454b150a4e7f1351f83d26a418b2d65af9bdc06198f1c079d75578282884c4e8e3 languageName: node linkType: hard -"denque@npm:^2.1.0": - version: 2.1.0 - resolution: "denque@npm:2.1.0" - checksum: 1d4ae1d05e59ac3a3481e7b478293f4b4c813819342273f3d5b826c7ffa9753c520919ba264f377e09108d24ec6cf0ec0ac729a5686cbb8f32d797126c5dae74 +"@types/http-proxy-middleware@npm:^1.0.0": + version: 1.0.0 + resolution: "@types/http-proxy-middleware@npm:1.0.0" + dependencies: + http-proxy-middleware: "*" + checksum: 643ce3ec3b9f302328eadd8d6487c01dd8702dd17beaa1bcf35c3cdb4c9eaf512ffd3c8aa8c66790900ec60315ecdbbc8895244203c5296fdd24843d451496ae languageName: node linkType: hard -"depd@npm:2.0.0, depd@npm:^2.0.0, depd@npm:~2.0.0": - version: 2.0.0 - resolution: "depd@npm:2.0.0" - checksum: abbe19c768c97ee2eed6282d8ce3031126662252c58d711f646921c9623f9052e3e1906443066beec1095832f534e57c523b7333f8e7e0d93051ab6baef5ab3a +"@types/http-proxy@npm:^1.17.15, @types/http-proxy@npm:^1.17.8": + version: 1.17.15 + resolution: "@types/http-proxy@npm:1.17.15" + dependencies: + "@types/node": "*" + checksum: d96eaf4e22232b587b46256b89c20525c453216684481015cf50fb385b0b319b883749ccb77dee9af57d107e8440cdacd56f4234f65176d317e9777077ff5bf3 languageName: node linkType: hard -"depd@npm:~1.1.2": - version: 1.1.2 - resolution: "depd@npm:1.1.2" - checksum: 6b406620d269619852885ce15965272b829df6f409724415e0002c8632ab6a8c0a08ec1f0bd2add05dc7bd7507606f7e2cc034fa24224ab829580040b835ecd9 +"@types/istanbul-lib-coverage@npm:*, @types/istanbul-lib-coverage@npm:^2.0.0, @types/istanbul-lib-coverage@npm:^2.0.1": + version: 2.0.6 + resolution: "@types/istanbul-lib-coverage@npm:2.0.6" + checksum: 3feac423fd3e5449485afac999dcfcb3d44a37c830af898b689fadc65d26526460bedb889db278e0d4d815a670331796494d073a10ee6e3a6526301fe7415778 languageName: node linkType: hard -"dependency-graph@npm:0.11.0, dependency-graph@npm:~0.11.0": - version: 0.11.0 - resolution: "dependency-graph@npm:0.11.0" - checksum: 477204beaa9be69e642bc31ffe7a8c383d0cf48fa27acbc91c5df01431ab913e65c154213d2ef83d034c98d77280743ec85e5da018a97a18dd43d3c0b78b28cd +"@types/istanbul-lib-report@npm:*": + version: 3.0.3 + resolution: "@types/istanbul-lib-report@npm:3.0.3" + dependencies: + "@types/istanbul-lib-coverage": "*" + checksum: b91e9b60f865ff08cb35667a427b70f6c2c63e88105eadd29a112582942af47ed99c60610180aa8dcc22382fa405033f141c119c69b95db78c4c709fbadfeeb4 languageName: node linkType: hard -"deprecation@npm:^2.0.0, deprecation@npm:^2.3.1": - version: 2.3.1 - resolution: "deprecation@npm:2.3.1" - checksum: f56a05e182c2c195071385455956b0c4106fe14e36245b00c689ceef8e8ab639235176a96977ba7c74afb173317fac2e0ec6ec7a1c6d1e6eaa401c586c714132 +"@types/istanbul-reports@npm:^3.0.0": + version: 3.0.4 + resolution: "@types/istanbul-reports@npm:3.0.4" + dependencies: + "@types/istanbul-lib-report": "*" + checksum: 93eb18835770b3431f68ae9ac1ca91741ab85f7606f310a34b3586b5a34450ec038c3eed7ab19266635499594de52ff73723a54a72a75b9f7d6a956f01edee95 languageName: node linkType: hard -"des.js@npm:^1.0.0": - version: 1.1.0 - resolution: "des.js@npm:1.1.0" +"@types/jest@npm:^29.5.11": + version: 29.5.14 + resolution: "@types/jest@npm:29.5.14" dependencies: - inherits: ^2.0.1 - minimalistic-assert: ^1.0.0 - checksum: 0e9c1584b70d31e20f20a613fc9ef60fbc6a147dfec9e448a168794a4b97ac04d8dc47ea008f1fa93b0f8aaf7c1ead632a5e59ce1913a6079d2d244c9f5ebe33 + expect: ^29.0.0 + pretty-format: ^29.0.0 + checksum: 18dba4623f26661641d757c63da2db45e9524c9be96a29ef713c703a9a53792df9ecee9f7365a0858ddbd6440d98fe6b65ca67895ca5884b73cbc7ffc11f3838 languageName: node linkType: hard -"destroy@npm:1.2.0, destroy@npm:^1.0.4": - version: 1.2.0 - resolution: "destroy@npm:1.2.0" - checksum: 0acb300b7478a08b92d810ab229d5afe0d2f4399272045ab22affa0d99dbaf12637659411530a6fcd597a9bdac718fc94373a61a95b4651bbc7b83684a565e38 +"@types/js-cookie@npm:^2.2.6": + version: 2.2.7 + resolution: "@types/js-cookie@npm:2.2.7" + checksum: 851f47e94ca1fc43661d8f51614d67a613e7810c91b876d0a3b311ce72f7df800107fd02a08cb6948184e12c120b4f058edca2f50424d8798bdcffd6627281e3 languageName: node linkType: hard -"detect-indent@npm:^6.0.0": - version: 6.1.0 - resolution: "detect-indent@npm:6.1.0" - checksum: ab953a73c72dbd4e8fc68e4ed4bfd92c97eb6c43734af3900add963fd3a9316f3bc0578b018b24198d4c31a358571eff5f0656e81a1f3b9ad5c547d58b2d093d +"@types/js-levenshtein@npm:^1.1.1": + version: 1.1.3 + resolution: "@types/js-levenshtein@npm:1.1.3" + checksum: eb338696da976925ea8448a42d775d7615a14323dceeb08909f187d0b3d3b4c1f67a1c36ef586b1c2318b70ab141bba8fc58311ba1c816711704605aec09db8b languageName: node linkType: hard -"detect-libc@npm:^2.0.0": - version: 2.0.3 - resolution: "detect-libc@npm:2.0.3" - checksum: 2ba6a939ae55f189aea996ac67afceb650413c7a34726ee92c40fb0deb2400d57ef94631a8a3f052055eea7efb0f99a9b5e6ce923415daa3e68221f963cfc27d +"@types/js-yaml@npm:^4.0.1": + version: 4.0.9 + resolution: "@types/js-yaml@npm:4.0.9" + checksum: e5e5e49b5789a29fdb1f7d204f82de11cb9e8f6cb24ab064c616da5d6e1b3ccfbf95aa5d1498a9fbd3b9e745564e69b4a20b6c530b5a8bbb2d4eb830cda9bc69 languageName: node linkType: hard -"detect-newline@npm:^3.0.0": - version: 3.1.0 - resolution: "detect-newline@npm:3.1.0" - checksum: ae6cd429c41ad01b164c59ea36f264a2c479598e61cba7c99da24175a7ab80ddf066420f2bec9a1c57a6bead411b4655ff15ad7d281c000a89791f48cbe939e7 +"@types/jsdom@npm:^20.0.0": + version: 20.0.1 + resolution: "@types/jsdom@npm:20.0.1" + dependencies: + "@types/node": "*" + "@types/tough-cookie": "*" + parse5: ^7.0.0 + checksum: d55402c5256ef451f93a6e3d3881f98339fe73a5ac2030588df056d6835df8367b5a857b48d27528289057e26dcdd3f502edc00cb877c79174cb3a4c7f2198c1 languageName: node linkType: hard -"detect-node@npm:^2.0.4": - version: 2.1.0 - resolution: "detect-node@npm:2.1.0" - checksum: 832184ec458353e41533ac9c622f16c19f7c02d8b10c303dfd3a756f56be93e903616c0bb2d4226183c9351c15fc0b3dba41a17a2308262afabcfa3776e6ae6e +"@types/json-schema@npm:*, @types/json-schema@npm:^7.0.11, @types/json-schema@npm:^7.0.12, @types/json-schema@npm:^7.0.15, @types/json-schema@npm:^7.0.4, @types/json-schema@npm:^7.0.5, @types/json-schema@npm:^7.0.6, @types/json-schema@npm:^7.0.7, @types/json-schema@npm:^7.0.8, @types/json-schema@npm:^7.0.9": + version: 7.0.15 + resolution: "@types/json-schema@npm:7.0.15" + checksum: 97ed0cb44d4070aecea772b7b2e2ed971e10c81ec87dd4ecc160322ffa55ff330dace1793489540e3e318d90942064bb697cc0f8989391797792d919737b3b98 languageName: node linkType: hard -"detect-port-alt@npm:^1.1.6": - version: 1.1.6 - resolution: "detect-port-alt@npm:1.1.6" +"@types/json5@npm:^0.0.29": + version: 0.0.29 + resolution: "@types/json5@npm:0.0.29" + checksum: e60b153664572116dfea673c5bda7778dbff150498f44f998e34b5886d8afc47f16799280e4b6e241c0472aef1bc36add771c569c68fc5125fc2ae519a3eb9ac + languageName: node + linkType: hard + +"@types/jsonwebtoken@npm:^9.0.0": + version: 9.0.7 + resolution: "@types/jsonwebtoken@npm:9.0.7" dependencies: - address: ^1.0.1 - debug: ^2.6.0 - bin: - detect: ./bin/detect-port - detect-port: ./bin/detect-port - checksum: 9dc37b1fa4a9dd6d4889e1045849b8d841232b598d1ca888bf712f4035b07a17cf6d537465a0d7323250048d3a5a0540e3b7cf89457efc222f96f77e2c40d16a + "@types/node": "*" + checksum: 872b62e2a50ec399d695402ccddfeb5cd66a6c3d28511f27453b932b6b67eb82c2d0ecaa864939848b88b3a8276c2492647bf5707bc82a6ac7e420d3412b9047 languageName: node linkType: hard -"dezalgo@npm:^1.0.4": - version: 1.0.4 - resolution: "dezalgo@npm:1.0.4" +"@types/keyv@npm:^4.2.0": + version: 4.2.0 + resolution: "@types/keyv@npm:4.2.0" dependencies: - asap: ^2.0.0 - wrappy: 1 - checksum: 895389c6aead740d2ab5da4d3466d20fa30f738010a4d3f4dcccc9fc645ca31c9d10b7e1804ae489b1eb02c7986f9f1f34ba132d409b043082a86d9a4e745624 + keyv: "*" + checksum: 8713da9382b9346d664866a6cab2f91b0fd479f61379af891303a618e9a2abad6f347adc38a0850540e3f2dad278427de24e7555339264fddb04d1d17d3b50e0 languageName: node linkType: hard -"diff-sequences@npm:^29.6.3": - version: 29.6.3 - resolution: "diff-sequences@npm:29.6.3" - checksum: f4914158e1f2276343d98ff5b31fc004e7304f5470bf0f1adb2ac6955d85a531a6458d33e87667f98f6ae52ebd3891bb47d420bb48a5bd8b7a27ee25b20e33aa +"@types/lodash@npm:^4.14.151": + version: 4.17.13 + resolution: "@types/lodash@npm:4.17.13" + checksum: d0bf8fbd950be71946e0076b30fd40d492293baea75f05931b6b5b906fd62583708c6229abdb95b30205ad24ce1ed2f48bc9d419364f682320edd03405cc0c7e languageName: node linkType: hard -"diff3@npm:0.0.3": - version: 0.0.3 - resolution: "diff3@npm:0.0.3" - checksum: 28d883f1057b9873dfcb38cd2750337e6b32bf184bb1c0fb3292efeb83c597f1ce9b8f508bdd0d623a58b9ca1c917b1f297b90cb7fce3a62b26b0dde496f70e6 +"@types/lodash@npm:^4.14.175": + version: 4.17.12 + resolution: "@types/lodash@npm:4.17.12" + checksum: 7b564e4114f09ce5ae31a2e9493592baf20bb498507f3705c5d91cf838c2298b4f6a06f2d6c8dc608fcac63e210a2b7b13388c7a5e220e15688f813521030127 languageName: node linkType: hard -"diff@npm:^4.0.1": +"@types/long@npm:^4.0.0": version: 4.0.2 - resolution: "diff@npm:4.0.2" - checksum: f2c09b0ce4e6b301c221addd83bf3f454c0bc00caa3dd837cf6c127d6edf7223aa2bbe3b688feea110b7f262adbfc845b757c44c8a9f8c0c5b15d8fa9ce9d20d + resolution: "@types/long@npm:4.0.2" + checksum: d16cde7240d834cf44ba1eaec49e78ae3180e724cd667052b194a372f350d024cba8dd3f37b0864931683dab09ca935d52f0c4c1687178af5ada9fc85b0635f4 languageName: node linkType: hard -"diff@npm:^5.0.0": - version: 5.2.0 - resolution: "diff@npm:5.2.0" - checksum: 12b63ca9c36c72bafa3effa77121f0581b4015df18bc16bac1f8e263597735649f1a173c26f7eba17fb4162b073fee61788abe49610e6c70a2641fe1895443fd +"@types/lunr@npm:^2.3.3": + version: 2.3.7 + resolution: "@types/lunr@npm:2.3.7" + checksum: 188a18f035e042f4c23e807ae752bfdb0076a0446ff8285b3c10572008fb00282dfeebdbbd566bfcf65dbb073daf552477a0ccbf426ebaa5ce88c0088a860924 languageName: node linkType: hard -"diffie-hellman@npm:^5.0.3": - version: 5.0.3 - resolution: "diffie-hellman@npm:5.0.3" - dependencies: - bn.js: ^4.1.0 - miller-rabin: ^4.0.0 - randombytes: ^2.0.0 - checksum: 0e620f322170c41076e70181dd1c24e23b08b47dbb92a22a644f3b89b6d3834b0f8ee19e37916164e5eb1ee26d2aa836d6129f92723995267250a0b541811065 +"@types/luxon@npm:^3.0.0, @types/luxon@npm:~3.4.0": + version: 3.4.2 + resolution: "@types/luxon@npm:3.4.2" + checksum: 6f92d5bd02e89f310395753506bcd9cef3a56f5940f7a50db2a2b9822bce753553ac767d143cb5b4f9ed5ddd4a84e64f89ff538082ceb4d18739af7781b56925 languageName: node linkType: hard -"dir-glob@npm:^3.0.1": - version: 3.0.1 - resolution: "dir-glob@npm:3.0.1" - dependencies: - path-type: ^4.0.0 - checksum: fa05e18324510d7283f55862f3161c6759a3f2f8dbce491a2fc14c8324c498286c54282c1f0e933cb930da8419b30679389499b919122952a4f8592362ef4615 +"@types/markdown-escape@npm:^1.1.3": + version: 1.1.3 + resolution: "@types/markdown-escape@npm:1.1.3" + checksum: cb2e410993271f0ccc526190391a08344f4f602be69e06fee989d36d5886866ba9ba2184054895d0ad2a12d57b02f3ccf86d7a1fe8904be48bcc1ee61b98e32f languageName: node linkType: hard -"dns-packet@npm:^5.2.2": - version: 5.6.1 - resolution: "dns-packet@npm:5.6.1" +"@types/mdast@npm:^3.0.0": + version: 3.0.15 + resolution: "@types/mdast@npm:3.0.15" dependencies: - "@leichtgewicht/ip-codec": ^2.0.1 - checksum: 64c06457f0c6e143f7a0946e0aeb8de1c5f752217cfa143ef527467c00a6d78db1835cfdb6bb68333d9f9a4963cf23f410439b5262a8935cce1236f45e344b81 + "@types/unist": ^2 + checksum: af85042a4e3af3f879bde4059fa9e76c71cb552dffc896cdcc6cf9dc1fd38e37035c2dbd6245cfa6535b433f1f0478f5549696234ccace47a64055a10c656530 languageName: node linkType: hard -"docker-compose@npm:^0.24.8": - version: 0.24.8 - resolution: "docker-compose@npm:0.24.8" - dependencies: - yaml: ^2.2.2 - checksum: 48f3564c46490f1f51899a144deb546b61450a76bffddb378379ac7702aa34b055e0237e0dc77507df94d7ad6f1f7daeeac27730230bce9aafe2e35efeda6b45 +"@types/methods@npm:^1.1.4": + version: 1.1.4 + resolution: "@types/methods@npm:1.1.4" + checksum: ad2a7178486f2fd167750f3eb920ab032a947ff2e26f55c86670a6038632d790b46f52e5b6ead5823f1e53fc68028f1e9ddd15cfead7903e04517c88debd72b1 languageName: node linkType: hard -"docker-modem@npm:^3.0.0": - version: 3.0.8 - resolution: "docker-modem@npm:3.0.8" - dependencies: - debug: ^4.1.1 - readable-stream: ^3.5.0 - split-ca: ^1.0.1 - ssh2: ^1.11.0 - checksum: e3675c9b1ad800be8fb1cb9c5621fbef20a75bfedcd6e01b69808eadd7f0165681e4e30d1700897b788a67dbf4769964fcccd19c3d66f6d2499bb7aede6b34df +"@types/mime@npm:^1": + version: 1.3.5 + resolution: "@types/mime@npm:1.3.5" + checksum: e29a5f9c4776f5229d84e525b7cd7dd960b51c30a0fb9a028c0821790b82fca9f672dab56561e2acd9e8eed51d431bde52eafdfef30f643586c4162f1aecfc78 languageName: node linkType: hard -"docker-modem@npm:^5.0.3": - version: 5.0.3 - resolution: "docker-modem@npm:5.0.3" - dependencies: - debug: ^4.1.1 - readable-stream: ^3.5.0 - split-ca: ^1.0.1 - ssh2: ^1.15.0 - checksum: 68f4948591622860ca95c10a01cae7f53ff2b2e8435b73b901698083b24ceb24208da12c1db2c47f073d48bc2f64a274cbf30e3c73979734f6fb3fbdf5bdb72e +"@types/ms@npm:*": + version: 0.7.34 + resolution: "@types/ms@npm:0.7.34" + checksum: f38d36e7b6edecd9badc9cf50474159e9da5fa6965a75186cceaf883278611b9df6669dc3a3cc122b7938d317b68a9e3d573d316fcb35d1be47ec9e468c6bd8a languageName: node linkType: hard -"dockerode@npm:^3.3.5": - version: 3.3.5 - resolution: "dockerode@npm:3.3.5" +"@types/multer@npm:^1.4.12": + version: 1.4.12 + resolution: "@types/multer@npm:1.4.12" dependencies: - "@balena/dockerignore": ^1.0.2 - docker-modem: ^3.0.0 - tar-fs: ~2.0.1 - checksum: 7f6650422b07fa7ea9d5801f04b1a432634446b5fe37b995b8302b953b64e93abf1bb4596c2fb574ba47aafee685ef2ab959cc86c9654add5a26d09541bbbcc6 + "@types/express": "*" + checksum: 719cacf88ec83ed77e250e45bee830fd7a505323825efa2a2c1144f5f3d7d36e67408ec988e571bcbaa571e0c214b5ede42d57ebb0f9b453a5eb8faba8ff12d0 languageName: node linkType: hard -"dockerode@npm:^4.0.0": - version: 4.0.2 - resolution: "dockerode@npm:4.0.2" +"@types/node-forge@npm:^1.3.0": + version: 1.3.11 + resolution: "@types/node-forge@npm:1.3.11" dependencies: - "@balena/dockerignore": ^1.0.2 - docker-modem: ^5.0.3 - tar-fs: ~2.0.1 - checksum: 4d36633d04ac5f662b0322d2fa4fe51fb1dd5a45f00b07379196ee5ff5dae13688a9ec1adf1edeaefab5eb22f3ae2219f62026241555a8bcf7edb396bbb5a92f + "@types/node": "*" + checksum: 1e86bd55b92a492eaafd75f6d01f31e7d86a5cdadd0c6bcdc0b1df4103b7f99bb75b832efd5217c7ddda5c781095dc086a868e20b9de00f5a427ddad4c296cd5 languageName: node linkType: hard -"doctrine@npm:^2.1.0": - version: 2.1.0 - resolution: "doctrine@npm:2.1.0" +"@types/node@npm:*": + version: 22.8.2 + resolution: "@types/node@npm:22.8.2" dependencies: - esutils: ^2.0.2 - checksum: a45e277f7feaed309fe658ace1ff286c6e2002ac515af0aaf37145b8baa96e49899638c7cd47dccf84c3d32abfc113246625b3ac8f552d1046072adee13b0dc8 + undici-types: ~6.19.8 + checksum: 8d57352fe563e8de78311c2f799e8c3805cbec3840dfa54d5168588c30112d1e87a7940ebdbdcebb1f0094e26b7e626dfadd9683f5c60d8a76e9082051fea14a languageName: node linkType: hard -"doctrine@npm:^3.0.0": - version: 3.0.0 - resolution: "doctrine@npm:3.0.0" +"@types/node@npm:20.14.2": + version: 20.14.2 + resolution: "@types/node@npm:20.14.2" dependencies: - esutils: ^2.0.2 - checksum: fd7673ca77fe26cd5cba38d816bc72d641f500f1f9b25b83e8ce28827fe2da7ad583a8da26ab6af85f834138cf8dae9f69b0cd6ab925f52ddab1754db44d99ce + undici-types: ~5.26.4 + checksum: 265362479b8f3b50fcd1e3f9e9af6121feb01a478dff0335ae67cccc3babfe45d0f12209d3d350595eebd7e67471762697b877c380513f8e5d27a238fa50c805 languageName: node linkType: hard -"dom-converter@npm:^0.2.0": - version: 0.2.0 - resolution: "dom-converter@npm:0.2.0" +"@types/node@npm:>=13.7.0": + version: 22.10.2 + resolution: "@types/node@npm:22.10.2" dependencies: - utila: ~0.4 - checksum: ea52fe303f5392e48dea563abef0e6fb3a478b8dbe3c599e99bb5d53981c6c38fc4944e56bb92a8ead6bb989d10b7914722ae11febbd2fd0910e33b9fc4aaa77 + undici-types: ~6.20.0 + checksum: b22401e6e7d1484e437d802c72f5560e18100b1257b9ad0574d6fe05bebe4dbcb620ea68627d1f1406775070d29ace8b6b51f57e7b1c7b8bafafe6da7f29c843 languageName: node linkType: hard -"dom-serializer@npm:^1.0.1": - version: 1.4.1 - resolution: "dom-serializer@npm:1.4.1" +"@types/node@npm:^12.7.1": + version: 12.20.55 + resolution: "@types/node@npm:12.20.55" + checksum: e4f86785f4092706e0d3b0edff8dca5a13b45627e4b36700acd8dfe6ad53db71928c8dee914d4276c7fd3b6ccd829aa919811c9eb708a2c8e4c6eb3701178c37 + languageName: node + linkType: hard + +"@types/node@npm:^16.9.2": + version: 16.18.115 + resolution: "@types/node@npm:16.18.115" + checksum: a9caf3a72b8fca0a945c04b99502615f297fc9d12779147822cf10b4a3fe77161b631ae239b9522cf9ccda90fcd9d49abe255bd2012a3347f677210610760d6d + languageName: node + linkType: hard + +"@types/node@npm:^18.11.18, @types/node@npm:^18.11.9": + version: 18.19.60 + resolution: "@types/node@npm:18.19.60" dependencies: - domelementtype: ^2.0.1 - domhandler: ^4.2.0 - entities: ^2.0.0 - checksum: fbb0b01f87a8a2d18e6e5a388ad0f7ec4a5c05c06d219377da1abc7bb0f674d804f4a8a94e3f71ff15f6cb7dcfc75704a54b261db672b9b3ab03da6b758b0b22 + undici-types: ~5.26.4 + checksum: 3cd21254a9f2175d6f652d9d5b9afc0261903e0dfd54355074bf5bd81d6606738bcfdb5581538037e9bd42886c8f5e96596245409fb8cde7fe13751d07bc1495 languageName: node linkType: hard -"dom-serializer@npm:^2.0.0": - version: 2.0.0 - resolution: "dom-serializer@npm:2.0.0" +"@types/node@npm:^20.1.1": + version: 20.17.2 + resolution: "@types/node@npm:20.17.2" dependencies: - domelementtype: ^2.3.0 - domhandler: ^5.0.2 - entities: ^4.2.0 - checksum: cd1810544fd8cdfbd51fa2c0c1128ec3a13ba92f14e61b7650b5de421b88205fd2e3f0cc6ace82f13334114addb90ed1c2f23074a51770a8e9c1273acbc7f3e6 + undici-types: ~6.19.2 + checksum: 3e9be67728001fb2a0ba730d8e909559fb09b992443d8d9cc9009be717cb44c673f52a734d5802a67ff50c8ddd8ef7d9eba40e9d2a82a73098e081d2625260e6 languageName: node linkType: hard -"domain-browser@npm:^1.1.1": - version: 1.2.0 - resolution: "domain-browser@npm:1.2.0" - checksum: 8f1235c7f49326fb762f4675795246a6295e7dd566b4697abec24afdba2460daa7dfbd1a73d31efbf5606b3b7deadb06ce47cf06f0a476e706153d62a4ff2b90 +"@types/oauth@npm:*": + version: 0.9.6 + resolution: "@types/oauth@npm:0.9.6" + dependencies: + "@types/node": "*" + checksum: a35f3ce103a60b7f24d1233411f8b5e2db4c55476527c04da532989870ffd3af81247b3187741a87c2ee8da6dd2bea3438190bf3611be30d4557e323529abe63 languageName: node linkType: hard -"domelementtype@npm:^2.0.1, domelementtype@npm:^2.2.0, domelementtype@npm:^2.3.0": - version: 2.3.0 - resolution: "domelementtype@npm:2.3.0" - checksum: ee837a318ff702622f383409d1f5b25dd1024b692ef64d3096ff702e26339f8e345820f29a68bcdcea8cfee3531776b3382651232fbeae95612d6f0a75efb4f6 +"@types/parse-json@npm:^4.0.0": + version: 4.0.2 + resolution: "@types/parse-json@npm:4.0.2" + checksum: 5bf62eec37c332ad10059252fc0dab7e7da730764869c980b0714777ad3d065e490627be9f40fc52f238ffa3ac4199b19de4127196910576c2fe34dd47c7a470 languageName: node linkType: hard -"domexception@npm:^4.0.0": - version: 4.0.0 - resolution: "domexception@npm:4.0.0" +"@types/passport-oauth2@npm:^1.4.11": + version: 1.4.17 + resolution: "@types/passport-oauth2@npm:1.4.17" dependencies: - webidl-conversions: ^7.0.0 - checksum: ddbc1268edf33a8ba02ccc596735ede80375ee0cf124b30d2f05df5b464ba78ef4f49889b6391df4a04954e63d42d5631c7fcf8b1c4f12bc531252977a5f13d5 + "@types/express": "*" + "@types/oauth": "*" + "@types/passport": "*" + checksum: 4c5d2d6f717bb0b3d049669e47ca27cb166cbbef2073dccd302b10e62936c9e392074acabe6cb593f7eeb37a6a3cf81b9d3a4f35a46018a6645ac37d0f1706cb languageName: node linkType: hard -"domhandler@npm:^4.0.0, domhandler@npm:^4.2.0, domhandler@npm:^4.3.1": - version: 4.3.1 - resolution: "domhandler@npm:4.3.1" +"@types/passport-strategy@npm:^0.2.38": + version: 0.2.38 + resolution: "@types/passport-strategy@npm:0.2.38" dependencies: - domelementtype: ^2.2.0 - checksum: 4c665ceed016e1911bf7d1dadc09dc888090b64dee7851cccd2fcf5442747ec39c647bb1cb8c8919f8bbdd0f0c625a6bafeeed4b2d656bbecdbae893f43ffaaa + "@types/express": "*" + "@types/passport": "*" + checksum: b580e165182b137a6e57b6b7511904e6c875a5e372f08679ec54f456dc5c2a72d86f23d9373a52d8286b207fe8240946686f9e3d50b0bc1b4f7316f336a06fa2 languageName: node linkType: hard -"domhandler@npm:^5.0.2, domhandler@npm:^5.0.3": - version: 5.0.3 - resolution: "domhandler@npm:5.0.3" +"@types/passport@npm:*, @types/passport@npm:^1.0.16, @types/passport@npm:^1.0.3": + version: 1.0.17 + resolution: "@types/passport@npm:1.0.17" dependencies: - domelementtype: ^2.3.0 - checksum: 0f58f4a6af63e6f3a4320aa446d28b5790a009018707bce2859dcb1d21144c7876482b5188395a188dfa974238c019e0a1e610d2fc269a12b2c192ea2b0b131c + "@types/express": "*" + checksum: b131d5963576e759f972f038bb7461dcaaa1dc484a488eb093eac6a9f8d4f51c9b7adcd432ae84e3ecb68839dfba16f6d569f36664330b6af59d36ff3c4c64e2 languageName: node linkType: hard -"domutils@npm:^2.5.2, domutils@npm:^2.8.0": - version: 2.8.0 - resolution: "domutils@npm:2.8.0" - dependencies: - dom-serializer: ^1.0.1 - domelementtype: ^2.2.0 - domhandler: ^4.2.0 - checksum: abf7434315283e9aadc2a24bac0e00eab07ae4313b40cc239f89d84d7315ebdfd2fb1b5bf750a96bc1b4403d7237c7b2ebf60459be394d625ead4ca89b934391 +"@types/prop-types@npm:*, @types/prop-types@npm:^15.0.0, @types/prop-types@npm:^15.7.12, @types/prop-types@npm:^15.7.3": + version: 15.7.14 + resolution: "@types/prop-types@npm:15.7.14" + checksum: d0c5407b9ccc3dd5fae0ccf9b1007e7622ba5e6f1c18399b4f24dff33619d469da4b9fa918a374f19dc0d9fe6a013362aab0b844b606cfc10676efba3f5f736d languageName: node linkType: hard -"domutils@npm:^3.0.1": - version: 3.1.0 - resolution: "domutils@npm:3.1.0" +"@types/protocol-buffers-schema@npm:^3.4.3": + version: 3.4.3 + resolution: "@types/protocol-buffers-schema@npm:3.4.3" dependencies: - dom-serializer: ^2.0.0 - domelementtype: ^2.3.0 - domhandler: ^5.0.3 - checksum: e5757456ddd173caa411cfc02c2bb64133c65546d2c4081381a3bafc8a57411a41eed70494551aa58030be9e58574fcc489828bebd673863d39924fb4878f416 + "@types/node": "*" + checksum: a07e150d4737fea79ea8b58be8b8828c9736319f3d8bce92d282b424629ebcd5e056d083b1f8c150a0a7213cdf518bd62c8c7725473f2214f23f5331adead5fb languageName: node linkType: hard -"dot-case@npm:^3.0.4": - version: 3.0.4 - resolution: "dot-case@npm:3.0.4" - dependencies: - no-case: ^3.0.4 - tslib: ^2.0.3 - checksum: a65e3519414856df0228b9f645332f974f2bf5433370f544a681122eab59e66038fc3349b4be1cdc47152779dac71a5864f1ccda2f745e767c46e9c6543b1169 +"@types/qs@npm:*, @types/qs@npm:^6.9.6": + version: 6.9.16 + resolution: "@types/qs@npm:6.9.16" + checksum: 2e8918150c12735630f7ee16b770c72949274938c30306025f68aaf977227f41fe0c698ed93db1099e04916d582ac5a1faf7e3c7061c8d885d9169f59a184b6c languageName: node linkType: hard -"duplexer@npm:^0.1.2": - version: 0.1.2 - resolution: "duplexer@npm:0.1.2" - checksum: 62ba61a830c56801db28ff6305c7d289b6dc9f859054e8c982abd8ee0b0a14d2e9a8e7d086ffee12e868d43e2bbe8a964be55ddbd8c8957714c87373c7a4f9b0 +"@types/qs@npm:^6.9.11": + version: 6.9.17 + resolution: "@types/qs@npm:6.9.17" + checksum: fc3beda0be70e820ddabaa361e8dfec5e09b482b8f6cf1515615479a027dd06cd5ba0ffbd612b654c2605523f45f484c8905a475623d6cd0c4cadcf5d0c517f5 languageName: node linkType: hard -"duplexify@npm:^4.1.3": - version: 4.1.3 - resolution: "duplexify@npm:4.1.3" +"@types/ramda@npm:~0.30.0": + version: 0.30.2 + resolution: "@types/ramda@npm:0.30.2" dependencies: - end-of-stream: ^1.4.1 - inherits: ^2.0.3 - readable-stream: ^3.1.1 - stream-shift: ^1.0.2 - checksum: 9636a027345de3dd3c801594d01a7c73d9ce260019538beb1ee650bba7544e72f40a4d4902b52e1ab283dc32a06f210d42748773af02ff15e3064a9659deab7f + types-ramda: ^0.30.1 + checksum: 528e62da967adb38b7b6be3314ee11009f4e7312e4fbb9670f4556bb2f640754f08ae68ede87822ae255aba747e67296f40b37d53bfb427c58ab82f5b7a4989e languageName: node linkType: hard -"eastasianwidth@npm:^0.2.0": - version: 0.2.0 - resolution: "eastasianwidth@npm:0.2.0" - checksum: 7d00d7cd8e49b9afa762a813faac332dee781932d6f2c848dc348939c4253f1d4564341b7af1d041853bc3f32c2ef141b58e0a4d9862c17a7f08f68df1e0f1ed +"@types/range-parser@npm:*": + version: 1.2.7 + resolution: "@types/range-parser@npm:1.2.7" + checksum: 95640233b689dfbd85b8c6ee268812a732cf36d5affead89e806fe30da9a430767af8ef2cd661024fd97e19d61f3dec75af2df5e80ec3bea000019ab7028629a languageName: node linkType: hard -"easy-table@npm:1.1.0": - version: 1.1.0 - resolution: "easy-table@npm:1.1.0" +"@types/react-copy-to-clipboard@npm:5.0.7": + version: 5.0.7 + resolution: "@types/react-copy-to-clipboard@npm:5.0.7" dependencies: - wcwidth: ">=1.0.1" - dependenciesMeta: - wcwidth: - optional: true - checksum: 49b960fefe5670076773824386f22070dce185ebc0a99542035496700cc39a0b9346f65fd4307f5fe3dbbe7e6d9c4b59966e77e32f915e0fe71de71c3d0efcf7 + "@types/react": "*" + checksum: adc2970c8756e648daa06e294c422df3dc076a784344ab2ecb78a17ebd7e8e3dfd7f31e68c24267de4815cdeec573a743d952a308b45b8380f6b7912a9a8b911 languageName: node linkType: hard -"easy-table@npm:1.2.0": - version: 1.2.0 - resolution: "easy-table@npm:1.2.0" - dependencies: - ansi-regex: ^5.0.1 - wcwidth: ^1.0.1 - dependenciesMeta: - wcwidth: - optional: true - checksum: 66961b19751a68d2d30ce9b74ef750c374cc3112bbcac3d1ed5a939e43c035ecf6b1954098df2d5b05f1e853ab2b67de893794390dcbf0abe1f157fddeb52174 +"@types/react-dom@npm:^18": + version: 18.3.5 + resolution: "@types/react-dom@npm:18.3.5" + peerDependencies: + "@types/react": ^18.0.0 + checksum: 95c757684f71e761515c5a11299e5feec550c72bb52975487f360e6f0d359b26454c26eaf2ce45dd22748205aa9b2c2fe0abe7005ebcbd233a7615283ac39a7d languageName: node linkType: hard -"ecc-jsbn@npm:~0.1.1": - version: 0.1.2 - resolution: "ecc-jsbn@npm:0.1.2" +"@types/react-measure@npm:^2.0.6": + version: 2.0.12 + resolution: "@types/react-measure@npm:2.0.12" dependencies: - jsbn: ~0.1.0 - safer-buffer: ^2.1.0 - checksum: 22fef4b6203e5f31d425f5b711eb389e4c6c2723402e389af394f8411b76a488fa414d309d866e2b577ce3e8462d344205545c88a8143cc21752a5172818888a + "@types/react": "*" + checksum: c04ab0835bc4732383a9c7cf90aabab1155e3834fc4ee8470e173964aaa301963057a1905db51c208d5bc833df345720565ae430ac4f41e34e6aff6d9671cc61 languageName: node linkType: hard -"ecdsa-sig-formatter@npm:1.0.11, ecdsa-sig-formatter@npm:^1.0.11": - version: 1.0.11 - resolution: "ecdsa-sig-formatter@npm:1.0.11" +"@types/react-redux@npm:^7.1.20": + version: 7.1.34 + resolution: "@types/react-redux@npm:7.1.34" dependencies: - safe-buffer: ^5.0.1 - checksum: 207f9ab1c2669b8e65540bce29506134613dd5f122cccf1e6a560f4d63f2732d427d938f8481df175505aad94583bcb32c688737bb39a6df0625f903d6d93c03 + "@types/hoist-non-react-statics": ^3.3.0 + "@types/react": "*" + hoist-non-react-statics: ^3.3.0 + redux: ^4.0.0 + checksum: ba0cc5f54b91bff162cc97cf5d82d0077944e2d744c276c3c8eb896a293aba00923b513f5cd6ad717a46bf0c128a099ad697c98672202acb25143602042c8e6c languageName: node linkType: hard -"ee-first@npm:1.1.1": - version: 1.1.1 - resolution: "ee-first@npm:1.1.1" - checksum: 1b4cac778d64ce3b582a7e26b218afe07e207a0f9bfe13cc7395a6d307849cfe361e65033c3251e00c27dd060cab43014c2d6b2647676135e18b77d2d05b3f4f +"@types/react-sparklines@npm:^1.7.0": + version: 1.7.5 + resolution: "@types/react-sparklines@npm:1.7.5" + dependencies: + "@types/react": "*" + checksum: e79755fb1ed504d36ca0b6aec4e7ef54eba30448a27c275ef56b55132c37761c11d693f885e248e2e8ba80f294bf9475e7d0e15ce5f5bb2a2219f07f18488409 languageName: node linkType: hard -"electron-to-chromium@npm:^1.5.41": - version: 1.5.49 - resolution: "electron-to-chromium@npm:1.5.49" - checksum: 84d4fde02a6de9464f8de2933e2172253098bf219a368cfd0e1ec71b73f9c0800a9ddf7bfdf57408e5fedef858561eaaf4e30ebbf20d94244a6001d570ce07a9 +"@types/react-transition-group@npm:^4.2.0, @types/react-transition-group@npm:^4.4.10": + version: 4.4.12 + resolution: "@types/react-transition-group@npm:4.4.12" + peerDependencies: + "@types/react": "*" + checksum: 13d36396cae4d3c316b03d4a0ba299f0d039c59368ba65e04b0c3dc06fd0a16f59d2c669c3e32d6d525a95423f156b84e550d26bff0bdd8df285f305f8f3a0ed languageName: node linkType: hard -"elliptic@npm:^6.5.3, elliptic@npm:^6.5.5": - version: 6.6.0 - resolution: "elliptic@npm:6.6.0" +"@types/react@npm:^18": + version: 18.3.17 + resolution: "@types/react@npm:18.3.17" dependencies: - bn.js: ^4.11.9 - brorand: ^1.1.0 - hash.js: ^1.0.0 - hmac-drbg: ^1.0.1 - inherits: ^2.0.4 - minimalistic-assert: ^1.0.1 - minimalistic-crypto-utils: ^1.0.1 - checksum: e912349b883e694bfe65005214237a470c9a098a6ba36fd24396d0ab07feb399920c0738aeed1aed6cf5dca9c64fd479e212faed3a75c9d81453671ef0de5157 + "@types/prop-types": "*" + csstype: ^3.0.2 + checksum: 8107f6f5cc8706a3814e6c927e135ce0c7b40a6d9ae2b8dfb071fee03c6f714456041ecdf92dece599da0db8be7f56f6dc6353d4701f47a04772c7ec0cbb0b59 languageName: node linkType: hard -"emittery@npm:^0.13.1": - version: 0.13.1 - resolution: "emittery@npm:0.13.1" - checksum: 2b089ab6306f38feaabf4f6f02792f9ec85fc054fda79f44f6790e61bbf6bc4e1616afb9b232e0c5ec5289a8a452f79bfa6d905a6fd64e94b49981f0934001c6 +"@types/regression@npm:2.0.6": + version: 2.0.6 + resolution: "@types/regression@npm:2.0.6" + checksum: c412ddd924efd53395f0011b38a6b1dbc94fc71adfa80efcb6657f0f1b6123fb27c101798dda8d0aa638c925900b4b4a9c5c03504a0d1255edd160e3090a5ce9 languageName: node linkType: hard -"emoji-regex@npm:^8.0.0": - version: 8.0.0 - resolution: "emoji-regex@npm:8.0.0" - checksum: d4c5c39d5a9868b5fa152f00cada8a936868fd3367f33f71be515ecee4c803132d11b31a6222b2571b1e5f7e13890156a94880345594d0ce7e3c9895f560f192 +"@types/request@npm:^2.47.1, @types/request@npm:^2.48.8": + version: 2.48.12 + resolution: "@types/request@npm:2.48.12" + dependencies: + "@types/caseless": "*" + "@types/node": "*" + "@types/tough-cookie": "*" + form-data: ^2.5.0 + checksum: 20dfad0a46b4249bf42f09c51fbd4d02ec6738c5152194b5c7c69bab80b00eae9cc71df4489ffa929d0968d453ef7d0823d1f98871efed563a4fdb57bf0a4c58 languageName: node linkType: hard -"emoji-regex@npm:^9.2.2": - version: 9.2.2 - resolution: "emoji-regex@npm:9.2.2" - checksum: 8487182da74aabd810ac6d6f1994111dfc0e331b01271ae01ec1eb0ad7b5ecc2bbbbd2f053c05cb55a1ac30449527d819bbfbf0e3de1023db308cbcb47f86601 +"@types/resolve@npm:1.20.2": + version: 1.20.2 + resolution: "@types/resolve@npm:1.20.2" + checksum: 61c2cad2499ffc8eab36e3b773945d337d848d3ac6b7b0a87c805ba814bc838ef2f262fc0f109bfd8d2e0898ff8bd80ad1025f9ff64f1f71d3d4294c9f14e5f6 languageName: node linkType: hard -"emojis-list@npm:^3.0.0": - version: 3.0.0 - resolution: "emojis-list@npm:3.0.0" - checksum: ddaaa02542e1e9436c03970eeed445f4ed29a5337dfba0fe0c38dfdd2af5da2429c2a0821304e8a8d1cadf27fdd5b22ff793571fa803ae16852a6975c65e8e70 +"@types/retry@npm:0.12.0": + version: 0.12.0 + resolution: "@types/retry@npm:0.12.0" + checksum: 61a072c7639f6e8126588bf1eb1ce8835f2cb9c2aba795c4491cf6310e013267b0c8488039857c261c387e9728c1b43205099223f160bb6a76b4374f741b5603 languageName: node linkType: hard -"enabled@npm:2.0.x": - version: 2.0.0 - resolution: "enabled@npm:2.0.0" - checksum: 9d256d89f4e8a46ff988c6a79b22fa814b4ffd82826c4fdacd9b42e9b9465709d3b748866d0ab4d442dfc6002d81de7f7b384146ccd1681f6a7f868d2acca063 +"@types/retry@npm:0.12.2": + version: 0.12.2 + resolution: "@types/retry@npm:0.12.2" + checksum: e5675035717b39ce4f42f339657cae9637cf0c0051cf54314a6a2c44d38d91f6544be9ddc0280587789b6afd056be5d99dbe3e9f4df68c286c36321579b1bf4a languageName: node linkType: hard -"encodeurl@npm:^1.0.2, encodeurl@npm:~1.0.2": - version: 1.0.2 - resolution: "encodeurl@npm:1.0.2" - checksum: e50e3d508cdd9c4565ba72d2012e65038e5d71bdc9198cb125beb6237b5b1ade6c0d343998da9e170fb2eae52c1bed37d4d6d98a46ea423a0cddbed5ac3f780c +"@types/sarif@npm:^2.1.4": + version: 2.1.7 + resolution: "@types/sarif@npm:2.1.7" + checksum: ee5d30f5a2678091502343fba7905e85d25dbb545f920de9fc8a7c6693509b491a043168970a16325730cc0c88de54d2b6b3de0c2caa31645c8ebf558c5553af languageName: node linkType: hard -"encodeurl@npm:~2.0.0": - version: 2.0.0 - resolution: "encodeurl@npm:2.0.0" - checksum: abf5cd51b78082cf8af7be6785813c33b6df2068ce5191a40ca8b1afe6a86f9230af9a9ce694a5ce4665955e5c1120871826df9c128a642e09c58d592e2807fe +"@types/semver@npm:7.5.8, @types/semver@npm:^7.5.0": + version: 7.5.8 + resolution: "@types/semver@npm:7.5.8" + checksum: ea6f5276f5b84c55921785a3a27a3cd37afee0111dfe2bcb3e03c31819c197c782598f17f0b150a69d453c9584cd14c4c4d7b9a55d2c5e6cacd4d66fdb3b3663 languageName: node linkType: hard -"encoding@npm:^0.1.13": - version: 0.1.13 - resolution: "encoding@npm:0.1.13" +"@types/send@npm:*": + version: 0.17.4 + resolution: "@types/send@npm:0.17.4" dependencies: - iconv-lite: ^0.6.2 - checksum: bb98632f8ffa823996e508ce6a58ffcf5856330fde839ae42c9e1f436cc3b5cc651d4aeae72222916545428e54fd0f6aa8862fd8d25bdbcc4589f1e3f3715e7f + "@types/mime": ^1 + "@types/node": "*" + checksum: cf4db48251bbb03cd6452b4de6e8e09e2d75390a92fd798eca4a803df06444adc94ed050246c94c7ed46fb97be1f63607f0e1f13c3ce83d71788b3e08640e5e0 languageName: node linkType: hard -"end-of-stream@npm:^1.1.0, end-of-stream@npm:^1.4.1": - version: 1.4.4 - resolution: "end-of-stream@npm:1.4.4" +"@types/serve-index@npm:^1.9.1, @types/serve-index@npm:^1.9.4": + version: 1.9.4 + resolution: "@types/serve-index@npm:1.9.4" dependencies: - once: ^1.4.0 - checksum: 530a5a5a1e517e962854a31693dbb5c0b2fc40b46dad2a56a2deec656ca040631124f4795823acc68238147805f8b021abbe221f4afed5ef3c8e8efc2024908b + "@types/express": "*" + checksum: 72727c88d54da5b13275ebfb75dcdc4aa12417bbe9da1939e017c4c5f0c906fae843aa4e0fbfe360e7ee9df2f3d388c21abfc488f77ce58693fb57809f8ded92 languageName: node linkType: hard -"enhanced-resolve@npm:^5.17.1": - version: 5.17.1 - resolution: "enhanced-resolve@npm:5.17.1" +"@types/serve-static@npm:*, @types/serve-static@npm:^1.13.10, @types/serve-static@npm:^1.15.5": + version: 1.15.7 + resolution: "@types/serve-static@npm:1.15.7" dependencies: - graceful-fs: ^4.2.4 - tapable: ^2.2.0 - checksum: 4bc38cf1cea96456f97503db7280394177d1bc46f8f87c267297d04f795ac5efa81e48115a2f5b6273c781027b5b6bfc5f62b54df629e4d25fa7001a86624f59 + "@types/http-errors": "*" + "@types/node": "*" + "@types/send": "*" + checksum: bbbf00dbd84719da2250a462270dc68964006e8d62f41fe3741abd94504ba3688f420a49afb2b7478921a1544d3793183ffa097c5724167da777f4e0c7f1a7d6 languageName: node linkType: hard -"enquirer@npm:^2.3.0": - version: 2.4.1 - resolution: "enquirer@npm:2.4.1" +"@types/set-cookie-parser@npm:^2.4.0": + version: 2.4.10 + resolution: "@types/set-cookie-parser@npm:2.4.10" dependencies: - ansi-colors: ^4.1.1 - strip-ansi: ^6.0.1 - checksum: f080f11a74209647dbf347a7c6a83c8a47ae1ebf1e75073a808bc1088eb780aa54075bfecd1bcdb3e3c724520edb8e6ee05da031529436b421b71066fcc48cb5 + "@types/node": "*" + checksum: 105cc90c7d7deeb344858f720b58bd137356586545ac00d1a448e050bfcc0f385553ff26bc9c674bd8c2e953a458149eadb1945ee3d1eee81e6c0656236ebc0a languageName: node linkType: hard -"entities@npm:^2.0.0": - version: 2.2.0 - resolution: "entities@npm:2.2.0" - checksum: 19010dacaf0912c895ea262b4f6128574f9ccf8d4b3b65c7e8334ad0079b3706376360e28d8843ff50a78aabcb8f08f0a32dbfacdc77e47ed77ca08b713669b3 +"@types/sockjs@npm:^0.3.33, @types/sockjs@npm:^0.3.36": + version: 0.3.36 + resolution: "@types/sockjs@npm:0.3.36" + dependencies: + "@types/node": "*" + checksum: b4b5381122465d80ea8b158537c00bc82317222d3fb31fd7229ff25b31fa89134abfbab969118da55622236bf3d8fee75759f3959908b5688991f492008f29bc languageName: node linkType: hard -"entities@npm:^4.2.0, entities@npm:^4.4.0, entities@npm:^4.5.0": - version: 4.5.0 - resolution: "entities@npm:4.5.0" - checksum: 853f8ebd5b425d350bffa97dd6958143179a5938352ccae092c62d1267c4e392a039be1bae7d51b6e4ffad25f51f9617531fedf5237f15df302ccfb452cbf2d7 +"@types/ssh2-streams@npm:*": + version: 0.1.12 + resolution: "@types/ssh2-streams@npm:0.1.12" + dependencies: + "@types/node": "*" + checksum: aa0aa45e40cfca34b4443dafa8d28ff49196c05c71867cbf0a8cdd5127be4d8a3840819543fcad16535653ca8b0e29217671ed6500ff1e7a3ad2442c5d1b40a6 languageName: node linkType: hard -"env-paths@npm:^2.2.0": - version: 2.2.1 - resolution: "env-paths@npm:2.2.1" - checksum: 65b5df55a8bab92229ab2b40dad3b387fad24613263d103a97f91c9fe43ceb21965cd3392b1ccb5d77088021e525c4e0481adb309625d0cb94ade1d1fb8dc17e +"@types/ssh2@npm:*": + version: 1.15.1 + resolution: "@types/ssh2@npm:1.15.1" + dependencies: + "@types/node": ^18.11.18 + checksum: 6a10b4da60817f2939cac18006a7ccbc6421facf2370a263072fc5290b1f5d445b385c5f309e93ce447bb33ad92dac18f562ccda20f092076da1c1a55da299fb languageName: node linkType: hard -"err-code@npm:^2.0.2": +"@types/ssh2@npm:^0.5.48": + version: 0.5.52 + resolution: "@types/ssh2@npm:0.5.52" + dependencies: + "@types/node": "*" + "@types/ssh2-streams": "*" + checksum: bc1c76ac727ad73ddd59ba849cf0ea3ed2e930439e7a363aff24f04f29b74f9b1976369b869dc9a018223c9fb8ad041c09a0f07aea8cf46a8c920049188cddae + languageName: node + linkType: hard + +"@types/stack-utils@npm:^2.0.0": version: 2.0.3 - resolution: "err-code@npm:2.0.3" - checksum: 8b7b1be20d2de12d2255c0bc2ca638b7af5171142693299416e6a9339bd7d88fc8d7707d913d78e0993176005405a236b066b45666b27b797252c771156ace54 + resolution: "@types/stack-utils@npm:2.0.3" + checksum: 72576cc1522090fe497337c2b99d9838e320659ac57fa5560fcbdcbafcf5d0216c6b3a0a8a4ee4fdb3b1f5e3420aa4f6223ab57b82fef3578bec3206425c6cf5 languageName: node linkType: hard -"error-ex@npm:^1.3.1": - version: 1.3.2 - resolution: "error-ex@npm:1.3.2" +"@types/styled-jsx@npm:^2.2.8": + version: 2.2.9 + resolution: "@types/styled-jsx@npm:2.2.9" dependencies: - is-arrayish: ^0.2.1 - checksum: c1c2b8b65f9c91b0f9d75f0debaa7ec5b35c266c2cac5de412c1a6de86d4cbae04ae44e510378cb14d032d0645a36925d0186f8bb7367bcc629db256b743a001 + "@types/react": "*" + checksum: 0e7e9bce8435116168b2470c7599b3b6ad5775c678d5dc06b64b0bc4fe369c59603c794a7298e2ca4e209aa0135f98df89793a3a0778251c1907b34198c55e9e languageName: node linkType: hard -"error-stack-parser@npm:^2.0.6": - version: 2.1.4 - resolution: "error-stack-parser@npm:2.1.4" +"@types/superagent@npm:*": + version: 8.1.9 + resolution: "@types/superagent@npm:8.1.9" dependencies: - stackframe: ^1.3.4 - checksum: 3b916d2d14c6682f287c8bfa28e14672f47eafe832701080e420e7cdbaebb2c50293868256a95706ac2330fe078cf5664713158b49bc30d7a5f2ac229ded0e18 + "@types/cookiejar": ^2.1.5 + "@types/methods": ^1.1.4 + "@types/node": "*" + form-data: ^4.0.0 + checksum: 530d8c2e87706315c82c8c9696500c40621de3353bc54ea9b104947f3530243abf54d0a49a6ae219d4947606a102ceb94bedfc43b9cc49f74069a18cbb3be8e2 languageName: node linkType: hard -"es-abstract@npm:^1.17.5, es-abstract@npm:^1.22.1, es-abstract@npm:^1.22.3, es-abstract@npm:^1.23.0, es-abstract@npm:^1.23.1, es-abstract@npm:^1.23.2, es-abstract@npm:^1.23.3": - version: 1.23.3 - resolution: "es-abstract@npm:1.23.3" +"@types/supertest@npm:2.0.16": + version: 2.0.16 + resolution: "@types/supertest@npm:2.0.16" dependencies: - array-buffer-byte-length: ^1.0.1 - arraybuffer.prototype.slice: ^1.0.3 - available-typed-arrays: ^1.0.7 - call-bind: ^1.0.7 - data-view-buffer: ^1.0.1 - data-view-byte-length: ^1.0.1 - data-view-byte-offset: ^1.0.0 - es-define-property: ^1.0.0 - es-errors: ^1.3.0 - es-object-atoms: ^1.0.0 - es-set-tostringtag: ^2.0.3 - es-to-primitive: ^1.2.1 - function.prototype.name: ^1.1.6 - get-intrinsic: ^1.2.4 - get-symbol-description: ^1.0.2 - globalthis: ^1.0.3 - gopd: ^1.0.1 - has-property-descriptors: ^1.0.2 - has-proto: ^1.0.3 - has-symbols: ^1.0.3 - hasown: ^2.0.2 - internal-slot: ^1.0.7 - is-array-buffer: ^3.0.4 - is-callable: ^1.2.7 - is-data-view: ^1.0.1 - is-negative-zero: ^2.0.3 - is-regex: ^1.1.4 - is-shared-array-buffer: ^1.0.3 - is-string: ^1.0.7 - is-typed-array: ^1.1.13 - is-weakref: ^1.0.2 - object-inspect: ^1.13.1 - object-keys: ^1.1.1 - object.assign: ^4.1.5 - regexp.prototype.flags: ^1.5.2 - safe-array-concat: ^1.1.2 - safe-regex-test: ^1.0.3 - string.prototype.trim: ^1.2.9 - string.prototype.trimend: ^1.0.8 - string.prototype.trimstart: ^1.0.8 - typed-array-buffer: ^1.0.2 - typed-array-byte-length: ^1.0.1 - typed-array-byte-offset: ^1.0.2 - typed-array-length: ^1.0.6 - unbox-primitive: ^1.0.2 - which-typed-array: ^1.1.15 - checksum: f840cf161224252512f9527306b57117192696571e07920f777cb893454e32999206198b4f075516112af6459daca282826d1735c450528470356d09eff3a9ae + "@types/superagent": "*" + checksum: 2fc998ea698e0467cdbe3bea0ebce2027ea3a45a13e51a6cecb0435f44b486faecf99c34d8702d2d7fe033e6e09fdd2b374af52ecc8d0c69a1deec66b8c0dd52 languageName: node linkType: hard -"es-aggregate-error@npm:^1.0.7": - version: 1.0.13 - resolution: "es-aggregate-error@npm:1.0.13" +"@types/tern@npm:*": + version: 0.23.9 + resolution: "@types/tern@npm:0.23.9" dependencies: - define-data-property: ^1.1.4 - define-properties: ^1.2.1 - es-abstract: ^1.23.2 - es-errors: ^1.3.0 - function-bind: ^1.1.2 - globalthis: ^1.0.3 - has-property-descriptors: ^1.0.2 - set-function-name: ^2.0.2 - checksum: f29596a9267220850fd77cc32abec369ffdea8ccc05de3ca387e55cf1711db2d1f6cdd1384f5bb968dbfb3ae8371919e82a61edb7219123caa41b924f31f1821 + "@types/estree": "*" + checksum: 53f229c79edf9454011f5b37c8539e0e760a130beac953d4e2126823de1ac6b0e2a45612596679fb232ec861826584fcaa272e2254a890b410575683423d56a8 languageName: node linkType: hard -"es-define-property@npm:^1.0.0": - version: 1.0.0 - resolution: "es-define-property@npm:1.0.0" - dependencies: - get-intrinsic: ^1.2.4 - checksum: f66ece0a887b6dca71848fa71f70461357c0e4e7249696f81bad0a1f347eed7b31262af4a29f5d726dc026426f085483b6b90301855e647aa8e21936f07293c6 +"@types/tough-cookie@npm:*": + version: 4.0.5 + resolution: "@types/tough-cookie@npm:4.0.5" + checksum: f19409d0190b179331586365912920d192733112a195e870c7f18d20ac8adb7ad0b0ff69dad430dba8bc2be09593453a719cfea92dc3bda19748fd158fe1498d languageName: node linkType: hard -"es-errors@npm:^1.2.1, es-errors@npm:^1.3.0": - version: 1.3.0 - resolution: "es-errors@npm:1.3.0" - checksum: ec1414527a0ccacd7f15f4a3bc66e215f04f595ba23ca75cdae0927af099b5ec865f9f4d33e9d7e86f512f252876ac77d4281a7871531a50678132429b1271b5 +"@types/triple-beam@npm:^1.3.2": + version: 1.3.5 + resolution: "@types/triple-beam@npm:1.3.5" + checksum: 519b6a1b30d4571965c9706ad5400a200b94e4050feca3e7856e3ea7ac00ec9903e32e9a10e2762d0f7e472d5d03e5f4b29c16c0bd8c1f77c8876c683b2231f1 languageName: node linkType: hard -"es-iterator-helpers@npm:^1.1.0": - version: 1.1.0 - resolution: "es-iterator-helpers@npm:1.1.0" - dependencies: - call-bind: ^1.0.7 - define-properties: ^1.2.1 - es-abstract: ^1.23.3 - es-errors: ^1.3.0 - es-set-tostringtag: ^2.0.3 - function-bind: ^1.1.2 - get-intrinsic: ^1.2.4 - globalthis: ^1.0.4 - has-property-descriptors: ^1.0.2 - has-proto: ^1.0.3 - has-symbols: ^1.0.3 - internal-slot: ^1.0.7 - iterator.prototype: ^1.1.3 - safe-array-concat: ^1.1.2 - checksum: 4ba3a32ab7ba05b85f0ae30604feeb8ffd801fe762e9df9577bd220a96b9eaa2e90af8e6bdc498e523051f293955e2f7d2bddd34de71e1428a1b8ff3fd961016 +"@types/trusted-types@npm:*, @types/trusted-types@npm:^2.0.7": + version: 2.0.7 + resolution: "@types/trusted-types@npm:2.0.7" + checksum: 8e4202766a65877efcf5d5a41b7dd458480b36195e580a3b1085ad21e948bc417d55d6f8af1fd2a7ad008015d4117d5fdfe432731157da3c68678487174e4ba3 languageName: node linkType: hard -"es-module-lexer@npm:^0.9.3": - version: 0.9.3 - resolution: "es-module-lexer@npm:0.9.3" - checksum: 84bbab23c396281db2c906c766af58b1ae2a1a2599844a504df10b9e8dc77ec800b3211fdaa133ff700f5703d791198807bba25d9667392d27a5e9feda344da8 +"@types/unist@npm:^2, @types/unist@npm:^2.0.0": + version: 2.0.11 + resolution: "@types/unist@npm:2.0.11" + checksum: 6d436e832bc35c6dde9f056ac515ebf2b3384a1d7f63679d12358766f9b313368077402e9c1126a14d827f10370a5485e628bf61aa91117cf4fc882423191a4e languageName: node linkType: hard -"es-module-lexer@npm:^1.2.1, es-module-lexer@npm:^1.3.1": - version: 1.5.4 - resolution: "es-module-lexer@npm:1.5.4" - checksum: a0cf04fb92d052647ac7d818d1913b98d3d3d0f5b9d88f0eafb993436e4c3e2c958599db68839d57f2dfa281fdf0f60e18d448eb78fc292c33c0f25635b6854f +"@types/urijs@npm:^1.19.19": + version: 1.19.25 + resolution: "@types/urijs@npm:1.19.25" + checksum: cce3fd2845d5e143f4130134a5f6ff7e02b4dfc05f4d13c7b28a404fd9420bb8a6483a572c0662693bb18c5b3d8f814270aa75f3fd539f32fae22d005e755b5d languageName: node linkType: hard -"es-object-atoms@npm:^1.0.0": - version: 1.0.0 - resolution: "es-object-atoms@npm:1.0.0" +"@types/use-sync-external-store@npm:^0.0.6": + version: 0.0.6 + resolution: "@types/use-sync-external-store@npm:0.0.6" + checksum: a95ce330668501ad9b1c5b7f2b14872ad201e552a0e567787b8f1588b22c7040c7c3d80f142cbb9f92d13c4ea41c46af57a20f2af4edf27f224d352abcfe4049 + languageName: node + linkType: hard + +"@types/uuid@npm:^9.0.1": + version: 9.0.8 + resolution: "@types/uuid@npm:9.0.8" + checksum: b8c60b7ba8250356b5088302583d1704a4e1a13558d143c549c408bf8920535602ffc12394ede77f8a8083511b023704bc66d1345792714002bfa261b17c5275 + languageName: node + linkType: hard + +"@types/webpack-env@npm:^1.15.2": + version: 1.18.5 + resolution: "@types/webpack-env@npm:1.18.5" + checksum: 4ca8eb4c44e1e1807c3e245442fce7aaf2816a163056de9436bbac44cc47c8bc5b1c9a330dc05748d6616431b1fb5bd5379733fb1da0b78d03c59f4ec824c184 + languageName: node + linkType: hard + +"@types/ws@npm:*, @types/ws@npm:^8.0.0": + version: 8.5.13 + resolution: "@types/ws@npm:8.5.13" dependencies: - es-errors: ^1.3.0 - checksum: 26f0ff78ab93b63394e8403c353842b2272836968de4eafe97656adfb8a7c84b9099bf0fe96ed58f4a4cddc860f6e34c77f91649a58a5daa4a9c40b902744e3c + "@types/node": "*" + checksum: f17023ce7b89c6124249c90211803a4aaa02886e12bc2d0d2cd47fa665eeb058db4d871ce4397d8e423f6beea97dd56835dd3fdbb921030fe4d887601e37d609 languageName: node linkType: hard -"es-set-tostringtag@npm:^2.0.3": - version: 2.0.3 - resolution: "es-set-tostringtag@npm:2.0.3" +"@types/ws@npm:^8.5.10, @types/ws@npm:^8.5.3, @types/ws@npm:^8.5.5": + version: 8.5.12 + resolution: "@types/ws@npm:8.5.12" dependencies: - get-intrinsic: ^1.2.4 - has-tostringtag: ^1.0.2 - hasown: ^2.0.1 - checksum: 7227fa48a41c0ce83e0377b11130d324ac797390688135b8da5c28994c0165be8b252e15cd1de41e1325e5a5412511586960213e88f9ab4a5e7d028895db5129 + "@types/node": "*" + checksum: ddefb6ad1671f70ce73b38a5f47f471d4d493864fca7c51f002a86e5993d031294201c5dced6d5018fb8905ad46888d65c7f20dd54fc165910b69f42fba9a6d0 languageName: node linkType: hard -"es-shim-unscopables@npm:^1.0.0, es-shim-unscopables@npm:^1.0.2": - version: 1.0.2 - resolution: "es-shim-unscopables@npm:1.0.2" +"@types/xml-encryption@npm:^1.2.4": + version: 1.2.4 + resolution: "@types/xml-encryption@npm:1.2.4" dependencies: - hasown: ^2.0.0 - checksum: 432bd527c62065da09ed1d37a3f8e623c423683285e6188108286f4a1e8e164a5bcbfbc0051557c7d14633cd2a41ce24c7048e6bbb66a985413fd32f1be72626 + "@types/node": "*" + checksum: 1ef957dfb47cf55b12e114755e271a2343f73eb4c59ab6c68b0b7d1b8111d7e1bd8d2bfe0601d2aea09be83c66355bc77fc59f9b71aeff9bb9e15371bcfef5d3 languageName: node linkType: hard -"es-to-primitive@npm:^1.2.1": - version: 1.2.1 - resolution: "es-to-primitive@npm:1.2.1" +"@types/xml2js@npm:^0.4.14": + version: 0.4.14 + resolution: "@types/xml2js@npm:0.4.14" dependencies: - is-callable: ^1.1.4 - is-date-object: ^1.0.1 - is-symbol: ^1.0.2 - checksum: 4ead6671a2c1402619bdd77f3503991232ca15e17e46222b0a41a5d81aebc8740a77822f5b3c965008e631153e9ef0580540007744521e72de8e33599fca2eed + "@types/node": "*" + checksum: df9f106b9953dcdec7ba3304ebc56d6c2f61d49bf556d600bed439f94a1733f73ca0bf2d0f64330b402191622862d9d6058bab9d7e3dcb5b0fe51ebdc4372aac languageName: node linkType: hard -"es6-error@npm:^4.1.1": - version: 4.1.1 - resolution: "es6-error@npm:4.1.1" - checksum: ae41332a51ec1323da6bbc5d75b7803ccdeddfae17c41b6166ebbafc8e8beb7a7b80b884b7fab1cc80df485860ac3c59d78605e860bb4f8cd816b3d6ade0d010 +"@types/yargs-parser@npm:*": + version: 21.0.3 + resolution: "@types/yargs-parser@npm:21.0.3" + checksum: ef236c27f9432983e91432d974243e6c4cdae227cb673740320eff32d04d853eed59c92ca6f1142a335cfdc0e17cccafa62e95886a8154ca8891cc2dec4ee6fc languageName: node linkType: hard -"esbuild-loader@npm:^2.18.0": - version: 2.21.0 - resolution: "esbuild-loader@npm:2.21.0" +"@types/yargs@npm:^17.0.8": + version: 17.0.33 + resolution: "@types/yargs@npm:17.0.33" dependencies: - esbuild: ^0.16.17 - joycon: ^3.0.1 - json5: ^2.2.0 - loader-utils: ^2.0.0 - tapable: ^2.2.0 - webpack-sources: ^1.4.3 - peerDependencies: - webpack: ^4.40.0 || ^5.0.0 - checksum: a0456ed7794e2c220a6068e92d739bc19765bff352bf7e44442aa8127631cc517ecd02a3ee969e31fa6b6a91befeac928296488c95e3818a776cd3b11d46348c + "@types/yargs-parser": "*" + checksum: ee013f257472ab643cb0584cf3e1ff9b0c44bca1c9ba662395300a7f1a6c55fa9d41bd40ddff42d99f5d95febb3907c9ff600fbcb92dadbec22c6a76de7e1236 languageName: node linkType: hard -"esbuild-loader@npm:^4.0.0": - version: 4.2.2 - resolution: "esbuild-loader@npm:4.2.2" +"@typescript-eslint/eslint-plugin@npm:^6.12.0": + version: 6.21.0 + resolution: "@typescript-eslint/eslint-plugin@npm:6.21.0" dependencies: - esbuild: ^0.21.0 - get-tsconfig: ^4.7.0 - loader-utils: ^2.0.4 - webpack-sources: ^1.4.3 + "@eslint-community/regexpp": ^4.5.1 + "@typescript-eslint/scope-manager": 6.21.0 + "@typescript-eslint/type-utils": 6.21.0 + "@typescript-eslint/utils": 6.21.0 + "@typescript-eslint/visitor-keys": 6.21.0 + debug: ^4.3.4 + graphemer: ^1.4.0 + ignore: ^5.2.4 + natural-compare: ^1.4.0 + semver: ^7.5.4 + ts-api-utils: ^1.0.1 peerDependencies: - webpack: ^4.40.0 || ^5.0.0 - checksum: 793d2482693c1c66298f63d7fdb62f2f3e314b006ade1dc3c46b46ade39777c5fba5930c2fa2752636c511997faa08d4a0f5d5b8a734b9046b3626aa6d5ab8e3 + "@typescript-eslint/parser": ^6.0.0 || ^6.0.0-alpha + eslint: ^7.0.0 || ^8.0.0 + peerDependenciesMeta: + typescript: + optional: true + checksum: 5ef2c502255e643e98051e87eb682c2a257e87afd8ec3b9f6274277615e1c2caf3131b352244cfb1987b8b2c415645eeacb9113fa841fc4c9b2ac46e8aed6efd languageName: node linkType: hard -"esbuild@npm:^0.16.17": - version: 0.16.17 - resolution: "esbuild@npm:0.16.17" +"@typescript-eslint/parser@npm:^6.7.2": + version: 6.21.0 + resolution: "@typescript-eslint/parser@npm:6.21.0" dependencies: - "@esbuild/android-arm": 0.16.17 - "@esbuild/android-arm64": 0.16.17 - "@esbuild/android-x64": 0.16.17 - "@esbuild/darwin-arm64": 0.16.17 - "@esbuild/darwin-x64": 0.16.17 - "@esbuild/freebsd-arm64": 0.16.17 - "@esbuild/freebsd-x64": 0.16.17 - "@esbuild/linux-arm": 0.16.17 - "@esbuild/linux-arm64": 0.16.17 - "@esbuild/linux-ia32": 0.16.17 - "@esbuild/linux-loong64": 0.16.17 - "@esbuild/linux-mips64el": 0.16.17 - "@esbuild/linux-ppc64": 0.16.17 - "@esbuild/linux-riscv64": 0.16.17 - "@esbuild/linux-s390x": 0.16.17 - "@esbuild/linux-x64": 0.16.17 - "@esbuild/netbsd-x64": 0.16.17 - "@esbuild/openbsd-x64": 0.16.17 - "@esbuild/sunos-x64": 0.16.17 - "@esbuild/win32-arm64": 0.16.17 - "@esbuild/win32-ia32": 0.16.17 - "@esbuild/win32-x64": 0.16.17 - dependenciesMeta: - "@esbuild/android-arm": - optional: true - "@esbuild/android-arm64": - optional: true - "@esbuild/android-x64": - optional: true - "@esbuild/darwin-arm64": - optional: true - "@esbuild/darwin-x64": - optional: true - "@esbuild/freebsd-arm64": - optional: true - "@esbuild/freebsd-x64": - optional: true - "@esbuild/linux-arm": - optional: true - "@esbuild/linux-arm64": - optional: true - "@esbuild/linux-ia32": - optional: true - "@esbuild/linux-loong64": - optional: true - "@esbuild/linux-mips64el": - optional: true - "@esbuild/linux-ppc64": - optional: true - "@esbuild/linux-riscv64": - optional: true - "@esbuild/linux-s390x": - optional: true - "@esbuild/linux-x64": - optional: true - "@esbuild/netbsd-x64": - optional: true - "@esbuild/openbsd-x64": - optional: true - "@esbuild/sunos-x64": - optional: true - "@esbuild/win32-arm64": - optional: true - "@esbuild/win32-ia32": - optional: true - "@esbuild/win32-x64": + "@typescript-eslint/scope-manager": 6.21.0 + "@typescript-eslint/types": 6.21.0 + "@typescript-eslint/typescript-estree": 6.21.0 + "@typescript-eslint/visitor-keys": 6.21.0 + debug: ^4.3.4 + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 + peerDependenciesMeta: + typescript: optional: true - bin: - esbuild: bin/esbuild - checksum: 4c2cc609ecfb426554bc3f75beb92d89eb2d0c515cfceebaa36c7599d7dcaab7056b70f6d6b51e72b45951ddf9021ee28e356cf205f8e42cc055d522312ea30c + checksum: 162fe3a867eeeffda7328bce32dae45b52283c68c8cb23258fb9f44971f761991af61f71b8c9fe1aa389e93dfe6386f8509c1273d870736c507d76dd40647b68 languageName: node linkType: hard -"esbuild@npm:^0.21.0": - version: 0.21.5 - resolution: "esbuild@npm:0.21.5" +"@typescript-eslint/scope-manager@npm:6.21.0": + version: 6.21.0 + resolution: "@typescript-eslint/scope-manager@npm:6.21.0" dependencies: - "@esbuild/aix-ppc64": 0.21.5 - "@esbuild/android-arm": 0.21.5 - "@esbuild/android-arm64": 0.21.5 - "@esbuild/android-x64": 0.21.5 - "@esbuild/darwin-arm64": 0.21.5 - "@esbuild/darwin-x64": 0.21.5 - "@esbuild/freebsd-arm64": 0.21.5 - "@esbuild/freebsd-x64": 0.21.5 - "@esbuild/linux-arm": 0.21.5 - "@esbuild/linux-arm64": 0.21.5 - "@esbuild/linux-ia32": 0.21.5 - "@esbuild/linux-loong64": 0.21.5 - "@esbuild/linux-mips64el": 0.21.5 - "@esbuild/linux-ppc64": 0.21.5 - "@esbuild/linux-riscv64": 0.21.5 - "@esbuild/linux-s390x": 0.21.5 - "@esbuild/linux-x64": 0.21.5 - "@esbuild/netbsd-x64": 0.21.5 - "@esbuild/openbsd-x64": 0.21.5 - "@esbuild/sunos-x64": 0.21.5 - "@esbuild/win32-arm64": 0.21.5 - "@esbuild/win32-ia32": 0.21.5 - "@esbuild/win32-x64": 0.21.5 - dependenciesMeta: - "@esbuild/aix-ppc64": - optional: true - "@esbuild/android-arm": - optional: true - "@esbuild/android-arm64": - optional: true - "@esbuild/android-x64": - optional: true - "@esbuild/darwin-arm64": - optional: true - "@esbuild/darwin-x64": - optional: true - "@esbuild/freebsd-arm64": - optional: true - "@esbuild/freebsd-x64": - optional: true - "@esbuild/linux-arm": - optional: true - "@esbuild/linux-arm64": - optional: true - "@esbuild/linux-ia32": - optional: true - "@esbuild/linux-loong64": - optional: true - "@esbuild/linux-mips64el": - optional: true - "@esbuild/linux-ppc64": - optional: true - "@esbuild/linux-riscv64": - optional: true - "@esbuild/linux-s390x": - optional: true - "@esbuild/linux-x64": - optional: true - "@esbuild/netbsd-x64": - optional: true - "@esbuild/openbsd-x64": - optional: true - "@esbuild/sunos-x64": - optional: true - "@esbuild/win32-arm64": - optional: true - "@esbuild/win32-ia32": - optional: true - "@esbuild/win32-x64": - optional: true - bin: - esbuild: bin/esbuild - checksum: 2911c7b50b23a9df59a7d6d4cdd3a4f85855787f374dce751148dbb13305e0ce7e880dde1608c2ab7a927fc6cec3587b80995f7fc87a64b455f8b70b55fd8ec1 + "@typescript-eslint/types": 6.21.0 + "@typescript-eslint/visitor-keys": 6.21.0 + checksum: 71028b757da9694528c4c3294a96cc80bc7d396e383a405eab3bc224cda7341b88e0fc292120b35d3f31f47beac69f7083196c70616434072fbcd3d3e62d3376 languageName: node linkType: hard -"esbuild@npm:^0.23.0": - version: 0.23.1 - resolution: "esbuild@npm:0.23.1" +"@typescript-eslint/scope-manager@npm:8.12.2": + version: 8.12.2 + resolution: "@typescript-eslint/scope-manager@npm:8.12.2" dependencies: - "@esbuild/aix-ppc64": 0.23.1 - "@esbuild/android-arm": 0.23.1 - "@esbuild/android-arm64": 0.23.1 - "@esbuild/android-x64": 0.23.1 - "@esbuild/darwin-arm64": 0.23.1 - "@esbuild/darwin-x64": 0.23.1 - "@esbuild/freebsd-arm64": 0.23.1 - "@esbuild/freebsd-x64": 0.23.1 - "@esbuild/linux-arm": 0.23.1 - "@esbuild/linux-arm64": 0.23.1 - "@esbuild/linux-ia32": 0.23.1 - "@esbuild/linux-loong64": 0.23.1 - "@esbuild/linux-mips64el": 0.23.1 - "@esbuild/linux-ppc64": 0.23.1 - "@esbuild/linux-riscv64": 0.23.1 - "@esbuild/linux-s390x": 0.23.1 - "@esbuild/linux-x64": 0.23.1 - "@esbuild/netbsd-x64": 0.23.1 - "@esbuild/openbsd-arm64": 0.23.1 - "@esbuild/openbsd-x64": 0.23.1 - "@esbuild/sunos-x64": 0.23.1 - "@esbuild/win32-arm64": 0.23.1 - "@esbuild/win32-ia32": 0.23.1 - "@esbuild/win32-x64": 0.23.1 - dependenciesMeta: - "@esbuild/aix-ppc64": - optional: true - "@esbuild/android-arm": - optional: true - "@esbuild/android-arm64": - optional: true - "@esbuild/android-x64": - optional: true - "@esbuild/darwin-arm64": - optional: true - "@esbuild/darwin-x64": - optional: true - "@esbuild/freebsd-arm64": - optional: true - "@esbuild/freebsd-x64": - optional: true - "@esbuild/linux-arm": - optional: true - "@esbuild/linux-arm64": - optional: true - "@esbuild/linux-ia32": - optional: true - "@esbuild/linux-loong64": - optional: true - "@esbuild/linux-mips64el": - optional: true - "@esbuild/linux-ppc64": - optional: true - "@esbuild/linux-riscv64": - optional: true - "@esbuild/linux-s390x": - optional: true - "@esbuild/linux-x64": - optional: true - "@esbuild/netbsd-x64": - optional: true - "@esbuild/openbsd-arm64": - optional: true - "@esbuild/openbsd-x64": - optional: true - "@esbuild/sunos-x64": - optional: true - "@esbuild/win32-arm64": - optional: true - "@esbuild/win32-ia32": - optional: true - "@esbuild/win32-x64": - optional: true - bin: - esbuild: bin/esbuild - checksum: 0413c3b9257327fb598427688b7186ea335bf1693746fe5713cc93c95854d6388b8ed4ad643fddf5b5ace093f7dcd9038dd58e087bf2da1f04dfb4c5571660af + "@typescript-eslint/types": 8.12.2 + "@typescript-eslint/visitor-keys": 8.12.2 + checksum: dd960238f1cf0f24e6c16525f0cbdb6cf65bfc3cfe650f376ecda2583c378c2e3a7eb4c2d57e04e009626d009018226b722a670ca283086c2a6cc1931c2268d8 languageName: node linkType: hard -"esbuild@npm:^0.24.0": - version: 0.24.0 - resolution: "esbuild@npm:0.24.0" +"@typescript-eslint/type-utils@npm:6.21.0": + version: 6.21.0 + resolution: "@typescript-eslint/type-utils@npm:6.21.0" dependencies: - "@esbuild/aix-ppc64": 0.24.0 - "@esbuild/android-arm": 0.24.0 - "@esbuild/android-arm64": 0.24.0 - "@esbuild/android-x64": 0.24.0 - "@esbuild/darwin-arm64": 0.24.0 - "@esbuild/darwin-x64": 0.24.0 - "@esbuild/freebsd-arm64": 0.24.0 - "@esbuild/freebsd-x64": 0.24.0 - "@esbuild/linux-arm": 0.24.0 - "@esbuild/linux-arm64": 0.24.0 - "@esbuild/linux-ia32": 0.24.0 - "@esbuild/linux-loong64": 0.24.0 - "@esbuild/linux-mips64el": 0.24.0 - "@esbuild/linux-ppc64": 0.24.0 - "@esbuild/linux-riscv64": 0.24.0 - "@esbuild/linux-s390x": 0.24.0 - "@esbuild/linux-x64": 0.24.0 - "@esbuild/netbsd-x64": 0.24.0 - "@esbuild/openbsd-arm64": 0.24.0 - "@esbuild/openbsd-x64": 0.24.0 - "@esbuild/sunos-x64": 0.24.0 - "@esbuild/win32-arm64": 0.24.0 - "@esbuild/win32-ia32": 0.24.0 - "@esbuild/win32-x64": 0.24.0 - dependenciesMeta: - "@esbuild/aix-ppc64": - optional: true - "@esbuild/android-arm": - optional: true - "@esbuild/android-arm64": - optional: true - "@esbuild/android-x64": - optional: true - "@esbuild/darwin-arm64": - optional: true - "@esbuild/darwin-x64": - optional: true - "@esbuild/freebsd-arm64": - optional: true - "@esbuild/freebsd-x64": - optional: true - "@esbuild/linux-arm": - optional: true - "@esbuild/linux-arm64": - optional: true - "@esbuild/linux-ia32": - optional: true - "@esbuild/linux-loong64": - optional: true - "@esbuild/linux-mips64el": - optional: true - "@esbuild/linux-ppc64": - optional: true - "@esbuild/linux-riscv64": - optional: true - "@esbuild/linux-s390x": - optional: true - "@esbuild/linux-x64": - optional: true - "@esbuild/netbsd-x64": - optional: true - "@esbuild/openbsd-arm64": - optional: true - "@esbuild/openbsd-x64": - optional: true - "@esbuild/sunos-x64": - optional: true - "@esbuild/win32-arm64": + "@typescript-eslint/typescript-estree": 6.21.0 + "@typescript-eslint/utils": 6.21.0 + debug: ^4.3.4 + ts-api-utils: ^1.0.1 + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 + peerDependenciesMeta: + typescript: optional: true - "@esbuild/win32-ia32": + checksum: 77025473f4d80acf1fafcce99c5c283e557686a61861febeba9c9913331f8a41e930bf5cd8b7a54db502a57b6eb8ea6d155cbd4f41349ed00e3d7aeb1f477ddc + languageName: node + linkType: hard + +"@typescript-eslint/types@npm:6.21.0": + version: 6.21.0 + resolution: "@typescript-eslint/types@npm:6.21.0" + checksum: 9501b47d7403417af95fc1fb72b2038c5ac46feac0e1598a46bcb43e56a606c387e9dcd8a2a0abe174c91b509f2d2a8078b093786219eb9a01ab2fbf9ee7b684 + languageName: node + linkType: hard + +"@typescript-eslint/types@npm:8.12.2": + version: 8.12.2 + resolution: "@typescript-eslint/types@npm:8.12.2" + checksum: b0f7effdac842428b15d76710295a8b4f1fe1ff14e40fbb10c8f571c11fd517d75d76decbecf90412bc5eabce0cd4ac0acf53d6b0d8ba2bdde86ab3b627bdac2 + languageName: node + linkType: hard + +"@typescript-eslint/typescript-estree@npm:6.21.0": + version: 6.21.0 + resolution: "@typescript-eslint/typescript-estree@npm:6.21.0" + dependencies: + "@typescript-eslint/types": 6.21.0 + "@typescript-eslint/visitor-keys": 6.21.0 + debug: ^4.3.4 + globby: ^11.1.0 + is-glob: ^4.0.3 + minimatch: 9.0.3 + semver: ^7.5.4 + ts-api-utils: ^1.0.1 + peerDependenciesMeta: + typescript: optional: true - "@esbuild/win32-x64": + checksum: dec02dc107c4a541e14fb0c96148f3764b92117c3b635db3a577b5a56fc48df7a556fa853fb82b07c0663b4bf2c484c9f245c28ba3e17e5cb0918ea4cab2ea21 + languageName: node + linkType: hard + +"@typescript-eslint/typescript-estree@npm:8.12.2": + version: 8.12.2 + resolution: "@typescript-eslint/typescript-estree@npm:8.12.2" + dependencies: + "@typescript-eslint/types": 8.12.2 + "@typescript-eslint/visitor-keys": 8.12.2 + debug: ^4.3.4 + fast-glob: ^3.3.2 + is-glob: ^4.0.3 + minimatch: ^9.0.4 + semver: ^7.6.0 + ts-api-utils: ^1.3.0 + peerDependenciesMeta: + typescript: optional: true - bin: - esbuild: bin/esbuild - checksum: dd386d92a05c7eb03078480522cdd8b40c434777b5f08487c27971d30933ecaae3f08bd221958dd8f9c66214915cdc85f844283ca9bdbf8ee703d889ae526edd + checksum: 923d297ba891cbaf4f00618db2313123238657b179f56a5d42d02a4e6433c513f73a9dd9aa62cd2c5b9fb2c5912a59319eb0a14ef2403792e15757142722309a + languageName: node + linkType: hard + +"@typescript-eslint/utils@npm:6.21.0, @typescript-eslint/utils@npm:^6.0.0": + version: 6.21.0 + resolution: "@typescript-eslint/utils@npm:6.21.0" + dependencies: + "@eslint-community/eslint-utils": ^4.4.0 + "@types/json-schema": ^7.0.12 + "@types/semver": ^7.5.0 + "@typescript-eslint/scope-manager": 6.21.0 + "@typescript-eslint/types": 6.21.0 + "@typescript-eslint/typescript-estree": 6.21.0 + semver: ^7.5.4 + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 + checksum: b129b3a4aebec8468259f4589985cb59ea808afbfdb9c54f02fad11e17d185e2bf72bb332f7c36ec3c09b31f18fc41368678b076323e6e019d06f74ee93f7bf2 + languageName: node + linkType: hard + +"@typescript-eslint/utils@npm:^6.0.0 || ^7.0.0 || ^8.0.0": + version: 8.12.2 + resolution: "@typescript-eslint/utils@npm:8.12.2" + dependencies: + "@eslint-community/eslint-utils": ^4.4.0 + "@typescript-eslint/scope-manager": 8.12.2 + "@typescript-eslint/types": 8.12.2 + "@typescript-eslint/typescript-estree": 8.12.2 + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + checksum: 7ae4ef40d0961642fc31644c47e05f751369b47f3d9f5ea4e6c6eaa09d534efc6a2ea89f12368eed7dc8b32a7378e533f84379f70f2acd85418815f63b249b18 + languageName: node + linkType: hard + +"@typescript-eslint/visitor-keys@npm:6.21.0": + version: 6.21.0 + resolution: "@typescript-eslint/visitor-keys@npm:6.21.0" + dependencies: + "@typescript-eslint/types": 6.21.0 + eslint-visitor-keys: ^3.4.1 + checksum: 67c7e6003d5af042d8703d11538fca9d76899f0119130b373402819ae43f0bc90d18656aa7add25a24427ccf1a0efd0804157ba83b0d4e145f06107d7d1b7433 + languageName: node + linkType: hard + +"@typescript-eslint/visitor-keys@npm:8.12.2": + version: 8.12.2 + resolution: "@typescript-eslint/visitor-keys@npm:8.12.2" + dependencies: + "@typescript-eslint/types": 8.12.2 + eslint-visitor-keys: ^3.4.3 + checksum: 97b919a0f0982e16a46ed568ae195906ec4aed7db358308d2311e9829ceb7f521e4a2017b3bdedad264ee61fdf08d3d12ada7d5622f13b20ac324118fe5b8447 + languageName: node + linkType: hard + +"@uiw/codemirror-extensions-basic-setup@npm:4.23.7": + version: 4.23.7 + resolution: "@uiw/codemirror-extensions-basic-setup@npm:4.23.7" + dependencies: + "@codemirror/autocomplete": ^6.0.0 + "@codemirror/commands": ^6.0.0 + "@codemirror/language": ^6.0.0 + "@codemirror/lint": ^6.0.0 + "@codemirror/search": ^6.0.0 + "@codemirror/state": ^6.0.0 + "@codemirror/view": ^6.0.0 + peerDependencies: + "@codemirror/autocomplete": ">=6.0.0" + "@codemirror/commands": ">=6.0.0" + "@codemirror/language": ">=6.0.0" + "@codemirror/lint": ">=6.0.0" + "@codemirror/search": ">=6.0.0" + "@codemirror/state": ">=6.0.0" + "@codemirror/view": ">=6.0.0" + checksum: 656c5f78db4c6216a9a7eeb65455f52b002b7a5426bb1b05f11b896d5dba9887c7b9ee5aee9fe369d6c7b3c69128ee842cb5c8fe029cd07c2e48ec9358039a30 + languageName: node + linkType: hard + +"@uiw/react-codemirror@npm:^4.9.3": + version: 4.23.7 + resolution: "@uiw/react-codemirror@npm:4.23.7" + dependencies: + "@babel/runtime": ^7.18.6 + "@codemirror/commands": ^6.1.0 + "@codemirror/state": ^6.1.1 + "@codemirror/theme-one-dark": ^6.0.0 + "@uiw/codemirror-extensions-basic-setup": 4.23.7 + codemirror: ^6.0.0 + peerDependencies: + "@babel/runtime": ">=7.11.0" + "@codemirror/state": ">=6.0.0" + "@codemirror/theme-one-dark": ">=6.0.0" + "@codemirror/view": ">=6.0.0" + codemirror: ">=6.0.0" + react: ">=16.8.0" + react-dom: ">=16.8.0" + checksum: 5f6318b290f479c4718129578bdccbbdf64e3b588fdd79e3d80224779219eae7e249d40e4f88c864ed6ae40ea93036042313e983a022349563698593a2bf2e6c + languageName: node + linkType: hard + +"@ungap/structured-clone@npm:^1.2.0": + version: 1.2.0 + resolution: "@ungap/structured-clone@npm:1.2.0" + checksum: 4f656b7b4672f2ce6e272f2427d8b0824ed11546a601d8d5412b9d7704e83db38a8d9f402ecdf2b9063fc164af842ad0ec4a55819f621ed7e7ea4d1efcc74524 + languageName: node + linkType: hard + +"@useoptic/json-pointer-helpers@npm:0.55.1": + version: 0.55.1 + resolution: "@useoptic/json-pointer-helpers@npm:0.55.1" + dependencies: + jsonpointer: ^5.0.1 + minimatch: 9.0.3 + checksum: 874db1e25c4abecf29faf95c51d39d127ac50ee9f1ad9654babb3a0257a7c321e54312bf66214ac188e3f92f7e9c342fd81565356c0472689c120ea40465b15d + languageName: node + linkType: hard + +"@useoptic/openapi-utilities@npm:^0.55.0": + version: 0.55.1 + resolution: "@useoptic/openapi-utilities@npm:0.55.1" + dependencies: + "@useoptic/json-pointer-helpers": 0.55.1 + ajv: ^8.6.0 + ajv-errors: ~3.0.0 + ajv-formats: ~2.1.0 + chalk: ^4.1.2 + fast-deep-equal: ^3.1.3 + is-url: ^1.2.4 + js-yaml: ^4.1.0 + json-stable-stringify: ^1.0.1 + lodash.groupby: ^4.6.0 + lodash.isequal: ^4.5.0 + lodash.omit: ^4.5.0 + node-machine-id: ^1.1.12 + openapi-types: ^12.0.2 + ts-invariant: ^0.9.3 + url-join: ^4.0.1 + yaml-ast-parser: ^0.0.43 + checksum: 53f9ebc645d69cb1ede0263bb3dc2786cfb18f7e5a3da734898c3d9cc2109d581cd6238cec77e6eaae2f478da4ed134abca8255977e68fd06418966a65a9bbe6 + languageName: node + linkType: hard + +"@webassemblyjs/ast@npm:1.12.1, @webassemblyjs/ast@npm:^1.12.1": + version: 1.12.1 + resolution: "@webassemblyjs/ast@npm:1.12.1" + dependencies: + "@webassemblyjs/helper-numbers": 1.11.6 + "@webassemblyjs/helper-wasm-bytecode": 1.11.6 + checksum: 31bcc64147236bd7b1b6d29d1f419c1f5845c785e1e42dc9e3f8ca2e05a029e9393a271b84f3a5bff2a32d35f51ff59e2181a6e5f953fe88576acd6750506202 + languageName: node + linkType: hard + +"@webassemblyjs/ast@npm:1.14.1, @webassemblyjs/ast@npm:^1.14.1": + version: 1.14.1 + resolution: "@webassemblyjs/ast@npm:1.14.1" + dependencies: + "@webassemblyjs/helper-numbers": 1.13.2 + "@webassemblyjs/helper-wasm-bytecode": 1.13.2 + checksum: f9154ad9ea14f6f2374ebe918c221fd69a4d4514126a1acc6fa4966e8d27ab28cb550a5e6880032cf620e19640578658a7e5a55bd2aad1e3db4e9d598b8f2099 + languageName: node + linkType: hard + +"@webassemblyjs/floating-point-hex-parser@npm:1.11.6": + version: 1.11.6 + resolution: "@webassemblyjs/floating-point-hex-parser@npm:1.11.6" + checksum: 29b08758841fd8b299c7152eda36b9eb4921e9c584eb4594437b5cd90ed6b920523606eae7316175f89c20628da14326801090167cc7fbffc77af448ac84b7e2 + languageName: node + linkType: hard + +"@webassemblyjs/floating-point-hex-parser@npm:1.13.2": + version: 1.13.2 + resolution: "@webassemblyjs/floating-point-hex-parser@npm:1.13.2" + checksum: e866ec8433f4a70baa511df5e8f2ebcd6c24f4e2cc6274c7c5aabe2bcce3459ea4680e0f35d450e1f3602acf3913b6b8e4f15069c8cfd34ae8609fb9a7d01795 + languageName: node + linkType: hard + +"@webassemblyjs/helper-api-error@npm:1.11.6": + version: 1.11.6 + resolution: "@webassemblyjs/helper-api-error@npm:1.11.6" + checksum: e8563df85161096343008f9161adb138a6e8f3c2cc338d6a36011aa55eabb32f2fd138ffe63bc278d009ada001cc41d263dadd1c0be01be6c2ed99076103689f + languageName: node + linkType: hard + +"@webassemblyjs/helper-api-error@npm:1.13.2": + version: 1.13.2 + resolution: "@webassemblyjs/helper-api-error@npm:1.13.2" + checksum: 48b5df7fd3095bb252f59a139fe2cbd999a62ac9b488123e9a0da3906ad8a2f2da7b2eb21d328c01a90da987380928706395c2897d1f3ed9e2125b6d75a920d0 + languageName: node + linkType: hard + +"@webassemblyjs/helper-buffer@npm:1.12.1": + version: 1.12.1 + resolution: "@webassemblyjs/helper-buffer@npm:1.12.1" + checksum: c3ffb723024130308db608e86e2bdccd4868bbb62dffb0a9a1530606496f79c87f8565bd8e02805ce64912b71f1a70ee5fb00307258b0c082c3abf961d097eca + languageName: node + linkType: hard + +"@webassemblyjs/helper-buffer@npm:1.14.1": + version: 1.14.1 + resolution: "@webassemblyjs/helper-buffer@npm:1.14.1" + checksum: b611e981dfd6a797c3d8fc3a772de29a6e55033737c2c09c31bb66c613bdbb2d25f915df1dee62a602c6acc057ca71128432fa8c3e22a893e1219dc454f14ede + languageName: node + linkType: hard + +"@webassemblyjs/helper-numbers@npm:1.11.6": + version: 1.11.6 + resolution: "@webassemblyjs/helper-numbers@npm:1.11.6" + dependencies: + "@webassemblyjs/floating-point-hex-parser": 1.11.6 + "@webassemblyjs/helper-api-error": 1.11.6 + "@xtuc/long": 4.2.2 + checksum: f4b562fa219f84368528339e0f8d273ad44e047a07641ffcaaec6f93e5b76fd86490a009aa91a294584e1436d74b0a01fa9fde45e333a4c657b58168b04da424 + languageName: node + linkType: hard + +"@webassemblyjs/helper-numbers@npm:1.13.2": + version: 1.13.2 + resolution: "@webassemblyjs/helper-numbers@npm:1.13.2" + dependencies: + "@webassemblyjs/floating-point-hex-parser": 1.13.2 + "@webassemblyjs/helper-api-error": 1.13.2 + "@xtuc/long": 4.2.2 + checksum: 49e2c9bf9b66997e480f6b44d80f895b3cde4de52ac135921d28e144565edca6903a519f627f4089b5509de1d7f9e5023f0e1a94ff78a36c9e2eb30e7c18ffd2 + languageName: node + linkType: hard + +"@webassemblyjs/helper-wasm-bytecode@npm:1.11.6": + version: 1.11.6 + resolution: "@webassemblyjs/helper-wasm-bytecode@npm:1.11.6" + checksum: 3535ef4f1fba38de3475e383b3980f4bbf3de72bbb631c2b6584c7df45be4eccd62c6ff48b5edd3f1bcff275cfd605a37679ec199fc91fd0a7705d7f1e3972dc + languageName: node + linkType: hard + +"@webassemblyjs/helper-wasm-bytecode@npm:1.13.2": + version: 1.13.2 + resolution: "@webassemblyjs/helper-wasm-bytecode@npm:1.13.2" + checksum: 8e059e1c1f0294f4fc3df8e4eaff3c5ef6e2e1358f34ebc118eaf5070ed59e56ed7fc92b28be734ebde17c8d662d5d27e06ade686c282445135da083ae11c128 + languageName: node + linkType: hard + +"@webassemblyjs/helper-wasm-section@npm:1.12.1": + version: 1.12.1 + resolution: "@webassemblyjs/helper-wasm-section@npm:1.12.1" + dependencies: + "@webassemblyjs/ast": 1.12.1 + "@webassemblyjs/helper-buffer": 1.12.1 + "@webassemblyjs/helper-wasm-bytecode": 1.11.6 + "@webassemblyjs/wasm-gen": 1.12.1 + checksum: c19810cdd2c90ff574139b6d8c0dda254d42d168a9e5b3d353d1bc085f1d7164ccd1b3c05592a45a939c47f7e403dc8d03572bb686642f06a3d02932f6f0bc8f + languageName: node + linkType: hard + +"@webassemblyjs/helper-wasm-section@npm:1.14.1": + version: 1.14.1 + resolution: "@webassemblyjs/helper-wasm-section@npm:1.14.1" + dependencies: + "@webassemblyjs/ast": 1.14.1 + "@webassemblyjs/helper-buffer": 1.14.1 + "@webassemblyjs/helper-wasm-bytecode": 1.13.2 + "@webassemblyjs/wasm-gen": 1.14.1 + checksum: 0a08d454a63192cd66abf91b6f060ac4b466cef341262246e9dcc828dd4c8536195dea9b46a1244b1eac65b59b8b502164a771a190052a92ff0a0a2ded0f8f53 + languageName: node + linkType: hard + +"@webassemblyjs/ieee754@npm:1.11.6": + version: 1.11.6 + resolution: "@webassemblyjs/ieee754@npm:1.11.6" + dependencies: + "@xtuc/ieee754": ^1.2.0 + checksum: 13574b8e41f6ca39b700e292d7edf102577db5650fe8add7066a320aa4b7a7c09a5056feccac7a74eb68c10dea9546d4461412af351f13f6b24b5f32379b49de + languageName: node + linkType: hard + +"@webassemblyjs/ieee754@npm:1.13.2": + version: 1.13.2 + resolution: "@webassemblyjs/ieee754@npm:1.13.2" + dependencies: + "@xtuc/ieee754": ^1.2.0 + checksum: d7e3520baa37a7309fa7db4d73d69fb869878853b1ebd4b168821bd03fcc4c0e1669c06231315b0039035d9a7a462e53de3ad982da4a426a4b0743b5888e8673 + languageName: node + linkType: hard + +"@webassemblyjs/leb128@npm:1.11.6": + version: 1.11.6 + resolution: "@webassemblyjs/leb128@npm:1.11.6" + dependencies: + "@xtuc/long": 4.2.2 + checksum: 7ea942dc9777d4b18a5ebfa3a937b30ae9e1d2ce1fee637583ed7f376334dd1d4274f813d2e250056cca803e0952def4b954913f1a3c9068bcd4ab4ee5143bf0 + languageName: node + linkType: hard + +"@webassemblyjs/leb128@npm:1.13.2": + version: 1.13.2 + resolution: "@webassemblyjs/leb128@npm:1.13.2" + dependencies: + "@xtuc/long": 4.2.2 + checksum: 64083507f7cff477a6d71a9e325d95665cea78ec8df99ca7c050e1cfbe300fbcf0842ca3dcf3b4fa55028350135588a4f879398d3dd2b6a8de9913ce7faf5333 + languageName: node + linkType: hard + +"@webassemblyjs/utf8@npm:1.11.6": + version: 1.11.6 + resolution: "@webassemblyjs/utf8@npm:1.11.6" + checksum: 807fe5b5ce10c390cfdd93e0fb92abda8aebabb5199980681e7c3743ee3306a75729bcd1e56a3903980e96c885ee53ef901fcbaac8efdfa480f9c0dae1d08713 + languageName: node + linkType: hard + +"@webassemblyjs/utf8@npm:1.13.2": + version: 1.13.2 + resolution: "@webassemblyjs/utf8@npm:1.13.2" + checksum: 95ec6052f30eefa8d50c9b2a3394d08b17d53a4aa52821451d41d774c126fa8f39b988fbf5bff56da86852a87c16d676e576775a4071e5e5ccf020cc85a4b281 + languageName: node + linkType: hard + +"@webassemblyjs/wasm-edit@npm:^1.12.1": + version: 1.12.1 + resolution: "@webassemblyjs/wasm-edit@npm:1.12.1" + dependencies: + "@webassemblyjs/ast": 1.12.1 + "@webassemblyjs/helper-buffer": 1.12.1 + "@webassemblyjs/helper-wasm-bytecode": 1.11.6 + "@webassemblyjs/helper-wasm-section": 1.12.1 + "@webassemblyjs/wasm-gen": 1.12.1 + "@webassemblyjs/wasm-opt": 1.12.1 + "@webassemblyjs/wasm-parser": 1.12.1 + "@webassemblyjs/wast-printer": 1.12.1 + checksum: ae23642303f030af888d30c4ef37b08dfec7eab6851a9575a616e65d1219f880d9223913a39056dd654e49049d76e97555b285d1f7e56935047abf578cce0692 + languageName: node + linkType: hard + +"@webassemblyjs/wasm-edit@npm:^1.14.1": + version: 1.14.1 + resolution: "@webassemblyjs/wasm-edit@npm:1.14.1" + dependencies: + "@webassemblyjs/ast": 1.14.1 + "@webassemblyjs/helper-buffer": 1.14.1 + "@webassemblyjs/helper-wasm-bytecode": 1.13.2 + "@webassemblyjs/helper-wasm-section": 1.14.1 + "@webassemblyjs/wasm-gen": 1.14.1 + "@webassemblyjs/wasm-opt": 1.14.1 + "@webassemblyjs/wasm-parser": 1.14.1 + "@webassemblyjs/wast-printer": 1.14.1 + checksum: 9341c3146bb1b7863f03d6050c2a66990f20384ca137388047bbe1feffacb599e94fca7b7c18287d17e2449ffb4005fdc7f41f674a6975af9ad8522756f8ffff + languageName: node + linkType: hard + +"@webassemblyjs/wasm-gen@npm:1.12.1": + version: 1.12.1 + resolution: "@webassemblyjs/wasm-gen@npm:1.12.1" + dependencies: + "@webassemblyjs/ast": 1.12.1 + "@webassemblyjs/helper-wasm-bytecode": 1.11.6 + "@webassemblyjs/ieee754": 1.11.6 + "@webassemblyjs/leb128": 1.11.6 + "@webassemblyjs/utf8": 1.11.6 + checksum: 5787626bb7f0b033044471ddd00ce0c9fe1ee4584e8b73e232051e3a4c99ba1a102700d75337151c8b6055bae77eefa4548960c610a5e4a504e356bd872138ff + languageName: node + linkType: hard + +"@webassemblyjs/wasm-gen@npm:1.14.1": + version: 1.14.1 + resolution: "@webassemblyjs/wasm-gen@npm:1.14.1" + dependencies: + "@webassemblyjs/ast": 1.14.1 + "@webassemblyjs/helper-wasm-bytecode": 1.13.2 + "@webassemblyjs/ieee754": 1.13.2 + "@webassemblyjs/leb128": 1.13.2 + "@webassemblyjs/utf8": 1.13.2 + checksum: 401b12bec7431c4fc29d9414bbe40d3c6dc5be04d25a116657c42329f5481f0129f3b5834c293f26f0e42681ceac9157bf078ce9bdb6a7f78037c650373f98b2 + languageName: node + linkType: hard + +"@webassemblyjs/wasm-opt@npm:1.12.1": + version: 1.12.1 + resolution: "@webassemblyjs/wasm-opt@npm:1.12.1" + dependencies: + "@webassemblyjs/ast": 1.12.1 + "@webassemblyjs/helper-buffer": 1.12.1 + "@webassemblyjs/wasm-gen": 1.12.1 + "@webassemblyjs/wasm-parser": 1.12.1 + checksum: 0e8fa8a0645304a1e18ff40d3db5a2e9233ebaa169b19fcc651d6fc9fe2cac0ce092ddee927318015ae735d9cd9c5d97c0cafb6a51dcd2932ac73587b62df991 + languageName: node + linkType: hard + +"@webassemblyjs/wasm-opt@npm:1.14.1": + version: 1.14.1 + resolution: "@webassemblyjs/wasm-opt@npm:1.14.1" + dependencies: + "@webassemblyjs/ast": 1.14.1 + "@webassemblyjs/helper-buffer": 1.14.1 + "@webassemblyjs/wasm-gen": 1.14.1 + "@webassemblyjs/wasm-parser": 1.14.1 + checksum: 60c697a9e9129d8d23573856df0791ba33cea4a3bc2339044cae73128c0983802e5e50a42157b990eeafe1237eb8e7653db6de5f02b54a0ae7b81b02dcdf2ae9 + languageName: node + linkType: hard + +"@webassemblyjs/wasm-parser@npm:1.12.1, @webassemblyjs/wasm-parser@npm:^1.12.1": + version: 1.12.1 + resolution: "@webassemblyjs/wasm-parser@npm:1.12.1" + dependencies: + "@webassemblyjs/ast": 1.12.1 + "@webassemblyjs/helper-api-error": 1.11.6 + "@webassemblyjs/helper-wasm-bytecode": 1.11.6 + "@webassemblyjs/ieee754": 1.11.6 + "@webassemblyjs/leb128": 1.11.6 + "@webassemblyjs/utf8": 1.11.6 + checksum: 176015de3551ac068cd4505d837414f258d9ade7442bd71efb1232fa26c9f6d7d4e11a5c816caeed389943f409af7ebff6899289a992d7a70343cb47009d21a8 + languageName: node + linkType: hard + +"@webassemblyjs/wasm-parser@npm:1.14.1, @webassemblyjs/wasm-parser@npm:^1.14.1": + version: 1.14.1 + resolution: "@webassemblyjs/wasm-parser@npm:1.14.1" + dependencies: + "@webassemblyjs/ast": 1.14.1 + "@webassemblyjs/helper-api-error": 1.13.2 + "@webassemblyjs/helper-wasm-bytecode": 1.13.2 + "@webassemblyjs/ieee754": 1.13.2 + "@webassemblyjs/leb128": 1.13.2 + "@webassemblyjs/utf8": 1.13.2 + checksum: 93f1fe2676da465b4e824419d9812a3d7218de4c3addd4e916c04bc86055fa134416c1b67e4b7cbde8d728c0dce2721d06cc0bfe7a7db7c093a0898009937405 + languageName: node + linkType: hard + +"@webassemblyjs/wast-printer@npm:1.12.1": + version: 1.12.1 + resolution: "@webassemblyjs/wast-printer@npm:1.12.1" + dependencies: + "@webassemblyjs/ast": 1.12.1 + "@xtuc/long": 4.2.2 + checksum: 2974b5dda8d769145ba0efd886ea94a601e61fb37114c14f9a9a7606afc23456799af652ac3052f284909bd42edc3665a76bc9b50f95f0794c053a8a1757b713 + languageName: node + linkType: hard + +"@webassemblyjs/wast-printer@npm:1.14.1": + version: 1.14.1 + resolution: "@webassemblyjs/wast-printer@npm:1.14.1" + dependencies: + "@webassemblyjs/ast": 1.14.1 + "@xtuc/long": 4.2.2 + checksum: 517881a0554debe6945de719d100b2d8883a2d24ddf47552cdeda866341e2bb153cd824a864bc7e2a61190a4b66b18f9899907e0074e9e820d2912ac0789ea60 + languageName: node + linkType: hard + +"@whatwg-node/disposablestack@npm:^0.0.5": + version: 0.0.5 + resolution: "@whatwg-node/disposablestack@npm:0.0.5" + dependencies: + tslib: ^2.6.3 + checksum: d2df8ba46c567c3cc07767821fcedc8f4c9247f1f5488c7dadc42f86ca6429bace4451e48506ac2de15afe8e5baa1cd0951a7aa6419f091d48c671844e399931 + languageName: node + linkType: hard + +"@whatwg-node/fetch@npm:^0.10.0, @whatwg-node/fetch@npm:^0.10.1": + version: 0.10.1 + resolution: "@whatwg-node/fetch@npm:0.10.1" + dependencies: + "@whatwg-node/node-fetch": ^0.7.1 + urlpattern-polyfill: ^10.0.0 + checksum: 7b0c64476d1a8f7c3cd6d946dfda3f39c204049c903d6338a07f1579a1b2771f89e742f71057b7b7beef3ccf8bf8ecc2b019c072719f1fd64509386d7ca102ae + languageName: node + linkType: hard + +"@whatwg-node/node-fetch@npm:^0.7.1": + version: 0.7.5 + resolution: "@whatwg-node/node-fetch@npm:0.7.5" + dependencies: + "@kamilkisiela/fast-url-parser": ^1.1.4 + "@whatwg-node/disposablestack": ^0.0.5 + busboy: ^1.6.0 + fast-querystring: ^1.1.1 + tslib: ^2.6.3 + checksum: 92d1b09fd747936b2600c00d1bf718cc3d1381cd477e1ed50d485b73650c0369a13f66cd0ec82d3992a06ecc2c013d0a411286184626894144a99433ed4fae01 + languageName: node + linkType: hard + +"@xmldom/is-dom-node@npm:^1.0.1": + version: 1.0.1 + resolution: "@xmldom/is-dom-node@npm:1.0.1" + checksum: 24a412fbd996b4de757c3905f4b4aad28578aaf6687fd4fc986f339d476dcf5153c50a4f408099c2a894961a1517c927163ec37a1ade9f73b5c0ad478b34190e + languageName: node + linkType: hard + +"@xmldom/xmldom@npm:^0.8.10, @xmldom/xmldom@npm:^0.8.3, @xmldom/xmldom@npm:^0.8.5": + version: 0.8.10 + resolution: "@xmldom/xmldom@npm:0.8.10" + checksum: 4c136aec31fb3b49aaa53b6fcbfe524d02a1dc0d8e17ee35bd3bf35e9ce1344560481cd1efd086ad1a4821541482528672306d5e37cdbd187f33d7fadd3e2cf0 + languageName: node + linkType: hard + +"@xobotyi/scrollbar-width@npm:^1.9.5": + version: 1.9.5 + resolution: "@xobotyi/scrollbar-width@npm:1.9.5" + checksum: e880c8696bd6c7eedaad4e89cc7bcfcd502c22dc6c061288ffa7f5a4fe5dab4aa2358bdd68e7357bf0334dc8b56724ed9bee05e010b60d83a3bb0d855f3d886f + languageName: node + linkType: hard + +"@xtuc/ieee754@npm:^1.2.0": + version: 1.2.0 + resolution: "@xtuc/ieee754@npm:1.2.0" + checksum: ac56d4ca6e17790f1b1677f978c0c6808b1900a5b138885d3da21732f62e30e8f0d9120fcf8f6edfff5100ca902b46f8dd7c1e3f903728634523981e80e2885a + languageName: node + linkType: hard + +"@xtuc/long@npm:4.2.2": + version: 4.2.2 + resolution: "@xtuc/long@npm:4.2.2" + checksum: 8ed0d477ce3bc9c6fe2bf6a6a2cc316bb9c4127c5a7827bae947fa8ec34c7092395c5a283cc300c05b5fa01cbbfa1f938f410a7bf75db7c7846fea41949989ec + languageName: node + linkType: hard + +"@yarnpkg/lockfile@npm:^1.1.0": + version: 1.1.0 + resolution: "@yarnpkg/lockfile@npm:1.1.0" + checksum: 05b881b4866a3546861fee756e6d3812776ea47fa6eb7098f983d6d0eefa02e12b66c3fff931574120f196286a7ad4879ce02743c8bb2be36c6a576c7852083a + languageName: node + linkType: hard + +"@yarnpkg/parsers@npm:^3.0.0, @yarnpkg/parsers@npm:^3.0.0-rc.4": + version: 3.0.2 + resolution: "@yarnpkg/parsers@npm:3.0.2" + dependencies: + js-yaml: ^3.10.0 + tslib: ^2.4.0 + checksum: fb40a87ae7c9f3fc0b2a6b7d84375d1c69ae8304daf598c089b52966bfb4ac94fbd2dcd87ed041970416e03d34359cb5ff16be5f5601f48d1f936213a8edaf4d + languageName: node + linkType: hard + +"@zxing/text-encoding@npm:0.9.0": + version: 0.9.0 + resolution: "@zxing/text-encoding@npm:0.9.0" + checksum: c23b12aee7639382e4949961304a1294776afaffa40f579e09ffecd0e5e68cf26ef3edd75009de46da8a536e571448755ca68b3e2ea707d53793c0edb2e2c34a + languageName: node + linkType: hard + +"a-sync-waterfall@npm:^1.0.0": + version: 1.0.1 + resolution: "a-sync-waterfall@npm:1.0.1" + checksum: 534948b50d6787c2dd5b7e89179b30c0fd96ac80a662d0f92eaa568cfffb36f1eea4aa720e3a21572d8b5f8686940954ac9d8c7667bcc719c1317ae3bdf86fe0 + languageName: node + linkType: hard + +"abab@npm:^2.0.3, abab@npm:^2.0.5, abab@npm:^2.0.6": + version: 2.0.6 + resolution: "abab@npm:2.0.6" + checksum: 6ffc1af4ff315066c62600123990d87551ceb0aafa01e6539da77b0f5987ac7019466780bf480f1787576d4385e3690c81ccc37cfda12819bf510b8ab47e5a3e + languageName: node + linkType: hard + +"abbrev@npm:1, abbrev@npm:^1.0.0": + version: 1.1.1 + resolution: "abbrev@npm:1.1.1" + checksum: a4a97ec07d7ea112c517036882b2ac22f3109b7b19077dc656316d07d308438aac28e4d9746dc4d84bf6b1e75b4a7b0a5f3cb30592419f128ca9a8cee3bcfa17 + languageName: node + linkType: hard + +"abbrev@npm:^2.0.0": + version: 2.0.0 + resolution: "abbrev@npm:2.0.0" + checksum: 0e994ad2aa6575f94670d8a2149afe94465de9cedaaaac364e7fb43a40c3691c980ff74899f682f4ca58fa96b4cbd7421a015d3a6defe43a442117d7821a2f36 + languageName: node + linkType: hard + +"abort-controller@npm:^3.0.0": + version: 3.0.0 + resolution: "abort-controller@npm:3.0.0" + dependencies: + event-target-shim: ^5.0.0 + checksum: 170bdba9b47b7e65906a28c8ce4f38a7a369d78e2271706f020849c1bfe0ee2067d4261df8bbb66eb84f79208fd5b710df759d64191db58cfba7ce8ef9c54b75 + languageName: node + linkType: hard + +"accepts@npm:^1.3.5, accepts@npm:~1.3.4, accepts@npm:~1.3.5, accepts@npm:~1.3.8": + version: 1.3.8 + resolution: "accepts@npm:1.3.8" + dependencies: + mime-types: ~2.1.34 + negotiator: 0.6.3 + checksum: 50c43d32e7b50285ebe84b613ee4a3aa426715a7d131b65b786e2ead0fd76b6b60091b9916d3478a75f11f162628a2139991b6c03ab3f1d9ab7c86075dc8eab4 + languageName: node + linkType: hard + +"ace-builds@npm:^1.32.7, ace-builds@npm:^1.4.13": + version: 1.37.0 + resolution: "ace-builds@npm:1.37.0" + checksum: ce461a9b581e749694e3c4e26539bb5013e36c84f6668c71e66fd04c2cfa315fd9299ce0f056535a56c8521258b6755679c2d89b99b73655128c8b476d530bed + languageName: node + linkType: hard + +"acorn-globals@npm:^6.0.0": + version: 6.0.0 + resolution: "acorn-globals@npm:6.0.0" + dependencies: + acorn: ^7.1.1 + acorn-walk: ^7.1.1 + checksum: 72d95e5b5e585f9acd019b993ab8bbba68bb3cbc9d9b5c1ebb3c2f1fe5981f11deababfb4949f48e6262f9c57878837f5958c0cca396f81023814680ca878042 + languageName: node + linkType: hard + +"acorn-globals@npm:^7.0.0": + version: 7.0.1 + resolution: "acorn-globals@npm:7.0.1" + dependencies: + acorn: ^8.1.0 + acorn-walk: ^8.0.2 + checksum: 2a2998a547af6d0db5f0cdb90acaa7c3cbca6709010e02121fb8b8617c0fbd8bab0b869579903fde358ac78454356a14fadcc1a672ecb97b04b1c2ccba955ce8 + languageName: node + linkType: hard + +"acorn-import-attributes@npm:^1.9.5": + version: 1.9.5 + resolution: "acorn-import-attributes@npm:1.9.5" + peerDependencies: + acorn: ^8 + checksum: 1c0c49b6a244503964ae46ae850baccf306e84caf99bc2010ed6103c69a423987b07b520a6c619f075d215388bd4923eccac995886a54309eda049ab78a4be95 + languageName: node + linkType: hard + +"acorn-jsx@npm:^5.3.2": + version: 5.3.2 + resolution: "acorn-jsx@npm:5.3.2" + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + checksum: c3d3b2a89c9a056b205b69530a37b972b404ee46ec8e5b341666f9513d3163e2a4f214a71f4dfc7370f5a9c07472d2fd1c11c91c3f03d093e37637d95da98950 + languageName: node + linkType: hard + +"acorn-walk@npm:^7.1.1": + version: 7.2.0 + resolution: "acorn-walk@npm:7.2.0" + checksum: 9252158a79b9d92f1bc0dd6acc0fcfb87a67339e84bcc301bb33d6078936d27e35d606b4d35626d2962cd43c256d6f27717e70cbe15c04fff999ab0b2260b21f + languageName: node + linkType: hard + +"acorn-walk@npm:^8.0.2, acorn-walk@npm:^8.1.1": + version: 8.3.4 + resolution: "acorn-walk@npm:8.3.4" + dependencies: + acorn: ^8.11.0 + checksum: 4ff03f42323e7cf90f1683e08606b0f460e1e6ac263d2730e3df91c7665b6f64e696db6ea27ee4bed18c2599569be61f28a8399fa170c611161a348c402ca19c + languageName: node + linkType: hard + +"acorn@npm:^7.1.1": + version: 7.4.1 + resolution: "acorn@npm:7.4.1" + bin: + acorn: bin/acorn + checksum: 1860f23c2107c910c6177b7b7be71be350db9e1080d814493fae143ae37605189504152d1ba8743ba3178d0b37269ce1ffc42b101547fdc1827078f82671e407 + languageName: node + linkType: hard + +"acorn@npm:^8.1.0, acorn@npm:^8.11.0, acorn@npm:^8.14.0, acorn@npm:^8.2.4, acorn@npm:^8.4.1, acorn@npm:^8.7.1, acorn@npm:^8.8.1, acorn@npm:^8.8.2, acorn@npm:^8.9.0": + version: 8.14.0 + resolution: "acorn@npm:8.14.0" + bin: + acorn: bin/acorn + checksum: 8755074ba55fff94e84e81c72f1013c2d9c78e973c31231c8ae505a5f966859baf654bddd75046bffd73ce816b149298977fff5077a3033dedba0ae2aad152d4 + languageName: node + linkType: hard + +"address@npm:^1.0.1, address@npm:^1.1.2": + version: 1.2.2 + resolution: "address@npm:1.2.2" + checksum: ace439960c1e3564d8f523aff23a841904bf33a2a7c2e064f7f60a064194075758b9690e65bd9785692a4ef698a998c57eb74d145881a1cecab8ba658ddb1607 + languageName: node + linkType: hard + +"adm-zip@npm:^0.5.10": + version: 0.5.16 + resolution: "adm-zip@npm:0.5.16" + checksum: 1f4104f3462b99e1b34d78ccfbdcf47e533a9cc7f894cedec6cd67b06cc6ad0b3a45241d66df5471050c7abbdd67e5707e3959fc76d75176ed6101a5b2a580d5 + languageName: node + linkType: hard + +"agent-base@npm:6, agent-base@npm:^6.0.2": + version: 6.0.2 + resolution: "agent-base@npm:6.0.2" + dependencies: + debug: 4 + checksum: f52b6872cc96fd5f622071b71ef200e01c7c4c454ee68bc9accca90c98cfb39f2810e3e9aa330435835eedc8c23f4f8a15267f67c6e245d2b33757575bdac49d + languageName: node + linkType: hard + +"agent-base@npm:^7.0.2, agent-base@npm:^7.1.0, agent-base@npm:^7.1.1": + version: 7.1.1 + resolution: "agent-base@npm:7.1.1" + dependencies: + debug: ^4.3.4 + checksum: 51c158769c5c051482f9ca2e6e1ec085ac72b5a418a9b31b4e82fe6c0a6699adb94c1c42d246699a587b3335215037091c79e0de512c516f73b6ea844202f037 + languageName: node + linkType: hard + +"agent-base@npm:^7.1.2": + version: 7.1.3 + resolution: "agent-base@npm:7.1.3" + checksum: 87bb7ee54f5ecf0ccbfcba0b07473885c43ecd76cb29a8db17d6137a19d9f9cd443a2a7c5fd8a3f24d58ad8145f9eb49116344a66b107e1aeab82cf2383f4753 + languageName: node + linkType: hard + +"agentkeepalive@npm:^4.1.4, agentkeepalive@npm:^4.2.1": + version: 4.5.0 + resolution: "agentkeepalive@npm:4.5.0" + dependencies: + humanize-ms: ^1.2.1 + checksum: 13278cd5b125e51eddd5079f04d6fe0914ac1b8b91c1f3db2c1822f99ac1a7457869068997784342fe455d59daaff22e14fb7b8c3da4e741896e7e31faf92481 + languageName: node + linkType: hard + +"aggregate-error@npm:^3.0.0, aggregate-error@npm:^3.1.0": + version: 3.1.0 + resolution: "aggregate-error@npm:3.1.0" + dependencies: + clean-stack: ^2.0.0 + indent-string: ^4.0.0 + checksum: 1101a33f21baa27a2fa8e04b698271e64616b886795fd43c31068c07533c7b3facfcaf4e9e0cab3624bd88f729a592f1c901a1a229c9e490eafce411a8644b79 + languageName: node + linkType: hard + +"ajv-draft-04@npm:^1.0.0, ajv-draft-04@npm:~1.0.0": + version: 1.0.0 + resolution: "ajv-draft-04@npm:1.0.0" + peerDependencies: + ajv: ^8.5.0 + peerDependenciesMeta: + ajv: + optional: true + checksum: 3f11fa0e7f7359bef6608657f02ab78e9cc62b1fb7bdd860db0d00351b3863a1189c1a23b72466d2d82726cab4eb20725c76f5e7c134a89865e2bfd0e6828137 + languageName: node + linkType: hard + +"ajv-errors@npm:^3.0.0, ajv-errors@npm:~3.0.0": + version: 3.0.0 + resolution: "ajv-errors@npm:3.0.0" + peerDependencies: + ajv: ^8.0.1 + checksum: f3d1610a104fa776c2f90534acbe2113842a40d5ee446062da9e956ae6de6959afc997da1e3948c47316faa225255fc2d9d97aacd0803f47998fb38156d3d03c + languageName: node + linkType: hard + +"ajv-formats-draft2019@npm:^1.6.1": + version: 1.6.1 + resolution: "ajv-formats-draft2019@npm:1.6.1" + dependencies: + punycode: ^2.1.1 + schemes: ^1.4.0 + smtp-address-parser: ^1.0.3 + uri-js: ^4.4.1 + peerDependencies: + ajv: "*" + checksum: 281f802f76defbb5821fa19e60b38c7be13d2a89d5f915ee11dc32c4be631f4785bb67595edf2657c2b05697e6cb89d50ef4c5fecbd0c814c0e05132ed3a650c + languageName: node + linkType: hard + +"ajv-formats@npm:^2.1.1, ajv-formats@npm:~2.1.0": + version: 2.1.1 + resolution: "ajv-formats@npm:2.1.1" + dependencies: + ajv: ^8.0.0 + peerDependencies: + ajv: ^8.0.0 + peerDependenciesMeta: + ajv: + optional: true + checksum: 4a287d937f1ebaad4683249a4c40c0fa3beed30d9ddc0adba04859026a622da0d317851316ea64b3680dc60f5c3c708105ddd5d5db8fe595d9d0207fd19f90b7 + languageName: node + linkType: hard + +"ajv-formats@npm:~3.0.1": + version: 3.0.1 + resolution: "ajv-formats@npm:3.0.1" + dependencies: + ajv: ^8.0.0 + peerDependencies: + ajv: ^8.0.0 + peerDependenciesMeta: + ajv: + optional: true + checksum: f4e1fe232d67fcafc02eafe373a7a9962351e0439dd0736647ca75c93c3da23b430b6502c255ab4315410ae330d4f3013ac9fe226c40b2524ca93a58e786d086 + languageName: node + linkType: hard + +"ajv-i18n@npm:^4.2.0": + version: 4.2.0 + resolution: "ajv-i18n@npm:4.2.0" + peerDependencies: + ajv: ^8.0.0-beta.0 + checksum: 6fa53eeafb13dc11dd99119039cd1e4394c949ca3ec407b2b421b8aae20ad2acd2f615f134ab9de64a636d66c6e0df1e15dcfca50b45683ebb9044e6667735e9 + languageName: node + linkType: hard + +"ajv-keywords@npm:^3.4.1, ajv-keywords@npm:^3.5.2": + version: 3.5.2 + resolution: "ajv-keywords@npm:3.5.2" + peerDependencies: + ajv: ^6.9.1 + checksum: 7dc5e5931677a680589050f79dcbe1fefbb8fea38a955af03724229139175b433c63c68f7ae5f86cf8f65d55eb7c25f75a046723e2e58296707617ca690feae9 + languageName: node + linkType: hard + +"ajv-keywords@npm:^5.1.0": + version: 5.1.0 + resolution: "ajv-keywords@npm:5.1.0" + dependencies: + fast-deep-equal: ^3.1.3 + peerDependencies: + ajv: ^8.8.2 + checksum: c35193940b853119242c6757787f09ecf89a2c19bcd36d03ed1a615e710d19d450cb448bfda407b939aba54b002368c8bff30529cc50a0536a8e10bcce300421 + languageName: node + linkType: hard + +"ajv@npm:^6.12.2, ajv@npm:^6.12.3, ajv@npm:^6.12.4, ajv@npm:^6.12.5": + version: 6.12.6 + resolution: "ajv@npm:6.12.6" + dependencies: + fast-deep-equal: ^3.1.1 + fast-json-stable-stringify: ^2.0.0 + json-schema-traverse: ^0.4.1 + uri-js: ^4.2.2 + checksum: 874972efe5c4202ab0a68379481fbd3d1b5d0a7bd6d3cc21d40d3536ebff3352a2a1fabb632d4fd2cc7fe4cbdcd5ed6782084c9bbf7f32a1536d18f9da5007d4 + languageName: node + linkType: hard + +"ajv@npm:^8.0.0, ajv@npm:^8.10.0, ajv@npm:^8.11.0, ajv@npm:^8.12.0, ajv@npm:^8.16.0, ajv@npm:^8.17.1, ajv@npm:^8.6.0, ajv@npm:^8.6.3, ajv@npm:^8.9.0": + version: 8.17.1 + resolution: "ajv@npm:8.17.1" + dependencies: + fast-deep-equal: ^3.1.3 + fast-uri: ^3.0.1 + json-schema-traverse: ^1.0.0 + require-from-string: ^2.0.2 + checksum: 1797bf242cfffbaf3b870d13565bd1716b73f214bb7ada9a497063aada210200da36e3ed40237285f3255acc4feeae91b1fb183625331bad27da95973f7253d9 + languageName: node + linkType: hard + +"ajv@npm:~8.12.0": + version: 8.12.0 + resolution: "ajv@npm:8.12.0" + dependencies: + fast-deep-equal: ^3.1.1 + json-schema-traverse: ^1.0.0 + require-from-string: ^2.0.2 + uri-js: ^4.2.2 + checksum: 4dc13714e316e67537c8b31bc063f99a1d9d9a497eb4bbd55191ac0dcd5e4985bbb71570352ad6f1e76684fb6d790928f96ba3b2d4fd6e10024be9612fe3f001 + languageName: node + linkType: hard + +"ajv@npm:~8.13.0": + version: 8.13.0 + resolution: "ajv@npm:8.13.0" + dependencies: + fast-deep-equal: ^3.1.3 + json-schema-traverse: ^1.0.0 + require-from-string: ^2.0.2 + uri-js: ^4.4.1 + checksum: 6de82d0b2073e645ca3300561356ddda0234f39b35d2125a8700b650509b296f41c00ab69f53178bbe25ad688bd6ac3747ab44101f2f4bd245952e8fd6ccc3c1 + languageName: node + linkType: hard + +"ansi-colors@npm:^4.1.1, ansi-colors@npm:^4.1.3": + version: 4.1.3 + resolution: "ansi-colors@npm:4.1.3" + checksum: a9c2ec842038a1fabc7db9ece7d3177e2fe1c5dc6f0c51ecfbf5f39911427b89c00b5dc6b8bd95f82a26e9b16aaae2e83d45f060e98070ce4d1333038edceb0e + languageName: node + linkType: hard + +"ansi-escapes@npm:^4.2.1": + version: 4.3.2 + resolution: "ansi-escapes@npm:4.3.2" + dependencies: + type-fest: ^0.21.3 + checksum: 93111c42189c0a6bed9cdb4d7f2829548e943827ee8479c74d6e0b22ee127b2a21d3f8b5ca57723b8ef78ce011fbfc2784350eb2bde3ccfccf2f575fa8489815 + languageName: node + linkType: hard + +"ansi-html-community@npm:^0.0.8": + version: 0.0.8 + resolution: "ansi-html-community@npm:0.0.8" + bin: + ansi-html: bin/ansi-html + checksum: 04c568e8348a636963f915e48eaa3e01218322e1169acafdd79c384f22e5558c003f79bbc480c1563865497482817c7eed025f0653ebc17642fededa5cb42089 + languageName: node + linkType: hard + +"ansi-html@npm:^0.0.9": + version: 0.0.9 + resolution: "ansi-html@npm:0.0.9" + bin: + ansi-html: bin/ansi-html + checksum: a03754d6f66bae33938ed8bb3dd98174b7f4895ebe45226185036ed4a1388a7aaf2f2b9581608f0626432ba7add92cfc590aa6475a78bbb90d9d1e1d1af8cbe6 + languageName: node + linkType: hard + +"ansi-regex@npm:^4.1.0": + version: 4.1.1 + resolution: "ansi-regex@npm:4.1.1" + checksum: b1a6ee44cb6ecdabaa770b2ed500542714d4395d71c7e5c25baa631f680fb2ad322eb9ba697548d498a6fd366949fc8b5bfcf48d49a32803611f648005b01888 + languageName: node + linkType: hard + +"ansi-regex@npm:^5.0.1": + version: 5.0.1 + resolution: "ansi-regex@npm:5.0.1" + checksum: 2aa4bb54caf2d622f1afdad09441695af2a83aa3fe8b8afa581d205e57ed4261c183c4d3877cee25794443fde5876417d859c108078ab788d6af7e4fe52eb66b + languageName: node + linkType: hard + +"ansi-regex@npm:^6.0.1": + version: 6.1.0 + resolution: "ansi-regex@npm:6.1.0" + checksum: 495834a53b0856c02acd40446f7130cb0f8284f4a39afdab20d5dc42b2e198b1196119fe887beed8f9055c4ff2055e3b2f6d4641d0be018cdfb64fedf6fc1aac + languageName: node + linkType: hard + +"ansi-styles@npm:^3.2.1": + version: 3.2.1 + resolution: "ansi-styles@npm:3.2.1" + dependencies: + color-convert: ^1.9.0 + checksum: d85ade01c10e5dd77b6c89f34ed7531da5830d2cb5882c645f330079975b716438cd7ebb81d0d6e6b4f9c577f19ae41ab55f07f19786b02f9dfd9e0377395665 + languageName: node + linkType: hard + +"ansi-styles@npm:^4.0.0, ansi-styles@npm:^4.1.0": + version: 4.3.0 + resolution: "ansi-styles@npm:4.3.0" + dependencies: + color-convert: ^2.0.1 + checksum: 513b44c3b2105dd14cc42a19271e80f386466c4be574bccf60b627432f9198571ebf4ab1e4c3ba17347658f4ee1711c163d574248c0c1cdc2d5917a0ad582ec4 + languageName: node + linkType: hard + +"ansi-styles@npm:^5.0.0": + version: 5.2.0 + resolution: "ansi-styles@npm:5.2.0" + checksum: d7f4e97ce0623aea6bc0d90dcd28881ee04cba06c570b97fd3391bd7a268eedfd9d5e2dd4fdcbdd82b8105df5faf6f24aaedc08eaf3da898e702db5948f63469 + languageName: node + linkType: hard + +"ansi-styles@npm:^6.1.0": + version: 6.2.1 + resolution: "ansi-styles@npm:6.2.1" + checksum: ef940f2f0ced1a6347398da88a91da7930c33ecac3c77b72c5905f8b8fe402c52e6fde304ff5347f616e27a742da3f1dc76de98f6866c69251ad0b07a66776d9 + languageName: node + linkType: hard + +"any-promise@npm:^1.0.0": + version: 1.3.0 + resolution: "any-promise@npm:1.3.0" + checksum: 0ee8a9bdbe882c90464d75d1f55cf027f5458650c4bd1f0467e65aec38ccccda07ca5844969ee77ed46d04e7dded3eaceb027e8d32f385688523fe305fa7e1de + languageName: node + linkType: hard + +"anymatch@npm:^3.0.3, anymatch@npm:~3.1.2": + version: 3.1.3 + resolution: "anymatch@npm:3.1.3" + dependencies: + normalize-path: ^3.0.0 + picomatch: ^2.0.4 + checksum: 3e044fd6d1d26545f235a9fe4d7a534e2029d8e59fa7fd9f2a6eb21230f6b5380ea1eaf55136e60cbf8e613544b3b766e7a6fa2102e2a3a117505466e3025dc2 + languageName: node + linkType: hard + +"apg-lite@npm:^1.0.4": + version: 1.0.4 + resolution: "apg-lite@npm:1.0.4" + checksum: 30a27eecb71350a6dd47f8944520e56c08063115197e8de15699b792e32101b452ff339cf9d5469db7a992b0f2f8659c16f72f24ab7465683fb7e6cf0dc4afcd + languageName: node + linkType: hard + +"app@link:../app::locator=backend%40workspace%3Apackages%2Fbackend": + version: 0.0.0-use.local + resolution: "app@link:../app::locator=backend%40workspace%3Apackages%2Fbackend" + languageName: node + linkType: soft + +"app@workspace:packages/app": + version: 0.0.0-use.local + resolution: "app@workspace:packages/app" + dependencies: + "@backstage-community/plugin-kiali": "workspace:^" + "@backstage/app-defaults": ^1.5.12 + "@backstage/catalog-model": ^1.7.0 + "@backstage/cli": ^0.28.0 + "@backstage/core-app-api": ^1.15.1 + "@backstage/core-components": ^0.15.1 + "@backstage/core-plugin-api": ^1.10.0 + "@backstage/integration-react": ^1.2.0 + "@backstage/plugin-api-docs": ^0.11.11 + "@backstage/plugin-catalog": ^1.24.0 + "@backstage/plugin-catalog-common": ^1.1.0 + "@backstage/plugin-catalog-graph": ^0.4.11 + "@backstage/plugin-catalog-import": ^0.12.5 + "@backstage/plugin-catalog-react": ^1.14.0 + "@backstage/plugin-kubernetes": ^0.11.16 + "@backstage/plugin-org": ^0.6.31 + "@backstage/plugin-permission-react": ^0.4.27 + "@backstage/plugin-scaffolder": ^1.26.0 + "@backstage/plugin-search": ^1.4.18 + "@backstage/plugin-search-react": ^1.8.1 + "@backstage/plugin-techdocs": ^1.11.0 + "@backstage/plugin-techdocs-module-addons-contrib": ^1.1.16 + "@backstage/plugin-techdocs-react": ^1.2.9 + "@backstage/plugin-user-settings": ^0.8.14 + "@backstage/test-utils": ^1.7.0 + "@backstage/theme": ^0.6.0 + "@material-ui/core": ^4.12.2 + "@material-ui/icons": ^4.9.1 + "@playwright/test": ^1.32.3 + "@testing-library/dom": ^9.0.0 + "@testing-library/jest-dom": ^6.0.0 + "@testing-library/react": ^14.0.0 + "@testing-library/user-event": ^14.0.0 + "@types/react-dom": "*" + cross-env: ^7.0.0 + react: ^18.0.2 + react-dom: ^18.0.2 + react-router: ^6.3.0 + react-router-dom: ^6.3.0 + languageName: unknown + linkType: soft + +"append-field@npm:^1.0.0": + version: 1.0.0 + resolution: "append-field@npm:1.0.0" + checksum: 482ba08acc0ecef00fe7da6bf2f8e48359a9905ee1af525f3120c9260c02e91eedf0579b59d898e8d8455b6c199e340bc0a2fd4b9e02adaa29a8a86c722b37f9 + languageName: node + linkType: hard + +"aproba@npm:^1.0.3 || ^2.0.0": + version: 2.0.0 + resolution: "aproba@npm:2.0.0" + checksum: 5615cadcfb45289eea63f8afd064ab656006361020e1735112e346593856f87435e02d8dcc7ff0d11928bc7d425f27bc7c2a84f6c0b35ab0ff659c814c138a24 + languageName: node + linkType: hard + +"archiver-utils@npm:^5.0.0, archiver-utils@npm:^5.0.2": + version: 5.0.2 + resolution: "archiver-utils@npm:5.0.2" + dependencies: + glob: ^10.0.0 + graceful-fs: ^4.2.0 + is-stream: ^2.0.1 + lazystream: ^1.0.0 + lodash: ^4.17.15 + normalize-path: ^3.0.0 + readable-stream: ^4.0.0 + checksum: 7dc4f3001dc373bd0fa7671ebf08edf6f815cbc539c78b5478a2eaa67e52e3fc0e92f562cdef2ba016c4dcb5468d3d069eb89535c6844da4a5bb0baf08ad5720 + languageName: node + linkType: hard + +"archiver@npm:^7.0.0, archiver@npm:^7.0.1": + version: 7.0.1 + resolution: "archiver@npm:7.0.1" + dependencies: + archiver-utils: ^5.0.2 + async: ^3.2.4 + buffer-crc32: ^1.0.0 + readable-stream: ^4.0.0 + readdir-glob: ^1.1.2 + tar-stream: ^3.0.0 + zip-stream: ^6.0.1 + checksum: f93bcc00f919e0bbb6bf38fddf111d6e4d1ed34721b73cc073edd37278303a7a9f67aa4abd6fd2beb80f6c88af77f2eb4f60276343f67605e3aea404e5ad93ea + languageName: node + linkType: hard + +"are-we-there-yet@npm:^2.0.0": + version: 2.0.0 + resolution: "are-we-there-yet@npm:2.0.0" + dependencies: + delegates: ^1.0.0 + readable-stream: ^3.6.0 + checksum: 6c80b4fd04ecee6ba6e737e0b72a4b41bdc64b7d279edfc998678567ff583c8df27e27523bc789f2c99be603ffa9eaa612803da1d886962d2086e7ff6fa90c7c + languageName: node + linkType: hard + +"are-we-there-yet@npm:^3.0.0": + version: 3.0.1 + resolution: "are-we-there-yet@npm:3.0.1" + dependencies: + delegates: ^1.0.0 + readable-stream: ^3.6.0 + checksum: 52590c24860fa7173bedeb69a4c05fb573473e860197f618b9a28432ee4379049336727ae3a1f9c4cb083114601c1140cee578376164d0e651217a9843f9fe83 + languageName: node + linkType: hard + +"arg@npm:^4.1.0": + version: 4.1.3 + resolution: "arg@npm:4.1.3" + checksum: 544af8dd3f60546d3e4aff084d451b96961d2267d668670199692f8d054f0415d86fc5497d0e641e91546f0aa920e7c29e5250e99fc89f5552a34b5d93b77f43 + languageName: node + linkType: hard + +"arg@npm:^5.0.2": + version: 5.0.2 + resolution: "arg@npm:5.0.2" + checksum: 6c69ada1a9943d332d9e5382393e897c500908d91d5cb735a01120d5f71daf1b339b7b8980cbeaba8fd1afc68e658a739746179e4315a26e8a28951ff9930078 + languageName: node + linkType: hard + +"argparse@npm:^1.0.10, argparse@npm:^1.0.7, argparse@npm:~1.0.9": + version: 1.0.10 + resolution: "argparse@npm:1.0.10" + dependencies: + sprintf-js: ~1.0.2 + checksum: 7ca6e45583a28de7258e39e13d81e925cfa25d7d4aacbf806a382d3c02fcb13403a07fb8aeef949f10a7cfe4a62da0e2e807b348a5980554cc28ee573ef95945 + languageName: node + linkType: hard + +"argparse@npm:^2.0.1": + version: 2.0.1 + resolution: "argparse@npm:2.0.1" + checksum: 83644b56493e89a254bae05702abf3a1101b4fa4d0ca31df1c9985275a5a5bd47b3c27b7fa0b71098d41114d8ca000e6ed90cad764b306f8a503665e4d517ced + languageName: node + linkType: hard + +"args@npm:^5.0.0": + version: 5.0.3 + resolution: "args@npm:5.0.3" + dependencies: + camelcase: 5.0.0 + chalk: 2.4.2 + leven: 2.1.0 + mri: 1.1.4 + checksum: ac39e656090f9364d7a2a42216a572dfe36d3e4d16d87ca4c1c9552a1c325dc222b642124cb96cdeeafb46662922910191f5aa12142cc4ca117b6d85454c8423 + languageName: node + linkType: hard + +"aria-hidden@npm:^1.1.1": + version: 1.2.4 + resolution: "aria-hidden@npm:1.2.4" + dependencies: + tslib: ^2.0.0 + checksum: 2ac90b70d29c6349d86d90e022cf01f4885f9be193932d943a14127cf28560dd0baf068a6625f084163437a4be0578f513cf7892f4cc63bfe91aa41dce27c6b2 + languageName: node + linkType: hard + +"aria-query@npm:5.1.3": + version: 5.1.3 + resolution: "aria-query@npm:5.1.3" + dependencies: + deep-equal: ^2.0.5 + checksum: 929ff95f02857b650fb4cbcd2f41072eee2f46159a6605ea03bf63aa572e35ffdff43d69e815ddc462e16e07de8faba3978afc2813650b4448ee18c9895d982b + languageName: node + linkType: hard + +"aria-query@npm:5.3.0": + version: 5.3.0 + resolution: "aria-query@npm:5.3.0" + dependencies: + dequal: ^2.0.3 + checksum: 305bd73c76756117b59aba121d08f413c7ff5e80fa1b98e217a3443fcddb9a232ee790e24e432b59ae7625aebcf4c47cb01c2cac872994f0b426f5bdfcd96ba9 + languageName: node + linkType: hard + +"aria-query@npm:^5.0.0, aria-query@npm:^5.3.2": + version: 5.3.2 + resolution: "aria-query@npm:5.3.2" + checksum: d971175c85c10df0f6d14adfe6f1292409196114ab3c62f238e208b53103686f46cc70695a4f775b73bc65f6a09b6a092fd963c4f3a5a7d690c8fc5094925717 + languageName: node + linkType: hard + +"array-buffer-byte-length@npm:^1.0.0, array-buffer-byte-length@npm:^1.0.1": + version: 1.0.1 + resolution: "array-buffer-byte-length@npm:1.0.1" + dependencies: + call-bind: ^1.0.5 + is-array-buffer: ^3.0.4 + checksum: 53524e08f40867f6a9f35318fafe467c32e45e9c682ba67b11943e167344d2febc0f6977a17e699b05699e805c3e8f073d876f8bbf1b559ed494ad2cd0fae09e + languageName: node + linkType: hard + +"array-flatten@npm:1.1.1": + version: 1.1.1 + resolution: "array-flatten@npm:1.1.1" + checksum: a9925bf3512d9dce202112965de90c222cd59a4fbfce68a0951d25d965cf44642931f40aac72309c41f12df19afa010ecadceb07cfff9ccc1621e99d89ab5f3b + languageName: node + linkType: hard + +"array-includes@npm:^3.1.6, array-includes@npm:^3.1.8": + version: 3.1.8 + resolution: "array-includes@npm:3.1.8" + dependencies: + call-bind: ^1.0.7 + define-properties: ^1.2.1 + es-abstract: ^1.23.2 + es-object-atoms: ^1.0.0 + get-intrinsic: ^1.2.4 + is-string: ^1.0.7 + checksum: eb39ba5530f64e4d8acab39297c11c1c5be2a4ea188ab2b34aba5fb7224d918f77717a9d57a3e2900caaa8440e59431bdaf5c974d5212ef65d97f132e38e2d91 + languageName: node + linkType: hard + +"array-union@npm:^2.1.0": + version: 2.1.0 + resolution: "array-union@npm:2.1.0" + checksum: 5bee12395cba82da674931df6d0fea23c4aa4660cb3b338ced9f828782a65caa232573e6bf3968f23e0c5eb301764a382cef2f128b170a9dc59de0e36c39f98d + languageName: node + linkType: hard + +"array.prototype.findlast@npm:^1.2.5": + version: 1.2.5 + resolution: "array.prototype.findlast@npm:1.2.5" + dependencies: + call-bind: ^1.0.7 + define-properties: ^1.2.1 + es-abstract: ^1.23.2 + es-errors: ^1.3.0 + es-object-atoms: ^1.0.0 + es-shim-unscopables: ^1.0.2 + checksum: 83ce4ad95bae07f136d316f5a7c3a5b911ac3296c3476abe60225bc4a17938bf37541972fcc37dd5adbc99cbb9c928c70bbbfc1c1ce549d41a415144030bb446 + languageName: node + linkType: hard + +"array.prototype.findlastindex@npm:^1.2.5": + version: 1.2.5 + resolution: "array.prototype.findlastindex@npm:1.2.5" + dependencies: + call-bind: ^1.0.7 + define-properties: ^1.2.1 + es-abstract: ^1.23.2 + es-errors: ^1.3.0 + es-object-atoms: ^1.0.0 + es-shim-unscopables: ^1.0.2 + checksum: 2c81cff2a75deb95bf1ed89b6f5f2bfbfb882211e3b7cc59c3d6b87df774cd9d6b36949a8ae39ac476e092c1d4a4905f5ee11a86a456abb10f35f8211ae4e710 + languageName: node + linkType: hard + +"array.prototype.flat@npm:^1.3.1, array.prototype.flat@npm:^1.3.2": + version: 1.3.2 + resolution: "array.prototype.flat@npm:1.3.2" + dependencies: + call-bind: ^1.0.2 + define-properties: ^1.2.0 + es-abstract: ^1.22.1 + es-shim-unscopables: ^1.0.0 + checksum: 5d6b4bf102065fb3f43764bfff6feb3295d372ce89591e6005df3d0ce388527a9f03c909af6f2a973969a4d178ab232ffc9236654149173e0e187ec3a1a6b87b + languageName: node + linkType: hard + +"array.prototype.flatmap@npm:^1.3.2": + version: 1.3.2 + resolution: "array.prototype.flatmap@npm:1.3.2" + dependencies: + call-bind: ^1.0.2 + define-properties: ^1.2.0 + es-abstract: ^1.22.1 + es-shim-unscopables: ^1.0.0 + checksum: ce09fe21dc0bcd4f30271f8144083aa8c13d4639074d6c8dc82054b847c7fc9a0c97f857491f4da19d4003e507172a78f4bcd12903098adac8b9cd374f734be3 + languageName: node + linkType: hard + +"array.prototype.tosorted@npm:^1.1.4": + version: 1.1.4 + resolution: "array.prototype.tosorted@npm:1.1.4" + dependencies: + call-bind: ^1.0.7 + define-properties: ^1.2.1 + es-abstract: ^1.23.3 + es-errors: ^1.3.0 + es-shim-unscopables: ^1.0.2 + checksum: e4142d6f556bcbb4f393c02e7dbaea9af8f620c040450c2be137c9cbbd1a17f216b9c688c5f2c08fbb038ab83f55993fa6efdd9a05881d84693c7bcb5422127a + languageName: node + linkType: hard + +"arraybuffer.prototype.slice@npm:^1.0.3": + version: 1.0.3 + resolution: "arraybuffer.prototype.slice@npm:1.0.3" + dependencies: + array-buffer-byte-length: ^1.0.1 + call-bind: ^1.0.5 + define-properties: ^1.2.1 + es-abstract: ^1.22.3 + es-errors: ^1.2.1 + get-intrinsic: ^1.2.3 + is-array-buffer: ^3.0.4 + is-shared-array-buffer: ^1.0.2 + checksum: 352259cba534dcdd969c92ab002efd2ba5025b2e3b9bead3973150edbdf0696c629d7f4b3f061c5931511e8207bdc2306da614703c820b45dabce39e3daf7e3e + languageName: node + linkType: hard + +"arrify@npm:^2.0.0": + version: 2.0.1 + resolution: "arrify@npm:2.0.1" + checksum: 067c4c1afd182806a82e4c1cb8acee16ab8b5284fbca1ce29408e6e91281c36bb5b612f6ddfbd40a0f7a7e0c75bf2696eb94c027f6e328d6e9c52465c98e4209 + languageName: node + linkType: hard + +"asap@npm:^2.0.0, asap@npm:^2.0.3": + version: 2.0.6 + resolution: "asap@npm:2.0.6" + checksum: b296c92c4b969e973260e47523207cd5769abd27c245a68c26dc7a0fe8053c55bb04360237cb51cab1df52be939da77150ace99ad331fb7fb13b3423ed73ff3d + languageName: node + linkType: hard + +"asn1.js@npm:^4.10.1": + version: 4.10.1 + resolution: "asn1.js@npm:4.10.1" + dependencies: + bn.js: ^4.0.0 + inherits: ^2.0.1 + minimalistic-assert: ^1.0.0 + checksum: 9289a1a55401238755e3142511d7b8f6fc32f08c86ff68bd7100da8b6c186179dd6b14234fba2f7f6099afcd6758a816708485efe44bc5b2a6ec87d9ceeddbb5 + languageName: node + linkType: hard + +"asn1@npm:^0.2.6, asn1@npm:~0.2.3": + version: 0.2.6 + resolution: "asn1@npm:0.2.6" + dependencies: + safer-buffer: ~2.1.0 + checksum: 39f2ae343b03c15ad4f238ba561e626602a3de8d94ae536c46a4a93e69578826305366dc09fbb9b56aec39b4982a463682f259c38e59f6fa380cd72cd61e493d + languageName: node + linkType: hard + +"assert-plus@npm:1.0.0, assert-plus@npm:^1.0.0": + version: 1.0.0 + resolution: "assert-plus@npm:1.0.0" + checksum: 19b4340cb8f0e6a981c07225eacac0e9d52c2644c080198765d63398f0075f83bbc0c8e95474d54224e297555ad0d631c1dcd058adb1ddc2437b41a6b424ac64 + languageName: node + linkType: hard + +"assert@npm:^1.1.1": + version: 1.5.1 + resolution: "assert@npm:1.5.1" + dependencies: + object.assign: ^4.1.4 + util: ^0.10.4 + checksum: bfc539da97545f9b2989395d6b85be40b70649ce57464f3cc6e61f4975fb097ba0689c386f95bdb4c3ab867931e40a565c9e193ae3c02263a8e92acb17c9dc93 + languageName: node + linkType: hard + +"ast-types-flow@npm:^0.0.8": + version: 0.0.8 + resolution: "ast-types-flow@npm:0.0.8" + checksum: 0a64706609a179233aac23817837abab614f3548c252a2d3d79ea1e10c74aa28a0846e11f466cf72771b6ed8713abc094dcf8c40c3ec4207da163efa525a94a8 + languageName: node + linkType: hard + +"ast-types@npm:^0.13.4": + version: 0.13.4 + resolution: "ast-types@npm:0.13.4" + dependencies: + tslib: ^2.0.1 + checksum: 5a51f7b70588ecced3601845a0e203279ca2f5fdc184416a0a1640c93ec0a267241d6090a328e78eebb8de81f8754754e0a4f1558ba2a3d638f8ccbd0b1f0eff + languageName: node + linkType: hard + +"astring@npm:^1.8.1": + version: 1.9.0 + resolution: "astring@npm:1.9.0" + bin: + astring: bin/astring + checksum: 69ffde3643f5280c6846231a995af878a94d3eab41d1a19a86b8c15f456453f63a7982cf5dd72d270b9f50dd26763a3e1e48377c961b7df16f550132b6dba805 + languageName: node + linkType: hard + +"async-lock@npm:^1.4.1": + version: 1.4.1 + resolution: "async-lock@npm:1.4.1" + checksum: 29e70cd892932b7c202437786cedc39ff62123cb6941014739bd3cabd6106326416e9e7c21285a5d1dc042cad239a0f7ec9c44658491ee4a615fd36a21c1d10a + languageName: node + linkType: hard + +"async-mutex@npm:^0.5.0": + version: 0.5.0 + resolution: "async-mutex@npm:0.5.0" + dependencies: + tslib: ^2.4.0 + checksum: be1587f4875f3bb15e34e9fcce82eac2966daef4432c8d0046e61947fb9a1b95405284601bc7ce4869319249bc07c75100880191db6af11d1498931ac2a2f9ea + languageName: node + linkType: hard + +"async-retry@npm:^1.3.3": + version: 1.3.3 + resolution: "async-retry@npm:1.3.3" + dependencies: + retry: 0.13.1 + checksum: 38a7152ff7265a9321ea214b9c69e8224ab1febbdec98efbbde6e562f17ff68405569b796b1c5271f354aef8783665d29953f051f68c1fc45306e61aec82fdc4 + languageName: node + linkType: hard + +"async@npm:^2.6.4": + version: 2.6.4 + resolution: "async@npm:2.6.4" + dependencies: + lodash: ^4.17.14 + checksum: a52083fb32e1ebe1d63e5c5624038bb30be68ff07a6c8d7dfe35e47c93fc144bd8652cbec869e0ac07d57dde387aa5f1386be3559cdee799cb1f789678d88e19 + languageName: node + linkType: hard + +"async@npm:^3.2.3, async@npm:^3.2.4": + version: 3.2.6 + resolution: "async@npm:3.2.6" + checksum: ee6eb8cd8a0ab1b58bd2a3ed6c415e93e773573a91d31df9d5ef559baafa9dab37d3b096fa7993e84585cac3697b2af6ddb9086f45d3ac8cae821bb2aab65682 + languageName: node + linkType: hard + +"asynckit@npm:^0.4.0": + version: 0.4.0 + resolution: "asynckit@npm:0.4.0" + checksum: 7b78c451df768adba04e2d02e63e2d0bf3b07adcd6e42b4cf665cb7ce899bedd344c69a1dcbce355b5f972d597b25aaa1c1742b52cffd9caccb22f348114f6be + languageName: node + linkType: hard + +"at-least-node@npm:^1.0.0": + version: 1.0.0 + resolution: "at-least-node@npm:1.0.0" + checksum: 463e2f8e43384f1afb54bc68485c436d7622acec08b6fad269b421cb1d29cebb5af751426793d0961ed243146fe4dc983402f6d5a51b720b277818dbf6f2e49e + languageName: node + linkType: hard + +"atlassian-openapi@npm:^1.0.8": + version: 1.0.20 + resolution: "atlassian-openapi@npm:1.0.20" + dependencies: + jsonpointer: ^5.0.0 + urijs: ^1.19.10 + checksum: 9d154fb3de6256f30ce677266995a983852c05e58fb820110dbb05f785bae19ab4c1d539e2bced6c29db29255c8933cb4bc6345a3b3d6b9ad47794ff058d8de0 + languageName: node + linkType: hard + +"atomic-sleep@npm:^1.0.0": + version: 1.0.0 + resolution: "atomic-sleep@npm:1.0.0" + checksum: b95275afb2f80732f22f43a60178430c468906a415a7ff18bcd0feeebc8eec3930b51250aeda91a476062a90e07132b43a1794e8d8ffcf9b650e8139be75fa36 + languageName: node + linkType: hard + +"attr-accept@npm:^2.2.4": + version: 2.2.5 + resolution: "attr-accept@npm:2.2.5" + checksum: e6a23183c112f5d313ebfc7e63e454de0600caffe9ab88f86e9df420d2399a48e27e6c46ee8de2fc6f34fee3541ecdb557f2b86e6d8bd7d24fd3a66cc75e6349 + languageName: node + linkType: hard + +"autolinker@npm:^3.11.0": + version: 3.16.2 + resolution: "autolinker@npm:3.16.2" + dependencies: + tslib: ^2.3.0 + checksum: 1d5d20ef23586629ec3c341052e6bb6250399cf5e66db21540c17b2f5b1137066435fb274a2115b57464d05e75b85afad61ef7cdf6ea693ef2920a3748b7249d + languageName: node + linkType: hard + +"available-typed-arrays@npm:^1.0.7": + version: 1.0.7 + resolution: "available-typed-arrays@npm:1.0.7" + dependencies: + possible-typed-array-names: ^1.0.0 + checksum: 1aa3ffbfe6578276996de660848b6e95669d9a95ad149e3dd0c0cda77db6ee1dbd9d1dd723b65b6d277b882dd0c4b91a654ae9d3cf9e1254b7e93e4908d78fd3 + languageName: node + linkType: hard + +"avsc@npm:^5.7.5, avsc@npm:^5.7.6": + version: 5.7.7 + resolution: "avsc@npm:5.7.7" + checksum: e3361aa88a61397b3345876263f79c8c8bfe013d849142202758205459a37e24cdbf02edc49ae019d6e82d93bbc7bc73e9e7fefca049aae91626bae28de4d1a9 + languageName: node + linkType: hard + +"aws-sign2@npm:~0.7.0": + version: 0.7.0 + resolution: "aws-sign2@npm:0.7.0" + checksum: b148b0bb0778098ad8cf7e5fc619768bcb51236707ca1d3e5b49e41b171166d8be9fdc2ea2ae43d7decf02989d0aaa3a9c4caa6f320af95d684de9b548a71525 + languageName: node + linkType: hard + +"aws-ssl-profiles@npm:^1.1.1": + version: 1.1.2 + resolution: "aws-ssl-profiles@npm:1.1.2" + checksum: bfcf9b2cbb9788e24e4af39a1e8b4a8afbdf65773b6a1636e643c10068ffbae46b28277c4c9f9321179400b2080092db040ba4513f9143f22d1bb053a12dab2b + languageName: node + linkType: hard + +"aws4@npm:^1.8.0": + version: 1.13.2 + resolution: "aws4@npm:1.13.2" + checksum: 9ac924e4a91c088b4928ea86b68d8c4558b0e6289ccabaae0e3e96a611bd75277c2eab6e3965821028768700516f612b929a5ce822f33a8771f74ba2a8cedb9c + languageName: node + linkType: hard + +"axe-core@npm:^4.10.0": + version: 4.10.2 + resolution: "axe-core@npm:4.10.2" + checksum: 2b9b1c93ea73ea9f206604e4e17bd771d2d835f077bde54517d73028b8865c69b209460e73d5b109968cbdb39ab3d28943efa5695189bd79e16421ce1706719e + languageName: node + linkType: hard + +"axios-cached-dns-resolve@npm:0.5.2": + version: 0.5.2 + resolution: "axios-cached-dns-resolve@npm:0.5.2" + dependencies: + babel-polyfill: ^6.26.0 + json-stringify-safe: ^5.0.1 + lodash: ^4.17.15 + lru-cache: ^5.1.1 + pino: ^5.12.2 + pino-pretty: ^2.6.0 + checksum: 01548610b48da1fb7de2928f91cc538d6aff901ae81786d4444c77f11318924705ba6c5fd236a3c302abbbba6fb3fdd7de859f2c5fe92e7082515c53e508eadc + languageName: node + linkType: hard + +"axios@npm:1.7.7, axios@npm:^1.7.4": + version: 1.7.7 + resolution: "axios@npm:1.7.7" + dependencies: + follow-redirects: ^1.15.6 + form-data: ^4.0.0 + proxy-from-env: ^1.1.0 + checksum: 882d4fe0ec694a07c7f5c1f68205eb6dc5a62aecdb632cc7a4a3d0985188ce3030e0b277e1a8260ac3f194d314ae342117660a151fabffdc5081ca0b5a8b47fe + languageName: node + linkType: hard + +"axios@npm:^1.0.0, axios@npm:^1.6.0, axios@npm:^1.7.7": + version: 1.7.9 + resolution: "axios@npm:1.7.9" + dependencies: + follow-redirects: ^1.15.6 + form-data: ^4.0.0 + proxy-from-env: ^1.1.0 + checksum: cb8ce291818effda09240cb60f114d5625909b345e10f389a945320e06acf0bc949d0f8422d25720f5dd421362abee302c99f5e97edec4c156c8939814b23d19 + languageName: node + linkType: hard + +"axobject-query@npm:^4.1.0": + version: 4.1.0 + resolution: "axobject-query@npm:4.1.0" + checksum: 7d1e87bf0aa7ae7a76cd39ab627b7c48fda3dc40181303d9adce4ba1d5b5ce73b5e5403ee6626ec8e91090448c887294d6144e24b6741a976f5be9347e3ae1df + languageName: node + linkType: hard + +"azure-devops-node-api@npm:^14.0.0": + version: 14.1.0 + resolution: "azure-devops-node-api@npm:14.1.0" + dependencies: + tunnel: 0.0.6 + typed-rest-client: 2.1.0 + checksum: 4b459ee2dbedc068789234229166e7fe1833c42803aa7dad52c5178b0692736585a1903a760498b8ee0993f886add0d3c2e9a84b6f7b9ed2aab3ae108f47e07c + languageName: node + linkType: hard + +"b4a@npm:^1.6.4": + version: 1.6.7 + resolution: "b4a@npm:1.6.7" + checksum: afe4e239b49c0ef62236fe0d788ac9bd9d7eac7e9855b0d1835593cd0efcc7be394f9cc28a747a2ed2cdcb0a48c3528a551a196f472eb625457c711169c9efa2 + languageName: node + linkType: hard + +"babel-jest@npm:^29.7.0": + version: 29.7.0 + resolution: "babel-jest@npm:29.7.0" + dependencies: + "@jest/transform": ^29.7.0 + "@types/babel__core": ^7.1.14 + babel-plugin-istanbul: ^6.1.1 + babel-preset-jest: ^29.6.3 + chalk: ^4.0.0 + graceful-fs: ^4.2.9 + slash: ^3.0.0 + peerDependencies: + "@babel/core": ^7.8.0 + checksum: ee6f8e0495afee07cac5e4ee167be705c711a8cc8a737e05a587a131fdae2b3c8f9aa55dfd4d9c03009ac2d27f2de63d8ba96d3e8460da4d00e8af19ef9a83f7 + languageName: node + linkType: hard + +"babel-plugin-istanbul@npm:^6.1.1": + version: 6.1.1 + resolution: "babel-plugin-istanbul@npm:6.1.1" + dependencies: + "@babel/helper-plugin-utils": ^7.0.0 + "@istanbuljs/load-nyc-config": ^1.0.0 + "@istanbuljs/schema": ^0.1.2 + istanbul-lib-instrument: ^5.0.4 + test-exclude: ^6.0.0 + checksum: cb4fd95738219f232f0aece1116628cccff16db891713c4ccb501cddbbf9272951a5df81f2f2658dfdf4b3e7b236a9d5cbcf04d5d8c07dd5077297339598061a + languageName: node + linkType: hard + +"babel-plugin-jest-hoist@npm:^29.6.3": + version: 29.6.3 + resolution: "babel-plugin-jest-hoist@npm:29.6.3" + dependencies: + "@babel/template": ^7.3.3 + "@babel/types": ^7.3.3 + "@types/babel__core": ^7.1.14 + "@types/babel__traverse": ^7.0.6 + checksum: 51250f22815a7318f17214a9d44650ba89551e6d4f47a2dc259128428324b52f5a73979d010cefd921fd5a720d8c1d55ad74ff601cd94c7bd44d5f6292fde2d1 + languageName: node + linkType: hard + +"babel-plugin-macros@npm:^3.1.0": + version: 3.1.0 + resolution: "babel-plugin-macros@npm:3.1.0" + dependencies: + "@babel/runtime": ^7.12.5 + cosmiconfig: ^7.0.0 + resolve: ^1.19.0 + checksum: 765de4abebd3e4688ebdfbff8571ddc8cd8061f839bb6c3e550b0344a4027b04c60491f843296ce3f3379fb356cc873d57a9ee6694262547eb822c14a25be9a6 + languageName: node + linkType: hard + +"babel-plugin-polyfill-corejs2@npm:^0.4.10": + version: 0.4.11 + resolution: "babel-plugin-polyfill-corejs2@npm:0.4.11" + dependencies: + "@babel/compat-data": ^7.22.6 + "@babel/helper-define-polyfill-provider": ^0.6.2 + semver: ^6.3.1 + peerDependencies: + "@babel/core": ^7.4.0 || ^8.0.0-0 <8.0.0 + checksum: f098353ce7c7dde1a1d2710858e01b471e85689110c9e37813e009072347eb8c55d5f84d20d3bf1cab31755f20078ba90f8855fdc4686a9daa826a95ff280bd7 + languageName: node + linkType: hard + +"babel-plugin-polyfill-corejs3@npm:^0.10.6": + version: 0.10.6 + resolution: "babel-plugin-polyfill-corejs3@npm:0.10.6" + dependencies: + "@babel/helper-define-polyfill-provider": ^0.6.2 + core-js-compat: ^3.38.0 + peerDependencies: + "@babel/core": ^7.4.0 || ^8.0.0-0 <8.0.0 + checksum: f762f29f7acca576897c63149c850f0a72babd3fb9ea436a2e36f0c339161c4b912a77828541d8188ce8a91e50965c6687120cf36071eabb1b7aa92f279e2164 + languageName: node + linkType: hard + +"babel-plugin-polyfill-regenerator@npm:^0.6.1": + version: 0.6.2 + resolution: "babel-plugin-polyfill-regenerator@npm:0.6.2" + dependencies: + "@babel/helper-define-polyfill-provider": ^0.6.2 + peerDependencies: + "@babel/core": ^7.4.0 || ^8.0.0-0 <8.0.0 + checksum: 150233571072b6b3dfe946242da39cba8587b7f908d1c006f7545fc88b0e3c3018d445739beb61e7a75835f0c2751dbe884a94ff9b245ec42369d9267e0e1b3f + languageName: node + linkType: hard + +"babel-polyfill@npm:^6.26.0": + version: 6.26.0 + resolution: "babel-polyfill@npm:6.26.0" + dependencies: + babel-runtime: ^6.26.0 + core-js: ^2.5.0 + regenerator-runtime: ^0.10.5 + checksum: 6fb1a3c0bfe1b6fc56ce1afcf531878aa629b309277a05fbf3fe950589b24cb4052a6e487db21d318eb5336b68730a21f5ef62166b6cc8aea3406261054d1118 + languageName: node + linkType: hard + +"babel-preset-current-node-syntax@npm:^1.0.0": + version: 1.1.0 + resolution: "babel-preset-current-node-syntax@npm:1.1.0" + dependencies: + "@babel/plugin-syntax-async-generators": ^7.8.4 + "@babel/plugin-syntax-bigint": ^7.8.3 + "@babel/plugin-syntax-class-properties": ^7.12.13 + "@babel/plugin-syntax-class-static-block": ^7.14.5 + "@babel/plugin-syntax-import-attributes": ^7.24.7 + "@babel/plugin-syntax-import-meta": ^7.10.4 + "@babel/plugin-syntax-json-strings": ^7.8.3 + "@babel/plugin-syntax-logical-assignment-operators": ^7.10.4 + "@babel/plugin-syntax-nullish-coalescing-operator": ^7.8.3 + "@babel/plugin-syntax-numeric-separator": ^7.10.4 + "@babel/plugin-syntax-object-rest-spread": ^7.8.3 + "@babel/plugin-syntax-optional-catch-binding": ^7.8.3 + "@babel/plugin-syntax-optional-chaining": ^7.8.3 + "@babel/plugin-syntax-private-property-in-object": ^7.14.5 + "@babel/plugin-syntax-top-level-await": ^7.14.5 + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 9f93fac975eaba296c436feeca1031ca0539143c4066eaf5d1ba23525a31850f03b651a1049caea7287df837a409588c8252c15627ad3903f17864c8e25ed64b + languageName: node + linkType: hard + +"babel-preset-jest@npm:^29.6.3": + version: 29.6.3 + resolution: "babel-preset-jest@npm:29.6.3" + dependencies: + babel-plugin-jest-hoist: ^29.6.3 + babel-preset-current-node-syntax: ^1.0.0 + peerDependencies: + "@babel/core": ^7.0.0 + checksum: aa4ff2a8a728d9d698ed521e3461a109a1e66202b13d3494e41eea30729a5e7cc03b3a2d56c594423a135429c37bf63a9fa8b0b9ce275298be3095a88c69f6fb + languageName: node + linkType: hard + +"babel-runtime@npm:^6.26.0": + version: 6.26.0 + resolution: "babel-runtime@npm:6.26.0" + dependencies: + core-js: ^2.4.0 + regenerator-runtime: ^0.11.0 + checksum: 8aeade94665e67a73c1ccc10f6fd42ba0c689b980032b70929de7a6d9a12eb87ef51902733f8fefede35afea7a5c3ef7e916a64d503446c1eedc9e3284bd3d50 + languageName: node + linkType: hard + +"backend@workspace:packages/backend": + version: 0.0.0-use.local + resolution: "backend@workspace:packages/backend" + dependencies: + "@backstage-community/plugin-kiali-backend": "workspace:^" + "@backstage/backend-defaults": ^0.5.1 + "@backstage/cli": ^0.28.0 + "@backstage/config": ^1.2.0 + "@backstage/plugin-app-backend": ^0.3.76 + "@backstage/plugin-auth-backend": ^0.23.1 + "@backstage/plugin-auth-backend-module-github-provider": ^0.2.1 + "@backstage/plugin-auth-backend-module-guest-provider": ^0.2.1 + "@backstage/plugin-auth-node": ^0.5.3 + "@backstage/plugin-catalog-backend": ^1.27.0 + "@backstage/plugin-catalog-backend-module-logs": ^0.1.2 + "@backstage/plugin-catalog-backend-module-scaffolder-entity-model": ^0.2.1 + "@backstage/plugin-kubernetes-backend": ^0.18.7 + "@backstage/plugin-permission-backend": ^0.5.50 + "@backstage/plugin-permission-backend-module-allow-all-policy": ^0.2.1 + "@backstage/plugin-permission-common": ^0.8.1 + "@backstage/plugin-permission-node": ^0.8.4 + "@backstage/plugin-proxy-backend": ^0.5.7 + "@backstage/plugin-scaffolder-backend": ^1.26.0 + "@backstage/plugin-search-backend": ^1.6.0 + "@backstage/plugin-search-backend-module-catalog": ^0.2.3 + "@backstage/plugin-search-backend-module-pg": ^0.5.36 + "@backstage/plugin-search-backend-module-techdocs": ^0.3.0 + "@backstage/plugin-search-backend-node": ^1.3.3 + "@backstage/plugin-techdocs-backend": ^1.11.0 + app: "link:../app" + better-sqlite3: ^9.0.0 + node-gyp: ^10.0.0 + pg: ^8.11.3 + languageName: unknown + linkType: soft + +"backo2@npm:^1.0.2": + version: 1.0.2 + resolution: "backo2@npm:1.0.2" + checksum: fda8d0a0f4810068d23715f2f45153146d6ee8f62dd827ce1e0b6cc3c8328e84ad61e11399a83931705cef702fe7cbb457856bf99b9bd10c4ed57b0786252385 + languageName: node + linkType: hard + +"bail@npm:^2.0.0": + version: 2.0.2 + resolution: "bail@npm:2.0.2" + checksum: aab4e8ccdc8d762bf3fdfce8e706601695620c0c2eda256dd85088dc0be3cfd7ff126f6e99c2bee1f24f5d418414aacf09d7f9702f16d6963df2fa488cda8824 + languageName: node + linkType: hard + +"balanced-match@npm:^1.0.0": + version: 1.0.2 + resolution: "balanced-match@npm:1.0.2" + checksum: 9706c088a283058a8a99e0bf91b0a2f75497f185980d9ffa8b304de1d9e58ebda7c72c07ebf01dadedaac5b2907b2c6f566f660d62bd336c3468e960403b9d65 + languageName: node + linkType: hard + +"bare-events@npm:^2.0.0, bare-events@npm:^2.2.0": + version: 2.5.0 + resolution: "bare-events@npm:2.5.0" + checksum: 5aa10716e7f33c5dfc471fd657eee2a33f2db0f78b3c83b5cdd1a45a7e7871114a69460ea96cd838807c55eb470b9e53dd0dfda8c83cced1352cc8253cebff48 + languageName: node + linkType: hard + +"bare-fs@npm:^2.1.1": + version: 2.3.5 + resolution: "bare-fs@npm:2.3.5" + dependencies: + bare-events: ^2.0.0 + bare-path: ^2.0.0 + bare-stream: ^2.0.0 + checksum: 071b1dff94a213eaf0b41693953959bf10af2deade597a56ff206a5d833579d56bc8530aa4614bb88bf39fd6d52f2404f7c36af4695109ffa756a13837ac3d91 + languageName: node + linkType: hard + +"bare-os@npm:^2.1.0": + version: 2.4.4 + resolution: "bare-os@npm:2.4.4" + checksum: e90088a7dc0307c020350a28df8ec5564cae5a4b7a213d8509d70831d7064308e2ed31de801b68f474cb004ad3a0a66bd28c38374d270484d9025ee71af20396 + languageName: node + linkType: hard + +"bare-path@npm:^2.0.0, bare-path@npm:^2.1.0": + version: 2.1.3 + resolution: "bare-path@npm:2.1.3" + dependencies: + bare-os: ^2.1.0 + checksum: 20301aeb05b735852a396515464908e51e896922c3bb353ef2a09ff54e81ced94e6ad857bb0a36d2ce659c42bd43dd5c3d5643edd8faaf910ee9950c4e137b88 + languageName: node + linkType: hard + +"bare-stream@npm:^2.0.0": + version: 2.3.2 + resolution: "bare-stream@npm:2.3.2" + dependencies: + streamx: ^2.20.0 + checksum: 051c817f0b74617d99002a91c61e6fa2b56bff3bb329c5ab4a817287bc1f46f3aef5f13bc11201b344a91873782a45f755d3910012381f16e47feee2194fd792 + languageName: node + linkType: hard + +"base64-arraybuffer@npm:^0.1.5": + version: 0.1.5 + resolution: "base64-arraybuffer@npm:0.1.5" + checksum: 44588c1b4460faf59643cf3bcf346a7ede9df70d97aec6dbee4fbae15f6b6220d679b8db076771ea4ef5713dd710e7db7a4a3f81bbb04c71fb06764697d9a021 + languageName: node + linkType: hard + +"base64-js@npm:^1.0.2, base64-js@npm:^1.3.0, base64-js@npm:^1.3.1, base64-js@npm:^1.5.1": + version: 1.5.1 + resolution: "base64-js@npm:1.5.1" + checksum: 669632eb3745404c2f822a18fc3a0122d2f9a7a13f7fb8b5823ee19d1d2ff9ee5b52c53367176ea4ad093c332fd5ab4bd0ebae5a8e27917a4105a4cfc86b1005 + languageName: node + linkType: hard + +"base64-stream@npm:^1.0.0": + version: 1.0.0 + resolution: "base64-stream@npm:1.0.0" + checksum: 45ee0ffaa30350e21f7bd58eedeeeb4567297e2537eac71000e00cc38be8578bdaa7fda59c30302dc9ed58c18b235e440207425abb81bd89de9a3ef79348921b + languageName: node + linkType: hard + +"base64url@npm:3.x.x": + version: 3.0.1 + resolution: "base64url@npm:3.0.1" + checksum: a77b2a3a526b3343e25be424de3ae0aa937d78f6af7c813ef9020ef98001c0f4e2323afcd7d8b2d2978996bf8c42445c3e9f60c218c622593e5fdfd54a3d6e18 + languageName: node + linkType: hard + +"basic-auth@npm:~2.0.1": + version: 2.0.1 + resolution: "basic-auth@npm:2.0.1" + dependencies: + safe-buffer: 5.1.2 + checksum: 3419b805d5dfc518f3a05dcf42aa53aa9ce820e50b6df5097f9e186322e1bc733c36722b624802cd37e791035aa73b828ed814d8362333d42d7f5cd04d7a5e48 + languageName: node + linkType: hard + +"basic-ftp@npm:^5.0.2": + version: 5.0.5 + resolution: "basic-ftp@npm:5.0.5" + checksum: bc82d1c1c61cd838eaca96d68ece888bacf07546642fb6b9b8328ed410756f5935f8cf43a42cb44bb343e0565e28e908adc54c298bd2f1a6e0976871fb11fec6 + languageName: node + linkType: hard + +"batch@npm:0.6.1": + version: 0.6.1 + resolution: "batch@npm:0.6.1" + checksum: 61f9934c7378a51dce61b915586191078ef7f1c3eca707fdd58b96ff2ff56d9e0af2bdab66b1462301a73c73374239e6542d9821c0af787f3209a23365d07e7f + languageName: node + linkType: hard + +"bcrypt-pbkdf@npm:^1.0.0, bcrypt-pbkdf@npm:^1.0.2": + version: 1.0.2 + resolution: "bcrypt-pbkdf@npm:1.0.2" + dependencies: + tweetnacl: ^0.14.3 + checksum: 4edfc9fe7d07019609ccf797a2af28351736e9d012c8402a07120c4453a3b789a15f2ee1530dc49eee8f7eb9379331a8dd4b3766042b9e502f74a68e7f662291 + languageName: node + linkType: hard + +"before-after-hook@npm:^2.2.0": + version: 2.2.3 + resolution: "before-after-hook@npm:2.2.3" + checksum: a1a2430976d9bdab4cd89cb50d27fa86b19e2b41812bf1315923b0cba03371ebca99449809226425dd3bcef20e010db61abdaff549278e111d6480034bebae87 + languageName: node + linkType: hard + +"better-path-resolve@npm:1.0.0": + version: 1.0.0 + resolution: "better-path-resolve@npm:1.0.0" + dependencies: + is-windows: ^1.0.0 + checksum: 5392dbe04e7fe68b944eb37961d9dfa147aaac3ee9ee3f6e13d42e2c9fbe949e68d16e896c14ee9016fa5f8e6e53ec7fd8b5f01b50a32067a7d94ac9cfb9a050 + languageName: node + linkType: hard + +"better-sqlite3@npm:^11.0.0": + version: 11.5.0 + resolution: "better-sqlite3@npm:11.5.0" + dependencies: + bindings: ^1.5.0 + node-gyp: latest + prebuild-install: ^7.1.1 + checksum: 37acef8d4272ad57fe211aa5a2e177f95443eafb794c7db6c2d0dae0a4fe4c2ef508b8b970d82f1d9744d009677d82067279f45e27d4155a5e68a578f5c5c051 + languageName: node + linkType: hard + +"better-sqlite3@npm:^9.0.0": + version: 9.6.0 + resolution: "better-sqlite3@npm:9.6.0" + dependencies: + bindings: ^1.5.0 + node-gyp: latest + prebuild-install: ^7.1.1 + checksum: be3a1d2a3f6f9b5141be6607a38c0a51fa5849495b071955e507bc0c2a2fb08430852c1bf03796eec1a53344b25645807db48dcb51c71b0662b74c5a70420bb0 + languageName: node + linkType: hard + +"bfj@npm:^8.0.0": + version: 8.0.0 + resolution: "bfj@npm:8.0.0" + dependencies: + bluebird: ^3.7.2 + check-types: ^11.2.3 + hoopy: ^0.1.4 + jsonpath: ^1.1.1 + tryer: ^1.0.1 + checksum: f22d49cd2661a92e7526015edac0e02858a881a36438fe4e67df320dddc08cba09e197a7e128f282abc2c26127f5abb3ca8e8b7eff0737df20e5b8c4ee6273e9 + languageName: node + linkType: hard + +"big.js@npm:^5.2.2": + version: 5.2.2 + resolution: "big.js@npm:5.2.2" + checksum: b89b6e8419b097a8fb4ed2399a1931a68c612bce3cfd5ca8c214b2d017531191070f990598de2fc6f3f993d91c0f08aa82697717f6b3b8732c9731866d233c9e + languageName: node + linkType: hard + +"bignumber.js@npm:^9.0.0": + version: 9.1.2 + resolution: "bignumber.js@npm:9.1.2" + checksum: 582c03af77ec9cb0ebd682a373ee6c66475db94a4325f92299621d544aa4bd45cb45fd60001610e94aef8ae98a0905fa538241d9638d4422d57abbeeac6fadaf + languageName: node + linkType: hard + +"binary-extensions@npm:^2.0.0": + version: 2.3.0 + resolution: "binary-extensions@npm:2.3.0" + checksum: bcad01494e8a9283abf18c1b967af65ee79b0c6a9e6fcfafebfe91dbe6e0fc7272bafb73389e198b310516ae04f7ad17d79aacf6cb4c0d5d5202a7e2e52c7d98 + languageName: node + linkType: hard + +"bindings@npm:^1.5.0": + version: 1.5.0 + resolution: "bindings@npm:1.5.0" + dependencies: + file-uri-to-path: 1.0.0 + checksum: 65b6b48095717c2e6105a021a7da4ea435aa8d3d3cd085cb9e85bcb6e5773cf318c4745c3f7c504412855940b585bdf9b918236612a1c7a7942491de176f1ae7 + languageName: node + linkType: hard + +"bintrees@npm:1.0.2": + version: 1.0.2 + resolution: "bintrees@npm:1.0.2" + checksum: 56a52b7d3634e30002b1eda740d2517a22fa8e9e2eb088e919f37c030a0ed86e364ab59e472fc770fc8751308054bb1c892979d150e11d9e11ac33bcc1b5d16e + languageName: node + linkType: hard + +"bl@npm:^4.0.3, bl@npm:^4.1.0": + version: 4.1.0 + resolution: "bl@npm:4.1.0" + dependencies: + buffer: ^5.5.0 + inherits: ^2.0.4 + readable-stream: ^3.4.0 + checksum: 9e8521fa7e83aa9427c6f8ccdcba6e8167ef30cc9a22df26effcc5ab682ef91d2cbc23a239f945d099289e4bbcfae7a192e9c28c84c6202e710a0dfec3722662 + languageName: node + linkType: hard + +"bluebird@npm:3.7.2, bluebird@npm:^3.7.2": + version: 3.7.2 + resolution: "bluebird@npm:3.7.2" + checksum: 869417503c722e7dc54ca46715f70e15f4d9c602a423a02c825570862d12935be59ed9c7ba34a9b31f186c017c23cac6b54e35446f8353059c101da73eac22ef + languageName: node + linkType: hard + +"bn.js@npm:^4.0.0, bn.js@npm:^4.1.0, bn.js@npm:^4.11.9": + version: 4.12.0 + resolution: "bn.js@npm:4.12.0" + checksum: 39afb4f15f4ea537b55eaf1446c896af28ac948fdcf47171961475724d1bb65118cca49fa6e3d67706e4790955ec0e74de584e45c8f1ef89f46c812bee5b5a12 + languageName: node + linkType: hard + +"bn.js@npm:^5.2.1": + version: 5.2.1 + resolution: "bn.js@npm:5.2.1" + checksum: 3dd8c8d38055fedfa95c1d5fc3c99f8dd547b36287b37768db0abab3c239711f88ff58d18d155dd8ad902b0b0cee973747b7ae20ea12a09473272b0201c9edd3 + languageName: node + linkType: hard + +"body-parser@npm:1.20.3, body-parser@npm:^1.15.2": + version: 1.20.3 + resolution: "body-parser@npm:1.20.3" + dependencies: + bytes: 3.1.2 + content-type: ~1.0.5 + debug: 2.6.9 + depd: 2.0.0 + destroy: 1.2.0 + http-errors: 2.0.0 + iconv-lite: 0.4.24 + on-finished: 2.4.1 + qs: 6.13.0 + raw-body: 2.5.2 + type-is: ~1.6.18 + unpipe: 1.0.0 + checksum: 1a35c59a6be8d852b00946330141c4f142c6af0f970faa87f10ad74f1ee7118078056706a05ae3093c54dabca9cd3770fa62a170a85801da1a4324f04381167d + languageName: node + linkType: hard + +"bonjour-service@npm:^1.0.11, bonjour-service@npm:^1.2.1": + version: 1.2.1 + resolution: "bonjour-service@npm:1.2.1" + dependencies: + fast-deep-equal: ^3.1.3 + multicast-dns: ^7.2.5 + checksum: b65b3e6e3a07e97f2da5806afb76f3946d5a6426b72e849a0236dc3c9d3612fb8c5359ebade4be7eb63f74a37670c53a53be2ff17f4f709811fda77f600eb25b + languageName: node + linkType: hard + +"boolbase@npm:^1.0.0": + version: 1.0.0 + resolution: "boolbase@npm:1.0.0" + checksum: 3e25c80ef626c3a3487c73dbfc70ac322ec830666c9ad915d11b701142fab25ec1e63eff2c450c74347acfd2de854ccde865cd79ef4db1683f7c7b046ea43bb0 + languageName: node + linkType: hard + +"boolean@npm:^3.0.1": + version: 3.2.0 + resolution: "boolean@npm:3.2.0" + checksum: fb29535b8bf710ef45279677a86d14f5185d604557204abd2ca5fa3fb2a5c80e04d695c8dbf13ab269991977a79bb6c04b048220a6b2a3849853faa94f4a7d77 + languageName: node + linkType: hard + +"bottleneck@npm:^2.15.3": + version: 2.19.5 + resolution: "bottleneck@npm:2.19.5" + checksum: c5eef1bbea12cef1f1405e7306e7d24860568b0f7ac5eeab706a86762b3fc65ef6d1c641c8a166e4db90f412fc5c948fc5ce8008a8cd3d28c7212ef9c3482bda + languageName: node + linkType: hard + +"bowser@npm:^2.11.0": + version: 2.11.0 + resolution: "bowser@npm:2.11.0" + checksum: 29c3f01f22e703fa6644fc3b684307442df4240b6e10f6cfe1b61c6ca5721073189ca97cdeedb376081148c8518e33b1d818a57f781d70b0b70e1f31fb48814f + languageName: node + linkType: hard + +"brace-expansion@npm:^1.1.7": + version: 1.1.11 + resolution: "brace-expansion@npm:1.1.11" + dependencies: + balanced-match: ^1.0.0 + concat-map: 0.0.1 + checksum: faf34a7bb0c3fcf4b59c7808bc5d2a96a40988addf2e7e09dfbb67a2251800e0d14cd2bfc1aa79174f2f5095c54ff27f46fb1289fe2d77dac755b5eb3434cc07 + languageName: node + linkType: hard + +"brace-expansion@npm:^2.0.1": + version: 2.0.1 + resolution: "brace-expansion@npm:2.0.1" + dependencies: + balanced-match: ^1.0.0 + checksum: a61e7cd2e8a8505e9f0036b3b6108ba5e926b4b55089eeb5550cd04a471fe216c96d4fe7e4c7f995c728c554ae20ddfc4244cad10aef255e72b62930afd233d1 + languageName: node + linkType: hard + +"braces@npm:^3.0.3, braces@npm:~3.0.2": + version: 3.0.3 + resolution: "braces@npm:3.0.3" + dependencies: + fill-range: ^7.1.1 + checksum: b95aa0b3bd909f6cd1720ffcf031aeaf46154dd88b4da01f9a1d3f7ea866a79eba76a6d01cbc3c422b2ee5cdc39a4f02491058d5df0d7bf6e6a162a832df1f69 + languageName: node + linkType: hard + +"brorand@npm:^1.0.1, brorand@npm:^1.1.0": + version: 1.1.0 + resolution: "brorand@npm:1.1.0" + checksum: 8a05c9f3c4b46572dec6ef71012b1946db6cae8c7bb60ccd4b7dd5a84655db49fe043ecc6272e7ef1f69dc53d6730b9e2a3a03a8310509a3d797a618cbee52be + languageName: node + linkType: hard + +"brotli-wasm@npm:^3.0.0": + version: 3.0.1 + resolution: "brotli-wasm@npm:3.0.1" + checksum: 48191b27265de8ffc59c940f9efef3a931448b6a15c26a4e360192fc3f0968e073c11fe0926510d019c305cc1d9c6d65df4d3e5752648a91cb0bbcccff7a8460 + languageName: node + linkType: hard + +"browser-process-hrtime@npm:^1.0.0": + version: 1.0.0 + resolution: "browser-process-hrtime@npm:1.0.0" + checksum: e30f868cdb770b1201afb714ad1575dd86366b6e861900884665fb627109b3cc757c40067d3bfee1ff2a29c835257ea30725a8018a9afd02ac1c24b408b1e45f + languageName: node + linkType: hard + +"browserify-aes@npm:^1.0.4, browserify-aes@npm:^1.2.0": + version: 1.2.0 + resolution: "browserify-aes@npm:1.2.0" + dependencies: + buffer-xor: ^1.0.3 + cipher-base: ^1.0.0 + create-hash: ^1.1.0 + evp_bytestokey: ^1.0.3 + inherits: ^2.0.1 + safe-buffer: ^5.0.1 + checksum: 4a17c3eb55a2aa61c934c286f34921933086bf6d67f02d4adb09fcc6f2fc93977b47d9d884c25619144fccd47b3b3a399e1ad8b3ff5a346be47270114bcf7104 + languageName: node + linkType: hard + +"browserify-cipher@npm:^1.0.1": + version: 1.0.1 + resolution: "browserify-cipher@npm:1.0.1" + dependencies: + browserify-aes: ^1.0.4 + browserify-des: ^1.0.0 + evp_bytestokey: ^1.0.0 + checksum: 2d8500acf1ee535e6bebe808f7a20e4c3a9e2ed1a6885fff1facbfd201ac013ef030422bec65ca9ece8ffe82b03ca580421463f9c45af6c8415fd629f4118c13 + languageName: node + linkType: hard + +"browserify-des@npm:^1.0.0": + version: 1.0.2 + resolution: "browserify-des@npm:1.0.2" + dependencies: + cipher-base: ^1.0.1 + des.js: ^1.0.0 + inherits: ^2.0.1 + safe-buffer: ^5.1.2 + checksum: b15a3e358a1d78a3b62ddc06c845d02afde6fc826dab23f1b9c016e643e7b1fda41de628d2110b712f6a44fb10cbc1800bc6872a03ddd363fb50768e010395b7 + languageName: node + linkType: hard + +"browserify-rsa@npm:^4.0.0, browserify-rsa@npm:^4.1.0": + version: 4.1.1 + resolution: "browserify-rsa@npm:4.1.1" + dependencies: + bn.js: ^5.2.1 + randombytes: ^2.1.0 + safe-buffer: ^5.2.1 + checksum: 2628508646331791c29312bbf274c076a237437a17178ea9bdc75c577fb4164a0da0b137deaadf6ade623701332377c5c2ceb0ff6f991c744a576e790ec95852 + languageName: node + linkType: hard + +"browserify-sign@npm:^4.2.3": + version: 4.2.3 + resolution: "browserify-sign@npm:4.2.3" + dependencies: + bn.js: ^5.2.1 + browserify-rsa: ^4.1.0 + create-hash: ^1.2.0 + create-hmac: ^1.1.7 + elliptic: ^6.5.5 + hash-base: ~3.0 + inherits: ^2.0.4 + parse-asn1: ^5.1.7 + readable-stream: ^2.3.8 + safe-buffer: ^5.2.1 + checksum: 403a8061d229ae31266670345b4a7c00051266761d2c9bbeb68b1a9bcb05f68143b16110cf23a171a5d6716396a1f41296282b3e73eeec0a1871c77f0ff4ee6b + languageName: node + linkType: hard + +"browserify-zlib@npm:^0.2.0": + version: 0.2.0 + resolution: "browserify-zlib@npm:0.2.0" + dependencies: + pako: ~1.0.5 + checksum: 5cd9d6a665190fedb4a97dfbad8dabc8698d8a507298a03f42c734e96d58ca35d3c7d4085e283440bbca1cd1938cff85031728079bedb3345310c58ab1ec92d6 + languageName: node + linkType: hard + +"browserslist@npm:^4.0.0, browserslist@npm:^4.18.1, browserslist@npm:^4.21.10, browserslist@npm:^4.21.4, browserslist@npm:^4.23.3, browserslist@npm:^4.24.0": + version: 4.24.2 + resolution: "browserslist@npm:4.24.2" + dependencies: + caniuse-lite: ^1.0.30001669 + electron-to-chromium: ^1.5.41 + node-releases: ^2.0.18 + update-browserslist-db: ^1.1.1 + bin: + browserslist: cli.js + checksum: cf64085f12132d38638f38937a255edb82c7551b164a98577b055dd79719187a816112f7b97b9739e400c4954cd66479c0d7a843cb816e346f4795dc24fd5d97 + languageName: node + linkType: hard + +"bser@npm:2.1.1": + version: 2.1.1 + resolution: "bser@npm:2.1.1" + dependencies: + node-int64: ^0.4.0 + checksum: 9ba4dc58ce86300c862bffc3ae91f00b2a03b01ee07f3564beeeaf82aa243b8b03ba53f123b0b842c190d4399b94697970c8e7cf7b1ea44b61aa28c3526a4449 + languageName: node + linkType: hard + +"btoa-lite@npm:^1.0.0": + version: 1.0.0 + resolution: "btoa-lite@npm:1.0.0" + checksum: c2d61993b801f8e35a96f20692a45459c753d9baa29d86d1343e714f8d6bbe7069f1a20a5ae868488f3fb137d5bd0c560f6fbbc90b5a71050919d2d2c97c0475 + languageName: node + linkType: hard + +"btoa@npm:^1.2.1": + version: 1.2.1 + resolution: "btoa@npm:1.2.1" + bin: + btoa: bin/btoa.js + checksum: afbf004fb1b1d530e053ffa66ef5bd3878b101c59d808ac947fcff96810b4452abba2b54be687adadea2ba9efc7af48b04228742789bf824ef93f103767e690c + languageName: node + linkType: hard + +"buffer-crc32@npm:^1.0.0": + version: 1.0.0 + resolution: "buffer-crc32@npm:1.0.0" + checksum: bc114c0e02fe621249e0b5093c70e6f12d4c2b1d8ddaf3b1b7bbe3333466700100e6b1ebdc12c050d0db845bc582c4fce8c293da487cc483f97eea027c480b23 + languageName: node + linkType: hard + +"buffer-crc32@npm:~0.2.3": + version: 0.2.13 + resolution: "buffer-crc32@npm:0.2.13" + checksum: 06252347ae6daca3453b94e4b2f1d3754a3b146a111d81c68924c22d91889a40623264e95e67955b1cb4a68cbedf317abeabb5140a9766ed248973096db5ce1c + languageName: node + linkType: hard + +"buffer-equal-constant-time@npm:1.0.1": + version: 1.0.1 + resolution: "buffer-equal-constant-time@npm:1.0.1" + checksum: 80bb945f5d782a56f374b292770901065bad21420e34936ecbe949e57724b4a13874f735850dd1cc61f078773c4fb5493a41391e7bda40d1fa388d6bd80daaab + languageName: node + linkType: hard + +"buffer-from@npm:^1.0.0": + version: 1.1.2 + resolution: "buffer-from@npm:1.1.2" + checksum: 0448524a562b37d4d7ed9efd91685a5b77a50672c556ea254ac9a6d30e3403a517d8981f10e565db24e8339413b43c97ca2951f10e399c6125a0d8911f5679bb + languageName: node + linkType: hard + +"buffer-xor@npm:^1.0.3": + version: 1.0.3 + resolution: "buffer-xor@npm:1.0.3" + checksum: 10c520df29d62fa6e785e2800e586a20fc4f6dfad84bcdbd12e1e8a83856de1cb75c7ebd7abe6d036bbfab738a6cf18a3ae9c8e5a2e2eb3167ca7399ce65373a + languageName: node + linkType: hard + +"buffer@npm:5.6.0": + version: 5.6.0 + resolution: "buffer@npm:5.6.0" + dependencies: + base64-js: ^1.0.2 + ieee754: ^1.1.4 + checksum: d659494c5032dd39d03d2912e64179cc44c6340e7e9d1f68d3840e7ab4559989fbce92b4950174593c38d05268224235ba404f0878775cab2a616b6dcad9c23e + languageName: node + linkType: hard + +"buffer@npm:^4.3.0": + version: 4.9.2 + resolution: "buffer@npm:4.9.2" + dependencies: + base64-js: ^1.0.2 + ieee754: ^1.1.4 + isarray: ^1.0.0 + checksum: 8801bc1ba08539f3be70eee307a8b9db3d40f6afbfd3cf623ab7ef41dffff1d0a31de0addbe1e66e0ca5f7193eeb667bfb1ecad3647f8f1b0750de07c13295c3 + languageName: node + linkType: hard + +"buffer@npm:^5.5.0": + version: 5.7.1 + resolution: "buffer@npm:5.7.1" + dependencies: + base64-js: ^1.3.1 + ieee754: ^1.1.13 + checksum: e2cf8429e1c4c7b8cbd30834ac09bd61da46ce35f5c22a78e6c2f04497d6d25541b16881e30a019c6fd3154150650ccee27a308eff3e26229d788bbdeb08ab84 + languageName: node + linkType: hard + +"buffer@npm:^6.0.3": + version: 6.0.3 + resolution: "buffer@npm:6.0.3" + dependencies: + base64-js: ^1.3.1 + ieee754: ^1.2.1 + checksum: 5ad23293d9a731e4318e420025800b42bf0d264004c0286c8cc010af7a270c7a0f6522e84f54b9ad65cbd6db20b8badbfd8d2ebf4f80fa03dab093b89e68c3f9 + languageName: node + linkType: hard + +"buildcheck@npm:~0.0.6": + version: 0.0.6 + resolution: "buildcheck@npm:0.0.6" + checksum: ad61759dc98d62e931df2c9f54ccac7b522e600c6e13bdcfdc2c9a872a818648c87765ee209c850f022174da4dd7c6a450c00357c5391705d26b9c5807c2a076 + languageName: node + linkType: hard + +"builtin-status-codes@npm:^3.0.0": + version: 3.0.0 + resolution: "builtin-status-codes@npm:3.0.0" + checksum: 1119429cf4b0d57bf76b248ad6f529167d343156ebbcc4d4e4ad600484f6bc63002595cbb61b67ad03ce55cd1d3c4711c03bbf198bf24653b8392420482f3773 + languageName: node + linkType: hard + +"bundle-name@npm:^4.1.0": + version: 4.1.0 + resolution: "bundle-name@npm:4.1.0" + dependencies: + run-applescript: ^7.0.0 + checksum: 1d966c8d2dbf4d9d394e53b724ac756c2414c45c01340b37743621f59cc565a435024b394ddcb62b9b335d1c9a31f4640eb648c3fec7f97ee74dc0694c9beb6c + languageName: node + linkType: hard + +"busboy@npm:^1.0.0, busboy@npm:^1.6.0": + version: 1.6.0 + resolution: "busboy@npm:1.6.0" + dependencies: + streamsearch: ^1.1.0 + checksum: 32801e2c0164e12106bf236291a00795c3c4e4b709ae02132883fe8478ba2ae23743b11c5735a0aae8afe65ac4b6ca4568b91f0d9fed1fdbc32ede824a73746e + languageName: node + linkType: hard + +"byline@npm:^5.0.0": + version: 5.0.0 + resolution: "byline@npm:5.0.0" + checksum: 737ca83e8eda2976728dae62e68bc733aea095fab08db4c6f12d3cee3cf45b6f97dce45d1f6b6ff9c2c947736d10074985b4425b31ce04afa1985a4ef3d334a7 + languageName: node + linkType: hard + +"bytes@npm:3.0.0": + version: 3.0.0 + resolution: "bytes@npm:3.0.0" + checksum: a2b386dd8188849a5325f58eef69c3b73c51801c08ffc6963eddc9be244089ba32d19347caf6d145c86f315ae1b1fc7061a32b0c1aa6379e6a719090287ed101 + languageName: node + linkType: hard + +"bytes@npm:3.1.2": + version: 3.1.2 + resolution: "bytes@npm:3.1.2" + checksum: e4bcd3948d289c5127591fbedf10c0b639ccbf00243504e4e127374a15c3bc8eed0d28d4aaab08ff6f1cf2abc0cce6ba3085ed32f4f90e82a5683ce0014e1b6e + languageName: node + linkType: hard + +"cacache@npm:^16.1.0": + version: 16.1.3 + resolution: "cacache@npm:16.1.3" + dependencies: + "@npmcli/fs": ^2.1.0 + "@npmcli/move-file": ^2.0.0 + chownr: ^2.0.0 + fs-minipass: ^2.1.0 + glob: ^8.0.1 + infer-owner: ^1.0.4 + lru-cache: ^7.7.1 + minipass: ^3.1.6 + minipass-collect: ^1.0.2 + minipass-flush: ^1.0.5 + minipass-pipeline: ^1.2.4 + mkdirp: ^1.0.4 + p-map: ^4.0.0 + promise-inflight: ^1.0.1 + rimraf: ^3.0.2 + ssri: ^9.0.0 + tar: ^6.1.11 + unique-filename: ^2.0.0 + checksum: d91409e6e57d7d9a3a25e5dcc589c84e75b178ae8ea7de05cbf6b783f77a5fae938f6e8fda6f5257ed70000be27a681e1e44829251bfffe4c10216002f8f14e6 + languageName: node + linkType: hard + +"cacache@npm:^18.0.0": + version: 18.0.4 + resolution: "cacache@npm:18.0.4" + dependencies: + "@npmcli/fs": ^3.1.0 + fs-minipass: ^3.0.0 + glob: ^10.2.2 + lru-cache: ^10.0.1 + minipass: ^7.0.3 + minipass-collect: ^2.0.1 + minipass-flush: ^1.0.5 + minipass-pipeline: ^1.2.4 + p-map: ^4.0.0 + ssri: ^10.0.0 + tar: ^6.1.11 + unique-filename: ^3.0.0 + checksum: b7422c113b4ec750f33beeca0f426a0024c28e3172f332218f48f963e5b970647fa1ac05679fe5bb448832c51efea9fda4456b9a95c3a1af1105fe6c1833cde2 + languageName: node + linkType: hard + +"cache-content-type@npm:^1.0.0": + version: 1.0.1 + resolution: "cache-content-type@npm:1.0.1" + dependencies: + mime-types: ^2.1.18 + ylru: ^1.2.0 + checksum: 18db4d59452669ccbfd7146a1510a37eb28e9eccf18ca7a4eb603dff2edc5cccdca7498fc3042a2978f76f11151fba486eb9eb69d9afa3fb124957870aef4fd3 + languageName: node + linkType: hard + +"cacheable-lookup@npm:^6.0.0": + version: 6.1.0 + resolution: "cacheable-lookup@npm:6.1.0" + checksum: 4e37afe897219b1035335b0765106a2c970ffa930497b43cac5000b860f3b17f48d004187279fae97e2e4cbf6a3693709b6d64af65279c7d6c8453321d36d118 + languageName: node + linkType: hard + +"call-bind-apply-helpers@npm:^1.0.0, call-bind-apply-helpers@npm:^1.0.1": + version: 1.0.1 + resolution: "call-bind-apply-helpers@npm:1.0.1" + dependencies: + es-errors: ^1.3.0 + function-bind: ^1.1.2 + checksum: 3c55343261bb387c58a4762d15ad9d42053659a62681ec5eb50690c6b52a4a666302a01d557133ce6533e8bd04530ee3b209f23dd06c9577a1925556f8fcccdf + languageName: node + linkType: hard + +"call-bind@npm:^1.0.2, call-bind@npm:^1.0.5, call-bind@npm:^1.0.6, call-bind@npm:^1.0.7": + version: 1.0.7 + resolution: "call-bind@npm:1.0.7" + dependencies: + es-define-property: ^1.0.0 + es-errors: ^1.3.0 + function-bind: ^1.1.2 + get-intrinsic: ^1.2.4 + set-function-length: ^1.2.1 + checksum: 295c0c62b90dd6522e6db3b0ab1ce26bdf9e7404215bda13cfee25b626b5ff1a7761324d58d38b1ef1607fc65aca2d06e44d2e18d0dfc6c14b465b00d8660029 + languageName: node + linkType: hard + +"call-bind@npm:^1.0.8": + version: 1.0.8 + resolution: "call-bind@npm:1.0.8" + dependencies: + call-bind-apply-helpers: ^1.0.0 + es-define-property: ^1.0.0 + get-intrinsic: ^1.2.4 + set-function-length: ^1.2.2 + checksum: aa2899bce917a5392fd73bd32e71799c37c0b7ab454e0ed13af7f6727549091182aade8bbb7b55f304a5bc436d543241c14090fb8a3137e9875e23f444f4f5a9 + languageName: node + linkType: hard + +"call-bound@npm:^1.0.2, call-bound@npm:^1.0.3": + version: 1.0.3 + resolution: "call-bound@npm:1.0.3" + dependencies: + call-bind-apply-helpers: ^1.0.1 + get-intrinsic: ^1.2.6 + checksum: a93bbe0f2d0a2d6c144a4349ccd0593d5d0d5d9309b69101710644af8964286420062f2cc3114dca120b9bc8cc07507952d4b1b3ea7672e0d7f6f1675efedb32 + languageName: node + linkType: hard + +"call-me-maybe@npm:^1.0.1": + version: 1.0.2 + resolution: "call-me-maybe@npm:1.0.2" + checksum: 42ff2d0bed5b207e3f0122589162eaaa47ba618f79ad2382fe0ba14d9e49fbf901099a6227440acc5946f86a4953e8aa2d242b330b0a5de4d090bb18f8935cae + languageName: node + linkType: hard + +"callsites@npm:^3.0.0": + version: 3.1.0 + resolution: "callsites@npm:3.1.0" + checksum: 072d17b6abb459c2ba96598918b55868af677154bec7e73d222ef95a8fdb9bbf7dae96a8421085cdad8cd190d86653b5b6dc55a4484f2e5b2e27d5e0c3fc15b3 + languageName: node + linkType: hard + +"camel-case@npm:^4.1.2": + version: 4.1.2 + resolution: "camel-case@npm:4.1.2" + dependencies: + pascal-case: ^3.1.2 + tslib: ^2.0.3 + checksum: bcbd25cd253b3cbc69be3f535750137dbf2beb70f093bdc575f73f800acc8443d34fd52ab8f0a2413c34f1e8203139ffc88428d8863e4dfe530cfb257a379ad6 + languageName: node + linkType: hard + +"camelcase@npm:5.0.0": + version: 5.0.0 + resolution: "camelcase@npm:5.0.0" + checksum: 8bfe920e0472d79d34f0279da1391f155bcce7fc74c99b49dafae4f787396040a34f4023da837ab0b4372e63224b460f9524b495906863c38876faea9da53705 + languageName: node + linkType: hard + +"camelcase@npm:^5.3.1": + version: 5.3.1 + resolution: "camelcase@npm:5.3.1" + checksum: e6effce26b9404e3c0f301498184f243811c30dfe6d0b9051863bd8e4034d09c8c2923794f280d6827e5aa055f6c434115ff97864a16a963366fb35fd673024b + languageName: node + linkType: hard + +"camelcase@npm:^6.2.0": + version: 6.3.0 + resolution: "camelcase@npm:6.3.0" + checksum: 8c96818a9076434998511251dcb2761a94817ea17dbdc37f47ac080bd088fc62c7369429a19e2178b993497132c8cbcf5cc1f44ba963e76782ba469c0474938d + languageName: node + linkType: hard + +"caniuse-api@npm:^3.0.0": + version: 3.0.0 + resolution: "caniuse-api@npm:3.0.0" + dependencies: + browserslist: ^4.0.0 + caniuse-lite: ^1.0.0 + lodash.memoize: ^4.1.2 + lodash.uniq: ^4.5.0 + checksum: db2a229383b20d0529b6b589dde99d7b6cb56ba371366f58cbbfa2929c9f42c01f873e2b6ef641d4eda9f0b4118de77dbb2805814670bdad4234bf08e720b0b4 + languageName: node + linkType: hard + +"caniuse-lite@npm:^1.0.0, caniuse-lite@npm:^1.0.30001669": + version: 1.0.30001674 + resolution: "caniuse-lite@npm:1.0.30001674" + checksum: 05bbb4f9823b38ac157678be69c4ec4aa39fbbf6af3ffaffe89c8f5b118a1883d2e7c0065e9a71149061ab653bf332f2fa6256c195b16db85e49651b52f109df + languageName: node + linkType: hard + +"canvas@npm:^2.11.2": + version: 2.11.2 + resolution: "canvas@npm:2.11.2" + dependencies: + "@mapbox/node-pre-gyp": ^1.0.0 + nan: ^2.17.0 + node-gyp: latest + simple-get: ^3.0.3 + checksum: 61e554aef80022841dc836964534082ec21435928498032562089dfb7736215f039c7d99ee546b0cf10780232d9bf310950f8b4d489dc394e0fb6f6adfc97994 + languageName: node + linkType: hard + +"caseless@npm:~0.12.0": + version: 0.12.0 + resolution: "caseless@npm:0.12.0" + checksum: b43bd4c440aa1e8ee6baefee8063b4850fd0d7b378f6aabc796c9ec8cb26d27fb30b46885350777d9bd079c5256c0e1329ad0dc7c2817e0bb466810ebb353751 + languageName: node + linkType: hard + +"ccount@npm:^2.0.0": + version: 2.0.1 + resolution: "ccount@npm:2.0.1" + checksum: 48193dada54c9e260e0acf57fc16171a225305548f9ad20d5471e0f7a8c026aedd8747091dccb0d900cde7df4e4ddbd235df0d8de4a64c71b12f0d3303eeafd4 + languageName: node + linkType: hard + +"chalk@npm:2.4.2, chalk@npm:^2.3.2, chalk@npm:^2.4.2": + version: 2.4.2 + resolution: "chalk@npm:2.4.2" + dependencies: + ansi-styles: ^3.2.1 + escape-string-regexp: ^1.0.5 + supports-color: ^5.3.0 + checksum: ec3661d38fe77f681200f878edbd9448821924e0f93a9cefc0e26a33b145f1027a2084bf19967160d11e1f03bfe4eaffcabf5493b89098b2782c3fe0b03d80c2 + languageName: node + linkType: hard + +"chalk@npm:3.0.0, chalk@npm:^3.0.0": + version: 3.0.0 + resolution: "chalk@npm:3.0.0" + dependencies: + ansi-styles: ^4.1.0 + supports-color: ^7.1.0 + checksum: 8e3ddf3981c4da405ddbd7d9c8d91944ddf6e33d6837756979f7840a29272a69a5189ecae0ff84006750d6d1e92368d413335eab4db5476db6e6703a1d1e0505 + languageName: node + linkType: hard + +"chalk@npm:4.1.2, chalk@npm:^4.0.0, chalk@npm:^4.1.0, chalk@npm:^4.1.1, chalk@npm:^4.1.2": + version: 4.1.2 + resolution: "chalk@npm:4.1.2" + dependencies: + ansi-styles: ^4.1.0 + supports-color: ^7.1.0 + checksum: fe75c9d5c76a7a98d45495b91b2172fa3b7a09e0cc9370e5c8feb1c567b85c4288e2b3fded7cfdd7359ac28d6b3844feb8b82b8686842e93d23c827c417e83fc + languageName: node + linkType: hard + +"char-regex@npm:^1.0.2": + version: 1.0.2 + resolution: "char-regex@npm:1.0.2" + checksum: b563e4b6039b15213114626621e7a3d12f31008bdce20f9c741d69987f62aeaace7ec30f6018890ad77b2e9b4d95324c9f5acfca58a9441e3b1dcdd1e2525d17 + languageName: node + linkType: hard + +"character-entities-legacy@npm:^1.0.0": + version: 1.1.4 + resolution: "character-entities-legacy@npm:1.1.4" + checksum: fe03a82c154414da3a0c8ab3188e4237ec68006cbcd681cf23c7cfb9502a0e76cd30ab69a2e50857ca10d984d57de3b307680fff5328ccd427f400e559c3a811 + languageName: node + linkType: hard + +"character-entities@npm:^1.0.0": + version: 1.2.4 + resolution: "character-entities@npm:1.2.4" + checksum: e1545716571ead57beac008433c1ff69517cd8ca5b336889321c5b8ff4a99c29b65589a701e9c086cda8a5e346a67295e2684f6c7ea96819fe85cbf49bf8686d + languageName: node + linkType: hard + +"character-entities@npm:^2.0.0": + version: 2.0.2 + resolution: "character-entities@npm:2.0.2" + checksum: cf1643814023697f725e47328fcec17923b8f1799102a8a79c1514e894815651794a2bffd84bb1b3a4b124b050154e4529ed6e81f7c8068a734aecf07a6d3def + languageName: node + linkType: hard + +"character-reference-invalid@npm:^1.0.0": + version: 1.1.4 + resolution: "character-reference-invalid@npm:1.1.4" + checksum: 20274574c70e05e2f81135f3b93285536bc8ff70f37f0809b0d17791a832838f1e49938382899ed4cb444e5bbd4314ca1415231344ba29f4222ce2ccf24fea0b + languageName: node + linkType: hard + +"chardet@npm:^0.7.0": + version: 0.7.0 + resolution: "chardet@npm:0.7.0" + checksum: 6fd5da1f5d18ff5712c1e0aed41da200d7c51c28f11b36ee3c7b483f3696dabc08927fc6b227735eb8f0e1215c9a8abd8154637f3eff8cada5959df7f58b024d + languageName: node + linkType: hard + +"check-more-types@npm:2.24.0": + version: 2.24.0 + resolution: "check-more-types@npm:2.24.0" + checksum: b09080ec3404d20a4b0ead828994b2e5913236ef44ed3033a27062af0004cf7d2091fbde4b396bf13b7ce02fb018bc9960b48305e6ab2304cd82d73ed7a51ef4 + languageName: node + linkType: hard + +"check-types@npm:^11.2.3": + version: 11.2.3 + resolution: "check-types@npm:11.2.3" + checksum: f99ff09ae65e63cfcfa40a1275c0a70d8c43ffbf9ac35095f3bf030cc70361c92e075a9975a1144329e50b4fe4620be6bedb4568c18abc96071a3e23aed3ed8e + languageName: node + linkType: hard + +"chokidar@npm:^3.3.1, chokidar@npm:^3.4.2, chokidar@npm:^3.5.2, chokidar@npm:^3.5.3, chokidar@npm:^3.6.0": + version: 3.6.0 + resolution: "chokidar@npm:3.6.0" + dependencies: + anymatch: ~3.1.2 + braces: ~3.0.2 + fsevents: ~2.3.2 + glob-parent: ~5.1.2 + is-binary-path: ~2.1.0 + is-glob: ~4.0.1 + normalize-path: ~3.0.0 + readdirp: ~3.6.0 + dependenciesMeta: + fsevents: + optional: true + checksum: d2f29f499705dcd4f6f3bbed79a9ce2388cf530460122eed3b9c48efeab7a4e28739c6551fd15bec9245c6b9eeca7a32baa64694d64d9b6faeb74ddb8c4a413d + languageName: node + linkType: hard + +"chownr@npm:^1.1.1": + version: 1.1.4 + resolution: "chownr@npm:1.1.4" + checksum: 115648f8eb38bac5e41c3857f3e663f9c39ed6480d1349977c4d96c95a47266fcacc5a5aabf3cb6c481e22d72f41992827db47301851766c4fd77ac21a4f081d + languageName: node + linkType: hard + +"chownr@npm:^2.0.0": + version: 2.0.0 + resolution: "chownr@npm:2.0.0" + checksum: c57cf9dd0791e2f18a5ee9c1a299ae6e801ff58fee96dc8bfd0dcb4738a6ce58dd252a3605b1c93c6418fe4f9d5093b28ffbf4d66648cb2a9c67eaef9679be2f + languageName: node + linkType: hard + +"chrome-trace-event@npm:^1.0.2": + version: 1.0.4 + resolution: "chrome-trace-event@npm:1.0.4" + checksum: fcbbd9dd0cd5b48444319007cc0c15870fd8612cc0df320908aa9d5e8a244084d48571eb28bf3c58c19327d2c5838f354c2d89fac3956d8e992273437401ac19 + languageName: node + linkType: hard + +"ci-info@npm:^3.2.0, ci-info@npm:^3.7.0": + version: 3.9.0 + resolution: "ci-info@npm:3.9.0" + checksum: 6b19dc9b2966d1f8c2041a838217299718f15d6c4b63ae36e4674edd2bee48f780e94761286a56aa59eb305a85fbea4ddffb7630ec063e7ec7e7e5ad42549a87 + languageName: node + linkType: hard + +"cidr-regex@npm:^3.1.1": + version: 3.1.1 + resolution: "cidr-regex@npm:3.1.1" + dependencies: + ip-regex: ^4.1.0 + checksum: ef9306d086928ee82b3f841b3bdab6e072230f3623a57cf19e06174946f2cbfeb70ca52bc106b127db27a628b9e84fb39284f5851003898ffdb957fe330478ee + languageName: node + linkType: hard + +"cipher-base@npm:^1.0.0, cipher-base@npm:^1.0.1, cipher-base@npm:^1.0.3": + version: 1.0.4 + resolution: "cipher-base@npm:1.0.4" + dependencies: + inherits: ^2.0.1 + safe-buffer: ^5.0.1 + checksum: 47d3568dbc17431a339bad1fe7dff83ac0891be8206911ace3d3b818fc695f376df809bea406e759cdea07fff4b454fa25f1013e648851bec790c1d75763032e + languageName: node + linkType: hard + +"cjs-module-lexer@npm:^1.0.0": + version: 1.4.1 + resolution: "cjs-module-lexer@npm:1.4.1" + checksum: 2556807a99aec1f9daac60741af96cd613a707f343174ae7967da46402c91dced411bf830d209f2e93be4cecea46fc75cecf1f17c799d7d8a9e1dd6204bfcd22 + languageName: node + linkType: hard + +"classnames@npm:^2.2.6, classnames@npm:^2.3.1, classnames@npm:^2.5.1": + version: 2.5.1 + resolution: "classnames@npm:2.5.1" + checksum: da424a8a6f3a96a2e87d01a432ba19315503294ac7e025f9fece656db6b6a0f7b5003bb1fbb51cbb0d9624d964f1b9bb35a51c73af9b2434c7b292c42231c1e5 + languageName: node + linkType: hard + +"clean-css@npm:^5.2.2": + version: 5.3.3 + resolution: "clean-css@npm:5.3.3" + dependencies: + source-map: ~0.6.0 + checksum: 941987c14860dd7d346d5cf121a82fd2caf8344160b1565c5387f7ccca4bbcaf885bace961be37c4f4713ce2d8c488dd89483c1add47bb779790edbfdcc79cbc + languageName: node + linkType: hard + +"clean-git-ref@npm:^2.0.1": + version: 2.0.1 + resolution: "clean-git-ref@npm:2.0.1" + checksum: b25f585ed47040ea5d699d40a2bb84d1f35afd651f3fcc05fb077224358ffd3d7509fc9edbfc4570f1fc732c987e03ac7d8ec31524ac503ac35c53cb1f5e3bf9 + languageName: node + linkType: hard + +"clean-stack@npm:^2.0.0": + version: 2.2.0 + resolution: "clean-stack@npm:2.2.0" + checksum: 2ac8cd2b2f5ec986a3c743935ec85b07bc174d5421a5efc8017e1f146a1cf5f781ae962618f416352103b32c9cd7e203276e8c28241bbe946160cab16149fb68 + languageName: node + linkType: hard + +"cli-cursor@npm:^3.1.0": + version: 3.1.0 + resolution: "cli-cursor@npm:3.1.0" + dependencies: + restore-cursor: ^3.1.0 + checksum: 2692784c6cd2fd85cfdbd11f53aea73a463a6d64a77c3e098b2b4697a20443f430c220629e1ca3b195ea5ac4a97a74c2ee411f3807abf6df2b66211fec0c0a29 + languageName: node + linkType: hard + +"cli-spinners@npm:^2.5.0": + version: 2.9.2 + resolution: "cli-spinners@npm:2.9.2" + checksum: 1bd588289b28432e4676cb5d40505cfe3e53f2e4e10fbe05c8a710a154d6fe0ce7836844b00d6858f740f2ffe67cdc36e0fce9c7b6a8430e80e6388d5aa4956c + languageName: node + linkType: hard + +"cli-width@npm:^3.0.0": + version: 3.0.0 + resolution: "cli-width@npm:3.0.0" + checksum: 4c94af3769367a70e11ed69aa6095f1c600c0ff510f3921ab4045af961820d57c0233acfa8b6396037391f31b4c397e1f614d234294f979ff61430a6c166c3f6 + languageName: node + linkType: hard + +"client-only@npm:^0.0.1": + version: 0.0.1 + resolution: "client-only@npm:0.0.1" + checksum: 0c16bf660dadb90610553c1d8946a7fdfb81d624adea073b8440b7d795d5b5b08beb3c950c6a2cf16279365a3265158a236876d92bce16423c485c322d7dfaf8 + languageName: node + linkType: hard + +"cliui@npm:7.0.4, cliui@npm:^7.0.2": + version: 7.0.4 + resolution: "cliui@npm:7.0.4" + dependencies: + string-width: ^4.2.0 + strip-ansi: ^6.0.0 + wrap-ansi: ^7.0.0 + checksum: ce2e8f578a4813806788ac399b9e866297740eecd4ad1823c27fd344d78b22c5f8597d548adbcc46f0573e43e21e751f39446c5a5e804a12aace402b7a315d7f + languageName: node + linkType: hard + +"cliui@npm:^8.0.1": + version: 8.0.1 + resolution: "cliui@npm:8.0.1" + dependencies: + string-width: ^4.2.0 + strip-ansi: ^6.0.1 + wrap-ansi: ^7.0.0 + checksum: 79648b3b0045f2e285b76fb2e24e207c6db44323581e421c3acbd0e86454cba1b37aea976ab50195a49e7384b871e6dfb2247ad7dec53c02454ac6497394cb56 + languageName: node + linkType: hard + +"clone@npm:2.x": + version: 2.1.2 + resolution: "clone@npm:2.1.2" + checksum: aaf106e9bc025b21333e2f4c12da539b568db4925c0501a1bf4070836c9e848c892fa22c35548ce0d1132b08bbbfa17a00144fe58fccdab6fa900fec4250f67d + languageName: node + linkType: hard + +"clone@npm:^1.0.2": + version: 1.0.4 + resolution: "clone@npm:1.0.4" + checksum: d06418b7335897209e77bdd430d04f882189582e67bd1f75a04565f3f07f5b3f119a9d670c943b6697d0afb100f03b866b3b8a1f91d4d02d72c4ecf2bb64b5dd + languageName: node + linkType: hard + +"clsx@npm:^1.0.2, clsx@npm:^1.0.4, clsx@npm:^1.1.1, clsx@npm:^1.2.1": + version: 1.2.1 + resolution: "clsx@npm:1.2.1" + checksum: 30befca8019b2eb7dbad38cff6266cf543091dae2825c856a62a8ccf2c3ab9c2907c4d12b288b73101196767f66812365400a227581484a05f968b0307cfaf12 + languageName: node + linkType: hard + +"clsx@npm:^2.1.0, clsx@npm:^2.1.1": + version: 2.1.1 + resolution: "clsx@npm:2.1.1" + checksum: acd3e1ab9d8a433ecb3cc2f6a05ab95fe50b4a3cfc5ba47abb6cbf3754585fcb87b84e90c822a1f256c4198e3b41c7f6c391577ffc8678ad587fc0976b24fd57 + languageName: node + linkType: hard + +"cluster-key-slot@npm:1.1.2, cluster-key-slot@npm:^1.1.0, cluster-key-slot@npm:^1.1.2": + version: 1.1.2 + resolution: "cluster-key-slot@npm:1.1.2" + checksum: be0ad2d262502adc998597e83f9ded1b80f827f0452127c5a37b22dfca36bab8edf393f7b25bb626006fb9fb2436106939ede6d2d6ecf4229b96a47f27edd681 + languageName: node + linkType: hard + +"co@npm:^4.6.0": + version: 4.6.0 + resolution: "co@npm:4.6.0" + checksum: 5210d9223010eb95b29df06a91116f2cf7c8e0748a9013ed853b53f362ea0e822f1e5bb054fb3cefc645239a4cf966af1f6133a3b43f40d591f3b68ed6cf0510 + languageName: node + linkType: hard + +"code-block-writer@npm:^13.0.1": + version: 13.0.3 + resolution: "code-block-writer@npm:13.0.3" + checksum: 8e234f0ec2db9625d5efb9f05bdae79da6559bb4d9df94a6aa79a89a7b5ae25093b70d309fc5122840c9c07995cb14b4dd3f98a30f8878e3a3372e177df79454 + languageName: node + linkType: hard + +"codemirror-graphql@npm:^2.0.11, codemirror-graphql@npm:^2.0.13": + version: 2.2.0 + resolution: "codemirror-graphql@npm:2.2.0" + dependencies: + "@types/codemirror": ^0.0.90 + graphql-language-service: 5.3.0 + peerDependencies: + "@codemirror/language": 6.0.0 + codemirror: ^5.65.3 + graphql: ^15.5.0 || ^16.0.0 || ^17.0.0 + checksum: 74640931a744e50f3e8432e9f794da28f09911e80ed8db69ba261c283814639008b4ef97261e7c285d91b913124e3aca4e9c20ae613b48dc002559478884ca46 + languageName: node + linkType: hard + +"codemirror@npm:^5.65.3": + version: 5.65.18 + resolution: "codemirror@npm:5.65.18" + checksum: 950015d587e0790cceae157423bbc70bf1da8256050c8f6739fe967045b050e22c63b332de6388ed6d9526d253a834806ace76c875006fc8078e2c15c9f275a7 + languageName: node + linkType: hard + +"codemirror@npm:^6.0.0": + version: 6.0.1 + resolution: "codemirror@npm:6.0.1" + dependencies: + "@codemirror/autocomplete": ^6.0.0 + "@codemirror/commands": ^6.0.0 + "@codemirror/language": ^6.0.0 + "@codemirror/lint": ^6.0.0 + "@codemirror/search": ^6.0.0 + "@codemirror/state": ^6.0.0 + "@codemirror/view": ^6.0.0 + checksum: 1a78f7077ac5801bdbff162aa0c61bf2b974603c7e9a477198c3ce50c789af674a061d7c293c58b73807eda345c2b5228c38ad2aabb9319d552d5486f785cbef + languageName: node + linkType: hard + +"codeowners-utils@npm:^1.0.2": + version: 1.0.2 + resolution: "codeowners-utils@npm:1.0.2" + dependencies: + cross-spawn: ^7.0.2 + find-up: ^4.1.0 + ignore: ^5.1.4 + locate-path: ^5.0.0 + checksum: 1e1c1f271ad4d4b4b25f6d19fc61f177f010bfb95de9af26662bb09c2f4f5572c1f3c8e9552aff15924f1c97058812bd5b5064d1eea721cc70e17490dae3fb02 + languageName: node + linkType: hard + +"codeowners@npm:^5.1.1": + version: 5.1.1 + resolution: "codeowners@npm:5.1.1" + dependencies: + "@nodelib/fs.walk": ^1.2.6 + commander: ^6.2.1 + find-up: ^2.1.0 + ignore: ^3.3.10 + is-directory: ^0.3.1 + lodash.intersection: ^4.4.0 + lodash.maxby: ^4.6.0 + lodash.padend: ^4.6.1 + true-case-path: ^1.0.3 + bin: + codeowners: index.js + checksum: 9ffd67403e9d0defc5b9906dd986734c2c2a02cad758ab95b722558a1817f47925dd2bac58327b860edd66806bf5cd72a24b1f377fe6215cf0576fee3bfbac48 + languageName: node + linkType: hard + +"collect-v8-coverage@npm:^1.0.0": + version: 1.0.2 + resolution: "collect-v8-coverage@npm:1.0.2" + checksum: c10f41c39ab84629d16f9f6137bc8a63d332244383fc368caf2d2052b5e04c20cd1fd70f66fcf4e2422b84c8226598b776d39d5f2d2a51867cc1ed5d1982b4da + languageName: node + linkType: hard + +"color-convert@npm:^1.9.0, color-convert@npm:^1.9.3": + version: 1.9.3 + resolution: "color-convert@npm:1.9.3" + dependencies: + color-name: 1.1.3 + checksum: fd7a64a17cde98fb923b1dd05c5f2e6f7aefda1b60d67e8d449f9328b4e53b228a428fd38bfeaeb2db2ff6b6503a776a996150b80cdf224062af08a5c8a3a203 + languageName: node + linkType: hard + +"color-convert@npm:^2.0.1": + version: 2.0.1 + resolution: "color-convert@npm:2.0.1" + dependencies: + color-name: ~1.1.4 + checksum: 79e6bdb9fd479a205c71d89574fccfb22bd9053bd98c6c4d870d65c132e5e904e6034978e55b43d69fcaa7433af2016ee203ce76eeba9cfa554b373e7f7db336 + languageName: node + linkType: hard + +"color-name@npm:1.1.3": + version: 1.1.3 + resolution: "color-name@npm:1.1.3" + checksum: 09c5d3e33d2105850153b14466501f2bfb30324a2f76568a408763a3b7433b0e50e5b4ab1947868e65cb101bb7cb75029553f2c333b6d4b8138a73fcc133d69d + languageName: node + linkType: hard + +"color-name@npm:^1.0.0, color-name@npm:^1.1.4, color-name@npm:~1.1.4": + version: 1.1.4 + resolution: "color-name@npm:1.1.4" + checksum: b0445859521eb4021cd0fb0cc1a75cecf67fceecae89b63f62b201cca8d345baf8b952c966862a9d9a2632987d4f6581f0ec8d957dfacece86f0a7919316f610 + languageName: node + linkType: hard + +"color-string@npm:^1.6.0": + version: 1.9.1 + resolution: "color-string@npm:1.9.1" + dependencies: + color-name: ^1.0.0 + simple-swizzle: ^0.2.2 + checksum: c13fe7cff7885f603f49105827d621ce87f4571d78ba28ef4a3f1a104304748f620615e6bf065ecd2145d0d9dad83a3553f52bb25ede7239d18e9f81622f1cc5 + languageName: node + linkType: hard + +"color-support@npm:^1.1.2, color-support@npm:^1.1.3": + version: 1.1.3 + resolution: "color-support@npm:1.1.3" + bin: + color-support: bin.js + checksum: 9b7356817670b9a13a26ca5af1c21615463b500783b739b7634a0c2047c16cef4b2865d7576875c31c3cddf9dd621fa19285e628f20198b233a5cfdda6d0793b + languageName: node + linkType: hard + +"color@npm:^3.1.3": + version: 3.2.1 + resolution: "color@npm:3.2.1" + dependencies: + color-convert: ^1.9.3 + color-string: ^1.6.0 + checksum: f81220e8b774d35865c2561be921f5652117638dcda7ca4029262046e37fc2444ac7bbfdd110cf1fd9c074a4ee5eda8f85944ffbdda26186b602dd9bb05f6400 + languageName: node + linkType: hard + +"colord@npm:^2.9.1": + version: 2.9.3 + resolution: "colord@npm:2.9.3" + checksum: 95d909bfbcfd8d5605cbb5af56f2d1ce2b323990258fd7c0d2eb0e6d3bb177254d7fb8213758db56bb4ede708964f78c6b992b326615f81a18a6aaf11d64c650 + languageName: node + linkType: hard + +"colorette@npm:2.0.19": + version: 2.0.19 + resolution: "colorette@npm:2.0.19" + checksum: 888cf5493f781e5fcf54ce4d49e9d7d698f96ea2b2ef67906834bb319a392c667f9ec69f4a10e268d2946d13a9503d2d19b3abaaaf174e3451bfe91fb9d82427 + languageName: node + linkType: hard + +"colorette@npm:^2.0.10": + version: 2.0.20 + resolution: "colorette@npm:2.0.20" + checksum: 0c016fea2b91b733eb9f4bcdb580018f52c0bc0979443dad930e5037a968237ac53d9beb98e218d2e9235834f8eebce7f8e080422d6194e957454255bde71d3d + languageName: node + linkType: hard + +"colorspace@npm:1.1.x": + version: 1.1.4 + resolution: "colorspace@npm:1.1.4" + dependencies: + color: ^3.1.3 + text-hex: 1.0.x + checksum: bb3934ef3c417e961e6d03d7ca60ea6e175947029bfadfcdb65109b01881a1c0ecf9c2b0b59abcd0ee4a0d7c1eae93beed01b0e65848936472270a0b341ebce8 + languageName: node + linkType: hard + +"combined-stream@npm:^1.0.6, combined-stream@npm:^1.0.8, combined-stream@npm:~1.0.6": + version: 1.0.8 + resolution: "combined-stream@npm:1.0.8" + dependencies: + delayed-stream: ~1.0.0 + checksum: 49fa4aeb4916567e33ea81d088f6584749fc90c7abec76fd516bf1c5aa5c79f3584b5ba3de6b86d26ddd64bae5329c4c7479343250cfe71c75bb366eae53bb7c + languageName: node + linkType: hard + +"comma-separated-tokens@npm:^1.0.0": + version: 1.0.8 + resolution: "comma-separated-tokens@npm:1.0.8" + checksum: 0adcb07174fa4d08cf0f5c8e3aec40a36b5ff0c2c720e5e23f50fe02e6789d1d00a67036c80e0c1e1539f41d3e7f0101b074039dd833b4e4a59031b659d6ca0d + languageName: node + linkType: hard + +"comma-separated-tokens@npm:^2.0.0": + version: 2.0.3 + resolution: "comma-separated-tokens@npm:2.0.3" + checksum: e3bf9e0332a5c45f49b90e79bcdb4a7a85f28d6a6f0876a94f1bb9b2bfbdbbb9292aac50e1e742d8c0db1e62a0229a106f57917e2d067fca951d81737651700d + languageName: node + linkType: hard + +"command-exists@npm:^1.2.9": + version: 1.2.9 + resolution: "command-exists@npm:1.2.9" + checksum: 729ae3d88a2058c93c58840f30341b7f82688a573019535d198b57a4d8cb0135ced0ad7f52b591e5b28a90feb2c675080ce916e56254a0f7c15cb2395277cac3 + languageName: node + linkType: hard + +"commander@npm:7, commander@npm:^7.2.0": + version: 7.2.0 + resolution: "commander@npm:7.2.0" + checksum: 53501cbeee61d5157546c0bef0fedb6cdfc763a882136284bed9a07225f09a14b82d2a84e7637edfd1a679fb35ed9502fd58ef1d091e6287f60d790147f68ddc + languageName: node + linkType: hard + +"commander@npm:8.3.0, commander@npm:^8.3.0": + version: 8.3.0 + resolution: "commander@npm:8.3.0" + checksum: 0f82321821fc27b83bd409510bb9deeebcfa799ff0bf5d102128b500b7af22872c0c92cb6a0ebc5a4cf19c6b550fba9cedfa7329d18c6442a625f851377bacf0 + languageName: node + linkType: hard + +"commander@npm:^10.0.0": + version: 10.0.1 + resolution: "commander@npm:10.0.1" + checksum: 436901d64a818295803c1996cd856621a74f30b9f9e28a588e726b2b1670665bccd7c1a77007ebf328729f0139838a88a19265858a0fa7a8728c4656796db948 + languageName: node + linkType: hard + +"commander@npm:^12.0.0": + version: 12.1.0 + resolution: "commander@npm:12.1.0" + checksum: 68e9818b00fc1ed9cdab9eb16905551c2b768a317ae69a5e3c43924c2b20ac9bb65b27e1cab36aeda7b6496376d4da908996ba2c0b5d79463e0fb1e77935d514 + languageName: node + linkType: hard + +"commander@npm:^2.19.0, commander@npm:^2.20.0": + version: 2.20.3 + resolution: "commander@npm:2.20.3" + checksum: ab8c07884e42c3a8dbc5dd9592c606176c7eb5c1ca5ff274bcf907039b2c41de3626f684ea75ccf4d361ba004bbaff1f577d5384c155f3871e456bdf27becf9e + languageName: node + linkType: hard + +"commander@npm:^4.0.0, commander@npm:^4.1.1": + version: 4.1.1 + resolution: "commander@npm:4.1.1" + checksum: d7b9913ff92cae20cb577a4ac6fcc121bd6223319e54a40f51a14740a681ad5c574fd29a57da478a5f234a6fa6c52cbf0b7c641353e03c648b1ae85ba670b977 + languageName: node + linkType: hard + +"commander@npm:^5.1.0": + version: 5.1.0 + resolution: "commander@npm:5.1.0" + checksum: 0b7fec1712fbcc6230fcb161d8d73b4730fa91a21dc089515489402ad78810547683f058e2a9835929c212fead1d6a6ade70db28bbb03edbc2829a9ab7d69447 + languageName: node + linkType: hard + +"commander@npm:^6.2.1": + version: 6.2.1 + resolution: "commander@npm:6.2.1" + checksum: d7090410c0de6bc5c67d3ca41c41760d6d268f3c799e530aafb73b7437d1826bbf0d2a3edac33f8b57cc9887b4a986dce307fa5557e109be40eadb7c43b21742 + languageName: node + linkType: hard + +"commander@npm:^9.1.0": + version: 9.5.0 + resolution: "commander@npm:9.5.0" + checksum: c7a3e27aa59e913b54a1bafd366b88650bc41d6651f0cbe258d4ff09d43d6a7394232a4dadd0bf518b3e696fdf595db1028a0d82c785b88bd61f8a440cecfade + languageName: node + linkType: hard + +"common-tags@npm:^1.8.0": + version: 1.8.2 + resolution: "common-tags@npm:1.8.2" + checksum: 767a6255a84bbc47df49a60ab583053bb29a7d9687066a18500a516188a062c4e4cd52de341f22de0b07062e699b1b8fe3cfa1cb55b241cb9301aeb4f45b4dff + languageName: node + linkType: hard + +"commondir@npm:^1.0.1": + version: 1.0.1 + resolution: "commondir@npm:1.0.1" + checksum: 59715f2fc456a73f68826285718503340b9f0dd89bfffc42749906c5cf3d4277ef11ef1cca0350d0e79204f00f1f6d83851ececc9095dc88512a697ac0b9bdcb + languageName: node + linkType: hard + +"compare-versions@npm:4.1.4": + version: 4.1.4 + resolution: "compare-versions@npm:4.1.4" + checksum: c1617544b79c2f36a1d543c50efd0da1a994040294c8923218080bc0df46da83ca414e3378282e93cab073744995124946417d130d8987e8efb5d1a73c0c4ba6 + languageName: node + linkType: hard + +"component-emitter@npm:^1.3.0": + version: 1.3.1 + resolution: "component-emitter@npm:1.3.1" + checksum: 94550aa462c7bd5a61c1bc480e28554aa306066930152d1b1844a0dd3845d4e5db7e261ddec62ae184913b3e59b55a2ad84093b9d3596a8f17c341514d6c483d + languageName: node + linkType: hard + +"compress-commons@npm:^6.0.2": + version: 6.0.2 + resolution: "compress-commons@npm:6.0.2" + dependencies: + crc-32: ^1.2.0 + crc32-stream: ^6.0.0 + is-stream: ^2.0.1 + normalize-path: ^3.0.0 + readable-stream: ^4.0.0 + checksum: 37d79a54f91344ecde352588e0a128f28ce619b085acd4f887defd76978a0640e3454a42c7dcadb0191bb3f971724ae4b1f9d6ef9620034aa0427382099ac946 + languageName: node + linkType: hard + +"compressible@npm:~2.0.16": + version: 2.0.18 + resolution: "compressible@npm:2.0.18" + dependencies: + mime-db: ">= 1.43.0 < 2" + checksum: 58321a85b375d39230405654721353f709d0c1442129e9a17081771b816302a012471a9b8f4864c7dbe02eef7f2aaac3c614795197092262e94b409c9be108f0 + languageName: node + linkType: hard + +"compression@npm:^1.7.4": + version: 1.7.4 + resolution: "compression@npm:1.7.4" + dependencies: + accepts: ~1.3.5 + bytes: 3.0.0 + compressible: ~2.0.16 + debug: 2.6.9 + on-headers: ~1.0.2 + safe-buffer: 5.1.2 + vary: ~1.1.2 + checksum: 35c0f2eb1f28418978615dc1bc02075b34b1568f7f56c62d60f4214d4b7cc00d0f6d282b5f8a954f59872396bd770b6b15ffd8aa94c67d4bce9b8887b906999b + languageName: node + linkType: hard + +"compute-gcd@npm:^1.2.1": + version: 1.2.1 + resolution: "compute-gcd@npm:1.2.1" + dependencies: + validate.io-array: ^1.0.3 + validate.io-function: ^1.0.2 + validate.io-integer-array: ^1.0.0 + checksum: 51cf33b75f7c8db5142fcb99a9d84a40260993fed8e02a7ab443834186c3ab99b3fd20b30ad9075a6a9d959d69df6da74dd3be8a59c78d9f2fe780ebda8242e1 + languageName: node + linkType: hard + +"compute-lcm@npm:^1.1.2": + version: 1.1.2 + resolution: "compute-lcm@npm:1.1.2" + dependencies: + compute-gcd: ^1.2.1 + validate.io-array: ^1.0.3 + validate.io-function: ^1.0.2 + validate.io-integer-array: ^1.0.0 + checksum: d499ab57dcb48e8d0fd233b99844a06d1cc56115602c920c586e998ebba60293731f5b6976e8a1e83ae6cbfe86716f62d9432e8d94913fed8bd8352f447dc917 + languageName: node + linkType: hard + +"concat-map@npm:0.0.1": + version: 0.0.1 + resolution: "concat-map@npm:0.0.1" + checksum: 902a9f5d8967a3e2faf138d5cb784b9979bad2e6db5357c5b21c568df4ebe62bcb15108af1b2253744844eb964fc023fbd9afbbbb6ddd0bcc204c6fb5b7bf3af + languageName: node + linkType: hard + +"concat-stream@npm:^1.5.2": + version: 1.6.2 + resolution: "concat-stream@npm:1.6.2" + dependencies: + buffer-from: ^1.0.0 + inherits: ^2.0.3 + readable-stream: ^2.2.2 + typedarray: ^0.0.6 + checksum: 1ef77032cb4459dcd5187bd710d6fc962b067b64ec6a505810de3d2b8cc0605638551b42f8ec91edf6fcd26141b32ef19ad749239b58fae3aba99187adc32285 + languageName: node + linkType: hard + +"concat-stream@npm:^2.0.0": + version: 2.0.0 + resolution: "concat-stream@npm:2.0.0" + dependencies: + buffer-from: ^1.0.0 + inherits: ^2.0.3 + readable-stream: ^3.0.2 + typedarray: ^0.0.6 + checksum: d7f75d48f0ecd356c1545d87e22f57b488172811b1181d96021c7c4b14ab8855f5313280263dca44bb06e5222f274d047da3e290a38841ef87b59719bde967c7 + languageName: node + linkType: hard + +"concat-with-sourcemaps@npm:^1.1.0": + version: 1.1.0 + resolution: "concat-with-sourcemaps@npm:1.1.0" + dependencies: + source-map: ^0.6.1 + checksum: 57faa6f4a6f38a1846a58f96b2745ec8435755e0021f069e89085c651d091b78d9bc20807ea76c38c85021acca80dc2fa4cedda666aade169b602604215d25b9 + languageName: node + linkType: hard + +"concurrently@npm:6.5.1": + version: 6.5.1 + resolution: "concurrently@npm:6.5.1" + dependencies: + chalk: ^4.1.0 + date-fns: ^2.16.1 + lodash: ^4.17.21 + rxjs: ^6.6.3 + spawn-command: ^0.0.2-1 + supports-color: ^8.1.0 + tree-kill: ^1.2.2 + yargs: ^16.2.0 + bin: + concurrently: bin/concurrently.js + checksum: 3f4d89b464fa5c9fb6f9489b46594c30ba54eff6ff10ab3cb5f30f64b74c83be664623a0f0cc731a3cb3f057a1f4a3292f7d3470c012a292c44aca31f214a3fa + languageName: node + linkType: hard + +"concurrently@npm:^8.2.2": + version: 8.2.2 + resolution: "concurrently@npm:8.2.2" + dependencies: + chalk: ^4.1.2 + date-fns: ^2.30.0 + lodash: ^4.17.21 + rxjs: ^7.8.1 + shell-quote: ^1.8.1 + spawn-command: 0.0.2 + supports-color: ^8.1.1 + tree-kill: ^1.2.2 + yargs: ^17.7.2 + bin: + conc: dist/bin/concurrently.js + concurrently: dist/bin/concurrently.js + checksum: 8ac774df06869773438f1bf91025180c52d5b53139bc86cf47659136c0d97461d0579c515d848d1e945d4e3e0cafe646b2ea18af8d74259b46abddcfe39b2c6c + languageName: node + linkType: hard + +"connect-history-api-fallback@npm:^2.0.0": + version: 2.0.0 + resolution: "connect-history-api-fallback@npm:2.0.0" + checksum: dc5368690f4a5c413889792f8df70d5941ca9da44523cde3f87af0745faee5ee16afb8195434550f0504726642734f2683d6c07f8b460f828a12c45fbd4c9a68 + languageName: node + linkType: hard + +"connect-session-knex@npm:^4.0.0": + version: 4.0.2 + resolution: "connect-session-knex@npm:4.0.2" + dependencies: + bluebird: ^3.7.2 + knex: 3 + checksum: da4e097aee7737a2c087ec8f8a5e43962132d7968b009fbf2e65bf10a4aa07efa1305f6e5e2025256d5b872d7118b7d53e970beec07f4901e6216942132062f8 + languageName: node + linkType: hard + +"connect@npm:^3.7.0": + version: 3.7.0 + resolution: "connect@npm:3.7.0" + dependencies: + debug: 2.6.9 + finalhandler: 1.1.2 + parseurl: ~1.3.3 + utils-merge: 1.0.1 + checksum: 96e1c4effcf219b065c7823e57351c94366d2e2a6952fa95e8212bffb35c86f1d5a3f9f6c5796d4cd3a5fdda628368b1c3cc44bf19c66cfd68fe9f9cab9177e2 + languageName: node + linkType: hard + +"consola@npm:^2.15.0": + version: 2.15.3 + resolution: "consola@npm:2.15.3" + checksum: 8ef7a09b703ec67ac5c389a372a33b6dc97eda6c9876443a60d76a3076eea0259e7f67a4e54fd5a52f97df73690822d090cf8b7e102b5761348afef7c6d03e28 + languageName: node + linkType: hard + +"console-browserify@npm:^1.1.0": + version: 1.2.0 + resolution: "console-browserify@npm:1.2.0" + checksum: 226591eeff8ed68e451dffb924c1fb750c654d54b9059b3b261d360f369d1f8f70650adecf2c7136656236a4bfeb55c39281b5d8a55d792ebbb99efd3d848d52 + languageName: node + linkType: hard + +"console-control-strings@npm:^1.0.0, console-control-strings@npm:^1.1.0": + version: 1.1.0 + resolution: "console-control-strings@npm:1.1.0" + checksum: 8755d76787f94e6cf79ce4666f0c5519906d7f5b02d4b884cf41e11dcd759ed69c57da0670afd9236d229a46e0f9cf519db0cd829c6dca820bb5a5c3def584ed + languageName: node + linkType: hard + +"console.table@npm:0.10.0": + version: 0.10.0 + resolution: "console.table@npm:0.10.0" + dependencies: + easy-table: 1.1.0 + checksum: 4c1460e3105a5f7df5bfa372844104a20e487fc0fccc5821c169a39def3249759554fc132621074ad6695664a1a8d558dd385c0e7f290acb2eaca51466474bb9 + languageName: node + linkType: hard + +"constants-browserify@npm:^1.0.0": + version: 1.0.0 + resolution: "constants-browserify@npm:1.0.0" + checksum: f7ac8c6d0b6e4e0c77340a1d47a3574e25abd580bfd99ad707b26ff7618596cf1a5e5ce9caf44715e9e01d4a5d12cb3b4edaf1176f34c19adb2874815a56e64f + languageName: node + linkType: hard + +"content-disposition@npm:0.5.4, content-disposition@npm:~0.5.2": + version: 0.5.4 + resolution: "content-disposition@npm:0.5.4" + dependencies: + safe-buffer: 5.2.1 + checksum: afb9d545e296a5171d7574fcad634b2fdf698875f4006a9dd04a3e1333880c5c0c98d47b560d01216fb6505a54a2ba6a843ee3a02ec86d7e911e8315255f56c3 + languageName: node + linkType: hard + +"content-type@npm:^1.0.4, content-type@npm:^1.0.5, content-type@npm:~1.0.4, content-type@npm:~1.0.5": + version: 1.0.5 + resolution: "content-type@npm:1.0.5" + checksum: 566271e0a251642254cde0f845f9dd4f9856e52d988f4eb0d0dcffbb7a1f8ec98de7a5215fc628f3bce30fe2fb6fd2bc064b562d721658c59b544e2d34ea2766 + languageName: node + linkType: hard + +"convert-source-map@npm:^1.5.0": + version: 1.9.0 + resolution: "convert-source-map@npm:1.9.0" + checksum: dc55a1f28ddd0e9485ef13565f8f756b342f9a46c4ae18b843fe3c30c675d058d6a4823eff86d472f187b176f0adf51ea7b69ea38be34be4a63cbbf91b0593c8 + languageName: node + linkType: hard + +"convert-source-map@npm:^2.0.0": + version: 2.0.0 + resolution: "convert-source-map@npm:2.0.0" + checksum: 63ae9933be5a2b8d4509daca5124e20c14d023c820258e484e32dc324d34c2754e71297c94a05784064ad27615037ef677e3f0c00469fb55f409d2bb21261035 + languageName: node + linkType: hard + +"cookie-parser@npm:^1.4.5": + version: 1.4.7 + resolution: "cookie-parser@npm:1.4.7" + dependencies: + cookie: 0.7.2 + cookie-signature: 1.0.6 + checksum: 243fa13f217e793d20a57675e6552beea08c5989fcc68495d543997a31646875335e0e82d687b42dcfd466df57891d22bae7f5ba6ab33b7705ed2dd6eb989105 + languageName: node + linkType: hard + +"cookie-signature@npm:1.0.6": + version: 1.0.6 + resolution: "cookie-signature@npm:1.0.6" + checksum: f4e1b0a98a27a0e6e66fd7ea4e4e9d8e038f624058371bf4499cfcd8f3980be9a121486995202ba3fca74fbed93a407d6d54d43a43f96fd28d0bd7a06761591a + languageName: node + linkType: hard + +"cookie-signature@npm:1.0.7": + version: 1.0.7 + resolution: "cookie-signature@npm:1.0.7" + checksum: 1a62808cd30d15fb43b70e19829b64d04b0802d8ef00275b57d152de4ae6a3208ca05c197b6668d104c4d9de389e53ccc2d3bc6bcaaffd9602461417d8c40710 + languageName: node + linkType: hard + +"cookie@npm:0.7.1": + version: 0.7.1 + resolution: "cookie@npm:0.7.1" + checksum: cec5e425549b3650eb5c3498a9ba3cde0b9cd419e3b36e4b92739d30b4d89e0b678b98c1ddc209ce7cf958cd3215671fd6ac47aec21f10c2a0cc68abd399d8a7 + languageName: node + linkType: hard + +"cookie@npm:0.7.2, cookie@npm:^0.7.0, cookie@npm:~0.7.2": + version: 0.7.2 + resolution: "cookie@npm:0.7.2" + checksum: 9bf8555e33530affd571ea37b615ccad9b9a34febbf2c950c86787088eb00a8973690833b0f8ebd6b69b753c62669ea60cec89178c1fb007bf0749abed74f93e + languageName: node + linkType: hard + +"cookie@npm:^0.4.2": + version: 0.4.2 + resolution: "cookie@npm:0.4.2" + checksum: a00833c998bedf8e787b4c342defe5fa419abd96b32f4464f718b91022586b8f1bafbddd499288e75c037642493c83083da426c6a9080d309e3bd90fd11baa9b + languageName: node + linkType: hard + +"cookie@npm:^0.6.0": + version: 0.6.0 + resolution: "cookie@npm:0.6.0" + checksum: f56a7d32a07db5458e79c726b77e3c2eff655c36792f2b6c58d351fb5f61531e5b1ab7f46987150136e366c65213cbe31729e02a3eaed630c3bf7334635fb410 + languageName: node + linkType: hard + +"cookiejar@npm:^2.1.4": + version: 2.1.4 + resolution: "cookiejar@npm:2.1.4" + checksum: c4442111963077dc0e5672359956d6556a195d31cbb35b528356ce5f184922b99ac48245ac05ed86cf993f7df157c56da10ab3efdadfed79778a0d9b1b092d5b + languageName: node + linkType: hard + +"cookies@npm:~0.9.0": + version: 0.9.1 + resolution: "cookies@npm:0.9.1" + dependencies: + depd: ~2.0.0 + keygrip: ~1.1.0 + checksum: 213e4d14847b582fbd8a003203d3621a4b9fa792a315c37954e89332d38fac5bcc34ba92ef316ad6d5fe28f0187aaa115927fbbe2080744ad1707a93b4313247 + languageName: node + linkType: hard + +"copy-to-clipboard@npm:^3.2.0, copy-to-clipboard@npm:^3.3.1": + version: 3.3.3 + resolution: "copy-to-clipboard@npm:3.3.3" + dependencies: + toggle-selection: ^1.0.6 + checksum: e0a325e39b7615108e6c1c8ac110ae7b829cdc4ee3278b1df6a0e4228c490442cc86444cd643e2da344fbc424b3aab8909e2fec82f8bc75e7e5b190b7c24eecf + languageName: node + linkType: hard + +"core-js-compat@npm:^3.38.0, core-js-compat@npm:^3.38.1": + version: 3.38.1 + resolution: "core-js-compat@npm:3.38.1" + dependencies: + browserslist: ^4.23.3 + checksum: a0a5673bcd59f588f0cd0b59cdacd4712b82909738a87406d334dd412eb3d273ae72b275bdd8e8fef63fca9ef12b42ed651be139c7c44c8a1acb423c8906992e + languageName: node + linkType: hard + +"core-js-pure@npm:^3.23.3": + version: 3.38.1 + resolution: "core-js-pure@npm:3.38.1" + checksum: 95ca2e75df371571b0d41cba81e1f6335a2ba1f080e80f8edfa124ad3041880fe72e10f2144527a700a3d993dbf9f7cada3e04a927a66604bc49d0c4951567fb + languageName: node + linkType: hard + +"core-js-pure@npm:^3.30.2": + version: 3.39.0 + resolution: "core-js-pure@npm:3.39.0" + checksum: cdcb1eec4eb9308fcf5cfe18a95322c388b05c11e66b5b0ac296a08f8f2106b458ecfe8aca0155d62ed2c5e150485b68073937e7b0a563fbc287563c4475a7c1 + languageName: node + linkType: hard + +"core-js@npm:^2.4.0, core-js@npm:^2.5.0": + version: 2.6.12 + resolution: "core-js@npm:2.6.12" + checksum: 44fa9934a85f8c78d61e0c8b7b22436330471ffe59ec5076fe7f324d6e8cf7f824b14b1c81ca73608b13bdb0fef035bd820989bf059767ad6fa13123bb8bd016 + languageName: node + linkType: hard + +"core-js@npm:^3.6.5": + version: 3.39.0 + resolution: "core-js@npm:3.39.0" + checksum: 7a3670e9a2a89e0a049daa288d742d09f6e16d27a8945c5e2ef6fc45dc57e5c4bc5db589da05947486f54ae978d14cf27bd3fb1db0b9907000a611e8af37355b + languageName: node + linkType: hard + +"core-util-is@npm:1.0.2": + version: 1.0.2 + resolution: "core-util-is@npm:1.0.2" + checksum: 7a4c925b497a2c91421e25bf76d6d8190f0b2359a9200dbeed136e63b2931d6294d3b1893eda378883ed363cd950f44a12a401384c609839ea616befb7927dab + languageName: node + linkType: hard + +"core-util-is@npm:~1.0.0": + version: 1.0.3 + resolution: "core-util-is@npm:1.0.3" + checksum: 9de8597363a8e9b9952491ebe18167e3b36e7707569eed0ebf14f8bba773611376466ae34575bca8cfe3c767890c859c74056084738f09d4e4a6f902b2ad7d99 + languageName: node + linkType: hard + +"cors-gate@npm:^1.1.3": + version: 1.1.3 + resolution: "cors-gate@npm:1.1.3" + checksum: 8480e24ccc77a0a150c3cb555ae07fc4e2fa0034a2585c0c91efa3c44b91936d31abf1c5a87b09726253b491e0b66ed491face942502bbc38f87bb309f931fc6 + languageName: node + linkType: hard + +"cors@npm:^2.8.4, cors@npm:^2.8.5": + version: 2.8.5 + resolution: "cors@npm:2.8.5" + dependencies: + object-assign: ^4 + vary: ^1 + checksum: ced838404ccd184f61ab4fdc5847035b681c90db7ac17e428f3d81d69e2989d2b680cc254da0e2554f5ed4f8a341820a1ce3d1c16b499f6e2f47a1b9b07b5006 + languageName: node + linkType: hard + +"cosmiconfig@npm:^6.0.0": + version: 6.0.0 + resolution: "cosmiconfig@npm:6.0.0" + dependencies: + "@types/parse-json": ^4.0.0 + import-fresh: ^3.1.0 + parse-json: ^5.0.0 + path-type: ^4.0.0 + yaml: ^1.7.2 + checksum: 8eed7c854b91643ecb820767d0deb038b50780ecc3d53b0b19e03ed8aabed4ae77271198d1ae3d49c3b110867edf679f5faad924820a8d1774144a87cb6f98fc + languageName: node + linkType: hard + +"cosmiconfig@npm:^7.0.0, cosmiconfig@npm:^7.0.1": + version: 7.1.0 + resolution: "cosmiconfig@npm:7.1.0" + dependencies: + "@types/parse-json": ^4.0.0 + import-fresh: ^3.2.1 + parse-json: ^5.0.0 + path-type: ^4.0.0 + yaml: ^1.10.0 + checksum: c53bf7befc1591b2651a22414a5e786cd5f2eeaa87f3678a3d49d6069835a9d8d1aef223728e98aa8fec9a95bf831120d245096db12abe019fecb51f5696c96f + languageName: node + linkType: hard + +"cosmiconfig@npm:^8.1.0, cosmiconfig@npm:^8.1.3, cosmiconfig@npm:^8.2.0": + version: 8.3.6 + resolution: "cosmiconfig@npm:8.3.6" + dependencies: + import-fresh: ^3.3.0 + js-yaml: ^4.1.0 + parse-json: ^5.2.0 + path-type: ^4.0.0 + peerDependencies: + typescript: ">=4.9.5" + peerDependenciesMeta: + typescript: + optional: true + checksum: dc339ebea427898c9e03bf01b56ba7afbac07fc7d2a2d5a15d6e9c14de98275a9565da949375aee1809591c152c0a3877bb86dbeaf74d5bd5aaa79955ad9e7a0 + languageName: node + linkType: hard + +"cpu-features@npm:~0.0.10": + version: 0.0.10 + resolution: "cpu-features@npm:0.0.10" + dependencies: + buildcheck: ~0.0.6 + nan: ^2.19.0 + node-gyp: latest + checksum: ab17e25cea0b642bdcfd163d3d872be4cc7d821e854d41048557799e990d672ee1cc7bd1d4e7c4de0309b1683d4c001d36ba8569b5035d1e7e2ff2d681f681d7 + languageName: node + linkType: hard + +"crc-32@npm:^1.2.0": + version: 1.2.2 + resolution: "crc-32@npm:1.2.2" + bin: + crc32: bin/crc32.njs + checksum: ad2d0ad0cbd465b75dcaeeff0600f8195b686816ab5f3ba4c6e052a07f728c3e70df2e3ca9fd3d4484dc4ba70586e161ca5a2334ec8bf5a41bf022a6103ff243 + languageName: node + linkType: hard + +"crc32-stream@npm:^6.0.0": + version: 6.0.0 + resolution: "crc32-stream@npm:6.0.0" + dependencies: + crc-32: ^1.2.0 + readable-stream: ^4.0.0 + checksum: e6edc2f81bc387daef6d18b2ac18c2ffcb01b554d3b5c7d8d29b177505aafffba574658fdd23922767e8dab1183d1962026c98c17e17fb272794c33293ef607c + languageName: node + linkType: hard + +"create-ecdh@npm:^4.0.4": + version: 4.0.4 + resolution: "create-ecdh@npm:4.0.4" + dependencies: + bn.js: ^4.1.0 + elliptic: ^6.5.3 + checksum: 0dd7fca9711d09e152375b79acf1e3f306d1a25ba87b8ff14c2fd8e68b83aafe0a7dd6c4e540c9ffbdd227a5fa1ad9b81eca1f233c38bb47770597ba247e614b + languageName: node + linkType: hard + +"create-hash@npm:^1.1.0, create-hash@npm:^1.1.2, create-hash@npm:^1.2.0": + version: 1.2.0 + resolution: "create-hash@npm:1.2.0" + dependencies: + cipher-base: ^1.0.1 + inherits: ^2.0.1 + md5.js: ^1.3.4 + ripemd160: ^2.0.1 + sha.js: ^2.4.0 + checksum: 02a6ae3bb9cd4afee3fabd846c1d8426a0e6b495560a977ba46120c473cb283be6aa1cace76b5f927cf4e499c6146fb798253e48e83d522feba807d6b722eaa9 + languageName: node + linkType: hard + +"create-hmac@npm:^1.1.4, create-hmac@npm:^1.1.7": + version: 1.1.7 + resolution: "create-hmac@npm:1.1.7" + dependencies: + cipher-base: ^1.0.3 + create-hash: ^1.1.0 + inherits: ^2.0.1 + ripemd160: ^2.0.0 + safe-buffer: ^5.0.1 + sha.js: ^2.4.8 + checksum: ba12bb2257b585a0396108c72830e85f882ab659c3320c83584b1037f8ab72415095167ced80dc4ce8e446a8ecc4b2acf36d87befe0707d73b26cf9dc77440ed + languageName: node + linkType: hard + +"create-jest@npm:^29.7.0": + version: 29.7.0 + resolution: "create-jest@npm:29.7.0" + dependencies: + "@jest/types": ^29.6.3 + chalk: ^4.0.0 + exit: ^0.1.2 + graceful-fs: ^4.2.9 + jest-config: ^29.7.0 + jest-util: ^29.7.0 + prompts: ^2.0.1 + bin: + create-jest: bin/create-jest.js + checksum: 1427d49458adcd88547ef6fa39041e1fe9033a661293aa8d2c3aa1b4967cb5bf4f0c00436c7a61816558f28ba2ba81a94d5c962e8022ea9a883978fc8e1f2945 + languageName: node + linkType: hard + +"create-require@npm:^1.1.0": + version: 1.1.1 + resolution: "create-require@npm:1.1.1" + checksum: a9a1503d4390d8b59ad86f4607de7870b39cad43d929813599a23714831e81c520bddf61bcdd1f8e30f05fd3a2b71ae8538e946eb2786dc65c2bbc520f692eff + languageName: node + linkType: hard + +"crelt@npm:^1.0.5": + version: 1.0.6 + resolution: "crelt@npm:1.0.6" + checksum: dad842093371ad702afbc0531bfca2b0a8dd920b23a42f26e66dabbed9aad9acd5b9030496359545ef3937c3aced0fd4ac39f7a2d280a23ddf9eb7fdcb94a69f + languageName: node + linkType: hard + +"cron-parser@npm:^4.2.0": + version: 4.9.0 + resolution: "cron-parser@npm:4.9.0" + dependencies: + luxon: ^3.2.1 + checksum: 3cf248fc5cae6c19ec7124962b1cd84b76f02b9bc4f58976b3bd07624db3ef10aaf1548efcc2d2dcdab0dad4f12029d640a55ecce05ea5e1596af9db585502cf + languageName: node + linkType: hard + +"cron@npm:^3.0.0": + version: 3.1.8 + resolution: "cron@npm:3.1.8" + dependencies: + "@types/luxon": ~3.4.0 + luxon: ~3.5.0 + checksum: 470ada23ae25b64fe9d529d3421df1d9a18716693c710e617ba79263a7883d7d5292f9ef0e067fd47b82019b9fa313a461dacd381c8feadb136849b460ddee4c + languageName: node + linkType: hard + +"cronstrue@npm:^2.2.0, cronstrue@npm:^2.32.0": + version: 2.52.0 + resolution: "cronstrue@npm:2.52.0" + bin: + cronstrue: bin/cli.js + checksum: bfe4d8a58d74ba4a987ea6fe65917529451c648e2abe072d22a6ad4c750f4a7ae9d01321c999594b59cb138990ca43537505e759c23811bbffa606956fff5c55 + languageName: node + linkType: hard + +"cross-env@npm:^7.0.0": + version: 7.0.3 + resolution: "cross-env@npm:7.0.3" + dependencies: + cross-spawn: ^7.0.1 + bin: + cross-env: src/bin/cross-env.js + cross-env-shell: src/bin/cross-env-shell.js + checksum: 26f2f3ea2ab32617f57effb70d329c2070d2f5630adc800985d8b30b56e8bf7f5f439dd3a0358b79cee6f930afc23cf8e23515f17ccfb30092c6b62c6b630a79 + languageName: node + linkType: hard + +"cross-fetch@npm:4.0.0, cross-fetch@npm:^4.0.0": + version: 4.0.0 + resolution: "cross-fetch@npm:4.0.0" + dependencies: + node-fetch: ^2.6.12 + checksum: ecca4f37ffa0e8283e7a8a590926b66713a7ef7892757aa36c2d20ffa27b0ac5c60dcf453119c809abe5923fc0bae3702a4d896bfb406ef1077b0d0018213e24 + languageName: node + linkType: hard + +"cross-fetch@npm:^3.1.5": + version: 3.1.8 + resolution: "cross-fetch@npm:3.1.8" + dependencies: + node-fetch: ^2.6.12 + checksum: 78f993fa099eaaa041122ab037fe9503ecbbcb9daef234d1d2e0b9230a983f64d645d088c464e21a247b825a08dc444a6e7064adfa93536d3a9454b4745b3632 + languageName: node + linkType: hard + +"cross-inspect@npm:1.0.1": + version: 1.0.1 + resolution: "cross-inspect@npm:1.0.1" + dependencies: + tslib: ^2.4.0 + checksum: 7c1e02e0a9670b62416a3ea1df7ae880fdad3aa0a857de8932c4e5f8acd71298c7e3db9da8e9da603f5692cd1879938f5e72e34a9f5d1345987bef656d117fc1 + languageName: node + linkType: hard + +"cross-spawn@npm:^5.1.0": + version: 5.1.0 + resolution: "cross-spawn@npm:5.1.0" + dependencies: + lru-cache: ^4.0.1 + shebang-command: ^1.2.0 + which: ^1.2.9 + checksum: 726939c9954fc70c20e538923feaaa33bebc253247d13021737c3c7f68cdc3e0a57f720c0fe75057c0387995349f3f12e20e9bfdbf12274db28019c7ea4ec166 + languageName: node + linkType: hard + +"cross-spawn@npm:^7.0.0, cross-spawn@npm:^7.0.2, cross-spawn@npm:^7.0.3": + version: 7.0.3 + resolution: "cross-spawn@npm:7.0.3" + dependencies: + path-key: ^3.1.0 + shebang-command: ^2.0.0 + which: ^2.0.1 + checksum: 671cc7c7288c3a8406f3c69a3ae2fc85555c04169e9d611def9a675635472614f1c0ed0ef80955d5b6d4e724f6ced67f0ad1bb006c2ea643488fcfef994d7f52 + languageName: node + linkType: hard + +"cross-spawn@npm:^7.0.1": + version: 7.0.6 + resolution: "cross-spawn@npm:7.0.6" + dependencies: + path-key: ^3.1.0 + shebang-command: ^2.0.0 + which: ^2.0.1 + checksum: 8d306efacaf6f3f60e0224c287664093fa9185680b2d195852ba9a863f85d02dcc737094c6e512175f8ee0161f9b87c73c6826034c2422e39de7d6569cf4503b + languageName: node + linkType: hard + +"crypto-browserify@npm:^3.11.0": + version: 3.12.1 + resolution: "crypto-browserify@npm:3.12.1" + dependencies: + browserify-cipher: ^1.0.1 + browserify-sign: ^4.2.3 + create-ecdh: ^4.0.4 + create-hash: ^1.2.0 + create-hmac: ^1.1.7 + diffie-hellman: ^5.0.3 + hash-base: ~3.0.4 + inherits: ^2.0.4 + pbkdf2: ^3.1.2 + public-encrypt: ^4.0.3 + randombytes: ^2.1.0 + randomfill: ^1.0.4 + checksum: 4e643dd5acfff80fbe2cc567feb75a22d726cc4df34772c988f326976c3c1ee1f8a611a33498dab11568cff3e134f0bd44a0e1f4c216585e5877ab5327cdb6fc + languageName: node + linkType: hard + +"css-box-model@npm:^1.2.0": + version: 1.2.1 + resolution: "css-box-model@npm:1.2.1" + dependencies: + tiny-invariant: ^1.0.6 + checksum: 4d113f26fed6b9150e2c314502d00dabe06f12ae43a01a7e9b6e57f3de49b4281dbb0dc46a1158a7349618f8f34d9250af57cb43d7337e9485e73e6b821e470e + languageName: node + linkType: hard + +"css-declaration-sorter@npm:^6.3.1": + version: 6.4.1 + resolution: "css-declaration-sorter@npm:6.4.1" + peerDependencies: + postcss: ^8.0.9 + checksum: cbdc9e0d481011b1a28fd5b60d4eb55fe204391d31a0b1b490b2cecf4baa85810f9b8c48adab4df644f4718104ed3ed72c64a9745e3216173767bf4aeca7f9b8 + languageName: node + linkType: hard + +"css-in-js-utils@npm:^3.1.0": + version: 3.1.0 + resolution: "css-in-js-utils@npm:3.1.0" + dependencies: + hyphenate-style-name: ^1.0.3 + checksum: 066318e918c04a5e5bce46b38fe81052ea6ac051bcc6d3c369a1d59ceb1546cb2b6086901ab5d22be084122ee3732169996a3dfb04d3406eaee205af77aec61b + languageName: node + linkType: hard + +"css-loader@npm:^6.5.1": + version: 6.11.0 + resolution: "css-loader@npm:6.11.0" + dependencies: + icss-utils: ^5.1.0 + postcss: ^8.4.33 + postcss-modules-extract-imports: ^3.1.0 + postcss-modules-local-by-default: ^4.0.5 + postcss-modules-scope: ^3.2.0 + postcss-modules-values: ^4.0.0 + postcss-value-parser: ^4.2.0 + semver: ^7.5.4 + peerDependencies: + "@rspack/core": 0.x || 1.x + webpack: ^5.0.0 + peerDependenciesMeta: + "@rspack/core": + optional: true + webpack: + optional: true + checksum: 5c8d35975a7121334905394e88e28f05df72f037dbed2fb8fec4be5f0b313ae73a13894ba791867d4a4190c35896da84a7fd0c54fb426db55d85ba5e714edbe3 + languageName: node + linkType: hard + +"css-select@npm:^4.1.3": + version: 4.3.0 + resolution: "css-select@npm:4.3.0" + dependencies: + boolbase: ^1.0.0 + css-what: ^6.0.1 + domhandler: ^4.3.1 + domutils: ^2.8.0 + nth-check: ^2.0.1 + checksum: d6202736839194dd7f910320032e7cfc40372f025e4bf21ca5bf6eb0a33264f322f50ba9c0adc35dadd342d3d6fae5ca244779a4873afbfa76561e343f2058e0 + languageName: node + linkType: hard + +"css-select@npm:^5.1.0": + version: 5.1.0 + resolution: "css-select@npm:5.1.0" + dependencies: + boolbase: ^1.0.0 + css-what: ^6.1.0 + domhandler: ^5.0.2 + domutils: ^3.0.1 + nth-check: ^2.0.1 + checksum: 2772c049b188d3b8a8159907192e926e11824aea525b8282981f72ba3f349cf9ecd523fdf7734875ee2cb772246c22117fc062da105b6d59afe8dcd5c99c9bda + languageName: node + linkType: hard + +"css-tree@npm:^1.1.2, css-tree@npm:^1.1.3": + version: 1.1.3 + resolution: "css-tree@npm:1.1.3" + dependencies: + mdn-data: 2.0.14 + source-map: ^0.6.1 + checksum: 79f9b81803991b6977b7fcb1588799270438274d89066ce08f117f5cdb5e20019b446d766c61506dd772c839df84caa16042d6076f20c97187f5abe3b50e7d1f + languageName: node + linkType: hard + +"css-tree@npm:^2.3.1": + version: 2.3.1 + resolution: "css-tree@npm:2.3.1" + dependencies: + mdn-data: 2.0.30 + source-map-js: ^1.0.1 + checksum: 493cc24b5c22b05ee5314b8a0d72d8a5869491c1458017ae5ed75aeb6c3596637dbe1b11dac2548974624adec9f7a1f3a6cf40593dc1f9185eb0e8279543fbc0 + languageName: node + linkType: hard + +"css-tree@npm:~2.2.0": + version: 2.2.1 + resolution: "css-tree@npm:2.2.1" + dependencies: + mdn-data: 2.0.28 + source-map-js: ^1.0.1 + checksum: b94aa8cc2f09e6f66c91548411fcf74badcbad3e150345074715012d16333ce573596ff5dfca03c2a87edf1924716db765120f94247e919d72753628ba3aba27 + languageName: node + linkType: hard + +"css-vendor@npm:^2.0.8": + version: 2.0.8 + resolution: "css-vendor@npm:2.0.8" + dependencies: + "@babel/runtime": ^7.8.3 + is-in-browser: ^1.0.2 + checksum: 647cd4ea5e401c65c59376255aa2b708e92bf84fba9ce2b3ff5ecb94bf51d74ac374052b1cf9956ef7419b8ebf07fcea9a7683d2d2459127b2ca747ab5b98745 + languageName: node + linkType: hard + +"css-what@npm:^6.0.1, css-what@npm:^6.1.0": + version: 6.1.0 + resolution: "css-what@npm:6.1.0" + checksum: b975e547e1e90b79625918f84e67db5d33d896e6de846c9b584094e529f0c63e2ab85ee33b9daffd05bff3a146a1916bec664e18bb76dd5f66cbff9fc13b2bbe + languageName: node + linkType: hard + +"css.escape@npm:1.5.1, css.escape@npm:^1.5.1": + version: 1.5.1 + resolution: "css.escape@npm:1.5.1" + checksum: f6d38088d870a961794a2580b2b2af1027731bb43261cfdce14f19238a88664b351cc8978abc20f06cc6bbde725699dec8deb6fe9816b139fc3f2af28719e774 + languageName: node + linkType: hard + +"cssesc@npm:^3.0.0": + version: 3.0.0 + resolution: "cssesc@npm:3.0.0" + bin: + cssesc: bin/cssesc + checksum: f8c4ababffbc5e2ddf2fa9957dda1ee4af6048e22aeda1869d0d00843223c1b13ad3f5d88b51caa46c994225eacb636b764eb807a8883e2fb6f99b4f4e8c48b2 + languageName: node + linkType: hard + +"cssfontparser@npm:^1.2.1": + version: 1.2.1 + resolution: "cssfontparser@npm:1.2.1" + checksum: 952d487cddab591fb944f2a4c326a7736bc963784a6d92b6ad4051f3bf5ee49a732eff62e29a52ff085197cb07f5bd66525a2245ded7fd356113ac81be9238b9 + languageName: node + linkType: hard + +"cssnano-preset-default@npm:^5.2.14": + version: 5.2.14 + resolution: "cssnano-preset-default@npm:5.2.14" + dependencies: + css-declaration-sorter: ^6.3.1 + cssnano-utils: ^3.1.0 + postcss-calc: ^8.2.3 + postcss-colormin: ^5.3.1 + postcss-convert-values: ^5.1.3 + postcss-discard-comments: ^5.1.2 + postcss-discard-duplicates: ^5.1.0 + postcss-discard-empty: ^5.1.1 + postcss-discard-overridden: ^5.1.0 + postcss-merge-longhand: ^5.1.7 + postcss-merge-rules: ^5.1.4 + postcss-minify-font-values: ^5.1.0 + postcss-minify-gradients: ^5.1.1 + postcss-minify-params: ^5.1.4 + postcss-minify-selectors: ^5.2.1 + postcss-normalize-charset: ^5.1.0 + postcss-normalize-display-values: ^5.1.0 + postcss-normalize-positions: ^5.1.1 + postcss-normalize-repeat-style: ^5.1.1 + postcss-normalize-string: ^5.1.0 + postcss-normalize-timing-functions: ^5.1.0 + postcss-normalize-unicode: ^5.1.1 + postcss-normalize-url: ^5.1.0 + postcss-normalize-whitespace: ^5.1.1 + postcss-ordered-values: ^5.1.3 + postcss-reduce-initial: ^5.1.2 + postcss-reduce-transforms: ^5.1.0 + postcss-svgo: ^5.1.0 + postcss-unique-selectors: ^5.1.1 + peerDependencies: + postcss: ^8.2.15 + checksum: d3bbbe3d50c6174afb28d0bdb65b511fdab33952ec84810aef58b87189f3891c34aaa8b6a6101acd5314f8acded839b43513e39a75f91a698ddc985a1b1d9e95 + languageName: node + linkType: hard + +"cssnano-utils@npm:^3.1.0": + version: 3.1.0 + resolution: "cssnano-utils@npm:3.1.0" + peerDependencies: + postcss: ^8.2.15 + checksum: 975c84ce9174cf23bb1da1e9faed8421954607e9ea76440cd3bb0c1bea7e17e490d800fca5ae2812d1d9e9d5524eef23ede0a3f52497d7ccc628e5d7321536f2 + languageName: node + linkType: hard + +"cssnano@npm:^5.0.1": + version: 5.1.15 + resolution: "cssnano@npm:5.1.15" + dependencies: + cssnano-preset-default: ^5.2.14 + lilconfig: ^2.0.3 + yaml: ^1.10.2 + peerDependencies: + postcss: ^8.2.15 + checksum: ca9e1922178617c66c2f1548824b2c7af2ecf69cc3a187fc96bf8d29251c2e84d9e4966c69cf64a2a6a057a37dff7d6d057bc8a2a0957e6ea382e452ae9d0bbb + languageName: node + linkType: hard + +"csso@npm:^4.2.0": + version: 4.2.0 + resolution: "csso@npm:4.2.0" + dependencies: + css-tree: ^1.1.2 + checksum: 380ba9663da3bcea58dee358a0d8c4468bb6539be3c439dc266ac41c047217f52fd698fb7e4b6b6ccdfb8cf53ef4ceed8cc8ceccb8dfca2aa628319826b5b998 + languageName: node + linkType: hard + +"csso@npm:^5.0.5": + version: 5.0.5 + resolution: "csso@npm:5.0.5" + dependencies: + css-tree: ~2.2.0 + checksum: 0ad858d36bf5012ed243e9ec69962a867509061986d2ee07cc040a4b26e4d062c00d4c07e5ba8d430706ceb02dd87edd30a52b5937fd45b1b6f2119c4993d59a + languageName: node + linkType: hard + +"cssom@npm:^0.4.4": + version: 0.4.4 + resolution: "cssom@npm:0.4.4" + checksum: e3bc1076e7ee4213d4fef05e7ae03bfa83dc05f32611d8edc341f4ecc3d9647b89c8245474c7dd2cdcdb797a27c462e99da7ad00a34399694559f763478ff53f + languageName: node + linkType: hard + +"cssom@npm:^0.5.0": + version: 0.5.0 + resolution: "cssom@npm:0.5.0" + checksum: 823471aa30091c59e0a305927c30e7768939b6af70405808f8d2ce1ca778cddcb24722717392438329d1691f9a87cb0183b64b8d779b56a961546d54854fde01 + languageName: node + linkType: hard + +"cssom@npm:~0.3.6": + version: 0.3.8 + resolution: "cssom@npm:0.3.8" + checksum: 24beb3087c76c0d52dd458be9ee1fbc80ac771478a9baef35dd258cdeb527c68eb43204dd439692bb2b1ae5272fa5f2946d10946edab0d04f1078f85e06bc7f6 + languageName: node + linkType: hard + +"cssstyle@npm:^2.3.0": + version: 2.3.0 + resolution: "cssstyle@npm:2.3.0" + dependencies: + cssom: ~0.3.6 + checksum: 5f05e6fd2e3df0b44695c2f08b9ef38b011862b274e320665176467c0725e44a53e341bc4959a41176e83b66064ab786262e7380fd1cabeae6efee0d255bb4e3 + languageName: node + linkType: hard + +"csstype@npm:3.0.10": + version: 3.0.10 + resolution: "csstype@npm:3.0.10" + checksum: 20a8fa324f2b33ddf94aa7507d1b6ab3daa6f3cc308888dc50126585d7952f2471de69b2dbe0635d1fdc31223fef8e070842691877e725caf456e2378685a631 + languageName: node + linkType: hard + +"csstype@npm:^2.5.2": + version: 2.6.21 + resolution: "csstype@npm:2.6.21" + checksum: 2ce8bc832375146eccdf6115a1f8565a27015b74cce197c35103b4494955e9516b246140425ad24103864076aa3e1257ac9bab25a06c8d931dd87a6428c9dccf + languageName: node + linkType: hard + +"csstype@npm:^3.0.2, csstype@npm:^3.1.2, csstype@npm:^3.1.3": + version: 3.1.3 + resolution: "csstype@npm:3.1.3" + checksum: 8db785cc92d259102725b3c694ec0c823f5619a84741b5c7991b8ad135dfaa66093038a1cc63e03361a6cd28d122be48f2106ae72334e067dd619a51f49eddf7 + languageName: node + linkType: hard + +"ctrlc-windows@npm:^2.1.0": + version: 2.1.0 + resolution: "ctrlc-windows@npm:2.1.0" + checksum: 0f0582ba9516290d3e90ea7b91710f8b9b110e1ed29b7c84ebd44c16368b2553722b86a17226120ca3ea0ef679ac3596f48104cc113cfb7c3d07260f6c92e38b + languageName: node + linkType: hard + +"cytoscape@npm:3.30.2": + version: 3.30.2 + resolution: "cytoscape@npm:3.30.2" + checksum: 45ec8f256b6bb59d505bf92f937d86d2547c62cd45e02e7e873320f321d39bb57261aad0dad06d0903f2af50decb367aa0a05193043da5332dc6feb37dce888c + languageName: node + linkType: hard + +"d3-array@npm:2 - 3, d3-array@npm:2.10.0 - 3, d3-array@npm:2.5.0 - 3, d3-array@npm:3, d3-array@npm:^3.1.6, d3-array@npm:^3.2.0": + version: 3.2.4 + resolution: "d3-array@npm:3.2.4" + dependencies: + internmap: 1 - 2 + checksum: a5976a6d6205f69208478bb44920dd7ce3e788c9dceb86b304dbe401a4bfb42ecc8b04c20facde486e9adcb488b5d1800d49393a3f81a23902b68158e12cddd0 + languageName: node + linkType: hard + +"d3-axis@npm:3": + version: 3.0.0 + resolution: "d3-axis@npm:3.0.0" + checksum: 227ddaa6d4bad083539c1ec245e2228b4620cca941997a8a650cb0af239375dc20271993127eedac66f0543f331027aca09385e1e16eed023f93eac937cddf0b + languageName: node + linkType: hard + +"d3-brush@npm:3": + version: 3.0.0 + resolution: "d3-brush@npm:3.0.0" + dependencies: + d3-dispatch: 1 - 3 + d3-drag: 2 - 3 + d3-interpolate: 1 - 3 + d3-selection: 3 + d3-transition: 3 + checksum: 1d042167769a02ac76271c71e90376d7184206e489552b7022a8ec2860209fe269db55e0a3430f3dcbe13b6fec2ff65b1adeaccba3218991b38e022390df72e3 + languageName: node + linkType: hard + +"d3-chord@npm:3": + version: 3.0.1 + resolution: "d3-chord@npm:3.0.1" + dependencies: + d3-path: 1 - 3 + checksum: ddf35d41675e0f8738600a8a2f05bf0858def413438c12cba357c5802ecc1014c80a658acbbee63cbad2a8c747912efb2358455d93e59906fe37469f1dc6b78b + languageName: node + linkType: hard + +"d3-color@npm:1 - 3, d3-color@npm:3": + version: 3.1.0 + resolution: "d3-color@npm:3.1.0" + checksum: 4931fbfda5d7c4b5cfa283a13c91a954f86e3b69d75ce588d06cde6c3628cebfc3af2069ccf225e982e8987c612aa7948b3932163ce15eb3c11cd7c003f3ee3b + languageName: node + linkType: hard + +"d3-contour@npm:4": + version: 4.0.2 + resolution: "d3-contour@npm:4.0.2" + dependencies: + d3-array: ^3.2.0 + checksum: 56aa082c1acf62a45b61c8d29fdd307041785aa17d9a07de7d1d848633769887a33fb6823888afa383f31c460d0f21d24756593e84e334ddb92d774214d32f1b + languageName: node + linkType: hard + +"d3-delaunay@npm:6": + version: 6.0.4 + resolution: "d3-delaunay@npm:6.0.4" + dependencies: + delaunator: 5 + checksum: ce6d267d5ef21a8aeadfe4606329fc80a22ab6e7748d47bc220bcc396ee8be84b77a5473033954c5ac4aa522d265ddc45d4165d30fe4787dd60a15ea66b9bbb4 + languageName: node + linkType: hard + +"d3-dispatch@npm:1 - 3, d3-dispatch@npm:3": + version: 3.0.1 + resolution: "d3-dispatch@npm:3.0.1" + checksum: fdfd4a230f46463e28e5b22a45dd76d03be9345b605e1b5dc7d18bd7ebf504e6c00ae123fd6d03e23d9e2711e01f0e14ea89cd0632545b9f0c00b924ba4be223 + languageName: node + linkType: hard + +"d3-dispatch@npm:1, d3-dispatch@npm:^1.0.3": + version: 1.0.6 + resolution: "d3-dispatch@npm:1.0.6" + checksum: b4ecb016b6dda8b99aa4263b2d0a0c7b12e7dea93e4b0ce3013c94dca4d360d9ba00f5bdc15dc944cc4543af8e341067bd628f061f7b8deb642257e2ac90d06c + languageName: node + linkType: hard + +"d3-drag@npm:2 - 3, d3-drag@npm:3": + version: 3.0.0 + resolution: "d3-drag@npm:3.0.0" + dependencies: + d3-dispatch: 1 - 3 + d3-selection: 3 + checksum: d297231e60ecd633b0d076a63b4052b436ddeb48b5a3a11ff68c7e41a6774565473a6b064c5e9256e88eca6439a917ab9cea76032c52d944ddbf4fd289e31111 + languageName: node + linkType: hard + +"d3-drag@npm:^1.0.4": + version: 1.2.5 + resolution: "d3-drag@npm:1.2.5" + dependencies: + d3-dispatch: 1 + d3-selection: 1 + checksum: 6e86e89aa8d511979eea1b5326709c05c2a3c2d43a93a82ed6b6f98528b2ab03b2f58f5e4f66582f2f1c0ae44f9c19f6f4f857249eb66aabc46e4942295fa0a7 + languageName: node + linkType: hard + +"d3-dsv@npm:1 - 3, d3-dsv@npm:3": + version: 3.0.1 + resolution: "d3-dsv@npm:3.0.1" + dependencies: + commander: 7 + iconv-lite: 0.6 + rw: 1 + bin: + csv2json: bin/dsv2json.js + csv2tsv: bin/dsv2dsv.js + dsv2dsv: bin/dsv2dsv.js + dsv2json: bin/dsv2json.js + json2csv: bin/json2dsv.js + json2dsv: bin/json2dsv.js + json2tsv: bin/json2dsv.js + tsv2csv: bin/dsv2dsv.js + tsv2json: bin/dsv2json.js + checksum: 5fc0723647269d5dccd181d74f2265920ab368a2868b0b4f55ffa2fecdfb7814390ea28622cd61ee5d9594ab262879509059544e9f815c54fe76fbfb4ffa4c8a + languageName: node + linkType: hard + +"d3-ease@npm:1 - 3, d3-ease@npm:3, d3-ease@npm:^3.0.1": + version: 3.0.1 + resolution: "d3-ease@npm:3.0.1" + checksum: 06e2ee5326d1e3545eab4e2c0f84046a123dcd3b612e68858219aa034da1160333d9ce3da20a1d3486d98cb5c2a06f7d233eee1bc19ce42d1533458bd85dedcd + languageName: node + linkType: hard + +"d3-fetch@npm:3": + version: 3.0.1 + resolution: "d3-fetch@npm:3.0.1" + dependencies: + d3-dsv: 1 - 3 + checksum: 382dcea06549ef82c8d0b719e5dc1d96286352579e3b51b20f71437f5800323315b09cf7dcfd4e1f60a41e1204deb01758470cea257d2285a7abd9dcec806984 + languageName: node + linkType: hard + +"d3-force@npm:3": + version: 3.0.0 + resolution: "d3-force@npm:3.0.0" + dependencies: + d3-dispatch: 1 - 3 + d3-quadtree: 1 - 3 + d3-timer: 1 - 3 + checksum: 6c7e96438cab62fa32aeadb0ade3297b62b51f81b1b38b0a60a5ec9fd627d74090c1189654d92df2250775f31b06812342f089f1d5947de9960a635ee3581def + languageName: node + linkType: hard + +"d3-format@npm:1 - 3, d3-format@npm:3, d3-format@npm:^3.1.0": + version: 3.1.0 + resolution: "d3-format@npm:3.1.0" + checksum: f345ec3b8ad3cab19bff5dead395bd9f5590628eb97a389b1dd89f0b204c7c4fc1d9520f13231c2c7cf14b7c9a8cf10f8ef15bde2befbab41454a569bd706ca2 + languageName: node + linkType: hard + +"d3-geo@npm:3": + version: 3.1.1 + resolution: "d3-geo@npm:3.1.1" + dependencies: + d3-array: 2.5.0 - 3 + checksum: 3cc4bb50af5d2d4858d2df1729a1777b7fd361854079d9faab1166186c988d2cba0d11911da0c4598d5e22fae91d79113ed262a9f98cabdbc6dbf7c30e5c0363 + languageName: node + linkType: hard + +"d3-hierarchy@npm:3": + version: 3.1.2 + resolution: "d3-hierarchy@npm:3.1.2" + checksum: 0fd946a8c5fd4686d43d3e11bbfc2037a145fda29d2261ccd0e36f70b66af6d7638e2c0c7112124d63fc3d3127197a00a6aecf676bd5bd392a94d7235a214263 + languageName: node + linkType: hard + +"d3-interpolate@npm:1 - 3, d3-interpolate@npm:1.2.0 - 3, d3-interpolate@npm:3, d3-interpolate@npm:^3.0.1": + version: 3.0.1 + resolution: "d3-interpolate@npm:3.0.1" + dependencies: + d3-color: 1 - 3 + checksum: a42ba314e295e95e5365eff0f604834e67e4a3b3c7102458781c477bd67e9b24b6bb9d8e41ff5521050a3f2c7c0c4bbbb6e187fd586daa3980943095b267e78b + languageName: node + linkType: hard + +"d3-path@npm:1": + version: 1.0.9 + resolution: "d3-path@npm:1.0.9" + checksum: d4382573baf9509a143f40944baeff9fead136926aed6872f7ead5b3555d68925f8a37935841dd51f1d70b65a294fe35c065b0906fb6e42109295f6598fc16d0 + languageName: node + linkType: hard + +"d3-path@npm:1 - 3, d3-path@npm:3, d3-path@npm:^3.1.0": + version: 3.1.0 + resolution: "d3-path@npm:3.1.0" + checksum: 2306f1bd9191e1eac895ec13e3064f732a85f243d6e627d242a313f9777756838a2215ea11562f0c7630c7c3b16a19ec1fe0948b1c82f3317fac55882f6ee5d8 + languageName: node + linkType: hard + +"d3-polygon@npm:3": + version: 3.0.1 + resolution: "d3-polygon@npm:3.0.1" + checksum: 0b85c532517895544683849768a2c377cee3801ef8ccf3fa9693c8871dd21a0c1a2a0fc75ff54192f0ba2c562b0da2bc27f5bf959dfafc7fa23573b574865d2c + languageName: node + linkType: hard + +"d3-quadtree@npm:1 - 3, d3-quadtree@npm:3": + version: 3.0.1 + resolution: "d3-quadtree@npm:3.0.1" + checksum: 5469d462763811475f34a7294d984f3eb100515b0585ca5b249656f6b1a6e99b20056a2d2e463cc9944b888896d2b1d07859c50f9c0cf23438df9cd2e3146066 + languageName: node + linkType: hard + +"d3-random@npm:3": + version: 3.0.1 + resolution: "d3-random@npm:3.0.1" + checksum: a70ad8d1cabe399ebeb2e482703121ac8946a3b336830b518da6848b9fdd48a111990fc041dc716f16885a72176ffa2898f2a250ca3d363ecdba5ef92b18e131 + languageName: node + linkType: hard + +"d3-scale-chromatic@npm:3": + version: 3.1.0 + resolution: "d3-scale-chromatic@npm:3.1.0" + dependencies: + d3-color: 1 - 3 + d3-interpolate: 1 - 3 + checksum: ab6324bd8e1f708e731e02ab44e09741efda2b174cea1d8ca21e4a87546295e99856bc44e2fd3890f228849c96bccfbcf922328f95be6a7df117453eb5cf22c9 + languageName: node + linkType: hard + +"d3-scale@npm:4, d3-scale@npm:^4.0.2": + version: 4.0.2 + resolution: "d3-scale@npm:4.0.2" + dependencies: + d3-array: 2.10.0 - 3 + d3-format: 1 - 3 + d3-interpolate: 1.2.0 - 3 + d3-time: 2.1.1 - 3 + d3-time-format: 2 - 4 + checksum: a9c770d283162c3bd11477c3d9d485d07f8db2071665f1a4ad23eec3e515e2cefbd369059ec677c9ac849877d1a765494e90e92051d4f21111aa56791c98729e + languageName: node + linkType: hard + +"d3-selection@npm:1": + version: 1.4.2 + resolution: "d3-selection@npm:1.4.2" + checksum: 2484b392259b087a98f546f2610e6a11c90f38dae6b6b20a3fc85171038fcab4c72e702788b1960a4fece88bed2e36f268096358b5b48d3c7f0d35cfbe305da6 + languageName: node + linkType: hard + +"d3-selection@npm:2 - 3, d3-selection@npm:3, d3-selection@npm:^3.0.0": + version: 3.0.0 + resolution: "d3-selection@npm:3.0.0" + checksum: f4e60e133309115b99f5b36a79ae0a19d71ee6e2d5e3c7216ef3e75ebd2cb1e778c2ed2fa4c01bef35e0dcbd96c5428f5bd6ca2184fe2957ed582fde6841cbc5 + languageName: node + linkType: hard + +"d3-shape@npm:3, d3-shape@npm:^3.0.0, d3-shape@npm:^3.1.0": + version: 3.2.0 + resolution: "d3-shape@npm:3.2.0" + dependencies: + d3-path: ^3.1.0 + checksum: de2af5fc9a93036a7b68581ca0bfc4aca2d5a328aa7ba7064c11aedd44d24f310c20c40157cb654359d4c15c3ef369f95ee53d71221017276e34172c7b719cfa + languageName: node + linkType: hard + +"d3-shape@npm:^1.3.5": + version: 1.3.7 + resolution: "d3-shape@npm:1.3.7" + dependencies: + d3-path: 1 + checksum: 46566a3ab64a25023653bf59d64e81e9e6c987e95be985d81c5cedabae5838bd55f4a201a6b69069ca862eb63594cd263cac9034afc2b0e5664dfe286c866129 + languageName: node + linkType: hard + +"d3-time-format@npm:2 - 4, d3-time-format@npm:4": + version: 4.1.0 + resolution: "d3-time-format@npm:4.1.0" + dependencies: + d3-time: 1 - 3 + checksum: 7342bce28355378152bbd4db4e275405439cabba082d9cd01946d40581140481c8328456d91740b0fe513c51ec4a467f4471ffa390c7e0e30ea30e9ec98fcdf4 + languageName: node + linkType: hard + +"d3-time@npm:1 - 3, d3-time@npm:2.1.1 - 3, d3-time@npm:3, d3-time@npm:^3.0.0": + version: 3.1.0 + resolution: "d3-time@npm:3.1.0" + dependencies: + d3-array: 2 - 3 + checksum: 613b435352a78d9f31b7f68540788186d8c331b63feca60ad21c88e9db1989fe888f97f242322ebd6365e45ec3fb206a4324cd4ca0dfffa1d9b5feb856ba00a7 + languageName: node + linkType: hard + +"d3-timer@npm:1 - 3, d3-timer@npm:3, d3-timer@npm:^3.0.1": + version: 3.0.1 + resolution: "d3-timer@npm:3.0.1" + checksum: 1cfddf86d7bca22f73f2c427f52dfa35c49f50d64e187eb788dcad6e927625c636aa18ae4edd44d084eb9d1f81d8ca4ec305dae7f733c15846a824575b789d73 + languageName: node + linkType: hard + +"d3-timer@npm:^1.0.5": + version: 1.0.10 + resolution: "d3-timer@npm:1.0.10" + checksum: f7040953672deb2dfa03830ace80dbbcb212f80890218eba15dcca6f33f74102d943023ccc2a563295195cd8c63639bb2410ef1691c8fecff4a114fdf5c666f4 + languageName: node + linkType: hard + +"d3-transition@npm:2 - 3, d3-transition@npm:3": + version: 3.0.1 + resolution: "d3-transition@npm:3.0.1" + dependencies: + d3-color: 1 - 3 + d3-dispatch: 1 - 3 + d3-ease: 1 - 3 + d3-interpolate: 1 - 3 + d3-timer: 1 - 3 + peerDependencies: + d3-selection: 2 - 3 + checksum: cb1e6e018c3abf0502fe9ff7b631ad058efb197b5e14b973a410d3935aead6e3c07c67d726cfab258e4936ef2667c2c3d1cd2037feb0765f0b4e1d3b8788c0ea + languageName: node + linkType: hard + +"d3-zoom@npm:3, d3-zoom@npm:^3.0.0": + version: 3.0.0 + resolution: "d3-zoom@npm:3.0.0" + dependencies: + d3-dispatch: 1 - 3 + d3-drag: 2 - 3 + d3-interpolate: 1 - 3 + d3-selection: 2 - 3 + d3-transition: 2 - 3 + checksum: 8056e3527281cfd1ccbcbc458408f86973b0583e9dac00e51204026d1d36803ca437f970b5736f02fafed9f2b78f145f72a5dbc66397e02d4d95d4c594b8ff54 + languageName: node + linkType: hard + +"d3@npm:^7.8.0": + version: 7.9.0 + resolution: "d3@npm:7.9.0" + dependencies: + d3-array: 3 + d3-axis: 3 + d3-brush: 3 + d3-chord: 3 + d3-color: 3 + d3-contour: 4 + d3-delaunay: 6 + d3-dispatch: 3 + d3-drag: 3 + d3-dsv: 3 + d3-ease: 3 + d3-fetch: 3 + d3-force: 3 + d3-format: 3 + d3-geo: 3 + d3-hierarchy: 3 + d3-interpolate: 3 + d3-path: 3 + d3-polygon: 3 + d3-quadtree: 3 + d3-random: 3 + d3-scale: 4 + d3-scale-chromatic: 3 + d3-selection: 3 + d3-shape: 3 + d3-time: 3 + d3-time-format: 4 + d3-timer: 3 + d3-transition: 3 + d3-zoom: 3 + checksum: 1c0e9135f1fb78aa32b187fafc8b56ae6346102bd0e4e5e5a5339611a51e6038adbaa293fae373994228100eddd87320e930b1be922baeadc07c9fd43d26d99b + languageName: node + linkType: hard + +"dagre@npm:0.8.2": + version: 0.8.2 + resolution: "dagre@npm:0.8.2" + dependencies: + graphlib: ^2.1.5 + lodash: ^4.17.4 + checksum: 5a0446354610d423152badf34d0870a23382a8d224e158522840513dc095bf60fbc45132f9093a5bb348597be9967a46a21f3729af1a6d8d4d98d73ed8825fa4 + languageName: node + linkType: hard + +"dagre@npm:^0.8.5": + version: 0.8.5 + resolution: "dagre@npm:0.8.5" + dependencies: + graphlib: ^2.1.8 + lodash: ^4.17.15 + checksum: b9fabd425466d7b662381c2e457b1adda996bc4169aa60121d4de50250d83a6bb4b77d559e2f887c9c564caea781c2a377fd4de2a76c15f8f04ec3d086ca95f9 + languageName: node + linkType: hard + +"damerau-levenshtein@npm:^1.0.8": + version: 1.0.8 + resolution: "damerau-levenshtein@npm:1.0.8" + checksum: d240b7757544460ae0586a341a53110ab0a61126570ef2d8c731e3eab3f0cb6e488e2609e6a69b46727635de49be20b071688698744417ff1b6c1d7ccd03e0de + languageName: node + linkType: hard + +"dashdash@npm:^1.12.0": + version: 1.14.1 + resolution: "dashdash@npm:1.14.1" + dependencies: + assert-plus: ^1.0.0 + checksum: 3634c249570f7f34e3d34f866c93f866c5b417f0dd616275decae08147dcdf8fccfaa5947380ccfb0473998ea3a8057c0b4cd90c875740ee685d0624b2983598 + languageName: node + linkType: hard + +"data-uri-to-buffer@npm:^6.0.2": + version: 6.0.2 + resolution: "data-uri-to-buffer@npm:6.0.2" + checksum: 8b6927c33f9b54037f442856be0aa20e5fd49fa6c9c8ceece408dc306445d593ad72d207d57037c529ce65f413b421da800c6827b1dbefb607b8056f17123a61 + languageName: node + linkType: hard + +"data-urls@npm:^2.0.0": + version: 2.0.0 + resolution: "data-urls@npm:2.0.0" + dependencies: + abab: ^2.0.3 + whatwg-mimetype: ^2.3.0 + whatwg-url: ^8.0.0 + checksum: 97caf828aac25e25e04ba6869db0f99c75e6859bb5b424ada28d3e7841941ebf08ddff3c1b1bb4585986bd507a5d54c2a716853ea6cb98af877400e637393e71 + languageName: node + linkType: hard + +"data-urls@npm:^3.0.2": + version: 3.0.2 + resolution: "data-urls@npm:3.0.2" + dependencies: + abab: ^2.0.6 + whatwg-mimetype: ^3.0.0 + whatwg-url: ^11.0.0 + checksum: 033fc3dd0fba6d24bc9a024ddcf9923691dd24f90a3d26f6545d6a2f71ec6956f93462f2cdf2183cc46f10dc01ed3bcb36731a8208456eb1a08147e571fe2a76 + languageName: node + linkType: hard + +"data-view-buffer@npm:^1.0.1": + version: 1.0.1 + resolution: "data-view-buffer@npm:1.0.1" + dependencies: + call-bind: ^1.0.6 + es-errors: ^1.3.0 + is-data-view: ^1.0.1 + checksum: ce24348f3c6231223b216da92e7e6a57a12b4af81a23f27eff8feabdf06acfb16c00639c8b705ca4d167f761cfc756e27e5f065d0a1f840c10b907fdaf8b988c + languageName: node + linkType: hard + +"data-view-byte-length@npm:^1.0.1": + version: 1.0.1 + resolution: "data-view-byte-length@npm:1.0.1" + dependencies: + call-bind: ^1.0.7 + es-errors: ^1.3.0 + is-data-view: ^1.0.1 + checksum: dbb3200edcb7c1ef0d68979834f81d64fd8cab2f7691b3a4c6b97e67f22182f3ec2c8602efd7b76997b55af6ff8bce485829c1feda4fa2165a6b71fb7baa4269 + languageName: node + linkType: hard + +"data-view-byte-offset@npm:^1.0.0": + version: 1.0.0 + resolution: "data-view-byte-offset@npm:1.0.0" + dependencies: + call-bind: ^1.0.6 + es-errors: ^1.3.0 + is-data-view: ^1.0.1 + checksum: 7f0bf8720b7414ca719eedf1846aeec392f2054d7af707c5dc9a753cc77eb8625f067fa901e0b5127e831f9da9056138d894b9c2be79c27a21f6db5824f009c2 + languageName: node + linkType: hard + +"dataloader@npm:^2.0.0, dataloader@npm:^2.2.3": + version: 2.2.3 + resolution: "dataloader@npm:2.2.3" + checksum: cc272181f6cad0ea20511c0a0d270cbc1df960a3526ab24941bbeb2cb7120499a598fe2cd41b4818527367acf7bc1be0723b6e5034637db4759a396c904b78a6 + languageName: node + linkType: hard + +"date-fns@npm:^2.16.1, date-fns@npm:^2.30.0": + version: 2.30.0 + resolution: "date-fns@npm:2.30.0" + dependencies: + "@babel/runtime": ^7.21.0 + checksum: f7be01523282e9bb06c0cd2693d34f245247a29098527d4420628966a2d9aad154bd0e90a6b1cf66d37adcb769cd108cf8a7bd49d76db0fb119af5cdd13644f4 + languageName: node + linkType: hard + +"date-format@npm:^4.0.14": + version: 4.0.14 + resolution: "date-format@npm:4.0.14" + checksum: dfe5139df6af5759b9dd3c007b899b3f60d45a9240ffeee6314ab74e6ab52e9b519a44ccf285888bdd6b626c66ee9b4c8a523075fa1140617b5beb1cbb9b18d1 + languageName: node + linkType: hard + +"dateformat@npm:^3.0.3": + version: 3.0.3 + resolution: "dateformat@npm:3.0.3" + checksum: ca4911148abb09887bd9bdcd632c399b06f3ecad709a18eb594d289a1031982f441e08e281db77ffebcb2cbcbfa1ac578a7cbfbf8743f41009aa5adc1846ed34 + languageName: node + linkType: hard + +"debounce-promise@npm:^3.1.2": + version: 3.1.2 + resolution: "debounce-promise@npm:3.1.2" + checksum: 29bac4524c423cc852319d7455363909ea3d933a3b9e3eb1149d963cffc34c475fe37219d0bafc61af566500b5d663cba579bbad7ee4023bef06f8394ed900ad + languageName: node + linkType: hard + +"debounce@npm:^1.2.0": + version: 1.2.1 + resolution: "debounce@npm:1.2.1" + checksum: 682a89506d9e54fb109526f4da255c5546102fbb8e3ae75eef3b04effaf5d4853756aee97475cd4650641869794e44f410eeb20ace2b18ea592287ab2038519e + languageName: node + linkType: hard + +"debug@npm:2.6.9, debug@npm:^2.6.0": + version: 2.6.9 + resolution: "debug@npm:2.6.9" + dependencies: + ms: 2.0.0 + checksum: d2f51589ca66df60bf36e1fa6e4386b318c3f1e06772280eea5b1ae9fd3d05e9c2b7fd8a7d862457d00853c75b00451aa2d7459b924629ee385287a650f58fe6 + languageName: node + linkType: hard + +"debug@npm:4, debug@npm:4.3.7, debug@npm:^4.1.0, debug@npm:^4.1.1, debug@npm:^4.3.1, debug@npm:^4.3.2, debug@npm:^4.3.3, debug@npm:^4.3.4, debug@npm:^4.3.5": + version: 4.3.7 + resolution: "debug@npm:4.3.7" + dependencies: + ms: ^2.1.3 + peerDependenciesMeta: + supports-color: + optional: true + checksum: 822d74e209cd910ef0802d261b150314bbcf36c582ccdbb3e70f0894823c17e49a50d3e66d96b633524263975ca16b6a833f3e3b7e030c157169a5fabac63160 + languageName: node + linkType: hard + +"debug@npm:4.3.4": + version: 4.3.4 + resolution: "debug@npm:4.3.4" + dependencies: + ms: 2.1.2 + peerDependenciesMeta: + supports-color: + optional: true + checksum: 3dbad3f94ea64f34431a9cbf0bafb61853eda57bff2880036153438f50fb5a84f27683ba0d8e5426bf41a8c6ff03879488120cf5b3a761e77953169c0600a708 + languageName: node + linkType: hard + +"debug@npm:^3.2.7": + version: 3.2.7 + resolution: "debug@npm:3.2.7" + dependencies: + ms: ^2.1.1 + checksum: b3d8c5940799914d30314b7c3304a43305fd0715581a919dacb8b3176d024a782062368405b47491516d2091d6462d4d11f2f4974a405048094f8bfebfa3071c + languageName: node + linkType: hard + +"debug@npm:^4.0.0, debug@npm:^4.3.6": + version: 4.4.0 + resolution: "debug@npm:4.4.0" + dependencies: + ms: ^2.1.3 + peerDependenciesMeta: + supports-color: + optional: true + checksum: fb42df878dd0e22816fc56e1fdca9da73caa85212fbe40c868b1295a6878f9101ae684f4eeef516c13acfc700f5ea07f1136954f43d4cd2d477a811144136479 + languageName: node + linkType: hard + +"decimal.js@npm:^10.2.1, decimal.js@npm:^10.4.2": + version: 10.4.3 + resolution: "decimal.js@npm:10.4.3" + checksum: 796404dcfa9d1dbfdc48870229d57f788b48c21c603c3f6554a1c17c10195fc1024de338b0cf9e1efe0c7c167eeb18f04548979bcc5fdfabebb7cc0ae3287bae + languageName: node + linkType: hard + +"decode-named-character-reference@npm:^1.0.0": + version: 1.0.2 + resolution: "decode-named-character-reference@npm:1.0.2" + dependencies: + character-entities: ^2.0.0 + checksum: f4c71d3b93105f20076052f9cb1523a22a9c796b8296cd35eef1ca54239c78d182c136a848b83ff8da2071e3ae2b1d300bf29d00650a6d6e675438cc31b11d78 + languageName: node + linkType: hard + +"decompress-response@npm:^4.2.0": + version: 4.2.1 + resolution: "decompress-response@npm:4.2.1" + dependencies: + mimic-response: ^2.0.0 + checksum: 4e783ca4dfe9417354d61349750fe05236f565a4415a6ca20983a311be2371debaedd9104c0b0e7b36e5f167aeaae04f84f1a0b3f8be4162f1d7d15598b8fdba + languageName: node + linkType: hard + +"decompress-response@npm:^6.0.0": + version: 6.0.0 + resolution: "decompress-response@npm:6.0.0" + dependencies: + mimic-response: ^3.1.0 + checksum: d377cf47e02d805e283866c3f50d3d21578b779731e8c5072d6ce8c13cc31493db1c2f6784da9d1d5250822120cefa44f1deab112d5981015f2e17444b763812 + languageName: node + linkType: hard + +"dedent@npm:^1.0.0": + version: 1.5.3 + resolution: "dedent@npm:1.5.3" + peerDependencies: + babel-plugin-macros: ^3.1.0 + peerDependenciesMeta: + babel-plugin-macros: + optional: true + checksum: 045b595557b2a8ea2eb9b0b4623d764e9a87326486fe2b61191b4342ed93dc01245644d8a09f3108a50c0ee7965f1eedd92e4a3a503ed89ea8e810566ea27f9a + languageName: node + linkType: hard + +"deep-equal@npm:^2.0.5": + version: 2.2.3 + resolution: "deep-equal@npm:2.2.3" + dependencies: + array-buffer-byte-length: ^1.0.0 + call-bind: ^1.0.5 + es-get-iterator: ^1.1.3 + get-intrinsic: ^1.2.2 + is-arguments: ^1.1.1 + is-array-buffer: ^3.0.2 + is-date-object: ^1.0.5 + is-regex: ^1.1.4 + is-shared-array-buffer: ^1.0.2 + isarray: ^2.0.5 + object-is: ^1.1.5 + object-keys: ^1.1.1 + object.assign: ^4.1.4 + regexp.prototype.flags: ^1.5.1 + side-channel: ^1.0.4 + which-boxed-primitive: ^1.0.2 + which-collection: ^1.0.1 + which-typed-array: ^1.1.13 + checksum: ee8852f23e4d20a5626c13b02f415ba443a1b30b4b3d39eaf366d59c4a85e6545d7ec917db44d476a85ae5a86064f7e5f7af7479f38f113995ba869f3a1ddc53 + languageName: node + linkType: hard + +"deep-equal@npm:~1.0.1": + version: 1.0.1 + resolution: "deep-equal@npm:1.0.1" + checksum: 5af8cbfcebf190491878a498caccc7dc9592f8ebd1685b976eacc3825619d222b5e929923163b92c4f414494e2b884f7ebf00c022e8198e8292deb70dd9785f4 + languageName: node + linkType: hard + +"deep-extend@npm:0.6.0, deep-extend@npm:^0.6.0": + version: 0.6.0 + resolution: "deep-extend@npm:0.6.0" + checksum: 7be7e5a8d468d6b10e6a67c3de828f55001b6eb515d014f7aeb9066ce36bd5717161eb47d6a0f7bed8a9083935b465bc163ee2581c8b128d29bf61092fdf57a7 + languageName: node + linkType: hard + +"deep-freeze@npm:0.0.1": + version: 0.0.1 + resolution: "deep-freeze@npm:0.0.1" + checksum: 1e43c98e44c7849382d9f896e679d48a1b5bf40993f7cc858e3730ef4e2ba387b9b7b7fe722cac34febe7f6a564cd242c27bbc319e8df793c2a287f21e5ba038 + languageName: node + linkType: hard + +"deep-is@npm:^0.1.3, deep-is@npm:~0.1.3": + version: 0.1.4 + resolution: "deep-is@npm:0.1.4" + checksum: edb65dd0d7d1b9c40b2f50219aef30e116cedd6fc79290e740972c132c09106d2e80aa0bc8826673dd5a00222d4179c84b36a790eef63a4c4bca75a37ef90804 + languageName: node + linkType: hard + +"deepmerge@npm:^4.2.2, deepmerge@npm:^4.3.1, deepmerge@npm:~4.3.0": + version: 4.3.1 + resolution: "deepmerge@npm:4.3.1" + checksum: 2024c6a980a1b7128084170c4cf56b0fd58a63f2da1660dcfe977415f27b17dbe5888668b59d0b063753f3220719d5e400b7f113609489c90160bb9a5518d052 + languageName: node + linkType: hard + +"default-browser-id@npm:^5.0.0": + version: 5.0.0 + resolution: "default-browser-id@npm:5.0.0" + checksum: 185bfaecec2c75fa423544af722a3469b20704c8d1942794a86e4364fe7d9e8e9f63241a5b769d61c8151993bc65833a5b959026fa1ccea343b3db0a33aa6deb + languageName: node + linkType: hard + +"default-browser@npm:^5.2.1": + version: 5.2.1 + resolution: "default-browser@npm:5.2.1" + dependencies: + bundle-name: ^4.1.0 + default-browser-id: ^5.0.0 + checksum: afab7eff7b7f5f7a94d9114d1ec67273d3fbc539edf8c0f80019879d53aa71e867303c6f6d7cffeb10a6f3cfb59d4f963dba3f9c96830b4540cc7339a1bf9840 + languageName: node + linkType: hard + +"default-gateway@npm:^6.0.3": + version: 6.0.3 + resolution: "default-gateway@npm:6.0.3" + dependencies: + execa: ^5.0.0 + checksum: 126f8273ecac8ee9ff91ea778e8784f6cd732d77c3157e8c5bdd6ed03651b5291f71446d05bc02d04073b1e67583604db5394ea3cf992ede0088c70ea15b7378 + languageName: node + linkType: hard + +"defaults@npm:^1.0.3": + version: 1.0.4 + resolution: "defaults@npm:1.0.4" + dependencies: + clone: ^1.0.2 + checksum: 3a88b7a587fc076b84e60affad8b85245c01f60f38fc1d259e7ac1d89eb9ce6abb19e27215de46b98568dd5bc48471730b327637e6f20b0f1bc85cf00440c80a + languageName: node + linkType: hard + +"define-data-property@npm:^1.0.1, define-data-property@npm:^1.1.4": + version: 1.1.4 + resolution: "define-data-property@npm:1.1.4" + dependencies: + es-define-property: ^1.0.0 + es-errors: ^1.3.0 + gopd: ^1.0.1 + checksum: 8068ee6cab694d409ac25936eb861eea704b7763f7f342adbdfe337fc27c78d7ae0eff2364b2917b58c508d723c7a074326d068eef2e45c4edcd85cf94d0313b + languageName: node + linkType: hard + +"define-lazy-prop@npm:^2.0.0": + version: 2.0.0 + resolution: "define-lazy-prop@npm:2.0.0" + checksum: 0115fdb065e0490918ba271d7339c42453d209d4cb619dfe635870d906731eff3e1ade8028bb461ea27ce8264ec5e22c6980612d332895977e89c1bbc80fcee2 + languageName: node + linkType: hard + +"define-lazy-prop@npm:^3.0.0": + version: 3.0.0 + resolution: "define-lazy-prop@npm:3.0.0" + checksum: 54884f94caac0791bf6395a3ec530ce901cf71c47b0196b8754f3fd17edb6c0e80149c1214429d851873bb0d689dbe08dcedbb2306dc45c8534a5934723851b6 + languageName: node + linkType: hard + +"define-properties@npm:^1.1.3, define-properties@npm:^1.2.0, define-properties@npm:^1.2.1": + version: 1.2.1 + resolution: "define-properties@npm:1.2.1" + dependencies: + define-data-property: ^1.0.1 + has-property-descriptors: ^1.0.0 + object-keys: ^1.1.1 + checksum: b4ccd00597dd46cb2d4a379398f5b19fca84a16f3374e2249201992f36b30f6835949a9429669ee6b41b6e837205a163eadd745e472069e70dfc10f03e5fcc12 + languageName: node + linkType: hard + +"degenerator@npm:^5.0.0": + version: 5.0.1 + resolution: "degenerator@npm:5.0.1" + dependencies: + ast-types: ^0.13.4 + escodegen: ^2.1.0 + esprima: ^4.0.1 + checksum: a64fa39cdf6c2edd75188157d32338ee9de7193d7dbb2aeb4acb1eb30fa4a15ed80ba8dae9bd4d7b085472cf174a5baf81adb761aaa8e326771392c922084152 + languageName: node + linkType: hard + +"delaunator@npm:5": + version: 5.0.1 + resolution: "delaunator@npm:5.0.1" + dependencies: + robust-predicates: ^3.0.2 + checksum: 69ee43ec649b4a13b7f33c8a027fb3e8dfcb09266af324286118da757e04d3d39df619b905dca41421405c311317ccf632ecfa93db44519bacec3303c57c5a0b + languageName: node + linkType: hard + +"delaunator@npm:^4.0.0": + version: 4.0.1 + resolution: "delaunator@npm:4.0.1" + checksum: a49f1c23edbcb79079a13577d32fcd46d0db30879c8484f742a0d840923085f2f3de35a9bfbb96eadd12201ffb7c3adf45b0f528d08b71cb547c5f8068b5d61b + languageName: node + linkType: hard + +"delaunay-find@npm:0.0.6": + version: 0.0.6 + resolution: "delaunay-find@npm:0.0.6" + dependencies: + delaunator: ^4.0.0 + checksum: 072e197a4317dd06ff8349dfa6731f62d322c7ba4697d4a323da7798676f5c429c4ac691ae5207f7c7da567eca7c71dada896206cbd7995e6e9d145101734c31 + languageName: node + linkType: hard + +"delayed-stream@npm:~1.0.0": + version: 1.0.0 + resolution: "delayed-stream@npm:1.0.0" + checksum: 46fe6e83e2cb1d85ba50bd52803c68be9bd953282fa7096f51fc29edd5d67ff84ff753c51966061e5ba7cb5e47ef6d36a91924eddb7f3f3483b1c560f77a0020 + languageName: node + linkType: hard + +"delegates@npm:^1.0.0": + version: 1.0.0 + resolution: "delegates@npm:1.0.0" + checksum: a51744d9b53c164ba9c0492471a1a2ffa0b6727451bdc89e31627fdf4adda9d51277cfcbfb20f0a6f08ccb3c436f341df3e92631a3440226d93a8971724771fd + languageName: node + linkType: hard + +"denque@npm:^2.1.0": + version: 2.1.0 + resolution: "denque@npm:2.1.0" + checksum: 1d4ae1d05e59ac3a3481e7b478293f4b4c813819342273f3d5b826c7ffa9753c520919ba264f377e09108d24ec6cf0ec0ac729a5686cbb8f32d797126c5dae74 + languageName: node + linkType: hard + +"depd@npm:2.0.0, depd@npm:^2.0.0, depd@npm:~2.0.0": + version: 2.0.0 + resolution: "depd@npm:2.0.0" + checksum: abbe19c768c97ee2eed6282d8ce3031126662252c58d711f646921c9623f9052e3e1906443066beec1095832f534e57c523b7333f8e7e0d93051ab6baef5ab3a + languageName: node + linkType: hard + +"depd@npm:~1.1.2": + version: 1.1.2 + resolution: "depd@npm:1.1.2" + checksum: 6b406620d269619852885ce15965272b829df6f409724415e0002c8632ab6a8c0a08ec1f0bd2add05dc7bd7507606f7e2cc034fa24224ab829580040b835ecd9 + languageName: node + linkType: hard + +"dependency-graph@npm:0.11.0, dependency-graph@npm:~0.11.0": + version: 0.11.0 + resolution: "dependency-graph@npm:0.11.0" + checksum: 477204beaa9be69e642bc31ffe7a8c383d0cf48fa27acbc91c5df01431ab913e65c154213d2ef83d034c98d77280743ec85e5da018a97a18dd43d3c0b78b28cd + languageName: node + linkType: hard + +"deprecation@npm:^2.0.0, deprecation@npm:^2.3.1": + version: 2.3.1 + resolution: "deprecation@npm:2.3.1" + checksum: f56a05e182c2c195071385455956b0c4106fe14e36245b00c689ceef8e8ab639235176a96977ba7c74afb173317fac2e0ec6ec7a1c6d1e6eaa401c586c714132 + languageName: node + linkType: hard + +"dequal@npm:^2.0.0, dequal@npm:^2.0.3": + version: 2.0.3 + resolution: "dequal@npm:2.0.3" + checksum: 8679b850e1a3d0ebbc46ee780d5df7b478c23f335887464023a631d1b9af051ad4a6595a44220f9ff8ff95a8ddccf019b5ad778a976fd7bbf77383d36f412f90 + languageName: node + linkType: hard + +"des.js@npm:^1.0.0, des.js@npm:^1.1.0": + version: 1.1.0 + resolution: "des.js@npm:1.1.0" + dependencies: + inherits: ^2.0.1 + minimalistic-assert: ^1.0.0 + checksum: 0e9c1584b70d31e20f20a613fc9ef60fbc6a147dfec9e448a168794a4b97ac04d8dc47ea008f1fa93b0f8aaf7c1ead632a5e59ce1913a6079d2d244c9f5ebe33 + languageName: node + linkType: hard + +"destroy@npm:1.2.0, destroy@npm:^1.0.4": + version: 1.2.0 + resolution: "destroy@npm:1.2.0" + checksum: 0acb300b7478a08b92d810ab229d5afe0d2f4399272045ab22affa0d99dbaf12637659411530a6fcd597a9bdac718fc94373a61a95b4651bbc7b83684a565e38 + languageName: node + linkType: hard + +"destroyable-server@npm:^1.0.2": + version: 1.0.2 + resolution: "destroyable-server@npm:1.0.2" + dependencies: + "@types/node": "*" + checksum: 81fd70b9132d43c3633a7a819adfe1fc68b52a55154ff8a36f42f4655e7b71b8468559888caadfd324c1aa824f0d236796a8f356e8a00e7438649e647ea654b2 + languageName: node + linkType: hard + +"detect-indent@npm:^6.0.0": + version: 6.1.0 + resolution: "detect-indent@npm:6.1.0" + checksum: ab953a73c72dbd4e8fc68e4ed4bfd92c97eb6c43734af3900add963fd3a9316f3bc0578b018b24198d4c31a358571eff5f0656e81a1f3b9ad5c547d58b2d093d + languageName: node + linkType: hard + +"detect-libc@npm:^2.0.0": + version: 2.0.3 + resolution: "detect-libc@npm:2.0.3" + checksum: 2ba6a939ae55f189aea996ac67afceb650413c7a34726ee92c40fb0deb2400d57ef94631a8a3f052055eea7efb0f99a9b5e6ce923415daa3e68221f963cfc27d + languageName: node + linkType: hard + +"detect-newline@npm:^3.0.0": + version: 3.1.0 + resolution: "detect-newline@npm:3.1.0" + checksum: ae6cd429c41ad01b164c59ea36f264a2c479598e61cba7c99da24175a7ab80ddf066420f2bec9a1c57a6bead411b4655ff15ad7d281c000a89791f48cbe939e7 + languageName: node + linkType: hard + +"detect-node-es@npm:^1.1.0": + version: 1.1.0 + resolution: "detect-node-es@npm:1.1.0" + checksum: e46307d7264644975b71c104b9f028ed1d3d34b83a15b8a22373640ce5ea630e5640b1078b8ea15f202b54641da71e4aa7597093bd4b91f113db520a26a37449 + languageName: node + linkType: hard + +"detect-node@npm:^2.0.4": + version: 2.1.0 + resolution: "detect-node@npm:2.1.0" + checksum: 832184ec458353e41533ac9c622f16c19f7c02d8b10c303dfd3a756f56be93e903616c0bb2d4226183c9351c15fc0b3dba41a17a2308262afabcfa3776e6ae6e + languageName: node + linkType: hard + +"detect-port-alt@npm:^1.1.6": + version: 1.1.6 + resolution: "detect-port-alt@npm:1.1.6" + dependencies: + address: ^1.0.1 + debug: ^2.6.0 + bin: + detect: ./bin/detect-port + detect-port: ./bin/detect-port + checksum: 9dc37b1fa4a9dd6d4889e1045849b8d841232b598d1ca888bf712f4035b07a17cf6d537465a0d7323250048d3a5a0540e3b7cf89457efc222f96f77e2c40d16a + languageName: node + linkType: hard + +"dezalgo@npm:^1.0.4": + version: 1.0.4 + resolution: "dezalgo@npm:1.0.4" + dependencies: + asap: ^2.0.0 + wrappy: 1 + checksum: 895389c6aead740d2ab5da4d3466d20fa30f738010a4d3f4dcccc9fc645ca31c9d10b7e1804ae489b1eb02c7986f9f1f34ba132d409b043082a86d9a4e745624 + languageName: node + linkType: hard + +"diff-match-patch@npm:^1.0.5": + version: 1.0.5 + resolution: "diff-match-patch@npm:1.0.5" + checksum: 841522d01b09cccbc4e4402cf61514a81b906349a7d97b67222390f2d35cf5df277cb23959eeed212d5e46afb5629cebab41b87918672c5a05c11c73688630e3 + languageName: node + linkType: hard + +"diff-sequences@npm:^29.6.3": + version: 29.6.3 + resolution: "diff-sequences@npm:29.6.3" + checksum: f4914158e1f2276343d98ff5b31fc004e7304f5470bf0f1adb2ac6955d85a531a6458d33e87667f98f6ae52ebd3891bb47d420bb48a5bd8b7a27ee25b20e33aa + languageName: node + linkType: hard + +"diff3@npm:0.0.3": + version: 0.0.3 + resolution: "diff3@npm:0.0.3" + checksum: 28d883f1057b9873dfcb38cd2750337e6b32bf184bb1c0fb3292efeb83c597f1ce9b8f508bdd0d623a58b9ca1c917b1f297b90cb7fce3a62b26b0dde496f70e6 + languageName: node + linkType: hard + +"diff@npm:^4.0.1": + version: 4.0.2 + resolution: "diff@npm:4.0.2" + checksum: f2c09b0ce4e6b301c221addd83bf3f454c0bc00caa3dd837cf6c127d6edf7223aa2bbe3b688feea110b7f262adbfc845b757c44c8a9f8c0c5b15d8fa9ce9d20d + languageName: node + linkType: hard + +"diff@npm:^5.0.0": + version: 5.2.0 + resolution: "diff@npm:5.2.0" + checksum: 12b63ca9c36c72bafa3effa77121f0581b4015df18bc16bac1f8e263597735649f1a173c26f7eba17fb4162b073fee61788abe49610e6c70a2641fe1895443fd + languageName: node + linkType: hard + +"diffie-hellman@npm:^5.0.3": + version: 5.0.3 + resolution: "diffie-hellman@npm:5.0.3" + dependencies: + bn.js: ^4.1.0 + miller-rabin: ^4.0.0 + randombytes: ^2.0.0 + checksum: 0e620f322170c41076e70181dd1c24e23b08b47dbb92a22a644f3b89b6d3834b0f8ee19e37916164e5eb1ee26d2aa836d6129f92723995267250a0b541811065 + languageName: node + linkType: hard + +"dir-glob@npm:^3.0.1": + version: 3.0.1 + resolution: "dir-glob@npm:3.0.1" + dependencies: + path-type: ^4.0.0 + checksum: fa05e18324510d7283f55862f3161c6759a3f2f8dbce491a2fc14c8324c498286c54282c1f0e933cb930da8419b30679389499b919122952a4f8592362ef4615 + languageName: node + linkType: hard + +"discontinuous-range@npm:1.0.0": + version: 1.0.0 + resolution: "discontinuous-range@npm:1.0.0" + checksum: 8ee88d7082445b6eadc7c03bebe6dc978f96760c45e9f65d16ca66174d9e086a9e3855ee16acf65625e1a07a846a17de674f02a5964a6aebe5963662baf8b5c8 + languageName: node + linkType: hard + +"dns-packet@npm:^5.2.2": + version: 5.6.1 + resolution: "dns-packet@npm:5.6.1" + dependencies: + "@leichtgewicht/ip-codec": ^2.0.1 + checksum: 64c06457f0c6e143f7a0946e0aeb8de1c5f752217cfa143ef527467c00a6d78db1835cfdb6bb68333d9f9a4963cf23f410439b5262a8935cce1236f45e344b81 + languageName: node + linkType: hard + +"docker-compose@npm:^0.24.8": + version: 0.24.8 + resolution: "docker-compose@npm:0.24.8" + dependencies: + yaml: ^2.2.2 + checksum: 48f3564c46490f1f51899a144deb546b61450a76bffddb378379ac7702aa34b055e0237e0dc77507df94d7ad6f1f7daeeac27730230bce9aafe2e35efeda6b45 + languageName: node + linkType: hard + +"docker-modem@npm:^3.0.0": + version: 3.0.8 + resolution: "docker-modem@npm:3.0.8" + dependencies: + debug: ^4.1.1 + readable-stream: ^3.5.0 + split-ca: ^1.0.1 + ssh2: ^1.11.0 + checksum: e3675c9b1ad800be8fb1cb9c5621fbef20a75bfedcd6e01b69808eadd7f0165681e4e30d1700897b788a67dbf4769964fcccd19c3d66f6d2499bb7aede6b34df + languageName: node + linkType: hard + +"docker-modem@npm:^5.0.3": + version: 5.0.3 + resolution: "docker-modem@npm:5.0.3" + dependencies: + debug: ^4.1.1 + readable-stream: ^3.5.0 + split-ca: ^1.0.1 + ssh2: ^1.15.0 + checksum: 68f4948591622860ca95c10a01cae7f53ff2b2e8435b73b901698083b24ceb24208da12c1db2c47f073d48bc2f64a274cbf30e3c73979734f6fb3fbdf5bdb72e + languageName: node + linkType: hard + +"dockerode@npm:^3.3.5": + version: 3.3.5 + resolution: "dockerode@npm:3.3.5" + dependencies: + "@balena/dockerignore": ^1.0.2 + docker-modem: ^3.0.0 + tar-fs: ~2.0.1 + checksum: 7f6650422b07fa7ea9d5801f04b1a432634446b5fe37b995b8302b953b64e93abf1bb4596c2fb574ba47aafee685ef2ab959cc86c9654add5a26d09541bbbcc6 + languageName: node + linkType: hard + +"dockerode@npm:^4.0.0": + version: 4.0.2 + resolution: "dockerode@npm:4.0.2" + dependencies: + "@balena/dockerignore": ^1.0.2 + docker-modem: ^5.0.3 + tar-fs: ~2.0.1 + checksum: 4d36633d04ac5f662b0322d2fa4fe51fb1dd5a45f00b07379196ee5ff5dae13688a9ec1adf1edeaefab5eb22f3ae2219f62026241555a8bcf7edb396bbb5a92f + languageName: node + linkType: hard + +"doctrine@npm:^2.1.0": + version: 2.1.0 + resolution: "doctrine@npm:2.1.0" + dependencies: + esutils: ^2.0.2 + checksum: a45e277f7feaed309fe658ace1ff286c6e2002ac515af0aaf37145b8baa96e49899638c7cd47dccf84c3d32abfc113246625b3ac8f552d1046072adee13b0dc8 + languageName: node + linkType: hard + +"doctrine@npm:^3.0.0": + version: 3.0.0 + resolution: "doctrine@npm:3.0.0" + dependencies: + esutils: ^2.0.2 + checksum: fd7673ca77fe26cd5cba38d816bc72d641f500f1f9b25b83e8ce28827fe2da7ad583a8da26ab6af85f834138cf8dae9f69b0cd6ab925f52ddab1754db44d99ce + languageName: node + linkType: hard + +"dom-accessibility-api@npm:^0.5.9": + version: 0.5.16 + resolution: "dom-accessibility-api@npm:0.5.16" + checksum: 005eb283caef57fc1adec4d5df4dd49189b628f2f575af45decb210e04d634459e3f1ee64f18b41e2dcf200c844bc1d9279d80807e686a30d69a4756151ad248 + languageName: node + linkType: hard + +"dom-accessibility-api@npm:^0.6.3": + version: 0.6.3 + resolution: "dom-accessibility-api@npm:0.6.3" + checksum: c325b5144bb406df23f4affecffc117dbaec9af03daad9ee6b510c5be647b14d28ef0a4ea5ca06d696d8ab40bb777e5fed98b985976fdef9d8790178fa1d573f + languageName: node + linkType: hard + +"dom-converter@npm:^0.2.0": + version: 0.2.0 + resolution: "dom-converter@npm:0.2.0" + dependencies: + utila: ~0.4 + checksum: ea52fe303f5392e48dea563abef0e6fb3a478b8dbe3c599e99bb5d53981c6c38fc4944e56bb92a8ead6bb989d10b7914722ae11febbd2fd0910e33b9fc4aaa77 + languageName: node + linkType: hard + +"dom-helpers@npm:^5.0.1": + version: 5.2.1 + resolution: "dom-helpers@npm:5.2.1" + dependencies: + "@babel/runtime": ^7.8.7 + csstype: ^3.0.2 + checksum: 863ba9e086f7093df3376b43e74ce4422571d404fc9828bf2c56140963d5edf0e56160f9b2f3bb61b282c07f8fc8134f023c98fd684bddcb12daf7b0f14d951c + languageName: node + linkType: hard + +"dom-serializer@npm:^1.0.1": + version: 1.4.1 + resolution: "dom-serializer@npm:1.4.1" + dependencies: + domelementtype: ^2.0.1 + domhandler: ^4.2.0 + entities: ^2.0.0 + checksum: fbb0b01f87a8a2d18e6e5a388ad0f7ec4a5c05c06d219377da1abc7bb0f674d804f4a8a94e3f71ff15f6cb7dcfc75704a54b261db672b9b3ab03da6b758b0b22 + languageName: node + linkType: hard + +"dom-serializer@npm:^2.0.0": + version: 2.0.0 + resolution: "dom-serializer@npm:2.0.0" + dependencies: + domelementtype: ^2.3.0 + domhandler: ^5.0.2 + entities: ^4.2.0 + checksum: cd1810544fd8cdfbd51fa2c0c1128ec3a13ba92f14e61b7650b5de421b88205fd2e3f0cc6ace82f13334114addb90ed1c2f23074a51770a8e9c1273acbc7f3e6 + languageName: node + linkType: hard + +"domain-browser@npm:^1.1.1": + version: 1.2.0 + resolution: "domain-browser@npm:1.2.0" + checksum: 8f1235c7f49326fb762f4675795246a6295e7dd566b4697abec24afdba2460daa7dfbd1a73d31efbf5606b3b7deadb06ce47cf06f0a476e706153d62a4ff2b90 + languageName: node + linkType: hard + +"domelementtype@npm:^2.0.1, domelementtype@npm:^2.2.0, domelementtype@npm:^2.3.0": + version: 2.3.0 + resolution: "domelementtype@npm:2.3.0" + checksum: ee837a318ff702622f383409d1f5b25dd1024b692ef64d3096ff702e26339f8e345820f29a68bcdcea8cfee3531776b3382651232fbeae95612d6f0a75efb4f6 + languageName: node + linkType: hard + +"domexception@npm:^2.0.1": + version: 2.0.1 + resolution: "domexception@npm:2.0.1" + dependencies: + webidl-conversions: ^5.0.0 + checksum: d638e9cb05c52999f1b2eb87c374b03311ea5b1d69c2f875bc92da73e17db60c12142b45c950228642ff7f845c536b65305483350d080df59003a653da80b691 + languageName: node + linkType: hard + +"domexception@npm:^4.0.0": + version: 4.0.0 + resolution: "domexception@npm:4.0.0" + dependencies: + webidl-conversions: ^7.0.0 + checksum: ddbc1268edf33a8ba02ccc596735ede80375ee0cf124b30d2f05df5b464ba78ef4f49889b6391df4a04954e63d42d5631c7fcf8b1c4f12bc531252977a5f13d5 + languageName: node + linkType: hard + +"domhandler@npm:^4.0.0, domhandler@npm:^4.2.0, domhandler@npm:^4.3.1": + version: 4.3.1 + resolution: "domhandler@npm:4.3.1" + dependencies: + domelementtype: ^2.2.0 + checksum: 4c665ceed016e1911bf7d1dadc09dc888090b64dee7851cccd2fcf5442747ec39c647bb1cb8c8919f8bbdd0f0c625a6bafeeed4b2d656bbecdbae893f43ffaaa + languageName: node + linkType: hard + +"domhandler@npm:^5.0.2, domhandler@npm:^5.0.3": + version: 5.0.3 + resolution: "domhandler@npm:5.0.3" + dependencies: + domelementtype: ^2.3.0 + checksum: 0f58f4a6af63e6f3a4320aa446d28b5790a009018707bce2859dcb1d21144c7876482b5188395a188dfa974238c019e0a1e610d2fc269a12b2c192ea2b0b131c + languageName: node + linkType: hard + +"dompurify@npm:=3.1.6": + version: 3.1.6 + resolution: "dompurify@npm:3.1.6" + checksum: cc4fc4ccd9261fbceb2a1627a985c70af231274a26ddd3f643fd0616a0a44099bd9e4480940ce3655612063be4a1fe9f5e9309967526f8c0a99f931602323866 + languageName: node + linkType: hard + +"dompurify@npm:^2.2.7": + version: 2.5.8 + resolution: "dompurify@npm:2.5.8" + checksum: 8d7acd42bfc75d3dd9030d61201e346fffc4fd5f62e491a446564f0d5e0ffc1635712ccf7781302b00c4fefe412a030b5434c9e803605d81343e923b088cde7e + languageName: node + linkType: hard + +"dompurify@npm:^3.0.0": + version: 3.2.3 + resolution: "dompurify@npm:3.2.3" + dependencies: + "@types/trusted-types": ^2.0.7 + dependenciesMeta: + "@types/trusted-types": + optional: true + checksum: cd66ae8b22e1cfe5bc207b95fc119ce62f9a56eb313a9a1af6262d789d84e7bd27e29f26ed80110d108670dacb9527cb96ddf48a1da89126a37ec8b48702279a + languageName: node + linkType: hard + +"domutils@npm:^2.5.2, domutils@npm:^2.8.0": + version: 2.8.0 + resolution: "domutils@npm:2.8.0" + dependencies: + dom-serializer: ^1.0.1 + domelementtype: ^2.2.0 + domhandler: ^4.2.0 + checksum: abf7434315283e9aadc2a24bac0e00eab07ae4313b40cc239f89d84d7315ebdfd2fb1b5bf750a96bc1b4403d7237c7b2ebf60459be394d625ead4ca89b934391 + languageName: node + linkType: hard + +"domutils@npm:^3.0.1": + version: 3.1.0 + resolution: "domutils@npm:3.1.0" + dependencies: + dom-serializer: ^2.0.0 + domelementtype: ^2.3.0 + domhandler: ^5.0.3 + checksum: e5757456ddd173caa411cfc02c2bb64133c65546d2c4081381a3bafc8a57411a41eed70494551aa58030be9e58574fcc489828bebd673863d39924fb4878f416 + languageName: node + linkType: hard + +"dot-case@npm:^3.0.4": + version: 3.0.4 + resolution: "dot-case@npm:3.0.4" + dependencies: + no-case: ^3.0.4 + tslib: ^2.0.3 + checksum: a65e3519414856df0228b9f645332f974f2bf5433370f544a681122eab59e66038fc3349b4be1cdc47152779dac71a5864f1ccda2f745e767c46e9c6543b1169 + languageName: node + linkType: hard + +"drange@npm:^1.0.2": + version: 1.1.1 + resolution: "drange@npm:1.1.1" + checksum: 7e6ed639f9ab4d826e79717e2b0685a7ab02ecd39dac6483305dcc43ea2a27dc78b538e10adaba35c086efab216ef1f53f22bc402abfd0d29454b1c5f48fecd1 + languageName: node + linkType: hard + +"dset@npm:^3.1.2": + version: 3.1.4 + resolution: "dset@npm:3.1.4" + checksum: 9a7677e9ffd3c13ad850f7cf367aa94b39984006510e84c3c09b7b88bba0a5b3b7196d85a99d0c4cae4e47d67bdeca43dc1834a41d80f31bcdc86dd26121ecec + languageName: node + linkType: hard + +"dunder-proto@npm:^1.0.0": + version: 1.0.1 + resolution: "dunder-proto@npm:1.0.1" + dependencies: + call-bind-apply-helpers: ^1.0.1 + es-errors: ^1.3.0 + gopd: ^1.2.0 + checksum: 149207e36f07bd4941921b0ca929e3a28f1da7bd6b6ff8ff7f4e2f2e460675af4576eeba359c635723dc189b64cdd4787e0255897d5b135ccc5d15cb8685fc90 + languageName: node + linkType: hard + +"duplexer@npm:^0.1.2, duplexer@npm:~0.1.1": + version: 0.1.2 + resolution: "duplexer@npm:0.1.2" + checksum: 62ba61a830c56801db28ff6305c7d289b6dc9f859054e8c982abd8ee0b0a14d2e9a8e7d086ffee12e868d43e2bbe8a964be55ddbd8c8957714c87373c7a4f9b0 + languageName: node + linkType: hard + +"duplexify@npm:^3.5.1": + version: 3.7.1 + resolution: "duplexify@npm:3.7.1" + dependencies: + end-of-stream: ^1.0.0 + inherits: ^2.0.1 + readable-stream: ^2.0.0 + stream-shift: ^1.0.0 + checksum: 3c2ed2223d956a5da713dae12ba8295acb61d9acd966ccbba938090d04f4574ca4dca75cca089b5077c2d7e66101f32e6ea9b36a78ca213eff574e7a8b8accf2 + languageName: node + linkType: hard + +"duplexify@npm:^4.0.0, duplexify@npm:^4.1.3": + version: 4.1.3 + resolution: "duplexify@npm:4.1.3" + dependencies: + end-of-stream: ^1.4.1 + inherits: ^2.0.3 + readable-stream: ^3.1.1 + stream-shift: ^1.0.2 + checksum: 9636a027345de3dd3c801594d01a7c73d9ce260019538beb1ee650bba7544e72f40a4d4902b52e1ab283dc32a06f210d42748773af02ff15e3064a9659deab7f + languageName: node + linkType: hard + +"eastasianwidth@npm:^0.2.0": + version: 0.2.0 + resolution: "eastasianwidth@npm:0.2.0" + checksum: 7d00d7cd8e49b9afa762a813faac332dee781932d6f2c848dc348939c4253f1d4564341b7af1d041853bc3f32c2ef141b58e0a4d9862c17a7f08f68df1e0f1ed + languageName: node + linkType: hard + +"easy-table@npm:1.1.0": + version: 1.1.0 + resolution: "easy-table@npm:1.1.0" + dependencies: + wcwidth: ">=1.0.1" + dependenciesMeta: + wcwidth: + optional: true + checksum: 49b960fefe5670076773824386f22070dce185ebc0a99542035496700cc39a0b9346f65fd4307f5fe3dbbe7e6d9c4b59966e77e32f915e0fe71de71c3d0efcf7 + languageName: node + linkType: hard + +"easy-table@npm:1.2.0": + version: 1.2.0 + resolution: "easy-table@npm:1.2.0" + dependencies: + ansi-regex: ^5.0.1 + wcwidth: ^1.0.1 + dependenciesMeta: + wcwidth: + optional: true + checksum: 66961b19751a68d2d30ce9b74ef750c374cc3112bbcac3d1ed5a939e43c035ecf6b1954098df2d5b05f1e853ab2b67de893794390dcbf0abe1f157fddeb52174 + languageName: node + linkType: hard + +"ebnf@npm:^1.9.1": + version: 1.9.1 + resolution: "ebnf@npm:1.9.1" + bin: + ebnf: dist/bin.js + checksum: a361ac739a4981a75e15cd16e0dd0ee944977caa680e689240d5d8cda0cae75d869e5889b7457c0c201687206d6ee47bae3b247a20f851c3a2db457ed480cb87 + languageName: node + linkType: hard + +"ecc-jsbn@npm:~0.1.1": + version: 0.1.2 + resolution: "ecc-jsbn@npm:0.1.2" + dependencies: + jsbn: ~0.1.0 + safer-buffer: ^2.1.0 + checksum: 22fef4b6203e5f31d425f5b711eb389e4c6c2723402e389af394f8411b76a488fa414d309d866e2b577ce3e8462d344205545c88a8143cc21752a5172818888a + languageName: node + linkType: hard + +"ecdsa-sig-formatter@npm:1.0.11, ecdsa-sig-formatter@npm:^1.0.11": + version: 1.0.11 + resolution: "ecdsa-sig-formatter@npm:1.0.11" + dependencies: + safe-buffer: ^5.0.1 + checksum: 207f9ab1c2669b8e65540bce29506134613dd5f122cccf1e6a560f4d63f2732d427d938f8481df175505aad94583bcb32c688737bb39a6df0625f903d6d93c03 + languageName: node + linkType: hard + +"ee-first@npm:1.1.1": + version: 1.1.1 + resolution: "ee-first@npm:1.1.1" + checksum: 1b4cac778d64ce3b582a7e26b218afe07e207a0f9bfe13cc7395a6d307849cfe361e65033c3251e00c27dd060cab43014c2d6b2647676135e18b77d2d05b3f4f + languageName: node + linkType: hard + +"electron-to-chromium@npm:^1.5.41": + version: 1.5.49 + resolution: "electron-to-chromium@npm:1.5.49" + checksum: 84d4fde02a6de9464f8de2933e2172253098bf219a368cfd0e1ec71b73f9c0800a9ddf7bfdf57408e5fedef858561eaaf4e30ebbf20d94244a6001d570ce07a9 + languageName: node + linkType: hard + +"elliptic@npm:^6.5.3, elliptic@npm:^6.5.5": + version: 6.6.0 + resolution: "elliptic@npm:6.6.0" + dependencies: + bn.js: ^4.11.9 + brorand: ^1.1.0 + hash.js: ^1.0.0 + hmac-drbg: ^1.0.1 + inherits: ^2.0.4 + minimalistic-assert: ^1.0.1 + minimalistic-crypto-utils: ^1.0.1 + checksum: e912349b883e694bfe65005214237a470c9a098a6ba36fd24396d0ab07feb399920c0738aeed1aed6cf5dca9c64fd479e212faed3a75c9d81453671ef0de5157 + languageName: node + linkType: hard + +"emittery@npm:^0.13.1": + version: 0.13.1 + resolution: "emittery@npm:0.13.1" + checksum: 2b089ab6306f38feaabf4f6f02792f9ec85fc054fda79f44f6790e61bbf6bc4e1616afb9b232e0c5ec5289a8a452f79bfa6d905a6fd64e94b49981f0934001c6 + languageName: node + linkType: hard + +"emoji-regex@npm:^8.0.0": + version: 8.0.0 + resolution: "emoji-regex@npm:8.0.0" + checksum: d4c5c39d5a9868b5fa152f00cada8a936868fd3367f33f71be515ecee4c803132d11b31a6222b2571b1e5f7e13890156a94880345594d0ce7e3c9895f560f192 + languageName: node + linkType: hard + +"emoji-regex@npm:^9.2.2": + version: 9.2.2 + resolution: "emoji-regex@npm:9.2.2" + checksum: 8487182da74aabd810ac6d6f1994111dfc0e331b01271ae01ec1eb0ad7b5ecc2bbbbd2f053c05cb55a1ac30449527d819bbfbf0e3de1023db308cbcb47f86601 + languageName: node + linkType: hard + +"emojis-list@npm:^3.0.0": + version: 3.0.0 + resolution: "emojis-list@npm:3.0.0" + checksum: ddaaa02542e1e9436c03970eeed445f4ed29a5337dfba0fe0c38dfdd2af5da2429c2a0821304e8a8d1cadf27fdd5b22ff793571fa803ae16852a6975c65e8e70 + languageName: node + linkType: hard + +"enabled@npm:2.0.x": + version: 2.0.0 + resolution: "enabled@npm:2.0.0" + checksum: 9d256d89f4e8a46ff988c6a79b22fa814b4ffd82826c4fdacd9b42e9b9465709d3b748866d0ab4d442dfc6002d81de7f7b384146ccd1681f6a7f868d2acca063 + languageName: node + linkType: hard + +"encodeurl@npm:^1.0.2, encodeurl@npm:~1.0.2": + version: 1.0.2 + resolution: "encodeurl@npm:1.0.2" + checksum: e50e3d508cdd9c4565ba72d2012e65038e5d71bdc9198cb125beb6237b5b1ade6c0d343998da9e170fb2eae52c1bed37d4d6d98a46ea423a0cddbed5ac3f780c + languageName: node + linkType: hard + +"encodeurl@npm:~2.0.0": + version: 2.0.0 + resolution: "encodeurl@npm:2.0.0" + checksum: abf5cd51b78082cf8af7be6785813c33b6df2068ce5191a40ca8b1afe6a86f9230af9a9ce694a5ce4665955e5c1120871826df9c128a642e09c58d592e2807fe + languageName: node + linkType: hard + +"encoding@npm:^0.1.13": + version: 0.1.13 + resolution: "encoding@npm:0.1.13" + dependencies: + iconv-lite: ^0.6.2 + checksum: bb98632f8ffa823996e508ce6a58ffcf5856330fde839ae42c9e1f436cc3b5cc651d4aeae72222916545428e54fd0f6aa8862fd8d25bdbcc4589f1e3f3715e7f + languageName: node + linkType: hard + +"end-of-stream@npm:^1.0.0, end-of-stream@npm:^1.1.0, end-of-stream@npm:^1.4.1": + version: 1.4.4 + resolution: "end-of-stream@npm:1.4.4" + dependencies: + once: ^1.4.0 + checksum: 530a5a5a1e517e962854a31693dbb5c0b2fc40b46dad2a56a2deec656ca040631124f4795823acc68238147805f8b021abbe221f4afed5ef3c8e8efc2024908b + languageName: node + linkType: hard + +"enhanced-resolve@npm:^5.17.1": + version: 5.17.1 + resolution: "enhanced-resolve@npm:5.17.1" + dependencies: + graceful-fs: ^4.2.4 + tapable: ^2.2.0 + checksum: 4bc38cf1cea96456f97503db7280394177d1bc46f8f87c267297d04f795ac5efa81e48115a2f5b6273c781027b5b6bfc5f62b54df629e4d25fa7001a86624f59 + languageName: node + linkType: hard + +"enquirer@npm:^2.3.0": + version: 2.4.1 + resolution: "enquirer@npm:2.4.1" + dependencies: + ansi-colors: ^4.1.1 + strip-ansi: ^6.0.1 + checksum: f080f11a74209647dbf347a7c6a83c8a47ae1ebf1e75073a808bc1088eb780aa54075bfecd1bcdb3e3c724520edb8e6ee05da031529436b421b71066fcc48cb5 + languageName: node + linkType: hard + +"entities@npm:^2.0.0": + version: 2.2.0 + resolution: "entities@npm:2.2.0" + checksum: 19010dacaf0912c895ea262b4f6128574f9ccf8d4b3b65c7e8334ad0079b3706376360e28d8843ff50a78aabcb8f08f0a32dbfacdc77e47ed77ca08b713669b3 + languageName: node + linkType: hard + +"entities@npm:^4.2.0, entities@npm:^4.4.0, entities@npm:^4.5.0": + version: 4.5.0 + resolution: "entities@npm:4.5.0" + checksum: 853f8ebd5b425d350bffa97dd6958143179a5938352ccae092c62d1267c4e392a039be1bae7d51b6e4ffad25f51f9617531fedf5237f15df302ccfb452cbf2d7 + languageName: node + linkType: hard + +"entities@npm:~2.1.0": + version: 2.1.0 + resolution: "entities@npm:2.1.0" + checksum: a10a877e489586a3f6a691fe49bf3fc4e58f06c8e80522f08214a5150ba457e7017b447d4913a3fa041bda06ee4c92517baa4d8d75373eaa79369e9639225ffd + languageName: node + linkType: hard + +"env-paths@npm:^2.2.0": + version: 2.2.1 + resolution: "env-paths@npm:2.2.1" + checksum: 65b5df55a8bab92229ab2b40dad3b387fad24613263d103a97f91c9fe43ceb21965cd3392b1ccb5d77088021e525c4e0481adb309625d0cb94ade1d1fb8dc17e + languageName: node + linkType: hard + +"err-code@npm:^2.0.2": + version: 2.0.3 + resolution: "err-code@npm:2.0.3" + checksum: 8b7b1be20d2de12d2255c0bc2ca638b7af5171142693299416e6a9339bd7d88fc8d7707d913d78e0993176005405a236b066b45666b27b797252c771156ace54 + languageName: node + linkType: hard + +"error-ex@npm:^1.3.1": + version: 1.3.2 + resolution: "error-ex@npm:1.3.2" + dependencies: + is-arrayish: ^0.2.1 + checksum: c1c2b8b65f9c91b0f9d75f0debaa7ec5b35c266c2cac5de412c1a6de86d4cbae04ae44e510378cb14d032d0645a36925d0186f8bb7367bcc629db256b743a001 + languageName: node + linkType: hard + +"error-stack-parser@npm:^2.0.6": + version: 2.1.4 + resolution: "error-stack-parser@npm:2.1.4" + dependencies: + stackframe: ^1.3.4 + checksum: 3b916d2d14c6682f287c8bfa28e14672f47eafe832701080e420e7cdbaebb2c50293868256a95706ac2330fe078cf5664713158b49bc30d7a5f2ac229ded0e18 + languageName: node + linkType: hard + +"es-abstract@npm:^1.17.5, es-abstract@npm:^1.22.1, es-abstract@npm:^1.22.3, es-abstract@npm:^1.23.0, es-abstract@npm:^1.23.1, es-abstract@npm:^1.23.2, es-abstract@npm:^1.23.3": + version: 1.23.3 + resolution: "es-abstract@npm:1.23.3" + dependencies: + array-buffer-byte-length: ^1.0.1 + arraybuffer.prototype.slice: ^1.0.3 + available-typed-arrays: ^1.0.7 + call-bind: ^1.0.7 + data-view-buffer: ^1.0.1 + data-view-byte-length: ^1.0.1 + data-view-byte-offset: ^1.0.0 + es-define-property: ^1.0.0 + es-errors: ^1.3.0 + es-object-atoms: ^1.0.0 + es-set-tostringtag: ^2.0.3 + es-to-primitive: ^1.2.1 + function.prototype.name: ^1.1.6 + get-intrinsic: ^1.2.4 + get-symbol-description: ^1.0.2 + globalthis: ^1.0.3 + gopd: ^1.0.1 + has-property-descriptors: ^1.0.2 + has-proto: ^1.0.3 + has-symbols: ^1.0.3 + hasown: ^2.0.2 + internal-slot: ^1.0.7 + is-array-buffer: ^3.0.4 + is-callable: ^1.2.7 + is-data-view: ^1.0.1 + is-negative-zero: ^2.0.3 + is-regex: ^1.1.4 + is-shared-array-buffer: ^1.0.3 + is-string: ^1.0.7 + is-typed-array: ^1.1.13 + is-weakref: ^1.0.2 + object-inspect: ^1.13.1 + object-keys: ^1.1.1 + object.assign: ^4.1.5 + regexp.prototype.flags: ^1.5.2 + safe-array-concat: ^1.1.2 + safe-regex-test: ^1.0.3 + string.prototype.trim: ^1.2.9 + string.prototype.trimend: ^1.0.8 + string.prototype.trimstart: ^1.0.8 + typed-array-buffer: ^1.0.2 + typed-array-byte-length: ^1.0.1 + typed-array-byte-offset: ^1.0.2 + typed-array-length: ^1.0.6 + unbox-primitive: ^1.0.2 + which-typed-array: ^1.1.15 + checksum: f840cf161224252512f9527306b57117192696571e07920f777cb893454e32999206198b4f075516112af6459daca282826d1735c450528470356d09eff3a9ae + languageName: node + linkType: hard + +"es-aggregate-error@npm:^1.0.7": + version: 1.0.13 + resolution: "es-aggregate-error@npm:1.0.13" + dependencies: + define-data-property: ^1.1.4 + define-properties: ^1.2.1 + es-abstract: ^1.23.2 + es-errors: ^1.3.0 + function-bind: ^1.1.2 + globalthis: ^1.0.3 + has-property-descriptors: ^1.0.2 + set-function-name: ^2.0.2 + checksum: f29596a9267220850fd77cc32abec369ffdea8ccc05de3ca387e55cf1711db2d1f6cdd1384f5bb968dbfb3ae8371919e82a61edb7219123caa41b924f31f1821 + languageName: node + linkType: hard + +"es-define-property@npm:^1.0.0": + version: 1.0.0 + resolution: "es-define-property@npm:1.0.0" + dependencies: + get-intrinsic: ^1.2.4 + checksum: f66ece0a887b6dca71848fa71f70461357c0e4e7249696f81bad0a1f347eed7b31262af4a29f5d726dc026426f085483b6b90301855e647aa8e21936f07293c6 + languageName: node + linkType: hard + +"es-define-property@npm:^1.0.1": + version: 1.0.1 + resolution: "es-define-property@npm:1.0.1" + checksum: 0512f4e5d564021c9e3a644437b0155af2679d10d80f21adaf868e64d30efdfbd321631956f20f42d655fedb2e3a027da479fad3fa6048f768eb453a80a5f80a + languageName: node + linkType: hard + +"es-errors@npm:^1.2.1, es-errors@npm:^1.3.0": + version: 1.3.0 + resolution: "es-errors@npm:1.3.0" + checksum: ec1414527a0ccacd7f15f4a3bc66e215f04f595ba23ca75cdae0927af099b5ec865f9f4d33e9d7e86f512f252876ac77d4281a7871531a50678132429b1271b5 + languageName: node + linkType: hard + +"es-get-iterator@npm:^1.1.3": + version: 1.1.3 + resolution: "es-get-iterator@npm:1.1.3" + dependencies: + call-bind: ^1.0.2 + get-intrinsic: ^1.1.3 + has-symbols: ^1.0.3 + is-arguments: ^1.1.1 + is-map: ^2.0.2 + is-set: ^2.0.2 + is-string: ^1.0.7 + isarray: ^2.0.5 + stop-iteration-iterator: ^1.0.0 + checksum: 8fa118da42667a01a7c7529f8a8cca514feeff243feec1ce0bb73baaa3514560bd09d2b3438873cf8a5aaec5d52da248131de153b28e2638a061b6e4df13267d + languageName: node + linkType: hard + +"es-iterator-helpers@npm:^1.1.0": + version: 1.1.0 + resolution: "es-iterator-helpers@npm:1.1.0" + dependencies: + call-bind: ^1.0.7 + define-properties: ^1.2.1 + es-abstract: ^1.23.3 + es-errors: ^1.3.0 + es-set-tostringtag: ^2.0.3 + function-bind: ^1.1.2 + get-intrinsic: ^1.2.4 + globalthis: ^1.0.4 + has-property-descriptors: ^1.0.2 + has-proto: ^1.0.3 + has-symbols: ^1.0.3 + internal-slot: ^1.0.7 + iterator.prototype: ^1.1.3 + safe-array-concat: ^1.1.2 + checksum: 4ba3a32ab7ba05b85f0ae30604feeb8ffd801fe762e9df9577bd220a96b9eaa2e90af8e6bdc498e523051f293955e2f7d2bddd34de71e1428a1b8ff3fd961016 + languageName: node + linkType: hard + +"es-module-lexer@npm:^0.9.3": + version: 0.9.3 + resolution: "es-module-lexer@npm:0.9.3" + checksum: 84bbab23c396281db2c906c766af58b1ae2a1a2599844a504df10b9e8dc77ec800b3211fdaa133ff700f5703d791198807bba25d9667392d27a5e9feda344da8 + languageName: node + linkType: hard + +"es-module-lexer@npm:^1.2.1, es-module-lexer@npm:^1.3.1": + version: 1.5.4 + resolution: "es-module-lexer@npm:1.5.4" + checksum: a0cf04fb92d052647ac7d818d1913b98d3d3d0f5b9d88f0eafb993436e4c3e2c958599db68839d57f2dfa281fdf0f60e18d448eb78fc292c33c0f25635b6854f + languageName: node + linkType: hard + +"es-object-atoms@npm:^1.0.0": + version: 1.0.0 + resolution: "es-object-atoms@npm:1.0.0" + dependencies: + es-errors: ^1.3.0 + checksum: 26f0ff78ab93b63394e8403c353842b2272836968de4eafe97656adfb8a7c84b9099bf0fe96ed58f4a4cddc860f6e34c77f91649a58a5daa4a9c40b902744e3c + languageName: node + linkType: hard + +"es-set-tostringtag@npm:^2.0.3": + version: 2.0.3 + resolution: "es-set-tostringtag@npm:2.0.3" + dependencies: + get-intrinsic: ^1.2.4 + has-tostringtag: ^1.0.2 + hasown: ^2.0.1 + checksum: 7227fa48a41c0ce83e0377b11130d324ac797390688135b8da5c28994c0165be8b252e15cd1de41e1325e5a5412511586960213e88f9ab4a5e7d028895db5129 + languageName: node + linkType: hard + +"es-shim-unscopables@npm:^1.0.0, es-shim-unscopables@npm:^1.0.2": + version: 1.0.2 + resolution: "es-shim-unscopables@npm:1.0.2" + dependencies: + hasown: ^2.0.0 + checksum: 432bd527c62065da09ed1d37a3f8e623c423683285e6188108286f4a1e8e164a5bcbfbc0051557c7d14633cd2a41ce24c7048e6bbb66a985413fd32f1be72626 + languageName: node + linkType: hard + +"es-to-primitive@npm:^1.2.1": + version: 1.2.1 + resolution: "es-to-primitive@npm:1.2.1" + dependencies: + is-callable: ^1.1.4 + is-date-object: ^1.0.1 + is-symbol: ^1.0.2 + checksum: 4ead6671a2c1402619bdd77f3503991232ca15e17e46222b0a41a5d81aebc8740a77822f5b3c965008e631153e9ef0580540007744521e72de8e33599fca2eed + languageName: node + linkType: hard + +"es6-error@npm:^4.1.1": + version: 4.1.1 + resolution: "es6-error@npm:4.1.1" + checksum: ae41332a51ec1323da6bbc5d75b7803ccdeddfae17c41b6166ebbafc8e8beb7a7b80b884b7fab1cc80df485860ac3c59d78605e860bb4f8cd816b3d6ade0d010 + languageName: node + linkType: hard + +"esbuild-loader@npm:^2.18.0": + version: 2.21.0 + resolution: "esbuild-loader@npm:2.21.0" + dependencies: + esbuild: ^0.16.17 + joycon: ^3.0.1 + json5: ^2.2.0 + loader-utils: ^2.0.0 + tapable: ^2.2.0 + webpack-sources: ^1.4.3 + peerDependencies: + webpack: ^4.40.0 || ^5.0.0 + checksum: a0456ed7794e2c220a6068e92d739bc19765bff352bf7e44442aa8127631cc517ecd02a3ee969e31fa6b6a91befeac928296488c95e3818a776cd3b11d46348c + languageName: node + linkType: hard + +"esbuild-loader@npm:^4.0.0": + version: 4.2.2 + resolution: "esbuild-loader@npm:4.2.2" + dependencies: + esbuild: ^0.21.0 + get-tsconfig: ^4.7.0 + loader-utils: ^2.0.4 + webpack-sources: ^1.4.3 + peerDependencies: + webpack: ^4.40.0 || ^5.0.0 + checksum: 793d2482693c1c66298f63d7fdb62f2f3e314b006ade1dc3c46b46ade39777c5fba5930c2fa2752636c511997faa08d4a0f5d5b8a734b9046b3626aa6d5ab8e3 + languageName: node + linkType: hard + +"esbuild@npm:^0.16.17": + version: 0.16.17 + resolution: "esbuild@npm:0.16.17" + dependencies: + "@esbuild/android-arm": 0.16.17 + "@esbuild/android-arm64": 0.16.17 + "@esbuild/android-x64": 0.16.17 + "@esbuild/darwin-arm64": 0.16.17 + "@esbuild/darwin-x64": 0.16.17 + "@esbuild/freebsd-arm64": 0.16.17 + "@esbuild/freebsd-x64": 0.16.17 + "@esbuild/linux-arm": 0.16.17 + "@esbuild/linux-arm64": 0.16.17 + "@esbuild/linux-ia32": 0.16.17 + "@esbuild/linux-loong64": 0.16.17 + "@esbuild/linux-mips64el": 0.16.17 + "@esbuild/linux-ppc64": 0.16.17 + "@esbuild/linux-riscv64": 0.16.17 + "@esbuild/linux-s390x": 0.16.17 + "@esbuild/linux-x64": 0.16.17 + "@esbuild/netbsd-x64": 0.16.17 + "@esbuild/openbsd-x64": 0.16.17 + "@esbuild/sunos-x64": 0.16.17 + "@esbuild/win32-arm64": 0.16.17 + "@esbuild/win32-ia32": 0.16.17 + "@esbuild/win32-x64": 0.16.17 + dependenciesMeta: + "@esbuild/android-arm": + optional: true + "@esbuild/android-arm64": + optional: true + "@esbuild/android-x64": + optional: true + "@esbuild/darwin-arm64": + optional: true + "@esbuild/darwin-x64": + optional: true + "@esbuild/freebsd-arm64": + optional: true + "@esbuild/freebsd-x64": + optional: true + "@esbuild/linux-arm": + optional: true + "@esbuild/linux-arm64": + optional: true + "@esbuild/linux-ia32": + optional: true + "@esbuild/linux-loong64": + optional: true + "@esbuild/linux-mips64el": + optional: true + "@esbuild/linux-ppc64": + optional: true + "@esbuild/linux-riscv64": + optional: true + "@esbuild/linux-s390x": + optional: true + "@esbuild/linux-x64": + optional: true + "@esbuild/netbsd-x64": + optional: true + "@esbuild/openbsd-x64": + optional: true + "@esbuild/sunos-x64": + optional: true + "@esbuild/win32-arm64": + optional: true + "@esbuild/win32-ia32": + optional: true + "@esbuild/win32-x64": + optional: true + bin: + esbuild: bin/esbuild + checksum: 4c2cc609ecfb426554bc3f75beb92d89eb2d0c515cfceebaa36c7599d7dcaab7056b70f6d6b51e72b45951ddf9021ee28e356cf205f8e42cc055d522312ea30c + languageName: node + linkType: hard + +"esbuild@npm:^0.21.0": + version: 0.21.5 + resolution: "esbuild@npm:0.21.5" + dependencies: + "@esbuild/aix-ppc64": 0.21.5 + "@esbuild/android-arm": 0.21.5 + "@esbuild/android-arm64": 0.21.5 + "@esbuild/android-x64": 0.21.5 + "@esbuild/darwin-arm64": 0.21.5 + "@esbuild/darwin-x64": 0.21.5 + "@esbuild/freebsd-arm64": 0.21.5 + "@esbuild/freebsd-x64": 0.21.5 + "@esbuild/linux-arm": 0.21.5 + "@esbuild/linux-arm64": 0.21.5 + "@esbuild/linux-ia32": 0.21.5 + "@esbuild/linux-loong64": 0.21.5 + "@esbuild/linux-mips64el": 0.21.5 + "@esbuild/linux-ppc64": 0.21.5 + "@esbuild/linux-riscv64": 0.21.5 + "@esbuild/linux-s390x": 0.21.5 + "@esbuild/linux-x64": 0.21.5 + "@esbuild/netbsd-x64": 0.21.5 + "@esbuild/openbsd-x64": 0.21.5 + "@esbuild/sunos-x64": 0.21.5 + "@esbuild/win32-arm64": 0.21.5 + "@esbuild/win32-ia32": 0.21.5 + "@esbuild/win32-x64": 0.21.5 + dependenciesMeta: + "@esbuild/aix-ppc64": + optional: true + "@esbuild/android-arm": + optional: true + "@esbuild/android-arm64": + optional: true + "@esbuild/android-x64": + optional: true + "@esbuild/darwin-arm64": + optional: true + "@esbuild/darwin-x64": + optional: true + "@esbuild/freebsd-arm64": + optional: true + "@esbuild/freebsd-x64": + optional: true + "@esbuild/linux-arm": + optional: true + "@esbuild/linux-arm64": + optional: true + "@esbuild/linux-ia32": + optional: true + "@esbuild/linux-loong64": + optional: true + "@esbuild/linux-mips64el": + optional: true + "@esbuild/linux-ppc64": + optional: true + "@esbuild/linux-riscv64": + optional: true + "@esbuild/linux-s390x": + optional: true + "@esbuild/linux-x64": + optional: true + "@esbuild/netbsd-x64": + optional: true + "@esbuild/openbsd-x64": + optional: true + "@esbuild/sunos-x64": + optional: true + "@esbuild/win32-arm64": + optional: true + "@esbuild/win32-ia32": + optional: true + "@esbuild/win32-x64": + optional: true + bin: + esbuild: bin/esbuild + checksum: 2911c7b50b23a9df59a7d6d4cdd3a4f85855787f374dce751148dbb13305e0ce7e880dde1608c2ab7a927fc6cec3587b80995f7fc87a64b455f8b70b55fd8ec1 + languageName: node + linkType: hard + +"esbuild@npm:^0.23.0": + version: 0.23.1 + resolution: "esbuild@npm:0.23.1" + dependencies: + "@esbuild/aix-ppc64": 0.23.1 + "@esbuild/android-arm": 0.23.1 + "@esbuild/android-arm64": 0.23.1 + "@esbuild/android-x64": 0.23.1 + "@esbuild/darwin-arm64": 0.23.1 + "@esbuild/darwin-x64": 0.23.1 + "@esbuild/freebsd-arm64": 0.23.1 + "@esbuild/freebsd-x64": 0.23.1 + "@esbuild/linux-arm": 0.23.1 + "@esbuild/linux-arm64": 0.23.1 + "@esbuild/linux-ia32": 0.23.1 + "@esbuild/linux-loong64": 0.23.1 + "@esbuild/linux-mips64el": 0.23.1 + "@esbuild/linux-ppc64": 0.23.1 + "@esbuild/linux-riscv64": 0.23.1 + "@esbuild/linux-s390x": 0.23.1 + "@esbuild/linux-x64": 0.23.1 + "@esbuild/netbsd-x64": 0.23.1 + "@esbuild/openbsd-arm64": 0.23.1 + "@esbuild/openbsd-x64": 0.23.1 + "@esbuild/sunos-x64": 0.23.1 + "@esbuild/win32-arm64": 0.23.1 + "@esbuild/win32-ia32": 0.23.1 + "@esbuild/win32-x64": 0.23.1 + dependenciesMeta: + "@esbuild/aix-ppc64": + optional: true + "@esbuild/android-arm": + optional: true + "@esbuild/android-arm64": + optional: true + "@esbuild/android-x64": + optional: true + "@esbuild/darwin-arm64": + optional: true + "@esbuild/darwin-x64": + optional: true + "@esbuild/freebsd-arm64": + optional: true + "@esbuild/freebsd-x64": + optional: true + "@esbuild/linux-arm": + optional: true + "@esbuild/linux-arm64": + optional: true + "@esbuild/linux-ia32": + optional: true + "@esbuild/linux-loong64": + optional: true + "@esbuild/linux-mips64el": + optional: true + "@esbuild/linux-ppc64": + optional: true + "@esbuild/linux-riscv64": + optional: true + "@esbuild/linux-s390x": + optional: true + "@esbuild/linux-x64": + optional: true + "@esbuild/netbsd-x64": + optional: true + "@esbuild/openbsd-arm64": + optional: true + "@esbuild/openbsd-x64": + optional: true + "@esbuild/sunos-x64": + optional: true + "@esbuild/win32-arm64": + optional: true + "@esbuild/win32-ia32": + optional: true + "@esbuild/win32-x64": + optional: true + bin: + esbuild: bin/esbuild + checksum: 0413c3b9257327fb598427688b7186ea335bf1693746fe5713cc93c95854d6388b8ed4ad643fddf5b5ace093f7dcd9038dd58e087bf2da1f04dfb4c5571660af + languageName: node + linkType: hard + +"esbuild@npm:^0.24.0": + version: 0.24.0 + resolution: "esbuild@npm:0.24.0" + dependencies: + "@esbuild/aix-ppc64": 0.24.0 + "@esbuild/android-arm": 0.24.0 + "@esbuild/android-arm64": 0.24.0 + "@esbuild/android-x64": 0.24.0 + "@esbuild/darwin-arm64": 0.24.0 + "@esbuild/darwin-x64": 0.24.0 + "@esbuild/freebsd-arm64": 0.24.0 + "@esbuild/freebsd-x64": 0.24.0 + "@esbuild/linux-arm": 0.24.0 + "@esbuild/linux-arm64": 0.24.0 + "@esbuild/linux-ia32": 0.24.0 + "@esbuild/linux-loong64": 0.24.0 + "@esbuild/linux-mips64el": 0.24.0 + "@esbuild/linux-ppc64": 0.24.0 + "@esbuild/linux-riscv64": 0.24.0 + "@esbuild/linux-s390x": 0.24.0 + "@esbuild/linux-x64": 0.24.0 + "@esbuild/netbsd-x64": 0.24.0 + "@esbuild/openbsd-arm64": 0.24.0 + "@esbuild/openbsd-x64": 0.24.0 + "@esbuild/sunos-x64": 0.24.0 + "@esbuild/win32-arm64": 0.24.0 + "@esbuild/win32-ia32": 0.24.0 + "@esbuild/win32-x64": 0.24.0 + dependenciesMeta: + "@esbuild/aix-ppc64": + optional: true + "@esbuild/android-arm": + optional: true + "@esbuild/android-arm64": + optional: true + "@esbuild/android-x64": + optional: true + "@esbuild/darwin-arm64": + optional: true + "@esbuild/darwin-x64": + optional: true + "@esbuild/freebsd-arm64": + optional: true + "@esbuild/freebsd-x64": + optional: true + "@esbuild/linux-arm": + optional: true + "@esbuild/linux-arm64": + optional: true + "@esbuild/linux-ia32": + optional: true + "@esbuild/linux-loong64": + optional: true + "@esbuild/linux-mips64el": + optional: true + "@esbuild/linux-ppc64": + optional: true + "@esbuild/linux-riscv64": + optional: true + "@esbuild/linux-s390x": + optional: true + "@esbuild/linux-x64": + optional: true + "@esbuild/netbsd-x64": + optional: true + "@esbuild/openbsd-arm64": + optional: true + "@esbuild/openbsd-x64": + optional: true + "@esbuild/sunos-x64": + optional: true + "@esbuild/win32-arm64": + optional: true + "@esbuild/win32-ia32": + optional: true + "@esbuild/win32-x64": + optional: true + bin: + esbuild: bin/esbuild + checksum: dd386d92a05c7eb03078480522cdd8b40c434777b5f08487c27971d30933ecaae3f08bd221958dd8f9c66214915cdc85f844283ca9bdbf8ee703d889ae526edd + languageName: node + linkType: hard + +"escalade@npm:^3.1.1, escalade@npm:^3.2.0": + version: 3.2.0 + resolution: "escalade@npm:3.2.0" + checksum: 47b029c83de01b0d17ad99ed766347b974b0d628e848de404018f3abee728e987da0d2d370ad4574aa3d5b5bfc368754fd085d69a30f8e75903486ec4b5b709e + languageName: node + linkType: hard + +"escape-html@npm:^1.0.3, escape-html@npm:~1.0.3": + version: 1.0.3 + resolution: "escape-html@npm:1.0.3" + checksum: 6213ca9ae00d0ab8bccb6d8d4e0a98e76237b2410302cf7df70aaa6591d509a2a37ce8998008cbecae8fc8ffaadf3fb0229535e6a145f3ce0b211d060decbb24 + languageName: node + linkType: hard + +"escape-string-regexp@npm:^1.0.5": + version: 1.0.5 + resolution: "escape-string-regexp@npm:1.0.5" + checksum: 6092fda75c63b110c706b6a9bfde8a612ad595b628f0bd2147eea1d3406723020810e591effc7db1da91d80a71a737a313567c5abb3813e8d9c71f4aa595b410 + languageName: node + linkType: hard + +"escape-string-regexp@npm:^2.0.0": + version: 2.0.0 + resolution: "escape-string-regexp@npm:2.0.0" + checksum: 9f8a2d5743677c16e85c810e3024d54f0c8dea6424fad3c79ef6666e81dd0846f7437f5e729dfcdac8981bc9e5294c39b4580814d114076b8d36318f46ae4395 + languageName: node + linkType: hard + +"escape-string-regexp@npm:^4.0.0": + version: 4.0.0 + resolution: "escape-string-regexp@npm:4.0.0" + checksum: 98b48897d93060f2322108bf29db0feba7dd774be96cd069458d1453347b25ce8682ecc39859d4bca2203cc0ab19c237bcc71755eff49a0f8d90beadeeba5cc5 + languageName: node + linkType: hard + +"escape-string-regexp@npm:^5.0.0": + version: 5.0.0 + resolution: "escape-string-regexp@npm:5.0.0" + checksum: 20daabe197f3cb198ec28546deebcf24b3dbb1a5a269184381b3116d12f0532e06007f4bc8da25669d6a7f8efb68db0758df4cd981f57bc5b57f521a3e12c59e + languageName: node + linkType: hard + +"escodegen@npm:^1.8.1": + version: 1.14.3 + resolution: "escodegen@npm:1.14.3" + dependencies: + esprima: ^4.0.1 + estraverse: ^4.2.0 + esutils: ^2.0.2 + optionator: ^0.8.1 + source-map: ~0.6.1 + dependenciesMeta: + source-map: + optional: true + bin: + escodegen: bin/escodegen.js + esgenerate: bin/esgenerate.js + checksum: 381cdc4767ecdb221206bbbab021b467bbc2a6f5c9a99c9e6353040080bdd3dfe73d7604ad89a47aca6ea7d58bc635f6bd3fbc8da9a1998e9ddfa8372362ccd0 + languageName: node + linkType: hard + +"escodegen@npm:^2.0.0, escodegen@npm:^2.1.0": + version: 2.1.0 + resolution: "escodegen@npm:2.1.0" + dependencies: + esprima: ^4.0.1 + estraverse: ^5.2.0 + esutils: ^2.0.2 + source-map: ~0.6.1 + dependenciesMeta: + source-map: + optional: true + bin: + escodegen: bin/escodegen.js + esgenerate: bin/esgenerate.js + checksum: 096696407e161305cd05aebb95134ad176708bc5cb13d0dcc89a5fcbb959b8ed757e7f2591a5f8036f8f4952d4a724de0df14cd419e29212729fa6df5ce16bf6 + languageName: node + linkType: hard + +"eslint-config-prettier@npm:^8.10.0": + version: 8.10.0 + resolution: "eslint-config-prettier@npm:8.10.0" + peerDependencies: + eslint: ">=7.0.0" + bin: + eslint-config-prettier: bin/cli.js + checksum: 153266badd477e49b0759816246b2132f1dbdb6c7f313ca60a9af5822fd1071c2bc5684a3720d78b725452bbac04bb130878b2513aea5e72b1b792de5a69fec8 + languageName: node + linkType: hard + +"eslint-config-prettier@npm:^9.0.0": + version: 9.1.0 + resolution: "eslint-config-prettier@npm:9.1.0" + peerDependencies: + eslint: ">=7.0.0" + bin: + eslint-config-prettier: bin/cli.js + checksum: 9229b768c879f500ee54ca05925f31b0c0bafff3d9f5521f98ff05127356de78c81deb9365c86a5ec4efa990cb72b74df8612ae15965b14136044c73e1f6a907 + languageName: node + linkType: hard + +"eslint-formatter-friendly@npm:^7.0.0": + version: 7.0.0 + resolution: "eslint-formatter-friendly@npm:7.0.0" + dependencies: + "@babel/code-frame": 7.0.0 + chalk: 2.4.2 + extend: 3.0.2 + strip-ansi: 5.2.0 + text-table: 0.2.0 + checksum: e318768ac919993a234d38798544c5cf8e40ce05d6f2c028e4d0a4ac5c503a31609590ed67ceb31c98fae899b87950c6c805ad9e8c3a9060776daecda1bf1545 + languageName: node + linkType: hard + +"eslint-import-resolver-node@npm:^0.3.9": + version: 0.3.9 + resolution: "eslint-import-resolver-node@npm:0.3.9" + dependencies: + debug: ^3.2.7 + is-core-module: ^2.13.0 + resolve: ^1.22.4 + checksum: 439b91271236b452d478d0522a44482e8c8540bf9df9bd744062ebb89ab45727a3acd03366a6ba2bdbcde8f9f718bab7fe8db64688aca75acf37e04eafd25e22 + languageName: node + linkType: hard + +"eslint-module-utils@npm:^2.12.0": + version: 2.12.0 + resolution: "eslint-module-utils@npm:2.12.0" + dependencies: + debug: ^3.2.7 + peerDependenciesMeta: + eslint: + optional: true + checksum: be3ac52e0971c6f46daeb1a7e760e45c7c45f820c8cc211799f85f10f04ccbf7afc17039165d56cb2da7f7ca9cec2b3a777013cddf0b976784b37eb9efa24180 + languageName: node + linkType: hard + +"eslint-plugin-deprecation@npm:^2.0.0": + version: 2.0.0 + resolution: "eslint-plugin-deprecation@npm:2.0.0" + dependencies: + "@typescript-eslint/utils": ^6.0.0 + tslib: ^2.3.1 + tsutils: ^3.21.0 + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 + typescript: ^4.2.4 || ^5.0.0 + checksum: d79611e902ac419a21e51eab582fcdbcf8170aff820c5e5197e7d242e7ca6bda59c0077d88404970c25993017398dd65c96df7d31a833e332d45dd330935324b + languageName: node + linkType: hard + +"eslint-plugin-import@npm:^2.25.4": + version: 2.31.0 + resolution: "eslint-plugin-import@npm:2.31.0" + dependencies: + "@rtsao/scc": ^1.1.0 + array-includes: ^3.1.8 + array.prototype.findlastindex: ^1.2.5 + array.prototype.flat: ^1.3.2 + array.prototype.flatmap: ^1.3.2 + debug: ^3.2.7 + doctrine: ^2.1.0 + eslint-import-resolver-node: ^0.3.9 + eslint-module-utils: ^2.12.0 + hasown: ^2.0.2 + is-core-module: ^2.15.1 + is-glob: ^4.0.3 + minimatch: ^3.1.2 + object.fromentries: ^2.0.8 + object.groupby: ^1.0.3 + object.values: ^1.2.0 + semver: ^6.3.1 + string.prototype.trimend: ^1.0.8 + tsconfig-paths: ^3.15.0 + peerDependencies: + eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9 + checksum: b1d2ac268b3582ff1af2a72a2c476eae4d250c100f2e335b6e102036e4a35efa530b80ec578dfc36761fabb34a635b9bf5ab071abe9d4404a4bb054fdf22d415 + languageName: node + linkType: hard + +"eslint-plugin-jest@npm:^28.0.0": + version: 28.8.3 + resolution: "eslint-plugin-jest@npm:28.8.3" + dependencies: + "@typescript-eslint/utils": ^6.0.0 || ^7.0.0 || ^8.0.0 + peerDependencies: + "@typescript-eslint/eslint-plugin": ^6.0.0 || ^7.0.0 || ^8.0.0 + eslint: ^7.0.0 || ^8.0.0 || ^9.0.0 + jest: "*" + peerDependenciesMeta: + "@typescript-eslint/eslint-plugin": + optional: true + jest: + optional: true + checksum: e371fcbe2127a403824b6c23b66f6b2e2cc54074c3c70a9965d48bdcdfb461670965a7d7cdddab68f09e703d3a09a281d05591b1cb4315f5246d27fd8baa84ac + languageName: node + linkType: hard + +"eslint-plugin-jsx-a11y@npm:^6.5.1": + version: 6.10.2 + resolution: "eslint-plugin-jsx-a11y@npm:6.10.2" + dependencies: + aria-query: ^5.3.2 + array-includes: ^3.1.8 + array.prototype.flatmap: ^1.3.2 + ast-types-flow: ^0.0.8 + axe-core: ^4.10.0 + axobject-query: ^4.1.0 + damerau-levenshtein: ^1.0.8 + emoji-regex: ^9.2.2 + hasown: ^2.0.2 + jsx-ast-utils: ^3.3.5 + language-tags: ^1.0.9 + minimatch: ^3.1.2 + object.fromentries: ^2.0.8 + safe-regex-test: ^1.0.3 + string.prototype.includes: ^2.0.1 + peerDependencies: + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9 + checksum: 0cc861398fa26ada61ed5703eef5b335495fcb96253263dcd5e399488ff019a2636372021baacc040e3560d1a34bfcd5d5ad9f1754f44cd0509c956f7df94050 + languageName: node + linkType: hard + +"eslint-plugin-react-hooks@npm:^4.3.0": + version: 4.6.2 + resolution: "eslint-plugin-react-hooks@npm:4.6.2" + peerDependencies: + eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 + checksum: 395c433610f59577cfcf3f2e42bcb130436c8a0b3777ac64f441d88c5275f4fcfc89094cedab270f2822daf29af1079151a7a6579a8e9ea8cee66540ba0384c4 + languageName: node + linkType: hard + +"eslint-plugin-react@npm:^7.28.0": + version: 7.37.2 + resolution: "eslint-plugin-react@npm:7.37.2" + dependencies: + array-includes: ^3.1.8 + array.prototype.findlast: ^1.2.5 + array.prototype.flatmap: ^1.3.2 + array.prototype.tosorted: ^1.1.4 + doctrine: ^2.1.0 + es-iterator-helpers: ^1.1.0 + estraverse: ^5.3.0 + hasown: ^2.0.2 + jsx-ast-utils: ^2.4.1 || ^3.0.0 + minimatch: ^3.1.2 + object.entries: ^1.1.8 + object.fromentries: ^2.0.8 + object.values: ^1.2.0 + prop-types: ^15.8.1 + resolve: ^2.0.0-next.5 + semver: ^6.3.1 + string.prototype.matchall: ^4.0.11 + string.prototype.repeat: ^1.0.0 + peerDependencies: + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7 + checksum: 7f5203afee7fbe3702b27fdd2b9a3c0ccbbb47d0672f58311b9d8a08dea819c9da4a87c15e8bd508f2562f327a9d29ee8bd9cd189bf758d8dc903de5648b0bfa + languageName: node + linkType: hard + +"eslint-plugin-unused-imports@npm:^3.0.0": + version: 3.2.0 + resolution: "eslint-plugin-unused-imports@npm:3.2.0" + dependencies: + eslint-rule-composer: ^0.3.0 + peerDependencies: + "@typescript-eslint/eslint-plugin": 6 - 7 + eslint: 8 + peerDependenciesMeta: + "@typescript-eslint/eslint-plugin": + optional: true + checksum: e85ae4f3af489294ef5e0969ab904fa87f9fa7c959ca0804f30845438db4aeb0428ddad7ab06a70608e93121626799977241b442fdf126a4d0667be57390c3d6 + languageName: node + linkType: hard + +"eslint-rule-composer@npm:^0.3.0": + version: 0.3.0 + resolution: "eslint-rule-composer@npm:0.3.0" + checksum: c2f57cded8d1c8f82483e0ce28861214347e24fd79fd4144667974cd334d718f4ba05080aaef2399e3bbe36f7d6632865110227e6b176ed6daa2d676df9281b1 + languageName: node + linkType: hard + +"eslint-scope@npm:5.1.1": + version: 5.1.1 + resolution: "eslint-scope@npm:5.1.1" + dependencies: + esrecurse: ^4.3.0 + estraverse: ^4.1.1 + checksum: 47e4b6a3f0cc29c7feedee6c67b225a2da7e155802c6ea13bbef4ac6b9e10c66cd2dcb987867ef176292bf4e64eccc680a49e35e9e9c669f4a02bac17e86abdb + languageName: node + linkType: hard + +"eslint-scope@npm:^7.2.2": + version: 7.2.2 + resolution: "eslint-scope@npm:7.2.2" + dependencies: + esrecurse: ^4.3.0 + estraverse: ^5.2.0 + checksum: ec97dbf5fb04b94e8f4c5a91a7f0a6dd3c55e46bfc7bbcd0e3138c3a76977570e02ed89a1810c778dcd72072ff0e9621ba1379b4babe53921d71e2e4486fda3e + languageName: node + linkType: hard + +"eslint-visitor-keys@npm:^3.4.1, eslint-visitor-keys@npm:^3.4.3": + version: 3.4.3 + resolution: "eslint-visitor-keys@npm:3.4.3" + checksum: 36e9ef87fca698b6fd7ca5ca35d7b2b6eeaaf106572e2f7fd31c12d3bfdaccdb587bba6d3621067e5aece31c8c3a348b93922ab8f7b2cbc6aaab5e1d89040c60 + languageName: node + linkType: hard + +"eslint-webpack-plugin@npm:^3.2.0": + version: 3.2.0 + resolution: "eslint-webpack-plugin@npm:3.2.0" + dependencies: + "@types/eslint": ^7.29.0 || ^8.4.1 + jest-worker: ^28.0.2 + micromatch: ^4.0.5 + normalize-path: ^3.0.0 + schema-utils: ^4.0.0 + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 + webpack: ^5.0.0 + checksum: 095034c35e773fdb21ec7e597ae1f8a6899679c290db29d8568ca94619e8c7f4971f0f9edccc8a965322ab8af9286c87205985a38f4fdcf17654aee7cd8bb7b5 + languageName: node + linkType: hard + +"eslint-webpack-plugin@npm:^4.0.0": + version: 4.2.0 + resolution: "eslint-webpack-plugin@npm:4.2.0" + dependencies: + "@types/eslint": ^8.56.10 + jest-worker: ^29.7.0 + micromatch: ^4.0.5 + normalize-path: ^3.0.0 + schema-utils: ^4.2.0 + peerDependencies: + eslint: ^8.0.0 || ^9.0.0 + webpack: ^5.0.0 + checksum: 51538d60d0d0f3dd5774a4291af4620884a45a40270e2878c2f7c8dbff3584ef8588ffded8de696a4bbcee45bee219eba442eb503f5eddcc79aefeb4845985ae + languageName: node + linkType: hard + +"eslint@npm:^8.49.0, eslint@npm:^8.6.0": + version: 8.57.1 + resolution: "eslint@npm:8.57.1" + dependencies: + "@eslint-community/eslint-utils": ^4.2.0 + "@eslint-community/regexpp": ^4.6.1 + "@eslint/eslintrc": ^2.1.4 + "@eslint/js": 8.57.1 + "@humanwhocodes/config-array": ^0.13.0 + "@humanwhocodes/module-importer": ^1.0.1 + "@nodelib/fs.walk": ^1.2.8 + "@ungap/structured-clone": ^1.2.0 + ajv: ^6.12.4 + chalk: ^4.0.0 + cross-spawn: ^7.0.2 + debug: ^4.3.2 + doctrine: ^3.0.0 + escape-string-regexp: ^4.0.0 + eslint-scope: ^7.2.2 + eslint-visitor-keys: ^3.4.3 + espree: ^9.6.1 + esquery: ^1.4.2 + esutils: ^2.0.2 + fast-deep-equal: ^3.1.3 + file-entry-cache: ^6.0.1 + find-up: ^5.0.0 + glob-parent: ^6.0.2 + globals: ^13.19.0 + graphemer: ^1.4.0 + ignore: ^5.2.0 + imurmurhash: ^0.1.4 + is-glob: ^4.0.0 + is-path-inside: ^3.0.3 + js-yaml: ^4.1.0 + json-stable-stringify-without-jsonify: ^1.0.1 + levn: ^0.4.1 + lodash.merge: ^4.6.2 + minimatch: ^3.1.2 + natural-compare: ^1.4.0 + optionator: ^0.9.3 + strip-ansi: ^6.0.1 + text-table: ^0.2.0 + bin: + eslint: bin/eslint.js + checksum: e2489bb7f86dd2011967759a09164e65744ef7688c310bc990612fc26953f34cc391872807486b15c06833bdff737726a23e9b4cdba5de144c311377dc41d91b + languageName: node + linkType: hard + +"esm@npm:^3.2.25": + version: 3.2.25 + resolution: "esm@npm:3.2.25" + checksum: 978aabe2de83541c105605a6d60a26ed8e627ef6bb0a7605fe15a95bbdea6b8348bd045255cb22219c054dd09a81a94823df00843d9e97f42419c92015ce3a64 + languageName: node + linkType: hard + +"espree@npm:^9.6.0, espree@npm:^9.6.1": + version: 9.6.1 + resolution: "espree@npm:9.6.1" + dependencies: + acorn: ^8.9.0 + acorn-jsx: ^5.3.2 + eslint-visitor-keys: ^3.4.1 + checksum: eb8c149c7a2a77b3f33a5af80c10875c3abd65450f60b8af6db1bfcfa8f101e21c1e56a561c6dc13b848e18148d43469e7cd208506238554fb5395a9ea5a1ab9 + languageName: node + linkType: hard + +"esprima@npm:1.2.2": + version: 1.2.2 + resolution: "esprima@npm:1.2.2" + bin: + esparse: ./bin/esparse.js + esvalidate: ./bin/esvalidate.js + checksum: 4f10006f0e315f2f7d8cf6630e465f183512f1ab2e862b11785a133ce37ed1696573deefb5256e510eaa4368342b13b393334477f6ccdcdb8f10e782b0f5e6dc + languageName: node + linkType: hard + +"esprima@npm:^4.0.0, esprima@npm:^4.0.1": + version: 4.0.1 + resolution: "esprima@npm:4.0.1" + bin: + esparse: ./bin/esparse.js + esvalidate: ./bin/esvalidate.js + checksum: b45bc805a613dbea2835278c306b91aff6173c8d034223fa81498c77dcbce3b2931bf6006db816f62eacd9fd4ea975dfd85a5b7f3c6402cfd050d4ca3c13a628 + languageName: node + linkType: hard + +"esquery@npm:^1.4.2": + version: 1.6.0 + resolution: "esquery@npm:1.6.0" + dependencies: + estraverse: ^5.1.0 + checksum: 08ec4fe446d9ab27186da274d979558557fbdbbd10968fa9758552482720c54152a5640e08b9009e5a30706b66aba510692054d4129d32d0e12e05bbc0b96fb2 + languageName: node + linkType: hard + +"esrecurse@npm:^4.3.0": + version: 4.3.0 + resolution: "esrecurse@npm:4.3.0" + dependencies: + estraverse: ^5.2.0 + checksum: ebc17b1a33c51cef46fdc28b958994b1dc43cd2e86237515cbc3b4e5d2be6a811b2315d0a1a4d9d340b6d2308b15322f5c8291059521cc5f4802f65e7ec32837 + languageName: node + linkType: hard + +"estraverse@npm:^4.1.1, estraverse@npm:^4.2.0": + version: 4.3.0 + resolution: "estraverse@npm:4.3.0" + checksum: a6299491f9940bb246124a8d44b7b7a413a8336f5436f9837aaa9330209bd9ee8af7e91a654a3545aee9c54b3308e78ee360cef1d777d37cfef77d2fa33b5827 + languageName: node + linkType: hard + +"estraverse@npm:^5.1.0, estraverse@npm:^5.2.0, estraverse@npm:^5.3.0": + version: 5.3.0 + resolution: "estraverse@npm:5.3.0" + checksum: 072780882dc8416ad144f8fe199628d2b3e7bbc9989d9ed43795d2c90309a2047e6bc5979d7e2322a341163d22cfad9e21f4110597fe487519697389497e4e2b + languageName: node + linkType: hard + +"estree-walker@npm:^0.6.1": + version: 0.6.1 + resolution: "estree-walker@npm:0.6.1" + checksum: 9d6f82a4921f11eec18f8089fb3cce6e53bcf45a8e545c42a2674d02d055fb30f25f90495f8be60803df6c39680c80dcee7f944526867eb7aa1fc9254883b23d + languageName: node + linkType: hard + +"estree-walker@npm:^2.0.1, estree-walker@npm:^2.0.2": + version: 2.0.2 + resolution: "estree-walker@npm:2.0.2" + checksum: 6151e6f9828abe2259e57f5fd3761335bb0d2ebd76dc1a01048ccee22fabcfef3c0859300f6d83ff0d1927849368775ec5a6d265dde2f6de5a1be1721cd94efc + languageName: node + linkType: hard + +"esutils@npm:^2.0.2": + version: 2.0.3 + resolution: "esutils@npm:2.0.3" + checksum: 22b5b08f74737379a840b8ed2036a5fb35826c709ab000683b092d9054e5c2a82c27818f12604bfc2a9a76b90b6834ef081edbc1c7ae30d1627012e067c6ec87 + languageName: node + linkType: hard + +"etag@npm:~1.8.1": + version: 1.8.1 + resolution: "etag@npm:1.8.1" + checksum: 571aeb3dbe0f2bbd4e4fadbdb44f325fc75335cd5f6f6b6a091e6a06a9f25ed5392f0863c5442acb0646787446e816f13cbfc6edce5b07658541dff573cab1ff + languageName: node + linkType: hard + +"event-stream@npm:=3.3.4": + version: 3.3.4 + resolution: "event-stream@npm:3.3.4" + dependencies: + duplexer: ~0.1.1 + from: ~0 + map-stream: ~0.1.0 + pause-stream: 0.0.11 + split: 0.3 + stream-combiner: ~0.0.4 + through: ~2.3.1 + checksum: 80b467820b6daf824d9fb4345d2daf115a056e5c104463f2e98534e92d196a27f2df5ea2aa085624db26f4c45698905499e881d13bc7c01f7a13eac85be72a22 + languageName: node + linkType: hard + +"event-target-shim@npm:^5.0.0": + version: 5.0.1 + resolution: "event-target-shim@npm:5.0.1" + checksum: 1ffe3bb22a6d51bdeb6bf6f7cf97d2ff4a74b017ad12284cc9e6a279e727dc30a5de6bb613e5596ff4dc3e517841339ad09a7eec44266eccb1aa201a30448166 + languageName: node + linkType: hard + +"eventemitter3@npm:^3.1.0": + version: 3.1.2 + resolution: "eventemitter3@npm:3.1.2" + checksum: 81e4e82b8418f5cfd986d2b4a2fa5397ac4eb8134e09bcb47005545e22fdf8e9e61d5c053d34651112245aae411bdfe6d0ad5511da0400743fef5fc38bfcfbe3 + languageName: node + linkType: hard + +"eventemitter3@npm:^4.0.0, eventemitter3@npm:^4.0.4": + version: 4.0.7 + resolution: "eventemitter3@npm:4.0.7" + checksum: 1875311c42fcfe9c707b2712c32664a245629b42bb0a5a84439762dd0fd637fc54d078155ea83c2af9e0323c9ac13687e03cfba79b03af9f40c89b4960099374 + languageName: node + linkType: hard + +"events@npm:3.3.0, events@npm:^3.0.0, events@npm:^3.2.0, events@npm:^3.3.0": + version: 3.3.0 + resolution: "events@npm:3.3.0" + checksum: f6f487ad2198aa41d878fa31452f1a3c00958f46e9019286ff4787c84aac329332ab45c9cdc8c445928fc6d7ded294b9e005a7fce9426488518017831b272780 + languageName: node + linkType: hard + +"evp_bytestokey@npm:^1.0.0, evp_bytestokey@npm:^1.0.3": + version: 1.0.3 + resolution: "evp_bytestokey@npm:1.0.3" + dependencies: + md5.js: ^1.3.4 + node-gyp: latest + safe-buffer: ^5.1.1 + checksum: ad4e1577f1a6b721c7800dcc7c733fe01f6c310732bb5bf2240245c2a5b45a38518b91d8be2c610611623160b9d1c0e91f1ce96d639f8b53e8894625cf20fa45 + languageName: node + linkType: hard + +"execa@npm:5.1.1, execa@npm:^5.0.0": + version: 5.1.1 + resolution: "execa@npm:5.1.1" + dependencies: + cross-spawn: ^7.0.3 + get-stream: ^6.0.0 + human-signals: ^2.1.0 + is-stream: ^2.0.0 + merge-stream: ^2.0.0 + npm-run-path: ^4.0.1 + onetime: ^5.1.2 + signal-exit: ^3.0.3 + strip-final-newline: ^2.0.0 + checksum: fba9022c8c8c15ed862847e94c252b3d946036d7547af310e344a527e59021fd8b6bb0723883ea87044dc4f0201f949046993124a42ccb0855cae5bf8c786343 + languageName: node + linkType: hard + +"exit@npm:^0.1.2": + version: 0.1.2 + resolution: "exit@npm:0.1.2" + checksum: abc407f07a875c3961e4781dfcb743b58d6c93de9ab263f4f8c9d23bb6da5f9b7764fc773f86b43dd88030444d5ab8abcb611cb680fba8ca075362b77114bba3 + languageName: node + linkType: hard + +"expand-template@npm:^2.0.3": + version: 2.0.3 + resolution: "expand-template@npm:2.0.3" + checksum: 588c19847216421ed92befb521767b7018dc88f88b0576df98cb242f20961425e96a92cbece525ef28cc5becceae5d544ae0f5b9b5e2aa05acb13716ca5b3099 + languageName: node + linkType: hard + +"expand-tilde@npm:^2.0.0, expand-tilde@npm:^2.0.2": + version: 2.0.2 + resolution: "expand-tilde@npm:2.0.2" + dependencies: + homedir-polyfill: ^1.0.1 + checksum: 2efe6ed407d229981b1b6ceb552438fbc9e5c7d6a6751ad6ced3e0aa5cf12f0b299da695e90d6c2ac79191b5c53c613e508f7149e4573abfbb540698ddb7301a + languageName: node + linkType: hard + +"expect@npm:^29.0.0, expect@npm:^29.7.0": + version: 29.7.0 + resolution: "expect@npm:29.7.0" + dependencies: + "@jest/expect-utils": ^29.7.0 + jest-get-type: ^29.6.3 + jest-matcher-utils: ^29.7.0 + jest-message-util: ^29.7.0 + jest-util: ^29.7.0 + checksum: 9257f10288e149b81254a0fda8ffe8d54a7061cd61d7515779998b012579d2b8c22354b0eb901daf0145f347403da582f75f359f4810c007182ad3fb318b5c0c + languageName: node + linkType: hard + +"expiry-map@npm:^2.0.0": + version: 2.0.0 + resolution: "expiry-map@npm:2.0.0" + dependencies: + map-age-cleaner: ^0.2.0 + checksum: 9be8662e1a5c1084fb6d0ddc5402658dd06101c330454062b2f5efbf1477259d272e54ec16663d7d12a93d08ed510535781c36acb214696c5bc3a690a02a7a9d + languageName: node + linkType: hard + +"exponential-backoff@npm:^3.1.1": + version: 3.1.1 + resolution: "exponential-backoff@npm:3.1.1" + checksum: 3d21519a4f8207c99f7457287291316306255a328770d320b401114ec8481986e4e467e854cb9914dd965e0a1ca810a23ccb559c642c88f4c7f55c55778a9b48 + languageName: node + linkType: hard + +"express-openapi-validator@npm:^5.0.4": + version: 5.3.9 + resolution: "express-openapi-validator@npm:5.3.9" + dependencies: + "@apidevtools/json-schema-ref-parser": ^11.7.0 + "@types/multer": ^1.4.12 + ajv: ^8.17.1 + ajv-draft-04: ^1.0.0 + ajv-formats: ^2.1.1 + content-type: ^1.0.5 + json-schema-traverse: ^1.0.0 + lodash.clonedeep: ^4.5.0 + lodash.get: ^4.4.2 + media-typer: ^1.1.0 + multer: ^1.4.5-lts.1 + ono: ^7.1.3 + path-to-regexp: ^8.1.0 + peerDependencies: + express: "*" + checksum: 0469b383b769f070dfad9c9148b18857c5aaa9aa14c596e1ada155dac63e1c355e455d42f3c81af62c4aefd3db4ad8b892d34a432e170e4eb7af73d7dbd2f644 + languageName: node + linkType: hard + +"express-promise-router@npm:^4.1.0": + version: 4.1.1 + resolution: "express-promise-router@npm:4.1.1" + dependencies: + is-promise: ^4.0.0 + lodash.flattendeep: ^4.0.0 + methods: ^1.0.0 + peerDependencies: + "@types/express": ^4.0.0 + express: ^4.0.0 + peerDependenciesMeta: + "@types/express": + optional: true + checksum: e69ee7eb2c70470d5be71d34cd9275c26aae157c1ef16a21ecf53141e512fd4a6b5a68db89b30f745df941518505d00ec0a5e13f0becbd53ad63ffce3ed885f3 + languageName: node + linkType: hard + +"express-session@npm:^1.17.1": + version: 1.18.1 + resolution: "express-session@npm:1.18.1" + dependencies: + cookie: 0.7.2 + cookie-signature: 1.0.7 + debug: 2.6.9 + depd: ~2.0.0 + on-headers: ~1.0.2 + parseurl: ~1.3.3 + safe-buffer: 5.2.1 + uid-safe: ~2.1.5 + checksum: e712cb3399300d9e300b51769ee3e81da6a4a54acc39137945134bf61a452f27ee9afde337f3c0f300457a88b3a12d0b5c711625684d7c8d998e9d2bd34d9e18 + languageName: node + linkType: hard + +"express@npm:^4.14.0": + version: 4.21.2 + resolution: "express@npm:4.21.2" + dependencies: + accepts: ~1.3.8 + array-flatten: 1.1.1 + body-parser: 1.20.3 + content-disposition: 0.5.4 + content-type: ~1.0.4 + cookie: 0.7.1 + cookie-signature: 1.0.6 + debug: 2.6.9 + depd: 2.0.0 + encodeurl: ~2.0.0 + escape-html: ~1.0.3 + etag: ~1.8.1 + finalhandler: 1.3.1 + fresh: 0.5.2 + http-errors: 2.0.0 + merge-descriptors: 1.0.3 + methods: ~1.1.2 + on-finished: 2.4.1 + parseurl: ~1.3.3 + path-to-regexp: 0.1.12 + proxy-addr: ~2.0.7 + qs: 6.13.0 + range-parser: ~1.2.1 + safe-buffer: 5.2.1 + send: 0.19.0 + serve-static: 1.16.2 + setprototypeof: 1.2.0 + statuses: 2.0.1 + type-is: ~1.6.18 + utils-merge: 1.0.1 + vary: ~1.1.2 + checksum: 3aef1d355622732e20b8f3a7c112d4391d44e2131f4f449e1f273a309752a41abfad714e881f177645517cbe29b3ccdc10b35e7e25c13506114244a5b72f549d + languageName: node + linkType: hard + +"express@npm:^4.17.1, express@npm:^4.17.3, express@npm:^4.18.2, express@npm:^4.19.2": + version: 4.21.1 + resolution: "express@npm:4.21.1" + dependencies: + accepts: ~1.3.8 + array-flatten: 1.1.1 + body-parser: 1.20.3 + content-disposition: 0.5.4 + content-type: ~1.0.4 + cookie: 0.7.1 + cookie-signature: 1.0.6 + debug: 2.6.9 + depd: 2.0.0 + encodeurl: ~2.0.0 + escape-html: ~1.0.3 + etag: ~1.8.1 + finalhandler: 1.3.1 + fresh: 0.5.2 + http-errors: 2.0.0 + merge-descriptors: 1.0.3 + methods: ~1.1.2 + on-finished: 2.4.1 + parseurl: ~1.3.3 + path-to-regexp: 0.1.10 + proxy-addr: ~2.0.7 + qs: 6.13.0 + range-parser: ~1.2.1 + safe-buffer: 5.2.1 + send: 0.19.0 + serve-static: 1.16.2 + setprototypeof: 1.2.0 + statuses: 2.0.1 + type-is: ~1.6.18 + utils-merge: 1.0.1 + vary: ~1.1.2 + checksum: 5ac2b26d8aeddda5564fc0907227d29c100f90c0ead2ead9d474dc5108e8fb306c2de2083c4e3ba326e0906466f2b73417dbac16961f4075ff9f03785fd940fe + languageName: node + linkType: hard + +"extend@npm:3.0.2, extend@npm:^3.0.0, extend@npm:^3.0.2, extend@npm:~3.0.2": + version: 3.0.2 + resolution: "extend@npm:3.0.2" + checksum: a50a8309ca65ea5d426382ff09f33586527882cf532931cb08ca786ea3146c0553310bda688710ff61d7668eba9f96b923fe1420cdf56a2c3eaf30fcab87b515 + languageName: node + linkType: hard + +"extendable-error@npm:^0.1.5": + version: 0.1.7 + resolution: "extendable-error@npm:0.1.7" + checksum: 80478be7429a1675d2085f701239796bab3230ed6f2fb1b138fbabec24bea6516b7c5ceb6e9c209efcc9c089948d93715703845653535f8e8a49655066a9255e + languageName: node + linkType: hard + +"external-editor@npm:^3.0.3, external-editor@npm:^3.1.0": + version: 3.1.0 + resolution: "external-editor@npm:3.1.0" + dependencies: + chardet: ^0.7.0 + iconv-lite: ^0.4.24 + tmp: ^0.0.33 + checksum: 1c2a616a73f1b3435ce04030261bed0e22d4737e14b090bb48e58865da92529c9f2b05b893de650738d55e692d071819b45e1669259b2b354bc3154d27a698c7 + languageName: node + linkType: hard + +"extract-files@npm:^11.0.0": + version: 11.0.0 + resolution: "extract-files@npm:11.0.0" + checksum: 39ebd92772e9a1e30d1e3112fb7db85d353c8243640635668b615ac1d605ceb79fbb13d17829dd308993ef37bb189ad99817f79ab164ae95c9bb3df9f440bd16 + languageName: node + linkType: hard + +"extsprintf@npm:1.3.0": + version: 1.3.0 + resolution: "extsprintf@npm:1.3.0" + checksum: cee7a4a1e34cffeeec18559109de92c27517e5641991ec6bab849aa64e3081022903dd53084f2080d0d2530803aa5ee84f1e9de642c365452f9e67be8f958ce2 + languageName: node + linkType: hard + +"extsprintf@npm:^1.2.0": + version: 1.4.1 + resolution: "extsprintf@npm:1.4.1" + checksum: a2f29b241914a8d2bad64363de684821b6b1609d06ae68d5b539e4de6b28659715b5bea94a7265201603713b7027d35399d10b0548f09071c5513e65e8323d33 + languageName: node + linkType: hard + +"fast-copy@npm:^3.0.2": + version: 3.0.2 + resolution: "fast-copy@npm:3.0.2" + checksum: 47f584bcede08ab3198559d3e0e093a547d567715b86be2198da6e3366c3c73eed550d97b86f9fb90dae179982b89c15d68187def960f522cdce14bacdfc6184 + languageName: node + linkType: hard + +"fast-decode-uri-component@npm:^1.0.1": + version: 1.0.1 + resolution: "fast-decode-uri-component@npm:1.0.1" + checksum: 427a48fe0907e76f0e9a2c228e253b4d8a8ab21d130ee9e4bb8339c5ba4086235cf9576831f7b20955a752eae4b525a177ff9d5825dd8d416e7726939194fbee + languageName: node + linkType: hard + +"fast-deep-equal@npm:^3.1.1, fast-deep-equal@npm:^3.1.3": + version: 3.1.3 + resolution: "fast-deep-equal@npm:3.1.3" + checksum: e21a9d8d84f53493b6aa15efc9cfd53dd5b714a1f23f67fb5dc8f574af80df889b3bce25dc081887c6d25457cce704e636395333abad896ccdec03abaf1f3f9d + languageName: node + linkType: hard + +"fast-fifo@npm:^1.2.0, fast-fifo@npm:^1.3.2": + version: 1.3.2 + resolution: "fast-fifo@npm:1.3.2" + checksum: 6bfcba3e4df5af7be3332703b69a7898a8ed7020837ec4395bb341bd96cc3a6d86c3f6071dd98da289618cf2234c70d84b2a6f09a33dd6f988b1ff60d8e54275 + languageName: node + linkType: hard + +"fast-glob@npm:^3.2.9, fast-glob@npm:^3.3.2": + version: 3.3.2 + resolution: "fast-glob@npm:3.3.2" + dependencies: + "@nodelib/fs.stat": ^2.0.2 + "@nodelib/fs.walk": ^1.2.3 + glob-parent: ^5.1.2 + merge2: ^1.3.0 + micromatch: ^4.0.4 + checksum: 900e4979f4dbc3313840078419245621259f349950411ca2fa445a2f9a1a6d98c3b5e7e0660c5ccd563aa61abe133a21765c6c0dec8e57da1ba71d8000b05ec1 + languageName: node + linkType: hard + +"fast-json-parse@npm:^1.0.3": + version: 1.0.3 + resolution: "fast-json-parse@npm:1.0.3" + checksum: c19117c56ec18a9aa133c8ebf450c99d1037117e47a3cb9aff91b60580ba48d0fd8484b696c26749a1b9cb4914084177b3fa9ebef72063a74dee7d9ead987603 + languageName: node + linkType: hard + +"fast-json-patch@npm:^3.0.0-1, fast-json-patch@npm:^3.1.0, fast-json-patch@npm:^3.1.1": + version: 3.1.1 + resolution: "fast-json-patch@npm:3.1.1" + checksum: c4525b61b2471df60d4b025b4118b036d99778a93431aa44d1084218182841d82ce93056f0f3bbd731a24e6a8e69820128adf1873eb2199a26c62ef58d137833 + languageName: node + linkType: hard + +"fast-json-stable-stringify@npm:^2.0.0, fast-json-stable-stringify@npm:^2.1.0": + version: 2.1.0 + resolution: "fast-json-stable-stringify@npm:2.1.0" + checksum: b191531e36c607977e5b1c47811158733c34ccb3bfde92c44798929e9b4154884378536d26ad90dfecd32e1ffc09c545d23535ad91b3161a27ddbb8ebe0cbecb + languageName: node + linkType: hard + +"fast-levenshtein@npm:^2.0.6, fast-levenshtein@npm:~2.0.6": + version: 2.0.6 + resolution: "fast-levenshtein@npm:2.0.6" + checksum: 92cfec0a8dfafd9c7a15fba8f2cc29cd0b62b85f056d99ce448bbcd9f708e18ab2764bda4dd5158364f4145a7c72788538994f0d1787b956ef0d1062b0f7c24c + languageName: node + linkType: hard + +"fast-memoize@npm:^2.5.2": + version: 2.5.2 + resolution: "fast-memoize@npm:2.5.2" + checksum: 79fa759719ba4eac7e8c22fb3b0eb3f18f4a31e218c00b1eb4a5b53c5781921133a6b84472d59ec5a6ea8f26ad57b43cd99a350c0547ccce51489bc9a5f0b28d + languageName: node + linkType: hard + +"fast-querystring@npm:^1.1.1": + version: 1.1.2 + resolution: "fast-querystring@npm:1.1.2" + dependencies: + fast-decode-uri-component: ^1.0.1 + checksum: 7149f82ee9ac39a9c08c7ffe435b9f6deade76ae5e3675fe1835720513e8c4bc541e666b4b7b1c0c07e08f369dcf4828d00f2bee39889a90a168e1439cf27b0b + languageName: node + linkType: hard + +"fast-redact@npm:^2.0.0": + version: 2.1.0 + resolution: "fast-redact@npm:2.1.0" + checksum: ac096a93b44d6348fd6da4f289885465d2601fa5d37956f131394592af2c54d7af06caf177cd874a315253ee36542abc8008e3a2aee5809a20691788e3d04dd8 + languageName: node + linkType: hard + +"fast-safe-stringify@npm:2.1.1, fast-safe-stringify@npm:^2.0.6, fast-safe-stringify@npm:^2.0.7, fast-safe-stringify@npm:^2.1.1": + version: 2.1.1 + resolution: "fast-safe-stringify@npm:2.1.1" + checksum: a851cbddc451745662f8f00ddb622d6766f9bd97642dabfd9a405fb0d646d69fc0b9a1243cbf67f5f18a39f40f6fa821737651ff1bceeba06c9992ca2dc5bd3d + languageName: node + linkType: hard + +"fast-shallow-equal@npm:^1.0.0": + version: 1.0.0 + resolution: "fast-shallow-equal@npm:1.0.0" + checksum: ae89318ce43c0c46410d9511ac31520d59cfe675bad3d0b1cb5f900b2d635943d788b8370437178e91ae0d0412decc394229c03e69925ade929a8c02da241610 + languageName: node + linkType: hard + +"fast-uri@npm:^3.0.1": + version: 3.0.3 + resolution: "fast-uri@npm:3.0.3" + checksum: c52e6c86465f5c240e84a4485fb001088cc743d261a4b54b0050ce4758b1648bdbe53da1328ef9620149dca1435e3de64184f226d7c0a3656cb5837b3491e149 + languageName: node + linkType: hard + +"fast-xml-parser@npm:4.4.1": + version: 4.4.1 + resolution: "fast-xml-parser@npm:4.4.1" + dependencies: + strnum: ^1.0.5 + bin: + fxparser: src/cli/cli.js + checksum: f440c01cd141b98789ae777503bcb6727393296094cc82924ae9f88a5b971baa4eec7e65306c7e07746534caa661fc83694ff437d9012dc84dee39dfbfaab947 + languageName: node + linkType: hard + +"fast-xml-parser@npm:^4.4.1": + version: 4.5.0 + resolution: "fast-xml-parser@npm:4.5.0" + dependencies: + strnum: ^1.0.5 + bin: + fxparser: src/cli/cli.js + checksum: 696dc98da46f0f48eb26dfe1640a53043ea64f2420056374e62abbb5e620f092f8df3c3ff3195505a2eefab2057db3bf0ebaac63557f277934f6cce4e7da027c + languageName: node + linkType: hard + +"fast-xml-parser@npm:^4.5.0": + version: 4.5.1 + resolution: "fast-xml-parser@npm:4.5.1" + dependencies: + strnum: ^1.0.5 + bin: + fxparser: src/cli/cli.js + checksum: aab32d7f08a95b20f9ecdc2d769531a9dc454faf12740873972f8169c04ab9335ac5df1029ebfe829a01ddbb0ec60572cb7769d6be2409e95a9be8fc6a86e92c + languageName: node + linkType: hard + +"fastest-stable-stringify@npm:^2.0.2": + version: 2.0.2 + resolution: "fastest-stable-stringify@npm:2.0.2" + checksum: 5e2cb166c7bb6f16ac25a1e4be17f6b8d2923234c80739e12c9d21dea376b3128b2c63f90aa2aae7746cfec4dcf188d1d4eb6a964bb484ca133f17c8e9acfacc + languageName: node + linkType: hard + +"fastq@npm:^1.6.0": + version: 1.17.1 + resolution: "fastq@npm:1.17.1" + dependencies: + reusify: ^1.0.4 + checksum: a8c5b26788d5a1763f88bae56a8ddeee579f935a831c5fe7a8268cea5b0a91fbfe705f612209e02d639b881d7b48e461a50da4a10cfaa40da5ca7cc9da098d88 + languageName: node + linkType: hard + +"fault@npm:^1.0.0": + version: 1.0.4 + resolution: "fault@npm:1.0.4" + dependencies: + format: ^0.2.0 + checksum: 5ac610d8b09424e0f2fa8cf913064372f2ee7140a203a79957f73ed557c0e79b1a3d096064d7f40bde8132a69204c1fe25ec23634c05c6da2da2039cff26c4e7 + languageName: node + linkType: hard + +"faye-websocket@npm:^0.11.3": + version: 0.11.4 + resolution: "faye-websocket@npm:0.11.4" + dependencies: + websocket-driver: ">=0.5.1" + checksum: d49a62caf027f871149fc2b3f3c7104dc6d62744277eb6f9f36e2d5714e847d846b9f7f0d0b7169b25a012e24a594cde11a93034b30732e4c683f20b8a5019fa + languageName: node + linkType: hard + +"fb-watchman@npm:^2.0.0": + version: 2.0.2 + resolution: "fb-watchman@npm:2.0.2" + dependencies: + bser: 2.1.1 + checksum: b15a124cef28916fe07b400eb87cbc73ca082c142abf7ca8e8de6af43eca79ca7bd13eb4d4d48240b3bd3136eaac40d16e42d6edf87a8e5d1dd8070626860c78 + languageName: node + linkType: hard + +"fecha@npm:^4.2.0": + version: 4.2.3 + resolution: "fecha@npm:4.2.3" + checksum: f94e2fb3acf5a7754165d04549460d3ae6c34830394d20c552197e3e000035d69732d74af04b9bed3283bf29fe2a9ebdcc0085e640b0be3cc3658b9726265e31 + languageName: node + linkType: hard + +"figures@npm:^3.0.0": + version: 3.2.0 + resolution: "figures@npm:3.2.0" + dependencies: + escape-string-regexp: ^1.0.5 + checksum: 85a6ad29e9aca80b49b817e7c89ecc4716ff14e3779d9835af554db91bac41c0f289c418923519392a1e582b4d10482ad282021330cd045bb7b80c84152f2a2b + languageName: node + linkType: hard + +"file-entry-cache@npm:^6.0.1": + version: 6.0.1 + resolution: "file-entry-cache@npm:6.0.1" + dependencies: + flat-cache: ^3.0.4 + checksum: f49701feaa6314c8127c3c2f6173cfefff17612f5ed2daaafc6da13b5c91fd43e3b2a58fd0d63f9f94478a501b167615931e7200e31485e320f74a33885a9c74 + languageName: node + linkType: hard + +"file-selector@npm:^2.1.0": + version: 2.1.2 + resolution: "file-selector@npm:2.1.2" + dependencies: + tslib: ^2.7.0 + checksum: 0e7c5233ca7d33a05eb99236e8cfc843ea304335589d954393aeb7c5b7595f30be23c79173d28180e728b6eb441cd1dd355d6ad7fbb03b8e4f37d20e3d5c3184 + languageName: node + linkType: hard + +"file-type@npm:^16.5.4": + version: 16.5.4 + resolution: "file-type@npm:16.5.4" + dependencies: + readable-web-to-node-stream: ^3.0.0 + strtok3: ^6.2.4 + token-types: ^4.1.1 + checksum: d983c0f36491c57fcb6cc70fcb02c36d6b53f312a15053263e1924e28ca8314adf0db32170801ad777f09432c32155f31715ceaee66310947731588120d7ec27 + languageName: node + linkType: hard + +"file-uri-to-path@npm:1.0.0": + version: 1.0.0 + resolution: "file-uri-to-path@npm:1.0.0" + checksum: b648580bdd893a008c92c7ecc96c3ee57a5e7b6c4c18a9a09b44fb5d36d79146f8e442578bc0e173dc027adf3987e254ba1dfd6e3ec998b7c282873010502144 + languageName: node + linkType: hard + +"filesize@npm:^8.0.6": + version: 8.0.7 + resolution: "filesize@npm:8.0.7" + checksum: 8603d27c5287b984cb100733640645e078f5f5ad65c6d913173e01fb99e09b0747828498fd86647685ccecb69be31f3587b9739ab1e50732116b2374aff4cbf9 + languageName: node + linkType: hard + +"fill-range@npm:^7.1.1": + version: 7.1.1 + resolution: "fill-range@npm:7.1.1" + dependencies: + to-regex-range: ^5.0.1 + checksum: b4abfbca3839a3d55e4ae5ec62e131e2e356bf4859ce8480c64c4876100f4df292a63e5bb1618e1d7460282ca2b305653064f01654474aa35c68000980f17798 + languageName: node + linkType: hard + +"finalhandler@npm:1.1.2": + version: 1.1.2 + resolution: "finalhandler@npm:1.1.2" + dependencies: + debug: 2.6.9 + encodeurl: ~1.0.2 + escape-html: ~1.0.3 + on-finished: ~2.3.0 + parseurl: ~1.3.3 + statuses: ~1.5.0 + unpipe: ~1.0.0 + checksum: 617880460c5138dd7ccfd555cb5dde4d8f170f4b31b8bd51e4b646bb2946c30f7db716428a1f2882d730d2b72afb47d1f67cc487b874cb15426f95753a88965e + languageName: node + linkType: hard + +"finalhandler@npm:1.3.1": + version: 1.3.1 + resolution: "finalhandler@npm:1.3.1" + dependencies: + debug: 2.6.9 + encodeurl: ~2.0.0 + escape-html: ~1.0.3 + on-finished: 2.4.1 + parseurl: ~1.3.3 + statuses: 2.0.1 + unpipe: ~1.0.0 + checksum: a8c58cd97c9cd47679a870f6833a7b417043f5a288cd6af6d0f49b476c874a506100303a128b6d3b654c3d74fa4ff2ffed68a48a27e8630cda5c918f2977dcf4 + languageName: node + linkType: hard + +"find-file-up@npm:^2.0.1": + version: 2.0.1 + resolution: "find-file-up@npm:2.0.1" + dependencies: + resolve-dir: ^1.0.1 + checksum: dfe820bfb80e75bed5dd5080057858c0ad2393e1438c48a3bb682663e9ecdcfbe3224ed4768bfedd00776800b4ae76bc8953d250d15ae3feabf381d2c6d04268 + languageName: node + linkType: hard + +"find-pkg@npm:2.0.0": + version: 2.0.0 + resolution: "find-pkg@npm:2.0.0" + dependencies: + find-file-up: ^2.0.1 + checksum: 44785204c8bbbdfeaece6b834ba81a35163421c30e20f531281d26e6b5890663d7ac884b82a9aebf6ce23e479336cd6f70ea5597da35495c16abdeba2fd4f845 + languageName: node + linkType: hard + +"find-root@npm:^1.1.0": + version: 1.1.0 + resolution: "find-root@npm:1.1.0" + checksum: b2a59fe4b6c932eef36c45a048ae8f93c85640212ebe8363164814990ee20f154197505965f3f4f102efc33bfb1cbc26fd17c4a2fc739ebc51b886b137cbefaf + languageName: node + linkType: hard + +"find-up@npm:^2.1.0": + version: 2.1.0 + resolution: "find-up@npm:2.1.0" + dependencies: + locate-path: ^2.0.0 + checksum: 43284fe4da09f89011f08e3c32cd38401e786b19226ea440b75386c1b12a4cb738c94969808d53a84f564ede22f732c8409e3cfc3f7fb5b5c32378ad0bbf28bd + languageName: node + linkType: hard + +"find-up@npm:^3.0.0": + version: 3.0.0 + resolution: "find-up@npm:3.0.0" + dependencies: + locate-path: ^3.0.0 + checksum: 38eba3fe7a66e4bc7f0f5a1366dc25508b7cfc349f852640e3678d26ad9a6d7e2c43eff0a472287de4a9753ef58f066a0ea892a256fa3636ad51b3fe1e17fae9 + languageName: node + linkType: hard + +"find-up@npm:^4.0.0, find-up@npm:^4.1.0": + version: 4.1.0 + resolution: "find-up@npm:4.1.0" + dependencies: + locate-path: ^5.0.0 + path-exists: ^4.0.0 + checksum: 4c172680e8f8c1f78839486e14a43ef82e9decd0e74145f40707cc42e7420506d5ec92d9a11c22bd2c48fb0c384ea05dd30e10dd152fefeec6f2f75282a8b844 + languageName: node + linkType: hard + +"find-up@npm:^5.0.0": + version: 5.0.0 + resolution: "find-up@npm:5.0.0" + dependencies: + locate-path: ^6.0.0 + path-exists: ^4.0.0 + checksum: 07955e357348f34660bde7920783204ff5a26ac2cafcaa28bace494027158a97b9f56faaf2d89a6106211a8174db650dd9f503f9c0d526b1202d5554a00b9095 + languageName: node + linkType: hard + +"flat-cache@npm:^3.0.4": + version: 3.2.0 + resolution: "flat-cache@npm:3.2.0" + dependencies: + flatted: ^3.2.9 + keyv: ^4.5.3 + rimraf: ^3.0.2 + checksum: e7e0f59801e288b54bee5cb9681e9ee21ee28ef309f886b312c9d08415b79fc0f24ac842f84356ce80f47d6a53de62197ce0e6e148dc42d5db005992e2a756ec + languageName: node + linkType: hard + +"flatstr@npm:^1.0.12": + version: 1.0.12 + resolution: "flatstr@npm:1.0.12" + checksum: e1bb562c94b119e958bf37e55738b172b5f8aaae6532b9660ecd877779f8559dbbc89613ba6b29ccc13447e14c59277d41450f785cf75c30df9fce62f459e9a8 + languageName: node + linkType: hard + +"flatted@npm:3.3.2": + version: 3.3.2 + resolution: "flatted@npm:3.3.2" + checksum: ac3c159742e01d0e860a861164bcfd35bb567ccbebb8a0dd041e61cf3c64a435b917dd1e7ed1c380c2ebca85735fb16644485ec33665bc6aafc3b316aa1eed44 + languageName: node + linkType: hard + +"flatted@npm:^3.2.7, flatted@npm:^3.2.9": + version: 3.3.1 + resolution: "flatted@npm:3.3.1" + checksum: 85ae7181650bb728c221e7644cbc9f4bf28bc556f2fc89bb21266962bdf0ce1029cc7acc44bb646cd469d9baac7c317f64e841c4c4c00516afa97320cdac7f94 + languageName: node + linkType: hard + +"fn.name@npm:1.x.x": + version: 1.1.0 + resolution: "fn.name@npm:1.1.0" + checksum: e357144f48cfc9a7f52a82bbc6c23df7c8de639fce049cac41d41d62cabb740cdb9f14eddc6485e29c933104455bdd7a69bb14a9012cef9cd4fa252a4d0cf293 + languageName: node + linkType: hard + +"focus-trap@npm:7.6.2": + version: 7.6.2 + resolution: "focus-trap@npm:7.6.2" + dependencies: + tabbable: ^6.2.0 + checksum: b5873f8e506d3f466d9823d2f144612d3938f3c74c3be3db922052e5e54fd41a3a46889f8219f16f60d1ce5aff9e0a7fef9dea03ca0da96820c2ea36243236f7 + languageName: node + linkType: hard + +"follow-redirects@npm:^1.0.0, follow-redirects@npm:^1.15.6": + version: 1.15.9 + resolution: "follow-redirects@npm:1.15.9" + peerDependenciesMeta: + debug: + optional: true + checksum: 859e2bacc7a54506f2bf9aacb10d165df78c8c1b0ceb8023f966621b233717dab56e8d08baadc3ad3b9db58af290413d585c999694b7c146aaf2616340c3d2a6 + languageName: node + linkType: hard + +"for-each@npm:^0.3.3": + version: 0.3.3 + resolution: "for-each@npm:0.3.3" + dependencies: + is-callable: ^1.1.3 + checksum: 6c48ff2bc63362319c65e2edca4a8e1e3483a2fabc72fbe7feaf8c73db94fc7861bd53bc02c8a66a0c1dd709da6b04eec42e0abdd6b40ce47305ae92a25e5d28 + languageName: node + linkType: hard + +"foreach@npm:^2.0.4": + version: 2.0.6 + resolution: "foreach@npm:2.0.6" + checksum: f7b68494545ee41cbd0b0425ebf5386c265dc38ef2a9b0d5cd91a1b82172e939b4cf9387f8e0ebf6db4e368fc79ed323f2198424d5c774515ac3ed9b08901c0e + languageName: node + linkType: hard + +"foreground-child@npm:^3.1.0": + version: 3.3.0 + resolution: "foreground-child@npm:3.3.0" + dependencies: + cross-spawn: ^7.0.0 + signal-exit: ^4.0.1 + checksum: 1989698488f725b05b26bc9afc8a08f08ec41807cd7b92ad85d96004ddf8243fd3e79486b8348c64a3011ae5cc2c9f0936af989e1f28339805d8bc178a75b451 + languageName: node + linkType: hard + +"forever-agent@npm:~0.6.1": + version: 0.6.1 + resolution: "forever-agent@npm:0.6.1" + checksum: 766ae6e220f5fe23676bb4c6a99387cec5b7b62ceb99e10923376e27bfea72f3c3aeec2ba5f45f3f7ba65d6616965aa7c20b15002b6860833bb6e394dea546a8 + languageName: node + linkType: hard + +"fork-ts-checker-webpack-plugin@npm:^6.5.0": + version: 6.5.3 + resolution: "fork-ts-checker-webpack-plugin@npm:6.5.3" + dependencies: + "@babel/code-frame": ^7.8.3 + "@types/json-schema": ^7.0.5 + chalk: ^4.1.0 + chokidar: ^3.4.2 + cosmiconfig: ^6.0.0 + deepmerge: ^4.2.2 + fs-extra: ^9.0.0 + glob: ^7.1.6 + memfs: ^3.1.2 + minimatch: ^3.0.4 + schema-utils: 2.7.0 + semver: ^7.3.2 + tapable: ^1.0.0 + peerDependencies: + eslint: ">= 6" + typescript: ">= 2.7" + vue-template-compiler: "*" + webpack: ">= 4" + peerDependenciesMeta: + eslint: + optional: true + vue-template-compiler: + optional: true + checksum: 9732a49bfeed8fc23e6e8a59795fa7c238edeba91040a9b520db54b4d316dda27f9f1893d360e296fd0ad8930627d364417d28a8c7007fba60cc730ebfce4956 + languageName: node + linkType: hard + +"fork-ts-checker-webpack-plugin@npm:^7.0.0-alpha.8": + version: 7.3.0 + resolution: "fork-ts-checker-webpack-plugin@npm:7.3.0" + dependencies: + "@babel/code-frame": ^7.16.7 + chalk: ^4.1.2 + chokidar: ^3.5.3 + cosmiconfig: ^7.0.1 + deepmerge: ^4.2.2 + fs-extra: ^10.0.0 + memfs: ^3.4.1 + minimatch: ^3.0.4 + node-abort-controller: ^3.0.1 + schema-utils: ^3.1.1 + semver: ^7.3.5 + tapable: ^2.2.1 + peerDependencies: + typescript: ">3.6.0" + vue-template-compiler: "*" + webpack: ^5.11.0 + peerDependenciesMeta: + vue-template-compiler: + optional: true + checksum: 49c2af801e264349a3fdf0afe4ad33065960c43bd7e56c8351a5e0d32c8c54146cc89d6a0b70b1e0f810de96787bd0c7fd275cc8727a9aea1a077c53de99659a + languageName: node + linkType: hard + +"fork-ts-checker-webpack-plugin@npm:^9.0.0": + version: 9.0.2 + resolution: "fork-ts-checker-webpack-plugin@npm:9.0.2" + dependencies: + "@babel/code-frame": ^7.16.7 + chalk: ^4.1.2 + chokidar: ^3.5.3 + cosmiconfig: ^8.2.0 + deepmerge: ^4.2.2 + fs-extra: ^10.0.0 + memfs: ^3.4.1 + minimatch: ^3.0.4 + node-abort-controller: ^3.0.1 + schema-utils: ^3.1.1 + semver: ^7.3.5 + tapable: ^2.2.1 + peerDependencies: + typescript: ">3.6.0" + webpack: ^5.11.0 + checksum: 136a87bfa36cb6ca27d2ae0feb3c6cabe0de734c1c1ed38f95b71ddb3eb4b6c461829a2dbb04f18f0f717fc6341f544327598255758c269cec9774ccee035afc + languageName: node + linkType: hard + +"form-data@npm:^2.3.2, form-data@npm:^2.5.0": + version: 2.5.2 + resolution: "form-data@npm:2.5.2" + dependencies: + asynckit: ^0.4.0 + combined-stream: ^1.0.6 + mime-types: ^2.1.12 + safe-buffer: ^5.2.1 + checksum: 89ed3d96238d6fa874d75435e20f1aad28a1c22a88ab4e726ac4f6b0d29bef33d7e5aca51248c1070eccbbf4df94020a53842e800b2f1fb63073881a268113b4 + languageName: node + linkType: hard + +"form-data@npm:^3.0.0": + version: 3.0.2 + resolution: "form-data@npm:3.0.2" + dependencies: + asynckit: ^0.4.0 + combined-stream: ^1.0.8 + mime-types: ^2.1.12 + checksum: 25ffdeed693c8fc59b56082d15ad63f11688fabac2d14918fb339170020f66295e520a6659f3a698217f15c7924fbc593117ecd61d8391a146ea06d686793622 + languageName: node + linkType: hard + +"form-data@npm:^4.0.0": + version: 4.0.1 + resolution: "form-data@npm:4.0.1" + dependencies: + asynckit: ^0.4.0 + combined-stream: ^1.0.8 + mime-types: ^2.1.12 + checksum: ccee458cd5baf234d6b57f349fe9cc5f9a2ea8fd1af5ecda501a18fd1572a6dd3bf08a49f00568afd995b6a65af34cb8dec083cf9d582c4e621836499498dd84 + languageName: node + linkType: hard + +"form-data@npm:~2.3.2": + version: 2.3.3 + resolution: "form-data@npm:2.3.3" + dependencies: + asynckit: ^0.4.0 + combined-stream: ^1.0.6 + mime-types: ^2.1.12 + checksum: 10c1780fa13dbe1ff3100114c2ce1f9307f8be10b14bf16e103815356ff567b6be39d70fc4a40f8990b9660012dc24b0f5e1dde1b6426166eb23a445ba068ca3 + languageName: node + linkType: hard + +"format@npm:^0.2.0": + version: 0.2.2 + resolution: "format@npm:0.2.2" + checksum: 646a60e1336250d802509cf24fb801e43bd4a70a07510c816fa133aa42cdbc9c21e66e9cc0801bb183c5b031c9d68be62e7fbb6877756e52357850f92aa28799 + languageName: node + linkType: hard + +"formidable@npm:^2.1.2": + version: 2.1.2 + resolution: "formidable@npm:2.1.2" + dependencies: + dezalgo: ^1.0.4 + hexoid: ^1.0.0 + once: ^1.4.0 + qs: ^6.11.0 + checksum: 81c8e5d89f5eb873e992893468f0de22c01678ca3d315db62be0560f9de1c77d4faefc9b1f4575098eb2263b3c81ba1024833a9fc3206297ddbac88a4f69b7a8 + languageName: node + linkType: hard + +"forwarded@npm:0.2.0": + version: 0.2.0 + resolution: "forwarded@npm:0.2.0" + checksum: fd27e2394d8887ebd16a66ffc889dc983fbbd797d5d3f01087c020283c0f019a7d05ee85669383d8e0d216b116d720fc0cef2f6e9b7eb9f4c90c6e0bc7fd28e6 + languageName: node + linkType: hard + +"framer-motion@npm:^6.5.1": + version: 6.5.1 + resolution: "framer-motion@npm:6.5.1" + dependencies: + "@emotion/is-prop-valid": ^0.8.2 + "@motionone/dom": 10.12.0 + framesync: 6.0.1 + hey-listen: ^1.0.8 + popmotion: 11.0.3 + style-value-types: 5.0.0 + tslib: ^2.1.0 + peerDependencies: + react: ">=16.8 || ^17.0.0 || ^18.0.0" + react-dom: ">=16.8 || ^17.0.0 || ^18.0.0" + dependenciesMeta: + "@emotion/is-prop-valid": + optional: true + checksum: 737959063137b4ccafe01e0ac0c9e5a9531bf3f729f62c34ca7a5d7955e6664f70affd22b044f7db51df41acb21d120a4f71a860e17a80c4db766ad66f2153a1 + languageName: node + linkType: hard + +"framesync@npm:6.0.1": + version: 6.0.1 + resolution: "framesync@npm:6.0.1" + dependencies: + tslib: ^2.1.0 + checksum: a23ebe8f7e20a32c0b99c2f8175b6f07af3ec6316aad52a2316316a6d011d717af8d2175dcc2827031c59fabb30232ed3e19a720a373caba7f070e1eae436325 + languageName: node + linkType: hard + +"free-style@npm:3.1.0": + version: 3.1.0 + resolution: "free-style@npm:3.1.0" + checksum: 949258ae315deda48cac93ecd5f9a80f36e8a027e19ce2103598dc8d5ab60e963bbad5444b2a4990ddb746798dd188896f430285cf484afbf2141f7d75a191d8 + languageName: node + linkType: hard + +"fresh@npm:0.5.2, fresh@npm:~0.5.2": + version: 0.5.2 + resolution: "fresh@npm:0.5.2" + checksum: 13ea8b08f91e669a64e3ba3a20eb79d7ca5379a81f1ff7f4310d54e2320645503cc0c78daedc93dfb6191287295f6479544a649c64d8e41a1c0fb0c221552346 + languageName: node + linkType: hard + +"from@npm:~0": + version: 0.1.7 + resolution: "from@npm:0.1.7" + checksum: b85125b7890489656eb2e4f208f7654a93ec26e3aefaf3bbbcc0d496fc1941e4405834fcc9fe7333192aa2187905510ace70417bbf9ac6f6f4784a731d986939 + languageName: node + linkType: hard + +"fromentries@npm:^1.3.1": + version: 1.3.2 + resolution: "fromentries@npm:1.3.2" + checksum: 33729c529ce19f5494f846f0dd4945078f4e37f4e8955f4ae8cc7385c218f600e9d93a7d225d17636c20d1889106fd87061f911550861b7072f53bf891e6b341 + languageName: node + linkType: hard + +"fs-constants@npm:^1.0.0": + version: 1.0.0 + resolution: "fs-constants@npm:1.0.0" + checksum: 18f5b718371816155849475ac36c7d0b24d39a11d91348cfcb308b4494824413e03572c403c86d3a260e049465518c4f0d5bd00f0371cdfcad6d4f30a85b350d + languageName: node + linkType: hard + +"fs-extra@npm:10.1.0, fs-extra@npm:^10.0.0, fs-extra@npm:^10.1.0": + version: 10.1.0 + resolution: "fs-extra@npm:10.1.0" + dependencies: + graceful-fs: ^4.2.0 + jsonfile: ^6.0.1 + universalify: ^2.0.0 + checksum: dc94ab37096f813cc3ca12f0f1b5ad6744dfed9ed21e953d72530d103cea193c2f81584a39e9dee1bea36de5ee66805678c0dddc048e8af1427ac19c00fffc50 + languageName: node + linkType: hard + +"fs-extra@npm:9.1.0, fs-extra@npm:^9.0.0": + version: 9.1.0 + resolution: "fs-extra@npm:9.1.0" + dependencies: + at-least-node: ^1.0.0 + graceful-fs: ^4.2.0 + jsonfile: ^6.0.1 + universalify: ^2.0.0 + checksum: ba71ba32e0faa74ab931b7a0031d1523c66a73e225de7426e275e238e312d07313d2da2d33e34a52aa406c8763ade5712eb3ec9ba4d9edce652bcacdc29e6b20 + languageName: node + linkType: hard + +"fs-extra@npm:^11.0.0, fs-extra@npm:^11.2.0": + version: 11.2.0 + resolution: "fs-extra@npm:11.2.0" + dependencies: + graceful-fs: ^4.2.0 + jsonfile: ^6.0.1 + universalify: ^2.0.0 + checksum: b12e42fa40ba47104202f57b8480dd098aa931c2724565e5e70779ab87605665594e76ee5fb00545f772ab9ace167fe06d2ab009c416dc8c842c5ae6df7aa7e8 + languageName: node + linkType: hard + +"fs-extra@npm:^7.0.1, fs-extra@npm:~7.0.1": + version: 7.0.1 + resolution: "fs-extra@npm:7.0.1" + dependencies: + graceful-fs: ^4.1.2 + jsonfile: ^4.0.0 + universalify: ^0.1.0 + checksum: 141b9dccb23b66a66cefdd81f4cda959ff89282b1d721b98cea19ba08db3dcbe6f862f28841f3cf24bb299e0b7e6c42303908f65093cb7e201708e86ea5a8dcf + languageName: node + linkType: hard + +"fs-extra@npm:^8.1.0": + version: 8.1.0 + resolution: "fs-extra@npm:8.1.0" + dependencies: + graceful-fs: ^4.2.0 + jsonfile: ^4.0.0 + universalify: ^0.1.0 + checksum: bf44f0e6cea59d5ce071bba4c43ca76d216f89e402dc6285c128abc0902e9b8525135aa808adad72c9d5d218e9f4bcc63962815529ff2f684ad532172a284880 + languageName: node + linkType: hard + +"fs-minipass@npm:^2.0.0, fs-minipass@npm:^2.1.0": + version: 2.1.0 + resolution: "fs-minipass@npm:2.1.0" + dependencies: + minipass: ^3.0.0 + checksum: 1b8d128dae2ac6cc94230cc5ead341ba3e0efaef82dab46a33d171c044caaa6ca001364178d42069b2809c35a1c3c35079a32107c770e9ffab3901b59af8c8b1 + languageName: node + linkType: hard + +"fs-minipass@npm:^3.0.0": + version: 3.0.3 + resolution: "fs-minipass@npm:3.0.3" + dependencies: + minipass: ^7.0.3 + checksum: 8722a41109130851d979222d3ec88aabaceeaaf8f57b2a8f744ef8bd2d1ce95453b04a61daa0078822bc5cd21e008814f06fe6586f56fef511e71b8d2394d802 + languageName: node + linkType: hard + +"fs-monkey@npm:^1.0.4": + version: 1.0.6 + resolution: "fs-monkey@npm:1.0.6" + checksum: 4e9986acf197581b10b79d3e63e74252681ca215ef82d4afbd98dcfe86b3f09189ac1d7e8064bc433e4e53cdb5c14fdb38773277d41bba18b1ff8bbdcab01a3a + languageName: node + linkType: hard + +"fs.realpath@npm:^1.0.0": + version: 1.0.0 + resolution: "fs.realpath@npm:1.0.0" + checksum: 99ddea01a7e75aa276c250a04eedeffe5662bce66c65c07164ad6264f9de18fb21be9433ead460e54cff20e31721c811f4fb5d70591799df5f85dce6d6746fd0 + languageName: node + linkType: hard + +"fsevents@npm:2.3.2": + version: 2.3.2 + resolution: "fsevents@npm:2.3.2" + dependencies: + node-gyp: latest + checksum: 97ade64e75091afee5265e6956cb72ba34db7819b4c3e94c431d4be2b19b8bb7a2d4116da417950c3425f17c8fe693d25e20212cac583ac1521ad066b77ae31f + conditions: os=darwin + languageName: node + linkType: hard + +"fsevents@npm:^2.3.2, fsevents@npm:~2.3.2": + version: 2.3.3 + resolution: "fsevents@npm:2.3.3" + dependencies: + node-gyp: latest + checksum: 11e6ea6fea15e42461fc55b4b0e4a0a3c654faa567f1877dbd353f39156f69def97a69936d1746619d656c4b93de2238bf731f6085a03a50cabf287c9d024317 + conditions: os=darwin + languageName: node + linkType: hard + +"fsevents@patch:fsevents@2.3.2#~builtin": + version: 2.3.2 + resolution: "fsevents@patch:fsevents@npm%3A2.3.2#~builtin::version=2.3.2&hash=18f3a7" + dependencies: + node-gyp: latest + conditions: os=darwin + languageName: node + linkType: hard + +"fsevents@patch:fsevents@^2.3.2#~builtin, fsevents@patch:fsevents@~2.3.2#~builtin": + version: 2.3.3 + resolution: "fsevents@patch:fsevents@npm%3A2.3.3#~builtin::version=2.3.3&hash=18f3a7" + dependencies: + node-gyp: latest + conditions: os=darwin + languageName: node + linkType: hard + +"function-bind@npm:^1.1.2": + version: 1.1.2 + resolution: "function-bind@npm:1.1.2" + checksum: 2b0ff4ce708d99715ad14a6d1f894e2a83242e4a52ccfcefaee5e40050562e5f6dafc1adbb4ce2d4ab47279a45dc736ab91ea5042d843c3c092820dfe032efb1 + languageName: node + linkType: hard + +"function.prototype.name@npm:^1.1.6": + version: 1.1.6 + resolution: "function.prototype.name@npm:1.1.6" + dependencies: + call-bind: ^1.0.2 + define-properties: ^1.2.0 + es-abstract: ^1.22.1 + functions-have-names: ^1.2.3 + checksum: 7a3f9bd98adab09a07f6e1f03da03d3f7c26abbdeaeee15223f6c04a9fb5674792bdf5e689dac19b97ac71de6aad2027ba3048a9b883aa1b3173eed6ab07f479 + languageName: node + linkType: hard + +"functional-red-black-tree@npm:^1.0.1": + version: 1.0.1 + resolution: "functional-red-black-tree@npm:1.0.1" + checksum: ca6c170f37640e2d94297da8bb4bf27a1d12bea3e00e6a3e007fd7aa32e37e000f5772acf941b4e4f3cf1c95c3752033d0c509af157ad8f526e7f00723b9eb9f + languageName: node + linkType: hard + +"functions-have-names@npm:^1.2.3": + version: 1.2.3 + resolution: "functions-have-names@npm:1.2.3" + checksum: c3f1f5ba20f4e962efb71344ce0a40722163e85bee2101ce25f88214e78182d2d2476aa85ef37950c579eb6cf6ee811c17b3101bb84004bb75655f3e33f3fdb5 + languageName: node + linkType: hard + +"gauge@npm:^3.0.0": + version: 3.0.2 + resolution: "gauge@npm:3.0.2" + dependencies: + aproba: ^1.0.3 || ^2.0.0 + color-support: ^1.1.2 + console-control-strings: ^1.0.0 + has-unicode: ^2.0.1 + object-assign: ^4.1.1 + signal-exit: ^3.0.0 + string-width: ^4.2.3 + strip-ansi: ^6.0.1 + wide-align: ^1.1.2 + checksum: 81296c00c7410cdd48f997800155fbead4f32e4f82109be0719c63edc8560e6579946cc8abd04205297640691ec26d21b578837fd13a4e96288ab4b40b1dc3e9 + languageName: node + linkType: hard + +"gauge@npm:^4.0.3": + version: 4.0.4 + resolution: "gauge@npm:4.0.4" + dependencies: + aproba: ^1.0.3 || ^2.0.0 + color-support: ^1.1.3 + console-control-strings: ^1.1.0 + has-unicode: ^2.0.1 + signal-exit: ^3.0.7 + string-width: ^4.2.3 + strip-ansi: ^6.0.1 + wide-align: ^1.1.5 + checksum: 788b6bfe52f1dd8e263cda800c26ac0ca2ff6de0b6eee2fe0d9e3abf15e149b651bd27bf5226be10e6e3edb5c4e5d5985a5a1a98137e7a892f75eff76467ad2d + languageName: node + linkType: hard + +"gaxios@npm:^6.0.0, gaxios@npm:^6.0.2, gaxios@npm:^6.1.1": + version: 6.7.1 + resolution: "gaxios@npm:6.7.1" + dependencies: + extend: ^3.0.2 + https-proxy-agent: ^7.0.1 + is-stream: ^2.0.0 + node-fetch: ^2.6.9 + uuid: ^9.0.1 + checksum: ed5952655339918e0868c6f4e079d6e9e55b20a242ddb1be25076cdfb0dd1ca5a2cb233da7352baa972c19f898a78fa6ba67e7d848717c9ca9877c269b5b02f7 + languageName: node + linkType: hard + +"gcp-metadata@npm:^6.1.0": + version: 6.1.0 + resolution: "gcp-metadata@npm:6.1.0" + dependencies: + gaxios: ^6.0.0 + json-bigint: ^1.0.0 + checksum: 55de8ae4a6b7664379a093abf7e758ae06e82f244d41bd58d881a470bf34db94c4067ce9e1b425d9455b7705636d5f8baad844e49bb73879c338753ba7785b2b + languageName: node + linkType: hard + +"generate-function@npm:^2.3.1": + version: 2.3.1 + resolution: "generate-function@npm:2.3.1" + dependencies: + is-property: ^1.0.2 + checksum: 652f083de206ead2bae4caf9c7eeb465e8d98c0b8ed2a29c6afc538cef0785b5c6eea10548f1e13cc586d3afd796c13c830c2cb3dc612ec2457b2aadda5f57c9 + languageName: node + linkType: hard + +"generic-names@npm:^4.0.0": + version: 4.0.0 + resolution: "generic-names@npm:4.0.0" + dependencies: + loader-utils: ^3.2.0 + checksum: 8dabd2505164191501b75f2861b5e1194458a344ae2a7c9776bdd72d1f50b248dff737bcdf118fff677275edb3632f2d10662e6ac122dd7b245c5baa8d303270 + languageName: node + linkType: hard + +"generic-pool@npm:3.9.0": + version: 3.9.0 + resolution: "generic-pool@npm:3.9.0" + checksum: 3d89e9b2018d2e3bbf44fec78c76b2b7d56d6a484237aa9daf6ff6eedb14b0899dadd703b5d810219baab2eb28e5128fb18b29e91e602deb2eccac14492d8ca8 + languageName: node + linkType: hard + +"gensync@npm:^1.0.0-beta.2": + version: 1.0.0-beta.2 + resolution: "gensync@npm:1.0.0-beta.2" + checksum: a7437e58c6be12aa6c90f7730eac7fa9833dc78872b4ad2963d2031b00a3367a93f98aec75f9aaac7220848e4026d67a8655e870b24f20a543d103c0d65952ec + languageName: node + linkType: hard + +"get-caller-file@npm:^2.0.5": + version: 2.0.5 + resolution: "get-caller-file@npm:2.0.5" + checksum: b9769a836d2a98c3ee734a88ba712e62703f1df31b94b784762c433c27a386dd6029ff55c2a920c392e33657d80191edbf18c61487e198844844516f843496b9 + languageName: node + linkType: hard + +"get-intrinsic@npm:^1.1.3, get-intrinsic@npm:^1.2.1, get-intrinsic@npm:^1.2.3, get-intrinsic@npm:^1.2.4": + version: 1.2.4 + resolution: "get-intrinsic@npm:1.2.4" + dependencies: + es-errors: ^1.3.0 + function-bind: ^1.1.2 + has-proto: ^1.0.1 + has-symbols: ^1.0.3 + hasown: ^2.0.0 + checksum: 414e3cdf2c203d1b9d7d33111df746a4512a1aa622770b361dadddf8ed0b5aeb26c560f49ca077e24bfafb0acb55ca908d1f709216ccba33ffc548ec8a79a951 + languageName: node + linkType: hard + +"get-intrinsic@npm:^1.2.2, get-intrinsic@npm:^1.2.5, get-intrinsic@npm:^1.2.6": + version: 1.2.6 + resolution: "get-intrinsic@npm:1.2.6" + dependencies: + call-bind-apply-helpers: ^1.0.1 + dunder-proto: ^1.0.0 + es-define-property: ^1.0.1 + es-errors: ^1.3.0 + es-object-atoms: ^1.0.0 + function-bind: ^1.1.2 + gopd: ^1.2.0 + has-symbols: ^1.1.0 + hasown: ^2.0.2 + math-intrinsics: ^1.0.0 + checksum: a7592a0b7f023a2e83c0121fa9449ca83780e370a5feeebe8452119474d148016e43b455049134ae7a683b9b11b93d3f65eac199a0ad452ab740d5f0c299de47 + languageName: node + linkType: hard + +"get-node-dimensions@npm:^1.2.1": + version: 1.2.2 + resolution: "get-node-dimensions@npm:1.2.2" + checksum: 1018db4004ead28c92c02cf5471c3b13572be67cc4dff763c0c7714b8edc370d8020806d3db0400aad87e7e9d3e99635e8582e81636b735a6013051c8e3a4b13 + languageName: node + linkType: hard + +"get-nonce@npm:^1.0.0": + version: 1.0.1 + resolution: "get-nonce@npm:1.0.1" + checksum: e2614e43b4694c78277bb61b0f04583d45786881289285c73770b07ded246a98be7e1f78b940c80cbe6f2b07f55f0b724e6db6fd6f1bcbd1e8bdac16521074ed + languageName: node + linkType: hard + +"get-package-type@npm:^0.1.0": + version: 0.1.0 + resolution: "get-package-type@npm:0.1.0" + checksum: bba0811116d11e56d702682ddef7c73ba3481f114590e705fc549f4d868972263896af313c57a25c076e3c0d567e11d919a64ba1b30c879be985fc9d44f96148 + languageName: node + linkType: hard + +"get-port@npm:^5.1.1": + version: 5.1.1 + resolution: "get-port@npm:5.1.1" + checksum: 0162663ffe5c09e748cd79d97b74cd70e5a5c84b760a475ce5767b357fb2a57cb821cee412d646aa8a156ed39b78aab88974eddaa9e5ee926173c036c0713787 + languageName: node + linkType: hard + +"get-stream@npm:^6.0.0": + version: 6.0.1 + resolution: "get-stream@npm:6.0.1" + checksum: e04ecece32c92eebf5b8c940f51468cd53554dcbb0ea725b2748be583c9523d00128137966afce410b9b051eb2ef16d657cd2b120ca8edafcf5a65e81af63cad + languageName: node + linkType: hard + +"get-symbol-description@npm:^1.0.2": + version: 1.0.2 + resolution: "get-symbol-description@npm:1.0.2" + dependencies: + call-bind: ^1.0.5 + es-errors: ^1.3.0 + get-intrinsic: ^1.2.4 + checksum: e1cb53bc211f9dbe9691a4f97a46837a553c4e7caadd0488dc24ac694db8a390b93edd412b48dcdd0b4bbb4c595de1709effc75fc87c0839deedc6968f5bd973 + languageName: node + linkType: hard + +"get-tsconfig@npm:^4.7.0, get-tsconfig@npm:^4.7.2": + version: 4.8.1 + resolution: "get-tsconfig@npm:4.8.1" + dependencies: + resolve-pkg-maps: ^1.0.0 + checksum: 12df01672e691d2ff6db8cf7fed1ddfef90ed94a5f3d822c63c147a26742026d582acd86afcd6f65db67d809625d17dd7f9d34f4d3f38f69bc2f48e19b2bdd5b + languageName: node + linkType: hard + +"get-uri@npm:^6.0.1": + version: 6.0.3 + resolution: "get-uri@npm:6.0.3" + dependencies: + basic-ftp: ^5.0.2 + data-uri-to-buffer: ^6.0.2 + debug: ^4.3.4 + fs-extra: ^11.2.0 + checksum: 3eda448a59fa1ba82ad4f252e58490fec586b644f2dc9c98ba3ab20e801ecc8a1bc1784829c474c9d188edb633d4dfd81c33894ca6117a33a16e8e013b41b40f + languageName: node + linkType: hard + +"getopts@npm:2.3.0": + version: 2.3.0 + resolution: "getopts@npm:2.3.0" + checksum: bbb5fcef8d4a8582cf4499ea3fc492d95322df2184e65d550ddacede04871e7ba33194c7abd06a6c5d540de3b70112a16f988787e236e1c66b89521032b398ce + languageName: node + linkType: hard + +"getpass@npm:^0.1.1": + version: 0.1.7 + resolution: "getpass@npm:0.1.7" + dependencies: + assert-plus: ^1.0.0 + checksum: ab18d55661db264e3eac6012c2d3daeafaab7a501c035ae0ccb193c3c23e9849c6e29b6ac762b9c2adae460266f925d55a3a2a3a3c8b94be2f222df94d70c046 + languageName: node + linkType: hard + +"git-up@npm:^7.0.0": + version: 7.0.0 + resolution: "git-up@npm:7.0.0" + dependencies: + is-ssh: ^1.4.0 + parse-url: ^8.1.0 + checksum: 2faadbab51e94d2ffb220e426e950087cc02c15d664e673bd5d1f734cfa8196fed8b19493f7bf28fe216d087d10e22a7fd9b63687e0ba7d24f0ddcfb0a266d6e + languageName: node + linkType: hard + +"git-url-parse@npm:^14.0.0": + version: 14.1.0 + resolution: "git-url-parse@npm:14.1.0" + dependencies: + git-up: ^7.0.0 + checksum: 16bbf5ca423352ab1b0d704dc40b46123e0bfcc0ae2959ef6a93d43c509146151cd6a1d99690f3555324d2261b36443b7978abc379dc1a7bf8f564e52d676dee + languageName: node + linkType: hard + +"git-url-parse@npm:^15.0.0": + version: 15.0.0 + resolution: "git-url-parse@npm:15.0.0" + dependencies: + git-up: ^7.0.0 + checksum: 4379e9b0a1297b62d603630341a7ce1a6e17901114ee7bb70a611f62ea0fd3b3649ac754891d2746fd42031a21e97ddc0092287a04cc028cbf37df8f6be65a9e + languageName: node + linkType: hard + +"gitconfiglocal@npm:2.1.0": + version: 2.1.0 + resolution: "gitconfiglocal@npm:2.1.0" + dependencies: + ini: ^1.3.2 + checksum: 4b4b44d992a6abf2900eec8cfe960dc36e0d3c2467d20ec69e0a0f13b6b7645b926daa004df42f94c34ad28a58529cf2522fa0bf261e4e7b95958fb451dcedda + languageName: node + linkType: hard + +"github-from-package@npm:0.0.0": + version: 0.0.0 + resolution: "github-from-package@npm:0.0.0" + checksum: 14e448192a35c1e42efee94c9d01a10f42fe790375891a24b25261246ce9336ab9df5d274585aedd4568f7922246c2a78b8a8cd2571bfe99c693a9718e7dd0e3 + languageName: node + linkType: hard + +"glob-parent@npm:^5.1.2, glob-parent@npm:~5.1.2": + version: 5.1.2 + resolution: "glob-parent@npm:5.1.2" + dependencies: + is-glob: ^4.0.1 + checksum: f4f2bfe2425296e8a47e36864e4f42be38a996db40420fe434565e4480e3322f18eb37589617a98640c5dc8fdec1a387007ee18dbb1f3f5553409c34d17f425e + languageName: node + linkType: hard + +"glob-parent@npm:^6.0.2": + version: 6.0.2 + resolution: "glob-parent@npm:6.0.2" + dependencies: + is-glob: ^4.0.3 + checksum: c13ee97978bef4f55106b71e66428eb1512e71a7466ba49025fc2aec59a5bfb0954d5abd58fc5ee6c9b076eef4e1f6d3375c2e964b88466ca390da4419a786a8 + languageName: node + linkType: hard + +"glob-to-regexp@npm:^0.4.1": + version: 0.4.1 + resolution: "glob-to-regexp@npm:0.4.1" + checksum: e795f4e8f06d2a15e86f76e4d92751cf8bbfcf0157cea5c2f0f35678a8195a750b34096b1256e436f0cebc1883b5ff0888c47348443e69546a5a87f9e1eb1167 + languageName: node + linkType: hard + +"glob@npm:9.3.5": + version: 9.3.5 + resolution: "glob@npm:9.3.5" + dependencies: + fs.realpath: ^1.0.0 + minimatch: ^8.0.2 + minipass: ^4.2.4 + path-scurry: ^1.6.1 + checksum: 94b093adbc591bc36b582f77927d1fb0dbf3ccc231828512b017601408be98d1fe798fc8c0b19c6f2d1a7660339c3502ce698de475e9d938ccbb69b47b647c84 + languageName: node + linkType: hard + +"glob@npm:^10.0.0, glob@npm:^10.2.2, glob@npm:^10.3.10, glob@npm:^10.4.1": + version: 10.4.5 + resolution: "glob@npm:10.4.5" + dependencies: + foreground-child: ^3.1.0 + jackspeak: ^3.1.2 + minimatch: ^9.0.4 + minipass: ^7.1.2 + package-json-from-dist: ^1.0.0 + path-scurry: ^1.11.1 + bin: + glob: dist/esm/bin.mjs + checksum: 0bc725de5e4862f9f387fd0f2b274baf16850dcd2714502ccf471ee401803997983e2c05590cb65f9675a3c6f2a58e7a53f9e365704108c6ad3cbf1d60934c4a + languageName: node + linkType: hard + +"glob@npm:^7.1.2, glob@npm:^7.1.3, glob@npm:^7.1.4, glob@npm:^7.1.6, glob@npm:^7.1.7": + version: 7.2.3 + resolution: "glob@npm:7.2.3" + dependencies: + fs.realpath: ^1.0.0 + inflight: ^1.0.4 + inherits: 2 + minimatch: ^3.1.1 + once: ^1.3.0 + path-is-absolute: ^1.0.0 + checksum: 29452e97b38fa704dabb1d1045350fb2467cf0277e155aa9ff7077e90ad81d1ea9d53d3ee63bd37c05b09a065e90f16aec4a65f5b8de401d1dac40bc5605d133 + languageName: node + linkType: hard + +"glob@npm:^8.0.1, glob@npm:^8.0.3, glob@npm:^8.1.0": + version: 8.1.0 + resolution: "glob@npm:8.1.0" + dependencies: + fs.realpath: ^1.0.0 + inflight: ^1.0.4 + inherits: 2 + minimatch: ^5.0.1 + once: ^1.3.0 + checksum: 92fbea3221a7d12075f26f0227abac435de868dd0736a17170663783296d0dd8d3d532a5672b4488a439bf5d7fb85cdd07c11185d6cd39184f0385cbdfb86a47 + languageName: node + linkType: hard + +"global-agent@npm:^3.0.0": + version: 3.0.0 + resolution: "global-agent@npm:3.0.0" + dependencies: + boolean: ^3.0.1 + es6-error: ^4.1.1 + matcher: ^3.0.0 + roarr: ^2.15.3 + semver: ^7.3.2 + serialize-error: ^7.0.1 + checksum: 75074d80733b4bd5386c47f5df028e798018025beac0ab310e9908c72bf5639e408203e7bca0130d5ee01b5f4abc6d34385d96a9f950ea5fe1979bb431c808f7 + languageName: node + linkType: hard + +"global-modules@npm:^1.0.0": + version: 1.0.0 + resolution: "global-modules@npm:1.0.0" + dependencies: + global-prefix: ^1.0.1 + is-windows: ^1.0.1 + resolve-dir: ^1.0.0 + checksum: 10be68796c1e1abc1e2ba87ec4ea507f5629873b119ab0cd29c07284ef2b930f1402d10df01beccb7391dedd9cd479611dd6a24311c71be58937beaf18edf85e + languageName: node + linkType: hard + +"global-modules@npm:^2.0.0": + version: 2.0.0 + resolution: "global-modules@npm:2.0.0" + dependencies: + global-prefix: ^3.0.0 + checksum: d6197f25856c878c2fb5f038899f2dca7cbb2f7b7cf8999660c0104972d5cfa5c68b5a0a77fa8206bb536c3903a4615665acb9709b4d80846e1bb47eaef65430 + languageName: node + linkType: hard + +"global-prefix@npm:^1.0.1": + version: 1.0.2 + resolution: "global-prefix@npm:1.0.2" + dependencies: + expand-tilde: ^2.0.2 + homedir-polyfill: ^1.0.1 + ini: ^1.3.4 + is-windows: ^1.0.1 + which: ^1.2.14 + checksum: 061b43470fe498271bcd514e7746e8a8535032b17ab9570517014ae27d700ff0dca749f76bbde13ba384d185be4310d8ba5712cb0e74f7d54d59390db63dd9a0 + languageName: node + linkType: hard + +"global-prefix@npm:^3.0.0": + version: 3.0.0 + resolution: "global-prefix@npm:3.0.0" + dependencies: + ini: ^1.3.5 + kind-of: ^6.0.2 + which: ^1.3.1 + checksum: 8a82fc1d6f22c45484a4e34656cc91bf021a03e03213b0035098d605bfc612d7141f1e14a21097e8a0413b4884afd5b260df0b6a25605ce9d722e11f1df2881d + languageName: node + linkType: hard + +"globals@npm:^11.1.0": + version: 11.12.0 + resolution: "globals@npm:11.12.0" + checksum: 67051a45eca3db904aee189dfc7cd53c20c7d881679c93f6146ddd4c9f4ab2268e68a919df740d39c71f4445d2b38ee360fc234428baea1dbdfe68bbcb46979e + languageName: node + linkType: hard + +"globals@npm:^13.19.0": + version: 13.24.0 + resolution: "globals@npm:13.24.0" + dependencies: + type-fest: ^0.20.2 + checksum: 56066ef058f6867c04ff203b8a44c15b038346a62efbc3060052a1016be9f56f4cf0b2cd45b74b22b81e521a889fc7786c73691b0549c2f3a6e825b3d394f43c + languageName: node + linkType: hard + +"globalthis@npm:^1.0.1, globalthis@npm:^1.0.3, globalthis@npm:^1.0.4": + version: 1.0.4 + resolution: "globalthis@npm:1.0.4" + dependencies: + define-properties: ^1.2.1 + gopd: ^1.0.1 + checksum: 39ad667ad9f01476474633a1834a70842041f70a55571e8dcef5fb957980a92da5022db5430fca8aecc5d47704ae30618c0bc877a579c70710c904e9ef06108a + languageName: node + linkType: hard + +"globby@npm:^11.0.0, globby@npm:^11.0.3, globby@npm:^11.0.4, globby@npm:^11.1.0": + version: 11.1.0 + resolution: "globby@npm:11.1.0" + dependencies: + array-union: ^2.1.0 + dir-glob: ^3.0.1 + fast-glob: ^3.2.9 + ignore: ^5.2.0 + merge2: ^1.4.1 + slash: ^3.0.0 + checksum: b4be8885e0cfa018fc783792942d53926c35c50b3aefd3fdcfb9d22c627639dc26bd2327a40a0b74b074100ce95bb7187bfeae2f236856aa3de183af7a02aea6 + languageName: node + linkType: hard + +"google-auth-library@npm:^9.0.0, google-auth-library@npm:^9.3.0": + version: 9.15.0 + resolution: "google-auth-library@npm:9.15.0" + dependencies: + base64-js: ^1.3.0 + ecdsa-sig-formatter: ^1.0.11 + gaxios: ^6.1.1 + gcp-metadata: ^6.1.0 + gtoken: ^7.0.0 + jws: ^4.0.0 + checksum: 7ff63ff755ce43601a1780cfbe6d8b523792bfd2b653a27180e41735b9f0ba5689668eb8b079c915300041e412ec00b7635b5c26e0f2139fecacb346b6f9f12f + languageName: node + linkType: hard + +"google-auth-library@npm:^9.6.3": + version: 9.14.2 + resolution: "google-auth-library@npm:9.14.2" + dependencies: + base64-js: ^1.3.0 + ecdsa-sig-formatter: ^1.0.11 + gaxios: ^6.1.1 + gcp-metadata: ^6.1.0 + gtoken: ^7.0.0 + jws: ^4.0.0 + checksum: 64b3a6c1b1b14f1c891dbcfb850bc4db63dc8fae17e70197636244d00c83b539ac3da8688aae0bd1f09c884fc538d203945ae751edbabf666b41066385d86e30 + languageName: node + linkType: hard + +"google-gax@npm:^4.0.3, google-gax@npm:^4.3.3": + version: 4.4.1 + resolution: "google-gax@npm:4.4.1" + dependencies: + "@grpc/grpc-js": ^1.10.9 + "@grpc/proto-loader": ^0.7.13 + "@types/long": ^4.0.0 + abort-controller: ^3.0.0 + duplexify: ^4.0.0 + google-auth-library: ^9.3.0 + node-fetch: ^2.7.0 + object-hash: ^3.0.0 + proto3-json-serializer: ^2.0.2 + protobufjs: ^7.3.2 + retry-request: ^7.0.0 + uuid: ^9.0.1 + checksum: 945dc57fa80a9e95621460585f99319ef123c3eb904f0c5f4d10197bfa7981294d7f600c77e481a0cb071f8c08d692d394d81cd06f7f3dd3c34c581c65100f6a + languageName: node + linkType: hard + +"gopd@npm:^1.0.1": + version: 1.0.1 + resolution: "gopd@npm:1.0.1" + dependencies: + get-intrinsic: ^1.1.3 + checksum: a5ccfb8806e0917a94e0b3de2af2ea4979c1da920bc381667c260e00e7cafdbe844e2cb9c5bcfef4e5412e8bf73bab837285bc35c7ba73aaaf0134d4583393a6 + languageName: node + linkType: hard + +"gopd@npm:^1.2.0": + version: 1.2.0 + resolution: "gopd@npm:1.2.0" + checksum: cc6d8e655e360955bdccaca51a12a474268f95bb793fc3e1f2bdadb075f28bfd1fd988dab872daf77a61d78cbaf13744bc8727a17cfb1d150d76047d805375f3 + languageName: node + linkType: hard + +"graceful-fs@npm:^4.1.2, graceful-fs@npm:^4.1.5, graceful-fs@npm:^4.1.6, graceful-fs@npm:^4.2.0, graceful-fs@npm:^4.2.11, graceful-fs@npm:^4.2.4, graceful-fs@npm:^4.2.6, graceful-fs@npm:^4.2.9": + version: 4.2.11 + resolution: "graceful-fs@npm:4.2.11" + checksum: ac85f94da92d8eb6b7f5a8b20ce65e43d66761c55ce85ac96df6865308390da45a8d3f0296dd3a663de65d30ba497bd46c696cc1e248c72b13d6d567138a4fc7 + languageName: node + linkType: hard + +"graphemer@npm:^1.4.0": + version: 1.4.0 + resolution: "graphemer@npm:1.4.0" + checksum: bab8f0be9b568857c7bec9fda95a89f87b783546d02951c40c33f84d05bb7da3fd10f863a9beb901463669b6583173a8c8cc6d6b306ea2b9b9d5d3d943c3a673 + languageName: node + linkType: hard + +"graphiql@npm:3.1.1": + version: 3.1.1 + resolution: "graphiql@npm:3.1.1" + dependencies: + "@graphiql/react": ^0.20.3 + "@graphiql/toolkit": ^0.9.1 + graphql-language-service: ^5.2.0 + markdown-it: ^12.2.0 + peerDependencies: + graphql: ^15.5.0 || ^16.0.0 + react: ^16.8.0 || ^17 || ^18 + react-dom: ^16.8.0 || ^17 || ^18 + checksum: fa0e6a6854b688a80d2d560c07c042c4d63a45ab1ebdb5b56a081a5a2aea6f77b2ef10afb73e071bbb22eb293048a9b72760e91459fe66704afce56271b13ba5 + languageName: node + linkType: hard + +"graphlib@npm:^2.1.5, graphlib@npm:^2.1.8": + version: 2.1.8 + resolution: "graphlib@npm:2.1.8" + dependencies: + lodash: ^4.17.15 + checksum: 1e0db4dea1c8187d59103d5582ecf32008845ebe2103959a51d22cb6dae495e81fb9263e22c922bca3aaecb56064a45cd53424e15a4626cfb5a0c52d0aff61a8 + languageName: node + linkType: hard + +"graphql-config@npm:^5.0.2": + version: 5.1.3 + resolution: "graphql-config@npm:5.1.3" + dependencies: + "@graphql-tools/graphql-file-loader": ^8.0.0 + "@graphql-tools/json-file-loader": ^8.0.0 + "@graphql-tools/load": ^8.0.0 + "@graphql-tools/merge": ^9.0.0 + "@graphql-tools/url-loader": ^8.0.0 + "@graphql-tools/utils": ^10.0.0 + cosmiconfig: ^8.1.0 + jiti: ^2.0.0 + minimatch: ^9.0.5 + string-env-interpolation: ^1.0.1 + tslib: ^2.4.0 + peerDependencies: + cosmiconfig-toml-loader: ^1.0.0 + graphql: ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + peerDependenciesMeta: + cosmiconfig-toml-loader: + optional: true + checksum: fde8aee849def42a5eaf02fbe3e404c91be94a53782c22ff58b29bfcfed7e9be2fba114fa94b4a97e12ea1e5970267ebaa119ba6915b2d4d9bb8f5ae9c5485c2 + languageName: node + linkType: hard + +"graphql-http@npm:^1.22.0": + version: 1.22.3 + resolution: "graphql-http@npm:1.22.3" + peerDependencies: + graphql: ">=0.11 <=16" + checksum: c523bb6fadb6caa99777f48d9fd3a598d4415cd7b12855fe0af05439849d636642c3ced5867e888606089d5ad2145192f6b6d9dd634d60e6f870d8fdc5c11fd7 + languageName: node + linkType: hard + +"graphql-language-service@npm:5.3.0, graphql-language-service@npm:^5.2.0, graphql-language-service@npm:^5.2.2": + version: 5.3.0 + resolution: "graphql-language-service@npm:5.3.0" + dependencies: + debounce-promise: ^3.1.2 + nullthrows: ^1.0.0 + vscode-languageserver-types: ^3.17.1 + peerDependencies: + graphql: ^15.5.0 || ^16.0.0 || ^17.0.0-alpha.2 + bin: + graphql: dist/temp-bin.js + checksum: 9cee9a5cd9ff7db86104d6fa32ff909f1d69396185683a00bc8b5329ef3249fa8d0207dbeda82d4bd738cfd659ce1a1d39339650d5278f8712d5353ccc60a9fb + languageName: node + linkType: hard + +"graphql-subscriptions@npm:^1.1.0": + version: 1.2.1 + resolution: "graphql-subscriptions@npm:1.2.1" + dependencies: + iterall: ^1.3.0 + peerDependencies: + graphql: ^0.10.5 || ^0.11.3 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 + checksum: 2b9533c6774e7be46acd6fbee528aab06429f15dc222eabd991e82c02bf74e390b638dffa1a3fd86c1e26212c40a42a0418d7f4a7c3a1edf0534978ef128e528 + languageName: node + linkType: hard + +"graphql-tag@npm:^2.10.3, graphql-tag@npm:^2.12.6": + version: 2.12.6 + resolution: "graphql-tag@npm:2.12.6" + dependencies: + tslib: ^2.1.0 + peerDependencies: + graphql: ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + checksum: b15162a3d62f17b9b79302445b9ee330e041582f1c7faca74b9dec5daa74272c906ec1c34e1c50592bb6215e5c3eba80a309103f6ba9e4c1cddc350c46f010df + languageName: node + linkType: hard + +"graphql-ws@npm:^5.14.0, graphql-ws@npm:^5.4.1": + version: 5.16.0 + resolution: "graphql-ws@npm:5.16.0" + peerDependencies: + graphql: ">=0.11 <=16" + checksum: e3e077ec187a92be3fd5dfae49e23af11a82711d3537064384f6861c2b5ceb339f60dc1871d0026b47ff05e4ed3c941404812a8086347e454688e0e6ef0e69f3 + languageName: node + linkType: hard + +"graphql@npm:^14.0.2 || ^15.5": + version: 15.9.0 + resolution: "graphql@npm:15.9.0" + checksum: fecf48b878baf8bd1d943b79860554f9e0bdf8d23a8f014356209fedcc1f1353729388538842d8a4a79078ea75b3f24d504d074223c815acf9b6059837c5c934 + languageName: node + linkType: hard + +"graphql@npm:^16.0.0, graphql@npm:^16.8.1": + version: 16.9.0 + resolution: "graphql@npm:16.9.0" + checksum: 8cb3d54100e9227310383ce7f791ca48d12f15ed9f2021f23f8735f1121aafe4e5e611a853081dd935ce221724ea1ae4638faef5d2921fb1ad7c26b5f46611e9 + languageName: node + linkType: hard + +"gtoken@npm:^7.0.0": + version: 7.1.0 + resolution: "gtoken@npm:7.1.0" + dependencies: + gaxios: ^6.0.0 + jws: ^4.0.0 + checksum: 1f338dced78f9d895ea03cd507454eb5a7b77e841ecd1d45e44483b08c1e64d16a9b0342358d37586d87462ffc2d5f5bff5dfe77ed8d4f0aafc3b5b0347d5d16 + languageName: node + linkType: hard + +"gzip-size@npm:^6.0.0": + version: 6.0.0 + resolution: "gzip-size@npm:6.0.0" + dependencies: + duplexer: ^0.1.2 + checksum: 2df97f359696ad154fc171dcb55bc883fe6e833bca7a65e457b9358f3cb6312405ed70a8da24a77c1baac0639906cd52358dc0ce2ec1a937eaa631b934c94194 + languageName: node + linkType: hard + +"handle-thing@npm:^2.0.0": + version: 2.0.1 + resolution: "handle-thing@npm:2.0.1" + checksum: 68071f313062315cd9dce55710e9496873945f1dd425107007058fc1629f93002a7649fcc3e464281ce02c7e809a35f5925504ab8105d972cf649f1f47cb7d6c + languageName: node + linkType: hard + +"handlebars@npm:^4.7.3, handlebars@npm:^4.7.7": + version: 4.7.8 + resolution: "handlebars@npm:4.7.8" + dependencies: + minimist: ^1.2.5 + neo-async: ^2.6.2 + source-map: ^0.6.1 + uglify-js: ^3.1.4 + wordwrap: ^1.0.0 + dependenciesMeta: + uglify-js: + optional: true + bin: + handlebars: bin/handlebars + checksum: 00e68bb5c183fd7b8b63322e6234b5ac8fbb960d712cb3f25587d559c2951d9642df83c04a1172c918c41bcfc81bfbd7a7718bbce93b893e0135fc99edea93ff + languageName: node + linkType: hard + +"har-schema@npm:^2.0.0": + version: 2.0.0 + resolution: "har-schema@npm:2.0.0" + checksum: d8946348f333fb09e2bf24cc4c67eabb47c8e1d1aa1c14184c7ffec1140a49ec8aa78aa93677ae452d71d5fc0fdeec20f0c8c1237291fc2bcb3f502a5d204f9b + languageName: node + linkType: hard + +"har-validator@npm:~5.1.3": + version: 5.1.5 + resolution: "har-validator@npm:5.1.5" + dependencies: + ajv: ^6.12.3 + har-schema: ^2.0.0 + checksum: b998a7269ca560d7f219eedc53e2c664cd87d487e428ae854a6af4573fc94f182fe9d2e3b92ab968249baec7ebaf9ead69cf975c931dc2ab282ec182ee988280 + languageName: node + linkType: hard + +"harmony-reflect@npm:^1.4.6": + version: 1.6.2 + resolution: "harmony-reflect@npm:1.6.2" + checksum: 2e5bae414cd2bfae5476147f9935dc69ee9b9a413206994dcb94c5b3208d4555da3d4313aff6fd14bd9991c1e3ef69cdda5c8fac1eb1d7afc064925839339b8c + languageName: node + linkType: hard + +"has-bigints@npm:^1.0.1, has-bigints@npm:^1.0.2": + version: 1.0.2 + resolution: "has-bigints@npm:1.0.2" + checksum: 390e31e7be7e5c6fe68b81babb73dfc35d413604d7ee5f56da101417027a4b4ce6a27e46eff97ad040c835b5d228676eae99a9b5c3bc0e23c8e81a49241ff45b + languageName: node + linkType: hard + +"has-flag@npm:^3.0.0": + version: 3.0.0 + resolution: "has-flag@npm:3.0.0" + checksum: 4a15638b454bf086c8148979aae044dd6e39d63904cd452d970374fa6a87623423da485dfb814e7be882e05c096a7ccf1ebd48e7e7501d0208d8384ff4dea73b + languageName: node + linkType: hard + +"has-flag@npm:^4.0.0": + version: 4.0.0 + resolution: "has-flag@npm:4.0.0" + checksum: 261a1357037ead75e338156b1f9452c016a37dcd3283a972a30d9e4a87441ba372c8b81f818cd0fbcd9c0354b4ae7e18b9e1afa1971164aef6d18c2b6095a8ad + languageName: node + linkType: hard + +"has-property-descriptors@npm:^1.0.0, has-property-descriptors@npm:^1.0.2": + version: 1.0.2 + resolution: "has-property-descriptors@npm:1.0.2" + dependencies: + es-define-property: ^1.0.0 + checksum: fcbb246ea2838058be39887935231c6d5788babed499d0e9d0cc5737494c48aba4fe17ba1449e0d0fbbb1e36175442faa37f9c427ae357d6ccb1d895fbcd3de3 + languageName: node + linkType: hard + +"has-proto@npm:^1.0.1, has-proto@npm:^1.0.3": + version: 1.0.3 + resolution: "has-proto@npm:1.0.3" + checksum: fe7c3d50b33f50f3933a04413ed1f69441d21d2d2944f81036276d30635cad9279f6b43bc8f32036c31ebdfcf6e731150f46c1907ad90c669ffe9b066c3ba5c4 + languageName: node + linkType: hard + +"has-symbols@npm:^1.0.2, has-symbols@npm:^1.0.3": + version: 1.0.3 + resolution: "has-symbols@npm:1.0.3" + checksum: a054c40c631c0d5741a8285010a0777ea0c068f99ed43e5d6eb12972da223f8af553a455132fdb0801bdcfa0e0f443c0c03a68d8555aa529b3144b446c3f2410 + languageName: node + linkType: hard + +"has-symbols@npm:^1.1.0": + version: 1.1.0 + resolution: "has-symbols@npm:1.1.0" + checksum: b2316c7302a0e8ba3aaba215f834e96c22c86f192e7310bdf689dd0e6999510c89b00fbc5742571507cebf25764d68c988b3a0da217369a73596191ac0ce694b + languageName: node + linkType: hard + +"has-tostringtag@npm:^1.0.0, has-tostringtag@npm:^1.0.2": + version: 1.0.2 + resolution: "has-tostringtag@npm:1.0.2" + dependencies: + has-symbols: ^1.0.3 + checksum: 999d60bb753ad714356b2c6c87b7fb74f32463b8426e159397da4bde5bca7e598ab1073f4d8d4deafac297f2eb311484cd177af242776bf05f0d11565680468d + languageName: node + linkType: hard + +"has-unicode@npm:^2.0.1": + version: 2.0.1 + resolution: "has-unicode@npm:2.0.1" + checksum: 1eab07a7436512db0be40a710b29b5dc21fa04880b7f63c9980b706683127e3c1b57cb80ea96d47991bdae2dfe479604f6a1ba410106ee1046a41d1bd0814400 + languageName: node + linkType: hard + +"hash-base@npm:^3.0.0": + version: 3.1.0 + resolution: "hash-base@npm:3.1.0" + dependencies: + inherits: ^2.0.4 + readable-stream: ^3.6.0 + safe-buffer: ^5.2.0 + checksum: 26b7e97ac3de13cb23fc3145e7e3450b0530274a9562144fc2bf5c1e2983afd0e09ed7cc3b20974ba66039fad316db463da80eb452e7373e780cbee9a0d2f2dc + languageName: node + linkType: hard + +"hash-base@npm:~3.0, hash-base@npm:~3.0.4": + version: 3.0.4 + resolution: "hash-base@npm:3.0.4" + dependencies: + inherits: ^2.0.1 + safe-buffer: ^5.0.1 + checksum: 878465a0dfcc33cce195c2804135352c590d6d10980adc91a9005fd377e77f2011256c2b7cfce472e3f2e92d561d1bf3228d2da06348a9017ce9a258b3b49764 + languageName: node + linkType: hard + +"hash.js@npm:^1.0.0, hash.js@npm:^1.0.3": + version: 1.1.7 + resolution: "hash.js@npm:1.1.7" + dependencies: + inherits: ^2.0.3 + minimalistic-assert: ^1.0.1 + checksum: e350096e659c62422b85fa508e4b3669017311aa4c49b74f19f8e1bc7f3a54a584fdfd45326d4964d6011f2b2d882e38bea775a96046f2a61b7779a979629d8f + languageName: node + linkType: hard + +"hasown@npm:^2.0.0, hasown@npm:^2.0.1, hasown@npm:^2.0.2": + version: 2.0.2 + resolution: "hasown@npm:2.0.2" + dependencies: + function-bind: ^1.1.2 + checksum: e8516f776a15149ca6c6ed2ae3110c417a00b62260e222590e54aa367cbcd6ed99122020b37b7fbdf05748df57b265e70095d7bf35a47660587619b15ffb93db + languageName: node + linkType: hard + +"hast-util-parse-selector@npm:^2.0.0": + version: 2.2.5 + resolution: "hast-util-parse-selector@npm:2.2.5" + checksum: 22ee4afbd11754562144cb3c4f3ec52524dafba4d90ee52512902d17cf11066d83b38f7bdf6ca571bbc2541f07ba30db0d234657b6ecb8ca4631587466459605 + languageName: node + linkType: hard + +"hast-util-whitespace@npm:^2.0.0": + version: 2.0.1 + resolution: "hast-util-whitespace@npm:2.0.1" + checksum: 431be6b2f35472f951615540d7a53f69f39461e5e080c0190268bdeb2be9ab9b1dddfd1f467dd26c1de7e7952df67beb1307b6ee940baf78b24a71b5e0663868 + languageName: node + linkType: hard + +"hastscript@npm:^6.0.0": + version: 6.0.0 + resolution: "hastscript@npm:6.0.0" + dependencies: + "@types/hast": ^2.0.0 + comma-separated-tokens: ^1.0.0 + hast-util-parse-selector: ^2.0.0 + property-information: ^5.0.0 + space-separated-tokens: ^1.0.0 + checksum: 5e50b85af0d2cb7c17979cb1ddca75d6b96b53019dd999b39e7833192c9004201c3cee6445065620ea05d0087d9ae147a4844e582d64868be5bc6b0232dfe52d + languageName: node + linkType: hard + +"he@npm:^1.2.0": + version: 1.2.0 + resolution: "he@npm:1.2.0" + bin: + he: bin/he + checksum: 3d4d6babccccd79c5c5a3f929a68af33360d6445587d628087f39a965079d84f18ce9c3d3f917ee1e3978916fc833bb8b29377c3b403f919426f91bc6965e7a7 + languageName: node + linkType: hard + +"headers-polyfill@npm:3.2.5": + version: 3.2.5 + resolution: "headers-polyfill@npm:3.2.5" + checksum: a3c4bdd661584fd39e40c0f91412abc514616edfbd20d29a75567e591f90ef5c445c8e209b7f3c2b2375d27e95e4690f33417368a168d4832484a93861ab6a3c + languageName: node + linkType: hard + +"helmet@npm:^6.0.0": + version: 6.2.0 + resolution: "helmet@npm:6.2.0" + checksum: cf01e024244205bd10d70fd2f3874244b72ba37a10a4604e4383bbd63fe1438ee24bae7672c4ee5c5e16e6cd88ac58003274034fab0ba199761471555a322b37 + languageName: node + linkType: hard + +"hexoid@npm:^1.0.0": + version: 1.0.0 + resolution: "hexoid@npm:1.0.0" + checksum: 27a148ca76a2358287f40445870116baaff4a0ed0acc99900bf167f0f708ffd82e044ff55e9949c71963852b580fc024146d3ac6d5d76b508b78d927fa48ae2d + languageName: node + linkType: hard + +"hey-listen@npm:^1.0.8": + version: 1.0.8 + resolution: "hey-listen@npm:1.0.8" + checksum: 6bad60b367688f5348e25e7ca3276a74b59ac5a09b0455e6ff8ab7d4a9e38cd2116c708a7dcd8a954d27253ce1d8717ec891d175723ea739885b828cf44e4072 + languageName: node + linkType: hard + +"highlight.js@npm:^10.4.1, highlight.js@npm:^10.7.2, highlight.js@npm:~10.7.0": + version: 10.7.3 + resolution: "highlight.js@npm:10.7.3" + checksum: defeafcd546b535d710d8efb8e650af9e3b369ef53e28c3dc7893eacfe263200bba4c5fcf43524ae66d5c0c296b1af0870523ceae3e3104d24b7abf6374a4fea + languageName: node + linkType: hard + +"highlightjs-vue@npm:^1.0.0": + version: 1.0.0 + resolution: "highlightjs-vue@npm:1.0.0" + checksum: 895f2dd22c93a441aca7df8d21f18c00697537675af18832e50810a071715f79e45eda677e6244855f325234c6a06f7bd76f8f20bd602040fc350c80ac7725e4 + languageName: node + linkType: hard + +"history@npm:^5.0.0, history@npm:^5.3.0": + version: 5.3.0 + resolution: "history@npm:5.3.0" + dependencies: + "@babel/runtime": ^7.7.6 + checksum: d73c35df49d19ac172f9547d30a21a26793e83f16a78386d99583b5bf1429cc980799fcf1827eb215d31816a6600684fba9686ce78104e23bd89ec239e7c726f + languageName: node + linkType: hard + +"hmac-drbg@npm:^1.0.1": + version: 1.0.1 + resolution: "hmac-drbg@npm:1.0.1" + dependencies: + hash.js: ^1.0.3 + minimalistic-assert: ^1.0.0 + minimalistic-crypto-utils: ^1.0.1 + checksum: bd30b6a68d7f22d63f10e1888aee497d7c2c5c0bb469e66bbdac99f143904d1dfe95f8131f95b3e86c86dd239963c9d972fcbe147e7cffa00e55d18585c43fe0 + languageName: node + linkType: hard + +"hoist-non-react-statics@npm:^3.3.0, hoist-non-react-statics@npm:^3.3.1, hoist-non-react-statics@npm:^3.3.2": + version: 3.3.2 + resolution: "hoist-non-react-statics@npm:3.3.2" + dependencies: + react-is: ^16.7.0 + checksum: b1538270429b13901ee586aa44f4cc3ecd8831c061d06cb8322e50ea17b3f5ce4d0e2e66394761e6c8e152cd8c34fb3b4b690116c6ce2bd45b18c746516cb9e8 + languageName: node + linkType: hard + +"homedir-polyfill@npm:^1.0.1": + version: 1.0.3 + resolution: "homedir-polyfill@npm:1.0.3" + dependencies: + parse-passwd: ^1.0.0 + checksum: 18dd4db87052c6a2179d1813adea0c4bfcfa4f9996f0e226fefb29eb3d548e564350fa28ec46b0bf1fbc0a1d2d6922ceceb80093115ea45ff8842a4990139250 + languageName: node + linkType: hard + +"hoopy@npm:^0.1.4": + version: 0.1.4 + resolution: "hoopy@npm:0.1.4" + checksum: cfa60c7684c5e1ee4efe26e167bc54b73f839ffb59d1d44a5c4bf891e26b4f5bcc666555219a98fec95508fea4eda3a79540c53c05cc79afc1f66f9a238f4d9e + languageName: node + linkType: hard + +"hpack.js@npm:^2.1.6": + version: 2.1.6 + resolution: "hpack.js@npm:2.1.6" + dependencies: + inherits: ^2.0.1 + obuf: ^1.0.0 + readable-stream: ^2.0.1 + wbuf: ^1.1.0 + checksum: 2de144115197967ad6eeee33faf41096c6ba87078703c5cb011632dcfbffeb45784569e0cf02c317bd79c48375597c8ec88c30fff5bb0b023e8f654fb6e9c06e + languageName: node + linkType: hard + +"hpagent@npm:^1.2.0": + version: 1.2.0 + resolution: "hpagent@npm:1.2.0" + checksum: b029da695edae438cee4da2a437386f9db4ac27b3ceb7306d02e1b586c9c194741ed2e943c8a222e0cfefaf27ee3f863aca7ba1721b0950a2a19bf25bc0d85e2 + languageName: node + linkType: hard + +"html-encoding-sniffer@npm:^2.0.1": + version: 2.0.1 + resolution: "html-encoding-sniffer@npm:2.0.1" + dependencies: + whatwg-encoding: ^1.0.5 + checksum: bf30cce461015ed7e365736fcd6a3063c7bc016a91f74398ef6158886970a96333938f7c02417ab3c12aa82e3e53b40822145facccb9ddfbcdc15a879ae4d7ba + languageName: node + linkType: hard + +"html-encoding-sniffer@npm:^3.0.0": + version: 3.0.0 + resolution: "html-encoding-sniffer@npm:3.0.0" + dependencies: + whatwg-encoding: ^2.0.0 + checksum: 8d806aa00487e279e5ccb573366a951a9f68f65c90298eac9c3a2b440a7ffe46615aff2995a2f61c6746c639234e6179a97e18ca5ccbbf93d3725ef2099a4502 + languageName: node + linkType: hard + +"html-entities@npm:^2.1.0, html-entities@npm:^2.3.2, html-entities@npm:^2.4.0, html-entities@npm:^2.5.2": + version: 2.5.2 + resolution: "html-entities@npm:2.5.2" + checksum: b23f4a07d33d49ade1994069af4e13d31650e3fb62621e92ae10ecdf01d1a98065c78fd20fdc92b4c7881612210b37c275f2c9fba9777650ab0d6f2ceb3b99b6 + languageName: node + linkType: hard + +"html-escaper@npm:^2.0.0": + version: 2.0.2 + resolution: "html-escaper@npm:2.0.2" + checksum: d2df2da3ad40ca9ee3a39c5cc6475ef67c8f83c234475f24d8e9ce0dc80a2c82df8e1d6fa78ddd1e9022a586ea1bd247a615e80a5cd9273d90111ddda7d9e974 + languageName: node + linkType: hard + +"html-minifier-terser@npm:^6.0.2": + version: 6.1.0 + resolution: "html-minifier-terser@npm:6.1.0" + dependencies: + camel-case: ^4.1.2 + clean-css: ^5.2.2 + commander: ^8.3.0 + he: ^1.2.0 + param-case: ^3.0.4 + relateurl: ^0.2.7 + terser: ^5.10.0 + bin: + html-minifier-terser: cli.js + checksum: ac52c14006476f773204c198b64838477859dc2879490040efab8979c0207424da55d59df7348153f412efa45a0840a1ca3c757bf14767d23a15e3e389d37a93 + languageName: node + linkType: hard + +"html-webpack-plugin@npm:^5.3.1": + version: 5.6.3 + resolution: "html-webpack-plugin@npm:5.6.3" + dependencies: + "@types/html-minifier-terser": ^6.0.0 + html-minifier-terser: ^6.0.2 + lodash: ^4.17.21 + pretty-error: ^4.0.0 + tapable: ^2.0.0 + peerDependencies: + "@rspack/core": 0.x || 1.x + webpack: ^5.20.0 + peerDependenciesMeta: + "@rspack/core": + optional: true + webpack: + optional: true + checksum: 59e7d971b0cfd9ba34c7acaa3c161e43c62596474dd8cd35d7b690498ff5891f21296de0aa1d2e7810348caa657e938461267155dda47913b5eeca7124406270 + languageName: node + linkType: hard + +"htmlparser2@npm:^6.1.0": + version: 6.1.0 + resolution: "htmlparser2@npm:6.1.0" + dependencies: + domelementtype: ^2.0.1 + domhandler: ^4.0.0 + domutils: ^2.5.2 + entities: ^2.0.0 + checksum: 81a7b3d9c3bb9acb568a02fc9b1b81ffbfa55eae7f1c41ae0bf840006d1dbf54cb3aa245b2553e2c94db674840a9f0fdad7027c9a9d01a062065314039058c4e + languageName: node + linkType: hard + +"http-assert@npm:^1.3.0": + version: 1.5.0 + resolution: "http-assert@npm:1.5.0" + dependencies: + deep-equal: ~1.0.1 + http-errors: ~1.8.0 + checksum: 69c9b3c14cf8b2822916360a365089ce936c883c49068f91c365eccba5c141a9964d19fdda589150a480013bf503bf37d8936c732e9635819339e730ab0e7527 + languageName: node + linkType: hard + +"http-cache-semantics@npm:^4.1.0, http-cache-semantics@npm:^4.1.1": + version: 4.1.1 + resolution: "http-cache-semantics@npm:4.1.1" + checksum: 83ac0bc60b17a3a36f9953e7be55e5c8f41acc61b22583060e8dedc9dd5e3607c823a88d0926f9150e571f90946835c7fe150732801010845c72cd8bbff1a236 + languageName: node + linkType: hard + +"http-deceiver@npm:^1.2.7": + version: 1.2.7 + resolution: "http-deceiver@npm:1.2.7" + checksum: 64d7d1ae3a6933eb0e9a94e6f27be4af45a53a96c3c34e84ff57113787105a89fff9d1c3df263ef63add823df019b0e8f52f7121e32393bb5ce9a713bf100b41 + languageName: node + linkType: hard + +"http-encoding@npm:^2.0.1": + version: 2.0.1 + resolution: "http-encoding@npm:2.0.1" + dependencies: + brotli-wasm: ^3.0.0 + pify: ^5.0.0 + zstd-codec: ^0.1.5 + checksum: c34a1cd81ad1c08e6c6aba5aef3f4d4bc4a6c84f8b3511776eb62006beeee48a104ce1630e3c8497f66d5c0913195dea596e776336dd5a598bd7fe06d27e1395 + languageName: node + linkType: hard + +"http-errors@npm:2.0.0": + version: 2.0.0 + resolution: "http-errors@npm:2.0.0" + dependencies: + depd: 2.0.0 + inherits: 2.0.4 + setprototypeof: 1.2.0 + statuses: 2.0.1 + toidentifier: 1.0.1 + checksum: 9b0a3782665c52ce9dc658a0d1560bcb0214ba5699e4ea15aefb2a496e2ca83db03ebc42e1cce4ac1f413e4e0d2d736a3fd755772c556a9a06853ba2a0b7d920 + languageName: node + linkType: hard + +"http-errors@npm:^1.6.3, http-errors@npm:~1.8.0": + version: 1.8.1 + resolution: "http-errors@npm:1.8.1" + dependencies: + depd: ~1.1.2 + inherits: 2.0.4 + setprototypeof: 1.2.0 + statuses: ">= 1.5.0 < 2" + toidentifier: 1.0.1 + checksum: d3c7e7e776fd51c0a812baff570bdf06fe49a5dc448b700ab6171b1250e4cf7db8b8f4c0b133e4bfe2451022a5790c1ca6c2cae4094dedd6ac8304a1267f91d2 + languageName: node + linkType: hard + +"http-errors@npm:~1.6.2": + version: 1.6.3 + resolution: "http-errors@npm:1.6.3" + dependencies: + depd: ~1.1.2 + inherits: 2.0.3 + setprototypeof: 1.1.0 + statuses: ">= 1.4.0 < 2" + checksum: a9654ee027e3d5de305a56db1d1461f25709ac23267c6dc28cdab8323e3f96caa58a9a6a5e93ac15d7285cee0c2f019378c3ada9026e7fe19c872d695f27de7c + languageName: node + linkType: hard + +"http-parser-js@npm:>=0.5.1": + version: 0.5.8 + resolution: "http-parser-js@npm:0.5.8" + checksum: 6bbdf2429858e8cf13c62375b0bfb6dc3955ca0f32e58237488bc86cd2378f31d31785fd3ac4ce93f1c74e0189cf8823c91f5cb061696214fd368d2452dc871d + languageName: node + linkType: hard + +"http-proxy-agent@npm:^4.0.1": + version: 4.0.1 + resolution: "http-proxy-agent@npm:4.0.1" + dependencies: + "@tootallnate/once": 1 + agent-base: 6 + debug: 4 + checksum: c6a5da5a1929416b6bbdf77b1aca13888013fe7eb9d59fc292e25d18e041bb154a8dfada58e223fc7b76b9b2d155a87e92e608235201f77d34aa258707963a82 + languageName: node + linkType: hard + +"http-proxy-agent@npm:^5.0.0": + version: 5.0.0 + resolution: "http-proxy-agent@npm:5.0.0" + dependencies: + "@tootallnate/once": 2 + agent-base: 6 + debug: 4 + checksum: e2ee1ff1656a131953839b2a19cd1f3a52d97c25ba87bd2559af6ae87114abf60971e498021f9b73f9fd78aea8876d1fb0d4656aac8a03c6caa9fc175f22b786 + languageName: node + linkType: hard + +"http-proxy-agent@npm:^7.0.0, http-proxy-agent@npm:^7.0.1": + version: 7.0.2 + resolution: "http-proxy-agent@npm:7.0.2" + dependencies: + agent-base: ^7.1.0 + debug: ^4.3.4 + checksum: 670858c8f8f3146db5889e1fa117630910101db601fff7d5a8aa637da0abedf68c899f03d3451cac2f83bcc4c3d2dabf339b3aa00ff8080571cceb02c3ce02f3 + languageName: node + linkType: hard + +"http-proxy-middleware@npm:*": + version: 3.0.3 + resolution: "http-proxy-middleware@npm:3.0.3" + dependencies: + "@types/http-proxy": ^1.17.15 + debug: ^4.3.6 + http-proxy: ^1.18.1 + is-glob: ^4.0.3 + is-plain-object: ^5.0.0 + micromatch: ^4.0.8 + checksum: 7486cd36f8123aaeb9e5412ecdf1bbfb69a9c7a5cd51cdb202653fe7201fc6073849f981d814b429527e42bb825d57af09ba7b8ba9d95e194dbd7dd83bf51643 + languageName: node + linkType: hard + +"http-proxy-middleware@npm:^2.0.0, http-proxy-middleware@npm:^2.0.3, http-proxy-middleware@npm:^2.0.6": + version: 2.0.7 + resolution: "http-proxy-middleware@npm:2.0.7" + dependencies: + "@types/http-proxy": ^1.17.8 + http-proxy: ^1.18.1 + is-glob: ^4.0.1 + is-plain-obj: ^3.0.0 + micromatch: ^4.0.2 + peerDependencies: + "@types/express": ^4.17.13 + peerDependenciesMeta: + "@types/express": + optional: true + checksum: 18caa21145917aa1054740353916e8f03f5a3a93bede9106f1f44d84f7b174df17af1c72bf5fade5cc440c2058ee813f47cbb2bdd6ae6874af1cf33e0ac575f3 + languageName: node + linkType: hard + +"http-proxy@npm:^1.18.1": + version: 1.18.1 + resolution: "http-proxy@npm:1.18.1" + dependencies: + eventemitter3: ^4.0.0 + follow-redirects: ^1.0.0 + requires-port: ^1.0.0 + checksum: f5bd96bf83e0b1e4226633dbb51f8b056c3e6321917df402deacec31dd7fe433914fc7a2c1831cf7ae21e69c90b3a669b8f434723e9e8b71fd68afe30737b6a5 + languageName: node + linkType: hard + +"http-signature@npm:~1.2.0": + version: 1.2.0 + resolution: "http-signature@npm:1.2.0" + dependencies: + assert-plus: ^1.0.0 + jsprim: ^1.2.2 + sshpk: ^1.7.0 + checksum: 3324598712266a9683585bb84a75dec4fd550567d5e0dd4a0fff6ff3f74348793404d3eeac4918fa0902c810eeee1a86419e4a2e92a164132dfe6b26743fb47c + languageName: node + linkType: hard + +"http2-wrapper@npm:^2.2.1": + version: 2.2.1 + resolution: "http2-wrapper@npm:2.2.1" + dependencies: + quick-lru: ^5.1.1 + resolve-alpn: ^1.2.0 + checksum: e95e55e22c6fd61182ce81fecb9b7da3af680d479febe8ad870d05f7ebbc9f076e455193766f4e7934e50913bf1d8da3ba121fb5cd2928892390b58cf9d5c509 + languageName: node + linkType: hard + +"https-browserify@npm:^1.0.0": + version: 1.0.0 + resolution: "https-browserify@npm:1.0.0" + checksum: 09b35353e42069fde2435760d13f8a3fb7dd9105e358270e2e225b8a94f811b461edd17cb57594e5f36ec1218f121c160ddceeec6e8be2d55e01dcbbbed8cbae + languageName: node + linkType: hard + +"https-proxy-agent@npm:^5.0.0, https-proxy-agent@npm:^5.0.1": + version: 5.0.1 + resolution: "https-proxy-agent@npm:5.0.1" + dependencies: + agent-base: 6 + debug: 4 + checksum: 571fccdf38184f05943e12d37d6ce38197becdd69e58d03f43637f7fa1269cf303a7d228aa27e5b27bbd3af8f09fd938e1c91dcfefff2df7ba77c20ed8dfc765 + languageName: node + linkType: hard + +"https-proxy-agent@npm:^7.0.0, https-proxy-agent@npm:^7.0.1, https-proxy-agent@npm:^7.0.3, https-proxy-agent@npm:^7.0.5": + version: 7.0.5 + resolution: "https-proxy-agent@npm:7.0.5" + dependencies: + agent-base: ^7.0.2 + debug: 4 + checksum: 2e1a28960f13b041a50702ee74f240add8e75146a5c37fc98f1960f0496710f6918b3a9fe1e5aba41e50f58e6df48d107edd9c405c5f0d73ac260dabf2210857 + languageName: node + linkType: hard + +"https-proxy-agent@npm:^7.0.6": + version: 7.0.6 + resolution: "https-proxy-agent@npm:7.0.6" + dependencies: + agent-base: ^7.1.2 + debug: 4 + checksum: b882377a120aa0544846172e5db021fa8afbf83fea2a897d397bd2ddd8095ab268c24bc462f40a15f2a8c600bf4aa05ce52927f70038d4014e68aefecfa94e8d + languageName: node + linkType: hard + +"human-id@npm:^1.0.2": + version: 1.0.2 + resolution: "human-id@npm:1.0.2" + checksum: 95ee57ffae849f008e2ef3fe6e437be8c999861b4256f18c3b194c8928670a8a149e0576917105d5fd77e5edbb621c5a4736fade20bb7bf130113c1ebc95cb74 + languageName: node + linkType: hard + +"human-signals@npm:^2.1.0": + version: 2.1.0 + resolution: "human-signals@npm:2.1.0" + checksum: b87fd89fce72391625271454e70f67fe405277415b48bcc0117ca73d31fa23a4241787afdc8d67f5a116cf37258c052f59ea82daffa72364d61351423848e3b8 + languageName: node + linkType: hard + +"humanize-duration@npm:^3.25.1": + version: 3.32.1 + resolution: "humanize-duration@npm:3.32.1" + checksum: 17f6f2ec09a931eb0bf7de1fc8ac01f90174f366f60390289bd0797c6e4545255bd5d770dd18909c9b21685d76cc190b3a8ec880d2ecc088a1ad032e0d2f57cb + languageName: node + linkType: hard + +"humanize-ms@npm:^1.2.1": + version: 1.2.1 + resolution: "humanize-ms@npm:1.2.1" + dependencies: + ms: ^2.0.0 + checksum: 9c7a74a2827f9294c009266c82031030eae811ca87b0da3dceb8d6071b9bde22c9f3daef0469c3c533cc67a97d8a167cd9fc0389350e5f415f61a79b171ded16 + languageName: node + linkType: hard + +"hyperdyperid@npm:^1.2.0": + version: 1.2.0 + resolution: "hyperdyperid@npm:1.2.0" + checksum: 210029d1c86926f09109f6317d143f8b056fc38e8dd11b0c3e3205fc6c6ff8429fb55b4b9c2bce065462719ed9d34366eced387aaa0035d93eb76b306a8547ef + languageName: node + linkType: hard + +"hyphenate-style-name@npm:^1.0.3": + version: 1.1.0 + resolution: "hyphenate-style-name@npm:1.1.0" + checksum: b9ed74e29181d96bd58a2d0e62fc4a19879db591dba268275829ff0ae595fcdf11faafaeaa63330a45c3004664d7db1f0fc7cdb372af8ee4615ed8260302c207 + languageName: node + linkType: hard + +"i18next@npm:^22.4.15": + version: 22.5.1 + resolution: "i18next@npm:22.5.1" + dependencies: + "@babel/runtime": ^7.20.6 + checksum: 175f8ab7fac2abcee147b00cc2d8e7d4fa9b05cdc227f02cac841fc2fd9545ed4a6d88774f594f8ad12dc944e4d34cc8e88aa00c8b9947baef9e859d93abd305 + languageName: node + linkType: hard + +"iconv-lite@npm:0.4.24, iconv-lite@npm:^0.4.24": + version: 0.4.24 + resolution: "iconv-lite@npm:0.4.24" + dependencies: + safer-buffer: ">= 2.1.2 < 3" + checksum: bd9f120f5a5b306f0bc0b9ae1edeb1577161503f5f8252a20f1a9e56ef8775c9959fd01c55f2d3a39d9a8abaf3e30c1abeb1895f367dcbbe0a8fd1c9ca01c4f6 + languageName: node + linkType: hard + +"iconv-lite@npm:0.6, iconv-lite@npm:0.6.3, iconv-lite@npm:^0.6.2, iconv-lite@npm:^0.6.3": + version: 0.6.3 + resolution: "iconv-lite@npm:0.6.3" + dependencies: + safer-buffer: ">= 2.1.2 < 3.0.0" + checksum: 3f60d47a5c8fc3313317edfd29a00a692cc87a19cac0159e2ce711d0ebc9019064108323b5e493625e25594f11c6236647d8e256fbe7a58f4a3b33b89e6d30bf + languageName: node + linkType: hard + +"icss-replace-symbols@npm:^1.1.0": + version: 1.1.0 + resolution: "icss-replace-symbols@npm:1.1.0" + checksum: 24575b2c2f7e762bfc6f4beee31be9ba98a01cad521b5aa9954090a5de2b5e1bf67814c17e22f9e51b7d798238db8215a173d6c2b4726ce634ce06b68ece8045 + languageName: node + linkType: hard + +"icss-utils@npm:^5.0.0, icss-utils@npm:^5.1.0": + version: 5.1.0 + resolution: "icss-utils@npm:5.1.0" + peerDependencies: + postcss: ^8.1.0 + checksum: 5c324d283552b1269cfc13a503aaaa172a280f914e5b81544f3803bc6f06a3b585fb79f66f7c771a2c052db7982c18bf92d001e3b47282e3abbbb4c4cc488d68 + languageName: node + linkType: hard + +"idb-keyval@npm:5.1.5": + version: 5.1.5 + resolution: "idb-keyval@npm:5.1.5" + dependencies: + safari-14-idb-fix: ^1.0.6 + checksum: 6d71d975c5392ddce934a3617b169c25d3b3204f5203d2ffa182c253515922c787292d61eb738aa25ab80fa390e541a416376a6d62a0a2fe7cf112a758f2d8d9 + languageName: node + linkType: hard + +"identity-obj-proxy@npm:3.0.0": + version: 3.0.0 + resolution: "identity-obj-proxy@npm:3.0.0" + dependencies: + harmony-reflect: ^1.4.6 + checksum: 97559f8ea2aeaa1a880d279d8c49550dce01148321e00a2102cda5ddf9ce622fa1d7f3efc7bed63458af78889de888fdaebaf31c816312298bb3fdd0ef8aaf2c + languageName: node + linkType: hard + +"ieee754@npm:^1.1.13, ieee754@npm:^1.1.4, ieee754@npm:^1.2.1": + version: 1.2.1 + resolution: "ieee754@npm:1.2.1" + checksum: 5144c0c9815e54ada181d80a0b810221a253562422e7c6c3a60b1901154184f49326ec239d618c416c1c5945a2e197107aee8d986a3dd836b53dffefd99b5e7e + languageName: node + linkType: hard + +"ignore-walk@npm:^5.0.1": + version: 5.0.1 + resolution: "ignore-walk@npm:5.0.1" + dependencies: + minimatch: ^5.0.1 + checksum: 1a4ef35174653a1aa6faab3d9f8781269166536aee36a04946f6e2b319b2475c1903a75ed42f04219274128242f49d0a10e20c4354ee60d9548e97031451150b + languageName: node + linkType: hard + +"ignore@npm:^3.3.10": + version: 3.3.10 + resolution: "ignore@npm:3.3.10" + checksum: 23e8cc776e367b56615ab21b78decf973a35dfca5522b39d9b47643d8168473b0d1f18dd1321a1bab466a12ea11a2411903f3b21644f4d5461ee0711ec8678bd + languageName: node + linkType: hard + +"ignore@npm:^5.1.4, ignore@npm:^5.1.8, ignore@npm:^5.2.0, ignore@npm:^5.2.4": + version: 5.3.2 + resolution: "ignore@npm:5.3.2" + checksum: 2acfd32a573260ea522ea0bfeff880af426d68f6831f973129e2ba7363f422923cf53aab62f8369cbf4667c7b25b6f8a3761b34ecdb284ea18e87a5262a865be + languageName: node + linkType: hard + +"immediate@npm:~3.0.5": + version: 3.0.6 + resolution: "immediate@npm:3.0.6" + checksum: f9b3486477555997657f70318cc8d3416159f208bec4cca3ff3442fd266bc23f50f0c9bd8547e1371a6b5e82b821ec9a7044a4f7b944798b25aa3cc6d5e63e62 + languageName: node + linkType: hard + +"immer@npm:^9.0.6, immer@npm:^9.0.7": + version: 9.0.21 + resolution: "immer@npm:9.0.21" + checksum: 70e3c274165995352f6936695f0ef4723c52c92c92dd0e9afdfe008175af39fa28e76aafb3a2ca9d57d1fb8f796efc4dd1e1cc36f18d33fa5b74f3dfb0375432 languageName: node linkType: hard -"escalade@npm:^3.1.1, escalade@npm:^3.2.0": - version: 3.2.0 - resolution: "escalade@npm:3.2.0" - checksum: 47b029c83de01b0d17ad99ed766347b974b0d628e848de404018f3abee728e987da0d2d370ad4574aa3d5b5bfc368754fd085d69a30f8e75903486ec4b5b709e +"immutable@npm:^3.x.x": + version: 3.8.2 + resolution: "immutable@npm:3.8.2" + checksum: 41909b386950ff84ca3cfca77c74cfc87d225a914e98e6c57996fa81a328da61a7c32216d6d5abad40f54747ffdc5c4b02b102e6ad1a504c1752efde8041f964 languageName: node linkType: hard -"escape-html@npm:^1.0.3, escape-html@npm:~1.0.3": - version: 1.0.3 - resolution: "escape-html@npm:1.0.3" - checksum: 6213ca9ae00d0ab8bccb6d8d4e0a98e76237b2410302cf7df70aaa6591d509a2a37ce8998008cbecae8fc8ffaadf3fb0229535e6a145f3ce0b211d060decbb24 +"import-cwd@npm:^3.0.0": + version: 3.0.0 + resolution: "import-cwd@npm:3.0.0" + dependencies: + import-from: ^3.0.0 + checksum: f2c4230e8389605154a390124381f9136811306ae4ba1c8017398c3c6926bc5cf75cf89350372b4938f79792ea373776b4efabd27506440ec301ce34c4e867eb languageName: node linkType: hard -"escape-string-regexp@npm:^1.0.5": - version: 1.0.5 - resolution: "escape-string-regexp@npm:1.0.5" - checksum: 6092fda75c63b110c706b6a9bfde8a612ad595b628f0bd2147eea1d3406723020810e591effc7db1da91d80a71a737a313567c5abb3813e8d9c71f4aa595b410 +"import-fresh@npm:^3.1.0, import-fresh@npm:^3.2.1, import-fresh@npm:^3.3.0": + version: 3.3.0 + resolution: "import-fresh@npm:3.3.0" + dependencies: + parent-module: ^1.0.0 + resolve-from: ^4.0.0 + checksum: 2cacfad06e652b1edc50be650f7ec3be08c5e5a6f6d12d035c440a42a8cc028e60a5b99ca08a77ab4d6b1346da7d971915828f33cdab730d3d42f08242d09baa languageName: node linkType: hard -"escape-string-regexp@npm:^2.0.0": - version: 2.0.0 - resolution: "escape-string-regexp@npm:2.0.0" - checksum: 9f8a2d5743677c16e85c810e3024d54f0c8dea6424fad3c79ef6666e81dd0846f7437f5e729dfcdac8981bc9e5294c39b4580814d114076b8d36318f46ae4395 +"import-from@npm:^3.0.0": + version: 3.0.0 + resolution: "import-from@npm:3.0.0" + dependencies: + resolve-from: ^5.0.0 + checksum: 5040a7400e77e41e2c3bb6b1b123b52a15a284de1ffc03d605879942c00e3a87428499d8d031d554646108a0f77652549411167f6a7788e4fc7027eefccf3356 languageName: node linkType: hard -"escape-string-regexp@npm:^4.0.0": +"import-lazy@npm:~4.0.0": version: 4.0.0 - resolution: "escape-string-regexp@npm:4.0.0" - checksum: 98b48897d93060f2322108bf29db0feba7dd774be96cd069458d1453347b25ce8682ecc39859d4bca2203cc0ab19c237bcc71755eff49a0f8d90beadeeba5cc5 + resolution: "import-lazy@npm:4.0.0" + checksum: 22f5e51702134aef78890156738454f620e5fe7044b204ebc057c614888a1dd6fdf2ede0fdcca44d5c173fd64f65c985f19a51775b06967ef58cc3d26898df07 languageName: node linkType: hard -"escodegen@npm:^1.8.1": - version: 1.14.3 - resolution: "escodegen@npm:1.14.3" +"import-local@npm:^3.0.2": + version: 3.2.0 + resolution: "import-local@npm:3.2.0" dependencies: - esprima: ^4.0.1 - estraverse: ^4.2.0 - esutils: ^2.0.2 - optionator: ^0.8.1 - source-map: ~0.6.1 - dependenciesMeta: - source-map: - optional: true + pkg-dir: ^4.2.0 + resolve-cwd: ^3.0.0 bin: - escodegen: bin/escodegen.js - esgenerate: bin/esgenerate.js - checksum: 381cdc4767ecdb221206bbbab021b467bbc2a6f5c9a99c9e6353040080bdd3dfe73d7604ad89a47aca6ea7d58bc635f6bd3fbc8da9a1998e9ddfa8372362ccd0 + import-local-fixture: fixtures/cli.js + checksum: 0b0b0b412b2521739fbb85eeed834a3c34de9bc67e670b3d0b86248fc460d990a7b116ad056c084b87a693ef73d1f17268d6a5be626bb43c998a8b1c8a230004 languageName: node linkType: hard -"escodegen@npm:^2.0.0, escodegen@npm:^2.1.0": - version: 2.1.0 - resolution: "escodegen@npm:2.1.0" - dependencies: - esprima: ^4.0.1 - estraverse: ^5.2.0 - esutils: ^2.0.2 - source-map: ~0.6.1 - dependenciesMeta: - source-map: - optional: true - bin: - escodegen: bin/escodegen.js - esgenerate: bin/esgenerate.js - checksum: 096696407e161305cd05aebb95134ad176708bc5cb13d0dcc89a5fcbb959b8ed757e7f2591a5f8036f8f4952d4a724de0df14cd419e29212729fa6df5ce16bf6 +"imurmurhash@npm:^0.1.4": + version: 0.1.4 + resolution: "imurmurhash@npm:0.1.4" + checksum: 7cae75c8cd9a50f57dadd77482359f659eaebac0319dd9368bcd1714f55e65badd6929ca58569da2b6494ef13fdd5598cd700b1eba23f8b79c5f19d195a3ecf7 languageName: node linkType: hard -"eslint-config-prettier@npm:^8.10.0": - version: 8.10.0 - resolution: "eslint-config-prettier@npm:8.10.0" - peerDependencies: - eslint: ">=7.0.0" - bin: - eslint-config-prettier: bin/cli.js - checksum: 153266badd477e49b0759816246b2132f1dbdb6c7f313ca60a9af5822fd1071c2bc5684a3720d78b725452bbac04bb130878b2513aea5e72b1b792de5a69fec8 +"indent-string@npm:^4.0.0": + version: 4.0.0 + resolution: "indent-string@npm:4.0.0" + checksum: 824cfb9929d031dabf059bebfe08cf3137365e112019086ed3dcff6a0a7b698cb80cf67ccccde0e25b9e2d7527aa6cc1fed1ac490c752162496caba3e6699612 languageName: node linkType: hard -"eslint-config-prettier@npm:^9.0.0": - version: 9.1.0 - resolution: "eslint-config-prettier@npm:9.1.0" - peerDependencies: - eslint: ">=7.0.0" - bin: - eslint-config-prettier: bin/cli.js - checksum: 9229b768c879f500ee54ca05925f31b0c0bafff3d9f5521f98ff05127356de78c81deb9365c86a5ec4efa990cb72b74df8612ae15965b14136044c73e1f6a907 +"infer-owner@npm:^1.0.4": + version: 1.0.4 + resolution: "infer-owner@npm:1.0.4" + checksum: 181e732764e4a0611576466b4b87dac338972b839920b2a8cde43642e4ed6bd54dc1fb0b40874728f2a2df9a1b097b8ff83b56d5f8f8e3927f837fdcb47d8a89 languageName: node linkType: hard -"eslint-formatter-friendly@npm:^7.0.0": - version: 7.0.0 - resolution: "eslint-formatter-friendly@npm:7.0.0" +"inflight@npm:^1.0.4": + version: 1.0.6 + resolution: "inflight@npm:1.0.6" dependencies: - "@babel/code-frame": 7.0.0 - chalk: 2.4.2 - extend: 3.0.2 - strip-ansi: 5.2.0 - text-table: 0.2.0 - checksum: e318768ac919993a234d38798544c5cf8e40ce05d6f2c028e4d0a4ac5c503a31609590ed67ceb31c98fae899b87950c6c805ad9e8c3a9060776daecda1bf1545 + once: ^1.3.0 + wrappy: 1 + checksum: f4f76aa072ce19fae87ce1ef7d221e709afb59d445e05d47fba710e85470923a75de35bfae47da6de1b18afc3ce83d70facf44cfb0aff89f0a3f45c0a0244dfd languageName: node linkType: hard -"eslint-import-resolver-node@npm:^0.3.9": - version: 0.3.9 - resolution: "eslint-import-resolver-node@npm:0.3.9" +"inherits@npm:2, inherits@npm:2.0.4, inherits@npm:^2.0.1, inherits@npm:^2.0.3, inherits@npm:^2.0.4, inherits@npm:~2.0.1, inherits@npm:~2.0.3, inherits@npm:~2.0.4": + version: 2.0.4 + resolution: "inherits@npm:2.0.4" + checksum: 4a48a733847879d6cf6691860a6b1e3f0f4754176e4d71494c41f3475553768b10f84b5ce1d40fbd0e34e6bfbb864ee35858ad4dd2cf31e02fc4a154b724d7f1 + languageName: node + linkType: hard + +"inherits@npm:2.0.3": + version: 2.0.3 + resolution: "inherits@npm:2.0.3" + checksum: 78cb8d7d850d20a5e9a7f3620db31483aa00ad5f722ce03a55b110e5a723539b3716a3b463e2b96ce3fe286f33afc7c131fa2f91407528ba80cea98a7545d4c0 + languageName: node + linkType: hard + +"ini@npm:^1.3.2, ini@npm:^1.3.4, ini@npm:^1.3.5, ini@npm:~1.3.0": + version: 1.3.8 + resolution: "ini@npm:1.3.8" + checksum: dfd98b0ca3a4fc1e323e38a6c8eb8936e31a97a918d3b377649ea15bdb15d481207a0dda1021efbd86b464cae29a0d33c1d7dcaf6c5672bee17fa849bc50a1b3 + languageName: node + linkType: hard + +"inline-style-parser@npm:0.1.1": + version: 0.1.1 + resolution: "inline-style-parser@npm:0.1.1" + checksum: 5d545056a3e1f2bf864c928a886a0e1656a3517127d36917b973de581bd54adc91b4bf1febcb0da054f204b4934763f1a4e09308b4d55002327cf1d48ac5d966 + languageName: node + linkType: hard + +"inline-style-prefixer@npm:^7.0.1": + version: 7.0.1 + resolution: "inline-style-prefixer@npm:7.0.1" dependencies: - debug: ^3.2.7 - is-core-module: ^2.13.0 - resolve: ^1.22.4 - checksum: 439b91271236b452d478d0522a44482e8c8540bf9df9bd744062ebb89ab45727a3acd03366a6ba2bdbcde8f9f718bab7fe8db64688aca75acf37e04eafd25e22 + css-in-js-utils: ^3.1.0 + checksum: 07a72573dfdac5e08fa18f5ce71d922861716955e230175ac415db227d9ed49443c764356cb407a92f4c85b30ebf39604165260b4dfbf3196b7736d7332c5c06 languageName: node linkType: hard -"eslint-module-utils@npm:^2.12.0": - version: 2.12.0 - resolution: "eslint-module-utils@npm:2.12.0" +"inquirer@npm:8.2.6, inquirer@npm:^8.2.0": + version: 8.2.6 + resolution: "inquirer@npm:8.2.6" dependencies: - debug: ^3.2.7 - peerDependenciesMeta: - eslint: - optional: true - checksum: be3ac52e0971c6f46daeb1a7e760e45c7c45f820c8cc211799f85f10f04ccbf7afc17039165d56cb2da7f7ca9cec2b3a777013cddf0b976784b37eb9efa24180 + ansi-escapes: ^4.2.1 + chalk: ^4.1.1 + cli-cursor: ^3.1.0 + cli-width: ^3.0.0 + external-editor: ^3.0.3 + figures: ^3.0.0 + lodash: ^4.17.21 + mute-stream: 0.0.8 + ora: ^5.4.1 + run-async: ^2.4.0 + rxjs: ^7.5.5 + string-width: ^4.1.0 + strip-ansi: ^6.0.0 + through: ^2.3.6 + wrap-ansi: ^6.0.1 + checksum: 387ffb0a513559cc7414eb42c57556a60e302f820d6960e89d376d092e257a919961cd485a1b4de693dbb5c0de8bc58320bfd6247dfd827a873aa82a4215a240 languageName: node linkType: hard -"eslint-plugin-deprecation@npm:^2.0.0": - version: 2.0.0 - resolution: "eslint-plugin-deprecation@npm:2.0.0" +"internal-slot@npm:^1.0.7": + version: 1.0.7 + resolution: "internal-slot@npm:1.0.7" dependencies: - "@typescript-eslint/utils": ^6.0.0 - tslib: ^2.3.1 - tsutils: ^3.21.0 - peerDependencies: - eslint: ^7.0.0 || ^8.0.0 - typescript: ^4.2.4 || ^5.0.0 - checksum: d79611e902ac419a21e51eab582fcdbcf8170aff820c5e5197e7d242e7ca6bda59c0077d88404970c25993017398dd65c96df7d31a833e332d45dd330935324b + es-errors: ^1.3.0 + hasown: ^2.0.0 + side-channel: ^1.0.4 + checksum: cadc5eea5d7d9bc2342e93aae9f31f04c196afebb11bde97448327049f492cd7081e18623ae71388aac9cd237b692ca3a105be9c68ac39c1dec679d7409e33eb languageName: node linkType: hard -"eslint-plugin-import@npm:^2.25.4": - version: 2.31.0 - resolution: "eslint-plugin-import@npm:2.31.0" +"internal-slot@npm:^1.1.0": + version: 1.1.0 + resolution: "internal-slot@npm:1.1.0" dependencies: - "@rtsao/scc": ^1.1.0 - array-includes: ^3.1.8 - array.prototype.findlastindex: ^1.2.5 - array.prototype.flat: ^1.3.2 - array.prototype.flatmap: ^1.3.2 - debug: ^3.2.7 - doctrine: ^2.1.0 - eslint-import-resolver-node: ^0.3.9 - eslint-module-utils: ^2.12.0 + es-errors: ^1.3.0 hasown: ^2.0.2 - is-core-module: ^2.15.1 - is-glob: ^4.0.3 - minimatch: ^3.1.2 - object.fromentries: ^2.0.8 - object.groupby: ^1.0.3 - object.values: ^1.2.0 - semver: ^6.3.1 - string.prototype.trimend: ^1.0.8 - tsconfig-paths: ^3.15.0 - peerDependencies: - eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9 - checksum: b1d2ac268b3582ff1af2a72a2c476eae4d250c100f2e335b6e102036e4a35efa530b80ec578dfc36761fabb34a635b9bf5ab071abe9d4404a4bb054fdf22d415 + side-channel: ^1.1.0 + checksum: 8e0991c2d048cc08dab0a91f573c99f6a4215075887517ea4fa32203ce8aea60fa03f95b177977fa27eb502e5168366d0f3e02c762b799691411d49900611861 + languageName: node + linkType: hard + +"internmap@npm:1 - 2": + version: 2.0.3 + resolution: "internmap@npm:2.0.3" + checksum: 7ca41ec6aba8f0072fc32fa8a023450a9f44503e2d8e403583c55714b25efd6390c38a87161ec456bf42d7bc83aab62eb28f5aef34876b1ac4e60693d5e1d241 + languageName: node + linkType: hard + +"interpret@npm:^2.2.0": + version: 2.2.0 + resolution: "interpret@npm:2.2.0" + checksum: f51efef7cb8d02da16408ffa3504cd6053014c5aeb7bb8c223727e053e4235bf565e45d67028b0c8740d917c603807aa3c27d7bd2f21bf20b6417e2bb3e5fd6e + languageName: node + linkType: hard + +"invariant@npm:^2.2.2": + version: 2.2.4 + resolution: "invariant@npm:2.2.4" + dependencies: + loose-envify: ^1.0.0 + checksum: cc3182d793aad82a8d1f0af697b462939cb46066ec48bbf1707c150ad5fad6406137e91a262022c269702e01621f35ef60269f6c0d7fd178487959809acdfb14 + languageName: node + linkType: hard + +"ioredis@npm:^5.4.1": + version: 5.4.1 + resolution: "ioredis@npm:5.4.1" + dependencies: + "@ioredis/commands": ^1.1.1 + cluster-key-slot: ^1.1.0 + debug: ^4.3.4 + denque: ^2.1.0 + lodash.defaults: ^4.2.0 + lodash.isarguments: ^3.1.0 + redis-errors: ^1.2.0 + redis-parser: ^3.0.0 + standard-as-callback: ^2.1.0 + checksum: 92210294f75800febe7544c27b07e4892480172363b11971aa575be5b68f023bfed4bc858abc9792230c153aa80409047a358f174062c14d17536aa4499fe10b languageName: node linkType: hard -"eslint-plugin-jest@npm:^28.0.0": - version: 28.8.3 - resolution: "eslint-plugin-jest@npm:28.8.3" +"ip-address@npm:^9.0.5": + version: 9.0.5 + resolution: "ip-address@npm:9.0.5" dependencies: - "@typescript-eslint/utils": ^6.0.0 || ^7.0.0 || ^8.0.0 - peerDependencies: - "@typescript-eslint/eslint-plugin": ^6.0.0 || ^7.0.0 || ^8.0.0 - eslint: ^7.0.0 || ^8.0.0 || ^9.0.0 - jest: "*" - peerDependenciesMeta: - "@typescript-eslint/eslint-plugin": - optional: true - jest: - optional: true - checksum: e371fcbe2127a403824b6c23b66f6b2e2cc54074c3c70a9965d48bdcdfb461670965a7d7cdddab68f09e703d3a09a281d05591b1cb4315f5246d27fd8baa84ac + jsbn: 1.1.0 + sprintf-js: ^1.1.3 + checksum: aa15f12cfd0ef5e38349744e3654bae649a34c3b10c77a674a167e99925d1549486c5b14730eebce9fea26f6db9d5e42097b00aa4f9f612e68c79121c71652dc languageName: node linkType: hard -"eslint-plugin-jsx-a11y@npm:^6.5.1": - version: 6.10.2 - resolution: "eslint-plugin-jsx-a11y@npm:6.10.2" - dependencies: - aria-query: ^5.3.2 - array-includes: ^3.1.8 - array.prototype.flatmap: ^1.3.2 - ast-types-flow: ^0.0.8 - axe-core: ^4.10.0 - axobject-query: ^4.1.0 - damerau-levenshtein: ^1.0.8 - emoji-regex: ^9.2.2 - hasown: ^2.0.2 - jsx-ast-utils: ^3.3.5 - language-tags: ^1.0.9 - minimatch: ^3.1.2 - object.fromentries: ^2.0.8 - safe-regex-test: ^1.0.3 - string.prototype.includes: ^2.0.1 - peerDependencies: - eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9 - checksum: 0cc861398fa26ada61ed5703eef5b335495fcb96253263dcd5e399488ff019a2636372021baacc040e3560d1a34bfcd5d5ad9f1754f44cd0509c956f7df94050 +"ip-regex@npm:^4.1.0": + version: 4.3.0 + resolution: "ip-regex@npm:4.3.0" + checksum: 7ff904b891221b1847f3fdf3dbb3e6a8660dc39bc283f79eb7ed88f5338e1a3d1104b779bc83759159be266249c59c2160e779ee39446d79d4ed0890dfd06f08 languageName: node linkType: hard -"eslint-plugin-react-hooks@npm:^4.3.0": - version: 4.6.2 - resolution: "eslint-plugin-react-hooks@npm:4.6.2" - peerDependencies: - eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 - checksum: 395c433610f59577cfcf3f2e42bcb130436c8a0b3777ac64f441d88c5275f4fcfc89094cedab270f2822daf29af1079151a7a6579a8e9ea8cee66540ba0384c4 +"ipaddr.js@npm:1.9.1": + version: 1.9.1 + resolution: "ipaddr.js@npm:1.9.1" + checksum: f88d3825981486f5a1942414c8d77dd6674dd71c065adcfa46f578d677edcb99fda25af42675cb59db492fdf427b34a5abfcde3982da11a8fd83a500b41cfe77 languageName: node linkType: hard -"eslint-plugin-react@npm:^7.28.0": - version: 7.37.2 - resolution: "eslint-plugin-react@npm:7.37.2" +"ipaddr.js@npm:^2.0.1, ipaddr.js@npm:^2.1.0": + version: 2.2.0 + resolution: "ipaddr.js@npm:2.2.0" + checksum: 770ba8451fd9bf78015e8edac0d5abd7a708cbf75f9429ca9147a9d2f3a2d60767cd5de2aab2b1e13ca6e4445bdeff42bf12ef6f151c07a5c6cf8a44328e2859 + languageName: node + linkType: hard + +"is-alphabetical@npm:^1.0.0": + version: 1.0.4 + resolution: "is-alphabetical@npm:1.0.4" + checksum: 6508cce44fd348f06705d377b260974f4ce68c74000e7da4045f0d919e568226dc3ce9685c5a2af272195384df6930f748ce9213fc9f399b5d31b362c66312cb + languageName: node + linkType: hard + +"is-alphanumerical@npm:^1.0.0": + version: 1.0.4 + resolution: "is-alphanumerical@npm:1.0.4" dependencies: - array-includes: ^3.1.8 - array.prototype.findlast: ^1.2.5 - array.prototype.flatmap: ^1.3.2 - array.prototype.tosorted: ^1.1.4 - doctrine: ^2.1.0 - es-iterator-helpers: ^1.1.0 - estraverse: ^5.3.0 - hasown: ^2.0.2 - jsx-ast-utils: ^2.4.1 || ^3.0.0 - minimatch: ^3.1.2 - object.entries: ^1.1.8 - object.fromentries: ^2.0.8 - object.values: ^1.2.0 - prop-types: ^15.8.1 - resolve: ^2.0.0-next.5 - semver: ^6.3.1 - string.prototype.matchall: ^4.0.11 - string.prototype.repeat: ^1.0.0 - peerDependencies: - eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7 - checksum: 7f5203afee7fbe3702b27fdd2b9a3c0ccbbb47d0672f58311b9d8a08dea819c9da4a87c15e8bd508f2562f327a9d29ee8bd9cd189bf758d8dc903de5648b0bfa + is-alphabetical: ^1.0.0 + is-decimal: ^1.0.0 + checksum: e2e491acc16fcf5b363f7c726f666a9538dba0a043665740feb45bba1652457a73441e7c5179c6768a638ed396db3437e9905f403644ec7c468fb41f4813d03f languageName: node linkType: hard -"eslint-plugin-unused-imports@npm:^3.0.0": - version: 3.2.0 - resolution: "eslint-plugin-unused-imports@npm:3.2.0" +"is-arguments@npm:^1.0.4": + version: 1.1.1 + resolution: "is-arguments@npm:1.1.1" dependencies: - eslint-rule-composer: ^0.3.0 - peerDependencies: - "@typescript-eslint/eslint-plugin": 6 - 7 - eslint: 8 - peerDependenciesMeta: - "@typescript-eslint/eslint-plugin": - optional: true - checksum: e85ae4f3af489294ef5e0969ab904fa87f9fa7c959ca0804f30845438db4aeb0428ddad7ab06a70608e93121626799977241b442fdf126a4d0667be57390c3d6 + call-bind: ^1.0.2 + has-tostringtag: ^1.0.0 + checksum: 7f02700ec2171b691ef3e4d0e3e6c0ba408e8434368504bb593d0d7c891c0dbfda6d19d30808b904a6cb1929bca648c061ba438c39f296c2a8ca083229c49f27 languageName: node linkType: hard -"eslint-rule-composer@npm:^0.3.0": - version: 0.3.0 - resolution: "eslint-rule-composer@npm:0.3.0" - checksum: c2f57cded8d1c8f82483e0ce28861214347e24fd79fd4144667974cd334d718f4ba05080aaef2399e3bbe36f7d6632865110227e6b176ed6daa2d676df9281b1 +"is-arguments@npm:^1.1.1": + version: 1.2.0 + resolution: "is-arguments@npm:1.2.0" + dependencies: + call-bound: ^1.0.2 + has-tostringtag: ^1.0.2 + checksum: aae9307fedfe2e5be14aebd0f48a9eeedf6b8c8f5a0b66257b965146d1e94abdc3f08e3dce3b1d908e1fa23c70039a88810ee1d753905758b9b6eebbab0bafeb languageName: node linkType: hard -"eslint-scope@npm:5.1.1": - version: 5.1.1 - resolution: "eslint-scope@npm:5.1.1" +"is-array-buffer@npm:^3.0.2": + version: 3.0.5 + resolution: "is-array-buffer@npm:3.0.5" dependencies: - esrecurse: ^4.3.0 - estraverse: ^4.1.1 - checksum: 47e4b6a3f0cc29c7feedee6c67b225a2da7e155802c6ea13bbef4ac6b9e10c66cd2dcb987867ef176292bf4e64eccc680a49e35e9e9c669f4a02bac17e86abdb + call-bind: ^1.0.8 + call-bound: ^1.0.3 + get-intrinsic: ^1.2.6 + checksum: f137a2a6e77af682cdbffef1e633c140cf596f72321baf8bba0f4ef22685eb4339dde23dfe9e9ca430b5f961dee4d46577dcf12b792b68518c8449b134fb9156 languageName: node linkType: hard -"eslint-scope@npm:^7.2.2": - version: 7.2.2 - resolution: "eslint-scope@npm:7.2.2" +"is-array-buffer@npm:^3.0.4": + version: 3.0.4 + resolution: "is-array-buffer@npm:3.0.4" dependencies: - esrecurse: ^4.3.0 - estraverse: ^5.2.0 - checksum: ec97dbf5fb04b94e8f4c5a91a7f0a6dd3c55e46bfc7bbcd0e3138c3a76977570e02ed89a1810c778dcd72072ff0e9621ba1379b4babe53921d71e2e4486fda3e + call-bind: ^1.0.2 + get-intrinsic: ^1.2.1 + checksum: e4e3e6ef0ff2239e75371d221f74bc3c26a03564a22efb39f6bb02609b598917ddeecef4e8c877df2a25888f247a98198959842a5e73236bc7f22cabdf6351a7 languageName: node linkType: hard -"eslint-visitor-keys@npm:^3.4.1, eslint-visitor-keys@npm:^3.4.3": - version: 3.4.3 - resolution: "eslint-visitor-keys@npm:3.4.3" - checksum: 36e9ef87fca698b6fd7ca5ca35d7b2b6eeaaf106572e2f7fd31c12d3bfdaccdb587bba6d3621067e5aece31c8c3a348b93922ab8f7b2cbc6aaab5e1d89040c60 +"is-arrayish@npm:^0.2.1": + version: 0.2.1 + resolution: "is-arrayish@npm:0.2.1" + checksum: eef4417e3c10e60e2c810b6084942b3ead455af16c4509959a27e490e7aee87cfb3f38e01bbde92220b528a0ee1a18d52b787e1458ee86174d8c7f0e58cd488f languageName: node linkType: hard -"eslint-webpack-plugin@npm:^3.2.0": - version: 3.2.0 - resolution: "eslint-webpack-plugin@npm:3.2.0" - dependencies: - "@types/eslint": ^7.29.0 || ^8.4.1 - jest-worker: ^28.0.2 - micromatch: ^4.0.5 - normalize-path: ^3.0.0 - schema-utils: ^4.0.0 - peerDependencies: - eslint: ^7.0.0 || ^8.0.0 - webpack: ^5.0.0 - checksum: 095034c35e773fdb21ec7e597ae1f8a6899679c290db29d8568ca94619e8c7f4971f0f9edccc8a965322ab8af9286c87205985a38f4fdcf17654aee7cd8bb7b5 +"is-arrayish@npm:^0.3.1": + version: 0.3.2 + resolution: "is-arrayish@npm:0.3.2" + checksum: 977e64f54d91c8f169b59afcd80ff19227e9f5c791fa28fa2e5bce355cbaf6c2c356711b734656e80c9dd4a854dd7efcf7894402f1031dfc5de5d620775b4d5f languageName: node linkType: hard -"eslint-webpack-plugin@npm:^4.0.0": - version: 4.2.0 - resolution: "eslint-webpack-plugin@npm:4.2.0" +"is-async-function@npm:^2.0.0": + version: 2.0.0 + resolution: "is-async-function@npm:2.0.0" dependencies: - "@types/eslint": ^8.56.10 - jest-worker: ^29.7.0 - micromatch: ^4.0.5 - normalize-path: ^3.0.0 - schema-utils: ^4.2.0 - peerDependencies: - eslint: ^8.0.0 || ^9.0.0 - webpack: ^5.0.0 - checksum: 51538d60d0d0f3dd5774a4291af4620884a45a40270e2878c2f7c8dbff3584ef8588ffded8de696a4bbcee45bee219eba442eb503f5eddcc79aefeb4845985ae + has-tostringtag: ^1.0.0 + checksum: e3471d95e6c014bf37cad8a93f2f4b6aac962178e0a5041e8903147166964fdc1c5c1d2ef87e86d77322c370ca18f2ea004fa7420581fa747bcaf7c223069dbd languageName: node linkType: hard -"eslint@npm:^8.49.0, eslint@npm:^8.6.0": - version: 8.57.1 - resolution: "eslint@npm:8.57.1" +"is-bigint@npm:^1.0.1": + version: 1.0.4 + resolution: "is-bigint@npm:1.0.4" dependencies: - "@eslint-community/eslint-utils": ^4.2.0 - "@eslint-community/regexpp": ^4.6.1 - "@eslint/eslintrc": ^2.1.4 - "@eslint/js": 8.57.1 - "@humanwhocodes/config-array": ^0.13.0 - "@humanwhocodes/module-importer": ^1.0.1 - "@nodelib/fs.walk": ^1.2.8 - "@ungap/structured-clone": ^1.2.0 - ajv: ^6.12.4 - chalk: ^4.0.0 - cross-spawn: ^7.0.2 - debug: ^4.3.2 - doctrine: ^3.0.0 - escape-string-regexp: ^4.0.0 - eslint-scope: ^7.2.2 - eslint-visitor-keys: ^3.4.3 - espree: ^9.6.1 - esquery: ^1.4.2 - esutils: ^2.0.2 - fast-deep-equal: ^3.1.3 - file-entry-cache: ^6.0.1 - find-up: ^5.0.0 - glob-parent: ^6.0.2 - globals: ^13.19.0 - graphemer: ^1.4.0 - ignore: ^5.2.0 - imurmurhash: ^0.1.4 - is-glob: ^4.0.0 - is-path-inside: ^3.0.3 - js-yaml: ^4.1.0 - json-stable-stringify-without-jsonify: ^1.0.1 - levn: ^0.4.1 - lodash.merge: ^4.6.2 - minimatch: ^3.1.2 - natural-compare: ^1.4.0 - optionator: ^0.9.3 - strip-ansi: ^6.0.1 - text-table: ^0.2.0 - bin: - eslint: bin/eslint.js - checksum: e2489bb7f86dd2011967759a09164e65744ef7688c310bc990612fc26953f34cc391872807486b15c06833bdff737726a23e9b4cdba5de144c311377dc41d91b + has-bigints: ^1.0.1 + checksum: c56edfe09b1154f8668e53ebe8252b6f185ee852a50f9b41e8d921cb2bed425652049fbe438723f6cb48a63ca1aa051e948e7e401e093477c99c84eba244f666 languageName: node linkType: hard -"esm@npm:^3.2.25": - version: 3.2.25 - resolution: "esm@npm:3.2.25" - checksum: 978aabe2de83541c105605a6d60a26ed8e627ef6bb0a7605fe15a95bbdea6b8348bd045255cb22219c054dd09a81a94823df00843d9e97f42419c92015ce3a64 +"is-binary-path@npm:~2.1.0": + version: 2.1.0 + resolution: "is-binary-path@npm:2.1.0" + dependencies: + binary-extensions: ^2.0.0 + checksum: 84192eb88cff70d320426f35ecd63c3d6d495da9d805b19bc65b518984b7c0760280e57dbf119b7e9be6b161784a5a673ab2c6abe83abb5198a432232ad5b35c languageName: node linkType: hard -"espree@npm:^9.6.0, espree@npm:^9.6.1": - version: 9.6.1 - resolution: "espree@npm:9.6.1" +"is-boolean-object@npm:^1.1.0": + version: 1.1.2 + resolution: "is-boolean-object@npm:1.1.2" dependencies: - acorn: ^8.9.0 - acorn-jsx: ^5.3.2 - eslint-visitor-keys: ^3.4.1 - checksum: eb8c149c7a2a77b3f33a5af80c10875c3abd65450f60b8af6db1bfcfa8f101e21c1e56a561c6dc13b848e18148d43469e7cd208506238554fb5395a9ea5a1ab9 + call-bind: ^1.0.2 + has-tostringtag: ^1.0.0 + checksum: c03b23dbaacadc18940defb12c1c0e3aaece7553ef58b162a0f6bba0c2a7e1551b59f365b91e00d2dbac0522392d576ef322628cb1d036a0fe51eb466db67222 languageName: node linkType: hard -"esprima@npm:1.2.2": - version: 1.2.2 - resolution: "esprima@npm:1.2.2" - bin: - esparse: ./bin/esparse.js - esvalidate: ./bin/esvalidate.js - checksum: 4f10006f0e315f2f7d8cf6630e465f183512f1ab2e862b11785a133ce37ed1696573deefb5256e510eaa4368342b13b393334477f6ccdcdb8f10e782b0f5e6dc +"is-buffer@npm:^2.0.0": + version: 2.0.5 + resolution: "is-buffer@npm:2.0.5" + checksum: 764c9ad8b523a9f5a32af29bdf772b08eb48c04d2ad0a7240916ac2688c983bf5f8504bf25b35e66240edeb9d9085461f9b5dae1f3d2861c6b06a65fe983de42 languageName: node linkType: hard -"esprima@npm:^4.0.0, esprima@npm:^4.0.1": - version: 4.0.1 - resolution: "esprima@npm:4.0.1" - bin: - esparse: ./bin/esparse.js - esvalidate: ./bin/esvalidate.js - checksum: b45bc805a613dbea2835278c306b91aff6173c8d034223fa81498c77dcbce3b2931bf6006db816f62eacd9fd4ea975dfd85a5b7f3c6402cfd050d4ca3c13a628 +"is-callable@npm:^1.1.3, is-callable@npm:^1.1.4, is-callable@npm:^1.2.7": + version: 1.2.7 + resolution: "is-callable@npm:1.2.7" + checksum: 61fd57d03b0d984e2ed3720fb1c7a897827ea174bd44402878e059542ea8c4aeedee0ea0985998aa5cc2736b2fa6e271c08587addb5b3959ac52cf665173d1ac languageName: node linkType: hard -"esquery@npm:^1.4.2": - version: 1.6.0 - resolution: "esquery@npm:1.6.0" +"is-cidr@npm:^4.0.0": + version: 4.0.2 + resolution: "is-cidr@npm:4.0.2" dependencies: - estraverse: ^5.1.0 - checksum: 08ec4fe446d9ab27186da274d979558557fbdbbd10968fa9758552482720c54152a5640e08b9009e5a30706b66aba510692054d4129d32d0e12e05bbc0b96fb2 + cidr-regex: ^3.1.1 + checksum: ee6e670e655a835710a7fa15268b428adbf80267114a494ce1c2ca2b09e1ca0b629fe1375aae621d4c093b32930d5ff7c4ee6da97eae14e3836bc7b3a07b171f languageName: node linkType: hard -"esrecurse@npm:^4.3.0": - version: 4.3.0 - resolution: "esrecurse@npm:4.3.0" +"is-core-module@npm:^2.13.0, is-core-module@npm:^2.15.1": + version: 2.15.1 + resolution: "is-core-module@npm:2.15.1" dependencies: - estraverse: ^5.2.0 - checksum: ebc17b1a33c51cef46fdc28b958994b1dc43cd2e86237515cbc3b4e5d2be6a811b2315d0a1a4d9d340b6d2308b15322f5c8291059521cc5f4802f65e7ec32837 + hasown: ^2.0.2 + checksum: df134c168115690724b62018c37b2f5bba0d5745fa16960b329c5a00883a8bea6a5632fdb1e3efcce237c201826ba09f93197b7cd95577ea56b0df335be23633 languageName: node linkType: hard -"estraverse@npm:^4.1.1, estraverse@npm:^4.2.0": - version: 4.3.0 - resolution: "estraverse@npm:4.3.0" - checksum: a6299491f9940bb246124a8d44b7b7a413a8336f5436f9837aaa9330209bd9ee8af7e91a654a3545aee9c54b3308e78ee360cef1d777d37cfef77d2fa33b5827 +"is-data-view@npm:^1.0.1": + version: 1.0.1 + resolution: "is-data-view@npm:1.0.1" + dependencies: + is-typed-array: ^1.1.13 + checksum: 4ba4562ac2b2ec005fefe48269d6bd0152785458cd253c746154ffb8a8ab506a29d0cfb3b74af87513843776a88e4981ae25c89457bf640a33748eab1a7216b5 languageName: node linkType: hard -"estraverse@npm:^5.1.0, estraverse@npm:^5.2.0, estraverse@npm:^5.3.0": - version: 5.3.0 - resolution: "estraverse@npm:5.3.0" - checksum: 072780882dc8416ad144f8fe199628d2b3e7bbc9989d9ed43795d2c90309a2047e6bc5979d7e2322a341163d22cfad9e21f4110597fe487519697389497e4e2b +"is-date-object@npm:^1.0.1, is-date-object@npm:^1.0.5": + version: 1.0.5 + resolution: "is-date-object@npm:1.0.5" + dependencies: + has-tostringtag: ^1.0.0 + checksum: baa9077cdf15eb7b58c79398604ca57379b2fc4cf9aa7a9b9e295278648f628c9b201400c01c5e0f7afae56507d741185730307cbe7cad3b9f90a77e5ee342fc languageName: node linkType: hard -"estree-walker@npm:^0.6.1": - version: 0.6.1 - resolution: "estree-walker@npm:0.6.1" - checksum: 9d6f82a4921f11eec18f8089fb3cce6e53bcf45a8e545c42a2674d02d055fb30f25f90495f8be60803df6c39680c80dcee7f944526867eb7aa1fc9254883b23d +"is-decimal@npm:^1.0.0": + version: 1.0.4 + resolution: "is-decimal@npm:1.0.4" + checksum: ed483a387517856dc395c68403a10201fddcc1b63dc56513fbe2fe86ab38766120090ecdbfed89223d84ca8b1cd28b0641b93cb6597b6e8f4c097a7c24e3fb96 languageName: node linkType: hard -"estree-walker@npm:^2.0.1, estree-walker@npm:^2.0.2": - version: 2.0.2 - resolution: "estree-walker@npm:2.0.2" - checksum: 6151e6f9828abe2259e57f5fd3761335bb0d2ebd76dc1a01048ccee22fabcfef3c0859300f6d83ff0d1927849368775ec5a6d265dde2f6de5a1be1721cd94efc +"is-directory@npm:^0.3.1": + version: 0.3.1 + resolution: "is-directory@npm:0.3.1" + checksum: dce9a9d3981e38f2ded2a80848734824c50ee8680cd09aa477bef617949715cfc987197a2ca0176c58a9fb192a1a0d69b535c397140d241996a609d5906ae524 languageName: node linkType: hard -"esutils@npm:^2.0.2": - version: 2.0.3 - resolution: "esutils@npm:2.0.3" - checksum: 22b5b08f74737379a840b8ed2036a5fb35826c709ab000683b092d9054e5c2a82c27818f12604bfc2a9a76b90b6834ef081edbc1c7ae30d1627012e067c6ec87 +"is-docker@npm:^2.0.0, is-docker@npm:^2.1.1": + version: 2.2.1 + resolution: "is-docker@npm:2.2.1" + bin: + is-docker: cli.js + checksum: 3fef7ddbf0be25958e8991ad941901bf5922ab2753c46980b60b05c1bf9c9c2402d35e6dc32e4380b980ef5e1970a5d9d5e5aa2e02d77727c3b6b5e918474c56 languageName: node linkType: hard -"etag@npm:~1.8.1": - version: 1.8.1 - resolution: "etag@npm:1.8.1" - checksum: 571aeb3dbe0f2bbd4e4fadbdb44f325fc75335cd5f6f6b6a091e6a06a9f25ed5392f0863c5442acb0646787446e816f13cbfc6edce5b07658541dff573cab1ff +"is-docker@npm:^3.0.0": + version: 3.0.0 + resolution: "is-docker@npm:3.0.0" + bin: + is-docker: cli.js + checksum: b698118f04feb7eaf3338922bd79cba064ea54a1c3db6ec8c0c8d8ee7613e7e5854d802d3ef646812a8a3ace81182a085dfa0a71cc68b06f3fa794b9783b3c90 languageName: node linkType: hard -"event-target-shim@npm:^5.0.0": - version: 5.0.1 - resolution: "event-target-shim@npm:5.0.1" - checksum: 1ffe3bb22a6d51bdeb6bf6f7cf97d2ff4a74b017ad12284cc9e6a279e727dc30a5de6bb613e5596ff4dc3e517841339ad09a7eec44266eccb1aa201a30448166 +"is-extglob@npm:^2.1.1": + version: 2.1.1 + resolution: "is-extglob@npm:2.1.1" + checksum: df033653d06d0eb567461e58a7a8c9f940bd8c22274b94bf7671ab36df5719791aae15eef6d83bbb5e23283967f2f984b8914559d4449efda578c775c4be6f85 languageName: node linkType: hard -"eventemitter3@npm:^4.0.0, eventemitter3@npm:^4.0.4": - version: 4.0.7 - resolution: "eventemitter3@npm:4.0.7" - checksum: 1875311c42fcfe9c707b2712c32664a245629b42bb0a5a84439762dd0fd637fc54d078155ea83c2af9e0323c9ac13687e03cfba79b03af9f40c89b4960099374 +"is-finalizationregistry@npm:^1.0.2": + version: 1.0.2 + resolution: "is-finalizationregistry@npm:1.0.2" + dependencies: + call-bind: ^1.0.2 + checksum: 4f243a8e06228cd45bdab8608d2cb7abfc20f6f0189c8ac21ea8d603f1f196eabd531ce0bb8e08cbab047e9845ef2c191a3761c9a17ad5cabf8b35499c4ad35d languageName: node linkType: hard -"events@npm:^3.0.0, events@npm:^3.2.0, events@npm:^3.3.0": - version: 3.3.0 - resolution: "events@npm:3.3.0" - checksum: f6f487ad2198aa41d878fa31452f1a3c00958f46e9019286ff4787c84aac329332ab45c9cdc8c445928fc6d7ded294b9e005a7fce9426488518017831b272780 +"is-fullwidth-code-point@npm:^3.0.0": + version: 3.0.0 + resolution: "is-fullwidth-code-point@npm:3.0.0" + checksum: 44a30c29457c7fb8f00297bce733f0a64cd22eca270f83e58c105e0d015e45c019491a4ab2faef91ab51d4738c670daff901c799f6a700e27f7314029e99e348 languageName: node linkType: hard -"evp_bytestokey@npm:^1.0.0, evp_bytestokey@npm:^1.0.3": - version: 1.0.3 - resolution: "evp_bytestokey@npm:1.0.3" +"is-generator-fn@npm:^2.0.0": + version: 2.1.0 + resolution: "is-generator-fn@npm:2.1.0" + checksum: a6ad5492cf9d1746f73b6744e0c43c0020510b59d56ddcb78a91cbc173f09b5e6beff53d75c9c5a29feb618bfef2bf458e025ecf3a57ad2268e2fb2569f56215 + languageName: node + linkType: hard + +"is-generator-function@npm:^1.0.10, is-generator-function@npm:^1.0.7": + version: 1.0.10 + resolution: "is-generator-function@npm:1.0.10" dependencies: - md5.js: ^1.3.4 - node-gyp: latest - safe-buffer: ^5.1.1 - checksum: ad4e1577f1a6b721c7800dcc7c733fe01f6c310732bb5bf2240245c2a5b45a38518b91d8be2c610611623160b9d1c0e91f1ce96d639f8b53e8894625cf20fa45 + has-tostringtag: ^1.0.0 + checksum: d54644e7dbaccef15ceb1e5d91d680eb5068c9ee9f9eb0a9e04173eb5542c9b51b5ab52c5537f5703e48d5fddfd376817c1ca07a84a407b7115b769d4bdde72b languageName: node linkType: hard -"execa@npm:^5.0.0": - version: 5.1.1 - resolution: "execa@npm:5.1.1" +"is-glob@npm:^4.0.0, is-glob@npm:^4.0.1, is-glob@npm:^4.0.3, is-glob@npm:~4.0.1": + version: 4.0.3 + resolution: "is-glob@npm:4.0.3" dependencies: - cross-spawn: ^7.0.3 - get-stream: ^6.0.0 - human-signals: ^2.1.0 - is-stream: ^2.0.0 - merge-stream: ^2.0.0 - npm-run-path: ^4.0.1 - onetime: ^5.1.2 - signal-exit: ^3.0.3 - strip-final-newline: ^2.0.0 - checksum: fba9022c8c8c15ed862847e94c252b3d946036d7547af310e344a527e59021fd8b6bb0723883ea87044dc4f0201f949046993124a42ccb0855cae5bf8c786343 + is-extglob: ^2.1.1 + checksum: d381c1319fcb69d341cc6e6c7cd588e17cd94722d9a32dbd60660b993c4fb7d0f19438674e68dfec686d09b7c73139c9166b47597f846af387450224a8101ab4 languageName: node linkType: hard -"exit@npm:^0.1.2": - version: 0.1.2 - resolution: "exit@npm:0.1.2" - checksum: abc407f07a875c3961e4781dfcb743b58d6c93de9ab263f4f8c9d23bb6da5f9b7764fc773f86b43dd88030444d5ab8abcb611cb680fba8ca075362b77114bba3 +"is-hexadecimal@npm:^1.0.0": + version: 1.0.4 + resolution: "is-hexadecimal@npm:1.0.4" + checksum: a452e047587b6069332d83130f54d30da4faf2f2ebaa2ce6d073c27b5703d030d58ed9e0b729c8e4e5b52c6f1dab26781bb77b7bc6c7805f14f320e328ff8cd5 languageName: node linkType: hard -"expand-template@npm:^2.0.3": - version: 2.0.3 - resolution: "expand-template@npm:2.0.3" - checksum: 588c19847216421ed92befb521767b7018dc88f88b0576df98cb242f20961425e96a92cbece525ef28cc5becceae5d544ae0f5b9b5e2aa05acb13716ca5b3099 +"is-in-browser@npm:^1.0.2, is-in-browser@npm:^1.1.3": + version: 1.1.3 + resolution: "is-in-browser@npm:1.1.3" + checksum: 178491f97f6663c0574565701b76f41633dbe065e4bd8d518ce017a8fa25e5109ecb6a3bd8bd55c0aba11b208f86b9f0f9c91f3664e148ebf618b74a74fcaf09 languageName: node linkType: hard -"expand-tilde@npm:^2.0.0, expand-tilde@npm:^2.0.2": - version: 2.0.2 - resolution: "expand-tilde@npm:2.0.2" +"is-inside-container@npm:^1.0.0": + version: 1.0.0 + resolution: "is-inside-container@npm:1.0.0" dependencies: - homedir-polyfill: ^1.0.1 - checksum: 2efe6ed407d229981b1b6ceb552438fbc9e5c7d6a6751ad6ced3e0aa5cf12f0b299da695e90d6c2ac79191b5c53c613e508f7149e4573abfbb540698ddb7301a + is-docker: ^3.0.0 + bin: + is-inside-container: cli.js + checksum: c50b75a2ab66ab3e8b92b3bc534e1ea72ca25766832c0623ac22d134116a98bcf012197d1caabe1d1c4bd5f84363d4aa5c36bb4b585fbcaf57be172cd10a1a03 languageName: node linkType: hard -"expect@npm:^29.0.0, expect@npm:^29.7.0": - version: 29.7.0 - resolution: "expect@npm:29.7.0" - dependencies: - "@jest/expect-utils": ^29.7.0 - jest-get-type: ^29.6.3 - jest-matcher-utils: ^29.7.0 - jest-message-util: ^29.7.0 - jest-util: ^29.7.0 - checksum: 9257f10288e149b81254a0fda8ffe8d54a7061cd61d7515779998b012579d2b8c22354b0eb901daf0145f347403da582f75f359f4810c007182ad3fb318b5c0c +"is-interactive@npm:^1.0.0": + version: 1.0.0 + resolution: "is-interactive@npm:1.0.0" + checksum: 824808776e2d468b2916cdd6c16acacebce060d844c35ca6d82267da692e92c3a16fdba624c50b54a63f38bdc4016055b6f443ce57d7147240de4f8cdabaf6f9 languageName: node linkType: hard -"exponential-backoff@npm:^3.1.1": - version: 3.1.1 - resolution: "exponential-backoff@npm:3.1.1" - checksum: 3d21519a4f8207c99f7457287291316306255a328770d320b401114ec8481986e4e467e854cb9914dd965e0a1ca810a23ccb559c642c88f4c7f55c55778a9b48 +"is-lambda@npm:^1.0.1": + version: 1.0.1 + resolution: "is-lambda@npm:1.0.1" + checksum: 93a32f01940220532e5948538699ad610d5924ac86093fcee83022252b363eb0cc99ba53ab084a04e4fb62bf7b5731f55496257a4c38adf87af9c4d352c71c35 languageName: node linkType: hard -"express-promise-router@npm:^4.1.0": - version: 4.1.1 - resolution: "express-promise-router@npm:4.1.1" - dependencies: - is-promise: ^4.0.0 - lodash.flattendeep: ^4.0.0 - methods: ^1.0.0 - peerDependencies: - "@types/express": ^4.0.0 - express: ^4.0.0 - peerDependenciesMeta: - "@types/express": - optional: true - checksum: e69ee7eb2c70470d5be71d34cd9275c26aae157c1ef16a21ecf53141e512fd4a6b5a68db89b30f745df941518505d00ec0a5e13f0becbd53ad63ffce3ed885f3 +"is-map@npm:^2.0.2, is-map@npm:^2.0.3": + version: 2.0.3 + resolution: "is-map@npm:2.0.3" + checksum: e6ce5f6380f32b141b3153e6ba9074892bbbbd655e92e7ba5ff195239777e767a976dcd4e22f864accaf30e53ebf961ab1995424aef91af68788f0591b7396cc languageName: node linkType: hard -"express@npm:^4.17.1, express@npm:^4.17.3, express@npm:^4.18.2, express@npm:^4.19.2": - version: 4.21.1 - resolution: "express@npm:4.21.1" - dependencies: - accepts: ~1.3.8 - array-flatten: 1.1.1 - body-parser: 1.20.3 - content-disposition: 0.5.4 - content-type: ~1.0.4 - cookie: 0.7.1 - cookie-signature: 1.0.6 - debug: 2.6.9 - depd: 2.0.0 - encodeurl: ~2.0.0 - escape-html: ~1.0.3 - etag: ~1.8.1 - finalhandler: 1.3.1 - fresh: 0.5.2 - http-errors: 2.0.0 - merge-descriptors: 1.0.3 - methods: ~1.1.2 - on-finished: 2.4.1 - parseurl: ~1.3.3 - path-to-regexp: 0.1.10 - proxy-addr: ~2.0.7 - qs: 6.13.0 - range-parser: ~1.2.1 - safe-buffer: 5.2.1 - send: 0.19.0 - serve-static: 1.16.2 - setprototypeof: 1.2.0 - statuses: 2.0.1 - type-is: ~1.6.18 - utils-merge: 1.0.1 - vary: ~1.1.2 - checksum: 5ac2b26d8aeddda5564fc0907227d29c100f90c0ead2ead9d474dc5108e8fb306c2de2083c4e3ba326e0906466f2b73417dbac16961f4075ff9f03785fd940fe +"is-module@npm:^1.0.0": + version: 1.0.0 + resolution: "is-module@npm:1.0.0" + checksum: 8cd5390730c7976fb4e8546dd0b38865ee6f7bacfa08dfbb2cc07219606755f0b01709d9361e01f13009bbbd8099fa2927a8ed665118a6105d66e40f1b838c3f + languageName: node + linkType: hard + +"is-native-module@npm:^1.1.3": + version: 1.1.3 + resolution: "is-native-module@npm:1.1.3" + bin: + is-native-module: bin.js + checksum: cd118b670247bd1dbb45c35ad35c2f702b80071d0331565f975d61efd71b2a028cc4fb764c99b5883d508fcc172099e466373ffbd12a3b9880b1b5ba7e62c907 + languageName: node + linkType: hard + +"is-negative-zero@npm:^2.0.3": + version: 2.0.3 + resolution: "is-negative-zero@npm:2.0.3" + checksum: c1e6b23d2070c0539d7b36022d5a94407132411d01aba39ec549af824231f3804b1aea90b5e4e58e807a65d23ceb538ed6e355ce76b267bdd86edb757ffcbdcd languageName: node linkType: hard -"extend@npm:3.0.2, extend@npm:^3.0.2, extend@npm:~3.0.2": - version: 3.0.2 - resolution: "extend@npm:3.0.2" - checksum: a50a8309ca65ea5d426382ff09f33586527882cf532931cb08ca786ea3146c0553310bda688710ff61d7668eba9f96b923fe1420cdf56a2c3eaf30fcab87b515 +"is-network-error@npm:^1.0.0": + version: 1.1.0 + resolution: "is-network-error@npm:1.1.0" + checksum: b2fe6aac07f814a9de275efd05934c832c129e7ba292d27614e9e8eec9e043b7a0bbeaeca5d0916b0f462edbec2aa2eaee974ee0a12ac095040e9515c222c251 languageName: node linkType: hard -"extendable-error@npm:^0.1.5": - version: 0.1.7 - resolution: "extendable-error@npm:0.1.7" - checksum: 80478be7429a1675d2085f701239796bab3230ed6f2fb1b138fbabec24bea6516b7c5ceb6e9c209efcc9c089948d93715703845653535f8e8a49655066a9255e +"is-node-process@npm:^1.2.0": + version: 1.2.0 + resolution: "is-node-process@npm:1.2.0" + checksum: 930765cdc6d81ab8f1bbecbea4a8d35c7c6d88a3ff61f3630e0fc7f22d624d7661c1df05c58547d0eb6a639dfa9304682c8e342c4113a6ed51472b704cee2928 languageName: node linkType: hard -"external-editor@npm:^3.0.3, external-editor@npm:^3.1.0": - version: 3.1.0 - resolution: "external-editor@npm:3.1.0" +"is-number-object@npm:^1.0.4": + version: 1.0.7 + resolution: "is-number-object@npm:1.0.7" dependencies: - chardet: ^0.7.0 - iconv-lite: ^0.4.24 - tmp: ^0.0.33 - checksum: 1c2a616a73f1b3435ce04030261bed0e22d4737e14b090bb48e58865da92529c9f2b05b893de650738d55e692d071819b45e1669259b2b354bc3154d27a698c7 + has-tostringtag: ^1.0.0 + checksum: d1e8d01bb0a7134c74649c4e62da0c6118a0bfc6771ea3c560914d52a627873e6920dd0fd0ebc0e12ad2ff4687eac4c308f7e80320b973b2c8a2c8f97a7524f7 languageName: node linkType: hard -"extsprintf@npm:1.3.0": - version: 1.3.0 - resolution: "extsprintf@npm:1.3.0" - checksum: cee7a4a1e34cffeeec18559109de92c27517e5641991ec6bab849aa64e3081022903dd53084f2080d0d2530803aa5ee84f1e9de642c365452f9e67be8f958ce2 +"is-number@npm:^7.0.0": + version: 7.0.0 + resolution: "is-number@npm:7.0.0" + checksum: 456ac6f8e0f3111ed34668a624e45315201dff921e5ac181f8ec24923b99e9f32ca1a194912dc79d539c97d33dba17dc635202ff0b2cf98326f608323276d27a languageName: node linkType: hard -"extsprintf@npm:^1.2.0": - version: 1.4.1 - resolution: "extsprintf@npm:1.4.1" - checksum: a2f29b241914a8d2bad64363de684821b6b1609d06ae68d5b539e4de6b28659715b5bea94a7265201603713b7027d35399d10b0548f09071c5513e65e8323d33 +"is-path-inside@npm:^3.0.3": + version: 3.0.3 + resolution: "is-path-inside@npm:3.0.3" + checksum: abd50f06186a052b349c15e55b182326f1936c89a78bf6c8f2b707412517c097ce04bc49a0ca221787bc44e1049f51f09a2ffb63d22899051988d3a618ba13e9 languageName: node linkType: hard -"fast-deep-equal@npm:^3.1.1, fast-deep-equal@npm:^3.1.3": - version: 3.1.3 - resolution: "fast-deep-equal@npm:3.1.3" - checksum: e21a9d8d84f53493b6aa15efc9cfd53dd5b714a1f23f67fb5dc8f574af80df889b3bce25dc081887c6d25457cce704e636395333abad896ccdec03abaf1f3f9d +"is-plain-obj@npm:^3.0.0": + version: 3.0.0 + resolution: "is-plain-obj@npm:3.0.0" + checksum: a6ebdf8e12ab73f33530641972a72a4b8aed6df04f762070d823808303e4f76d87d5ea5bd76f96a7bbe83d93f04ac7764429c29413bd9049853a69cb630fb21c languageName: node linkType: hard -"fast-fifo@npm:^1.2.0, fast-fifo@npm:^1.3.2": - version: 1.3.2 - resolution: "fast-fifo@npm:1.3.2" - checksum: 6bfcba3e4df5af7be3332703b69a7898a8ed7020837ec4395bb341bd96cc3a6d86c3f6071dd98da289618cf2234c70d84b2a6f09a33dd6f988b1ff60d8e54275 +"is-plain-obj@npm:^4.0.0": + version: 4.1.0 + resolution: "is-plain-obj@npm:4.1.0" + checksum: 6dc45da70d04a81f35c9310971e78a6a3c7a63547ef782e3a07ee3674695081b6ca4e977fbb8efc48dae3375e0b34558d2bcd722aec9bddfa2d7db5b041be8ce languageName: node linkType: hard -"fast-glob@npm:^3.2.9, fast-glob@npm:^3.3.2": - version: 3.3.2 - resolution: "fast-glob@npm:3.3.2" +"is-plain-object@npm:^2.0.4": + version: 2.0.4 + resolution: "is-plain-object@npm:2.0.4" dependencies: - "@nodelib/fs.stat": ^2.0.2 - "@nodelib/fs.walk": ^1.2.3 - glob-parent: ^5.1.2 - merge2: ^1.3.0 - micromatch: ^4.0.4 - checksum: 900e4979f4dbc3313840078419245621259f349950411ca2fa445a2f9a1a6d98c3b5e7e0660c5ccd563aa61abe133a21765c6c0dec8e57da1ba71d8000b05ec1 + isobject: ^3.0.1 + checksum: 2a401140cfd86cabe25214956ae2cfee6fbd8186809555cd0e84574f88de7b17abacb2e477a6a658fa54c6083ecbda1e6ae404c7720244cd198903848fca70ca languageName: node linkType: hard -"fast-json-patch@npm:^3.1.0": - version: 3.1.1 - resolution: "fast-json-patch@npm:3.1.1" - checksum: c4525b61b2471df60d4b025b4118b036d99778a93431aa44d1084218182841d82ce93056f0f3bbd731a24e6a8e69820128adf1873eb2199a26c62ef58d137833 +"is-plain-object@npm:^5.0.0": + version: 5.0.0 + resolution: "is-plain-object@npm:5.0.0" + checksum: e32d27061eef62c0847d303125440a38660517e586f2f3db7c9d179ae5b6674ab0f469d519b2e25c147a1a3bc87156d0d5f4d8821e0ce4a9ee7fe1fcf11ce45c languageName: node linkType: hard -"fast-json-stable-stringify@npm:^2.0.0, fast-json-stable-stringify@npm:^2.1.0": - version: 2.1.0 - resolution: "fast-json-stable-stringify@npm:2.1.0" - checksum: b191531e36c607977e5b1c47811158733c34ccb3bfde92c44798929e9b4154884378536d26ad90dfecd32e1ffc09c545d23535ad91b3161a27ddbb8ebe0cbecb +"is-potential-custom-element-name@npm:^1.0.1": + version: 1.0.1 + resolution: "is-potential-custom-element-name@npm:1.0.1" + checksum: ced7bbbb6433a5b684af581872afe0e1767e2d1146b2207ca0068a648fb5cab9d898495d1ac0583524faaf24ca98176a7d9876363097c2d14fee6dd324f3a1ab languageName: node linkType: hard -"fast-levenshtein@npm:^2.0.6, fast-levenshtein@npm:~2.0.6": - version: 2.0.6 - resolution: "fast-levenshtein@npm:2.0.6" - checksum: 92cfec0a8dfafd9c7a15fba8f2cc29cd0b62b85f056d99ce448bbcd9f708e18ab2764bda4dd5158364f4145a7c72788538994f0d1787b956ef0d1062b0f7c24c +"is-primitive@npm:^3.0.1": + version: 3.0.1 + resolution: "is-primitive@npm:3.0.1" + checksum: c4da6a6e6d487f31d85b9259b67695fffcc75dca6c9612b0a002e3050c734227b9911be09b877539ec6309710229c19f4edd0f9e26ed2a67924ee0916baf0bed languageName: node linkType: hard -"fast-memoize@npm:^2.5.2": - version: 2.5.2 - resolution: "fast-memoize@npm:2.5.2" - checksum: 79fa759719ba4eac7e8c22fb3b0eb3f18f4a31e218c00b1eb4a5b53c5781921133a6b84472d59ec5a6ea8f26ad57b43cd99a350c0547ccce51489bc9a5f0b28d +"is-promise@npm:^4.0.0": + version: 4.0.0 + resolution: "is-promise@npm:4.0.0" + checksum: 0b46517ad47b00b6358fd6553c83ec1f6ba9acd7ffb3d30a0bf519c5c69e7147c132430452351b8a9fc198f8dd6c4f76f8e6f5a7f100f8c77d57d9e0f4261a8a languageName: node linkType: hard -"fast-safe-stringify@npm:2.1.1, fast-safe-stringify@npm:^2.1.1": - version: 2.1.1 - resolution: "fast-safe-stringify@npm:2.1.1" - checksum: a851cbddc451745662f8f00ddb622d6766f9bd97642dabfd9a405fb0d646d69fc0b9a1243cbf67f5f18a39f40f6fa821737651ff1bceeba06c9992ca2dc5bd3d +"is-property@npm:^1.0.2": + version: 1.0.2 + resolution: "is-property@npm:1.0.2" + checksum: 33b661a3690bcc88f7e47bb0a21b9e3187e76a317541ea7ec5e8096d954f441b77a46d8930c785f7fbf4ef8dfd624c25495221e026e50f74c9048fe501773be5 languageName: node linkType: hard -"fast-uri@npm:^3.0.1": - version: 3.0.3 - resolution: "fast-uri@npm:3.0.3" - checksum: c52e6c86465f5c240e84a4485fb001088cc743d261a4b54b0050ce4758b1648bdbe53da1328ef9620149dca1435e3de64184f226d7c0a3656cb5837b3491e149 +"is-reference@npm:1.2.1": + version: 1.2.1 + resolution: "is-reference@npm:1.2.1" + dependencies: + "@types/estree": "*" + checksum: e7b48149f8abda2c10849ea51965904d6a714193d68942ad74e30522231045acf06cbfae5a4be2702fede5d232e61bf50b3183acdc056e6e3afe07fcf4f4b2bc languageName: node linkType: hard -"fast-xml-parser@npm:4.4.1": - version: 4.4.1 - resolution: "fast-xml-parser@npm:4.4.1" +"is-regex@npm:^1.1.4": + version: 1.1.4 + resolution: "is-regex@npm:1.1.4" dependencies: - strnum: ^1.0.5 - bin: - fxparser: src/cli/cli.js - checksum: f440c01cd141b98789ae777503bcb6727393296094cc82924ae9f88a5b971baa4eec7e65306c7e07746534caa661fc83694ff437d9012dc84dee39dfbfaab947 + call-bind: ^1.0.2 + has-tostringtag: ^1.0.0 + checksum: 362399b33535bc8f386d96c45c9feb04cf7f8b41c182f54174c1a45c9abbbe5e31290bbad09a458583ff6bf3b2048672cdb1881b13289569a7c548370856a652 languageName: node linkType: hard -"fast-xml-parser@npm:^4.4.1": - version: 4.5.0 - resolution: "fast-xml-parser@npm:4.5.0" - dependencies: - strnum: ^1.0.5 - bin: - fxparser: src/cli/cli.js - checksum: 696dc98da46f0f48eb26dfe1640a53043ea64f2420056374e62abbb5e620f092f8df3c3ff3195505a2eefab2057db3bf0ebaac63557f277934f6cce4e7da027c +"is-root@npm:^2.1.0": + version: 2.1.0 + resolution: "is-root@npm:2.1.0" + checksum: 37eea0822a2a9123feb58a9d101558ba276771a6d830f87005683349a9acff15958a9ca590a44e778c6b335660b83e85c744789080d734f6081a935a4880aee2 languageName: node linkType: hard -"fastq@npm:^1.6.0": - version: 1.17.1 - resolution: "fastq@npm:1.17.1" +"is-set@npm:^2.0.2, is-set@npm:^2.0.3": + version: 2.0.3 + resolution: "is-set@npm:2.0.3" + checksum: 36e3f8c44bdbe9496c9689762cc4110f6a6a12b767c5d74c0398176aa2678d4467e3bf07595556f2dba897751bde1422480212b97d973c7b08a343100b0c0dfe + languageName: node + linkType: hard + +"is-shared-array-buffer@npm:^1.0.2, is-shared-array-buffer@npm:^1.0.3": + version: 1.0.3 + resolution: "is-shared-array-buffer@npm:1.0.3" dependencies: - reusify: ^1.0.4 - checksum: a8c5b26788d5a1763f88bae56a8ddeee579f935a831c5fe7a8268cea5b0a91fbfe705f612209e02d639b881d7b48e461a50da4a10cfaa40da5ca7cc9da098d88 + call-bind: ^1.0.7 + checksum: a4fff602c309e64ccaa83b859255a43bb011145a42d3f56f67d9268b55bc7e6d98a5981a1d834186ad3105d6739d21547083fe7259c76c0468483fc538e716d8 languageName: node linkType: hard -"faye-websocket@npm:^0.11.3": - version: 0.11.4 - resolution: "faye-websocket@npm:0.11.4" +"is-ssh@npm:^1.4.0": + version: 1.4.0 + resolution: "is-ssh@npm:1.4.0" dependencies: - websocket-driver: ">=0.5.1" - checksum: d49a62caf027f871149fc2b3f3c7104dc6d62744277eb6f9f36e2d5714e847d846b9f7f0d0b7169b25a012e24a594cde11a93034b30732e4c683f20b8a5019fa + protocols: ^2.0.1 + checksum: 75eaa17b538bee24b661fbeb0f140226ac77e904a6039f787bea418431e2162f1f9c4c4ccad3bd169e036cd701cc631406e8c505d9fa7e20164e74b47f86f40f languageName: node linkType: hard -"fb-watchman@npm:^2.0.0": - version: 2.0.2 - resolution: "fb-watchman@npm:2.0.2" +"is-stream@npm:^2.0.0, is-stream@npm:^2.0.1": + version: 2.0.1 + resolution: "is-stream@npm:2.0.1" + checksum: b8e05ccdf96ac330ea83c12450304d4a591f9958c11fd17bed240af8d5ffe08aedafa4c0f4cfccd4d28dc9d4d129daca1023633d5c11601a6cbc77521f6fae66 + languageName: node + linkType: hard + +"is-string@npm:^1.0.5, is-string@npm:^1.0.7": + version: 1.0.7 + resolution: "is-string@npm:1.0.7" dependencies: - bser: 2.1.1 - checksum: b15a124cef28916fe07b400eb87cbc73ca082c142abf7ca8e8de6af43eca79ca7bd13eb4d4d48240b3bd3136eaac40d16e42d6edf87a8e5d1dd8070626860c78 + has-tostringtag: ^1.0.0 + checksum: 323b3d04622f78d45077cf89aab783b2f49d24dc641aa89b5ad1a72114cfeff2585efc8c12ef42466dff32bde93d839ad321b26884cf75e5a7892a938b089989 languageName: node linkType: hard -"fecha@npm:^4.2.0": - version: 4.2.3 - resolution: "fecha@npm:4.2.3" - checksum: f94e2fb3acf5a7754165d04549460d3ae6c34830394d20c552197e3e000035d69732d74af04b9bed3283bf29fe2a9ebdcc0085e640b0be3cc3658b9726265e31 +"is-subdir@npm:^1.1.1": + version: 1.2.0 + resolution: "is-subdir@npm:1.2.0" + dependencies: + better-path-resolve: 1.0.0 + checksum: 31029a383972bff4cc4f1bd1463fd04dde017e0a04ae3a6f6e08124a90c6c4656312d593101b0f38805fa3f3c8f6bc4583524bbf72c50784fa5ca0d3e5a76279 languageName: node linkType: hard -"figures@npm:^3.0.0": - version: 3.2.0 - resolution: "figures@npm:3.2.0" +"is-symbol@npm:^1.0.2, is-symbol@npm:^1.0.3": + version: 1.0.4 + resolution: "is-symbol@npm:1.0.4" dependencies: - escape-string-regexp: ^1.0.5 - checksum: 85a6ad29e9aca80b49b817e7c89ecc4716ff14e3779d9835af554db91bac41c0f289c418923519392a1e582b4d10482ad282021330cd045bb7b80c84152f2a2b + has-symbols: ^1.0.2 + checksum: 92805812ef590738d9de49d677cd17dfd486794773fb6fa0032d16452af46e9b91bb43ffe82c983570f015b37136f4b53b28b8523bfb10b0ece7a66c31a54510 languageName: node linkType: hard -"file-entry-cache@npm:^6.0.1": - version: 6.0.1 - resolution: "file-entry-cache@npm:6.0.1" +"is-typed-array@npm:^1.1.13, is-typed-array@npm:^1.1.3": + version: 1.1.13 + resolution: "is-typed-array@npm:1.1.13" dependencies: - flat-cache: ^3.0.4 - checksum: f49701feaa6314c8127c3c2f6173cfefff17612f5ed2daaafc6da13b5c91fd43e3b2a58fd0d63f9f94478a501b167615931e7200e31485e320f74a33885a9c74 + which-typed-array: ^1.1.14 + checksum: 150f9ada183a61554c91e1c4290086d2c100b0dff45f60b028519be72a8db964da403c48760723bf5253979b8dffe7b544246e0e5351dcd05c5fdb1dcc1dc0f0 languageName: node linkType: hard -"file-uri-to-path@npm:1.0.0": +"is-typedarray@npm:~1.0.0": version: 1.0.0 - resolution: "file-uri-to-path@npm:1.0.0" - checksum: b648580bdd893a008c92c7ecc96c3ee57a5e7b6c4c18a9a09b44fb5d36d79146f8e442578bc0e173dc027adf3987e254ba1dfd6e3ec998b7c282873010502144 + resolution: "is-typedarray@npm:1.0.0" + checksum: 3508c6cd0a9ee2e0df2fa2e9baabcdc89e911c7bd5cf64604586697212feec525aa21050e48affb5ffc3df20f0f5d2e2cf79b08caa64e1ccc9578e251763aef7 languageName: node linkType: hard -"filesize@npm:^8.0.6": - version: 8.0.7 - resolution: "filesize@npm:8.0.7" - checksum: 8603d27c5287b984cb100733640645e078f5f5ad65c6d913173e01fb99e09b0747828498fd86647685ccecb69be31f3587b9739ab1e50732116b2374aff4cbf9 +"is-unicode-supported@npm:^0.1.0": + version: 0.1.0 + resolution: "is-unicode-supported@npm:0.1.0" + checksum: a2aab86ee7712f5c2f999180daaba5f361bdad1efadc9610ff5b8ab5495b86e4f627839d085c6530363c6d6d4ecbde340fb8e54bdb83da4ba8e0865ed5513c52 languageName: node linkType: hard -"fill-range@npm:^7.1.1": - version: 7.1.1 - resolution: "fill-range@npm:7.1.1" - dependencies: - to-regex-range: ^5.0.1 - checksum: b4abfbca3839a3d55e4ae5ec62e131e2e356bf4859ce8480c64c4876100f4df292a63e5bb1618e1d7460282ca2b305653064f01654474aa35c68000980f17798 +"is-url@npm:^1.2.4": + version: 1.2.4 + resolution: "is-url@npm:1.2.4" + checksum: 100e74b3b1feab87a43ef7653736e88d997eb7bd32e71fd3ebc413e58c1cbe56269699c776aaea84244b0567f2a7d68dfaa512a062293ed2f9fdecb394148432 languageName: node linkType: hard -"finalhandler@npm:1.3.1": - version: 1.3.1 - resolution: "finalhandler@npm:1.3.1" +"is-weakmap@npm:^2.0.2": + version: 2.0.2 + resolution: "is-weakmap@npm:2.0.2" + checksum: f36aef758b46990e0d3c37269619c0a08c5b29428c0bb11ecba7f75203442d6c7801239c2f31314bc79199217ef08263787f3837d9e22610ad1da62970d6616d + languageName: node + linkType: hard + +"is-weakref@npm:^1.0.2": + version: 1.0.2 + resolution: "is-weakref@npm:1.0.2" dependencies: - debug: 2.6.9 - encodeurl: ~2.0.0 - escape-html: ~1.0.3 - on-finished: 2.4.1 - parseurl: ~1.3.3 - statuses: 2.0.1 - unpipe: ~1.0.0 - checksum: a8c58cd97c9cd47679a870f6833a7b417043f5a288cd6af6d0f49b476c874a506100303a128b6d3b654c3d74fa4ff2ffed68a48a27e8630cda5c918f2977dcf4 + call-bind: ^1.0.2 + checksum: 95bd9a57cdcb58c63b1c401c60a474b0f45b94719c30f548c891860f051bc2231575c290a6b420c6bc6e7ed99459d424c652bd5bf9a1d5259505dc35b4bf83de languageName: node linkType: hard -"find-file-up@npm:^2.0.1": - version: 2.0.1 - resolution: "find-file-up@npm:2.0.1" +"is-weakset@npm:^2.0.3": + version: 2.0.3 + resolution: "is-weakset@npm:2.0.3" dependencies: - resolve-dir: ^1.0.1 - checksum: dfe820bfb80e75bed5dd5080057858c0ad2393e1438c48a3bb682663e9ecdcfbe3224ed4768bfedd00776800b4ae76bc8953d250d15ae3feabf381d2c6d04268 + call-bind: ^1.0.7 + get-intrinsic: ^1.2.4 + checksum: 8b6a20ee9f844613ff8f10962cfee49d981d584525f2357fee0a04dfbcde9fd607ed60cb6dab626dbcc470018ae6392e1ff74c0c1aced2d487271411ad9d85ae languageName: node linkType: hard -"find-pkg@npm:2.0.0": - version: 2.0.0 - resolution: "find-pkg@npm:2.0.0" - dependencies: - find-file-up: ^2.0.1 - checksum: 44785204c8bbbdfeaece6b834ba81a35163421c30e20f531281d26e6b5890663d7ac884b82a9aebf6ce23e479336cd6f70ea5597da35495c16abdeba2fd4f845 +"is-windows@npm:^1.0.0, is-windows@npm:^1.0.1": + version: 1.0.2 + resolution: "is-windows@npm:1.0.2" + checksum: 438b7e52656fe3b9b293b180defb4e448088e7023a523ec21a91a80b9ff8cdb3377ddb5b6e60f7c7de4fa8b63ab56e121b6705fe081b3cf1b828b0a380009ad7 languageName: node linkType: hard -"find-up@npm:^2.1.0": - version: 2.1.0 - resolution: "find-up@npm:2.1.0" +"is-wsl@npm:^2.2.0": + version: 2.2.0 + resolution: "is-wsl@npm:2.2.0" dependencies: - locate-path: ^2.0.0 - checksum: 43284fe4da09f89011f08e3c32cd38401e786b19226ea440b75386c1b12a4cb738c94969808d53a84f564ede22f732c8409e3cfc3f7fb5b5c32378ad0bbf28bd + is-docker: ^2.0.0 + checksum: 20849846ae414997d290b75e16868e5261e86ff5047f104027026fd61d8b5a9b0b3ade16239f35e1a067b3c7cc02f70183cb661010ed16f4b6c7c93dad1b19d8 languageName: node linkType: hard -"find-up@npm:^3.0.0": - version: 3.0.0 - resolution: "find-up@npm:3.0.0" +"is-wsl@npm:^3.1.0": + version: 3.1.0 + resolution: "is-wsl@npm:3.1.0" dependencies: - locate-path: ^3.0.0 - checksum: 38eba3fe7a66e4bc7f0f5a1366dc25508b7cfc349f852640e3678d26ad9a6d7e2c43eff0a472287de4a9753ef58f066a0ea892a256fa3636ad51b3fe1e17fae9 + is-inside-container: ^1.0.0 + checksum: f9734c81f2f9cf9877c5db8356bfe1ff61680f1f4c1011e91278a9c0564b395ae796addb4bf33956871041476ec82c3e5260ed57b22ac91794d4ae70a1d2f0a9 languageName: node linkType: hard -"find-up@npm:^4.0.0, find-up@npm:^4.1.0": - version: 4.1.0 - resolution: "find-up@npm:4.1.0" - dependencies: - locate-path: ^5.0.0 - path-exists: ^4.0.0 - checksum: 4c172680e8f8c1f78839486e14a43ef82e9decd0e74145f40707cc42e7420506d5ec92d9a11c22bd2c48fb0c384ea05dd30e10dd152fefeec6f2f75282a8b844 +"isarray@npm:^1.0.0, isarray@npm:~1.0.0": + version: 1.0.0 + resolution: "isarray@npm:1.0.0" + checksum: f032df8e02dce8ec565cf2eb605ea939bdccea528dbcf565cdf92bfa2da9110461159d86a537388ef1acef8815a330642d7885b29010e8f7eac967c9993b65ab languageName: node linkType: hard -"find-up@npm:^5.0.0": - version: 5.0.0 - resolution: "find-up@npm:5.0.0" - dependencies: - locate-path: ^6.0.0 - path-exists: ^4.0.0 - checksum: 07955e357348f34660bde7920783204ff5a26ac2cafcaa28bace494027158a97b9f56faaf2d89a6106211a8174db650dd9f503f9c0d526b1202d5554a00b9095 +"isarray@npm:^2.0.5": + version: 2.0.5 + resolution: "isarray@npm:2.0.5" + checksum: bd5bbe4104438c4196ba58a54650116007fa0262eccef13a4c55b2e09a5b36b59f1e75b9fcc49883dd9d4953892e6fc007eef9e9155648ceea036e184b0f930a languageName: node linkType: hard -"flat-cache@npm:^3.0.4": - version: 3.2.0 - resolution: "flat-cache@npm:3.2.0" - dependencies: - flatted: ^3.2.9 - keyv: ^4.5.3 - rimraf: ^3.0.2 - checksum: e7e0f59801e288b54bee5cb9681e9ee21ee28ef309f886b312c9d08415b79fc0f24ac842f84356ce80f47d6a53de62197ce0e6e148dc42d5db005992e2a756ec +"isbinaryfile@npm:^5.0.0": + version: 5.0.4 + resolution: "isbinaryfile@npm:5.0.4" + checksum: d88982a889369d83a5937b4b4d2288ed3b3dbbcee8fc74db40058f3c089a2c7beb9e5305b7177e82d87ff38fb62be8d60960f7a2d669ca08240ef31c1435b884 languageName: node linkType: hard -"flatted@npm:^3.2.7, flatted@npm:^3.2.9": - version: 3.3.1 - resolution: "flatted@npm:3.3.1" - checksum: 85ae7181650bb728c221e7644cbc9f4bf28bc556f2fc89bb21266962bdf0ce1029cc7acc44bb646cd469d9baac7c317f64e841c4c4c00516afa97320cdac7f94 +"isexe@npm:^2.0.0": + version: 2.0.0 + resolution: "isexe@npm:2.0.0" + checksum: 26bf6c5480dda5161c820c5b5c751ae1e766c587b1f951ea3fcfc973bafb7831ae5b54a31a69bd670220e42e99ec154475025a468eae58ea262f813fdc8d1c62 languageName: node linkType: hard -"fn.name@npm:1.x.x": - version: 1.1.0 - resolution: "fn.name@npm:1.1.0" - checksum: e357144f48cfc9a7f52a82bbc6c23df7c8de639fce049cac41d41d62cabb740cdb9f14eddc6485e29c933104455bdd7a69bb14a9012cef9cd4fa252a4d0cf293 +"isexe@npm:^3.1.1": + version: 3.1.1 + resolution: "isexe@npm:3.1.1" + checksum: 7fe1931ee4e88eb5aa524cd3ceb8c882537bc3a81b02e438b240e47012eef49c86904d0f0e593ea7c3a9996d18d0f1f3be8d3eaa92333977b0c3a9d353d5563e languageName: node linkType: hard -"follow-redirects@npm:^1.0.0, follow-redirects@npm:^1.15.6": - version: 1.15.9 - resolution: "follow-redirects@npm:1.15.9" - peerDependenciesMeta: - debug: - optional: true - checksum: 859e2bacc7a54506f2bf9aacb10d165df78c8c1b0ceb8023f966621b233717dab56e8d08baadc3ad3b9db58af290413d585c999694b7c146aaf2616340c3d2a6 +"isobject@npm:^3.0.1": + version: 3.0.1 + resolution: "isobject@npm:3.0.1" + checksum: db85c4c970ce30693676487cca0e61da2ca34e8d4967c2e1309143ff910c207133a969f9e4ddb2dc6aba670aabce4e0e307146c310350b298e74a31f7d464703 languageName: node linkType: hard -"for-each@npm:^0.3.3": - version: 0.3.3 - resolution: "for-each@npm:0.3.3" +"isolated-vm@npm:^5.0.1": + version: 5.0.3 + resolution: "isolated-vm@npm:5.0.3" dependencies: - is-callable: ^1.1.3 - checksum: 6c48ff2bc63362319c65e2edca4a8e1e3483a2fabc72fbe7feaf8c73db94fc7861bd53bc02c8a66a0c1dd709da6b04eec42e0abdd6b40ce47305ae92a25e5d28 + node-gyp: latest + prebuild-install: ^7.1.2 + checksum: 71ec0c45fe00ed5e48b598281682e46bea7b478177d303326a0ba0602a3186059164d89935820b6648d3ea68aa73d23cd47378752189a7a6877bdfcec140985a languageName: node linkType: hard -"foreground-child@npm:^3.1.0": - version: 3.3.0 - resolution: "foreground-child@npm:3.3.0" +"isomorphic-dompurify@npm:^0.13.0": + version: 0.13.0 + resolution: "isomorphic-dompurify@npm:0.13.0" dependencies: - cross-spawn: ^7.0.0 - signal-exit: ^4.0.1 - checksum: 1989698488f725b05b26bc9afc8a08f08ec41807cd7b92ad85d96004ddf8243fd3e79486b8348c64a3011ae5cc2c9f0936af989e1f28339805d8bc178a75b451 + "@types/dompurify": ^2.1.0 + dompurify: ^2.2.7 + jsdom: ^16.5.2 + checksum: 144069c00c5ec2c8a9b5bca0abc8d1f5f091bb791564d5e8495cb7d45a4b23899fb7fda4fb91cbb80e3651f300df29a7b3225c0ae22071a56ac6e5362e8afbe3 languageName: node linkType: hard -"forever-agent@npm:~0.6.1": - version: 0.6.1 - resolution: "forever-agent@npm:0.6.1" - checksum: 766ae6e220f5fe23676bb4c6a99387cec5b7b62ceb99e10923376e27bfea72f3c3aeec2ba5f45f3f7ba65d6616965aa7c20b15002b6860833bb6e394dea546a8 +"isomorphic-form-data@npm:^2.0.0": + version: 2.0.0 + resolution: "isomorphic-form-data@npm:2.0.0" + dependencies: + form-data: ^2.3.2 + checksum: 234bfaa1ed037b1d6cf659eb7a5806889f1f60bc4c7effe5f54e52506004604a9d7229a03a8f9656a1a7ea5fcedca4342277083e38f88ff910b64eefa97dd95e languageName: node linkType: hard -"fork-ts-checker-webpack-plugin@npm:^6.5.0": - version: 6.5.3 - resolution: "fork-ts-checker-webpack-plugin@npm:6.5.3" +"isomorphic-git@npm:^1.23.0": + version: 1.27.1 + resolution: "isomorphic-git@npm:1.27.1" dependencies: - "@babel/code-frame": ^7.8.3 - "@types/json-schema": ^7.0.5 - chalk: ^4.1.0 - chokidar: ^3.4.2 - cosmiconfig: ^6.0.0 - deepmerge: ^4.2.2 - fs-extra: ^9.0.0 - glob: ^7.1.6 - memfs: ^3.1.2 - minimatch: ^3.0.4 - schema-utils: 2.7.0 - semver: ^7.3.2 - tapable: ^1.0.0 - peerDependencies: - eslint: ">= 6" - typescript: ">= 2.7" - vue-template-compiler: "*" - webpack: ">= 4" - peerDependenciesMeta: - eslint: - optional: true - vue-template-compiler: - optional: true - checksum: 9732a49bfeed8fc23e6e8a59795fa7c238edeba91040a9b520db54b4d316dda27f9f1893d360e296fd0ad8930627d364417d28a8c7007fba60cc730ebfce4956 + async-lock: ^1.4.1 + clean-git-ref: ^2.0.1 + crc-32: ^1.2.0 + diff3: 0.0.3 + ignore: ^5.1.4 + minimisted: ^2.0.0 + pako: ^1.0.10 + pify: ^4.0.1 + readable-stream: ^3.4.0 + sha.js: ^2.4.9 + simple-get: ^4.0.1 + bin: + isogit: cli.cjs + checksum: ba6f3c10b3160dac74185881f1da1c5a9b6cbd32d5f273ebce7291055566e5c58f466f89be9039e9c83ededd86a69e367bc4050262bbfbc6b785eea211a7f923 languageName: node linkType: hard -"fork-ts-checker-webpack-plugin@npm:^7.0.0-alpha.8": - version: 7.3.0 - resolution: "fork-ts-checker-webpack-plugin@npm:7.3.0" - dependencies: - "@babel/code-frame": ^7.16.7 - chalk: ^4.1.2 - chokidar: ^3.5.3 - cosmiconfig: ^7.0.1 - deepmerge: ^4.2.2 - fs-extra: ^10.0.0 - memfs: ^3.4.1 - minimatch: ^3.0.4 - node-abort-controller: ^3.0.1 - schema-utils: ^3.1.1 - semver: ^7.3.5 - tapable: ^2.2.1 +"isomorphic-ws@npm:5.0.0, isomorphic-ws@npm:^5.0.0": + version: 5.0.0 + resolution: "isomorphic-ws@npm:5.0.0" peerDependencies: - typescript: ">3.6.0" - vue-template-compiler: "*" - webpack: ^5.11.0 - peerDependenciesMeta: - vue-template-compiler: - optional: true - checksum: 49c2af801e264349a3fdf0afe4ad33065960c43bd7e56c8351a5e0d32c8c54146cc89d6a0b70b1e0f810de96787bd0c7fd275cc8727a9aea1a077c53de99659a + ws: "*" + checksum: e20eb2aee09ba96247465fda40c6d22c1153394c0144fa34fe6609f341af4c8c564f60ea3ba762335a7a9c306809349f9b863c8beedf2beea09b299834ad5398 languageName: node linkType: hard -"fork-ts-checker-webpack-plugin@npm:^9.0.0": - version: 9.0.2 - resolution: "fork-ts-checker-webpack-plugin@npm:9.0.2" - dependencies: - "@babel/code-frame": ^7.16.7 - chalk: ^4.1.2 - chokidar: ^3.5.3 - cosmiconfig: ^8.2.0 - deepmerge: ^4.2.2 - fs-extra: ^10.0.0 - memfs: ^3.4.1 - minimatch: ^3.0.4 - node-abort-controller: ^3.0.1 - schema-utils: ^3.1.1 - semver: ^7.3.5 - tapable: ^2.2.1 +"isomorphic-ws@npm:^4.0.1": + version: 4.0.1 + resolution: "isomorphic-ws@npm:4.0.1" peerDependencies: - typescript: ">3.6.0" - webpack: ^5.11.0 - checksum: 136a87bfa36cb6ca27d2ae0feb3c6cabe0de734c1c1ed38f95b71ddb3eb4b6c461829a2dbb04f18f0f717fc6341f544327598255758c269cec9774ccee035afc + ws: "*" + checksum: d7190eadefdc28bdb93d67b5f0c603385aaf87724fa2974abb382ac1ec9756ed2cfb27065cbe76122879c2d452e2982bc4314317f3d6c737ddda6c047328771a languageName: node linkType: hard -"form-data@npm:^2.5.0": - version: 2.5.2 - resolution: "form-data@npm:2.5.2" - dependencies: - asynckit: ^0.4.0 - combined-stream: ^1.0.6 - mime-types: ^2.1.12 - safe-buffer: ^5.2.1 - checksum: 89ed3d96238d6fa874d75435e20f1aad28a1c22a88ab4e726ac4f6b0d29bef33d7e5aca51248c1070eccbbf4df94020a53842e800b2f1fb63073881a268113b4 +"isstream@npm:~0.1.2": + version: 0.1.2 + resolution: "isstream@npm:0.1.2" + checksum: 1eb2fe63a729f7bdd8a559ab552c69055f4f48eb5c2f03724430587c6f450783c8f1cd936c1c952d0a927925180fcc892ebd5b174236cf1065d4bd5bdb37e963 languageName: node linkType: hard -"form-data@npm:^4.0.0": - version: 4.0.1 - resolution: "form-data@npm:4.0.1" +"istanbul-lib-coverage@npm:^3.0.0, istanbul-lib-coverage@npm:^3.2.0": + version: 3.2.2 + resolution: "istanbul-lib-coverage@npm:3.2.2" + checksum: 2367407a8d13982d8f7a859a35e7f8dd5d8f75aae4bb5484ede3a9ea1b426dc245aff28b976a2af48ee759fdd9be374ce2bd2669b644f31e76c5f46a2e29a831 + languageName: node + linkType: hard + +"istanbul-lib-instrument@npm:^5.0.4": + version: 5.2.1 + resolution: "istanbul-lib-instrument@npm:5.2.1" dependencies: - asynckit: ^0.4.0 - combined-stream: ^1.0.8 - mime-types: ^2.1.12 - checksum: ccee458cd5baf234d6b57f349fe9cc5f9a2ea8fd1af5ecda501a18fd1572a6dd3bf08a49f00568afd995b6a65af34cb8dec083cf9d582c4e621836499498dd84 + "@babel/core": ^7.12.3 + "@babel/parser": ^7.14.7 + "@istanbuljs/schema": ^0.1.2 + istanbul-lib-coverage: ^3.2.0 + semver: ^6.3.0 + checksum: bf16f1803ba5e51b28bbd49ed955a736488381e09375d830e42ddeb403855b2006f850711d95ad726f2ba3f1ae8e7366de7e51d2b9ac67dc4d80191ef7ddf272 languageName: node linkType: hard -"form-data@npm:~2.3.2": - version: 2.3.3 - resolution: "form-data@npm:2.3.3" +"istanbul-lib-instrument@npm:^6.0.0": + version: 6.0.3 + resolution: "istanbul-lib-instrument@npm:6.0.3" dependencies: - asynckit: ^0.4.0 - combined-stream: ^1.0.6 - mime-types: ^2.1.12 - checksum: 10c1780fa13dbe1ff3100114c2ce1f9307f8be10b14bf16e103815356ff567b6be39d70fc4a40f8990b9660012dc24b0f5e1dde1b6426166eb23a445ba068ca3 + "@babel/core": ^7.23.9 + "@babel/parser": ^7.23.9 + "@istanbuljs/schema": ^0.1.3 + istanbul-lib-coverage: ^3.2.0 + semver: ^7.5.4 + checksum: 74104c60c65c4fa0e97cc76f039226c356123893929f067bfad5f86fe839e08f5d680354a68fead3bc9c1e2f3fa6f3f53cded70778e821d911e851d349f3545a languageName: node linkType: hard -"formidable@npm:^2.1.2": - version: 2.1.2 - resolution: "formidable@npm:2.1.2" +"istanbul-lib-report@npm:^3.0.0": + version: 3.0.1 + resolution: "istanbul-lib-report@npm:3.0.1" dependencies: - dezalgo: ^1.0.4 - hexoid: ^1.0.0 - once: ^1.4.0 - qs: ^6.11.0 - checksum: 81c8e5d89f5eb873e992893468f0de22c01678ca3d315db62be0560f9de1c77d4faefc9b1f4575098eb2263b3c81ba1024833a9fc3206297ddbac88a4f69b7a8 + istanbul-lib-coverage: ^3.0.0 + make-dir: ^4.0.0 + supports-color: ^7.1.0 + checksum: fd17a1b879e7faf9bb1dc8f80b2a16e9f5b7b8498fe6ed580a618c34df0bfe53d2abd35bf8a0a00e628fb7405462576427c7df20bbe4148d19c14b431c974b21 languageName: node linkType: hard -"forwarded@npm:0.2.0": - version: 0.2.0 - resolution: "forwarded@npm:0.2.0" - checksum: fd27e2394d8887ebd16a66ffc889dc983fbbd797d5d3f01087c020283c0f019a7d05ee85669383d8e0d216b116d720fc0cef2f6e9b7eb9f4c90c6e0bc7fd28e6 +"istanbul-lib-source-maps@npm:^4.0.0": + version: 4.0.1 + resolution: "istanbul-lib-source-maps@npm:4.0.1" + dependencies: + debug: ^4.1.1 + istanbul-lib-coverage: ^3.0.0 + source-map: ^0.6.1 + checksum: 21ad3df45db4b81852b662b8d4161f6446cd250c1ddc70ef96a585e2e85c26ed7cd9c2a396a71533cfb981d1a645508bc9618cae431e55d01a0628e7dec62ef2 languageName: node linkType: hard -"fresh@npm:0.5.2, fresh@npm:~0.5.2": - version: 0.5.2 - resolution: "fresh@npm:0.5.2" - checksum: 13ea8b08f91e669a64e3ba3a20eb79d7ca5379a81f1ff7f4310d54e2320645503cc0c78daedc93dfb6191287295f6479544a649c64d8e41a1c0fb0c221552346 +"istanbul-reports@npm:^3.1.3": + version: 3.1.7 + resolution: "istanbul-reports@npm:3.1.7" + dependencies: + html-escaper: ^2.0.0 + istanbul-lib-report: ^3.0.0 + checksum: 2072db6e07bfbb4d0eb30e2700250636182398c1af811aea5032acb219d2080f7586923c09fa194029efd6b92361afb3dcbe1ebcc3ee6651d13340f7c6c4ed95 languageName: node linkType: hard -"fromentries@npm:^1.3.1": - version: 1.3.2 - resolution: "fromentries@npm:1.3.2" - checksum: 33729c529ce19f5494f846f0dd4945078f4e37f4e8955f4ae8cc7385c218f600e9d93a7d225d17636c20d1889106fd87061f911550861b7072f53bf891e6b341 +"iterall@npm:^1.2.1, iterall@npm:^1.3.0": + version: 1.3.0 + resolution: "iterall@npm:1.3.0" + checksum: c78b99678f8c99be488cca7f33e4acca9b72c1326e050afbaf023f086e55619ee466af0464af94a0cb3f292e60cb5bac53a8fd86bd4249ecad26e09f17bb158b languageName: node linkType: hard -"fs-constants@npm:^1.0.0": - version: 1.0.0 - resolution: "fs-constants@npm:1.0.0" - checksum: 18f5b718371816155849475ac36c7d0b24d39a11d91348cfcb308b4494824413e03572c403c86d3a260e049465518c4f0d5bd00f0371cdfcad6d4f30a85b350d +"iterare@npm:1.2.1": + version: 1.2.1 + resolution: "iterare@npm:1.2.1" + checksum: 70bc80038e3718aa9072bc63b3a0135166d7120bde46bfcaf80a88d11005dcef1b2d69cd353849f87a3f58ba8f546a8c6e6983408236ff01fa50b52339ee5223 languageName: node linkType: hard -"fs-extra@npm:10.1.0, fs-extra@npm:^10.0.0, fs-extra@npm:^10.1.0": - version: 10.1.0 - resolution: "fs-extra@npm:10.1.0" +"iterator.prototype@npm:^1.1.3": + version: 1.1.3 + resolution: "iterator.prototype@npm:1.1.3" dependencies: - graceful-fs: ^4.2.0 - jsonfile: ^6.0.1 - universalify: ^2.0.0 - checksum: dc94ab37096f813cc3ca12f0f1b5ad6744dfed9ed21e953d72530d103cea193c2f81584a39e9dee1bea36de5ee66805678c0dddc048e8af1427ac19c00fffc50 + define-properties: ^1.2.1 + get-intrinsic: ^1.2.1 + has-symbols: ^1.0.3 + reflect.getprototypeof: ^1.0.4 + set-function-name: ^2.0.1 + checksum: 7d2a1f8bcbba7b76f72e956faaf7b25405f4de54430c9d099992e6fb9d571717c3044604e8cdfb8e624cb881337d648030ee8b1541d544af8b338835e3f47ebe languageName: node linkType: hard -"fs-extra@npm:9.1.0, fs-extra@npm:^9.0.0": - version: 9.1.0 - resolution: "fs-extra@npm:9.1.0" +"jackspeak@npm:^3.1.2": + version: 3.4.3 + resolution: "jackspeak@npm:3.4.3" dependencies: - at-least-node: ^1.0.0 - graceful-fs: ^4.2.0 - jsonfile: ^6.0.1 - universalify: ^2.0.0 - checksum: ba71ba32e0faa74ab931b7a0031d1523c66a73e225de7426e275e238e312d07313d2da2d33e34a52aa406c8763ade5712eb3ec9ba4d9edce652bcacdc29e6b20 + "@isaacs/cliui": ^8.0.2 + "@pkgjs/parseargs": ^0.11.0 + dependenciesMeta: + "@pkgjs/parseargs": + optional: true + checksum: be31027fc72e7cc726206b9f560395604b82e0fddb46c4cbf9f97d049bcef607491a5afc0699612eaa4213ca5be8fd3e1e7cd187b3040988b65c9489838a7c00 languageName: node linkType: hard -"fs-extra@npm:^11.0.0, fs-extra@npm:^11.2.0": - version: 11.2.0 - resolution: "fs-extra@npm:11.2.0" +"jest-canvas-mock@npm:2.5.2": + version: 2.5.2 + resolution: "jest-canvas-mock@npm:2.5.2" dependencies: - graceful-fs: ^4.2.0 - jsonfile: ^6.0.1 - universalify: ^2.0.0 - checksum: b12e42fa40ba47104202f57b8480dd098aa931c2724565e5e70779ab87605665594e76ee5fb00545f772ab9ace167fe06d2ab009c416dc8c842c5ae6df7aa7e8 + cssfontparser: ^1.2.1 + moo-color: ^1.0.2 + checksum: a3004d2e96473049045e49dcf98e5ea6011494048ab42b5422b3089d9ff406aaca8353e79587055d840fa145541668eb8f78613765f252ad5901a8217e91ea5d languageName: node linkType: hard -"fs-extra@npm:^7.0.1, fs-extra@npm:~7.0.1": - version: 7.0.1 - resolution: "fs-extra@npm:7.0.1" +"jest-changed-files@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-changed-files@npm:29.7.0" dependencies: - graceful-fs: ^4.1.2 - jsonfile: ^4.0.0 - universalify: ^0.1.0 - checksum: 141b9dccb23b66a66cefdd81f4cda959ff89282b1d721b98cea19ba08db3dcbe6f862f28841f3cf24bb299e0b7e6c42303908f65093cb7e201708e86ea5a8dcf + execa: ^5.0.0 + jest-util: ^29.7.0 + p-limit: ^3.1.0 + checksum: 963e203893c396c5dfc75e00a49426688efea7361b0f0e040035809cecd2d46b3c01c02be2d9e8d38b1138357d2de7719ea5b5be21f66c10f2e9685a5a73bb99 languageName: node linkType: hard -"fs-extra@npm:^8.1.0": - version: 8.1.0 - resolution: "fs-extra@npm:8.1.0" +"jest-circus@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-circus@npm:29.7.0" dependencies: - graceful-fs: ^4.2.0 - jsonfile: ^4.0.0 - universalify: ^0.1.0 - checksum: bf44f0e6cea59d5ce071bba4c43ca76d216f89e402dc6285c128abc0902e9b8525135aa808adad72c9d5d218e9f4bcc63962815529ff2f684ad532172a284880 + "@jest/environment": ^29.7.0 + "@jest/expect": ^29.7.0 + "@jest/test-result": ^29.7.0 + "@jest/types": ^29.6.3 + "@types/node": "*" + chalk: ^4.0.0 + co: ^4.6.0 + dedent: ^1.0.0 + is-generator-fn: ^2.0.0 + jest-each: ^29.7.0 + jest-matcher-utils: ^29.7.0 + jest-message-util: ^29.7.0 + jest-runtime: ^29.7.0 + jest-snapshot: ^29.7.0 + jest-util: ^29.7.0 + p-limit: ^3.1.0 + pretty-format: ^29.7.0 + pure-rand: ^6.0.0 + slash: ^3.0.0 + stack-utils: ^2.0.3 + checksum: 349437148924a5a109c9b8aad6d393a9591b4dac1918fc97d81b7fc515bc905af9918495055071404af1fab4e48e4b04ac3593477b1d5dcf48c4e71b527c70a7 languageName: node linkType: hard -"fs-minipass@npm:^2.0.0, fs-minipass@npm:^2.1.0": - version: 2.1.0 - resolution: "fs-minipass@npm:2.1.0" +"jest-cli@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-cli@npm:29.7.0" dependencies: - minipass: ^3.0.0 - checksum: 1b8d128dae2ac6cc94230cc5ead341ba3e0efaef82dab46a33d171c044caaa6ca001364178d42069b2809c35a1c3c35079a32107c770e9ffab3901b59af8c8b1 + "@jest/core": ^29.7.0 + "@jest/test-result": ^29.7.0 + "@jest/types": ^29.6.3 + chalk: ^4.0.0 + create-jest: ^29.7.0 + exit: ^0.1.2 + import-local: ^3.0.2 + jest-config: ^29.7.0 + jest-util: ^29.7.0 + jest-validate: ^29.7.0 + yargs: ^17.3.1 + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + bin: + jest: bin/jest.js + checksum: 664901277a3f5007ea4870632ed6e7889db9da35b2434e7cb488443e6bf5513889b344b7fddf15112135495b9875892b156faeb2d7391ddb9e2a849dcb7b6c36 languageName: node linkType: hard -"fs-minipass@npm:^3.0.0": - version: 3.0.3 - resolution: "fs-minipass@npm:3.0.3" +"jest-config@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-config@npm:29.7.0" dependencies: - minipass: ^7.0.3 - checksum: 8722a41109130851d979222d3ec88aabaceeaaf8f57b2a8f744ef8bd2d1ce95453b04a61daa0078822bc5cd21e008814f06fe6586f56fef511e71b8d2394d802 + "@babel/core": ^7.11.6 + "@jest/test-sequencer": ^29.7.0 + "@jest/types": ^29.6.3 + babel-jest: ^29.7.0 + chalk: ^4.0.0 + ci-info: ^3.2.0 + deepmerge: ^4.2.2 + glob: ^7.1.3 + graceful-fs: ^4.2.9 + jest-circus: ^29.7.0 + jest-environment-node: ^29.7.0 + jest-get-type: ^29.6.3 + jest-regex-util: ^29.6.3 + jest-resolve: ^29.7.0 + jest-runner: ^29.7.0 + jest-util: ^29.7.0 + jest-validate: ^29.7.0 + micromatch: ^4.0.4 + parse-json: ^5.2.0 + pretty-format: ^29.7.0 + slash: ^3.0.0 + strip-json-comments: ^3.1.1 + peerDependencies: + "@types/node": "*" + ts-node: ">=9.0.0" + peerDependenciesMeta: + "@types/node": + optional: true + ts-node: + optional: true + checksum: 4cabf8f894c180cac80b7df1038912a3fc88f96f2622de33832f4b3314f83e22b08fb751da570c0ab2b7988f21604bdabade95e3c0c041068ac578c085cf7dff languageName: node linkType: hard -"fs-monkey@npm:^1.0.4": - version: 1.0.6 - resolution: "fs-monkey@npm:1.0.6" - checksum: 4e9986acf197581b10b79d3e63e74252681ca215ef82d4afbd98dcfe86b3f09189ac1d7e8064bc433e4e53cdb5c14fdb38773277d41bba18b1ff8bbdcab01a3a +"jest-css-modules@npm:^2.1.0": + version: 2.1.0 + resolution: "jest-css-modules@npm:2.1.0" + dependencies: + identity-obj-proxy: 3.0.0 + checksum: ddf01a327379f0186fc506b0c2a6cecad59acf3a7c947113f75530d1ea87e4f09aa98c9894283c0ead29688ef9fbc3c91ce1b158756034872fa097e491ee9f8c languageName: node linkType: hard -"fs.realpath@npm:^1.0.0": - version: 1.0.0 - resolution: "fs.realpath@npm:1.0.0" - checksum: 99ddea01a7e75aa276c250a04eedeffe5662bce66c65c07164ad6264f9de18fb21be9433ead460e54cff20e31721c811f4fb5d70591799df5f85dce6d6746fd0 +"jest-diff@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-diff@npm:29.7.0" + dependencies: + chalk: ^4.0.0 + diff-sequences: ^29.6.3 + jest-get-type: ^29.6.3 + pretty-format: ^29.7.0 + checksum: 08e24a9dd43bfba1ef07a6374e5af138f53137b79ec3d5cc71a2303515335898888fa5409959172e1e05de966c9e714368d15e8994b0af7441f0721ee8e1bb77 languageName: node linkType: hard -"fsevents@npm:^2.3.2, fsevents@npm:~2.3.2": - version: 2.3.3 - resolution: "fsevents@npm:2.3.3" +"jest-docblock@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-docblock@npm:29.7.0" dependencies: - node-gyp: latest - checksum: 11e6ea6fea15e42461fc55b4b0e4a0a3c654faa567f1877dbd353f39156f69def97a69936d1746619d656c4b93de2238bf731f6085a03a50cabf287c9d024317 - conditions: os=darwin + detect-newline: ^3.0.0 + checksum: 66390c3e9451f8d96c5da62f577a1dad701180cfa9b071c5025acab2f94d7a3efc2515cfa1654ebe707213241541ce9c5530232cdc8017c91ed64eea1bd3b192 languageName: node linkType: hard -"fsevents@patch:fsevents@^2.3.2#~builtin, fsevents@patch:fsevents@~2.3.2#~builtin": - version: 2.3.3 - resolution: "fsevents@patch:fsevents@npm%3A2.3.3#~builtin::version=2.3.3&hash=18f3a7" +"jest-each@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-each@npm:29.7.0" dependencies: - node-gyp: latest - conditions: os=darwin + "@jest/types": ^29.6.3 + chalk: ^4.0.0 + jest-get-type: ^29.6.3 + jest-util: ^29.7.0 + pretty-format: ^29.7.0 + checksum: e88f99f0184000fc8813f2a0aa79e29deeb63700a3b9b7928b8a418d7d93cd24933608591dbbdea732b473eb2021c72991b5cc51a17966842841c6e28e6f691c languageName: node linkType: hard -"function-bind@npm:^1.1.2": - version: 1.1.2 - resolution: "function-bind@npm:1.1.2" - checksum: 2b0ff4ce708d99715ad14a6d1f894e2a83242e4a52ccfcefaee5e40050562e5f6dafc1adbb4ce2d4ab47279a45dc736ab91ea5042d843c3c092820dfe032efb1 +"jest-environment-jsdom@npm:^29.0.2": + version: 29.7.0 + resolution: "jest-environment-jsdom@npm:29.7.0" + dependencies: + "@jest/environment": ^29.7.0 + "@jest/fake-timers": ^29.7.0 + "@jest/types": ^29.6.3 + "@types/jsdom": ^20.0.0 + "@types/node": "*" + jest-mock: ^29.7.0 + jest-util: ^29.7.0 + jsdom: ^20.0.0 + peerDependencies: + canvas: ^2.5.0 + peerDependenciesMeta: + canvas: + optional: true + checksum: 559aac134c196fccc1dfc794d8fc87377e9f78e894bb13012b0831d88dec0abd7ece99abec69da564b8073803be4f04a9eb4f4d1bb80e29eec0cb252c254deb8 languageName: node linkType: hard -"function.prototype.name@npm:^1.1.6": - version: 1.1.6 - resolution: "function.prototype.name@npm:1.1.6" +"jest-environment-node@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-environment-node@npm:29.7.0" dependencies: - call-bind: ^1.0.2 - define-properties: ^1.2.0 - es-abstract: ^1.22.1 - functions-have-names: ^1.2.3 - checksum: 7a3f9bd98adab09a07f6e1f03da03d3f7c26abbdeaeee15223f6c04a9fb5674792bdf5e689dac19b97ac71de6aad2027ba3048a9b883aa1b3173eed6ab07f479 + "@jest/environment": ^29.7.0 + "@jest/fake-timers": ^29.7.0 + "@jest/types": ^29.6.3 + "@types/node": "*" + jest-mock: ^29.7.0 + jest-util: ^29.7.0 + checksum: 501a9966292cbe0ca3f40057a37587cb6def25e1e0c5e39ac6c650fe78d3c70a2428304341d084ac0cced5041483acef41c477abac47e9a290d5545fd2f15646 languageName: node linkType: hard -"functions-have-names@npm:^1.2.3": - version: 1.2.3 - resolution: "functions-have-names@npm:1.2.3" - checksum: c3f1f5ba20f4e962efb71344ce0a40722163e85bee2101ce25f88214e78182d2d2476aa85ef37950c579eb6cf6ee811c17b3101bb84004bb75655f3e33f3fdb5 +"jest-get-type@npm:^29.6.3": + version: 29.6.3 + resolution: "jest-get-type@npm:29.6.3" + checksum: 88ac9102d4679d768accae29f1e75f592b760b44277df288ad76ce5bf038c3f5ce3719dea8aa0f035dac30e9eb034b848ce716b9183ad7cc222d029f03e92205 languageName: node linkType: hard -"gauge@npm:^4.0.3": - version: 4.0.4 - resolution: "gauge@npm:4.0.4" +"jest-haste-map@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-haste-map@npm:29.7.0" dependencies: - aproba: ^1.0.3 || ^2.0.0 - color-support: ^1.1.3 - console-control-strings: ^1.1.0 - has-unicode: ^2.0.1 - signal-exit: ^3.0.7 - string-width: ^4.2.3 - strip-ansi: ^6.0.1 - wide-align: ^1.1.5 - checksum: 788b6bfe52f1dd8e263cda800c26ac0ca2ff6de0b6eee2fe0d9e3abf15e149b651bd27bf5226be10e6e3edb5c4e5d5985a5a1a98137e7a892f75eff76467ad2d + "@jest/types": ^29.6.3 + "@types/graceful-fs": ^4.1.3 + "@types/node": "*" + anymatch: ^3.0.3 + fb-watchman: ^2.0.0 + fsevents: ^2.3.2 + graceful-fs: ^4.2.9 + jest-regex-util: ^29.6.3 + jest-util: ^29.7.0 + jest-worker: ^29.7.0 + micromatch: ^4.0.4 + walker: ^1.0.8 + dependenciesMeta: + fsevents: + optional: true + checksum: c2c8f2d3e792a963940fbdfa563ce14ef9e14d4d86da645b96d3cd346b8d35c5ce0b992ee08593939b5f718cf0a1f5a90011a056548a1dbf58397d4356786f01 languageName: node linkType: hard -"gaxios@npm:^6.0.0, gaxios@npm:^6.0.2, gaxios@npm:^6.1.1": - version: 6.7.1 - resolution: "gaxios@npm:6.7.1" +"jest-leak-detector@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-leak-detector@npm:29.7.0" dependencies: - extend: ^3.0.2 - https-proxy-agent: ^7.0.1 - is-stream: ^2.0.0 - node-fetch: ^2.6.9 - uuid: ^9.0.1 - checksum: ed5952655339918e0868c6f4e079d6e9e55b20a242ddb1be25076cdfb0dd1ca5a2cb233da7352baa972c19f898a78fa6ba67e7d848717c9ca9877c269b5b02f7 + jest-get-type: ^29.6.3 + pretty-format: ^29.7.0 + checksum: e3950e3ddd71e1d0c22924c51a300a1c2db6cf69ec1e51f95ccf424bcc070f78664813bef7aed4b16b96dfbdeea53fe358f8aeaaea84346ae15c3735758f1605 languageName: node linkType: hard -"gcp-metadata@npm:^6.1.0": - version: 6.1.0 - resolution: "gcp-metadata@npm:6.1.0" +"jest-matcher-utils@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-matcher-utils@npm:29.7.0" dependencies: - gaxios: ^6.0.0 - json-bigint: ^1.0.0 - checksum: 55de8ae4a6b7664379a093abf7e758ae06e82f244d41bd58d881a470bf34db94c4067ce9e1b425d9455b7705636d5f8baad844e49bb73879c338753ba7785b2b + chalk: ^4.0.0 + jest-diff: ^29.7.0 + jest-get-type: ^29.6.3 + pretty-format: ^29.7.0 + checksum: d7259e5f995d915e8a37a8fd494cb7d6af24cd2a287b200f831717ba0d015190375f9f5dc35393b8ba2aae9b2ebd60984635269c7f8cff7d85b077543b7744cd languageName: node linkType: hard -"generate-function@npm:^2.3.1": - version: 2.3.1 - resolution: "generate-function@npm:2.3.1" +"jest-message-util@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-message-util@npm:29.7.0" dependencies: - is-property: ^1.0.2 - checksum: 652f083de206ead2bae4caf9c7eeb465e8d98c0b8ed2a29c6afc538cef0785b5c6eea10548f1e13cc586d3afd796c13c830c2cb3dc612ec2457b2aadda5f57c9 + "@babel/code-frame": ^7.12.13 + "@jest/types": ^29.6.3 + "@types/stack-utils": ^2.0.0 + chalk: ^4.0.0 + graceful-fs: ^4.2.9 + micromatch: ^4.0.4 + pretty-format: ^29.7.0 + slash: ^3.0.0 + stack-utils: ^2.0.3 + checksum: a9d025b1c6726a2ff17d54cc694de088b0489456c69106be6b615db7a51b7beb66788bea7a59991a019d924fbf20f67d085a445aedb9a4d6760363f4d7d09930 languageName: node linkType: hard -"generic-names@npm:^4.0.0": - version: 4.0.0 - resolution: "generic-names@npm:4.0.0" +"jest-mock@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-mock@npm:29.7.0" dependencies: - loader-utils: ^3.2.0 - checksum: 8dabd2505164191501b75f2861b5e1194458a344ae2a7c9776bdd72d1f50b248dff737bcdf118fff677275edb3632f2d10662e6ac122dd7b245c5baa8d303270 + "@jest/types": ^29.6.3 + "@types/node": "*" + jest-util: ^29.7.0 + checksum: 81ba9b68689a60be1482212878973700347cb72833c5e5af09895882b9eb5c4e02843a1bbdf23f94c52d42708bab53a30c45a3482952c9eec173d1eaac5b86c5 languageName: node linkType: hard -"gensync@npm:^1.0.0-beta.2": - version: 1.0.0-beta.2 - resolution: "gensync@npm:1.0.0-beta.2" - checksum: a7437e58c6be12aa6c90f7730eac7fa9833dc78872b4ad2963d2031b00a3367a93f98aec75f9aaac7220848e4026d67a8655e870b24f20a543d103c0d65952ec +"jest-pnp-resolver@npm:^1.2.2": + version: 1.2.3 + resolution: "jest-pnp-resolver@npm:1.2.3" + peerDependencies: + jest-resolve: "*" + peerDependenciesMeta: + jest-resolve: + optional: true + checksum: db1a8ab2cb97ca19c01b1cfa9a9c8c69a143fde833c14df1fab0766f411b1148ff0df878adea09007ac6a2085ec116ba9a996a6ad104b1e58c20adbf88eed9b2 languageName: node linkType: hard -"get-caller-file@npm:^2.0.5": - version: 2.0.5 - resolution: "get-caller-file@npm:2.0.5" - checksum: b9769a836d2a98c3ee734a88ba712e62703f1df31b94b784762c433c27a386dd6029ff55c2a920c392e33657d80191edbf18c61487e198844844516f843496b9 +"jest-regex-util@npm:^29.6.3": + version: 29.6.3 + resolution: "jest-regex-util@npm:29.6.3" + checksum: 0518beeb9bf1228261695e54f0feaad3606df26a19764bc19541e0fc6e2a3737191904607fb72f3f2ce85d9c16b28df79b7b1ec9443aa08c3ef0e9efda6f8f2a languageName: node linkType: hard -"get-intrinsic@npm:^1.1.3, get-intrinsic@npm:^1.2.1, get-intrinsic@npm:^1.2.3, get-intrinsic@npm:^1.2.4": - version: 1.2.4 - resolution: "get-intrinsic@npm:1.2.4" +"jest-resolve-dependencies@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-resolve-dependencies@npm:29.7.0" dependencies: - es-errors: ^1.3.0 - function-bind: ^1.1.2 - has-proto: ^1.0.1 - has-symbols: ^1.0.3 - hasown: ^2.0.0 - checksum: 414e3cdf2c203d1b9d7d33111df746a4512a1aa622770b361dadddf8ed0b5aeb26c560f49ca077e24bfafb0acb55ca908d1f709216ccba33ffc548ec8a79a951 + jest-regex-util: ^29.6.3 + jest-snapshot: ^29.7.0 + checksum: aeb75d8150aaae60ca2bb345a0d198f23496494677cd6aefa26fc005faf354061f073982175daaf32b4b9d86b26ca928586344516e3e6969aa614cb13b883984 languageName: node linkType: hard -"get-package-type@npm:^0.1.0": - version: 0.1.0 - resolution: "get-package-type@npm:0.1.0" - checksum: bba0811116d11e56d702682ddef7c73ba3481f114590e705fc549f4d868972263896af313c57a25c076e3c0d567e11d919a64ba1b30c879be985fc9d44f96148 +"jest-resolve@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-resolve@npm:29.7.0" + dependencies: + chalk: ^4.0.0 + graceful-fs: ^4.2.9 + jest-haste-map: ^29.7.0 + jest-pnp-resolver: ^1.2.2 + jest-util: ^29.7.0 + jest-validate: ^29.7.0 + resolve: ^1.20.0 + resolve.exports: ^2.0.0 + slash: ^3.0.0 + checksum: 0ca218e10731aa17920526ec39deaec59ab9b966237905ffc4545444481112cd422f01581230eceb7e82d86f44a543d520a71391ec66e1b4ef1a578bd5c73487 languageName: node linkType: hard -"get-port@npm:^5.1.1": - version: 5.1.1 - resolution: "get-port@npm:5.1.1" - checksum: 0162663ffe5c09e748cd79d97b74cd70e5a5c84b760a475ce5767b357fb2a57cb821cee412d646aa8a156ed39b78aab88974eddaa9e5ee926173c036c0713787 +"jest-runner@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-runner@npm:29.7.0" + dependencies: + "@jest/console": ^29.7.0 + "@jest/environment": ^29.7.0 + "@jest/test-result": ^29.7.0 + "@jest/transform": ^29.7.0 + "@jest/types": ^29.6.3 + "@types/node": "*" + chalk: ^4.0.0 + emittery: ^0.13.1 + graceful-fs: ^4.2.9 + jest-docblock: ^29.7.0 + jest-environment-node: ^29.7.0 + jest-haste-map: ^29.7.0 + jest-leak-detector: ^29.7.0 + jest-message-util: ^29.7.0 + jest-resolve: ^29.7.0 + jest-runtime: ^29.7.0 + jest-util: ^29.7.0 + jest-watcher: ^29.7.0 + jest-worker: ^29.7.0 + p-limit: ^3.1.0 + source-map-support: 0.5.13 + checksum: f0405778ea64812bf9b5c50b598850d94ccf95d7ba21f090c64827b41decd680ee19fcbb494007cdd7f5d0d8906bfc9eceddd8fa583e753e736ecd462d4682fb languageName: node linkType: hard -"get-stream@npm:^6.0.0": - version: 6.0.1 - resolution: "get-stream@npm:6.0.1" - checksum: e04ecece32c92eebf5b8c940f51468cd53554dcbb0ea725b2748be583c9523d00128137966afce410b9b051eb2ef16d657cd2b120ca8edafcf5a65e81af63cad +"jest-runtime@npm:^29.0.2, jest-runtime@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-runtime@npm:29.7.0" + dependencies: + "@jest/environment": ^29.7.0 + "@jest/fake-timers": ^29.7.0 + "@jest/globals": ^29.7.0 + "@jest/source-map": ^29.6.3 + "@jest/test-result": ^29.7.0 + "@jest/transform": ^29.7.0 + "@jest/types": ^29.6.3 + "@types/node": "*" + chalk: ^4.0.0 + cjs-module-lexer: ^1.0.0 + collect-v8-coverage: ^1.0.0 + glob: ^7.1.3 + graceful-fs: ^4.2.9 + jest-haste-map: ^29.7.0 + jest-message-util: ^29.7.0 + jest-mock: ^29.7.0 + jest-regex-util: ^29.6.3 + jest-resolve: ^29.7.0 + jest-snapshot: ^29.7.0 + jest-util: ^29.7.0 + slash: ^3.0.0 + strip-bom: ^4.0.0 + checksum: d19f113d013e80691e07047f68e1e3448ef024ff2c6b586ce4f90cd7d4c62a2cd1d460110491019719f3c59bfebe16f0e201ed005ef9f80e2cf798c374eed54e + languageName: node + linkType: hard + +"jest-snapshot@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-snapshot@npm:29.7.0" + dependencies: + "@babel/core": ^7.11.6 + "@babel/generator": ^7.7.2 + "@babel/plugin-syntax-jsx": ^7.7.2 + "@babel/plugin-syntax-typescript": ^7.7.2 + "@babel/types": ^7.3.3 + "@jest/expect-utils": ^29.7.0 + "@jest/transform": ^29.7.0 + "@jest/types": ^29.6.3 + babel-preset-current-node-syntax: ^1.0.0 + chalk: ^4.0.0 + expect: ^29.7.0 + graceful-fs: ^4.2.9 + jest-diff: ^29.7.0 + jest-get-type: ^29.6.3 + jest-matcher-utils: ^29.7.0 + jest-message-util: ^29.7.0 + jest-util: ^29.7.0 + natural-compare: ^1.4.0 + pretty-format: ^29.7.0 + semver: ^7.5.3 + checksum: 86821c3ad0b6899521ce75ee1ae7b01b17e6dfeff9166f2cf17f012e0c5d8c798f30f9e4f8f7f5bed01ea7b55a6bc159f5eda778311162cbfa48785447c237ad languageName: node linkType: hard -"get-symbol-description@npm:^1.0.2": - version: 1.0.2 - resolution: "get-symbol-description@npm:1.0.2" +"jest-util@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-util@npm:29.7.0" dependencies: - call-bind: ^1.0.5 - es-errors: ^1.3.0 - get-intrinsic: ^1.2.4 - checksum: e1cb53bc211f9dbe9691a4f97a46837a553c4e7caadd0488dc24ac694db8a390b93edd412b48dcdd0b4bbb4c595de1709effc75fc87c0839deedc6968f5bd973 + "@jest/types": ^29.6.3 + "@types/node": "*" + chalk: ^4.0.0 + ci-info: ^3.2.0 + graceful-fs: ^4.2.9 + picomatch: ^2.2.3 + checksum: 042ab4980f4ccd4d50226e01e5c7376a8556b472442ca6091a8f102488c0f22e6e8b89ea874111d2328a2080083bf3225c86f3788c52af0bd0345a00eb57a3ca languageName: node linkType: hard -"get-tsconfig@npm:^4.7.0, get-tsconfig@npm:^4.7.2": - version: 4.8.1 - resolution: "get-tsconfig@npm:4.8.1" +"jest-validate@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-validate@npm:29.7.0" dependencies: - resolve-pkg-maps: ^1.0.0 - checksum: 12df01672e691d2ff6db8cf7fed1ddfef90ed94a5f3d822c63c147a26742026d582acd86afcd6f65db67d809625d17dd7f9d34f4d3f38f69bc2f48e19b2bdd5b + "@jest/types": ^29.6.3 + camelcase: ^6.2.0 + chalk: ^4.0.0 + jest-get-type: ^29.6.3 + leven: ^3.1.0 + pretty-format: ^29.7.0 + checksum: 191fcdc980f8a0de4dbdd879fa276435d00eb157a48683af7b3b1b98b0f7d9de7ffe12689b617779097ff1ed77601b9f7126b0871bba4f776e222c40f62e9dae languageName: node linkType: hard -"get-uri@npm:^6.0.1": - version: 6.0.3 - resolution: "get-uri@npm:6.0.3" +"jest-watcher@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-watcher@npm:29.7.0" dependencies: - basic-ftp: ^5.0.2 - data-uri-to-buffer: ^6.0.2 - debug: ^4.3.4 - fs-extra: ^11.2.0 - checksum: 3eda448a59fa1ba82ad4f252e58490fec586b644f2dc9c98ba3ab20e801ecc8a1bc1784829c474c9d188edb633d4dfd81c33894ca6117a33a16e8e013b41b40f + "@jest/test-result": ^29.7.0 + "@jest/types": ^29.6.3 + "@types/node": "*" + ansi-escapes: ^4.2.1 + chalk: ^4.0.0 + emittery: ^0.13.1 + jest-util: ^29.7.0 + string-length: ^4.0.1 + checksum: 67e6e7fe695416deff96b93a14a561a6db69389a0667e9489f24485bb85e5b54e12f3b2ba511ec0b777eca1e727235b073e3ebcdd473d68888650489f88df92f languageName: node linkType: hard -"getopts@npm:2.3.0": - version: 2.3.0 - resolution: "getopts@npm:2.3.0" - checksum: bbb5fcef8d4a8582cf4499ea3fc492d95322df2184e65d550ddacede04871e7ba33194c7abd06a6c5d540de3b70112a16f988787e236e1c66b89521032b398ce +"jest-worker@npm:^27.4.5": + version: 27.5.1 + resolution: "jest-worker@npm:27.5.1" + dependencies: + "@types/node": "*" + merge-stream: ^2.0.0 + supports-color: ^8.0.0 + checksum: 98cd68b696781caed61c983a3ee30bf880b5bd021c01d98f47b143d4362b85d0737f8523761e2713d45e18b4f9a2b98af1eaee77afade4111bb65c77d6f7c980 languageName: node linkType: hard -"getpass@npm:^0.1.1": - version: 0.1.7 - resolution: "getpass@npm:0.1.7" +"jest-worker@npm:^28.0.2": + version: 28.1.3 + resolution: "jest-worker@npm:28.1.3" dependencies: - assert-plus: ^1.0.0 - checksum: ab18d55661db264e3eac6012c2d3daeafaab7a501c035ae0ccb193c3c23e9849c6e29b6ac762b9c2adae460266f925d55a3a2a3a3c8b94be2f222df94d70c046 + "@types/node": "*" + merge-stream: ^2.0.0 + supports-color: ^8.0.0 + checksum: e921c9a1b8f0909da9ea07dbf3592f95b653aef3a8bb0cbcd20fc7f9a795a1304adecac31eecb308992c167e8d7e75c522061fec38a5928ace0f9571c90169ca languageName: node linkType: hard -"git-up@npm:^7.0.0": - version: 7.0.0 - resolution: "git-up@npm:7.0.0" +"jest-worker@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-worker@npm:29.7.0" dependencies: - is-ssh: ^1.4.0 - parse-url: ^8.1.0 - checksum: 2faadbab51e94d2ffb220e426e950087cc02c15d664e673bd5d1f734cfa8196fed8b19493f7bf28fe216d087d10e22a7fd9b63687e0ba7d24f0ddcfb0a266d6e + "@types/node": "*" + jest-util: ^29.7.0 + merge-stream: ^2.0.0 + supports-color: ^8.0.0 + checksum: 30fff60af49675273644d408b650fc2eb4b5dcafc5a0a455f238322a8f9d8a98d847baca9d51ff197b6747f54c7901daa2287799230b856a0f48287d131f8c13 languageName: node linkType: hard -"git-url-parse@npm:^14.0.0": - version: 14.1.0 - resolution: "git-url-parse@npm:14.1.0" +"jest@npm:^29.7.0": + version: 29.7.0 + resolution: "jest@npm:29.7.0" dependencies: - git-up: ^7.0.0 - checksum: 16bbf5ca423352ab1b0d704dc40b46123e0bfcc0ae2959ef6a93d43c509146151cd6a1d99690f3555324d2261b36443b7978abc379dc1a7bf8f564e52d676dee + "@jest/core": ^29.7.0 + "@jest/types": ^29.6.3 + import-local: ^3.0.2 + jest-cli: ^29.7.0 + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + bin: + jest: bin/jest.js + checksum: 17ca8d67504a7dbb1998cf3c3077ec9031ba3eb512da8d71cb91bcabb2b8995c4e4b292b740cb9bf1cbff5ce3e110b3f7c777b0cefb6f41ab05445f248d0ee0b languageName: node linkType: hard -"git-url-parse@npm:^15.0.0": - version: 15.0.0 - resolution: "git-url-parse@npm:15.0.0" - dependencies: - git-up: ^7.0.0 - checksum: 4379e9b0a1297b62d603630341a7ce1a6e17901114ee7bb70a611f62ea0fd3b3649ac754891d2746fd42031a21e97ddc0092287a04cc028cbf37df8f6be65a9e +"jiti@npm:^2.0.0": + version: 2.4.2 + resolution: "jiti@npm:2.4.2" + bin: + jiti: lib/jiti-cli.mjs + checksum: c6c30c7b6b293e9f26addfb332b63d964a9f143cdd2cf5e946dbe5143db89f7c1b50ad9223b77fb1f6ddb0b9c5ecef995fea024ecf7d2861d285d779cde66e1e languageName: node linkType: hard -"gitconfiglocal@npm:2.1.0": - version: 2.1.0 - resolution: "gitconfiglocal@npm:2.1.0" - dependencies: - ini: ^1.3.2 - checksum: 4b4b44d992a6abf2900eec8cfe960dc36e0d3c2467d20ec69e0a0f13b6b7645b926daa004df42f94c34ad28a58529cf2522fa0bf261e4e7b95958fb451dcedda +"jiti@npm:^2.3.3": + version: 2.3.3 + resolution: "jiti@npm:2.3.3" + bin: + jiti: lib/jiti-cli.mjs + checksum: f1a2b87d937569c966f00a8c9153c8f3e02445b31e034fdaed1b9639a4ecfae3c4df24c7644d5b4764c566f8dee09132a5b55cd049b48e618024accd31d8e6b3 languageName: node linkType: hard -"github-from-package@npm:0.0.0": - version: 0.0.0 - resolution: "github-from-package@npm:0.0.0" - checksum: 14e448192a35c1e42efee94c9d01a10f42fe790375891a24b25261246ce9336ab9df5d274585aedd4568f7922246c2a78b8a8cd2571bfe99c693a9718e7dd0e3 +"jju@npm:~1.4.0": + version: 1.4.0 + resolution: "jju@npm:1.4.0" + checksum: 3790481bd2b7827dd6336e6e3dc2dcc6d425679ba7ebde7b679f61dceb4457ea0cda330972494de608571f4973c6dfb5f70fab6f3c5037dbab19ac449a60424f languageName: node linkType: hard -"glob-parent@npm:^5.1.2, glob-parent@npm:~5.1.2": - version: 5.1.2 - resolution: "glob-parent@npm:5.1.2" - dependencies: - is-glob: ^4.0.1 - checksum: f4f2bfe2425296e8a47e36864e4f42be38a996db40420fe434565e4480e3322f18eb37589617a98640c5dc8fdec1a387007ee18dbb1f3f5553409c34d17f425e +"jmespath@npm:^0.15.0": + version: 0.15.0 + resolution: "jmespath@npm:0.15.0" + checksum: 353bb9e69cc4c1560be0a4df43cb4020abc246e1c60cb5b55dcc76d8c858383f1633faf22ccaf6a5e09568a2077d0f4f1e989e6fcfd496b5cef87964cc8cb9e7 languageName: node linkType: hard -"glob-parent@npm:^6.0.2": - version: 6.0.2 - resolution: "glob-parent@npm:6.0.2" +"joi@npm:^17.13.3": + version: 17.13.3 + resolution: "joi@npm:17.13.3" dependencies: - is-glob: ^4.0.3 - checksum: c13ee97978bef4f55106b71e66428eb1512e71a7466ba49025fc2aec59a5bfb0954d5abd58fc5ee6c9b076eef4e1f6d3375c2e964b88466ca390da4419a786a8 + "@hapi/hoek": ^9.3.0 + "@hapi/topo": ^5.1.0 + "@sideway/address": ^4.1.5 + "@sideway/formula": ^3.0.1 + "@sideway/pinpoint": ^2.0.0 + checksum: 66ed454fee3d8e8da1ce21657fd2c7d565d98f3e539d2c5c028767e5f38cbd6297ce54df8312d1d094e62eb38f9452ebb43da4ce87321df66cf5e3f128cbc400 languageName: node linkType: hard -"glob-to-regexp@npm:^0.4.1": - version: 0.4.1 - resolution: "glob-to-regexp@npm:0.4.1" - checksum: e795f4e8f06d2a15e86f76e4d92751cf8bbfcf0157cea5c2f0f35678a8195a750b34096b1256e436f0cebc1883b5ff0888c47348443e69546a5a87f9e1eb1167 +"jose@npm:^4.15.9": + version: 4.15.9 + resolution: "jose@npm:4.15.9" + checksum: 41abe1c99baa3cf8a78ebbf93da8f8e50e417b7a26754c4afa21865d87527b8ac2baf66de2c5f6accc3f7d7158658dae7364043677236ea1d07895b040097f15 languageName: node linkType: hard -"glob@npm:9.3.5": - version: 9.3.5 - resolution: "glob@npm:9.3.5" - dependencies: - fs.realpath: ^1.0.0 - minimatch: ^8.0.2 - minipass: ^4.2.4 - path-scurry: ^1.6.1 - checksum: 94b093adbc591bc36b582f77927d1fb0dbf3ccc231828512b017601408be98d1fe798fc8c0b19c6f2d1a7660339c3502ce698de475e9d938ccbb69b47b647c84 +"jose@npm:^5.0.0": + version: 5.9.6 + resolution: "jose@npm:5.9.6" + checksum: 4b536da0201858ed4c4582e8bb479081f11e0c63dd0f5e473adde16fc539785e1f2f0409bc1fc7cbbb5b68026776c960b4952da3a06f6fdfff0b9764c9127ae0 languageName: node linkType: hard -"glob@npm:^10.0.0, glob@npm:^10.2.2, glob@npm:^10.3.10, glob@npm:^10.4.1": - version: 10.4.5 - resolution: "glob@npm:10.4.5" - dependencies: - foreground-child: ^3.1.0 - jackspeak: ^3.1.2 - minimatch: ^9.0.4 - minipass: ^7.1.2 - package-json-from-dist: ^1.0.0 - path-scurry: ^1.11.1 - bin: - glob: dist/esm/bin.mjs - checksum: 0bc725de5e4862f9f387fd0f2b274baf16850dcd2714502ccf471ee401803997983e2c05590cb65f9675a3c6f2a58e7a53f9e365704108c6ad3cbf1d60934c4a +"joycon@npm:^3.0.1": + version: 3.1.1 + resolution: "joycon@npm:3.1.1" + checksum: 8003c9c3fc79c5c7602b1c7e9f7a2df2e9916f046b0dbad862aa589be78c15734d11beb9fe846f5e06138df22cb2ad29961b6a986ba81c4920ce2b15a7f11067 languageName: node linkType: hard -"glob@npm:^7.1.2, glob@npm:^7.1.3, glob@npm:^7.1.4, glob@npm:^7.1.6, glob@npm:^7.1.7": - version: 7.2.3 - resolution: "glob@npm:7.2.3" - dependencies: - fs.realpath: ^1.0.0 - inflight: ^1.0.4 - inherits: 2 - minimatch: ^3.1.1 - once: ^1.3.0 - path-is-absolute: ^1.0.0 - checksum: 29452e97b38fa704dabb1d1045350fb2467cf0277e155aa9ff7077e90ad81d1ea9d53d3ee63bd37c05b09a065e90f16aec4a65f5b8de401d1dac40bc5605d133 +"js-base64@npm:^3.6.0": + version: 3.7.7 + resolution: "js-base64@npm:3.7.7" + checksum: d1b02971db9dc0fd35baecfaf6ba499731fb44fe3373e7e1d6681fbd3ba665f29e8d9d17910254ef8104e2cb8b44117fe4202d3dc54c7cafe9ba300fe5433358 languageName: node linkType: hard -"glob@npm:^8.0.1, glob@npm:^8.0.3, glob@npm:^8.1.0": - version: 8.1.0 - resolution: "glob@npm:8.1.0" - dependencies: - fs.realpath: ^1.0.0 - inflight: ^1.0.4 - inherits: 2 - minimatch: ^5.0.1 - once: ^1.3.0 - checksum: 92fbea3221a7d12075f26f0227abac435de868dd0736a17170663783296d0dd8d3d532a5672b4488a439bf5d7fb85cdd07c11185d6cd39184f0385cbdfb86a47 +"js-cookie@npm:^2.2.1": + version: 2.2.1 + resolution: "js-cookie@npm:2.2.1" + checksum: 9b1fb980a1c5e624fd4b28ea4867bb30c71e04c4484bb3a42766344c533faa684de9498e443425479ec68609e96e27b60614bfe354877c449c631529b6d932f2 languageName: node linkType: hard -"global-agent@npm:^3.0.0": - version: 3.0.0 - resolution: "global-agent@npm:3.0.0" - dependencies: - boolean: ^3.0.1 - es6-error: ^4.1.1 - matcher: ^3.0.0 - roarr: ^2.15.3 - semver: ^7.3.2 - serialize-error: ^7.0.1 - checksum: 75074d80733b4bd5386c47f5df028e798018025beac0ab310e9908c72bf5639e408203e7bca0130d5ee01b5f4abc6d34385d96a9f950ea5fe1979bb431c808f7 +"js-file-download@npm:^0.4.12": + version: 0.4.12 + resolution: "js-file-download@npm:0.4.12" + checksum: a03847eef0184fbf34a7b7fd365ea6aa1a6cc142efeac52c4baa0cdde845dc93718eb66808dfcffd6c91b37ddc9d058d352ac9698b4280744bad3587240c93b6 languageName: node linkType: hard - -"global-modules@npm:^1.0.0": - version: 1.0.0 - resolution: "global-modules@npm:1.0.0" - dependencies: - global-prefix: ^1.0.1 - is-windows: ^1.0.1 - resolve-dir: ^1.0.0 - checksum: 10be68796c1e1abc1e2ba87ec4ea507f5629873b119ab0cd29c07284ef2b930f1402d10df01beccb7391dedd9cd479611dd6a24311c71be58937beaf18edf85e + +"js-levenshtein@npm:^1.1.6": + version: 1.1.6 + resolution: "js-levenshtein@npm:1.1.6" + checksum: 409f052a7f1141be4058d97da7860e08efd97fc588b7a4c5cfa0548bc04f6d576644dae65ab630266dff685d56fb90d494e03d4d79cb484c287746b4f1bf0694 languageName: node linkType: hard -"global-modules@npm:^2.0.0": - version: 2.0.0 - resolution: "global-modules@npm:2.0.0" - dependencies: - global-prefix: ^3.0.0 - checksum: d6197f25856c878c2fb5f038899f2dca7cbb2f7b7cf8999660c0104972d5cfa5c68b5a0a77fa8206bb536c3903a4615665acb9709b4d80846e1bb47eaef65430 +"js-md4@npm:^0.3.2": + version: 0.3.2 + resolution: "js-md4@npm:0.3.2" + checksum: aa7b7cbd738b105f86fc0fa50ce2a7a6b6b329ff3f713d1bd38b12c2a72929bab5a16e658a03830faa8d656356aa89b4f77f1fbf05ffa8d095bda6d831441c2d languageName: node linkType: hard -"global-prefix@npm:^1.0.1": - version: 1.0.2 - resolution: "global-prefix@npm:1.0.2" - dependencies: - expand-tilde: ^2.0.2 - homedir-polyfill: ^1.0.1 - ini: ^1.3.4 - is-windows: ^1.0.1 - which: ^1.2.14 - checksum: 061b43470fe498271bcd514e7746e8a8535032b17ab9570517014ae27d700ff0dca749f76bbde13ba384d185be4310d8ba5712cb0e74f7d54d59390db63dd9a0 +"js-tokens@npm:^3.0.0 || ^4.0.0, js-tokens@npm:^4.0.0": + version: 4.0.0 + resolution: "js-tokens@npm:4.0.0" + checksum: 8a95213a5a77deb6cbe94d86340e8d9ace2b93bc367790b260101d2f36a2eaf4e4e22d9fa9cf459b38af3a32fb4190e638024cf82ec95ef708680e405ea7cc78 languageName: node linkType: hard -"global-prefix@npm:^3.0.0": - version: 3.0.0 - resolution: "global-prefix@npm:3.0.0" +"js-yaml@npm:=4.1.0, js-yaml@npm:^4.0.0, js-yaml@npm:^4.1.0": + version: 4.1.0 + resolution: "js-yaml@npm:4.1.0" dependencies: - ini: ^1.3.5 - kind-of: ^6.0.2 - which: ^1.3.1 - checksum: 8a82fc1d6f22c45484a4e34656cc91bf021a03e03213b0035098d605bfc612d7141f1e14a21097e8a0413b4884afd5b260df0b6a25605ce9d722e11f1df2881d + argparse: ^2.0.1 + bin: + js-yaml: bin/js-yaml.js + checksum: c7830dfd456c3ef2c6e355cc5a92e6700ceafa1d14bba54497b34a99f0376cecbb3e9ac14d3e5849b426d5a5140709a66237a8c991c675431271c4ce5504151a languageName: node linkType: hard -"globals@npm:^11.1.0": - version: 11.12.0 - resolution: "globals@npm:11.12.0" - checksum: 67051a45eca3db904aee189dfc7cd53c20c7d881679c93f6146ddd4c9f4ab2268e68a919df740d39c71f4445d2b38ee360fc234428baea1dbdfe68bbcb46979e +"js-yaml@npm:^3.10.0, js-yaml@npm:^3.13.1, js-yaml@npm:^3.6.1, js-yaml@npm:^3.8.3": + version: 3.14.1 + resolution: "js-yaml@npm:3.14.1" + dependencies: + argparse: ^1.0.7 + esprima: ^4.0.0 + bin: + js-yaml: bin/js-yaml.js + checksum: bef146085f472d44dee30ec34e5cf36bf89164f5d585435a3d3da89e52622dff0b188a580e4ad091c3341889e14cb88cac6e4deb16dc5b1e9623bb0601fc255c languageName: node linkType: hard -"globals@npm:^13.19.0": - version: 13.24.0 - resolution: "globals@npm:13.24.0" +"js-yaml@npm:~3.13.1": + version: 3.13.1 + resolution: "js-yaml@npm:3.13.1" dependencies: - type-fest: ^0.20.2 - checksum: 56066ef058f6867c04ff203b8a44c15b038346a62efbc3060052a1016be9f56f4cf0b2cd45b74b22b81e521a889fc7786c73691b0549c2f3a6e825b3d394f43c + argparse: ^1.0.7 + esprima: ^4.0.0 + bin: + js-yaml: bin/js-yaml.js + checksum: 7511b764abb66d8aa963379f7d2a404f078457d106552d05a7b556d204f7932384e8477513c124749fa2de52eb328961834562bd09924902c6432e40daa408bc languageName: node linkType: hard -"globalthis@npm:^1.0.1, globalthis@npm:^1.0.3, globalthis@npm:^1.0.4": - version: 1.0.4 - resolution: "globalthis@npm:1.0.4" - dependencies: - define-properties: ^1.2.1 - gopd: ^1.0.1 - checksum: 39ad667ad9f01476474633a1834a70842041f70a55571e8dcef5fb957980a92da5022db5430fca8aecc5d47704ae30618c0bc877a579c70710c904e9ef06108a +"jsbn@npm:1.1.0": + version: 1.1.0 + resolution: "jsbn@npm:1.1.0" + checksum: 944f924f2bd67ad533b3850eee47603eed0f6ae425fd1ee8c760f477e8c34a05f144c1bd4f5a5dd1963141dc79a2c55f89ccc5ab77d039e7077f3ad196b64965 languageName: node linkType: hard -"globby@npm:^11.0.0, globby@npm:^11.0.4, globby@npm:^11.1.0": - version: 11.1.0 - resolution: "globby@npm:11.1.0" - dependencies: - array-union: ^2.1.0 - dir-glob: ^3.0.1 - fast-glob: ^3.2.9 - ignore: ^5.2.0 - merge2: ^1.4.1 - slash: ^3.0.0 - checksum: b4be8885e0cfa018fc783792942d53926c35c50b3aefd3fdcfb9d22c627639dc26bd2327a40a0b74b074100ce95bb7187bfeae2f236856aa3de183af7a02aea6 +"jsbn@npm:~0.1.0": + version: 0.1.1 + resolution: "jsbn@npm:0.1.1" + checksum: e5ff29c1b8d965017ef3f9c219dacd6e40ad355c664e277d31246c90545a02e6047018c16c60a00f36d561b3647215c41894f5d869ada6908a2e0ce4200c88f2 languageName: node linkType: hard -"google-auth-library@npm:^9.6.3": - version: 9.14.2 - resolution: "google-auth-library@npm:9.14.2" +"jsdom@npm:^16.5.2": + version: 16.7.0 + resolution: "jsdom@npm:16.7.0" dependencies: - base64-js: ^1.3.0 - ecdsa-sig-formatter: ^1.0.11 - gaxios: ^6.1.1 - gcp-metadata: ^6.1.0 - gtoken: ^7.0.0 - jws: ^4.0.0 - checksum: 64b3a6c1b1b14f1c891dbcfb850bc4db63dc8fae17e70197636244d00c83b539ac3da8688aae0bd1f09c884fc538d203945ae751edbabf666b41066385d86e30 + abab: ^2.0.5 + acorn: ^8.2.4 + acorn-globals: ^6.0.0 + cssom: ^0.4.4 + cssstyle: ^2.3.0 + data-urls: ^2.0.0 + decimal.js: ^10.2.1 + domexception: ^2.0.1 + escodegen: ^2.0.0 + form-data: ^3.0.0 + html-encoding-sniffer: ^2.0.1 + http-proxy-agent: ^4.0.1 + https-proxy-agent: ^5.0.0 + is-potential-custom-element-name: ^1.0.1 + nwsapi: ^2.2.0 + parse5: 6.0.1 + saxes: ^5.0.1 + symbol-tree: ^3.2.4 + tough-cookie: ^4.0.0 + w3c-hr-time: ^1.0.2 + w3c-xmlserializer: ^2.0.0 + webidl-conversions: ^6.1.0 + whatwg-encoding: ^1.0.5 + whatwg-mimetype: ^2.3.0 + whatwg-url: ^8.5.0 + ws: ^7.4.6 + xml-name-validator: ^3.0.0 + peerDependencies: + canvas: ^2.5.0 + peerDependenciesMeta: + canvas: + optional: true + checksum: 454b83371857000763ed31130a049acd1b113e3b927e6dcd75c67ddc30cdd242d7ebcac5c2294b7a1a6428155cb1398709c573b3c6d809218692ea68edd93370 languageName: node linkType: hard -"gopd@npm:^1.0.1": - version: 1.0.1 - resolution: "gopd@npm:1.0.1" +"jsdom@npm:^20.0.0": + version: 20.0.3 + resolution: "jsdom@npm:20.0.3" dependencies: - get-intrinsic: ^1.1.3 - checksum: a5ccfb8806e0917a94e0b3de2af2ea4979c1da920bc381667c260e00e7cafdbe844e2cb9c5bcfef4e5412e8bf73bab837285bc35c7ba73aaaf0134d4583393a6 + abab: ^2.0.6 + acorn: ^8.8.1 + acorn-globals: ^7.0.0 + cssom: ^0.5.0 + cssstyle: ^2.3.0 + data-urls: ^3.0.2 + decimal.js: ^10.4.2 + domexception: ^4.0.0 + escodegen: ^2.0.0 + form-data: ^4.0.0 + html-encoding-sniffer: ^3.0.0 + http-proxy-agent: ^5.0.0 + https-proxy-agent: ^5.0.1 + is-potential-custom-element-name: ^1.0.1 + nwsapi: ^2.2.2 + parse5: ^7.1.1 + saxes: ^6.0.0 + symbol-tree: ^3.2.4 + tough-cookie: ^4.1.2 + w3c-xmlserializer: ^4.0.0 + webidl-conversions: ^7.0.0 + whatwg-encoding: ^2.0.0 + whatwg-mimetype: ^3.0.0 + whatwg-url: ^11.0.0 + ws: ^8.11.0 + xml-name-validator: ^4.0.0 + peerDependencies: + canvas: ^2.5.0 + peerDependenciesMeta: + canvas: + optional: true + checksum: 6e2ae21db397133a061b270c26d2dbc0b9051733ea3b896a7ece78d79f475ff0974f766a413c1198a79c793159119169f2335ddb23150348fbfdcfa6f3105536 languageName: node linkType: hard -"graceful-fs@npm:^4.1.2, graceful-fs@npm:^4.1.5, graceful-fs@npm:^4.1.6, graceful-fs@npm:^4.2.0, graceful-fs@npm:^4.2.11, graceful-fs@npm:^4.2.4, graceful-fs@npm:^4.2.6, graceful-fs@npm:^4.2.9": - version: 4.2.11 - resolution: "graceful-fs@npm:4.2.11" - checksum: ac85f94da92d8eb6b7f5a8b20ce65e43d66761c55ce85ac96df6865308390da45a8d3f0296dd3a663de65d30ba497bd46c696cc1e248c72b13d6d567138a4fc7 +"jsep@npm:^1.1.2, jsep@npm:^1.2.0": + version: 1.3.9 + resolution: "jsep@npm:1.3.9" + checksum: d1f3e2cc00209f67a989b73c2a89d2ccbea908d950ec959e2448c6449b134c6367b47eef4e1292767cb490f0b5b72e7309080b93ee4c7398684df2514dbd33a3 languageName: node linkType: hard -"graphemer@npm:^1.4.0": +"jsep@npm:^1.3.6, jsep@npm:^1.4.0": version: 1.4.0 - resolution: "graphemer@npm:1.4.0" - checksum: bab8f0be9b568857c7bec9fda95a89f87b783546d02951c40c33f84d05bb7da3fd10f863a9beb901463669b6583173a8c8cc6d6b306ea2b9b9d5d3d943c3a673 + resolution: "jsep@npm:1.4.0" + checksum: 8e7af5ecb91483b227092b87a3e85b5df3e848dbe6f201b19efcb18047567530d21dfeecb0978e09d1f66554fcfaed84176819eeacdfc86f61dc05c40c18f824 languageName: node linkType: hard -"graphql-tag@npm:^2.10.3": - version: 2.12.6 - resolution: "graphql-tag@npm:2.12.6" - dependencies: - tslib: ^2.1.0 - peerDependencies: - graphql: ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 - checksum: b15162a3d62f17b9b79302445b9ee330e041582f1c7faca74b9dec5daa74272c906ec1c34e1c50592bb6215e5c3eba80a309103f6ba9e4c1cddc350c46f010df +"jsesc@npm:^3.0.2, jsesc@npm:~3.0.2": + version: 3.0.2 + resolution: "jsesc@npm:3.0.2" + bin: + jsesc: bin/jsesc + checksum: a36d3ca40574a974d9c2063bf68c2b6141c20da8f2a36bd3279fc802563f35f0527a6c828801295bdfb2803952cf2cf387786c2c90ed564f88d5782475abfe3c languageName: node linkType: hard -"graphql@npm:^16.0.0, graphql@npm:^16.8.1": - version: 16.9.0 - resolution: "graphql@npm:16.9.0" - checksum: 8cb3d54100e9227310383ce7f791ca48d12f15ed9f2021f23f8735f1121aafe4e5e611a853081dd935ce221724ea1ae4638faef5d2921fb1ad7c26b5f46611e9 +"json-beautify@npm:1.1.1": + version: 1.1.1 + resolution: "json-beautify@npm:1.1.1" + bin: + json-beautify: ./bin/json-beautify + checksum: 4d81bae69b310f789a16690097c7d303207b09e897a46e91dcf2beea1acffe05275248c099b88268e0a0a32ccf3dd12b529974cddc908844c081166117a93cad languageName: node linkType: hard -"gtoken@npm:^7.0.0": - version: 7.1.0 - resolution: "gtoken@npm:7.1.0" +"json-bigint@npm:^1.0.0": + version: 1.0.0 + resolution: "json-bigint@npm:1.0.0" dependencies: - gaxios: ^6.0.0 - jws: ^4.0.0 - checksum: 1f338dced78f9d895ea03cd507454eb5a7b77e841ecd1d45e44483b08c1e64d16a9b0342358d37586d87462ffc2d5f5bff5dfe77ed8d4f0aafc3b5b0347d5d16 + bignumber.js: ^9.0.0 + checksum: c67bb93ccb3c291e60eb4b62931403e378906aab113ec1c2a8dd0f9a7f065ad6fd9713d627b732abefae2e244ac9ce1721c7a3142b2979532f12b258634ce6f6 languageName: node linkType: hard -"gzip-size@npm:^6.0.0": - version: 6.0.0 - resolution: "gzip-size@npm:6.0.0" - dependencies: - duplexer: ^0.1.2 - checksum: 2df97f359696ad154fc171dcb55bc883fe6e833bca7a65e457b9358f3cb6312405ed70a8da24a77c1baac0639906cd52358dc0ce2ec1a937eaa631b934c94194 +"json-buffer@npm:3.0.1, json-buffer@npm:^3.0.1": + version: 3.0.1 + resolution: "json-buffer@npm:3.0.1" + checksum: 9026b03edc2847eefa2e37646c579300a1f3a4586cfb62bf857832b60c852042d0d6ae55d1afb8926163fa54c2b01d83ae24705f34990348bdac6273a29d4581 languageName: node linkType: hard -"handle-thing@npm:^2.0.0": - version: 2.0.1 - resolution: "handle-thing@npm:2.0.1" - checksum: 68071f313062315cd9dce55710e9496873945f1dd425107007058fc1629f93002a7649fcc3e464281ce02c7e809a35f5925504ab8105d972cf649f1f47cb7d6c +"json-parse-even-better-errors@npm:^2.3.0, json-parse-even-better-errors@npm:^2.3.1": + version: 2.3.1 + resolution: "json-parse-even-better-errors@npm:2.3.1" + checksum: 798ed4cf3354a2d9ccd78e86d2169515a0097a5c133337807cdf7f1fc32e1391d207ccfc276518cc1d7d8d4db93288b8a50ba4293d212ad1336e52a8ec0a941f languageName: node linkType: hard -"handlebars@npm:^4.7.3, handlebars@npm:^4.7.7": - version: 4.7.8 - resolution: "handlebars@npm:4.7.8" +"json-pointer@npm:0.6.2": + version: 0.6.2 + resolution: "json-pointer@npm:0.6.2" dependencies: - minimist: ^1.2.5 - neo-async: ^2.6.2 - source-map: ^0.6.1 - uglify-js: ^3.1.4 - wordwrap: ^1.0.0 - dependenciesMeta: - uglify-js: - optional: true - bin: - handlebars: bin/handlebars - checksum: 00e68bb5c183fd7b8b63322e6234b5ac8fbb960d712cb3f25587d559c2951d9642df83c04a1172c918c41bcfc81bfbd7a7718bbce93b893e0135fc99edea93ff + foreach: ^2.0.4 + checksum: 668143014b16d7f90e6f0e6c2d756b00b799424f58d750794a79a24cbce595855b224f7861986aaff719579558fbab81fb83c7371f5e24aded9dc33b3838de30 languageName: node linkType: hard -"har-schema@npm:^2.0.0": - version: 2.0.0 - resolution: "har-schema@npm:2.0.0" - checksum: d8946348f333fb09e2bf24cc4c67eabb47c8e1d1aa1c14184c7ffec1140a49ec8aa78aa93677ae452d71d5fc0fdeec20f0c8c1237291fc2bcb3f502a5d204f9b +"json-schema-compare@npm:^0.2.2": + version: 0.2.2 + resolution: "json-schema-compare@npm:0.2.2" + dependencies: + lodash: ^4.17.4 + checksum: dd6f2173857c8e3b77d6ebdfa05bd505bba5b08709ab46b532722f5d1c33b5fee1fc8f3c97d0c0d011db25f9f3b0baf7ab783bb5f55c32abd9f1201760e43c2c languageName: node linkType: hard -"har-validator@npm:~5.1.3": - version: 5.1.5 - resolution: "har-validator@npm:5.1.5" +"json-schema-library@npm:^9.0.0": + version: 9.3.5 + resolution: "json-schema-library@npm:9.3.5" dependencies: - ajv: ^6.12.3 - har-schema: ^2.0.0 - checksum: b998a7269ca560d7f219eedc53e2c664cd87d487e428ae854a6af4573fc94f182fe9d2e3b92ab968249baec7ebaf9ead69cf975c931dc2ab282ec182ee988280 + "@sagold/json-pointer": ^5.1.2 + "@sagold/json-query": ^6.1.3 + deepmerge: ^4.3.1 + fast-copy: ^3.0.2 + fast-deep-equal: ^3.1.3 + smtp-address-parser: 1.0.10 + valid-url: ^1.0.9 + checksum: 8c8a8c993f998a3485d5675781a0330f4e5abc43781f1fa03b709dd5a5157fb2a524c704966f8c4fc31873c5816d4a07058214873b78b1d54f8b4a0cf6737bcf languageName: node linkType: hard -"harmony-reflect@npm:^1.4.6": - version: 1.6.2 - resolution: "harmony-reflect@npm:1.6.2" - checksum: 2e5bae414cd2bfae5476147f9935dc69ee9b9a413206994dcb94c5b3208d4555da3d4313aff6fd14bd9991c1e3ef69cdda5c8fac1eb1d7afc064925839339b8c +"json-schema-merge-allof@npm:^0.8.1": + version: 0.8.1 + resolution: "json-schema-merge-allof@npm:0.8.1" + dependencies: + compute-lcm: ^1.1.2 + json-schema-compare: ^0.2.2 + lodash: ^4.17.20 + checksum: 82700f6ac77351959138d6b153d77375a8c29cf48d907241b85c8292dd77aabd8cb816400f2b0d17062c4ccc8893832ec4f664ab9c814927ef502e7a595ea873 + languageName: node + linkType: hard + +"json-schema-to-ts@npm:^3.0.0": + version: 3.1.1 + resolution: "json-schema-to-ts@npm:3.1.1" + dependencies: + "@babel/runtime": ^7.18.3 + ts-algebra: ^2.0.0 + checksum: b616f1c2d7492502e11eec4f8e4539ee1e897543a679d929494afdc164d9557275cead8372747b73f239b1e68056ffbf551b03ae82d0047bba0dfe2bbd6b64f4 languageName: node linkType: hard -"has-bigints@npm:^1.0.1, has-bigints@npm:^1.0.2": - version: 1.0.2 - resolution: "has-bigints@npm:1.0.2" - checksum: 390e31e7be7e5c6fe68b81babb73dfc35d413604d7ee5f56da101417027a4b4ce6a27e46eff97ad040c835b5d228676eae99a9b5c3bc0e23c8e81a49241ff45b +"json-schema-traverse@npm:^0.4.1": + version: 0.4.1 + resolution: "json-schema-traverse@npm:0.4.1" + checksum: 7486074d3ba247769fda17d5181b345c9fb7d12e0da98b22d1d71a5db9698d8b4bd900a3ec1a4ffdd60846fc2556274a5c894d0c48795f14cb03aeae7b55260b languageName: node linkType: hard -"has-flag@npm:^3.0.0": - version: 3.0.0 - resolution: "has-flag@npm:3.0.0" - checksum: 4a15638b454bf086c8148979aae044dd6e39d63904cd452d970374fa6a87623423da485dfb814e7be882e05c096a7ccf1ebd48e7e7501d0208d8384ff4dea73b +"json-schema-traverse@npm:^1.0.0": + version: 1.0.0 + resolution: "json-schema-traverse@npm:1.0.0" + checksum: 02f2f466cdb0362558b2f1fd5e15cce82ef55d60cd7f8fa828cf35ba74330f8d767fcae5c5c2adb7851fa811766c694b9405810879bc4e1ddd78a7c0e03658ad languageName: node linkType: hard -"has-flag@npm:^4.0.0": - version: 4.0.0 - resolution: "has-flag@npm:4.0.0" - checksum: 261a1357037ead75e338156b1f9452c016a37dcd3283a972a30d9e4a87441ba372c8b81f818cd0fbcd9c0354b4ae7e18b9e1afa1971164aef6d18c2b6095a8ad +"json-schema@npm:0.4.0, json-schema@npm:^0.4.0": + version: 0.4.0 + resolution: "json-schema@npm:0.4.0" + checksum: 66389434c3469e698da0df2e7ac5a3281bcff75e797a5c127db7c5b56270e01ae13d9afa3c03344f76e32e81678337a8c912bdbb75101c62e487dc3778461d72 languageName: node linkType: hard -"has-property-descriptors@npm:^1.0.0, has-property-descriptors@npm:^1.0.2": - version: 1.0.2 - resolution: "has-property-descriptors@npm:1.0.2" - dependencies: - es-define-property: ^1.0.0 - checksum: fcbb246ea2838058be39887935231c6d5788babed499d0e9d0cc5737494c48aba4fe17ba1449e0d0fbbb1e36175442faa37f9c427ae357d6ccb1d895fbcd3de3 +"json-stable-stringify-without-jsonify@npm:^1.0.1": + version: 1.0.1 + resolution: "json-stable-stringify-without-jsonify@npm:1.0.1" + checksum: cff44156ddce9c67c44386ad5cddf91925fe06b1d217f2da9c4910d01f358c6e3989c4d5a02683c7a5667f9727ff05831f7aa8ae66c8ff691c556f0884d49215 languageName: node linkType: hard -"has-proto@npm:^1.0.1, has-proto@npm:^1.0.3": - version: 1.0.3 - resolution: "has-proto@npm:1.0.3" - checksum: fe7c3d50b33f50f3933a04413ed1f69441d21d2d2944f81036276d30635cad9279f6b43bc8f32036c31ebdfcf6e731150f46c1907ad90c669ffe9b066c3ba5c4 +"json-stable-stringify@npm:^1.0.1": + version: 1.1.1 + resolution: "json-stable-stringify@npm:1.1.1" + dependencies: + call-bind: ^1.0.5 + isarray: ^2.0.5 + jsonify: ^0.0.1 + object-keys: ^1.1.1 + checksum: e1ba06600fd278767eeff53f28e408e29c867e79abf564e7aadc3ce8f31f667258f8db278ef28831e45884dd687388fa1910f46e599fc19fb94c9afbbe3a4de8 languageName: node linkType: hard -"has-symbols@npm:^1.0.2, has-symbols@npm:^1.0.3": - version: 1.0.3 - resolution: "has-symbols@npm:1.0.3" - checksum: a054c40c631c0d5741a8285010a0777ea0c068f99ed43e5d6eb12972da223f8af553a455132fdb0801bdcfa0e0f443c0c03a68d8555aa529b3144b446c3f2410 +"json-stringify-safe@npm:^5.0.1, json-stringify-safe@npm:~5.0.1": + version: 5.0.1 + resolution: "json-stringify-safe@npm:5.0.1" + checksum: 48ec0adad5280b8a96bb93f4563aa1667fd7a36334f79149abd42446d0989f2ddc58274b479f4819f1f00617957e6344c886c55d05a4e15ebb4ab931e4a6a8ee languageName: node linkType: hard -"has-tostringtag@npm:^1.0.0, has-tostringtag@npm:^1.0.2": +"json5@npm:^1.0.1, json5@npm:^1.0.2": version: 1.0.2 - resolution: "has-tostringtag@npm:1.0.2" + resolution: "json5@npm:1.0.2" dependencies: - has-symbols: ^1.0.3 - checksum: 999d60bb753ad714356b2c6c87b7fb74f32463b8426e159397da4bde5bca7e598ab1073f4d8d4deafac297f2eb311484cd177af242776bf05f0d11565680468d + minimist: ^1.2.0 + bin: + json5: lib/cli.js + checksum: 866458a8c58a95a49bef3adba929c625e82532bcff1fe93f01d29cb02cac7c3fe1f4b79951b7792c2da9de0b32871a8401a6e3c5b36778ad852bf5b8a61165d7 languageName: node linkType: hard -"has-unicode@npm:^2.0.1": - version: 2.0.1 - resolution: "has-unicode@npm:2.0.1" - checksum: 1eab07a7436512db0be40a710b29b5dc21fa04880b7f63c9980b706683127e3c1b57cb80ea96d47991bdae2dfe479604f6a1ba410106ee1046a41d1bd0814400 +"json5@npm:^2.1.2, json5@npm:^2.1.3, json5@npm:^2.2.0, json5@npm:^2.2.3": + version: 2.2.3 + resolution: "json5@npm:2.2.3" + bin: + json5: lib/cli.js + checksum: 2a7436a93393830bce797d4626275152e37e877b265e94ca69c99e3d20c2b9dab021279146a39cdb700e71b2dd32a4cebd1514cd57cee102b1af906ce5040349 languageName: node linkType: hard -"hash-base@npm:^3.0.0": - version: 3.1.0 - resolution: "hash-base@npm:3.1.0" - dependencies: - inherits: ^2.0.4 - readable-stream: ^3.6.0 - safe-buffer: ^5.2.0 - checksum: 26b7e97ac3de13cb23fc3145e7e3450b0530274a9562144fc2bf5c1e2983afd0e09ed7cc3b20974ba66039fad316db463da80eb452e7373e780cbee9a0d2f2dc +"jsonc-parser@npm:^3.0.0, jsonc-parser@npm:^3.2.0": + version: 3.3.1 + resolution: "jsonc-parser@npm:3.3.1" + checksum: 81ef19d98d9c6bd6e4a37a95e2753c51c21705cbeffd895e177f4b542cca9cda5fda12fb942a71a2e824a9132cf119dc2e642e9286386055e1365b5478f49a47 languageName: node linkType: hard -"hash-base@npm:~3.0, hash-base@npm:~3.0.4": - version: 3.0.4 - resolution: "hash-base@npm:3.0.4" - dependencies: - inherits: ^2.0.1 - safe-buffer: ^5.0.1 - checksum: 878465a0dfcc33cce195c2804135352c590d6d10980adc91a9005fd377e77f2011256c2b7cfce472e3f2e92d561d1bf3228d2da06348a9017ce9a258b3b49764 +"jsonc-parser@npm:~2.2.1": + version: 2.2.1 + resolution: "jsonc-parser@npm:2.2.1" + checksum: c113878b5edd4232ba0742c7e0ddefb22a2a8ef1aafa1674c0eb4c5df0be11ed02bc8288f52ebe44b1696de336e1bc06e7bbc1458d0f910540d72b57ee7c8084 languageName: node linkType: hard -"hash.js@npm:^1.0.0, hash.js@npm:^1.0.3": - version: 1.1.7 - resolution: "hash.js@npm:1.1.7" +"jsonfile@npm:^4.0.0": + version: 4.0.0 + resolution: "jsonfile@npm:4.0.0" dependencies: - inherits: ^2.0.3 - minimalistic-assert: ^1.0.1 - checksum: e350096e659c62422b85fa508e4b3669017311aa4c49b74f19f8e1bc7f3a54a584fdfd45326d4964d6011f2b2d882e38bea775a96046f2a61b7779a979629d8f + graceful-fs: ^4.1.6 + dependenciesMeta: + graceful-fs: + optional: true + checksum: 6447d6224f0d31623eef9b51185af03ac328a7553efcee30fa423d98a9e276ca08db87d71e17f2310b0263fd3ffa6c2a90a6308367f661dc21580f9469897c9e languageName: node linkType: hard -"hasown@npm:^2.0.0, hasown@npm:^2.0.1, hasown@npm:^2.0.2": - version: 2.0.2 - resolution: "hasown@npm:2.0.2" +"jsonfile@npm:^6.0.1": + version: 6.1.0 + resolution: "jsonfile@npm:6.1.0" dependencies: - function-bind: ^1.1.2 - checksum: e8516f776a15149ca6c6ed2ae3110c417a00b62260e222590e54aa367cbcd6ed99122020b37b7fbdf05748df57b265e70095d7bf35a47660587619b15ffb93db + graceful-fs: ^4.1.6 + universalify: ^2.0.0 + dependenciesMeta: + graceful-fs: + optional: true + checksum: 7af3b8e1ac8fe7f1eccc6263c6ca14e1966fcbc74b618d3c78a0a2075579487547b94f72b7a1114e844a1e15bb00d440e5d1720bfc4612d790a6f285d5ea8354 languageName: node linkType: hard -"he@npm:^1.2.0": - version: 1.2.0 - resolution: "he@npm:1.2.0" - bin: - he: bin/he - checksum: 3d4d6babccccd79c5c5a3f929a68af33360d6445587d628087f39a965079d84f18ce9c3d3f917ee1e3978916fc833bb8b29377c3b403f919426f91bc6965e7a7 +"jsonify@npm:^0.0.1": + version: 0.0.1 + resolution: "jsonify@npm:0.0.1" + checksum: 027287e1c0294fce15f18c0ff990cfc2318e7f01fb76515f784d5cd0784abfec6fc5c2355c3a2f2cb0ad7f4aa2f5b74ebbfe4e80476c35b2d13cabdb572e1134 languageName: node linkType: hard -"headers-polyfill@npm:3.2.5": - version: 3.2.5 - resolution: "headers-polyfill@npm:3.2.5" - checksum: a3c4bdd661584fd39e40c0f91412abc514616edfbd20d29a75567e591f90ef5c445c8e209b7f3c2b2375d27e95e4690f33417368a168d4832484a93861ab6a3c +"jsonpath-plus@npm:10.2.0, jsonpath-plus@npm:^10.0.0, jsonpath-plus@npm:^6.0.1 || ^10.1.0": + version: 10.2.0 + resolution: "jsonpath-plus@npm:10.2.0" + dependencies: + "@jsep-plugin/assignment": ^1.3.0 + "@jsep-plugin/regex": ^1.0.4 + jsep: ^1.4.0 + bin: + jsonpath: bin/jsonpath-cli.js + jsonpath-plus: bin/jsonpath-cli.js + checksum: 862a96a0179f342fa6c012065fa78458d4ae4835f18a6ef580d18807101d8c2c3509dc20c9857474503205bff8f06c309e17d7420b68196262d15ad1e4f22146 languageName: node linkType: hard -"helmet@npm:^6.0.0": - version: 6.2.0 - resolution: "helmet@npm:6.2.0" - checksum: cf01e024244205bd10d70fd2f3874244b72ba37a10a4604e4383bbd63fe1438ee24bae7672c4ee5c5e16e6cd88ac58003274034fab0ba199761471555a322b37 +"jsonpath-plus@npm:7.1.0": + version: 7.1.0 + resolution: "jsonpath-plus@npm:7.1.0" + checksum: a4005dc860c6b7e339229842537ceb6eb839d87a3447f989792b9c64f2564bbbd40663515f9481fb5a1b6cb0f988afba5b0b150e0285c463b794a45ed1aaf555 languageName: node linkType: hard -"hexoid@npm:^1.0.0": - version: 1.0.0 - resolution: "hexoid@npm:1.0.0" - checksum: 27a148ca76a2358287f40445870116baaff4a0ed0acc99900bf167f0f708ffd82e044ff55e9949c71963852b580fc024146d3ac6d5d76b508b78d927fa48ae2d +"jsonpath-plus@npm:^6.0.1": + version: 6.0.1 + resolution: "jsonpath-plus@npm:6.0.1" + checksum: bddec34b742249c5b38077dfcd8eb479fab4e077943253017326503ce4f527ef66938288c728712fd923907493d6eaba69a43015dc3dd9fdf48d89028ae7f466 languageName: node linkType: hard -"hmac-drbg@npm:^1.0.1": - version: 1.0.1 - resolution: "hmac-drbg@npm:1.0.1" - dependencies: - hash.js: ^1.0.3 - minimalistic-assert: ^1.0.0 - minimalistic-crypto-utils: ^1.0.1 - checksum: bd30b6a68d7f22d63f10e1888aee497d7c2c5c0bb469e66bbdac99f143904d1dfe95f8131f95b3e86c86dd239963c9d972fcbe147e7cffa00e55d18585c43fe0 +"jsonpath-plus@npm:^7.2.0": + version: 7.2.0 + resolution: "jsonpath-plus@npm:7.2.0" + checksum: 05f447339d29be861e307d6e812aec1b9b88a3ba6bba286966a4e8bed3e752bee3d715eabfc21dce968be85ccb48bf79d2c1af78da7b9b74cd1b446d4d5d02f5 languageName: node linkType: hard -"homedir-polyfill@npm:^1.0.1": - version: 1.0.3 - resolution: "homedir-polyfill@npm:1.0.3" +"jsonpath@npm:^1.1.1": + version: 1.1.1 + resolution: "jsonpath@npm:1.1.1" dependencies: - parse-passwd: ^1.0.0 - checksum: 18dd4db87052c6a2179d1813adea0c4bfcfa4f9996f0e226fefb29eb3d548e564350fa28ec46b0bf1fbc0a1d2d6922ceceb80093115ea45ff8842a4990139250 + esprima: 1.2.2 + static-eval: 2.0.2 + underscore: 1.12.1 + checksum: 5480d8e9e424fe2ed4ade6860b6e2cefddb21adb3a99abe0254cd9428e8ef9b0c9fb5729d6a5a514e90df50d645ccea9f3be48d627570e6222dd5dadc28eba7b languageName: node linkType: hard -"hoopy@npm:^0.1.4": - version: 0.1.4 - resolution: "hoopy@npm:0.1.4" - checksum: cfa60c7684c5e1ee4efe26e167bc54b73f839ffb59d1d44a5c4bf891e26b4f5bcc666555219a98fec95508fea4eda3a79540c53c05cc79afc1f66f9a238f4d9e +"jsonpointer@npm:^5.0.0, jsonpointer@npm:^5.0.1": + version: 5.0.1 + resolution: "jsonpointer@npm:5.0.1" + checksum: 0b40f712900ad0c846681ea2db23b6684b9d5eedf55807b4708c656f5894b63507d0e28ae10aa1bddbea551241035afe62b6df0800fc94c2e2806a7f3adecd7c languageName: node linkType: hard -"hpack.js@npm:^2.1.6": - version: 2.1.6 - resolution: "hpack.js@npm:2.1.6" - dependencies: - inherits: ^2.0.1 - obuf: ^1.0.0 - readable-stream: ^2.0.1 - wbuf: ^1.1.0 - checksum: 2de144115197967ad6eeee33faf41096c6ba87078703c5cb011632dcfbffeb45784569e0cf02c317bd79c48375597c8ec88c30fff5bb0b023e8f654fb6e9c06e +"jsonschema@npm:^1.2.6": + version: 1.4.1 + resolution: "jsonschema@npm:1.4.1" + checksum: 1ef02a6cd9bc32241ec86bbf1300bdbc3b5f2d8df6eb795517cf7d1cd9909e7beba1e54fdf73990fd66be98a182bda9add9607296b0cb00b1348212988e424b2 languageName: node linkType: hard -"html-encoding-sniffer@npm:^3.0.0": - version: 3.0.0 - resolution: "html-encoding-sniffer@npm:3.0.0" +"jsonwebtoken@npm:^9.0.0, jsonwebtoken@npm:^9.0.2": + version: 9.0.2 + resolution: "jsonwebtoken@npm:9.0.2" dependencies: - whatwg-encoding: ^2.0.0 - checksum: 8d806aa00487e279e5ccb573366a951a9f68f65c90298eac9c3a2b440a7ffe46615aff2995a2f61c6746c639234e6179a97e18ca5ccbbf93d3725ef2099a4502 - languageName: node - linkType: hard - -"html-entities@npm:^2.1.0, html-entities@npm:^2.3.2, html-entities@npm:^2.4.0, html-entities@npm:^2.5.2": - version: 2.5.2 - resolution: "html-entities@npm:2.5.2" - checksum: b23f4a07d33d49ade1994069af4e13d31650e3fb62621e92ae10ecdf01d1a98065c78fd20fdc92b4c7881612210b37c275f2c9fba9777650ab0d6f2ceb3b99b6 + jws: ^3.2.2 + lodash.includes: ^4.3.0 + lodash.isboolean: ^3.0.3 + lodash.isinteger: ^4.0.4 + lodash.isnumber: ^3.0.3 + lodash.isplainobject: ^4.0.6 + lodash.isstring: ^4.0.1 + lodash.once: ^4.0.0 + ms: ^2.1.1 + semver: ^7.5.4 + checksum: fc739a6a8b33f1974f9772dca7f8493ca8df4cc31c5a09dcfdb7cff77447dcf22f4236fb2774ef3fe50df0abeb8e1c6f4c41eba82f500a804ab101e2fbc9d61a languageName: node linkType: hard -"html-escaper@npm:^2.0.0": - version: 2.0.2 - resolution: "html-escaper@npm:2.0.2" - checksum: d2df2da3ad40ca9ee3a39c5cc6475ef67c8f83c234475f24d8e9ce0dc80a2c82df8e1d6fa78ddd1e9022a586ea1bd247a615e80a5cd9273d90111ddda7d9e974 +"jsprim@npm:^1.2.2": + version: 1.4.2 + resolution: "jsprim@npm:1.4.2" + dependencies: + assert-plus: 1.0.0 + extsprintf: 1.3.0 + json-schema: 0.4.0 + verror: 1.10.0 + checksum: 2ad1b9fdcccae8b3d580fa6ced25de930eaa1ad154db21bbf8478a4d30bbbec7925b5f5ff29b933fba9412b16a17bd484a8da4fdb3663b5e27af95dd693bab2a languageName: node linkType: hard -"html-minifier-terser@npm:^6.0.2": - version: 6.1.0 - resolution: "html-minifier-terser@npm:6.1.0" +"jss-plugin-camel-case@npm:^10.5.1": + version: 10.10.0 + resolution: "jss-plugin-camel-case@npm:10.10.0" dependencies: - camel-case: ^4.1.2 - clean-css: ^5.2.2 - commander: ^8.3.0 - he: ^1.2.0 - param-case: ^3.0.4 - relateurl: ^0.2.7 - terser: ^5.10.0 - bin: - html-minifier-terser: cli.js - checksum: ac52c14006476f773204c198b64838477859dc2879490040efab8979c0207424da55d59df7348153f412efa45a0840a1ca3c757bf14767d23a15e3e389d37a93 + "@babel/runtime": ^7.3.1 + hyphenate-style-name: ^1.0.3 + jss: 10.10.0 + checksum: 693485b86f7a0e0bd0c16b8ddd057ca02a993fc088558c96501f9131e7e6261cc9f4b08047879a68441c688c40dceeb5219b1f15ade9043935aade4f37f5ca85 languageName: node linkType: hard -"html-webpack-plugin@npm:^5.3.1": - version: 5.6.3 - resolution: "html-webpack-plugin@npm:5.6.3" +"jss-plugin-default-unit@npm:^10.5.1": + version: 10.10.0 + resolution: "jss-plugin-default-unit@npm:10.10.0" dependencies: - "@types/html-minifier-terser": ^6.0.0 - html-minifier-terser: ^6.0.2 - lodash: ^4.17.21 - pretty-error: ^4.0.0 - tapable: ^2.0.0 - peerDependencies: - "@rspack/core": 0.x || 1.x - webpack: ^5.20.0 - peerDependenciesMeta: - "@rspack/core": - optional: true - webpack: - optional: true - checksum: 59e7d971b0cfd9ba34c7acaa3c161e43c62596474dd8cd35d7b690498ff5891f21296de0aa1d2e7810348caa657e938461267155dda47913b5eeca7124406270 + "@babel/runtime": ^7.3.1 + jss: 10.10.0 + checksum: 6e56213830753ad80bca3824973a667106defaef698d5996d45d03a0e2a3e035b33cd257aa8015040c41bd6669e7598dce72c36099d7ae69db758a7b2ca453fa languageName: node linkType: hard -"htmlparser2@npm:^6.1.0": - version: 6.1.0 - resolution: "htmlparser2@npm:6.1.0" +"jss-plugin-global@npm:^10.5.1": + version: 10.10.0 + resolution: "jss-plugin-global@npm:10.10.0" dependencies: - domelementtype: ^2.0.1 - domhandler: ^4.0.0 - domutils: ^2.5.2 - entities: ^2.0.0 - checksum: 81a7b3d9c3bb9acb568a02fc9b1b81ffbfa55eae7f1c41ae0bf840006d1dbf54cb3aa245b2553e2c94db674840a9f0fdad7027c9a9d01a062065314039058c4e + "@babel/runtime": ^7.3.1 + jss: 10.10.0 + checksum: f3af4f40358e96cf89e0c7c84b6e441dc9b4d543cd6109fdf9314a9818fd780d252035f46cc526c3d3fb4393bc29effc6993cc22e04f4e67ec3c889ab760d580 languageName: node linkType: hard -"http-assert@npm:^1.3.0": - version: 1.5.0 - resolution: "http-assert@npm:1.5.0" +"jss-plugin-nested@npm:^10.5.1": + version: 10.10.0 + resolution: "jss-plugin-nested@npm:10.10.0" dependencies: - deep-equal: ~1.0.1 - http-errors: ~1.8.0 - checksum: 69c9b3c14cf8b2822916360a365089ce936c883c49068f91c365eccba5c141a9964d19fdda589150a480013bf503bf37d8936c732e9635819339e730ab0e7527 + "@babel/runtime": ^7.3.1 + jss: 10.10.0 + tiny-warning: ^1.0.2 + checksum: 190094375972b68eb8f683387c74e97dc8347e7cc4f2fbfd40b3baf077dfde83d70e57be56744690d22537c0390e0a398714d86736df820c64e498df95f937de languageName: node linkType: hard -"http-cache-semantics@npm:^4.1.0, http-cache-semantics@npm:^4.1.1": - version: 4.1.1 - resolution: "http-cache-semantics@npm:4.1.1" - checksum: 83ac0bc60b17a3a36f9953e7be55e5c8f41acc61b22583060e8dedc9dd5e3607c823a88d0926f9150e571f90946835c7fe150732801010845c72cd8bbff1a236 +"jss-plugin-props-sort@npm:^10.5.1": + version: 10.10.0 + resolution: "jss-plugin-props-sort@npm:10.10.0" + dependencies: + "@babel/runtime": ^7.3.1 + jss: 10.10.0 + checksum: 274483444b6733bd58d229ebdcdb32b3c24172bc83cb2f6f8364926de19acd872758bcf06c7b3af11cf75504a67a7d67abba62b25081d144585a56b4df9512ba languageName: node linkType: hard -"http-deceiver@npm:^1.2.7": - version: 1.2.7 - resolution: "http-deceiver@npm:1.2.7" - checksum: 64d7d1ae3a6933eb0e9a94e6f27be4af45a53a96c3c34e84ff57113787105a89fff9d1c3df263ef63add823df019b0e8f52f7121e32393bb5ce9a713bf100b41 +"jss-plugin-rule-value-function@npm:^10.5.1": + version: 10.10.0 + resolution: "jss-plugin-rule-value-function@npm:10.10.0" + dependencies: + "@babel/runtime": ^7.3.1 + jss: 10.10.0 + tiny-warning: ^1.0.2 + checksum: 009c9593b9be8b9f1030b797e58e3c233d90e034e5c68b0cabd25bffc7da965c69dc1ccb1bb6a542d72bb824df89036b2264fe564e8538320ef99febaf2882ee languageName: node linkType: hard -"http-errors@npm:2.0.0": - version: 2.0.0 - resolution: "http-errors@npm:2.0.0" +"jss-plugin-vendor-prefixer@npm:^10.5.1": + version: 10.10.0 + resolution: "jss-plugin-vendor-prefixer@npm:10.10.0" dependencies: - depd: 2.0.0 - inherits: 2.0.4 - setprototypeof: 1.2.0 - statuses: 2.0.1 - toidentifier: 1.0.1 - checksum: 9b0a3782665c52ce9dc658a0d1560bcb0214ba5699e4ea15aefb2a496e2ca83db03ebc42e1cce4ac1f413e4e0d2d736a3fd755772c556a9a06853ba2a0b7d920 + "@babel/runtime": ^7.3.1 + css-vendor: ^2.0.8 + jss: 10.10.0 + checksum: 879b7233f9b0b571074dc2b88d97a05dbb949012ba2405f1481bbedd521167dc835133632adb3f2d8ffceddd337c8c13e3e8b1931590516c0664039598752dff languageName: node linkType: hard -"http-errors@npm:^1.6.3, http-errors@npm:~1.8.0": - version: 1.8.1 - resolution: "http-errors@npm:1.8.1" +"jss@npm:10.10.0, jss@npm:^10.5.1, jss@npm:~10.10.0": + version: 10.10.0 + resolution: "jss@npm:10.10.0" dependencies: - depd: ~1.1.2 - inherits: 2.0.4 - setprototypeof: 1.2.0 - statuses: ">= 1.5.0 < 2" - toidentifier: 1.0.1 - checksum: d3c7e7e776fd51c0a812baff570bdf06fe49a5dc448b700ab6171b1250e4cf7db8b8f4c0b133e4bfe2451022a5790c1ca6c2cae4094dedd6ac8304a1267f91d2 + "@babel/runtime": ^7.3.1 + csstype: ^3.0.2 + is-in-browser: ^1.1.3 + tiny-warning: ^1.0.2 + checksum: ecf71971df42729668c283e432e841349b7fdbe52e520f7704991cf4a738fd2451ec0feeb25c12cdc5addf7facecf838e74e62936fd461fb4c99f23d54a4792d languageName: node linkType: hard -"http-errors@npm:~1.6.2": - version: 1.6.3 - resolution: "http-errors@npm:1.6.3" +"jsx-ast-utils@npm:^2.4.1 || ^3.0.0, jsx-ast-utils@npm:^3.3.5": + version: 3.3.5 + resolution: "jsx-ast-utils@npm:3.3.5" dependencies: - depd: ~1.1.2 - inherits: 2.0.3 - setprototypeof: 1.1.0 - statuses: ">= 1.4.0 < 2" - checksum: a9654ee027e3d5de305a56db1d1461f25709ac23267c6dc28cdab8323e3f96caa58a9a6a5e93ac15d7285cee0c2f019378c3ada9026e7fe19c872d695f27de7c + array-includes: ^3.1.6 + array.prototype.flat: ^1.3.1 + object.assign: ^4.1.4 + object.values: ^1.1.6 + checksum: f4b05fa4d7b5234230c905cfa88d36dc8a58a6666975a3891429b1a8cdc8a140bca76c297225cb7a499fad25a2c052ac93934449a2c31a44fc9edd06c773780a languageName: node linkType: hard -"http-parser-js@npm:>=0.5.1": - version: 0.5.8 - resolution: "http-parser-js@npm:0.5.8" - checksum: 6bbdf2429858e8cf13c62375b0bfb6dc3955ca0f32e58237488bc86cd2378f31d31785fd3ac4ce93f1c74e0189cf8823c91f5cb061696214fd368d2452dc871d +"jszip@npm:^3.10.1": + version: 3.10.1 + resolution: "jszip@npm:3.10.1" + dependencies: + lie: ~3.3.0 + pako: ~1.0.2 + readable-stream: ~2.3.6 + setimmediate: ^1.0.5 + checksum: abc77bfbe33e691d4d1ac9c74c8851b5761fba6a6986630864f98d876f3fcc2d36817dfc183779f32c00157b5d53a016796677298272a714ae096dfe6b1c8b60 languageName: node linkType: hard -"http-proxy-agent@npm:^5.0.0": - version: 5.0.0 - resolution: "http-proxy-agent@npm:5.0.0" +"jwa@npm:^1.4.1": + version: 1.4.1 + resolution: "jwa@npm:1.4.1" dependencies: - "@tootallnate/once": 2 - agent-base: 6 - debug: 4 - checksum: e2ee1ff1656a131953839b2a19cd1f3a52d97c25ba87bd2559af6ae87114abf60971e498021f9b73f9fd78aea8876d1fb0d4656aac8a03c6caa9fc175f22b786 + buffer-equal-constant-time: 1.0.1 + ecdsa-sig-formatter: 1.0.11 + safe-buffer: ^5.0.1 + checksum: ff30ea7c2dcc61f3ed2098d868bf89d43701605090c5b21b5544b512843ec6fd9e028381a4dda466cbcdb885c2d1150f7c62e7168394ee07941b4098e1035e2f languageName: node linkType: hard -"http-proxy-agent@npm:^7.0.0, http-proxy-agent@npm:^7.0.1": - version: 7.0.2 - resolution: "http-proxy-agent@npm:7.0.2" +"jwa@npm:^2.0.0": + version: 2.0.0 + resolution: "jwa@npm:2.0.0" dependencies: - agent-base: ^7.1.0 - debug: ^4.3.4 - checksum: 670858c8f8f3146db5889e1fa117630910101db601fff7d5a8aa637da0abedf68c899f03d3451cac2f83bcc4c3d2dabf339b3aa00ff8080571cceb02c3ce02f3 + buffer-equal-constant-time: 1.0.1 + ecdsa-sig-formatter: 1.0.11 + safe-buffer: ^5.0.1 + checksum: 8f00b71ad5fe94cb55006d0d19202f8f56889109caada2f7eeb63ca81755769ce87f4f48101967f398462e3b8ae4faebfbd5a0269cb755dead5d63c77ba4d2f1 languageName: node linkType: hard -"http-proxy-middleware@npm:^2.0.3": - version: 2.0.7 - resolution: "http-proxy-middleware@npm:2.0.7" +"jws@npm:^3.2.2": + version: 3.2.2 + resolution: "jws@npm:3.2.2" dependencies: - "@types/http-proxy": ^1.17.8 - http-proxy: ^1.18.1 - is-glob: ^4.0.1 - is-plain-obj: ^3.0.0 - micromatch: ^4.0.2 - peerDependencies: - "@types/express": ^4.17.13 - peerDependenciesMeta: - "@types/express": - optional: true - checksum: 18caa21145917aa1054740353916e8f03f5a3a93bede9106f1f44d84f7b174df17af1c72bf5fade5cc440c2058ee813f47cbb2bdd6ae6874af1cf33e0ac575f3 + jwa: ^1.4.1 + safe-buffer: ^5.0.1 + checksum: f0213fe5b79344c56cd443428d8f65c16bf842dc8cb8f5aed693e1e91d79c20741663ad6eff07a6d2c433d1831acc9814e8d7bada6a0471fbb91d09ceb2bf5c2 languageName: node linkType: hard -"http-proxy@npm:^1.18.1": - version: 1.18.1 - resolution: "http-proxy@npm:1.18.1" +"jws@npm:^4.0.0": + version: 4.0.0 + resolution: "jws@npm:4.0.0" dependencies: - eventemitter3: ^4.0.0 - follow-redirects: ^1.0.0 - requires-port: ^1.0.0 - checksum: f5bd96bf83e0b1e4226633dbb51f8b056c3e6321917df402deacec31dd7fe433914fc7a2c1831cf7ae21e69c90b3a669b8f434723e9e8b71fd68afe30737b6a5 + jwa: ^2.0.0 + safe-buffer: ^5.0.1 + checksum: d68d07aa6d1b8cb35c363a9bd2b48f15064d342a5d9dc18a250dbbce8dc06bd7e4792516c50baa16b8d14f61167c19e851fd7f66b59ecc68b7f6a013759765f7 languageName: node linkType: hard -"http-signature@npm:~1.2.0": - version: 1.2.0 - resolution: "http-signature@npm:1.2.0" +"keygrip@npm:~1.1.0": + version: 1.1.0 + resolution: "keygrip@npm:1.1.0" dependencies: - assert-plus: ^1.0.0 - jsprim: ^1.2.2 - sshpk: ^1.7.0 - checksum: 3324598712266a9683585bb84a75dec4fd550567d5e0dd4a0fff6ff3f74348793404d3eeac4918fa0902c810eeee1a86419e4a2e92a164132dfe6b26743fb47c + tsscmp: 1.0.6 + checksum: 078cd16a463d187121f0a27c1c9c95c52ad392b620f823431689f345a0501132cee60f6e96914b07d570105af470b96960402accd6c48a0b1f3cd8fac4fa2cae languageName: node linkType: hard -"https-browserify@npm:^1.0.0": - version: 1.0.0 - resolution: "https-browserify@npm:1.0.0" - checksum: 09b35353e42069fde2435760d13f8a3fb7dd9105e358270e2e225b8a94f811b461edd17cb57594e5f36ec1218f121c160ddceeec6e8be2d55e01dcbbbed8cbae +"keyv@npm:*": + version: 5.1.2 + resolution: "keyv@npm:5.1.2" + dependencies: + "@keyv/serialize": "*" + checksum: 959978b3574e704edf3772f9b447dc779c24a53c09c0297912ac55595013d8b6cbfa529f2019b3952deeadafe82257cc7fac2fdc0077d242553a74015a36d198 languageName: node linkType: hard -"https-proxy-agent@npm:^5.0.0, https-proxy-agent@npm:^5.0.1": - version: 5.0.1 - resolution: "https-proxy-agent@npm:5.0.1" +"keyv@npm:^4.5.2, keyv@npm:^4.5.3": + version: 4.5.4 + resolution: "keyv@npm:4.5.4" dependencies: - agent-base: 6 - debug: 4 - checksum: 571fccdf38184f05943e12d37d6ce38197becdd69e58d03f43637f7fa1269cf303a7d228aa27e5b27bbd3af8f09fd938e1c91dcfefff2df7ba77c20ed8dfc765 + json-buffer: 3.0.1 + checksum: 74a24395b1c34bd44ad5cb2b49140d087553e170625240b86755a6604cd65aa16efdbdeae5cdb17ba1284a0fbb25ad06263755dbc71b8d8b06f74232ce3cdd72 languageName: node linkType: hard -"https-proxy-agent@npm:^7.0.0, https-proxy-agent@npm:^7.0.1, https-proxy-agent@npm:^7.0.3, https-proxy-agent@npm:^7.0.5": - version: 7.0.5 - resolution: "https-proxy-agent@npm:7.0.5" +"keyv@npm:^5.2.1": + version: 5.2.2 + resolution: "keyv@npm:5.2.2" dependencies: - agent-base: ^7.0.2 - debug: 4 - checksum: 2e1a28960f13b041a50702ee74f240add8e75146a5c37fc98f1960f0496710f6918b3a9fe1e5aba41e50f58e6df48d107edd9c405c5f0d73ac260dabf2210857 + "@keyv/serialize": ^1.0.1 + checksum: d5476d8dd674c55c1754bcd05da118dc71eb4609f38677d891da799600fdc532f2015b1ffd3d8e03c0891b3ca88e4b50a34e1eac7787844f6af9cfb2f72c946c languageName: node linkType: hard -"human-id@npm:^1.0.2": - version: 1.0.2 - resolution: "human-id@npm:1.0.2" - checksum: 95ee57ffae849f008e2ef3fe6e437be8c999861b4256f18c3b194c8928670a8a149e0576917105d5fd77e5edbb621c5a4736fade20bb7bf130113c1ebc95cb74 +"kind-of@npm:^6.0.2": + version: 6.0.3 + resolution: "kind-of@npm:6.0.3" + checksum: 3ab01e7b1d440b22fe4c31f23d8d38b4d9b91d9f291df683476576493d5dfd2e03848a8b05813dd0c3f0e835bc63f433007ddeceb71f05cb25c45ae1b19c6d3b + languageName: node + linkType: hard + +"kleur@npm:^3.0.3": + version: 3.0.3 + resolution: "kleur@npm:3.0.3" + checksum: df82cd1e172f957bae9c536286265a5cdbd5eeca487cb0a3b2a7b41ef959fc61f8e7c0e9aeea9c114ccf2c166b6a8dd45a46fd619c1c569d210ecd2765ad5169 + languageName: node + linkType: hard + +"kleur@npm:^4.0.3": + version: 4.1.5 + resolution: "kleur@npm:4.1.5" + checksum: 1dc476e32741acf0b1b5b0627ffd0d722e342c1b0da14de3e8ae97821327ca08f9fb944542fb3c126d90ac5f27f9d804edbe7c585bf7d12ef495d115e0f22c12 + languageName: node + linkType: hard + +"knex@npm:3, knex@npm:^3.0.0": + version: 3.1.0 + resolution: "knex@npm:3.1.0" + dependencies: + colorette: 2.0.19 + commander: ^10.0.0 + debug: 4.3.4 + escalade: ^3.1.1 + esm: ^3.2.25 + get-package-type: ^0.1.0 + getopts: 2.3.0 + interpret: ^2.2.0 + lodash: ^4.17.21 + pg-connection-string: 2.6.2 + rechoir: ^0.8.0 + resolve-from: ^5.0.0 + tarn: ^3.0.2 + tildify: 2.0.0 + peerDependenciesMeta: + better-sqlite3: + optional: true + mysql: + optional: true + mysql2: + optional: true + pg: + optional: true + pg-native: + optional: true + sqlite3: + optional: true + tedious: + optional: true + bin: + knex: bin/cli.js + checksum: 3905f8d27960975f7f57f3f488d1ef3ccf47784acc8eb627e8a28cbbe1f296c6879c8ef0cbd9e17e867be80117d305cd948545f3fbd4c74b24c90d2413bbc021 + languageName: node + linkType: hard + +"knip@npm:^5.27.4": + version: 5.34.2 + resolution: "knip@npm:5.34.2" + dependencies: + "@nodelib/fs.walk": 1.2.8 + "@snyk/github-codeowners": 1.1.0 + easy-table: 1.2.0 + enhanced-resolve: ^5.17.1 + fast-glob: ^3.3.2 + jiti: ^2.3.3 + js-yaml: ^4.1.0 + minimist: ^1.2.8 + picocolors: ^1.0.0 + picomatch: ^4.0.1 + pretty-ms: ^9.0.0 + smol-toml: ^1.3.0 + strip-json-comments: 5.0.1 + summary: 2.1.0 + zod: ^3.22.4 + zod-validation-error: ^3.0.3 + peerDependencies: + "@types/node": ">=18" + typescript: ">=5.0.4" + bin: + knip: bin/knip.js + knip-bun: bin/knip-bun.js + checksum: de25b787ba4742e8e5349dd7a7cedbb216aac07ce718dee6312514cbd743a6ca416a585c79724acc43a66d06bdc1c65e40f673ae1513d7b3b3ed70c38da0f093 languageName: node linkType: hard -"human-signals@npm:^2.1.0": - version: 2.1.0 - resolution: "human-signals@npm:2.1.0" - checksum: b87fd89fce72391625271454e70f67fe405277415b48bcc0117ca73d31fa23a4241787afdc8d67f5a116cf37258c052f59ea82daffa72364d61351423848e3b8 +"koa-compose@npm:^4.1.0": + version: 4.1.0 + resolution: "koa-compose@npm:4.1.0" + checksum: 46cb16792d96425e977c2ae4e5cb04930280740e907242ec9c25e3fb8b4a1d7b54451d7432bc24f40ec62255edea71894d2ceeb8238501842b4e48014f2e83db languageName: node linkType: hard -"humanize-ms@npm:^1.2.1": - version: 1.2.1 - resolution: "humanize-ms@npm:1.2.1" +"koa-convert@npm:^2.0.0": + version: 2.0.0 + resolution: "koa-convert@npm:2.0.0" dependencies: - ms: ^2.0.0 - checksum: 9c7a74a2827f9294c009266c82031030eae811ca87b0da3dceb8d6071b9bde22c9f3daef0469c3c533cc67a97d8a167cd9fc0389350e5f415f61a79b171ded16 - languageName: node - linkType: hard - -"hyperdyperid@npm:^1.2.0": - version: 1.2.0 - resolution: "hyperdyperid@npm:1.2.0" - checksum: 210029d1c86926f09109f6317d143f8b056fc38e8dd11b0c3e3205fc6c6ff8429fb55b4b9c2bce065462719ed9d34366eced387aaa0035d93eb76b306a8547ef + co: ^4.6.0 + koa-compose: ^4.1.0 + checksum: 7385b3391995f59c1312142e110d5dff677f9850dbfbcf387cd36a7b0af03b5d26e82b811eb9bb008b4f3e661cdab1f8817596e46b1929da2cf6e97a2f7456ed languageName: node linkType: hard -"iconv-lite@npm:0.4.24, iconv-lite@npm:^0.4.24": - version: 0.4.24 - resolution: "iconv-lite@npm:0.4.24" +"koa@npm:2.15.3": + version: 2.15.3 + resolution: "koa@npm:2.15.3" dependencies: - safer-buffer: ">= 2.1.2 < 3" - checksum: bd9f120f5a5b306f0bc0b9ae1edeb1577161503f5f8252a20f1a9e56ef8775c9959fd01c55f2d3a39d9a8abaf3e30c1abeb1895f367dcbbe0a8fd1c9ca01c4f6 + accepts: ^1.3.5 + cache-content-type: ^1.0.0 + content-disposition: ~0.5.2 + content-type: ^1.0.4 + cookies: ~0.9.0 + debug: ^4.3.2 + delegates: ^1.0.0 + depd: ^2.0.0 + destroy: ^1.0.4 + encodeurl: ^1.0.2 + escape-html: ^1.0.3 + fresh: ~0.5.2 + http-assert: ^1.3.0 + http-errors: ^1.6.3 + is-generator-function: ^1.0.7 + koa-compose: ^4.1.0 + koa-convert: ^2.0.0 + on-finished: ^2.3.0 + only: ~0.0.2 + parseurl: ^1.3.2 + statuses: ^1.5.0 + type-is: ^1.6.16 + vary: ^1.1.2 + checksum: 7c3537443b1a588cf5c3e5554b914ff2bad510323d22b41861d5e0c97d47e9c5997965f303ede8be8bd83d309a4eea1f82cd45d35d6838bc21bb1bb6a90d5d25 languageName: node linkType: hard -"iconv-lite@npm:0.6.3, iconv-lite@npm:^0.6.2, iconv-lite@npm:^0.6.3": - version: 0.6.3 - resolution: "iconv-lite@npm:0.6.3" +"kubernetes-models@npm:^4.1.0, kubernetes-models@npm:^4.3.1": + version: 4.4.2 + resolution: "kubernetes-models@npm:4.4.2" dependencies: - safer-buffer: ">= 2.1.2 < 3.0.0" - checksum: 3f60d47a5c8fc3313317edfd29a00a692cc87a19cac0159e2ce711d0ebc9019064108323b5e493625e25594f11c6236647d8e256fbe7a58f4a3b33b89e6d30bf + "@kubernetes-models/apimachinery": ^2.0.2 + "@kubernetes-models/base": ^5.0.1 + "@kubernetes-models/validate": ^4.0.0 + "@swc/helpers": ^0.5.8 + checksum: 7c449f69cdda44b177e02185305489dbf492a264c8d71debac0d051831bef76936ed1ec6669fa2090ceb5a20ab9a82b4698d72cac6447c636fdeb6c1960bba9c languageName: node linkType: hard -"icss-replace-symbols@npm:^1.1.0": - version: 1.1.0 - resolution: "icss-replace-symbols@npm:1.1.0" - checksum: 24575b2c2f7e762bfc6f4beee31be9ba98a01cad521b5aa9954090a5de2b5e1bf67814c17e22f9e51b7d798238db8215a173d6c2b4726ce634ce06b68ece8045 +"kuler@npm:^2.0.0": + version: 2.0.0 + resolution: "kuler@npm:2.0.0" + checksum: 9e10b5a1659f9ed8761d38df3c35effabffbd19fc6107324095238e4ef0ff044392cae9ac64a1c2dda26e532426485342226b93806bd97504b174b0dcf04ed81 languageName: node linkType: hard -"icss-utils@npm:^5.0.0, icss-utils@npm:^5.1.0": - version: 5.1.0 - resolution: "icss-utils@npm:5.1.0" - peerDependencies: - postcss: ^8.1.0 - checksum: 5c324d283552b1269cfc13a503aaaa172a280f914e5b81544f3803bc6f06a3b585fb79f66f7c771a2c052db7982c18bf92d001e3b47282e3abbbb4c4cc488d68 +"language-subtag-registry@npm:^0.3.20": + version: 0.3.23 + resolution: "language-subtag-registry@npm:0.3.23" + checksum: 0b64c1a6c5431c8df648a6d25594ff280613c886f4a1a542d9b864e5472fb93e5c7856b9c41595c38fac31370328fc79fcc521712e89ea6d6866cbb8e0995d81 languageName: node linkType: hard -"identity-obj-proxy@npm:3.0.0": - version: 3.0.0 - resolution: "identity-obj-proxy@npm:3.0.0" +"language-tags@npm:^1.0.9": + version: 1.0.9 + resolution: "language-tags@npm:1.0.9" dependencies: - harmony-reflect: ^1.4.6 - checksum: 97559f8ea2aeaa1a880d279d8c49550dce01148321e00a2102cda5ddf9ce622fa1d7f3efc7bed63458af78889de888fdaebaf31c816312298bb3fdd0ef8aaf2c + language-subtag-registry: ^0.3.20 + checksum: 57c530796dc7179914dee71bc94f3747fd694612480241d0453a063777265dfe3a951037f7acb48f456bf167d6eb419d4c00263745326b3ba1cdcf4657070e78 languageName: node linkType: hard -"ieee754@npm:^1.1.13, ieee754@npm:^1.1.4, ieee754@npm:^1.2.1": - version: 1.2.1 - resolution: "ieee754@npm:1.2.1" - checksum: 5144c0c9815e54ada181d80a0b810221a253562422e7c6c3a60b1901154184f49326ec239d618c416c1c5945a2e197107aee8d986a3dd836b53dffefd99b5e7e +"launch-editor@npm:^2.6.0, launch-editor@npm:^2.6.1": + version: 2.9.1 + resolution: "launch-editor@npm:2.9.1" + dependencies: + picocolors: ^1.0.0 + shell-quote: ^1.8.1 + checksum: bed887085a9729cc2ad050329d92a99f4c69bacccf96d1ed8c84670608a3a128a828ba8e9a8a41101c5aea5aea6f79984658e2fd11f6ba85e32e6e1ed16dbb1c languageName: node linkType: hard -"ignore-walk@npm:^5.0.1": - version: 5.0.1 - resolution: "ignore-walk@npm:5.0.1" - dependencies: - minimatch: ^5.0.1 - checksum: 1a4ef35174653a1aa6faab3d9f8781269166536aee36a04946f6e2b319b2475c1903a75ed42f04219274128242f49d0a10e20c4354ee60d9548e97031451150b +"lazy-ass@npm:1.6.0": + version: 1.6.0 + resolution: "lazy-ass@npm:1.6.0" + checksum: 5a3ebb17915b03452320804466345382a6c25ac782ec4874fecdb2385793896cd459be2f187dc7def8899180c32ee0ab9a1aa7fe52193ac3ff3fe29bb0591729 languageName: node linkType: hard -"ignore@npm:^3.3.10": - version: 3.3.10 - resolution: "ignore@npm:3.3.10" - checksum: 23e8cc776e367b56615ab21b78decf973a35dfca5522b39d9b47643d8168473b0d1f18dd1321a1bab466a12ea11a2411903f3b21644f4d5461ee0711ec8678bd +"lazystream@npm:^1.0.0": + version: 1.0.1 + resolution: "lazystream@npm:1.0.1" + dependencies: + readable-stream: ^2.0.5 + checksum: 822c54c6b87701a6491c70d4fabc4cafcf0f87d6b656af168ee7bb3c45de9128a801cb612e6eeeefc64d298a7524a698dd49b13b0121ae50c2ae305f0dcc5310 languageName: node linkType: hard -"ignore@npm:^5.1.4, ignore@npm:^5.1.8, ignore@npm:^5.2.0, ignore@npm:^5.2.4": - version: 5.3.2 - resolution: "ignore@npm:5.3.2" - checksum: 2acfd32a573260ea522ea0bfeff880af426d68f6831f973129e2ba7363f422923cf53aab62f8369cbf4667c7b25b6f8a3761b34ecdb284ea18e87a5262a865be +"leven@npm:2.1.0": + version: 2.1.0 + resolution: "leven@npm:2.1.0" + checksum: f7b4a01b15c0ee2f92a04c0367ea025d10992b044df6f0d4ee1a845d4a488b343e99799e2f31212d72a2b1dea67124f57c1bb1b4561540df45190e44b5b8b394 languageName: node linkType: hard -"immer@npm:^9.0.6, immer@npm:^9.0.7": - version: 9.0.21 - resolution: "immer@npm:9.0.21" - checksum: 70e3c274165995352f6936695f0ef4723c52c92c92dd0e9afdfe008175af39fa28e76aafb3a2ca9d57d1fb8f796efc4dd1e1cc36f18d33fa5b74f3dfb0375432 +"leven@npm:3.1.0, leven@npm:^3.1.0": + version: 3.1.0 + resolution: "leven@npm:3.1.0" + checksum: 638401d534585261b6003db9d99afd244dfe82d75ddb6db5c0df412842d5ab30b2ef18de471aaec70fe69a46f17b4ae3c7f01d8a4e6580ef7adb9f4273ad1e55 languageName: node linkType: hard -"import-cwd@npm:^3.0.0": - version: 3.0.0 - resolution: "import-cwd@npm:3.0.0" +"levn@npm:^0.4.1": + version: 0.4.1 + resolution: "levn@npm:0.4.1" dependencies: - import-from: ^3.0.0 - checksum: f2c4230e8389605154a390124381f9136811306ae4ba1c8017398c3c6926bc5cf75cf89350372b4938f79792ea373776b4efabd27506440ec301ce34c4e867eb + prelude-ls: ^1.2.1 + type-check: ~0.4.0 + checksum: 12c5021c859bd0f5248561bf139121f0358285ec545ebf48bb3d346820d5c61a4309535c7f387ed7d84361cf821e124ce346c6b7cef8ee09a67c1473b46d0fc4 languageName: node linkType: hard -"import-fresh@npm:^3.1.0, import-fresh@npm:^3.2.1, import-fresh@npm:^3.3.0": - version: 3.3.0 - resolution: "import-fresh@npm:3.3.0" +"levn@npm:~0.3.0": + version: 0.3.0 + resolution: "levn@npm:0.3.0" dependencies: - parent-module: ^1.0.0 - resolve-from: ^4.0.0 - checksum: 2cacfad06e652b1edc50be650f7ec3be08c5e5a6f6d12d035c440a42a8cc028e60a5b99ca08a77ab4d6b1346da7d971915828f33cdab730d3d42f08242d09baa + prelude-ls: ~1.1.2 + type-check: ~0.3.2 + checksum: 0d084a524231a8246bb10fec48cdbb35282099f6954838604f3c7fc66f2e16fa66fd9cc2f3f20a541a113c4dafdf181e822c887c8a319c9195444e6c64ac395e languageName: node linkType: hard -"import-from@npm:^3.0.0": - version: 3.0.0 - resolution: "import-from@npm:3.0.0" +"libsodium-wrappers@npm:^0.7.11": + version: 0.7.15 + resolution: "libsodium-wrappers@npm:0.7.15" dependencies: - resolve-from: ^5.0.0 - checksum: 5040a7400e77e41e2c3bb6b1b123b52a15a284de1ffc03d605879942c00e3a87428499d8d031d554646108a0f77652549411167f6a7788e4fc7027eefccf3356 + libsodium: ^0.7.15 + checksum: 35bd4d4a4ced47ed69b0e1f1772651507a7224285d6487c4c0d9a5ab80e0daf2c225e069474d0cd640fcd4152608b51005fff8f107e12e04545a92e8db45e422 languageName: node linkType: hard -"import-lazy@npm:~4.0.0": - version: 4.0.0 - resolution: "import-lazy@npm:4.0.0" - checksum: 22f5e51702134aef78890156738454f620e5fe7044b204ebc057c614888a1dd6fdf2ede0fdcca44d5c173fd64f65c985f19a51775b06967ef58cc3d26898df07 +"libsodium@npm:^0.7.15": + version: 0.7.15 + resolution: "libsodium@npm:0.7.15" + checksum: c641fee43415c8c516c531303439ab89cd1e72de56e3f9fd9e07f695a2cf0fe8f3095f6015db5e351ae4693a1ba50ac18cb19b3e0d241be0546b82319166abe0 languageName: node linkType: hard -"import-local@npm:^3.0.2": - version: 3.2.0 - resolution: "import-local@npm:3.2.0" +"lie@npm:~3.3.0": + version: 3.3.0 + resolution: "lie@npm:3.3.0" dependencies: - pkg-dir: ^4.2.0 - resolve-cwd: ^3.0.0 - bin: - import-local-fixture: fixtures/cli.js - checksum: 0b0b0b412b2521739fbb85eeed834a3c34de9bc67e670b3d0b86248fc460d990a7b116ad056c084b87a693ef73d1f17268d6a5be626bb43c998a8b1c8a230004 + immediate: ~3.0.5 + checksum: 33102302cf19766f97919a6a98d481e01393288b17a6aa1f030a3542031df42736edde8dab29ffdbf90bebeffc48c761eb1d064dc77592ca3ba3556f9fe6d2a8 languageName: node linkType: hard -"imurmurhash@npm:^0.1.4": - version: 0.1.4 - resolution: "imurmurhash@npm:0.1.4" - checksum: 7cae75c8cd9a50f57dadd77482359f659eaebac0319dd9368bcd1714f55e65badd6929ca58569da2b6494ef13fdd5598cd700b1eba23f8b79c5f19d195a3ecf7 +"lilconfig@npm:^2.0.3, lilconfig@npm:^2.0.5": + version: 2.1.0 + resolution: "lilconfig@npm:2.1.0" + checksum: 8549bb352b8192375fed4a74694cd61ad293904eee33f9d4866c2192865c44c4eb35d10782966242634e0cbc1e91fe62b1247f148dc5514918e3a966da7ea117 languageName: node linkType: hard -"indent-string@npm:^4.0.0": - version: 4.0.0 - resolution: "indent-string@npm:4.0.0" - checksum: 824cfb9929d031dabf059bebfe08cf3137365e112019086ed3dcff6a0a7b698cb80cf67ccccde0e25b9e2d7527aa6cc1fed1ac490c752162496caba3e6699612 +"lines-and-columns@npm:^1.1.6": + version: 1.2.4 + resolution: "lines-and-columns@npm:1.2.4" + checksum: 0c37f9f7fa212b38912b7145e1cd16a5f3cd34d782441c3e6ca653485d326f58b3caccda66efce1c5812bde4961bbde3374fae4b0d11bf1226152337f3894aa5 languageName: node linkType: hard -"infer-owner@npm:^1.0.4": - version: 1.0.4 - resolution: "infer-owner@npm:1.0.4" - checksum: 181e732764e4a0611576466b4b87dac338972b839920b2a8cde43642e4ed6bd54dc1fb0b40874728f2a2df9a1b097b8ff83b56d5f8f8e3927f837fdcb47d8a89 +"linkify-it@npm:^3.0.1": + version: 3.0.3 + resolution: "linkify-it@npm:3.0.3" + dependencies: + uc.micro: ^1.0.1 + checksum: 31367a4bb70c5bbc9703246236b504b0a8e049bcd4e0de4291fa50f0ebdebf235b5eb54db6493cb0b1319357c6eeafc4324c9f4aa34b0b943d9f2e11a1268fbc languageName: node linkType: hard -"inflight@npm:^1.0.4": - version: 1.0.6 - resolution: "inflight@npm:1.0.6" +"linkify-it@npm:^5.0.0": + version: 5.0.0 + resolution: "linkify-it@npm:5.0.0" dependencies: - once: ^1.3.0 - wrappy: 1 - checksum: f4f76aa072ce19fae87ce1ef7d221e709afb59d445e05d47fba710e85470923a75de35bfae47da6de1b18afc3ce83d70facf44cfb0aff89f0a3f45c0a0244dfd + uc.micro: ^2.0.0 + checksum: b0b86cadaf816b64c947a83994ceaad1c15f9fe7e079776ab88699fb71afd7b8fc3fd3d0ae5ebec8c92c1d347be9ba257b8aef338c0ebf81b0d27dcf429a765a languageName: node linkType: hard -"inherits@npm:2, inherits@npm:2.0.4, inherits@npm:^2.0.1, inherits@npm:^2.0.3, inherits@npm:^2.0.4, inherits@npm:~2.0.1, inherits@npm:~2.0.3": - version: 2.0.4 - resolution: "inherits@npm:2.0.4" - checksum: 4a48a733847879d6cf6691860a6b1e3f0f4754176e4d71494c41f3475553768b10f84b5ce1d40fbd0e34e6bfbb864ee35858ad4dd2cf31e02fc4a154b724d7f1 +"linkify-react@npm:4.1.3": + version: 4.1.3 + resolution: "linkify-react@npm:4.1.3" + peerDependencies: + linkifyjs: ^4.0.0 + react: ">= 15.0.0" + checksum: 1c28ab02774d5427fad9f4a5ad1c7b852b83aece983fd143fdb4ec95dedf7edc77da59883aaf6fb1a2c2060e8b5e72fdfad4d704d544fabc2b173a1b1eb6473d languageName: node linkType: hard -"inherits@npm:2.0.3": - version: 2.0.3 - resolution: "inherits@npm:2.0.3" - checksum: 78cb8d7d850d20a5e9a7f3620db31483aa00ad5f722ce03a55b110e5a723539b3716a3b463e2b96ce3fe286f33afc7c131fa2f91407528ba80cea98a7545d4c0 +"linkifyjs@npm:4.1.3": + version: 4.1.3 + resolution: "linkifyjs@npm:4.1.3" + checksum: 023d467499a717a49ebbfa256a80cb2811a3b038ff2593e5be0fb8a4715b0a63bf80c571838e19e120833d5b9874464f3a1448965c8eebbde8c19458b3a6c6e4 languageName: node linkType: hard -"ini@npm:^1.3.2, ini@npm:^1.3.4, ini@npm:^1.3.5, ini@npm:~1.3.0": - version: 1.3.8 - resolution: "ini@npm:1.3.8" - checksum: dfd98b0ca3a4fc1e323e38a6c8eb8936e31a97a918d3b377649ea15bdb15d481207a0dda1021efbd86b464cae29a0d33c1d7dcaf6c5672bee17fa849bc50a1b3 +"loader-runner@npm:^4.2.0": + version: 4.3.0 + resolution: "loader-runner@npm:4.3.0" + checksum: a90e00dee9a16be118ea43fec3192d0b491fe03a32ed48a4132eb61d498f5536a03a1315531c19d284392a8726a4ecad71d82044c28d7f22ef62e029bf761569 languageName: node linkType: hard -"inquirer@npm:8.2.6, inquirer@npm:^8.2.0": - version: 8.2.6 - resolution: "inquirer@npm:8.2.6" +"loader-utils@npm:^1.1.0": + version: 1.4.2 + resolution: "loader-utils@npm:1.4.2" dependencies: - ansi-escapes: ^4.2.1 - chalk: ^4.1.1 - cli-cursor: ^3.1.0 - cli-width: ^3.0.0 - external-editor: ^3.0.3 - figures: ^3.0.0 - lodash: ^4.17.21 - mute-stream: 0.0.8 - ora: ^5.4.1 - run-async: ^2.4.0 - rxjs: ^7.5.5 - string-width: ^4.1.0 - strip-ansi: ^6.0.0 - through: ^2.3.6 - wrap-ansi: ^6.0.1 - checksum: 387ffb0a513559cc7414eb42c57556a60e302f820d6960e89d376d092e257a919961cd485a1b4de693dbb5c0de8bc58320bfd6247dfd827a873aa82a4215a240 + big.js: ^5.2.2 + emojis-list: ^3.0.0 + json5: ^1.0.1 + checksum: eb6fb622efc0ffd1abdf68a2022f9eac62bef8ec599cf8adb75e94d1d338381780be6278534170e99edc03380a6d29bc7eb1563c89ce17c5fed3a0b17f1ad804 + languageName: node + linkType: hard + +"loader-utils@npm:^2.0.0, loader-utils@npm:^2.0.4": + version: 2.0.4 + resolution: "loader-utils@npm:2.0.4" + dependencies: + big.js: ^5.2.2 + emojis-list: ^3.0.0 + json5: ^2.1.2 + checksum: a5281f5fff1eaa310ad5e1164095689443630f3411e927f95031ab4fb83b4a98f388185bb1fe949e8ab8d4247004336a625e9255c22122b815bb9a4c5d8fc3b7 languageName: node linkType: hard -"internal-slot@npm:^1.0.7": - version: 1.0.7 - resolution: "internal-slot@npm:1.0.7" +"loader-utils@npm:^3.2.0": + version: 3.3.1 + resolution: "loader-utils@npm:3.3.1" + checksum: d35808e081635e5bc50228a52ed79f83e2c82bd8f7578818c12b1b4cf0b7f409d72d9b93a683ec36b9eaa93346693d3f3c8380183ba2ff81599b0829d685de39 + languageName: node + linkType: hard + +"locate-path@npm:^2.0.0": + version: 2.0.0 + resolution: "locate-path@npm:2.0.0" dependencies: - es-errors: ^1.3.0 - hasown: ^2.0.0 - side-channel: ^1.0.4 - checksum: cadc5eea5d7d9bc2342e93aae9f31f04c196afebb11bde97448327049f492cd7081e18623ae71388aac9cd237b692ca3a105be9c68ac39c1dec679d7409e33eb + p-locate: ^2.0.0 + path-exists: ^3.0.0 + checksum: 02d581edbbbb0fa292e28d96b7de36b5b62c2fa8b5a7e82638ebb33afa74284acf022d3b1e9ae10e3ffb7658fbc49163fcd5e76e7d1baaa7801c3e05a81da755 languageName: node linkType: hard -"interpret@npm:^2.2.0": - version: 2.2.0 - resolution: "interpret@npm:2.2.0" - checksum: f51efef7cb8d02da16408ffa3504cd6053014c5aeb7bb8c223727e053e4235bf565e45d67028b0c8740d917c603807aa3c27d7bd2f21bf20b6417e2bb3e5fd6e +"locate-path@npm:^3.0.0": + version: 3.0.0 + resolution: "locate-path@npm:3.0.0" + dependencies: + p-locate: ^3.0.0 + path-exists: ^3.0.0 + checksum: 53db3996672f21f8b0bf2a2c645ae2c13ffdae1eeecfcd399a583bce8516c0b88dcb4222ca6efbbbeb6949df7e46860895be2c02e8d3219abd373ace3bfb4e11 languageName: node linkType: hard -"ioredis@npm:^5.4.1": - version: 5.4.1 - resolution: "ioredis@npm:5.4.1" +"locate-path@npm:^5.0.0": + version: 5.0.0 + resolution: "locate-path@npm:5.0.0" dependencies: - "@ioredis/commands": ^1.1.1 - cluster-key-slot: ^1.1.0 - debug: ^4.3.4 - denque: ^2.1.0 - lodash.defaults: ^4.2.0 - lodash.isarguments: ^3.1.0 - redis-errors: ^1.2.0 - redis-parser: ^3.0.0 - standard-as-callback: ^2.1.0 - checksum: 92210294f75800febe7544c27b07e4892480172363b11971aa575be5b68f023bfed4bc858abc9792230c153aa80409047a358f174062c14d17536aa4499fe10b + p-locate: ^4.1.0 + checksum: 83e51725e67517287d73e1ded92b28602e3ae5580b301fe54bfb76c0c723e3f285b19252e375712316774cf52006cb236aed5704692c32db0d5d089b69696e30 languageName: node linkType: hard -"ip-address@npm:^9.0.5": - version: 9.0.5 - resolution: "ip-address@npm:9.0.5" +"locate-path@npm:^6.0.0": + version: 6.0.0 + resolution: "locate-path@npm:6.0.0" dependencies: - jsbn: 1.1.0 - sprintf-js: ^1.1.3 - checksum: aa15f12cfd0ef5e38349744e3654bae649a34c3b10c77a674a167e99925d1549486c5b14730eebce9fea26f6db9d5e42097b00aa4f9f612e68c79121c71652dc + p-locate: ^5.0.0 + checksum: 72eb661788a0368c099a184c59d2fee760b3831c9c1c33955e8a19ae4a21b4116e53fa736dc086cdeb9fce9f7cc508f2f92d2d3aae516f133e16a2bb59a39f5a languageName: node linkType: hard -"ipaddr.js@npm:1.9.1": - version: 1.9.1 - resolution: "ipaddr.js@npm:1.9.1" - checksum: f88d3825981486f5a1942414c8d77dd6674dd71c065adcfa46f578d677edcb99fda25af42675cb59db492fdf427b34a5abfcde3982da11a8fd83a500b41cfe77 +"lodash-es@npm:^4.17.21": + version: 4.17.21 + resolution: "lodash-es@npm:4.17.21" + checksum: 05cbffad6e2adbb331a4e16fbd826e7faee403a1a04873b82b42c0f22090f280839f85b95393f487c1303c8a3d2a010048bf06151a6cbe03eee4d388fb0a12d2 languageName: node linkType: hard -"ipaddr.js@npm:^2.0.1, ipaddr.js@npm:^2.1.0": - version: 2.2.0 - resolution: "ipaddr.js@npm:2.2.0" - checksum: 770ba8451fd9bf78015e8edac0d5abd7a708cbf75f9429ca9147a9d2f3a2d60767cd5de2aab2b1e13ca6e4445bdeff42bf12ef6f151c07a5c6cf8a44328e2859 +"lodash.camelcase@npm:^4.3.0": + version: 4.3.0 + resolution: "lodash.camelcase@npm:4.3.0" + checksum: cb9227612f71b83e42de93eccf1232feeb25e705bdb19ba26c04f91e885bfd3dd5c517c4a97137658190581d3493ea3973072ca010aab7e301046d90740393d1 languageName: node linkType: hard -"is-arguments@npm:^1.0.4": - version: 1.1.1 - resolution: "is-arguments@npm:1.1.1" - dependencies: - call-bind: ^1.0.2 - has-tostringtag: ^1.0.0 - checksum: 7f02700ec2171b691ef3e4d0e3e6c0ba408e8434368504bb593d0d7c891c0dbfda6d19d30808b904a6cb1929bca648c061ba438c39f296c2a8ca083229c49f27 +"lodash.clonedeep@npm:^4.5.0": + version: 4.5.0 + resolution: "lodash.clonedeep@npm:4.5.0" + checksum: 92c46f094b064e876a23c97f57f81fbffd5d760bf2d8a1c61d85db6d1e488c66b0384c943abee4f6af7debf5ad4e4282e74ff83177c9e63d8ff081a4837c3489 languageName: node linkType: hard -"is-array-buffer@npm:^3.0.4": - version: 3.0.4 - resolution: "is-array-buffer@npm:3.0.4" - dependencies: - call-bind: ^1.0.2 - get-intrinsic: ^1.2.1 - checksum: e4e3e6ef0ff2239e75371d221f74bc3c26a03564a22efb39f6bb02609b598917ddeecef4e8c877df2a25888f247a98198959842a5e73236bc7f22cabdf6351a7 +"lodash.clonedeepwith@npm:4.5.0": + version: 4.5.0 + resolution: "lodash.clonedeepwith@npm:4.5.0" + checksum: 9fbf4ebfa04b381df226a2298eba680327bea3d0d5d19c5118de7ae218fd219186e30e9fd0d33b13729f34ffbc83c1cf09cb27aff265ba94cb602b8a2b1e71c9 languageName: node linkType: hard -"is-arrayish@npm:^0.2.1": - version: 0.2.1 - resolution: "is-arrayish@npm:0.2.1" - checksum: eef4417e3c10e60e2c810b6084942b3ead455af16c4509959a27e490e7aee87cfb3f38e01bbde92220b528a0ee1a18d52b787e1458ee86174d8c7f0e58cd488f +"lodash.debounce@npm:^4, lodash.debounce@npm:^4.0.8": + version: 4.0.8 + resolution: "lodash.debounce@npm:4.0.8" + checksum: a3f527d22c548f43ae31c861ada88b2637eb48ac6aa3eb56e82d44917971b8aa96fbb37aa60efea674dc4ee8c42074f90f7b1f772e9db375435f6c83a19b3bc6 languageName: node linkType: hard -"is-arrayish@npm:^0.3.1": - version: 0.3.2 - resolution: "is-arrayish@npm:0.3.2" - checksum: 977e64f54d91c8f169b59afcd80ff19227e9f5c791fa28fa2e5bce355cbaf6c2c356711b734656e80c9dd4a854dd7efcf7894402f1031dfc5de5d620775b4d5f +"lodash.defaults@npm:^4.2.0": + version: 4.2.0 + resolution: "lodash.defaults@npm:4.2.0" + checksum: 84923258235592c8886e29de5491946ff8c2ae5c82a7ac5cddd2e3cb697e6fbdfbbb6efcca015795c86eec2bb953a5a2ee4016e3735a3f02720428a40efbb8f1 languageName: node linkType: hard -"is-async-function@npm:^2.0.0": - version: 2.0.0 - resolution: "is-async-function@npm:2.0.0" - dependencies: - has-tostringtag: ^1.0.0 - checksum: e3471d95e6c014bf37cad8a93f2f4b6aac962178e0a5041e8903147166964fdc1c5c1d2ef87e86d77322c370ca18f2ea004fa7420581fa747bcaf7c223069dbd +"lodash.flattendeep@npm:^4.0.0": + version: 4.4.0 + resolution: "lodash.flattendeep@npm:4.4.0" + checksum: 8521c919acac3d4bcf0aaf040c1ca9cb35d6c617e2d72e9b4d51c9a58b4366622cd6077441a18be626c3f7b28227502b3bf042903d447b056ee7e0b11d45c722 languageName: node linkType: hard -"is-bigint@npm:^1.0.1": - version: 1.0.4 - resolution: "is-bigint@npm:1.0.4" - dependencies: - has-bigints: ^1.0.1 - checksum: c56edfe09b1154f8668e53ebe8252b6f185ee852a50f9b41e8d921cb2bed425652049fbe438723f6cb48a63ca1aa051e948e7e401e093477c99c84eba244f666 +"lodash.get@npm:^4.4.2": + version: 4.4.2 + resolution: "lodash.get@npm:4.4.2" + checksum: e403047ddb03181c9d0e92df9556570e2b67e0f0a930fcbbbd779370972368f5568e914f913e93f3b08f6d492abc71e14d4e9b7a18916c31fa04bd2306efe545 languageName: node linkType: hard -"is-binary-path@npm:~2.1.0": - version: 2.1.0 - resolution: "is-binary-path@npm:2.1.0" - dependencies: - binary-extensions: ^2.0.0 - checksum: 84192eb88cff70d320426f35ecd63c3d6d495da9d805b19bc65b518984b7c0760280e57dbf119b7e9be6b161784a5a673ab2c6abe83abb5198a432232ad5b35c +"lodash.groupby@npm:^4.6.0": + version: 4.6.0 + resolution: "lodash.groupby@npm:4.6.0" + checksum: e2d4d13d12790a1cacab3f5f120b7c072a792224e83b2f403218866d18efde76024b2579996dfebb230a61ce06469332e16639103669a35a605287e19ced6b9b languageName: node linkType: hard -"is-boolean-object@npm:^1.1.0": - version: 1.1.2 - resolution: "is-boolean-object@npm:1.1.2" - dependencies: - call-bind: ^1.0.2 - has-tostringtag: ^1.0.0 - checksum: c03b23dbaacadc18940defb12c1c0e3aaece7553ef58b162a0f6bba0c2a7e1551b59f365b91e00d2dbac0522392d576ef322628cb1d036a0fe51eb466db67222 +"lodash.includes@npm:^4.3.0": + version: 4.3.0 + resolution: "lodash.includes@npm:4.3.0" + checksum: 71092c130515a67ab3bd928f57f6018434797c94def7f46aafa417771e455ce3a4834889f4267b17887d7f75297dfabd96231bf704fd2b8c5096dc4a913568b6 languageName: node linkType: hard -"is-callable@npm:^1.1.3, is-callable@npm:^1.1.4, is-callable@npm:^1.2.7": - version: 1.2.7 - resolution: "is-callable@npm:1.2.7" - checksum: 61fd57d03b0d984e2ed3720fb1c7a897827ea174bd44402878e059542ea8c4aeedee0ea0985998aa5cc2736b2fa6e271c08587addb5b3959ac52cf665173d1ac +"lodash.intersection@npm:^4.4.0": + version: 4.4.0 + resolution: "lodash.intersection@npm:4.4.0" + checksum: 98935dcba1bbb981c3927e3822f6f6f344736c881df4b622e4e40ca4a125490425449e23179f46294a1b4c351de4e9a7bb60207cc6ddd65ecfd45ef727d35123 languageName: node linkType: hard -"is-core-module@npm:^2.13.0, is-core-module@npm:^2.15.1": - version: 2.15.1 - resolution: "is-core-module@npm:2.15.1" - dependencies: - hasown: ^2.0.2 - checksum: df134c168115690724b62018c37b2f5bba0d5745fa16960b329c5a00883a8bea6a5632fdb1e3efcce237c201826ba09f93197b7cd95577ea56b0df335be23633 +"lodash.isarguments@npm:^3.1.0": + version: 3.1.0 + resolution: "lodash.isarguments@npm:3.1.0" + checksum: ae1526f3eb5c61c77944b101b1f655f846ecbedcb9e6b073526eba6890dc0f13f09f72e11ffbf6540b602caee319af9ac363d6cdd6be41f4ee453436f04f13b5 languageName: node linkType: hard -"is-data-view@npm:^1.0.1": - version: 1.0.1 - resolution: "is-data-view@npm:1.0.1" - dependencies: - is-typed-array: ^1.1.13 - checksum: 4ba4562ac2b2ec005fefe48269d6bd0152785458cd253c746154ffb8a8ab506a29d0cfb3b74af87513843776a88e4981ae25c89457bf640a33748eab1a7216b5 +"lodash.isboolean@npm:^3.0.3": + version: 3.0.3 + resolution: "lodash.isboolean@npm:3.0.3" + checksum: b70068b4a8b8837912b54052557b21fc4774174e3512ed3c5b94621e5aff5eb6c68089d0a386b7e801d679cd105d2e35417978a5e99071750aa2ed90bffd0250 languageName: node linkType: hard -"is-date-object@npm:^1.0.1, is-date-object@npm:^1.0.5": - version: 1.0.5 - resolution: "is-date-object@npm:1.0.5" - dependencies: - has-tostringtag: ^1.0.0 - checksum: baa9077cdf15eb7b58c79398604ca57379b2fc4cf9aa7a9b9e295278648f628c9b201400c01c5e0f7afae56507d741185730307cbe7cad3b9f90a77e5ee342fc +"lodash.isequal@npm:^4.5.0": + version: 4.5.0 + resolution: "lodash.isequal@npm:4.5.0" + checksum: da27515dc5230eb1140ba65ff8de3613649620e8656b19a6270afe4866b7bd461d9ba2ac8a48dcc57f7adac4ee80e1de9f965d89d4d81a0ad52bb3eec2609644 languageName: node linkType: hard -"is-directory@npm:^0.3.1": - version: 0.3.1 - resolution: "is-directory@npm:0.3.1" - checksum: dce9a9d3981e38f2ded2a80848734824c50ee8680cd09aa477bef617949715cfc987197a2ca0176c58a9fb192a1a0d69b535c397140d241996a609d5906ae524 +"lodash.isinteger@npm:^4.0.4": + version: 4.0.4 + resolution: "lodash.isinteger@npm:4.0.4" + checksum: 6034821b3fc61a2ffc34e7d5644bb50c5fd8f1c0121c554c21ac271911ee0c0502274852845005f8651d51e199ee2e0cfebfe40aaa49c7fe617f603a8a0b1691 languageName: node linkType: hard -"is-docker@npm:^2.0.0, is-docker@npm:^2.1.1": - version: 2.2.1 - resolution: "is-docker@npm:2.2.1" - bin: - is-docker: cli.js - checksum: 3fef7ddbf0be25958e8991ad941901bf5922ab2753c46980b60b05c1bf9c9c2402d35e6dc32e4380b980ef5e1970a5d9d5e5aa2e02d77727c3b6b5e918474c56 +"lodash.isnumber@npm:^3.0.3": + version: 3.0.3 + resolution: "lodash.isnumber@npm:3.0.3" + checksum: 913784275b565346255e6ae6a6e30b760a0da70abc29f3e1f409081585875105138cda4a429ff02577e1bc0a7ae2a90e0a3079a37f3a04c3d6c5aaa532f4cab2 languageName: node linkType: hard -"is-docker@npm:^3.0.0": - version: 3.0.0 - resolution: "is-docker@npm:3.0.0" - bin: - is-docker: cli.js - checksum: b698118f04feb7eaf3338922bd79cba064ea54a1c3db6ec8c0c8d8ee7613e7e5854d802d3ef646812a8a3ace81182a085dfa0a71cc68b06f3fa794b9783b3c90 +"lodash.isplainobject@npm:^4.0.6": + version: 4.0.6 + resolution: "lodash.isplainobject@npm:4.0.6" + checksum: 29c6351f281e0d9a1d58f1a4c8f4400924b4c79f18dfc4613624d7d54784df07efaff97c1ff2659f3e085ecf4fff493300adc4837553104cef2634110b0d5337 languageName: node linkType: hard -"is-extglob@npm:^2.1.1": - version: 2.1.1 - resolution: "is-extglob@npm:2.1.1" - checksum: df033653d06d0eb567461e58a7a8c9f940bd8c22274b94bf7671ab36df5719791aae15eef6d83bbb5e23283967f2f984b8914559d4449efda578c775c4be6f85 +"lodash.isstring@npm:^4.0.1": + version: 4.0.1 + resolution: "lodash.isstring@npm:4.0.1" + checksum: eaac87ae9636848af08021083d796e2eea3d02e80082ab8a9955309569cb3a463ce97fd281d7dc119e402b2e7d8c54a23914b15d2fc7fff56461511dc8937ba0 languageName: node linkType: hard -"is-finalizationregistry@npm:^1.0.2": - version: 1.0.2 - resolution: "is-finalizationregistry@npm:1.0.2" - dependencies: - call-bind: ^1.0.2 - checksum: 4f243a8e06228cd45bdab8608d2cb7abfc20f6f0189c8ac21ea8d603f1f196eabd531ce0bb8e08cbab047e9845ef2c191a3761c9a17ad5cabf8b35499c4ad35d +"lodash.maxby@npm:^4.6.0": + version: 4.6.0 + resolution: "lodash.maxby@npm:4.6.0" + checksum: 2f508383545bd9450e6509f1e5f3a3f737aac25a54225fe981b1a3c80faacc6d48d047695d799f5a7db80e8fc3c600e4736573cb2e6d0365c8f929bba5e5a1dd languageName: node linkType: hard -"is-fullwidth-code-point@npm:^3.0.0": - version: 3.0.0 - resolution: "is-fullwidth-code-point@npm:3.0.0" - checksum: 44a30c29457c7fb8f00297bce733f0a64cd22eca270f83e58c105e0d015e45c019491a4ab2faef91ab51d4738c670daff901c799f6a700e27f7314029e99e348 +"lodash.memoize@npm:^4.1.2": + version: 4.1.2 + resolution: "lodash.memoize@npm:4.1.2" + checksum: 9ff3942feeccffa4f1fafa88d32f0d24fdc62fd15ded5a74a5f950ff5f0c6f61916157246744c620173dddf38d37095a92327d5fd3861e2063e736a5c207d089 languageName: node linkType: hard -"is-generator-fn@npm:^2.0.0": - version: 2.1.0 - resolution: "is-generator-fn@npm:2.1.0" - checksum: a6ad5492cf9d1746f73b6744e0c43c0020510b59d56ddcb78a91cbc173f09b5e6beff53d75c9c5a29feb618bfef2bf458e025ecf3a57ad2268e2fb2569f56215 +"lodash.merge@npm:^4.6.2": + version: 4.6.2 + resolution: "lodash.merge@npm:4.6.2" + checksum: ad580b4bdbb7ca1f7abf7e1bce63a9a0b98e370cf40194b03380a46b4ed799c9573029599caebc1b14e3f24b111aef72b96674a56cfa105e0f5ac70546cdc005 languageName: node linkType: hard -"is-generator-function@npm:^1.0.10, is-generator-function@npm:^1.0.7": - version: 1.0.10 - resolution: "is-generator-function@npm:1.0.10" - dependencies: - has-tostringtag: ^1.0.0 - checksum: d54644e7dbaccef15ceb1e5d91d680eb5068c9ee9f9eb0a9e04173eb5542c9b51b5ab52c5537f5703e48d5fddfd376817c1ca07a84a407b7115b769d4bdde72b +"lodash.omit@npm:^4.5.0": + version: 4.5.0 + resolution: "lodash.omit@npm:4.5.0" + checksum: 434645e49fe84ab315719bd5a9a3a585a0f624aa4160bc09157dd041a414bcc287c15840365c1379476a3f3eda41fbe838976c3f7bdecbbf4c5478e86c471a30 languageName: node linkType: hard -"is-glob@npm:^4.0.0, is-glob@npm:^4.0.1, is-glob@npm:^4.0.3, is-glob@npm:~4.0.1": - version: 4.0.3 - resolution: "is-glob@npm:4.0.3" - dependencies: - is-extglob: ^2.1.1 - checksum: d381c1319fcb69d341cc6e6c7cd588e17cd94722d9a32dbd60660b993c4fb7d0f19438674e68dfec686d09b7c73139c9166b47597f846af387450224a8101ab4 +"lodash.once@npm:^4.0.0": + version: 4.1.1 + resolution: "lodash.once@npm:4.1.1" + checksum: d768fa9f9b4e1dc6453be99b753906f58990e0c45e7b2ca5a3b40a33111e5d17f6edf2f768786e2716af90a8e78f8f91431ab8435f761fef00f9b0c256f6d245 languageName: node linkType: hard -"is-inside-container@npm:^1.0.0": - version: 1.0.0 - resolution: "is-inside-container@npm:1.0.0" - dependencies: - is-docker: ^3.0.0 - bin: - is-inside-container: cli.js - checksum: c50b75a2ab66ab3e8b92b3bc534e1ea72ca25766832c0623ac22d134116a98bcf012197d1caabe1d1c4bd5f84363d4aa5c36bb4b585fbcaf57be172cd10a1a03 +"lodash.padend@npm:^4.6.1": + version: 4.6.1 + resolution: "lodash.padend@npm:4.6.1" + checksum: c2e6e789debf83b98f5c085305cdcfff1067e7a31bda2a110fd765d3c11a99edfbeef570d9ef737ab3212006bdb8114e77622e518c18c1fce52b8fdfd9dab685 languageName: node linkType: hard -"is-interactive@npm:^1.0.0": - version: 1.0.0 - resolution: "is-interactive@npm:1.0.0" - checksum: 824808776e2d468b2916cdd6c16acacebce060d844c35ca6d82267da692e92c3a16fdba624c50b54a63f38bdc4016055b6f443ce57d7147240de4f8cdabaf6f9 +"lodash.startcase@npm:^4.4.0": + version: 4.4.0 + resolution: "lodash.startcase@npm:4.4.0" + checksum: c03a4a784aca653845fe09d0ef67c902b6e49288dc45f542a4ab345a9c406a6dc194c774423fa313ee7b06283950301c1221dd2a1d8ecb2dac8dfbb9ed5606b5 languageName: node linkType: hard -"is-lambda@npm:^1.0.1": - version: 1.0.1 - resolution: "is-lambda@npm:1.0.1" - checksum: 93a32f01940220532e5948538699ad610d5924ac86093fcee83022252b363eb0cc99ba53ab084a04e4fb62bf7b5731f55496257a4c38adf87af9c4d352c71c35 +"lodash.topath@npm:^4.5.2": + version: 4.5.2 + resolution: "lodash.topath@npm:4.5.2" + checksum: 04583e220f4bb1c4ac0008ff8f46d9cb4ddce0ea1090085790da30a41f4cb1b904d885cb73257fca619fa825cd96f9bb97c67d039635cb76056e18f5e08bfdee languageName: node linkType: hard -"is-map@npm:^2.0.3": - version: 2.0.3 - resolution: "is-map@npm:2.0.3" - checksum: e6ce5f6380f32b141b3153e6ba9074892bbbbd655e92e7ba5ff195239777e767a976dcd4e22f864accaf30e53ebf961ab1995424aef91af68788f0591b7396cc +"lodash.uniq@npm:^4.5.0": + version: 4.5.0 + resolution: "lodash.uniq@npm:4.5.0" + checksum: a4779b57a8d0f3c441af13d9afe7ecff22dd1b8ce1129849f71d9bbc8e8ee4e46dfb4b7c28f7ad3d67481edd6e51126e4e2a6ee276e25906d10f7140187c392d languageName: node linkType: hard -"is-module@npm:^1.0.0": - version: 1.0.0 - resolution: "is-module@npm:1.0.0" - checksum: 8cd5390730c7976fb4e8546dd0b38865ee6f7bacfa08dfbb2cc07219606755f0b01709d9361e01f13009bbbd8099fa2927a8ed665118a6105d66e40f1b838c3f +"lodash@npm:4.17.21, lodash@npm:^4.15.0, lodash@npm:^4.16.4, lodash@npm:^4.17.14, lodash@npm:^4.17.15, lodash@npm:^4.17.19, lodash@npm:^4.17.20, lodash@npm:^4.17.21, lodash@npm:^4.17.4, lodash@npm:^4.7.0, lodash@npm:~4.17.15, lodash@npm:~4.17.21": + version: 4.17.21 + resolution: "lodash@npm:4.17.21" + checksum: eb835a2e51d381e561e508ce932ea50a8e5a68f4ebdd771ea240d3048244a8d13658acbd502cd4829768c56f2e16bdd4340b9ea141297d472517b83868e677f7 languageName: node linkType: hard -"is-native-module@npm:^1.1.3": - version: 1.1.3 - resolution: "is-native-module@npm:1.1.3" - bin: - is-native-module: bin.js - checksum: cd118b670247bd1dbb45c35ad35c2f702b80071d0331565f975d61efd71b2a028cc4fb764c99b5883d508fcc172099e466373ffbd12a3b9880b1b5ba7e62c907 +"log-symbols@npm:^4.1.0": + version: 4.1.0 + resolution: "log-symbols@npm:4.1.0" + dependencies: + chalk: ^4.1.0 + is-unicode-supported: ^0.1.0 + checksum: fce1497b3135a0198803f9f07464165e9eb83ed02ceb2273930a6f8a508951178d8cf4f0378e9d28300a2ed2bc49050995d2bd5f53ab716bb15ac84d58c6ef74 languageName: node linkType: hard -"is-negative-zero@npm:^2.0.3": - version: 2.0.3 - resolution: "is-negative-zero@npm:2.0.3" - checksum: c1e6b23d2070c0539d7b36022d5a94407132411d01aba39ec549af824231f3804b1aea90b5e4e58e807a65d23ceb538ed6e355ce76b267bdd86edb757ffcbdcd +"log4js@npm:6.9.1": + version: 6.9.1 + resolution: "log4js@npm:6.9.1" + dependencies: + date-format: ^4.0.14 + debug: ^4.3.4 + flatted: ^3.2.7 + rfdc: ^1.3.0 + streamroller: ^3.1.5 + checksum: 59d98c37d4163138dab5d9b06ae26965d1353106fece143973d57b1003b3a482791aa21374fd2cca81a953b8837b2f9756ac225404e60cbfa4dd3ab59f082e2e languageName: node linkType: hard -"is-network-error@npm:^1.0.0": - version: 1.1.0 - resolution: "is-network-error@npm:1.1.0" - checksum: b2fe6aac07f814a9de275efd05934c832c129e7ba292d27614e9e8eec9e043b7a0bbeaeca5d0916b0f462edbec2aa2eaee974ee0a12ac095040e9515c222c251 +"logform@npm:^2.3.2, logform@npm:^2.6.0, logform@npm:^2.6.1": + version: 2.6.1 + resolution: "logform@npm:2.6.1" + dependencies: + "@colors/colors": 1.6.0 + "@types/triple-beam": ^1.3.2 + fecha: ^4.2.0 + ms: ^2.1.1 + safe-stable-stringify: ^2.3.1 + triple-beam: ^1.3.0 + checksum: 0c6b95fa8350ccc33c7c33d77de2a9920205399706fc1b125151c857b61eb90873f4670d9e0e58e58c165b68a363206ae670d6da8b714527c838da3c84449605 languageName: node linkType: hard -"is-node-process@npm:^1.2.0": - version: 1.2.0 - resolution: "is-node-process@npm:1.2.0" - checksum: 930765cdc6d81ab8f1bbecbea4a8d35c7c6d88a3ff61f3630e0fc7f22d624d7661c1df05c58547d0eb6a639dfa9304682c8e342c4113a6ed51472b704cee2928 +"long-timeout@npm:0.1.1": + version: 0.1.1 + resolution: "long-timeout@npm:0.1.1" + checksum: 48668e5362cb74c4b77a6b833d59f149b9bb9e99c5a5097609807e2597cd0920613b2a42b89bd0870848298be3691064d95599a04ae010023d07dba39932afa7 languageName: node linkType: hard -"is-number-object@npm:^1.0.4": - version: 1.0.7 - resolution: "is-number-object@npm:1.0.7" - dependencies: - has-tostringtag: ^1.0.0 - checksum: d1e8d01bb0a7134c74649c4e62da0c6118a0bfc6771ea3c560914d52a627873e6920dd0fd0ebc0e12ad2ff4687eac4c308f7e80320b973b2c8a2c8f97a7524f7 +"long@npm:^5.0.0, long@npm:^5.2.1": + version: 5.2.3 + resolution: "long@npm:5.2.3" + checksum: 885ede7c3de4facccbd2cacc6168bae3a02c3e836159ea4252c87b6e34d40af819824b2d4edce330bfb5c4d6e8ce3ec5864bdcf9473fa1f53a4f8225860e5897 languageName: node linkType: hard -"is-number@npm:^7.0.0": - version: 7.0.0 - resolution: "is-number@npm:7.0.0" - checksum: 456ac6f8e0f3111ed34668a624e45315201dff921e5ac181f8ec24923b99e9f32ca1a194912dc79d539c97d33dba17dc635202ff0b2cf98326f608323276d27a +"longest-streak@npm:^3.0.0": + version: 3.1.0 + resolution: "longest-streak@npm:3.1.0" + checksum: d7f952ed004cbdb5c8bcfc4f7f5c3d65449e6c5a9e9be4505a656e3df5a57ee125f284286b4bf8ecea0c21a7b3bf2b8f9001ad506c319b9815ad6a63a47d0fd0 languageName: node linkType: hard -"is-path-inside@npm:^3.0.3": - version: 3.0.3 - resolution: "is-path-inside@npm:3.0.3" - checksum: abd50f06186a052b349c15e55b182326f1936c89a78bf6c8f2b707412517c097ce04bc49a0ca221787bc44e1049f51f09a2ffb63d22899051988d3a618ba13e9 +"loose-envify@npm:^1.0.0, loose-envify@npm:^1.1.0, loose-envify@npm:^1.4.0": + version: 1.4.0 + resolution: "loose-envify@npm:1.4.0" + dependencies: + js-tokens: ^3.0.0 || ^4.0.0 + bin: + loose-envify: cli.js + checksum: 6517e24e0cad87ec9888f500c5b5947032cdfe6ef65e1c1936a0c48a524b81e65542c9c3edc91c97d5bddc806ee2a985dbc79be89215d613b1de5db6d1cfe6f4 languageName: node linkType: hard -"is-plain-obj@npm:^3.0.0": - version: 3.0.0 - resolution: "is-plain-obj@npm:3.0.0" - checksum: a6ebdf8e12ab73f33530641972a72a4b8aed6df04f762070d823808303e4f76d87d5ea5bd76f96a7bbe83d93f04ac7764429c29413bd9049853a69cb630fb21c +"lower-case@npm:^2.0.2": + version: 2.0.2 + resolution: "lower-case@npm:2.0.2" + dependencies: + tslib: ^2.0.3 + checksum: 83a0a5f159ad7614bee8bf976b96275f3954335a84fad2696927f609ddae902802c4f3312d86668722e668bef41400254807e1d3a7f2e8c3eede79691aa1f010 languageName: node linkType: hard -"is-plain-object@npm:^5.0.0": - version: 5.0.0 - resolution: "is-plain-object@npm:5.0.0" - checksum: e32d27061eef62c0847d303125440a38660517e586f2f3db7c9d179ae5b6674ab0f469d519b2e25c147a1a3bc87156d0d5f4d8821e0ce4a9ee7fe1fcf11ce45c +"lowlight@npm:^1.17.0": + version: 1.20.0 + resolution: "lowlight@npm:1.20.0" + dependencies: + fault: ^1.0.0 + highlight.js: ~10.7.0 + checksum: 14a1815d6bae202ddee313fc60f06d46e5235c02fa483a77950b401d85b4c1e12290145ccd17a716b07f9328bd5864aa2d402b6a819ff3be7c833d9748ff8ba7 languageName: node linkType: hard -"is-potential-custom-element-name@npm:^1.0.1": - version: 1.0.1 - resolution: "is-potential-custom-element-name@npm:1.0.1" - checksum: ced7bbbb6433a5b684af581872afe0e1767e2d1146b2207ca0068a648fb5cab9d898495d1ac0583524faaf24ca98176a7d9876363097c2d14fee6dd324f3a1ab +"lru-cache@npm:@wolfy1339/lru-cache@^11.0.2-patch.1": + version: 11.0.2-patch.1 + resolution: "@wolfy1339/lru-cache@npm:11.0.2-patch.1" + checksum: 60cc2839abbae0fa50152fde143da5ac1141773cefb3505602956074dfa358ec87e107987cad7fd2292768663855497160a2c1e449d7f4e8b4684fb08f89dc25 languageName: node linkType: hard -"is-promise@npm:^4.0.0": - version: 4.0.0 - resolution: "is-promise@npm:4.0.0" - checksum: 0b46517ad47b00b6358fd6553c83ec1f6ba9acd7ffb3d30a0bf519c5c69e7147c132430452351b8a9fc198f8dd6c4f76f8e6f5a7f100f8c77d57d9e0f4261a8a +"lru-cache@npm:^10.0.1, lru-cache@npm:^10.2.0": + version: 10.4.3 + resolution: "lru-cache@npm:10.4.3" + checksum: 6476138d2125387a6d20f100608c2583d415a4f64a0fecf30c9e2dda976614f09cad4baa0842447bd37dd459a7bd27f57d9d8f8ce558805abd487c583f3d774a languageName: node linkType: hard -"is-property@npm:^1.0.2": - version: 1.0.2 - resolution: "is-property@npm:1.0.2" - checksum: 33b661a3690bcc88f7e47bb0a21b9e3187e76a317541ea7ec5e8096d954f441b77a46d8930c785f7fbf4ef8dfd624c25495221e026e50f74c9048fe501773be5 +"lru-cache@npm:^4.0.1": + version: 4.1.5 + resolution: "lru-cache@npm:4.1.5" + dependencies: + pseudomap: ^1.0.2 + yallist: ^2.1.2 + checksum: 4bb4b58a36cd7dc4dcec74cbe6a8f766a38b7426f1ff59d4cf7d82a2aa9b9565cd1cb98f6ff60ce5cd174524868d7bc9b7b1c294371851356066ca9ac4cf135a languageName: node linkType: hard -"is-reference@npm:1.2.1": - version: 1.2.1 - resolution: "is-reference@npm:1.2.1" +"lru-cache@npm:^5.1.1": + version: 5.1.1 + resolution: "lru-cache@npm:5.1.1" dependencies: - "@types/estree": "*" - checksum: e7b48149f8abda2c10849ea51965904d6a714193d68942ad74e30522231045acf06cbfae5a4be2702fede5d232e61bf50b3183acdc056e6e3afe07fcf4f4b2bc + yallist: ^3.0.2 + checksum: c154ae1cbb0c2206d1501a0e94df349653c92c8cbb25236d7e85190bcaf4567a03ac6eb43166fabfa36fd35623694da7233e88d9601fbf411a9a481d85dbd2cb languageName: node linkType: hard -"is-regex@npm:^1.1.4": - version: 1.1.4 - resolution: "is-regex@npm:1.1.4" +"lru-cache@npm:^6.0.0": + version: 6.0.0 + resolution: "lru-cache@npm:6.0.0" dependencies: - call-bind: ^1.0.2 - has-tostringtag: ^1.0.0 - checksum: 362399b33535bc8f386d96c45c9feb04cf7f8b41c182f54174c1a45c9abbbe5e31290bbad09a458583ff6bf3b2048672cdb1881b13289569a7c548370856a652 + yallist: ^4.0.0 + checksum: f97f499f898f23e4585742138a22f22526254fdba6d75d41a1c2526b3b6cc5747ef59c5612ba7375f42aca4f8461950e925ba08c991ead0651b4918b7c978297 languageName: node linkType: hard -"is-root@npm:^2.1.0": - version: 2.1.0 - resolution: "is-root@npm:2.1.0" - checksum: 37eea0822a2a9123feb58a9d101558ba276771a6d830f87005683349a9acff15958a9ca590a44e778c6b335660b83e85c744789080d734f6081a935a4880aee2 +"lru-cache@npm:^7.14.0, lru-cache@npm:^7.14.1, lru-cache@npm:^7.7.1": + version: 7.18.3 + resolution: "lru-cache@npm:7.18.3" + checksum: e550d772384709deea3f141af34b6d4fa392e2e418c1498c078de0ee63670f1f46f5eee746e8ef7e69e1c895af0d4224e62ee33e66a543a14763b0f2e74c1356 languageName: node linkType: hard -"is-set@npm:^2.0.3": - version: 2.0.3 - resolution: "is-set@npm:2.0.3" - checksum: 36e3f8c44bdbe9496c9689762cc4110f6a6a12b767c5d74c0398176aa2678d4467e3bf07595556f2dba897751bde1422480212b97d973c7b08a343100b0c0dfe +"lru-cache@npm:^9.0.0": + version: 9.1.2 + resolution: "lru-cache@npm:9.1.2" + checksum: d3415634be3908909081fc4c56371a8d562d9081eba70543d86871b978702fffd0e9e362b83921b27a29ae2b37b90f55675aad770a54ac83bb3e4de5049d4b15 languageName: node linkType: hard -"is-shared-array-buffer@npm:^1.0.2, is-shared-array-buffer@npm:^1.0.3": - version: 1.0.3 - resolution: "is-shared-array-buffer@npm:1.0.3" - dependencies: - call-bind: ^1.0.7 - checksum: a4fff602c309e64ccaa83b859255a43bb011145a42d3f56f67d9268b55bc7e6d98a5981a1d834186ad3105d6739d21547083fe7259c76c0468483fc538e716d8 +"lru.min@npm:^1.0.0": + version: 1.1.1 + resolution: "lru.min@npm:1.1.1" + checksum: 26ec06c656220a240427f29c3528871b9cfb3214bd5d1bf4c5f2b2cb69402f7558c560e30055fc09bd61e4bf651c1eda2f9b1ab1b16336616fca381b7d42ecba languageName: node linkType: hard -"is-ssh@npm:^1.4.0": - version: 1.4.0 - resolution: "is-ssh@npm:1.4.0" - dependencies: - protocols: ^2.0.1 - checksum: 75eaa17b538bee24b661fbeb0f140226ac77e904a6039f787bea418431e2162f1f9c4c4ccad3bd169e036cd701cc631406e8c505d9fa7e20164e74b47f86f40f +"lunr@npm:^2.3.9": + version: 2.3.9 + resolution: "lunr@npm:2.3.9" + checksum: 176719e24fcce7d3cf1baccce9dd5633cd8bdc1f41ebe6a180112e5ee99d80373fe2454f5d4624d437e5a8319698ca6837b9950566e15d2cae5f2a543a3db4b8 languageName: node linkType: hard -"is-stream@npm:^2.0.0, is-stream@npm:^2.0.1": - version: 2.0.1 - resolution: "is-stream@npm:2.0.1" - checksum: b8e05ccdf96ac330ea83c12450304d4a591f9958c11fd17bed240af8d5ffe08aedafa4c0f4cfccd4d28dc9d4d129daca1023633d5c11601a6cbc77521f6fae66 +"luxon@npm:^3.0.0, luxon@npm:^3.2.1, luxon@npm:~3.5.0": + version: 3.5.0 + resolution: "luxon@npm:3.5.0" + checksum: f290fe5788c8e51e748744f05092160d4be12150dca70f9fadc0d233e53d60ce86acd82e7d909a114730a136a77e56f0d3ebac6141bbb82fd310969a4704825b languageName: node linkType: hard -"is-string@npm:^1.0.5, is-string@npm:^1.0.7": - version: 1.0.7 - resolution: "is-string@npm:1.0.7" - dependencies: - has-tostringtag: ^1.0.0 - checksum: 323b3d04622f78d45077cf89aab783b2f49d24dc641aa89b5ad1a72114cfeff2585efc8c12ef42466dff32bde93d839ad321b26884cf75e5a7892a938b089989 +"lz-string@npm:^1.5.0": + version: 1.5.0 + resolution: "lz-string@npm:1.5.0" + bin: + lz-string: bin/bin.js + checksum: 1ee98b4580246fd90dd54da6e346fb1caefcf05f677c686d9af237a157fdea3fd7c83a4bc58f858cd5b10a34d27afe0fdcbd0505a47e0590726a873dc8b8f65d languageName: node linkType: hard -"is-subdir@npm:^1.1.1": - version: 1.2.0 - resolution: "is-subdir@npm:1.2.0" +"magic-string@npm:^0.26.6": + version: 0.26.7 + resolution: "magic-string@npm:0.26.7" dependencies: - better-path-resolve: 1.0.0 - checksum: 31029a383972bff4cc4f1bd1463fd04dde017e0a04ae3a6f6e08124a90c6c4656312d593101b0f38805fa3f3c8f6bc4583524bbf72c50784fa5ca0d3e5a76279 + sourcemap-codec: ^1.4.8 + checksum: 89b0d60cbb32bbf3d1e23c46ea93db082d18a8230b972027aecb10a40bba51be519ecce0674f995571e3affe917b76b09f59d8dbc9a1b2c9c4102a2b6e8a2b01 languageName: node linkType: hard -"is-symbol@npm:^1.0.2, is-symbol@npm:^1.0.3": - version: 1.0.4 - resolution: "is-symbol@npm:1.0.4" +"magic-string@npm:^0.30.10, magic-string@npm:^0.30.3": + version: 0.30.12 + resolution: "magic-string@npm:0.30.12" dependencies: - has-symbols: ^1.0.2 - checksum: 92805812ef590738d9de49d677cd17dfd486794773fb6fa0032d16452af46e9b91bb43ffe82c983570f015b37136f4b53b28b8523bfb10b0ece7a66c31a54510 + "@jridgewell/sourcemap-codec": ^1.5.0 + checksum: 3f0d23b74371765f0e6cad4284eebba0ac029c7a55e39292de5aa92281afb827138cb2323d24d2924f6b31f138c3783596c5ccaa98653fe9cf122e1f81325b59 languageName: node linkType: hard -"is-typed-array@npm:^1.1.13, is-typed-array@npm:^1.1.3": - version: 1.1.13 - resolution: "is-typed-array@npm:1.1.13" +"make-dir@npm:^3.1.0": + version: 3.1.0 + resolution: "make-dir@npm:3.1.0" dependencies: - which-typed-array: ^1.1.14 - checksum: 150f9ada183a61554c91e1c4290086d2c100b0dff45f60b028519be72a8db964da403c48760723bf5253979b8dffe7b544246e0e5351dcd05c5fdb1dcc1dc0f0 + semver: ^6.0.0 + checksum: 484200020ab5a1fdf12f393fe5f385fc8e4378824c940fba1729dcd198ae4ff24867bc7a5646331e50cead8abff5d9270c456314386e629acec6dff4b8016b78 languageName: node linkType: hard -"is-typedarray@npm:~1.0.0": - version: 1.0.0 - resolution: "is-typedarray@npm:1.0.0" - checksum: 3508c6cd0a9ee2e0df2fa2e9baabcdc89e911c7bd5cf64604586697212feec525aa21050e48affb5ffc3df20f0f5d2e2cf79b08caa64e1ccc9578e251763aef7 +"make-dir@npm:^4.0.0": + version: 4.0.0 + resolution: "make-dir@npm:4.0.0" + dependencies: + semver: ^7.5.3 + checksum: bf0731a2dd3aab4db6f3de1585cea0b746bb73eb5a02e3d8d72757e376e64e6ada190b1eddcde5b2f24a81b688a9897efd5018737d05e02e2a671dda9cff8a8a languageName: node linkType: hard -"is-unicode-supported@npm:^0.1.0": - version: 0.1.0 - resolution: "is-unicode-supported@npm:0.1.0" - checksum: a2aab86ee7712f5c2f999180daaba5f361bdad1efadc9610ff5b8ab5495b86e4f627839d085c6530363c6d6d4ecbde340fb8e54bdb83da4ba8e0865ed5513c52 +"make-error@npm:^1.1.1": + version: 1.3.6 + resolution: "make-error@npm:1.3.6" + checksum: b86e5e0e25f7f777b77fabd8e2cbf15737972869d852a22b7e73c17623928fccb826d8e46b9951501d3f20e51ad74ba8c59ed584f610526a48f8ccf88aaec402 languageName: node linkType: hard -"is-url@npm:^1.2.4": - version: 1.2.4 - resolution: "is-url@npm:1.2.4" - checksum: 100e74b3b1feab87a43ef7653736e88d997eb7bd32e71fd3ebc413e58c1cbe56269699c776aaea84244b0567f2a7d68dfaa512a062293ed2f9fdecb394148432 +"make-fetch-happen@npm:^10.0.3": + version: 10.2.1 + resolution: "make-fetch-happen@npm:10.2.1" + dependencies: + agentkeepalive: ^4.2.1 + cacache: ^16.1.0 + http-cache-semantics: ^4.1.0 + http-proxy-agent: ^5.0.0 + https-proxy-agent: ^5.0.0 + is-lambda: ^1.0.1 + lru-cache: ^7.7.1 + minipass: ^3.1.6 + minipass-collect: ^1.0.2 + minipass-fetch: ^2.0.3 + minipass-flush: ^1.0.5 + minipass-pipeline: ^1.2.4 + negotiator: ^0.6.3 + promise-retry: ^2.0.1 + socks-proxy-agent: ^7.0.0 + ssri: ^9.0.0 + checksum: 2332eb9a8ec96f1ffeeea56ccefabcb4193693597b132cd110734d50f2928842e22b84cfa1508e921b8385cdfd06dda9ad68645fed62b50fff629a580f5fb72c languageName: node linkType: hard -"is-weakmap@npm:^2.0.2": - version: 2.0.2 - resolution: "is-weakmap@npm:2.0.2" - checksum: f36aef758b46990e0d3c37269619c0a08c5b29428c0bb11ecba7f75203442d6c7801239c2f31314bc79199217ef08263787f3837d9e22610ad1da62970d6616d +"make-fetch-happen@npm:^13.0.0": + version: 13.0.1 + resolution: "make-fetch-happen@npm:13.0.1" + dependencies: + "@npmcli/agent": ^2.0.0 + cacache: ^18.0.0 + http-cache-semantics: ^4.1.1 + is-lambda: ^1.0.1 + minipass: ^7.0.2 + minipass-fetch: ^3.0.0 + minipass-flush: ^1.0.5 + minipass-pipeline: ^1.2.4 + negotiator: ^0.6.3 + proc-log: ^4.2.0 + promise-retry: ^2.0.1 + ssri: ^10.0.0 + checksum: 5c9fad695579b79488fa100da05777213dd9365222f85e4757630f8dd2a21a79ddd3206c78cfd6f9b37346819681782b67900ac847a57cf04190f52dda5343fd languageName: node linkType: hard -"is-weakref@npm:^1.0.2": - version: 1.0.2 - resolution: "is-weakref@npm:1.0.2" +"makeerror@npm:1.0.12": + version: 1.0.12 + resolution: "makeerror@npm:1.0.12" dependencies: - call-bind: ^1.0.2 - checksum: 95bd9a57cdcb58c63b1c401c60a474b0f45b94719c30f548c891860f051bc2231575c290a6b420c6bc6e7ed99459d424c652bd5bf9a1d5259505dc35b4bf83de + tmpl: 1.0.5 + checksum: b38a025a12c8146d6eeea5a7f2bf27d51d8ad6064da8ca9405fcf7bf9b54acd43e3b30ddd7abb9b1bfa4ddb266019133313482570ddb207de568f71ecfcf6060 languageName: node linkType: hard -"is-weakset@npm:^2.0.3": - version: 2.0.3 - resolution: "is-weakset@npm:2.0.3" +"map-age-cleaner@npm:^0.2.0": + version: 0.2.0 + resolution: "map-age-cleaner@npm:0.2.0" dependencies: - call-bind: ^1.0.7 - get-intrinsic: ^1.2.4 - checksum: 8b6a20ee9f844613ff8f10962cfee49d981d584525f2357fee0a04dfbcde9fd607ed60cb6dab626dbcc470018ae6392e1ff74c0c1aced2d487271411ad9d85ae + p-defer: ^1.0.0 + checksum: 13a6810b76b0067efa7f4b0f3dc58b58b4a4b5faa4cae5a0e8d5d59eda04d7074724eee426c9b5890a1d7e14d1e2902a090587acc8e2430198e79ab1556a2dad languageName: node linkType: hard -"is-windows@npm:^1.0.0, is-windows@npm:^1.0.1": - version: 1.0.2 - resolution: "is-windows@npm:1.0.2" - checksum: 438b7e52656fe3b9b293b180defb4e448088e7023a523ec21a91a80b9ff8cdb3377ddb5b6e60f7c7de4fa8b63ab56e121b6705fe081b3cf1b828b0a380009ad7 +"map-stream@npm:~0.1.0": + version: 0.1.0 + resolution: "map-stream@npm:0.1.0" + checksum: 38abbe4eb883888031e6b2fc0630bc583c99396be16b8ace5794b937b682a8a081f03e8b15bfd4914d1bc88318f0e9ac73ba3512ae65955cd449f63256ddb31d languageName: node linkType: hard -"is-wsl@npm:^2.2.0": - version: 2.2.0 - resolution: "is-wsl@npm:2.2.0" - dependencies: - is-docker: ^2.0.0 - checksum: 20849846ae414997d290b75e16868e5261e86ff5047f104027026fd61d8b5a9b0b3ade16239f35e1a067b3c7cc02f70183cb661010ed16f4b6c7c93dad1b19d8 +"markdown-escape@npm:^2.0.0": + version: 2.0.0 + resolution: "markdown-escape@npm:2.0.0" + checksum: 74c66d817636ac5f6a275fdc79ecb1e208d907ca85289d660b515256fbc3e380eb18d29b6bbbd6a77968ee4fb5872d40ecf31e52bc9f17855bb01bb723569fa0 languageName: node linkType: hard -"is-wsl@npm:^3.1.0": - version: 3.1.0 - resolution: "is-wsl@npm:3.1.0" +"markdown-it@npm:^12.2.0": + version: 12.3.2 + resolution: "markdown-it@npm:12.3.2" dependencies: - is-inside-container: ^1.0.0 - checksum: f9734c81f2f9cf9877c5db8356bfe1ff61680f1f4c1011e91278a9c0564b395ae796addb4bf33956871041476ec82c3e5260ed57b22ac91794d4ae70a1d2f0a9 + argparse: ^2.0.1 + entities: ~2.1.0 + linkify-it: ^3.0.1 + mdurl: ^1.0.1 + uc.micro: ^1.0.5 + bin: + markdown-it: bin/markdown-it.js + checksum: 890555711c1c00fa03b936ca2b213001a3b9b37dea140d8445ae4130ce16628392aad24b12e2a0a9935336ca5951f2957a38f4e5309a2e38eab44e25ff32a41e languageName: node linkType: hard -"isarray@npm:^1.0.0, isarray@npm:~1.0.0": - version: 1.0.0 - resolution: "isarray@npm:1.0.0" - checksum: f032df8e02dce8ec565cf2eb605ea939bdccea528dbcf565cdf92bfa2da9110461159d86a537388ef1acef8815a330642d7885b29010e8f7eac967c9993b65ab +"markdown-it@npm:^14.1.0": + version: 14.1.0 + resolution: "markdown-it@npm:14.1.0" + dependencies: + argparse: ^2.0.1 + entities: ^4.4.0 + linkify-it: ^5.0.0 + mdurl: ^2.0.0 + punycode.js: ^2.3.1 + uc.micro: ^2.1.0 + bin: + markdown-it: bin/markdown-it.mjs + checksum: 07296b45ebd0b13a55611a24d1b1ad002c6729ec54f558f597846994b0b7b1de79d13cd99ff3e7b6e9e027f36b63125cdcf69174da294ecabdd4e6b9fff39e5d languageName: node linkType: hard -"isarray@npm:^2.0.5": - version: 2.0.5 - resolution: "isarray@npm:2.0.5" - checksum: bd5bbe4104438c4196ba58a54650116007fa0262eccef13a4c55b2e09a5b36b59f1e75b9fcc49883dd9d4953892e6fc007eef9e9155648ceea036e184b0f930a +"markdown-table@npm:^3.0.0": + version: 3.0.4 + resolution: "markdown-table@npm:3.0.4" + checksum: bc24b177cbb3ef170cb38c9f191476aa63f7236ebc8980317c5e91b5bf98c8fb471cf46d8920478c5e770d7f4337326f6b5b3efbf0687c2044fd332d7a64dfcb languageName: node linkType: hard -"isexe@npm:^2.0.0": - version: 2.0.0 - resolution: "isexe@npm:2.0.0" - checksum: 26bf6c5480dda5161c820c5b5c751ae1e766c587b1f951ea3fcfc973bafb7831ae5b54a31a69bd670220e42e99ec154475025a468eae58ea262f813fdc8d1c62 +"markdown-to-jsx@npm:^7.4.1": + version: 7.7.2 + resolution: "markdown-to-jsx@npm:7.7.2" + peerDependencies: + react: ">= 0.14.0" + checksum: 8ee7bed1d57fa105fe8357e0b0f703b83dc129170a1bdad6ece426d5789c614a18a8ab9e51af25cff9d6c38505ea1c011cecc1f17c85c4332f7d4951bd4ccbbf languageName: node linkType: hard -"isexe@npm:^3.1.1": - version: 3.1.1 - resolution: "isexe@npm:3.1.1" - checksum: 7fe1931ee4e88eb5aa524cd3ceb8c882537bc3a81b02e438b240e47012eef49c86904d0f0e593ea7c3a9996d18d0f1f3be8d3eaa92333977b0c3a9d353d5563e +"marked@npm:^4.0.14": + version: 4.3.0 + resolution: "marked@npm:4.3.0" + bin: + marked: bin/marked.js + checksum: 0db6817893952c3ec710eb9ceafb8468bf5ae38cb0f92b7b083baa13d70b19774674be04db5b817681fa7c5c6a088f61300815e4dd75a59696f4716ad69f6260 languageName: node linkType: hard -"isomorphic-git@npm:^1.23.0": - version: 1.27.1 - resolution: "isomorphic-git@npm:1.27.1" +"matcher@npm:^3.0.0": + version: 3.0.0 + resolution: "matcher@npm:3.0.0" dependencies: - async-lock: ^1.4.1 - clean-git-ref: ^2.0.1 - crc-32: ^1.2.0 - diff3: 0.0.3 - ignore: ^5.1.4 - minimisted: ^2.0.0 - pako: ^1.0.10 - pify: ^4.0.1 - readable-stream: ^3.4.0 - sha.js: ^2.4.9 - simple-get: ^4.0.1 - bin: - isogit: cli.cjs - checksum: ba6f3c10b3160dac74185881f1da1c5a9b6cbd32d5f273ebce7291055566e5c58f466f89be9039e9c83ededd86a69e367bc4050262bbfbc6b785eea211a7f923 + escape-string-regexp: ^4.0.0 + checksum: 8bee1a7ab7609c2c21d9c9254b6785fa708eadf289032b556d57a34e98fcd4c537659a004dafee6ce80ab157099e645c199dc52678dff1e7fb0a6684e0da4dbe languageName: node linkType: hard -"isomorphic-ws@npm:5.0.0, isomorphic-ws@npm:^5.0.0": - version: 5.0.0 - resolution: "isomorphic-ws@npm:5.0.0" +"material-ui-popup-state@npm:^1.9.3": + version: 1.9.3 + resolution: "material-ui-popup-state@npm:1.9.3" + dependencies: + "@babel/runtime": ^7.12.5 + "@material-ui/types": ^6.0.1 + classnames: ^2.2.6 + prop-types: ^15.7.2 peerDependencies: - ws: "*" - checksum: e20eb2aee09ba96247465fda40c6d22c1153394c0144fa34fe6609f341af4c8c564f60ea3ba762335a7a9c306809349f9b863c8beedf2beea09b299834ad5398 + "@material-ui/core": ^4.0.0 || ^5.0.0-beta + react: ^15.0.0 || ^16.0.0 || ^17.0.0 + checksum: 0acd73b54afec02072e9b401738eb1c8832fd90771efe9894220778cc6f6d89f60f3902fdeb109a4c037b19a26bcf5b77a60a79fcaa024ddf67224bbee466530 languageName: node linkType: hard -"isstream@npm:~0.1.2": - version: 0.1.2 - resolution: "isstream@npm:0.1.2" - checksum: 1eb2fe63a729f7bdd8a559ab552c69055f4f48eb5c2f03724430587c6f450783c8f1cd936c1c952d0a927925180fcc892ebd5b174236cf1065d4bd5bdb37e963 +"math-intrinsics@npm:^1.0.0": + version: 1.0.0 + resolution: "math-intrinsics@npm:1.0.0" + checksum: ad9edf8b5bec32c78d25163a9343dbe960331c8b4815b099181de7be4681e5abff9642a4b2fbeb3e882d7616567ffc45a5bae59dc8fec417cf5c76d47b92b197 languageName: node linkType: hard -"istanbul-lib-coverage@npm:^3.0.0, istanbul-lib-coverage@npm:^3.2.0": - version: 3.2.2 - resolution: "istanbul-lib-coverage@npm:3.2.2" - checksum: 2367407a8d13982d8f7a859a35e7f8dd5d8f75aae4bb5484ede3a9ea1b426dc245aff28b976a2af48ee759fdd9be374ce2bd2669b644f31e76c5f46a2e29a831 +"md5.js@npm:^1.3.4": + version: 1.3.5 + resolution: "md5.js@npm:1.3.5" + dependencies: + hash-base: ^3.0.0 + inherits: ^2.0.1 + safe-buffer: ^5.1.2 + checksum: 098494d885684bcc4f92294b18ba61b7bd353c23147fbc4688c75b45cb8590f5a95fd4584d742415dcc52487f7a1ef6ea611cfa1543b0dc4492fe026357f3f0c languageName: node linkType: hard -"istanbul-lib-instrument@npm:^5.0.4": - version: 5.2.1 - resolution: "istanbul-lib-instrument@npm:5.2.1" +"mdast-util-definitions@npm:^5.0.0": + version: 5.1.2 + resolution: "mdast-util-definitions@npm:5.1.2" dependencies: - "@babel/core": ^7.12.3 - "@babel/parser": ^7.14.7 - "@istanbuljs/schema": ^0.1.2 - istanbul-lib-coverage: ^3.2.0 - semver: ^6.3.0 - checksum: bf16f1803ba5e51b28bbd49ed955a736488381e09375d830e42ddeb403855b2006f850711d95ad726f2ba3f1ae8e7366de7e51d2b9ac67dc4d80191ef7ddf272 + "@types/mdast": ^3.0.0 + "@types/unist": ^2.0.0 + unist-util-visit: ^4.0.0 + checksum: 2544daccab744ea1ede76045c2577ae4f1cc1b9eb1ea51ab273fe1dca8db5a8d6f50f87759c0ce6484975914b144b7f40316f805cb9c86223a78db8de0b77bae languageName: node linkType: hard -"istanbul-lib-instrument@npm:^6.0.0": - version: 6.0.3 - resolution: "istanbul-lib-instrument@npm:6.0.3" +"mdast-util-find-and-replace@npm:^2.0.0": + version: 2.2.2 + resolution: "mdast-util-find-and-replace@npm:2.2.2" dependencies: - "@babel/core": ^7.23.9 - "@babel/parser": ^7.23.9 - "@istanbuljs/schema": ^0.1.3 - istanbul-lib-coverage: ^3.2.0 - semver: ^7.5.4 - checksum: 74104c60c65c4fa0e97cc76f039226c356123893929f067bfad5f86fe839e08f5d680354a68fead3bc9c1e2f3fa6f3f53cded70778e821d911e851d349f3545a + "@types/mdast": ^3.0.0 + escape-string-regexp: ^5.0.0 + unist-util-is: ^5.0.0 + unist-util-visit-parents: ^5.0.0 + checksum: b4ce463c43fe6e1c38a53a89703f755c84ab5437f49bff9a0ac751279733332ca11c85ed0262aa6c17481f77b555d26ca6d64e70d6814f5b8d12d34a3e53a60b languageName: node linkType: hard -"istanbul-lib-report@npm:^3.0.0": - version: 3.0.1 - resolution: "istanbul-lib-report@npm:3.0.1" +"mdast-util-from-markdown@npm:^1.0.0": + version: 1.3.1 + resolution: "mdast-util-from-markdown@npm:1.3.1" dependencies: - istanbul-lib-coverage: ^3.0.0 - make-dir: ^4.0.0 - supports-color: ^7.1.0 - checksum: fd17a1b879e7faf9bb1dc8f80b2a16e9f5b7b8498fe6ed580a618c34df0bfe53d2abd35bf8a0a00e628fb7405462576427c7df20bbe4148d19c14b431c974b21 + "@types/mdast": ^3.0.0 + "@types/unist": ^2.0.0 + decode-named-character-reference: ^1.0.0 + mdast-util-to-string: ^3.1.0 + micromark: ^3.0.0 + micromark-util-decode-numeric-character-reference: ^1.0.0 + micromark-util-decode-string: ^1.0.0 + micromark-util-normalize-identifier: ^1.0.0 + micromark-util-symbol: ^1.0.0 + micromark-util-types: ^1.0.0 + unist-util-stringify-position: ^3.0.0 + uvu: ^0.5.0 + checksum: c2fac225167e248d394332a4ea39596e04cbde07d8cdb3889e91e48972c4c3462a02b39fda3855345d90231eb17a90ac6e082fb4f012a77c1d0ddfb9c7446940 languageName: node linkType: hard -"istanbul-lib-source-maps@npm:^4.0.0": - version: 4.0.1 - resolution: "istanbul-lib-source-maps@npm:4.0.1" +"mdast-util-gfm-autolink-literal@npm:^1.0.0": + version: 1.0.3 + resolution: "mdast-util-gfm-autolink-literal@npm:1.0.3" dependencies: - debug: ^4.1.1 - istanbul-lib-coverage: ^3.0.0 - source-map: ^0.6.1 - checksum: 21ad3df45db4b81852b662b8d4161f6446cd250c1ddc70ef96a585e2e85c26ed7cd9c2a396a71533cfb981d1a645508bc9618cae431e55d01a0628e7dec62ef2 + "@types/mdast": ^3.0.0 + ccount: ^2.0.0 + mdast-util-find-and-replace: ^2.0.0 + micromark-util-character: ^1.0.0 + checksum: 1748a8727cfc533bac0c287d6e72d571d165bfa77ae0418be4828177a3ec73c02c3f2ee534d87eb75cbaffa00c0866853bbcc60ae2255babb8210f7636ec2ce2 languageName: node linkType: hard -"istanbul-reports@npm:^3.1.3": - version: 3.1.7 - resolution: "istanbul-reports@npm:3.1.7" +"mdast-util-gfm-footnote@npm:^1.0.0": + version: 1.0.2 + resolution: "mdast-util-gfm-footnote@npm:1.0.2" dependencies: - html-escaper: ^2.0.0 - istanbul-lib-report: ^3.0.0 - checksum: 2072db6e07bfbb4d0eb30e2700250636182398c1af811aea5032acb219d2080f7586923c09fa194029efd6b92361afb3dcbe1ebcc3ee6651d13340f7c6c4ed95 + "@types/mdast": ^3.0.0 + mdast-util-to-markdown: ^1.3.0 + micromark-util-normalize-identifier: ^1.0.0 + checksum: 2d77505f9377ed7e14472ef5e6b8366c3fec2cf5f936bb36f9fbe5b97ccb7cce0464d9313c236fa86fb844206fd585db05707e4fcfb755e4fc1864194845f1f6 languageName: node linkType: hard -"iterare@npm:1.2.1": - version: 1.2.1 - resolution: "iterare@npm:1.2.1" - checksum: 70bc80038e3718aa9072bc63b3a0135166d7120bde46bfcaf80a88d11005dcef1b2d69cd353849f87a3f58ba8f546a8c6e6983408236ff01fa50b52339ee5223 +"mdast-util-gfm-strikethrough@npm:^1.0.0": + version: 1.0.3 + resolution: "mdast-util-gfm-strikethrough@npm:1.0.3" + dependencies: + "@types/mdast": ^3.0.0 + mdast-util-to-markdown: ^1.3.0 + checksum: 17003340ff1bba643ec4a59fd4370fc6a32885cab2d9750a508afa7225ea71449fb05acaef60faa89c6378b8bcfbd86a9d94b05f3c6651ff27a60e3ddefc2549 languageName: node linkType: hard -"iterator.prototype@npm:^1.1.3": - version: 1.1.3 - resolution: "iterator.prototype@npm:1.1.3" +"mdast-util-gfm-table@npm:^1.0.0": + version: 1.0.7 + resolution: "mdast-util-gfm-table@npm:1.0.7" dependencies: - define-properties: ^1.2.1 - get-intrinsic: ^1.2.1 - has-symbols: ^1.0.3 - reflect.getprototypeof: ^1.0.4 - set-function-name: ^2.0.1 - checksum: 7d2a1f8bcbba7b76f72e956faaf7b25405f4de54430c9d099992e6fb9d571717c3044604e8cdfb8e624cb881337d648030ee8b1541d544af8b338835e3f47ebe + "@types/mdast": ^3.0.0 + markdown-table: ^3.0.0 + mdast-util-from-markdown: ^1.0.0 + mdast-util-to-markdown: ^1.3.0 + checksum: 8b8c401bb4162e53f072a2dff8efbca880fd78d55af30601c791315ab6722cb2918176e8585792469a0c530cebb9df9b4e7fede75fdc4d83df2839e238836692 languageName: node linkType: hard -"jackspeak@npm:^3.1.2": - version: 3.4.3 - resolution: "jackspeak@npm:3.4.3" - dependencies: - "@isaacs/cliui": ^8.0.2 - "@pkgjs/parseargs": ^0.11.0 - dependenciesMeta: - "@pkgjs/parseargs": - optional: true - checksum: be31027fc72e7cc726206b9f560395604b82e0fddb46c4cbf9f97d049bcef607491a5afc0699612eaa4213ca5be8fd3e1e7cd187b3040988b65c9489838a7c00 +"mdast-util-gfm-task-list-item@npm:^1.0.0": + version: 1.0.2 + resolution: "mdast-util-gfm-task-list-item@npm:1.0.2" + dependencies: + "@types/mdast": ^3.0.0 + mdast-util-to-markdown: ^1.3.0 + checksum: c9b86037d6953b84f11fb2fc3aa23d5b8e14ca0dfcb0eb2fb289200e172bb9d5647bfceb4f86606dc6d935e8d58f6a458c04d3e55e87ff8513c7d4ade976200b languageName: node linkType: hard -"jest-changed-files@npm:^29.7.0": - version: 29.7.0 - resolution: "jest-changed-files@npm:29.7.0" +"mdast-util-gfm@npm:^2.0.0": + version: 2.0.2 + resolution: "mdast-util-gfm@npm:2.0.2" dependencies: - execa: ^5.0.0 - jest-util: ^29.7.0 - p-limit: ^3.1.0 - checksum: 963e203893c396c5dfc75e00a49426688efea7361b0f0e040035809cecd2d46b3c01c02be2d9e8d38b1138357d2de7719ea5b5be21f66c10f2e9685a5a73bb99 + mdast-util-from-markdown: ^1.0.0 + mdast-util-gfm-autolink-literal: ^1.0.0 + mdast-util-gfm-footnote: ^1.0.0 + mdast-util-gfm-strikethrough: ^1.0.0 + mdast-util-gfm-table: ^1.0.0 + mdast-util-gfm-task-list-item: ^1.0.0 + mdast-util-to-markdown: ^1.0.0 + checksum: 7078cb985255208bcbce94a121906417d38353c6b1a9acbe56ee8888010d3500608b5d51c16b0999ac63ca58848fb13012d55f26930ff6c6f3450f053d56514e languageName: node linkType: hard -"jest-circus@npm:^29.7.0": - version: 29.7.0 - resolution: "jest-circus@npm:29.7.0" +"mdast-util-phrasing@npm:^3.0.0": + version: 3.0.1 + resolution: "mdast-util-phrasing@npm:3.0.1" dependencies: - "@jest/environment": ^29.7.0 - "@jest/expect": ^29.7.0 - "@jest/test-result": ^29.7.0 - "@jest/types": ^29.6.3 - "@types/node": "*" - chalk: ^4.0.0 - co: ^4.6.0 - dedent: ^1.0.0 - is-generator-fn: ^2.0.0 - jest-each: ^29.7.0 - jest-matcher-utils: ^29.7.0 - jest-message-util: ^29.7.0 - jest-runtime: ^29.7.0 - jest-snapshot: ^29.7.0 - jest-util: ^29.7.0 - p-limit: ^3.1.0 - pretty-format: ^29.7.0 - pure-rand: ^6.0.0 - slash: ^3.0.0 - stack-utils: ^2.0.3 - checksum: 349437148924a5a109c9b8aad6d393a9591b4dac1918fc97d81b7fc515bc905af9918495055071404af1fab4e48e4b04ac3593477b1d5dcf48c4e71b527c70a7 + "@types/mdast": ^3.0.0 + unist-util-is: ^5.0.0 + checksum: c5b616d9b1eb76a6b351d195d94318494722525a12a89d9c8a3b091af7db3dd1fc55d294f9d29266d8159a8267b0df4a7a133bda8a3909d5331c383e1e1ff328 languageName: node linkType: hard -"jest-cli@npm:^29.7.0": - version: 29.7.0 - resolution: "jest-cli@npm:29.7.0" +"mdast-util-to-hast@npm:^12.1.0": + version: 12.3.0 + resolution: "mdast-util-to-hast@npm:12.3.0" dependencies: - "@jest/core": ^29.7.0 - "@jest/test-result": ^29.7.0 - "@jest/types": ^29.6.3 - chalk: ^4.0.0 - create-jest: ^29.7.0 - exit: ^0.1.2 - import-local: ^3.0.2 - jest-config: ^29.7.0 - jest-util: ^29.7.0 - jest-validate: ^29.7.0 - yargs: ^17.3.1 - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - bin: - jest: bin/jest.js - checksum: 664901277a3f5007ea4870632ed6e7889db9da35b2434e7cb488443e6bf5513889b344b7fddf15112135495b9875892b156faeb2d7391ddb9e2a849dcb7b6c36 + "@types/hast": ^2.0.0 + "@types/mdast": ^3.0.0 + mdast-util-definitions: ^5.0.0 + micromark-util-sanitize-uri: ^1.1.0 + trim-lines: ^3.0.0 + unist-util-generated: ^2.0.0 + unist-util-position: ^4.0.0 + unist-util-visit: ^4.0.0 + checksum: ea40c9f07dd0b731754434e81c913590c611b1fd753fa02550a1492aadfc30fb3adecaf62345ebb03cea2ddd250c15ab6e578fffde69c19955c9b87b10f2a9bb languageName: node linkType: hard -"jest-config@npm:^29.7.0": - version: 29.7.0 - resolution: "jest-config@npm:29.7.0" +"mdast-util-to-markdown@npm:^1.0.0, mdast-util-to-markdown@npm:^1.3.0": + version: 1.5.0 + resolution: "mdast-util-to-markdown@npm:1.5.0" dependencies: - "@babel/core": ^7.11.6 - "@jest/test-sequencer": ^29.7.0 - "@jest/types": ^29.6.3 - babel-jest: ^29.7.0 - chalk: ^4.0.0 - ci-info: ^3.2.0 - deepmerge: ^4.2.2 - glob: ^7.1.3 - graceful-fs: ^4.2.9 - jest-circus: ^29.7.0 - jest-environment-node: ^29.7.0 - jest-get-type: ^29.6.3 - jest-regex-util: ^29.6.3 - jest-resolve: ^29.7.0 - jest-runner: ^29.7.0 - jest-util: ^29.7.0 - jest-validate: ^29.7.0 - micromatch: ^4.0.4 - parse-json: ^5.2.0 - pretty-format: ^29.7.0 - slash: ^3.0.0 - strip-json-comments: ^3.1.1 - peerDependencies: - "@types/node": "*" - ts-node: ">=9.0.0" - peerDependenciesMeta: - "@types/node": - optional: true - ts-node: - optional: true - checksum: 4cabf8f894c180cac80b7df1038912a3fc88f96f2622de33832f4b3314f83e22b08fb751da570c0ab2b7988f21604bdabade95e3c0c041068ac578c085cf7dff + "@types/mdast": ^3.0.0 + "@types/unist": ^2.0.0 + longest-streak: ^3.0.0 + mdast-util-phrasing: ^3.0.0 + mdast-util-to-string: ^3.0.0 + micromark-util-decode-string: ^1.0.0 + unist-util-visit: ^4.0.0 + zwitch: ^2.0.0 + checksum: 64338eb33e49bb0aea417591fd986f72fdd39205052563bb7ce9eb9ecc160824509bfacd740086a05af355c6d5c36353aafe95cab9e6927d674478757cee6259 languageName: node linkType: hard -"jest-css-modules@npm:^2.1.0": - version: 2.1.0 - resolution: "jest-css-modules@npm:2.1.0" +"mdast-util-to-string@npm:^3.0.0, mdast-util-to-string@npm:^3.1.0": + version: 3.2.0 + resolution: "mdast-util-to-string@npm:3.2.0" dependencies: - identity-obj-proxy: 3.0.0 - checksum: ddf01a327379f0186fc506b0c2a6cecad59acf3a7c947113f75530d1ea87e4f09aa98c9894283c0ead29688ef9fbc3c91ce1b158756034872fa097e491ee9f8c + "@types/mdast": ^3.0.0 + checksum: dc40b544d54339878ae2c9f2b3198c029e1e07291d2126bd00ca28272ee6616d0d2194eb1c9828a7c34d412a79a7e73b26512a734698d891c710a1e73db1e848 languageName: node linkType: hard -"jest-diff@npm:^29.7.0": - version: 29.7.0 - resolution: "jest-diff@npm:29.7.0" - dependencies: - chalk: ^4.0.0 - diff-sequences: ^29.6.3 - jest-get-type: ^29.6.3 - pretty-format: ^29.7.0 - checksum: 08e24a9dd43bfba1ef07a6374e5af138f53137b79ec3d5cc71a2303515335898888fa5409959172e1e05de966c9e714368d15e8994b0af7441f0721ee8e1bb77 +"mdn-data@npm:2.0.14": + version: 2.0.14 + resolution: "mdn-data@npm:2.0.14" + checksum: 9d0128ed425a89f4cba8f787dca27ad9408b5cb1b220af2d938e2a0629d17d879a34d2cb19318bdb26c3f14c77dd5dfbae67211f5caaf07b61b1f2c5c8c7dc16 languageName: node linkType: hard -"jest-docblock@npm:^29.7.0": - version: 29.7.0 - resolution: "jest-docblock@npm:29.7.0" - dependencies: - detect-newline: ^3.0.0 - checksum: 66390c3e9451f8d96c5da62f577a1dad701180cfa9b071c5025acab2f94d7a3efc2515cfa1654ebe707213241541ce9c5530232cdc8017c91ed64eea1bd3b192 +"mdn-data@npm:2.0.28": + version: 2.0.28 + resolution: "mdn-data@npm:2.0.28" + checksum: f51d587a6ebe8e426c3376c74ea6df3e19ec8241ed8e2466c9c8a3904d5d04397199ea4f15b8d34d14524b5de926d8724ae85207984be47e165817c26e49e0aa languageName: node linkType: hard -"jest-each@npm:^29.7.0": - version: 29.7.0 - resolution: "jest-each@npm:29.7.0" - dependencies: - "@jest/types": ^29.6.3 - chalk: ^4.0.0 - jest-get-type: ^29.6.3 - jest-util: ^29.7.0 - pretty-format: ^29.7.0 - checksum: e88f99f0184000fc8813f2a0aa79e29deeb63700a3b9b7928b8a418d7d93cd24933608591dbbdea732b473eb2021c72991b5cc51a17966842841c6e28e6f691c +"mdn-data@npm:2.0.30": + version: 2.0.30 + resolution: "mdn-data@npm:2.0.30" + checksum: d6ac5ac7439a1607df44b22738ecf83f48e66a0874e4482d6424a61c52da5cde5750f1d1229b6f5fa1b80a492be89465390da685b11f97d62b8adcc6e88189aa languageName: node linkType: hard -"jest-environment-jsdom@npm:^29.0.2": - version: 29.7.0 - resolution: "jest-environment-jsdom@npm:29.7.0" - dependencies: - "@jest/environment": ^29.7.0 - "@jest/fake-timers": ^29.7.0 - "@jest/types": ^29.6.3 - "@types/jsdom": ^20.0.0 - "@types/node": "*" - jest-mock: ^29.7.0 - jest-util: ^29.7.0 - jsdom: ^20.0.0 - peerDependencies: - canvas: ^2.5.0 - peerDependenciesMeta: - canvas: - optional: true - checksum: 559aac134c196fccc1dfc794d8fc87377e9f78e894bb13012b0831d88dec0abd7ece99abec69da564b8073803be4f04a9eb4f4d1bb80e29eec0cb252c254deb8 +"mdurl@npm:^1.0.1": + version: 1.0.1 + resolution: "mdurl@npm:1.0.1" + checksum: 71731ecba943926bfbf9f9b51e28b5945f9411c4eda80894221b47cc105afa43ba2da820732b436f0798fd3edbbffcd1fc1415843c41a87fea08a41cc1e3d02b languageName: node linkType: hard -"jest-environment-node@npm:^29.7.0": - version: 29.7.0 - resolution: "jest-environment-node@npm:29.7.0" - dependencies: - "@jest/environment": ^29.7.0 - "@jest/fake-timers": ^29.7.0 - "@jest/types": ^29.6.3 - "@types/node": "*" - jest-mock: ^29.7.0 - jest-util: ^29.7.0 - checksum: 501a9966292cbe0ca3f40057a37587cb6def25e1e0c5e39ac6c650fe78d3c70a2428304341d084ac0cced5041483acef41c477abac47e9a290d5545fd2f15646 +"mdurl@npm:^2.0.0": + version: 2.0.0 + resolution: "mdurl@npm:2.0.0" + checksum: 880bc289ef668df0bb34c5b2b5aaa7b6ea755052108cdaf4a5e5968ad01cf27e74927334acc9ebcc50a8628b65272ae6b1fd51fae1330c130e261c0466e1a3b2 languageName: node linkType: hard -"jest-get-type@npm:^29.6.3": - version: 29.6.3 - resolution: "jest-get-type@npm:29.6.3" - checksum: 88ac9102d4679d768accae29f1e75f592b760b44277df288ad76ce5bf038c3f5ce3719dea8aa0f035dac30e9eb034b848ce716b9183ad7cc222d029f03e92205 +"media-typer@npm:0.3.0": + version: 0.3.0 + resolution: "media-typer@npm:0.3.0" + checksum: af1b38516c28ec95d6b0826f6c8f276c58aec391f76be42aa07646b4e39d317723e869700933ca6995b056db4b09a78c92d5440dc23657e6764be5d28874bba1 languageName: node linkType: hard -"jest-haste-map@npm:^29.7.0": - version: 29.7.0 - resolution: "jest-haste-map@npm:29.7.0" - dependencies: - "@jest/types": ^29.6.3 - "@types/graceful-fs": ^4.1.3 - "@types/node": "*" - anymatch: ^3.0.3 - fb-watchman: ^2.0.0 - fsevents: ^2.3.2 - graceful-fs: ^4.2.9 - jest-regex-util: ^29.6.3 - jest-util: ^29.7.0 - jest-worker: ^29.7.0 - micromatch: ^4.0.4 - walker: ^1.0.8 - dependenciesMeta: - fsevents: - optional: true - checksum: c2c8f2d3e792a963940fbdfa563ce14ef9e14d4d86da645b96d3cd346b8d35c5ce0b992ee08593939b5f718cf0a1f5a90011a056548a1dbf58397d4356786f01 +"media-typer@npm:^1.1.0": + version: 1.1.0 + resolution: "media-typer@npm:1.1.0" + checksum: a58dd60804df73c672942a7253ccc06815612326dc1c0827984b1a21704466d7cde351394f47649e56cf7415e6ee2e26e000e81b51b3eebb5a93540e8bf93cbd languageName: node linkType: hard -"jest-leak-detector@npm:^29.7.0": - version: 29.7.0 - resolution: "jest-leak-detector@npm:29.7.0" +"memfs@npm:^3.1.2, memfs@npm:^3.4.1, memfs@npm:^3.4.3": + version: 3.5.3 + resolution: "memfs@npm:3.5.3" dependencies: - jest-get-type: ^29.6.3 - pretty-format: ^29.7.0 - checksum: e3950e3ddd71e1d0c22924c51a300a1c2db6cf69ec1e51f95ccf424bcc070f78664813bef7aed4b16b96dfbdeea53fe358f8aeaaea84346ae15c3735758f1605 + fs-monkey: ^1.0.4 + checksum: 18dfdeacad7c8047b976a6ccd58bc98ba76e122ad3ca0e50a21837fe2075fc0d9aafc58ab9cf2576c2b6889da1dd2503083f2364191b695273f40969db2ecc44 languageName: node linkType: hard -"jest-matcher-utils@npm:^29.7.0": - version: 29.7.0 - resolution: "jest-matcher-utils@npm:29.7.0" +"memfs@npm:^4.6.0": + version: 4.14.0 + resolution: "memfs@npm:4.14.0" dependencies: - chalk: ^4.0.0 - jest-diff: ^29.7.0 - jest-get-type: ^29.6.3 - pretty-format: ^29.7.0 - checksum: d7259e5f995d915e8a37a8fd494cb7d6af24cd2a287b200f831717ba0d015190375f9f5dc35393b8ba2aae9b2ebd60984635269c7f8cff7d85b077543b7744cd + "@jsonjoy.com/json-pack": ^1.0.3 + "@jsonjoy.com/util": ^1.3.0 + tree-dump: ^1.0.1 + tslib: ^2.0.0 + checksum: 162e61510983488b0c524bd24191ab8be0f8a95636906ee305c10f2027e6a9f90831f42c072657aaf5fa859bb5132c5e97aa97aa96dfd959810327aec5b067c3 languageName: node linkType: hard -"jest-message-util@npm:^29.7.0": - version: 29.7.0 - resolution: "jest-message-util@npm:29.7.0" - dependencies: - "@babel/code-frame": ^7.12.13 - "@jest/types": ^29.6.3 - "@types/stack-utils": ^2.0.0 - chalk: ^4.0.0 - graceful-fs: ^4.2.9 - micromatch: ^4.0.4 - pretty-format: ^29.7.0 - slash: ^3.0.0 - stack-utils: ^2.0.3 - checksum: a9d025b1c6726a2ff17d54cc694de088b0489456c69106be6b615db7a51b7beb66788bea7a59991a019d924fbf20f67d085a445aedb9a4d6760363f4d7d09930 +"memjs@npm:^1.3.2": + version: 1.3.2 + resolution: "memjs@npm:1.3.2" + checksum: f92c2a43725b70af69832f807d02b87a07609a1c1f2c8c37670dff5bae6ac5f0d767cc8b3a6a59626703538f96c0bd4f03f9d00ea3b28aeb33270d24e8782233 + languageName: node + linkType: hard + +"memoize-one@npm:>=3.1.1 <6, memoize-one@npm:^5.1.1": + version: 5.2.1 + resolution: "memoize-one@npm:5.2.1" + checksum: a3cba7b824ebcf24cdfcd234aa7f86f3ad6394b8d9be4c96ff756dafb8b51c7f71320785fbc2304f1af48a0467cbbd2a409efc9333025700ed523f254cb52e3d + languageName: node + linkType: hard + +"merge-descriptors@npm:1.0.3": + version: 1.0.3 + resolution: "merge-descriptors@npm:1.0.3" + checksum: 52117adbe0313d5defa771c9993fe081e2d2df9b840597e966aadafde04ae8d0e3da46bac7ca4efc37d4d2b839436582659cd49c6a43eacb3fe3050896a105d1 + languageName: node + linkType: hard + +"merge-stream@npm:^2.0.0": + version: 2.0.0 + resolution: "merge-stream@npm:2.0.0" + checksum: 6fa4dcc8d86629705cea944a4b88ef4cb0e07656ebf223fa287443256414283dd25d91c1cd84c77987f2aec5927af1a9db6085757cb43d90eb170ebf4b47f4f4 languageName: node linkType: hard -"jest-mock@npm:^29.7.0": - version: 29.7.0 - resolution: "jest-mock@npm:29.7.0" - dependencies: - "@jest/types": ^29.6.3 - "@types/node": "*" - jest-util: ^29.7.0 - checksum: 81ba9b68689a60be1482212878973700347cb72833c5e5af09895882b9eb5c4e02843a1bbdf23f94c52d42708bab53a30c45a3482952c9eec173d1eaac5b86c5 +"merge2@npm:^1.3.0, merge2@npm:^1.4.1": + version: 1.4.1 + resolution: "merge2@npm:1.4.1" + checksum: 7268db63ed5169466540b6fb947aec313200bcf6d40c5ab722c22e242f651994619bcd85601602972d3c85bd2cc45a358a4c61937e9f11a061919a1da569b0c2 languageName: node linkType: hard -"jest-pnp-resolver@npm:^1.2.2": - version: 1.2.3 - resolution: "jest-pnp-resolver@npm:1.2.3" +"meros@npm:^1.1.4, meros@npm:^1.2.1": + version: 1.3.0 + resolution: "meros@npm:1.3.0" peerDependencies: - jest-resolve: "*" + "@types/node": ">=13" peerDependenciesMeta: - jest-resolve: + "@types/node": optional: true - checksum: db1a8ab2cb97ca19c01b1cfa9a9c8c69a143fde833c14df1fab0766f411b1148ff0df878adea09007ac6a2085ec116ba9a996a6ad104b1e58c20adbf88eed9b2 + checksum: ea86c83fe9357d3eb2f5bad20909e12642c7bc8c10340d9bd0968b48f69ec453de14f7e5032d138ad04cb10d79b8c9fb3c9601bb515e8fbdf9bec4eed62994ad languageName: node linkType: hard -"jest-regex-util@npm:^29.6.3": - version: 29.6.3 - resolution: "jest-regex-util@npm:29.6.3" - checksum: 0518beeb9bf1228261695e54f0feaad3606df26a19764bc19541e0fc6e2a3737191904607fb72f3f2ce85d9c16b28df79b7b1ec9443aa08c3ef0e9efda6f8f2a +"methods@npm:^1.0.0, methods@npm:^1.1.2, methods@npm:~1.1.2": + version: 1.1.2 + resolution: "methods@npm:1.1.2" + checksum: 0917ff4041fa8e2f2fda5425a955fe16ca411591fbd123c0d722fcf02b73971ed6f764d85f0a6f547ce49ee0221ce2c19a5fa692157931cecb422984f1dcd13a languageName: node linkType: hard -"jest-resolve-dependencies@npm:^29.7.0": - version: 29.7.0 - resolution: "jest-resolve-dependencies@npm:29.7.0" +"micro-memoize@npm:4.1.2": + version: 4.1.2 + resolution: "micro-memoize@npm:4.1.2" + checksum: 4b02750622d44b5ab31573c629b5d91927dd0c2727743ff75e790c223ab6cd02c48cc3bddea69da0dffb688091a0a71a17944947dd165f8ba9e03728bc30a76d + languageName: node + linkType: hard + +"micromark-core-commonmark@npm:^1.0.0, micromark-core-commonmark@npm:^1.0.1": + version: 1.1.0 + resolution: "micromark-core-commonmark@npm:1.1.0" + dependencies: + decode-named-character-reference: ^1.0.0 + micromark-factory-destination: ^1.0.0 + micromark-factory-label: ^1.0.0 + micromark-factory-space: ^1.0.0 + micromark-factory-title: ^1.0.0 + micromark-factory-whitespace: ^1.0.0 + micromark-util-character: ^1.0.0 + micromark-util-chunked: ^1.0.0 + micromark-util-classify-character: ^1.0.0 + micromark-util-html-tag-name: ^1.0.0 + micromark-util-normalize-identifier: ^1.0.0 + micromark-util-resolve-all: ^1.0.0 + micromark-util-subtokenize: ^1.0.0 + micromark-util-symbol: ^1.0.0 + micromark-util-types: ^1.0.1 + uvu: ^0.5.0 + checksum: c6dfedc95889cc73411cb222fc2330b9eda6d849c09c9fd9eb3cd3398af246167e9d3cdb0ae3ce9ae59dd34a14624c8330e380255d41279ad7350cf6c6be6c5b + languageName: node + linkType: hard + +"micromark-extension-gfm-autolink-literal@npm:^1.0.0": + version: 1.0.5 + resolution: "micromark-extension-gfm-autolink-literal@npm:1.0.5" dependencies: - jest-regex-util: ^29.6.3 - jest-snapshot: ^29.7.0 - checksum: aeb75d8150aaae60ca2bb345a0d198f23496494677cd6aefa26fc005faf354061f073982175daaf32b4b9d86b26ca928586344516e3e6969aa614cb13b883984 + micromark-util-character: ^1.0.0 + micromark-util-sanitize-uri: ^1.0.0 + micromark-util-symbol: ^1.0.0 + micromark-util-types: ^1.0.0 + checksum: ec2f6bc4a3eb238c1b8be9744454ffbc2957e3d8a248697af5a26bb21479862300c0e40e0a92baf17c299ddf70d4bc4470d4eee112cd92322f87d81e45c2e83d languageName: node linkType: hard -"jest-resolve@npm:^29.7.0": - version: 29.7.0 - resolution: "jest-resolve@npm:29.7.0" +"micromark-extension-gfm-footnote@npm:^1.0.0": + version: 1.1.2 + resolution: "micromark-extension-gfm-footnote@npm:1.1.2" dependencies: - chalk: ^4.0.0 - graceful-fs: ^4.2.9 - jest-haste-map: ^29.7.0 - jest-pnp-resolver: ^1.2.2 - jest-util: ^29.7.0 - jest-validate: ^29.7.0 - resolve: ^1.20.0 - resolve.exports: ^2.0.0 - slash: ^3.0.0 - checksum: 0ca218e10731aa17920526ec39deaec59ab9b966237905ffc4545444481112cd422f01581230eceb7e82d86f44a543d520a71391ec66e1b4ef1a578bd5c73487 + micromark-core-commonmark: ^1.0.0 + micromark-factory-space: ^1.0.0 + micromark-util-character: ^1.0.0 + micromark-util-normalize-identifier: ^1.0.0 + micromark-util-sanitize-uri: ^1.0.0 + micromark-util-symbol: ^1.0.0 + micromark-util-types: ^1.0.0 + uvu: ^0.5.0 + checksum: c151a629ee1cd92363c018a50f926a002c944ac481ca72b3720b9529e9c20f1cbef98b0fefdcd2d594af37d0d9743673409cac488af0d2b194210fd16375dcb7 languageName: node linkType: hard -"jest-runner@npm:^29.7.0": - version: 29.7.0 - resolution: "jest-runner@npm:29.7.0" +"micromark-extension-gfm-strikethrough@npm:^1.0.0": + version: 1.0.7 + resolution: "micromark-extension-gfm-strikethrough@npm:1.0.7" dependencies: - "@jest/console": ^29.7.0 - "@jest/environment": ^29.7.0 - "@jest/test-result": ^29.7.0 - "@jest/transform": ^29.7.0 - "@jest/types": ^29.6.3 - "@types/node": "*" - chalk: ^4.0.0 - emittery: ^0.13.1 - graceful-fs: ^4.2.9 - jest-docblock: ^29.7.0 - jest-environment-node: ^29.7.0 - jest-haste-map: ^29.7.0 - jest-leak-detector: ^29.7.0 - jest-message-util: ^29.7.0 - jest-resolve: ^29.7.0 - jest-runtime: ^29.7.0 - jest-util: ^29.7.0 - jest-watcher: ^29.7.0 - jest-worker: ^29.7.0 - p-limit: ^3.1.0 - source-map-support: 0.5.13 - checksum: f0405778ea64812bf9b5c50b598850d94ccf95d7ba21f090c64827b41decd680ee19fcbb494007cdd7f5d0d8906bfc9eceddd8fa583e753e736ecd462d4682fb + micromark-util-chunked: ^1.0.0 + micromark-util-classify-character: ^1.0.0 + micromark-util-resolve-all: ^1.0.0 + micromark-util-symbol: ^1.0.0 + micromark-util-types: ^1.0.0 + uvu: ^0.5.0 + checksum: 169e310a4408feade0df80180f60d48c5cc5b7070e5e75e0bbd914e9100273508162c4bb20b72d53081dc37f1ff5834b3afa137862576f763878552c03389811 languageName: node linkType: hard -"jest-runtime@npm:^29.0.2, jest-runtime@npm:^29.7.0": - version: 29.7.0 - resolution: "jest-runtime@npm:29.7.0" +"micromark-extension-gfm-table@npm:^1.0.0": + version: 1.0.7 + resolution: "micromark-extension-gfm-table@npm:1.0.7" dependencies: - "@jest/environment": ^29.7.0 - "@jest/fake-timers": ^29.7.0 - "@jest/globals": ^29.7.0 - "@jest/source-map": ^29.6.3 - "@jest/test-result": ^29.7.0 - "@jest/transform": ^29.7.0 - "@jest/types": ^29.6.3 - "@types/node": "*" - chalk: ^4.0.0 - cjs-module-lexer: ^1.0.0 - collect-v8-coverage: ^1.0.0 - glob: ^7.1.3 - graceful-fs: ^4.2.9 - jest-haste-map: ^29.7.0 - jest-message-util: ^29.7.0 - jest-mock: ^29.7.0 - jest-regex-util: ^29.6.3 - jest-resolve: ^29.7.0 - jest-snapshot: ^29.7.0 - jest-util: ^29.7.0 - slash: ^3.0.0 - strip-bom: ^4.0.0 - checksum: d19f113d013e80691e07047f68e1e3448ef024ff2c6b586ce4f90cd7d4c62a2cd1d460110491019719f3c59bfebe16f0e201ed005ef9f80e2cf798c374eed54e + micromark-factory-space: ^1.0.0 + micromark-util-character: ^1.0.0 + micromark-util-symbol: ^1.0.0 + micromark-util-types: ^1.0.0 + uvu: ^0.5.0 + checksum: 4853731285224e409d7e2c94c6ec849165093bff819e701221701aa7b7b34c17702c44f2f831e96b49dc27bb07e445b02b025561b68e62f5c3254415197e7af6 languageName: node linkType: hard -"jest-snapshot@npm:^29.7.0": - version: 29.7.0 - resolution: "jest-snapshot@npm:29.7.0" +"micromark-extension-gfm-tagfilter@npm:^1.0.0": + version: 1.0.2 + resolution: "micromark-extension-gfm-tagfilter@npm:1.0.2" dependencies: - "@babel/core": ^7.11.6 - "@babel/generator": ^7.7.2 - "@babel/plugin-syntax-jsx": ^7.7.2 - "@babel/plugin-syntax-typescript": ^7.7.2 - "@babel/types": ^7.3.3 - "@jest/expect-utils": ^29.7.0 - "@jest/transform": ^29.7.0 - "@jest/types": ^29.6.3 - babel-preset-current-node-syntax: ^1.0.0 - chalk: ^4.0.0 - expect: ^29.7.0 - graceful-fs: ^4.2.9 - jest-diff: ^29.7.0 - jest-get-type: ^29.6.3 - jest-matcher-utils: ^29.7.0 - jest-message-util: ^29.7.0 - jest-util: ^29.7.0 - natural-compare: ^1.4.0 - pretty-format: ^29.7.0 - semver: ^7.5.3 - checksum: 86821c3ad0b6899521ce75ee1ae7b01b17e6dfeff9166f2cf17f012e0c5d8c798f30f9e4f8f7f5bed01ea7b55a6bc159f5eda778311162cbfa48785447c237ad + micromark-util-types: ^1.0.0 + checksum: 7d2441df51f890c86f8e7cf7d331a570b69c8105fa1c2fc5b737cb739502c16c8ee01cf35550a8a78f89497c5dfacc97cf82d55de6274e8320f3aec25e2b0dd2 languageName: node linkType: hard -"jest-util@npm:^29.7.0": - version: 29.7.0 - resolution: "jest-util@npm:29.7.0" +"micromark-extension-gfm-task-list-item@npm:^1.0.0": + version: 1.0.5 + resolution: "micromark-extension-gfm-task-list-item@npm:1.0.5" dependencies: - "@jest/types": ^29.6.3 - "@types/node": "*" - chalk: ^4.0.0 - ci-info: ^3.2.0 - graceful-fs: ^4.2.9 - picomatch: ^2.2.3 - checksum: 042ab4980f4ccd4d50226e01e5c7376a8556b472442ca6091a8f102488c0f22e6e8b89ea874111d2328a2080083bf3225c86f3788c52af0bd0345a00eb57a3ca + micromark-factory-space: ^1.0.0 + micromark-util-character: ^1.0.0 + micromark-util-symbol: ^1.0.0 + micromark-util-types: ^1.0.0 + uvu: ^0.5.0 + checksum: 929f05343d272cffb8008899289f4cffe986ef98fc622ebbd1aa4ff11470e6b32ed3e1f18cd294adb69cabb961a400650078f6c12b322cc515b82b5068b31960 languageName: node linkType: hard -"jest-validate@npm:^29.7.0": - version: 29.7.0 - resolution: "jest-validate@npm:29.7.0" +"micromark-extension-gfm@npm:^2.0.0": + version: 2.0.3 + resolution: "micromark-extension-gfm@npm:2.0.3" dependencies: - "@jest/types": ^29.6.3 - camelcase: ^6.2.0 - chalk: ^4.0.0 - jest-get-type: ^29.6.3 - leven: ^3.1.0 - pretty-format: ^29.7.0 - checksum: 191fcdc980f8a0de4dbdd879fa276435d00eb157a48683af7b3b1b98b0f7d9de7ffe12689b617779097ff1ed77601b9f7126b0871bba4f776e222c40f62e9dae + micromark-extension-gfm-autolink-literal: ^1.0.0 + micromark-extension-gfm-footnote: ^1.0.0 + micromark-extension-gfm-strikethrough: ^1.0.0 + micromark-extension-gfm-table: ^1.0.0 + micromark-extension-gfm-tagfilter: ^1.0.0 + micromark-extension-gfm-task-list-item: ^1.0.0 + micromark-util-combine-extensions: ^1.0.0 + micromark-util-types: ^1.0.0 + checksum: c4a917c16d7aa5d00d1767b5ce5f3b1a78c0de11dbd5c8f69d2545083568aa6bb13bd9d8e4c7fec5f4da10e7ed8344b15acffc843b33a615c17396a118bc2bc1 languageName: node linkType: hard -"jest-watcher@npm:^29.7.0": - version: 29.7.0 - resolution: "jest-watcher@npm:29.7.0" +"micromark-factory-destination@npm:^1.0.0": + version: 1.1.0 + resolution: "micromark-factory-destination@npm:1.1.0" dependencies: - "@jest/test-result": ^29.7.0 - "@jest/types": ^29.6.3 - "@types/node": "*" - ansi-escapes: ^4.2.1 - chalk: ^4.0.0 - emittery: ^0.13.1 - jest-util: ^29.7.0 - string-length: ^4.0.1 - checksum: 67e6e7fe695416deff96b93a14a561a6db69389a0667e9489f24485bb85e5b54e12f3b2ba511ec0b777eca1e727235b073e3ebcdd473d68888650489f88df92f + micromark-util-character: ^1.0.0 + micromark-util-symbol: ^1.0.0 + micromark-util-types: ^1.0.0 + checksum: 9e2b5fb5fedbf622b687e20d51eb3d56ae90c0e7ecc19b37bd5285ec392c1e56f6e21aa7cfcb3c01eda88df88fe528f3acb91a5f57d7f4cba310bc3cd7f824fa languageName: node linkType: hard -"jest-worker@npm:^27.4.5": - version: 27.5.1 - resolution: "jest-worker@npm:27.5.1" +"micromark-factory-label@npm:^1.0.0": + version: 1.1.0 + resolution: "micromark-factory-label@npm:1.1.0" dependencies: - "@types/node": "*" - merge-stream: ^2.0.0 - supports-color: ^8.0.0 - checksum: 98cd68b696781caed61c983a3ee30bf880b5bd021c01d98f47b143d4362b85d0737f8523761e2713d45e18b4f9a2b98af1eaee77afade4111bb65c77d6f7c980 + micromark-util-character: ^1.0.0 + micromark-util-symbol: ^1.0.0 + micromark-util-types: ^1.0.0 + uvu: ^0.5.0 + checksum: fcda48f1287d9b148c562c627418a2ab759cdeae9c8e017910a0cba94bb759a96611e1fc6df33182e97d28fbf191475237298983bb89ef07d5b02464b1ad28d5 languageName: node linkType: hard -"jest-worker@npm:^28.0.2": - version: 28.1.3 - resolution: "jest-worker@npm:28.1.3" +"micromark-factory-space@npm:^1.0.0": + version: 1.1.0 + resolution: "micromark-factory-space@npm:1.1.0" dependencies: - "@types/node": "*" - merge-stream: ^2.0.0 - supports-color: ^8.0.0 - checksum: e921c9a1b8f0909da9ea07dbf3592f95b653aef3a8bb0cbcd20fc7f9a795a1304adecac31eecb308992c167e8d7e75c522061fec38a5928ace0f9571c90169ca + micromark-util-character: ^1.0.0 + micromark-util-types: ^1.0.0 + checksum: b58435076b998a7e244259a4694eb83c78915581206b6e7fc07b34c6abd36a1726ade63df8972fbf6c8fa38eecb9074f4e17be8d53f942e3b3d23d1a0ecaa941 languageName: node linkType: hard -"jest-worker@npm:^29.7.0": - version: 29.7.0 - resolution: "jest-worker@npm:29.7.0" +"micromark-factory-title@npm:^1.0.0": + version: 1.1.0 + resolution: "micromark-factory-title@npm:1.1.0" dependencies: - "@types/node": "*" - jest-util: ^29.7.0 - merge-stream: ^2.0.0 - supports-color: ^8.0.0 - checksum: 30fff60af49675273644d408b650fc2eb4b5dcafc5a0a455f238322a8f9d8a98d847baca9d51ff197b6747f54c7901daa2287799230b856a0f48287d131f8c13 + micromark-factory-space: ^1.0.0 + micromark-util-character: ^1.0.0 + micromark-util-symbol: ^1.0.0 + micromark-util-types: ^1.0.0 + checksum: 4432d3dbc828c81f483c5901b0c6591a85d65a9e33f7d96ba7c3ae821617a0b3237ff5faf53a9152d00aaf9afb3a9f185b205590f40ed754f1d9232e0e9157b1 languageName: node linkType: hard -"jest@npm:^29.7.0": - version: 29.7.0 - resolution: "jest@npm:29.7.0" +"micromark-factory-whitespace@npm:^1.0.0": + version: 1.1.0 + resolution: "micromark-factory-whitespace@npm:1.1.0" dependencies: - "@jest/core": ^29.7.0 - "@jest/types": ^29.6.3 - import-local: ^3.0.2 - jest-cli: ^29.7.0 - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - bin: - jest: bin/jest.js - checksum: 17ca8d67504a7dbb1998cf3c3077ec9031ba3eb512da8d71cb91bcabb2b8995c4e4b292b740cb9bf1cbff5ce3e110b3f7c777b0cefb6f41ab05445f248d0ee0b + micromark-factory-space: ^1.0.0 + micromark-util-character: ^1.0.0 + micromark-util-symbol: ^1.0.0 + micromark-util-types: ^1.0.0 + checksum: ef0fa682c7d593d85a514ee329809dee27d10bc2a2b65217d8ef81173e33b8e83c549049764b1ad851adfe0a204dec5450d9d20a4ca8598f6c94533a73f73fcd languageName: node linkType: hard -"jiti@npm:^2.3.3": - version: 2.3.3 - resolution: "jiti@npm:2.3.3" - bin: - jiti: lib/jiti-cli.mjs - checksum: f1a2b87d937569c966f00a8c9153c8f3e02445b31e034fdaed1b9639a4ecfae3c4df24c7644d5b4764c566f8dee09132a5b55cd049b48e618024accd31d8e6b3 +"micromark-util-character@npm:^1.0.0": + version: 1.2.0 + resolution: "micromark-util-character@npm:1.2.0" + dependencies: + micromark-util-symbol: ^1.0.0 + micromark-util-types: ^1.0.0 + checksum: 089e79162a19b4a28731736246579ab7e9482ac93cd681c2bfca9983dcff659212ef158a66a5957e9d4b1dba957d1b87b565d85418a5b009f0294f1f07f2aaac languageName: node linkType: hard -"jju@npm:~1.4.0": - version: 1.4.0 - resolution: "jju@npm:1.4.0" - checksum: 3790481bd2b7827dd6336e6e3dc2dcc6d425679ba7ebde7b679f61dceb4457ea0cda330972494de608571f4973c6dfb5f70fab6f3c5037dbab19ac449a60424f +"micromark-util-chunked@npm:^1.0.0": + version: 1.1.0 + resolution: "micromark-util-chunked@npm:1.1.0" + dependencies: + micromark-util-symbol: ^1.0.0 + checksum: c435bde9110cb595e3c61b7f54c2dc28ee03e6a57fa0fc1e67e498ad8bac61ee5a7457a2b6a73022ddc585676ede4b912d28dcf57eb3bd6951e54015e14dc20b languageName: node linkType: hard -"jose@npm:^4.15.9": - version: 4.15.9 - resolution: "jose@npm:4.15.9" - checksum: 41abe1c99baa3cf8a78ebbf93da8f8e50e417b7a26754c4afa21865d87527b8ac2baf66de2c5f6accc3f7d7158658dae7364043677236ea1d07895b040097f15 +"micromark-util-classify-character@npm:^1.0.0": + version: 1.1.0 + resolution: "micromark-util-classify-character@npm:1.1.0" + dependencies: + micromark-util-character: ^1.0.0 + micromark-util-symbol: ^1.0.0 + micromark-util-types: ^1.0.0 + checksum: 8499cb0bb1f7fb946f5896285fcca65cd742f66cd3e79ba7744792bd413ec46834f932a286de650349914d02e822946df3b55d03e6a8e1d245d1ddbd5102e5b0 languageName: node linkType: hard -"jose@npm:^5.0.0": - version: 5.9.6 - resolution: "jose@npm:5.9.6" - checksum: 4b536da0201858ed4c4582e8bb479081f11e0c63dd0f5e473adde16fc539785e1f2f0409bc1fc7cbbb5b68026776c960b4952da3a06f6fdfff0b9764c9127ae0 +"micromark-util-combine-extensions@npm:^1.0.0": + version: 1.1.0 + resolution: "micromark-util-combine-extensions@npm:1.1.0" + dependencies: + micromark-util-chunked: ^1.0.0 + micromark-util-types: ^1.0.0 + checksum: ee78464f5d4b61ccb437850cd2d7da4d690b260bca4ca7a79c4bb70291b84f83988159e373b167181b6716cb197e309bc6e6c96a68cc3ba9d50c13652774aba9 languageName: node linkType: hard -"joycon@npm:^3.0.1": - version: 3.1.1 - resolution: "joycon@npm:3.1.1" - checksum: 8003c9c3fc79c5c7602b1c7e9f7a2df2e9916f046b0dbad862aa589be78c15734d11beb9fe846f5e06138df22cb2ad29961b6a986ba81c4920ce2b15a7f11067 +"micromark-util-decode-numeric-character-reference@npm:^1.0.0": + version: 1.1.0 + resolution: "micromark-util-decode-numeric-character-reference@npm:1.1.0" + dependencies: + micromark-util-symbol: ^1.0.0 + checksum: 4733fe75146e37611243f055fc6847137b66f0cde74d080e33bd26d0408c1d6f44cabc984063eee5968b133cb46855e729d555b9ff8d744652262b7b51feec73 languageName: node linkType: hard -"js-levenshtein@npm:^1.1.6": - version: 1.1.6 - resolution: "js-levenshtein@npm:1.1.6" - checksum: 409f052a7f1141be4058d97da7860e08efd97fc588b7a4c5cfa0548bc04f6d576644dae65ab630266dff685d56fb90d494e03d4d79cb484c287746b4f1bf0694 +"micromark-util-decode-string@npm:^1.0.0": + version: 1.1.0 + resolution: "micromark-util-decode-string@npm:1.1.0" + dependencies: + decode-named-character-reference: ^1.0.0 + micromark-util-character: ^1.0.0 + micromark-util-decode-numeric-character-reference: ^1.0.0 + micromark-util-symbol: ^1.0.0 + checksum: f1625155db452f15aa472918499689ba086b9c49d1322a08b22bfbcabe918c61b230a3002c8bc3ea9b1f52ca7a9bb1c3dd43ccb548c7f5f8b16c24a1ae77a813 + languageName: node + linkType: hard + +"micromark-util-encode@npm:^1.0.0": + version: 1.1.0 + resolution: "micromark-util-encode@npm:1.1.0" + checksum: 4ef29d02b12336918cea6782fa87c8c578c67463925221d4e42183a706bde07f4b8b5f9a5e1c7ce8c73bb5a98b261acd3238fecd152e6dd1cdfa2d1ae11b60a0 + languageName: node + linkType: hard + +"micromark-util-html-tag-name@npm:^1.0.0": + version: 1.2.0 + resolution: "micromark-util-html-tag-name@npm:1.2.0" + checksum: ccf0fa99b5c58676dc5192c74665a3bfd1b536fafaf94723bd7f31f96979d589992df6fcf2862eba290ef18e6a8efb30ec8e1e910d9f3fc74f208871e9f84750 languageName: node linkType: hard -"js-tokens@npm:^3.0.0 || ^4.0.0, js-tokens@npm:^4.0.0": - version: 4.0.0 - resolution: "js-tokens@npm:4.0.0" - checksum: 8a95213a5a77deb6cbe94d86340e8d9ace2b93bc367790b260101d2f36a2eaf4e4e22d9fa9cf459b38af3a32fb4190e638024cf82ec95ef708680e405ea7cc78 +"micromark-util-normalize-identifier@npm:^1.0.0": + version: 1.1.0 + resolution: "micromark-util-normalize-identifier@npm:1.1.0" + dependencies: + micromark-util-symbol: ^1.0.0 + checksum: 8655bea41ffa4333e03fc22462cb42d631bbef9c3c07b625fd852b7eb442a110f9d2e5902a42e65188d85498279569502bf92f3434a1180fc06f7c37edfbaee2 languageName: node linkType: hard -"js-yaml@npm:^3.10.0, js-yaml@npm:^3.13.1, js-yaml@npm:^3.6.1, js-yaml@npm:^3.8.3": - version: 3.14.1 - resolution: "js-yaml@npm:3.14.1" +"micromark-util-resolve-all@npm:^1.0.0": + version: 1.1.0 + resolution: "micromark-util-resolve-all@npm:1.1.0" dependencies: - argparse: ^1.0.7 - esprima: ^4.0.0 - bin: - js-yaml: bin/js-yaml.js - checksum: bef146085f472d44dee30ec34e5cf36bf89164f5d585435a3d3da89e52622dff0b188a580e4ad091c3341889e14cb88cac6e4deb16dc5b1e9623bb0601fc255c + micromark-util-types: ^1.0.0 + checksum: 1ce6c0237cd3ca061e76fae6602cf95014e764a91be1b9f10d36cb0f21ca88f9a07de8d49ab8101efd0b140a4fbfda6a1efb72027ab3f4d5b54c9543271dc52c languageName: node linkType: hard -"js-yaml@npm:^4.1.0": - version: 4.1.0 - resolution: "js-yaml@npm:4.1.0" +"micromark-util-sanitize-uri@npm:^1.0.0, micromark-util-sanitize-uri@npm:^1.1.0": + version: 1.2.0 + resolution: "micromark-util-sanitize-uri@npm:1.2.0" dependencies: - argparse: ^2.0.1 - bin: - js-yaml: bin/js-yaml.js - checksum: c7830dfd456c3ef2c6e355cc5a92e6700ceafa1d14bba54497b34a99f0376cecbb3e9ac14d3e5849b426d5a5140709a66237a8c991c675431271c4ce5504151a + micromark-util-character: ^1.0.0 + micromark-util-encode: ^1.0.0 + micromark-util-symbol: ^1.0.0 + checksum: 6663f365c4fe3961d622a580f4a61e34867450697f6806f027f21cf63c92989494895fcebe2345d52e249fe58a35be56e223a9776d084c9287818b40c779acc1 languageName: node linkType: hard -"js-yaml@npm:~3.13.1": - version: 3.13.1 - resolution: "js-yaml@npm:3.13.1" +"micromark-util-subtokenize@npm:^1.0.0": + version: 1.1.0 + resolution: "micromark-util-subtokenize@npm:1.1.0" dependencies: - argparse: ^1.0.7 - esprima: ^4.0.0 - bin: - js-yaml: bin/js-yaml.js - checksum: 7511b764abb66d8aa963379f7d2a404f078457d106552d05a7b556d204f7932384e8477513c124749fa2de52eb328961834562bd09924902c6432e40daa408bc + micromark-util-chunked: ^1.0.0 + micromark-util-symbol: ^1.0.0 + micromark-util-types: ^1.0.0 + uvu: ^0.5.0 + checksum: 4a9d780c4d62910e196ea4fd886dc4079d8e424e5d625c0820016da0ed399a281daff39c50f9288045cc4bcd90ab47647e5396aba500f0853105d70dc8b1fc45 languageName: node linkType: hard -"jsbn@npm:1.1.0": +"micromark-util-symbol@npm:^1.0.0": version: 1.1.0 - resolution: "jsbn@npm:1.1.0" - checksum: 944f924f2bd67ad533b3850eee47603eed0f6ae425fd1ee8c760f477e8c34a05f144c1bd4f5a5dd1963141dc79a2c55f89ccc5ab77d039e7077f3ad196b64965 + resolution: "micromark-util-symbol@npm:1.1.0" + checksum: 02414a753b79f67ff3276b517eeac87913aea6c028f3e668a19ea0fc09d98aea9f93d6222a76ca783d20299af9e4b8e7c797fe516b766185dcc6e93290f11f88 languageName: node linkType: hard -"jsbn@npm:~0.1.0": - version: 0.1.1 - resolution: "jsbn@npm:0.1.1" - checksum: e5ff29c1b8d965017ef3f9c219dacd6e40ad355c664e277d31246c90545a02e6047018c16c60a00f36d561b3647215c41894f5d869ada6908a2e0ce4200c88f2 +"micromark-util-types@npm:^1.0.0, micromark-util-types@npm:^1.0.1": + version: 1.1.0 + resolution: "micromark-util-types@npm:1.1.0" + checksum: b0ef2b4b9589f15aec2666690477a6a185536927ceb7aa55a0f46475852e012d75a1ab945187e5c7841969a842892164b15d58ff8316b8e0d6cc920cabd5ede7 languageName: node linkType: hard -"jsdom@npm:^20.0.0": - version: 20.0.3 - resolution: "jsdom@npm:20.0.3" +"micromark@npm:^3.0.0": + version: 3.2.0 + resolution: "micromark@npm:3.2.0" + dependencies: + "@types/debug": ^4.0.0 + debug: ^4.0.0 + decode-named-character-reference: ^1.0.0 + micromark-core-commonmark: ^1.0.1 + micromark-factory-space: ^1.0.0 + micromark-util-character: ^1.0.0 + micromark-util-chunked: ^1.0.0 + micromark-util-combine-extensions: ^1.0.0 + micromark-util-decode-numeric-character-reference: ^1.0.0 + micromark-util-encode: ^1.0.0 + micromark-util-normalize-identifier: ^1.0.0 + micromark-util-resolve-all: ^1.0.0 + micromark-util-sanitize-uri: ^1.0.0 + micromark-util-subtokenize: ^1.0.0 + micromark-util-symbol: ^1.0.0 + micromark-util-types: ^1.0.1 + uvu: ^0.5.0 + checksum: 56c15851ad3eb8301aede65603473443e50c92a54849cac1dadd57e4ec33ab03a0a77f3df03de47133e6e8f695dae83b759b514586193269e98c0bf319ecd5e4 + languageName: node + linkType: hard + +"micromatch@npm:^4.0.2, micromatch@npm:^4.0.4, micromatch@npm:^4.0.5, micromatch@npm:^4.0.8": + version: 4.0.8 + resolution: "micromatch@npm:4.0.8" dependencies: - abab: ^2.0.6 - acorn: ^8.8.1 - acorn-globals: ^7.0.0 - cssom: ^0.5.0 - cssstyle: ^2.3.0 - data-urls: ^3.0.2 - decimal.js: ^10.4.2 - domexception: ^4.0.0 - escodegen: ^2.0.0 - form-data: ^4.0.0 - html-encoding-sniffer: ^3.0.0 - http-proxy-agent: ^5.0.0 - https-proxy-agent: ^5.0.1 - is-potential-custom-element-name: ^1.0.1 - nwsapi: ^2.2.2 - parse5: ^7.1.1 - saxes: ^6.0.0 - symbol-tree: ^3.2.4 - tough-cookie: ^4.1.2 - w3c-xmlserializer: ^4.0.0 - webidl-conversions: ^7.0.0 - whatwg-encoding: ^2.0.0 - whatwg-mimetype: ^3.0.0 - whatwg-url: ^11.0.0 - ws: ^8.11.0 - xml-name-validator: ^4.0.0 - peerDependencies: - canvas: ^2.5.0 - peerDependenciesMeta: - canvas: - optional: true - checksum: 6e2ae21db397133a061b270c26d2dbc0b9051733ea3b896a7ece78d79f475ff0974f766a413c1198a79c793159119169f2335ddb23150348fbfdcfa6f3105536 + braces: ^3.0.3 + picomatch: ^2.3.1 + checksum: 79920eb634e6f400b464a954fcfa589c4e7c7143209488e44baf627f9affc8b1e306f41f4f0deedde97e69cb725920879462d3e750ab3bd3c1aed675bb3a8966 languageName: node linkType: hard -"jsep@npm:^1.1.2, jsep@npm:^1.2.0": - version: 1.3.9 - resolution: "jsep@npm:1.3.9" - checksum: d1f3e2cc00209f67a989b73c2a89d2ccbea908d950ec959e2448c6449b134c6367b47eef4e1292767cb490f0b5b72e7309080b93ee4c7398684df2514dbd33a3 +"miller-rabin@npm:^4.0.0": + version: 4.0.1 + resolution: "miller-rabin@npm:4.0.1" + dependencies: + bn.js: ^4.0.0 + brorand: ^1.0.1 + bin: + miller-rabin: bin/miller-rabin + checksum: 00cd1ab838ac49b03f236cc32a14d29d7d28637a53096bf5c6246a032a37749c9bd9ce7360cbf55b41b89b7d649824949ff12bc8eee29ac77c6b38eada619ece languageName: node linkType: hard -"jsesc@npm:^3.0.2, jsesc@npm:~3.0.2": - version: 3.0.2 - resolution: "jsesc@npm:3.0.2" - bin: - jsesc: bin/jsesc - checksum: a36d3ca40574a974d9c2063bf68c2b6141c20da8f2a36bd3279fc802563f35f0527a6c828801295bdfb2803952cf2cf387786c2c90ed564f88d5782475abfe3c +"mime-db@npm:1.52.0": + version: 1.52.0 + resolution: "mime-db@npm:1.52.0" + checksum: 0d99a03585f8b39d68182803b12ac601d9c01abfa28ec56204fa330bc9f3d1c5e14beb049bafadb3dbdf646dfb94b87e24d4ec7b31b7279ef906a8ea9b6a513f languageName: node linkType: hard -"json-bigint@npm:^1.0.0": - version: 1.0.0 - resolution: "json-bigint@npm:1.0.0" - dependencies: - bignumber.js: ^9.0.0 - checksum: c67bb93ccb3c291e60eb4b62931403e378906aab113ec1c2a8dd0f9a7f065ad6fd9713d627b732abefae2e244ac9ce1721c7a3142b2979532f12b258634ce6f6 +"mime-db@npm:>= 1.43.0 < 2": + version: 1.53.0 + resolution: "mime-db@npm:1.53.0" + checksum: 3fd9380bdc0b085d0b56b580e4f89ca4fc3b823722310d795c248f0806b9a80afd5d8f4347f015ad943b9ecfa7cc0b71dffa0db96fa776d01a13474821a2c7fb languageName: node linkType: hard -"json-buffer@npm:3.0.1, json-buffer@npm:^3.0.1": - version: 3.0.1 - resolution: "json-buffer@npm:3.0.1" - checksum: 9026b03edc2847eefa2e37646c579300a1f3a4586cfb62bf857832b60c852042d0d6ae55d1afb8926163fa54c2b01d83ae24705f34990348bdac6273a29d4581 +"mime-types@npm:^2.1.12, mime-types@npm:^2.1.18, mime-types@npm:^2.1.27, mime-types@npm:^2.1.31, mime-types@npm:~2.1.17, mime-types@npm:~2.1.19, mime-types@npm:~2.1.24, mime-types@npm:~2.1.34": + version: 2.1.35 + resolution: "mime-types@npm:2.1.35" + dependencies: + mime-db: 1.52.0 + checksum: 89a5b7f1def9f3af5dad6496c5ed50191ae4331cc5389d7c521c8ad28d5fdad2d06fd81baf38fed813dc4e46bb55c8145bb0ff406330818c9cf712fb2e9b3836 languageName: node linkType: hard -"json-parse-even-better-errors@npm:^2.3.0, json-parse-even-better-errors@npm:^2.3.1": - version: 2.3.1 - resolution: "json-parse-even-better-errors@npm:2.3.1" - checksum: 798ed4cf3354a2d9ccd78e86d2169515a0097a5c133337807cdf7f1fc32e1391d207ccfc276518cc1d7d8d4db93288b8a50ba4293d212ad1336e52a8ec0a941f +"mime@npm:1.6.0": + version: 1.6.0 + resolution: "mime@npm:1.6.0" + bin: + mime: cli.js + checksum: fef25e39263e6d207580bdc629f8872a3f9772c923c7f8c7e793175cee22777bbe8bba95e5d509a40aaa292d8974514ce634ae35769faa45f22d17edda5e8557 languageName: node linkType: hard -"json-schema-compare@npm:^0.2.2": - version: 0.2.2 - resolution: "json-schema-compare@npm:0.2.2" - dependencies: - lodash: ^4.17.4 - checksum: dd6f2173857c8e3b77d6ebdfa05bd505bba5b08709ab46b532722f5d1c33b5fee1fc8f3c97d0c0d011db25f9f3b0baf7ab783bb5f55c32abd9f1201760e43c2c +"mime@npm:2.6.0": + version: 2.6.0 + resolution: "mime@npm:2.6.0" + bin: + mime: cli.js + checksum: 1497ba7b9f6960694268a557eae24b743fd2923da46ec392b042469f4b901721ba0adcf8b0d3c2677839d0e243b209d76e5edcbd09cfdeffa2dfb6bb4df4b862 languageName: node linkType: hard -"json-schema-merge-allof@npm:^0.8.1": - version: 0.8.1 - resolution: "json-schema-merge-allof@npm:0.8.1" - dependencies: - compute-lcm: ^1.1.2 - json-schema-compare: ^0.2.2 - lodash: ^4.17.20 - checksum: 82700f6ac77351959138d6b153d77375a8c29cf48d907241b85c8292dd77aabd8cb816400f2b0d17062c4ccc8893832ec4f664ab9c814927ef502e7a595ea873 +"mime@npm:^3.0.0": + version: 3.0.0 + resolution: "mime@npm:3.0.0" + bin: + mime: cli.js + checksum: f43f9b7bfa64534e6b05bd6062961681aeb406a5b53673b53b683f27fcc4e739989941836a355eef831f4478923651ecc739f4a5f6e20a76487b432bfd4db928 languageName: node linkType: hard -"json-schema-traverse@npm:^0.4.1": - version: 0.4.1 - resolution: "json-schema-traverse@npm:0.4.1" - checksum: 7486074d3ba247769fda17d5181b345c9fb7d12e0da98b22d1d71a5db9698d8b4bd900a3ec1a4ffdd60846fc2556274a5c894d0c48795f14cb03aeae7b55260b +"mimic-fn@npm:^2.1.0": + version: 2.1.0 + resolution: "mimic-fn@npm:2.1.0" + checksum: d2421a3444848ce7f84bd49115ddacff29c15745db73f54041edc906c14b131a38d05298dae3081667627a59b2eb1ca4b436ff2e1b80f69679522410418b478a languageName: node linkType: hard -"json-schema-traverse@npm:^1.0.0": - version: 1.0.0 - resolution: "json-schema-traverse@npm:1.0.0" - checksum: 02f2f466cdb0362558b2f1fd5e15cce82ef55d60cd7f8fa828cf35ba74330f8d767fcae5c5c2adb7851fa811766c694b9405810879bc4e1ddd78a7c0e03658ad +"mimic-response@npm:^2.0.0": + version: 2.1.0 + resolution: "mimic-response@npm:2.1.0" + checksum: 014fad6ab936657e5f2f48bd87af62a8e928ebe84472aaf9e14fec4fcb31257a5edff77324d8ac13ddc6685ba5135cf16e381efac324e5f174fb4ddbf902bf07 languageName: node linkType: hard -"json-schema@npm:0.4.0, json-schema@npm:^0.4.0": - version: 0.4.0 - resolution: "json-schema@npm:0.4.0" - checksum: 66389434c3469e698da0df2e7ac5a3281bcff75e797a5c127db7c5b56270e01ae13d9afa3c03344f76e32e81678337a8c912bdbb75101c62e487dc3778461d72 +"mimic-response@npm:^3.1.0": + version: 3.1.0 + resolution: "mimic-response@npm:3.1.0" + checksum: 25739fee32c17f433626bf19f016df9036b75b3d84a3046c7d156e72ec963dd29d7fc8a302f55a3d6c5a4ff24259676b15d915aad6480815a969ff2ec0836867 languageName: node linkType: hard -"json-stable-stringify-without-jsonify@npm:^1.0.1": +"min-indent@npm:^1.0.0": version: 1.0.1 - resolution: "json-stable-stringify-without-jsonify@npm:1.0.1" - checksum: cff44156ddce9c67c44386ad5cddf91925fe06b1d217f2da9c4910d01f358c6e3989c4d5a02683c7a5667f9727ff05831f7aa8ae66c8ff691c556f0884d49215 + resolution: "min-indent@npm:1.0.1" + checksum: bfc6dd03c5eaf623a4963ebd94d087f6f4bbbfd8c41329a7f09706b0cb66969c4ddd336abeb587bc44bc6f08e13bf90f0b374f9d71f9f01e04adc2cd6f083ef1 languageName: node linkType: hard -"json-stable-stringify@npm:^1.0.1": - version: 1.1.1 - resolution: "json-stable-stringify@npm:1.1.1" +"mini-css-extract-plugin@npm:^2.4.2": + version: 2.9.1 + resolution: "mini-css-extract-plugin@npm:2.9.1" dependencies: - call-bind: ^1.0.5 - isarray: ^2.0.5 - jsonify: ^0.0.1 - object-keys: ^1.1.1 - checksum: e1ba06600fd278767eeff53f28e408e29c867e79abf564e7aadc3ce8f31f667258f8db278ef28831e45884dd687388fa1910f46e599fc19fb94c9afbbe3a4de8 + schema-utils: ^4.0.0 + tapable: ^2.2.1 + peerDependencies: + webpack: ^5.0.0 + checksum: 036b0fbb207cf9a56e2f5f5dce5e35100cbd255e5b5a920a5357ec99215af16a77136020729b2d004a041d04ebb0a544b2f442535cbb982704dcd50297014c9e languageName: node linkType: hard -"json-stringify-safe@npm:^5.0.1, json-stringify-safe@npm:~5.0.1": - version: 5.0.1 - resolution: "json-stringify-safe@npm:5.0.1" - checksum: 48ec0adad5280b8a96bb93f4563aa1667fd7a36334f79149abd42446d0989f2ddc58274b479f4819f1f00617957e6344c886c55d05a4e15ebb4ab931e4a6a8ee +"minim@npm:~0.23.8": + version: 0.23.8 + resolution: "minim@npm:0.23.8" + dependencies: + lodash: ^4.15.0 + checksum: 98e19a431189cee4dfad766e19948fb65b3607780bda2dc3f76b7bb35f9a468f372fb1b4c4b2ebfe348191e09f2b981579967b29cf02038798efe4eab326ffca languageName: node linkType: hard -"json5@npm:^1.0.1, json5@npm:^1.0.2": - version: 1.0.2 - resolution: "json5@npm:1.0.2" +"minimalistic-assert@npm:^1.0.0, minimalistic-assert@npm:^1.0.1": + version: 1.0.1 + resolution: "minimalistic-assert@npm:1.0.1" + checksum: cc7974a9268fbf130fb055aff76700d7e2d8be5f761fb5c60318d0ed010d839ab3661a533ad29a5d37653133385204c503bfac995aaa4236f4e847461ea32ba7 + languageName: node + linkType: hard + +"minimalistic-crypto-utils@npm:^1.0.1": + version: 1.0.1 + resolution: "minimalistic-crypto-utils@npm:1.0.1" + checksum: 6e8a0422b30039406efd4c440829ea8f988845db02a3299f372fceba56ffa94994a9c0f2fd70c17f9969eedfbd72f34b5070ead9656a34d3f71c0bd72583a0ed + languageName: node + linkType: hard + +"minimatch@npm:3.1.2, minimatch@npm:^3.0.4, minimatch@npm:^3.0.5, minimatch@npm:^3.1.1, minimatch@npm:^3.1.2": + version: 3.1.2 + resolution: "minimatch@npm:3.1.2" dependencies: - minimist: ^1.2.0 - bin: - json5: lib/cli.js - checksum: 866458a8c58a95a49bef3adba929c625e82532bcff1fe93f01d29cb02cac7c3fe1f4b79951b7792c2da9de0b32871a8401a6e3c5b36778ad852bf5b8a61165d7 + brace-expansion: ^1.1.7 + checksum: c154e566406683e7bcb746e000b84d74465b3a832c45d59912b9b55cd50dee66e5c4b1e5566dba26154040e51672f9aa450a9aef0c97cfc7336b78b7afb9540a languageName: node linkType: hard -"json5@npm:^2.1.2, json5@npm:^2.2.0, json5@npm:^2.2.3": - version: 2.2.3 - resolution: "json5@npm:2.2.3" - bin: - json5: lib/cli.js - checksum: 2a7436a93393830bce797d4626275152e37e877b265e94ca69c99e3d20c2b9dab021279146a39cdb700e71b2dd32a4cebd1514cd57cee102b1af906ce5040349 +"minimatch@npm:9.0.3": + version: 9.0.3 + resolution: "minimatch@npm:9.0.3" + dependencies: + brace-expansion: ^2.0.1 + checksum: 253487976bf485b612f16bf57463520a14f512662e592e95c571afdab1442a6a6864b6c88f248ce6fc4ff0b6de04ac7aa6c8bb51e868e99d1d65eb0658a708b5 languageName: node linkType: hard -"jsonc-parser@npm:^3.0.0, jsonc-parser@npm:^3.2.0": - version: 3.3.1 - resolution: "jsonc-parser@npm:3.3.1" - checksum: 81ef19d98d9c6bd6e4a37a95e2753c51c21705cbeffd895e177f4b542cca9cda5fda12fb942a71a2e824a9132cf119dc2e642e9286386055e1365b5478f49a47 +"minimatch@npm:^5.0.1, minimatch@npm:^5.1.0": + version: 5.1.6 + resolution: "minimatch@npm:5.1.6" + dependencies: + brace-expansion: ^2.0.1 + checksum: 7564208ef81d7065a370f788d337cd80a689e981042cb9a1d0e6580b6c6a8c9279eba80010516e258835a988363f99f54a6f711a315089b8b42694f5da9d0d77 languageName: node linkType: hard -"jsonc-parser@npm:~2.2.1": - version: 2.2.1 - resolution: "jsonc-parser@npm:2.2.1" - checksum: c113878b5edd4232ba0742c7e0ddefb22a2a8ef1aafa1674c0eb4c5df0be11ed02bc8288f52ebe44b1696de336e1bc06e7bbc1458d0f910540d72b57ee7c8084 +"minimatch@npm:^7.4.3": + version: 7.4.6 + resolution: "minimatch@npm:7.4.6" + dependencies: + brace-expansion: ^2.0.1 + checksum: 1a6c8d22618df9d2a88aabeef1de5622eb7b558e9f8010be791cb6b0fa6e102d39b11c28d75b855a1e377b12edc7db8ff12a99c20353441caa6a05e78deb5da9 languageName: node linkType: hard -"jsonfile@npm:^4.0.0": - version: 4.0.0 - resolution: "jsonfile@npm:4.0.0" +"minimatch@npm:^8.0.2": + version: 8.0.4 + resolution: "minimatch@npm:8.0.4" dependencies: - graceful-fs: ^4.1.6 - dependenciesMeta: - graceful-fs: - optional: true - checksum: 6447d6224f0d31623eef9b51185af03ac328a7553efcee30fa423d98a9e276ca08db87d71e17f2310b0263fd3ffa6c2a90a6308367f661dc21580f9469897c9e + brace-expansion: ^2.0.1 + checksum: 2e46cffb86bacbc524ad45a6426f338920c529dd13f3a732cc2cf7618988ee1aae88df4ca28983285aca9e0f45222019ac2d14ebd17c1edadd2ee12221ab801a languageName: node linkType: hard -"jsonfile@npm:^6.0.1": - version: 6.1.0 - resolution: "jsonfile@npm:6.1.0" +"minimatch@npm:^9.0.0, minimatch@npm:^9.0.4, minimatch@npm:^9.0.5": + version: 9.0.5 + resolution: "minimatch@npm:9.0.5" dependencies: - graceful-fs: ^4.1.6 - universalify: ^2.0.0 - dependenciesMeta: - graceful-fs: - optional: true - checksum: 7af3b8e1ac8fe7f1eccc6263c6ca14e1966fcbc74b618d3c78a0a2075579487547b94f72b7a1114e844a1e15bb00d440e5d1720bfc4612d790a6f285d5ea8354 + brace-expansion: ^2.0.1 + checksum: 2c035575eda1e50623c731ec6c14f65a85296268f749b9337005210bb2b34e2705f8ef1a358b188f69892286ab99dc42c8fb98a57bde55c8d81b3023c19cea28 languageName: node linkType: hard -"jsonify@npm:^0.0.1": - version: 0.0.1 - resolution: "jsonify@npm:0.0.1" - checksum: 027287e1c0294fce15f18c0ff990cfc2318e7f01fb76515f784d5cd0784abfec6fc5c2355c3a2f2cb0ad7f4aa2f5b74ebbfe4e80476c35b2d13cabdb572e1134 +"minimatch@npm:~3.0.3": + version: 3.0.8 + resolution: "minimatch@npm:3.0.8" + dependencies: + brace-expansion: ^1.1.7 + checksum: 850cca179cad715133132693e6963b0db64ab0988c4d211415b087fc23a3e46321e2c5376a01bf5623d8782aba8bdf43c571e2e902e51fdce7175c7215c29f8b languageName: node linkType: hard -"jsonpath-plus@npm:7.1.0": - version: 7.1.0 - resolution: "jsonpath-plus@npm:7.1.0" - checksum: a4005dc860c6b7e339229842537ceb6eb839d87a3447f989792b9c64f2564bbbd40663515f9481fb5a1b6cb0f988afba5b0b150e0285c463b794a45ed1aaf555 +"minimist@npm:^1.2.0, minimist@npm:^1.2.3, minimist@npm:^1.2.5, minimist@npm:^1.2.6, minimist@npm:^1.2.8": + version: 1.2.8 + resolution: "minimist@npm:1.2.8" + checksum: 75a6d645fb122dad29c06a7597bddea977258957ed88d7a6df59b5cd3fe4a527e253e9bbf2e783e4b73657f9098b96a5fe96ab8a113655d4109108577ecf85b0 languageName: node linkType: hard -"jsonpath-plus@npm:^6.0.1": - version: 6.0.1 - resolution: "jsonpath-plus@npm:6.0.1" - checksum: bddec34b742249c5b38077dfcd8eb479fab4e077943253017326503ce4f527ef66938288c728712fd923907493d6eaba69a43015dc3dd9fdf48d89028ae7f466 +"minimisted@npm:^2.0.0": + version: 2.0.1 + resolution: "minimisted@npm:2.0.1" + dependencies: + minimist: ^1.2.5 + checksum: 6bc3df14558481c96764cfd6bf77a59f5838dec715c38c1e338193c1e56f536ba792ccbae84ff6632d13a7dd37ac888141c091d23733229b8d100148eec930aa languageName: node linkType: hard -"jsonpath-plus@npm:^7.2.0": - version: 7.2.0 - resolution: "jsonpath-plus@npm:7.2.0" - checksum: 05f447339d29be861e307d6e812aec1b9b88a3ba6bba286966a4e8bed3e752bee3d715eabfc21dce968be85ccb48bf79d2c1af78da7b9b74cd1b446d4d5d02f5 +"minipass-collect@npm:^1.0.2": + version: 1.0.2 + resolution: "minipass-collect@npm:1.0.2" + dependencies: + minipass: ^3.0.0 + checksum: 14df761028f3e47293aee72888f2657695ec66bd7d09cae7ad558da30415fdc4752bbfee66287dcc6fd5e6a2fa3466d6c484dc1cbd986525d9393b9523d97f10 languageName: node linkType: hard -"jsonpath@npm:^1.1.1": - version: 1.1.1 - resolution: "jsonpath@npm:1.1.1" +"minipass-collect@npm:^2.0.1": + version: 2.0.1 + resolution: "minipass-collect@npm:2.0.1" dependencies: - esprima: 1.2.2 - static-eval: 2.0.2 - underscore: 1.12.1 - checksum: 5480d8e9e424fe2ed4ade6860b6e2cefddb21adb3a99abe0254cd9428e8ef9b0c9fb5729d6a5a514e90df50d645ccea9f3be48d627570e6222dd5dadc28eba7b + minipass: ^7.0.3 + checksum: b251bceea62090f67a6cced7a446a36f4cd61ee2d5cea9aee7fff79ba8030e416327a1c5aa2908dc22629d06214b46d88fdab8c51ac76bacbf5703851b5ad342 languageName: node linkType: hard -"jsonpointer@npm:^5.0.0, jsonpointer@npm:^5.0.1": - version: 5.0.1 - resolution: "jsonpointer@npm:5.0.1" - checksum: 0b40f712900ad0c846681ea2db23b6684b9d5eedf55807b4708c656f5894b63507d0e28ae10aa1bddbea551241035afe62b6df0800fc94c2e2806a7f3adecd7c +"minipass-fetch@npm:^2.0.3": + version: 2.1.2 + resolution: "minipass-fetch@npm:2.1.2" + dependencies: + encoding: ^0.1.13 + minipass: ^3.1.6 + minipass-sized: ^1.0.3 + minizlib: ^2.1.2 + dependenciesMeta: + encoding: + optional: true + checksum: 3f216be79164e915fc91210cea1850e488793c740534985da017a4cbc7a5ff50506956d0f73bb0cb60e4fe91be08b6b61ef35101706d3ef5da2c8709b5f08f91 languageName: node linkType: hard -"jsonwebtoken@npm:^9.0.0, jsonwebtoken@npm:^9.0.2": - version: 9.0.2 - resolution: "jsonwebtoken@npm:9.0.2" +"minipass-fetch@npm:^3.0.0": + version: 3.0.5 + resolution: "minipass-fetch@npm:3.0.5" dependencies: - jws: ^3.2.2 - lodash.includes: ^4.3.0 - lodash.isboolean: ^3.0.3 - lodash.isinteger: ^4.0.4 - lodash.isnumber: ^3.0.3 - lodash.isplainobject: ^4.0.6 - lodash.isstring: ^4.0.1 - lodash.once: ^4.0.0 - ms: ^2.1.1 - semver: ^7.5.4 - checksum: fc739a6a8b33f1974f9772dca7f8493ca8df4cc31c5a09dcfdb7cff77447dcf22f4236fb2774ef3fe50df0abeb8e1c6f4c41eba82f500a804ab101e2fbc9d61a + encoding: ^0.1.13 + minipass: ^7.0.3 + minipass-sized: ^1.0.3 + minizlib: ^2.1.2 + dependenciesMeta: + encoding: + optional: true + checksum: 8047d273236157aab27ab7cd8eab7ea79e6ecd63e8f80c3366ec076cb9a0fed550a6935bab51764369027c414647fd8256c2a20c5445fb250c483de43350de83 languageName: node linkType: hard -"jsprim@npm:^1.2.2": - version: 1.4.2 - resolution: "jsprim@npm:1.4.2" +"minipass-flush@npm:^1.0.5": + version: 1.0.5 + resolution: "minipass-flush@npm:1.0.5" dependencies: - assert-plus: 1.0.0 - extsprintf: 1.3.0 - json-schema: 0.4.0 - verror: 1.10.0 - checksum: 2ad1b9fdcccae8b3d580fa6ced25de930eaa1ad154db21bbf8478a4d30bbbec7925b5f5ff29b933fba9412b16a17bd484a8da4fdb3663b5e27af95dd693bab2a + minipass: ^3.0.0 + checksum: 56269a0b22bad756a08a94b1ffc36b7c9c5de0735a4dd1ab2b06c066d795cfd1f0ac44a0fcae13eece5589b908ecddc867f04c745c7009be0b566421ea0944cf languageName: node linkType: hard -"jsx-ast-utils@npm:^2.4.1 || ^3.0.0, jsx-ast-utils@npm:^3.3.5": - version: 3.3.5 - resolution: "jsx-ast-utils@npm:3.3.5" +"minipass-pipeline@npm:^1.2.4": + version: 1.2.4 + resolution: "minipass-pipeline@npm:1.2.4" dependencies: - array-includes: ^3.1.6 - array.prototype.flat: ^1.3.1 - object.assign: ^4.1.4 - object.values: ^1.1.6 - checksum: f4b05fa4d7b5234230c905cfa88d36dc8a58a6666975a3891429b1a8cdc8a140bca76c297225cb7a499fad25a2c052ac93934449a2c31a44fc9edd06c773780a + minipass: ^3.0.0 + checksum: b14240dac0d29823c3d5911c286069e36d0b81173d7bdf07a7e4a91ecdef92cdff4baaf31ea3746f1c61e0957f652e641223970870e2353593f382112257971b languageName: node linkType: hard -"jwa@npm:^1.4.1": - version: 1.4.1 - resolution: "jwa@npm:1.4.1" +"minipass-sized@npm:^1.0.3": + version: 1.0.3 + resolution: "minipass-sized@npm:1.0.3" dependencies: - buffer-equal-constant-time: 1.0.1 - ecdsa-sig-formatter: 1.0.11 - safe-buffer: ^5.0.1 - checksum: ff30ea7c2dcc61f3ed2098d868bf89d43701605090c5b21b5544b512843ec6fd9e028381a4dda466cbcdb885c2d1150f7c62e7168394ee07941b4098e1035e2f + minipass: ^3.0.0 + checksum: 79076749fcacf21b5d16dd596d32c3b6bf4d6e62abb43868fac21674078505c8b15eaca4e47ed844985a4514854f917d78f588fcd029693709417d8f98b2bd60 languageName: node linkType: hard -"jwa@npm:^2.0.0": - version: 2.0.0 - resolution: "jwa@npm:2.0.0" +"minipass@npm:^3.0.0, minipass@npm:^3.1.1, minipass@npm:^3.1.6": + version: 3.3.6 + resolution: "minipass@npm:3.3.6" dependencies: - buffer-equal-constant-time: 1.0.1 - ecdsa-sig-formatter: 1.0.11 - safe-buffer: ^5.0.1 - checksum: 8f00b71ad5fe94cb55006d0d19202f8f56889109caada2f7eeb63ca81755769ce87f4f48101967f398462e3b8ae4faebfbd5a0269cb755dead5d63c77ba4d2f1 + yallist: ^4.0.0 + checksum: a30d083c8054cee83cdcdc97f97e4641a3f58ae743970457b1489ce38ee1167b3aaf7d815cd39ec7a99b9c40397fd4f686e83750e73e652b21cb516f6d845e48 languageName: node linkType: hard -"jws@npm:^3.2.2": - version: 3.2.2 - resolution: "jws@npm:3.2.2" - dependencies: - jwa: ^1.4.1 - safe-buffer: ^5.0.1 - checksum: f0213fe5b79344c56cd443428d8f65c16bf842dc8cb8f5aed693e1e91d79c20741663ad6eff07a6d2c433d1831acc9814e8d7bada6a0471fbb91d09ceb2bf5c2 +"minipass@npm:^4.2.4": + version: 4.2.8 + resolution: "minipass@npm:4.2.8" + checksum: 7f4914d5295a9a30807cae5227a37a926e6d910c03f315930fde52332cf0575dfbc20295318f91f0baf0e6bb11a6f668e30cde8027dea7a11b9d159867a3c830 languageName: node linkType: hard -"jws@npm:^4.0.0": - version: 4.0.0 - resolution: "jws@npm:4.0.0" - dependencies: - jwa: ^2.0.0 - safe-buffer: ^5.0.1 - checksum: d68d07aa6d1b8cb35c363a9bd2b48f15064d342a5d9dc18a250dbbce8dc06bd7e4792516c50baa16b8d14f61167c19e851fd7f66b59ecc68b7f6a013759765f7 +"minipass@npm:^5.0.0": + version: 5.0.0 + resolution: "minipass@npm:5.0.0" + checksum: 425dab288738853fded43da3314a0b5c035844d6f3097a8e3b5b29b328da8f3c1af6fc70618b32c29ff906284cf6406b6841376f21caaadd0793c1d5a6a620ea languageName: node linkType: hard -"keygrip@npm:~1.1.0": - version: 1.1.0 - resolution: "keygrip@npm:1.1.0" - dependencies: - tsscmp: 1.0.6 - checksum: 078cd16a463d187121f0a27c1c9c95c52ad392b620f823431689f345a0501132cee60f6e96914b07d570105af470b96960402accd6c48a0b1f3cd8fac4fa2cae +"minipass@npm:^5.0.0 || ^6.0.2 || ^7.0.0, minipass@npm:^7.0.2, minipass@npm:^7.0.3, minipass@npm:^7.1.2": + version: 7.1.2 + resolution: "minipass@npm:7.1.2" + checksum: 2bfd325b95c555f2b4d2814d49325691c7bee937d753814861b0b49d5edcda55cbbf22b6b6a60bb91eddac8668771f03c5ff647dcd9d0f798e9548b9cdc46ee3 languageName: node linkType: hard -"keyv@npm:*": - version: 5.1.2 - resolution: "keyv@npm:5.1.2" +"minizlib@npm:^2.1.1, minizlib@npm:^2.1.2": + version: 2.1.2 + resolution: "minizlib@npm:2.1.2" dependencies: - "@keyv/serialize": "*" - checksum: 959978b3574e704edf3772f9b447dc779c24a53c09c0297912ac55595013d8b6cbfa529f2019b3952deeadafe82257cc7fac2fdc0077d242553a74015a36d198 + minipass: ^3.0.0 + yallist: ^4.0.0 + checksum: f1fdeac0b07cf8f30fcf12f4b586795b97be856edea22b5e9072707be51fc95d41487faec3f265b42973a304fe3a64acd91a44a3826a963e37b37bafde0212c3 languageName: node linkType: hard -"keyv@npm:^4.5.2, keyv@npm:^4.5.3": - version: 4.5.4 - resolution: "keyv@npm:4.5.4" +"mkdirp-classic@npm:^0.5.2, mkdirp-classic@npm:^0.5.3": + version: 0.5.3 + resolution: "mkdirp-classic@npm:0.5.3" + checksum: 3f4e088208270bbcc148d53b73e9a5bd9eef05ad2cbf3b3d0ff8795278d50dd1d11a8ef1875ff5aea3fa888931f95bfcb2ad5b7c1061cfefd6284d199e6776ac + languageName: node + linkType: hard + +"mkdirp@npm:^0.5.4, mkdirp@npm:^0.5.6": + version: 0.5.6 + resolution: "mkdirp@npm:0.5.6" dependencies: - json-buffer: 3.0.1 - checksum: 74a24395b1c34bd44ad5cb2b49140d087553e170625240b86755a6604cd65aa16efdbdeae5cdb17ba1284a0fbb25ad06263755dbc71b8d8b06f74232ce3cdd72 + minimist: ^1.2.6 + bin: + mkdirp: bin/cmd.js + checksum: 0c91b721bb12c3f9af4b77ebf73604baf350e64d80df91754dc509491ae93bf238581e59c7188360cec7cb62fc4100959245a42cfe01834efedc5e9d068376c2 languageName: node linkType: hard -"kind-of@npm:^6.0.2": - version: 6.0.3 - resolution: "kind-of@npm:6.0.3" - checksum: 3ab01e7b1d440b22fe4c31f23d8d38b4d9b91d9f291df683476576493d5dfd2e03848a8b05813dd0c3f0e835bc63f433007ddeceb71f05cb25c45ae1b19c6d3b +"mkdirp@npm:^1.0.3, mkdirp@npm:^1.0.4": + version: 1.0.4 + resolution: "mkdirp@npm:1.0.4" + bin: + mkdirp: bin/cmd.js + checksum: a96865108c6c3b1b8e1d5e9f11843de1e077e57737602de1b82030815f311be11f96f09cce59bd5b903d0b29834733e5313f9301e3ed6d6f6fba2eae0df4298f languageName: node linkType: hard -"kleur@npm:^3.0.3": - version: 3.0.3 - resolution: "kleur@npm:3.0.3" - checksum: df82cd1e172f957bae9c536286265a5cdbd5eeca487cb0a3b2a7b41ef959fc61f8e7c0e9aeea9c114ccf2c166b6a8dd45a46fd619c1c569d210ecd2765ad5169 +"mkdirp@npm:^3.0.1": + version: 3.0.1 + resolution: "mkdirp@npm:3.0.1" + bin: + mkdirp: dist/cjs/src/bin.js + checksum: 972deb188e8fb55547f1e58d66bd6b4a3623bf0c7137802582602d73e6480c1c2268dcbafbfb1be466e00cc7e56ac514d7fd9334b7cf33e3e2ab547c16f83a8d + languageName: node + linkType: hard + +"mobx-react-lite@npm:^3.4.0": + version: 3.4.3 + resolution: "mobx-react-lite@npm:3.4.3" + peerDependencies: + mobx: ^6.1.0 + react: ^16.8.0 || ^17 || ^18 + peerDependenciesMeta: + react-dom: + optional: true + react-native: + optional: true + checksum: 60a2580eb9a0b9988fc76959d7299f018733dc33cacaa73c45500953006d4d45e738d9ae39ccfc767ac19a75656dbc028d833282c848fbc67d8d18a2bcb5c262 languageName: node linkType: hard -"knex@npm:^3.0.0": - version: 3.1.0 - resolution: "knex@npm:3.1.0" +"mobx-react@npm:^7.6.0": + version: 7.6.0 + resolution: "mobx-react@npm:7.6.0" dependencies: - colorette: 2.0.19 - commander: ^10.0.0 - debug: 4.3.4 - escalade: ^3.1.1 - esm: ^3.2.25 - get-package-type: ^0.1.0 - getopts: 2.3.0 - interpret: ^2.2.0 - lodash: ^4.17.21 - pg-connection-string: 2.6.2 - rechoir: ^0.8.0 - resolve-from: ^5.0.0 - tarn: ^3.0.2 - tildify: 2.0.0 + mobx-react-lite: ^3.4.0 + peerDependencies: + mobx: ^6.1.0 + react: ^16.8.0 || ^17 || ^18 peerDependenciesMeta: - better-sqlite3: - optional: true - mysql: - optional: true - mysql2: - optional: true - pg: - optional: true - pg-native: - optional: true - sqlite3: + react-dom: optional: true - tedious: + react-native: optional: true - bin: - knex: bin/cli.js - checksum: 3905f8d27960975f7f57f3f488d1ef3ccf47784acc8eb627e8a28cbbe1f296c6879c8ef0cbd9e17e867be80117d305cd948545f3fbd4c74b24c90d2413bbc021 + checksum: 07ce6eb297ddab2cc693df7350a3e2f730194cc6eb56bd912f80e28f9427237569e0bda6b30167154faf094e7c5e5ff360abd52acd2860d9a0d0e53320617ee8 languageName: node linkType: hard -"knip@npm:^5.27.4": - version: 5.34.2 - resolution: "knip@npm:5.34.2" - dependencies: - "@nodelib/fs.walk": 1.2.8 - "@snyk/github-codeowners": 1.1.0 - easy-table: 1.2.0 - enhanced-resolve: ^5.17.1 - fast-glob: ^3.3.2 - jiti: ^2.3.3 - js-yaml: ^4.1.0 - minimist: ^1.2.8 - picocolors: ^1.0.0 - picomatch: ^4.0.1 - pretty-ms: ^9.0.0 - smol-toml: ^1.3.0 - strip-json-comments: 5.0.1 - summary: 2.1.0 - zod: ^3.22.4 - zod-validation-error: ^3.0.3 - peerDependencies: - "@types/node": ">=18" - typescript: ">=5.0.4" - bin: - knip: bin/knip.js - knip-bun: bin/knip-bun.js - checksum: de25b787ba4742e8e5349dd7a7cedbb216aac07ce718dee6312514cbd743a6ca416a585c79724acc43a66d06bdc1c65e40f673ae1513d7b3b3ed70c38da0f093 +"mobx@npm:^6.9.0": + version: 6.13.5 + resolution: "mobx@npm:6.13.5" + checksum: 2a253e505900169326873b573660dab58ce8284a435c75d77775a665af9eed623c1976a5eab3cfb53561cac4713f70194f49a2b8e4111419a2e4291f51e5485a languageName: node linkType: hard -"koa-compose@npm:^4.1.0": - version: 4.1.0 - resolution: "koa-compose@npm:4.1.0" - checksum: 46cb16792d96425e977c2ae4e5cb04930280740e907242ec9c25e3fb8b4a1d7b54451d7432bc24f40ec62255edea71894d2ceeb8238501842b4e48014f2e83db +"mockttp@npm:^3.13.0": + version: 3.15.5 + resolution: "mockttp@npm:3.15.5" + dependencies: + "@graphql-tools/schema": ^8.5.0 + "@graphql-tools/utils": ^8.8.0 + "@httptoolkit/httpolyglot": ^2.2.1 + "@httptoolkit/subscriptions-transport-ws": ^0.11.2 + "@httptoolkit/websocket-stream": ^6.0.1 + "@types/cors": ^2.8.6 + "@types/node": "*" + async-mutex: ^0.5.0 + base64-arraybuffer: ^0.1.5 + body-parser: ^1.15.2 + cacheable-lookup: ^6.0.0 + common-tags: ^1.8.0 + connect: ^3.7.0 + cors: ^2.8.4 + cors-gate: ^1.1.3 + cross-fetch: ^3.1.5 + destroyable-server: ^1.0.2 + express: ^4.14.0 + fast-json-patch: ^3.1.1 + graphql: ^14.0.2 || ^15.5 + graphql-http: ^1.22.0 + graphql-subscriptions: ^1.1.0 + graphql-tag: ^2.12.6 + http-encoding: ^2.0.1 + http2-wrapper: ^2.2.1 + https-proxy-agent: ^5.0.1 + isomorphic-ws: ^4.0.1 + lodash: ^4.16.4 + lru-cache: ^7.14.0 + native-duplexpair: ^1.0.0 + node-forge: ^1.2.1 + pac-proxy-agent: ^7.0.0 + parse-multipart-data: ^1.4.0 + performance-now: ^2.1.0 + portfinder: ^1.0.32 + read-tls-client-hello: ^1.0.0 + semver: ^7.5.3 + socks-proxy-agent: ^7.0.0 + typed-error: ^3.0.2 + urlpattern-polyfill: ^8.0.0 + uuid: ^8.3.2 + ws: ^8.8.0 + bin: + mockttp: dist/admin/admin-bin.js + checksum: 410d8b39cddb7975aeb2289a1735d8d65b28bf032e8b0e8990ce78ddbaa4c7c96108c54714a36a745b4784cf2bf129ddafa93a5458deacce2ca56a4adfd524e9 languageName: node linkType: hard -"koa-convert@npm:^2.0.0": - version: 2.0.0 - resolution: "koa-convert@npm:2.0.0" - dependencies: - co: ^4.6.0 - koa-compose: ^4.1.0 - checksum: 7385b3391995f59c1312142e110d5dff677f9850dbfbcf387cd36a7b0af03b5d26e82b811eb9bb008b4f3e661cdab1f8817596e46b1929da2cf6e97a2f7456ed +"moment@npm:^2.29.4": + version: 2.30.1 + resolution: "moment@npm:2.30.1" + checksum: 859236bab1e88c3e5802afcf797fc801acdbd0ee509d34ea3df6eea21eb6bcc2abd4ae4e4e64aa7c986aa6cba563c6e62806218e6412a765010712e5fa121ba6 languageName: node linkType: hard -"koa@npm:2.15.3": - version: 2.15.3 - resolution: "koa@npm:2.15.3" +"moo-color@npm:^1.0.2": + version: 1.0.3 + resolution: "moo-color@npm:1.0.3" dependencies: - accepts: ^1.3.5 - cache-content-type: ^1.0.0 - content-disposition: ~0.5.2 - content-type: ^1.0.4 - cookies: ~0.9.0 - debug: ^4.3.2 - delegates: ^1.0.0 - depd: ^2.0.0 - destroy: ^1.0.4 - encodeurl: ^1.0.2 - escape-html: ^1.0.3 - fresh: ~0.5.2 - http-assert: ^1.3.0 - http-errors: ^1.6.3 - is-generator-function: ^1.0.7 - koa-compose: ^4.1.0 - koa-convert: ^2.0.0 - on-finished: ^2.3.0 - only: ~0.0.2 - parseurl: ^1.3.2 - statuses: ^1.5.0 - type-is: ^1.6.16 - vary: ^1.1.2 - checksum: 7c3537443b1a588cf5c3e5554b914ff2bad510323d22b41861d5e0c97d47e9c5997965f303ede8be8bd83d309a4eea1f82cd45d35d6838bc21bb1bb6a90d5d25 + color-name: ^1.1.4 + checksum: 02bf59b6bbd5e86641bc062e2dc0843e6e579e18ef67e1c8e93bfc01945df578f20e66ce16aa9632db2aa0e16806e0914a26eb345a804f45fff1ae12a8906a29 languageName: node linkType: hard -"kuler@npm:^2.0.0": - version: 2.0.0 - resolution: "kuler@npm:2.0.0" - checksum: 9e10b5a1659f9ed8761d38df3c35effabffbd19fc6107324095238e4ef0ff044392cae9ac64a1c2dda26e532426485342226b93806bd97504b174b0dcf04ed81 +"moo@npm:^0.5.0": + version: 0.5.2 + resolution: "moo@npm:0.5.2" + checksum: 5a41ddf1059fd0feb674d917c4774e41c877f1ca980253be4d3aae1a37f4bc513f88815041243f36f5cf67a62fb39324f3f997cf7fb17b6cb00767c165e7c499 languageName: node linkType: hard -"language-subtag-registry@npm:^0.3.20": - version: 0.3.23 - resolution: "language-subtag-registry@npm:0.3.23" - checksum: 0b64c1a6c5431c8df648a6d25594ff280613c886f4a1a542d9b864e5472fb93e5c7856b9c41595c38fac31370328fc79fcc521712e89ea6d6866cbb8e0995d81 +"morgan@npm:^1.10.0": + version: 1.10.0 + resolution: "morgan@npm:1.10.0" + dependencies: + basic-auth: ~2.0.1 + debug: 2.6.9 + depd: ~2.0.0 + on-finished: ~2.3.0 + on-headers: ~1.0.2 + checksum: fb41e226ab5a1abf7e8909e486b387076534716d60207e361acfb5df78b84d703a7b7ea58f3046a9fd0b83d3c94bfabde32323341a1f1b26ce50680abd2ea5dd languageName: node linkType: hard -"language-tags@npm:^1.0.9": - version: 1.0.9 - resolution: "language-tags@npm:1.0.9" - dependencies: - language-subtag-registry: ^0.3.20 - checksum: 57c530796dc7179914dee71bc94f3747fd694612480241d0453a063777265dfe3a951037f7acb48f456bf167d6eb419d4c00263745326b3ba1cdcf4657070e78 +"mri@npm:1.1.4": + version: 1.1.4 + resolution: "mri@npm:1.1.4" + checksum: e65b9aed3b9e423ad4c11f529ab1b9280f65dce8fb476d0da236b5c570ad3322fbbcd2393180855f1474f8b0f982d76ad398766fbd47b8a5ab4069e325d0268e languageName: node linkType: hard -"launch-editor@npm:^2.6.0, launch-editor@npm:^2.6.1": - version: 2.9.1 - resolution: "launch-editor@npm:2.9.1" - dependencies: - picocolors: ^1.0.0 - shell-quote: ^1.8.1 - checksum: bed887085a9729cc2ad050329d92a99f4c69bacccf96d1ed8c84670608a3a128a828ba8e9a8a41101c5aea5aea6f79984658e2fd11f6ba85e32e6e1ed16dbb1c +"mri@npm:^1.1.0, mri@npm:^1.2.0": + version: 1.2.0 + resolution: "mri@npm:1.2.0" + checksum: 83f515abbcff60150873e424894a2f65d68037e5a7fcde8a9e2b285ee9c13ac581b63cfc1e6826c4732de3aeb84902f7c1e16b7aff46cd3f897a0f757a894e85 languageName: node linkType: hard -"lazystream@npm:^1.0.0": - version: 1.0.1 - resolution: "lazystream@npm:1.0.1" - dependencies: - readable-stream: ^2.0.5 - checksum: 822c54c6b87701a6491c70d4fabc4cafcf0f87d6b656af168ee7bb3c45de9128a801cb612e6eeeefc64d298a7524a698dd49b13b0121ae50c2ae305f0dcc5310 +"ms@npm:2.0.0": + version: 2.0.0 + resolution: "ms@npm:2.0.0" + checksum: 0e6a22b8b746d2e0b65a430519934fefd41b6db0682e3477c10f60c76e947c4c0ad06f63ffdf1d78d335f83edee8c0aa928aa66a36c7cd95b69b26f468d527f4 languageName: node linkType: hard -"leven@npm:3.1.0, leven@npm:^3.1.0": - version: 3.1.0 - resolution: "leven@npm:3.1.0" - checksum: 638401d534585261b6003db9d99afd244dfe82d75ddb6db5c0df412842d5ab30b2ef18de471aaec70fe69a46f17b4ae3c7f01d8a4e6580ef7adb9f4273ad1e55 +"ms@npm:2.1.2": + version: 2.1.2 + resolution: "ms@npm:2.1.2" + checksum: 673cdb2c3133eb050c745908d8ce632ed2c02d85640e2edb3ace856a2266a813b30c613569bf3354fdf4ea7d1a1494add3bfa95e2713baa27d0c2c71fc44f58f languageName: node linkType: hard -"levn@npm:^0.4.1": - version: 0.4.1 - resolution: "levn@npm:0.4.1" - dependencies: - prelude-ls: ^1.2.1 - type-check: ~0.4.0 - checksum: 12c5021c859bd0f5248561bf139121f0358285ec545ebf48bb3d346820d5c61a4309535c7f387ed7d84361cf821e124ce346c6b7cef8ee09a67c1473b46d0fc4 +"ms@npm:2.1.3, ms@npm:^2.0.0, ms@npm:^2.1.1, ms@npm:^2.1.3": + version: 2.1.3 + resolution: "ms@npm:2.1.3" + checksum: aa92de608021b242401676e35cfa5aa42dd70cbdc082b916da7fb925c542173e36bce97ea3e804923fe92c0ad991434e4a38327e15a1b5b5f945d66df615ae6d languageName: node linkType: hard -"levn@npm:~0.3.0": - version: 0.3.0 - resolution: "levn@npm:0.3.0" +"msw@npm:1.3.5, msw@npm:^1.0.0": + version: 1.3.5 + resolution: "msw@npm:1.3.5" dependencies: - prelude-ls: ~1.1.2 - type-check: ~0.3.2 - checksum: 0d084a524231a8246bb10fec48cdbb35282099f6954838604f3c7fc66f2e16fa66fd9cc2f3f20a541a113c4dafdf181e822c887c8a319c9195444e6c64ac395e + "@mswjs/cookies": ^0.2.2 + "@mswjs/interceptors": ^0.17.10 + "@open-draft/until": ^1.0.3 + "@types/cookie": ^0.4.1 + "@types/js-levenshtein": ^1.1.1 + chalk: ^4.1.1 + chokidar: ^3.4.2 + cookie: ^0.4.2 + graphql: ^16.8.1 + headers-polyfill: 3.2.5 + inquirer: ^8.2.0 + is-node-process: ^1.2.0 + js-levenshtein: ^1.1.6 + node-fetch: ^2.6.7 + outvariant: ^1.4.0 + path-to-regexp: ^6.3.0 + strict-event-emitter: ^0.4.3 + type-fest: ^2.19.0 + yargs: ^17.3.1 + peerDependencies: + typescript: ">= 4.4.x" + peerDependenciesMeta: + typescript: + optional: true + bin: + msw: cli/index.js + checksum: 5e1d96d63c0ce07db94373b2315739abecb76dac32dcc6ce116c902ced3e61ef2b1c7ff87eed3627c93fe0588002717edab9c745ebdee29437ed0da4b3beb561 languageName: node linkType: hard -"lilconfig@npm:^2.0.3, lilconfig@npm:^2.0.5": - version: 2.1.0 - resolution: "lilconfig@npm:2.1.0" - checksum: 8549bb352b8192375fed4a74694cd61ad293904eee33f9d4866c2192865c44c4eb35d10782966242634e0cbc1e91fe62b1247f148dc5514918e3a966da7ea117 +"multer@npm:^1.4.5-lts.1": + version: 1.4.5-lts.1 + resolution: "multer@npm:1.4.5-lts.1" + dependencies: + append-field: ^1.0.0 + busboy: ^1.0.0 + concat-stream: ^1.5.2 + mkdirp: ^0.5.4 + object-assign: ^4.1.1 + type-is: ^1.6.4 + xtend: ^4.0.0 + checksum: d6dfa78a6ec592b74890412f8962da8a87a3dcfe20f612e039b735b8e0faa72c735516c447f7de694ee0d981eb0a1b892fb9e2402a0348dc6091d18c38d89ecc languageName: node linkType: hard -"lines-and-columns@npm:^1.1.6": - version: 1.2.4 - resolution: "lines-and-columns@npm:1.2.4" - checksum: 0c37f9f7fa212b38912b7145e1cd16a5f3cd34d782441c3e6ca653485d326f58b3caccda66efce1c5812bde4961bbde3374fae4b0d11bf1226152337f3894aa5 +"multicast-dns@npm:^7.2.5": + version: 7.2.5 + resolution: "multicast-dns@npm:7.2.5" + dependencies: + dns-packet: ^5.2.2 + thunky: ^1.0.2 + bin: + multicast-dns: cli.js + checksum: 00b8a57df152d4cd0297946320a94b7c3cdf75a46a2247f32f958a8927dea42958177f9b7fdae69fab2e4e033fb3416881af1f5e9055a3e1542888767139e2fb languageName: node linkType: hard -"loader-runner@npm:^4.2.0": - version: 4.3.0 - resolution: "loader-runner@npm:4.3.0" - checksum: a90e00dee9a16be118ea43fec3192d0b491fe03a32ed48a4132eb61d498f5536a03a1315531c19d284392a8726a4ecad71d82044c28d7f22ef62e029bf761569 +"mute-stream@npm:0.0.8": + version: 0.0.8 + resolution: "mute-stream@npm:0.0.8" + checksum: ff48d251fc3f827e5b1206cda0ffdaec885e56057ee86a3155e1951bc940fd5f33531774b1cc8414d7668c10a8907f863f6561875ee6e8768931a62121a531a1 languageName: node linkType: hard -"loader-utils@npm:^1.1.0": - version: 1.4.2 - resolution: "loader-utils@npm:1.4.2" +"mysql2@npm:^3.0.0": + version: 3.11.3 + resolution: "mysql2@npm:3.11.3" dependencies: - big.js: ^5.2.2 - emojis-list: ^3.0.0 - json5: ^1.0.1 - checksum: eb6fb622efc0ffd1abdf68a2022f9eac62bef8ec599cf8adb75e94d1d338381780be6278534170e99edc03380a6d29bc7eb1563c89ce17c5fed3a0b17f1ad804 + aws-ssl-profiles: ^1.1.1 + denque: ^2.1.0 + generate-function: ^2.3.1 + iconv-lite: ^0.6.3 + long: ^5.2.1 + lru.min: ^1.0.0 + named-placeholders: ^1.1.3 + seq-queue: ^0.0.5 + sqlstring: ^2.3.2 + checksum: ae62b5b997da429a33f0762158db965d22daece0030e75ac8e822b0b342ad082fa5f1ead87d922d0ba93595e9d5491036916ef91457c762517f25f41afa6e2d9 languageName: node linkType: hard -"loader-utils@npm:^2.0.0, loader-utils@npm:^2.0.4": - version: 2.0.4 - resolution: "loader-utils@npm:2.0.4" +"mz@npm:^2.7.0": + version: 2.7.0 + resolution: "mz@npm:2.7.0" dependencies: - big.js: ^5.2.2 - emojis-list: ^3.0.0 - json5: ^2.1.2 - checksum: a5281f5fff1eaa310ad5e1164095689443630f3411e927f95031ab4fb83b4a98f388185bb1fe949e8ab8d4247004336a625e9255c22122b815bb9a4c5d8fc3b7 + any-promise: ^1.0.0 + object-assign: ^4.0.1 + thenify-all: ^1.0.0 + checksum: 8427de0ece99a07e9faed3c0c6778820d7543e3776f9a84d22cf0ec0a8eb65f6e9aee9c9d353ff9a105ff62d33a9463c6ca638974cc652ee8140cd1e35951c87 languageName: node linkType: hard -"loader-utils@npm:^3.2.0": - version: 3.3.1 - resolution: "loader-utils@npm:3.3.1" - checksum: d35808e081635e5bc50228a52ed79f83e2c82bd8f7578818c12b1b4cf0b7f409d72d9b93a683ec36b9eaa93346693d3f3c8380183ba2ff81599b0829d685de39 +"named-placeholders@npm:^1.1.3": + version: 1.1.3 + resolution: "named-placeholders@npm:1.1.3" + dependencies: + lru-cache: ^7.14.1 + checksum: 7834adc91e92ae1b9c4413384e3ccd297de5168bb44017ff0536705ddc4db421723bd964607849265feb3f6ded390f84cf138e5925f22f7c13324f87a803dc73 languageName: node linkType: hard -"locate-path@npm:^2.0.0": - version: 2.0.0 - resolution: "locate-path@npm:2.0.0" +"nan@npm:^2.17.0, nan@npm:^2.19.0, nan@npm:^2.20.0": + version: 2.22.0 + resolution: "nan@npm:2.22.0" dependencies: - p-locate: ^2.0.0 - path-exists: ^3.0.0 - checksum: 02d581edbbbb0fa292e28d96b7de36b5b62c2fa8b5a7e82638ebb33afa74284acf022d3b1e9ae10e3ffb7658fbc49163fcd5e76e7d1baaa7801c3e05a81da755 + node-gyp: latest + checksum: 222e3a090e326c72f6782d948f44ee9b81cfb2161d5fe53216f04426a273fd094deee9dcc6813096dd2397689a2b10c1a92d3885d2e73fd2488a51547beb2929 languageName: node linkType: hard -"locate-path@npm:^3.0.0": - version: 3.0.0 - resolution: "locate-path@npm:3.0.0" +"nano-css@npm:^5.6.2": + version: 5.6.2 + resolution: "nano-css@npm:5.6.2" dependencies: - p-locate: ^3.0.0 - path-exists: ^3.0.0 - checksum: 53db3996672f21f8b0bf2a2c645ae2c13ffdae1eeecfcd399a583bce8516c0b88dcb4222ca6efbbbeb6949df7e46860895be2c02e8d3219abd373ace3bfb4e11 + "@jridgewell/sourcemap-codec": ^1.4.15 + css-tree: ^1.1.2 + csstype: ^3.1.2 + fastest-stable-stringify: ^2.0.2 + inline-style-prefixer: ^7.0.1 + rtl-css-js: ^1.16.1 + stacktrace-js: ^2.0.2 + stylis: ^4.3.0 + peerDependencies: + react: "*" + react-dom: "*" + checksum: 85d5e730798387bee3090e9943801489ec4269bd376a848b75515cf0f44dc7ce53d4a9fec575081a7dff53a8a5d4b00eebdc1bbf217d75fae7195819f917aba1 languageName: node linkType: hard -"locate-path@npm:^5.0.0": - version: 5.0.0 - resolution: "locate-path@npm:5.0.0" - dependencies: - p-locate: ^4.1.0 - checksum: 83e51725e67517287d73e1ded92b28602e3ae5580b301fe54bfb76c0c723e3f285b19252e375712316774cf52006cb236aed5704692c32db0d5d089b69696e30 +"nanoclone@npm:^0.2.1": + version: 0.2.1 + resolution: "nanoclone@npm:0.2.1" + checksum: 96b2954e22f70561f41e20d69856266c65583c2a441dae108f1dc71b716785d2c8038dac5f1d5e92b117aed3825f526b53139e2e5d6e6db8a77cfa35b3b8bf40 languageName: node linkType: hard -"locate-path@npm:^6.0.0": - version: 6.0.0 - resolution: "locate-path@npm:6.0.0" - dependencies: - p-locate: ^5.0.0 - checksum: 72eb661788a0368c099a184c59d2fee760b3831c9c1c33955e8a19ae4a21b4116e53fa736dc086cdeb9fce9f7cc508f2f92d2d3aae516f133e16a2bb59a39f5a +"nanoid@npm:^3.3.7": + version: 3.3.7 + resolution: "nanoid@npm:3.3.7" + bin: + nanoid: bin/nanoid.cjs + checksum: d36c427e530713e4ac6567d488b489a36582ef89da1d6d4e3b87eded11eb10d7042a877958c6f104929809b2ab0bafa17652b076cdf84324aa75b30b722204f2 languageName: node linkType: hard -"lodash-es@npm:^4.17.21": - version: 4.17.21 - resolution: "lodash-es@npm:4.17.21" - checksum: 05cbffad6e2adbb331a4e16fbd826e7faee403a1a04873b82b42c0f22090f280839f85b95393f487c1303c8a3d2a010048bf06151a6cbe03eee4d388fb0a12d2 +"napi-build-utils@npm:^1.0.1": + version: 1.0.2 + resolution: "napi-build-utils@npm:1.0.2" + checksum: 06c14271ee966e108d55ae109f340976a9556c8603e888037145d6522726aebe89dd0c861b4b83947feaf6d39e79e08817559e8693deedc2c94e82c5cbd090c7 languageName: node linkType: hard -"lodash.camelcase@npm:^4.3.0": - version: 4.3.0 - resolution: "lodash.camelcase@npm:4.3.0" - checksum: cb9227612f71b83e42de93eccf1232feeb25e705bdb19ba26c04f91e885bfd3dd5c517c4a97137658190581d3493ea3973072ca010aab7e301046d90740393d1 +"native-duplexpair@npm:^1.0.0": + version: 1.0.0 + resolution: "native-duplexpair@npm:1.0.0" + checksum: d849a8cb78c59eb12326fde2a84fedc26568b4317da46d061e7110a35961230b674a04ec2496860c2eb5f05288176c7ce0eb3a51eb0ed6b76a4263f637461f9d languageName: node linkType: hard -"lodash.clonedeepwith@npm:4.5.0": - version: 4.5.0 - resolution: "lodash.clonedeepwith@npm:4.5.0" - checksum: 9fbf4ebfa04b381df226a2298eba680327bea3d0d5d19c5118de7ae218fd219186e30e9fd0d33b13729f34ffbc83c1cf09cb27aff265ba94cb602b8a2b1e71c9 +"natural-compare@npm:^1.4.0": + version: 1.4.0 + resolution: "natural-compare@npm:1.4.0" + checksum: 23ad088b08f898fc9b53011d7bb78ec48e79de7627e01ab5518e806033861bef68d5b0cd0e2205c2f36690ac9571ff6bcb05eb777ced2eeda8d4ac5b44592c3d languageName: node linkType: hard -"lodash.debounce@npm:^4.0.8": - version: 4.0.8 - resolution: "lodash.debounce@npm:4.0.8" - checksum: a3f527d22c548f43ae31c861ada88b2637eb48ac6aa3eb56e82d44917971b8aa96fbb37aa60efea674dc4ee8c42074f90f7b1f772e9db375435f6c83a19b3bc6 +"ndjson@npm:^2.0.0": + version: 2.0.0 + resolution: "ndjson@npm:2.0.0" + dependencies: + json-stringify-safe: ^5.0.1 + minimist: ^1.2.5 + readable-stream: ^3.6.0 + split2: ^3.0.0 + through2: ^4.0.0 + bin: + ndjson: cli.js + checksum: f847a51a2275b8a6a1bfdb24095183836b71c3085670161678c9922bc59644f04e53ced385e549a5565fdc44c28e206bd3f2199d12525028f843a86b680c4446 languageName: node linkType: hard -"lodash.defaults@npm:^4.2.0": - version: 4.2.0 - resolution: "lodash.defaults@npm:4.2.0" - checksum: 84923258235592c8886e29de5491946ff8c2ae5c82a7ac5cddd2e3cb697e6fbdfbbb6efcca015795c86eec2bb953a5a2ee4016e3735a3f02720428a40efbb8f1 +"nearley@npm:^2.20.1": + version: 2.20.1 + resolution: "nearley@npm:2.20.1" + dependencies: + commander: ^2.19.0 + moo: ^0.5.0 + railroad-diagrams: ^1.0.0 + randexp: 0.4.6 + bin: + nearley-railroad: bin/nearley-railroad.js + nearley-test: bin/nearley-test.js + nearley-unparse: bin/nearley-unparse.js + nearleyc: bin/nearleyc.js + checksum: 42c2c330c13c7991b48221c5df00f4352c2f8851636ae4d1f8ca3c8e193fc1b7668c78011d1cad88cca4c1c4dc087425420629c19cc286d7598ec15533aaef26 languageName: node linkType: hard -"lodash.flattendeep@npm:^4.0.0": - version: 4.4.0 - resolution: "lodash.flattendeep@npm:4.4.0" - checksum: 8521c919acac3d4bcf0aaf040c1ca9cb35d6c617e2d72e9b4d51c9a58b4366622cd6077441a18be626c3f7b28227502b3bf042903d447b056ee7e0b11d45c722 +"negotiator@npm:0.6.3": + version: 0.6.3 + resolution: "negotiator@npm:0.6.3" + checksum: b8ffeb1e262eff7968fc90a2b6767b04cfd9842582a9d0ece0af7049537266e7b2506dfb1d107a32f06dd849ab2aea834d5830f7f4d0e5cb7d36e1ae55d021d9 languageName: node linkType: hard -"lodash.groupby@npm:^4.6.0": - version: 4.6.0 - resolution: "lodash.groupby@npm:4.6.0" - checksum: e2d4d13d12790a1cacab3f5f120b7c072a792224e83b2f403218866d18efde76024b2579996dfebb230a61ce06469332e16639103669a35a605287e19ced6b9b +"negotiator@npm:^0.6.3": + version: 0.6.4 + resolution: "negotiator@npm:0.6.4" + checksum: 7ded10aa02a0707d1d12a9973fdb5954f98547ca7beb60e31cb3a403cc6e8f11138db7a3b0128425cf836fc85d145ec4ce983b2bdf83dca436af879c2d683510 languageName: node linkType: hard -"lodash.includes@npm:^4.3.0": - version: 4.3.0 - resolution: "lodash.includes@npm:4.3.0" - checksum: 71092c130515a67ab3bd928f57f6018434797c94def7f46aafa417771e455ce3a4834889f4267b17887d7f75297dfabd96231bf704fd2b8c5096dc4a913568b6 +"neo-async@npm:^2.6.2": + version: 2.6.2 + resolution: "neo-async@npm:2.6.2" + checksum: deac9f8d00eda7b2e5cd1b2549e26e10a0faa70adaa6fdadca701cc55f49ee9018e427f424bac0c790b7c7e2d3068db97f3093f1093975f2acb8f8818b936ed9 languageName: node linkType: hard -"lodash.intersection@npm:^4.4.0": - version: 4.4.0 - resolution: "lodash.intersection@npm:4.4.0" - checksum: 98935dcba1bbb981c3927e3822f6f6f344736c881df4b622e4e40ca4a125490425449e23179f46294a1b4c351de4e9a7bb60207cc6ddd65ecfd45ef727d35123 +"neotraverse@npm:=0.6.18": + version: 0.6.18 + resolution: "neotraverse@npm:0.6.18" + checksum: 6ec0855db8d484a33672ba4533617bab4944167c881a6ab35a987bf3b92f12159eac5c19ad9cc203c193b279cc1a09f0bd7c7fb7752f9950625cbd866071ef72 languageName: node linkType: hard -"lodash.isarguments@npm:^3.1.0": - version: 3.1.0 - resolution: "lodash.isarguments@npm:3.1.0" - checksum: ae1526f3eb5c61c77944b101b1f655f846ecbedcb9e6b073526eba6890dc0f13f09f72e11ffbf6540b602caee319af9ac363d6cdd6be41f4ee453436f04f13b5 +"netmask@npm:^2.0.2": + version: 2.0.2 + resolution: "netmask@npm:2.0.2" + checksum: c65cb8d3f7ea5669edddb3217e4c96910a60d0d9a4b52d9847ff6b28b2d0277cd8464eee0ef85133cdee32605c57940cacdd04a9a019079b091b6bba4cb0ec22 languageName: node linkType: hard -"lodash.isboolean@npm:^3.0.3": - version: 3.0.3 - resolution: "lodash.isboolean@npm:3.0.3" - checksum: b70068b4a8b8837912b54052557b21fc4774174e3512ed3c5b94621e5aff5eb6c68089d0a386b7e801d679cd105d2e35417978a5e99071750aa2ed90bffd0250 +"nimma@npm:0.2.2": + version: 0.2.2 + resolution: "nimma@npm:0.2.2" + dependencies: + "@jsep-plugin/regex": ^1.0.1 + "@jsep-plugin/ternary": ^1.0.2 + astring: ^1.8.1 + jsep: ^1.2.0 + jsonpath-plus: ^6.0.1 + lodash.topath: ^4.5.2 + dependenciesMeta: + jsonpath-plus: + optional: true + lodash.topath: + optional: true + checksum: 09369253a962e6cdddd37c4994d414a5fa00abc955c4d91946140b45b57465749a9f05663a64812ad5ac70caacb7ca22a8fc7c8db002032d0768c83dbba7b3ad languageName: node linkType: hard -"lodash.isequal@npm:^4.5.0": - version: 4.5.0 - resolution: "lodash.isequal@npm:4.5.0" - checksum: da27515dc5230eb1140ba65ff8de3613649620e8656b19a6270afe4866b7bd461d9ba2ac8a48dcc57f7adac4ee80e1de9f965d89d4d81a0ad52bb3eec2609644 +"nimma@npm:0.2.3": + version: 0.2.3 + resolution: "nimma@npm:0.2.3" + dependencies: + "@jsep-plugin/regex": ^1.0.1 + "@jsep-plugin/ternary": ^1.0.2 + astring: ^1.8.1 + jsep: ^1.2.0 + jsonpath-plus: ^6.0.1 || ^10.1.0 + lodash.topath: ^4.5.2 + dependenciesMeta: + jsonpath-plus: + optional: true + lodash.topath: + optional: true + checksum: cafa172f78fca7c0f8e7126659dd47f39bbe09d69b7ef60a7363b65d990934dd57e769afe1fac6a89affc30d47e25a725290025b13e452d3d23e7d3cdab972fb languageName: node linkType: hard -"lodash.isinteger@npm:^4.0.4": - version: 4.0.4 - resolution: "lodash.isinteger@npm:4.0.4" - checksum: 6034821b3fc61a2ffc34e7d5644bb50c5fd8f1c0121c554c21ac271911ee0c0502274852845005f8651d51e199ee2e0cfebfe40aaa49c7fe617f603a8a0b1691 +"no-case@npm:^3.0.4": + version: 3.0.4 + resolution: "no-case@npm:3.0.4" + dependencies: + lower-case: ^2.0.2 + tslib: ^2.0.3 + checksum: 0b2ebc113dfcf737d48dde49cfebf3ad2d82a8c3188e7100c6f375e30eafbef9e9124aadc3becef237b042fd5eb0aad2fd78669c20972d045bbe7fea8ba0be5c languageName: node linkType: hard -"lodash.isnumber@npm:^3.0.3": - version: 3.0.3 - resolution: "lodash.isnumber@npm:3.0.3" - checksum: 913784275b565346255e6ae6a6e30b760a0da70abc29f3e1f409081585875105138cda4a429ff02577e1bc0a7ae2a90e0a3079a37f3a04c3d6c5aaa532f4cab2 +"node-abi@npm:^3.3.0": + version: 3.71.0 + resolution: "node-abi@npm:3.71.0" + dependencies: + semver: ^7.3.5 + checksum: d7f34c294c0351b636688a792e41493840cc195f64a76ecdc35eb0c1682d86e633a932b03e924395b0d2f52ca1db5046898839d57bcfb5819226e64e922b0617 languageName: node linkType: hard -"lodash.isplainobject@npm:^4.0.6": - version: 4.0.6 - resolution: "lodash.isplainobject@npm:4.0.6" - checksum: 29c6351f281e0d9a1d58f1a4c8f4400924b4c79f18dfc4613624d7d54784df07efaff97c1ff2659f3e085ecf4fff493300adc4837553104cef2634110b0d5337 +"node-abort-controller@npm:^3.0.1, node-abort-controller@npm:^3.1.1": + version: 3.1.1 + resolution: "node-abort-controller@npm:3.1.1" + checksum: 2c340916af9710328b11c0828223fc65ba320e0d082214a211311bf64c2891028e42ef276b9799188c4ada9e6e1c54cf7a0b7c05dd9d59fcdc8cd633304c8047 languageName: node linkType: hard -"lodash.isstring@npm:^4.0.1": - version: 4.0.1 - resolution: "lodash.isstring@npm:4.0.1" - checksum: eaac87ae9636848af08021083d796e2eea3d02e80082ab8a9955309569cb3a463ce97fd281d7dc119e402b2e7d8c54a23914b15d2fc7fff56461511dc8937ba0 +"node-addon-api@npm:^8.2.1, node-addon-api@npm:^8.2.2, node-addon-api@npm:^8.3.0": + version: 8.3.0 + resolution: "node-addon-api@npm:8.3.0" + dependencies: + node-gyp: latest + checksum: 87fd087f0887e91c5608ac3c99e3f374403074c9cff2c335b061b0c68a183e4cd561fb9a8b0a583f0145c9b7753180b2be0c232ef01bb97796ccf4486c87958a languageName: node linkType: hard -"lodash.maxby@npm:^4.6.0": - version: 4.6.0 - resolution: "lodash.maxby@npm:4.6.0" - checksum: 2f508383545bd9450e6509f1e5f3a3f737aac25a54225fe981b1a3c80faacc6d48d047695d799f5a7db80e8fc3c600e4736573cb2e6d0365c8f929bba5e5a1dd +"node-cache@npm:^5.1.2": + version: 5.1.2 + resolution: "node-cache@npm:5.1.2" + dependencies: + clone: 2.x + checksum: b0bdd81a6fee4754fb984a05246b510bb35dc54721116d465899bf4229ee3287fdafb47da526900ee9924fb402ed5c7d8050049d37d8bf2d26dbafc23a2c3205 languageName: node linkType: hard -"lodash.memoize@npm:^4.1.2": - version: 4.1.2 - resolution: "lodash.memoize@npm:4.1.2" - checksum: 9ff3942feeccffa4f1fafa88d32f0d24fdc62fd15ded5a74a5f950ff5f0c6f61916157246744c620173dddf38d37095a92327d5fd3861e2063e736a5c207d089 +"node-domexception@npm:^1.0.0": + version: 1.0.0 + resolution: "node-domexception@npm:1.0.0" + checksum: ee1d37dd2a4eb26a8a92cd6b64dfc29caec72bff5e1ed9aba80c294f57a31ba4895a60fd48347cf17dd6e766da0ae87d75657dfd1f384ebfa60462c2283f5c7f languageName: node linkType: hard -"lodash.merge@npm:^4.6.2": - version: 4.6.2 - resolution: "lodash.merge@npm:4.6.2" - checksum: ad580b4bdbb7ca1f7abf7e1bce63a9a0b98e370cf40194b03380a46b4ed799c9573029599caebc1b14e3f24b111aef72b96674a56cfa105e0f5ac70546cdc005 +"node-fetch-commonjs@npm:^3.3.2": + version: 3.3.2 + resolution: "node-fetch-commonjs@npm:3.3.2" + dependencies: + node-domexception: ^1.0.0 + web-streams-polyfill: ^3.0.3 + checksum: 7cc9bc3cba02c88ae031028c07af7f5053d1968e7f8e06931cdca51a695d66bb9fc9bca11bde31915a3e70a957b8e240c568f7ff47af5757efb5526c4389f570 languageName: node linkType: hard -"lodash.omit@npm:^4.5.0": - version: 4.5.0 - resolution: "lodash.omit@npm:4.5.0" - checksum: 434645e49fe84ab315719bd5a9a3a585a0f624aa4160bc09157dd041a414bcc287c15840365c1379476a3f3eda41fbe838976c3f7bdecbbf4c5478e86c471a30 +"node-fetch@npm:2.6.7": + version: 2.6.7 + resolution: "node-fetch@npm:2.6.7" + dependencies: + whatwg-url: ^5.0.0 + peerDependencies: + encoding: ^0.1.0 + peerDependenciesMeta: + encoding: + optional: true + checksum: 8d816ffd1ee22cab8301c7756ef04f3437f18dace86a1dae22cf81db8ef29c0bf6655f3215cb0cdb22b420b6fe141e64b26905e7f33f9377a7fa59135ea3e10b languageName: node linkType: hard -"lodash.once@npm:^4.0.0": - version: 4.1.1 - resolution: "lodash.once@npm:4.1.1" - checksum: d768fa9f9b4e1dc6453be99b753906f58990e0c45e7b2ca5a3b40a33111e5d17f6edf2f768786e2716af90a8e78f8f91431ab8435f761fef00f9b0c256f6d245 +"node-fetch@npm:^2.6.0, node-fetch@npm:^2.6.1, node-fetch@npm:^2.6.12, node-fetch@npm:^2.6.7, node-fetch@npm:^2.6.9, node-fetch@npm:^2.7.0": + version: 2.7.0 + resolution: "node-fetch@npm:2.7.0" + dependencies: + whatwg-url: ^5.0.0 + peerDependencies: + encoding: ^0.1.0 + peerDependenciesMeta: + encoding: + optional: true + checksum: d76d2f5edb451a3f05b15115ec89fc6be39de37c6089f1b6368df03b91e1633fd379a7e01b7ab05089a25034b2023d959b47e59759cb38d88341b2459e89d6e5 languageName: node linkType: hard -"lodash.padend@npm:^4.6.1": - version: 4.6.1 - resolution: "lodash.padend@npm:4.6.1" - checksum: c2e6e789debf83b98f5c085305cdcfff1067e7a31bda2a110fd765d3c11a99edfbeef570d9ef737ab3212006bdb8114e77622e518c18c1fce52b8fdfd9dab685 +"node-forge@npm:^1, node-forge@npm:^1.2.1, node-forge@npm:^1.3.1": + version: 1.3.1 + resolution: "node-forge@npm:1.3.1" + checksum: 08fb072d3d670599c89a1704b3e9c649ff1b998256737f0e06fbd1a5bf41cae4457ccaee32d95052d80bbafd9ffe01284e078c8071f0267dc9744e51c5ed42a9 languageName: node linkType: hard -"lodash.startcase@npm:^4.4.0": - version: 4.4.0 - resolution: "lodash.startcase@npm:4.4.0" - checksum: c03a4a784aca653845fe09d0ef67c902b6e49288dc45f542a4ab345a9c406a6dc194c774423fa313ee7b06283950301c1221dd2a1d8ecb2dac8dfbb9ed5606b5 +"node-gyp-build@npm:^4.8.2, node-gyp-build@npm:^4.8.4": + version: 4.8.4 + resolution: "node-gyp-build@npm:4.8.4" + bin: + node-gyp-build: bin.js + node-gyp-build-optional: optional.js + node-gyp-build-test: build-test.js + checksum: 8b81ca8ffd5fa257ad8d067896d07908a36918bc84fb04647af09d92f58310def2d2b8614d8606d129d9cd9b48890a5d2bec18abe7fcff54818f72bedd3a7d74 languageName: node linkType: hard -"lodash.topath@npm:^4.5.2": - version: 4.5.2 - resolution: "lodash.topath@npm:4.5.2" - checksum: 04583e220f4bb1c4ac0008ff8f46d9cb4ddce0ea1090085790da30a41f4cb1b904d885cb73257fca619fa825cd96f9bb97c67d039635cb76056e18f5e08bfdee +"node-gyp@npm:^10.0.0": + version: 10.3.1 + resolution: "node-gyp@npm:10.3.1" + dependencies: + env-paths: ^2.2.0 + exponential-backoff: ^3.1.1 + glob: ^10.3.10 + graceful-fs: ^4.2.6 + make-fetch-happen: ^13.0.0 + nopt: ^7.0.0 + proc-log: ^4.1.0 + semver: ^7.3.5 + tar: ^6.2.1 + which: ^4.0.0 + bin: + node-gyp: bin/node-gyp.js + checksum: 91b0690ab504fe051ad66863226dc5ecac72b8471f85e8428e4d5ca3217d3a2adfffae48cd555e8d009a4164689fff558b88d2bc9bfd246452a3336ab308cf99 languageName: node linkType: hard -"lodash.uniq@npm:^4.5.0": - version: 4.5.0 - resolution: "lodash.uniq@npm:4.5.0" - checksum: a4779b57a8d0f3c441af13d9afe7ecff22dd1b8ce1129849f71d9bbc8e8ee4e46dfb4b7c28f7ad3d67481edd6e51126e4e2a6ee276e25906d10f7140187c392d +"node-gyp@npm:^9.0.0": + version: 9.4.1 + resolution: "node-gyp@npm:9.4.1" + dependencies: + env-paths: ^2.2.0 + exponential-backoff: ^3.1.1 + glob: ^7.1.4 + graceful-fs: ^4.2.6 + make-fetch-happen: ^10.0.3 + nopt: ^6.0.0 + npmlog: ^6.0.0 + rimraf: ^3.0.2 + semver: ^7.3.5 + tar: ^6.1.2 + which: ^2.0.2 + bin: + node-gyp: bin/node-gyp.js + checksum: 8576c439e9e925ab50679f87b7dfa7aa6739e42822e2ad4e26c36341c0ba7163fdf5a946f0a67a476d2f24662bc40d6c97bd9e79ced4321506738e6b760a1577 languageName: node linkType: hard -"lodash@npm:4.17.21, lodash@npm:^4.17.14, lodash@npm:^4.17.15, lodash@npm:^4.17.20, lodash@npm:^4.17.21, lodash@npm:^4.17.4, lodash@npm:~4.17.15, lodash@npm:~4.17.21": - version: 4.17.21 - resolution: "lodash@npm:4.17.21" - checksum: eb835a2e51d381e561e508ce932ea50a8e5a68f4ebdd771ea240d3048244a8d13658acbd502cd4829768c56f2e16bdd4340b9ea141297d472517b83868e677f7 +"node-gyp@npm:latest": + version: 10.2.0 + resolution: "node-gyp@npm:10.2.0" + dependencies: + env-paths: ^2.2.0 + exponential-backoff: ^3.1.1 + glob: ^10.3.10 + graceful-fs: ^4.2.6 + make-fetch-happen: ^13.0.0 + nopt: ^7.0.0 + proc-log: ^4.1.0 + semver: ^7.3.5 + tar: ^6.2.1 + which: ^4.0.0 + bin: + node-gyp: bin/node-gyp.js + checksum: 0233759d8c19765f7fdc259a35eb046ad86c3d09e22f7384613ae2b89647dd27fcf833fdf5293d9335041e91f9b1c539494225959cdb312a5c8080b7534b926f languageName: node linkType: hard -"log-symbols@npm:^4.1.0": - version: 4.1.0 - resolution: "log-symbols@npm:4.1.0" - dependencies: - chalk: ^4.1.0 - is-unicode-supported: ^0.1.0 - checksum: fce1497b3135a0198803f9f07464165e9eb83ed02ceb2273930a6f8a508951178d8cf4f0378e9d28300a2ed2bc49050995d2bd5f53ab716bb15ac84d58c6ef74 +"node-int64@npm:^0.4.0": + version: 0.4.0 + resolution: "node-int64@npm:0.4.0" + checksum: d0b30b1ee6d961851c60d5eaa745d30b5c95d94bc0e74b81e5292f7c42a49e3af87f1eb9e89f59456f80645d679202537de751b7d72e9e40ceea40c5e449057e languageName: node linkType: hard -"log4js@npm:6.9.1": - version: 6.9.1 - resolution: "log4js@npm:6.9.1" +"node-libs-browser@npm:^2.2.1": + version: 2.2.1 + resolution: "node-libs-browser@npm:2.2.1" dependencies: - date-format: ^4.0.14 - debug: ^4.3.4 - flatted: ^3.2.7 - rfdc: ^1.3.0 - streamroller: ^3.1.5 - checksum: 59d98c37d4163138dab5d9b06ae26965d1353106fece143973d57b1003b3a482791aa21374fd2cca81a953b8837b2f9756ac225404e60cbfa4dd3ab59f082e2e + assert: ^1.1.1 + browserify-zlib: ^0.2.0 + buffer: ^4.3.0 + console-browserify: ^1.1.0 + constants-browserify: ^1.0.0 + crypto-browserify: ^3.11.0 + domain-browser: ^1.1.1 + events: ^3.0.0 + https-browserify: ^1.0.0 + os-browserify: ^0.3.0 + path-browserify: 0.0.1 + process: ^0.11.10 + punycode: ^1.2.4 + querystring-es3: ^0.2.0 + readable-stream: ^2.3.3 + stream-browserify: ^2.0.1 + stream-http: ^2.7.2 + string_decoder: ^1.0.0 + timers-browserify: ^2.0.4 + tty-browserify: 0.0.0 + url: ^0.11.0 + util: ^0.11.0 + vm-browserify: ^1.0.1 + checksum: 41fa7927378edc0cb98a8cc784d3f4a47e43378d3b42ec57a23f81125baa7287c4b54d6d26d062072226160a3ce4d8b7a62e873d2fb637aceaddf71f5a26eca0 languageName: node linkType: hard -"logform@npm:^2.3.2, logform@npm:^2.6.0, logform@npm:^2.6.1": - version: 2.6.1 - resolution: "logform@npm:2.6.1" - dependencies: - "@colors/colors": 1.6.0 - "@types/triple-beam": ^1.3.2 - fecha: ^4.2.0 - ms: ^2.1.1 - safe-stable-stringify: ^2.3.1 - triple-beam: ^1.3.0 - checksum: 0c6b95fa8350ccc33c7c33d77de2a9920205399706fc1b125151c857b61eb90873f4670d9e0e58e58c165b68a363206ae670d6da8b714527c838da3c84449605 +"node-machine-id@npm:^1.1.12": + version: 1.1.12 + resolution: "node-machine-id@npm:1.1.12" + checksum: e23088a0fb4a77a1d6484b7f09a22992fd3e0054d4f2e427692b4c7081e6cf30118ba07b6113b6c89f1ce46fd26ec5ab1d76dcaf6c10317717889124511283a5 languageName: node linkType: hard -"long-timeout@npm:0.1.1": - version: 0.1.1 - resolution: "long-timeout@npm:0.1.1" - checksum: 48668e5362cb74c4b77a6b833d59f149b9bb9e99c5a5097609807e2597cd0920613b2a42b89bd0870848298be3691064d95599a04ae010023d07dba39932afa7 +"node-releases@npm:^2.0.18": + version: 2.0.18 + resolution: "node-releases@npm:2.0.18" + checksum: ef55a3d853e1269a6d6279b7692cd6ff3e40bc74947945101138745bfdc9a5edabfe72cb19a31a8e45752e1910c4c65c77d931866af6357f242b172b7283f5b3 languageName: node linkType: hard -"long@npm:^5.2.1": - version: 5.2.3 - resolution: "long@npm:5.2.3" - checksum: 885ede7c3de4facccbd2cacc6168bae3a02c3e836159ea4252c87b6e34d40af819824b2d4edce330bfb5c4d6e8ce3ec5864bdcf9473fa1f53a4f8225860e5897 +"node-sarif-builder@npm:^2.0.3": + version: 2.0.3 + resolution: "node-sarif-builder@npm:2.0.3" + dependencies: + "@types/sarif": ^2.1.4 + fs-extra: ^10.0.0 + checksum: 397dd9bfb0780c6753fb47d1fd0465f3c8a935082cb1bbd7ad6232d18b6343d9d499c6bc572ad0415db282efd6058fe8b7a6657020434adef4fbf93a8b95306e languageName: node linkType: hard -"loose-envify@npm:^1.4.0": - version: 1.4.0 - resolution: "loose-envify@npm:1.4.0" +"node-schedule@npm:2.1.1": + version: 2.1.1 + resolution: "node-schedule@npm:2.1.1" dependencies: - js-tokens: ^3.0.0 || ^4.0.0 - bin: - loose-envify: cli.js - checksum: 6517e24e0cad87ec9888f500c5b5947032cdfe6ef65e1c1936a0c48a524b81e65542c9c3edc91c97d5bddc806ee2a985dbc79be89215d613b1de5db6d1cfe6f4 + cron-parser: ^4.2.0 + long-timeout: 0.1.1 + sorted-array-functions: ^1.3.0 + checksum: 6a8822b16fb024277c42efe710bdb35b6f1f6ab3a2f826283640511247d693f34ebd5ddf2863cd91609e7f323574e36c81cd2084dc204fa521f931380f0f963f languageName: node linkType: hard -"lower-case@npm:^2.0.2": - version: 2.0.2 - resolution: "lower-case@npm:2.0.2" +"nopt@npm:^5.0.0": + version: 5.0.0 + resolution: "nopt@npm:5.0.0" dependencies: - tslib: ^2.0.3 - checksum: 83a0a5f159ad7614bee8bf976b96275f3954335a84fad2696927f609ddae902802c4f3312d86668722e668bef41400254807e1d3a7f2e8c3eede79691aa1f010 + abbrev: 1 + bin: + nopt: bin/nopt.js + checksum: d35fdec187269503843924e0114c0c6533fb54bbf1620d0f28b4b60ba01712d6687f62565c55cc20a504eff0fbe5c63e22340c3fad549ad40469ffb611b04f2f languageName: node linkType: hard -"lru-cache@npm:^10.0.1, lru-cache@npm:^10.2.0": - version: 10.4.3 - resolution: "lru-cache@npm:10.4.3" - checksum: 6476138d2125387a6d20f100608c2583d415a4f64a0fecf30c9e2dda976614f09cad4baa0842447bd37dd459a7bd27f57d9d8f8ce558805abd487c583f3d774a +"nopt@npm:^6.0.0": + version: 6.0.0 + resolution: "nopt@npm:6.0.0" + dependencies: + abbrev: ^1.0.0 + bin: + nopt: bin/nopt.js + checksum: 82149371f8be0c4b9ec2f863cc6509a7fd0fa729929c009f3a58e4eb0c9e4cae9920e8f1f8eb46e7d032fec8fb01bede7f0f41a67eb3553b7b8e14fa53de1dac languageName: node linkType: hard -"lru-cache@npm:^4.0.1": - version: 4.1.5 - resolution: "lru-cache@npm:4.1.5" +"nopt@npm:^7.0.0": + version: 7.2.1 + resolution: "nopt@npm:7.2.1" dependencies: - pseudomap: ^1.0.2 - yallist: ^2.1.2 - checksum: 4bb4b58a36cd7dc4dcec74cbe6a8f766a38b7426f1ff59d4cf7d82a2aa9b9565cd1cb98f6ff60ce5cd174524868d7bc9b7b1c294371851356066ca9ac4cf135a + abbrev: ^2.0.0 + bin: + nopt: bin/nopt.js + checksum: 6fa729cc77ce4162cfad8abbc9ba31d4a0ff6850c3af61d59b505653bef4781ec059f8890ecfe93ee8aa0c511093369cca88bfc998101616a2904e715bbbb7c9 languageName: node linkType: hard -"lru-cache@npm:^5.1.1": - version: 5.1.1 - resolution: "lru-cache@npm:5.1.1" +"normalize-path@npm:^2.1.1": + version: 2.1.1 + resolution: "normalize-path@npm:2.1.1" dependencies: - yallist: ^3.0.2 - checksum: c154ae1cbb0c2206d1501a0e94df349653c92c8cbb25236d7e85190bcaf4567a03ac6eb43166fabfa36fd35623694da7233e88d9601fbf411a9a481d85dbd2cb + remove-trailing-separator: ^1.0.1 + checksum: 7e9cbdcf7f5b8da7aa191fbfe33daf290cdcd8c038f422faf1b8a83c972bf7a6d94c5be34c4326cb00fb63bc0fd97d9fbcfaf2e5d6142332c2cd36d2e1b86cea languageName: node linkType: hard -"lru-cache@npm:^6.0.0": - version: 6.0.0 - resolution: "lru-cache@npm:6.0.0" - dependencies: - yallist: ^4.0.0 - checksum: f97f499f898f23e4585742138a22f22526254fdba6d75d41a1c2526b3b6cc5747ef59c5612ba7375f42aca4f8461950e925ba08c991ead0651b4918b7c978297 +"normalize-path@npm:^3.0.0, normalize-path@npm:~3.0.0": + version: 3.0.0 + resolution: "normalize-path@npm:3.0.0" + checksum: 88eeb4da891e10b1318c4b2476b6e2ecbeb5ff97d946815ffea7794c31a89017c70d7f34b3c2ebf23ef4e9fc9fb99f7dffe36da22011b5b5c6ffa34f4873ec20 languageName: node linkType: hard -"lru-cache@npm:^7.14.1, lru-cache@npm:^7.7.1": - version: 7.18.3 - resolution: "lru-cache@npm:7.18.3" - checksum: e550d772384709deea3f141af34b6d4fa392e2e418c1498c078de0ee63670f1f46f5eee746e8ef7e69e1c895af0d4224e62ee33e66a543a14763b0f2e74c1356 +"normalize-url@npm:^6.0.1": + version: 6.1.0 + resolution: "normalize-url@npm:6.1.0" + checksum: 4a4944631173e7d521d6b80e4c85ccaeceb2870f315584fa30121f505a6dfd86439c5e3fdd8cd9e0e291290c41d0c3599f0cb12ab356722ed242584c30348e50 languageName: node linkType: hard -"lru-cache@npm:^9.0.0": - version: 9.1.2 - resolution: "lru-cache@npm:9.1.2" - checksum: d3415634be3908909081fc4c56371a8d562d9081eba70543d86871b978702fffd0e9e362b83921b27a29ae2b37b90f55675aad770a54ac83bb3e4de5049d4b15 +"npm-bundled@npm:^2.0.0": + version: 2.0.1 + resolution: "npm-bundled@npm:2.0.1" + dependencies: + npm-normalize-package-bin: ^2.0.0 + checksum: 7747293985c48c5268871efe691545b03731cb80029692000cbdb0b3344b9617be5187aa36281cabbe6b938e3651b4e87236d1c31f9e645eef391a1a779413e6 languageName: node linkType: hard -"lru.min@npm:^1.0.0": - version: 1.1.1 - resolution: "lru.min@npm:1.1.1" - checksum: 26ec06c656220a240427f29c3528871b9cfb3214bd5d1bf4c5f2b2cb69402f7558c560e30055fc09bd61e4bf651c1eda2f9b1ab1b16336616fca381b7d42ecba +"npm-normalize-package-bin@npm:^2.0.0": + version: 2.0.0 + resolution: "npm-normalize-package-bin@npm:2.0.0" + checksum: 7c5379f9b188b564c4332c97bdd9a5d6b7b15f02b5823b00989d6a0e6fb31eb0280f02b0a924f930e1fcaf00e60fae333aec8923d2a4c7747613c7d629d8aa25 languageName: node linkType: hard -"luxon@npm:^3.0.0, luxon@npm:^3.2.1, luxon@npm:~3.5.0": - version: 3.5.0 - resolution: "luxon@npm:3.5.0" - checksum: f290fe5788c8e51e748744f05092160d4be12150dca70f9fadc0d233e53d60ce86acd82e7d909a114730a136a77e56f0d3ebac6141bbb82fd310969a4704825b +"npm-packlist@npm:^5.0.0": + version: 5.1.3 + resolution: "npm-packlist@npm:5.1.3" + dependencies: + glob: ^8.0.1 + ignore-walk: ^5.0.1 + npm-bundled: ^2.0.0 + npm-normalize-package-bin: ^2.0.0 + bin: + npm-packlist: bin/index.js + checksum: 94cc9c66740e8f80243301de85eb0a2cec5bbd570c3f26b6ad7af1a3eca155f7e810580dc7ea4448f12a8fd82f6db307e7132a5fe69e157eb45b325acadeb22a + languageName: node + linkType: hard + +"npm-run-path@npm:^4.0.1": + version: 4.0.1 + resolution: "npm-run-path@npm:4.0.1" + dependencies: + path-key: ^3.0.0 + checksum: 5374c0cea4b0bbfdfae62da7bbdf1e1558d338335f4cacf2515c282ff358ff27b2ecb91ffa5330a8b14390ac66a1e146e10700440c1ab868208430f56b5f4d23 languageName: node linkType: hard -"magic-string@npm:^0.26.6": - version: 0.26.7 - resolution: "magic-string@npm:0.26.7" +"npmlog@npm:^5.0.1": + version: 5.0.1 + resolution: "npmlog@npm:5.0.1" dependencies: - sourcemap-codec: ^1.4.8 - checksum: 89b0d60cbb32bbf3d1e23c46ea93db082d18a8230b972027aecb10a40bba51be519ecce0674f995571e3affe917b76b09f59d8dbc9a1b2c9c4102a2b6e8a2b01 + are-we-there-yet: ^2.0.0 + console-control-strings: ^1.1.0 + gauge: ^3.0.0 + set-blocking: ^2.0.0 + checksum: 516b2663028761f062d13e8beb3f00069c5664925871a9b57989642ebe09f23ab02145bf3ab88da7866c4e112cafff72401f61a672c7c8a20edc585a7016ef5f languageName: node linkType: hard -"magic-string@npm:^0.30.10, magic-string@npm:^0.30.3": - version: 0.30.12 - resolution: "magic-string@npm:0.30.12" +"npmlog@npm:^6.0.0": + version: 6.0.2 + resolution: "npmlog@npm:6.0.2" dependencies: - "@jridgewell/sourcemap-codec": ^1.5.0 - checksum: 3f0d23b74371765f0e6cad4284eebba0ac029c7a55e39292de5aa92281afb827138cb2323d24d2924f6b31f138c3783596c5ccaa98653fe9cf122e1f81325b59 + are-we-there-yet: ^3.0.0 + console-control-strings: ^1.1.0 + gauge: ^4.0.3 + set-blocking: ^2.0.0 + checksum: ae238cd264a1c3f22091cdd9e2b106f684297d3c184f1146984ecbe18aaa86343953f26b9520dedd1b1372bc0316905b736c1932d778dbeb1fcf5a1001390e2a languageName: node linkType: hard -"make-dir@npm:^4.0.0": - version: 4.0.0 - resolution: "make-dir@npm:4.0.0" +"nth-check@npm:^2.0.1": + version: 2.1.1 + resolution: "nth-check@npm:2.1.1" dependencies: - semver: ^7.5.3 - checksum: bf0731a2dd3aab4db6f3de1585cea0b746bb73eb5a02e3d8d72757e376e64e6ada190b1eddcde5b2f24a81b688a9897efd5018737d05e02e2a671dda9cff8a8a + boolbase: ^1.0.0 + checksum: 5afc3dafcd1573b08877ca8e6148c52abd565f1d06b1eb08caf982e3fa289a82f2cae697ffb55b5021e146d60443f1590a5d6b944844e944714a5b549675bcd3 languageName: node linkType: hard -"make-error@npm:^1.1.1": - version: 1.3.6 - resolution: "make-error@npm:1.3.6" - checksum: b86e5e0e25f7f777b77fabd8e2cbf15737972869d852a22b7e73c17623928fccb826d8e46b9951501d3f20e51ad74ba8c59ed584f610526a48f8ccf88aaec402 +"nullthrows@npm:^1.0.0": + version: 1.1.1 + resolution: "nullthrows@npm:1.1.1" + checksum: 10806b92121253eb1b08ecf707d92480f5331ba8ae5b23fa3eb0548ad24196eb797ed47606153006568a5733ea9e528a3579f21421f7828e09e7756f4bdd386f languageName: node linkType: hard -"make-fetch-happen@npm:^10.0.3": - version: 10.2.1 - resolution: "make-fetch-happen@npm:10.2.1" +"nunjucks@npm:^3.2.3": + version: 3.2.4 + resolution: "nunjucks@npm:3.2.4" dependencies: - agentkeepalive: ^4.2.1 - cacache: ^16.1.0 - http-cache-semantics: ^4.1.0 - http-proxy-agent: ^5.0.0 - https-proxy-agent: ^5.0.0 - is-lambda: ^1.0.1 - lru-cache: ^7.7.1 - minipass: ^3.1.6 - minipass-collect: ^1.0.2 - minipass-fetch: ^2.0.3 - minipass-flush: ^1.0.5 - minipass-pipeline: ^1.2.4 - negotiator: ^0.6.3 - promise-retry: ^2.0.1 - socks-proxy-agent: ^7.0.0 - ssri: ^9.0.0 - checksum: 2332eb9a8ec96f1ffeeea56ccefabcb4193693597b132cd110734d50f2928842e22b84cfa1508e921b8385cdfd06dda9ad68645fed62b50fff629a580f5fb72c + a-sync-waterfall: ^1.0.0 + asap: ^2.0.3 + commander: ^5.1.0 + peerDependencies: + chokidar: ^3.3.0 + peerDependenciesMeta: + chokidar: + optional: true + bin: + nunjucks-precompile: bin/precompile + checksum: 8b902a9deb9ff0f5c9ebbd2c7f96dfe5800bf42bdfc91d8f829fc0440ec1f87901593e20479f5ba1bddcc9f2472b16a5e932be5863dcdec0899a27c01a03df32 languageName: node linkType: hard -"make-fetch-happen@npm:^13.0.0": - version: 13.0.1 - resolution: "make-fetch-happen@npm:13.0.1" - dependencies: - "@npmcli/agent": ^2.0.0 - cacache: ^18.0.0 - http-cache-semantics: ^4.1.1 - is-lambda: ^1.0.1 - minipass: ^7.0.2 - minipass-fetch: ^3.0.0 - minipass-flush: ^1.0.5 - minipass-pipeline: ^1.2.4 - negotiator: ^0.6.3 - proc-log: ^4.2.0 - promise-retry: ^2.0.1 - ssri: ^10.0.0 - checksum: 5c9fad695579b79488fa100da05777213dd9365222f85e4757630f8dd2a21a79ddd3206c78cfd6f9b37346819681782b67900ac847a57cf04190f52dda5343fd +"nwsapi@npm:^2.2.0": + version: 2.2.16 + resolution: "nwsapi@npm:2.2.16" + checksum: 467b36a74b7b8647d53fd61d05ca7d6c73a4a5d1b94ea84f770c03150b00ef46d38076cf8e708936246ae450c42a1f21e28e153023719784dc4d1a19b1737d47 languageName: node linkType: hard -"makeerror@npm:1.0.12": - version: 1.0.12 - resolution: "makeerror@npm:1.0.12" - dependencies: - tmpl: 1.0.5 - checksum: b38a025a12c8146d6eeea5a7f2bf27d51d8ad6064da8ca9405fcf7bf9b54acd43e3b30ddd7abb9b1bfa4ddb266019133313482570ddb207de568f71ecfcf6060 +"nwsapi@npm:^2.2.2": + version: 2.2.13 + resolution: "nwsapi@npm:2.2.13" + checksum: d34fb7838517c3c7e8cc824e443275b08b57f6a025a860693d18c56ddcfd176e32df9bf0ae7f5a95c7a32981501caa1f9fda31b59f28aa72a4b9d01f573a8e6b languageName: node linkType: hard -"markdown-escape@npm:^2.0.0": - version: 2.0.0 - resolution: "markdown-escape@npm:2.0.0" - checksum: 74c66d817636ac5f6a275fdc79ecb1e208d907ca85289d660b515256fbc3e380eb18d29b6bbbd6a77968ee4fb5872d40ecf31e52bc9f17855bb01bb723569fa0 +"oauth-sign@npm:~0.9.0": + version: 0.9.0 + resolution: "oauth-sign@npm:0.9.0" + checksum: 8f5497a127967866a3c67094c21efd295e46013a94e6e828573c62220e9af568cc1d2d04b16865ba583e430510fa168baf821ea78f355146d8ed7e350fc44c64 languageName: node linkType: hard -"matcher@npm:^3.0.0": - version: 3.0.0 - resolution: "matcher@npm:3.0.0" - dependencies: - escape-string-regexp: ^4.0.0 - checksum: 8bee1a7ab7609c2c21d9c9254b6785fa708eadf289032b556d57a34e98fcd4c537659a004dafee6ce80ab157099e645c199dc52678dff1e7fb0a6684e0da4dbe +"oauth@npm:0.10.x": + version: 0.10.0 + resolution: "oauth@npm:0.10.0" + checksum: 68fbcd9fc382985fd6a4856245bb9f78281c08ea238e814288c51e6cfb65e442c9c4eea67d54ec595384eb3f007e7b64ae3b8e67ec309228df44aba64cc9e0c7 languageName: node linkType: hard -"md5.js@npm:^1.3.4": - version: 1.3.5 - resolution: "md5.js@npm:1.3.5" - dependencies: - hash-base: ^3.0.0 - inherits: ^2.0.1 - safe-buffer: ^5.1.2 - checksum: 098494d885684bcc4f92294b18ba61b7bd353c23147fbc4688c75b45cb8590f5a95fd4584d742415dcc52487f7a1ef6ea611cfa1543b0dc4492fe026357f3f0c +"oauth@npm:0.9.x": + version: 0.9.15 + resolution: "oauth@npm:0.9.15" + checksum: 957c0d8d85300398dcb0e293953650c0fc3facc795bee8228238414f19f59cef5fd4ee8d17a972c142924c10c5f6ec50ef80f77f4a6cc6e3c98f9d22c027801c languageName: node linkType: hard -"mdn-data@npm:2.0.14": - version: 2.0.14 - resolution: "mdn-data@npm:2.0.14" - checksum: 9d0128ed425a89f4cba8f787dca27ad9408b5cb1b220af2d938e2a0629d17d879a34d2cb19318bdb26c3f14c77dd5dfbae67211f5caaf07b61b1f2c5c8c7dc16 +"object-assign@npm:^4, object-assign@npm:^4.0.1, object-assign@npm:^4.1.1": + version: 4.1.1 + resolution: "object-assign@npm:4.1.1" + checksum: fcc6e4ea8c7fe48abfbb552578b1c53e0d194086e2e6bbbf59e0a536381a292f39943c6e9628af05b5528aa5e3318bb30d6b2e53cadaf5b8fe9e12c4b69af23f languageName: node linkType: hard -"mdn-data@npm:2.0.28": - version: 2.0.28 - resolution: "mdn-data@npm:2.0.28" - checksum: f51d587a6ebe8e426c3376c74ea6df3e19ec8241ed8e2466c9c8a3904d5d04397199ea4f15b8d34d14524b5de926d8724ae85207984be47e165817c26e49e0aa +"object-hash@npm:^2.2.0": + version: 2.2.0 + resolution: "object-hash@npm:2.2.0" + checksum: 55ba841e3adce9c4f1b9b46b41983eda40f854e0d01af2802d3ae18a7085a17168d6b81731d43fdf1d6bcbb3c9f9c56d22c8fea992203ad90a38d7d919bc28f1 languageName: node linkType: hard -"mdn-data@npm:2.0.30": - version: 2.0.30 - resolution: "mdn-data@npm:2.0.30" - checksum: d6ac5ac7439a1607df44b22738ecf83f48e66a0874e4482d6424a61c52da5cde5750f1d1229b6f5fa1b80a492be89465390da685b11f97d62b8adcc6e88189aa +"object-hash@npm:^3.0.0": + version: 3.0.0 + resolution: "object-hash@npm:3.0.0" + checksum: 80b4904bb3857c52cc1bfd0b52c0352532ca12ed3b8a6ff06a90cd209dfda1b95cee059a7625eb9da29537027f68ac4619363491eedb2f5d3dddbba97494fd6c languageName: node linkType: hard -"media-typer@npm:0.3.0": - version: 0.3.0 - resolution: "media-typer@npm:0.3.0" - checksum: af1b38516c28ec95d6b0826f6c8f276c58aec391f76be42aa07646b4e39d317723e869700933ca6995b056db4b09a78c92d5440dc23657e6764be5d28874bba1 +"object-inspect@npm:^1.13.1": + version: 1.13.2 + resolution: "object-inspect@npm:1.13.2" + checksum: 9f850b3c045db60e0e97746e809ee4090d6ce62195af17dd1e9438ac761394a7d8ec4f7906559aea5424eaf61e35d3e53feded2ccd5f62fcc7d9670d3c8eb353 languageName: node linkType: hard -"memfs@npm:^3.1.2, memfs@npm:^3.4.1, memfs@npm:^3.4.3": - version: 3.5.3 - resolution: "memfs@npm:3.5.3" - dependencies: - fs-monkey: ^1.0.4 - checksum: 18dfdeacad7c8047b976a6ccd58bc98ba76e122ad3ca0e50a21837fe2075fc0d9aafc58ab9cf2576c2b6889da1dd2503083f2364191b695273f40969db2ecc44 +"object-inspect@npm:^1.13.3": + version: 1.13.3 + resolution: "object-inspect@npm:1.13.3" + checksum: 8c962102117241e18ea403b84d2521f78291b774b03a29ee80a9863621d88265ffd11d0d7e435c4c2cea0dc2a2fbf8bbc92255737a05536590f2df2e8756f297 languageName: node linkType: hard -"memfs@npm:^4.6.0": - version: 4.14.0 - resolution: "memfs@npm:4.14.0" +"object-is@npm:^1.1.5": + version: 1.1.6 + resolution: "object-is@npm:1.1.6" dependencies: - "@jsonjoy.com/json-pack": ^1.0.3 - "@jsonjoy.com/util": ^1.3.0 - tree-dump: ^1.0.1 - tslib: ^2.0.0 - checksum: 162e61510983488b0c524bd24191ab8be0f8a95636906ee305c10f2027e6a9f90831f42c072657aaf5fa859bb5132c5e97aa97aa96dfd959810327aec5b067c3 + call-bind: ^1.0.7 + define-properties: ^1.2.1 + checksum: 3ea22759967e6f2380a2cbbd0f737b42dc9ddb2dfefdb159a1b927fea57335e1b058b564bfa94417db8ad58cddab33621a035de6f5e5ad56d89f2dd03e66c6a1 languageName: node linkType: hard -"memjs@npm:^1.3.2": - version: 1.3.2 - resolution: "memjs@npm:1.3.2" - checksum: f92c2a43725b70af69832f807d02b87a07609a1c1f2c8c37670dff5bae6ac5f0d767cc8b3a6a59626703538f96c0bd4f03f9d00ea3b28aeb33270d24e8782233 +"object-keys@npm:^1.1.1": + version: 1.1.1 + resolution: "object-keys@npm:1.1.1" + checksum: b363c5e7644b1e1b04aa507e88dcb8e3a2f52b6ffd0ea801e4c7a62d5aa559affe21c55a07fd4b1fd55fc03a33c610d73426664b20032405d7b92a1414c34d6a languageName: node linkType: hard -"merge-descriptors@npm:1.0.3": - version: 1.0.3 - resolution: "merge-descriptors@npm:1.0.3" - checksum: 52117adbe0313d5defa771c9993fe081e2d2df9b840597e966aadafde04ae8d0e3da46bac7ca4efc37d4d2b839436582659cd49c6a43eacb3fe3050896a105d1 +"object.assign@npm:^4.1.4, object.assign@npm:^4.1.5": + version: 4.1.5 + resolution: "object.assign@npm:4.1.5" + dependencies: + call-bind: ^1.0.5 + define-properties: ^1.2.1 + has-symbols: ^1.0.3 + object-keys: ^1.1.1 + checksum: f9aeac0541661370a1fc86e6a8065eb1668d3e771f7dbb33ee54578201336c057b21ee61207a186dd42db0c62201d91aac703d20d12a79fc79c353eed44d4e25 languageName: node linkType: hard -"merge-stream@npm:^2.0.0": - version: 2.0.0 - resolution: "merge-stream@npm:2.0.0" - checksum: 6fa4dcc8d86629705cea944a4b88ef4cb0e07656ebf223fa287443256414283dd25d91c1cd84c77987f2aec5927af1a9db6085757cb43d90eb170ebf4b47f4f4 +"object.entries@npm:^1.1.8": + version: 1.1.8 + resolution: "object.entries@npm:1.1.8" + dependencies: + call-bind: ^1.0.7 + define-properties: ^1.2.1 + es-object-atoms: ^1.0.0 + checksum: 5314877cb637ef3437a30bba61d9bacdb3ce74bf73ac101518be0633c37840c8cc67407edb341f766e8093b3d7516d5c3358f25adfee4a2c697c0ec4c8491907 languageName: node linkType: hard -"merge2@npm:^1.3.0, merge2@npm:^1.4.1": - version: 1.4.1 - resolution: "merge2@npm:1.4.1" - checksum: 7268db63ed5169466540b6fb947aec313200bcf6d40c5ab722c22e242f651994619bcd85601602972d3c85bd2cc45a358a4c61937e9f11a061919a1da569b0c2 +"object.fromentries@npm:^2.0.8": + version: 2.0.8 + resolution: "object.fromentries@npm:2.0.8" + dependencies: + call-bind: ^1.0.7 + define-properties: ^1.2.1 + es-abstract: ^1.23.2 + es-object-atoms: ^1.0.0 + checksum: 29b2207a2db2782d7ced83f93b3ff5d425f901945f3665ffda1821e30a7253cd1fd6b891a64279976098137ddfa883d748787a6fea53ecdb51f8df8b8cec0ae1 languageName: node linkType: hard -"methods@npm:^1.0.0, methods@npm:^1.1.2, methods@npm:~1.1.2": - version: 1.1.2 - resolution: "methods@npm:1.1.2" - checksum: 0917ff4041fa8e2f2fda5425a955fe16ca411591fbd123c0d722fcf02b73971ed6f764d85f0a6f547ce49ee0221ce2c19a5fa692157931cecb422984f1dcd13a +"object.groupby@npm:^1.0.3": + version: 1.0.3 + resolution: "object.groupby@npm:1.0.3" + dependencies: + call-bind: ^1.0.7 + define-properties: ^1.2.1 + es-abstract: ^1.23.2 + checksum: 0d30693ca3ace29720bffd20b3130451dca7a56c612e1926c0a1a15e4306061d84410bdb1456be2656c5aca53c81b7a3661eceaa362db1bba6669c2c9b6d1982 languageName: node linkType: hard -"micromatch@npm:^4.0.2, micromatch@npm:^4.0.4, micromatch@npm:^4.0.5": - version: 4.0.8 - resolution: "micromatch@npm:4.0.8" +"object.values@npm:^1.1.6, object.values@npm:^1.2.0": + version: 1.2.0 + resolution: "object.values@npm:1.2.0" dependencies: - braces: ^3.0.3 - picomatch: ^2.3.1 - checksum: 79920eb634e6f400b464a954fcfa589c4e7c7143209488e44baf627f9affc8b1e306f41f4f0deedde97e69cb725920879462d3e750ab3bd3c1aed675bb3a8966 + call-bind: ^1.0.7 + define-properties: ^1.2.1 + es-object-atoms: ^1.0.0 + checksum: 51fef456c2a544275cb1766897f34ded968b22adfc13ba13b5e4815fdaf4304a90d42a3aee114b1f1ede048a4890381d47a5594d84296f2767c6a0364b9da8fa languageName: node linkType: hard -"miller-rabin@npm:^4.0.0": - version: 4.0.1 - resolution: "miller-rabin@npm:4.0.1" +"obuf@npm:^1.0.0, obuf@npm:^1.1.2": + version: 1.1.2 + resolution: "obuf@npm:1.1.2" + checksum: 41a2ba310e7b6f6c3b905af82c275bf8854896e2e4c5752966d64cbcd2f599cfffd5932006bcf3b8b419dfdacebb3a3912d5d94e10f1d0acab59876c8757f27f + languageName: node + linkType: hard + +"octokit-plugin-create-pull-request@npm:^5.0.0": + version: 5.1.1 + resolution: "octokit-plugin-create-pull-request@npm:5.1.1" dependencies: - bn.js: ^4.0.0 - brorand: ^1.0.1 - bin: - miller-rabin: bin/miller-rabin - checksum: 00cd1ab838ac49b03f236cc32a14d29d7d28637a53096bf5c6246a032a37749c9bd9ce7360cbf55b41b89b7d649824949ff12bc8eee29ac77c6b38eada619ece + "@octokit/types": ^8.0.0 + checksum: bed96700c795868d1fc6a95d41c87b98c370d84421125b561c6b8632bb85bbb399a9fa6d35abb2c3d342e42f8b10032afb195470cac9b640161064b68d276d9e languageName: node linkType: hard -"mime-db@npm:1.52.0": - version: 1.52.0 - resolution: "mime-db@npm:1.52.0" - checksum: 0d99a03585f8b39d68182803b12ac601d9c01abfa28ec56204fa330bc9f3d1c5e14beb049bafadb3dbdf646dfb94b87e24d4ec7b31b7279ef906a8ea9b6a513f +"octokit@npm:^3.0.0": + version: 3.2.1 + resolution: "octokit@npm:3.2.1" + dependencies: + "@octokit/app": ^14.0.2 + "@octokit/core": ^5.0.0 + "@octokit/oauth-app": ^6.0.0 + "@octokit/plugin-paginate-graphql": ^4.0.0 + "@octokit/plugin-paginate-rest": 11.3.1 + "@octokit/plugin-rest-endpoint-methods": 13.2.2 + "@octokit/plugin-retry": ^6.0.0 + "@octokit/plugin-throttling": ^8.0.0 + "@octokit/request-error": ^5.0.0 + "@octokit/types": ^13.0.0 + checksum: e5608f848fb11808d0c977d946c24bffa622179daf8566c4941f6050551d368aa750b362a95aea14647facd0919e4af392c67b2409f8642dc9f27c7b6c0f964e languageName: node linkType: hard -"mime-db@npm:>= 1.43.0 < 2": - version: 1.53.0 - resolution: "mime-db@npm:1.53.0" - checksum: 3fd9380bdc0b085d0b56b580e4f89ca4fc3b823722310d795c248f0806b9a80afd5d8f4347f015ad943b9ecfa7cc0b71dffa0db96fa776d01a13474821a2c7fb +"oidc-token-hash@npm:^5.0.3": + version: 5.0.3 + resolution: "oidc-token-hash@npm:5.0.3" + checksum: 35fa19aea9ff2c509029ec569d74b778c8a215b92bd5e6e9bc4ebbd7ab035f44304ff02430a6397c3fb7c1d15ebfa467807ca0bcd31d06ba610b47798287d303 languageName: node linkType: hard -"mime-types@npm:^2.1.12, mime-types@npm:^2.1.18, mime-types@npm:^2.1.27, mime-types@npm:^2.1.31, mime-types@npm:~2.1.17, mime-types@npm:~2.1.19, mime-types@npm:~2.1.24, mime-types@npm:~2.1.34": - version: 2.1.35 - resolution: "mime-types@npm:2.1.35" +"on-finished@npm:2.4.1, on-finished@npm:^2.3.0, on-finished@npm:^2.4.1": + version: 2.4.1 + resolution: "on-finished@npm:2.4.1" dependencies: - mime-db: 1.52.0 - checksum: 89a5b7f1def9f3af5dad6496c5ed50191ae4331cc5389d7c521c8ad28d5fdad2d06fd81baf38fed813dc4e46bb55c8145bb0ff406330818c9cf712fb2e9b3836 + ee-first: 1.1.1 + checksum: d20929a25e7f0bb62f937a425b5edeb4e4cde0540d77ba146ec9357f00b0d497cdb3b9b05b9c8e46222407d1548d08166bff69cc56dfa55ba0e4469228920ff0 languageName: node linkType: hard -"mime@npm:1.6.0": - version: 1.6.0 - resolution: "mime@npm:1.6.0" - bin: - mime: cli.js - checksum: fef25e39263e6d207580bdc629f8872a3f9772c923c7f8c7e793175cee22777bbe8bba95e5d509a40aaa292d8974514ce634ae35769faa45f22d17edda5e8557 +"on-finished@npm:~2.3.0": + version: 2.3.0 + resolution: "on-finished@npm:2.3.0" + dependencies: + ee-first: 1.1.1 + checksum: 1db595bd963b0124d6fa261d18320422407b8f01dc65863840f3ddaaf7bcad5b28ff6847286703ca53f4ec19595bd67a2f1253db79fc4094911ec6aa8df1671b languageName: node linkType: hard -"mime@npm:2.6.0": - version: 2.6.0 - resolution: "mime@npm:2.6.0" - bin: - mime: cli.js - checksum: 1497ba7b9f6960694268a557eae24b743fd2923da46ec392b042469f4b901721ba0adcf8b0d3c2677839d0e243b209d76e5edcbd09cfdeffa2dfb6bb4df4b862 +"on-headers@npm:~1.0.2": + version: 1.0.2 + resolution: "on-headers@npm:1.0.2" + checksum: 2bf13467215d1e540a62a75021e8b318a6cfc5d4fc53af8e8f84ad98dbcea02d506c6d24180cd62e1d769c44721ba542f3154effc1f7579a8288c9f7873ed8e5 languageName: node linkType: hard -"mime@npm:^3.0.0": - version: 3.0.0 - resolution: "mime@npm:3.0.0" - bin: - mime: cli.js - checksum: f43f9b7bfa64534e6b05bd6062961681aeb406a5b53673b53b683f27fcc4e739989941836a355eef831f4478923651ecc739f4a5f6e20a76487b432bfd4db928 +"once@npm:^1.3.0, once@npm:^1.3.1, once@npm:^1.4.0": + version: 1.4.0 + resolution: "once@npm:1.4.0" + dependencies: + wrappy: 1 + checksum: cd0a88501333edd640d95f0d2700fbde6bff20b3d4d9bdc521bdd31af0656b5706570d6c6afe532045a20bb8dc0849f8332d6f2a416e0ba6d3d3b98806c7db68 languageName: node linkType: hard -"mimic-fn@npm:^2.1.0": - version: 2.1.0 - resolution: "mimic-fn@npm:2.1.0" - checksum: d2421a3444848ce7f84bd49115ddacff29c15745db73f54041edc906c14b131a38d05298dae3081667627a59b2eb1ca4b436ff2e1b80f69679522410418b478a +"one-time@npm:^1.0.0": + version: 1.0.0 + resolution: "one-time@npm:1.0.0" + dependencies: + fn.name: 1.x.x + checksum: fd008d7e992bdec1c67f53a2f9b46381ee12a9b8c309f88b21f0223546003fb47e8ad7c1fd5843751920a8d276c63bd4b45670ef80c61fb3e07dbccc962b5c7d languageName: node linkType: hard -"mimic-response@npm:^3.1.0": - version: 3.1.0 - resolution: "mimic-response@npm:3.1.0" - checksum: 25739fee32c17f433626bf19f016df9036b75b3d84a3046c7d156e72ec963dd29d7fc8a302f55a3d6c5a4ff24259676b15d915aad6480815a969ff2ec0836867 +"onetime@npm:^5.1.0, onetime@npm:^5.1.2": + version: 5.1.2 + resolution: "onetime@npm:5.1.2" + dependencies: + mimic-fn: ^2.1.0 + checksum: 2478859ef817fc5d4e9c2f9e5728512ddd1dbc9fb7829ad263765bb6d3b91ce699d6e2332eef6b7dff183c2f490bd3349f1666427eaba4469fba0ac38dfd0d34 languageName: node linkType: hard -"mini-css-extract-plugin@npm:^2.4.2": - version: 2.9.1 - resolution: "mini-css-extract-plugin@npm:2.9.1" - dependencies: - schema-utils: ^4.0.0 - tapable: ^2.2.1 - peerDependencies: - webpack: ^5.0.0 - checksum: 036b0fbb207cf9a56e2f5f5dce5e35100cbd255e5b5a920a5357ec99215af16a77136020729b2d004a041d04ebb0a544b2f442535cbb982704dcd50297014c9e +"only@npm:~0.0.2": + version: 0.0.2 + resolution: "only@npm:0.0.2" + checksum: d399710db867a1ef436dd3ce74499c87ece794aa81ab0370b5d153968766ee4aed2f98d3f92fc87c963e45b7a74d400d6f463ef651a5e7cfb861b15e88e9efe6 languageName: node linkType: hard -"minimalistic-assert@npm:^1.0.0, minimalistic-assert@npm:^1.0.1": - version: 1.0.1 - resolution: "minimalistic-assert@npm:1.0.1" - checksum: cc7974a9268fbf130fb055aff76700d7e2d8be5f761fb5c60318d0ed010d839ab3661a533ad29a5d37653133385204c503bfac995aaa4236f4e847461ea32ba7 +"ono@npm:^7.1.3": + version: 7.1.3 + resolution: "ono@npm:7.1.3" + dependencies: + "@jsdevtools/ono": 7.1.3 + checksum: d341681f1bdd08071760a8d92d37e0e5fb483c6f5c510543a17896c8ee7bdd399a375c632d39f9c78bd2aeab4e5e2eaae9ae0ab71c9738276ba8459c18ce41c4 languageName: node linkType: hard -"minimalistic-crypto-utils@npm:^1.0.1": - version: 1.0.1 - resolution: "minimalistic-crypto-utils@npm:1.0.1" - checksum: 6e8a0422b30039406efd4c440829ea8f988845db02a3299f372fceba56ffa94994a9c0f2fd70c17f9969eedfbd72f34b5070ead9656a34d3f71c0bd72583a0ed +"open@npm:^10.0.3": + version: 10.1.0 + resolution: "open@npm:10.1.0" + dependencies: + default-browser: ^5.2.1 + define-lazy-prop: ^3.0.0 + is-inside-container: ^1.0.0 + is-wsl: ^3.1.0 + checksum: 079b0771616bac13b08129b0300032dc9328d72f345e460dd0416b8a8196a5bdf5e0251fefec8aa2a6a97c736734ac65dd8f1d29ab3fc9a13e85624aa5bc4470 languageName: node linkType: hard -"minimatch@npm:3.1.2, minimatch@npm:^3.0.4, minimatch@npm:^3.0.5, minimatch@npm:^3.1.1, minimatch@npm:^3.1.2": - version: 3.1.2 - resolution: "minimatch@npm:3.1.2" +"open@npm:^8.0.0, open@npm:^8.0.9, open@npm:^8.4.0": + version: 8.4.2 + resolution: "open@npm:8.4.2" dependencies: - brace-expansion: ^1.1.7 - checksum: c154e566406683e7bcb746e000b84d74465b3a832c45d59912b9b55cd50dee66e5c4b1e5566dba26154040e51672f9aa450a9aef0c97cfc7336b78b7afb9540a + define-lazy-prop: ^2.0.0 + is-docker: ^2.1.1 + is-wsl: ^2.2.0 + checksum: 6388bfff21b40cb9bd8f913f9130d107f2ed4724ea81a8fd29798ee322b361ca31fa2cdfb491a5c31e43a3996cfe9566741238c7a741ada8d7af1cb78d85cf26 languageName: node linkType: hard -"minimatch@npm:9.0.3": - version: 9.0.3 - resolution: "minimatch@npm:9.0.3" +"openapi-merge@npm:^1.3.2": + version: 1.3.3 + resolution: "openapi-merge@npm:1.3.3" dependencies: - brace-expansion: ^2.0.1 - checksum: 253487976bf485b612f16bf57463520a14f512662e592e95c571afdab1442a6a6864b6c88f248ce6fc4ff0b6de04ac7aa6c8bb51e868e99d1d65eb0658a708b5 + atlassian-openapi: ^1.0.8 + lodash: ^4.17.15 + ts-is-present: ^1.1.1 + checksum: d23ed060facb72f52088cf59bf10abbd36e169bf727c634582904ab0cddfa697b2af0d0e720d908154c2966b80344a8d59811827582949e1e9ffd2acdbc70537 languageName: node linkType: hard -"minimatch@npm:^5.0.1, minimatch@npm:^5.1.0": - version: 5.1.6 - resolution: "minimatch@npm:5.1.6" +"openapi-path-templating@npm:^1.5.1": + version: 1.7.0 + resolution: "openapi-path-templating@npm:1.7.0" dependencies: - brace-expansion: ^2.0.1 - checksum: 7564208ef81d7065a370f788d337cd80a689e981042cb9a1d0e6580b6c6a8c9279eba80010516e258835a988363f99f54a6f711a315089b8b42694f5da9d0d77 + apg-lite: ^1.0.4 + checksum: 4a473f88e922f1ce4c17c3d1d7f7969deed7eaad038df325d30591163f9a7a592a3322bb298d9e0762f262a7a4e32d3a7b81409b90558fb5bc7f2202ecc8d433 languageName: node linkType: hard -"minimatch@npm:^8.0.2": - version: 8.0.4 - resolution: "minimatch@npm:8.0.4" +"openapi-sampler@npm:^1.2.1": + version: 1.6.1 + resolution: "openapi-sampler@npm:1.6.1" dependencies: - brace-expansion: ^2.0.1 - checksum: 2e46cffb86bacbc524ad45a6426f338920c529dd13f3a732cc2cf7618988ee1aae88df4ca28983285aca9e0f45222019ac2d14ebd17c1edadd2ee12221ab801a + "@types/json-schema": ^7.0.7 + fast-xml-parser: ^4.5.0 + json-pointer: 0.6.2 + checksum: 142b7ede3eefaaf0c43905dddd12494f107c078169e578c48742882d4ab2e732908d9be4a0ac9fa856d2aa7ed054c25b6bf1a69bc0ae4777e5e0dc3f729f0334 languageName: node linkType: hard -"minimatch@npm:^9.0.0, minimatch@npm:^9.0.4": - version: 9.0.5 - resolution: "minimatch@npm:9.0.5" +"openapi-server-url-templating@npm:^1.0.0": + version: 1.2.0 + resolution: "openapi-server-url-templating@npm:1.2.0" dependencies: - brace-expansion: ^2.0.1 - checksum: 2c035575eda1e50623c731ec6c14f65a85296268f749b9337005210bb2b34e2705f8ef1a358b188f69892286ab99dc42c8fb98a57bde55c8d81b3023c19cea28 + apg-lite: ^1.0.4 + checksum: 2b2406acf7adf836304f934289fb45a8464f60a6affb89466a64cb24907f24eaf9badd488b2a7db94abe2f7c6a303f058238079387e7e6fd5c398341a6ac0656 languageName: node linkType: hard -"minimatch@npm:~3.0.3": - version: 3.0.8 - resolution: "minimatch@npm:3.0.8" - dependencies: - brace-expansion: ^1.1.7 - checksum: 850cca179cad715133132693e6963b0db64ab0988c4d211415b087fc23a3e46321e2c5376a01bf5623d8782aba8bdf43c571e2e902e51fdce7175c7215c29f8b +"openapi-types@npm:^12.0.2": + version: 12.1.3 + resolution: "openapi-types@npm:12.1.3" + checksum: 7fa5547f87a58d2aa0eba6e91d396f42d7d31bc3ae140e61b5d60b47d2fd068b48776f42407d5a8da7280cf31195aa128c2fc285e8bb871d1105edee5647a0bb languageName: node linkType: hard -"minimist@npm:^1.2.0, minimist@npm:^1.2.3, minimist@npm:^1.2.5, minimist@npm:^1.2.6, minimist@npm:^1.2.8": - version: 1.2.8 - resolution: "minimist@npm:1.2.8" - checksum: 75a6d645fb122dad29c06a7597bddea977258957ed88d7a6df59b5cd3fe4a527e253e9bbf2e783e4b73657f9098b96a5fe96ab8a113655d4109108577ecf85b0 +"openapi3-ts@npm:^3.1.2": + version: 3.2.0 + resolution: "openapi3-ts@npm:3.2.0" + dependencies: + yaml: ^2.2.1 + checksum: 8796a29a1363bc892ba1acb3ddffd9e6b80e8f83cbfad4cd507262e957317139cac2528ab4b14c1b30bf350ebc9cc4c43ad32a89da4d7c4b85f7e815ffba3ebe languageName: node linkType: hard -"minimisted@npm:^2.0.0": - version: 2.0.1 - resolution: "minimisted@npm:2.0.1" +"openid-client@npm:^5.2.1, openid-client@npm:^5.5.0": + version: 5.7.1 + resolution: "openid-client@npm:5.7.1" dependencies: - minimist: ^1.2.5 - checksum: 6bc3df14558481c96764cfd6bf77a59f5838dec715c38c1e338193c1e56f536ba792ccbae84ff6632d13a7dd37ac888141c091d23733229b8d100148eec930aa + jose: ^4.15.9 + lru-cache: ^6.0.0 + object-hash: ^2.2.0 + oidc-token-hash: ^5.0.3 + checksum: 497aad2c8a022cef112ade19ed88fba6c8ca0e79607ebe5efdcf75c4095d7924ca479085c1c94f689f6dbc9442c61aab3c2443eb347bcbc6ef51df68827c7c47 languageName: node linkType: hard -"minipass-collect@npm:^1.0.2": - version: 1.0.2 - resolution: "minipass-collect@npm:1.0.2" +"openid-client@npm:^5.3.0": + version: 5.7.0 + resolution: "openid-client@npm:5.7.0" dependencies: - minipass: ^3.0.0 - checksum: 14df761028f3e47293aee72888f2657695ec66bd7d09cae7ad558da30415fdc4752bbfee66287dcc6fd5e6a2fa3466d6c484dc1cbd986525d9393b9523d97f10 + jose: ^4.15.9 + lru-cache: ^6.0.0 + object-hash: ^2.2.0 + oidc-token-hash: ^5.0.3 + checksum: 63fc76918fc12f3d6e1456a0b170f417defccf6820acb4581ffc226cb8c9a18d50f76f0982d7a00cce2896c732eb2a6361ad6ea04b127b2603e56408b680ef9c languageName: node linkType: hard -"minipass-collect@npm:^2.0.1": - version: 2.0.1 - resolution: "minipass-collect@npm:2.0.1" +"oppa@npm:^0.4.0": + version: 0.4.0 + resolution: "oppa@npm:0.4.0" dependencies: - minipass: ^7.0.3 - checksum: b251bceea62090f67a6cced7a446a36f4cd61ee2d5cea9aee7fff79ba8030e416327a1c5aa2908dc22629d06214b46d88fdab8c51ac76bacbf5703851b5ad342 + chalk: ^4.1.1 + checksum: ecc43e63ede05c3ccb10e0f2c3f3020a6d72e1a3b318f3e37b8cc8a1a279e300991c043e5385d560c1eebb54a56c7f9b69bf0db0d1933acf350bcd2980c96055 languageName: node linkType: hard -"minipass-fetch@npm:^2.0.3": - version: 2.1.2 - resolution: "minipass-fetch@npm:2.1.2" +"optionator@npm:^0.8.1": + version: 0.8.3 + resolution: "optionator@npm:0.8.3" dependencies: - encoding: ^0.1.13 - minipass: ^3.1.6 - minipass-sized: ^1.0.3 - minizlib: ^2.1.2 - dependenciesMeta: - encoding: - optional: true - checksum: 3f216be79164e915fc91210cea1850e488793c740534985da017a4cbc7a5ff50506956d0f73bb0cb60e4fe91be08b6b61ef35101706d3ef5da2c8709b5f08f91 + deep-is: ~0.1.3 + fast-levenshtein: ~2.0.6 + levn: ~0.3.0 + prelude-ls: ~1.1.2 + type-check: ~0.3.2 + word-wrap: ~1.2.3 + checksum: b8695ddf3d593203e25ab0900e265d860038486c943ff8b774f596a310f8ceebdb30c6832407a8198ba3ec9debe1abe1f51d4aad94843612db3b76d690c61d34 languageName: node linkType: hard -"minipass-fetch@npm:^3.0.0": - version: 3.0.5 - resolution: "minipass-fetch@npm:3.0.5" +"optionator@npm:^0.9.3": + version: 0.9.4 + resolution: "optionator@npm:0.9.4" dependencies: - encoding: ^0.1.13 - minipass: ^7.0.3 - minipass-sized: ^1.0.3 - minizlib: ^2.1.2 - dependenciesMeta: - encoding: - optional: true - checksum: 8047d273236157aab27ab7cd8eab7ea79e6ecd63e8f80c3366ec076cb9a0fed550a6935bab51764369027c414647fd8256c2a20c5445fb250c483de43350de83 + deep-is: ^0.1.3 + fast-levenshtein: ^2.0.6 + levn: ^0.4.1 + prelude-ls: ^1.2.1 + type-check: ^0.4.0 + word-wrap: ^1.2.5 + checksum: ecbd010e3dc73e05d239976422d9ef54a82a13f37c11ca5911dff41c98a6c7f0f163b27f922c37e7f8340af9d36febd3b6e9cef508f3339d4c393d7276d716bb languageName: node linkType: hard -"minipass-flush@npm:^1.0.5": - version: 1.0.5 - resolution: "minipass-flush@npm:1.0.5" +"ora@npm:^5.3.0, ora@npm:^5.4.1": + version: 5.4.1 + resolution: "ora@npm:5.4.1" dependencies: - minipass: ^3.0.0 - checksum: 56269a0b22bad756a08a94b1ffc36b7c9c5de0735a4dd1ab2b06c066d795cfd1f0ac44a0fcae13eece5589b908ecddc867f04c745c7009be0b566421ea0944cf + bl: ^4.1.0 + chalk: ^4.1.0 + cli-cursor: ^3.1.0 + cli-spinners: ^2.5.0 + is-interactive: ^1.0.0 + is-unicode-supported: ^0.1.0 + log-symbols: ^4.1.0 + strip-ansi: ^6.0.0 + wcwidth: ^1.0.1 + checksum: 28d476ee6c1049d68368c0dc922e7225e3b5600c3ede88fade8052837f9ed342625fdaa84a6209302587c8ddd9b664f71f0759833cbdb3a4cf81344057e63c63 + languageName: node + linkType: hard + +"os-browserify@npm:^0.3.0": + version: 0.3.0 + resolution: "os-browserify@npm:0.3.0" + checksum: 16e37ba3c0e6a4c63443c7b55799ce4066d59104143cb637ecb9fce586d5da319cdca786ba1c867abbe3890d2cbf37953f2d51eea85e20dd6c4570d6c54bfebf languageName: node linkType: hard -"minipass-pipeline@npm:^1.2.4": - version: 1.2.4 - resolution: "minipass-pipeline@npm:1.2.4" - dependencies: - minipass: ^3.0.0 - checksum: b14240dac0d29823c3d5911c286069e36d0b81173d7bdf07a7e4a91ecdef92cdff4baaf31ea3746f1c61e0957f652e641223970870e2353593f382112257971b +"os-tmpdir@npm:~1.0.2": + version: 1.0.2 + resolution: "os-tmpdir@npm:1.0.2" + checksum: 5666560f7b9f10182548bf7013883265be33620b1c1b4a4d405c25be2636f970c5488ff3e6c48de75b55d02bde037249fe5dbfbb4c0fb7714953d56aed062e6d languageName: node linkType: hard -"minipass-sized@npm:^1.0.3": - version: 1.0.3 - resolution: "minipass-sized@npm:1.0.3" - dependencies: - minipass: ^3.0.0 - checksum: 79076749fcacf21b5d16dd596d32c3b6bf4d6e62abb43868fac21674078505c8b15eaca4e47ed844985a4514854f917d78f588fcd029693709417d8f98b2bd60 +"outdent@npm:^0.5.0": + version: 0.5.0 + resolution: "outdent@npm:0.5.0" + checksum: 6e6c63dd09e9890e67ef9a0b4d35df0b0b850b2059ce3f7e19e4cc1a146b26dc5d8c45df238dbf187dfffc8bd82cd07d37c697544015680bcb9f07f29a36c678 languageName: node linkType: hard -"minipass@npm:^3.0.0, minipass@npm:^3.1.1, minipass@npm:^3.1.6": - version: 3.3.6 - resolution: "minipass@npm:3.3.6" - dependencies: - yallist: ^4.0.0 - checksum: a30d083c8054cee83cdcdc97f97e4641a3f58ae743970457b1489ce38ee1167b3aaf7d815cd39ec7a99b9c40397fd4f686e83750e73e652b21cb516f6d845e48 +"outvariant@npm:^1.2.1, outvariant@npm:^1.4.0": + version: 1.4.3 + resolution: "outvariant@npm:1.4.3" + checksum: 4a3551fb2b45309e585eebf88bad094dbe56ac6d3a28d59dd2e4050b431aa2beb6097a0763fce3cd82ca0f077026f380a9b60fffc306aaf430141421e7a7b6ed languageName: node linkType: hard -"minipass@npm:^4.2.4": - version: 4.2.8 - resolution: "minipass@npm:4.2.8" - checksum: 7f4914d5295a9a30807cae5227a37a926e6d910c03f315930fde52332cf0575dfbc20295318f91f0baf0e6bb11a6f668e30cde8027dea7a11b9d159867a3c830 +"p-defer@npm:^1.0.0": + version: 1.0.0 + resolution: "p-defer@npm:1.0.0" + checksum: 4271b935c27987e7b6f229e5de4cdd335d808465604644cb7b4c4c95bef266735859a93b16415af8a41fd663ee9e3b97a1a2023ca9def613dba1bad2a0da0c7b languageName: node linkType: hard -"minipass@npm:^5.0.0": - version: 5.0.0 - resolution: "minipass@npm:5.0.0" - checksum: 425dab288738853fded43da3314a0b5c035844d6f3097a8e3b5b29b328da8f3c1af6fc70618b32c29ff906284cf6406b6841376f21caaadd0793c1d5a6a620ea +"p-filter@npm:^2.1.0": + version: 2.1.0 + resolution: "p-filter@npm:2.1.0" + dependencies: + p-map: ^2.0.0 + checksum: 76e552ca624ce2233448d68b19eec9de42b695208121998f7e011edce71d1079a83096ee6a2078fb2a59cfa8a5c999f046edf00ebf16a8e780022010b4693234 languageName: node linkType: hard -"minipass@npm:^5.0.0 || ^6.0.2 || ^7.0.0, minipass@npm:^7.0.2, minipass@npm:^7.0.3, minipass@npm:^7.1.2": - version: 7.1.2 - resolution: "minipass@npm:7.1.2" - checksum: 2bfd325b95c555f2b4d2814d49325691c7bee937d753814861b0b49d5edcda55cbbf22b6b6a60bb91eddac8668771f03c5ff647dcd9d0f798e9548b9cdc46ee3 +"p-finally@npm:^1.0.0": + version: 1.0.0 + resolution: "p-finally@npm:1.0.0" + checksum: 93a654c53dc805dd5b5891bab16eb0ea46db8f66c4bfd99336ae929323b1af2b70a8b0654f8f1eae924b2b73d037031366d645f1fd18b3d30cbd15950cc4b1d4 languageName: node linkType: hard -"minizlib@npm:^2.1.1, minizlib@npm:^2.1.2": - version: 2.1.2 - resolution: "minizlib@npm:2.1.2" +"p-limit@npm:3.1.0, p-limit@npm:^3.0.1, p-limit@npm:^3.0.2, p-limit@npm:^3.1.0": + version: 3.1.0 + resolution: "p-limit@npm:3.1.0" dependencies: - minipass: ^3.0.0 - yallist: ^4.0.0 - checksum: f1fdeac0b07cf8f30fcf12f4b586795b97be856edea22b5e9072707be51fc95d41487faec3f265b42973a304fe3a64acd91a44a3826a963e37b37bafde0212c3 + yocto-queue: ^0.1.0 + checksum: 7c3690c4dbf62ef625671e20b7bdf1cbc9534e83352a2780f165b0d3ceba21907e77ad63401708145ca4e25bfc51636588d89a8c0aeb715e6c37d1c066430360 languageName: node linkType: hard -"mkdirp-classic@npm:^0.5.2, mkdirp-classic@npm:^0.5.3": - version: 0.5.3 - resolution: "mkdirp-classic@npm:0.5.3" - checksum: 3f4e088208270bbcc148d53b73e9a5bd9eef05ad2cbf3b3d0ff8795278d50dd1d11a8ef1875ff5aea3fa888931f95bfcb2ad5b7c1061cfefd6284d199e6776ac +"p-limit@npm:^1.1.0": + version: 1.3.0 + resolution: "p-limit@npm:1.3.0" + dependencies: + p-try: ^1.0.0 + checksum: 281c1c0b8c82e1ac9f81acd72a2e35d402bf572e09721ce5520164e9de07d8274451378a3470707179ad13240535558f4b277f02405ad752e08c7d5b0d54fbfd languageName: node linkType: hard -"mkdirp@npm:^0.5.6": - version: 0.5.6 - resolution: "mkdirp@npm:0.5.6" +"p-limit@npm:^2.0.0, p-limit@npm:^2.2.0": + version: 2.3.0 + resolution: "p-limit@npm:2.3.0" dependencies: - minimist: ^1.2.6 - bin: - mkdirp: bin/cmd.js - checksum: 0c91b721bb12c3f9af4b77ebf73604baf350e64d80df91754dc509491ae93bf238581e59c7188360cec7cb62fc4100959245a42cfe01834efedc5e9d068376c2 + p-try: ^2.0.0 + checksum: 84ff17f1a38126c3314e91ecfe56aecbf36430940e2873dadaa773ffe072dc23b7af8e46d4b6485d302a11673fe94c6b67ca2cfbb60c989848b02100d0594ac1 languageName: node linkType: hard -"mkdirp@npm:^1.0.3, mkdirp@npm:^1.0.4": - version: 1.0.4 - resolution: "mkdirp@npm:1.0.4" - bin: - mkdirp: bin/cmd.js - checksum: a96865108c6c3b1b8e1d5e9f11843de1e077e57737602de1b82030815f311be11f96f09cce59bd5b903d0b29834733e5313f9301e3ed6d6f6fba2eae0df4298f +"p-locate@npm:^2.0.0": + version: 2.0.0 + resolution: "p-locate@npm:2.0.0" + dependencies: + p-limit: ^1.1.0 + checksum: e2dceb9b49b96d5513d90f715780f6f4972f46987dc32a0e18bc6c3fc74a1a5d73ec5f81b1398af5e58b99ea1ad03fd41e9181c01fa81b4af2833958696e3081 languageName: node linkType: hard -"mkdirp@npm:^3.0.1": - version: 3.0.1 - resolution: "mkdirp@npm:3.0.1" - bin: - mkdirp: dist/cjs/src/bin.js - checksum: 972deb188e8fb55547f1e58d66bd6b4a3623bf0c7137802582602d73e6480c1c2268dcbafbfb1be466e00cc7e56ac514d7fd9334b7cf33e3e2ab547c16f83a8d +"p-locate@npm:^3.0.0": + version: 3.0.0 + resolution: "p-locate@npm:3.0.0" + dependencies: + p-limit: ^2.0.0 + checksum: 83991734a9854a05fe9dbb29f707ea8a0599391f52daac32b86f08e21415e857ffa60f0e120bfe7ce0cc4faf9274a50239c7895fc0d0579d08411e513b83a4ae languageName: node linkType: hard -"moment@npm:^2.29.4": - version: 2.30.1 - resolution: "moment@npm:2.30.1" - checksum: 859236bab1e88c3e5802afcf797fc801acdbd0ee509d34ea3df6eea21eb6bcc2abd4ae4e4e64aa7c986aa6cba563c6e62806218e6412a765010712e5fa121ba6 +"p-locate@npm:^4.1.0": + version: 4.1.0 + resolution: "p-locate@npm:4.1.0" + dependencies: + p-limit: ^2.2.0 + checksum: 513bd14a455f5da4ebfcb819ef706c54adb09097703de6aeaa5d26fe5ea16df92b48d1ac45e01e3944ce1e6aa2a66f7f8894742b8c9d6e276e16cd2049a2b870 languageName: node linkType: hard -"morgan@npm:^1.10.0": - version: 1.10.0 - resolution: "morgan@npm:1.10.0" +"p-locate@npm:^5.0.0": + version: 5.0.0 + resolution: "p-locate@npm:5.0.0" dependencies: - basic-auth: ~2.0.1 - debug: 2.6.9 - depd: ~2.0.0 - on-finished: ~2.3.0 - on-headers: ~1.0.2 - checksum: fb41e226ab5a1abf7e8909e486b387076534716d60207e361acfb5df78b84d703a7b7ea58f3046a9fd0b83d3c94bfabde32323341a1f1b26ce50680abd2ea5dd + p-limit: ^3.0.2 + checksum: 1623088f36cf1cbca58e9b61c4e62bf0c60a07af5ae1ca99a720837356b5b6c5ba3eb1b2127e47a06865fee59dd0453cad7cc844cda9d5a62ac1a5a51b7c86d3 languageName: node linkType: hard -"mri@npm:^1.2.0": - version: 1.2.0 - resolution: "mri@npm:1.2.0" - checksum: 83f515abbcff60150873e424894a2f65d68037e5a7fcde8a9e2b285ee9c13ac581b63cfc1e6826c4732de3aeb84902f7c1e16b7aff46cd3f897a0f757a894e85 +"p-map@npm:^2.0.0": + version: 2.1.0 + resolution: "p-map@npm:2.1.0" + checksum: 9e3ad3c9f6d75a5b5661bcad78c91f3a63849189737cd75e4f1225bf9ac205194e5c44aac2ef6f09562b1facdb9bd1425584d7ac375bfaa17b3f1a142dab936d languageName: node linkType: hard -"ms@npm:2.0.0": - version: 2.0.0 - resolution: "ms@npm:2.0.0" - checksum: 0e6a22b8b746d2e0b65a430519934fefd41b6db0682e3477c10f60c76e947c4c0ad06f63ffdf1d78d335f83edee8c0aa928aa66a36c7cd95b69b26f468d527f4 +"p-map@npm:^4.0.0": + version: 4.0.0 + resolution: "p-map@npm:4.0.0" + dependencies: + aggregate-error: ^3.0.0 + checksum: cb0ab21ec0f32ddffd31dfc250e3afa61e103ef43d957cc45497afe37513634589316de4eb88abdfd969fe6410c22c0b93ab24328833b8eb1ccc087fc0442a1c languageName: node linkType: hard -"ms@npm:2.1.2": - version: 2.1.2 - resolution: "ms@npm:2.1.2" - checksum: 673cdb2c3133eb050c745908d8ce632ed2c02d85640e2edb3ace856a2266a813b30c613569bf3354fdf4ea7d1a1494add3bfa95e2713baa27d0c2c71fc44f58f +"p-queue@npm:^6.6.2": + version: 6.6.2 + resolution: "p-queue@npm:6.6.2" + dependencies: + eventemitter3: ^4.0.4 + p-timeout: ^3.2.0 + checksum: 832642fcc4ab6477b43e6d7c30209ab10952969ed211c6d6f2931be8a4f9935e3578c72e8cce053dc34f2eb6941a408a2c516a54904e989851a1a209cf19761c languageName: node linkType: hard -"ms@npm:2.1.3, ms@npm:^2.0.0, ms@npm:^2.1.1, ms@npm:^2.1.3": - version: 2.1.3 - resolution: "ms@npm:2.1.3" - checksum: aa92de608021b242401676e35cfa5aa42dd70cbdc082b916da7fb925c542173e36bce97ea3e804923fe92c0ad991434e4a38327e15a1b5b5f945d66df615ae6d +"p-retry@npm:^4.5.0": + version: 4.6.2 + resolution: "p-retry@npm:4.6.2" + dependencies: + "@types/retry": 0.12.0 + retry: ^0.13.1 + checksum: 45c270bfddaffb4a895cea16cb760dcc72bdecb6cb45fef1971fa6ea2e91ddeafddefe01e444ac73e33b1b3d5d29fb0dd18a7effb294262437221ddc03ce0f2e languageName: node linkType: hard -"msw@npm:1.3.5, msw@npm:^1.0.0": - version: 1.3.5 - resolution: "msw@npm:1.3.5" +"p-retry@npm:^6.2.0": + version: 6.2.0 + resolution: "p-retry@npm:6.2.0" dependencies: - "@mswjs/cookies": ^0.2.2 - "@mswjs/interceptors": ^0.17.10 - "@open-draft/until": ^1.0.3 - "@types/cookie": ^0.4.1 - "@types/js-levenshtein": ^1.1.1 - chalk: ^4.1.1 - chokidar: ^3.4.2 - cookie: ^0.4.2 - graphql: ^16.8.1 - headers-polyfill: 3.2.5 - inquirer: ^8.2.0 - is-node-process: ^1.2.0 - js-levenshtein: ^1.1.6 - node-fetch: ^2.6.7 - outvariant: ^1.4.0 - path-to-regexp: ^6.3.0 - strict-event-emitter: ^0.4.3 - type-fest: ^2.19.0 - yargs: ^17.3.1 - peerDependencies: - typescript: ">= 4.4.x" - peerDependenciesMeta: - typescript: - optional: true - bin: - msw: cli/index.js - checksum: 5e1d96d63c0ce07db94373b2315739abecb76dac32dcc6ce116c902ced3e61ef2b1c7ff87eed3627c93fe0588002717edab9c745ebdee29437ed0da4b3beb561 + "@types/retry": 0.12.2 + is-network-error: ^1.0.0 + retry: ^0.13.1 + checksum: 6003573c559ee812329c9c3ede7ba12a783fdc8dd70602116646e850c920b4597dc502fe001c3f9526fca4e93275045db7a27341c458e51db179c1374a01ac44 languageName: node linkType: hard -"multicast-dns@npm:^7.2.5": - version: 7.2.5 - resolution: "multicast-dns@npm:7.2.5" - dependencies: - dns-packet: ^5.2.2 - thunky: ^1.0.2 - bin: - multicast-dns: cli.js - checksum: 00b8a57df152d4cd0297946320a94b7c3cdf75a46a2247f32f958a8927dea42958177f9b7fdae69fab2e4e033fb3416881af1f5e9055a3e1542888767139e2fb +"p-throttle@npm:^4.1.1": + version: 4.1.1 + resolution: "p-throttle@npm:4.1.1" + checksum: fe8709f3c3b1da7c033479375c2c302e80c1a5d86449013afa7cd46d1dc210bc824a7e4a9d088e66d31987d00878c2b5491bb2fe76246d4d2fc9a1636f5f8298 languageName: node linkType: hard -"mute-stream@npm:0.0.8": - version: 0.0.8 - resolution: "mute-stream@npm:0.0.8" - checksum: ff48d251fc3f827e5b1206cda0ffdaec885e56057ee86a3155e1951bc940fd5f33531774b1cc8414d7668c10a8907f863f6561875ee6e8768931a62121a531a1 +"p-timeout@npm:^3.2.0": + version: 3.2.0 + resolution: "p-timeout@npm:3.2.0" + dependencies: + p-finally: ^1.0.0 + checksum: 3dd0eaa048780a6f23e5855df3dd45c7beacff1f820476c1d0d1bcd6648e3298752ba2c877aa1c92f6453c7dd23faaf13d9f5149fc14c0598a142e2c5e8d649c languageName: node linkType: hard -"mysql2@npm:^3.0.0": - version: 3.11.3 - resolution: "mysql2@npm:3.11.3" - dependencies: - aws-ssl-profiles: ^1.1.1 - denque: ^2.1.0 - generate-function: ^2.3.1 - iconv-lite: ^0.6.3 - long: ^5.2.1 - lru.min: ^1.0.0 - named-placeholders: ^1.1.3 - seq-queue: ^0.0.5 - sqlstring: ^2.3.2 - checksum: ae62b5b997da429a33f0762158db965d22daece0030e75ac8e822b0b342ad082fa5f1ead87d922d0ba93595e9d5491036916ef91457c762517f25f41afa6e2d9 +"p-try@npm:^1.0.0": + version: 1.0.0 + resolution: "p-try@npm:1.0.0" + checksum: 3b5303f77eb7722144154288bfd96f799f8ff3e2b2b39330efe38db5dd359e4fb27012464cd85cb0a76e9b7edd1b443568cb3192c22e7cffc34989df0bafd605 languageName: node linkType: hard -"mz@npm:^2.7.0": - version: 2.7.0 - resolution: "mz@npm:2.7.0" - dependencies: - any-promise: ^1.0.0 - object-assign: ^4.0.1 - thenify-all: ^1.0.0 - checksum: 8427de0ece99a07e9faed3c0c6778820d7543e3776f9a84d22cf0ec0a8eb65f6e9aee9c9d353ff9a105ff62d33a9463c6ca638974cc652ee8140cd1e35951c87 +"p-try@npm:^2.0.0": + version: 2.2.0 + resolution: "p-try@npm:2.2.0" + checksum: f8a8e9a7693659383f06aec604ad5ead237c7a261c18048a6e1b5b85a5f8a067e469aa24f5bc009b991ea3b058a87f5065ef4176793a200d4917349881216cae languageName: node linkType: hard -"named-placeholders@npm:^1.1.3": - version: 1.1.3 - resolution: "named-placeholders@npm:1.1.3" +"pac-proxy-agent@npm:^7.0.0": + version: 7.1.0 + resolution: "pac-proxy-agent@npm:7.1.0" dependencies: - lru-cache: ^7.14.1 - checksum: 7834adc91e92ae1b9c4413384e3ccd297de5168bb44017ff0536705ddc4db421723bd964607849265feb3f6ded390f84cf138e5925f22f7c13324f87a803dc73 + "@tootallnate/quickjs-emscripten": ^0.23.0 + agent-base: ^7.1.2 + debug: ^4.3.4 + get-uri: ^6.0.1 + http-proxy-agent: ^7.0.0 + https-proxy-agent: ^7.0.6 + pac-resolver: ^7.0.1 + socks-proxy-agent: ^8.0.5 + checksum: 0ed8ebca239b5c78f7c5039ec0e33aaf6ce8de2fb53d00996b5b7b362e655af9793721008ddf56c4b1d30fb5202b2cb5baee97e374ed1285c0cfb5be7c4574a5 languageName: node linkType: hard -"nan@npm:^2.19.0, nan@npm:^2.20.0": - version: 2.22.0 - resolution: "nan@npm:2.22.0" +"pac-proxy-agent@npm:^7.0.1": + version: 7.0.2 + resolution: "pac-proxy-agent@npm:7.0.2" dependencies: - node-gyp: latest - checksum: 222e3a090e326c72f6782d948f44ee9b81cfb2161d5fe53216f04426a273fd094deee9dcc6813096dd2397689a2b10c1a92d3885d2e73fd2488a51547beb2929 + "@tootallnate/quickjs-emscripten": ^0.23.0 + agent-base: ^7.0.2 + debug: ^4.3.4 + get-uri: ^6.0.1 + http-proxy-agent: ^7.0.0 + https-proxy-agent: ^7.0.5 + pac-resolver: ^7.0.1 + socks-proxy-agent: ^8.0.4 + checksum: 82772aaa489a4ad6f598b75d56daf609e7ba294a05a91cfe3101b004e2df494f0a269c98452cb47aaa4a513428e248308a156e26fee67eb78a76a58e9346921e languageName: node linkType: hard -"nanoclone@npm:^0.2.1": - version: 0.2.1 - resolution: "nanoclone@npm:0.2.1" - checksum: 96b2954e22f70561f41e20d69856266c65583c2a441dae108f1dc71b716785d2c8038dac5f1d5e92b117aed3825f526b53139e2e5d6e6db8a77cfa35b3b8bf40 +"pac-resolver@npm:^7.0.1": + version: 7.0.1 + resolution: "pac-resolver@npm:7.0.1" + dependencies: + degenerator: ^5.0.0 + netmask: ^2.0.2 + checksum: 839134328781b80d49f9684eae1f5c74f50a1d4482076d44c84fc2f3ca93da66fa11245a4725a057231e06b311c20c989fd0681e662a0792d17f644d8fe62a5e languageName: node linkType: hard -"nanoid@npm:^3.3.7": - version: 3.3.7 - resolution: "nanoid@npm:3.3.7" - bin: - nanoid: bin/nanoid.cjs - checksum: d36c427e530713e4ac6567d488b489a36582ef89da1d6d4e3b87eded11eb10d7042a877958c6f104929809b2ab0bafa17652b076cdf84324aa75b30b722204f2 +"package-json-from-dist@npm:^1.0.0": + version: 1.0.1 + resolution: "package-json-from-dist@npm:1.0.1" + checksum: 58ee9538f2f762988433da00e26acc788036914d57c71c246bf0be1b60cdbd77dd60b6a3e1a30465f0b248aeb80079e0b34cb6050b1dfa18c06953bb1cbc7602 languageName: node linkType: hard -"napi-build-utils@npm:^1.0.1": - version: 1.0.2 - resolution: "napi-build-utils@npm:1.0.2" - checksum: 06c14271ee966e108d55ae109f340976a9556c8603e888037145d6522726aebe89dd0c861b4b83947feaf6d39e79e08817559e8693deedc2c94e82c5cbd090c7 +"package-manager-detector@npm:^0.2.0": + version: 0.2.2 + resolution: "package-manager-detector@npm:0.2.2" + checksum: acc0d5a8b6b2a265474c1bac2b3569b6e57fe13db4d764b75cf5fcd11463a44f0ce00bb5dc439a78a1999993780385f431d36ceea51b51a35ce40d512b7388c6 languageName: node linkType: hard -"natural-compare@npm:^1.4.0": - version: 1.4.0 - resolution: "natural-compare@npm:1.4.0" - checksum: 23ad088b08f898fc9b53011d7bb78ec48e79de7627e01ab5518e806033861bef68d5b0cd0e2205c2f36690ac9571ff6bcb05eb777ced2eeda8d4ac5b44592c3d +"pako@npm:^1.0.10, pako@npm:~1.0.2, pako@npm:~1.0.5": + version: 1.0.11 + resolution: "pako@npm:1.0.11" + checksum: 1be2bfa1f807608c7538afa15d6f25baa523c30ec870a3228a89579e474a4d992f4293859524e46d5d87fd30fa17c5edf34dbef0671251d9749820b488660b16 languageName: node linkType: hard -"negotiator@npm:0.6.3": - version: 0.6.3 - resolution: "negotiator@npm:0.6.3" - checksum: b8ffeb1e262eff7968fc90a2b6767b04cfd9842582a9d0ece0af7049537266e7b2506dfb1d107a32f06dd849ab2aea834d5830f7f4d0e5cb7d36e1ae55d021d9 +"param-case@npm:^3.0.4": + version: 3.0.4 + resolution: "param-case@npm:3.0.4" + dependencies: + dot-case: ^3.0.4 + tslib: ^2.0.3 + checksum: b34227fd0f794e078776eb3aa6247442056cb47761e9cd2c4c881c86d84c64205f6a56ef0d70b41ee7d77da02c3f4ed2f88e3896a8fefe08bdfb4deca037c687 languageName: node linkType: hard -"negotiator@npm:^0.6.3": - version: 0.6.4 - resolution: "negotiator@npm:0.6.4" - checksum: 7ded10aa02a0707d1d12a9973fdb5954f98547ca7beb60e31cb3a403cc6e8f11138db7a3b0128425cf836fc85d145ec4ce983b2bdf83dca436af879c2d683510 +"parent-module@npm:^1.0.0": + version: 1.0.1 + resolution: "parent-module@npm:1.0.1" + dependencies: + callsites: ^3.0.0 + checksum: 6ba8b255145cae9470cf5551eb74be2d22281587af787a2626683a6c20fbb464978784661478dd2a3f1dad74d1e802d403e1b03c1a31fab310259eec8ac560ff languageName: node linkType: hard -"neo-async@npm:^2.6.2": - version: 2.6.2 - resolution: "neo-async@npm:2.6.2" - checksum: deac9f8d00eda7b2e5cd1b2549e26e10a0faa70adaa6fdadca701cc55f49ee9018e427f424bac0c790b7c7e2d3068db97f3093f1093975f2acb8f8818b936ed9 +"parse-asn1@npm:^5.0.0, parse-asn1@npm:^5.1.7": + version: 5.1.7 + resolution: "parse-asn1@npm:5.1.7" + dependencies: + asn1.js: ^4.10.1 + browserify-aes: ^1.2.0 + evp_bytestokey: ^1.0.3 + hash-base: ~3.0 + pbkdf2: ^3.1.2 + safe-buffer: ^5.2.1 + checksum: 93c7194c1ed63a13e0b212d854b5213ad1aca0ace41c66b311e97cca0519cf9240f79435a0306a3b412c257f0ea3f1953fd0d9549419a0952c9e995ab361fd6c languageName: node linkType: hard -"netmask@npm:^2.0.2": - version: 2.0.2 - resolution: "netmask@npm:2.0.2" - checksum: c65cb8d3f7ea5669edddb3217e4c96910a60d0d9a4b52d9847ff6b28b2d0277cd8464eee0ef85133cdee32605c57940cacdd04a9a019079b091b6bba4cb0ec22 +"parse-entities@npm:^2.0.0": + version: 2.0.0 + resolution: "parse-entities@npm:2.0.0" + dependencies: + character-entities: ^1.0.0 + character-entities-legacy: ^1.0.0 + character-reference-invalid: ^1.0.0 + is-alphanumerical: ^1.0.0 + is-decimal: ^1.0.0 + is-hexadecimal: ^1.0.0 + checksum: 7addfd3e7d747521afac33c8121a5f23043c6973809756920d37e806639b4898385d386fcf4b3c8e2ecf1bc28aac5ae97df0b112d5042034efbe80f44081ebce languageName: node linkType: hard -"nimma@npm:0.2.2": - version: 0.2.2 - resolution: "nimma@npm:0.2.2" +"parse-json@npm:^5.0.0, parse-json@npm:^5.2.0": + version: 5.2.0 + resolution: "parse-json@npm:5.2.0" dependencies: - "@jsep-plugin/regex": ^1.0.1 - "@jsep-plugin/ternary": ^1.0.2 - astring: ^1.8.1 - jsep: ^1.2.0 - jsonpath-plus: ^6.0.1 - lodash.topath: ^4.5.2 - dependenciesMeta: - jsonpath-plus: - optional: true - lodash.topath: - optional: true - checksum: 09369253a962e6cdddd37c4994d414a5fa00abc955c4d91946140b45b57465749a9f05663a64812ad5ac70caacb7ca22a8fc7c8db002032d0768c83dbba7b3ad + "@babel/code-frame": ^7.0.0 + error-ex: ^1.3.1 + json-parse-even-better-errors: ^2.3.0 + lines-and-columns: ^1.1.6 + checksum: 62085b17d64da57f40f6afc2ac1f4d95def18c4323577e1eced571db75d9ab59b297d1d10582920f84b15985cbfc6b6d450ccbf317644cfa176f3ed982ad87e2 languageName: node linkType: hard -"no-case@npm:^3.0.4": - version: 3.0.4 - resolution: "no-case@npm:3.0.4" - dependencies: - lower-case: ^2.0.2 - tslib: ^2.0.3 - checksum: 0b2ebc113dfcf737d48dde49cfebf3ad2d82a8c3188e7100c6f375e30eafbef9e9124aadc3becef237b042fd5eb0aad2fd78669c20972d045bbe7fea8ba0be5c +"parse-ms@npm:^4.0.0": + version: 4.0.0 + resolution: "parse-ms@npm:4.0.0" + checksum: 673c801d9f957ff79962d71ed5a24850163f4181a90dd30c4e3666b3a804f53b77f1f0556792e8b2adbb5d58757907d1aa51d7d7dc75997c2a56d72937cbc8b7 languageName: node linkType: hard -"node-abi@npm:^3.3.0": - version: 3.71.0 - resolution: "node-abi@npm:3.71.0" - dependencies: - semver: ^7.3.5 - checksum: d7f34c294c0351b636688a792e41493840cc195f64a76ecdc35eb0c1682d86e633a932b03e924395b0d2f52ca1db5046898839d57bcfb5819226e64e922b0617 +"parse-multipart-data@npm:^1.4.0": + version: 1.5.0 + resolution: "parse-multipart-data@npm:1.5.0" + checksum: a385fb6609a7b393ee7e82042d5f923beaa7fb7d81d430db560869b719574f62f39a30e77fd711fbfa6fe3e212a8e6f81fd2126a80876a3c13dc1ae975eb5d91 languageName: node linkType: hard -"node-abort-controller@npm:^3.0.1": - version: 3.1.1 - resolution: "node-abort-controller@npm:3.1.1" - checksum: 2c340916af9710328b11c0828223fc65ba320e0d082214a211311bf64c2891028e42ef276b9799188c4ada9e6e1c54cf7a0b7c05dd9d59fcdc8cd633304c8047 +"parse-passwd@npm:^1.0.0": + version: 1.0.0 + resolution: "parse-passwd@npm:1.0.0" + checksum: 4e55e0231d58f828a41d0f1da2bf2ff7bcef8f4cb6146e69d16ce499190de58b06199e6bd9b17fbf0d4d8aef9052099cdf8c4f13a6294b1a522e8e958073066e languageName: node linkType: hard -"node-fetch@npm:^2.6.0, node-fetch@npm:^2.6.1, node-fetch@npm:^2.6.12, node-fetch@npm:^2.6.7, node-fetch@npm:^2.6.9, node-fetch@npm:^2.7.0": - version: 2.7.0 - resolution: "node-fetch@npm:2.7.0" +"parse-path@npm:^7.0.0": + version: 7.0.0 + resolution: "parse-path@npm:7.0.0" dependencies: - whatwg-url: ^5.0.0 - peerDependencies: - encoding: ^0.1.0 - peerDependenciesMeta: - encoding: - optional: true - checksum: d76d2f5edb451a3f05b15115ec89fc6be39de37c6089f1b6368df03b91e1633fd379a7e01b7ab05089a25034b2023d959b47e59759cb38d88341b2459e89d6e5 + protocols: ^2.0.0 + checksum: 244b46523a58181d251dda9b888efde35d8afb957436598d948852f416d8c76ddb4f2010f9fc94218b4be3e5c0f716aa0d2026194a781e3b8981924142009302 languageName: node linkType: hard -"node-forge@npm:^1, node-forge@npm:^1.3.1": - version: 1.3.1 - resolution: "node-forge@npm:1.3.1" - checksum: 08fb072d3d670599c89a1704b3e9c649ff1b998256737f0e06fbd1a5bf41cae4457ccaee32d95052d80bbafd9ffe01284e078c8071f0267dc9744e51c5ed42a9 +"parse-url@npm:^8.1.0": + version: 8.1.0 + resolution: "parse-url@npm:8.1.0" + dependencies: + parse-path: ^7.0.0 + checksum: b93e21ab4c93c7d7317df23507b41be7697694d4c94f49ed5c8d6288b01cba328fcef5ba388e147948eac20453dee0df9a67ab2012415189fff85973bdffe8d9 languageName: node linkType: hard -"node-gyp@npm:^9.0.0": - version: 9.4.1 - resolution: "node-gyp@npm:9.4.1" - dependencies: - env-paths: ^2.2.0 - exponential-backoff: ^3.1.1 - glob: ^7.1.4 - graceful-fs: ^4.2.6 - make-fetch-happen: ^10.0.3 - nopt: ^6.0.0 - npmlog: ^6.0.0 - rimraf: ^3.0.2 - semver: ^7.3.5 - tar: ^6.1.2 - which: ^2.0.2 - bin: - node-gyp: bin/node-gyp.js - checksum: 8576c439e9e925ab50679f87b7dfa7aa6739e42822e2ad4e26c36341c0ba7163fdf5a946f0a67a476d2f24662bc40d6c97bd9e79ced4321506738e6b760a1577 +"parse5@npm:6.0.1": + version: 6.0.1 + resolution: "parse5@npm:6.0.1" + checksum: 7d569a176c5460897f7c8f3377eff640d54132b9be51ae8a8fa4979af940830b2b0c296ce75e5bd8f4041520aadde13170dbdec44889975f906098ea0002f4bd languageName: node linkType: hard -"node-gyp@npm:latest": - version: 10.2.0 - resolution: "node-gyp@npm:10.2.0" +"parse5@npm:^7.0.0, parse5@npm:^7.1.1": + version: 7.2.1 + resolution: "parse5@npm:7.2.1" dependencies: - env-paths: ^2.2.0 - exponential-backoff: ^3.1.1 - glob: ^10.3.10 - graceful-fs: ^4.2.6 - make-fetch-happen: ^13.0.0 - nopt: ^7.0.0 - proc-log: ^4.1.0 - semver: ^7.3.5 - tar: ^6.2.1 - which: ^4.0.0 - bin: - node-gyp: bin/node-gyp.js - checksum: 0233759d8c19765f7fdc259a35eb046ad86c3d09e22f7384613ae2b89647dd27fcf833fdf5293d9335041e91f9b1c539494225959cdb312a5c8080b7534b926f + entities: ^4.5.0 + checksum: 11253cf8aa2e7fc41c004c64cba6f2c255f809663365db65bd7ad0e8cf7b89e436a563c20059346371cc543a6c1b567032088883ca6a2cbc88276c666b68236d languageName: node linkType: hard -"node-int64@npm:^0.4.0": - version: 0.4.0 - resolution: "node-int64@npm:0.4.0" - checksum: d0b30b1ee6d961851c60d5eaa745d30b5c95d94bc0e74b81e5292f7c42a49e3af87f1eb9e89f59456f80645d679202537de751b7d72e9e40ceea40c5e449057e +"parseurl@npm:^1.3.2, parseurl@npm:~1.3.2, parseurl@npm:~1.3.3": + version: 1.3.3 + resolution: "parseurl@npm:1.3.3" + checksum: 407cee8e0a3a4c5cd472559bca8b6a45b82c124e9a4703302326e9ab60fc1081442ada4e02628efef1eb16197ddc7f8822f5a91fd7d7c86b51f530aedb17dfa2 languageName: node linkType: hard -"node-libs-browser@npm:^2.2.1": - version: 2.2.1 - resolution: "node-libs-browser@npm:2.2.1" - dependencies: - assert: ^1.1.1 - browserify-zlib: ^0.2.0 - buffer: ^4.3.0 - console-browserify: ^1.1.0 - constants-browserify: ^1.0.0 - crypto-browserify: ^3.11.0 - domain-browser: ^1.1.1 - events: ^3.0.0 - https-browserify: ^1.0.0 - os-browserify: ^0.3.0 - path-browserify: 0.0.1 - process: ^0.11.10 - punycode: ^1.2.4 - querystring-es3: ^0.2.0 - readable-stream: ^2.3.3 - stream-browserify: ^2.0.1 - stream-http: ^2.7.2 - string_decoder: ^1.0.0 - timers-browserify: ^2.0.4 - tty-browserify: 0.0.0 - url: ^0.11.0 - util: ^0.11.0 - vm-browserify: ^1.0.1 - checksum: 41fa7927378edc0cb98a8cc784d3f4a47e43378d3b42ec57a23f81125baa7287c4b54d6d26d062072226160a3ce4d8b7a62e873d2fb637aceaddf71f5a26eca0 +"pascal-case@npm:^3.1.2": + version: 3.1.2 + resolution: "pascal-case@npm:3.1.2" + dependencies: + no-case: ^3.0.4 + tslib: ^2.0.3 + checksum: ba98bfd595fc91ef3d30f4243b1aee2f6ec41c53b4546bfa3039487c367abaa182471dcfc830a1f9e1a0df00c14a370514fa2b3a1aacc68b15a460c31116873e languageName: node linkType: hard -"node-machine-id@npm:^1.1.12": - version: 1.1.12 - resolution: "node-machine-id@npm:1.1.12" - checksum: e23088a0fb4a77a1d6484b7f09a22992fd3e0054d4f2e427692b4c7081e6cf30118ba07b6113b6c89f1ce46fd26ec5ab1d76dcaf6c10317717889124511283a5 +"passport-atlassian-oauth2@npm:^2.1.0": + version: 2.1.0 + resolution: "passport-atlassian-oauth2@npm:2.1.0" + dependencies: + passport-oauth2: ^1.4.0 + checksum: fc1d46951018d03a792a469a0c856d16f4c21df13d743aa5a0111f60253588c042881c560c737c77d85f4751e42b9ad3a485db7a5d5ea39e0f76160bc4010182 languageName: node linkType: hard -"node-releases@npm:^2.0.18": - version: 2.0.18 - resolution: "node-releases@npm:2.0.18" - checksum: ef55a3d853e1269a6d6279b7692cd6ff3e40bc74947945101138745bfdc9a5edabfe72cb19a31a8e45752e1910c4c65c77d931866af6357f242b172b7283f5b3 +"passport-auth0@npm:^1.4.3": + version: 1.4.4 + resolution: "passport-auth0@npm:1.4.4" + dependencies: + axios: ^1.6.0 + passport-oauth: ^1.0.0 + passport-oauth2: ^1.6.0 + checksum: 537c2a9d60fd3e8663cc5686bb34808412bccefaed8fa99c782f5e24fc2e103ddb14db1a8fdea38a89bd2eaa797d6f6a9c2d0309d83617dde9466ab1de4cf36b languageName: node linkType: hard -"node-sarif-builder@npm:^2.0.3": - version: 2.0.3 - resolution: "node-sarif-builder@npm:2.0.3" +"passport-bitbucket-oauth2@npm:^0.1.2": + version: 0.1.2 + resolution: "passport-bitbucket-oauth2@npm:0.1.2" dependencies: - "@types/sarif": ^2.1.4 - fs-extra: ^10.0.0 - checksum: 397dd9bfb0780c6753fb47d1fd0465f3c8a935082cb1bbd7ad6232d18b6343d9d499c6bc572ad0415db282efd6058fe8b7a6657020434adef4fbf93a8b95306e + passport-oauth2: ^1.1.2 + pkginfo: 0.2.x + checksum: eef3db0967d8d4e6d5363dab5b188ff0ad32d333cfa246c1c3a4e796e62e225297a01f21ad0e1d42c4b2d635c119909d7bb0f22c686fc2c87b9f3d9796895721 languageName: node linkType: hard -"node-schedule@npm:2.1.1": - version: 2.1.1 - resolution: "node-schedule@npm:2.1.1" +"passport-github2@npm:^0.1.12": + version: 0.1.12 + resolution: "passport-github2@npm:0.1.12" dependencies: - cron-parser: ^4.2.0 - long-timeout: 0.1.1 - sorted-array-functions: ^1.3.0 - checksum: 6a8822b16fb024277c42efe710bdb35b6f1f6ab3a2f826283640511247d693f34ebd5ddf2863cd91609e7f323574e36c81cd2084dc204fa521f931380f0f963f + passport-oauth2: 1.x.x + checksum: 2d33c1bdd808c617a5faef51f6079f8775a4dbb8864b2be073e5e043ed2b7e8f9addd66a5844c7604f26be99a5899ae6cd9f8adac85999714b2a19649aef2b35 languageName: node linkType: hard -"nopt@npm:^6.0.0": - version: 6.0.0 - resolution: "nopt@npm:6.0.0" +"passport-gitlab2@npm:^5.0.0": + version: 5.0.0 + resolution: "passport-gitlab2@npm:5.0.0" dependencies: - abbrev: ^1.0.0 - bin: - nopt: bin/nopt.js - checksum: 82149371f8be0c4b9ec2f863cc6509a7fd0fa729929c009f3a58e4eb0c9e4cae9920e8f1f8eb46e7d032fec8fb01bede7f0f41a67eb3553b7b8e14fa53de1dac + passport-oauth2: ^1.4.0 + checksum: 06e105e994d7241712c05cd6182d06fbbef3f7ea919bdda532f90102fa5290d918648b0ed8d20729aff4c2497cd874fc3726166a338e413373b3b9e4a3b79e7b languageName: node linkType: hard -"nopt@npm:^7.0.0": - version: 7.2.1 - resolution: "nopt@npm:7.2.1" +"passport-google-oauth20@npm:^2.0.0": + version: 2.0.0 + resolution: "passport-google-oauth20@npm:2.0.0" dependencies: - abbrev: ^2.0.0 - bin: - nopt: bin/nopt.js - checksum: 6fa729cc77ce4162cfad8abbc9ba31d4a0ff6850c3af61d59b505653bef4781ec059f8890ecfe93ee8aa0c511093369cca88bfc998101616a2904e715bbbb7c9 + passport-oauth2: 1.x.x + checksum: 1d34f4c2da059504b6a3c149b261b9063d0390c84d500fa314b3895d599d7f96ce9750e48a5b715df92fba57ef4ecb5e66d3ce99ded5cc9b17d201a06ba8701e languageName: node linkType: hard -"normalize-path@npm:^3.0.0, normalize-path@npm:~3.0.0": - version: 3.0.0 - resolution: "normalize-path@npm:3.0.0" - checksum: 88eeb4da891e10b1318c4b2476b6e2ecbeb5ff97d946815ffea7794c31a89017c70d7f34b3c2ebf23ef4e9fc9fb99f7dffe36da22011b5b5c6ffa34f4873ec20 +"passport-microsoft@npm:^1.0.0": + version: 1.1.0 + resolution: "passport-microsoft@npm:1.1.0" + dependencies: + passport-oauth2: 1.8.0 + checksum: 97cb68f3adba8914a9375ebf1b0a05f33d8ca53ddad50948a254219e01672e726fc8eb7152d4e31de86041ab603dea950cec4f3dee5c6ade3bcc3de23aa44408 languageName: node linkType: hard -"normalize-url@npm:^6.0.1": - version: 6.1.0 - resolution: "normalize-url@npm:6.1.0" - checksum: 4a4944631173e7d521d6b80e4c85ccaeceb2870f315584fa30121f505a6dfd86439c5e3fdd8cd9e0e291290c41d0c3599f0cb12ab356722ed242584c30348e50 +"passport-oauth1@npm:1.x.x": + version: 1.3.0 + resolution: "passport-oauth1@npm:1.3.0" + dependencies: + oauth: 0.9.x + passport-strategy: 1.x.x + utils-merge: 1.x.x + checksum: 69a0538221f11509aa405de0cadf510e635a6723e1e7e6179db34b4d21d82db8eff8a1e95a6e9eaeca3233e8e1fa5dce87999cd3ec32387238a73a552f95ca16 languageName: node linkType: hard -"npm-bundled@npm:^2.0.0": - version: 2.0.1 - resolution: "npm-bundled@npm:2.0.1" +"passport-oauth2@npm:1.8.0, passport-oauth2@npm:1.x.x, passport-oauth2@npm:^1.1.2, passport-oauth2@npm:^1.4.0, passport-oauth2@npm:^1.6.0, passport-oauth2@npm:^1.6.1, passport-oauth2@npm:^1.7.0": + version: 1.8.0 + resolution: "passport-oauth2@npm:1.8.0" dependencies: - npm-normalize-package-bin: ^2.0.0 - checksum: 7747293985c48c5268871efe691545b03731cb80029692000cbdb0b3344b9617be5187aa36281cabbe6b938e3651b4e87236d1c31f9e645eef391a1a779413e6 + base64url: 3.x.x + oauth: 0.10.x + passport-strategy: 1.x.x + uid2: 0.0.x + utils-merge: 1.x.x + checksum: a9a80b968343c9c1906f74ef613b346ec2d6a6acfe17af81e673fd774779b436729252485755c3ce182f2cdba2434d75067418952d722404d65b93c0360ca02b languageName: node linkType: hard -"npm-normalize-package-bin@npm:^2.0.0": - version: 2.0.0 - resolution: "npm-normalize-package-bin@npm:2.0.0" - checksum: 7c5379f9b188b564c4332c97bdd9a5d6b7b15f02b5823b00989d6a0e6fb31eb0280f02b0a924f930e1fcaf00e60fae333aec8923d2a4c7747613c7d629d8aa25 +"passport-oauth@npm:1.0.0, passport-oauth@npm:^1.0.0": + version: 1.0.0 + resolution: "passport-oauth@npm:1.0.0" + dependencies: + passport-oauth1: 1.x.x + passport-oauth2: 1.x.x + checksum: e6d908ac6c305db1f4040538360c29ca1427b27772c74abaa75db24647db7ee1ccd9c6ccc1bb74649bca090f31f3225540539219b4a97b31c0c1434f4a9ee7b3 languageName: node linkType: hard -"npm-packlist@npm:^5.0.0": - version: 5.1.3 - resolution: "npm-packlist@npm:5.1.3" +"passport-onelogin-oauth@npm:^0.0.1": + version: 0.0.1 + resolution: "passport-onelogin-oauth@npm:0.0.1" dependencies: - glob: ^8.0.1 - ignore-walk: ^5.0.1 - npm-bundled: ^2.0.0 - npm-normalize-package-bin: ^2.0.0 - bin: - npm-packlist: bin/index.js - checksum: 94cc9c66740e8f80243301de85eb0a2cec5bbd570c3f26b6ad7af1a3eca155f7e810580dc7ea4448f12a8fd82f6db307e7132a5fe69e157eb45b325acadeb22a + passport-oauth: 1.0.0 + pkginfo: 0.2.x + uid2: 0.0.3 + checksum: 5664bbcca717e7499be5ec1336cc34ada3266fccdc92a026883d6113c2ab30ec215b7df810fb0abd3adb79afb728c6d7fa0782f8661afba25c4df198ed84470e languageName: node linkType: hard -"npm-run-path@npm:^4.0.1": - version: 4.0.1 - resolution: "npm-run-path@npm:4.0.1" - dependencies: - path-key: ^3.0.0 - checksum: 5374c0cea4b0bbfdfae62da7bbdf1e1558d338335f4cacf2515c282ff358ff27b2ecb91ffa5330a8b14390ac66a1e146e10700440c1ab868208430f56b5f4d23 +"passport-strategy@npm:1.x.x, passport-strategy@npm:^1.0.0": + version: 1.0.0 + resolution: "passport-strategy@npm:1.0.0" + checksum: 5086693f2508e538dffa55a338c89fe8192fb5f4478c71f80cd5890b8573419a098f4fec88b505374f60bbe9049f6f24b9f3992678612528a3370b4dc73354a2 languageName: node linkType: hard -"npmlog@npm:^6.0.0": - version: 6.0.2 - resolution: "npmlog@npm:6.0.2" +"passport@npm:^0.7.0": + version: 0.7.0 + resolution: "passport@npm:0.7.0" dependencies: - are-we-there-yet: ^3.0.0 - console-control-strings: ^1.1.0 - gauge: ^4.0.3 - set-blocking: ^2.0.0 - checksum: ae238cd264a1c3f22091cdd9e2b106f684297d3c184f1146984ecbe18aaa86343953f26b9520dedd1b1372bc0316905b736c1932d778dbeb1fcf5a1001390e2a + passport-strategy: 1.x.x + pause: 0.0.1 + utils-merge: ^1.0.1 + checksum: 5080b46df2df7a84f7ba4a8a20437ce71a1346fd27ab47b62df3251a666af9f3430d6c8a1beda3174f6a9d91edc823b57b88050d423a6cff9831848a2d97725c languageName: node linkType: hard -"nth-check@npm:^2.0.1": - version: 2.1.1 - resolution: "nth-check@npm:2.1.1" - dependencies: - boolbase: ^1.0.0 - checksum: 5afc3dafcd1573b08877ca8e6148c52abd565f1d06b1eb08caf982e3fa289a82f2cae697ffb55b5021e146d60443f1590a5d6b944844e944714a5b549675bcd3 +"path-browserify@npm:0.0.1": + version: 0.0.1 + resolution: "path-browserify@npm:0.0.1" + checksum: ae8dcd45d0d3cfbaf595af4f206bf3ed82d77f72b4877ae7e77328079e1468c84f9386754bb417d994d5a19bf47882fd253565c18441cd5c5c90ae5187599e35 languageName: node linkType: hard -"nwsapi@npm:^2.2.2": - version: 2.2.13 - resolution: "nwsapi@npm:2.2.13" - checksum: d34fb7838517c3c7e8cc824e443275b08b57f6a025a860693d18c56ddcfd176e32df9bf0ae7f5a95c7a32981501caa1f9fda31b59f28aa72a4b9d01f573a8e6b +"path-browserify@npm:^1.0.1": + version: 1.0.1 + resolution: "path-browserify@npm:1.0.1" + checksum: c6d7fa376423fe35b95b2d67990060c3ee304fc815ff0a2dc1c6c3cfaff2bd0d572ee67e18f19d0ea3bbe32e8add2a05021132ac40509416459fffee35200699 languageName: node linkType: hard -"oauth-sign@npm:~0.9.0": - version: 0.9.0 - resolution: "oauth-sign@npm:0.9.0" - checksum: 8f5497a127967866a3c67094c21efd295e46013a94e6e828573c62220e9af568cc1d2d04b16865ba583e430510fa168baf821ea78f355146d8ed7e350fc44c64 +"path-equal@npm:^1.2.5": + version: 1.2.5 + resolution: "path-equal@npm:1.2.5" + checksum: 2bef7bcb98c7ae371c52c1562b2fc515bfd03bc1a5571df9a8591038db8d742ba2d1ff39aa5130853e6afb69e773ccba5095f54d2e6d17422ca03ef9047992d7 languageName: node linkType: hard -"object-assign@npm:^4, object-assign@npm:^4.0.1, object-assign@npm:^4.1.1": - version: 4.1.1 - resolution: "object-assign@npm:4.1.1" - checksum: fcc6e4ea8c7fe48abfbb552578b1c53e0d194086e2e6bbbf59e0a536381a292f39943c6e9628af05b5528aa5e3318bb30d6b2e53cadaf5b8fe9e12c4b69af23f +"path-exists@npm:^3.0.0": + version: 3.0.0 + resolution: "path-exists@npm:3.0.0" + checksum: 96e92643aa34b4b28d0de1cd2eba52a1c5313a90c6542d03f62750d82480e20bfa62bc865d5cfc6165f5fcd5aeb0851043c40a39be5989646f223300021bae0a languageName: node linkType: hard -"object-hash@npm:^2.2.0": - version: 2.2.0 - resolution: "object-hash@npm:2.2.0" - checksum: 55ba841e3adce9c4f1b9b46b41983eda40f854e0d01af2802d3ae18a7085a17168d6b81731d43fdf1d6bcbb3c9f9c56d22c8fea992203ad90a38d7d919bc28f1 +"path-exists@npm:^4.0.0": + version: 4.0.0 + resolution: "path-exists@npm:4.0.0" + checksum: 505807199dfb7c50737b057dd8d351b82c033029ab94cb10a657609e00c1bc53b951cfdbccab8de04c5584d5eff31128ce6afd3db79281874a5ef2adbba55ed1 languageName: node linkType: hard -"object-inspect@npm:^1.13.1": - version: 1.13.2 - resolution: "object-inspect@npm:1.13.2" - checksum: 9f850b3c045db60e0e97746e809ee4090d6ce62195af17dd1e9438ac761394a7d8ec4f7906559aea5424eaf61e35d3e53feded2ccd5f62fcc7d9670d3c8eb353 +"path-is-absolute@npm:^1.0.0": + version: 1.0.1 + resolution: "path-is-absolute@npm:1.0.1" + checksum: 060840f92cf8effa293bcc1bea81281bd7d363731d214cbe5c227df207c34cd727430f70c6037b5159c8a870b9157cba65e775446b0ab06fd5ecc7e54615a3b8 languageName: node linkType: hard -"object-keys@npm:^1.1.1": - version: 1.1.1 - resolution: "object-keys@npm:1.1.1" - checksum: b363c5e7644b1e1b04aa507e88dcb8e3a2f52b6ffd0ea801e4c7a62d5aa559affe21c55a07fd4b1fd55fc03a33c610d73426664b20032405d7b92a1414c34d6a +"path-key@npm:^3.0.0, path-key@npm:^3.1.0": + version: 3.1.1 + resolution: "path-key@npm:3.1.1" + checksum: 55cd7a9dd4b343412a8386a743f9c746ef196e57c823d90ca3ab917f90ab9f13dd0ded27252ba49dbdfcab2b091d998bc446f6220cd3cea65db407502a740020 languageName: node linkType: hard -"object.assign@npm:^4.1.4, object.assign@npm:^4.1.5": - version: 4.1.5 - resolution: "object.assign@npm:4.1.5" - dependencies: - call-bind: ^1.0.5 - define-properties: ^1.2.1 - has-symbols: ^1.0.3 - object-keys: ^1.1.1 - checksum: f9aeac0541661370a1fc86e6a8065eb1668d3e771f7dbb33ee54578201336c057b21ee61207a186dd42db0c62201d91aac703d20d12a79fc79c353eed44d4e25 +"path-parse@npm:^1.0.7": + version: 1.0.7 + resolution: "path-parse@npm:1.0.7" + checksum: 49abf3d81115642938a8700ec580da6e830dde670be21893c62f4e10bd7dd4c3742ddc603fe24f898cba7eb0c6bc1777f8d9ac14185d34540c6d4d80cd9cae8a languageName: node linkType: hard -"object.entries@npm:^1.1.8": - version: 1.1.8 - resolution: "object.entries@npm:1.1.8" +"path-scurry@npm:^1.11.1, path-scurry@npm:^1.6.1": + version: 1.11.1 + resolution: "path-scurry@npm:1.11.1" dependencies: - call-bind: ^1.0.7 - define-properties: ^1.2.1 - es-object-atoms: ^1.0.0 - checksum: 5314877cb637ef3437a30bba61d9bacdb3ce74bf73ac101518be0633c37840c8cc67407edb341f766e8093b3d7516d5c3358f25adfee4a2c697c0ec4c8491907 + lru-cache: ^10.2.0 + minipass: ^5.0.0 || ^6.0.2 || ^7.0.0 + checksum: 890d5abcd593a7912dcce7cf7c6bf7a0b5648e3dee6caf0712c126ca0a65c7f3d7b9d769072a4d1baf370f61ce493ab5b038d59988688e0c5f3f646ee3c69023 languageName: node linkType: hard -"object.fromentries@npm:^2.0.8": - version: 2.0.8 - resolution: "object.fromentries@npm:2.0.8" - dependencies: - call-bind: ^1.0.7 - define-properties: ^1.2.1 - es-abstract: ^1.23.2 - es-object-atoms: ^1.0.0 - checksum: 29b2207a2db2782d7ced83f93b3ff5d425f901945f3665ffda1821e30a7253cd1fd6b891a64279976098137ddfa883d748787a6fea53ecdb51f8df8b8cec0ae1 +"path-to-regexp@npm:0.1.10": + version: 0.1.10 + resolution: "path-to-regexp@npm:0.1.10" + checksum: ab7a3b7a0b914476d44030340b0a65d69851af2a0f33427df1476100ccb87d409c39e2182837a96b98fb38c4ef2ba6b87bdad62bb70a2c153876b8061760583c languageName: node linkType: hard -"object.groupby@npm:^1.0.3": - version: 1.0.3 - resolution: "object.groupby@npm:1.0.3" - dependencies: - call-bind: ^1.0.7 - define-properties: ^1.2.1 - es-abstract: ^1.23.2 - checksum: 0d30693ca3ace29720bffd20b3130451dca7a56c612e1926c0a1a15e4306061d84410bdb1456be2656c5aca53c81b7a3661eceaa362db1bba6669c2c9b6d1982 +"path-to-regexp@npm:0.1.12": + version: 0.1.12 + resolution: "path-to-regexp@npm:0.1.12" + checksum: ab237858bee7b25ecd885189f175ab5b5161e7b712b360d44f5c4516b8d271da3e4bf7bf0a7b9153ecb04c7d90ce8ff5158614e1208819cf62bac2b08452722e languageName: node linkType: hard -"object.values@npm:^1.1.6, object.values@npm:^1.2.0": - version: 1.2.0 - resolution: "object.values@npm:1.2.0" - dependencies: - call-bind: ^1.0.7 - define-properties: ^1.2.1 - es-object-atoms: ^1.0.0 - checksum: 51fef456c2a544275cb1766897f34ded968b22adfc13ba13b5e4815fdaf4304a90d42a3aee114b1f1ede048a4890381d47a5594d84296f2767c6a0364b9da8fa +"path-to-regexp@npm:3.3.0": + version: 3.3.0 + resolution: "path-to-regexp@npm:3.3.0" + checksum: bb249d08804f7961dd44fb175466c900b893c56e909db8e2a66ec12b9d9a964af269eb7a50892c933f52b47315953dfdb4279639fbce20977c3625a9ef3055fe languageName: node linkType: hard -"obuf@npm:^1.0.0, obuf@npm:^1.1.2": - version: 1.1.2 - resolution: "obuf@npm:1.1.2" - checksum: 41a2ba310e7b6f6c3b905af82c275bf8854896e2e4c5752966d64cbcd2f599cfffd5932006bcf3b8b419dfdacebb3a3912d5d94e10f1d0acab59876c8757f27f +"path-to-regexp@npm:^6.3.0": + version: 6.3.0 + resolution: "path-to-regexp@npm:6.3.0" + checksum: eca78602e6434a1b6799d511d375ec044e8d7e28f5a48aa5c28d57d8152fb52f3fc62fb1cfc5dfa2198e1f041c2a82ed14043d75740a2fe60e91b5089a153250 languageName: node linkType: hard -"oidc-token-hash@npm:^5.0.3": - version: 5.0.3 - resolution: "oidc-token-hash@npm:5.0.3" - checksum: 35fa19aea9ff2c509029ec569d74b778c8a215b92bd5e6e9bc4ebbd7ab035f44304ff02430a6397c3fb7c1d15ebfa467807ca0bcd31d06ba610b47798287d303 +"path-to-regexp@npm:^8.0.0, path-to-regexp@npm:^8.1.0": + version: 8.2.0 + resolution: "path-to-regexp@npm:8.2.0" + checksum: 56e13e45962e776e9e7cd72e87a441cfe41f33fd539d097237ceb16adc922281136ca12f5a742962e33d8dda9569f630ba594de56d8b7b6e49adf31803c5e771 + languageName: node + linkType: hard + +"path-type@npm:^4.0.0": + version: 4.0.0 + resolution: "path-type@npm:4.0.0" + checksum: 5b1e2daa247062061325b8fdbfd1fb56dde0a448fb1455453276ea18c60685bdad23a445dc148cf87bc216be1573357509b7d4060494a6fd768c7efad833ee45 + languageName: node + linkType: hard + +"pause-stream@npm:0.0.11": + version: 0.0.11 + resolution: "pause-stream@npm:0.0.11" + dependencies: + through: ~2.3 + checksum: 3c4a14052a638b92e0c96eb00c0d7977df7f79ea28395250c525d197f1fc02d34ce1165d5362e2e6ebbb251524b94a76f3f0d4abc39ab8b016d97449fe15583c + languageName: node + linkType: hard + +"pause@npm:0.0.1": + version: 0.0.1 + resolution: "pause@npm:0.0.1" + checksum: e96ee581b68085e6f2ba5adbcb4d4a41fe88e5b514061e76df2fe1905f0f65f4fe5a843b538e9551122c6b9184ff4be266c2ee0ea4614702f9a3d04466d9f462 languageName: node linkType: hard -"on-finished@npm:2.4.1, on-finished@npm:^2.3.0, on-finished@npm:^2.4.1": - version: 2.4.1 - resolution: "on-finished@npm:2.4.1" +"pbkdf2@npm:^3.1.2": + version: 3.1.2 + resolution: "pbkdf2@npm:3.1.2" dependencies: - ee-first: 1.1.1 - checksum: d20929a25e7f0bb62f937a425b5edeb4e4cde0540d77ba146ec9357f00b0d497cdb3b9b05b9c8e46222407d1548d08166bff69cc56dfa55ba0e4469228920ff0 + create-hash: ^1.1.2 + create-hmac: ^1.1.4 + ripemd160: ^2.0.1 + safe-buffer: ^5.0.1 + sha.js: ^2.4.8 + checksum: 2c950a100b1da72123449208e231afc188d980177d021d7121e96a2de7f2abbc96ead2b87d03d8fe5c318face097f203270d7e27908af9f471c165a4e8e69c92 languageName: node linkType: hard -"on-finished@npm:~2.3.0": - version: 2.3.0 - resolution: "on-finished@npm:2.3.0" - dependencies: - ee-first: 1.1.1 - checksum: 1db595bd963b0124d6fa261d18320422407b8f01dc65863840f3ddaaf7bcad5b28ff6847286703ca53f4ec19595bd67a2f1253db79fc4094911ec6aa8df1671b +"pct-encode@npm:~1.0.0": + version: 1.0.3 + resolution: "pct-encode@npm:1.0.3" + checksum: 04344233107a40590dd2d6fff3463040288d68ec66b6026cbb90a6ab1b29afdb5f196ff35b6ab5f86d4799a0dfea6117ab19fe836e0d5ffb49695c6ba60d05d8 languageName: node linkType: hard -"on-headers@npm:~1.0.2": - version: 1.0.2 - resolution: "on-headers@npm:1.0.2" - checksum: 2bf13467215d1e540a62a75021e8b318a6cfc5d4fc53af8e8f84ad98dbcea02d506c6d24180cd62e1d769c44721ba542f3154effc1f7579a8288c9f7873ed8e5 +"peek-readable@npm:^4.1.0": + version: 4.1.0 + resolution: "peek-readable@npm:4.1.0" + checksum: 02c673f9bc816f8e4e74a054c097225ad38d457d745b775e2b96faf404a54473b2f62f5bcd496f5ebc28696708bcc5e95bed409856f4bef5ed62eae9b4ac0dab languageName: node linkType: hard -"once@npm:^1.3.0, once@npm:^1.3.1, once@npm:^1.4.0": - version: 1.4.0 - resolution: "once@npm:1.4.0" - dependencies: - wrappy: 1 - checksum: cd0a88501333edd640d95f0d2700fbde6bff20b3d4d9bdc521bdd31af0656b5706570d6c6afe532045a20bb8dc0849f8332d6f2a416e0ba6d3d3b98806c7db68 +"pend@npm:~1.2.0": + version: 1.2.0 + resolution: "pend@npm:1.2.0" + checksum: 6c72f5243303d9c60bd98e6446ba7d30ae29e3d56fdb6fae8767e8ba6386f33ee284c97efe3230a0d0217e2b1723b8ab490b1bbf34fcbb2180dbc8a9de47850d languageName: node linkType: hard -"one-time@npm:^1.0.0": - version: 1.0.0 - resolution: "one-time@npm:1.0.0" - dependencies: - fn.name: 1.x.x - checksum: fd008d7e992bdec1c67f53a2f9b46381ee12a9b8c309f88b21f0223546003fb47e8ad7c1fd5843751920a8d276c63bd4b45670ef80c61fb3e07dbccc962b5c7d +"performance-now@npm:^2.1.0": + version: 2.1.0 + resolution: "performance-now@npm:2.1.0" + checksum: 534e641aa8f7cba160f0afec0599b6cecefbb516a2e837b512be0adbe6c1da5550e89c78059c7fabc5c9ffdf6627edabe23eb7c518c4500067a898fa65c2b550 languageName: node linkType: hard -"onetime@npm:^5.1.0, onetime@npm:^5.1.2": - version: 5.1.2 - resolution: "onetime@npm:5.1.2" - dependencies: - mimic-fn: ^2.1.0 - checksum: 2478859ef817fc5d4e9c2f9e5728512ddd1dbc9fb7829ad263765bb6d3b91ce699d6e2332eef6b7dff183c2f490bd3349f1666427eaba4469fba0ac38dfd0d34 +"pg-cloudflare@npm:^1.1.1": + version: 1.1.1 + resolution: "pg-cloudflare@npm:1.1.1" + checksum: 32aac06b5dc4588bbf78801b6267781bc7e13be672009df949d08e9627ba9fdc26924916665d4de99d47f9b0495301930547488dad889d826856976c7b3f3731 languageName: node linkType: hard -"only@npm:~0.0.2": - version: 0.0.2 - resolution: "only@npm:0.0.2" - checksum: d399710db867a1ef436dd3ce74499c87ece794aa81ab0370b5d153968766ee4aed2f98d3f92fc87c963e45b7a74d400d6f463ef651a5e7cfb861b15e88e9efe6 +"pg-connection-string@npm:2.6.2": + version: 2.6.2 + resolution: "pg-connection-string@npm:2.6.2" + checksum: 22265882c3b6f2320785378d0760b051294a684989163d5a1cde4009e64e84448d7bf67d9a7b9e7f69440c3ee9e2212f9aa10dd17ad6773f6143c6020cebbcb5 languageName: node linkType: hard -"open@npm:^10.0.3": - version: 10.1.0 - resolution: "open@npm:10.1.0" - dependencies: - default-browser: ^5.2.1 - define-lazy-prop: ^3.0.0 - is-inside-container: ^1.0.0 - is-wsl: ^3.1.0 - checksum: 079b0771616bac13b08129b0300032dc9328d72f345e460dd0416b8a8196a5bdf5e0251fefec8aa2a6a97c736734ac65dd8f1d29ab3fc9a13e85624aa5bc4470 +"pg-connection-string@npm:^2.3.0, pg-connection-string@npm:^2.7.0": + version: 2.7.0 + resolution: "pg-connection-string@npm:2.7.0" + checksum: 68015a8874b7ca5dad456445e4114af3d2602bac2fdb8069315ecad0ff9660ec93259b9af7186606529ac4f6f72a06831e6f20897a689b16cc7fda7ca0e247fd languageName: node linkType: hard -"open@npm:^8.0.0, open@npm:^8.0.9, open@npm:^8.4.0": - version: 8.4.2 - resolution: "open@npm:8.4.2" - dependencies: - define-lazy-prop: ^2.0.0 - is-docker: ^2.1.1 - is-wsl: ^2.2.0 - checksum: 6388bfff21b40cb9bd8f913f9130d107f2ed4724ea81a8fd29798ee322b361ca31fa2cdfb491a5c31e43a3996cfe9566741238c7a741ada8d7af1cb78d85cf26 +"pg-format@npm:^1.0.4": + version: 1.0.4 + resolution: "pg-format@npm:1.0.4" + checksum: 159b43ad57d2f963f1072def86080dd2a6dd42c1a86046e388d47b491e00afe795139520eb01c8dffc43ac0243c77b3c4c5882d0ec5f488bb3281f17458b1b3d languageName: node linkType: hard -"openapi-types@npm:^12.0.2": - version: 12.1.3 - resolution: "openapi-types@npm:12.1.3" - checksum: 7fa5547f87a58d2aa0eba6e91d396f42d7d31bc3ae140e61b5d60b47d2fd068b48776f42407d5a8da7280cf31195aa128c2fc285e8bb871d1105edee5647a0bb +"pg-int8@npm:1.0.1": + version: 1.0.1 + resolution: "pg-int8@npm:1.0.1" + checksum: a1e3a05a69005ddb73e5f324b6b4e689868a447c5fa280b44cd4d04e6916a344ac289e0b8d2695d66e8e89a7fba023affb9e0e94778770ada5df43f003d664c9 languageName: node linkType: hard -"openid-client@npm:^5.3.0": - version: 5.7.0 - resolution: "openid-client@npm:5.7.0" - dependencies: - jose: ^4.15.9 - lru-cache: ^6.0.0 - object-hash: ^2.2.0 - oidc-token-hash: ^5.0.3 - checksum: 63fc76918fc12f3d6e1456a0b170f417defccf6820acb4581ffc226cb8c9a18d50f76f0982d7a00cce2896c732eb2a6361ad6ea04b127b2603e56408b680ef9c +"pg-pool@npm:^3.7.0": + version: 3.7.0 + resolution: "pg-pool@npm:3.7.0" + peerDependencies: + pg: ">=8.0" + checksum: 66fc1a5ad0e17b72671b9a2cd4c7a856fb08d3cb82da7af0b322590ada23127ac591111e855740405fde4f06c9de888abe9f3aa685ed6038c3232578e1fce8cf languageName: node linkType: hard -"oppa@npm:^0.4.0": - version: 0.4.0 - resolution: "oppa@npm:0.4.0" - dependencies: - chalk: ^4.1.1 - checksum: ecc43e63ede05c3ccb10e0f2c3f3020a6d72e1a3b318f3e37b8cc8a1a279e300991c043e5385d560c1eebb54a56c7f9b69bf0db0d1933acf350bcd2980c96055 +"pg-protocol@npm:^1.7.0": + version: 1.7.0 + resolution: "pg-protocol@npm:1.7.0" + checksum: 2dba740f6fc4b7f9761682c4c42d183b444292cdc7638b373f5247ec995c8199c369953343479281da3c41611fe34130a80c8668348d49a399c164f802f76be2 languageName: node linkType: hard -"optionator@npm:^0.8.1": - version: 0.8.3 - resolution: "optionator@npm:0.8.3" +"pg-types@npm:^2.1.0": + version: 2.2.0 + resolution: "pg-types@npm:2.2.0" dependencies: - deep-is: ~0.1.3 - fast-levenshtein: ~2.0.6 - levn: ~0.3.0 - prelude-ls: ~1.1.2 - type-check: ~0.3.2 - word-wrap: ~1.2.3 - checksum: b8695ddf3d593203e25ab0900e265d860038486c943ff8b774f596a310f8ceebdb30c6832407a8198ba3ec9debe1abe1f51d4aad94843612db3b76d690c61d34 + pg-int8: 1.0.1 + postgres-array: ~2.0.0 + postgres-bytea: ~1.0.0 + postgres-date: ~1.0.4 + postgres-interval: ^1.1.0 + checksum: bf4ec3f594743442857fb3a8dfe5d2478a04c98f96a0a47365014557cbc0b4b0cee01462c79adca863b93befbf88f876299b75b72c665b5fb84a2c94fbd10316 languageName: node linkType: hard -"optionator@npm:^0.9.3": - version: 0.9.4 - resolution: "optionator@npm:0.9.4" +"pg@npm:^8.11.3": + version: 8.13.1 + resolution: "pg@npm:8.13.1" dependencies: - deep-is: ^0.1.3 - fast-levenshtein: ^2.0.6 - levn: ^0.4.1 - prelude-ls: ^1.2.1 - type-check: ^0.4.0 - word-wrap: ^1.2.5 - checksum: ecbd010e3dc73e05d239976422d9ef54a82a13f37c11ca5911dff41c98a6c7f0f163b27f922c37e7f8340af9d36febd3b6e9cef508f3339d4c393d7276d716bb + pg-cloudflare: ^1.1.1 + pg-connection-string: ^2.7.0 + pg-pool: ^3.7.0 + pg-protocol: ^1.7.0 + pg-types: ^2.1.0 + pgpass: 1.x + peerDependencies: + pg-native: ">=3.0.1" + dependenciesMeta: + pg-cloudflare: + optional: true + peerDependenciesMeta: + pg-native: + optional: true + checksum: 22cb97fcbee3348d5ee0b195071cc572f9c88eb40cbb61fe6726af68d55d5962121b2d630509bb907703e1c8bdc33de775462029c5399e2a841fa9e6c9da0242 languageName: node linkType: hard -"ora@npm:^5.3.0, ora@npm:^5.4.1": - version: 5.4.1 - resolution: "ora@npm:5.4.1" +"pgpass@npm:1.x": + version: 1.0.5 + resolution: "pgpass@npm:1.0.5" dependencies: - bl: ^4.1.0 - chalk: ^4.1.0 - cli-cursor: ^3.1.0 - cli-spinners: ^2.5.0 - is-interactive: ^1.0.0 - is-unicode-supported: ^0.1.0 - log-symbols: ^4.1.0 - strip-ansi: ^6.0.0 - wcwidth: ^1.0.1 - checksum: 28d476ee6c1049d68368c0dc922e7225e3b5600c3ede88fade8052837f9ed342625fdaa84a6209302587c8ddd9b664f71f0759833cbdb3a4cf81344057e63c63 + split2: ^4.1.0 + checksum: 947ac096c031eebdf08d989de2e9f6f156b8133d6858c7c2c06c041e1e71dda6f5f3bad3c0ec1e96a09497bbc6ef89e762eefe703b5ef9cb2804392ec52ec400 languageName: node linkType: hard -"os-browserify@npm:^0.3.0": - version: 0.3.0 - resolution: "os-browserify@npm:0.3.0" - checksum: 16e37ba3c0e6a4c63443c7b55799ce4066d59104143cb637ecb9fce586d5da319cdca786ba1c867abbe3890d2cbf37953f2d51eea85e20dd6c4570d6c54bfebf +"photoswipe@npm:^5.3.7": + version: 5.4.4 + resolution: "photoswipe@npm:5.4.4" + checksum: 9e1ee1278d1472e390c486f6ef5d5e13a3e55f660fde15360ce266bd31dcdce8feb08d406f8ccc9c35277ddf67b6d5ca8f028977d02033261647c0a54e7a17ea languageName: node linkType: hard -"os-tmpdir@npm:~1.0.2": - version: 1.0.2 - resolution: "os-tmpdir@npm:1.0.2" - checksum: 5666560f7b9f10182548bf7013883265be33620b1c1b4a4d405c25be2636f970c5488ff3e6c48de75b55d02bde037249fe5dbfbb4c0fb7714953d56aed062e6d +"picocolors@npm:^1.0.0, picocolors@npm:^1.1.0": + version: 1.1.1 + resolution: "picocolors@npm:1.1.1" + checksum: e1cf46bf84886c79055fdfa9dcb3e4711ad259949e3565154b004b260cd356c5d54b31a1437ce9782624bf766272fe6b0154f5f0c744fb7af5d454d2b60db045 languageName: node linkType: hard -"outdent@npm:^0.5.0": - version: 0.5.0 - resolution: "outdent@npm:0.5.0" - checksum: 6e6c63dd09e9890e67ef9a0b4d35df0b0b850b2059ce3f7e19e4cc1a146b26dc5d8c45df238dbf187dfffc8bd82cd07d37c697544015680bcb9f07f29a36c678 +"picomatch-browser@npm:^2.2.6": + version: 2.2.6 + resolution: "picomatch-browser@npm:2.2.6" + checksum: 946c50a8654da43167a0f9a90dd0b50f3d4e830ee71c0926ee9052d7e6f40d8907deaafba19cea71b97207b4aaa52c245335e4cd5bbaf78fe2ba567cd0c341fa languageName: node linkType: hard -"outvariant@npm:^1.2.1, outvariant@npm:^1.4.0": - version: 1.4.3 - resolution: "outvariant@npm:1.4.3" - checksum: 4a3551fb2b45309e585eebf88bad094dbe56ac6d3a28d59dd2e4050b431aa2beb6097a0763fce3cd82ca0f077026f380a9b60fffc306aaf430141421e7a7b6ed +"picomatch@npm:^2.0.4, picomatch@npm:^2.2.1, picomatch@npm:^2.2.2, picomatch@npm:^2.2.3, picomatch@npm:^2.3.1": + version: 2.3.1 + resolution: "picomatch@npm:2.3.1" + checksum: 050c865ce81119c4822c45d3c84f1ced46f93a0126febae20737bd05ca20589c564d6e9226977df859ed5e03dc73f02584a2b0faad36e896936238238b0446cf languageName: node linkType: hard -"p-filter@npm:^2.1.0": - version: 2.1.0 - resolution: "p-filter@npm:2.1.0" - dependencies: - p-map: ^2.0.0 - checksum: 76e552ca624ce2233448d68b19eec9de42b695208121998f7e011edce71d1079a83096ee6a2078fb2a59cfa8a5c999f046edf00ebf16a8e780022010b4693234 +"picomatch@npm:^4.0.1, picomatch@npm:^4.0.2": + version: 4.0.2 + resolution: "picomatch@npm:4.0.2" + checksum: a7a5188c954f82c6585720e9143297ccd0e35ad8072231608086ca950bee672d51b0ef676254af0788205e59bd4e4deb4e7708769226bed725bf13370a7d1464 languageName: node linkType: hard -"p-finally@npm:^1.0.0": - version: 1.0.0 - resolution: "p-finally@npm:1.0.0" - checksum: 93a654c53dc805dd5b5891bab16eb0ea46db8f66c4bfd99336ae929323b1af2b70a8b0654f8f1eae924b2b73d037031366d645f1fd18b3d30cbd15950cc4b1d4 +"pify@npm:^4.0.1": + version: 4.0.1 + resolution: "pify@npm:4.0.1" + checksum: 9c4e34278cb09987685fa5ef81499c82546c033713518f6441778fbec623fc708777fe8ac633097c72d88470d5963094076c7305cafc7ad340aae27cfacd856b languageName: node linkType: hard -"p-limit@npm:^1.1.0": - version: 1.3.0 - resolution: "p-limit@npm:1.3.0" - dependencies: - p-try: ^1.0.0 - checksum: 281c1c0b8c82e1ac9f81acd72a2e35d402bf572e09721ce5520164e9de07d8274451378a3470707179ad13240535558f4b277f02405ad752e08c7d5b0d54fbfd +"pify@npm:^5.0.0": + version: 5.0.0 + resolution: "pify@npm:5.0.0" + checksum: 443e3e198ad6bfa8c0c533764cf75c9d5bc976387a163792fb553ffe6ce923887cf14eebf5aea9b7caa8eab930da8c33612990ae85bd8c2bc18bedb9eae94ecb languageName: node linkType: hard -"p-limit@npm:^2.0.0, p-limit@npm:^2.2.0": - version: 2.3.0 - resolution: "p-limit@npm:2.3.0" - dependencies: - p-try: ^2.0.0 - checksum: 84ff17f1a38126c3314e91ecfe56aecbf36430940e2873dadaa773ffe072dc23b7af8e46d4b6485d302a11673fe94c6b67ca2cfbb60c989848b02100d0594ac1 +"pino-pretty@npm:^2.6.0": + version: 2.6.1 + resolution: "pino-pretty@npm:2.6.1" + dependencies: + args: ^5.0.0 + chalk: ^2.3.2 + dateformat: ^3.0.3 + fast-json-parse: ^1.0.3 + fast-safe-stringify: ^2.0.6 + jmespath: ^0.15.0 + pump: ^3.0.0 + readable-stream: ^3.0.6 + split2: ^3.0.0 + bin: + pino-pretty: ./bin.js + checksum: 2899b9e29b2cd572715c30a02a87aaa6e8a43009cb92df60ca88233bb7ead48206f8de2f6bcba1b83517409036017e703c8fe86e912efb91ab0757b3a4306593 languageName: node linkType: hard -"p-limit@npm:^3.0.1, p-limit@npm:^3.0.2, p-limit@npm:^3.1.0": - version: 3.1.0 - resolution: "p-limit@npm:3.1.0" - dependencies: - yocto-queue: ^0.1.0 - checksum: 7c3690c4dbf62ef625671e20b7bdf1cbc9534e83352a2780f165b0d3ceba21907e77ad63401708145ca4e25bfc51636588d89a8c0aeb715e6c37d1c066430360 +"pino-std-serializers@npm:^2.4.2": + version: 2.5.0 + resolution: "pino-std-serializers@npm:2.5.0" + checksum: 57788a1427ca1de56f01d0382c23b2f7c32438ab391169f074e02bba86ac9ec360a94834bfad2792ec01b6a5af2386ff4541cf393c56c0b1e66f72323a9162ef languageName: node linkType: hard -"p-locate@npm:^2.0.0": - version: 2.0.0 - resolution: "p-locate@npm:2.0.0" +"pino@npm:^5.12.2": + version: 5.17.0 + resolution: "pino@npm:5.17.0" dependencies: - p-limit: ^1.1.0 - checksum: e2dceb9b49b96d5513d90f715780f6f4972f46987dc32a0e18bc6c3fc74a1a5d73ec5f81b1398af5e58b99ea1ad03fd41e9181c01fa81b4af2833958696e3081 + fast-redact: ^2.0.0 + fast-safe-stringify: ^2.0.7 + flatstr: ^1.0.12 + pino-std-serializers: ^2.4.2 + quick-format-unescaped: ^3.0.3 + sonic-boom: ^0.7.5 + bin: + pino: bin.js + checksum: a967ca7e4c125648c5fe29247c6bd3d96011adcc4bcaf85b558fc66c26b6525323c00117725c16bcc1b4e455b4287b71bd72fd144a9ce8ddac467c269b840c7f languageName: node linkType: hard -"p-locate@npm:^3.0.0": - version: 3.0.0 - resolution: "p-locate@npm:3.0.0" - dependencies: - p-limit: ^2.0.0 - checksum: 83991734a9854a05fe9dbb29f707ea8a0599391f52daac32b86f08e21415e857ffa60f0e120bfe7ce0cc4faf9274a50239c7895fc0d0579d08411e513b83a4ae +"pirates@npm:^4.0.1, pirates@npm:^4.0.4, pirates@npm:^4.0.6": + version: 4.0.6 + resolution: "pirates@npm:4.0.6" + checksum: 46a65fefaf19c6f57460388a5af9ab81e3d7fd0e7bc44ca59d753cb5c4d0df97c6c6e583674869762101836d68675f027d60f841c105d72734df9dfca97cbcc6 languageName: node linkType: hard -"p-locate@npm:^4.1.0": - version: 4.1.0 - resolution: "p-locate@npm:4.1.0" +"pkg-dir@npm:^4.2.0": + version: 4.2.0 + resolution: "pkg-dir@npm:4.2.0" dependencies: - p-limit: ^2.2.0 - checksum: 513bd14a455f5da4ebfcb819ef706c54adb09097703de6aeaa5d26fe5ea16df92b48d1ac45e01e3944ce1e6aa2a66f7f8894742b8c9d6e276e16cd2049a2b870 + find-up: ^4.0.0 + checksum: 9863e3f35132bf99ae1636d31ff1e1e3501251d480336edb1c211133c8d58906bed80f154a1d723652df1fda91e01c7442c2eeaf9dc83157c7ae89087e43c8d6 languageName: node linkType: hard -"p-locate@npm:^5.0.0": - version: 5.0.0 - resolution: "p-locate@npm:5.0.0" +"pkg-up@npm:^3.1.0": + version: 3.1.0 + resolution: "pkg-up@npm:3.1.0" dependencies: - p-limit: ^3.0.2 - checksum: 1623088f36cf1cbca58e9b61c4e62bf0c60a07af5ae1ca99a720837356b5b6c5ba3eb1b2127e47a06865fee59dd0453cad7cc844cda9d5a62ac1a5a51b7c86d3 + find-up: ^3.0.0 + checksum: 5bac346b7c7c903613c057ae3ab722f320716199d753f4a7d053d38f2b5955460f3e6ab73b4762c62fd3e947f58e04f1343e92089e7bb6091c90877406fcd8c8 languageName: node linkType: hard -"p-map@npm:^2.0.0": - version: 2.1.0 - resolution: "p-map@npm:2.1.0" - checksum: 9e3ad3c9f6d75a5b5661bcad78c91f3a63849189737cd75e4f1225bf9ac205194e5c44aac2ef6f09562b1facdb9bd1425584d7ac375bfaa17b3f1a142dab936d +"pkginfo@npm:0.2.x": + version: 0.2.3 + resolution: "pkginfo@npm:0.2.3" + checksum: 2dc005c4821d716e2a20d2940fb136e0585a801941db4937ac8ec2c2404af3c194c34171474067ebdbb34c582187fc3ab08cfca47ef75b988f0fa1de3f833550 languageName: node linkType: hard -"p-map@npm:^4.0.0": - version: 4.0.0 - resolution: "p-map@npm:4.0.0" - dependencies: - aggregate-error: ^3.0.0 - checksum: cb0ab21ec0f32ddffd31dfc250e3afa61e103ef43d957cc45497afe37513634589316de4eb88abdfd969fe6410c22c0b93ab24328833b8eb1ccc087fc0442a1c +"pkginfo@npm:^0.4.1": + version: 0.4.1 + resolution: "pkginfo@npm:0.4.1" + checksum: 0f13694f3682345647b7cb887fb6fe258df51b635f252324cd75eeb8181b4381cb8b9d91dc2d869849e857192b403bea65038d2f7c05b524eeae69ece5048209 languageName: node linkType: hard -"p-queue@npm:^6.6.2": - version: 6.6.2 - resolution: "p-queue@npm:6.6.2" - dependencies: - eventemitter3: ^4.0.4 - p-timeout: ^3.2.0 - checksum: 832642fcc4ab6477b43e6d7c30209ab10952969ed211c6d6f2931be8a4f9935e3578c72e8cce053dc34f2eb6941a408a2c516a54904e989851a1a209cf19761c +"playwright-core@npm:1.45.3": + version: 1.45.3 + resolution: "playwright-core@npm:1.45.3" + bin: + playwright-core: cli.js + checksum: cecb58877b2c643403d7a72c24a7aa0fdd087a3c7f9a5ea5403851336ea831d8e304b1f159aacbbabd12e5c47eaac054333746c9e5431ec07b13d64dbf3b50ec languageName: node linkType: hard -"p-retry@npm:^4.5.0": - version: 4.6.2 - resolution: "p-retry@npm:4.6.2" - dependencies: - "@types/retry": 0.12.0 - retry: ^0.13.1 - checksum: 45c270bfddaffb4a895cea16cb760dcc72bdecb6cb45fef1971fa6ea2e91ddeafddefe01e444ac73e33b1b3d5d29fb0dd18a7effb294262437221ddc03ce0f2e +"playwright-core@npm:1.49.1": + version: 1.49.1 + resolution: "playwright-core@npm:1.49.1" + bin: + playwright-core: cli.js + checksum: a940f4b10ff1de033b4b8594b5104b02849a892d9adda0d42330a872cd3d8d287ffd2b01fc33f33ccd34f8904bb8ae8220b878b62e899f3d9bcd1b0945ab45c7 languageName: node linkType: hard -"p-retry@npm:^6.2.0": - version: 6.2.0 - resolution: "p-retry@npm:6.2.0" +"playwright@npm:1.45.3": + version: 1.45.3 + resolution: "playwright@npm:1.45.3" dependencies: - "@types/retry": 0.12.2 - is-network-error: ^1.0.0 - retry: ^0.13.1 - checksum: 6003573c559ee812329c9c3ede7ba12a783fdc8dd70602116646e850c920b4597dc502fe001c3f9526fca4e93275045db7a27341c458e51db179c1374a01ac44 + fsevents: 2.3.2 + playwright-core: 1.45.3 + dependenciesMeta: + fsevents: + optional: true + bin: + playwright: cli.js + checksum: d9d23b155ccd001553214f710561b01e48eb409676102f8ab94c0b4aa5ac5f398becc1a96528b0554944e07e34189503d891913e0e0a4aa58ad36b9c08747983 languageName: node linkType: hard -"p-timeout@npm:^3.2.0": - version: 3.2.0 - resolution: "p-timeout@npm:3.2.0" +"playwright@npm:1.49.1": + version: 1.49.1 + resolution: "playwright@npm:1.49.1" dependencies: - p-finally: ^1.0.0 - checksum: 3dd0eaa048780a6f23e5855df3dd45c7beacff1f820476c1d0d1bcd6648e3298752ba2c877aa1c92f6453c7dd23faaf13d9f5149fc14c0598a142e2c5e8d649c + fsevents: 2.3.2 + playwright-core: 1.49.1 + dependenciesMeta: + fsevents: + optional: true + bin: + playwright: cli.js + checksum: c136d42d625e32614f90e5228a165dc8be48c5bfb52aca9210c6ff04161a409dbe42fe5ae4f05a2653f6a1b836876a04d3b0f24bcbbc053d1509c1d605b7c8d5 languageName: node linkType: hard -"p-try@npm:^1.0.0": - version: 1.0.0 - resolution: "p-try@npm:1.0.0" - checksum: 3b5303f77eb7722144154288bfd96f799f8ff3e2b2b39330efe38db5dd359e4fb27012464cd85cb0a76e9b7edd1b443568cb3192c22e7cffc34989df0bafd605 +"pluralize@npm:^8.0.0": + version: 8.0.0 + resolution: "pluralize@npm:8.0.0" + checksum: 08931d4a6a4a5561a7f94f67a31c17e6632cb21e459ab3ff4f6f629d9a822984cf8afef2311d2005fbea5d7ef26016ebb090db008e2d8bce39d0a9a9d218736e languageName: node linkType: hard -"p-try@npm:^2.0.0": - version: 2.2.0 - resolution: "p-try@npm:2.2.0" - checksum: f8a8e9a7693659383f06aec604ad5ead237c7a261c18048a6e1b5b85a5f8a067e469aa24f5bc009b991ea3b058a87f5065ef4176793a200d4917349881216cae +"point-in-svg-path@npm:^1.0.1": + version: 1.0.2 + resolution: "point-in-svg-path@npm:1.0.2" + checksum: 0145eeb8c513fd4087ae569c6c7a4be5382854a251726d32e49cf0f08ff2663178f018ccc77c05609dd8fa73c087066ce8d6ab77b97350316e7b2e6a59174e12 languageName: node linkType: hard -"pac-proxy-agent@npm:^7.0.1": - version: 7.0.2 - resolution: "pac-proxy-agent@npm:7.0.2" - dependencies: - "@tootallnate/quickjs-emscripten": ^0.23.0 - agent-base: ^7.0.2 - debug: ^4.3.4 - get-uri: ^6.0.1 - http-proxy-agent: ^7.0.0 - https-proxy-agent: ^7.0.5 - pac-resolver: ^7.0.1 - socks-proxy-agent: ^8.0.4 - checksum: 82772aaa489a4ad6f598b75d56daf609e7ba294a05a91cfe3101b004e2df494f0a269c98452cb47aaa4a513428e248308a156e26fee67eb78a76a58e9346921e +"pony-cause@npm:^1.0.0, pony-cause@npm:^1.1.1": + version: 1.1.1 + resolution: "pony-cause@npm:1.1.1" + checksum: 5ff8878b808be48db801d52246a99d7e4789e52d20575ba504ede30c818fd85d38a033915e02c15fa9b6dce72448836dc1a47094acf8f1c21c4f04a4603b0cfb languageName: node linkType: hard -"pac-resolver@npm:^7.0.1": - version: 7.0.1 - resolution: "pac-resolver@npm:7.0.1" +"popmotion@npm:11.0.3": + version: 11.0.3 + resolution: "popmotion@npm:11.0.3" dependencies: - degenerator: ^5.0.0 - netmask: ^2.0.2 - checksum: 839134328781b80d49f9684eae1f5c74f50a1d4482076d44c84fc2f3ca93da66fa11245a4725a057231e06b311c20c989fd0681e662a0792d17f644d8fe62a5e + framesync: 6.0.1 + hey-listen: ^1.0.8 + style-value-types: 5.0.0 + tslib: ^2.1.0 + checksum: 9fe7d03b4ec0e85bfb9dadc23b745147bfe42e16f466ba06e6327197d0e38b72015afc2f918a8051dedc3680310417f346ffdc463be6518e2e92e98f48e30268 languageName: node linkType: hard -"package-json-from-dist@npm:^1.0.0": - version: 1.0.1 - resolution: "package-json-from-dist@npm:1.0.1" - checksum: 58ee9538f2f762988433da00e26acc788036914d57c71c246bf0be1b60cdbd77dd60b6a3e1a30465f0b248aeb80079e0b34cb6050b1dfa18c06953bb1cbc7602 +"popper.js@npm:1.16.1-lts": + version: 1.16.1-lts + resolution: "popper.js@npm:1.16.1-lts" + checksum: 27c00b5b07afa91a5e9f9db78a9a61b50f44ca156d09c851cd29d79cd359e54cfde4288ae555b88801438227e452e56cb4b56bd79fd45ab17dac780a70a7e9ac languageName: node linkType: hard -"package-manager-detector@npm:^0.2.0": - version: 0.2.2 - resolution: "package-manager-detector@npm:0.2.2" - checksum: acc0d5a8b6b2a265474c1bac2b3569b6e57fe13db4d764b75cf5fcd11463a44f0ce00bb5dc439a78a1999993780385f431d36ceea51b51a35ce40d512b7388c6 +"popper.js@npm:^1.16.1": + version: 1.16.1 + resolution: "popper.js@npm:1.16.1" + checksum: c56ae5001ec50a77ee297a8061a0221d99d25c7348d2e6bcd3e45a0d0f32a1fd81bca29d46cb0d4bdf13efb77685bd6a0ce93f9eb3c608311a461f945fffedbe languageName: node linkType: hard -"pako@npm:^1.0.10, pako@npm:~1.0.5": - version: 1.0.11 - resolution: "pako@npm:1.0.11" - checksum: 1be2bfa1f807608c7538afa15d6f25baa523c30ec870a3228a89579e474a4d992f4293859524e46d5d87fd30fa17c5edf34dbef0671251d9749820b488660b16 +"portfinder@npm:^1.0.32": + version: 1.0.32 + resolution: "portfinder@npm:1.0.32" + dependencies: + async: ^2.6.4 + debug: ^3.2.7 + mkdirp: ^0.5.6 + checksum: 116b4aed1b9e16f6d5503823d966d9ffd41b1c2339e27f54c06cd2f3015a9d8ef53e2a53b57bc0a25af0885977b692007353aa28f9a0a98a44335cb50487240d languageName: node linkType: hard -"param-case@npm:^3.0.4": - version: 3.0.4 - resolution: "param-case@npm:3.0.4" - dependencies: - dot-case: ^3.0.4 - tslib: ^2.0.3 - checksum: b34227fd0f794e078776eb3aa6247442056cb47761e9cd2c4c881c86d84c64205f6a56ef0d70b41ee7d77da02c3f4ed2f88e3896a8fefe08bdfb4deca037c687 +"possible-typed-array-names@npm:^1.0.0": + version: 1.0.0 + resolution: "possible-typed-array-names@npm:1.0.0" + checksum: b32d403ece71e042385cc7856385cecf1cd8e144fa74d2f1de40d1e16035dba097bc189715925e79b67bdd1472796ff168d3a90d296356c9c94d272d5b95f3ae languageName: node linkType: hard -"parent-module@npm:^1.0.0": - version: 1.0.1 - resolution: "parent-module@npm:1.0.1" +"postcss-calc@npm:^8.2.3": + version: 8.2.4 + resolution: "postcss-calc@npm:8.2.4" dependencies: - callsites: ^3.0.0 - checksum: 6ba8b255145cae9470cf5551eb74be2d22281587af787a2626683a6c20fbb464978784661478dd2a3f1dad74d1e802d403e1b03c1a31fab310259eec8ac560ff + postcss-selector-parser: ^6.0.9 + postcss-value-parser: ^4.2.0 + peerDependencies: + postcss: ^8.2.2 + checksum: 314b4cebb0c4ed0cf8356b4bce71eca78f5a7842e6a3942a3bba49db168d5296b2bd93c3f735ae1c616f2651d94719ade33becc03c73d2d79c7394fb7f73eabb languageName: node linkType: hard -"parse-asn1@npm:^5.0.0, parse-asn1@npm:^5.1.7": - version: 5.1.7 - resolution: "parse-asn1@npm:5.1.7" +"postcss-colormin@npm:^5.3.1": + version: 5.3.1 + resolution: "postcss-colormin@npm:5.3.1" dependencies: - asn1.js: ^4.10.1 - browserify-aes: ^1.2.0 - evp_bytestokey: ^1.0.3 - hash-base: ~3.0 - pbkdf2: ^3.1.2 - safe-buffer: ^5.2.1 - checksum: 93c7194c1ed63a13e0b212d854b5213ad1aca0ace41c66b311e97cca0519cf9240f79435a0306a3b412c257f0ea3f1953fd0d9549419a0952c9e995ab361fd6c + browserslist: ^4.21.4 + caniuse-api: ^3.0.0 + colord: ^2.9.1 + postcss-value-parser: ^4.2.0 + peerDependencies: + postcss: ^8.2.15 + checksum: e5778baab30877cd1f51e7dc9d2242a162aeca6360a52956acd7f668c5bc235c2ccb7e4df0370a804d65ebe00c5642366f061db53aa823f9ed99972cebd16024 languageName: node linkType: hard -"parse-json@npm:^5.0.0, parse-json@npm:^5.2.0": - version: 5.2.0 - resolution: "parse-json@npm:5.2.0" +"postcss-convert-values@npm:^5.1.3": + version: 5.1.3 + resolution: "postcss-convert-values@npm:5.1.3" dependencies: - "@babel/code-frame": ^7.0.0 - error-ex: ^1.3.1 - json-parse-even-better-errors: ^2.3.0 - lines-and-columns: ^1.1.6 - checksum: 62085b17d64da57f40f6afc2ac1f4d95def18c4323577e1eced571db75d9ab59b297d1d10582920f84b15985cbfc6b6d450ccbf317644cfa176f3ed982ad87e2 + browserslist: ^4.21.4 + postcss-value-parser: ^4.2.0 + peerDependencies: + postcss: ^8.2.15 + checksum: df48cdaffabf9737f9cfdc58a3dc2841cf282506a7a944f6c70236cff295d3a69f63de6e0935eeb8a9d3f504324e5b4e240abc29e21df9e35a02585d3060aeb5 languageName: node linkType: hard -"parse-ms@npm:^4.0.0": - version: 4.0.0 - resolution: "parse-ms@npm:4.0.0" - checksum: 673c801d9f957ff79962d71ed5a24850163f4181a90dd30c4e3666b3a804f53b77f1f0556792e8b2adbb5d58757907d1aa51d7d7dc75997c2a56d72937cbc8b7 +"postcss-discard-comments@npm:^5.1.2": + version: 5.1.2 + resolution: "postcss-discard-comments@npm:5.1.2" + peerDependencies: + postcss: ^8.2.15 + checksum: abfd064ebc27aeaf5037643dd51ffaff74d1fa4db56b0523d073ace4248cbb64ffd9787bd6924b0983a9d0bd0e9bf9f10d73b120e50391dc236e0d26c812fa2a + languageName: node + linkType: hard + +"postcss-discard-duplicates@npm:^5.1.0": + version: 5.1.0 + resolution: "postcss-discard-duplicates@npm:5.1.0" + peerDependencies: + postcss: ^8.2.15 + checksum: 88d6964201b1f4ed6bf7a32cefe68e86258bb6e42316ca01d9b32bdb18e7887d02594f89f4a2711d01b51ea6e3fcca8c54be18a59770fe5f4521c61d3eb6ca35 + languageName: node + linkType: hard + +"postcss-discard-empty@npm:^5.1.1": + version: 5.1.1 + resolution: "postcss-discard-empty@npm:5.1.1" + peerDependencies: + postcss: ^8.2.15 + checksum: 970adb12fae5c214c0768236ad9a821552626e77dedbf24a8213d19cc2c4a531a757cd3b8cdd3fc22fb1742471b8692a1db5efe436a71236dec12b1318ee8ff4 + languageName: node + linkType: hard + +"postcss-discard-overridden@npm:^5.1.0": + version: 5.1.0 + resolution: "postcss-discard-overridden@npm:5.1.0" + peerDependencies: + postcss: ^8.2.15 + checksum: d64d4a545aa2c81b22542895cfcddc787d24119f294d35d29b0599a1c818b3cc51f4ee80b80f5a0a09db282453dd5ac49f104c2117cc09112d0ac9b40b499a41 + languageName: node + linkType: hard + +"postcss-load-config@npm:^3.0.0": + version: 3.1.4 + resolution: "postcss-load-config@npm:3.1.4" + dependencies: + lilconfig: ^2.0.5 + yaml: ^1.10.2 + peerDependencies: + postcss: ">=8.0.9" + ts-node: ">=9.0.0" + peerDependenciesMeta: + postcss: + optional: true + ts-node: + optional: true + checksum: 1c589504c2d90b1568aecae8238ab993c17dba2c44f848a8f13619ba556d26a1c09644d5e6361b5784e721e94af37b604992f9f3dc0483e687a0cc1cc5029a34 languageName: node linkType: hard -"parse-passwd@npm:^1.0.0": - version: 1.0.0 - resolution: "parse-passwd@npm:1.0.0" - checksum: 4e55e0231d58f828a41d0f1da2bf2ff7bcef8f4cb6146e69d16ce499190de58b06199e6bd9b17fbf0d4d8aef9052099cdf8c4f13a6294b1a522e8e958073066e +"postcss-merge-longhand@npm:^5.1.7": + version: 5.1.7 + resolution: "postcss-merge-longhand@npm:5.1.7" + dependencies: + postcss-value-parser: ^4.2.0 + stylehacks: ^5.1.1 + peerDependencies: + postcss: ^8.2.15 + checksum: 81c3fc809f001b9b71a940148e242bdd6e2d77713d1bfffa15eb25c1f06f6648d5e57cb21645746d020a2a55ff31e1740d2b27900442913a9d53d8a01fb37e1b languageName: node linkType: hard -"parse-path@npm:^7.0.0": - version: 7.0.0 - resolution: "parse-path@npm:7.0.0" +"postcss-merge-rules@npm:^5.1.4": + version: 5.1.4 + resolution: "postcss-merge-rules@npm:5.1.4" dependencies: - protocols: ^2.0.0 - checksum: 244b46523a58181d251dda9b888efde35d8afb957436598d948852f416d8c76ddb4f2010f9fc94218b4be3e5c0f716aa0d2026194a781e3b8981924142009302 + browserslist: ^4.21.4 + caniuse-api: ^3.0.0 + cssnano-utils: ^3.1.0 + postcss-selector-parser: ^6.0.5 + peerDependencies: + postcss: ^8.2.15 + checksum: 8ab6a569babe6cb412d6612adee74f053cea7edb91fa013398515ab36754b1fec830d68782ed8cdfb44cffdc6b78c79eab157bff650f428aa4460d3f3857447e languageName: node linkType: hard -"parse-url@npm:^8.1.0": - version: 8.1.0 - resolution: "parse-url@npm:8.1.0" +"postcss-minify-font-values@npm:^5.1.0": + version: 5.1.0 + resolution: "postcss-minify-font-values@npm:5.1.0" dependencies: - parse-path: ^7.0.0 - checksum: b93e21ab4c93c7d7317df23507b41be7697694d4c94f49ed5c8d6288b01cba328fcef5ba388e147948eac20453dee0df9a67ab2012415189fff85973bdffe8d9 + postcss-value-parser: ^4.2.0 + peerDependencies: + postcss: ^8.2.15 + checksum: 35e858fa41efa05acdeb28f1c76579c409fdc7eabb1744c3bd76e895bb9fea341a016746362a67609688ab2471f587202b9a3e14ea28ad677754d663a2777ece languageName: node linkType: hard -"parse5@npm:^7.0.0, parse5@npm:^7.1.1": - version: 7.2.1 - resolution: "parse5@npm:7.2.1" +"postcss-minify-gradients@npm:^5.1.1": + version: 5.1.1 + resolution: "postcss-minify-gradients@npm:5.1.1" dependencies: - entities: ^4.5.0 - checksum: 11253cf8aa2e7fc41c004c64cba6f2c255f809663365db65bd7ad0e8cf7b89e436a563c20059346371cc543a6c1b567032088883ca6a2cbc88276c666b68236d + colord: ^2.9.1 + cssnano-utils: ^3.1.0 + postcss-value-parser: ^4.2.0 + peerDependencies: + postcss: ^8.2.15 + checksum: 27354072a07c5e6dab36731103b94ca2354d4ed3c5bc6aacfdf2ede5a55fa324679d8fee5450800bc50888dbb5e9ed67569c0012040c2be128143d0cebb36d67 languageName: node linkType: hard -"parseurl@npm:^1.3.2, parseurl@npm:~1.3.2, parseurl@npm:~1.3.3": - version: 1.3.3 - resolution: "parseurl@npm:1.3.3" - checksum: 407cee8e0a3a4c5cd472559bca8b6a45b82c124e9a4703302326e9ab60fc1081442ada4e02628efef1eb16197ddc7f8822f5a91fd7d7c86b51f530aedb17dfa2 +"postcss-minify-params@npm:^5.1.4": + version: 5.1.4 + resolution: "postcss-minify-params@npm:5.1.4" + dependencies: + browserslist: ^4.21.4 + cssnano-utils: ^3.1.0 + postcss-value-parser: ^4.2.0 + peerDependencies: + postcss: ^8.2.15 + checksum: bd63e2cc89edcf357bb5c2a16035f6d02ef676b8cede4213b2bddd42626b3d428403849188f95576fc9f03e43ebd73a29bf61d33a581be9a510b13b7f7f100d5 languageName: node linkType: hard -"pascal-case@npm:^3.1.2": - version: 3.1.2 - resolution: "pascal-case@npm:3.1.2" +"postcss-minify-selectors@npm:^5.2.1": + version: 5.2.1 + resolution: "postcss-minify-selectors@npm:5.2.1" dependencies: - no-case: ^3.0.4 - tslib: ^2.0.3 - checksum: ba98bfd595fc91ef3d30f4243b1aee2f6ec41c53b4546bfa3039487c367abaa182471dcfc830a1f9e1a0df00c14a370514fa2b3a1aacc68b15a460c31116873e + postcss-selector-parser: ^6.0.5 + peerDependencies: + postcss: ^8.2.15 + checksum: 6fdbc84f99a60d56b43df8930707da397775e4c36062a106aea2fd2ac81b5e24e584a1892f4baa4469fa495cb87d1422560eaa8f6c9d500f9f0b691a5f95bab5 languageName: node linkType: hard -"passport-strategy@npm:1.x.x": - version: 1.0.0 - resolution: "passport-strategy@npm:1.0.0" - checksum: 5086693f2508e538dffa55a338c89fe8192fb5f4478c71f80cd5890b8573419a098f4fec88b505374f60bbe9049f6f24b9f3992678612528a3370b4dc73354a2 +"postcss-modules-extract-imports@npm:^3.0.0, postcss-modules-extract-imports@npm:^3.1.0": + version: 3.1.0 + resolution: "postcss-modules-extract-imports@npm:3.1.0" + peerDependencies: + postcss: ^8.1.0 + checksum: b9192e0f4fb3d19431558be6f8af7ca45fc92baaad9b2778d1732a5880cd25c3df2074ce5484ae491e224f0d21345ffc2d419bd51c25b019af76d7a7af88c17f languageName: node linkType: hard -"passport@npm:^0.7.0": - version: 0.7.0 - resolution: "passport@npm:0.7.0" +"postcss-modules-local-by-default@npm:^4.0.0, postcss-modules-local-by-default@npm:^4.0.5": + version: 4.0.5 + resolution: "postcss-modules-local-by-default@npm:4.0.5" dependencies: - passport-strategy: 1.x.x - pause: 0.0.1 - utils-merge: ^1.0.1 - checksum: 5080b46df2df7a84f7ba4a8a20437ce71a1346fd27ab47b62df3251a666af9f3430d6c8a1beda3174f6a9d91edc823b57b88050d423a6cff9831848a2d97725c + icss-utils: ^5.0.0 + postcss-selector-parser: ^6.0.2 + postcss-value-parser: ^4.1.0 + peerDependencies: + postcss: ^8.1.0 + checksum: ca9b01f4a0a3dfb33e016299e2dfb7e85c3123292f7aec2efc0c6771b9955648598bfb4c1561f7ee9732fb27fb073681233661b32eef98baab43743f96735452 languageName: node linkType: hard -"path-browserify@npm:0.0.1": - version: 0.0.1 - resolution: "path-browserify@npm:0.0.1" - checksum: ae8dcd45d0d3cfbaf595af4f206bf3ed82d77f72b4877ae7e77328079e1468c84f9386754bb417d994d5a19bf47882fd253565c18441cd5c5c90ae5187599e35 +"postcss-modules-scope@npm:^3.0.0, postcss-modules-scope@npm:^3.2.0": + version: 3.2.0 + resolution: "postcss-modules-scope@npm:3.2.0" + dependencies: + postcss-selector-parser: ^6.0.4 + peerDependencies: + postcss: ^8.1.0 + checksum: 2ffe7e98c1fa993192a39c8dd8ade93fc4f59fbd1336ce34fcedaee0ee3bafb29e2e23fb49189256895b30e4f21af661c6a6a16ef7b17ae2c859301e4a4459ae languageName: node linkType: hard -"path-browserify@npm:^1.0.1": - version: 1.0.1 - resolution: "path-browserify@npm:1.0.1" - checksum: c6d7fa376423fe35b95b2d67990060c3ee304fc815ff0a2dc1c6c3cfaff2bd0d572ee67e18f19d0ea3bbe32e8add2a05021132ac40509416459fffee35200699 +"postcss-modules-values@npm:^4.0.0": + version: 4.0.0 + resolution: "postcss-modules-values@npm:4.0.0" + dependencies: + icss-utils: ^5.0.0 + peerDependencies: + postcss: ^8.1.0 + checksum: f7f2cdf14a575b60e919ad5ea52fed48da46fe80db2733318d71d523fc87db66c835814940d7d05b5746b0426e44661c707f09bdb83592c16aea06e859409db6 languageName: node linkType: hard -"path-equal@npm:^1.2.5": - version: 1.2.5 - resolution: "path-equal@npm:1.2.5" - checksum: 2bef7bcb98c7ae371c52c1562b2fc515bfd03bc1a5571df9a8591038db8d742ba2d1ff39aa5130853e6afb69e773ccba5095f54d2e6d17422ca03ef9047992d7 +"postcss-modules@npm:^4.0.0": + version: 4.3.1 + resolution: "postcss-modules@npm:4.3.1" + dependencies: + generic-names: ^4.0.0 + icss-replace-symbols: ^1.1.0 + lodash.camelcase: ^4.3.0 + postcss-modules-extract-imports: ^3.0.0 + postcss-modules-local-by-default: ^4.0.0 + postcss-modules-scope: ^3.0.0 + postcss-modules-values: ^4.0.0 + string-hash: ^1.1.1 + peerDependencies: + postcss: ^8.0.0 + checksum: fa592183bb3d96c4aaf535e3b9b3bcfc54274cbb5b337616543c24ec68cd56675e9fd8aabf994e627513af628d090e43d2f1f4928ff6cdd4b9d3b1ba3fce4d42 languageName: node linkType: hard -"path-exists@npm:^3.0.0": - version: 3.0.0 - resolution: "path-exists@npm:3.0.0" - checksum: 96e92643aa34b4b28d0de1cd2eba52a1c5313a90c6542d03f62750d82480e20bfa62bc865d5cfc6165f5fcd5aeb0851043c40a39be5989646f223300021bae0a +"postcss-normalize-charset@npm:^5.1.0": + version: 5.1.0 + resolution: "postcss-normalize-charset@npm:5.1.0" + peerDependencies: + postcss: ^8.2.15 + checksum: e79d92971fc05b8b3c9b72f3535a574e077d13c69bef68156a0965f397fdf157de670da72b797f57b0e3bac8f38155b5dd1735ecab143b9cc4032d72138193b4 languageName: node linkType: hard -"path-exists@npm:^4.0.0": - version: 4.0.0 - resolution: "path-exists@npm:4.0.0" - checksum: 505807199dfb7c50737b057dd8d351b82c033029ab94cb10a657609e00c1bc53b951cfdbccab8de04c5584d5eff31128ce6afd3db79281874a5ef2adbba55ed1 +"postcss-normalize-display-values@npm:^5.1.0": + version: 5.1.0 + resolution: "postcss-normalize-display-values@npm:5.1.0" + dependencies: + postcss-value-parser: ^4.2.0 + peerDependencies: + postcss: ^8.2.15 + checksum: b6eb7b9b02c3bdd62bbc54e01e2b59733d73a1c156905d238e178762962efe0c6f5104544da39f32cade8a4fb40f10ff54b63a8ebfbdff51e8780afb9fbdcf86 languageName: node linkType: hard -"path-is-absolute@npm:^1.0.0": - version: 1.0.1 - resolution: "path-is-absolute@npm:1.0.1" - checksum: 060840f92cf8effa293bcc1bea81281bd7d363731d214cbe5c227df207c34cd727430f70c6037b5159c8a870b9157cba65e775446b0ab06fd5ecc7e54615a3b8 +"postcss-normalize-positions@npm:^5.1.1": + version: 5.1.1 + resolution: "postcss-normalize-positions@npm:5.1.1" + dependencies: + postcss-value-parser: ^4.2.0 + peerDependencies: + postcss: ^8.2.15 + checksum: d9afc233729c496463c7b1cdd06732469f401deb387484c3a2422125b46ec10b4af794c101f8c023af56f01970b72b535e88373b9058ecccbbf88db81662b3c4 languageName: node linkType: hard -"path-key@npm:^3.0.0, path-key@npm:^3.1.0": - version: 3.1.1 - resolution: "path-key@npm:3.1.1" - checksum: 55cd7a9dd4b343412a8386a743f9c746ef196e57c823d90ca3ab917f90ab9f13dd0ded27252ba49dbdfcab2b091d998bc446f6220cd3cea65db407502a740020 +"postcss-normalize-repeat-style@npm:^5.1.1": + version: 5.1.1 + resolution: "postcss-normalize-repeat-style@npm:5.1.1" + dependencies: + postcss-value-parser: ^4.2.0 + peerDependencies: + postcss: ^8.2.15 + checksum: 2c6ad2b0ae10a1fda156b948c34f78c8f1e185513593de4d7e2480973586675520edfec427645fa168c337b0a6b3ceca26f92b96149741ca98a9806dad30d534 languageName: node linkType: hard -"path-parse@npm:^1.0.7": - version: 1.0.7 - resolution: "path-parse@npm:1.0.7" - checksum: 49abf3d81115642938a8700ec580da6e830dde670be21893c62f4e10bd7dd4c3742ddc603fe24f898cba7eb0c6bc1777f8d9ac14185d34540c6d4d80cd9cae8a +"postcss-normalize-string@npm:^5.1.0": + version: 5.1.0 + resolution: "postcss-normalize-string@npm:5.1.0" + dependencies: + postcss-value-parser: ^4.2.0 + peerDependencies: + postcss: ^8.2.15 + checksum: 6e549c6e5b2831e34c7bdd46d8419e2278f6af1d5eef6d26884a37c162844e60339340c57e5e06058cdbe32f27fc6258eef233e811ed2f71168ef2229c236ada languageName: node linkType: hard -"path-scurry@npm:^1.11.1, path-scurry@npm:^1.6.1": - version: 1.11.1 - resolution: "path-scurry@npm:1.11.1" +"postcss-normalize-timing-functions@npm:^5.1.0": + version: 5.1.0 + resolution: "postcss-normalize-timing-functions@npm:5.1.0" dependencies: - lru-cache: ^10.2.0 - minipass: ^5.0.0 || ^6.0.2 || ^7.0.0 - checksum: 890d5abcd593a7912dcce7cf7c6bf7a0b5648e3dee6caf0712c126ca0a65c7f3d7b9d769072a4d1baf370f61ce493ab5b038d59988688e0c5f3f646ee3c69023 + postcss-value-parser: ^4.2.0 + peerDependencies: + postcss: ^8.2.15 + checksum: da550f50e90b0b23e17b67449a7d1efd1aa68288e66d4aa7614ca6f5cc012896be1972b7168eee673d27da36504faccf7b9f835c0f7e81243f966a42c8c030aa languageName: node linkType: hard -"path-to-regexp@npm:0.1.10": - version: 0.1.10 - resolution: "path-to-regexp@npm:0.1.10" - checksum: ab7a3b7a0b914476d44030340b0a65d69851af2a0f33427df1476100ccb87d409c39e2182837a96b98fb38c4ef2ba6b87bdad62bb70a2c153876b8061760583c +"postcss-normalize-unicode@npm:^5.1.1": + version: 5.1.1 + resolution: "postcss-normalize-unicode@npm:5.1.1" + dependencies: + browserslist: ^4.21.4 + postcss-value-parser: ^4.2.0 + peerDependencies: + postcss: ^8.2.15 + checksum: 4c24d26cc9f4b19a9397db4e71dd600dab690f1de8e14a3809e2aa1452dbc3791c208c38a6316bbc142f29e934fdf02858e68c94038c06174d78a4937e0f273c languageName: node linkType: hard -"path-to-regexp@npm:3.3.0": - version: 3.3.0 - resolution: "path-to-regexp@npm:3.3.0" - checksum: bb249d08804f7961dd44fb175466c900b893c56e909db8e2a66ec12b9d9a964af269eb7a50892c933f52b47315953dfdb4279639fbce20977c3625a9ef3055fe +"postcss-normalize-url@npm:^5.1.0": + version: 5.1.0 + resolution: "postcss-normalize-url@npm:5.1.0" + dependencies: + normalize-url: ^6.0.1 + postcss-value-parser: ^4.2.0 + peerDependencies: + postcss: ^8.2.15 + checksum: 3bd4b3246d6600230bc827d1760b24cb3101827ec97570e3016cbe04dc0dd28f4dbe763245d1b9d476e182c843008fbea80823061f1d2219b96f0d5c724a24c0 + languageName: node + linkType: hard + +"postcss-normalize-whitespace@npm:^5.1.1": + version: 5.1.1 + resolution: "postcss-normalize-whitespace@npm:5.1.1" + dependencies: + postcss-value-parser: ^4.2.0 + peerDependencies: + postcss: ^8.2.15 + checksum: 12d8fb6d1c1cba208cc08c1830959b7d7ad447c3f5581873f7e185f99a9a4230c43d3af21ca12c818e4690a5085a95b01635b762ad4a7bef69d642609b4c0e19 languageName: node linkType: hard -"path-to-regexp@npm:^6.3.0": - version: 6.3.0 - resolution: "path-to-regexp@npm:6.3.0" - checksum: eca78602e6434a1b6799d511d375ec044e8d7e28f5a48aa5c28d57d8152fb52f3fc62fb1cfc5dfa2198e1f041c2a82ed14043d75740a2fe60e91b5089a153250 +"postcss-ordered-values@npm:^5.1.3": + version: 5.1.3 + resolution: "postcss-ordered-values@npm:5.1.3" + dependencies: + cssnano-utils: ^3.1.0 + postcss-value-parser: ^4.2.0 + peerDependencies: + postcss: ^8.2.15 + checksum: 6f3ca85b6ceffc68aadaf319d9ee4c5ac16d93195bf8cba2d1559b631555ad61941461cda6d3909faab86e52389846b2b36345cff8f0c3f4eb345b1b8efadcf9 languageName: node linkType: hard -"path-to-regexp@npm:^8.0.0": - version: 8.2.0 - resolution: "path-to-regexp@npm:8.2.0" - checksum: 56e13e45962e776e9e7cd72e87a441cfe41f33fd539d097237ceb16adc922281136ca12f5a742962e33d8dda9569f630ba594de56d8b7b6e49adf31803c5e771 +"postcss-reduce-initial@npm:^5.1.2": + version: 5.1.2 + resolution: "postcss-reduce-initial@npm:5.1.2" + dependencies: + browserslist: ^4.21.4 + caniuse-api: ^3.0.0 + peerDependencies: + postcss: ^8.2.15 + checksum: 55db697f85231a81f1969d54c894e4773912d9ddb914f9b03d2e73abc4030f2e3bef4d7465756d0c1acfcc2c2d69974bfb50a972ab27546a7d68b5a4fc90282b languageName: node linkType: hard -"path-type@npm:^4.0.0": - version: 4.0.0 - resolution: "path-type@npm:4.0.0" - checksum: 5b1e2daa247062061325b8fdbfd1fb56dde0a448fb1455453276ea18c60685bdad23a445dc148cf87bc216be1573357509b7d4060494a6fd768c7efad833ee45 +"postcss-reduce-transforms@npm:^5.1.0": + version: 5.1.0 + resolution: "postcss-reduce-transforms@npm:5.1.0" + dependencies: + postcss-value-parser: ^4.2.0 + peerDependencies: + postcss: ^8.2.15 + checksum: 0c6af2cba20e3ff63eb9ad045e634ddfb9c3e5c0e614c020db2a02f3aa20632318c4ede9e0c995f9225d9a101e673de91c0a6e10bb2fa5da6d6c75d15a55882f languageName: node linkType: hard -"pause@npm:0.0.1": - version: 0.0.1 - resolution: "pause@npm:0.0.1" - checksum: e96ee581b68085e6f2ba5adbcb4d4a41fe88e5b514061e76df2fe1905f0f65f4fe5a843b538e9551122c6b9184ff4be266c2ee0ea4614702f9a3d04466d9f462 +"postcss-selector-parser@npm:^6.0.2, postcss-selector-parser@npm:^6.0.4, postcss-selector-parser@npm:^6.0.5, postcss-selector-parser@npm:^6.0.9": + version: 6.1.2 + resolution: "postcss-selector-parser@npm:6.1.2" + dependencies: + cssesc: ^3.0.0 + util-deprecate: ^1.0.2 + checksum: ce9440fc42a5419d103f4c7c1847cb75488f3ac9cbe81093b408ee9701193a509f664b4d10a2b4d82c694ee7495e022f8f482d254f92b7ffd9ed9dea696c6f84 languageName: node linkType: hard -"pbkdf2@npm:^3.1.2": - version: 3.1.2 - resolution: "pbkdf2@npm:3.1.2" +"postcss-svgo@npm:^5.1.0": + version: 5.1.0 + resolution: "postcss-svgo@npm:5.1.0" dependencies: - create-hash: ^1.1.2 - create-hmac: ^1.1.4 - ripemd160: ^2.0.1 - safe-buffer: ^5.0.1 - sha.js: ^2.4.8 - checksum: 2c950a100b1da72123449208e231afc188d980177d021d7121e96a2de7f2abbc96ead2b87d03d8fe5c318face097f203270d7e27908af9f471c165a4e8e69c92 + postcss-value-parser: ^4.2.0 + svgo: ^2.7.0 + peerDependencies: + postcss: ^8.2.15 + checksum: d86eb5213d9f700cf5efe3073799b485fb7cacae0c731db3d7749c9c2b1c9bc85e95e0baeca439d699ff32ea24815fc916c4071b08f67ed8219df229ce1129bd languageName: node linkType: hard -"pct-encode@npm:~1.0.0": - version: 1.0.3 - resolution: "pct-encode@npm:1.0.3" - checksum: 04344233107a40590dd2d6fff3463040288d68ec66b6026cbb90a6ab1b29afdb5f196ff35b6ab5f86d4799a0dfea6117ab19fe836e0d5ffb49695c6ba60d05d8 +"postcss-unique-selectors@npm:^5.1.1": + version: 5.1.1 + resolution: "postcss-unique-selectors@npm:5.1.1" + dependencies: + postcss-selector-parser: ^6.0.5 + peerDependencies: + postcss: ^8.2.15 + checksum: 637e7b786e8558265775c30400c54b6b3b24d4748923f4a39f16a65fd0e394f564ccc9f0a1d3c0e770618a7637a7502ea1d0d79f731d429cb202255253c23278 languageName: node linkType: hard -"pend@npm:~1.2.0": - version: 1.2.0 - resolution: "pend@npm:1.2.0" - checksum: 6c72f5243303d9c60bd98e6446ba7d30ae29e3d56fdb6fae8767e8ba6386f33ee284c97efe3230a0d0217e2b1723b8ab490b1bbf34fcbb2180dbc8a9de47850d +"postcss-value-parser@npm:^4.1.0, postcss-value-parser@npm:^4.2.0": + version: 4.2.0 + resolution: "postcss-value-parser@npm:4.2.0" + checksum: 819ffab0c9d51cf0acbabf8996dffbfafbafa57afc0e4c98db88b67f2094cb44488758f06e5da95d7036f19556a4a732525e84289a425f4f6fd8e412a9d7442f languageName: node linkType: hard -"performance-now@npm:^2.1.0": - version: 2.1.0 - resolution: "performance-now@npm:2.1.0" - checksum: 534e641aa8f7cba160f0afec0599b6cecefbb516a2e837b512be0adbe6c1da5550e89c78059c7fabc5c9ffdf6627edabe23eb7c518c4500067a898fa65c2b550 +"postcss@npm:^8.1.0, postcss@npm:^8.2.13, postcss@npm:^8.4.33": + version: 8.4.47 + resolution: "postcss@npm:8.4.47" + dependencies: + nanoid: ^3.3.7 + picocolors: ^1.1.0 + source-map-js: ^1.2.1 + checksum: f78440a9d8f97431dd2ab1ab8e1de64f12f3eff38a3d8d4a33919b96c381046a314658d2de213a5fa5eb296b656de76a3ec269fdea27f16d5ab465b916a0f52c languageName: node linkType: hard -"pg-cloudflare@npm:^1.1.1": - version: 1.1.1 - resolution: "pg-cloudflare@npm:1.1.1" - checksum: 32aac06b5dc4588bbf78801b6267781bc7e13be672009df949d08e9627ba9fdc26924916665d4de99d47f9b0495301930547488dad889d826856976c7b3f3731 +"postgres-array@npm:~2.0.0": + version: 2.0.0 + resolution: "postgres-array@npm:2.0.0" + checksum: 0e1e659888147c5de579d229a2d95c0d83ebdbffc2b9396d890a123557708c3b758a0a97ed305ce7f58edfa961fa9f0bbcd1ea9f08b6e5df73322e683883c464 languageName: node linkType: hard -"pg-connection-string@npm:2.6.2": - version: 2.6.2 - resolution: "pg-connection-string@npm:2.6.2" - checksum: 22265882c3b6f2320785378d0760b051294a684989163d5a1cde4009e64e84448d7bf67d9a7b9e7f69440c3ee9e2212f9aa10dd17ad6773f6143c6020cebbcb5 +"postgres-bytea@npm:~1.0.0": + version: 1.0.0 + resolution: "postgres-bytea@npm:1.0.0" + checksum: d844ae4ca7a941b70e45cac1261a73ee8ed39d72d3d74ab1d645248185a1b7f0ac91a3c63d6159441020f4e1f7fe64689ac56536a307b31cef361e5187335090 languageName: node linkType: hard -"pg-connection-string@npm:^2.3.0, pg-connection-string@npm:^2.7.0": - version: 2.7.0 - resolution: "pg-connection-string@npm:2.7.0" - checksum: 68015a8874b7ca5dad456445e4114af3d2602bac2fdb8069315ecad0ff9660ec93259b9af7186606529ac4f6f72a06831e6f20897a689b16cc7fda7ca0e247fd +"postgres-date@npm:~1.0.4": + version: 1.0.7 + resolution: "postgres-date@npm:1.0.7" + checksum: 5745001d47e51cd767e46bcb1710649cd705d91a24d42fa661c454b6dcbb7353c066a5047983c90a626cd3bbfea9e626cc6fa84a35ec57e5bbb28b49f78e13ed languageName: node linkType: hard -"pg-format@npm:^1.0.4": - version: 1.0.4 - resolution: "pg-format@npm:1.0.4" - checksum: 159b43ad57d2f963f1072def86080dd2a6dd42c1a86046e388d47b491e00afe795139520eb01c8dffc43ac0243c77b3c4c5882d0ec5f488bb3281f17458b1b3d +"postgres-interval@npm:^1.1.0": + version: 1.2.0 + resolution: "postgres-interval@npm:1.2.0" + dependencies: + xtend: ^4.0.0 + checksum: 746b71f93805ae33b03528e429dc624706d1f9b20ee81bf743263efb6a0cd79ae02a642a8a480dbc0f09547b4315ab7df6ce5ec0be77ed700bac42730f5c76b2 languageName: node linkType: hard -"pg-int8@npm:1.0.1": - version: 1.0.1 - resolution: "pg-int8@npm:1.0.1" - checksum: a1e3a05a69005ddb73e5f324b6b4e689868a447c5fa280b44cd4d04e6916a344ac289e0b8d2695d66e8e89a7fba023affb9e0e94778770ada5df43f003d664c9 +"prebuild-install@npm:^7.1.1, prebuild-install@npm:^7.1.2": + version: 7.1.2 + resolution: "prebuild-install@npm:7.1.2" + dependencies: + detect-libc: ^2.0.0 + expand-template: ^2.0.3 + github-from-package: 0.0.0 + minimist: ^1.2.3 + mkdirp-classic: ^0.5.3 + napi-build-utils: ^1.0.1 + node-abi: ^3.3.0 + pump: ^3.0.0 + rc: ^1.2.7 + simple-get: ^4.0.0 + tar-fs: ^2.0.0 + tunnel-agent: ^0.6.0 + bin: + prebuild-install: bin.js + checksum: 543dadf8c60e004ae9529e6013ca0cbeac8ef38b5f5ba5518cb0b622fe7f8758b34e4b5cb1a791db3cdc9d2281766302df6088bd1a225f206925d6fee17d6c5c languageName: node linkType: hard -"pg-pool@npm:^3.7.0": - version: 3.7.0 - resolution: "pg-pool@npm:3.7.0" - peerDependencies: - pg: ">=8.0" - checksum: 66fc1a5ad0e17b72671b9a2cd4c7a856fb08d3cb82da7af0b322590ada23127ac591111e855740405fde4f06c9de888abe9f3aa685ed6038c3232578e1fce8cf +"prelude-ls@npm:^1.2.1": + version: 1.2.1 + resolution: "prelude-ls@npm:1.2.1" + checksum: cd192ec0d0a8e4c6da3bb80e4f62afe336df3f76271ac6deb0e6a36187133b6073a19e9727a1ff108cd8b9982e4768850d413baa71214dd80c7979617dca827a languageName: node linkType: hard -"pg-protocol@npm:^1.7.0": - version: 1.7.0 - resolution: "pg-protocol@npm:1.7.0" - checksum: 2dba740f6fc4b7f9761682c4c42d183b444292cdc7638b373f5247ec995c8199c369953343479281da3c41611fe34130a80c8668348d49a399c164f802f76be2 +"prelude-ls@npm:~1.1.2": + version: 1.1.2 + resolution: "prelude-ls@npm:1.1.2" + checksum: c4867c87488e4a0c233e158e4d0d5565b609b105d75e4c05dc760840475f06b731332eb93cc8c9cecb840aa8ec323ca3c9a56ad7820ad2e63f0261dadcb154e4 languageName: node linkType: hard -"pg-types@npm:^2.1.0": - version: 2.2.0 - resolution: "pg-types@npm:2.2.0" - dependencies: - pg-int8: 1.0.1 - postgres-array: ~2.0.0 - postgres-bytea: ~1.0.0 - postgres-date: ~1.0.4 - postgres-interval: ^1.1.0 - checksum: bf4ec3f594743442857fb3a8dfe5d2478a04c98f96a0a47365014557cbc0b4b0cee01462c79adca863b93befbf88f876299b75b72c665b5fb84a2c94fbd10316 +"prettier@npm:3.3.3": + version: 3.3.3 + resolution: "prettier@npm:3.3.3" + bin: + prettier: bin/prettier.cjs + checksum: bc8604354805acfdde6106852d14b045bb20827ad76a5ffc2455b71a8257f94de93f17f14e463fe844808d2ccc87248364a5691488a3304f1031326e62d9276e languageName: node linkType: hard -"pg@npm:^8.11.3": - version: 8.13.1 - resolution: "pg@npm:8.13.1" - dependencies: - pg-cloudflare: ^1.1.1 - pg-connection-string: ^2.7.0 - pg-pool: ^3.7.0 - pg-protocol: ^1.7.0 - pg-types: ^2.1.0 - pgpass: 1.x - peerDependencies: - pg-native: ">=3.0.1" - dependenciesMeta: - pg-cloudflare: - optional: true - peerDependenciesMeta: - pg-native: - optional: true - checksum: 22cb97fcbee3348d5ee0b195071cc572f9c88eb40cbb61fe6726af68d55d5962121b2d630509bb907703e1c8bdc33de775462029c5399e2a841fa9e6c9da0242 +"prettier@npm:^2.3.2, prettier@npm:^2.7.1": + version: 2.8.8 + resolution: "prettier@npm:2.8.8" + bin: + prettier: bin-prettier.js + checksum: b49e409431bf129dd89238d64299ba80717b57ff5a6d1c1a8b1a28b590d998a34e083fa13573bc732bb8d2305becb4c9a4407f8486c81fa7d55100eb08263cf8 languageName: node linkType: hard -"pgpass@npm:1.x": - version: 1.0.5 - resolution: "pgpass@npm:1.0.5" +"pretty-error@npm:^4.0.0": + version: 4.0.0 + resolution: "pretty-error@npm:4.0.0" dependencies: - split2: ^4.1.0 - checksum: 947ac096c031eebdf08d989de2e9f6f156b8133d6858c7c2c06c041e1e71dda6f5f3bad3c0ec1e96a09497bbc6ef89e762eefe703b5ef9cb2804392ec52ec400 + lodash: ^4.17.20 + renderkid: ^3.0.0 + checksum: a5b9137365690104ded6947dca2e33360bf55e62a4acd91b1b0d7baa3970e43754c628cc9e16eafbdd4e8f8bcb260a5865475d4fc17c3106ff2d61db4e72cdf3 languageName: node linkType: hard -"picocolors@npm:^1.0.0, picocolors@npm:^1.1.0": - version: 1.1.1 - resolution: "picocolors@npm:1.1.1" - checksum: e1cf46bf84886c79055fdfa9dcb3e4711ad259949e3565154b004b260cd356c5d54b31a1437ce9782624bf766272fe6b0154f5f0c744fb7af5d454d2b60db045 +"pretty-format@npm:^27.0.2": + version: 27.5.1 + resolution: "pretty-format@npm:27.5.1" + dependencies: + ansi-regex: ^5.0.1 + ansi-styles: ^5.0.0 + react-is: ^17.0.1 + checksum: cf610cffcb793885d16f184a62162f2dd0df31642d9a18edf4ca298e909a8fe80bdbf556d5c9573992c102ce8bf948691da91bf9739bee0ffb6e79c8a8a6e088 languageName: node linkType: hard -"picomatch@npm:^2.0.4, picomatch@npm:^2.2.1, picomatch@npm:^2.2.2, picomatch@npm:^2.2.3, picomatch@npm:^2.3.1": - version: 2.3.1 - resolution: "picomatch@npm:2.3.1" - checksum: 050c865ce81119c4822c45d3c84f1ced46f93a0126febae20737bd05ca20589c564d6e9226977df859ed5e03dc73f02584a2b0faad36e896936238238b0446cf +"pretty-format@npm:^29.0.0, pretty-format@npm:^29.7.0": + version: 29.7.0 + resolution: "pretty-format@npm:29.7.0" + dependencies: + "@jest/schemas": ^29.6.3 + ansi-styles: ^5.0.0 + react-is: ^18.0.0 + checksum: 032c1602383e71e9c0c02a01bbd25d6759d60e9c7cf21937dde8357aa753da348fcec5def5d1002c9678a8524d5fe099ad98861286550ef44de8808cc61e43b6 languageName: node linkType: hard -"picomatch@npm:^4.0.1, picomatch@npm:^4.0.2": - version: 4.0.2 - resolution: "picomatch@npm:4.0.2" - checksum: a7a5188c954f82c6585720e9143297ccd0e35ad8072231608086ca950bee672d51b0ef676254af0788205e59bd4e4deb4e7708769226bed725bf13370a7d1464 +"pretty-ms@npm:^9.0.0": + version: 9.1.0 + resolution: "pretty-ms@npm:9.1.0" + dependencies: + parse-ms: ^4.0.0 + checksum: 0f66507467f2005040cccdcb36f35b82674d7809f41c4432009235ed6c920787afa17f621c25b7ccb8ccd80b0840c7b71f7f4a3addb8f0eeef3a033ff1e5cf71 languageName: node linkType: hard -"pify@npm:^4.0.1": - version: 4.0.1 - resolution: "pify@npm:4.0.1" - checksum: 9c4e34278cb09987685fa5ef81499c82546c033713518f6441778fbec623fc708777fe8ac633097c72d88470d5963094076c7305cafc7ad340aae27cfacd856b +"prismjs@npm:^1.27.0": + version: 1.29.0 + resolution: "prismjs@npm:1.29.0" + checksum: 007a8869d4456ff8049dc59404e32d5666a07d99c3b0e30a18bd3b7676dfa07d1daae9d0f407f20983865fd8da56de91d09cb08e6aa61f5bc420a27c0beeaf93 languageName: node linkType: hard -"pify@npm:^5.0.0": - version: 5.0.0 - resolution: "pify@npm:5.0.0" - checksum: 443e3e198ad6bfa8c0c533764cf75c9d5bc976387a163792fb553ffe6ce923887cf14eebf5aea9b7caa8eab930da8c33612990ae85bd8c2bc18bedb9eae94ecb +"prismjs@npm:~1.27.0": + version: 1.27.0 + resolution: "prismjs@npm:1.27.0" + checksum: 85c7f4a3e999073502cc9e1882af01e3709706369ec254b60bff1149eda701f40d02512acab956012dc7e61cfd61743a3a34c1bd0737e8dbacd79141e5698bbc languageName: node linkType: hard -"pirates@npm:^4.0.1, pirates@npm:^4.0.4, pirates@npm:^4.0.6": - version: 4.0.6 - resolution: "pirates@npm:4.0.6" - checksum: 46a65fefaf19c6f57460388a5af9ab81e3d7fd0e7bc44ca59d753cb5c4d0df97c6c6e583674869762101836d68675f027d60f841c105d72734df9dfca97cbcc6 +"proc-log@npm:^4.1.0, proc-log@npm:^4.2.0": + version: 4.2.0 + resolution: "proc-log@npm:4.2.0" + checksum: 98f6cd012d54b5334144c5255ecb941ee171744f45fca8b43b58ae5a0c1af07352475f481cadd9848e7f0250376ee584f6aa0951a856ff8f021bdfbff4eb33fc languageName: node linkType: hard -"pkg-dir@npm:^4.2.0": - version: 4.2.0 - resolution: "pkg-dir@npm:4.2.0" - dependencies: - find-up: ^4.0.0 - checksum: 9863e3f35132bf99ae1636d31ff1e1e3501251d480336edb1c211133c8d58906bed80f154a1d723652df1fda91e01c7442c2eeaf9dc83157c7ae89087e43c8d6 +"process-nextick-args@npm:~2.0.0": + version: 2.0.1 + resolution: "process-nextick-args@npm:2.0.1" + checksum: 1d38588e520dab7cea67cbbe2efdd86a10cc7a074c09657635e34f035277b59fbb57d09d8638346bf7090f8e8ebc070c96fa5fd183b777fff4f5edff5e9466cf languageName: node linkType: hard -"pkg-up@npm:^3.1.0": - version: 3.1.0 - resolution: "pkg-up@npm:3.1.0" +"process@npm:^0.11.10": + version: 0.11.10 + resolution: "process@npm:0.11.10" + checksum: bfcce49814f7d172a6e6a14d5fa3ac92cc3d0c3b9feb1279774708a719e19acd673995226351a082a9ae99978254e320ccda4240ddc474ba31a76c79491ca7c3 + languageName: node + linkType: hard + +"prom-client@npm:^15.0.0": + version: 15.1.3 + resolution: "prom-client@npm:15.1.3" dependencies: - find-up: ^3.0.0 - checksum: 5bac346b7c7c903613c057ae3ab722f320716199d753f4a7d053d38f2b5955460f3e6ab73b4762c62fd3e947f58e04f1343e92089e7bb6091c90877406fcd8c8 + "@opentelemetry/api": ^1.4.0 + tdigest: ^0.1.1 + checksum: 9a57f3c16f39aa9a03da021883a4231c0bb56fc9d02f6ef9c28f913379f275640a5a33b98d9946ebf53c71011a29b580e9d2d6e3806cb1c229a3f59c65993968 languageName: node linkType: hard -"pony-cause@npm:^1.0.0": - version: 1.1.1 - resolution: "pony-cause@npm:1.1.1" - checksum: 5ff8878b808be48db801d52246a99d7e4789e52d20575ba504ede30c818fd85d38a033915e02c15fa9b6dce72448836dc1a47094acf8f1c21c4f04a4603b0cfb +"promise-inflight@npm:^1.0.1": + version: 1.0.1 + resolution: "promise-inflight@npm:1.0.1" + checksum: 22749483091d2c594261517f4f80e05226d4d5ecc1fc917e1886929da56e22b5718b7f2a75f3807e7a7d471bc3be2907fe92e6e8f373ddf5c64bae35b5af3981 languageName: node linkType: hard -"portfinder@npm:^1.0.32": - version: 1.0.32 - resolution: "portfinder@npm:1.0.32" +"promise-retry@npm:^2.0.1": + version: 2.0.1 + resolution: "promise-retry@npm:2.0.1" dependencies: - async: ^2.6.4 - debug: ^3.2.7 - mkdirp: ^0.5.6 - checksum: 116b4aed1b9e16f6d5503823d966d9ffd41b1c2339e27f54c06cd2f3015a9d8ef53e2a53b57bc0a25af0885977b692007353aa28f9a0a98a44335cb50487240d + err-code: ^2.0.2 + retry: ^0.12.0 + checksum: f96a3f6d90b92b568a26f71e966cbbc0f63ab85ea6ff6c81284dc869b41510e6cdef99b6b65f9030f0db422bf7c96652a3fff9f2e8fb4a0f069d8f4430359429 languageName: node linkType: hard -"possible-typed-array-names@npm:^1.0.0": - version: 1.0.0 - resolution: "possible-typed-array-names@npm:1.0.0" - checksum: b32d403ece71e042385cc7856385cecf1cd8e144fa74d2f1de40d1e16035dba097bc189715925e79b67bdd1472796ff168d3a90d296356c9c94d272d5b95f3ae +"promise.series@npm:^0.2.0": + version: 0.2.0 + resolution: "promise.series@npm:0.2.0" + checksum: 26b5956b5463d032b43d39fd8d34fdacf453ed3352462eed9626494a11d44beb385f86d6544dd12e51482a6ca8f303e0dfdee8653db4703213ba27dd2234754a languageName: node linkType: hard -"postcss-calc@npm:^8.2.3": - version: 8.2.4 - resolution: "postcss-calc@npm:8.2.4" +"prompts@npm:^2.0.1, prompts@npm:^2.4.2": + version: 2.4.2 + resolution: "prompts@npm:2.4.2" dependencies: - postcss-selector-parser: ^6.0.9 - postcss-value-parser: ^4.2.0 - peerDependencies: - postcss: ^8.2.2 - checksum: 314b4cebb0c4ed0cf8356b4bce71eca78f5a7842e6a3942a3bba49db168d5296b2bd93c3f735ae1c616f2651d94719ade33becc03c73d2d79c7394fb7f73eabb + kleur: ^3.0.3 + sisteransi: ^1.0.5 + checksum: d8fd1fe63820be2412c13bfc5d0a01909acc1f0367e32396962e737cb2fc52d004f3302475d5ce7d18a1e8a79985f93ff04ee03007d091029c3f9104bffc007d languageName: node linkType: hard -"postcss-colormin@npm:^5.3.1": - version: 5.3.1 - resolution: "postcss-colormin@npm:5.3.1" +"prop-types@npm:15.x, prop-types@npm:^15.0.0, prop-types@npm:^15.5.10, prop-types@npm:^15.6.2, prop-types@npm:^15.7.2, prop-types@npm:^15.8.1": + version: 15.8.1 + resolution: "prop-types@npm:15.8.1" dependencies: - browserslist: ^4.21.4 - caniuse-api: ^3.0.0 - colord: ^2.9.1 - postcss-value-parser: ^4.2.0 - peerDependencies: - postcss: ^8.2.15 - checksum: e5778baab30877cd1f51e7dc9d2242a162aeca6360a52956acd7f668c5bc235c2ccb7e4df0370a804d65ebe00c5642366f061db53aa823f9ed99972cebd16024 + loose-envify: ^1.4.0 + object-assign: ^4.1.1 + react-is: ^16.13.1 + checksum: c056d3f1c057cb7ff8344c645450e14f088a915d078dcda795041765047fa080d38e5d626560ccaac94a4e16e3aa15f3557c1a9a8d1174530955e992c675e459 languageName: node linkType: hard -"postcss-convert-values@npm:^5.1.3": - version: 5.1.3 - resolution: "postcss-convert-values@npm:5.1.3" +"proper-lockfile@npm:^4.1.2": + version: 4.1.2 + resolution: "proper-lockfile@npm:4.1.2" dependencies: - browserslist: ^4.21.4 - postcss-value-parser: ^4.2.0 - peerDependencies: - postcss: ^8.2.15 - checksum: df48cdaffabf9737f9cfdc58a3dc2841cf282506a7a944f6c70236cff295d3a69f63de6e0935eeb8a9d3f504324e5b4e240abc29e21df9e35a02585d3060aeb5 + graceful-fs: ^4.2.4 + retry: ^0.12.0 + signal-exit: ^3.0.2 + checksum: 00078ee6a61c216a56a6140c7d2a98c6c733b3678503002dc073ab8beca5d50ca271de4c85fca13b9b8ee2ff546c36674d1850509b84a04a5d0363bcb8638939 languageName: node linkType: hard -"postcss-discard-comments@npm:^5.1.2": - version: 5.1.2 - resolution: "postcss-discard-comments@npm:5.1.2" - peerDependencies: - postcss: ^8.2.15 - checksum: abfd064ebc27aeaf5037643dd51ffaff74d1fa4db56b0523d073ace4248cbb64ffd9787bd6924b0983a9d0bd0e9bf9f10d73b120e50391dc236e0d26c812fa2a +"properties-reader@npm:^2.3.0": + version: 2.3.0 + resolution: "properties-reader@npm:2.3.0" + dependencies: + mkdirp: ^1.0.4 + checksum: cbf59e862dc507f8ce1f8d7641ed9737119f16a1d4dad8e79f17b303aaca1c6af7d36ddfef0f649cab4d200ba4334ac159af0b238f6978a085f5b1b5126b6cc3 languageName: node linkType: hard -"postcss-discard-duplicates@npm:^5.1.0": - version: 5.1.0 - resolution: "postcss-discard-duplicates@npm:5.1.0" - peerDependencies: - postcss: ^8.2.15 - checksum: 88d6964201b1f4ed6bf7a32cefe68e86258bb6e42316ca01d9b32bdb18e7887d02594f89f4a2711d01b51ea6e3fcca8c54be18a59770fe5f4521c61d3eb6ca35 +"property-expr@npm:^2.0.4, property-expr@npm:^2.0.5": + version: 2.0.6 + resolution: "property-expr@npm:2.0.6" + checksum: 89977f4bb230736c1876f460dd7ca9328034502fd92e738deb40516d16564b850c0bbc4e052c3df88b5b8cd58e51c93b46a94bea049a3f23f4a022c038864cab languageName: node linkType: hard -"postcss-discard-empty@npm:^5.1.1": - version: 5.1.1 - resolution: "postcss-discard-empty@npm:5.1.1" - peerDependencies: - postcss: ^8.2.15 - checksum: 970adb12fae5c214c0768236ad9a821552626e77dedbf24a8213d19cc2c4a531a757cd3b8cdd3fc22fb1742471b8692a1db5efe436a71236dec12b1318ee8ff4 +"property-information@npm:^5.0.0": + version: 5.6.0 + resolution: "property-information@npm:5.6.0" + dependencies: + xtend: ^4.0.0 + checksum: fcf87c6542e59a8bbe31ca0b3255a4a63ac1059b01b04469680288998bcfa97f341ca989566adbb63975f4d85339030b82320c324a511532d390910d1c583893 languageName: node linkType: hard -"postcss-discard-overridden@npm:^5.1.0": - version: 5.1.0 - resolution: "postcss-discard-overridden@npm:5.1.0" - peerDependencies: - postcss: ^8.2.15 - checksum: d64d4a545aa2c81b22542895cfcddc787d24119f294d35d29b0599a1c818b3cc51f4ee80b80f5a0a09db282453dd5ac49f104c2117cc09112d0ac9b40b499a41 +"property-information@npm:^6.0.0": + version: 6.5.0 + resolution: "property-information@npm:6.5.0" + checksum: 6e55664e2f64083b715011e5bafaa1e694faf36986c235b0907e95d09259cc37c38382e3cc94a4c3f56366e05336443db12c8a0f0968a8c0a1b1416eebfc8f53 languageName: node linkType: hard -"postcss-load-config@npm:^3.0.0": - version: 3.1.4 - resolution: "postcss-load-config@npm:3.1.4" +"proto3-json-serializer@npm:^2.0.2": + version: 2.0.2 + resolution: "proto3-json-serializer@npm:2.0.2" dependencies: - lilconfig: ^2.0.5 - yaml: ^1.10.2 - peerDependencies: - postcss: ">=8.0.9" - ts-node: ">=9.0.0" - peerDependenciesMeta: - postcss: - optional: true - ts-node: - optional: true - checksum: 1c589504c2d90b1568aecae8238ab993c17dba2c44f848a8f13619ba556d26a1c09644d5e6361b5784e721e94af37b604992f9f3dc0483e687a0cc1cc5029a34 + protobufjs: ^7.2.5 + checksum: 21b8aa65be6dac2bb24920e5bdabef48b249bdf65b1498ae7e69ac4e70722275b083cd60a21d2b4be3ead9d768de2f6f5fb6b188bd177d51c824a539b5ba55cc languageName: node linkType: hard -"postcss-merge-longhand@npm:^5.1.7": - version: 5.1.7 - resolution: "postcss-merge-longhand@npm:5.1.7" +"protobufjs@npm:^7.2.5, protobufjs@npm:^7.2.6, protobufjs@npm:^7.3.2, protobufjs@npm:^7.4.0": + version: 7.4.0 + resolution: "protobufjs@npm:7.4.0" dependencies: - postcss-value-parser: ^4.2.0 - stylehacks: ^5.1.1 - peerDependencies: - postcss: ^8.2.15 - checksum: 81c3fc809f001b9b71a940148e242bdd6e2d77713d1bfffa15eb25c1f06f6648d5e57cb21645746d020a2a55ff31e1740d2b27900442913a9d53d8a01fb37e1b + "@protobufjs/aspromise": ^1.1.2 + "@protobufjs/base64": ^1.1.2 + "@protobufjs/codegen": ^2.0.4 + "@protobufjs/eventemitter": ^1.1.0 + "@protobufjs/fetch": ^1.1.0 + "@protobufjs/float": ^1.0.2 + "@protobufjs/inquire": ^1.1.0 + "@protobufjs/path": ^1.1.2 + "@protobufjs/pool": ^1.1.0 + "@protobufjs/utf8": ^1.1.0 + "@types/node": ">=13.7.0" + long: ^5.0.0 + checksum: ba0e6b60541bbf818bb148e90f5eb68bd99004e29a6034ad9895a381cbd352be8dce5376e47ae21b2e05559f2505b4a5f4a3c8fa62402822c6ab4dcdfb89ffb3 languageName: node linkType: hard -"postcss-merge-rules@npm:^5.1.4": - version: 5.1.4 - resolution: "postcss-merge-rules@npm:5.1.4" - dependencies: - browserslist: ^4.21.4 - caniuse-api: ^3.0.0 - cssnano-utils: ^3.1.0 - postcss-selector-parser: ^6.0.5 - peerDependencies: - postcss: ^8.2.15 - checksum: 8ab6a569babe6cb412d6612adee74f053cea7edb91fa013398515ab36754b1fec830d68782ed8cdfb44cffdc6b78c79eab157bff650f428aa4460d3f3857447e +"protocols@npm:^2.0.0, protocols@npm:^2.0.1": + version: 2.0.1 + resolution: "protocols@npm:2.0.1" + checksum: 4a9bef6aa0449a0245ded319ac3cbfd032c3e76ebb562777037a3a832c99253d0e8bc2847f7be350236df620a11f7d4fe683ea7f59a2cc14c69f746b6259eda4 languageName: node linkType: hard -"postcss-minify-font-values@npm:^5.1.0": - version: 5.1.0 - resolution: "postcss-minify-font-values@npm:5.1.0" +"proxy-addr@npm:~2.0.7": + version: 2.0.7 + resolution: "proxy-addr@npm:2.0.7" dependencies: - postcss-value-parser: ^4.2.0 - peerDependencies: - postcss: ^8.2.15 - checksum: 35e858fa41efa05acdeb28f1c76579c409fdc7eabb1744c3bd76e895bb9fea341a016746362a67609688ab2471f587202b9a3e14ea28ad677754d663a2777ece + forwarded: 0.2.0 + ipaddr.js: 1.9.1 + checksum: 29c6990ce9364648255454842f06f8c46fcd124d3e6d7c5066df44662de63cdc0bad032e9bf5a3d653ff72141cc7b6019873d685708ac8210c30458ad99f2b74 languageName: node linkType: hard -"postcss-minify-gradients@npm:^5.1.1": - version: 5.1.1 - resolution: "postcss-minify-gradients@npm:5.1.1" +"proxy-agent@npm:6.4.0": + version: 6.4.0 + resolution: "proxy-agent@npm:6.4.0" dependencies: - colord: ^2.9.1 - cssnano-utils: ^3.1.0 - postcss-value-parser: ^4.2.0 - peerDependencies: - postcss: ^8.2.15 - checksum: 27354072a07c5e6dab36731103b94ca2354d4ed3c5bc6aacfdf2ede5a55fa324679d8fee5450800bc50888dbb5e9ed67569c0012040c2be128143d0cebb36d67 + agent-base: ^7.0.2 + debug: ^4.3.4 + http-proxy-agent: ^7.0.1 + https-proxy-agent: ^7.0.3 + lru-cache: ^7.14.1 + pac-proxy-agent: ^7.0.1 + proxy-from-env: ^1.1.0 + socks-proxy-agent: ^8.0.2 + checksum: 4d3794ad5e07486298902f0a7f250d0f869fa0e92d790767ca3f793a81374ce0ab6c605f8ab8e791c4d754da96656b48d1c24cb7094bfd310a15867e4a0841d7 languageName: node linkType: hard -"postcss-minify-params@npm:^5.1.4": - version: 5.1.4 - resolution: "postcss-minify-params@npm:5.1.4" - dependencies: - browserslist: ^4.21.4 - cssnano-utils: ^3.1.0 - postcss-value-parser: ^4.2.0 - peerDependencies: - postcss: ^8.2.15 - checksum: bd63e2cc89edcf357bb5c2a16035f6d02ef676b8cede4213b2bddd42626b3d428403849188f95576fc9f03e43ebd73a29bf61d33a581be9a510b13b7f7f100d5 +"proxy-from-env@npm:^1.1.0": + version: 1.1.0 + resolution: "proxy-from-env@npm:1.1.0" + checksum: ed7fcc2ba0a33404958e34d95d18638249a68c430e30fcb6c478497d72739ba64ce9810a24f53a7d921d0c065e5b78e3822759800698167256b04659366ca4d4 languageName: node linkType: hard -"postcss-minify-selectors@npm:^5.2.1": - version: 5.2.1 - resolution: "postcss-minify-selectors@npm:5.2.1" +"ps-tree@npm:1.2.0": + version: 1.2.0 + resolution: "ps-tree@npm:1.2.0" dependencies: - postcss-selector-parser: ^6.0.5 - peerDependencies: - postcss: ^8.2.15 - checksum: 6fdbc84f99a60d56b43df8930707da397775e4c36062a106aea2fd2ac81b5e24e584a1892f4baa4469fa495cb87d1422560eaa8f6c9d500f9f0b691a5f95bab5 + event-stream: =3.3.4 + bin: + ps-tree: ./bin/ps-tree.js + checksum: e635dd00f53d30d31696cf5f95b3a8dbdf9b1aeb36d4391578ce8e8cd22949b7c5536c73b0dc18c78615ea3ddd4be96101166be59ca2e3e3cb1e2f79ba3c7f98 languageName: node linkType: hard -"postcss-modules-extract-imports@npm:^3.0.0, postcss-modules-extract-imports@npm:^3.1.0": - version: 3.1.0 - resolution: "postcss-modules-extract-imports@npm:3.1.0" - peerDependencies: - postcss: ^8.1.0 - checksum: b9192e0f4fb3d19431558be6f8af7ca45fc92baaad9b2778d1732a5880cd25c3df2074ce5484ae491e224f0d21345ffc2d419bd51c25b019af76d7a7af88c17f +"pseudomap@npm:^1.0.2": + version: 1.0.2 + resolution: "pseudomap@npm:1.0.2" + checksum: 856c0aae0ff2ad60881168334448e898ad7a0e45fe7386d114b150084254c01e200c957cf378378025df4e052c7890c5bd933939b0e0d2ecfcc1dc2f0b2991f5 + languageName: node + linkType: hard + +"psl@npm:^1.1.28, psl@npm:^1.1.33": + version: 1.9.0 + resolution: "psl@npm:1.9.0" + checksum: 20c4277f640c93d393130673f392618e9a8044c6c7bf61c53917a0fddb4952790f5f362c6c730a9c32b124813e173733f9895add8d26f566ed0ea0654b2e711d languageName: node linkType: hard -"postcss-modules-local-by-default@npm:^4.0.0, postcss-modules-local-by-default@npm:^4.0.5": - version: 4.0.5 - resolution: "postcss-modules-local-by-default@npm:4.0.5" +"public-encrypt@npm:^4.0.3": + version: 4.0.3 + resolution: "public-encrypt@npm:4.0.3" dependencies: - icss-utils: ^5.0.0 - postcss-selector-parser: ^6.0.2 - postcss-value-parser: ^4.1.0 - peerDependencies: - postcss: ^8.1.0 - checksum: ca9b01f4a0a3dfb33e016299e2dfb7e85c3123292f7aec2efc0c6771b9955648598bfb4c1561f7ee9732fb27fb073681233661b32eef98baab43743f96735452 + bn.js: ^4.1.0 + browserify-rsa: ^4.0.0 + create-hash: ^1.1.0 + parse-asn1: ^5.0.0 + randombytes: ^2.0.1 + safe-buffer: ^5.1.2 + checksum: 215d446e43cef021a20b67c1df455e5eea134af0b1f9b8a35f9e850abf32991b0c307327bc5b9bc07162c288d5cdb3d4a783ea6c6640979ed7b5017e3e0c9935 languageName: node linkType: hard -"postcss-modules-scope@npm:^3.0.0, postcss-modules-scope@npm:^3.2.0": - version: 3.2.0 - resolution: "postcss-modules-scope@npm:3.2.0" +"pump@npm:^3.0.0": + version: 3.0.2 + resolution: "pump@npm:3.0.2" dependencies: - postcss-selector-parser: ^6.0.4 - peerDependencies: - postcss: ^8.1.0 - checksum: 2ffe7e98c1fa993192a39c8dd8ade93fc4f59fbd1336ce34fcedaee0ee3bafb29e2e23fb49189256895b30e4f21af661c6a6a16ef7b17ae2c859301e4a4459ae + end-of-stream: ^1.1.0 + once: ^1.3.1 + checksum: e0c4216874b96bd25ddf31a0b61a5613e26cc7afa32379217cf39d3915b0509def3565f5f6968fafdad2894c8bbdbd67d340e84f3634b2a29b950cffb6442d9f languageName: node linkType: hard -"postcss-modules-values@npm:^4.0.0": - version: 4.0.0 - resolution: "postcss-modules-values@npm:4.0.0" - dependencies: - icss-utils: ^5.0.0 - peerDependencies: - postcss: ^8.1.0 - checksum: f7f2cdf14a575b60e919ad5ea52fed48da46fe80db2733318d71d523fc87db66c835814940d7d05b5746b0426e44661c707f09bdb83592c16aea06e859409db6 +"punycode.js@npm:^2.3.1": + version: 2.3.1 + resolution: "punycode.js@npm:2.3.1" + checksum: 13466d7ed5e8dacdab8c4cc03837e7dd14218a59a40eb14a837f1f53ca396e18ef2c4ee6d7766b8ed2fc391d6a3ac489eebf2de83b3596f5a54e86df4a251b72 languageName: node linkType: hard -"postcss-modules@npm:^4.0.0": - version: 4.3.1 - resolution: "postcss-modules@npm:4.3.1" - dependencies: - generic-names: ^4.0.0 - icss-replace-symbols: ^1.1.0 - lodash.camelcase: ^4.3.0 - postcss-modules-extract-imports: ^3.0.0 - postcss-modules-local-by-default: ^4.0.0 - postcss-modules-scope: ^3.0.0 - postcss-modules-values: ^4.0.0 - string-hash: ^1.1.1 - peerDependencies: - postcss: ^8.0.0 - checksum: fa592183bb3d96c4aaf535e3b9b3bcfc54274cbb5b337616543c24ec68cd56675e9fd8aabf994e627513af628d090e43d2f1f4928ff6cdd4b9d3b1ba3fce4d42 +"punycode@npm:^1.2.4, punycode@npm:^1.4.1": + version: 1.4.1 + resolution: "punycode@npm:1.4.1" + checksum: fa6e698cb53db45e4628559e557ddaf554103d2a96a1d62892c8f4032cd3bc8871796cae9eabc1bc700e2b6677611521ce5bb1d9a27700086039965d0cf34518 languageName: node linkType: hard -"postcss-normalize-charset@npm:^5.1.0": - version: 5.1.0 - resolution: "postcss-normalize-charset@npm:5.1.0" - peerDependencies: - postcss: ^8.2.15 - checksum: e79d92971fc05b8b3c9b72f3535a574e077d13c69bef68156a0965f397fdf157de670da72b797f57b0e3bac8f38155b5dd1735ecab143b9cc4032d72138193b4 +"punycode@npm:^2.1.0, punycode@npm:^2.1.1": + version: 2.3.1 + resolution: "punycode@npm:2.3.1" + checksum: bb0a0ceedca4c3c57a9b981b90601579058903c62be23c5e8e843d2c2d4148a3ecf029d5133486fb0e1822b098ba8bba09e89d6b21742d02fa26bda6441a6fb2 languageName: node linkType: hard -"postcss-normalize-display-values@npm:^5.1.0": - version: 5.1.0 - resolution: "postcss-normalize-display-values@npm:5.1.0" - dependencies: - postcss-value-parser: ^4.2.0 - peerDependencies: - postcss: ^8.2.15 - checksum: b6eb7b9b02c3bdd62bbc54e01e2b59733d73a1c156905d238e178762962efe0c6f5104544da39f32cade8a4fb40f10ff54b63a8ebfbdff51e8780afb9fbdcf86 +"pure-rand@npm:^6.0.0": + version: 6.1.0 + resolution: "pure-rand@npm:6.1.0" + checksum: 8d53bc02bed99eca0b65b505090152ee7e9bd67dd74f8ff32ba1c883b87234067c5bf68d2614759fb217d82594d7a92919e6df80f97885e7b12b42af4bd3316a languageName: node linkType: hard -"postcss-normalize-positions@npm:^5.1.1": - version: 5.1.1 - resolution: "postcss-normalize-positions@npm:5.1.1" +"qs@npm:6.13.0, qs@npm:^6.11.0, qs@npm:^6.12.3": + version: 6.13.0 + resolution: "qs@npm:6.13.0" dependencies: - postcss-value-parser: ^4.2.0 - peerDependencies: - postcss: ^8.2.15 - checksum: d9afc233729c496463c7b1cdd06732469f401deb387484c3a2422125b46ec10b4af794c101f8c023af56f01970b72b535e88373b9058ecccbbf88db81662b3c4 + side-channel: ^1.0.6 + checksum: e9404dc0fc2849245107108ce9ec2766cde3be1b271de0bf1021d049dc5b98d1a2901e67b431ac5509f865420a7ed80b7acb3980099fe1c118a1c5d2e1432ad8 languageName: node linkType: hard -"postcss-normalize-repeat-style@npm:^5.1.1": - version: 5.1.1 - resolution: "postcss-normalize-repeat-style@npm:5.1.1" +"qs@npm:^6.10.1, qs@npm:^6.10.3, qs@npm:^6.12.2, qs@npm:^6.9.4": + version: 6.13.1 + resolution: "qs@npm:6.13.1" dependencies: - postcss-value-parser: ^4.2.0 - peerDependencies: - postcss: ^8.2.15 - checksum: 2c6ad2b0ae10a1fda156b948c34f78c8f1e185513593de4d7e2480973586675520edfec427645fa168c337b0a6b3ceca26f92b96149741ca98a9806dad30d534 + side-channel: ^1.0.6 + checksum: 86c5059146955fab76624e95771031541328c171b1d63d48a7ac3b1fdffe262faf8bc5fcadc1684e6f3da3ec87a8dedc8c0009792aceb20c5e94dc34cf468bb9 languageName: node linkType: hard -"postcss-normalize-string@npm:^5.1.0": - version: 5.1.0 - resolution: "postcss-normalize-string@npm:5.1.0" - dependencies: - postcss-value-parser: ^4.2.0 - peerDependencies: - postcss: ^8.2.15 - checksum: 6e549c6e5b2831e34c7bdd46d8419e2278f6af1d5eef6d26884a37c162844e60339340c57e5e06058cdbe32f27fc6258eef233e811ed2f71168ef2229c236ada +"qs@npm:~6.5.2": + version: 6.5.3 + resolution: "qs@npm:6.5.3" + checksum: 6f20bf08cabd90c458e50855559539a28d00b2f2e7dddcb66082b16a43188418cb3cb77cbd09268bcef6022935650f0534357b8af9eeb29bf0f27ccb17655692 languageName: node linkType: hard -"postcss-normalize-timing-functions@npm:^5.1.0": - version: 5.1.0 - resolution: "postcss-normalize-timing-functions@npm:5.1.0" - dependencies: - postcss-value-parser: ^4.2.0 - peerDependencies: - postcss: ^8.2.15 - checksum: da550f50e90b0b23e17b67449a7d1efd1aa68288e66d4aa7614ca6f5cc012896be1972b7168eee673d27da36504faccf7b9f835c0f7e81243f966a42c8c030aa +"querystring-es3@npm:^0.2.0": + version: 0.2.1 + resolution: "querystring-es3@npm:0.2.1" + checksum: 691e8d6b8b157e7cd49ae8e83fcf86de39ab3ba948c25abaa94fba84c0986c641aa2f597770848c64abce290ed17a39c9df6df737dfa7e87c3b63acc7d225d61 languageName: node linkType: hard -"postcss-normalize-unicode@npm:^5.1.1": - version: 5.1.1 - resolution: "postcss-normalize-unicode@npm:5.1.1" - dependencies: - browserslist: ^4.21.4 - postcss-value-parser: ^4.2.0 - peerDependencies: - postcss: ^8.2.15 - checksum: 4c24d26cc9f4b19a9397db4e71dd600dab690f1de8e14a3809e2aa1452dbc3791c208c38a6316bbc142f29e934fdf02858e68c94038c06174d78a4937e0f273c +"querystringify@npm:^2.1.1": + version: 2.2.0 + resolution: "querystringify@npm:2.2.0" + checksum: 5641ea231bad7ef6d64d9998faca95611ed4b11c2591a8cae741e178a974f6a8e0ebde008475259abe1621cb15e692404e6b6626e927f7b849d5c09392604b15 languageName: node linkType: hard -"postcss-normalize-url@npm:^5.1.0": - version: 5.1.0 - resolution: "postcss-normalize-url@npm:5.1.0" - dependencies: - normalize-url: ^6.0.1 - postcss-value-parser: ^4.2.0 - peerDependencies: - postcss: ^8.2.15 - checksum: 3bd4b3246d6600230bc827d1760b24cb3101827ec97570e3016cbe04dc0dd28f4dbe763245d1b9d476e182c843008fbea80823061f1d2219b96f0d5c724a24c0 +"queue-microtask@npm:^1.2.2": + version: 1.2.3 + resolution: "queue-microtask@npm:1.2.3" + checksum: b676f8c040cdc5b12723ad2f91414d267605b26419d5c821ff03befa817ddd10e238d22b25d604920340fd73efd8ba795465a0377c4adf45a4a41e4234e42dc4 languageName: node linkType: hard -"postcss-normalize-whitespace@npm:^5.1.1": - version: 5.1.1 - resolution: "postcss-normalize-whitespace@npm:5.1.1" - dependencies: - postcss-value-parser: ^4.2.0 - peerDependencies: - postcss: ^8.2.15 - checksum: 12d8fb6d1c1cba208cc08c1830959b7d7ad447c3f5581873f7e185f99a9a4230c43d3af21ca12c818e4690a5085a95b01635b762ad4a7bef69d642609b4c0e19 +"queue-tick@npm:^1.0.1": + version: 1.0.1 + resolution: "queue-tick@npm:1.0.1" + checksum: 57c3292814b297f87f792fbeb99ce982813e4e54d7a8bdff65cf53d5c084113913289d4a48ec8bbc964927a74b847554f9f4579df43c969a6c8e0f026457ad01 languageName: node linkType: hard -"postcss-ordered-values@npm:^5.1.3": - version: 5.1.3 - resolution: "postcss-ordered-values@npm:5.1.3" - dependencies: - cssnano-utils: ^3.1.0 - postcss-value-parser: ^4.2.0 - peerDependencies: - postcss: ^8.2.15 - checksum: 6f3ca85b6ceffc68aadaf319d9ee4c5ac16d93195bf8cba2d1559b631555ad61941461cda6d3909faab86e52389846b2b36345cff8f0c3f4eb345b1b8efadcf9 +"quick-format-unescaped@npm:^3.0.3": + version: 3.0.3 + resolution: "quick-format-unescaped@npm:3.0.3" + checksum: ab00a443eb2445255333ddb93d3516ba7c4463486546955c798722cfbaddc0b6c12f90fb06e7d134b84d8dd216b538899c40fde09be11959c84c8a930745ce72 languageName: node linkType: hard -"postcss-reduce-initial@npm:^5.1.2": - version: 5.1.2 - resolution: "postcss-reduce-initial@npm:5.1.2" - dependencies: - browserslist: ^4.21.4 - caniuse-api: ^3.0.0 - peerDependencies: - postcss: ^8.2.15 - checksum: 55db697f85231a81f1969d54c894e4773912d9ddb914f9b03d2e73abc4030f2e3bef4d7465756d0c1acfcc2c2d69974bfb50a972ab27546a7d68b5a4fc90282b +"quick-lru@npm:^5.1.1": + version: 5.1.1 + resolution: "quick-lru@npm:5.1.1" + checksum: a516faa25574be7947969883e6068dbe4aa19e8ef8e8e0fd96cddd6d36485e9106d85c0041a27153286b0770b381328f4072aa40d3b18a19f5f7d2b78b94b5ed languageName: node linkType: hard -"postcss-reduce-transforms@npm:^5.1.0": - version: 5.1.0 - resolution: "postcss-reduce-transforms@npm:5.1.0" - dependencies: - postcss-value-parser: ^4.2.0 - peerDependencies: - postcss: ^8.2.15 - checksum: 0c6af2cba20e3ff63eb9ad045e634ddfb9c3e5c0e614c020db2a02f3aa20632318c4ede9e0c995f9225d9a101e673de91c0a6e10bb2fa5da6d6c75d15a55882f +"raf-schd@npm:^4.0.2": + version: 4.0.3 + resolution: "raf-schd@npm:4.0.3" + checksum: 45514041c5ad31fa96aef3bb3c572a843b92da2f2cd1cb4a47c9ad58e48761d3a4126e18daa32b2bfa0bc2551a42d8f324a0e40e536cb656969929602b4e8b58 languageName: node linkType: hard -"postcss-selector-parser@npm:^6.0.2, postcss-selector-parser@npm:^6.0.4, postcss-selector-parser@npm:^6.0.5, postcss-selector-parser@npm:^6.0.9": - version: 6.1.2 - resolution: "postcss-selector-parser@npm:6.1.2" - dependencies: - cssesc: ^3.0.0 - util-deprecate: ^1.0.2 - checksum: ce9440fc42a5419d103f4c7c1847cb75488f3ac9cbe81093b408ee9701193a509f664b4d10a2b4d82c694ee7495e022f8f482d254f92b7ffd9ed9dea696c6f84 +"railroad-diagrams@npm:^1.0.0": + version: 1.0.0 + resolution: "railroad-diagrams@npm:1.0.0" + checksum: 9e312af352b5ed89c2118edc0c06cef2cc039681817f65266719606e4e91ff6ae5374c707cc9033fe29a82c2703edf3c63471664f97f0167c85daf6f93496319 languageName: node linkType: hard -"postcss-svgo@npm:^5.1.0": - version: 5.1.0 - resolution: "postcss-svgo@npm:5.1.0" - dependencies: - postcss-value-parser: ^4.2.0 - svgo: ^2.7.0 - peerDependencies: - postcss: ^8.2.15 - checksum: d86eb5213d9f700cf5efe3073799b485fb7cacae0c731db3d7749c9c2b1c9bc85e95e0baeca439d699ff32ea24815fc916c4071b08f67ed8219df229ce1129bd +"rambda@npm:^9.1.0": + version: 9.3.0 + resolution: "rambda@npm:9.3.0" + checksum: 9ab615c7f00dd8f4165887a92c34e752244b7c197ffd283255e3cd4f78c57a3832fef63ec9deda5bbeb66199f822add7d124acd8d85edb173839481ee809bd30 languageName: node linkType: hard -"postcss-unique-selectors@npm:^5.1.1": - version: 5.1.1 - resolution: "postcss-unique-selectors@npm:5.1.1" - dependencies: - postcss-selector-parser: ^6.0.5 +"ramda-adjunct@npm:^5.0.0": + version: 5.1.0 + resolution: "ramda-adjunct@npm:5.1.0" peerDependencies: - postcss: ^8.2.15 - checksum: 637e7b786e8558265775c30400c54b6b3b24d4748923f4a39f16a65fd0e394f564ccc9f0a1d3c0e770618a7637a7502ea1d0d79f731d429cb202255253c23278 + ramda: ">= 0.30.0" + checksum: 0b5d10add35e56ff1ce1202d9e086602ba5619ce380197e692c03d19b92d7eea41a0fc07e34588c0f6d54d31e00b889fa2bf614d88d10b98822117cbb4666207 languageName: node linkType: hard -"postcss-value-parser@npm:^4.1.0, postcss-value-parser@npm:^4.2.0": - version: 4.2.0 - resolution: "postcss-value-parser@npm:4.2.0" - checksum: 819ffab0c9d51cf0acbabf8996dffbfafbafa57afc0e4c98db88b67f2094cb44488758f06e5da95d7036f19556a4a732525e84289a425f4f6fd8e412a9d7442f +"ramda@npm:^0.30.1, ramda@npm:~0.30.0": + version: 0.30.1 + resolution: "ramda@npm:0.30.1" + checksum: ce6f4b6b967a84a4e65c01ab1b1cdd73d46b8efe71aeccf5d1443c56c4e31a0ea82ece7df6510453dd3d83b92cabf8a6b4d50d189a1b35c08a6f44b281bebf79 languageName: node linkType: hard -"postcss@npm:^8.1.0, postcss@npm:^8.2.13, postcss@npm:^8.4.33": - version: 8.4.47 - resolution: "postcss@npm:8.4.47" +"randexp@npm:0.4.6": + version: 0.4.6 + resolution: "randexp@npm:0.4.6" dependencies: - nanoid: ^3.3.7 - picocolors: ^1.1.0 - source-map-js: ^1.2.1 - checksum: f78440a9d8f97431dd2ab1ab8e1de64f12f3eff38a3d8d4a33919b96c381046a314658d2de213a5fa5eb296b656de76a3ec269fdea27f16d5ab465b916a0f52c + discontinuous-range: 1.0.0 + ret: ~0.1.10 + checksum: 3c0d440a3f89d6d36844aa4dd57b5cdb0cab938a41956a16da743d3a3578ab32538fc41c16cc0984b6938f2ae4cbc0216967e9829e52191f70e32690d8e3445d languageName: node linkType: hard -"postgres-array@npm:~2.0.0": - version: 2.0.0 - resolution: "postgres-array@npm:2.0.0" - checksum: 0e1e659888147c5de579d229a2d95c0d83ebdbffc2b9396d890a123557708c3b758a0a97ed305ce7f58edfa961fa9f0bbcd1ea9f08b6e5df73322e683883c464 +"randexp@npm:^0.5.3": + version: 0.5.3 + resolution: "randexp@npm:0.5.3" + dependencies: + drange: ^1.0.2 + ret: ^0.2.0 + checksum: 9a4011b4b012debea545fc379a18208876fffc1179d2ac211351caf7626a3956efc4bc41e329bc5b241a671553eda58e0703933a9bcfdf90dde501ba1a2cf40a languageName: node linkType: hard -"postgres-bytea@npm:~1.0.0": +"random-bytes@npm:~1.0.0": version: 1.0.0 - resolution: "postgres-bytea@npm:1.0.0" - checksum: d844ae4ca7a941b70e45cac1261a73ee8ed39d72d3d74ab1d645248185a1b7f0ac91a3c63d6159441020f4e1f7fe64689ac56536a307b31cef361e5187335090 - languageName: node - linkType: hard - -"postgres-date@npm:~1.0.4": - version: 1.0.7 - resolution: "postgres-date@npm:1.0.7" - checksum: 5745001d47e51cd767e46bcb1710649cd705d91a24d42fa661c454b6dcbb7353c066a5047983c90a626cd3bbfea9e626cc6fa84a35ec57e5bbb28b49f78e13ed + resolution: "random-bytes@npm:1.0.0" + checksum: 09faa256394aa2ca9754aa57e92a27c452c3e97ffb266e98bebb517332e9df7168fea393159f88d884febce949ba8bec8ddb02f03342da6c6023ecc7b155e0ae languageName: node linkType: hard - -"postgres-interval@npm:^1.1.0": - version: 1.2.0 - resolution: "postgres-interval@npm:1.2.0" + +"randombytes@npm:^2.0.0, randombytes@npm:^2.0.1, randombytes@npm:^2.0.5, randombytes@npm:^2.1.0": + version: 2.1.0 + resolution: "randombytes@npm:2.1.0" dependencies: - xtend: ^4.0.0 - checksum: 746b71f93805ae33b03528e429dc624706d1f9b20ee81bf743263efb6a0cd79ae02a642a8a480dbc0f09547b4315ab7df6ce5ec0be77ed700bac42730f5c76b2 + safe-buffer: ^5.1.0 + checksum: d779499376bd4cbb435ef3ab9a957006c8682f343f14089ed5f27764e4645114196e75b7f6abf1cbd84fd247c0cb0651698444df8c9bf30e62120fbbc52269d6 languageName: node linkType: hard -"prebuild-install@npm:^7.1.1": - version: 7.1.2 - resolution: "prebuild-install@npm:7.1.2" +"randomfill@npm:^1.0.4": + version: 1.0.4 + resolution: "randomfill@npm:1.0.4" dependencies: - detect-libc: ^2.0.0 - expand-template: ^2.0.3 - github-from-package: 0.0.0 - minimist: ^1.2.3 - mkdirp-classic: ^0.5.3 - napi-build-utils: ^1.0.1 - node-abi: ^3.3.0 - pump: ^3.0.0 - rc: ^1.2.7 - simple-get: ^4.0.0 - tar-fs: ^2.0.0 - tunnel-agent: ^0.6.0 - bin: - prebuild-install: bin.js - checksum: 543dadf8c60e004ae9529e6013ca0cbeac8ef38b5f5ba5518cb0b622fe7f8758b34e4b5cb1a791db3cdc9d2281766302df6088bd1a225f206925d6fee17d6c5c + randombytes: ^2.0.5 + safe-buffer: ^5.1.0 + checksum: 33734bb578a868d29ee1b8555e21a36711db084065d94e019a6d03caa67debef8d6a1bfd06a2b597e32901ddc761ab483a85393f0d9a75838f1912461d4dbfc7 languageName: node linkType: hard -"prelude-ls@npm:^1.2.1": +"range-parser@npm:^1.2.1, range-parser@npm:~1.2.1": version: 1.2.1 - resolution: "prelude-ls@npm:1.2.1" - checksum: cd192ec0d0a8e4c6da3bb80e4f62afe336df3f76271ac6deb0e6a36187133b6073a19e9727a1ff108cd8b9982e4768850d413baa71214dd80c7979617dca827a + resolution: "range-parser@npm:1.2.1" + checksum: 0a268d4fea508661cf5743dfe3d5f47ce214fd6b7dec1de0da4d669dd4ef3d2144468ebe4179049eff253d9d27e719c88dae55be64f954e80135a0cada804ec9 languageName: node linkType: hard -"prelude-ls@npm:~1.1.2": - version: 1.1.2 - resolution: "prelude-ls@npm:1.1.2" - checksum: c4867c87488e4a0c233e158e4d0d5565b609b105d75e4c05dc760840475f06b731332eb93cc8c9cecb840aa8ec323ca3c9a56ad7820ad2e63f0261dadcb154e4 +"rate-limiter-flexible@npm:^4.0.1": + version: 4.0.1 + resolution: "rate-limiter-flexible@npm:4.0.1" + checksum: 88cb4ae4c6a94646eb4987f08ae203896fc340d84038e145958607ab711d9c703e47e55f177a4bf9bab4c637c73ee2254fffe2ec4e289d41389c8502194ca868 languageName: node linkType: hard -"prettier@npm:3.3.3": - version: 3.3.3 - resolution: "prettier@npm:3.3.3" - bin: - prettier: bin/prettier.cjs - checksum: bc8604354805acfdde6106852d14b045bb20827ad76a5ffc2455b71a8257f94de93f17f14e463fe844808d2ccc87248364a5691488a3304f1031326e62d9276e +"raw-body@npm:2.5.2, raw-body@npm:^2.4.1": + version: 2.5.2 + resolution: "raw-body@npm:2.5.2" + dependencies: + bytes: 3.1.2 + http-errors: 2.0.0 + iconv-lite: 0.4.24 + unpipe: 1.0.0 + checksum: ba1583c8d8a48e8fbb7a873fdbb2df66ea4ff83775421bfe21ee120140949ab048200668c47d9ae3880012f6e217052690628cf679ddfbd82c9fc9358d574676 languageName: node linkType: hard -"prettier@npm:^2.3.2, prettier@npm:^2.7.1": - version: 2.8.8 - resolution: "prettier@npm:2.8.8" - bin: - prettier: bin-prettier.js - checksum: b49e409431bf129dd89238d64299ba80717b57ff5a6d1c1a8b1a28b590d998a34e083fa13573bc732bb8d2305becb4c9a4407f8486c81fa7d55100eb08263cf8 +"raw-loader@npm:^4.0.2": + version: 4.0.2 + resolution: "raw-loader@npm:4.0.2" + dependencies: + loader-utils: ^2.0.0 + schema-utils: ^3.0.0 + peerDependencies: + webpack: ^4.0.0 || ^5.0.0 + checksum: 51cc1b0d0e8c37c4336b5318f3b2c9c51d6998ad6f56ea09612afcfefc9c1f596341309e934a744ae907177f28efc9f1654eacd62151e82853fcc6d37450e795 languageName: node linkType: hard -"pretty-error@npm:^4.0.0": - version: 4.0.0 - resolution: "pretty-error@npm:4.0.0" +"rc-progress@npm:3.5.1": + version: 3.5.1 + resolution: "rc-progress@npm:3.5.1" dependencies: - lodash: ^4.17.20 - renderkid: ^3.0.0 - checksum: a5b9137365690104ded6947dca2e33360bf55e62a4acd91b1b0d7baa3970e43754c628cc9e16eafbdd4e8f8bcb260a5865475d4fc17c3106ff2d61db4e72cdf3 + "@babel/runtime": ^7.10.1 + classnames: ^2.2.6 + rc-util: ^5.16.1 + peerDependencies: + react: ">=16.9.0" + react-dom: ">=16.9.0" + checksum: b0722a696396f985267e35e26f49c1c1bd6a17b4918eb93318fc36a7a5ffae9806932d4982a7da0d83349648ca85325b792003ec40240820fd6e00e0bc6f3c1d languageName: node linkType: hard -"pretty-format@npm:^29.0.0, pretty-format@npm:^29.7.0": - version: 29.7.0 - resolution: "pretty-format@npm:29.7.0" +"rc-util@npm:^5.16.1": + version: 5.44.2 + resolution: "rc-util@npm:5.44.2" dependencies: - "@jest/schemas": ^29.6.3 - ansi-styles: ^5.0.0 - react-is: ^18.0.0 - checksum: 032c1602383e71e9c0c02a01bbd25d6759d60e9c7cf21937dde8357aa753da348fcec5def5d1002c9678a8524d5fe099ad98861286550ef44de8808cc61e43b6 + "@babel/runtime": ^7.18.3 + react-is: ^18.2.0 + peerDependencies: + react: ">=16.9.0" + react-dom: ">=16.9.0" + checksum: 238eb922fd55297d2ae84f0979da9b5507087d162c3deac8b040ea9a0381b5a5e518f604c7291d2095f9bc1e4b67f3be773da0e88341b5319d2b437c656cffc0 languageName: node linkType: hard -"pretty-ms@npm:^9.0.0": - version: 9.1.0 - resolution: "pretty-ms@npm:9.1.0" +"rc@npm:^1.2.7": + version: 1.2.8 + resolution: "rc@npm:1.2.8" dependencies: - parse-ms: ^4.0.0 - checksum: 0f66507467f2005040cccdcb36f35b82674d7809f41c4432009235ed6c920787afa17f621c25b7ccb8ccd80b0840c7b71f7f4a3addb8f0eeef3a033ff1e5cf71 + deep-extend: ^0.6.0 + ini: ~1.3.0 + minimist: ^1.2.0 + strip-json-comments: ~2.0.1 + bin: + rc: ./cli.js + checksum: 2e26e052f8be2abd64e6d1dabfbd7be03f80ec18ccbc49562d31f617d0015fbdbcf0f9eed30346ea6ab789e0fdfe4337f033f8016efdbee0df5354751842080e languageName: node linkType: hard -"proc-log@npm:^4.1.0, proc-log@npm:^4.2.0": - version: 4.2.0 - resolution: "proc-log@npm:4.2.0" - checksum: 98f6cd012d54b5334144c5255ecb941ee171744f45fca8b43b58ae5a0c1af07352475f481cadd9848e7f0250376ee584f6aa0951a856ff8f021bdfbff4eb33fc +"re2-wasm@npm:^1.0.2": + version: 1.0.2 + resolution: "re2-wasm@npm:1.0.2" + checksum: cd47ad62db1e2f01dec40129f0c994f86bebbade1bd85920fa32229bec0a64b0ebbf550fefbba68a1f8268b73d811f223f79264d5ed9a208efda3fb832e9f0a9 languageName: node linkType: hard -"process-nextick-args@npm:~2.0.0": - version: 2.0.1 - resolution: "process-nextick-args@npm:2.0.1" - checksum: 1d38588e520dab7cea67cbbe2efdd86a10cc7a074c09657635e34f035277b59fbb57d09d8638346bf7090f8e8ebc070c96fa5fd183b777fff4f5edff5e9466cf +"react-ace@npm:9.5.0": + version: 9.5.0 + resolution: "react-ace@npm:9.5.0" + dependencies: + ace-builds: ^1.4.13 + diff-match-patch: ^1.0.5 + lodash.get: ^4.4.2 + lodash.isequal: ^4.5.0 + prop-types: ^15.7.2 + peerDependencies: + react: ^0.13.0 || ^0.14.0 || ^15.0.1 || ^16.0.0 || ^17.0.0 + react-dom: ^0.13.0 || ^0.14.0 || ^15.0.1 || ^16.0.0 || ^17.0.0 + checksum: 4fcb8cf5c69507074c5fca1d40965abef8e411ac6ab66bdfbfc8505eb13e3bc2bb1c31edb80762bae9578802a53c50fda9037619b8ade1084a89244641ebb1c8 languageName: node linkType: hard -"process@npm:^0.11.10": - version: 0.11.10 - resolution: "process@npm:0.11.10" - checksum: bfcce49814f7d172a6e6a14d5fa3ac92cc3d0c3b9feb1279774708a719e19acd673995226351a082a9ae99978254e320ccda4240ddc474ba31a76c79491ca7c3 +"react-beautiful-dnd@npm:^13.0.0": + version: 13.1.1 + resolution: "react-beautiful-dnd@npm:13.1.1" + dependencies: + "@babel/runtime": ^7.9.2 + css-box-model: ^1.2.0 + memoize-one: ^5.1.1 + raf-schd: ^4.0.2 + react-redux: ^7.2.0 + redux: ^4.0.4 + use-memo-one: ^1.1.1 + peerDependencies: + react: ^16.8.5 || ^17.0.0 || ^18.0.0 + react-dom: ^16.8.5 || ^17.0.0 || ^18.0.0 + checksum: 5f90f7c0ab77a14dfcd496cbd94bbde457612f380c6fc815f3bba7b52effd75132948fcaa661a902a184bb1e6ae5896dcf5b0c77c4ddf809a2c65288f3eed5a7 languageName: node linkType: hard -"promise-inflight@npm:^1.0.1": - version: 1.0.1 - resolution: "promise-inflight@npm:1.0.1" - checksum: 22749483091d2c594261517f4f80e05226d4d5ecc1fc917e1886929da56e22b5718b7f2a75f3807e7a7d471bc3be2907fe92e6e8f373ddf5c64bae35b5af3981 +"react-copy-to-clipboard@npm:5.1.0, react-copy-to-clipboard@npm:5.x": + version: 5.1.0 + resolution: "react-copy-to-clipboard@npm:5.1.0" + dependencies: + copy-to-clipboard: ^3.3.1 + prop-types: ^15.8.1 + peerDependencies: + react: ^15.3.0 || 16 || 17 || 18 + checksum: f00a4551b9b63c944a041a6ab46af5ef20ba1106b3bc25173e7ef9bffbfba17a613368682ab8820cfe8d4b3acc5335cd9ce20229145bcc1e6aa8d1db04c512e5 languageName: node linkType: hard -"promise-retry@npm:^2.0.1": - version: 2.0.1 - resolution: "promise-retry@npm:2.0.1" +"react-debounce-input@npm:=3.3.0": + version: 3.3.0 + resolution: "react-debounce-input@npm:3.3.0" dependencies: - err-code: ^2.0.2 - retry: ^0.12.0 - checksum: f96a3f6d90b92b568a26f71e966cbbc0f63ab85ea6ff6c81284dc869b41510e6cdef99b6b65f9030f0db422bf7c96652a3fff9f2e8fb4a0f069d8f4430359429 + lodash.debounce: ^4 + prop-types: ^15.8.1 + peerDependencies: + react: ^15.3.0 || 16 || 17 || 18 + checksum: c391ddc73047df759a68913ab8cb0444d211ab91657d94b3b1660ca434ece4a9ac611a7b8b3e82c89d3b7c3d061d0c99bdf6a426e61802848d1c783acb44b69f languageName: node linkType: hard -"promise.series@npm:^0.2.0": - version: 0.2.0 - resolution: "promise.series@npm:0.2.0" - checksum: 26b5956b5463d032b43d39fd8d34fdacf453ed3352462eed9626494a11d44beb385f86d6544dd12e51482a6ca8f303e0dfdee8653db4703213ba27dd2234754a +"react-dev-utils@npm:^12.0.0-next.60": + version: 12.0.1 + resolution: "react-dev-utils@npm:12.0.1" + dependencies: + "@babel/code-frame": ^7.16.0 + address: ^1.1.2 + browserslist: ^4.18.1 + chalk: ^4.1.2 + cross-spawn: ^7.0.3 + detect-port-alt: ^1.1.6 + escape-string-regexp: ^4.0.0 + filesize: ^8.0.6 + find-up: ^5.0.0 + fork-ts-checker-webpack-plugin: ^6.5.0 + global-modules: ^2.0.0 + globby: ^11.0.4 + gzip-size: ^6.0.0 + immer: ^9.0.7 + is-root: ^2.1.0 + loader-utils: ^3.2.0 + open: ^8.4.0 + pkg-up: ^3.1.0 + prompts: ^2.4.2 + react-error-overlay: ^6.0.11 + recursive-readdir: ^2.2.2 + shell-quote: ^1.7.3 + strip-ansi: ^6.0.1 + text-table: ^0.2.0 + checksum: 2c6917e47f03d9595044770b0f883a61c6b660fcaa97b8ba459a1d57c9cca9aa374cd51296b22d461ff5e432105dbe6f04732dab128e52729c79239e1c23ab56 languageName: node linkType: hard -"prompts@npm:^2.0.1, prompts@npm:^2.4.2": - version: 2.4.2 - resolution: "prompts@npm:2.4.2" +"react-dom@npm:^16.13.1 || ^17.0.0 || ^18.0.0, react-dom@npm:^18.0.2": + version: 18.3.1 + resolution: "react-dom@npm:18.3.1" dependencies: - kleur: ^3.0.3 - sisteransi: ^1.0.5 - checksum: d8fd1fe63820be2412c13bfc5d0a01909acc1f0367e32396962e737cb2fc52d004f3302475d5ce7d18a1e8a79985f93ff04ee03007d091029c3f9104bffc007d + loose-envify: ^1.1.0 + scheduler: ^0.23.2 + peerDependencies: + react: ^18.3.1 + checksum: 298954ecd8f78288dcaece05e88b570014d8f6dce5db6f66e6ee91448debeb59dcd31561dddb354eee47e6c1bb234669459060deb238ed0213497146e555a0b9 languageName: node linkType: hard -"prop-types@npm:^15.8.1": - version: 15.8.1 - resolution: "prop-types@npm:15.8.1" - dependencies: - loose-envify: ^1.4.0 - object-assign: ^4.1.1 - react-is: ^16.13.1 - checksum: c056d3f1c057cb7ff8344c645450e14f088a915d078dcda795041765047fa080d38e5d626560ccaac94a4e16e3aa15f3557c1a9a8d1174530955e992c675e459 +"react-double-scrollbar@npm:0.0.15": + version: 0.0.15 + resolution: "react-double-scrollbar@npm:0.0.15" + peerDependencies: + react: ">= 0.14.7" + checksum: f81c13bdf698d6f699178b6597cb43fff3ec7d2b47f489ee306499a814151822e21b2daed995840832a11261f24dbd56573fe9225d43df22c14af5c564041bc0 languageName: node linkType: hard -"proper-lockfile@npm:^4.1.2": - version: 4.1.2 - resolution: "proper-lockfile@npm:4.1.2" +"react-draggable@npm:^4.0.3": + version: 4.4.6 + resolution: "react-draggable@npm:4.4.6" dependencies: - graceful-fs: ^4.2.4 - retry: ^0.12.0 - signal-exit: ^3.0.2 - checksum: 00078ee6a61c216a56a6140c7d2a98c6c733b3678503002dc073ab8beca5d50ca271de4c85fca13b9b8ee2ff546c36674d1850509b84a04a5d0363bcb8638939 + clsx: ^1.1.1 + prop-types: ^15.8.1 + peerDependencies: + react: ">= 16.3.0" + react-dom: ">= 16.3.0" + checksum: 9b15aac59244873ac4561c5a2bead43a56e18d406e0a5f242bd4f9d151c074530c02b99387983104bf43417292f9cf8d063e554ed08d88792235e3fbc965f1b8 languageName: node linkType: hard -"properties-reader@npm:^2.3.0": - version: 2.3.0 - resolution: "properties-reader@npm:2.3.0" +"react-dropzone@npm:^14.2.3": + version: 14.3.5 + resolution: "react-dropzone@npm:14.3.5" dependencies: - mkdirp: ^1.0.4 - checksum: cbf59e862dc507f8ce1f8d7641ed9737119f16a1d4dad8e79f17b303aaca1c6af7d36ddfef0f649cab4d200ba4334ac159af0b238f6978a085f5b1b5126b6cc3 + attr-accept: ^2.2.4 + file-selector: ^2.1.0 + prop-types: ^15.8.1 + peerDependencies: + react: ">= 16.8 || 18.0.0" + checksum: 9eae7e91f1a786f74234c3a9fcf905691494531861d0c568f260abb770c35edaab7d1e43fe6cb413d77ae56ba286ac1c1606bade46ec15421fd41059f985f6ee languageName: node linkType: hard -"property-expr@npm:^2.0.4": - version: 2.0.6 - resolution: "property-expr@npm:2.0.6" - checksum: 89977f4bb230736c1876f460dd7ca9328034502fd92e738deb40516d16564b850c0bbc4e052c3df88b5b8cd58e51c93b46a94bea049a3f23f4a022c038864cab +"react-error-overlay@npm:^6.0.11": + version: 6.0.11 + resolution: "react-error-overlay@npm:6.0.11" + checksum: ce7b44c38fadba9cedd7c095cf39192e632daeccf1d0747292ed524f17dcb056d16bc197ddee5723f9dd888f0b9b19c3b486c430319e30504289b9296f2d2c42 languageName: node linkType: hard -"protocols@npm:^2.0.0, protocols@npm:^2.0.1": - version: 2.0.1 - resolution: "protocols@npm:2.0.1" - checksum: 4a9bef6aa0449a0245ded319ac3cbfd032c3e76ebb562777037a3a832c99253d0e8bc2847f7be350236df620a11f7d4fe683ea7f59a2cc14c69f746b6259eda4 +"react-fast-compare@npm:^3.1.1, react-fast-compare@npm:^3.2.0": + version: 3.2.2 + resolution: "react-fast-compare@npm:3.2.2" + checksum: 2071415b4f76a3e6b55c84611c4d24dcb12ffc85811a2840b5a3f1ff2d1a99be1020d9437ee7c6e024c9f4cbb84ceb35e48cf84f28fcb00265ad2dfdd3947704 languageName: node linkType: hard -"proxy-addr@npm:~2.0.7": - version: 2.0.7 - resolution: "proxy-addr@npm:2.0.7" +"react-helmet@npm:6.1.0": + version: 6.1.0 + resolution: "react-helmet@npm:6.1.0" dependencies: - forwarded: 0.2.0 - ipaddr.js: 1.9.1 - checksum: 29c6990ce9364648255454842f06f8c46fcd124d3e6d7c5066df44662de63cdc0bad032e9bf5a3d653ff72141cc7b6019873d685708ac8210c30458ad99f2b74 + object-assign: ^4.1.1 + prop-types: ^15.7.2 + react-fast-compare: ^3.1.1 + react-side-effect: ^2.1.0 + peerDependencies: + react: ">=16.3.0" + checksum: a4998479dab7fc1c2799eddefb1870a9d881b5f71cfdf97979a9882e42f4bb50402d55335f308f461e735e01a06f46b16cc7b4e6bcb22c7a4a6f85a753c5c106 languageName: node linkType: hard -"proxy-agent@npm:6.4.0": - version: 6.4.0 - resolution: "proxy-agent@npm:6.4.0" +"react-hook-form@npm:^7.12.2": + version: 7.54.1 + resolution: "react-hook-form@npm:7.54.1" + peerDependencies: + react: ^16.8.0 || ^17 || ^18 || ^19 + checksum: a612479ca0e084d64eadc0197fe1a34c3bdb0b6a30f2646d73b5a93aa85793d1950476aa2dd2911713e18c6bd13b1641d3ccf846033aefc652cf973d2d842f87 + languageName: node + linkType: hard + +"react-idle-timer@npm:5.7.2": + version: 5.7.2 + resolution: "react-idle-timer@npm:5.7.2" + peerDependencies: + react: ">=16" + react-dom: ">=16" + checksum: 6faf3cfa87c9d65ae7a87078a2d82db5b821936a45565a98d69e7341e4b4acd5610b1f26cf1a6809b5551e4c30357f2ab5ce729c4c33751f66cb9ce6072dfb02 + languageName: node + linkType: hard + +"react-immutable-proptypes@npm:2.2.0": + version: 2.2.0 + resolution: "react-immutable-proptypes@npm:2.2.0" dependencies: - agent-base: ^7.0.2 - debug: ^4.3.4 - http-proxy-agent: ^7.0.1 - https-proxy-agent: ^7.0.3 - lru-cache: ^7.14.1 - pac-proxy-agent: ^7.0.1 - proxy-from-env: ^1.1.0 - socks-proxy-agent: ^8.0.2 - checksum: 4d3794ad5e07486298902f0a7f250d0f869fa0e92d790767ca3f793a81374ce0ab6c605f8ab8e791c4d754da96656b48d1c24cb7094bfd310a15867e4a0841d7 + invariant: ^2.2.2 + peerDependencies: + immutable: ">=3.6.2" + checksum: 7e2a6cae621d213140102923fa305d6621444a37572cbf684a5ff5743746ba4dbacb30d60e6d8278702f3cbbc48805e716f69e2bf8c9953fd570f86254c1a2b1 languageName: node linkType: hard -"proxy-from-env@npm:^1.1.0": - version: 1.1.0 - resolution: "proxy-from-env@npm:1.1.0" - checksum: ed7fcc2ba0a33404958e34d95d18638249a68c430e30fcb6c478497d72739ba64ce9810a24f53a7d921d0c065e5b78e3822759800698167256b04659366ca4d4 +"react-immutable-pure-component@npm:^2.2.0": + version: 2.2.2 + resolution: "react-immutable-pure-component@npm:2.2.2" + peerDependencies: + immutable: ">= 2 || >= 4.0.0-rc" + react: ">= 16.6" + react-dom: ">= 16.6" + checksum: 73254040cb25b93343c03fb694c5eebbe558d486068ad9766d87ecb2661c38a2c2edf75e683da269f01a138f1aad1cd23cc456a857c5931af4ca54bf941bf12a languageName: node linkType: hard -"pseudomap@npm:^1.0.2": - version: 1.0.2 - resolution: "pseudomap@npm:1.0.2" - checksum: 856c0aae0ff2ad60881168334448e898ad7a0e45fe7386d114b150084254c01e200c957cf378378025df4e052c7890c5bd933939b0e0d2ecfcc1dc2f0b2991f5 +"react-inspector@npm:^6.0.1": + version: 6.0.2 + resolution: "react-inspector@npm:6.0.2" + peerDependencies: + react: ^16.8.4 || ^17.0.0 || ^18.0.0 + checksum: dab7a7daf570c283fdc5d4e07ee8941ee8670af698ab5a27a704602b248e29ab911b117310d64c30a4af93931b2d6ee2a729369e3f5ab7f02df4651692e195a5 languageName: node linkType: hard -"psl@npm:^1.1.28, psl@npm:^1.1.33": - version: 1.9.0 - resolution: "psl@npm:1.9.0" - checksum: 20c4277f640c93d393130673f392618e9a8044c6c7bf61c53917a0fddb4952790f5f362c6c730a9c32b124813e173733f9895add8d26f566ed0ea0654b2e711d +"react-is@npm:^16.13.1, react-is@npm:^16.7.0": + version: 16.13.1 + resolution: "react-is@npm:16.13.1" + checksum: f7a19ac3496de32ca9ae12aa030f00f14a3d45374f1ceca0af707c831b2a6098ef0d6bdae51bd437b0a306d7f01d4677fcc8de7c0d331eb47ad0f46130e53c5f languageName: node linkType: hard -"public-encrypt@npm:^4.0.3": - version: 4.0.3 - resolution: "public-encrypt@npm:4.0.3" - dependencies: - bn.js: ^4.1.0 - browserify-rsa: ^4.0.0 - create-hash: ^1.1.0 - parse-asn1: ^5.0.0 - randombytes: ^2.0.1 - safe-buffer: ^5.1.2 - checksum: 215d446e43cef021a20b67c1df455e5eea134af0b1f9b8a35f9e850abf32991b0c307327bc5b9bc07162c288d5cdb3d4a783ea6c6640979ed7b5017e3e0c9935 +"react-is@npm:^16.8.0 || ^17.0.0, react-is@npm:^17.0.1, react-is@npm:^17.0.2": + version: 17.0.2 + resolution: "react-is@npm:17.0.2" + checksum: 9d6d111d8990dc98bc5402c1266a808b0459b5d54830bbea24c12d908b536df7883f268a7868cfaedde3dd9d4e0d574db456f84d2e6df9c4526f99bb4b5344d8 languageName: node linkType: hard -"pump@npm:^3.0.0": - version: 3.0.2 - resolution: "pump@npm:3.0.2" - dependencies: - end-of-stream: ^1.1.0 - once: ^1.3.1 - checksum: e0c4216874b96bd25ddf31a0b61a5613e26cc7afa32379217cf39d3915b0509def3565f5f6968fafdad2894c8bbdbd67d340e84f3634b2a29b950cffb6442d9f +"react-is@npm:^18.0.0, react-is@npm:^18.2.0": + version: 18.3.1 + resolution: "react-is@npm:18.3.1" + checksum: e20fe84c86ff172fc8d898251b7cc2c43645d108bf96d0b8edf39b98f9a2cae97b40520ee7ed8ee0085ccc94736c4886294456033304151c3f94978cec03df21 languageName: node linkType: hard -"punycode@npm:^1.2.4, punycode@npm:^1.4.1": - version: 1.4.1 - resolution: "punycode@npm:1.4.1" - checksum: fa6e698cb53db45e4628559e557ddaf554103d2a96a1d62892c8f4032cd3bc8871796cae9eabc1bc700e2b6677611521ce5bb1d9a27700086039965d0cf34518 +"react-is@npm:^19.0.0": + version: 19.0.0 + resolution: "react-is@npm:19.0.0" + checksum: fbb3060bcb6b3e8e525b17f0872d1cf62a40b73fa7c5de02419069e2edd3e01cf1e8e86c8888f0733cff006175ee76ae927b40b6f0c4332bdda21020505ac90b languageName: node linkType: hard -"punycode@npm:^2.1.0, punycode@npm:^2.1.1": - version: 2.3.1 - resolution: "punycode@npm:2.3.1" - checksum: bb0a0ceedca4c3c57a9b981b90601579058903c62be23c5e8e843d2c2d4148a3ecf029d5133486fb0e1822b098ba8bba09e89d6b21742d02fa26bda6441a6fb2 +"react-markdown@npm:^8.0.0": + version: 8.0.7 + resolution: "react-markdown@npm:8.0.7" + dependencies: + "@types/hast": ^2.0.0 + "@types/prop-types": ^15.0.0 + "@types/unist": ^2.0.0 + comma-separated-tokens: ^2.0.0 + hast-util-whitespace: ^2.0.0 + prop-types: ^15.0.0 + property-information: ^6.0.0 + react-is: ^18.0.0 + remark-parse: ^10.0.0 + remark-rehype: ^10.0.0 + space-separated-tokens: ^2.0.0 + style-to-object: ^0.4.0 + unified: ^10.0.0 + unist-util-visit: ^4.0.0 + vfile: ^5.0.0 + peerDependencies: + "@types/react": ">=16" + react: ">=16" + checksum: 0f3e570975134a3382c3fe5189e04e742ae154941463bdfaab2293319da1f1585cb9b75b6f07d99f514c4d728d69cc1af3c96ab37df90003b3bcc210dd0001ba languageName: node linkType: hard -"pure-rand@npm:^6.0.0": - version: 6.1.0 - resolution: "pure-rand@npm:6.1.0" - checksum: 8d53bc02bed99eca0b65b505090152ee7e9bd67dd74f8ff32ba1c883b87234067c5bf68d2614759fb217d82594d7a92919e6df80f97885e7b12b42af4bd3316a +"react-measure@npm:^2.3.0": + version: 2.5.2 + resolution: "react-measure@npm:2.5.2" + dependencies: + "@babel/runtime": ^7.2.0 + get-node-dimensions: ^1.2.1 + prop-types: ^15.6.2 + resize-observer-polyfill: ^1.5.0 + peerDependencies: + react: ">0.13.0" + react-dom: ">0.13.0" + checksum: 75bd3cd74d96f3e83f0a42b8f59e8764e6a5eec994492e077c49a4fea0d0b27775a5154502aff2eee3f6af40650ce2e58ed18ac927a64013b14c9942cc9c4872 languageName: node linkType: hard -"qs@npm:6.13.0, qs@npm:^6.11.0, qs@npm:^6.12.3": - version: 6.13.0 - resolution: "qs@npm:6.13.0" +"react-redux@npm:^7.2.0": + version: 7.2.9 + resolution: "react-redux@npm:7.2.9" dependencies: - side-channel: ^1.0.6 - checksum: e9404dc0fc2849245107108ce9ec2766cde3be1b271de0bf1021d049dc5b98d1a2901e67b431ac5509f865420a7ed80b7acb3980099fe1c118a1c5d2e1432ad8 + "@babel/runtime": ^7.15.4 + "@types/react-redux": ^7.1.20 + hoist-non-react-statics: ^3.3.2 + loose-envify: ^1.4.0 + prop-types: ^15.7.2 + react-is: ^17.0.2 + peerDependencies: + react: ^16.8.3 || ^17 || ^18 + peerDependenciesMeta: + react-dom: + optional: true + react-native: + optional: true + checksum: 369a2bdcf87915659af9e5c55abfd9f52a84e43e0d12dcc108ed17dbe6933558b7b7fc12caa9c10c1a10a8be7df89454b6c96989d8573fedec1a772c94a1f145 languageName: node linkType: hard -"qs@npm:~6.5.2": - version: 6.5.3 - resolution: "qs@npm:6.5.3" - checksum: 6f20bf08cabd90c458e50855559539a28d00b2f2e7dddcb66082b16a43188418cb3cb77cbd09268bcef6022935650f0534357b8af9eeb29bf0f27ccb17655692 +"react-redux@npm:^9.1.2": + version: 9.2.0 + resolution: "react-redux@npm:9.2.0" + dependencies: + "@types/use-sync-external-store": ^0.0.6 + use-sync-external-store: ^1.4.0 + peerDependencies: + "@types/react": ^18.2.25 || ^19 + react: ^18.0 || ^19 + redux: ^5.0.0 + peerDependenciesMeta: + "@types/react": + optional: true + redux: + optional: true + checksum: 96dfe2929561d7c98d4443722738e4595f08758bde27b7bc20cd98ba9b0dfe9b81b9fa17b6888be94a0c1d2d1305397ae493a8219698536d011a941589eb82bd languageName: node linkType: hard -"querystring-es3@npm:^0.2.0": - version: 0.2.1 - resolution: "querystring-es3@npm:0.2.1" - checksum: 691e8d6b8b157e7cd49ae8e83fcf86de39ab3ba948c25abaa94fba84c0986c641aa2f597770848c64abce290ed17a39c9df6df737dfa7e87c3b63acc7d225d61 +"react-refresh@npm:^0.14.0": + version: 0.14.2 + resolution: "react-refresh@npm:0.14.2" + checksum: d80db4bd40a36dab79010dc8aa317a5b931f960c0d83c4f3b81f0552cbcf7f29e115b84bb7908ec6a1eb67720fff7023084eff73ece8a7ddc694882478464382 languageName: node linkType: hard -"querystringify@npm:^2.1.1": - version: 2.2.0 - resolution: "querystringify@npm:2.2.0" - checksum: 5641ea231bad7ef6d64d9998faca95611ed4b11c2591a8cae741e178a974f6a8e0ebde008475259abe1621cb15e692404e6b6626e927f7b849d5c09392604b15 +"react-remove-scroll-bar@npm:^2.3.7": + version: 2.3.8 + resolution: "react-remove-scroll-bar@npm:2.3.8" + dependencies: + react-style-singleton: ^2.2.2 + tslib: ^2.0.0 + peerDependencies: + "@types/react": "*" + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + peerDependenciesMeta: + "@types/react": + optional: true + checksum: c4663247f689dbe51c370836edf735487f6d8796acb7f15b09e8a1c14e84c7997360e8e3d54de2bc9c0e782fed2b2c4127d15b4053e4d2cf26839e809e57605f languageName: node linkType: hard -"queue-microtask@npm:^1.2.2": - version: 1.2.3 - resolution: "queue-microtask@npm:1.2.3" - checksum: b676f8c040cdc5b12723ad2f91414d267605b26419d5c821ff03befa817ddd10e238d22b25d604920340fd73efd8ba795465a0377c4adf45a4a41e4234e42dc4 +"react-remove-scroll@npm:^2.6.1": + version: 2.6.2 + resolution: "react-remove-scroll@npm:2.6.2" + dependencies: + react-remove-scroll-bar: ^2.3.7 + react-style-singleton: ^2.2.1 + tslib: ^2.1.0 + use-callback-ref: ^1.3.3 + use-sidecar: ^1.1.2 + peerDependencies: + "@types/react": "*" + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc + peerDependenciesMeta: + "@types/react": + optional: true + checksum: 310e6e6d2f28226a1751dc5084a2dce49167f0b69e3d78d6510f329f423ee313d4f6477f5e1adccb68baef40a7af75541e980a8c398cb82ea0d3573e514e8124 languageName: node linkType: hard -"queue-tick@npm:^1.0.1": - version: 1.0.1 - resolution: "queue-tick@npm:1.0.1" - checksum: 57c3292814b297f87f792fbeb99ce982813e4e54d7a8bdff65cf53d5c084113913289d4a48ec8bbc964927a74b847554f9f4579df43c969a6c8e0f026457ad01 +"react-resizable@npm:^3.0.5": + version: 3.0.5 + resolution: "react-resizable@npm:3.0.5" + dependencies: + prop-types: 15.x + react-draggable: ^4.0.3 + peerDependencies: + react: ">= 16.3" + checksum: 616a10205acfaf8cc3aa0824b60f6d037eef87143d8f338cf826deb74a353db9b9baad67a65dc8535fe90840bfc3e1b8a901f9c247033ffeec2f30405ac7528e languageName: node linkType: hard -"rambda@npm:^9.1.0": - version: 9.3.0 - resolution: "rambda@npm:9.3.0" - checksum: 9ab615c7f00dd8f4165887a92c34e752244b7c197ffd283255e3cd4f78c57a3832fef63ec9deda5bbeb66199f822add7d124acd8d85edb173839481ee809bd30 +"react-router-dom@npm:^6.0.0, react-router-dom@npm:^6.3.0": + version: 6.28.0 + resolution: "react-router-dom@npm:6.28.0" + dependencies: + "@remix-run/router": 1.21.0 + react-router: 6.28.0 + peerDependencies: + react: ">=16.8" + react-dom: ">=16.8" + checksum: 0cf4658a92bc66f50ec9d8518c36aa5a402bcadce71fb624ed6f900d73a29ea87ff904a4f2c42279107e75e80cc08c6192563fadcc5d4e642e6d476e38e83b21 languageName: node linkType: hard -"randombytes@npm:^2.0.0, randombytes@npm:^2.0.1, randombytes@npm:^2.0.5, randombytes@npm:^2.1.0": - version: 2.1.0 - resolution: "randombytes@npm:2.1.0" +"react-router@npm:6.28.0, react-router@npm:^6.3.0": + version: 6.28.0 + resolution: "react-router@npm:6.28.0" dependencies: - safe-buffer: ^5.1.0 - checksum: d779499376bd4cbb435ef3ab9a957006c8682f343f14089ed5f27764e4645114196e75b7f6abf1cbd84fd247c0cb0651698444df8c9bf30e62120fbbc52269d6 + "@remix-run/router": 1.21.0 + peerDependencies: + react: ">=16.8" + checksum: 23246ca957b5c2bc8d6f9a81fee2df2ce4fc3feca3ec27c2fd85999568fc1299a4e8273e4ab70b6f3acd43a1fb45e0c93cb01ef77e68c9f9e1f7e4f42a1419ea languageName: node linkType: hard -"randomfill@npm:^1.0.4": - version: 1.0.4 - resolution: "randomfill@npm:1.0.4" - dependencies: - randombytes: ^2.0.5 - safe-buffer: ^5.1.0 - checksum: 33734bb578a868d29ee1b8555e21a36711db084065d94e019a6d03caa67debef8d6a1bfd06a2b597e32901ddc761ab483a85393f0d9a75838f1912461d4dbfc7 +"react-side-effect@npm:^2.1.0": + version: 2.1.2 + resolution: "react-side-effect@npm:2.1.2" + peerDependencies: + react: ^16.3.0 || ^17.0.0 || ^18.0.0 + checksum: c5eb1f42b464fb093bca59aaae0f1b2060373a2aaff95275b8781493628cdbbb6acdd6014e7883782c65c361f35a30f28cc515d68a1263ddb39cbbc47110be53 languageName: node linkType: hard -"range-parser@npm:^1.2.1, range-parser@npm:~1.2.1": - version: 1.2.1 - resolution: "range-parser@npm:1.2.1" - checksum: 0a268d4fea508661cf5743dfe3d5f47ce214fd6b7dec1de0da4d669dd4ef3d2144468ebe4179049eff253d9d27e719c88dae55be64f954e80135a0cada804ec9 +"react-sparklines@npm:^1.7.0": + version: 1.7.0 + resolution: "react-sparklines@npm:1.7.0" + dependencies: + prop-types: ^15.5.10 + peerDependencies: + react: "*" + react-dom: "*" + checksum: 9d2f701031e56e0c7b49e3b56479cd7bc1b651c029c2d525d2b480cf6ebcecbdb4dfe83053e7bcdecee1c490f3e5b4cecfa8b48301860b679778d6df7758e480 languageName: node linkType: hard -"raw-body@npm:2.5.2, raw-body@npm:^2.4.1": - version: 2.5.2 - resolution: "raw-body@npm:2.5.2" +"react-style-singleton@npm:^2.2.1, react-style-singleton@npm:^2.2.2": + version: 2.2.3 + resolution: "react-style-singleton@npm:2.2.3" dependencies: - bytes: 3.1.2 - http-errors: 2.0.0 - iconv-lite: 0.4.24 - unpipe: 1.0.0 - checksum: ba1583c8d8a48e8fbb7a873fdbb2df66ea4ff83775421bfe21ee120140949ab048200668c47d9ae3880012f6e217052690628cf679ddfbd82c9fc9358d574676 + get-nonce: ^1.0.0 + tslib: ^2.0.0 + peerDependencies: + "@types/react": "*" + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc + peerDependenciesMeta: + "@types/react": + optional: true + checksum: a7b0bf493c9231065ebafa84c4237aed997c746c561196121b7de82fe155a5355b372db5070a3ac9fe980cf7f60dc0f1e8cf6402a2aa5b2957392932ccf76e76 languageName: node linkType: hard -"raw-loader@npm:^4.0.2": - version: 4.0.2 - resolution: "raw-loader@npm:4.0.2" +"react-syntax-highlighter@npm:^15.4.5, react-syntax-highlighter@npm:^15.5.0": + version: 15.6.1 + resolution: "react-syntax-highlighter@npm:15.6.1" dependencies: - loader-utils: ^2.0.0 - schema-utils: ^3.0.0 + "@babel/runtime": ^7.3.1 + highlight.js: ^10.4.1 + highlightjs-vue: ^1.0.0 + lowlight: ^1.17.0 + prismjs: ^1.27.0 + refractor: ^3.6.0 peerDependencies: - webpack: ^4.0.0 || ^5.0.0 - checksum: 51cc1b0d0e8c37c4336b5318f3b2c9c51d6998ad6f56ea09612afcfefc9c1f596341309e934a744ae907177f28efc9f1654eacd62151e82853fcc6d37450e795 + react: ">= 0.14.0" + checksum: 417b6f1f2e0c1e00dcc12d34da457b94c7419345306a951d0a8d2d031a0c964179d6b700137870ad1397572cbc3a4454e94de7bbef914a81674edae2098f02dc languageName: node linkType: hard -"rc@npm:^1.2.7": - version: 1.2.8 - resolution: "rc@npm:1.2.8" +"react-transition-group@npm:^4.0.0, react-transition-group@npm:^4.4.0, react-transition-group@npm:^4.4.5": + version: 4.4.5 + resolution: "react-transition-group@npm:4.4.5" dependencies: - deep-extend: ^0.6.0 - ini: ~1.3.0 - minimist: ^1.2.0 - strip-json-comments: ~2.0.1 - bin: - rc: ./cli.js - checksum: 2e26e052f8be2abd64e6d1dabfbd7be03f80ec18ccbc49562d31f617d0015fbdbcf0f9eed30346ea6ab789e0fdfe4337f033f8016efdbee0df5354751842080e + "@babel/runtime": ^7.5.5 + dom-helpers: ^5.0.1 + loose-envify: ^1.4.0 + prop-types: ^15.6.2 + peerDependencies: + react: ">=16.6.0" + react-dom: ">=16.6.0" + checksum: 75602840106aa9c6545149d6d7ae1502fb7b7abadcce70a6954c4b64a438ff1cd16fc77a0a1e5197cdd72da398f39eb929ea06f9005c45b132ed34e056ebdeb1 languageName: node linkType: hard -"react-dev-utils@npm:^12.0.0-next.60": - version: 12.0.1 - resolution: "react-dev-utils@npm:12.0.1" +"react-universal-interface@npm:^0.6.2": + version: 0.6.2 + resolution: "react-universal-interface@npm:0.6.2" + peerDependencies: + react: "*" + tslib: "*" + checksum: 070a7e9e3cdd8b0ec91a2ac9ac0a8df6bcb3fd183d2775bf0f439b9870fc1faf5b4fa9fe9741abd5187f0a35be645cb4004e1c9ebda9ada7e5d0a624f94910cb + languageName: node + linkType: hard + +"react-use@npm:^17.2.4, react-use@npm:^17.3.2, react-use@npm:^17.4.0": + version: 17.6.0 + resolution: "react-use@npm:17.6.0" dependencies: - "@babel/code-frame": ^7.16.0 - address: ^1.1.2 - browserslist: ^4.18.1 - chalk: ^4.1.2 - cross-spawn: ^7.0.3 - detect-port-alt: ^1.1.6 - escape-string-regexp: ^4.0.0 - filesize: ^8.0.6 - find-up: ^5.0.0 - fork-ts-checker-webpack-plugin: ^6.5.0 - global-modules: ^2.0.0 - globby: ^11.0.4 - gzip-size: ^6.0.0 - immer: ^9.0.7 - is-root: ^2.1.0 - loader-utils: ^3.2.0 - open: ^8.4.0 - pkg-up: ^3.1.0 - prompts: ^2.4.2 - react-error-overlay: ^6.0.11 - recursive-readdir: ^2.2.2 - shell-quote: ^1.7.3 - strip-ansi: ^6.0.1 - text-table: ^0.2.0 - checksum: 2c6917e47f03d9595044770b0f883a61c6b660fcaa97b8ba459a1d57c9cca9aa374cd51296b22d461ff5e432105dbe6f04732dab128e52729c79239e1c23ab56 + "@types/js-cookie": ^2.2.6 + "@xobotyi/scrollbar-width": ^1.9.5 + copy-to-clipboard: ^3.3.1 + fast-deep-equal: ^3.1.3 + fast-shallow-equal: ^1.0.0 + js-cookie: ^2.2.1 + nano-css: ^5.6.2 + react-universal-interface: ^0.6.2 + resize-observer-polyfill: ^1.5.1 + screenfull: ^5.1.0 + set-harmonic-interval: ^1.0.1 + throttle-debounce: ^3.0.1 + ts-easing: ^0.2.0 + tslib: ^2.1.0 + peerDependencies: + react: "*" + react-dom: "*" + checksum: c76de18b56b554bfbb28199e4ad4098f4e4ab15f0d3cefef661a7a5e6a4c167ae85390fc7bc648c34b80c17498abf1e8223d7078f3e51c09e4da70e11a41a54e languageName: node linkType: hard -"react-error-overlay@npm:^6.0.11": - version: 6.0.11 - resolution: "react-error-overlay@npm:6.0.11" - checksum: ce7b44c38fadba9cedd7c095cf39192e632daeccf1d0747292ed524f17dcb056d16bc197ddee5723f9dd888f0b9b19c3b486c430319e30504289b9296f2d2c42 +"react-virtualized-auto-sizer@npm:^1.0.11": + version: 1.0.25 + resolution: "react-virtualized-auto-sizer@npm:1.0.25" + peerDependencies: + react: ^15.3.0 || ^16.0.0-alpha || ^17.0.0 || ^18.0.0 || ^19.0.0 + react-dom: ^15.3.0 || ^16.0.0-alpha || ^17.0.0 || ^18.0.0 || ^19.0.0 + checksum: 1d325db5bf78fd4a6a8df90fccc9a50b29c648d899d2ce779159903c7eaba2a98254e6436ca6d366b89c44c8b2de7042425dd36d17874d2b51a2455557423c3a languageName: node linkType: hard -"react-is@npm:^16.13.1": - version: 16.13.1 - resolution: "react-is@npm:16.13.1" - checksum: f7a19ac3496de32ca9ae12aa030f00f14a3d45374f1ceca0af707c831b2a6098ef0d6bdae51bd437b0a306d7f01d4677fcc8de7c0d331eb47ad0f46130e53c5f +"react-window@npm:^1.8.10, react-window@npm:^1.8.6": + version: 1.8.11 + resolution: "react-window@npm:1.8.11" + dependencies: + "@babel/runtime": ^7.0.0 + memoize-one: ">=3.1.1 <6" + peerDependencies: + react: ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + react-dom: ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + checksum: 04f0835869fbc1dc69637416e91bd7dfd462dcb9bf33ed2db4b4a515116c7a1c1ded3ca5e6df8d9a9ea3ec4f34e8e05f642d50f969bb495a9e11906d6a8cc418 languageName: node linkType: hard -"react-is@npm:^18.0.0": +"react@npm:^16.13.1 || ^17.0.0 || ^18.0.0, react@npm:^18.0.2": version: 18.3.1 - resolution: "react-is@npm:18.3.1" - checksum: e20fe84c86ff172fc8d898251b7cc2c43645d108bf96d0b8edf39b98f9a2cae97b40520ee7ed8ee0085ccc94736c4886294456033304151c3f94978cec03df21 + resolution: "react@npm:18.3.1" + dependencies: + loose-envify: ^1.1.0 + checksum: a27bcfa8ff7c15a1e50244ad0d0c1cb2ad4375eeffefd266a64889beea6f6b64c4966c9b37d14ee32d6c9fcd5aa6ba183b6988167ab4d127d13e7cb5b386a376 languageName: node linkType: hard -"react-refresh@npm:^0.14.0": - version: 0.14.2 - resolution: "react-refresh@npm:0.14.2" - checksum: d80db4bd40a36dab79010dc8aa317a5b931f960c0d83c4f3b81f0552cbcf7f29e115b84bb7908ec6a1eb67720fff7023084eff73ece8a7ddc694882478464382 +"read-tls-client-hello@npm:^1.0.0": + version: 1.0.1 + resolution: "read-tls-client-hello@npm:1.0.1" + dependencies: + "@types/node": "*" + checksum: 532c1c32ef049c245b59473ad7a06ad5db61bd22258ccfb54923be24173e8cafbb1a6a17bcc783884dce9b98db15db76a9569ea9c95b2b9b729be990439b931b languageName: node linkType: hard @@ -20142,7 +33139,18 @@ __metadata: languageName: node linkType: hard -"readable-stream@npm:^2.0.1, readable-stream@npm:^2.0.2, readable-stream@npm:^2.0.5, readable-stream@npm:^2.3.3, readable-stream@npm:^2.3.6, readable-stream@npm:^2.3.8": +"readable-stream@npm:3, readable-stream@npm:^3.0.0, readable-stream@npm:^3.0.2, readable-stream@npm:^3.0.6, readable-stream@npm:^3.1.1, readable-stream@npm:^3.4.0, readable-stream@npm:^3.5.0, readable-stream@npm:^3.6.0": + version: 3.6.2 + resolution: "readable-stream@npm:3.6.2" + dependencies: + inherits: ^2.0.3 + string_decoder: ^1.1.1 + util-deprecate: ^1.0.1 + checksum: bdcbe6c22e846b6af075e32cf8f4751c2576238c5043169a1c221c92ee2878458a816a4ea33f4c67623c0b6827c8a400409bfb3cf0bf3381392d0b1dfb52ac8d + languageName: node + linkType: hard + +"readable-stream@npm:^2.0.0, readable-stream@npm:^2.0.1, readable-stream@npm:^2.0.2, readable-stream@npm:^2.0.5, readable-stream@npm:^2.2.2, readable-stream@npm:^2.3.3, readable-stream@npm:^2.3.6, readable-stream@npm:^2.3.8, readable-stream@npm:~2.3.6": version: 2.3.8 resolution: "readable-stream@npm:2.3.8" dependencies: @@ -20157,17 +33165,6 @@ __metadata: languageName: node linkType: hard -"readable-stream@npm:^3.0.2, readable-stream@npm:^3.0.6, readable-stream@npm:^3.1.1, readable-stream@npm:^3.4.0, readable-stream@npm:^3.5.0, readable-stream@npm:^3.6.0": - version: 3.6.2 - resolution: "readable-stream@npm:3.6.2" - dependencies: - inherits: ^2.0.3 - string_decoder: ^1.1.1 - util-deprecate: ^1.0.1 - checksum: bdcbe6c22e846b6af075e32cf8f4751c2576238c5043169a1c221c92ee2878458a816a4ea33f4c67623c0b6827c8a400409bfb3cf0bf3381392d0b1dfb52ac8d - languageName: node - linkType: hard - "readable-stream@npm:^4.0.0, readable-stream@npm:^4.5.2": version: 4.5.2 resolution: "readable-stream@npm:4.5.2" @@ -20181,6 +33178,15 @@ __metadata: languageName: node linkType: hard +"readable-web-to-node-stream@npm:^3.0.0": + version: 3.0.2 + resolution: "readable-web-to-node-stream@npm:3.0.2" + dependencies: + readable-stream: ^3.6.0 + checksum: 8c56cc62c68513425ddfa721954875b382768f83fa20e6b31e365ee00cbe7a3d6296f66f7f1107b16cd3416d33aa9f1680475376400d62a081a88f81f0ea7f9c + languageName: node + linkType: hard + "readdir-glob@npm:^1.1.2": version: 1.1.3 resolution: "readdir-glob@npm:1.1.3" @@ -20217,6 +33223,16 @@ __metadata: languageName: node linkType: hard +"redent@npm:^3.0.0": + version: 3.0.0 + resolution: "redent@npm:3.0.0" + dependencies: + indent-string: ^4.0.0 + strip-indent: ^3.0.0 + checksum: fa1ef20404a2d399235e83cc80bd55a956642e37dd197b4b612ba7327bf87fa32745aeb4a1634b2bab25467164ab4ed9c15be2c307923dd08b0fe7c52431ae6b + languageName: node + linkType: hard + "redis-errors@npm:^1.0.0, redis-errors@npm:^1.2.0": version: 1.2.0 resolution: "redis-errors@npm:1.2.0" @@ -20233,6 +33249,45 @@ __metadata: languageName: node linkType: hard +"redis@npm:^4.7.0": + version: 4.7.0 + resolution: "redis@npm:4.7.0" + dependencies: + "@redis/bloom": 1.2.0 + "@redis/client": 1.6.0 + "@redis/graph": 1.1.1 + "@redis/json": 1.0.7 + "@redis/search": 1.2.0 + "@redis/time-series": 1.1.0 + checksum: 625172dd913118241288c33f351cda42630819bc82a1dc31f22e1d3e0a4267075ecb851aecfaf106a0c73ff287a434a3df3d2a8ce46713acf68d34d66efc39ec + languageName: node + linkType: hard + +"redux-immutable@npm:^4.0.0": + version: 4.0.0 + resolution: "redux-immutable@npm:4.0.0" + peerDependencies: + immutable: ^3.8.1 || ^4.0.0-rc.1 + checksum: c24d3408c3d3b24e10ef3040b722e1d20520bf9a6c43b37653f49de93516e198ee247184003331227fa7a1f1598fb964fb4bcb41522586b31073000a3b3820e8 + languageName: node + linkType: hard + +"redux@npm:^4.0.0, redux@npm:^4.0.4": + version: 4.2.1 + resolution: "redux@npm:4.2.1" + dependencies: + "@babel/runtime": ^7.9.2 + checksum: f63b9060c3a1d930ae775252bb6e579b42415aee7a23c4114e21a0b4ba7ec12f0ec76936c00f546893f06e139819f0e2855e0d55ebfce34ca9c026241a6950dd + languageName: node + linkType: hard + +"redux@npm:^5.0.1": + version: 5.0.1 + resolution: "redux@npm:5.0.1" + checksum: e74affa9009dd5d994878b9a1ce30d6569d986117175056edb003de2651c05b10fe7819d6fa94aea1a94de9a82f252f986547f007a2fbeb35c317a2e5f5ecf2c + languageName: node + linkType: hard + "reflect-metadata@npm:0.1.13": version: 0.1.13 resolution: "reflect-metadata@npm:0.1.13" @@ -20255,6 +33310,17 @@ __metadata: languageName: node linkType: hard +"refractor@npm:^3.6.0": + version: 3.6.0 + resolution: "refractor@npm:3.6.0" + dependencies: + hastscript: ^6.0.0 + parse-entities: ^2.0.0 + prismjs: ~1.27.0 + checksum: 39b01c4168c77c5c8486f9bf8907bbb05f257f15026057ba5728535815a2d90eed620468a4bfbb2b8ceefbb3ce3931a1be8b17152dbdbc8b0eef92450ff750a2 + languageName: node + linkType: hard + "regenerate-unicode-properties@npm:^10.2.0": version: 10.2.0 resolution: "regenerate-unicode-properties@npm:10.2.0" @@ -20271,6 +33337,20 @@ __metadata: languageName: node linkType: hard +"regenerator-runtime@npm:^0.10.5": + version: 0.10.5 + resolution: "regenerator-runtime@npm:0.10.5" + checksum: 35b33dbe5381d268b2be98f4ee4b028702acb38b012bff90723df067f915a337e5c979cce4dab4ed23febb223bbebb8820d46902f897742c55818c22c14e2a7c + languageName: node + linkType: hard + +"regenerator-runtime@npm:^0.11.0": + version: 0.11.1 + resolution: "regenerator-runtime@npm:0.11.1" + checksum: 3c97bd2c7b2b3247e6f8e2147a002eb78c995323732dad5dc70fac8d8d0b758d0295e7015b90d3d444446ae77cbd24b9f9123ec3a77018e81d8999818301b4f4 + languageName: node + linkType: hard + "regenerator-runtime@npm:^0.14.0": version: 0.14.1 resolution: "regenerator-runtime@npm:0.14.1" @@ -20287,7 +33367,7 @@ __metadata: languageName: node linkType: hard -"regexp.prototype.flags@npm:^1.5.2": +"regexp.prototype.flags@npm:^1.5.1, regexp.prototype.flags@npm:^1.5.2": version: 1.5.3 resolution: "regexp.prototype.flags@npm:1.5.3" dependencies: @@ -20331,6 +33411,13 @@ __metadata: languageName: node linkType: hard +"regression@npm:^2.0.1": + version: 2.0.1 + resolution: "regression@npm:2.0.1" + checksum: 2afb76ed65c87f22ef25dffb19fa95d70cded586ee9fcd5239f61d40993f5904bab0aae8fece73a8dddd35e19956a027004e727385ee4b4e7f800229a50edfb5 + languageName: node + linkType: hard + "relateurl@npm:^0.2.7": version: 0.2.7 resolution: "relateurl@npm:0.2.7" @@ -20338,6 +33425,60 @@ __metadata: languageName: node linkType: hard +"remark-gfm@npm:^3.0.1": + version: 3.0.1 + resolution: "remark-gfm@npm:3.0.1" + dependencies: + "@types/mdast": ^3.0.0 + mdast-util-gfm: ^2.0.0 + micromark-extension-gfm: ^2.0.0 + unified: ^10.0.0 + checksum: 02254f74d67b3419c2c9cf62d799ec35f6c6cd74db25c001361751991552a7ce86049a972107bff8122d85d15ae4a8d1a0618f3bc01a7df837af021ae9b2a04e + languageName: node + linkType: hard + +"remark-parse@npm:^10.0.0": + version: 10.0.2 + resolution: "remark-parse@npm:10.0.2" + dependencies: + "@types/mdast": ^3.0.0 + mdast-util-from-markdown: ^1.0.0 + unified: ^10.0.0 + checksum: 5041b4b44725f377e69986e02f8f072ae2222db5e7d3b6c80829756b842e811343ffc2069cae1f958a96bfa36104ab91a57d7d7e2f0cef521e210ab8c614d5c7 + languageName: node + linkType: hard + +"remark-rehype@npm:^10.0.0": + version: 10.1.0 + resolution: "remark-rehype@npm:10.1.0" + dependencies: + "@types/hast": ^2.0.0 + "@types/mdast": ^3.0.0 + mdast-util-to-hast: ^12.1.0 + unified: ^10.0.0 + checksum: b9ac8acff3383b204dfdc2599d0bdf86e6ca7e837033209584af2e6aaa6a9013e519a379afa3201299798cab7298c8f4b388de118c312c67234c133318aec084 + languageName: node + linkType: hard + +"remarkable@npm:^2.0.1": + version: 2.0.1 + resolution: "remarkable@npm:2.0.1" + dependencies: + argparse: ^1.0.10 + autolinker: ^3.11.0 + bin: + remarkable: bin/remarkable.js + checksum: aee83ece531a7196f92e668aa76450f17bc1af77ce2939153f57b289b54f3aa3a72f355f4d57680336ab8205d53dca7ae06e6e743355ad2d4868cc7c85eafe89 + languageName: node + linkType: hard + +"remove-trailing-separator@npm:^1.0.1": + version: 1.1.0 + resolution: "remove-trailing-separator@npm:1.1.0" + checksum: d3c20b5a2d987db13e1cca9385d56ecfa1641bae143b620835ac02a6b70ab88f68f117a0021838db826c57b31373d609d52e4f31aca75fc490c862732d595419 + languageName: node + linkType: hard + "renderkid@npm:^3.0.0": version: 3.0.0 resolution: "renderkid@npm:3.0.0" @@ -20351,6 +33492,13 @@ __metadata: languageName: node linkType: hard +"repeat-string@npm:^1.5.2": + version: 1.6.1 + resolution: "repeat-string@npm:1.6.1" + checksum: 1b809fc6db97decdc68f5b12c4d1a671c8e3f65ec4a40c238bc5200e44e85bcc52a54f78268ab9c29fcf5fe4f1343e805420056d1f30fa9a9ee4c2d93e3cc6c0 + languageName: node + linkType: hard + "replace-in-file@npm:^7.1.0": version: 7.2.0 resolution: "replace-in-file@npm:7.2.0" @@ -20413,6 +33561,27 @@ __metadata: languageName: node linkType: hard +"reselect@npm:^5.1.1": + version: 5.1.1 + resolution: "reselect@npm:5.1.1" + checksum: 5d32d48be29071ddda21a775945c2210cf4ca3fccde1c4a0e1582ac3bf99c431c6c2330ef7ca34eae4c06feea617e7cb2c275c4b33ccf9a930836dfc98b49b13 + languageName: node + linkType: hard + +"resize-observer-polyfill@npm:^1.5.0, resize-observer-polyfill@npm:^1.5.1": + version: 1.5.1 + resolution: "resize-observer-polyfill@npm:1.5.1" + checksum: 57e7f79489867b00ba43c9c051524a5c8f162a61d5547e99333549afc23e15c44fd43f2f318ea0261ea98c0eb3158cca261e6f48d66e1ed1cd1f340a43977094 + languageName: node + linkType: hard + +"resolve-alpn@npm:^1.2.0": + version: 1.2.1 + resolution: "resolve-alpn@npm:1.2.1" + checksum: f558071fcb2c60b04054c99aebd572a2af97ef64128d59bef7ab73bd50d896a222a056de40ffc545b633d99b304c259ea9d0c06830d5c867c34f0bfa60b8eae0 + languageName: node + linkType: hard + "resolve-cwd@npm:^3.0.0": version: 3.0.0 resolution: "resolve-cwd@npm:3.0.0" @@ -20432,6 +33601,13 @@ __metadata: languageName: node linkType: hard +"resolve-from@npm:5.0.0, resolve-from@npm:^5.0.0": + version: 5.0.0 + resolution: "resolve-from@npm:5.0.0" + checksum: 4ceeb9113e1b1372d0cd969f3468fa042daa1dd9527b1b6bb88acb6ab55d8b9cd65dbf18819f9f9ddf0db804990901dcdaade80a215e7b2c23daae38e64f5bdf + languageName: node + linkType: hard + "resolve-from@npm:^4.0.0": version: 4.0.0 resolution: "resolve-from@npm:4.0.0" @@ -20439,13 +33615,6 @@ __metadata: languageName: node linkType: hard -"resolve-from@npm:^5.0.0": - version: 5.0.0 - resolution: "resolve-from@npm:5.0.0" - checksum: 4ceeb9113e1b1372d0cd969f3468fa042daa1dd9527b1b6bb88acb6ab55d8b9cd65dbf18819f9f9ddf0db804990901dcdaade80a215e7b2c23daae38e64f5bdf - languageName: node - linkType: hard - "resolve-pkg-maps@npm:^1.0.0": version: 1.0.0 resolution: "resolve-pkg-maps@npm:1.0.0" @@ -20522,6 +33691,20 @@ __metadata: languageName: node linkType: hard +"ret@npm:^0.2.0": + version: 0.2.2 + resolution: "ret@npm:0.2.2" + checksum: 774964bb413a3525e687bca92d81c1cd75555ec33147c32ecca22f3d06409e35df87952cfe3d57afff7650a0f7e42139cf60cb44e94c29dde390243bc1941f16 + languageName: node + linkType: hard + +"ret@npm:~0.1.10": + version: 0.1.15 + resolution: "ret@npm:0.1.15" + checksum: d76a9159eb8c946586567bd934358dfc08a36367b3257f7a3d7255fdd7b56597235af23c6afa0d7f0254159e8051f93c918809962ebd6df24ca2a83dbe4d4151 + languageName: node + linkType: hard + "retry-request@npm:^7.0.0": version: 7.0.2 resolution: "retry-request@npm:7.0.2" @@ -20568,6 +33751,17 @@ __metadata: languageName: node linkType: hard +"rifm@npm:^0.7.0": + version: 0.7.0 + resolution: "rifm@npm:0.7.0" + dependencies: + "@babel/runtime": ^7.3.1 + peerDependencies: + react: ">=16.8" + checksum: 7b89d9c5c92cb1b6848964ab5c5042d652ba803fe7ecea2282191e0e820b07fb3345306b2baf69af1cef2f0755c50e97efc51d0cfdd645b8956d05d5d19d381e + languageName: node + linkType: hard + "rimraf@npm:^3.0.2": version: 3.0.2 resolution: "rimraf@npm:3.0.2" @@ -20603,6 +33797,13 @@ __metadata: languageName: node linkType: hard +"robust-predicates@npm:^3.0.2": + version: 3.0.2 + resolution: "robust-predicates@npm:3.0.2" + checksum: 36854c1321548ceca96d36ad9d6e0a5a512986029ec6929ad6ed3ec1612c22cc8b46cc72d2c5674af42e8074a119d793f6f0ea3a5b51373e3ab926c64b172d7a + languageName: node + linkType: hard + "rollup-plugin-dts@npm:^4.0.1": version: 4.2.3 resolution: "rollup-plugin-dts@npm:4.2.3" @@ -20781,6 +33982,15 @@ __metadata: languageName: node linkType: hard +"rtl-css-js@npm:^1.16.1": + version: 1.16.1 + resolution: "rtl-css-js@npm:1.16.1" + dependencies: + "@babel/runtime": ^7.1.2 + checksum: 7d9ab942098eee565784ccf957f6b7dfa78ea1eec7c6bffedc6641575d274189e90752537c7bdba1f43ae6534648144f467fd6d581527455ba626a4300e62c7a + languageName: node + linkType: hard + "run-applescript@npm:^7.0.0": version: 7.0.0 resolution: "run-applescript@npm:7.0.0" @@ -20811,7 +34021,14 @@ __metadata: languageName: node linkType: hard -"rxjs@npm:7.8.1, rxjs@npm:^7.5.5": +"rw@npm:1": + version: 1.3.3 + resolution: "rw@npm:1.3.3" + checksum: c20d82421f5a71c86a13f76121b751553a99cd4a70ea27db86f9b23f33db941f3f06019c30f60d50c356d0bd674c8e74764ac146ea55e217c091bde6fba82aa3 + languageName: node + linkType: hard + +"rxjs@npm:7.8.1, rxjs@npm:^7.5.5, rxjs@npm:^7.8.1": version: 7.8.1 resolution: "rxjs@npm:7.8.1" dependencies: @@ -20829,6 +34046,22 @@ __metadata: languageName: node linkType: hard +"sade@npm:^1.7.3": + version: 1.8.1 + resolution: "sade@npm:1.8.1" + dependencies: + mri: ^1.1.0 + checksum: 0756e5b04c51ccdc8221ebffd1548d0ce5a783a44a0fa9017a026659b97d632913e78f7dca59f2496aa996a0be0b0c322afd87ca72ccd909406f49dbffa0f45d + languageName: node + linkType: hard + +"safari-14-idb-fix@npm:^1.0.6": + version: 1.0.6 + resolution: "safari-14-idb-fix@npm:1.0.6" + checksum: 588cd632606ff0e47d64d0b71d88f9626f6187177a3187cb063a272ecb0412f7453f4e9321a9e731a1439b7830aa24f907e2338b402e1ef24e8d6a42f7ce8532 + languageName: node + linkType: hard + "safe-array-concat@npm:^1.1.2": version: 1.1.2 resolution: "safe-array-concat@npm:1.1.2" @@ -20894,6 +34127,22 @@ __metadata: languageName: node linkType: hard +"sax@npm:>=0.6.0": + version: 1.4.1 + resolution: "sax@npm:1.4.1" + checksum: 3ad64df16b743f0f2eb7c38ced9692a6d924f1cd07bbe45c39576c2cf50de8290d9d04e7b2228f924c7d05fecc4ec5cf651423278e0c7b63d260c387ef3af84a + languageName: node + linkType: hard + +"saxes@npm:^5.0.1": + version: 5.0.1 + resolution: "saxes@npm:5.0.1" + dependencies: + xmlchars: ^2.2.0 + checksum: 5636b55cf15f7cf0baa73f2797bf992bdcf75d1b39d82c0aa4608555c774368f6ac321cb641fd5f3d3ceb87805122cd47540da6a7b5960fe0dbdb8f8c263f000 + languageName: node + linkType: hard + "saxes@npm:^6.0.0": version: 6.0.0 resolution: "saxes@npm:6.0.0" @@ -20903,6 +34152,15 @@ __metadata: languageName: node linkType: hard +"scheduler@npm:^0.23.2": + version: 0.23.2 + resolution: "scheduler@npm:0.23.2" + dependencies: + loose-envify: ^1.1.0 + checksum: 3e82d1f419e240ef6219d794ff29c7ee415fbdc19e038f680a10c067108e06284f1847450a210b29bbaf97b9d8a97ced5f624c31c681248ac84c80d56ad5a2c4 + languageName: node + linkType: hard + "schema-utils@npm:2.7.0": version: 2.7.0 resolution: "schema-utils@npm:2.7.0" @@ -20937,6 +34195,22 @@ __metadata: languageName: node linkType: hard +"schemes@npm:^1.4.0": + version: 1.4.0 + resolution: "schemes@npm:1.4.0" + dependencies: + extend: ^3.0.0 + checksum: 729646ac65fbf2b76529c8bbb3433b1079891c4916556d2e1302bfb0c6b84dafcc00ee56e76c4572becd70a2c22a8fd4690b656ea43d1e6b70c180720735948e + languageName: node + linkType: hard + +"screenfull@npm:5.2.0, screenfull@npm:^5.1.0": + version: 5.2.0 + resolution: "screenfull@npm:5.2.0" + checksum: 21eae33b780eb4679ea0ea2d14734b11168cf35049c45a2bf24ddeb39c67a788e7a8fb46d8b61ca6d8367fd67ce9dd4fc8bfe476489249c7189c2a79cf83f51a + languageName: node + linkType: hard + "select-hose@npm:^2.0.0": version: 2.0.0 resolution: "select-hose@npm:2.0.0" @@ -20970,7 +34244,7 @@ __metadata: languageName: node linkType: hard -"semver@npm:^6.3.0, semver@npm:^6.3.1": +"semver@npm:^6.0.0, semver@npm:^6.3.0, semver@npm:^6.3.1": version: 6.3.1 resolution: "semver@npm:6.3.1" bin: @@ -21027,7 +34301,7 @@ __metadata: languageName: node linkType: hard -"serialize-error@npm:^8.0.1": +"serialize-error@npm:^8.0.1, serialize-error@npm:^8.1.0": version: 8.1.0 resolution: "serialize-error@npm:8.1.0" dependencies: @@ -21086,7 +34360,7 @@ __metadata: languageName: node linkType: hard -"set-function-length@npm:^1.2.1": +"set-function-length@npm:^1.2.1, set-function-length@npm:^1.2.2": version: 1.2.2 resolution: "set-function-length@npm:1.2.2" dependencies: @@ -21112,7 +34386,24 @@ __metadata: languageName: node linkType: hard -"setimmediate@npm:^1.0.4": +"set-harmonic-interval@npm:^1.0.1": + version: 1.0.1 + resolution: "set-harmonic-interval@npm:1.0.1" + checksum: c122b831c2e0b1fb812e5e9d065094b9d174bd0576f9a779ab7a7d8881c8f6dd7d5fcab9a2553da15eea670eb598f9dd4d5162b626d45cc9c529706aa1444a84 + languageName: node + linkType: hard + +"set-value@npm:^4.1.0": + version: 4.1.0 + resolution: "set-value@npm:4.1.0" + dependencies: + is-plain-object: ^2.0.4 + is-primitive: ^3.0.1 + checksum: 2b4f0f222538ae4c1f4171a5014c113649631c86ed81d1ac0c2df406d0a974d8006412ce1d7844c531268f1c66eb912f7eae7245ab3114e34357f1ff9d6dc697 + languageName: node + linkType: hard + +"setimmediate@npm:^1.0.4, setimmediate@npm:^1.0.5": version: 1.0.5 resolution: "setimmediate@npm:1.0.5" checksum: c9a6f2c5b51a2dabdc0247db9c46460152ffc62ee139f3157440bd48e7c59425093f42719ac1d7931f054f153e2d26cf37dfeb8da17a794a58198a2705e527fd @@ -21133,7 +34424,7 @@ __metadata: languageName: node linkType: hard -"sha.js@npm:^2.4.0, sha.js@npm:^2.4.8, sha.js@npm:^2.4.9": +"sha.js@npm:^2.4.0, sha.js@npm:^2.4.11, sha.js@npm:^2.4.8, sha.js@npm:^2.4.9": version: 2.4.11 resolution: "sha.js@npm:2.4.11" dependencies: @@ -21184,6 +34475,51 @@ __metadata: languageName: node linkType: hard +"short-unique-id@npm:^5.0.2": + version: 5.2.0 + resolution: "short-unique-id@npm:5.2.0" + bin: + short-unique-id: bin/short-unique-id + suid: bin/short-unique-id + checksum: 55bfa5766cc7a1c5905a44337d0a1f8b5000174dec6b6e3039b6f93cf8f62b81ed4e5a525572266cbe20303a233f298cb3988c0f373ec0543a2706fe1b7f6cfc + languageName: node + linkType: hard + +"side-channel-list@npm:^1.0.0": + version: 1.0.0 + resolution: "side-channel-list@npm:1.0.0" + dependencies: + es-errors: ^1.3.0 + object-inspect: ^1.13.3 + checksum: 603b928997abd21c5a5f02ae6b9cc36b72e3176ad6827fab0417ead74580cc4fb4d5c7d0a8a2ff4ead34d0f9e35701ed7a41853dac8a6d1a664fcce1a044f86f + languageName: node + linkType: hard + +"side-channel-map@npm:^1.0.1": + version: 1.0.1 + resolution: "side-channel-map@npm:1.0.1" + dependencies: + call-bound: ^1.0.2 + es-errors: ^1.3.0 + get-intrinsic: ^1.2.5 + object-inspect: ^1.13.3 + checksum: 42501371cdf71f4ccbbc9c9e2eb00aaaab80a4c1c429d5e8da713fd4d39ef3b8d4a4b37ed4f275798a65260a551a7131fd87fe67e922dba4ac18586d6aab8b06 + languageName: node + linkType: hard + +"side-channel-weakmap@npm:^1.0.2": + version: 1.0.2 + resolution: "side-channel-weakmap@npm:1.0.2" + dependencies: + call-bound: ^1.0.2 + es-errors: ^1.3.0 + get-intrinsic: ^1.2.5 + object-inspect: ^1.13.3 + side-channel-map: ^1.0.1 + checksum: a815c89bc78c5723c714ea1a77c938377ea710af20d4fb886d362b0d1f8ac73a17816a5f6640f354017d7e292a43da9c5e876c22145bac00b76cfb3468001736 + languageName: node + linkType: hard + "side-channel@npm:^1.0.4, side-channel@npm:^1.0.6": version: 1.0.6 resolution: "side-channel@npm:1.0.6" @@ -21196,7 +34532,20 @@ __metadata: languageName: node linkType: hard -"signal-exit@npm:^3.0.2, signal-exit@npm:^3.0.3, signal-exit@npm:^3.0.7": +"side-channel@npm:^1.1.0": + version: 1.1.0 + resolution: "side-channel@npm:1.1.0" + dependencies: + es-errors: ^1.3.0 + object-inspect: ^1.13.3 + side-channel-list: ^1.0.0 + side-channel-map: ^1.0.1 + side-channel-weakmap: ^1.0.2 + checksum: bf73d6d6682034603eb8e99c63b50155017ed78a522d27c2acec0388a792c3ede3238b878b953a08157093b85d05797217d270b7666ba1f111345fbe933380ff + languageName: node + linkType: hard + +"signal-exit@npm:^3.0.0, signal-exit@npm:^3.0.2, signal-exit@npm:^3.0.3, signal-exit@npm:^3.0.7": version: 3.0.7 resolution: "signal-exit@npm:3.0.7" checksum: a2f098f247adc367dffc27845853e9959b9e88b01cb301658cfe4194352d8d2bb32e18467c786a7fe15f1d44b233ea35633d076d5e737870b7139949d1ab6318 @@ -21226,6 +34575,26 @@ __metadata: languageName: node linkType: hard +"simple-eval@npm:1.0.1": + version: 1.0.1 + resolution: "simple-eval@npm:1.0.1" + dependencies: + jsep: ^1.3.6 + checksum: 280207cfe4538c500f6b41e4d88576cf250337b0042bec8f9f5cf025b3a70e07974e522edd01e69d378767dd73068765d4f46ad55db5c94943c8f3585bff95af + languageName: node + linkType: hard + +"simple-get@npm:^3.0.3": + version: 3.1.1 + resolution: "simple-get@npm:3.1.1" + dependencies: + decompress-response: ^4.2.0 + once: ^1.3.1 + simple-concat: ^1.0.0 + checksum: 80195e70bf171486e75c31e28e5485468195cc42f85940f8b45c4a68472160144d223eb4d07bc82ef80cb974b7c401db021a540deb2d34ac4b3b8883da2d6401 + languageName: node + linkType: hard + "simple-get@npm:^4.0.0, simple-get@npm:^4.0.1": version: 4.0.1 resolution: "simple-get@npm:4.0.1" @@ -21274,6 +34643,24 @@ __metadata: languageName: node linkType: hard +"smtp-address-parser@npm:1.0.10": + version: 1.0.10 + resolution: "smtp-address-parser@npm:1.0.10" + dependencies: + nearley: ^2.20.1 + checksum: 5cf2e960a6836ebec68bb5185c62bc3d343e6fdb1434f8d0d6c273e8d5359b11f2560dea5ecbbd98a77f01f8ef94b56c31d3f6ff24a5c44ba6530b9af7b63626 + languageName: node + linkType: hard + +"smtp-address-parser@npm:^1.0.3": + version: 1.1.0 + resolution: "smtp-address-parser@npm:1.1.0" + dependencies: + nearley: ^2.20.1 + checksum: 63314f22dfe6f2ab2845c4ffa68a48cbd1569507cf9ee429c45beff7c4b5957d6f63e84c31fe0d148f67e4b000c76cb1d8a9d1f0f6bd5a678fa9d6a80bac70e2 + languageName: node + linkType: hard + "snake-case@npm:^3.0.4": version: 3.0.4 resolution: "snake-case@npm:3.0.4" @@ -21317,6 +34704,17 @@ __metadata: languageName: node linkType: hard +"socks-proxy-agent@npm:^8.0.5": + version: 8.0.5 + resolution: "socks-proxy-agent@npm:8.0.5" + dependencies: + agent-base: ^7.1.2 + debug: ^4.3.4 + socks: ^2.8.3 + checksum: b4fbcdb7ad2d6eec445926e255a1fb95c975db0020543fbac8dfa6c47aecc6b3b619b7fb9c60a3f82c9b2969912a5e7e174a056ae4d98cb5322f3524d6036e1d + languageName: node + linkType: hard + "socks@npm:^2.6.2, socks@npm:^2.8.3": version: 2.8.3 resolution: "socks@npm:2.8.3" @@ -21327,6 +34725,16 @@ __metadata: languageName: node linkType: hard +"sonic-boom@npm:^0.7.5": + version: 0.7.7 + resolution: "sonic-boom@npm:0.7.7" + dependencies: + atomic-sleep: ^1.0.0 + flatstr: ^1.0.12 + checksum: b08e20dfa8d888ba32393141f96d195ab6fdecf341a736f25d9c1127cf0de8eaa4e03cde38c23cfa06c50a20ba4b5cb1b107dfc1251283b7c7a153c50f646628 + languageName: node + linkType: hard + "sorted-array-functions@npm:^1.3.0": version: 1.3.0 resolution: "sorted-array-functions@npm:1.3.0" @@ -21368,6 +34776,20 @@ __metadata: languageName: node linkType: hard +"source-map@npm:0.5.6": + version: 0.5.6 + resolution: "source-map@npm:0.5.6" + checksum: 390b3f5165c9631a74fb6fb55ba61e62a7f9b7d4026ae0e2bfc2899c241d71c1bccb8731c496dc7f7cb79a5f523406eb03d8c5bebe8448ee3fc38168e2d209c8 + languageName: node + linkType: hard + +"source-map@npm:^0.5.7": + version: 0.5.7 + resolution: "source-map@npm:0.5.7" + checksum: 5dc2043b93d2f194142c7f38f74a24670cd7a0063acdaf4bf01d2964b402257ae843c2a8fa822ad5b71013b5fcafa55af7421383da919752f22ff488bc553f4d + languageName: node + linkType: hard + "source-map@npm:^0.6.0, source-map@npm:^0.6.1, source-map@npm:~0.6.0, source-map@npm:~0.6.1": version: 0.6.1 resolution: "source-map@npm:0.6.1" @@ -21389,7 +34811,21 @@ __metadata: languageName: node linkType: hard -"spawn-command@npm:^0.0.2-1": +"space-separated-tokens@npm:^1.0.0": + version: 1.1.5 + resolution: "space-separated-tokens@npm:1.1.5" + checksum: 8ef68f1cfa8ccad316b7f8d0df0919d0f1f6d32101e8faeee34ea3a923ce8509c1ad562f57388585ee4951e92d27afa211ed0a077d3d5995b5ba9180331be708 + languageName: node + linkType: hard + +"space-separated-tokens@npm:^2.0.0": + version: 2.0.2 + resolution: "space-separated-tokens@npm:2.0.2" + checksum: 202e97d7ca1ba0758a0aa4fe226ff98142073bcceeff2da3aad037968878552c3bbce3b3231970025375bbba5aee00c5b8206eda408da837ab2dc9c0f26be990 + languageName: node + linkType: hard + +"spawn-command@npm:0.0.2, spawn-command@npm:^0.0.2-1": version: 0.0.2 resolution: "spawn-command@npm:0.0.2" checksum: e35c5d28177b4d461d33c88cc11f6f3a5079e2b132c11e1746453bbb7a0c0b8a634f07541a2a234fa4758239d88203b758def509161b651e81958894c0b4b64b @@ -21440,6 +34876,15 @@ __metadata: languageName: node linkType: hard +"split2@npm:^3.0.0": + version: 3.2.2 + resolution: "split2@npm:3.2.2" + dependencies: + readable-stream: ^3.0.0 + checksum: 8127ddbedd0faf31f232c0e9192fede469913aa8982aa380752e0463b2e31c2359ef6962eb2d24c125bac59eeec76873678d723b1c7ff696216a1cd071e3994a + languageName: node + linkType: hard + "split2@npm:^4.1.0": version: 4.2.0 resolution: "split2@npm:4.2.0" @@ -21447,6 +34892,15 @@ __metadata: languageName: node linkType: hard +"split@npm:0.3": + version: 0.3.3 + resolution: "split@npm:0.3.3" + dependencies: + through: 2 + checksum: 2e076634c9637cfdc54ab4387b6a243b8c33b360874a25adf6f327a5647f07cb3bf1c755d515248eb3afee4e382278d01f62c62d87263c118f28065b86f74f02 + languageName: node + linkType: hard + "sprintf-js@npm:^1.1.2, sprintf-js@npm:^1.1.3": version: 1.1.3 resolution: "sprintf-js@npm:1.1.3" @@ -21541,6 +34995,15 @@ __metadata: languageName: node linkType: hard +"stack-generator@npm:^2.0.5": + version: 2.0.10 + resolution: "stack-generator@npm:2.0.10" + dependencies: + stackframe: ^1.3.4 + checksum: 4fc3978a934424218a0aa9f398034e1f78153d5ff4f4ff9c62478c672debb47dd58de05b09fc3900530cbb526d72c93a6e6c9353bacc698e3b1c00ca3dda0c47 + languageName: node + linkType: hard + "stack-trace@npm:0.0.x": version: 0.0.10 resolution: "stack-trace@npm:0.0.10" @@ -21564,6 +35027,27 @@ __metadata: languageName: node linkType: hard +"stacktrace-gps@npm:^3.0.4": + version: 3.1.2 + resolution: "stacktrace-gps@npm:3.1.2" + dependencies: + source-map: 0.5.6 + stackframe: ^1.3.4 + checksum: 85daa232d138239b6ae0f4bcdd87d15d302a045d93625db17614030945b5314e204b5fbcf9bee5b6f4f9e6af5fca05f65c27fe910894b861ef6853b99470aa1c + languageName: node + linkType: hard + +"stacktrace-js@npm:^2.0.2": + version: 2.0.2 + resolution: "stacktrace-js@npm:2.0.2" + dependencies: + error-stack-parser: ^2.0.6 + stack-generator: ^2.0.5 + stacktrace-gps: ^3.0.4 + checksum: 081e786d56188ac04ac6604c09cd863b3ca2b4300ec061366cf68c3e4ad9edaa34fb40deea03cc23a05f442aa341e9171f47313f19bd588f9bec6c505a396286 + languageName: node + linkType: hard + "standard-as-callback@npm:^2.1.0": version: 2.1.0 resolution: "standard-as-callback@npm:2.1.0" @@ -21571,6 +35055,26 @@ __metadata: languageName: node linkType: hard +"start-server-and-test@npm:2.0.8": + version: 2.0.8 + resolution: "start-server-and-test@npm:2.0.8" + dependencies: + arg: ^5.0.2 + bluebird: 3.7.2 + check-more-types: 2.24.0 + debug: 4.3.7 + execa: 5.1.1 + lazy-ass: 1.6.0 + ps-tree: 1.2.0 + wait-on: 8.0.1 + bin: + server-test: src/bin/start.js + start-server-and-test: src/bin/start.js + start-test: src/bin/start.js + checksum: 64cd27598348d8b276f489fa2b394b1141819719f729118b2ba19cfce32df134491c889163a1709013e630cbd988384be9b3e501e3062604b66b1fb3f4db9e50 + languageName: node + linkType: hard + "static-eval@npm:2.0.2": version: 2.0.2 resolution: "static-eval@npm:2.0.2" @@ -21587,13 +35091,23 @@ __metadata: languageName: node linkType: hard -"statuses@npm:>= 1.4.0 < 2, statuses@npm:>= 1.5.0 < 2, statuses@npm:^1.5.0": +"statuses@npm:>= 1.4.0 < 2, statuses@npm:>= 1.5.0 < 2, statuses@npm:^1.5.0, statuses@npm:~1.5.0": version: 1.5.0 resolution: "statuses@npm:1.5.0" checksum: c469b9519de16a4bb19600205cffb39ee471a5f17b82589757ca7bd40a8d92ebb6ed9f98b5a540c5d302ccbc78f15dc03cc0280dd6e00df1335568a5d5758a5c languageName: node linkType: hard +"stop-iteration-iterator@npm:^1.0.0": + version: 1.1.0 + resolution: "stop-iteration-iterator@npm:1.1.0" + dependencies: + es-errors: ^1.3.0 + internal-slot: ^1.1.0 + checksum: be944489d8829fb3bdec1a1cc4a2142c6b6eb317305eeace1ece978d286d6997778afa1ae8cb3bd70e2b274b9aa8c69f93febb1e15b94b1359b11058f9d3c3a1 + languageName: node + linkType: hard + "stoppable@npm:^1.1.0": version: 1.1.0 resolution: "stoppable@npm:1.1.0" @@ -21601,6 +35115,16 @@ __metadata: languageName: node linkType: hard +"stream-browserify@npm:3.0.0": + version: 3.0.0 + resolution: "stream-browserify@npm:3.0.0" + dependencies: + inherits: ~2.0.4 + readable-stream: ^3.5.0 + checksum: 4c47ef64d6f03815a9ca3874e2319805e8e8a85f3550776c47ce523b6f4c6cd57f40e46ec6a9ab8ad260fde61863c2718f250d3bedb3fe9052444eb9abfd9921 + languageName: node + linkType: hard + "stream-browserify@npm:^2.0.1": version: 2.0.2 resolution: "stream-browserify@npm:2.0.2" @@ -21618,6 +35142,15 @@ __metadata: languageName: node linkType: hard +"stream-combiner@npm:~0.0.4": + version: 0.0.4 + resolution: "stream-combiner@npm:0.0.4" + dependencies: + duplexer: ~0.1.1 + checksum: 844b622cfe8b9de45a6007404f613b60aaf85200ab9862299066204242f89a7c8033b1c356c998aa6cfc630f6cd9eba119ec1c6dc1f93e245982be4a847aee7d + languageName: node + linkType: hard + "stream-events@npm:^1.0.5": version: 1.0.5 resolution: "stream-events@npm:1.0.5" @@ -21640,7 +35173,7 @@ __metadata: languageName: node linkType: hard -"stream-shift@npm:^1.0.2": +"stream-shift@npm:^1.0.0, stream-shift@npm:^1.0.2": version: 1.0.3 resolution: "stream-shift@npm:1.0.3" checksum: a24c0a3f66a8f9024bd1d579a533a53be283b4475d4e6b4b3211b964031447bdf6532dd1f3c2b0ad66752554391b7c62bd7ca4559193381f766534e723d50242 @@ -21658,6 +35191,13 @@ __metadata: languageName: node linkType: hard +"streamsearch@npm:^1.1.0": + version: 1.1.0 + resolution: "streamsearch@npm:1.1.0" + checksum: 1cce16cea8405d7a233d32ca5e00a00169cc0e19fbc02aa839959985f267335d435c07f96e5e0edd0eadc6d39c98d5435fb5bbbdefc62c41834eadc5622ad942 + languageName: node + linkType: hard + "streamx@npm:^2.15.0, streamx@npm:^2.20.0": version: 2.20.1 resolution: "streamx@npm:2.20.1" @@ -21696,6 +35236,13 @@ __metadata: languageName: node linkType: hard +"string-env-interpolation@npm:^1.0.1": + version: 1.0.1 + resolution: "string-env-interpolation@npm:1.0.1" + checksum: d126329587f635bee65300e4451e7352b9b67e03daeb62f006ca84244cac12a1f6e45176b018653ba0c3ec3b5d980f9ca59d2eeed99cf799501cdaa7f871dc6f + languageName: node + linkType: hard + "string-hash@npm:^1.1.1": version: 1.1.3 resolution: "string-hash@npm:1.1.3" @@ -21876,6 +35423,15 @@ __metadata: languageName: node linkType: hard +"strip-indent@npm:^3.0.0": + version: 3.0.0 + resolution: "strip-indent@npm:3.0.0" + dependencies: + min-indent: ^1.0.0 + checksum: 18f045d57d9d0d90cd16f72b2313d6364fd2cb4bf85b9f593523ad431c8720011a4d5f08b6591c9d580f446e78855c5334a30fb91aa1560f5d9f95ed1b4a0530 + languageName: node + linkType: hard + "strip-json-comments@npm:5.0.1": version: 5.0.1 resolution: "strip-json-comments@npm:5.0.1" @@ -21904,6 +35460,16 @@ __metadata: languageName: node linkType: hard +"strtok3@npm:^6.2.4": + version: 6.3.0 + resolution: "strtok3@npm:6.3.0" + dependencies: + "@tokenizer/token": ^0.3.0 + peek-readable: ^4.1.0 + checksum: 90732cff3f325aef7c47c511f609b593e0873ec77b5081810071cde941344e6a0ee3ccb0cae1a9f5b4e12c81a2546fd6b322fabcdfbd1dd08362c2ce5291334a + languageName: node + linkType: hard + "stubs@npm:^3.0.0": version: 3.0.0 resolution: "stubs@npm:3.0.0" @@ -21927,6 +35493,32 @@ __metadata: languageName: node linkType: hard +"style-mod@npm:^4.0.0, style-mod@npm:^4.1.0": + version: 4.1.2 + resolution: "style-mod@npm:4.1.2" + checksum: 7c5c3e82747f9bcf5f288d8d07f50848e4630fe5ff7bfe4d94cc87d6b6a2588227cbf21b4c792ac6406e5852293300a75e710714479a5c59a06af677f0825ef8 + languageName: node + linkType: hard + +"style-to-object@npm:^0.4.0": + version: 0.4.4 + resolution: "style-to-object@npm:0.4.4" + dependencies: + inline-style-parser: 0.1.1 + checksum: 41656c06f93ac0a7ac260ebc2f9d09a8bd74b8ec1836f358cc58e169235835a3a356977891d2ebbd76f0e08a53616929069199f9cce543214d3dc98346e19c9a + languageName: node + linkType: hard + +"style-value-types@npm:5.0.0": + version: 5.0.0 + resolution: "style-value-types@npm:5.0.0" + dependencies: + hey-listen: ^1.0.8 + tslib: ^2.1.0 + checksum: 16d198302cd102edf9dba94e7752a2364c93b1eaa5cc7c32b42b28eef4af4ccb5149a3f16bc2a256adc02616a2404f4612bd15f3081c1e8ca06132cae78be6c0 + languageName: node + linkType: hard + "stylehacks@npm:^5.1.1": version: 5.1.1 resolution: "stylehacks@npm:5.1.1" @@ -21939,6 +35531,20 @@ __metadata: languageName: node linkType: hard +"stylis@npm:4.2.0": + version: 4.2.0 + resolution: "stylis@npm:4.2.0" + checksum: 0eb6cc1b866dc17a6037d0a82ac7fa877eba6a757443e79e7c4f35bacedbf6421fadcab4363b39667b43355cbaaa570a3cde850f776498e5450f32ed2f9b7584 + languageName: node + linkType: hard + +"stylis@npm:^4.3.0": + version: 4.3.4 + resolution: "stylis@npm:4.3.4" + checksum: 7e3a482c7bba6e0e9e3187972e958acf800b1abe99f23e081fcb5dea8e4a05eca44286c1381ce2bc7179245ddbd7bf1f74237ed413fce7491320a543bcfebda9 + languageName: node + linkType: hard + "sucrase@npm:^3.20.2": version: 3.35.0 resolution: "sucrase@npm:3.35.0" @@ -22010,7 +35616,7 @@ __metadata: languageName: node linkType: hard -"supports-color@npm:^8.0.0, supports-color@npm:^8.1.0, supports-color@npm:~8.1.1": +"supports-color@npm:^8.0.0, supports-color@npm:^8.1.0, supports-color@npm:^8.1.1, supports-color@npm:~8.1.1": version: 8.1.1 resolution: "supports-color@npm:8.1.1" dependencies: @@ -22067,6 +35673,77 @@ __metadata: languageName: node linkType: hard +"swagger-client@npm:^3.31.0": + version: 3.32.2 + resolution: "swagger-client@npm:3.32.2" + dependencies: + "@babel/runtime-corejs3": ^7.22.15 + "@scarf/scarf": =1.4.0 + "@swagger-api/apidom-core": ">=1.0.0-beta.3 <1.0.0-rc.0" + "@swagger-api/apidom-error": ">=1.0.0-beta.3 <1.0.0-rc.0" + "@swagger-api/apidom-json-pointer": ">=1.0.0-beta.3 <1.0.0-rc.0" + "@swagger-api/apidom-ns-openapi-3-1": ">=1.0.0-beta.3 <1.0.0-rc.0" + "@swagger-api/apidom-reference": ">=1.0.0-beta.3 <1.0.0-rc.0" + cookie: ~0.7.2 + deepmerge: ~4.3.0 + fast-json-patch: ^3.0.0-1 + js-yaml: ^4.1.0 + neotraverse: =0.6.18 + node-abort-controller: ^3.1.1 + node-fetch-commonjs: ^3.3.2 + openapi-path-templating: ^1.5.1 + openapi-server-url-templating: ^1.0.0 + ramda: ^0.30.1 + ramda-adjunct: ^5.0.0 + checksum: 38c85d64a0a1e9f1e1ba44cae3a6894c7a9d0a93130e3a73095f9d2060902f8218282016c60663f17bf3c80871714e29c54383c695f2ee7e3eef6abb879c2992 + languageName: node + linkType: hard + +"swagger-ui-react@npm:^5.0.0": + version: 5.18.2 + resolution: "swagger-ui-react@npm:5.18.2" + dependencies: + "@babel/runtime-corejs3": ^7.24.7 + "@braintree/sanitize-url": =7.0.4 + "@scarf/scarf": =1.4.0 + base64-js: ^1.5.1 + classnames: ^2.5.1 + css.escape: 1.5.1 + deep-extend: 0.6.0 + dompurify: =3.1.6 + ieee754: ^1.2.1 + immutable: ^3.x.x + js-file-download: ^0.4.12 + js-yaml: =4.1.0 + lodash: ^4.17.21 + prop-types: ^15.8.1 + randexp: ^0.5.3 + randombytes: ^2.1.0 + react-copy-to-clipboard: 5.1.0 + react-debounce-input: =3.3.0 + react-immutable-proptypes: 2.2.0 + react-immutable-pure-component: ^2.2.0 + react-inspector: ^6.0.1 + react-redux: ^9.1.2 + react-syntax-highlighter: ^15.5.0 + redux: ^5.0.1 + redux-immutable: ^4.0.0 + remarkable: ^2.0.1 + reselect: ^5.1.1 + serialize-error: ^8.1.0 + sha.js: ^2.4.11 + swagger-client: ^3.31.0 + url-parse: ^1.5.10 + xml: =1.0.1 + xml-but-prettier: ^1.0.1 + zenscroll: ^4.0.2 + peerDependencies: + react: ">=16.8.0 <19" + react-dom: ">=16.8.0 <19" + checksum: 8ad40bda044c9ff5a940b4e76f88dd740dae183266dc2d48cd88b73877a0ad464f26ad41459de7d7562c5e1a0030ed5a15b99fe57d3f2919acc7ddb126c07447 + languageName: node + linkType: hard + "swc-loader@npm:^0.2.3": version: 0.2.6 resolution: "swc-loader@npm:0.2.6" @@ -22079,6 +35756,25 @@ __metadata: languageName: node linkType: hard +"swr@npm:^2.0.0": + version: 2.2.5 + resolution: "swr@npm:2.2.5" + dependencies: + client-only: ^0.0.1 + use-sync-external-store: ^1.2.0 + peerDependencies: + react: ^16.11.0 || ^17.0.0 || ^18.0.0 + checksum: c6e6a5bd254951b22e5fd0930a95c7f79b5d0657f803c41ba1542cd6376623fb70b1895049d54ddde26da63b91951ae9d62a06772f82be28c1014d421e5b7aa9 + languageName: node + linkType: hard + +"symbol-observable@npm:^1.0.4": + version: 1.2.0 + resolution: "symbol-observable@npm:1.2.0" + checksum: 48ffbc22e3d75f9853b3ff2ae94a44d84f386415110aea5effc24d84c502e03a4a6b7a8f75ebaf7b585780bda34eb5d6da3121f826a6f93398429d30032971b6 + languageName: node + linkType: hard + "symbol-tree@npm:^3.2.4": version: 3.2.4 resolution: "symbol-tree@npm:3.2.4" @@ -22086,6 +35782,13 @@ __metadata: languageName: node linkType: hard +"tabbable@npm:^6.2.0": + version: 6.2.0 + resolution: "tabbable@npm:6.2.0" + checksum: f8440277d223949272c74bb627a3371be21735ca9ad34c2570f7e1752bd646ccfc23a9d8b1ee65d6561243f4134f5fbbf1ad6b39ac3c4b586554accaff4a1300 + languageName: node + linkType: hard + "tapable@npm:^1.0.0": version: 1.1.3 resolution: "tapable@npm:1.1.3" @@ -22186,6 +35889,15 @@ __metadata: languageName: node linkType: hard +"tdigest@npm:^0.1.1": + version: 0.1.2 + resolution: "tdigest@npm:0.1.2" + dependencies: + bintrees: 1.0.2 + checksum: 44de8246752b6f8c2924685f969fd3d94c36949f22b0907e99bef2b2220726dd8467f4730ea96b06040b9aa2587c0866049640039d1b956952dfa962bc2075a3 + languageName: node + linkType: hard + "teeny-request@npm:^9.0.0": version: 9.0.0 resolution: "teeny-request@npm:9.0.0" @@ -22331,7 +36043,23 @@ __metadata: languageName: node linkType: hard -"through@npm:^2.3.6": +"throttle-debounce@npm:^3.0.1": + version: 3.0.1 + resolution: "throttle-debounce@npm:3.0.1" + checksum: e34ef638e8df3a9154249101b68afcbf2652a139c803415ef8a2f6a8bc577bcd4d79e4bb914ad3cd206523ac78b9fb7e80885bfa049f64fbb1927f99d98b5736 + languageName: node + linkType: hard + +"through2@npm:^4.0.0": + version: 4.0.2 + resolution: "through2@npm:4.0.2" + dependencies: + readable-stream: 3 + checksum: ac7430bd54ccb7920fd094b1c7ff3e1ad6edd94202e5528331253e5fde0cc56ceaa690e8df9895de2e073148c52dfbe6c4db74cacae812477a35660090960cc0 + languageName: node + linkType: hard + +"through@npm:2, through@npm:^2.3.6, through@npm:~2.3, through@npm:~2.3.1": version: 2.3.8 resolution: "through@npm:2.3.8" checksum: a38c3e059853c494af95d50c072b83f8b676a9ba2818dcc5b108ef252230735c54e0185437618596c790bbba8fcdaef5b290405981ffa09dce67b1f1bf190cbd @@ -22361,6 +36089,27 @@ __metadata: languageName: node linkType: hard +"tiny-case@npm:^1.0.3": + version: 1.0.3 + resolution: "tiny-case@npm:1.0.3" + checksum: 3f7a30c39d5b0e1bc097b0b271bec14eb5b836093db034f35a0de26c14422380b50dc12bfd37498cf35b192f5df06f28a710712c87ead68872a9e37ad6f6049d + languageName: node + linkType: hard + +"tiny-invariant@npm:^1.0.6": + version: 1.3.3 + resolution: "tiny-invariant@npm:1.3.3" + checksum: 5e185c8cc2266967984ce3b352a4e57cb89dad5a8abb0dea21468a6ecaa67cd5bb47a3b7a85d08041008644af4f667fb8b6575ba38ba5fb00b3b5068306e59fe + languageName: node + linkType: hard + +"tiny-warning@npm:^1.0.2": + version: 1.0.3 + resolution: "tiny-warning@npm:1.0.3" + checksum: da62c4acac565902f0624b123eed6dd3509bc9a8d30c06e017104bedcf5d35810da8ff72864400ad19c5c7806fc0a8323c68baf3e326af7cb7d969f846100d71 + languageName: node + linkType: hard + "tmp@npm:^0.0.33": version: 0.0.33 resolution: "tmp@npm:0.0.33" @@ -22400,6 +36149,13 @@ __metadata: languageName: node linkType: hard +"toggle-selection@npm:^1.0.6": + version: 1.0.6 + resolution: "toggle-selection@npm:1.0.6" + checksum: a90dc80ed1e7b18db8f4e16e86a5574f87632dc729cfc07d9ea3ced50021ad42bb4e08f22c0913e0b98e3837b0b717e0a51613c65f30418e21eb99da6556a74c + languageName: node + linkType: hard + "toidentifier@npm:1.0.1": version: 1.0.1 resolution: "toidentifier@npm:1.0.1" @@ -22407,6 +36163,16 @@ __metadata: languageName: node linkType: hard +"token-types@npm:^4.1.1": + version: 4.2.1 + resolution: "token-types@npm:4.2.1" + dependencies: + "@tokenizer/token": ^0.3.0 + ieee754: ^1.2.1 + checksum: cce256766b33e0f08ceffefa2198fb4961a417866d00780e58625999ab5c0699821407053e64eadc41b00bbb6c0d0c4d02fbd2199940d8a3ccb71e1b148ab9a2 + languageName: node + linkType: hard + "toposort@npm:^2.0.2": version: 2.0.2 resolution: "toposort@npm:2.0.2" @@ -22421,7 +36187,7 @@ __metadata: languageName: node linkType: hard -"tough-cookie@npm:^4.1.2": +"tough-cookie@npm:^4.0.0, tough-cookie@npm:^4.1.2": version: 4.1.4 resolution: "tough-cookie@npm:4.1.4" dependencies: @@ -22443,6 +36209,15 @@ __metadata: languageName: node linkType: hard +"tr46@npm:^2.1.0": + version: 2.1.0 + resolution: "tr46@npm:2.1.0" + dependencies: + punycode: ^2.1.1 + checksum: ffe6049b9dca3ae329b059aada7f515b0f0064c611b39b51ff6b53897e954650f6f63d9319c6c008d36ead477c7b55e5f64c9dc60588ddc91ff720d64eb710b3 + languageName: node + linkType: hard + "tr46@npm:^3.0.0": version: 3.0.0 resolution: "tr46@npm:3.0.0" @@ -22477,6 +36252,40 @@ __metadata: languageName: node linkType: hard +"tree-sitter-json@npm:=0.24.8": + version: 0.24.8 + resolution: "tree-sitter-json@npm:0.24.8" + dependencies: + node-addon-api: ^8.2.2 + node-gyp: latest + node-gyp-build: ^4.8.2 + peerDependencies: + tree-sitter: ^0.21.1 + peerDependenciesMeta: + tree-sitter: + optional: true + checksum: 740f3483a5b2dbd8b439f4b409994187029a0a26f2b8609dbad3b4405c9005f1134a813d461793d5628a593fbd7df04ecf366a917dfcd32790292e8526b5a4df + languageName: node + linkType: hard + +"tree-sitter@npm:=0.22.1": + version: 0.22.1 + resolution: "tree-sitter@npm:0.22.1" + dependencies: + node-addon-api: ^8.2.1 + node-gyp: latest + node-gyp-build: ^4.8.2 + checksum: b6bf557dd7b5f7ea477d6e8254fdb4cfba0c2db6850a2c39fbb1ae86012b9b4a09fbc2583a79793fbe31b248ac8912047b2cedc7504e17934369ecdf1bba67d4 + languageName: node + linkType: hard + +"trim-lines@npm:^3.0.0": + version: 3.0.1 + resolution: "trim-lines@npm:3.0.1" + checksum: e241da104682a0e0d807222cc1496b92e716af4db7a002f4aeff33ae6a0024fef93165d49eab11aa07c71e1347c42d46563f91dfaa4d3fb945aa535cdead53ed + languageName: node + linkType: hard + "triple-beam@npm:^1.3.0, triple-beam@npm:^1.4.1": version: 1.4.1 resolution: "triple-beam@npm:1.4.1" @@ -22484,6 +36293,13 @@ __metadata: languageName: node linkType: hard +"trough@npm:^2.0.0": + version: 2.2.0 + resolution: "trough@npm:2.2.0" + checksum: 6097df63169aca1f9b08c263b1b501a9b878387f46e161dde93f6d0bba7febba93c95f876a293c5ea370f6cb03bcb687b2488c8955c3cfb66c2c0161ea8c00f6 + languageName: node + linkType: hard + "true-case-path@npm:^1.0.3": version: 1.0.3 resolution: "true-case-path@npm:1.0.3" @@ -22500,6 +36316,13 @@ __metadata: languageName: node linkType: hard +"ts-algebra@npm:^2.0.0": + version: 2.0.0 + resolution: "ts-algebra@npm:2.0.0" + checksum: 970b0e7db49cf8c1a8ff2a816eb047fac8add47511f5e4995e4998c56c6f7b226399284412de88f3e137ab55c857a4262c0d8f02f0765730e7d3a021de2ea7ef + languageName: node + linkType: hard + "ts-api-utils@npm:^1.0.1, ts-api-utils@npm:^1.3.0": version: 1.3.0 resolution: "ts-api-utils@npm:1.3.0" @@ -22509,6 +36332,13 @@ __metadata: languageName: node linkType: hard +"ts-easing@npm:^0.2.0": + version: 0.2.0 + resolution: "ts-easing@npm:0.2.0" + checksum: e67ee862acca3b2e2718e736f31999adcef862d0df76d76a0e138588728d8a87dfec9978556044640bd0e90203590ad88ac2fe8746d0e9959b8d399132315150 + languageName: node + linkType: hard + "ts-interface-checker@npm:^0.1.9": version: 0.1.13 resolution: "ts-interface-checker@npm:0.1.13" @@ -22525,6 +36355,20 @@ __metadata: languageName: node linkType: hard +"ts-is-present@npm:^1.1.1": + version: 1.2.2 + resolution: "ts-is-present@npm:1.2.2" + checksum: 3620ecf48219d0dd108e493260a207f4733d8e39a18dffec23c7ed2b1ef2aba7158d0dfafe36f3f27d0092472535a5e474ce04ade54e972e64b2b6329d20ab0b + languageName: node + linkType: hard + +"ts-mixer@npm:^6.0.3, ts-mixer@npm:^6.0.4": + version: 6.0.4 + resolution: "ts-mixer@npm:6.0.4" + checksum: 36b1af526befd74345e736e9aa16f5c28876ebcea07784da14d929149fd7e6028cfd2fe9304c8efe8cb91b588443a9cc9e991df58e4c6e602326edbaae2af3ab + languageName: node + linkType: hard + "ts-morph@npm:^23.0.0": version: 23.0.0 resolution: "ts-morph@npm:23.0.0" @@ -22573,6 +36417,13 @@ __metadata: languageName: node linkType: hard +"ts-toolbelt@npm:^9.6.0": + version: 9.6.0 + resolution: "ts-toolbelt@npm:9.6.0" + checksum: 9f35fd95d895a5d32ea9fd2e532a695b0bae6cbff6832b77292efa188a0ed1ed6e54f63f74a8920390f3d909a7a3adb20a144686372a8e78b420246a9bd3d58a + languageName: node + linkType: hard + "tsconfig-paths@npm:^3.15.0": version: 3.15.0 resolution: "tsconfig-paths@npm:3.15.0" @@ -22592,7 +36443,7 @@ __metadata: languageName: node linkType: hard -"tslib@npm:^1.14.1, tslib@npm:^1.8.1, tslib@npm:^1.9.0": +"tslib@npm:^1.11.1, tslib@npm:^1.14.1, tslib@npm:^1.8.1, tslib@npm:^1.9.0": version: 1.14.1 resolution: "tslib@npm:1.14.1" checksum: dbe628ef87f66691d5d2959b3e41b9ca0045c3ee3c7c7b906cc1e328b39f199bb1ad9e671c39025bd56122ac57dfbf7385a94843b1cc07c60a4db74795829acd @@ -22606,6 +36457,13 @@ __metadata: languageName: node linkType: hard +"tslib@npm:^2.6.3, tslib@npm:^2.7.0, tslib@npm:^2.8.0, tslib@npm:^2.8.1": + version: 2.8.1 + resolution: "tslib@npm:2.8.1" + checksum: e4aba30e632b8c8902b47587fd13345e2827fa639e7c3121074d5ee0880723282411a8838f830b55100cbe4517672f84a2472667d355b81e8af165a55dc6203a + languageName: node + linkType: hard + "tsscmp@npm:1.0.6": version: 1.0.6 resolution: "tsscmp@npm:1.0.6" @@ -22640,6 +36498,13 @@ __metadata: languageName: node linkType: hard +"tunnel@npm:0.0.6": + version: 0.0.6 + resolution: "tunnel@npm:0.0.6" + checksum: c362948df9ad34b649b5585e54ce2838fa583aa3037091aaed66793c65b423a264e5229f0d7e9a95513a795ac2bd4cb72cda7e89a74313f182c1e9ae0b0994fa + languageName: node + linkType: hard + "tweetnacl@npm:^0.14.3, tweetnacl@npm:~0.14.0": version: 0.14.5 resolution: "tweetnacl@npm:0.14.5" @@ -22700,7 +36565,7 @@ __metadata: languageName: node linkType: hard -"type-is@npm:^1.6.16, type-is@npm:~1.6.18": +"type-is@npm:^1.6.16, type-is@npm:^1.6.4, type-is@npm:~1.6.18": version: 1.6.18 resolution: "type-is@npm:1.6.18" dependencies: @@ -22762,6 +36627,26 @@ __metadata: languageName: node linkType: hard +"typed-error@npm:^3.0.2": + version: 3.2.2 + resolution: "typed-error@npm:3.2.2" + checksum: 90d0d2ebef72a3655153d7d4ffe8607ebb38a39e38f9f19642a55542c0459afc887862ff5353d57ee77502c5c438341843b21309ecd0cf2b19a344034c9fedef + languageName: node + linkType: hard + +"typed-rest-client@npm:2.1.0": + version: 2.1.0 + resolution: "typed-rest-client@npm:2.1.0" + dependencies: + des.js: ^1.1.0 + js-md4: ^0.3.2 + qs: ^6.10.3 + tunnel: 0.0.6 + underscore: ^1.12.1 + checksum: 0877215291c11ee100620510cf0e25e1c594b8a73722d896fe4f032a18a477b285062627f5536af7695f79c28341af9ac0f192723a7d8d7b3a755925491406cb + languageName: node + linkType: hard + "typedarray@npm:^0.0.6": version: 0.0.6 resolution: "typedarray@npm:0.0.6" @@ -22769,6 +36654,22 @@ __metadata: languageName: node linkType: hard +"types-ramda@npm:^0.30.1": + version: 0.30.1 + resolution: "types-ramda@npm:0.30.1" + dependencies: + ts-toolbelt: ^9.6.0 + checksum: 7af1b5b6dbb5878e5104013f7eca7feff999b538d98d59c91ce82e69908b31223b44a163271b0c13c9828c27f6cff39f78cff0f83d82b73ac47f74ffb3fe7ded + languageName: node + linkType: hard + +"typesafe-actions@npm:^4.2.1": + version: 4.4.2 + resolution: "typesafe-actions@npm:4.4.2" + checksum: 43b3a91af74172b42e27098150d84eaa9f02f74a8f9c81225e560d48872f6a3174482651d6e6278f380ed25870edb2b949b4776382cf0393b8299a3723c56d9b + languageName: node + linkType: hard + "typescript-json-schema@npm:^0.64.0": version: 0.64.0 resolution: "typescript-json-schema@npm:0.64.0" @@ -22885,6 +36786,30 @@ __metadata: languageName: node linkType: hard +"typestyle@npm:^2.4.0": + version: 2.4.0 + resolution: "typestyle@npm:2.4.0" + dependencies: + csstype: 3.0.10 + free-style: 3.1.0 + checksum: 8b4f02c24f67b594f98507b15a753dabd4db5eb0af007e1d310527c64030e11e9464b25b5a6bc65fb5eec9a4459a8336050121ecc29063ac87b8b47a6d698893 + languageName: node + linkType: hard + +"uc.micro@npm:^1.0.1, uc.micro@npm:^1.0.5": + version: 1.0.6 + resolution: "uc.micro@npm:1.0.6" + checksum: 6898bb556319a38e9cf175e3628689347bd26fec15fc6b29fa38e0045af63075ff3fea4cf1fdba9db46c9f0cbf07f2348cd8844889dd31ebd288c29fe0d27e7a + languageName: node + linkType: hard + +"uc.micro@npm:^2.0.0, uc.micro@npm:^2.1.0": + version: 2.1.0 + resolution: "uc.micro@npm:2.1.0" + checksum: 37197358242eb9afe367502d4638ac8c5838b78792ab218eafe48287b0ed28aaca268ec0392cc5729f6c90266744de32c06ae938549aee041fc93b0f9672d6b2 + languageName: node + linkType: hard + "uglify-js@npm:^3.1.4": version: 3.19.3 resolution: "uglify-js@npm:3.19.3" @@ -22894,6 +36819,36 @@ __metadata: languageName: node linkType: hard +"uid-safe@npm:~2.1.5": + version: 2.1.5 + resolution: "uid-safe@npm:2.1.5" + dependencies: + random-bytes: ~1.0.0 + checksum: 07536043da9a026f4a2bc397543d0ace7587449afa1d9d2c4fd3ce76af8a5263a678788bcc429dff499ef29d45843cd5ee9d05434450fcfc19cc661229f703d1 + languageName: node + linkType: hard + +"uid2@npm:0.0.3": + version: 0.0.3 + resolution: "uid2@npm:0.0.3" + checksum: c8f64acfa94aa42d90c1a61ba9df0162f0db0d28c211e21cf5792b3d70b7ad9fd75d19c7cadcce81896ea111335e57e65891a3b6d0a1343a9adf45abf3d4c47d + languageName: node + linkType: hard + +"uid2@npm:0.0.x": + version: 0.0.4 + resolution: "uid2@npm:0.0.4" + checksum: e92325ce2e3b7be504b19e835dbb5a8b0495031f364b08ca46745468ed0ae0f202a4fdaf99a1a2715844156efc3ab410456ae24a0f7c0ae4b0a2e9f2784edfd9 + languageName: node + linkType: hard + +"uid2@npm:^1.0.0": + version: 1.0.0 + resolution: "uid2@npm:1.0.0" + checksum: 7efad0da3839ef2bebc6fae4bd29905702cd64233b3907e3300aa2d7ea1a00c1ae8c41a5e16ca34ac2db2d25c5607d5989673e1df51a2a076fefbeed51605ec3 + languageName: node + linkType: hard + "uid@npm:2.0.2": version: 2.0.2 resolution: "uid@npm:2.0.2" @@ -22922,6 +36877,13 @@ __metadata: languageName: node linkType: hard +"underscore@npm:^1.12.1": + version: 1.13.7 + resolution: "underscore@npm:1.13.7" + checksum: 174b011af29e4fbe2c70eb2baa8bfab0d0336cf2f5654f364484967bc6264a86224d0134b9176e4235c8cceae00d11839f0fd4824268de04b11c78aca1241684 + languageName: node + linkType: hard + "undici-types@npm:~5.26.4": version: 5.26.5 resolution: "undici-types@npm:5.26.5" @@ -22936,6 +36898,13 @@ __metadata: languageName: node linkType: hard +"undici-types@npm:~6.20.0": + version: 6.20.0 + resolution: "undici-types@npm:6.20.0" + checksum: b7bc50f012dc6afbcce56c9fd62d7e86b20a62ff21f12b7b5cbf1973b9578d90f22a9c7fe50e638e96905d33893bf2f9f16d98929c4673c2480de05c6c96ea8b + languageName: node + linkType: hard + "undici@npm:^5.28.4": version: 5.28.4 resolution: "undici@npm:5.28.4" @@ -22976,6 +36945,21 @@ __metadata: languageName: node linkType: hard +"unified@npm:^10.0.0": + version: 10.1.2 + resolution: "unified@npm:10.1.2" + dependencies: + "@types/unist": ^2.0.0 + bail: ^2.0.0 + extend: ^3.0.0 + is-buffer: ^2.0.0 + is-plain-obj: ^4.0.0 + trough: ^2.0.0 + vfile: ^5.0.0 + checksum: 053e7c65ede644607f87bd625a299e4b709869d2f76ec8138569e6e886903b6988b21cd9699e471eda42bee189527be0a9dac05936f1d069a5e65d0125d5d756 + languageName: node + linkType: hard + "unique-filename@npm:^2.0.0": version: 2.0.1 resolution: "unique-filename@npm:2.0.1" @@ -23007,12 +36991,67 @@ __metadata: version: 4.0.0 resolution: "unique-slug@npm:4.0.0" dependencies: - imurmurhash: ^0.1.4 - checksum: 0884b58365af59f89739e6f71e3feacb5b1b41f2df2d842d0757933620e6de08eff347d27e9d499b43c40476cbaf7988638d3acb2ffbcb9d35fd035591adfd15 + imurmurhash: ^0.1.4 + checksum: 0884b58365af59f89739e6f71e3feacb5b1b41f2df2d842d0757933620e6de08eff347d27e9d499b43c40476cbaf7988638d3acb2ffbcb9d35fd035591adfd15 + languageName: node + linkType: hard + +"unist-util-generated@npm:^2.0.0": + version: 2.0.1 + resolution: "unist-util-generated@npm:2.0.1" + checksum: 6221ad0571dcc9c8964d6b054f39ef6571ed59cc0ce3e88ae97ea1c70afe76b46412a5ffaa91f96814644ac8477e23fb1b477d71f8d70e625728c5258f5c0d99 + languageName: node + linkType: hard + +"unist-util-is@npm:^5.0.0": + version: 5.2.1 + resolution: "unist-util-is@npm:5.2.1" + dependencies: + "@types/unist": ^2.0.0 + checksum: ae76fdc3d35352cd92f1bedc3a0d407c3b9c42599a52ab9141fe89bdd786b51f0ec5a2ab68b93fb532e239457cae62f7e39eaa80229e1cb94875da2eafcbe5c4 + languageName: node + linkType: hard + +"unist-util-position@npm:^4.0.0": + version: 4.0.4 + resolution: "unist-util-position@npm:4.0.4" + dependencies: + "@types/unist": ^2.0.0 + checksum: e7487b6cec9365299695e3379ded270a1717074fa11fd2407c9b934fb08db6fe1d9077ddeaf877ecf1813665f8ccded5171693d3d9a7a01a125ec5cdd5e88691 + languageName: node + linkType: hard + +"unist-util-stringify-position@npm:^3.0.0": + version: 3.0.3 + resolution: "unist-util-stringify-position@npm:3.0.3" + dependencies: + "@types/unist": ^2.0.0 + checksum: dbd66c15183607ca942a2b1b7a9f6a5996f91c0d30cf8966fb88955a02349d9eefd3974e9010ee67e71175d784c5a9fea915b0aa0b0df99dcb921b95c4c9e124 + languageName: node + linkType: hard + +"unist-util-visit-parents@npm:^5.0.0, unist-util-visit-parents@npm:^5.1.1": + version: 5.1.3 + resolution: "unist-util-visit-parents@npm:5.1.3" + dependencies: + "@types/unist": ^2.0.0 + unist-util-is: ^5.0.0 + checksum: 8ecada5978994f846b64658cf13b4092cd78dea39e1ba2f5090a5de842ba4852712c02351a8ae95250c64f864635e7b02aedf3b4a093552bb30cf1bd160efbaa + languageName: node + linkType: hard + +"unist-util-visit@npm:^4.0.0": + version: 4.1.2 + resolution: "unist-util-visit@npm:4.1.2" + dependencies: + "@types/unist": ^2.0.0 + unist-util-is: ^5.0.0 + unist-util-visit-parents: ^5.1.1 + checksum: 95a34e3f7b5b2d4b68fd722b6229972099eb97b6df18913eda44a5c11df8b1e27efe7206dd7b88c4ed244a48c474a5b2e2629ab79558ff9eb936840295549cee languageName: node linkType: hard -"universal-github-app-jwt@npm:^1.1.1": +"universal-github-app-jwt@npm:^1.1.1, universal-github-app-jwt@npm:^1.1.2": version: 1.2.0 resolution: "universal-github-app-jwt@npm:1.2.0" dependencies: @@ -23050,6 +37089,15 @@ __metadata: languageName: node linkType: hard +"unixify@npm:^1.0.0": + version: 1.0.0 + resolution: "unixify@npm:1.0.0" + dependencies: + normalize-path: ^2.1.1 + checksum: 3be30e48579fc6c7390bd59b4ab9e745fede0c164dfb7351cf710bd1dbef8484b1441186205af6bcb13b731c0c88caf9b33459f7bf8c89e79c046e656ae433f0 + languageName: node + linkType: hard + "unpipe@npm:1.0.0, unpipe@npm:~1.0.0": version: 1.0.0 resolution: "unpipe@npm:1.0.0" @@ -23057,6 +37105,13 @@ __metadata: languageName: node linkType: hard +"unraw@npm:^3.0.0": + version: 3.0.0 + resolution: "unraw@npm:3.0.0" + checksum: 19eee0bc500ce197d262b79723a2c8c81c1d716baaa2a62c48a4d0d6b9e1fd9d350c5df86262e51343d591ab9c8a47ed150317d0b867b2b65795cdc17ef69873 + languageName: node + linkType: hard + "upath@npm:2.0.1": version: 2.0.1 resolution: "upath@npm:2.0.1" @@ -23096,7 +37151,7 @@ __metadata: languageName: node linkType: hard -"urijs@npm:^1.19.11": +"urijs@npm:^1.19.10, urijs@npm:^1.19.11": version: 1.19.11 resolution: "urijs@npm:1.19.11" checksum: f9b95004560754d30fd7dbee44b47414d662dc9863f1cf5632a7c7983648df11d23c0be73b9b4f9554463b61d5b0a520b70df9e1ee963ebb4af02e6da2cc80f3 @@ -23110,7 +37165,7 @@ __metadata: languageName: node linkType: hard -"url-parse@npm:^1.5.3": +"url-parse@npm:^1.5.10, url-parse@npm:^1.5.3": version: 1.5.10 resolution: "url-parse@npm:1.5.10" dependencies: @@ -23130,6 +37185,91 @@ __metadata: languageName: node linkType: hard +"urlpattern-polyfill@npm:^10.0.0": + version: 10.0.0 + resolution: "urlpattern-polyfill@npm:10.0.0" + checksum: 61d890f151ea4ecf34a3dcab32c65ad1f3cda857c9d154af198260c6e5b2ad96d024593409baaa6d4428dd1ab206c14799bf37fe011117ac93a6a44913ac5aa4 + languageName: node + linkType: hard + +"urlpattern-polyfill@npm:^8.0.0": + version: 8.0.2 + resolution: "urlpattern-polyfill@npm:8.0.2" + checksum: d2cc0905a613c77e330c426e8697ee522dd9640eda79ac51160a0f6350e103f09b8c327623880989f8ba7325e8d95267b745aa280fdcc2aead80b023e16bd09d + languageName: node + linkType: hard + +"use-callback-ref@npm:^1.3.3": + version: 1.3.3 + resolution: "use-callback-ref@npm:1.3.3" + dependencies: + tslib: ^2.0.0 + peerDependencies: + "@types/react": "*" + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc + peerDependenciesMeta: + "@types/react": + optional: true + checksum: 4da1c82d7a2409cee6c882748a40f4a083decf238308bf12c3d0166f0e338f8d512f37b8d11987eb5a421f14b9b5b991edf3e11ed25c3bb7a6559081f8359b44 + languageName: node + linkType: hard + +"use-immer@npm:^0.10.0": + version: 0.10.0 + resolution: "use-immer@npm:0.10.0" + peerDependencies: + immer: ">=8.0.0" + react: ^16.8.0 || ^17.0.1 || ^18.0.0 + checksum: 372b0eea0a05e9435f5dc57a877ec619ea9a479fc82423f502b4a498d5697f8b06b85d089058db5a056bc8bbdb8e6f9ea8c9850b51a6b05d5c63ab0c8eeb2b7e + languageName: node + linkType: hard + +"use-memo-one@npm:^1.1.1": + version: 1.1.3 + resolution: "use-memo-one@npm:1.1.3" + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + checksum: 8f08eba26d69406b61bb4b8dacdd5a92bd6aef5b53d346dfe87954f7330ee10ecabc937cc7854635155d46053828e85c10b5a5aff7a04720e6a97b9f42999bac + languageName: node + linkType: hard + +"use-resize-observer@npm:^8.0.0": + version: 8.0.0 + resolution: "use-resize-observer@npm:8.0.0" + dependencies: + "@juggle/resize-observer": ^3.3.1 + peerDependencies: + react: ">=16.8.0" + react-dom: ">=16.8.0" + checksum: 944ce47811f6056b481ce2f1550c2881bd5c25838cae2e0fb0bc0ed4aad7b5f2e55dcc0fc52107998ecfb602446465f94b2e728d3f3259fe8e6d4a3031cfb24a + languageName: node + linkType: hard + +"use-sidecar@npm:^1.1.2": + version: 1.1.3 + resolution: "use-sidecar@npm:1.1.3" + dependencies: + detect-node-es: ^1.1.0 + tslib: ^2.0.0 + peerDependencies: + "@types/react": "*" + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc + peerDependenciesMeta: + "@types/react": + optional: true + checksum: 88664c6b2c5b6e53e4d5d987694c9053cea806da43130248c74ca058945c8caa6ccb7b1787205a9eb5b9d124633e42153848904002828acabccdc48cda026622 + languageName: node + linkType: hard + +"use-sync-external-store@npm:^1.2.0, use-sync-external-store@npm:^1.4.0": + version: 1.4.0 + resolution: "use-sync-external-store@npm:1.4.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + checksum: dc3843a1b59ac8bd01417bd79498d4c688d5df8bf4801be50008ef4bfaacb349058c0b1605b5b43c828e0a2d62722d7e861573b3f31cea77a7f23e8b0fc2f7e3 + languageName: node + linkType: hard + "util-deprecate@npm:^1.0.1, util-deprecate@npm:^1.0.2, util-deprecate@npm:~1.0.1": version: 1.0.2 resolution: "util-deprecate@npm:1.0.2" @@ -23182,14 +37322,23 @@ __metadata: languageName: node linkType: hard -"utils-merge@npm:1.0.1, utils-merge@npm:^1.0.1": +"utils-merge@npm:1.0.1, utils-merge@npm:1.x.x, utils-merge@npm:^1.0.1": version: 1.0.1 resolution: "utils-merge@npm:1.0.1" checksum: c81095493225ecfc28add49c106ca4f09cdf56bc66731aa8dabc2edbbccb1e1bfe2de6a115e5c6a380d3ea166d1636410b62ef216bb07b3feb1cfde1d95d5080 languageName: node linkType: hard -"uuid@npm:^3.3.2": +"uuid@npm:^11.0.0, uuid@npm:^11.0.2": + version: 11.0.3 + resolution: "uuid@npm:11.0.3" + bin: + uuid: dist/esm/bin/uuid + checksum: 646181c77e8b8df9bd07254faa703943e1c4d5ccde7d080312edf12f443f6c5750801fd9b27bf2e628594182165e6b1b880c0382538f7eca00b26622203741dc + languageName: node + linkType: hard + +"uuid@npm:^3.3.2, uuid@npm:^3.4.0": version: 3.4.0 resolution: "uuid@npm:3.4.0" bin: @@ -23216,6 +37365,20 @@ __metadata: languageName: node linkType: hard +"uvu@npm:^0.5.0": + version: 0.5.6 + resolution: "uvu@npm:0.5.6" + dependencies: + dequal: ^2.0.0 + diff: ^5.0.0 + kleur: ^4.0.3 + sade: ^1.7.3 + bin: + uvu: bin.js + checksum: 09460a37975627de9fcad396e5078fb844d01aaf64a6399ebfcfd9e55f1c2037539b47611e8631f89be07656962af0cf48c334993db82b9ae9c3d25ce3862168 + languageName: node + linkType: hard + "v8-compile-cache-lib@npm:^3.0.1": version: 3.0.1 resolution: "v8-compile-cache-lib@npm:3.0.1" @@ -23223,72 +37386,489 @@ __metadata: languageName: node linkType: hard -"v8-to-istanbul@npm:^9.0.1": - version: 9.3.0 - resolution: "v8-to-istanbul@npm:9.3.0" +"v8-to-istanbul@npm:^9.0.1": + version: 9.3.0 + resolution: "v8-to-istanbul@npm:9.3.0" + dependencies: + "@jridgewell/trace-mapping": ^0.3.12 + "@types/istanbul-lib-coverage": ^2.0.1 + convert-source-map: ^2.0.0 + checksum: ded42cd535d92b7fd09a71c4c67fb067487ef5551cc227bfbf2a1f159a842e4e4acddaef20b955789b8d3b455b9779d036853f4a27ce15007f6364a4d30317ae + languageName: node + linkType: hard + +"valid-url@npm:^1.0.9": + version: 1.0.9 + resolution: "valid-url@npm:1.0.9" + checksum: 3ecb030559404441c2cf104cbabab8770efb0f36d117db03d1081052ef133015a68806148ce954bb4dd0b5c42c14b709a88783c93d66b0916cb67ba771c98702 + languageName: node + linkType: hard + +"validate.io-array@npm:^1.0.3": + version: 1.0.6 + resolution: "validate.io-array@npm:1.0.6" + checksum: 54eca83ebc702e3e46499f9d9e77287a95ae25c4e727cd2fafee29c7333b3a36cca0c5d8f090b9406262786de80750fba85e7e7ef41e20bf8cc67d5570de449b + languageName: node + linkType: hard + +"validate.io-function@npm:^1.0.2": + version: 1.0.2 + resolution: "validate.io-function@npm:1.0.2" + checksum: e4cce2479a20cb7c42e8630c777fb107059c27bc32925f769e3a73ca5fd62b4892d897b3c80227e14d5fcd1c5b7d05544e0579d63e59f14034c0052cda7f7c44 + languageName: node + linkType: hard + +"validate.io-integer-array@npm:^1.0.0": + version: 1.0.0 + resolution: "validate.io-integer-array@npm:1.0.0" + dependencies: + validate.io-array: ^1.0.3 + validate.io-integer: ^1.0.4 + checksum: 5f6d7fab8df7d2bf546a05e830201768464605539c75a2c2417b632b4411a00df84b462f81eac75e1be95303e7e0ac92f244c137424739f4e15cd21c2eb52c7f + languageName: node + linkType: hard + +"validate.io-integer@npm:^1.0.4": + version: 1.0.5 + resolution: "validate.io-integer@npm:1.0.5" + dependencies: + validate.io-number: ^1.0.3 + checksum: 88b3f8bb5a5277a95305d64abbfc437079220ce4f57a148cc6113e7ccec03dd86b10a69d413982602aa90a62b8d516148a78716f550dcd3aff863ac1c2a7a5e6 + languageName: node + linkType: hard + +"validate.io-number@npm:^1.0.3": + version: 1.0.3 + resolution: "validate.io-number@npm:1.0.3" + checksum: 42418aeb6c969efa745475154fe576809b02eccd0961aad0421b090d6e7a12d23a3e28b0d5dddd2c6347c1a6bdccb82bba5048c716131cd20207244d50e07282 + languageName: node + linkType: hard + +"value-or-promise@npm:1.0.11": + version: 1.0.11 + resolution: "value-or-promise@npm:1.0.11" + checksum: 13f8f2ef620118c73b4d1beee8ce6045d7182bbf15090ecfbcafb677ec43698506a5e9ace6bea5ea35c32bc612c9b1f824bb59b6581cdfb5c919052745c277d5 + languageName: node + linkType: hard + +"value-or-promise@npm:^1.0.11, value-or-promise@npm:^1.0.12": + version: 1.0.12 + resolution: "value-or-promise@npm:1.0.12" + checksum: f53a66c75b7447c90bbaf946a757ca09c094629cb80ba742f59c980ec3a69be0a385a0e75505dedb4e757862f1a994ca4beaf083a831f24d3ffb3d4bb18cd1e1 + languageName: node + linkType: hard + +"vary@npm:^1, vary@npm:^1.1.2, vary@npm:~1.1.2": + version: 1.1.2 + resolution: "vary@npm:1.1.2" + checksum: ae0123222c6df65b437669d63dfa8c36cee20a504101b2fcd97b8bf76f91259c17f9f2b4d70a1e3c6bbcee7f51b28392833adb6b2770b23b01abec84e369660b + languageName: node + linkType: hard + +"verror@npm:1.10.0": + version: 1.10.0 + resolution: "verror@npm:1.10.0" + dependencies: + assert-plus: ^1.0.0 + core-util-is: 1.0.2 + extsprintf: ^1.2.0 + checksum: c431df0bedf2088b227a4e051e0ff4ca54df2c114096b0c01e1cbaadb021c30a04d7dd5b41ab277bcd51246ca135bf931d4c4c796ecae7a4fef6d744ecef36ea + languageName: node + linkType: hard + +"vfile-message@npm:^3.0.0": + version: 3.1.4 + resolution: "vfile-message@npm:3.1.4" + dependencies: + "@types/unist": ^2.0.0 + unist-util-stringify-position: ^3.0.0 + checksum: d0ee7da1973ad76513c274e7912adbed4d08d180eaa34e6bd40bc82459f4b7bc50fcaff41556135e3339995575eac5f6f709aba9332b80f775618ea4880a1367 + languageName: node + linkType: hard + +"vfile@npm:^5.0.0": + version: 5.3.7 + resolution: "vfile@npm:5.3.7" + dependencies: + "@types/unist": ^2.0.0 + is-buffer: ^2.0.0 + unist-util-stringify-position: ^3.0.0 + vfile-message: ^3.0.0 + checksum: 642cce703afc186dbe7cabf698dc954c70146e853491086f5da39e1ce850676fc96b169fcf7898aa3ff245e9313aeec40da93acd1e1fcc0c146dc4f6308b4ef9 + languageName: node + linkType: hard + +"victory-area@npm:^37.1.1": + version: 37.3.4 + resolution: "victory-area@npm:37.3.4" + dependencies: + lodash: ^4.17.19 + victory-core: 37.3.4 + victory-vendor: 37.3.4 + peerDependencies: + react: ">=16.6.0" + checksum: 5406a8302766ff510e95922e49726ce49458be135eb74cf6dbaaf4aae82dcec64195e236ba16eed03cbf52f6bd737e2d69f52721cdd000979cd9dcc26102eb24 + languageName: node + linkType: hard + +"victory-axis@npm:37.3.4, victory-axis@npm:^37.1.1": + version: 37.3.4 + resolution: "victory-axis@npm:37.3.4" + dependencies: + lodash: ^4.17.19 + victory-core: 37.3.4 + peerDependencies: + react: ">=16.6.0" + checksum: d17b7b638ef8db936b25957473020b785b084f0e5bc6b4905af20058e185c4d196d4a13999b4046cabeb1a77dae658baec47f64ce190d115618a06e5e862ef8c + languageName: node + linkType: hard + +"victory-bar@npm:^37.1.1": + version: 37.3.4 + resolution: "victory-bar@npm:37.3.4" + dependencies: + lodash: ^4.17.19 + victory-core: 37.3.4 + victory-vendor: 37.3.4 + peerDependencies: + react: ">=16.6.0" + checksum: 923f0497500a269e3b611820d40a0a054b8eca9c687a9ead2c95304956c155382b39cee9bbf2308b93d763325935204b9f935ef7f7fdea28c1e5a0785a3aa2cb + languageName: node + linkType: hard + +"victory-box-plot@npm:^36.9.1": + version: 36.9.2 + resolution: "victory-box-plot@npm:36.9.2" + dependencies: + lodash: ^4.17.19 + victory-core: ^36.9.2 + victory-vendor: ^36.9.2 + peerDependencies: + react: ">=16.6.0" + checksum: f0e6d7a99d9d4209ad6f9340b0082d761857c9792e3d93e964682b5f516da7e2a5ef1399df8fdee0fe5e1f16ee4a79db1c0f4da5dbf9210c73a3373f3cd34d17 + languageName: node + linkType: hard + +"victory-box-plot@npm:^37.1.1": + version: 37.3.4 + resolution: "victory-box-plot@npm:37.3.4" + dependencies: + lodash: ^4.17.19 + victory-core: 37.3.4 + victory-vendor: 37.3.4 + peerDependencies: + react: ">=16.6.0" + checksum: 70c804d43c492a29ee26f5d0a2338d574c6ffaf12135b7a36b6955abb7cc728b201d4f64e16597939c1a4b151cc9cb1a1508577f8afa04e524fde2f3dc4dab25 + languageName: node + linkType: hard + +"victory-brush-container@npm:37.3.4": + version: 37.3.4 + resolution: "victory-brush-container@npm:37.3.4" + dependencies: + lodash: ^4.17.19 + react-fast-compare: ^3.2.0 + victory-core: 37.3.4 + peerDependencies: + react: ">=16.6.0" + checksum: e7133b58a2569b7086b95051a0cf253fe02efe4355fc0f7c4fd9ae37b7f0ea5523b9f6de576197fbfa09e6c5a17e851e4fedda3f454c51c58553ee4afcdec968 + languageName: node + linkType: hard + +"victory-chart@npm:^37.1.1": + version: 37.3.4 + resolution: "victory-chart@npm:37.3.4" + dependencies: + lodash: ^4.17.19 + react-fast-compare: ^3.2.0 + victory-axis: 37.3.4 + victory-core: 37.3.4 + victory-polar-axis: 37.3.4 + victory-shared-events: 37.3.4 + peerDependencies: + react: ">=16.6.0" + checksum: 761b39f483cc1218f0f27565581f104e36ef2f74c7fa0add098960474cdd4f40f7c44fd81baf7f3a629b345c709b2b0d1464894e64b6f4457f19e8ac0baaf377 + languageName: node + linkType: hard + +"victory-core@npm:37.3.4, victory-core@npm:^37.1.1": + version: 37.3.4 + resolution: "victory-core@npm:37.3.4" + dependencies: + lodash: ^4.17.21 + react-fast-compare: ^3.2.0 + victory-vendor: 37.3.4 + peerDependencies: + react: ">=16.6.0" + checksum: 85be8f69d37332c35a8277879f9f5c0c979c12335ade03e8b32d8bd6436bc8231e7274ff7911e1e695526e65fc48d915c86edb6d017598df01ccc7747ee609aa + languageName: node + linkType: hard + +"victory-core@npm:^36.9.1, victory-core@npm:^36.9.2": + version: 36.9.2 + resolution: "victory-core@npm:36.9.2" + dependencies: + lodash: ^4.17.21 + react-fast-compare: ^3.2.0 + victory-vendor: ^36.9.2 + peerDependencies: + react: ">=16.6.0" + checksum: da17211f4b40a38b6dcb5fe7a32221bfaa870f2813f3cc95fcd7eb60bb357d4246ac69127fd7c90d40e1efaab05dffaed656fa1c14e0b7a444da8a2a3d401d4e + languageName: node + linkType: hard + +"victory-create-container@npm:^37.1.1": + version: 37.3.4 + resolution: "victory-create-container@npm:37.3.4" + dependencies: + lodash: ^4.17.19 + victory-brush-container: 37.3.4 + victory-core: 37.3.4 + victory-cursor-container: 37.3.4 + victory-selection-container: 37.3.4 + victory-voronoi-container: 37.3.4 + victory-zoom-container: 37.3.4 + peerDependencies: + react: ">=16.6.0" + checksum: 6f60b326271d57ec2b7a8eb5f7e86d517e727af2881ab9f54df939c1ec993c24589b39cb30cee6ea2c8d88044424083f94b93f5ffc881752dc5f9ec758d998a1 + languageName: node + linkType: hard + +"victory-cursor-container@npm:37.3.4, victory-cursor-container@npm:^37.1.1": + version: 37.3.4 + resolution: "victory-cursor-container@npm:37.3.4" + dependencies: + lodash: ^4.17.19 + victory-core: 37.3.4 + peerDependencies: + react: ">=16.6.0" + checksum: d0afaa35993536a5542475c44245ee53effcc5fd3c06710d98e56fb7fd0af4623897db664a69d4c1a5eeca3ad49b19144f84352e2f90d37cdf0e3261981911f0 + languageName: node + linkType: hard + +"victory-group@npm:^37.1.1": + version: 37.3.4 + resolution: "victory-group@npm:37.3.4" + dependencies: + lodash: ^4.17.19 + react-fast-compare: ^3.2.0 + victory-core: 37.3.4 + victory-shared-events: 37.3.4 + peerDependencies: + react: ">=16.6.0" + checksum: 27e253bd25bc3bf432554387cb5dc26cbdbb66c4a9babd8267e39222977212af2b4f9527be851792f092544f7156cb2de9a8e87e8609dda0aebe66b790d82938 + languageName: node + linkType: hard + +"victory-legend@npm:^37.1.1": + version: 37.3.4 + resolution: "victory-legend@npm:37.3.4" + dependencies: + lodash: ^4.17.19 + victory-core: 37.3.4 + peerDependencies: + react: ">=16.6.0" + checksum: e4c70445f347d896e043f1f1028551045d64cae6097cc8d9407107cec269a71817dc9ccb08b1dce5d041a2fa6e61c07ef73ded52db9451e5a92f6bb1505faa79 + languageName: node + linkType: hard + +"victory-line@npm:^37.1.1": + version: 37.3.4 + resolution: "victory-line@npm:37.3.4" + dependencies: + lodash: ^4.17.19 + victory-core: 37.3.4 + victory-vendor: 37.3.4 + peerDependencies: + react: ">=16.6.0" + checksum: 4ac645dca15590d6308ecee0f0ad541baddc8f4ce765bc465e6cd359d4adf717c6e525488b802f1ae044119f226f3f611a27bc3facde34d782711f095c6567b9 + languageName: node + linkType: hard + +"victory-pie@npm:^37.1.1": + version: 37.3.4 + resolution: "victory-pie@npm:37.3.4" + dependencies: + lodash: ^4.17.19 + victory-core: 37.3.4 + victory-vendor: 37.3.4 + peerDependencies: + react: ">=16.6.0" + checksum: 03a6618fbb6b17262b3b9b24cf5167236c292982ccf5dc3520c0a4df794f759d338b9f64e3df8c8f5ffe625b6ac53446a7979a7666cc49a3eb20b5b950f83737 + languageName: node + linkType: hard + +"victory-polar-axis@npm:37.3.4": + version: 37.3.4 + resolution: "victory-polar-axis@npm:37.3.4" + dependencies: + lodash: ^4.17.19 + victory-core: 37.3.4 + peerDependencies: + react: ">=16.6.0" + checksum: 88921ed0644295e4f91d30673b110bc9d1436542e3d4ad506ef1c5a4bbaca427941824ef814d814e3af1a94f5f7c87c5fb32e76db6b89efbd2ce6c8d9c3e1900 + languageName: node + linkType: hard + +"victory-scatter@npm:^37.1.1": + version: 37.3.4 + resolution: "victory-scatter@npm:37.3.4" + dependencies: + lodash: ^4.17.19 + victory-core: 37.3.4 + peerDependencies: + react: ">=16.6.0" + checksum: 7e861be9684b3dae79262f4da75f9ce8b489b0cf67bb3a165949938fd323e71934557284dcf73f84e63d0c5bb66f032fb77faab0a0fe7bfefda475eb4e72b41c + languageName: node + linkType: hard + +"victory-selection-container@npm:37.3.4": + version: 37.3.4 + resolution: "victory-selection-container@npm:37.3.4" + dependencies: + lodash: ^4.17.19 + victory-core: 37.3.4 + peerDependencies: + react: ">=16.6.0" + checksum: e769439b132e423b6aa7c53f1b30f2a5c5d696a1d212d920e2e924bcfaa5b91e1ae1461a47df91e682f34559514ae714630c5cd6b600b5822fa6a603782a80f6 + languageName: node + linkType: hard + +"victory-shared-events@npm:37.3.4": + version: 37.3.4 + resolution: "victory-shared-events@npm:37.3.4" + dependencies: + json-stringify-safe: ^5.0.1 + lodash: ^4.17.19 + react-fast-compare: ^3.2.0 + victory-core: 37.3.4 + peerDependencies: + react: ">=16.6.0" + checksum: 713f552a727558a2296b8fa26f81783790507fdebba4a6d785aac5f6e4363e0087f34806a7473c86efa461790885b310cb53b7844daabf0cd37e4ee4b2ca67b8 + languageName: node + linkType: hard + +"victory-stack@npm:^37.1.1": + version: 37.3.4 + resolution: "victory-stack@npm:37.3.4" dependencies: - "@jridgewell/trace-mapping": ^0.3.12 - "@types/istanbul-lib-coverage": ^2.0.1 - convert-source-map: ^2.0.0 - checksum: ded42cd535d92b7fd09a71c4c67fb067487ef5551cc227bfbf2a1f159a842e4e4acddaef20b955789b8d3b455b9779d036853f4a27ce15007f6364a4d30317ae + lodash: ^4.17.19 + react-fast-compare: ^3.2.0 + victory-core: 37.3.4 + victory-shared-events: 37.3.4 + peerDependencies: + react: ">=16.6.0" + checksum: 671a3c7e0de4eb677a0f9d7b44d821b3e3615c2ba3dc24b607c61607600cb6087dae116d1231670ec074efeedf165ac96add595fb638b7a15d1aeed4271db0ba languageName: node linkType: hard -"validate.io-array@npm:^1.0.3": - version: 1.0.6 - resolution: "validate.io-array@npm:1.0.6" - checksum: 54eca83ebc702e3e46499f9d9e77287a95ae25c4e727cd2fafee29c7333b3a36cca0c5d8f090b9406262786de80750fba85e7e7ef41e20bf8cc67d5570de449b +"victory-tooltip@npm:37.3.4, victory-tooltip@npm:^37.1.1": + version: 37.3.4 + resolution: "victory-tooltip@npm:37.3.4" + dependencies: + lodash: ^4.17.19 + victory-core: 37.3.4 + peerDependencies: + react: ">=16.6.0" + checksum: 1fef29c5eec14d32719780d576ddc92a04f60a92b58a20baa675777778f8fb129c4cb2da4d3d46c2b5552d3ad34e48f7d53d3071d6fe7dde50ef87b7dce93ded languageName: node linkType: hard -"validate.io-function@npm:^1.0.2": - version: 1.0.2 - resolution: "validate.io-function@npm:1.0.2" - checksum: e4cce2479a20cb7c42e8630c777fb107059c27bc32925f769e3a73ca5fd62b4892d897b3c80227e14d5fcd1c5b7d05544e0579d63e59f14034c0052cda7f7c44 +"victory-tooltip@npm:^36.9.2": + version: 36.9.2 + resolution: "victory-tooltip@npm:36.9.2" + dependencies: + lodash: ^4.17.19 + victory-core: ^36.9.2 + peerDependencies: + react: ">=16.6.0" + checksum: 43499f0dad993755b96baafd09bf7578b88cf598d09cc8d926cba1debcd4ba8645e0bb2d0692d6b97275830261b7749d2189deb2873495929db2103b0c23e2a6 languageName: node linkType: hard -"validate.io-integer-array@npm:^1.0.0": - version: 1.0.0 - resolution: "validate.io-integer-array@npm:1.0.0" +"victory-vendor@npm:37.3.4": + version: 37.3.4 + resolution: "victory-vendor@npm:37.3.4" dependencies: - validate.io-array: ^1.0.3 - validate.io-integer: ^1.0.4 - checksum: 5f6d7fab8df7d2bf546a05e830201768464605539c75a2c2417b632b4411a00df84b462f81eac75e1be95303e7e0ac92f244c137424739f4e15cd21c2eb52c7f + "@types/d3-array": ^3.0.3 + "@types/d3-ease": ^3.0.0 + "@types/d3-interpolate": ^3.0.1 + "@types/d3-scale": ^4.0.2 + "@types/d3-shape": ^3.1.0 + "@types/d3-time": ^3.0.0 + "@types/d3-timer": ^3.0.0 + d3-array: ^3.1.6 + d3-ease: ^3.0.1 + d3-interpolate: ^3.0.1 + d3-scale: ^4.0.2 + d3-shape: ^3.1.0 + d3-time: ^3.0.0 + d3-timer: ^3.0.1 + checksum: 77c17a5470fc70f7646939987180fefd900f5e9824362d4906888db44ca8d85fa6fefc43444aaaa95173227a4f86a2cbd3ea08d8037d88135921863b1e09a9bf languageName: node linkType: hard -"validate.io-integer@npm:^1.0.4": - version: 1.0.5 - resolution: "validate.io-integer@npm:1.0.5" +"victory-vendor@npm:^36.9.2": + version: 36.9.2 + resolution: "victory-vendor@npm:36.9.2" dependencies: - validate.io-number: ^1.0.3 - checksum: 88b3f8bb5a5277a95305d64abbfc437079220ce4f57a148cc6113e7ccec03dd86b10a69d413982602aa90a62b8d516148a78716f550dcd3aff863ac1c2a7a5e6 + "@types/d3-array": ^3.0.3 + "@types/d3-ease": ^3.0.0 + "@types/d3-interpolate": ^3.0.1 + "@types/d3-scale": ^4.0.2 + "@types/d3-shape": ^3.1.0 + "@types/d3-time": ^3.0.0 + "@types/d3-timer": ^3.0.0 + d3-array: ^3.1.6 + d3-ease: ^3.0.1 + d3-interpolate: ^3.0.1 + d3-scale: ^4.0.2 + d3-shape: ^3.1.0 + d3-time: ^3.0.0 + d3-timer: ^3.0.1 + checksum: a755110e287b700202d08ac81982093ab100edaa9d61beef1476d59e9705605bd8299a3aa41fa04b933a12bd66737f4c8f7d18448dd6488c69d4f72480023a2e languageName: node linkType: hard -"validate.io-number@npm:^1.0.3": - version: 1.0.3 - resolution: "validate.io-number@npm:1.0.3" - checksum: 42418aeb6c969efa745475154fe576809b02eccd0961aad0421b090d6e7a12d23a3e28b0d5dddd2c6347c1a6bdccb82bba5048c716131cd20207244d50e07282 +"victory-voronoi-container@npm:37.3.4, victory-voronoi-container@npm:^37.1.1": + version: 37.3.4 + resolution: "victory-voronoi-container@npm:37.3.4" + dependencies: + delaunay-find: 0.0.6 + lodash: ^4.17.19 + react-fast-compare: ^3.2.0 + victory-core: 37.3.4 + victory-tooltip: 37.3.4 + peerDependencies: + react: ">=16.6.0" + checksum: 69776dada3013520f5ae826144289d94a777106a2541ed00b71febb95bbaf3a04c3a3812396a6eb56ec36fbe5bc6b33dc877b604809bef2a469753c1347b40ad languageName: node linkType: hard -"vary@npm:^1, vary@npm:^1.1.2, vary@npm:~1.1.2": - version: 1.1.2 - resolution: "vary@npm:1.1.2" - checksum: ae0123222c6df65b437669d63dfa8c36cee20a504101b2fcd97b8bf76f91259c17f9f2b4d70a1e3c6bbcee7f51b28392833adb6b2770b23b01abec84e369660b +"victory-voronoi-container@npm:^36.9.1": + version: 36.9.2 + resolution: "victory-voronoi-container@npm:36.9.2" + dependencies: + delaunay-find: 0.0.6 + lodash: ^4.17.19 + react-fast-compare: ^3.2.0 + victory-core: ^36.9.2 + victory-tooltip: ^36.9.2 + peerDependencies: + react: ">=16.6.0" + checksum: c59ba256f1479d69749c93b0c7aa25f1f99a705e40a5cc0cee474fb1f150012ddae8fb8e75bc79c14254efb5581fb946d24041b4af965d294a84106f843625f5 languageName: node linkType: hard -"verror@npm:1.10.0": - version: 1.10.0 - resolution: "verror@npm:1.10.0" +"victory-zoom-container@npm:37.3.4, victory-zoom-container@npm:^37.1.1": + version: 37.3.4 + resolution: "victory-zoom-container@npm:37.3.4" dependencies: - assert-plus: ^1.0.0 - core-util-is: 1.0.2 - extsprintf: ^1.2.0 - checksum: c431df0bedf2088b227a4e051e0ff4ca54df2c114096b0c01e1cbaadb021c30a04d7dd5b41ab277bcd51246ca135bf931d4c4c796ecae7a4fef6d744ecef36ea + lodash: ^4.17.19 + victory-core: 37.3.4 + peerDependencies: + react: ">=16.6.0" + checksum: 46e656bff572b3a266602e305486f57e631784d697a93a8eaeac4811765231b06140a86e97695f07f5ce4224c268e18128dc646b7d21b170c8d997ec419f315a languageName: node linkType: hard @@ -23299,6 +37879,38 @@ __metadata: languageName: node linkType: hard +"vscode-languageserver-types@npm:^3.17.1": + version: 3.17.5 + resolution: "vscode-languageserver-types@npm:3.17.5" + checksum: 79b420e7576398d396579ca3a461c9ed70e78db4403cd28bbdf4d3ed2b66a2b4114031172e51fad49f0baa60a2180132d7cb2ea35aa3157d7af3c325528210ac + languageName: node + linkType: hard + +"w3c-hr-time@npm:^1.0.2": + version: 1.0.2 + resolution: "w3c-hr-time@npm:1.0.2" + dependencies: + browser-process-hrtime: ^1.0.0 + checksum: ec3c2dacbf8050d917bbf89537a101a08c2e333b4c19155f7d3bedde43529d4339db6b3d049d9610789cb915f9515f8be037e0c54c079e9d4735c50b37ed52b9 + languageName: node + linkType: hard + +"w3c-keyname@npm:^2.2.4": + version: 2.2.8 + resolution: "w3c-keyname@npm:2.2.8" + checksum: 95bafa4c04fa2f685a86ca1000069c1ec43ace1f8776c10f226a73296caeddd83f893db885c2c220ebeb6c52d424e3b54d7c0c1e963bbf204038ff1a944fbb07 + languageName: node + linkType: hard + +"w3c-xmlserializer@npm:^2.0.0": + version: 2.0.0 + resolution: "w3c-xmlserializer@npm:2.0.0" + dependencies: + xml-name-validator: ^3.0.0 + checksum: ae25c51cf71f1fb2516df1ab33a481f83461a117565b95e3d0927432522323f93b1b2846cbb60196d337970c421adb604fc2d0d180c6a47a839da01db5b9973b + languageName: node + linkType: hard + "w3c-xmlserializer@npm:^4.0.0": version: 4.0.0 resolution: "w3c-xmlserializer@npm:4.0.0" @@ -23308,6 +37920,21 @@ __metadata: languageName: node linkType: hard +"wait-on@npm:8.0.1": + version: 8.0.1 + resolution: "wait-on@npm:8.0.1" + dependencies: + axios: ^1.7.7 + joi: ^17.13.3 + lodash: ^4.17.21 + minimist: ^1.2.8 + rxjs: ^7.8.1 + bin: + wait-on: bin/wait-on + checksum: 20e670a7c7ef8959a859c27d269297e11a6be0324f4f0d0b494dfc2d43582f66a70f5a6ead158ed47a840632706ff2b9c939284bea7856bf283e9de9e33d84f3 + languageName: node + linkType: hard + "walker@npm:^1.0.8": version: 1.0.8 resolution: "walker@npm:1.0.8" @@ -23358,6 +37985,32 @@ __metadata: languageName: node linkType: hard +"web-streams-polyfill@npm:^3.0.3": + version: 3.3.3 + resolution: "web-streams-polyfill@npm:3.3.3" + checksum: 21ab5ea08a730a2ef8023736afe16713b4f2023ec1c7085c16c8e293ee17ed085dff63a0ad8722da30c99c4ccbd4ccd1b2e79c861829f7ef2963d7de7004c2cb + languageName: node + linkType: hard + +"web-tree-sitter@npm:=0.24.5": + version: 0.24.5 + resolution: "web-tree-sitter@npm:0.24.5" + checksum: 4b380571801557a6cfb5e599b9be2da49439e5c30a1c3e3a204d9408afcbe476f25ce54e956959ce8753e1a9fff74634af2cf9b9365acc7b0ff97d73ecae0010 + languageName: node + linkType: hard + +"webcola@npm:3.4.0": + version: 3.4.0 + resolution: "webcola@npm:3.4.0" + dependencies: + d3-dispatch: ^1.0.3 + d3-drag: ^1.0.4 + d3-shape: ^1.3.5 + d3-timer: ^1.0.5 + checksum: 046f7cc06ef077b42e2cdecba9b9407452008444629a95d1c921283b9dae7c874ef8b5d66d4e21d56f427662598ae12d11992fbe10ec29d8ec0bcc68f6c40b75 + languageName: node + linkType: hard + "webidl-conversions@npm:^3.0.0": version: 3.0.1 resolution: "webidl-conversions@npm:3.0.1" @@ -23365,6 +38018,20 @@ __metadata: languageName: node linkType: hard +"webidl-conversions@npm:^5.0.0": + version: 5.0.0 + resolution: "webidl-conversions@npm:5.0.0" + checksum: ccf1ec2ca7c0b5671e5440ace4a66806ae09c49016ab821481bec0c05b1b82695082dc0a27d1fe9d804d475a408ba0c691e6803fd21be608e710955d4589cd69 + languageName: node + linkType: hard + +"webidl-conversions@npm:^6.1.0": + version: 6.1.0 + resolution: "webidl-conversions@npm:6.1.0" + checksum: 1f526507aa491f972a0c1409d07f8444e1d28778dfa269a9971f2e157182f3d496dc33296e4ed45b157fdb3bf535bb90c90bf10c50dcf1dd6caacb2a34cc84fb + languageName: node + linkType: hard + "webidl-conversions@npm:^7.0.0": version: 7.0.0 resolution: "webidl-conversions@npm:7.0.0" @@ -23558,6 +38225,42 @@ __metadata: languageName: node linkType: hard +"webpack@npm:^5.94.0": + version: 5.97.1 + resolution: "webpack@npm:5.97.1" + dependencies: + "@types/eslint-scope": ^3.7.7 + "@types/estree": ^1.0.6 + "@webassemblyjs/ast": ^1.14.1 + "@webassemblyjs/wasm-edit": ^1.14.1 + "@webassemblyjs/wasm-parser": ^1.14.1 + acorn: ^8.14.0 + browserslist: ^4.24.0 + chrome-trace-event: ^1.0.2 + enhanced-resolve: ^5.17.1 + es-module-lexer: ^1.2.1 + eslint-scope: 5.1.1 + events: ^3.2.0 + glob-to-regexp: ^0.4.1 + graceful-fs: ^4.2.11 + json-parse-even-better-errors: ^2.3.1 + loader-runner: ^4.2.0 + mime-types: ^2.1.27 + neo-async: ^2.6.2 + schema-utils: ^3.2.0 + tapable: ^2.1.1 + terser-webpack-plugin: ^5.3.10 + watchpack: ^2.4.1 + webpack-sources: ^3.2.3 + peerDependenciesMeta: + webpack-cli: + optional: true + bin: + webpack: bin/webpack.js + checksum: 649065e2258b495ae41a4088be804b4be2ec07d280aa514ebef43da79caf96fa973d26a08826c3902b5676a098d9b37c589f16be7b4da17b68b08b6c76441196 + languageName: node + linkType: hard + "websocket-driver@npm:>=0.5.1, websocket-driver@npm:^0.7.4": version: 0.7.4 resolution: "websocket-driver@npm:0.7.4" @@ -23576,6 +38279,15 @@ __metadata: languageName: node linkType: hard +"whatwg-encoding@npm:^1.0.5": + version: 1.0.5 + resolution: "whatwg-encoding@npm:1.0.5" + dependencies: + iconv-lite: 0.4.24 + checksum: 5be4efe111dce29ddee3448d3915477fcc3b28f991d9cf1300b4e50d6d189010d47bca2f51140a844cf9b726e8f066f4aee72a04d687bfe4f2ee2767b2f5b1e6 + languageName: node + linkType: hard + "whatwg-encoding@npm:^2.0.0": version: 2.0.0 resolution: "whatwg-encoding@npm:2.0.0" @@ -23585,6 +38297,13 @@ __metadata: languageName: node linkType: hard +"whatwg-mimetype@npm:^2.3.0": + version: 2.3.0 + resolution: "whatwg-mimetype@npm:2.3.0" + checksum: 23eb885940bcbcca4ff841c40a78e9cbb893ec42743993a42bf7aed16085b048b44b06f3402018931687153550f9a32d259dfa524e4f03577ab898b6965e5383 + languageName: node + linkType: hard + "whatwg-mimetype@npm:^3.0.0": version: 3.0.0 resolution: "whatwg-mimetype@npm:3.0.0" @@ -23612,6 +38331,17 @@ __metadata: languageName: node linkType: hard +"whatwg-url@npm:^8.0.0, whatwg-url@npm:^8.5.0": + version: 8.7.0 + resolution: "whatwg-url@npm:8.7.0" + dependencies: + lodash: ^4.7.0 + tr46: ^2.1.0 + webidl-conversions: ^6.1.0 + checksum: a87abcc6cefcece5311eb642858c8fdb234e51ec74196bfacf8def2edae1bfbffdf6acb251646ed6301f8cee44262642d8769c707256125a91387e33f405dd1e + languageName: node + linkType: hard + "which-boxed-primitive@npm:^1.0.2": version: 1.0.2 resolution: "which-boxed-primitive@npm:1.0.2" @@ -23645,7 +38375,7 @@ __metadata: languageName: node linkType: hard -"which-collection@npm:^1.0.2": +"which-collection@npm:^1.0.1, which-collection@npm:^1.0.2": version: 1.0.2 resolution: "which-collection@npm:1.0.2" dependencies: @@ -23657,6 +38387,20 @@ __metadata: languageName: node linkType: hard +"which-typed-array@npm:^1.1.13": + version: 1.1.17 + resolution: "which-typed-array@npm:1.1.17" + dependencies: + available-typed-arrays: ^1.0.7 + call-bind: ^1.0.8 + call-bound: ^1.0.3 + for-each: ^0.3.3 + gopd: ^1.2.0 + has-tostringtag: ^1.0.2 + checksum: 85e47200a834465a530879d905838f055181a7f956ecce8dc287ac50d585cb0dc512f178b5e32b06879f4850930ec7e59165dd406749e9fd3b3b87e157a5d17f + languageName: node + linkType: hard + "which-typed-array@npm:^1.1.14, which-typed-array@npm:^1.1.15, which-typed-array@npm:^1.1.2": version: 1.1.15 resolution: "which-typed-array@npm:1.1.15" @@ -23703,7 +38447,7 @@ __metadata: languageName: node linkType: hard -"wide-align@npm:^1.1.5": +"wide-align@npm:^1.1.2, wide-align@npm:^1.1.5": version: 1.1.5 resolution: "wide-align@npm:1.1.5" dependencies: @@ -23806,7 +38550,7 @@ __metadata: languageName: node linkType: hard -"ws@npm:8.18.0, ws@npm:^8.11.0, ws@npm:^8.13.0, ws@npm:^8.18.0": +"ws@npm:*, ws@npm:8.18.0, ws@npm:^8.11.0, ws@npm:^8.13.0, ws@npm:^8.17.1, ws@npm:^8.18.0, ws@npm:^8.8.0": version: 8.18.0 resolution: "ws@npm:8.18.0" peerDependencies: @@ -23821,6 +38565,66 @@ __metadata: languageName: node linkType: hard +"ws@npm:^7.4.6": + version: 7.5.10 + resolution: "ws@npm:7.5.10" + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ^5.0.2 + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + checksum: f9bb062abf54cc8f02d94ca86dcd349c3945d63851f5d07a3a61c2fcb755b15a88e943a63cf580cbdb5b74436d67ef6b67f745b8f7c0814e411379138e1863cb + languageName: node + linkType: hard + +"xcase@npm:^2.0.1": + version: 2.0.1 + resolution: "xcase@npm:2.0.1" + checksum: 1d407306593f1049ebb5d3b7b86b0d40b4b108be428cf4d17c57454ef5444c962555c387384c121d83a6bcf7a9b6b04a51cc4b76786bfb0fac8d0a108b5b7ef8 + languageName: node + linkType: hard + +"xml-but-prettier@npm:^1.0.1": + version: 1.0.1 + resolution: "xml-but-prettier@npm:1.0.1" + dependencies: + repeat-string: ^1.5.2 + checksum: 66b400079d8f2b2a149d437d94a1286318fb80a4c181a9597282711b595de15640b0066a72a4a7093afce6369798dc9725d5c2338bde59ba1a33fd7f5e753635 + languageName: node + linkType: hard + +"xml-crypto@npm:^6.0.0": + version: 6.0.0 + resolution: "xml-crypto@npm:6.0.0" + dependencies: + "@xmldom/is-dom-node": ^1.0.1 + "@xmldom/xmldom": ^0.8.10 + xpath: ^0.0.33 + checksum: 1c679ed66e4cea6309602cf8d536973f7832b69bd400310802365af972c9a0261c9a456c64015e0e92b8c93f168f9f13a355bbbd04d1219ca61c2a3f544d1208 + languageName: node + linkType: hard + +"xml-encryption@npm:^3.0.2": + version: 3.0.2 + resolution: "xml-encryption@npm:3.0.2" + dependencies: + "@xmldom/xmldom": ^0.8.5 + escape-html: ^1.0.3 + xpath: 0.0.32 + checksum: aac1b987d5de5becfc747c88c3a656c00799a153ab541078b875a69e1ac1f1c2f29bf85f22eab6a78382dc2919f79401a916cc392aba7994475919e0695893eb + languageName: node + linkType: hard + +"xml-name-validator@npm:^3.0.0": + version: 3.0.0 + resolution: "xml-name-validator@npm:3.0.0" + checksum: b3ac459afed783c285bb98e4960bd1f3ba12754fd4f2320efa0f9181ca28928c53cc75ca660d15d205e81f92304419afe94c531c7cfb3e0649aa6d140d53ecb0 + languageName: node + linkType: hard + "xml-name-validator@npm:^4.0.0": version: 4.0.0 resolution: "xml-name-validator@npm:4.0.0" @@ -23828,6 +38632,37 @@ __metadata: languageName: node linkType: hard +"xml2js@npm:^0.6.2": + version: 0.6.2 + resolution: "xml2js@npm:0.6.2" + dependencies: + sax: ">=0.6.0" + xmlbuilder: ~11.0.0 + checksum: 458a83806193008edff44562c0bdb982801d61ee7867ae58fd35fab781e69e17f40dfeb8fc05391a4648c9c54012066d3955fe5d993ffbe4dc63399023f32ac2 + languageName: node + linkType: hard + +"xml@npm:=1.0.1": + version: 1.0.1 + resolution: "xml@npm:1.0.1" + checksum: 11b5545ef3f8fec3fa29ce251f50ad7b6c97c103ed4d851306ec23366f5fa4699dd6a942262df52313a0cd1840ab26256da253c023bad3309d8ce46fe6020ca0 + languageName: node + linkType: hard + +"xmlbuilder@npm:^15.1.1": + version: 15.1.1 + resolution: "xmlbuilder@npm:15.1.1" + checksum: 14f7302402e28d1f32823583d121594a9dca36408d40320b33f598bd589ca5163a352d076489c9c64d2dc1da19a790926a07bf4191275330d4de2b0d85bb1843 + languageName: node + linkType: hard + +"xmlbuilder@npm:~11.0.0": + version: 11.0.1 + resolution: "xmlbuilder@npm:11.0.1" + checksum: 7152695e16f1a9976658215abab27e55d08b1b97bca901d58b048d2b6e106b5af31efccbdecf9b07af37c8377d8e7e821b494af10b3a68b0ff4ae60331b415b0 + languageName: node + linkType: hard + "xmlchars@npm:^2.2.0": version: 2.2.0 resolution: "xmlchars@npm:2.2.0" @@ -23835,6 +38670,27 @@ __metadata: languageName: node linkType: hard +"xpath@npm:0.0.32": + version: 0.0.32 + resolution: "xpath@npm:0.0.32" + checksum: 887e9747b960ea45fb47a9464744424512de0a49205e82c2ad6be662d7a2f1a75145662a143304340864c6da68fd8d767cce4065cc198ee07a3d4897e0a3d4bb + languageName: node + linkType: hard + +"xpath@npm:^0.0.33": + version: 0.0.33 + resolution: "xpath@npm:0.0.33" + checksum: 075cd553819302b9df0ae11526b666016ee286b72e0600a923c7565d847fcfa7ff195db3065ec86b9a12f1f81bfc82f1a316fc53442a8572c31582e87ccaec4a + languageName: node + linkType: hard + +"xpath@npm:^0.0.34": + version: 0.0.34 + resolution: "xpath@npm:0.0.34" + checksum: c10ae2b7be442460462e80a9ef79ca1c9b529abcf696ec3859cddd5a52b64b7e55a54c2c5352ac9c5d195939e2b3aefe708a7428780d7ec0ae7565257ab2a224 + languageName: node + linkType: hard + "xtend@npm:^4.0.0": version: 4.0.2 resolution: "xtend@npm:4.0.2" @@ -23842,6 +38698,31 @@ __metadata: languageName: node linkType: hard +"xterm-addon-attach@npm:^0.9.0": + version: 0.9.0 + resolution: "xterm-addon-attach@npm:0.9.0" + peerDependencies: + xterm: ^5.0.0 + checksum: 70e5d3ecf139c04fae13c644b79c33858ef1a6e28dfe78f91dad3e34f5a155579029b87e91d1d016575acaf17f74e6c59402bde4bcff03461595bea0870f1ec1 + languageName: node + linkType: hard + +"xterm-addon-fit@npm:^0.8.0": + version: 0.8.0 + resolution: "xterm-addon-fit@npm:0.8.0" + peerDependencies: + xterm: ^5.0.0 + checksum: 5af2041b442f7c804eda2e6f62e3b68b5159b0ae6bd96e2aa8d85b26441df57291cbfed653d1196d4af5d9b94bfc39993df8b409a25c35e0d36bdaf6f5cdfe5f + languageName: node + linkType: hard + +"xterm@npm:^5.2.1, xterm@npm:^5.3.0": + version: 5.3.0 + resolution: "xterm@npm:5.3.0" + checksum: 1bdfdfe4cae4412128376180d85e476b43fb021cdd1114b18acad821c9ea44b5b600e0d88febf2b3572f38fad7741e5161ce0178a44369617cf937222cc6e011 + languageName: node + linkType: hard + "y18n@npm:^5.0.5": version: 5.0.8 resolution: "y18n@npm:5.0.8" @@ -23849,6 +38730,13 @@ __metadata: languageName: node linkType: hard +"yallist@npm:4.0.0, yallist@npm:^4.0.0": + version: 4.0.0 + resolution: "yallist@npm:4.0.0" + checksum: 343617202af32df2a15a3be36a5a8c0c8545208f3d3dfbc6bb7c3e3b7e8c6f8e7485432e4f3b88da3031a6e20afa7c711eded32ddfb122896ac5d914e75848d5 + languageName: node + linkType: hard + "yallist@npm:^2.1.2": version: 2.1.2 resolution: "yallist@npm:2.1.2" @@ -23863,13 +38751,6 @@ __metadata: languageName: node linkType: hard -"yallist@npm:^4.0.0": - version: 4.0.0 - resolution: "yallist@npm:4.0.0" - checksum: 343617202af32df2a15a3be36a5a8c0c8545208f3d3dfbc6bb7c3e3b7e8c6f8e7485432e4f3b88da3031a6e20afa7c711eded32ddfb122896ac5d914e75848d5 - languageName: node - linkType: hard - "yaml-ast-parser@npm:^0.0.43": version: 0.0.43 resolution: "yaml-ast-parser@npm:0.0.43" @@ -23908,6 +38789,15 @@ __metadata: languageName: node linkType: hard +"yaml@npm:^2.2.1": + version: 2.6.1 + resolution: "yaml@npm:2.6.1" + bin: + yaml: bin.mjs + checksum: 5cf2627f121dcf04ccdebce8e6cbac7c9983d465c4eab314f6fbdc13cda8a07f4e8f9c2252a382b30bcabe05ee3c683647293afd52eb37cbcefbdc7b6ebde9ee + languageName: node + linkType: hard + "yargs-parser@npm:^20.2.2": version: 20.2.9 resolution: "yargs-parser@npm:20.2.9" @@ -24015,6 +38905,32 @@ __metadata: languageName: node linkType: hard +"yup@npm:^1.0.0": + version: 1.6.1 + resolution: "yup@npm:1.6.1" + dependencies: + property-expr: ^2.0.5 + tiny-case: ^1.0.3 + toposort: ^2.0.2 + type-fest: ^2.19.0 + checksum: 4ef0b15eb01d89a4f15c78c112b588468d553420be6f2f519d0e58a270c96a5bbbf1bff7bc8909851ba8b3df5e1fdb8b34d4a3bd4e9269006c592b3e8580568f + languageName: node + linkType: hard + +"zen-observable@npm:^0.10.0": + version: 0.10.0 + resolution: "zen-observable@npm:0.10.0" + checksum: cee4e8902fcf4ed49f96937e9bc30b980ad3311b85e94b836c77f787163c98f19c65d2d8ac80990e8ecf4c1497d84821d58580d5ee20015f55516de146e8b7af + languageName: node + linkType: hard + +"zenscroll@npm:^4.0.2": + version: 4.0.2 + resolution: "zenscroll@npm:4.0.2" + checksum: 5fe5c8b685246985cbb8eb270bbbac013bddaf5cde0fb9042c7b5640e31877d11a28892a802426659fe505b0b514d4d004fedd27c0cc22682611cc8f9e43132e + languageName: node + linkType: hard + "zip-stream@npm:^6.0.1": version: 6.0.1 resolution: "zip-stream@npm:6.0.1" @@ -24050,3 +38966,17 @@ __metadata: checksum: 15949ff82118f59c893dacd9d3c766d02b6fa2e71cf474d5aa888570c469dbf5446ac5ad562bb035bf7ac9650da94f290655c194f4a6de3e766f43febd432c5c languageName: node linkType: hard + +"zstd-codec@npm:^0.1.5": + version: 0.1.5 + resolution: "zstd-codec@npm:0.1.5" + checksum: ba62bf643c3ca9759fedc090b73a0c3b1e506364fcae902a70b112c1f5b30bc6aabff3184808cc4430f2ab6644cabae979368152ae908c1d8ef39cd8c3223c85 + languageName: node + linkType: hard + +"zwitch@npm:^2.0.0": + version: 2.0.4 + resolution: "zwitch@npm:2.0.4" + checksum: f22ec5fc2d5f02c423c93d35cdfa83573a3a3bd98c66b927c368ea4d0e7252a500df2a90a6b45522be536a96a73404393c958e945fdba95e6832c200791702b6 + languageName: node + linkType: hard

    Q?LnZ397Zi%y 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 \ No newline at end of file diff --git a/workspaces/kiali/plugins/kiali/src/assets/img/legend-nooptimize/aggregate.svg b/workspaces/kiali/plugins/kiali/src/assets/img/legend-nooptimize/aggregate.svg new file mode 100755 index 0000000000..13908e47c4 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/assets/img/legend-nooptimize/aggregate.svg @@ -0,0 +1,74 @@ + + + + + + + + image/svg+xml + + + + + + + + + diff --git a/workspaces/kiali/plugins/kiali/src/assets/img/legend-nooptimize/app.svg b/workspaces/kiali/plugins/kiali/src/assets/img/legend-nooptimize/app.svg new file mode 100755 index 0000000000..a72267f4b1 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/assets/img/legend-nooptimize/app.svg @@ -0,0 +1,75 @@ + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + diff --git a/workspaces/kiali/plugins/kiali/src/assets/img/legend-nooptimize/edge-danger.svg b/workspaces/kiali/plugins/kiali/src/assets/img/legend-nooptimize/edge-danger.svg new file mode 100755 index 0000000000..1fc4ed9d81 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/assets/img/legend-nooptimize/edge-danger.svg @@ -0,0 +1,76 @@ + + + + + + + + + + image/svg+xml + + + + + + + + + + + + diff --git a/workspaces/kiali/plugins/kiali/src/assets/img/legend-nooptimize/edge-idle.svg b/workspaces/kiali/plugins/kiali/src/assets/img/legend-nooptimize/edge-idle.svg new file mode 100755 index 0000000000..2c62a1eb10 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/assets/img/legend-nooptimize/edge-idle.svg @@ -0,0 +1,76 @@ + + + + + + + + + + image/svg+xml + + + + + + + + + + + + diff --git a/workspaces/kiali/plugins/kiali/src/assets/img/legend-nooptimize/edge-success.svg b/workspaces/kiali/plugins/kiali/src/assets/img/legend-nooptimize/edge-success.svg new file mode 100755 index 0000000000..65fee59c66 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/assets/img/legend-nooptimize/edge-success.svg @@ -0,0 +1,76 @@ + + + + + + + + + + image/svg+xml + + + + + + + + + + + + diff --git a/workspaces/kiali/plugins/kiali/src/assets/img/legend-nooptimize/edge-tcp.svg b/workspaces/kiali/plugins/kiali/src/assets/img/legend-nooptimize/edge-tcp.svg new file mode 100755 index 0000000000..b58e722729 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/assets/img/legend-nooptimize/edge-tcp.svg @@ -0,0 +1,73 @@ + + + + + + + + + + image/svg+xml + + + + + + + + + + + + diff --git a/workspaces/kiali/plugins/kiali/src/assets/img/legend-nooptimize/edge-warn.svg b/workspaces/kiali/plugins/kiali/src/assets/img/legend-nooptimize/edge-warn.svg new file mode 100755 index 0000000000..e30a4ba648 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/assets/img/legend-nooptimize/edge-warn.svg @@ -0,0 +1,76 @@ + + + + + + + + + + image/svg+xml + + + + + + + + + + + + diff --git a/workspaces/kiali/plugins/kiali/src/assets/img/legend-nooptimize/external-namespace.svg b/workspaces/kiali/plugins/kiali/src/assets/img/legend-nooptimize/external-namespace.svg new file mode 100755 index 0000000000..6857f7e774 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/assets/img/legend-nooptimize/external-namespace.svg @@ -0,0 +1,83 @@ + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + diff --git a/workspaces/kiali/plugins/kiali/src/assets/img/legend-nooptimize/mtls-badge.svg b/workspaces/kiali/plugins/kiali/src/assets/img/legend-nooptimize/mtls-badge.svg new file mode 100755 index 0000000000..164474f83c --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/assets/img/legend-nooptimize/mtls-badge.svg @@ -0,0 +1,64 @@ + + + + + + + + + + image/svg+xml + + + + + + + + + diff --git a/workspaces/kiali/plugins/kiali/src/assets/img/legend-nooptimize/node-badge-circuit-breaker.svg b/workspaces/kiali/plugins/kiali/src/assets/img/legend-nooptimize/node-badge-circuit-breaker.svg new file mode 100755 index 0000000000..eb1ce6ec8f --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/assets/img/legend-nooptimize/node-badge-circuit-breaker.svg @@ -0,0 +1,75 @@ + + + + + + + + + + image/svg+xml + + + + + + + + + + + + diff --git a/workspaces/kiali/plugins/kiali/src/assets/img/legend-nooptimize/node-badge-fault-injection.svg b/workspaces/kiali/plugins/kiali/src/assets/img/legend-nooptimize/node-badge-fault-injection.svg new file mode 100644 index 0000000000..ffd0490210 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/assets/img/legend-nooptimize/node-badge-fault-injection.svg @@ -0,0 +1,79 @@ + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + diff --git a/workspaces/kiali/plugins/kiali/src/assets/img/legend-nooptimize/node-badge-gateways.svg b/workspaces/kiali/plugins/kiali/src/assets/img/legend-nooptimize/node-badge-gateways.svg new file mode 100755 index 0000000000..296ab4777f --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/assets/img/legend-nooptimize/node-badge-gateways.svg @@ -0,0 +1,81 @@ + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + diff --git a/workspaces/kiali/plugins/kiali/src/assets/img/legend-nooptimize/node-badge-mirroring.svg b/workspaces/kiali/plugins/kiali/src/assets/img/legend-nooptimize/node-badge-mirroring.svg new file mode 100644 index 0000000000..c4c9ed65ce --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/assets/img/legend-nooptimize/node-badge-mirroring.svg @@ -0,0 +1,80 @@ + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + diff --git a/workspaces/kiali/plugins/kiali/src/assets/img/legend-nooptimize/node-badge-missing-sidecar.svg b/workspaces/kiali/plugins/kiali/src/assets/img/legend-nooptimize/node-badge-missing-sidecar.svg new file mode 100755 index 0000000000..f8005984ad --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/assets/img/legend-nooptimize/node-badge-missing-sidecar.svg @@ -0,0 +1,119 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + diff --git a/workspaces/kiali/plugins/kiali/src/assets/img/legend-nooptimize/node-badge-request-timeout.svg b/workspaces/kiali/plugins/kiali/src/assets/img/legend-nooptimize/node-badge-request-timeout.svg new file mode 100644 index 0000000000..09df86b5a9 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/assets/img/legend-nooptimize/node-badge-request-timeout.svg @@ -0,0 +1,95 @@ + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + diff --git a/workspaces/kiali/plugins/kiali/src/assets/img/legend-nooptimize/node-badge-traffic-shifting.svg b/workspaces/kiali/plugins/kiali/src/assets/img/legend-nooptimize/node-badge-traffic-shifting.svg new file mode 100644 index 0000000000..6ee8675e05 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/assets/img/legend-nooptimize/node-badge-traffic-shifting.svg @@ -0,0 +1,82 @@ + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + diff --git a/workspaces/kiali/plugins/kiali/src/assets/img/legend-nooptimize/node-badge-traffic-source.svg b/workspaces/kiali/plugins/kiali/src/assets/img/legend-nooptimize/node-badge-traffic-source.svg new file mode 100755 index 0000000000..e31cafcac7 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/assets/img/legend-nooptimize/node-badge-traffic-source.svg @@ -0,0 +1,101 @@ + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + diff --git a/workspaces/kiali/plugins/kiali/src/assets/img/legend-nooptimize/node-badge-virtual-services.svg b/workspaces/kiali/plugins/kiali/src/assets/img/legend-nooptimize/node-badge-virtual-services.svg new file mode 100755 index 0000000000..f187caa18c --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/assets/img/legend-nooptimize/node-badge-virtual-services.svg @@ -0,0 +1,75 @@ + + + + + + + + + + image/svg+xml + + + + + + + + + + + + diff --git a/workspaces/kiali/plugins/kiali/src/assets/img/legend-nooptimize/node-badge-workload-entry.svg b/workspaces/kiali/plugins/kiali/src/assets/img/legend-nooptimize/node-badge-workload-entry.svg new file mode 100644 index 0000000000..cc6a5eeee9 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/assets/img/legend-nooptimize/node-badge-workload-entry.svg @@ -0,0 +1,500 @@ + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/workspaces/kiali/plugins/kiali/src/assets/img/legend-nooptimize/node-color-danger.svg b/workspaces/kiali/plugins/kiali/src/assets/img/legend-nooptimize/node-color-danger.svg new file mode 100755 index 0000000000..88fa40b792 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/assets/img/legend-nooptimize/node-color-danger.svg @@ -0,0 +1,63 @@ + + + + + + + + + + image/svg+xml + + + + + + + + + diff --git a/workspaces/kiali/plugins/kiali/src/assets/img/legend-nooptimize/node-color-idle.svg b/workspaces/kiali/plugins/kiali/src/assets/img/legend-nooptimize/node-color-idle.svg new file mode 100755 index 0000000000..21ea604d15 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/assets/img/legend-nooptimize/node-color-idle.svg @@ -0,0 +1,62 @@ + + + + + + + + + + image/svg+xml + + + + + + + + + diff --git a/workspaces/kiali/plugins/kiali/src/assets/img/legend-nooptimize/node-color-normal.svg b/workspaces/kiali/plugins/kiali/src/assets/img/legend-nooptimize/node-color-normal.svg new file mode 100755 index 0000000000..bbc283b45c --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/assets/img/legend-nooptimize/node-color-normal.svg @@ -0,0 +1,63 @@ + + + + + + + + + + image/svg+xml + + + + + + + + + diff --git a/workspaces/kiali/plugins/kiali/src/assets/img/legend-nooptimize/node-color-warning.svg b/workspaces/kiali/plugins/kiali/src/assets/img/legend-nooptimize/node-color-warning.svg new file mode 100755 index 0000000000..759998942c --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/assets/img/legend-nooptimize/node-color-warning.svg @@ -0,0 +1,63 @@ + + + + + + + + + + image/svg+xml + + + + + + + + + diff --git a/workspaces/kiali/plugins/kiali/src/assets/img/legend-nooptimize/node.svg b/workspaces/kiali/plugins/kiali/src/assets/img/legend-nooptimize/node.svg new file mode 100755 index 0000000000..eaebd1914a --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/assets/img/legend-nooptimize/node.svg @@ -0,0 +1,67 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + diff --git a/workspaces/kiali/plugins/kiali/src/assets/img/legend-nooptimize/restricted-namespace.svg b/workspaces/kiali/plugins/kiali/src/assets/img/legend-nooptimize/restricted-namespace.svg new file mode 100755 index 0000000000..0a22dfc226 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/assets/img/legend-nooptimize/restricted-namespace.svg @@ -0,0 +1,72 @@ + + + + + + + + + + image/svg+xml + + + + + + + + + + + + diff --git a/workspaces/kiali/plugins/kiali/src/assets/img/legend-nooptimize/service-entry.svg b/workspaces/kiali/plugins/kiali/src/assets/img/legend-nooptimize/service-entry.svg new file mode 100755 index 0000000000..6ec2c0432b --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/assets/img/legend-nooptimize/service-entry.svg @@ -0,0 +1,68 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + diff --git a/workspaces/kiali/plugins/kiali/src/assets/img/legend-nooptimize/service.svg b/workspaces/kiali/plugins/kiali/src/assets/img/legend-nooptimize/service.svg new file mode 100755 index 0000000000..b024b386ea --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/assets/img/legend-nooptimize/service.svg @@ -0,0 +1,65 @@ + + + + + + + + + + image/svg+xml + + + + + + + + + diff --git a/workspaces/kiali/plugins/kiali/src/assets/img/legend-nooptimize/traffic-failed-request.svg b/workspaces/kiali/plugins/kiali/src/assets/img/legend-nooptimize/traffic-failed-request.svg new file mode 100755 index 0000000000..881e4fc5da --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/assets/img/legend-nooptimize/traffic-failed-request.svg @@ -0,0 +1,78 @@ + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + diff --git a/workspaces/kiali/plugins/kiali/src/assets/img/legend-nooptimize/traffic-normal-request.svg b/workspaces/kiali/plugins/kiali/src/assets/img/legend-nooptimize/traffic-normal-request.svg new file mode 100755 index 0000000000..951171e5aa --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/assets/img/legend-nooptimize/traffic-normal-request.svg @@ -0,0 +1,74 @@ + + + + + + + + + + image/svg+xml + + + + + + + + + + + + diff --git a/workspaces/kiali/plugins/kiali/src/assets/img/legend-nooptimize/traffic-tcp.svg b/workspaces/kiali/plugins/kiali/src/assets/img/legend-nooptimize/traffic-tcp.svg new file mode 100755 index 0000000000..a7fc17472a --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/assets/img/legend-nooptimize/traffic-tcp.svg @@ -0,0 +1,92 @@ + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + diff --git a/workspaces/kiali/plugins/kiali/src/assets/img/legend-nooptimize/virtualservice.svg b/workspaces/kiali/plugins/kiali/src/assets/img/legend-nooptimize/virtualservice.svg new file mode 100755 index 0000000000..0cc7ea7759 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/assets/img/legend-nooptimize/virtualservice.svg @@ -0,0 +1,66 @@ + + + + + + + + + + image/svg+xml + + + + + + + + + diff --git a/workspaces/kiali/plugins/kiali/src/assets/img/legend-pf/aggregate.svg b/workspaces/kiali/plugins/kiali/src/assets/img/legend-pf/aggregate.svg new file mode 100644 index 0000000000..ff211b6aaa --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/assets/img/legend-pf/aggregate.svg @@ -0,0 +1,19 @@ + + + + + + diff --git a/workspaces/kiali/plugins/kiali/src/assets/img/legend-pf/app.svg b/workspaces/kiali/plugins/kiali/src/assets/img/legend-pf/app.svg new file mode 100644 index 0000000000..f5ff9a691e --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/assets/img/legend-pf/app.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/workspaces/kiali/plugins/kiali/src/assets/img/legend-pf/edge-danger.svg b/workspaces/kiali/plugins/kiali/src/assets/img/legend-pf/edge-danger.svg new file mode 100644 index 0000000000..013913b2d6 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/assets/img/legend-pf/edge-danger.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/workspaces/kiali/plugins/kiali/src/assets/img/legend-pf/edge-idle.svg b/workspaces/kiali/plugins/kiali/src/assets/img/legend-pf/edge-idle.svg new file mode 100644 index 0000000000..7c35624d61 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/assets/img/legend-pf/edge-idle.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/workspaces/kiali/plugins/kiali/src/assets/img/legend-pf/edge-success.svg b/workspaces/kiali/plugins/kiali/src/assets/img/legend-pf/edge-success.svg new file mode 100644 index 0000000000..e1467ec020 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/assets/img/legend-pf/edge-success.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/workspaces/kiali/plugins/kiali/src/assets/img/legend-pf/edge-tcp.svg b/workspaces/kiali/plugins/kiali/src/assets/img/legend-pf/edge-tcp.svg new file mode 100644 index 0000000000..6877978009 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/assets/img/legend-pf/edge-tcp.svg @@ -0,0 +1,12 @@ + + + + diff --git a/workspaces/kiali/plugins/kiali/src/assets/img/legend-pf/edge-warn.svg b/workspaces/kiali/plugins/kiali/src/assets/img/legend-pf/edge-warn.svg new file mode 100644 index 0000000000..f94a0b46c3 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/assets/img/legend-pf/edge-warn.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/workspaces/kiali/plugins/kiali/src/assets/img/legend-pf/external-namespace.svg b/workspaces/kiali/plugins/kiali/src/assets/img/legend-pf/external-namespace.svg new file mode 100644 index 0000000000..36faf0831e --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/assets/img/legend-pf/external-namespace.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/workspaces/kiali/plugins/kiali/src/assets/img/legend-pf/mtls-badge.svg b/workspaces/kiali/plugins/kiali/src/assets/img/legend-pf/mtls-badge.svg new file mode 100644 index 0000000000..0f2c461565 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/assets/img/legend-pf/mtls-badge.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/workspaces/kiali/plugins/kiali/src/assets/img/legend-pf/node-badge-circuit-breaker.svg b/workspaces/kiali/plugins/kiali/src/assets/img/legend-pf/node-badge-circuit-breaker.svg new file mode 100644 index 0000000000..c0b994e96e --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/assets/img/legend-pf/node-badge-circuit-breaker.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/workspaces/kiali/plugins/kiali/src/assets/img/legend-pf/node-badge-fault-injection.svg b/workspaces/kiali/plugins/kiali/src/assets/img/legend-pf/node-badge-fault-injection.svg new file mode 100644 index 0000000000..aaee7f2a8d --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/assets/img/legend-pf/node-badge-fault-injection.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/workspaces/kiali/plugins/kiali/src/assets/img/legend-pf/node-badge-gateways.svg b/workspaces/kiali/plugins/kiali/src/assets/img/legend-pf/node-badge-gateways.svg new file mode 100644 index 0000000000..1a68c7528d --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/assets/img/legend-pf/node-badge-gateways.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/workspaces/kiali/plugins/kiali/src/assets/img/legend-pf/node-badge-mirroring.svg b/workspaces/kiali/plugins/kiali/src/assets/img/legend-pf/node-badge-mirroring.svg new file mode 100644 index 0000000000..3d0a35b6ff --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/assets/img/legend-pf/node-badge-mirroring.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/workspaces/kiali/plugins/kiali/src/assets/img/legend-pf/node-badge-missing-sidecar.svg b/workspaces/kiali/plugins/kiali/src/assets/img/legend-pf/node-badge-missing-sidecar.svg new file mode 100644 index 0000000000..920bcd75cd --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/assets/img/legend-pf/node-badge-missing-sidecar.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/workspaces/kiali/plugins/kiali/src/assets/img/legend-pf/node-badge-request-timeout.svg b/workspaces/kiali/plugins/kiali/src/assets/img/legend-pf/node-badge-request-timeout.svg new file mode 100644 index 0000000000..2669972377 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/assets/img/legend-pf/node-badge-request-timeout.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/workspaces/kiali/plugins/kiali/src/assets/img/legend-pf/node-badge-traffic-shifting.svg b/workspaces/kiali/plugins/kiali/src/assets/img/legend-pf/node-badge-traffic-shifting.svg new file mode 100644 index 0000000000..ffabc60ced --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/assets/img/legend-pf/node-badge-traffic-shifting.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/workspaces/kiali/plugins/kiali/src/assets/img/legend-pf/node-badge-traffic-source.svg b/workspaces/kiali/plugins/kiali/src/assets/img/legend-pf/node-badge-traffic-source.svg new file mode 100644 index 0000000000..c8935e695c --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/assets/img/legend-pf/node-badge-traffic-source.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/workspaces/kiali/plugins/kiali/src/assets/img/legend-pf/node-badge-virtual-services.svg b/workspaces/kiali/plugins/kiali/src/assets/img/legend-pf/node-badge-virtual-services.svg new file mode 100644 index 0000000000..c5f6063317 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/assets/img/legend-pf/node-badge-virtual-services.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/workspaces/kiali/plugins/kiali/src/assets/img/legend-pf/node-badge-workload-entry.svg b/workspaces/kiali/plugins/kiali/src/assets/img/legend-pf/node-badge-workload-entry.svg new file mode 100644 index 0000000000..2274f8843d --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/assets/img/legend-pf/node-badge-workload-entry.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/workspaces/kiali/plugins/kiali/src/assets/img/legend-pf/node-color-danger.svg b/workspaces/kiali/plugins/kiali/src/assets/img/legend-pf/node-color-danger.svg new file mode 100644 index 0000000000..5da21fd0fd --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/assets/img/legend-pf/node-color-danger.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/workspaces/kiali/plugins/kiali/src/assets/img/legend-pf/node-color-healthy.svg b/workspaces/kiali/plugins/kiali/src/assets/img/legend-pf/node-color-healthy.svg new file mode 100644 index 0000000000..bfaa1e90de --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/assets/img/legend-pf/node-color-healthy.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/workspaces/kiali/plugins/kiali/src/assets/img/legend-pf/node-color-idle.svg b/workspaces/kiali/plugins/kiali/src/assets/img/legend-pf/node-color-idle.svg new file mode 100644 index 0000000000..6ad4a0bae6 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/assets/img/legend-pf/node-color-idle.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/workspaces/kiali/plugins/kiali/src/assets/img/legend-pf/node-color-warning.svg b/workspaces/kiali/plugins/kiali/src/assets/img/legend-pf/node-color-warning.svg new file mode 100644 index 0000000000..d4fcbefa52 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/assets/img/legend-pf/node-color-warning.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/workspaces/kiali/plugins/kiali/src/assets/img/legend-pf/node.svg b/workspaces/kiali/plugins/kiali/src/assets/img/legend-pf/node.svg new file mode 100644 index 0000000000..be7c352c8e --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/assets/img/legend-pf/node.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/workspaces/kiali/plugins/kiali/src/assets/img/legend-pf/restricted-namespace.svg b/workspaces/kiali/plugins/kiali/src/assets/img/legend-pf/restricted-namespace.svg new file mode 100644 index 0000000000..682af9d738 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/assets/img/legend-pf/restricted-namespace.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/workspaces/kiali/plugins/kiali/src/assets/img/legend-pf/service-entry.svg b/workspaces/kiali/plugins/kiali/src/assets/img/legend-pf/service-entry.svg new file mode 100644 index 0000000000..0a0c8d2f94 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/assets/img/legend-pf/service-entry.svg @@ -0,0 +1,17 @@ + + + + + + diff --git a/workspaces/kiali/plugins/kiali/src/assets/img/legend-pf/service.svg b/workspaces/kiali/plugins/kiali/src/assets/img/legend-pf/service.svg new file mode 100644 index 0000000000..e7925f6b06 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/assets/img/legend-pf/service.svg @@ -0,0 +1,18 @@ + + + + diff --git a/workspaces/kiali/plugins/kiali/src/assets/img/legend-pf/traffic-failed-request.svg b/workspaces/kiali/plugins/kiali/src/assets/img/legend-pf/traffic-failed-request.svg new file mode 100644 index 0000000000..0629173a38 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/assets/img/legend-pf/traffic-failed-request.svg @@ -0,0 +1,22 @@ + + + + + + diff --git a/workspaces/kiali/plugins/kiali/src/assets/img/legend-pf/traffic-healthy-request.svg b/workspaces/kiali/plugins/kiali/src/assets/img/legend-pf/traffic-healthy-request.svg new file mode 100644 index 0000000000..2f606a6d34 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/assets/img/legend-pf/traffic-healthy-request.svg @@ -0,0 +1,21 @@ + + + + + + diff --git a/workspaces/kiali/plugins/kiali/src/assets/img/legend-pf/traffic-tcp.svg b/workspaces/kiali/plugins/kiali/src/assets/img/legend-pf/traffic-tcp.svg new file mode 100644 index 0000000000..0fd634efbb --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/assets/img/legend-pf/traffic-tcp.svg @@ -0,0 +1,21 @@ + + + + + + diff --git a/workspaces/kiali/plugins/kiali/src/assets/img/legend/aggregate.svg b/workspaces/kiali/plugins/kiali/src/assets/img/legend/aggregate.svg new file mode 100644 index 0000000000..7bf7199af5 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/assets/img/legend/aggregate.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/workspaces/kiali/plugins/kiali/src/assets/img/legend/app.svg b/workspaces/kiali/plugins/kiali/src/assets/img/legend/app.svg new file mode 100644 index 0000000000..f5ff9a691e --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/assets/img/legend/app.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/workspaces/kiali/plugins/kiali/src/assets/img/legend/edge-danger.svg b/workspaces/kiali/plugins/kiali/src/assets/img/legend/edge-danger.svg new file mode 100644 index 0000000000..013913b2d6 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/assets/img/legend/edge-danger.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/workspaces/kiali/plugins/kiali/src/assets/img/legend/edge-idle.svg b/workspaces/kiali/plugins/kiali/src/assets/img/legend/edge-idle.svg new file mode 100644 index 0000000000..7c35624d61 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/assets/img/legend/edge-idle.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/workspaces/kiali/plugins/kiali/src/assets/img/legend/edge-success.svg b/workspaces/kiali/plugins/kiali/src/assets/img/legend/edge-success.svg new file mode 100644 index 0000000000..e1467ec020 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/assets/img/legend/edge-success.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/workspaces/kiali/plugins/kiali/src/assets/img/legend/edge-tcp.svg b/workspaces/kiali/plugins/kiali/src/assets/img/legend/edge-tcp.svg new file mode 100644 index 0000000000..ee5bc699cd --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/assets/img/legend/edge-tcp.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/workspaces/kiali/plugins/kiali/src/assets/img/legend/edge-warn.svg b/workspaces/kiali/plugins/kiali/src/assets/img/legend/edge-warn.svg new file mode 100644 index 0000000000..f94a0b46c3 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/assets/img/legend/edge-warn.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/workspaces/kiali/plugins/kiali/src/assets/img/legend/external-namespace.svg b/workspaces/kiali/plugins/kiali/src/assets/img/legend/external-namespace.svg new file mode 100644 index 0000000000..36faf0831e --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/assets/img/legend/external-namespace.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/workspaces/kiali/plugins/kiali/src/assets/img/legend/mtls-badge.svg b/workspaces/kiali/plugins/kiali/src/assets/img/legend/mtls-badge.svg new file mode 100644 index 0000000000..0f2c461565 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/assets/img/legend/mtls-badge.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/workspaces/kiali/plugins/kiali/src/assets/img/legend/node-badge-circuit-breaker.svg b/workspaces/kiali/plugins/kiali/src/assets/img/legend/node-badge-circuit-breaker.svg new file mode 100644 index 0000000000..794e5ebbd4 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/assets/img/legend/node-badge-circuit-breaker.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/workspaces/kiali/plugins/kiali/src/assets/img/legend/node-badge-fault-injection.svg b/workspaces/kiali/plugins/kiali/src/assets/img/legend/node-badge-fault-injection.svg new file mode 100644 index 0000000000..f9f47dc9e7 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/assets/img/legend/node-badge-fault-injection.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/workspaces/kiali/plugins/kiali/src/assets/img/legend/node-badge-gateways.svg b/workspaces/kiali/plugins/kiali/src/assets/img/legend/node-badge-gateways.svg new file mode 100644 index 0000000000..d83528be78 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/assets/img/legend/node-badge-gateways.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/workspaces/kiali/plugins/kiali/src/assets/img/legend/node-badge-mirroring.svg b/workspaces/kiali/plugins/kiali/src/assets/img/legend/node-badge-mirroring.svg new file mode 100644 index 0000000000..6e3d6623c9 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/assets/img/legend/node-badge-mirroring.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/workspaces/kiali/plugins/kiali/src/assets/img/legend/node-badge-missing-sidecar.svg b/workspaces/kiali/plugins/kiali/src/assets/img/legend/node-badge-missing-sidecar.svg new file mode 100644 index 0000000000..f8977dbb17 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/assets/img/legend/node-badge-missing-sidecar.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/workspaces/kiali/plugins/kiali/src/assets/img/legend/node-badge-request-timeout.svg b/workspaces/kiali/plugins/kiali/src/assets/img/legend/node-badge-request-timeout.svg new file mode 100644 index 0000000000..338b8725e2 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/assets/img/legend/node-badge-request-timeout.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/workspaces/kiali/plugins/kiali/src/assets/img/legend/node-badge-traffic-shifting.svg b/workspaces/kiali/plugins/kiali/src/assets/img/legend/node-badge-traffic-shifting.svg new file mode 100644 index 0000000000..d09ff2bba5 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/assets/img/legend/node-badge-traffic-shifting.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/workspaces/kiali/plugins/kiali/src/assets/img/legend/node-badge-traffic-source.svg b/workspaces/kiali/plugins/kiali/src/assets/img/legend/node-badge-traffic-source.svg new file mode 100644 index 0000000000..5d2282c32d --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/assets/img/legend/node-badge-traffic-source.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/workspaces/kiali/plugins/kiali/src/assets/img/legend/node-badge-virtual-services.svg b/workspaces/kiali/plugins/kiali/src/assets/img/legend/node-badge-virtual-services.svg new file mode 100644 index 0000000000..4067a3dc12 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/assets/img/legend/node-badge-virtual-services.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/workspaces/kiali/plugins/kiali/src/assets/img/legend/node-badge-workload-entry.svg b/workspaces/kiali/plugins/kiali/src/assets/img/legend/node-badge-workload-entry.svg new file mode 100644 index 0000000000..2c4d532960 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/assets/img/legend/node-badge-workload-entry.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/workspaces/kiali/plugins/kiali/src/assets/img/legend/node-color-danger.svg b/workspaces/kiali/plugins/kiali/src/assets/img/legend/node-color-danger.svg new file mode 100644 index 0000000000..5da21fd0fd --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/assets/img/legend/node-color-danger.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/workspaces/kiali/plugins/kiali/src/assets/img/legend/node-color-idle.svg b/workspaces/kiali/plugins/kiali/src/assets/img/legend/node-color-idle.svg new file mode 100644 index 0000000000..b276cdace3 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/assets/img/legend/node-color-idle.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/workspaces/kiali/plugins/kiali/src/assets/img/legend/node-color-normal.svg b/workspaces/kiali/plugins/kiali/src/assets/img/legend/node-color-normal.svg new file mode 100644 index 0000000000..6ad4a0bae6 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/assets/img/legend/node-color-normal.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/workspaces/kiali/plugins/kiali/src/assets/img/legend/node-color-warning.svg b/workspaces/kiali/plugins/kiali/src/assets/img/legend/node-color-warning.svg new file mode 100644 index 0000000000..d4fcbefa52 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/assets/img/legend/node-color-warning.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/workspaces/kiali/plugins/kiali/src/assets/img/legend/node.svg b/workspaces/kiali/plugins/kiali/src/assets/img/legend/node.svg new file mode 100644 index 0000000000..be7c352c8e --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/assets/img/legend/node.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/workspaces/kiali/plugins/kiali/src/assets/img/legend/restricted-namespace.svg b/workspaces/kiali/plugins/kiali/src/assets/img/legend/restricted-namespace.svg new file mode 100644 index 0000000000..682af9d738 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/assets/img/legend/restricted-namespace.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/workspaces/kiali/plugins/kiali/src/assets/img/legend/service-entry.svg b/workspaces/kiali/plugins/kiali/src/assets/img/legend/service-entry.svg new file mode 100644 index 0000000000..cee2228f11 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/assets/img/legend/service-entry.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/workspaces/kiali/plugins/kiali/src/assets/img/legend/service.svg b/workspaces/kiali/plugins/kiali/src/assets/img/legend/service.svg new file mode 100644 index 0000000000..12dd4a177a --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/assets/img/legend/service.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/workspaces/kiali/plugins/kiali/src/assets/img/legend/traffic-failed-request.svg b/workspaces/kiali/plugins/kiali/src/assets/img/legend/traffic-failed-request.svg new file mode 100644 index 0000000000..1eed174bd7 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/assets/img/legend/traffic-failed-request.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/workspaces/kiali/plugins/kiali/src/assets/img/legend/traffic-normal-request.svg b/workspaces/kiali/plugins/kiali/src/assets/img/legend/traffic-normal-request.svg new file mode 100644 index 0000000000..631c85d12c --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/assets/img/legend/traffic-normal-request.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/workspaces/kiali/plugins/kiali/src/assets/img/legend/traffic-tcp.svg b/workspaces/kiali/plugins/kiali/src/assets/img/legend/traffic-tcp.svg new file mode 100644 index 0000000000..0de0e373fc --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/assets/img/legend/traffic-tcp.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/workspaces/kiali/plugins/kiali/src/assets/img/legend/virtualservice.svg b/workspaces/kiali/plugins/kiali/src/assets/img/legend/virtualservice.svg new file mode 100644 index 0000000000..3e5a985eaa --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/assets/img/legend/virtualservice.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/workspaces/kiali/plugins/kiali/src/assets/img/logo-alt.svg b/workspaces/kiali/plugins/kiali/src/assets/img/logo-alt.svg new file mode 100644 index 0000000000..97465ab35d --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/assets/img/logo-alt.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/workspaces/kiali/plugins/kiali/src/assets/img/logo-lightbkg.svg b/workspaces/kiali/plugins/kiali/src/assets/img/logo-lightbkg.svg new file mode 100644 index 0000000000..3889ec9224 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/assets/img/logo-lightbkg.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/workspaces/kiali/plugins/kiali/src/assets/img/microprofile-logo.png b/workspaces/kiali/plugins/kiali/src/assets/img/microprofile-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..d3deb1ec7b98e71d0f790d70367ef1675bf985a1 GIT binary patch literal 2538 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 A_5c6? literal 0 HcmV?d00001 diff --git a/workspaces/kiali/plugins/kiali/src/assets/img/mtls-status-full-dark.svg b/workspaces/kiali/plugins/kiali/src/assets/img/mtls-status-full-dark.svg new file mode 100644 index 0000000000..76285e3cdd --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/assets/img/mtls-status-full-dark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/workspaces/kiali/plugins/kiali/src/assets/img/mtls-status-full.svg b/workspaces/kiali/plugins/kiali/src/assets/img/mtls-status-full.svg new file mode 100644 index 0000000000..92cbd24642 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/assets/img/mtls-status-full.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/workspaces/kiali/plugins/kiali/src/assets/img/mtls-status-partial-dark.svg b/workspaces/kiali/plugins/kiali/src/assets/img/mtls-status-partial-dark.svg new file mode 100644 index 0000000000..c0dfa62257 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/assets/img/mtls-status-partial-dark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/workspaces/kiali/plugins/kiali/src/assets/img/mtls-status-partial.svg b/workspaces/kiali/plugins/kiali/src/assets/img/mtls-status-partial.svg new file mode 100644 index 0000000000..95b16d2574 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/assets/img/mtls-status-partial.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/workspaces/kiali/plugins/kiali/src/assets/img/node-background-key.png b/workspaces/kiali/plugins/kiali/src/assets/img/node-background-key.png new file mode 100644 index 0000000000000000000000000000000000000000..2349638800e9f61995786ffb1da14fdbedfbcf67 GIT binary patch literal 4286 zcmeH~do)yQAICSQw@G+M>NMeuX%vMqmz-lv<9;16$RtOcFg8Z!(ik%v>Ee2va*0YM z6+$JK(&Y^qk|YO5jxH{_bcQ0gkWhN}bXs-Rde{3$f4qOZYuRh<{p{!Y{hsgsJ)h^Y zemlvPVXv&Ht_T2tGTp&uJ6yWTZlpZ?lnVpr;UXcD=_%aqC&uyxyg+s+h!sZgK`aQd z0|5Z)3{R<5zDGnNJ~EH4BK9qNXkwcr{N8)6R$w6EV#>T~<$WaM&JE|UriK4=Lrr{s z{ys;9%dy)lZnYILo|hCK3(aB{SR|B>T1I`a-HG5Di-l(>`H!UA+b((~248psX^S0p zcg;8K-c7Tj8(?azJ@WuSQJxJ)=G6}$$n<>&DDlEVOg??Cw6Uq&v zLZ-M+x>WdG)=a=*Ke-6^nBqL0U9r|Y0f;p+G%_UOZ6UUZj5AZj(gXp4)a^EQpC#a$ zDK1zj;kjYjGKs%5Y``#dJ<| zP){2+2jqsqA(-MQ#7|mZjX(XTQKmzsbNqt9o$LT%@Rv?s+Z{l5P%u1<&uX6xE&?_P zk6$)YQyd9LkWnOj#t6>};mfqh*!=IWrH_0Q<0V{6xW0+NH#sk@t|eUGMBtm8msZ#R z7cRxGi5hp>GvVGR5ByQHfbfw@*nN&oULnqGIGX%3uPP*}9UYO1ueji}iz0c1s}s;bHx z8AHZsD#pJSEnKLjkVq!fg0|sl_rUUo7c&qo$90oNf**QNFtr90#OFGBdEvfG5`;Y| z{;6EY&A3eOcq!ybz7H^^C&&NqVx3d=nlc{P!5BUaH!a0 zm&C zN|Z=O21nnvlw?j#-OJ8*`=hm-d{m_G#o^j3)jT`MVdS7`B5iz%~I;c)t^49c67Z<{glV^;C;k|lx zaXY&7SWP?Vh)VC0LYI&4N5&7}t`JZYE*Nvs^n?D~+`IK#wvLRTY#`}ycx>BsCdVmn z?nUEyrq}6nnf6!EXUSPnn8nw8s z(bRjBLp48_5-w{*n()@Ohu}R%^oKa2O1q-0?Cj{`#j2h$EQ*3w%Hwxi#y? z8_$!v^-V$x^O)WPzq77-?q0CIgC5j%^}0KGUc)vogltCI`$~|d5uSO>0Z{MJLZXxJ zXNkvBQrORpVyaGRX)`e?V3HY)Oa;#lP94UgCj1spomyAa@pkZeUH?;&T%&vt2$D`Y z9j;$BGd;$qXnxc>gF?sw7U$6gZNZ^G>PHl*Bjx3&*%rPi;9qldjS553!Rl&9x-KQ_ zC|=JlefbH8d$#fMHgYd0+#8+#O&O{xTBn#^t~J^Sbi>}*HsJ?5`;Rpi=`~24K}Hi= z$!@;(aOX|^C)7%wNp{Hv+RvzqogSMrju#xbb=_No9+LD!%RFoZClY5eN+^^kOMteTyGgFKYS`EITROaefb)BH$kum;mdovmVn z9ppX8f4sZVW6aaFUI`qus44Bf7Gdu^Q{b!-;mx(G$iH8jJaOmGE?h>VFBENdu63L*>BRw}g3_DTP^(S{sw(bRAdL@twmvS}MGhrlO*&`4mJ97I{!pMZ+@g z7uOp9jr%3G&Y9l<2k}|P(fdlksE(T*MeegwTVY>(e0*H6iKa;UxY#~bv-8?qEHfle zfnZ>8vapc#*m1)^Z1cj})G*5HUlor#c{!%C)z0C{S`%m9PZI}&cHvYH%t&n=E4Hn! zTVdPwHl+o!Bda>D?gKEt4^JOcB5XcQ^hFNn1WVIe^1-4f9vk8-M$ VH+zXy;VrVCe7Y^ero_rO=HI5j)++!2 literal 0 HcmV?d00001 diff --git a/workspaces/kiali/plugins/kiali/src/assets/img/node-background-topology.png b/workspaces/kiali/plugins/kiali/src/assets/img/node-background-topology.png new file mode 100644 index 0000000000000000000000000000000000000000..557ce49865594760c86fba881c4abad3df8c0b11 GIT binary patch literal 6587 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 WZugpdgWvwXp{I3Lv*e7^)qeqDLsjMg literal 0 HcmV?d00001 diff --git a/workspaces/kiali/plugins/kiali/src/assets/img/nodejs-logo.png b/workspaces/kiali/plugins/kiali/src/assets/img/nodejs-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..f86029656590ec0bac33b94603e68a8e237cd262 GIT binary patch literal 1418 zcmV;51$Fv~P)oY6Eczu1(~j2?>fsM34jm5hFQ^;0u%h6+&%*QfRmBKJFbqa7&hD`v6L46aQa! zXXebz`Old-kL%+$Lu)-dH#fI3H#hfCZEbDcjjUmD`{4&32M%hjLt5+1-bf-@mtr8V zHfLk(a)l7l=k+s5b$YTpf%78bv}*~i z^$g&5;F#8Wt=4)_XA8f!bXOk2tN^M+B$hm|VCR$qzsal$IN6g_G?Q4XOH)%T zN~zzJrCwQ6wBd&|%8Uo9fQLKKxj;k?0~8b#DBHFRftA4BDRP^D#UfIpwALR1FLv@i z{s!iV$bnf^)BFST;+3}Fl-f?F3MBfXqM5{^hL)BXiMWI9v#@;Xo3o7rU!+(3<|_5^-WqyxD7}3f=3u$Vwn5Wi0CbHmCHD1isZ;f2Xw`nM%TV z-l)(RQ<*X`AJ~xGvGJ*$#}hGkA_@VhIdcKmH7R#RolusVwQbRk?EuD@FMu+jzJtR) z2Fw(Zqu!iK;Dt1ErT~Yv)*mL5CA zh{!77J}<_^Q{vXn>v~ij;nDXd^~+Fp#mFJU1|^(C#p*fhYXM5DOC|sx0R4dVC{r1n z_gU17+@pbafV03-5$Uv|^RCb`U@x#XIe)ro5~(PyE*T8G>nXnoObw_qU=FY%SQOgQ z-FtQ$i3MxsVf?-dFS5TLEDC*}LT(W7mKR9p0|S8UU{Ppax2NJa3gh>U1}0;e=(;9R zT3s^EXGae>iNF)UFyLsUp?Q9GPS#A|RbUs;ALuzGfJ~q+SR6_`A1bzhPn<+x6L3GU z2UwDwlQjwm1OD#3RyMa5HZagj)T)6$fvnzEo^Au)^n%?q&%5-x8hary9XJIXzg3%b zCy59!xU{+?Gs)>K^wRrrz-gewOF3F^>4$Sb%H~;_u literal 0 HcmV?d00001 diff --git a/workspaces/kiali/plugins/kiali/src/assets/img/rest-logo.svg b/workspaces/kiali/plugins/kiali/src/assets/img/rest-logo.svg new file mode 100644 index 0000000000..6b04ce7d70 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/assets/img/rest-logo.svg @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/workspaces/kiali/plugins/kiali/src/assets/img/runtime/go.svg b/workspaces/kiali/plugins/kiali/src/assets/img/runtime/go.svg new file mode 100644 index 0000000000..253d146540 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/assets/img/runtime/go.svg @@ -0,0 +1 @@ +Go \ No newline at end of file diff --git a/workspaces/kiali/plugins/kiali/src/assets/img/runtime/java.svg b/workspaces/kiali/plugins/kiali/src/assets/img/runtime/java.svg new file mode 100644 index 0000000000..a7c5e629f7 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/assets/img/runtime/java.svg @@ -0,0 +1 @@ +Java \ No newline at end of file diff --git a/workspaces/kiali/plugins/kiali/src/assets/img/runtime/microprofile.svg b/workspaces/kiali/plugins/kiali/src/assets/img/runtime/microprofile.svg new file mode 100644 index 0000000000..ccdd9eed29 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/assets/img/runtime/microprofile.svg @@ -0,0 +1 @@ +MicroProfile \ No newline at end of file diff --git a/workspaces/kiali/plugins/kiali/src/assets/img/runtime/nodejs.svg b/workspaces/kiali/plugins/kiali/src/assets/img/runtime/nodejs.svg new file mode 100644 index 0000000000..ccc076ee43 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/assets/img/runtime/nodejs.svg @@ -0,0 +1 @@ +Node.js \ No newline at end of file diff --git a/workspaces/kiali/plugins/kiali/src/assets/img/runtime/quarkus.svg b/workspaces/kiali/plugins/kiali/src/assets/img/runtime/quarkus.svg new file mode 100644 index 0000000000..6e0290225c --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/assets/img/runtime/quarkus.svg @@ -0,0 +1 @@ +Quarkus \ No newline at end of file diff --git a/workspaces/kiali/plugins/kiali/src/assets/img/runtime/spring-boot.svg b/workspaces/kiali/plugins/kiali/src/assets/img/runtime/spring-boot.svg new file mode 100644 index 0000000000..ba4a784bba --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/assets/img/runtime/spring-boot.svg @@ -0,0 +1 @@ +Spring Boot \ No newline at end of file diff --git a/workspaces/kiali/plugins/kiali/src/assets/img/runtime/thorntail.svg b/workspaces/kiali/plugins/kiali/src/assets/img/runtime/thorntail.svg new file mode 100644 index 0000000000..3b8d0599f1 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/assets/img/runtime/thorntail.svg @@ -0,0 +1 @@ +Thorntail \ No newline at end of file diff --git a/workspaces/kiali/plugins/kiali/src/assets/img/runtime/tomcat.svg b/workspaces/kiali/plugins/kiali/src/assets/img/runtime/tomcat.svg new file mode 100644 index 0000000000..997f8187bd --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/assets/img/runtime/tomcat.svg @@ -0,0 +1 @@ +Tomcat \ No newline at end of file diff --git a/workspaces/kiali/plugins/kiali/src/assets/img/runtime/vertx.svg b/workspaces/kiali/plugins/kiali/src/assets/img/runtime/vertx.svg new file mode 100644 index 0000000000..1349d875f9 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/assets/img/runtime/vertx.svg @@ -0,0 +1 @@ +Vert.x \ No newline at end of file diff --git a/workspaces/kiali/plugins/kiali/src/assets/img/solid-pin.png b/workspaces/kiali/plugins/kiali/src/assets/img/solid-pin.png new file mode 100644 index 0000000000000000000000000000000000000000..57769bdd7361eb8d49b956186756dc3d0234de0f GIT binary patch literal 6067 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 DeaW@z literal 0 HcmV?d00001 diff --git a/workspaces/kiali/plugins/kiali/src/assets/img/thorntail-logo.png b/workspaces/kiali/plugins/kiali/src/assets/img/thorntail-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..fcf3ddc66a0860c93edae4933bd5325cc0810fed GIT binary patch literal 825 zcmeAS@N?(olHy`uVBq!ia0vp^sX#2u!3-q#-85DNQqKc?LR^6~5r7e)hKrvepsMdY zLuefn3l|>)pC|*bFas+Gleny!1!Lz41_mAH%8iT+LNe->49*Em43=T?%3^`}{8s*4 z3~E-gS_};K2|OCoDU+Exjxkt7vNi5uv?K))f>KEL_4AT*b)1El{+SLCcPT zfnPkTi5V#FlFVQg0#XLF(b$V2XD$PSq9Fq-I|Gj}0~?p5q$Go|jEV_^ii(Pw1<0|J zt}rlkoMR~8!jLwLA-4DDt`%>9qV6R@e!&b44hIAjJ|;X^5O86m!GwZOKfiyvyeaF~ z&u{PEzBp6%=f{ul-@ktT00i&fzIpxP#q(#69^JWd?ee*kM~>`RyJFeA=~J4TQf%iL zE?C6Cz_`oP#WBR<^xa9QhVA!9<|vOjCC0qgkIw%1EYo;!a$eQlbx*Z|8v5=j z^~LQBT;qN8)SV9s(IHLOXECv;3f^A)gH5dZ3(L;Bg59r|oi9i(TpAH_C%eMsFt@3v zS3$0*&3RR~hND!JimW>{`ywSM|<@??OHD(xm_&Sd&%@E3w9<{n60}% z$w>F=+xTfmit=sdz0v>DnljTYJzC01AZD&kYlP0vg-0!Y)1w&r_5c2=UHtCai-kus zmjz9lHBI}R#LsC{QhGW3qbKN0am|<9G-FNJ_sfy%;^y${E=}~Gt6 zFB?v!=zREE@U{4wYoF2gN7@|~%Cegsm+QQ{sp*|LrRZRq&IX&9yL&`+H=o%X;k9pD4Um05bD|77;^MNbXW?#&S5y{78M9W-&$!IpbL$MyXqxnd`QZws9ok^|@ir*G=*EHMoy8Upkv#Bk4`r_!*b`I-jr@arn d=lHK&&u~7?Xvy5rXlYP-@pScbS?83{1OOm1Ne%!2 literal 0 HcmV?d00001 diff --git a/workspaces/kiali/plugins/kiali/src/assets/img/vertx-logo.png b/workspaces/kiali/plugins/kiali/src/assets/img/vertx-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..c438d22778fc8a1c18b794ea8a9c82aeaf945fff GIT binary patch literal 1345 zcmV-H1-|-;P)+00006VoOIv0RI60 z0RN!9r;`8x010qNS#tmY4c7nw4c7reD4Tcy000McNliru;{ps0ISgUG!_NQ!1kOoB zK~z}7)tGB+6-5-se=|jaR=`?$XhQs=71<*75m#{47^BgcAcBcRycE{(FkSHR!5BqM zj0Pc+7`ZXQnw1JF#NY>wpG+{d3wA4Dld?q~5hFeb0c@*c<&<`fZBxmM{Qlv?qg{+%g{#q^!6uLoGFM_W`B_8Qh@z=(`zz2Wy&!gdAF0Q3M? z0&f6z${evIZ8m@(c;5rhCL;D+CqGMqI{CMN z=TgjD{lNRr={F)VZqgv!EiJoNMd1O1_yD$M1bL@^(xff%(GO@c1gHWWed6>3E6bEw zFX=UE4Bb!0cVvU0qOe6;c1(~i@Pf4LDLPPq4H=8J0{b#-`+=*Cag{#OOz8%eswmuE zCJ+`U05}6Y;Rjy#kRTYx1F5AhO6{lZwKo5-ESrAkd>*Q}t_6WdgKk!;zCtn5B`+>LPtoSl&xDS{BJPPFEEKpI~g-5x!9S|N6 zXw75i(IyW8!1~IR=qBc`GIoflsO_}wK92wsfzPC6 zSCygpTn9`w6ur6(&bUr~t}gM3K(p)QWvOzAo1w>z9ojMkYYW}*WZex?fC!IC%bpE< zt^58>vd*5X_J+k_mcb(_#MkHt-Vd&mAD!T{`}OJZX56=@)bMQrL>Dk6ZdX+lwx`s3 z=XqYBwyP+-H!;UNon-=eT}9!_ly!=l+$J|v=X%A!DRv+51+Yw^3KIF7F5y@<_g9Eq zb4z0k(i-4-!+si=;RoIxnZ8TyMWci4P@Nb(W6T zjnT4=!3w2sx3L@s8e;$k(ow7gOk%$j_|SFoRU=Bo*905{4zYJoZII91ika+#7IQ0!%mmhe&XWup(3%X>I*Yt6Mi%eW6 zKTY$<<-iGGrXP3*F7z(XMF_-r;3i;~A9yD(biRK9dcc&D-N2+700000NkvXXu0mjf DqTF>H literal 0 HcmV?d00001 diff --git a/workspaces/kiali/plugins/kiali/src/components/About/AboutUIModal.tsx b/workspaces/kiali/plugins/kiali/src/components/About/AboutUIModal.tsx new file mode 100644 index 0000000000..0900ee1df8 --- /dev/null +++ b/workspaces/kiali/plugins/kiali/src/components/About/AboutUIModal.tsx @@ -0,0 +1,248 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import * as React from 'react'; + +import { Link } from '@backstage/core-components'; + +import { + Card, + CardContent, + CardHeader, + Collapse, + Dialog, + DialogActions, + DialogContent, + DialogTitle, + Grid, + IconButton, + Typography, +} from '@material-ui/core'; +import CloseIcon from '@material-ui/icons/Close'; +import { Alert } from '@material-ui/lab'; + +import { config, KialiIcon, KialiLogo } from '../../config'; +import { kialiStyle } from '../../styles/StyleUtils'; +import { + ExternalServiceInfo, + Status, + StatusKey, +} from '../../types/StatusState'; + +type AboutUIModalProps = { + status: Status; + externalServices: ExternalServiceInfo[]; + warningMessages: string[]; + showModal: boolean; + setShowModal: React.Dispatch>; +}; + +const iconStyle = kialiStyle({ + marginRight: '10px', +}); + +const textContentStyle = kialiStyle({ + $nest: { + '& dt, & dd': { + lineHeight: 1.667, + }, + }, +}); + +const closeButton = kialiStyle({ + position: 'absolute', + right: 10, + top: 10, + float: 'right', + padding: 0, +}); + +export const AboutUIModal = (props: AboutUIModalProps) => { + const [showWarnings, setShowWarnings] = React.useState(false); + + const additionalComponentInfoContent = ( + externalService: ExternalServiceInfo, + ) => { + if (!externalService.version && !externalService.url) { + return 'N/A'; + } + const version = externalService.version ? externalService.version : ''; + const url = externalService.url ? ( + + {externalService.url} + + ) : ( + '' + ); + return ( + <> + {version} {url} + + ); + }; + + const renderComponent = (externalService: ExternalServiceInfo) => { + const name = externalService.version + ? externalService.name + : `${externalService.name} URL`; + const additionalInfo = additionalComponentInfoContent(externalService); + return ( + <> + + {name} + + + {additionalInfo} + + + ); + }; + + const renderWebsiteLink = () => { + if (config.about?.website) { + return ( + + + {config.about.website.linkText} + + ); + } + + return null; + }; + + const renderProjectLink = () => { + if (config.about?.project) { + return ( + + + {config.about.project.linkText} + + ); + } + + return null; + }; + + const coreVersion = + props.status[StatusKey.KIALI_CORE_COMMIT_HASH] === '' || + props.status[StatusKey.KIALI_CORE_COMMIT_HASH] === 'unknown' + ? props.status[StatusKey.KIALI_CORE_VERSION] + : `${props.status[StatusKey.KIALI_CORE_VERSION]} (${ + props.status[StatusKey.KIALI_CORE_COMMIT_HASH] + })`; + const containerVersion = props.status[StatusKey.KIALI_CONTAINER_VERSION]; + const meshVersion = props.status[StatusKey.MESH_NAME] + ? `${props.status[StatusKey.MESH_NAME]} ${ + props.status[StatusKey.MESH_VERSION] || '' + }` + : 'Unknown'; + const kialiExternalUrl = props.status[StatusKey.KIALI_EXTERNAL_URL]; + + return ( +