diff --git a/.github/workflows/cd-api.yml b/.github/workflows/cd-api.yml index 06d6110b41d9..8d7dee0134e2 100644 --- a/.github/workflows/cd-api.yml +++ b/.github/workflows/cd-api.yml @@ -35,7 +35,7 @@ jobs: name: Release runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 with: fetch-depth: 0 - id: meta @@ -49,14 +49,14 @@ jobs: type=match,pattern=\d+\.\d+\.\d+ type=sha - uses: docker/setup-qemu-action@v3.6.0 - - uses: docker/setup-buildx-action@v3.10.0 + - uses: docker/setup-buildx-action@v3.11.1 with: config: .github/buildkitd.toml - - uses: docker/login-action@v3.4.0 + - uses: docker/login-action@v3.5.0 with: username: ${{ secrets.DOCKER_RELEASE_USER }} password: ${{ secrets.DOCKER_RELEASE_PASS }} - - uses: docker/login-action@v3.4.0 + - uses: docker/login-action@v3.5.0 with: registry: ghcr.io username: ${{ github.actor }} diff --git a/.github/workflows/cd-auth.yml b/.github/workflows/cd-auth.yml index 4a17f1c855fc..0f7b8456ad71 100644 --- a/.github/workflows/cd-auth.yml +++ b/.github/workflows/cd-auth.yml @@ -35,7 +35,7 @@ jobs: name: Release runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 with: fetch-depth: 0 - id: meta @@ -49,14 +49,14 @@ jobs: type=match,pattern=\d+\.\d+\.\d+ type=sha - uses: docker/setup-qemu-action@v3.6.0 - - uses: docker/setup-buildx-action@v3.10.0 + - uses: docker/setup-buildx-action@v3.11.1 with: config: .github/buildkitd.toml - - uses: docker/login-action@v3.4.0 + - uses: docker/login-action@v3.5.0 with: username: ${{ secrets.DOCKER_RELEASE_USER }} password: ${{ secrets.DOCKER_RELEASE_PASS }} - - uses: docker/login-action@v3.4.0 + - uses: docker/login-action@v3.5.0 with: registry: ghcr.io username: ${{ github.actor }} diff --git a/.github/workflows/cd-helm.yml b/.github/workflows/cd-helm.yml index 110a7d30f5e5..26b7f4315cd0 100644 --- a/.github/workflows/cd-helm.yml +++ b/.github/workflows/cd-helm.yml @@ -27,10 +27,10 @@ jobs: name: Lint and test runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4.1.1 + - uses: actions/checkout@v5 with: fetch-depth: 0 - - uses: azure/setup-helm@v4.3.0 + - uses: azure/setup-helm@v4.3.1 with: version: v3.12.1 - uses: helm/chart-testing-action@v2.7.0 @@ -47,7 +47,7 @@ jobs: contents: write steps: - name: Check out repository - uses: actions/checkout@v4.1.1 + uses: actions/checkout@v5 with: fetch-depth: 0 @@ -57,7 +57,7 @@ jobs: git config user.email "$GITHUB_ACTOR@users.noreply.github.com" - name: Set up Helm - uses: azure/setup-helm@v4.3.0 + uses: azure/setup-helm@v4.3.1 with: version: v3.12.1 diff --git a/.github/workflows/cd-metrics-scraper.yml b/.github/workflows/cd-metrics-scraper.yml index 15e7016a7959..00991f05e0ae 100644 --- a/.github/workflows/cd-metrics-scraper.yml +++ b/.github/workflows/cd-metrics-scraper.yml @@ -35,7 +35,7 @@ jobs: name: Release runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 with: fetch-depth: 0 - id: meta @@ -49,14 +49,14 @@ jobs: type=match,pattern=\d+\.\d+\.\d+ type=sha - uses: docker/setup-qemu-action@v3.6.0 - - uses: docker/setup-buildx-action@v3.10.0 + - uses: docker/setup-buildx-action@v3.11.1 with: config: .github/buildkitd.toml - - uses: docker/login-action@v3.4.0 + - uses: docker/login-action@v3.5.0 with: username: ${{ secrets.DOCKER_RELEASE_USER }} password: ${{ secrets.DOCKER_RELEASE_PASS }} - - uses: docker/login-action@v3.4.0 + - uses: docker/login-action@v3.5.0 with: registry: ghcr.io username: ${{ github.actor }} diff --git a/.github/workflows/cd-web.yml b/.github/workflows/cd-web.yml index f5a0f25f515f..e302ab1041e2 100644 --- a/.github/workflows/cd-web.yml +++ b/.github/workflows/cd-web.yml @@ -35,7 +35,7 @@ jobs: name: Release runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 with: fetch-depth: 0 - id: meta @@ -49,14 +49,14 @@ jobs: type=match,pattern=\d+\.\d+\.\d+ type=sha - uses: docker/setup-qemu-action@v3.6.0 - - uses: docker/setup-buildx-action@v3.10.0 + - uses: docker/setup-buildx-action@v3.11.1 with: config: .github/buildkitd.toml - - uses: docker/login-action@v3.4.0 + - uses: docker/login-action@v3.5.0 with: username: ${{ secrets.DOCKER_RELEASE_USER }} password: ${{ secrets.DOCKER_RELEASE_PASS }} - - uses: docker/login-action@v3.4.0 + - uses: docker/login-action@v3.5.0 with: registry: ghcr.io username: ${{ github.actor }} diff --git a/.github/workflows/ci-helm.yml b/.github/workflows/ci-helm.yml index 855b0059e15f..6b2116be32e0 100644 --- a/.github/workflows/ci-helm.yml +++ b/.github/workflows/ci-helm.yml @@ -24,11 +24,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout - uses: actions/checkout@v4.1.1 + uses: actions/checkout@v5 with: fetch-depth: 0 - name: Set up Helm - uses: azure/setup-helm@v4.3.0 + uses: azure/setup-helm@v4.3.1 with: version: v3.12.1 - name: Set up Chart Testing CLI diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index f9d86845a65a..17726a3487de 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -42,7 +42,7 @@ jobs: security-events: write runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 with: fetch-depth: 0 - uses: actions/dependency-review-action@v4 @@ -61,7 +61,7 @@ jobs: matrix: language: ["go", "typescript"] steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 with: fetch-depth: 0 - uses: actions/setup-go@v5.5.0 @@ -78,7 +78,7 @@ jobs: name: Static check runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 with: fetch-depth: 0 - uses: actions/setup-go@v5.5.0 @@ -96,7 +96,7 @@ jobs: name: Build runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 with: fetch-depth: 0 - uses: actions/setup-go@v5.5.0 @@ -111,7 +111,7 @@ jobs: name: Build image runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 with: fetch-depth: 0 - run: make image @@ -126,7 +126,7 @@ jobs: packages: write steps: - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v5 with: fetch-depth: 0 - name: Docket meta @@ -144,16 +144,16 @@ jobs: - name: Set up QEMU uses: docker/setup-qemu-action@v3.6.0 - name: set up Docker Buildx - uses: docker/setup-buildx-action@v3.10.0 + uses: docker/setup-buildx-action@v3.11.1 with: config: .github/buildkitd.toml - name: Login to Docker - uses: docker/login-action@v3.4.0 + uses: docker/login-action@v3.5.0 with: username: ${{ secrets.DOCKER_RELEASE_USER }} password: ${{ secrets.DOCKER_RELEASE_PASS }} - name: Login to GHCR - uses: docker/login-action@v3.4.0 + uses: docker/login-action@v3.5.0 with: registry: ghcr.io username: ${{ github.actor }} @@ -177,7 +177,7 @@ jobs: name: Unit tests with coverage runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 with: fetch-depth: 0 - uses: actions/setup-go@v5.5.0 @@ -190,7 +190,7 @@ jobs: - working-directory: modules/web run: yarn - run: PATH=$PATH:$GOPATH/bin make coverage - - uses: codecov/codecov-action@v5.4.2 + - uses: codecov/codecov-action@v5.5.1 with: directory: ./.tmp token: ${{ secrets.CODECOV_TOKEN }} @@ -200,7 +200,7 @@ jobs: # name: End-to-end tests # runs-on: ubuntu-latest # steps: -# - uses: actions/checkout@v4 +# - uses: actions/checkout@v5 # with: # fetch-depth: 0 # - uses: helm/kind-action@v1.9.0 diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml index 98ed6eecf47e..c9a43ac90224 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -34,6 +34,6 @@ jobs: name: Title check runs-on: ubuntu-latest steps: - - uses: amannn/action-semantic-pull-request@v5 + - uses: amannn/action-semantic-pull-request@v6 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/docs/common/arguments.md b/docs/common/arguments.md index 3b4241604fbc..03dea72c71ac 100644 --- a/docs/common/arguments.md +++ b/docs/common/arguments.md @@ -25,6 +25,7 @@ Dashboard containers accept multiple arguments that can be used to customize the | bind-address | 0.0.0.0 | The IP address on which to serve the `--port` (set to 0.0.0.0 for all interfaces). | | token-exchange-endpoint | - | Endpoint used when `--cluster-context-enabled=true` to exchange auth token for the unique context identifier. | | default-cert-dir | /certs | Directory path containing `--tls-cert-file` and `--tls-key-file` files. Used also when auto-generating certificates flag is set. Relative to the container, not the host. | +| apiserver-ca-bundle | - | File containing the x509 certificates used for HTTPS connection to the API Server. Relative to the container, not the host. | | tls-cert-file | - | File containing the default x509 Certificate for HTTPS. | | tls-key-file | - | File containing the default x509 private key matching --tls-cert-file. | | apiserver-host | - | The address of the Kubernetes Apiserver to connect to in the format of protocol://address:port, e.g., http://localhost:8080. If not specified, the assumption is that the binary runs inside a Kubernetes cluster and local discovery is attempted. | @@ -41,6 +42,7 @@ Dashboard containers accept multiple arguments that can be used to customize the | Argument name | Default value | Description | |---------------------------|---------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | apiserver-skip-tls-verify | false | Enable if connection with remote Kubernetes API should skip TLS verify. | +| apiserver-ca-bundle | - | File containing the x509 certificates used for HTTPS connection to the API Server. Relative to the container, not the host. | | port | 8000 | The secure port to listen to for incoming HTTPS requests. | | address | 0.0.0.0 | The IP address on which to serve the `--port` (set to 0.0.0.0 for all interfaces). | | kubeconfig | - | Path to `kubeconfig` file. | diff --git a/modules/api/go.mod b/modules/api/go.mod index 76bc31de9b36..7d7a2902e4bf 100644 --- a/modules/api/go.mod +++ b/modules/api/go.mod @@ -5,11 +5,11 @@ go 1.23.0 require ( github.com/distribution/reference v0.6.0 github.com/emicklei/go-restful-openapi/v2 v2.11.0 - github.com/emicklei/go-restful/v3 v3.12.1 + github.com/emicklei/go-restful/v3 v3.13.0 github.com/go-openapi/spec v0.21.0 - github.com/prometheus/client_golang v1.20.5 - github.com/samber/lo v1.47.0 - github.com/spf13/pflag v1.0.5 + github.com/prometheus/client_golang v1.23.0 + github.com/samber/lo v1.51.0 + github.com/spf13/pflag v1.0.7 golang.org/x/net v0.40.0 gopkg.in/igm/sockjs-go.v2 v2.1.0 k8s.io/api v0.32.0 @@ -58,7 +58,7 @@ require ( github.com/golang/protobuf v1.5.4 // indirect github.com/google/btree v1.1.3 // indirect github.com/google/gnostic-models v0.6.9 // indirect - github.com/google/go-cmp v0.6.0 // indirect + github.com/google/go-cmp v0.7.0 // indirect github.com/google/gofuzz v1.2.0 // indirect github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 // indirect github.com/google/uuid v1.6.0 // indirect @@ -67,7 +67,6 @@ require ( github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/josharian/intern v1.0.0 // indirect github.com/json-iterator/go v1.1.12 // indirect - github.com/klauspost/compress v1.17.11 // indirect github.com/klauspost/cpuid/v2 v2.2.9 // indirect github.com/leodido/go-urn v1.4.0 // indirect github.com/liggitt/tabwriter v0.0.0-20181228230101-89fcab3d43de // indirect @@ -85,9 +84,9 @@ require ( github.com/pelletier/go-toml/v2 v2.2.3 // indirect github.com/peterbourgon/diskv v2.0.1+incompatible // indirect github.com/pkg/errors v0.9.1 // indirect - github.com/prometheus/client_model v0.6.1 // indirect - github.com/prometheus/common v0.61.0 // indirect - github.com/prometheus/procfs v0.15.1 // indirect + github.com/prometheus/client_model v0.6.2 // indirect + github.com/prometheus/common v0.65.0 // indirect + github.com/prometheus/procfs v0.16.1 // indirect github.com/rogpeppe/go-internal v1.13.1 // indirect github.com/russross/blackfriday/v2 v2.1.0 // indirect github.com/spf13/cobra v1.8.1 // indirect @@ -98,14 +97,14 @@ require ( github.com/zeebo/xxh3 v1.0.2 // indirect golang.org/x/arch v0.13.0 // indirect golang.org/x/crypto v0.38.0 // indirect - golang.org/x/oauth2 v0.25.0 // indirect + golang.org/x/oauth2 v0.30.0 // indirect golang.org/x/sync v0.14.0 // indirect golang.org/x/sys v0.33.0 // indirect golang.org/x/term v0.32.0 // indirect golang.org/x/text v0.25.0 // indirect golang.org/x/time v0.9.0 // indirect golang.org/x/tools v0.29.0 // indirect - google.golang.org/protobuf v1.36.2 // indirect + google.golang.org/protobuf v1.36.6 // indirect gopkg.in/evanphx/json-patch.v4 v4.12.0 // indirect gopkg.in/inf.v0 v0.9.1 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect diff --git a/modules/api/go.sum b/modules/api/go.sum index 0992bf7ef839..9ebd7c1a5542 100644 --- a/modules/api/go.sum +++ b/modules/api/go.sum @@ -35,8 +35,8 @@ github.com/distribution/reference v0.6.0/go.mod h1:BbU0aIcezP1/5jX/8MP0YiH4SdvB5 github.com/emicklei/go-restful-openapi/v2 v2.11.0 h1:Ur+yGxoOH/7KRmcj/UoMFqC3VeNc9VOe+/XidumxTvk= github.com/emicklei/go-restful-openapi/v2 v2.11.0/go.mod h1:4CTuOXHFg3jkvCpnXN+Wkw5prVUnP8hIACssJTYorWo= github.com/emicklei/go-restful/v3 v3.11.0/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc= -github.com/emicklei/go-restful/v3 v3.12.1 h1:PJMDIM/ak7btuL8Ex0iYET9hxM3CI2sjZtzpL63nKAU= -github.com/emicklei/go-restful/v3 v3.12.1/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc= +github.com/emicklei/go-restful/v3 v3.13.0 h1:C4Bl2xDndpU6nJ4bc1jXd+uTmYPVUwkD6bFY/oTyCes= +github.com/emicklei/go-restful/v3 v3.13.0/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc= github.com/evanphx/json-patch/v5 v5.9.0 h1:kcBlZQbplgElYIlo/n1hJbls2z/1awpXxpRi0/FOJfg= github.com/evanphx/json-patch/v5 v5.9.0/go.mod h1:VNkHZ/282BpEyt/tObQO8s5CMPmYYq14uClGH4abBuQ= github.com/exponent-io/jsonpath v0.0.0-20210407135951-1de76d718b3f h1:Wl78ApPPB2Wvf/TIe2xdyJxTlb6obmF18d8QdkxNDu4= @@ -90,8 +90,8 @@ github.com/google/btree v1.1.3/go.mod h1:qOPhT0dTNdNzV6Z/lhRX0YXUafgPLFUh+gZMl76 github.com/google/gnostic-models v0.6.9 h1:MU/8wDLif2qCXZmzncUQ/BOfxWfthHi63KqpoNbWqVw= github.com/google/gnostic-models v0.6.9/go.mod h1:CiWsm0s6BSQd1hRn8/QmxqB6BesYcbSZxsz9b0KuDBw= github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= -github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= -github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= +github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0= github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= @@ -114,8 +114,8 @@ github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnr github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= -github.com/klauspost/compress v1.17.11 h1:In6xLpyWOi1+C7tXUUWv2ot1QvBjxevKAaI6IXrJmUc= -github.com/klauspost/compress v1.17.11/go.mod h1:pMDklpSncoRMuLFrf1W9Ss9KT+0rH90U12bZKk7uwG0= +github.com/klauspost/compress v1.18.0 h1:c/Cqfb0r+Yi+JtIEq73FWXVkRonBlf0CRNYc8Zttxdo= +github.com/klauspost/compress v1.18.0/go.mod h1:2Pp+KzxcywXVXMr50+X0Q/Lsb43OQHYWRCY2AiWywWQ= github.com/klauspost/cpuid/v2 v2.0.9/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg= github.com/klauspost/cpuid/v2 v2.2.9 h1:66ze0taIn2H33fBvCkXuv9BmCwDfafmiIVpKV9kKGuY= github.com/klauspost/cpuid/v2 v2.2.9/go.mod h1:rqkxqrZ1EhYM9G+hXH7YdowN5R5RGN6NK4QwQ3WMXF8= @@ -173,26 +173,27 @@ github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINE github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/prometheus/client_golang v1.20.5 h1:cxppBPuYhUnsO6yo/aoRol4L7q7UFfdm+bR9r+8l63Y= -github.com/prometheus/client_golang v1.20.5/go.mod h1:PIEt8X02hGcP8JWbeHyeZ53Y/jReSnHgO035n//V5WE= -github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p8ais2e9E= -github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY= -github.com/prometheus/common v0.61.0 h1:3gv/GThfX0cV2lpO7gkTUwZru38mxevy90Bj8YFSRQQ= -github.com/prometheus/common v0.61.0/go.mod h1:zr29OCN/2BsJRaFwG8QOBr41D6kkchKbpeNH7pAjb/s= -github.com/prometheus/procfs v0.15.1 h1:YagwOFzUgYfKKHX6Dr+sHT7km/hxC76UB0learggepc= -github.com/prometheus/procfs v0.15.1/go.mod h1:fB45yRUv8NstnjriLhBQLuOUt+WW4BsoGhij/e3PBqk= +github.com/prometheus/client_golang v1.23.0 h1:ust4zpdl9r4trLY/gSjlm07PuiBq2ynaXXlptpfy8Uc= +github.com/prometheus/client_golang v1.23.0/go.mod h1:i/o0R9ByOnHX0McrTMTyhYvKE4haaf2mW08I+jGAjEE= +github.com/prometheus/client_model v0.6.2 h1:oBsgwpGs7iVziMvrGhE53c/GrLUsZdHnqNwqPLxwZyk= +github.com/prometheus/client_model v0.6.2/go.mod h1:y3m2F6Gdpfy6Ut/GBsUqTWZqCUvMVzSfMLjcu6wAwpE= +github.com/prometheus/common v0.65.0 h1:QDwzd+G1twt//Kwj/Ww6E9FQq1iVMmODnILtW1t2VzE= +github.com/prometheus/common v0.65.0/go.mod h1:0gZns+BLRQ3V6NdaerOhMbwwRbNh9hkGINtQAsP5GS8= +github.com/prometheus/procfs v0.16.1 h1:hZ15bTNuirocR6u0JZ6BAHHmwS1p8B4P6MRqxtzMyRg= +github.com/prometheus/procfs v0.16.1/go.mod h1:teAbpZRB1iIAJYREa1LsoWUXykVXA1KlTmWl8x/U+Is= github.com/rogpeppe/go-internal v1.13.1 h1:KvO1DLK/DRN07sQ1LQKScxyZJuNnedQ5/wKSR38lUII= github.com/rogpeppe/go-internal v1.13.1/go.mod h1:uMEvuHeurkdAXX61udpOXGD/AzZDWNMNyH2VO9fmH0o= github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= -github.com/samber/lo v1.47.0 h1:z7RynLwP5nbyRscyvcD043DWYoOcYRv3mV8lBeqOCLc= -github.com/samber/lo v1.47.0/go.mod h1:RmDH9Ct32Qy3gduHQuKJ3gW1fMHAnE/fAzQuf6He5cU= +github.com/samber/lo v1.51.0 h1:kysRYLbHy/MB7kQZf5DSN50JHmMsNEdeY24VzJFu7wI= +github.com/samber/lo v1.51.0/go.mod h1:4+MXEGsJzbKGaUEQFKBq2xtfuznW9oz/WrgyzMzRoM0= github.com/sergi/go-diff v1.2.0 h1:XU+rvMAioB0UC3q1MFrIQy4Vo5/4VsRDQQXHsEya6xQ= github.com/sergi/go-diff v1.2.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM= github.com/spf13/cobra v1.8.1 h1:e5/vxKd/rZsfSJMUX1agtjeTDf+qv1/JdBF8gg5k9ZM= github.com/spf13/cobra v1.8.1/go.mod h1:wHxEcudfqmLYa8iTfL+OuZPbBZkmvliBWKIezN3kD9Y= -github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +github.com/spf13/pflag v1.0.7 h1:vN6T9TfwStFPFM5XzjsvmzZkLuaLX+HS+0SeFLRgU6M= +github.com/spf13/pflag v1.0.7/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= @@ -239,8 +240,8 @@ golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/ golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.40.0 h1:79Xs7wF06Gbdcg4kdCCIQArK11Z1hr5POQ6+fIYHNuY= golang.org/x/net v0.40.0/go.mod h1:y0hY0exeL2Pku80/zKK7tpntoX23cqL3Oa6njdgRtds= -golang.org/x/oauth2 v0.25.0 h1:CY4y7XT9v0cRI9oupztF8AgiIu99L/ksR/Xp/6jrZ70= -golang.org/x/oauth2 v0.25.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= +golang.org/x/oauth2 v0.30.0 h1:dnDm7JmhM45NNpd8FDDeLhK6FwqbOf4MLCM9zb1BOHI= +golang.org/x/oauth2 v0.30.0/go.mod h1:B++QgG3ZKulg6sRPGD/mqlHQs5rB3Ml9erfeDY7xKlU= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -272,8 +273,8 @@ golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -google.golang.org/protobuf v1.36.2 h1:R8FeyR1/eLmkutZOM5CWghmo5itiG9z0ktFlTVLuTmU= -google.golang.org/protobuf v1.36.2/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= +google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY= +google.golang.org/protobuf v1.36.6/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/modules/api/main.go b/modules/api/main.go index f6bc5c230458..d2ce21102f17 100644 --- a/modules/api/main.go +++ b/modules/api/main.go @@ -44,6 +44,7 @@ func main() { client.WithKubeconfig(args.KubeconfigPath()), client.WithMasterUrl(args.ApiServerHost()), client.WithInsecureTLSSkipVerify(args.ApiServerSkipTLSVerify()), + client.WithCaBundle(args.ApiServerCaBundle()), ) if !args.IsProxyEnabled() { diff --git a/modules/api/pkg/args/args.go b/modules/api/pkg/args/args.go index ce7af3a7db7c..280f5c7b9cd0 100644 --- a/modules/api/pkg/args/args.go +++ b/modules/api/pkg/args/args.go @@ -66,6 +66,7 @@ var ( argBindAddress = pflag.IP("bind-address", net.IPv4(0, 0, 0, 0), "IP address on which to serve the --port, set to 0.0.0.0 for all interfaces") argDefaultCertDir = pflag.String("default-cert-dir", "/certs", "directory path containing files from --tls-cert-file and --tls-key-file, used also when auto-generating certificates flag is set") + argApiServerCaBundle = pflag.String("apiserver-ca-bundle", "", "file containing the x509 certificates used for HTTPS connection to the API Server") argCertFile = pflag.String("tls-cert-file", "", "file containing the default x509 certificate for HTTPS") argKeyFile = pflag.String("tls-key-file", "", "file containing the default x509 private key matching --tls-cert-file") argApiServerHost = pflag.String("apiserver-host", "", "address of the Kubernetes API server to connect to in the format of protocol://address:port, leave it empty if the binary runs inside cluster for local discovery attempt") @@ -112,6 +113,10 @@ func DefaultCertDir() string { return *argDefaultCertDir } +func ApiServerCaBundle() string { + return *argApiServerCaBundle +} + func CertFile() string { return *argCertFile } diff --git a/modules/api/pkg/resource/node/detail.go b/modules/api/pkg/resource/node/detail.go index a2faeefce627..269c15ae4450 100644 --- a/modules/api/pkg/resource/node/detail.go +++ b/modules/api/pkg/resource/node/detail.go @@ -170,7 +170,7 @@ func getNodeAllocatedResources(node v1.Node, podList *v1.PodList) (NodeAllocated reqs, limits := map[v1.ResourceName]resource.Quantity{}, map[v1.ResourceName]resource.Quantity{} for _, p := range podList.Items { - podReqs, podLimits, err := pod.PodRequestsAndLimits(&p) + podReqs, podLimits, err := pod.RequestsAndLimits(&p) if err != nil { return NodeAllocatedResources{}, err } diff --git a/modules/api/pkg/resource/pod/common.go b/modules/api/pkg/resource/pod/common.go index 49b0cd0261ed..347ca9bf3089 100644 --- a/modules/api/pkg/resource/pod/common.go +++ b/modules/api/pkg/resource/pod/common.go @@ -17,6 +17,7 @@ package pod import ( "fmt" + "github.com/samber/lo" v1 "k8s.io/api/core/v1" metricapi "k8s.io/dashboard/api/pkg/integration/metric/api" @@ -289,11 +290,11 @@ func maxResourceList(list, new v1.ResourceList) { } } -// PodRequestsAndLimits returns a dictionary of all defined resources summed up for all +// RequestsAndLimits returns a dictionary of all defined resources summed up for all // containers of the pod. If pod overhead is non-nil, the pod overhead is added to the // total container resource requests and to the total container limits which have a // non-zero quantity. -func PodRequestsAndLimits(pod *v1.Pod) (reqs, limits v1.ResourceList, err error) { +func RequestsAndLimits(pod *v1.Pod) (reqs, limits v1.ResourceList, err error) { reqs, limits = v1.ResourceList{}, v1.ResourceList{} for _, container := range pod.Spec.Containers { addResourceList(reqs, container.Resources.Requests) @@ -320,39 +321,49 @@ func PodRequestsAndLimits(pod *v1.Pod) (reqs, limits v1.ResourceList, err error) } func getPodAllocatedResources(pod *v1.Pod) (PodAllocatedResources, error) { - reqs, limits, err := PodRequestsAndLimits(pod) + reqs, limits, err := RequestsAndLimits(pod) if err != nil { return PodAllocatedResources{}, err } - for podReqName, podReqValue := range reqs { - if value, ok := reqs[podReqName]; !ok { - reqs[podReqName] = podReqValue.DeepCopy() - } else { - value.Add(podReqValue) - reqs[podReqName] = value - } - } - - for podLimitName, podLimitValue := range limits { - if value, ok := limits[podLimitName]; !ok { - limits[podLimitName] = podLimitValue.DeepCopy() - } else { - value.Add(podLimitValue) - limits[podLimitName] = value - } - } - - cpuRequests, cpuLimits, memoryRequests, memoryLimits := reqs[v1.ResourceCPU], limits[v1.ResourceCPU], reqs[v1.ResourceMemory], limits[v1.ResourceMemory] + cpuRequests := reqs[v1.ResourceCPU] + cpuLimits := limits[v1.ResourceCPU] + memoryRequests := reqs[v1.ResourceMemory] + memoryLimits := limits[v1.ResourceMemory] return PodAllocatedResources{ CPURequests: cpuRequests.MilliValue(), CPULimits: cpuLimits.MilliValue(), MemoryRequests: memoryRequests.Value(), MemoryLimits: memoryLimits.Value(), + GPURequests: toGPUAllocations(reqs), + GPULimits: toGPUAllocations(limits), }, nil } +func toGPUAllocations(resources v1.ResourceList) []GPUAllocation { + result := make([]GPUAllocation, 0) + for resource, quantity := range resources { + if gpuType := ToGPU(string(resource)); gpuType != NoGPU { + result = append(result, GPUAllocation{ + Quantity: quantity.Value(), + Type: gpuType, + }) + } + } + + return lo.Reduce(result, func(acc []GPUAllocation, item GPUAllocation, _ int) []GPUAllocation { + for i, existing := range acc { + if existing.Type == item.Type { + acc[i].Quantity += item.Quantity + return acc + } + } + + return append(acc, item) + }, []GPUAllocation{}) +} + func isPodInitializedConditionTrue(status *v1.PodStatus) bool { for _, condition := range status.Conditions { if condition.Type != v1.PodInitialized { diff --git a/modules/api/pkg/resource/pod/common_test.go b/modules/api/pkg/resource/pod/common_test.go index 3c94078c36ab..dc2ae21f4f6d 100644 --- a/modules/api/pkg/resource/pod/common_test.go +++ b/modules/api/pkg/resource/pod/common_test.go @@ -44,6 +44,10 @@ func TestToPodPodStatusFailed(t *testing.T) { Status: string(v1.PodFailed), Warnings: []common.Event{}, ContainerStatuses: make([]ContainerStatus, 0), + AllocatedResources: PodAllocatedResources{ + GPURequests: []GPUAllocation{}, + GPULimits: []GPUAllocation{}, + }, } actual := toPod(pod, &MetricsByPod{}, []common.Event{}) @@ -72,6 +76,10 @@ func TestToPodPodStatusSucceeded(t *testing.T) { Status: string(v1.PodSucceeded), Warnings: []common.Event{}, ContainerStatuses: make([]ContainerStatus, 0), + AllocatedResources: PodAllocatedResources{ + GPURequests: []GPUAllocation{}, + GPULimits: []GPUAllocation{}, + }, } actual := toPod(pod, &MetricsByPod{}, []common.Event{}) @@ -104,6 +112,10 @@ func TestToPodPodStatusRunning(t *testing.T) { Status: string(v1.PodRunning), Warnings: []common.Event{}, ContainerStatuses: make([]ContainerStatus, 0), + AllocatedResources: PodAllocatedResources{ + GPURequests: []GPUAllocation{}, + GPULimits: []GPUAllocation{}, + }, } actual := toPod(pod, &MetricsByPod{}, []common.Event{}) @@ -132,6 +144,10 @@ func TestToPodPodStatusPending(t *testing.T) { Status: string(v1.PodPending), Warnings: []common.Event{}, ContainerStatuses: make([]ContainerStatus, 0), + AllocatedResources: PodAllocatedResources{ + GPURequests: []GPUAllocation{}, + GPULimits: []GPUAllocation{}, + }, } actual := toPod(pod, &MetricsByPod{}, []common.Event{}) @@ -177,6 +193,10 @@ func TestToPodContainerStates(t *testing.T) { State: Waiting, }, }, + AllocatedResources: PodAllocatedResources{ + GPURequests: []GPUAllocation{}, + GPULimits: []GPUAllocation{}, + }, } actual := toPod(pod, &MetricsByPod{}, []common.Event{}) @@ -199,6 +219,10 @@ func TestToPod(t *testing.T) { TypeMeta: types.TypeMeta{Kind: types.ResourceKindPod}, Warnings: []common.Event{}, ContainerStatuses: make([]ContainerStatus, 0), + AllocatedResources: PodAllocatedResources{ + GPURequests: []GPUAllocation{}, + GPULimits: []GPUAllocation{}, + }, }, }, { pod: &v1.Pod{ @@ -214,6 +238,10 @@ func TestToPod(t *testing.T) { }, Warnings: []common.Event{}, ContainerStatuses: make([]ContainerStatus, 0), + AllocatedResources: PodAllocatedResources{ + GPURequests: []GPUAllocation{}, + GPULimits: []GPUAllocation{}, + }, }, }, } diff --git a/modules/api/pkg/resource/pod/list.go b/modules/api/pkg/resource/pod/list.go index 10d19b7ca333..538a293c62a3 100644 --- a/modules/api/pkg/resource/pod/list.go +++ b/modules/api/pkg/resource/pod/list.go @@ -15,6 +15,8 @@ package pod import ( + "strings" + v1 "k8s.io/api/core/v1" metaV1 "k8s.io/apimachinery/pkg/apis/meta/v1" k8sClient "k8s.io/client-go/kubernetes" @@ -91,6 +93,55 @@ type PodAllocatedResources struct { // MemoryLimits is defined memory limit. MemoryLimits int64 `json:"memoryLimits"` + + // GPURequests is a number and type of requested GPUs. + GPURequests []GPUAllocation `json:"gpuRequests"` + + // GPULimits is a limit number and type of requested GPUs. + GPULimits []GPUAllocation `json:"gpuLimits"` +} + +type GPU string + +const ( + NoGPU GPU = "" + UnknownGPU GPU = "unknown" + NvidiaGPU GPU = "nvidia" + AMDGPU GPU = "amd" + IntelGPU GPU = "intel" + + NvidiaLabel = "nvidia.com/gpu" + AMDLabel = "amd.com/gpu" + // IntelLabel is for a partial match only, and it should be checked if it starts with this prefix. + IntelLabel = "gpu.intel.com" +) + +func ToGPU(gpuType string) GPU { + switch gpuType { + case NvidiaLabel: + return NvidiaGPU + case AMDLabel: + return AMDGPU + } + + if strings.HasPrefix(gpuType, IntelLabel) { + return IntelGPU + } + + if strings.Contains(gpuType, "gpu") { + return UnknownGPU + } + + return NoGPU +} + +// GPUAllocation describes GPU allocation. +type GPUAllocation struct { + // Quantity is a number of requested GPUs. + Quantity int64 `json:"quantity"` + + // Type of GPU. + Type GPU `json:"type"` } var EmptyPodList = &PodList{ diff --git a/modules/api/pkg/resource/pod/list_test.go b/modules/api/pkg/resource/pod/list_test.go index 07c7f8fd2cee..9d3242ac301d 100644 --- a/modules/api/pkg/resource/pod/list_test.go +++ b/modules/api/pkg/resource/pod/list_test.go @@ -105,6 +105,10 @@ func TestGetPodListFromChannels(t *testing.T) { TypeMeta: types.TypeMeta{Kind: types.ResourceKindPod}, Warnings: []common.Event{}, ContainerStatuses: make([]pod.ContainerStatus, 0), + AllocatedResources: pod.PodAllocatedResources{ + GPURequests: []pod.GPUAllocation{}, + GPULimits: []pod.GPUAllocation{}, + }, }}, Errors: []error{}, }, @@ -139,3 +143,23 @@ func TestGetPodListFromChannels(t *testing.T) { } } } + +func TestToGPU(t *testing.T) { + cases := []struct { + in string + out pod.GPU + }{ + {"nvidia.com/gpu", pod.NvidiaGPU}, + {"amd.com/gpu", pod.AMDGPU}, + {"gpu.intel.com/xe", pod.IntelGPU}, + {"gpu.intel.com/iris", pod.IntelGPU}, + {"unknown.gpu.type", pod.UnknownGPU}, + {"", pod.NoGPU}, + } + + for _, c := range cases { + if gpuType := pod.ToGPU(c.in); gpuType != c.out { + t.Errorf("ToGPU(%q) == %q, expected %q", c.in, gpuType, c.out) + } + } +} diff --git a/modules/api/pkg/resource/service/pods_test.go b/modules/api/pkg/resource/service/pods_test.go index ade80b16a366..7a65d877c038 100644 --- a/modules/api/pkg/resource/service/pods_test.go +++ b/modules/api/pkg/resource/service/pods_test.go @@ -61,6 +61,10 @@ func TestGetServicePods(t *testing.T) { TypeMeta: types.TypeMeta{Kind: types.ResourceKindPod}, Warnings: []common.Event{}, ContainerStatuses: make([]pod.ContainerStatus, 0), + AllocatedResources: pod.PodAllocatedResources{ + GPURequests: []pod.GPUAllocation{}, + GPULimits: []pod.GPUAllocation{}, + }, }, }, Errors: []error{}, @@ -68,7 +72,7 @@ func TestGetServicePods(t *testing.T) { }, } for _, c := range cases { - fakeClient := fake.NewSimpleClientset(c.service, c.podList) + fakeClient := fake.NewClientset(c.service, c.podList) actual, _ := GetServicePods(fakeClient, nil, c.namespace, c.name, dataselect.NoDataSelect) if !reflect.DeepEqual(actual, c.expected) { diff --git a/modules/api/schema/swagger.json b/modules/api/schema/swagger.json index 2269183c2ab0..6a5a74918037 100644 --- a/modules/api/schema/swagger.json +++ b/modules/api/schema/swagger.json @@ -10479,13 +10479,13 @@ }, "cronjob.CronJobDetail": { "required": [ + "active", + "lastSchedule", "containerImages", "objectMeta", "typeMeta", "schedule", "suspend", - "active", - "lastSchedule", "concurrencyPolicy", "startingDeadlineSeconds", "errors" @@ -10603,11 +10603,11 @@ }, "daemonset.DaemonSetDetail": { "required": [ - "objectMeta", "typeMeta", "podInfo", "containerImages", "initContainerImages", + "objectMeta", "errors" ], "properties": { @@ -10828,11 +10828,11 @@ }, "deployment.DeploymentDetail": { "required": [ - "initContainerImages", "objectMeta", "typeMeta", "pods", "containerImages", + "initContainerImages", "selector", "statusInfo", "conditions", @@ -11147,13 +11147,13 @@ }, "horizontalpodautoscaler.HorizontalPodAutoscalerDetail": { "required": [ - "minReplicas", "maxReplicas", "currentCPUUtilizationPercentage", "targetCPUUtilizationPercentage", "objectMeta", "typeMeta", "scaleTargetRef", + "minReplicas", "currentReplicas", "desiredReplicas", "lastScaleTime" @@ -11450,13 +11450,13 @@ }, "job.JobDetail": { "required": [ - "objectMeta", "typeMeta", "podInfo", "containerImages", "initContainerImages", "parallelism", "jobStatus", + "objectMeta", "completions", "errors" ], @@ -11706,9 +11706,9 @@ }, "namespace.NamespaceDetail": { "required": [ + "phase", "objectMeta", "typeMeta", - "phase", "resourceQuotaList", "resourceLimits", "errors" @@ -11954,11 +11954,11 @@ }, "node.NodeDetail": { "required": [ - "nodeInfo", - "objectMeta", "typeMeta", "ready", "allocatedResources", + "nodeInfo", + "objectMeta", "phase", "podCIDR", "providerID", @@ -12151,16 +12151,16 @@ }, "persistentvolume.PersistentVolumeDetail": { "required": [ - "storageClass", - "claim", - "reason", - "objectMeta", - "typeMeta", "accessModes", + "reclaimPolicy", + "storageClass", "mountOptions", "status", + "objectMeta", + "typeMeta", "capacity", - "reclaimPolicy", + "claim", + "reason", "message", "persistentVolumeSource" ], @@ -12278,13 +12278,13 @@ }, "persistentvolumeclaim.PersistentVolumeClaimDetail": { "required": [ - "typeMeta", "status", "volume", "capacity", "accessModes", "storageClass", - "objectMeta" + "objectMeta", + "typeMeta" ], "properties": { "accessModes": { @@ -12445,6 +12445,21 @@ } } }, + "pod.GPUAllocation": { + "required": [ + "quantity", + "type" + ], + "properties": { + "quantity": { + "type": "integer", + "format": "int64" + }, + "type": { + "type": "string" + } + } + }, "pod.Pod": { "required": [ "objectMeta", @@ -12506,7 +12521,9 @@ "cpuRequests", "cpuLimits", "memoryRequests", - "memoryLimits" + "memoryLimits", + "gpuRequests", + "gpuLimits" ], "properties": { "cpuLimits": { @@ -12517,6 +12534,18 @@ "type": "integer", "format": "int64" }, + "gpuLimits": { + "type": "array", + "items": { + "$ref": "#/definitions/pod.GPUAllocation" + } + }, + "gpuRequests": { + "type": "array", + "items": { + "$ref": "#/definitions/pod.GPUAllocation" + } + }, "memoryLimits": { "type": "integer", "format": "int64" @@ -12764,15 +12793,15 @@ }, "poddisruptionbudget.PodDisruptionBudgetDetail": { "required": [ - "minAvailable", - "unhealthyPodEvictionPolicy", "expectedPods", + "unhealthyPodEvictionPolicy", + "desiredHealthy", + "disruptionsAllowed", "objectMeta", "typeMeta", + "minAvailable", "maxUnavailable", "currentHealthy", - "desiredHealthy", - "disruptionsAllowed", "disruptedPods" ], "properties": { @@ -12990,11 +13019,11 @@ }, "replicationcontroller.ReplicationControllerDetail": { "required": [ - "containerImages", "initContainerImages", "objectMeta", "typeMeta", "podInfo", + "containerImages", "labelSelector", "errors" ], @@ -13629,11 +13658,11 @@ }, "statefulset.StatefulSetDetail": { "required": [ - "objectMeta", - "typeMeta", "podInfo", "containerImages", "initContainerImages", + "objectMeta", + "typeMeta", "errors" ], "properties": { @@ -13785,12 +13814,12 @@ }, "types.CustomResourceDefinitionDetail": { "required": [ + "group", "scope", "names", "established", "objectMeta", "typeMeta", - "group", "conditions", "objects", "subresources", diff --git a/modules/auth/main.go b/modules/auth/main.go index c3a3eb6a1b77..f2dd2ae395c5 100644 --- a/modules/auth/main.go +++ b/modules/auth/main.go @@ -38,6 +38,7 @@ func main() { client.WithKubeconfig(args.KubeconfigPath()), client.WithMasterUrl(args.ApiServerHost()), client.WithInsecureTLSSkipVerify(args.ApiServerSkipTLSVerify()), + client.WithCaBundle(args.ApiServerCaBundle()), ) klog.V(1).InfoS("Listening and serving insecurely on", "address", args.Address()) diff --git a/modules/auth/pkg/args/args.go b/modules/auth/pkg/args/args.go index b722f60246df..5028c9e966a3 100644 --- a/modules/auth/pkg/args/args.go +++ b/modules/auth/pkg/args/args.go @@ -31,6 +31,7 @@ var ( argKubeconfig = pflag.String("kubeconfig", "", "path to kubeconfig file") argApiServerHost = pflag.String("apiserver-host", "", "address of the Kubernetes API server to connect to in the format of protocol://address:port, leave it empty if the binary runs inside cluster for local discovery attempt") argApiServerSkipTLSVerify = pflag.Bool("apiserver-skip-tls-verify", false, "enable if connection with remote Kubernetes API server should skip TLS verify") + argApiServerCaBundle = pflag.String("apiserver-ca-bundle", "", "file containing the x509 certificates used for HTTPS connection to the API Server") ) func init() { @@ -59,6 +60,10 @@ func ApiServerSkipTLSVerify() bool { return *argApiServerSkipTLSVerify } +func ApiServerCaBundle() string { + return *argApiServerCaBundle +} + func Address() string { return fmt.Sprintf("%s:%d", *argAddress, *argPort) } diff --git a/modules/common/client/init.go b/modules/common/client/init.go index a256e71cad4f..d13df93d8903 100644 --- a/modules/common/client/init.go +++ b/modules/common/client/init.go @@ -41,6 +41,7 @@ type configBuilder struct { kubeconfigPath string masterUrl string insecure bool + caBundlePath string } func (in *configBuilder) buildBaseConfig() (config *rest.Config, err error) { @@ -59,6 +60,12 @@ func (in *configBuilder) buildBaseConfig() (config *rest.Config, err error) { } config, err = clientcmd.BuildConfigFromFlags(in.masterUrl, in.kubeconfigPath) + + if len(in.caBundlePath) > 0 { + klog.InfoS("Using custom CA Bundle", "caBundle", in.caBundlePath) + config.TLSClientConfig.CAFile = in.caBundlePath + } + if err != nil { return nil, err } @@ -123,6 +130,12 @@ func WithInsecureTLSSkipVerify(insecure bool) Option { } } +func WithCaBundle(caBundlePath string) Option { + return func(c *configBuilder) { + c.caBundlePath = caBundlePath + } +} + func configFromRequest(request *http.Request) (*rest.Config, error) { authInfo, err := buildAuthInfo(request) if err != nil { diff --git a/modules/common/tools/go.mod b/modules/common/tools/go.mod index 54821b796d9b..7371d6653d5f 100644 --- a/modules/common/tools/go.mod +++ b/modules/common/tools/go.mod @@ -7,12 +7,13 @@ require ( github.com/apache/skywalking-eyes v0.7.0 github.com/golangci/golangci-lint/v2 v2.1.6 k8s.io/code-generator v0.32.0 - sigs.k8s.io/kind v0.26.0 + sigs.k8s.io/kind v0.29.0 ) require ( 4d63.com/gocheckcompilerdirectives v1.3.0 // indirect 4d63.com/gochecknoglobals v0.2.2 // indirect + al.essio.dev/pkg/shellescape v1.5.1 // indirect dario.cat/mergo v1.0.1 // indirect github.com/4meepo/tagalign v1.4.2 // indirect github.com/Abirdcfly/dupword v0.1.3 // indirect @@ -30,7 +31,6 @@ require ( github.com/ProtonMail/go-crypto v1.1.3 // indirect github.com/alecthomas/chroma/v2 v2.17.2 // indirect github.com/alecthomas/go-check-sumtype v0.3.1 // indirect - github.com/alessio/shellescape v1.4.2 // indirect github.com/alexkohler/nakedret/v2 v2.0.6 // indirect github.com/alexkohler/prealloc v1.0.0 // indirect github.com/alingse/asasalint v0.0.11 // indirect @@ -61,7 +61,7 @@ require ( github.com/chavacava/garif v0.1.0 // indirect github.com/ckaznocha/intrange v0.3.1 // indirect github.com/cli/safeexec v1.0.1 // indirect - github.com/cloudflare/circl v1.5.0 // indirect + github.com/cloudflare/circl v1.6.1 // indirect github.com/creack/pty v1.1.24 // indirect github.com/curioswitch/go-reassign v0.3.0 // indirect github.com/cyphar/filepath-securejoin v0.3.6 // indirect @@ -95,7 +95,7 @@ require ( github.com/go-toolsmith/astp v1.1.0 // indirect github.com/go-toolsmith/strparse v1.1.0 // indirect github.com/go-toolsmith/typep v1.1.0 // indirect - github.com/go-viper/mapstructure/v2 v2.2.1 // indirect + github.com/go-viper/mapstructure/v2 v2.4.0 // indirect github.com/go-xmlfmt/xmlfmt v1.1.3 // indirect github.com/gobwas/glob v0.2.3 // indirect github.com/gofrs/flock v0.12.1 // indirect @@ -115,7 +115,6 @@ require ( github.com/google/go-querystring v1.1.0 // indirect github.com/google/gofuzz v1.2.0 // indirect github.com/google/licensecheck v0.3.1 // indirect - github.com/google/safetext v0.0.0-20240722112252-5a72de7e7962 // indirect github.com/google/uuid v1.6.0 // indirect github.com/gordonklaus/ineffassign v0.1.0 // indirect github.com/gostaticanalysis/analysisutil v0.7.1 // indirect @@ -173,7 +172,6 @@ require ( github.com/nishanths/predeclared v0.2.2 // indirect github.com/nunnatsa/ginkgolinter v0.19.1 // indirect github.com/olekukonko/tablewriter v0.0.5 // indirect - github.com/pborman/uuid v1.2.1 // indirect github.com/pelletier/go-toml v1.9.5 // indirect github.com/pelletier/go-toml/v2 v2.2.4 // indirect github.com/pjbgf/sha1cd v0.3.1 // indirect diff --git a/modules/common/tools/go.sum b/modules/common/tools/go.sum index b32b58c63654..d8e2d50c4c77 100644 --- a/modules/common/tools/go.sum +++ b/modules/common/tools/go.sum @@ -2,6 +2,8 @@ 4d63.com/gocheckcompilerdirectives v1.3.0/go.mod h1:ofsJ4zx2QAuIP/NO/NAh1ig6R1Fb18/GI7RVMwz7kAY= 4d63.com/gochecknoglobals v0.2.2 h1:H1vdnwnMaZdQW/N+NrkT1SZMTBmcwHe9Vq8lJcYYTtU= 4d63.com/gochecknoglobals v0.2.2/go.mod h1:lLxwTQjL5eIesRbvnzIP3jZtG140FnTdz+AlMa+ogt0= +al.essio.dev/pkg/shellescape v1.5.1 h1:86HrALUujYS/h+GtqoB26SBEdkWfmMI6FubjXlsXyho= +al.essio.dev/pkg/shellescape v1.5.1/go.mod h1:6sIqp7X2P6mThCQ7twERpZTuigpr6KbZWtls1U8I890= dario.cat/mergo v1.0.1 h1:Ra4+bf83h2ztPIQYNP99R6m+Y7KfnARDfID+a+vLl4s= dario.cat/mergo v1.0.1/go.mod h1:uNxQE+84aUszobStD9th8a29P2fMDhsBdgRYvZOxGmk= github.com/4meepo/tagalign v1.4.2 h1:0hcLHPGMjDyM1gHG58cS73aQF8J4TdVR96TZViorO9E= @@ -45,8 +47,6 @@ github.com/alecthomas/go-check-sumtype v0.3.1 h1:u9aUvbGINJxLVXiFvHUlPEaD7VDULsr github.com/alecthomas/go-check-sumtype v0.3.1/go.mod h1:A8TSiN3UPRw3laIgWEUOHHLPa6/r9MtoigdlP5h3K/E= github.com/alecthomas/repr v0.4.0 h1:GhI2A8MACjfegCPVq9f1FLvIBS+DrQ2KQBFZP1iFzXc= github.com/alecthomas/repr v0.4.0/go.mod h1:Fr0507jx4eOXV7AlPV6AVZLYrLIuIeSOWtW57eE/O/4= -github.com/alessio/shellescape v1.4.2 h1:MHPfaU+ddJ0/bYWpgIeUnQUqKrlJ1S7BfEYPM4uEoM0= -github.com/alessio/shellescape v1.4.2/go.mod h1:PZAiSCk0LJaZkiCSkPv8qIobYglO3FPpyFjDCtHLS30= github.com/alexkohler/nakedret/v2 v2.0.6 h1:ME3Qef1/KIKr3kWX3nti3hhgNxw6aqN5pZmQiFSsuzQ= github.com/alexkohler/nakedret/v2 v2.0.6/go.mod h1:l3RKju/IzOMQHmsEvXwkqMDzHHvurNQfAgE1eVmT40Q= github.com/alexkohler/prealloc v1.0.0 h1:Hbq0/3fJPQhNkN0dR95AVrr6R7tou91y0uHG5pOcUuw= @@ -137,8 +137,8 @@ github.com/clbanning/mxj/v2 v2.7.0 h1:WA/La7UGCanFe5NpHF0Q3DNtnCsVoxbPKuyBNHWRyM github.com/clbanning/mxj/v2 v2.7.0/go.mod h1:hNiWqW14h+kc+MdF9C6/YoRfjEJoR3ou6tn/Qo+ve2s= github.com/cli/safeexec v1.0.1 h1:e/C79PbXF4yYTN/wauC4tviMxEV13BwljGj0N9j+N00= github.com/cli/safeexec v1.0.1/go.mod h1:Z/D4tTN8Vs5gXYHDCbaM1S/anmEDnJb1iW0+EJ5zx3Q= -github.com/cloudflare/circl v1.5.0 h1:hxIWksrX6XN5a1L2TI/h53AGPhNHoUBo+TD1ms9+pys= -github.com/cloudflare/circl v1.5.0/go.mod h1:uddAzsPgqdMAYatqJ0lsjX1oECcQLIlRpzZh3pJrofs= +github.com/cloudflare/circl v1.6.1 h1:zqIqSPIndyBh1bjLVVDHMPpVKqp8Su/V+6MeDzzQBQ0= +github.com/cloudflare/circl v1.6.1/go.mod h1:uddAzsPgqdMAYatqJ0lsjX1oECcQLIlRpzZh3pJrofs= github.com/cpuguy83/go-md2man/v2 v2.0.6/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g= github.com/creack/pty v1.1.24 h1:bJrF4RRfyJnbTJqzRLHzcGaZK1NeM5kTC9jGgovnR1s= github.com/creack/pty v1.1.24/go.mod h1:08sCNb52WyoAwi2QDyzUCTgcvVFhUzewun7wtTfvcwE= @@ -236,8 +236,8 @@ github.com/go-toolsmith/strparse v1.1.0 h1:GAioeZUK9TGxnLS+qfdqNbA4z0SSm5zVNtCQi github.com/go-toolsmith/strparse v1.1.0/go.mod h1:7ksGy58fsaQkGQlY8WVoBFNyEPMGuJin1rfoPS4lBSQ= github.com/go-toolsmith/typep v1.1.0 h1:fIRYDyF+JywLfqzyhdiHzRop/GQDxxNhLGQ6gFUNHus= github.com/go-toolsmith/typep v1.1.0/go.mod h1:fVIw+7zjdsMxDA3ITWnH1yOiw1rnTQKCsF/sk2H/qig= -github.com/go-viper/mapstructure/v2 v2.2.1 h1:ZAaOCxANMuZx5RCeg0mBdEZk7DZasvvZIxtHqx8aGss= -github.com/go-viper/mapstructure/v2 v2.2.1/go.mod h1:oJDH3BJKyqBA2TXFhDsKDGDTlndYOZ6rGS0BRZIxGhM= +github.com/go-viper/mapstructure/v2 v2.4.0 h1:EBsztssimR/CONLSZZ04E8qAkxNYq4Qp9LvH92wZUgs= +github.com/go-viper/mapstructure/v2 v2.4.0/go.mod h1:oJDH3BJKyqBA2TXFhDsKDGDTlndYOZ6rGS0BRZIxGhM= github.com/go-xmlfmt/xmlfmt v1.1.3 h1:t8Ey3Uy7jDSEisW2K3somuMKIpzktkWptA0iFCnRUWY= github.com/go-xmlfmt/xmlfmt v1.1.3/go.mod h1:aUCEOzzezBEjDBbFBoSiya/gduyIiWYRP6CnSFIV8AM= github.com/gobuffalo/flect v1.0.3 h1:xeWBM2nui+qnVvNM4S3foBhCAL2XgPU+a7FdpelbTq4= @@ -306,9 +306,8 @@ github.com/google/licensecheck v0.3.1 h1:QoxgoDkaeC4nFrtGN1jV7IPmDCHFNIVh54e5hSt github.com/google/licensecheck v0.3.1/go.mod h1:ORkR35t/JjW+emNKtfJDII0zlciG9JgbT7SmsohlHmY= github.com/google/pprof v0.0.0-20241210010833-40e02aabc2ad h1:a6HEuzUHeKH6hwfN/ZoQgRgVIWFJljSWa/zetS2WTvg= github.com/google/pprof v0.0.0-20241210010833-40e02aabc2ad/go.mod h1:vavhavw2zAxS5dIdcRluK6cSGGPlZynqzFM8NdvU144= -github.com/google/safetext v0.0.0-20240722112252-5a72de7e7962 h1:+9C/TgFfcCmZBV7Fjb3kQCGlkpFrhtvFDgbdQHB9RaA= -github.com/google/safetext v0.0.0-20240722112252-5a72de7e7962/go.mod h1:H3K1Iu/utuCfa10JO+GsmKUYSWi7ug57Rk6GaDRHaaQ= -github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 h1:El6M4kTTCOh6aBiKaUGG7oYTSPP8MxqL4YI3kZKwcP4= +github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510/go.mod h1:pupxD2MaaD3pAXIBCelhxNneeOaAeabZDe5s4K6zSpQ= github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/gordonklaus/ineffassign v0.1.0 h1:y2Gd/9I7MdY1oEIt+n+rowjBNDcLQq3RsH5hwJd0f9s= @@ -478,8 +477,6 @@ github.com/otiai10/mint v1.3.0/go.mod h1:F5AjcsTsWUqX+Na9fpHb52P8pcRX2CI6A3ctIT9 github.com/otiai10/mint v1.3.1/go.mod h1:/yxELlJQ0ufhjUwhshSj+wFjZ78CnZ48/1wtmBH1OTc= github.com/pbnjay/memory v0.0.0-20210728143218-7b4eea64cf58 h1:onHthvaw9LFnH4t2DcNVpwGmV9E1BkGknEliJkfwQj0= github.com/pbnjay/memory v0.0.0-20210728143218-7b4eea64cf58/go.mod h1:DXv8WO4yhMYhSNPKjeNKa5WY9YCIEBRbNzFFPJbWO6Y= -github.com/pborman/uuid v1.2.1 h1:+ZZIw58t/ozdjRaXh/3awHfmWRbzYxJoAdNJxe/3pvw= -github.com/pborman/uuid v1.2.1/go.mod h1:X/NO0urCmaxf9VXbdlT7C2Yzkj2IKimNn4k+gtPdI/k= github.com/pelletier/go-toml v1.9.5 h1:4yBQzkHv+7BHq2PQUZF3Mx0IYxG7LsP222s7Agd3ve8= github.com/pelletier/go-toml v1.9.5/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c= github.com/pelletier/go-toml/v2 v2.2.4 h1:mye9XuhQ6gvn5h28+VilKrrPoQVanw5PMw/TB0t5Ec4= @@ -833,8 +830,8 @@ mvdan.cc/unparam v0.0.0-20250301125049-0df0534333a4 h1:WjUu4yQoT5BHT1w8Zu56SP836 mvdan.cc/unparam v0.0.0-20250301125049-0df0534333a4/go.mod h1:rthT7OuvRbaGcd5ginj6dA2oLE7YNlta9qhBNNdCaLE= sigs.k8s.io/json v0.0.0-20241010143419-9aa6b5e7a4b3 h1:/Rv+M11QRah1itp8VhT6HoVx1Ray9eB4DBr+K+/sCJ8= sigs.k8s.io/json v0.0.0-20241010143419-9aa6b5e7a4b3/go.mod h1:18nIHnGi6636UCz6m8i4DhaJ65T6EruyzmoQqI2BVDo= -sigs.k8s.io/kind v0.26.0 h1:8fS6I0Q5WGlmLprSpH0DarlOSdcsv0txnwc93J2BP7M= -sigs.k8s.io/kind v0.26.0/go.mod h1:t7ueEpzPYJvHA8aeLtI52rtFftNgUYUaCwvxjk7phfw= +sigs.k8s.io/kind v0.29.0 h1:3TpCsyh908IkXXpcSnsMjWdwdWjIl7o9IMZImZCWFnI= +sigs.k8s.io/kind v0.29.0/go.mod h1:ldWQisw2NYyM6k64o/tkZng/1qQW7OlzcN5a8geJX3o= sigs.k8s.io/structured-merge-diff/v4 v4.5.0 h1:nbCitCK2hfnhyiKo6uf2HxUPTCodY6Qaf85SbDIaMBk= sigs.k8s.io/structured-merge-diff/v4 v4.5.0/go.mod h1:N8f93tFZh9U6vpxwRArLiikrE5/2tiu1w1AGfACIGE4= sigs.k8s.io/yaml v1.4.0 h1:Mk1wCc2gy/F0THH0TAp1QYyJNzRm2KCLy3o5ASXVI5E= diff --git a/modules/metrics-scraper/go.mod b/modules/metrics-scraper/go.mod index 96d7c9460cfb..2449f8a2be15 100644 --- a/modules/metrics-scraper/go.mod +++ b/modules/metrics-scraper/go.mod @@ -49,7 +49,7 @@ require ( github.com/x448/float16 v0.8.4 // indirect golang.org/x/exp v0.0.0-20250106191152-7588d65b2ba8 // indirect golang.org/x/net v0.34.0 // indirect - golang.org/x/oauth2 v0.25.0 // indirect + golang.org/x/oauth2 v0.27.0 // indirect golang.org/x/sys v0.29.0 // indirect golang.org/x/term v0.28.0 // indirect golang.org/x/text v0.21.0 // indirect diff --git a/modules/metrics-scraper/go.sum b/modules/metrics-scraper/go.sum index 13add12788a1..404f1e94c375 100644 --- a/modules/metrics-scraper/go.sum +++ b/modules/metrics-scraper/go.sum @@ -131,8 +131,8 @@ golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7/go.mod h1:qpuaurCH72eLCgpAm/ golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.34.0 h1:Mb7Mrk043xzHgnRM88suvJFwzVrRfHEHJEl5/71CKw0= golang.org/x/net v0.34.0/go.mod h1:di0qlW3YNM5oh6GqDGQr92MyTozJPmybPK4Ev/Gm31k= -golang.org/x/oauth2 v0.25.0 h1:CY4y7XT9v0cRI9oupztF8AgiIu99L/ksR/Xp/6jrZ70= -golang.org/x/oauth2 v0.25.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= +golang.org/x/oauth2 v0.27.0 h1:da9Vo7/tDv5RH/7nZDz1eMGS/q1Vv1N/7FCrBhI9I3M= +golang.org/x/oauth2 v0.27.0/go.mod h1:onh5ek6nERTohokkhCD/y2cV4Do3fxFHFuAejCkRWT8= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= diff --git a/modules/web/go.mod b/modules/web/go.mod index f38cf52078af..7a8f8888a96f 100644 --- a/modules/web/go.mod +++ b/modules/web/go.mod @@ -7,8 +7,8 @@ require ( github.com/gin-gonic/contrib v0.0.0-20241229022435-d12709533de6 github.com/gin-gonic/gin v1.10.0 github.com/samber/lo v1.50.0 - github.com/spf13/pflag v1.0.6 - golang.org/x/text v0.25.0 + github.com/spf13/pflag v1.0.10 + golang.org/x/text v0.27.0 k8s.io/api v0.32.0 k8s.io/apimachinery v0.32.0 k8s.io/client-go v0.32.0 @@ -63,7 +63,7 @@ require ( golang.org/x/arch v0.13.0 // indirect golang.org/x/crypto v0.36.0 // indirect golang.org/x/net v0.38.0 // indirect - golang.org/x/oauth2 v0.25.0 // indirect + golang.org/x/oauth2 v0.27.0 // indirect golang.org/x/sys v0.31.0 // indirect golang.org/x/term v0.30.0 // indirect golang.org/x/time v0.9.0 // indirect diff --git a/modules/web/go.sum b/modules/web/go.sum index 9de77093b4e5..47d265c93f96 100644 --- a/modules/web/go.sum +++ b/modules/web/go.sum @@ -110,8 +110,8 @@ github.com/rogpeppe/go-internal v1.12.0 h1:exVL4IDcn6na9z1rAb56Vxr+CgyK3nn3O+epU github.com/rogpeppe/go-internal v1.12.0/go.mod h1:E+RYuTGaKKdloAfM02xzb0FW3Paa99yedzYV+kq4uf4= github.com/samber/lo v1.50.0 h1:XrG0xOeHs+4FQ8gJR97zDz5uOFMW7OwFWiFVzqopKgY= github.com/samber/lo v1.50.0/go.mod h1:RjZyNk6WSnUFRKK6EyOhsRJMqft3G+pg7dCWHQCWvsc= -github.com/spf13/pflag v1.0.6 h1:jFzHGLGAlb3ruxLB8MhbI6A8+AQX/2eW4qeyNZXNp2o= -github.com/spf13/pflag v1.0.6/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +github.com/spf13/pflag v1.0.10 h1:4EBh2KAYBwaONj6b2Ye1GiHfwjqyROoF4RwYO+vPwFk= +github.com/spf13/pflag v1.0.10/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= @@ -151,13 +151,13 @@ golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLL golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.38.0 h1:vRMAPTMaeGqVhG5QyLJHqNDwecKTomGeqbnfZyKlBI8= golang.org/x/net v0.38.0/go.mod h1:ivrbrMbzFq5J41QOQh0siUuly180yBYtLp+CKbEaFx8= -golang.org/x/oauth2 v0.25.0 h1:CY4y7XT9v0cRI9oupztF8AgiIu99L/ksR/Xp/6jrZ70= -golang.org/x/oauth2 v0.25.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= +golang.org/x/oauth2 v0.27.0 h1:da9Vo7/tDv5RH/7nZDz1eMGS/q1Vv1N/7FCrBhI9I3M= +golang.org/x/oauth2 v0.27.0/go.mod h1:onh5ek6nERTohokkhCD/y2cV4Do3fxFHFuAejCkRWT8= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.14.0 h1:woo0S4Yywslg6hp4eUFjTVOyKt0RookbpAHG4c1HmhQ= -golang.org/x/sync v0.14.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= +golang.org/x/sync v0.16.0 h1:ycBJEhp9p4vXvUZNszeOq0kGTPghopOL8q0fq3vstxw= +golang.org/x/sync v0.16.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -168,16 +168,16 @@ golang.org/x/term v0.30.0 h1:PQ39fJZ+mfadBm0y5WlL4vlM7Sx1Hgf13sMIY2+QS9Y= golang.org/x/term v0.30.0/go.mod h1:NYYFdzHoI5wRh/h5tDMdMqCqPJZEuNqVR5xJLd/n67g= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.25.0 h1:qVyWApTSYLk/drJRO5mDlNYskwQznZmkpV2c8q9zls4= -golang.org/x/text v0.25.0/go.mod h1:WEdwpYrmk1qmdHvhkSTNPm3app7v4rsT8F2UD6+VHIA= +golang.org/x/text v0.27.0 h1:4fGWRpyh641NLlecmyl4LOe6yDdfaYNrGb2zdfo4JV4= +golang.org/x/text v0.27.0/go.mod h1:1D28KMCvyooCX9hBiosv5Tz/+YLxj0j7XhWjpSUF7CU= golang.org/x/time v0.9.0 h1:EsRrnYcQiGH+5FfbgvV4AP7qEZstoyrHB0DzarOQ4ZY= golang.org/x/time v0.9.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.26.0 h1:v/60pFQmzmT9ExmjDv2gGIfi3OqfKoEP6I5+umXlbnQ= -golang.org/x/tools v0.26.0/go.mod h1:TPVVj70c7JJ3WCazhD8OdXcZg/og+b9+tH/KxylGwH0= +golang.org/x/tools v0.34.0 h1:qIpSLOxeCYGg9TrcJokLBG4KFA6d795g0xkBkiESGlo= +golang.org/x/tools v0.34.0/go.mod h1:pAP9OwEaY1CAW3HOmg3hLZC5Z0CCmzjAF2UQMSqNARg= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= diff --git a/modules/web/package.json b/modules/web/package.json index fa2a5859e9ff..95a6f1fb9545 100644 --- a/modules/web/package.json +++ b/modules/web/package.json @@ -95,7 +95,7 @@ "@cypress/webpack-preprocessor": "6.0.2", "@graphql-mesh/cli": "0.100.1", "@graphql-mesh/openapi": "0.109.2", - "@graphql-mesh/runtime": "0.106.1", + "@graphql-mesh/runtime": "0.106.6", "@graphql-mesh/transform-replace-field": "0.105.4", "@types/d3": "7.4.3", "@types/d3-scale": "4.0.9", @@ -106,15 +106,15 @@ "@types/js-yaml": "4.0.9", "@types/lodash-es": "4.17.12", "@types/node": "22.15.3", - "@typescript-eslint/eslint-plugin": "8.31.1", - "@typescript-eslint/parser": "8.31.1", + "@typescript-eslint/eslint-plugin": "8.39.0", + "@typescript-eslint/parser": "8.39.0", "codelyzer": "6.0.2", "concurrently": "9.1.2", - "cypress": "14.2.0", + "cypress": "14.5.3", "cypress-fail-fast": "7.1.1", "del": "8.0.0", "eslint": "8.57.0", - "eslint-config-prettier": "10.1.1", + "eslint-config-prettier": "10.1.8", "eslint-plugin-node": "11.1.0", "eslint-plugin-prettier": "5.2.6", "eslint-plugin-rxjs": "5.0.3", @@ -136,7 +136,7 @@ "q": "1.5.1", "raw-loader": "4.0.2", "run-node": "2.0.0", - "sass": "1.87.0", + "sass": "1.90.0", "sass-loader": "16.0.5", "semver": "7.7.1", "source-map-explorer": "2.5.3", @@ -153,7 +153,7 @@ "typescript": "5.1.6", "wait-on": "8.0.3", "webpack-bundle-analyzer": "4.10.2", - "webpack-dev-server": "5.2.0" + "webpack-dev-server": "5.2.2" }, "overrides": { "colors": "1.4.0" diff --git a/modules/web/schema/schema.graphql b/modules/web/schema/schema.graphql index ad050d54b656..fe0f4c26521d 100755 --- a/modules/web/schema/schema.graphql +++ b/modules/web/schema/schema.graphql @@ -2463,10 +2463,17 @@ type pod_Pod { type pod_PodAllocatedResources { cpuLimits: BigInt! cpuRequests: BigInt! + gpuLimits: [pod_GPUAllocation]! + gpuRequests: [pod_GPUAllocation]! memoryLimits: BigInt! memoryRequests: BigInt! } +type pod_GPUAllocation { + quantity: BigInt! + type: String! +} + type pod_ContainerStatus { name: String! ready: Boolean! diff --git a/modules/web/yarn.lock b/modules/web/yarn.lock index 2a4b70e6f909..b0173d1a9e19 100644 --- a/modules/web/yarn.lock +++ b/modules/web/yarn.lock @@ -3423,13 +3423,6 @@ __metadata: languageName: node linkType: hard -"@colors/colors@npm:1.5.0": - version: 1.5.0 - resolution: "@colors/colors@npm:1.5.0" - checksum: d64d5260bed1d5012ae3fc617d38d1afc0329fec05342f4e6b838f46998855ba56e0a73833f4a80fa8378c84810da254f76a8a19c39d038260dc06dc4e007425 - 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" @@ -3474,9 +3467,9 @@ __metadata: languageName: node linkType: hard -"@cypress/request@npm:^3.0.7": - version: 3.0.7 - resolution: "@cypress/request@npm:3.0.7" +"@cypress/request@npm:^3.0.9": + version: 3.0.9 + resolution: "@cypress/request@npm:3.0.9" dependencies: aws-sign2: ~0.7.0 aws4: ^1.8.0 @@ -3484,19 +3477,19 @@ __metadata: combined-stream: ~1.0.6 extend: ~3.0.2 forever-agent: ~0.6.1 - form-data: ~4.0.0 + form-data: ~4.0.4 http-signature: ~1.4.0 is-typedarray: ~1.0.0 isstream: ~0.1.2 json-stringify-safe: ~5.0.1 mime-types: ~2.1.19 performance-now: ^2.1.0 - qs: 6.13.1 + qs: 6.14.0 safe-buffer: ^5.1.2 tough-cookie: ^5.0.0 tunnel-agent: ^0.6.0 uuid: ^8.3.2 - checksum: af1736764789d8023ce35d1aeb6e2f317943e65a1e83c97d83d6230257a725832d299be8c2432e508e07b5fbe03ac00112247686756511f5ec380f82bc8e69ff + checksum: d22327b6fc52c8c6bbfa82b3a5b40f890f869da615c0dd494b3bf2c016eb3b1875082b451571d6b109a84c7e73a5869e9a997cdb71716e46900f607002e6afd0 languageName: node linkType: hard @@ -4084,7 +4077,7 @@ __metadata: languageName: node linkType: hard -"@eslint-community/eslint-utils@npm:^4.2.0, @eslint-community/eslint-utils@npm:^4.4.0": +"@eslint-community/eslint-utils@npm:^4.2.0": version: 4.4.0 resolution: "@eslint-community/eslint-utils@npm:4.4.0" dependencies: @@ -4095,6 +4088,17 @@ __metadata: languageName: node linkType: hard +"@eslint-community/eslint-utils@npm:^4.7.0": + version: 4.7.0 + resolution: "@eslint-community/eslint-utils@npm:4.7.0" + dependencies: + eslint-visitor-keys: ^3.4.3 + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + checksum: b177e3b75c0b8d0e5d71f1c532edb7e40b31313db61f0c879f9bf19c3abb2783c6c372b5deb2396dab4432f2946b9972122ac682e77010376c029dfd0149c681 + languageName: node + linkType: hard + "@eslint-community/regexpp@npm:^4.10.0, @eslint-community/regexpp@npm:^4.6.1": version: 4.10.0 resolution: "@eslint-community/regexpp@npm:4.10.0" @@ -4576,7 +4580,33 @@ __metadata: languageName: node linkType: hard -"@graphql-mesh/runtime@npm:0.106.1, @graphql-mesh/runtime@npm:^0.106.1": +"@graphql-mesh/runtime@npm:0.106.6": + version: 0.106.6 + resolution: "@graphql-mesh/runtime@npm:0.106.6" + dependencies: + "@envelop/core": ^5.1.0 + "@envelop/extended-validation": ^5.0.0 + "@envelop/graphql-jit": ^9.0.0 + "@graphql-mesh/cross-helpers": ^0.4.10 + "@graphql-mesh/string-interpolation": ^0.5.8 + "@graphql-mesh/types": ^0.104.6 + "@graphql-mesh/utils": ^0.104.6 + "@graphql-tools/batch-delegate": ^9.0.9 + "@graphql-tools/delegate": ^10.0.28 + "@graphql-tools/executor": ^1.3.2 + "@graphql-tools/utils": ^10.8.0 + "@graphql-tools/wrap": ^10.0.28 + "@whatwg-node/fetch": ^0.10.6 + "@whatwg-node/promise-helpers": ^1.0.0 + graphql-jit: ^0.8.7 + tslib: ^2.4.0 + peerDependencies: + graphql: "*" + checksum: 703d9e8b172aca4c8717b6f910bfcb415e215a5feee137bc23ead01e35a4de0ccf5036e2fd86865fc6182d94cf835b04105817ef1113684ac9355bcb0618c6a8 + languageName: node + linkType: hard + +"@graphql-mesh/runtime@npm:^0.106.1": version: 0.106.1 resolution: "@graphql-mesh/runtime@npm:0.106.1" dependencies: @@ -4634,6 +4664,22 @@ __metadata: languageName: node linkType: hard +"@graphql-mesh/store@npm:^0.104.6": + version: 0.104.6 + resolution: "@graphql-mesh/store@npm:0.104.6" + dependencies: + "@graphql-inspector/core": 6.2.1 + "@graphql-mesh/cross-helpers": ^0.4.10 + "@graphql-mesh/types": ^0.104.6 + "@graphql-mesh/utils": ^0.104.6 + "@graphql-tools/utils": ^10.8.0 + tslib: ^2.4.0 + peerDependencies: + graphql: "*" + checksum: ab46776c1a1222fb2b7bd800374052ef1ccc916dc9258576a8048eaf19cad63aef62ac8dccc5475985a49c36d3ba2ab241f130e1dbcfc91af279e45498d06295 + languageName: node + linkType: hard + "@graphql-mesh/string-interpolation@npm:0.5.8, @graphql-mesh/string-interpolation@npm:^0.5.8": version: 0.5.8 resolution: "@graphql-mesh/string-interpolation@npm:0.5.8" @@ -4735,6 +4781,22 @@ __metadata: languageName: node linkType: hard +"@graphql-mesh/types@npm:^0.104.6": + version: 0.104.6 + resolution: "@graphql-mesh/types@npm:0.104.6" + dependencies: + "@graphql-mesh/store": ^0.104.6 + "@graphql-tools/batch-delegate": ^9.0.10 + "@graphql-tools/delegate": ^10.0.28 + "@graphql-tools/utils": ^10.8.0 + "@graphql-typed-document-node/core": ^3.2.0 + tslib: ^2.4.0 + peerDependencies: + graphql: "*" + checksum: 73ec1f80cf3597323a2bcf4a378323059cf0eb64eb2699e3e9708f9df4b2f9e5712f391762f95f9a298a3a5b24a5cfbf0bb76fcbcdf8da9b17cf20061467a89e + languageName: node + linkType: hard + "@graphql-mesh/utils@npm:^0.104.1": version: 0.104.1 resolution: "@graphql-mesh/utils@npm:0.104.1" @@ -4789,6 +4851,33 @@ __metadata: languageName: node linkType: hard +"@graphql-mesh/utils@npm:^0.104.6": + version: 0.104.6 + resolution: "@graphql-mesh/utils@npm:0.104.6" + dependencies: + "@envelop/instrumentation": ^1.0.0 + "@graphql-mesh/cross-helpers": ^0.4.10 + "@graphql-mesh/string-interpolation": ^0.5.8 + "@graphql-mesh/types": ^0.104.6 + "@graphql-tools/batch-delegate": ^9.0.16 + "@graphql-tools/delegate": ^10.0.28 + "@graphql-tools/utils": ^10.8.0 + "@graphql-tools/wrap": ^10.0.28 + "@whatwg-node/disposablestack": ^0.0.6 + "@whatwg-node/fetch": ^0.10.6 + "@whatwg-node/promise-helpers": ^1.2.0 + dset: ^3.1.2 + js-yaml: ^4.1.0 + lodash.get: ^4.4.2 + lodash.topath: ^4.5.2 + tiny-lru: ^11.0.0 + tslib: ^2.4.0 + peerDependencies: + graphql: "*" + checksum: 05fc8477ddd091910e169980a62f5a4c093ea8cb384c416112642db3e35d41c1485407822614e77116d5566fb97e6cc5ae4feec0bbfefc7cf710a7d685bd13f9 + languageName: node + linkType: hard + "@graphql-tools/batch-delegate@npm:^9.0.10, @graphql-tools/batch-delegate@npm:^9.0.13": version: 9.0.13 resolution: "@graphql-tools/batch-delegate@npm:9.0.13" @@ -6980,6 +7069,18 @@ __metadata: languageName: node linkType: hard +"@types/express-serve-static-core@npm:^4.17.21": + version: 4.19.6 + resolution: "@types/express-serve-static-core@npm:4.19.6" + dependencies: + "@types/node": "*" + "@types/qs": "*" + "@types/range-parser": "*" + "@types/send": "*" + checksum: b0576eddc2d25ccdf10e68ba09598b87a4d7b2ad04a81dc847cb39fe56beb0b6a5cc017b1e00aa0060cb3b38e700384ce96d291a116a0f1e54895564a104aae9 + languageName: node + linkType: hard + "@types/express@npm:*, @types/express@npm:^4.17.13, @types/express@npm:^4.17.21": version: 4.17.21 resolution: "@types/express@npm:4.17.21" @@ -7338,24 +7439,24 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/eslint-plugin@npm:8.31.1": - version: 8.31.1 - resolution: "@typescript-eslint/eslint-plugin@npm:8.31.1" +"@typescript-eslint/eslint-plugin@npm:8.39.0": + version: 8.39.0 + resolution: "@typescript-eslint/eslint-plugin@npm:8.39.0" dependencies: "@eslint-community/regexpp": ^4.10.0 - "@typescript-eslint/scope-manager": 8.31.1 - "@typescript-eslint/type-utils": 8.31.1 - "@typescript-eslint/utils": 8.31.1 - "@typescript-eslint/visitor-keys": 8.31.1 + "@typescript-eslint/scope-manager": 8.39.0 + "@typescript-eslint/type-utils": 8.39.0 + "@typescript-eslint/utils": 8.39.0 + "@typescript-eslint/visitor-keys": 8.39.0 graphemer: ^1.4.0 - ignore: ^5.3.1 + ignore: ^7.0.0 natural-compare: ^1.4.0 - ts-api-utils: ^2.0.1 + ts-api-utils: ^2.1.0 peerDependencies: - "@typescript-eslint/parser": ^8.0.0 || ^8.0.0-alpha.0 + "@typescript-eslint/parser": ^8.39.0 eslint: ^8.57.0 || ^9.0.0 - typescript: ">=4.8.4 <5.9.0" - checksum: 0f822ae63e64ad518ade8758b5defd4e0081be7851fb723a5c948138223a5a9d04da5d362e9a7232e2255a885fcca7b16c11d282a86e9477552ad7732b28afbd + typescript: ">=4.8.4 <6.0.0" + checksum: daf8e4089a9b203b101645dcf55e7df1359f0cf0a0b6f1a336a64fa25dd54ff5188c9aa3f3e4899d5d60bceb8ed059f4771fdf314e8c162e0c2c5194aade641e languageName: node linkType: hard @@ -7370,19 +7471,32 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/parser@npm:8.31.1": - version: 8.31.1 - resolution: "@typescript-eslint/parser@npm:8.31.1" +"@typescript-eslint/parser@npm:8.39.0": + version: 8.39.0 + resolution: "@typescript-eslint/parser@npm:8.39.0" dependencies: - "@typescript-eslint/scope-manager": 8.31.1 - "@typescript-eslint/types": 8.31.1 - "@typescript-eslint/typescript-estree": 8.31.1 - "@typescript-eslint/visitor-keys": 8.31.1 + "@typescript-eslint/scope-manager": 8.39.0 + "@typescript-eslint/types": 8.39.0 + "@typescript-eslint/typescript-estree": 8.39.0 + "@typescript-eslint/visitor-keys": 8.39.0 debug: ^4.3.4 peerDependencies: eslint: ^8.57.0 || ^9.0.0 - typescript: ">=4.8.4 <5.9.0" - checksum: b056a509806f6762ea8b0e127d5f80b586fa5a6126968f54c3b797015b7762aa83de55e4498c17524e2a3399903d4b5c4776bf414ed2f78b5877590a7958465f + typescript: ">=4.8.4 <6.0.0" + checksum: 280a2953c4b186f5ce6f3081fc43a4d780d80622b20c23fd5544239df45debfc6ca78fbe4c7b649265f0645f8fa4c17337d2c9ac57e54ae2ff4682ced1f83e9e + languageName: node + linkType: hard + +"@typescript-eslint/project-service@npm:8.39.0": + version: 8.39.0 + resolution: "@typescript-eslint/project-service@npm:8.39.0" + dependencies: + "@typescript-eslint/tsconfig-utils": ^8.39.0 + "@typescript-eslint/types": ^8.39.0 + debug: ^4.3.4 + peerDependencies: + typescript: ">=4.8.4 <6.0.0" + checksum: 561c16769a1d51e13fe334b153ca6a1591848319410b808ce500132e9036a8bf9df0e37943e9a270643aa7384137605e475408ff75fec5604f6f23505888e498 languageName: node linkType: hard @@ -7396,28 +7510,38 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/scope-manager@npm:8.31.1": - version: 8.31.1 - resolution: "@typescript-eslint/scope-manager@npm:8.31.1" +"@typescript-eslint/scope-manager@npm:8.39.0": + version: 8.39.0 + resolution: "@typescript-eslint/scope-manager@npm:8.39.0" dependencies: - "@typescript-eslint/types": 8.31.1 - "@typescript-eslint/visitor-keys": 8.31.1 - checksum: 54831c52a87facc9c2fb47c65a7928143181e2e550843d067f8e8dd17cc59c3568a244c5e8fc50fd7b7a896fba6ea82184bdee75c1be2b624795b8e7d62fd7ba + "@typescript-eslint/types": 8.39.0 + "@typescript-eslint/visitor-keys": 8.39.0 + checksum: d3bdfa19f4a1defe73d351482831bd50b282d07a33e9743908239a9a5e1fb0982014e8be08c197d86684854c995ef942e8f8315699e2218796cb8656bf76b9e2 + languageName: node + linkType: hard + +"@typescript-eslint/tsconfig-utils@npm:8.39.0, @typescript-eslint/tsconfig-utils@npm:^8.39.0": + version: 8.39.0 + resolution: "@typescript-eslint/tsconfig-utils@npm:8.39.0" + peerDependencies: + typescript: ">=4.8.4 <6.0.0" + checksum: 3457da49e7292bd07b1bd41f19661ea79481f3b6f6593fb1ecf6557c38c0f5fd77df397bc096d0bad400c4142d939d5fbaf060a524f9272c749cc02c53a65852 languageName: node linkType: hard -"@typescript-eslint/type-utils@npm:8.31.1": - version: 8.31.1 - resolution: "@typescript-eslint/type-utils@npm:8.31.1" +"@typescript-eslint/type-utils@npm:8.39.0": + version: 8.39.0 + resolution: "@typescript-eslint/type-utils@npm:8.39.0" dependencies: - "@typescript-eslint/typescript-estree": 8.31.1 - "@typescript-eslint/utils": 8.31.1 + "@typescript-eslint/types": 8.39.0 + "@typescript-eslint/typescript-estree": 8.39.0 + "@typescript-eslint/utils": 8.39.0 debug: ^4.3.4 - ts-api-utils: ^2.0.1 + ts-api-utils: ^2.1.0 peerDependencies: eslint: ^8.57.0 || ^9.0.0 - typescript: ">=4.8.4 <5.9.0" - checksum: de8b4480540236048dd9d0d3efcac88f15b4605b6a6513640375a9b0a0f49a3ef13b85e23cd2ee50451eaca57c0a6d7cf5359cfca645b73f99aa1ee6e9940bd7 + typescript: ">=4.8.4 <6.0.0" + checksum: b587f9e8f01487d5b63b6c538a96478140eddd7689cefc3ed9b047d78f6cdeae5018138b5322c9bece8aad9ef6028fa8a47739eee4dd31ceb05e21be8667e92e languageName: node linkType: hard @@ -7428,10 +7552,10 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/types@npm:8.31.1": - version: 8.31.1 - resolution: "@typescript-eslint/types@npm:8.31.1" - checksum: 25307384fee650bcb7fbbdb383185c2b82691db6d88db1a1168868fe9f554255b46dd8812d2ef10f83335d8383cf838a920ea347edef4545950c56a5e19b84de +"@typescript-eslint/types@npm:8.39.0, @typescript-eslint/types@npm:^8.39.0": + version: 8.39.0 + resolution: "@typescript-eslint/types@npm:8.39.0" + checksum: 283b674defc2ee7b88db7e6b7eb32c8da8cb96e14e39c155c6968043b27d2dbcbfaf5044cebe1d11baff66d92da8dac337cc0553ef9385a5030ad35e1fb7f41e languageName: node linkType: hard @@ -7453,21 +7577,23 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/typescript-estree@npm:8.31.1": - version: 8.31.1 - resolution: "@typescript-eslint/typescript-estree@npm:8.31.1" +"@typescript-eslint/typescript-estree@npm:8.39.0": + version: 8.39.0 + resolution: "@typescript-eslint/typescript-estree@npm:8.39.0" dependencies: - "@typescript-eslint/types": 8.31.1 - "@typescript-eslint/visitor-keys": 8.31.1 + "@typescript-eslint/project-service": 8.39.0 + "@typescript-eslint/tsconfig-utils": 8.39.0 + "@typescript-eslint/types": 8.39.0 + "@typescript-eslint/visitor-keys": 8.39.0 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: ^2.0.1 + ts-api-utils: ^2.1.0 peerDependencies: - typescript: ">=4.8.4 <5.9.0" - checksum: 93ed0853c84a0ecf8eac1716b2161821b252cc218f2084c6235672783446943e358cf4f0996d87514fb0e75d6a2eb491b18fff1e1617eabe8faada37e4810aaf + typescript: ">=4.8.4 <6.0.0" + checksum: 2978d3a2d9067a927e4866aad2cc940ce5a974a92a5313905369d00b1e2121aeaf3bb0ebd1917be8c6b590c7f30f796e2f57780f82189087974cf40d197b34e9 languageName: node linkType: hard @@ -7489,18 +7615,18 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/utils@npm:8.31.1": - version: 8.31.1 - resolution: "@typescript-eslint/utils@npm:8.31.1" +"@typescript-eslint/utils@npm:8.39.0": + version: 8.39.0 + resolution: "@typescript-eslint/utils@npm:8.39.0" dependencies: - "@eslint-community/eslint-utils": ^4.4.0 - "@typescript-eslint/scope-manager": 8.31.1 - "@typescript-eslint/types": 8.31.1 - "@typescript-eslint/typescript-estree": 8.31.1 + "@eslint-community/eslint-utils": ^4.7.0 + "@typescript-eslint/scope-manager": 8.39.0 + "@typescript-eslint/types": 8.39.0 + "@typescript-eslint/typescript-estree": 8.39.0 peerDependencies: eslint: ^8.57.0 || ^9.0.0 - typescript: ">=4.8.4 <5.9.0" - checksum: 536730f555555fcf27d16771704d0b29236d9fa4e45ead28218d04ea6e6d21fe577e50f7044fc97765b36d553a3c4240f034af065616a5363fdd0ffdad00e46f + typescript: ">=4.8.4 <6.0.0" + checksum: 70e071517c6d515cdd05c130a4793685644ec7f9f1e5972988722de6c906fb1867058c32eeac58fb9b3c0553b6af0bd8dd33b40abc2ccac0573be11741664d21 languageName: node linkType: hard @@ -7514,13 +7640,13 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/visitor-keys@npm:8.31.1": - version: 8.31.1 - resolution: "@typescript-eslint/visitor-keys@npm:8.31.1" +"@typescript-eslint/visitor-keys@npm:8.39.0": + version: 8.39.0 + resolution: "@typescript-eslint/visitor-keys@npm:8.39.0" dependencies: - "@typescript-eslint/types": 8.31.1 - eslint-visitor-keys: ^4.2.0 - checksum: fe425abdf44d38afb1a94726411de4a9df540d4a05b8c7db5517b8edfcd02be8a6d7fbd532f5a0377a634956440d0757eca0abb52cecfe683cd17d5c2d02473e + "@typescript-eslint/types": 8.39.0 + eslint-visitor-keys: ^4.2.1 + checksum: dc9380867c2903114cfbef9cb9ce14eb07742301fbd5b1bc32d0593ab2cc66b2790c52a7e1156abf61f48cad734972d2d13eb35430dbd5c058fc877d7372ae02 languageName: node linkType: hard @@ -9379,16 +9505,16 @@ __metadata: languageName: node linkType: hard -"cli-table3@npm:~0.6.5": - version: 0.6.5 - resolution: "cli-table3@npm:0.6.5" +"cli-table3@npm:0.6.1": + version: 0.6.1 + resolution: "cli-table3@npm:0.6.1" dependencies: - "@colors/colors": 1.5.0 + colors: 1.4.0 string-width: ^4.2.0 dependenciesMeta: - "@colors/colors": + colors: optional: true - checksum: ab7afbf4f8597f1c631f3ee6bb3481d0bfeac8a3b81cffb5a578f145df5c88003b6cfff46046a7acae86596fdd03db382bfa67f20973b6b57425505abc47e42c + checksum: 956e175f8eb019c26465b9f1e51121c08d8978e2aab04be7f8520ea8a4e67906fcbd8516dfb77e386ae3730ef0281aa21a65613dffbfa3d62969263252bd25a9 languageName: node linkType: hard @@ -10089,11 +10215,11 @@ __metadata: languageName: node linkType: hard -"cypress@npm:14.2.0": - version: 14.2.0 - resolution: "cypress@npm:14.2.0" +"cypress@npm:14.5.3": + version: 14.5.3 + resolution: "cypress@npm:14.5.3" dependencies: - "@cypress/request": ^3.0.7 + "@cypress/request": ^3.0.9 "@cypress/xvfb": ^1.2.4 "@types/sinonjs__fake-timers": 8.1.1 "@types/sizzle": ^2.3.2 @@ -10106,7 +10232,7 @@ __metadata: check-more-types: ^2.24.0 ci-info: ^4.1.0 cli-cursor: ^3.1.0 - cli-table3: ~0.6.5 + cli-table3: 0.6.1 commander: ^6.2.1 common-tags: ^1.8.0 dayjs: ^1.10.4 @@ -10119,6 +10245,7 @@ __metadata: figures: ^3.2.0 fs-extra: ^9.1.0 getos: ^3.2.1 + hasha: 5.2.2 is-installed-globally: ~0.4.0 lazy-ass: ^1.6.0 listr2: ^3.8.3 @@ -10130,7 +10257,7 @@ __metadata: process: ^0.11.10 proxy-from-env: 1.0.0 request-progress: ^3.0.0 - semver: ^7.5.3 + semver: ^7.7.1 supports-color: ^8.1.1 tmp: ~0.2.3 tree-kill: 1.2.2 @@ -10138,7 +10265,7 @@ __metadata: yauzl: ^2.10.0 bin: cypress: bin/cypress - checksum: 3aad74ceb53d61a0ec95ef6831366846363eba39087ffaea2e4c9fc8d196a6c66795fcb28b676b41c9743bd6b4fd55f817a45bd7a4b085e9858d27a206f7d3aa + checksum: c7bba5b124556abab5c8536b353569bf440c9d17cfdf302c7594f50f080057e32103d9d270148b16a1f7601bd561eacf83c7472b0df1cba97fd3be6d4ab7558b languageName: node linkType: hard @@ -11055,6 +11182,18 @@ __metadata: languageName: node linkType: hard +"es-set-tostringtag@npm:^2.1.0": + version: 2.1.0 + resolution: "es-set-tostringtag@npm:2.1.0" + dependencies: + es-errors: ^1.3.0 + get-intrinsic: ^1.2.6 + has-tostringtag: ^1.0.2 + hasown: ^2.0.2 + checksum: 789f35de4be3dc8d11fdcb91bc26af4ae3e6d602caa93299a8c45cf05d36cc5081454ae2a6d3afa09cceca214b76c046e4f8151e092e6fc7feeb5efb9e794fc6 + languageName: node + linkType: hard + "esbuild-wasm@npm:0.18.17": version: 0.18.17 resolution: "esbuild-wasm@npm:0.18.17" @@ -11367,14 +11506,14 @@ __metadata: languageName: node linkType: hard -"eslint-config-prettier@npm:10.1.1": - version: 10.1.1 - resolution: "eslint-config-prettier@npm:10.1.1" +"eslint-config-prettier@npm:10.1.8": + version: 10.1.8 + resolution: "eslint-config-prettier@npm:10.1.8" peerDependencies: eslint: ">=7.0.0" bin: eslint-config-prettier: bin/cli.js - checksum: 1211a973f4b5c3fe4a152ca58e40493c9d51b5145a4dfd6a4606b65e480b43c072d1a9b41b179adeb3aac93b6425b2d05d5e4f696e2447ac833373b4ac707a6b + checksum: 9140e19f78f0dbc888b160bb72b85f8043bada7b12a548faa56cea0ba74f8ef16653250ffd014d85d9a376a88c4941c96a3cdc9d39a07eb3def6967166635bd8 languageName: node linkType: hard @@ -11503,10 +11642,10 @@ __metadata: languageName: node linkType: hard -"eslint-visitor-keys@npm:^4.2.0": - version: 4.2.0 - resolution: "eslint-visitor-keys@npm:4.2.0" - checksum: 779c604672b570bb4da84cef32f6abb085ac78379779c1122d7879eade8bb38ae715645324597cf23232d03cef06032c9844d25c73625bc282a5bfd30247e5b5 +"eslint-visitor-keys@npm:^4.2.1": + version: 4.2.1 + resolution: "eslint-visitor-keys@npm:4.2.1" + checksum: 3a77e3f99a49109f6fb2c5b7784bc78f9743b834d238cdba4d66c602c6b52f19ed7bcd0a5c5dbbeae3a8689fd785e76c001799f53d2228b278282cf9f699fff5 languageName: node linkType: hard @@ -12272,17 +12411,19 @@ __metadata: linkType: hard "form-data@npm:^3.0.0": - version: 3.0.1 - resolution: "form-data@npm:3.0.1" + version: 3.0.4 + resolution: "form-data@npm:3.0.4" dependencies: asynckit: ^0.4.0 combined-stream: ^1.0.8 - mime-types: ^2.1.12 - checksum: b019e8d35c8afc14a2bd8a7a92fa4f525a4726b6d5a9740e8d2623c30e308fbb58dc8469f90415a856698933c8479b01646a9dff33c87cc4e76d72aedbbf860d + es-set-tostringtag: ^2.1.0 + hasown: ^2.0.2 + mime-types: ^2.1.35 + checksum: 989005f575b9a14a30144df1745ef60c64cf901e648ae198bf63e5caeaf8dacf595a85dfd56f90a845eceb14fe1bea58b3845e8171337a4cf72781fa19867efc languageName: node linkType: hard -"form-data@npm:^4.0.0, form-data@npm:~4.0.0": +"form-data@npm:^4.0.0": version: 4.0.0 resolution: "form-data@npm:4.0.0" dependencies: @@ -12293,6 +12434,19 @@ __metadata: languageName: node linkType: hard +"form-data@npm:~4.0.4": + version: 4.0.4 + resolution: "form-data@npm:4.0.4" + dependencies: + asynckit: ^0.4.0 + combined-stream: ^1.0.8 + es-set-tostringtag: ^2.1.0 + hasown: ^2.0.2 + mime-types: ^2.1.12 + checksum: 9b7788836df9fa5a6999e0c02515b001946b2a868cfe53f026c69e2c537a2ff9fbfb8e9d2b678744628f3dc7a2d6e14e4e45dfaf68aa6239727f0bdb8ce0abf2 + languageName: node + linkType: hard + "forwarded@npm:0.2.0": version: 0.2.0 resolution: "forwarded@npm:0.2.0" @@ -12994,6 +13148,15 @@ __metadata: languageName: node linkType: hard +"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" @@ -13001,6 +13164,16 @@ __metadata: languageName: node linkType: hard +"hasha@npm:5.2.2": + version: 5.2.2 + resolution: "hasha@npm:5.2.2" + dependencies: + is-stream: ^2.0.0 + type-fest: ^0.8.0 + checksum: 06cc474bed246761ff61c19d629977eb5f53fa817be4313a255a64ae0f433e831a29e83acb6555e3f4592b348497596f1d1653751008dda4f21c9c21ca60ac5a + languageName: node + linkType: hard + "hasown@npm:^2.0.0": version: 2.0.1 resolution: "hasown@npm:2.0.1" @@ -13211,7 +13384,7 @@ __metadata: languageName: node linkType: hard -"http-proxy-middleware@npm:^2.0.3, http-proxy-middleware@npm:^2.0.7": +"http-proxy-middleware@npm:^2.0.3, http-proxy-middleware@npm:^2.0.9": version: 2.0.9 resolution: "http-proxy-middleware@npm:2.0.9" dependencies: @@ -13353,13 +13526,20 @@ __metadata: languageName: node linkType: hard -"ignore@npm:^5.1.1, ignore@npm:^5.1.2, ignore@npm:^5.2.0, ignore@npm:^5.2.4, ignore@npm:^5.3.1": +"ignore@npm:^5.1.1, ignore@npm:^5.1.2, ignore@npm:^5.2.0, ignore@npm:^5.2.4": version: 5.3.1 resolution: "ignore@npm:5.3.1" checksum: 71d7bb4c1dbe020f915fd881108cbe85a0db3d636a0ea3ba911393c53946711d13a9b1143c7e70db06d571a5822c0a324a6bcde5c9904e7ca5047f01f1bf8cd3 languageName: node linkType: hard +"ignore@npm:^7.0.0": + version: 7.0.5 + resolution: "ignore@npm:7.0.5" + checksum: d0862bf64d3d58bf34d5fb0a9f725bec9ca5ce8cd1aecc8f28034269e8f69b8009ffd79ca3eda96962a6a444687781cd5efdb8c7c8ddc0a6996e36d31c217f14 + languageName: node + linkType: hard + "ignore@npm:^7.0.3": version: 7.0.3 resolution: "ignore@npm:7.0.3" @@ -14986,7 +15166,7 @@ __metadata: "@cypress/webpack-preprocessor": 6.0.2 "@graphql-mesh/cli": 0.100.1 "@graphql-mesh/openapi": 0.109.2 - "@graphql-mesh/runtime": 0.106.1 + "@graphql-mesh/runtime": 0.106.6 "@graphql-mesh/transform-replace-field": 0.105.4 "@swimlane/ngx-charts": 21.1.3 "@types/d3": 7.4.3 @@ -14998,20 +15178,20 @@ __metadata: "@types/js-yaml": 4.0.9 "@types/lodash-es": 4.17.12 "@types/node": 22.15.3 - "@typescript-eslint/eslint-plugin": 8.31.1 - "@typescript-eslint/parser": 8.31.1 + "@typescript-eslint/eslint-plugin": 8.39.0 + "@typescript-eslint/parser": 8.39.0 ace-builds: 1.41.0 codelyzer: 6.0.2 concurrently: 9.1.2 core-js: 3.41.0 crop-url: 4.0.1 - cypress: 14.2.0 + cypress: 14.5.3 cypress-fail-fast: 7.1.1 d3-shape: 3.2.0 d3-time-format: 4.1.0 del: 8.0.0 eslint: 8.57.0 - eslint-config-prettier: 10.1.1 + eslint-config-prettier: 10.1.8 eslint-plugin-node: 11.1.0 eslint-plugin-prettier: 5.2.6 eslint-plugin-rxjs: 5.0.3 @@ -15044,7 +15224,7 @@ __metadata: run-node: 2.0.0 rxjs: 7.8.2 rxjs-compat: 6.6.7 - sass: 1.87.0 + sass: 1.90.0 sass-loader: 16.0.5 semver: 7.7.1 sockjs-client: 1.6.1 @@ -15066,7 +15246,7 @@ __metadata: wait-on: 8.0.3 web-animations-js: 2.3.2 webpack-bundle-analyzer: 4.10.2 - webpack-dev-server: 5.2.0 + webpack-dev-server: 5.2.2 xterm: 5.3.0 xterm-addon-fit: 0.8.0 zone.js: 0.13.3 @@ -15804,7 +15984,7 @@ __metadata: languageName: node linkType: hard -"mime-types@npm:^2.1.12, 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": +"mime-types@npm:^2.1.12, mime-types@npm:^2.1.27, mime-types@npm:^2.1.31, mime-types@npm:^2.1.35, 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: @@ -17708,16 +17888,7 @@ __metadata: languageName: node linkType: hard -"qs@npm:6.13.1": - version: 6.13.1 - resolution: "qs@npm:6.13.1" - dependencies: - side-channel: ^1.0.6 - checksum: 86c5059146955fab76624e95771031541328c171b1d63d48a7ac3b1fdffe262faf8bc5fcadc1684e6f3da3ec87a8dedc8c0009792aceb20c5e94dc34cf468bb9 - languageName: node - linkType: hard - -"qs@npm:^6.14.0": +"qs@npm:6.14.0, qs@npm:^6.14.0": version: 6.14.0 resolution: "qs@npm:6.14.0" dependencies: @@ -18441,9 +18612,9 @@ __metadata: languageName: node linkType: hard -"sass@npm:1.87.0": - version: 1.87.0 - resolution: "sass@npm:1.87.0" +"sass@npm:1.90.0": + version: 1.90.0 + resolution: "sass@npm:1.90.0" dependencies: "@parcel/watcher": ^2.4.1 chokidar: ^4.0.0 @@ -18454,7 +18625,7 @@ __metadata: optional: true bin: sass: sass.js - checksum: 83d166fc6f03ed679460c21351c783d57a61c32fe1afdacf647ce477dd5611f03b1cff27444cccd59d3a5bd1453471fbbcdba7b9e7fc510e4f57226e125e4e01 + checksum: 1f2ad353eb9a4a294ba7e8f9038363c8fbf69afbf2938d53a3beff9bd9180061c3da71f139b7dedc4707f7421c4a1226164bd0276988dbc3b43b1276c0752055 languageName: node linkType: hard @@ -20016,12 +20187,12 @@ __metadata: languageName: node linkType: hard -"ts-api-utils@npm:^2.0.1": - version: 2.0.1 - resolution: "ts-api-utils@npm:2.0.1" +"ts-api-utils@npm:^2.1.0": + version: 2.1.0 + resolution: "ts-api-utils@npm:2.1.0" peerDependencies: typescript: ">=4.8.4" - checksum: ca31f4dc3c0d69691599de2955b41879c27cb91257f2a468bbb444d3f09982a5f717a941fcebd3aaa092b778710647a0be1c2b1dd75cf6c82ceffc3bf4c7d27d + checksum: 5b1ef89105654d93d67582308bd8dfe4bbf6874fccbcaa729b08fbb00a940fd4c691ca6d0d2b18c3c70878d9a7e503421b7cc473dbc3d0d54258b86401d4b15d languageName: node linkType: hard @@ -20283,6 +20454,13 @@ __metadata: languageName: node linkType: hard +"type-fest@npm:^0.8.0": + version: 0.8.1 + resolution: "type-fest@npm:0.8.1" + checksum: d61c4b2eba24009033ae4500d7d818a94fd6d1b481a8111612ee141400d5f1db46f199c014766b9fa9b31a6a7374d96fc748c6d688a78a3ce5a33123839becb7 + languageName: node + linkType: hard + "type-fest@npm:^4.39.1": version: 4.39.1 resolution: "type-fest@npm:4.39.1" @@ -20964,13 +21142,14 @@ __metadata: languageName: node linkType: hard -"webpack-dev-server@npm:5.2.0": - version: 5.2.0 - resolution: "webpack-dev-server@npm:5.2.0" +"webpack-dev-server@npm:5.2.2": + version: 5.2.2 + resolution: "webpack-dev-server@npm:5.2.2" dependencies: "@types/bonjour": ^3.5.13 "@types/connect-history-api-fallback": ^1.5.4 "@types/express": ^4.17.21 + "@types/express-serve-static-core": ^4.17.21 "@types/serve-index": ^1.9.4 "@types/serve-static": ^1.15.5 "@types/sockjs": ^0.3.36 @@ -20983,7 +21162,7 @@ __metadata: connect-history-api-fallback: ^2.0.0 express: ^4.21.2 graceful-fs: ^4.2.6 - http-proxy-middleware: ^2.0.7 + http-proxy-middleware: ^2.0.9 ipaddr.js: ^2.1.0 launch-editor: ^2.6.1 open: ^10.0.3 @@ -21004,7 +21183,7 @@ __metadata: optional: true bin: webpack-dev-server: bin/webpack-dev-server.js - checksum: 87b7acc194cfa3e5c95cd797bf1f0c2ffc8718bbc02e8f47777b9a861a6b7691f27c5138162ba2a9ac2c337d122e14f220342789c290027a3f9db44b4af104c9 + checksum: 96994d684563cfee76dcb031c7c18a1fa10aee2df0520a0f327c8d72d4692c0dcdd7e455adeed4f8da9695f2e9f8f5481053c7e6e27d7e35085e45357fc9f697 languageName: node linkType: hard