Showing preview only (1,522K chars total). Download the full file or copy to clipboard to get everything.
Repository: aws/aws-k8s-tester
Branch: main
Commit: 2b0b6c2b51b7
Files: 270
Total size: 1.4 MB
Directory structure:
gitextract_r74v3ht2/
├── .dockerignore
├── .github/
│ ├── PULL_REQUEST_TEMPLATE.md
│ └── workflows/
│ ├── build-neuron-ci.yaml
│ ├── build-nvidia-ci.yaml
│ ├── ci.yaml
│ ├── update-go-dependencies.yaml
│ ├── update-image-tags.yaml
│ ├── update-neuron-dependencies.yaml
│ └── update-nvidia-dependencies.yaml
├── .gitignore
├── .vscode/
│ └── settings.json
├── CODE_OF_CONDUCT.md
├── CONTRIBUTING.md
├── Config
├── Dockerfile
├── LICENSE
├── Makefile
├── NOTICE
├── README.md
├── bmg.json
├── cmd/
│ ├── kubetest2-eksapi/
│ │ └── main.go
│ ├── kubetest2-eksapi-janitor/
│ │ └── main.go
│ ├── kubetest2-eksctl/
│ │ └── main.go
│ ├── kubetest2-tester-ginkgo-v1/
│ │ └── main.go
│ └── kubetest2-tester-multi/
│ └── main.go
├── external/
│ └── tools.go
├── go.mod
├── go.sum
├── hack/
│ ├── download-kubernetes-binaries.sh
│ ├── free-disk-space.sh
│ ├── update-go-dependencies.sh
│ ├── update-image-tags.sh
│ ├── update-neuron-dependencies.sh
│ └── update-nvidia-dependencies.sh
├── internal/
│ ├── awssdk/
│ │ └── config.go
│ ├── deployers/
│ │ ├── eksapi/
│ │ │ ├── addons.go
│ │ │ ├── ami_resolver.go
│ │ │ ├── ami_resolver_test.go
│ │ │ ├── auth_map_role.go
│ │ │ ├── auth_map_role_test.go
│ │ │ ├── aws.go
│ │ │ ├── cluster.go
│ │ │ ├── common.go
│ │ │ ├── common_test.go
│ │ │ ├── deployer.go
│ │ │ ├── infra.go
│ │ │ ├── janitor.go
│ │ │ ├── k8s.go
│ │ │ ├── kubeconfig.go
│ │ │ ├── logs.go
│ │ │ ├── logs_ssm_doc.json
│ │ │ ├── metrics.go
│ │ │ ├── node.go
│ │ │ ├── static_cluster.go
│ │ │ ├── templates/
│ │ │ │ ├── auth_map_role.yaml.template
│ │ │ │ ├── busybox_deployment.yaml.template
│ │ │ │ ├── cloudwatch-infra.yaml.template
│ │ │ │ ├── cloudwatch_agent_infra.yaml
│ │ │ │ ├── infra.yaml
│ │ │ │ ├── nvidia_static_cluster_nodepool.yaml.template
│ │ │ │ ├── templates.go
│ │ │ │ ├── templates_test.go
│ │ │ │ ├── unmanaged-nodegroup.yaml.template
│ │ │ │ ├── userdata_bootstrap.sh.mimepart.template
│ │ │ │ ├── userdata_bottlerocket.toml.template
│ │ │ │ └── userdata_nodeadm.yaml.mimepart.template
│ │ │ ├── userdata.go
│ │ │ ├── userdata_test.go
│ │ │ ├── vpccni.go
│ │ │ └── vpccni_test.go
│ │ └── eksctl/
│ │ ├── build.go
│ │ ├── cluster_config.go
│ │ ├── deployer.go
│ │ ├── down.go
│ │ └── up.go
│ ├── e2e/
│ │ ├── client.go
│ │ ├── conditions.go
│ │ ├── doc.go
│ │ ├── ec2.go
│ │ ├── health.go
│ │ ├── logs.go
│ │ ├── mpijobs/
│ │ │ ├── conditions.go
│ │ │ ├── conditions_test.go
│ │ │ └── types.go
│ │ └── resources.go
│ ├── metrics/
│ │ ├── cloudwatch.go
│ │ ├── noop.go
│ │ └── registry.go
│ ├── testers/
│ │ ├── ginkgov1/
│ │ │ ├── LICENSE.original
│ │ │ ├── README.md
│ │ │ ├── ginkgo.go
│ │ │ ├── kubectl/
│ │ │ │ └── kubectl.go
│ │ │ └── package.go
│ │ └── multi/
│ │ └── cmd.go
│ ├── util/
│ │ ├── cloudformation.go
│ │ ├── exec.go
│ │ ├── http.go
│ │ ├── http_test.go
│ │ ├── lang.go
│ │ ├── path.go
│ │ └── version.go
│ └── version.go
└── test/
├── cases/
│ ├── disruptive/
│ │ ├── graceful_reboot_test.go
│ │ ├── graceful_shutdown_test.go
│ │ └── main_test.go
│ ├── dra/
│ │ ├── dra_example_driver_test.go
│ │ └── main_test.go
│ ├── efa/
│ │ ├── commons.go
│ │ ├── main_test.go
│ │ ├── pingpong_test.go
│ │ └── unit_test.go
│ ├── fips/
│ │ ├── README.md
│ │ ├── fips_test.go
│ │ ├── main_test.go
│ │ └── manifests/
│ │ ├── registry-fips.yaml
│ │ ├── registry-nonfips.yaml
│ │ └── test-pods.yaml
│ ├── netpol/
│ │ ├── main_test.go
│ │ └── np_test.go
│ ├── neuron/
│ │ ├── main_test.go
│ │ ├── manifests/
│ │ │ ├── multi-node-test-neuron.yaml
│ │ │ └── single-node-test-neuronx.yaml
│ │ └── neuron_test.go
│ ├── neuron-dra/
│ │ ├── main_test.go
│ │ ├── neuron_dra_test.go
│ │ ├── rcts/
│ │ │ └── trn1/
│ │ │ ├── rct-2-efas-4-neurons-wrong-match.yaml
│ │ │ └── rct-all-efas-all-neurons.yaml
│ │ ├── templates/
│ │ │ └── nccom-test-mpijob.yaml.tmpl
│ │ ├── testcases/
│ │ │ └── trn1/
│ │ │ ├── 2-efas-4-neurons-wrong-match.yaml
│ │ │ └── all-efas-all-neurons.yaml
│ │ └── topology.go
│ ├── neuron-inference/
│ │ ├── bert_inference_test.go
│ │ ├── main_test.go
│ │ ├── manifests/
│ │ │ └── neuron-bert-inference.yaml
│ │ └── vars.go
│ ├── neuron-training/
│ │ ├── bert_training_test.go
│ │ ├── main_test.go
│ │ ├── manifests/
│ │ │ ├── bert-training.yaml
│ │ │ └── training-comm-service.yaml
│ │ └── vars.go
│ ├── nvidia/
│ │ ├── capabilities_test.go
│ │ ├── containerd_test.go
│ │ ├── main_test.go
│ │ ├── manifests/
│ │ │ ├── daemonset-containerd-check.yaml
│ │ │ ├── job-hpc-benchmarks.yaml
│ │ │ ├── job-unit-test-single-node.yaml
│ │ │ ├── mpi-job-nccl-test-multi-node.yaml
│ │ │ ├── mpi-job-pytorch-training-single-node.yaml
│ │ │ └── nvidia-driver-capabilities-check.yaml
│ │ ├── mpi_test.go
│ │ └── unit_test.go
│ ├── nvidia-dra/
│ │ ├── main_test.go
│ │ ├── nvidia_dra_test.go
│ │ ├── rcts/
│ │ │ └── p5/
│ │ │ ├── rct-all-efas.yaml
│ │ │ ├── rct-all-gpus.yaml
│ │ │ └── rct-five-efas-one-gpu.yaml
│ │ ├── templates/
│ │ │ └── nccl-test-mpijob.yaml.tmpl
│ │ ├── testcases/
│ │ │ └── p5/
│ │ │ ├── all-efas-all-gpus.yaml
│ │ │ └── five-efas-one-gpu-negative-test.yaml
│ │ └── topology.go
│ ├── nvidia-inference/
│ │ ├── bert_inference_test.go
│ │ ├── main_test.go
│ │ └── manifests/
│ │ └── bert-inference.yaml
│ ├── nvidia-training/
│ │ ├── bert_training_test.go
│ │ ├── main_test.go
│ │ ├── manifests/
│ │ │ └── bert-training.yaml
│ │ └── vars.go
│ ├── quick/
│ │ ├── io_uring_test.go
│ │ ├── limit_test.go
│ │ ├── main_test.go
│ │ ├── manifests/
│ │ │ └── ulimit.yaml
│ │ └── node_topology_test.go
│ └── workload/
│ ├── main_test.go
│ └── workload_test.go
├── common/
│ ├── dra.go
│ ├── dra_features.go
│ ├── dra_types.go
│ ├── flags.go
│ └── resources.go
├── images/
│ ├── efa/
│ │ ├── Dockerfile
│ │ └── scripts/
│ │ └── unit-test.sh
│ ├── neuron/
│ │ ├── Dockerfile
│ │ ├── hack/
│ │ │ └── install-test-resources.sh
│ │ └── tests/
│ │ ├── singleNodeTest.sh
│ │ ├── testNeuronMlp.py
│ │ ├── testNeuronParallelState.py
│ │ └── testNeuronSingleAllReduce.py
│ ├── neuron-inference/
│ │ ├── Dockerfile
│ │ └── infer.py
│ ├── neuron-training/
│ │ ├── Dockerfile
│ │ └── train.py
│ ├── nvidia/
│ │ ├── Dockerfile
│ │ └── gpu_unit_tests/
│ │ ├── README.md
│ │ ├── bash_unit
│ │ ├── tests/
│ │ │ ├── common.sh
│ │ │ ├── test_basic.sh
│ │ │ ├── test_sysinfo.sh
│ │ │ └── test_sysinfo.sh.data/
│ │ │ ├── g5.48xlarge/
│ │ │ │ ├── gpu_count.txt
│ │ │ │ ├── numa_topo.txt
│ │ │ │ ├── nvidia_persistence_status.txt
│ │ │ │ └── nvidia_smi_topo.txt
│ │ │ ├── g5.8xlarge/
│ │ │ │ ├── gpu_count.txt
│ │ │ │ ├── numa_topo.txt
│ │ │ │ ├── nvidia_persistence_status.txt
│ │ │ │ └── nvidia_smi_topo.txt
│ │ │ ├── g5g.2xlarge/
│ │ │ │ ├── gpu_count.txt
│ │ │ │ ├── numa_topo.txt
│ │ │ │ ├── nvidia_persistence_status.txt
│ │ │ │ └── nvidia_smi_topo.txt
│ │ │ ├── g6f.2xlarge/
│ │ │ │ ├── efa_count.txt
│ │ │ │ ├── gpu_count.txt
│ │ │ │ ├── numa_topo.txt
│ │ │ │ ├── nvidia_persistence_status.txt
│ │ │ │ ├── nvidia_smi_topo.txt
│ │ │ │ └── nvidia_vgpu_license_status.txt
│ │ │ ├── g6f.4xlarge/
│ │ │ │ ├── efa_count.txt
│ │ │ │ ├── gpu_count.txt
│ │ │ │ ├── numa_topo.txt
│ │ │ │ ├── nvidia_persistence_status.txt
│ │ │ │ ├── nvidia_smi_topo.txt
│ │ │ │ └── nvidia_vgpu_license_status.txt
│ │ │ ├── g6f.large/
│ │ │ │ ├── efa_count.txt
│ │ │ │ ├── gpu_count.txt
│ │ │ │ ├── numa_topo.txt
│ │ │ │ ├── nvidia_persistence_status.txt
│ │ │ │ ├── nvidia_smi_topo.txt
│ │ │ │ └── nvidia_vgpu_license_status.txt
│ │ │ ├── g6f.xlarge/
│ │ │ │ ├── efa_count.txt
│ │ │ │ ├── gpu_count.txt
│ │ │ │ ├── numa_topo.txt
│ │ │ │ ├── nvidia_persistence_status.txt
│ │ │ │ ├── nvidia_smi_topo.txt
│ │ │ │ └── nvidia_vgpu_license_status.txt
│ │ │ ├── p3.16xlarge/
│ │ │ │ ├── gpu_count.txt
│ │ │ │ ├── numa_topo.txt
│ │ │ │ ├── nvidia_persistence_status.txt
│ │ │ │ └── nvidia_smi_topo.txt
│ │ │ ├── p3.2xlarge/
│ │ │ │ ├── gpu_count.txt
│ │ │ │ ├── numa_topo.txt
│ │ │ │ ├── nvidia_persistence_status.txt
│ │ │ │ └── nvidia_smi_topo.txt
│ │ │ ├── p4d.24xlarge/
│ │ │ │ ├── gpu_count.txt
│ │ │ │ ├── numa_topo.txt
│ │ │ │ ├── nvidia_persistence_status.txt
│ │ │ │ └── nvidia_smi_topo.txt
│ │ │ ├── p4de.24xlarge/
│ │ │ │ ├── gpu_count.txt
│ │ │ │ ├── numa_topo.txt
│ │ │ │ ├── nvidia_persistence_status.txt
│ │ │ │ └── nvidia_smi_topo.txt
│ │ │ └── p5.48xlarge/
│ │ │ ├── gpu_count.txt
│ │ │ ├── numa_topo.txt
│ │ │ ├── nvidia_persistence_status.txt
│ │ │ └── nvidia_smi_topo.txt
│ │ └── unit_test
│ ├── nvidia-inference/
│ │ ├── Dockerfile
│ │ ├── infer.py
│ │ └── requirements.txt
│ └── nvidia-training/
│ ├── Dockerfile
│ ├── requirements.txt
│ └── train.py
└── manifests/
├── assets/
│ ├── cloudwatch-agent.yaml
│ ├── dcgm-exporter.yaml
│ ├── dranet.yaml
│ ├── efa-device-plugin.yaml
│ ├── k8s-neuron-device-plugin-rbac.yml
│ ├── k8s-neuron-device-plugin.yml
│ ├── mpi-operator.yaml
│ └── nvidia-device-plugin.yaml
├── raw.go
└── rendered.go
================================================
FILE CONTENTS
================================================
================================================
FILE: .dockerignore
================================================
.git/
.github/
bin/
CHANGELOG/
Dockerfile
Makefile
aws-k8s-tester
================================================
FILE: .github/PULL_REQUEST_TEMPLATE.md
================================================
*Issue #, if available:*
*Description of changes:*
By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.
================================================
FILE: .github/workflows/build-neuron-ci.yaml
================================================
name: "Neuron Images CI"
on:
pull_request:
types:
- opened
- reopened
- synchronize
paths:
- 'test/images/neuron**'
jobs:
build-image-neuronx:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- run: ./hack/free-disk-space.sh
- run: docker build --file test/images/neuron/Dockerfile .
build-image-neuron-training:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- run: ./hack/free-disk-space.sh
- run: docker build --file test/images/neuron-training/Dockerfile test/images/neuron-training
build-image-neuron-inference:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- run: ./hack/free-disk-space.sh
- run: docker build --file test/images/neuron-inference/Dockerfile test/images/neuron-inference
================================================
FILE: .github/workflows/build-nvidia-ci.yaml
================================================
name: "Nvidia Images CI"
on:
pull_request:
types:
- opened
- reopened
- synchronize
paths:
- 'test/images/nvidia**'
jobs:
build-image-nvidia:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- run: ./hack/free-disk-space.sh
- run: docker build --file test/images/nvidia/Dockerfile .
build-image-nvidia-training:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- run: ./hack/free-disk-space.sh
- run: |
docker build --file test/images/nvidia-training/Dockerfile test/images/nvidia-training \
--build-arg PYTORCH_BUILD_ENV="MAX_JOBS=$(($(nproc) - 2)) USE_MKLDNN=0 USE_DISTRIBUTED=0 USE_CUDA=0 USE_ROCM=0 USE_CAFFE2=0 USE_QNNPACK=0 USE_NNPACK=0 USE_XNNPACK=0 USE_MPS=0 BUILD_SHARED_LIBS=OFF USE_FLASH_ATTENTION=0 USE_MEM_EFF_ATTENTION=0 BUILD_TEST=0"
build-image-nvidia-inference:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- run: ./hack/free-disk-space.sh
- run: |
docker build --file test/images/nvidia-inference/Dockerfile test/images/nvidia-inference \
--build-arg PYTORCH_BUILD_ENV="MAX_JOBS=$(($(nproc) - 2)) USE_MKLDNN=0 USE_DISTRIBUTED=0 USE_CUDA=0 USE_ROCM=0 USE_CAFFE2=0 USE_QNNPACK=0 USE_NNPACK=0 USE_XNNPACK=0 USE_MPS=0 BUILD_SHARED_LIBS=OFF USE_FLASH_ATTENTION=0 USE_MEM_EFF_ATTENTION=0 BUILD_TEST=0"
================================================
FILE: .github/workflows/ci.yaml
================================================
name: "CI"
on:
pull_request:
types:
- opened
- reopened
- synchronize
paths-ignore:
- 'test/images/nvidia**'
- 'test/images/neuron**'
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- run: go build ./...
- run: go test ./...
build-test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- run: go test -c -tags=e2e ./test/...
build-image:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- run: ./hack/free-disk-space.sh
- run: docker build --build-arg=KUBERNETES_MINOR_VERSION=latest --file Dockerfile .
build-image-efa:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- run: ./hack/free-disk-space.sh
- run: docker build --file test/images/efa/Dockerfile .
================================================
FILE: .github/workflows/update-go-dependencies.yaml
================================================
name: "[CI] update-go-dependencies"
on:
workflow_dispatch:
schedule:
# once a week
- cron: "0 0 * * 0"
permissions:
id-token: write
contents: write
pull-requests: write
jobs:
update-dependencies:
runs-on: ubuntu-latest
if: github.repository == 'aws/aws-k8s-tester'
steps:
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # 4.2.2
- uses: actions/setup-go@d35c59abb061a4a6fb18e82ac0862c26744d6ab5 # 5.5.0
- run: |
./hack/update-go-dependencies.sh
- uses: peter-evans/create-pull-request@271a8d0340265f705b14b6d32b9829c1cb33d45e # 7.0.8
with:
branch: update-go-dependencies
base: main
add-paths: |
.
commit-message: "chore: update go dependencies"
committer: "GitHub <noreply@github.com>"
author: "GitHub <noreply@github.com>"
title: "chore: update go dependencies"
body: |
Generated by:
```
./hack/update-go-dependencies.sh
```
================================================
FILE: .github/workflows/update-image-tags.yaml
================================================
name: "[CI] update-image-tags"
on:
workflow_dispatch:
schedule:
# once a week
- cron: "0 0 * * 0"
permissions:
id-token: write
contents: write
pull-requests: write
jobs:
update-dependencies:
runs-on: ubuntu-latest
if: github.repository == 'aws/aws-k8s-tester'
steps:
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # 4.2.2
- run: ./hack/update-image-tags.sh
- uses: peter-evans/create-pull-request@271a8d0340265f705b14b6d32b9829c1cb33d45e # 7.0.8
with:
branch: update-image-tags
base: main
add-paths: |
test/images/
commit-message: "chore: update image tags"
committer: "GitHub <noreply@github.com>"
author: "GitHub <noreply@github.com>"
title: "chore: update image tags"
body: |
Generated by:
```
./hack/update-image-tags.sh
```
================================================
FILE: .github/workflows/update-neuron-dependencies.yaml
================================================
name: "[CI] update-neuron-dependencies"
on:
workflow_dispatch:
schedule:
# once a week
- cron: "0 0 * * 0"
permissions:
id-token: write
contents: write
pull-requests: write
jobs:
update-dependencies:
runs-on: ubuntu-latest
if: github.repository == 'aws/aws-k8s-tester'
steps:
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # 4.2.2
- run: |
./hack/update-neuron-dependencies.sh
- uses: peter-evans/create-pull-request@271a8d0340265f705b14b6d32b9829c1cb33d45e # 7.0.8
with:
branch: update-neuron-dependencies
base: main
add-paths: |
test/images/
commit-message: "chore: update neuron dependencies"
committer: "GitHub <noreply@github.com>"
author: "GitHub <noreply@github.com>"
title: "chore: update neuron dependencies"
body: |
Generated by:
```
./hack/update-neuron-dependencies.sh
```
See the following URL for artifactes in the latest Neuron SDK release: https://awsdocs-neuron.readthedocs-hosted.com/en/latest/release-notes/releasecontent.html#latest-neuron-release-artifacts
================================================
FILE: .github/workflows/update-nvidia-dependencies.yaml
================================================
name: "[CI] update-nvidia-dependencies"
on:
workflow_dispatch:
schedule:
# once a week
- cron: "0 0 * * 0"
permissions:
id-token: write
contents: write
pull-requests: write
jobs:
update-dependencies:
runs-on: ubuntu-latest
if: github.repository == 'aws/aws-k8s-tester'
steps:
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # 4.2.2
- run: ./hack/update-nvidia-dependencies.sh
- uses: peter-evans/create-pull-request@271a8d0340265f705b14b6d32b9829c1cb33d45e # 7.0.8
with:
branch: update-nvidia-dependencies
base: main
add-paths: |
test/images/
commit-message: "chore: update nvidia test dependencies"
committer: "GitHub <noreply@github.com>"
author: "GitHub <noreply@github.com>"
title: "chore: update nvidia test dependencies"
body: |
Generated by:
```
./hack/update-nvidia-dependencies.sh
```
================================================
FILE: .gitignore
================================================
/.DS_Store
/bin
/_tmp
.idea
*.swp
/aws-k8s-tester
*/*/.DS_Store
*/.DS_Store
/_artifacts
/_rundir
================================================
FILE: .vscode/settings.json
================================================
{
"git.ignoreLimitWarning": true
}
================================================
FILE: CODE_OF_CONDUCT.md
================================================
## Code of Conduct
This project has adopted the [Amazon Open Source Code of Conduct](https://aws.github.io/code-of-conduct).
For more information see the [Code of Conduct FAQ](https://aws.github.io/code-of-conduct-faq) or contact
opensource-codeofconduct@amazon.com with any additional questions or comments.
================================================
FILE: CONTRIBUTING.md
================================================
# Contributing Guidelines
Thank you for your interest in contributing to our project. Whether it's a bug report, new feature, correction, or additional
documentation, we greatly value feedback and contributions from our community.
Please read through this document before submitting any issues or pull requests to ensure we have all the necessary
information to effectively respond to your bug report or contribution.
## Reporting Bugs/Feature Requests
We welcome you to use the GitHub issue tracker to report bugs or suggest features.
When filing an issue, please check [existing open](https://github.com/aws/aws-k8s-tester/issues), or [recently closed](https://github.com/aws/aws-k8s-tester/issues?utf8=%E2%9C%93&q=is%3Aissue%20is%3Aclosed%20), issues to make sure somebody else hasn't already
reported the issue. Please try to include as much information as you can. Details like these are incredibly useful:
* A reproducible test case or series of steps
* The version of our code being used
* Any modifications you've made relevant to the bug
* Anything unusual about your environment or deployment
## Contributing via Pull Requests
Contributions via pull requests are much appreciated. Before sending us a pull request, please ensure that:
1. You are working against the latest source on the *master* branch.
2. You check existing open, and recently merged, pull requests to make sure someone else hasn't addressed the problem already.
3. You open an issue to discuss any significant work - we would hate for your time to be wasted.
To send us a pull request, please:
1. Fork the repository.
2. Modify the source; please focus on the specific change you are contributing. If you also reformat all the code, it will be hard for us to focus on your change.
3. Ensure local tests pass.
4. Commit to your fork using clear commit messages.
5. Send us a pull request, answering any default questions in the pull request interface.
6. Pay attention to any automated CI failures reported in the pull request, and stay involved in the conversation.
GitHub provides additional document on [forking a repository](https://help.github.com/articles/fork-a-repo/) and
[creating a pull request](https://help.github.com/articles/creating-a-pull-request/).
## Finding contributions to work on
Looking at the existing issues is a great way to find something to contribute on. As our projects, by default, use the default GitHub issue labels (enhancement/bug/duplicate/help wanted/invalid/question/wontfix), looking at any ['help wanted'](https://github.com/aws/aws-k8s-tester/labels/help%20wanted) issues is a great place to start.
## Code of Conduct
This project has adopted the [Amazon Open Source Code of Conduct](https://aws.github.io/code-of-conduct).
For more information see the [Code of Conduct FAQ](https://aws.github.io/code-of-conduct-faq) or contact
opensource-codeofconduct@amazon.com with any additional questions or comments.
## Security issue notifications
If you discover a potential security issue in this project we ask that you notify AWS/Amazon Security via our [vulnerability reporting page](http://aws.amazon.com/security/vulnerability-reporting/). Please do **not** create a public github issue.
## Licensing
See the [LICENSE](https://github.com/aws/aws-k8s-tester/blob/master/LICENSE) file for our project's licensing. We will ask you to confirm the licensing of your contribution.
We may ask you to sign a [Contributor License Agreement (CLA)](http://en.wikipedia.org/wiki/Contributor_License_Agreement) for larger changes.
================================================
FILE: Config
================================================
# This file is for Amazon internal build processes
# Copyright 2025 Amazon.com, Inc. or its affiliates.
# SPDX-License-Identifier: Apache-2.0
package.Aws-k8s-tester-mirror = {
interfaces = (1.0);
build-system = bgo-wrap-make;
build-tools = {
1.0 = {
BrazilMakeGo = 3.0;
GoLang = 1.x;
};
};
};
================================================
FILE: Dockerfile
================================================
FROM public.ecr.aws/amazonlinux/amazonlinux:2023 AS builder
ARG TARGETOS
ARG TARGETARCH
RUN dnf install -y git tar gzip make unzip gcc rsync wget jq
ARG GO_MINOR_VERSION=1.25
RUN curl https://go.dev/dl/?mode=json | jq -r .[].version | grep "^go${GO_MINOR_VERSION}" | head -n1 > go-version.txt
RUN wget -O go.tar.gz https://go.dev/dl/$(cat go-version.txt).${TARGETOS}-${TARGETARCH}.tar.gz && \
rm -rf /usr/local/go && \
tar -C /usr/local -xzf go.tar.gz
ENV GOPATH=/usr/local/go
ENV PATH=$PATH:$GOPATH/bin
ENV GOPROXY=direct
WORKDIR $GOPATH/src/github.com/aws/aws-k8s-tester
COPY . .
RUN go install ./...
RUN go test -c -tags=e2e ./test/... -o $GOPATH/bin/
RUN go install sigs.k8s.io/kubetest2 && \
go install sigs.k8s.io/kubetest2/kubetest2-tester-exec && \
go install sigs.k8s.io/kubetest2/kubetest2-tester-ginkgo && \
go install sigs.k8s.io/hydrophone@latest
FROM public.ecr.aws/amazonlinux/amazonlinux:2023
ARG TARGETOS
ARG TARGETARCH
WORKDIR /workdir
RUN dnf install -y tar gzip unzip wget openssh diffutils
RUN wget -O awscli.zip https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip && \
unzip awscli.zip && \
./aws/install
# we need gsutil from the gcloud CLI for kubetest-tester-ginkgo
RUN dnf install -y python3.13
ARG GCLOUD_SDK_URL=https://dl.google.com/dl/cloudsdk/channels/rapid/google-cloud-sdk.tar.gz
RUN wget -O google-cloud-sdk.tar.gz -q $GCLOUD_SDK_URL && \
tar xzf google-cloud-sdk.tar.gz -C / && \
rm google-cloud-sdk.tar.gz && \
/google-cloud-sdk/install.sh \
--disable-installation-options \
--bash-completion=false \
--path-update=false \
--usage-reporting=false
ENV PATH=$PATH:/google-cloud-sdk/bin
ARG EKSCTL_VERSION=latest
RUN wget -O eksctl.tar.gz "https://github.com/eksctl-io/eksctl/releases/${EKSCTL_VERSION}/download/eksctl_Linux_${TARGETARCH}.tar.gz" && \
tar xzf eksctl.tar.gz -C /bin/ && \
rm eksctl.tar.gz
ARG HELM_VERSION=v4.1.4
RUN wget -O helm.tar.gz "https://get.helm.sh/helm-${HELM_VERSION}-${TARGETOS}-${TARGETARCH}.tar.gz" && \
tar xzf helm.tar.gz --strip-components=1 -C /bin/ "${TARGETOS}-${TARGETARCH}/helm" && \
rm helm.tar.gz
ARG KUBERNETES_MINOR_VERSION
COPY hack/download-kubernetes-binaries.sh .
RUN ./download-kubernetes-binaries.sh "${KUBERNETES_MINOR_VERSION}" "${TARGETOS}" "${TARGETARCH}"
RUN mkdir /info
ENV PATH=$PATH:/info
RUN cp kubernetes-version.txt /info/
RUN mv kubernetes/*/bin/* /bin/
RUN rm -rf /workdir
COPY --from=builder /usr/local/go/bin/* /bin/
================================================
FILE: LICENSE
================================================
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1. Definitions.
"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.
"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.
"You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License.
"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation
source, and configuration files.
"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation,
and conversions to other media types.
"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a
copyright notice that is included in or attached to the work
(an example is provided in the Appendix below).
"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of,
the Work and Derivative Works thereof.
"Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf of
the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems,
and issue tracking systems that are managed by, or on behalf of, the
Licensor for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution."
"Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.
2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the
Work and such Derivative Works in Source or Object form.
3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
(except as stated in this section) patent license to make, have made,
use, offer to sell, sell, import, and otherwise transfer the Work,
where such license applies only to those patent claims licensable
by such Contributor that are necessarily infringed by their
Contribution(s) alone or by combination of their Contribution(s)
with the Work to which such Contribution(s) was submitted. If You
institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work
or a Contribution incorporated within the Work constitutes direct
or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate
as of the date such litigation is filed.
4. Redistribution. You may reproduce and distribute copies of the
Work or Derivative Works thereof in any medium, with or without
modifications, and in Source or Object form, provided that You
meet the following conditions:
(a) You must give any other recipients of the Work or
Derivative Works a copy of this License; and
(b) You must cause any modified files to carry prominent notices
stating that You changed the files; and
(c) You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of
the Derivative Works; and
(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one
of the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or
documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and
wherever such third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and
do not modify the License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside
or as an addendum to the NOTICE text from the Work, provided
that such additional attribution notices cannot be construed
as modifying the License.
You may add Your own copyright statement to Your modifications and
may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or
for any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies with
the conditions stated in this License.
5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.
6. Trademarks. This License does not grant permission to use the trade
names, trademarks, service marks, or product names of the Licensor,
except as required for reasonable and customary use in describing the
origin of the Work and reproducing the content of the NOTICE file.
7. Disclaimer of Warranty. Unless required by applicable law or
agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditions
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any
risks associated with Your exercise of permissions under this License.
8. Limitation of Liability. In no event and under no legal theory,
whether in tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly
negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special,
incidental, or consequential damages of any character arising as a
result of this License or out of the use or inability to use the
Work (including but not limited to damages for loss of goodwill,
work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses), even if such Contributor
has been advised of the possibility of such damages.
9. Accepting Warranty or Additional Liability. While redistributing
the Work or Derivative Works thereof, You may choose to offer,
and charge a fee for, acceptance of support, warranty, indemnity,
or other liability obligations and/or rights consistent with this
License. However, in accepting such obligations, You may act only
on Your own behalf and on Your sole responsibility, not on behalf
of any other Contributor, and only if You agree to indemnify,
defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason
of your accepting any such warranty or additional liability.
END OF TERMS AND CONDITIONS
APPENDIX: How to apply the Apache License to your work.
To apply the Apache License to your work, attach the following
boilerplate notice, with the fields enclosed by brackets "[]"
replaced with your own identifying information. (Don't include
the brackets!) The text should be enclosed in the appropriate
comment syntax for the file format. We also recommend that a
file or class name and description of purpose be included on the
same "printed page" as the copyright notice for easier
identification within third-party archives.
Copyright [yyyy] [name of copyright owner]
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
================================================
FILE: Makefile
================================================
include ${BGO_MAKEFILE}
pre-release::
go test -c -tags=e2e ./test/... -o $(GOBIN)
go install sigs.k8s.io/kubetest2/...@latest
update-deps:
for SCRIPT in ./hack/update-*.sh; do \
"$$SCRIPT" ; \
done
.PHONY: test-integration
test-integration: ## Run unit and integration tests
go test -v -tags=integration ./...
================================================
FILE: NOTICE
================================================
Awstester
Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved.
================================================
FILE: README.md
================================================
# Tools for testing Kubernetes on AWS
## Installation
This project will use rolling releases going forward; we recommend fetching the latest commit:
```
go install github.com/aws/aws-k8s-tester/...@HEAD
```
You'll need the standard `kubetest` tools as well:
```
go install sigs.k8s.io/kubetest2/...@latest
```
## `kubetest2` deployers and testers for EKS
### Usage
**Auto-detect cluster version**
The deployers will search for a file called `kubernetes-version.txt` on your `PATH`.
This file should contain a valid tag for a Kubernetes release.
The `--kubernetes-version` flag can be omitted if this file exists.
---
### `eksctl` deployer
This deployer is a thin wrapper around `eksctl`.
The simplest usage is:
```
kubetest2 \
eksctl \
--kubernetes-version=X.XX \
--up \
--down \
--test=exec \
-- echo "Hello world"
```
**Additional flags**
- `--instance-types` - comma-separated list of instance types to use for nodes
- `--ami` - AMI ID for nodes
- `--nodes` - number of nodes
- `--region` - AWS region
- `--config-file` - Path to eksctl config file (**if provided, other flags are ignored**)
- `--availability-zones` - Node availability zones
- `--ami-family` - AMI family to use: `AmazonLinux2023` | `Bottlerocket`
- `--efa-enabled` - Enable Elastic Fabric Adapter for the nodegroup
- `--volume-size` - Size of the node root volume in GB
- `--private-networking` - Use private networking for nodes
- `--with-oidc` - Enable OIDC provider for IAM roles for service accounts
- `--deploy-target` - The target to deploy: `cluster` | `nodegroup` (defaults to `cluster`)
- `--cluster-name` - Name of the EKS cluster (defaults to RunID if not specified)
- `--unmanaged-nodegroup` - Use unmanaged nodegroup instead of managed nodegroup
- `--nodegroup-name` - Name of the nodegroup (defaults to `ng-1`)
---
### `eksapi` deployer
This deployer calls the EKS API directly, instead of using CloudFormation for EKS resources.
The simplest usage is:
```
kubetest2 \
eksapi \
--kubernetes-version=X.XX \
--up \
--down \
--test=exec \
-- echo "Hello world"
```
**Additional flags**
- `--instance-types` - comma-separated list of instance types to use for nodes
- `--ami` - AMI ID for nodes
- `--nodes` - number of nodes
- `--region` - AWS region
- `--endpoint-url` - Override the EKS endpoint URL
- `--cluster-role-service-principal` - Additional service principal that can assume the cluster IAM role.
---
### `multi` tester
This tester wraps multiple executions of other testers.
Tester argument groups are separated by `--`, with the first group being passed to the `multi` tester itself.
The first positional argument of each subsequent group should be the name of a tester.
```
kubetest2 \
noop \
--test=multi \
-- \
--fail-fast=true \
-- \
ginkgo \
--focus-regex='\[Conformance\]' \
--parallel=4 \
-- \
exec \
go test ./my/test/package
```
================================================
FILE: bmg.json
================================================
{
"binary_artifacts_only": true
}
================================================
FILE: cmd/kubetest2-eksapi/main.go
================================================
package main
import (
"github.com/aws/aws-k8s-tester/internal/deployers/eksapi"
"sigs.k8s.io/kubetest2/pkg/app"
)
func main() {
app.Main(eksapi.DeployerName, eksapi.NewDeployer)
}
================================================
FILE: cmd/kubetest2-eksapi-janitor/main.go
================================================
package main
import (
"context"
"flag"
"log/slog"
"os"
"time"
"github.com/aws/aws-k8s-tester/internal/deployers/eksapi"
)
func main() {
var maxResourceAge time.Duration
flag.DurationVar(&maxResourceAge, "max-resource-age", time.Hour*3, "Maximum resource age")
var workers int
flag.IntVar(&workers, "workers", 1, "number of workers to processes resources in parallel")
var stackStatus string
flag.StringVar(&stackStatus, "stack-status", "", "only process stacks with a specific status")
var emitMetrics bool
flag.BoolVar(&emitMetrics, "emit-metrics", false, "Send metrics to CloudWatch")
flag.Parse()
j := eksapi.NewJanitor(maxResourceAge, emitMetrics, workers, stackStatus)
if err := j.Sweep(context.Background()); err != nil {
slog.Error("failed to sweep resources", "error", err)
os.Exit(1)
}
}
================================================
FILE: cmd/kubetest2-eksctl/main.go
================================================
package main
import (
"github.com/aws/aws-k8s-tester/internal/deployers/eksctl"
"sigs.k8s.io/kubetest2/pkg/app"
)
func main() {
app.Main(eksctl.DeployerName, eksctl.NewDeployer)
}
================================================
FILE: cmd/kubetest2-tester-ginkgo-v1/main.go
================================================
package main
import (
"github.com/aws/aws-k8s-tester/internal/testers/ginkgov1"
)
func main() {
ginkgov1.Main()
}
================================================
FILE: cmd/kubetest2-tester-multi/main.go
================================================
package main
import "github.com/aws/aws-k8s-tester/internal/testers/multi"
func main() {
multi.Main()
}
================================================
FILE: external/tools.go
================================================
//go:build tools
// +build tools
package external
// this file allows us to declare direct dependencies on our required external tools.
// this file will not compile! that's expected.
import (
_ "sigs.k8s.io/kubetest2"
_ "sigs.k8s.io/kubetest2/kubetest2-tester-exec"
_ "sigs.k8s.io/kubetest2/kubetest2-tester-ginkgo"
)
================================================
FILE: go.mod
================================================
module github.com/aws/aws-k8s-tester
go 1.25.5
require (
github.com/aws/aws-sdk-go v1.55.8
github.com/aws/aws-sdk-go-v2 v1.41.1
github.com/aws/aws-sdk-go-v2/config v1.32.7
github.com/aws/aws-sdk-go-v2/service/autoscaling v1.62.5
github.com/aws/aws-sdk-go-v2/service/cloudformation v1.71.5
github.com/aws/aws-sdk-go-v2/service/cloudwatch v1.53.1
github.com/aws/aws-sdk-go-v2/service/ec2 v1.279.1
github.com/aws/aws-sdk-go-v2/service/eks v1.76.4
github.com/aws/aws-sdk-go-v2/service/iam v1.53.2
github.com/aws/aws-sdk-go-v2/service/s3 v1.95.1
github.com/aws/smithy-go v1.24.0
github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51
github.com/spf13/pflag v1.0.10
github.com/stretchr/testify v1.11.1
golang.org/x/exp v0.0.0-20251219203646-944ab1f22d93
k8s.io/api v0.35.0
k8s.io/apimachinery v0.35.0
k8s.io/client-go v0.35.0
k8s.io/klog v1.0.0
k8s.io/klog/v2 v2.130.1
sigs.k8s.io/controller-runtime v0.22.4
sigs.k8s.io/karpenter v1.8.0
sigs.k8s.io/kubetest2 v0.0.0-20260108084739-2f9a9397f033
)
require (
github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.7.4 // indirect
github.com/aws/aws-sdk-go-v2/internal/v4a v1.4.17 // indirect
github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.9.8 // indirect
github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.19.17 // indirect
github.com/awslabs/operatorpkg v0.0.0-20250909182303-e8e550b6f339 // indirect
github.com/evanphx/json-patch/v5 v5.9.11 // indirect
github.com/fxamacker/cbor/v2 v2.9.0 // indirect
github.com/go-logr/zapr v1.3.0 // indirect
github.com/mitchellh/hashstructure/v2 v2.0.2 // indirect
github.com/pkg/errors v0.9.1
github.com/robfig/cron/v3 v3.0.1 // indirect
github.com/samber/lo v1.51.0 // indirect
github.com/x448/float16 v0.8.4 // indirect
golang.org/x/crypto v0.46.0 // indirect
gomodules.xyz/jsonpatch/v2 v2.4.0 // indirect
k8s.io/apiextensions-apiserver v0.34.1 // indirect
)
require (
cloud.google.com/go v0.121.2 // indirect
cloud.google.com/go/compute/metadata v0.9.0 // indirect
cloud.google.com/go/iam v1.5.2 // indirect
cloud.google.com/go/storage v1.53.0 // indirect
cuelabs.dev/go/oci/ociregistry v0.0.0-20240404174027-a39bec0462d2 // indirect
cuelang.org/go v0.9.2 // indirect
dario.cat/mergo v1.0.2 // indirect
filippo.io/edwards25519 v1.1.0 // indirect
github.com/Azure/azure-sdk-for-go v68.0.0+incompatible // indirect
github.com/Azure/go-autorest v14.2.0+incompatible // indirect
github.com/Azure/go-autorest/autorest v0.11.29 // indirect
github.com/Azure/go-autorest/autorest/adal v0.9.23 // indirect
github.com/Azure/go-autorest/autorest/azure/auth v0.5.12 // indirect
github.com/Azure/go-autorest/autorest/azure/cli v0.4.6 // indirect
github.com/Azure/go-autorest/autorest/date v0.3.0 // indirect
github.com/Azure/go-autorest/logger v0.2.1 // indirect
github.com/Azure/go-autorest/tracing v0.6.0 // indirect
github.com/MakeNowJust/heredoc/v2 v2.0.1 // indirect
github.com/Microsoft/go-winio v0.6.2 // indirect
github.com/ProtonMail/go-crypto v1.1.6 // indirect
github.com/ThalesIgnite/crypto11 v1.2.5 // indirect
github.com/agnivade/levenshtein v1.2.1 // indirect
github.com/alibabacloud-go/alibabacloud-gateway-spi v0.0.4 // indirect
github.com/alibabacloud-go/cr-20160607 v1.0.1 // indirect
github.com/alibabacloud-go/cr-20181201 v1.0.10 // indirect
github.com/alibabacloud-go/darabonba-openapi v0.2.1 // indirect
github.com/alibabacloud-go/debug v1.0.0 // indirect
github.com/alibabacloud-go/endpoint-util v1.1.1 // indirect
github.com/alibabacloud-go/openapi-util v0.1.0 // indirect
github.com/alibabacloud-go/tea v1.2.2 // indirect
github.com/alibabacloud-go/tea-utils v1.4.5 // indirect
github.com/alibabacloud-go/tea-xml v1.1.3 // indirect
github.com/aliyun/credentials-go v1.3.2 // indirect
github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 // indirect
github.com/aws/aws-sdk-go-v2/credentials v1.19.7 // indirect
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.17 // indirect
github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.17 // indirect
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.17 // indirect
github.com/aws/aws-sdk-go-v2/internal/ini v1.8.4 // indirect
github.com/aws/aws-sdk-go-v2/service/ecr v1.36.2 // indirect
github.com/aws/aws-sdk-go-v2/service/ecrpublic v1.27.2 // indirect
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.4 // indirect
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.17 // indirect
github.com/aws/aws-sdk-go-v2/service/ssm v1.67.8
github.com/aws/aws-sdk-go-v2/service/sso v1.30.9 // indirect
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.35.13 // indirect
github.com/aws/aws-sdk-go-v2/service/sts v1.41.6 // indirect
github.com/awslabs/amazon-ecr-credential-helper/ecr-login v0.0.0-20240318154307-a1a918375412 // indirect
github.com/beorn7/perks v1.0.1 // indirect
github.com/blang/semver v3.5.1+incompatible // indirect
github.com/blang/semver/v4 v4.0.0 // indirect
github.com/buildkite/agent/v3 v3.81.0 // indirect
github.com/buildkite/go-pipeline v0.13.1 // indirect
github.com/buildkite/interpolate v0.1.3 // indirect
github.com/buildkite/roko v1.2.0 // indirect
github.com/cespare/xxhash/v2 v2.3.0 // indirect
github.com/chrismellard/docker-credential-acr-env v0.0.0-20230304212654-82a0ddb27589 // indirect
github.com/clbanning/mxj/v2 v2.7.0 // indirect
github.com/cloudflare/circl v1.6.3 // indirect
github.com/cockroachdb/apd/v3 v3.2.1 // indirect
github.com/common-nighthawk/go-figure v0.0.0-20210622060536-734e95fb86be // indirect
github.com/containerd/stargz-snapshotter/estargz v0.18.1 // indirect
github.com/coreos/go-oidc/v3 v3.17.0 // indirect
github.com/cyberphone/json-canonicalization v0.0.0-20231217050601-ba74d44ecf5f // indirect
github.com/cyphar/filepath-securejoin v0.4.1 // indirect
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect
github.com/digitorus/pkcs7 v0.0.0-20230818184609-3a137a874352 // indirect
github.com/digitorus/timestamp v0.0.0-20231217203849-220c5c2851b7 // indirect
github.com/dimchansky/utfbom v1.1.1 // indirect
github.com/docker/cli v29.0.3+incompatible // indirect
github.com/docker/distribution v2.8.3+incompatible // indirect
github.com/docker/docker-credential-helpers v0.9.3 // indirect
github.com/dustin/go-humanize v1.0.1 // indirect
github.com/emicklei/go-restful/v3 v3.12.2 // indirect
github.com/emicklei/proto v1.13.2 // indirect
github.com/emirpasic/gods v1.18.1 // indirect
github.com/felixge/httpsnoop v1.0.4 // indirect
github.com/fsnotify/fsnotify v1.9.0 // indirect
github.com/glebarez/go-sqlite v1.22.0 // indirect
github.com/go-chi/chi v4.1.2+incompatible // indirect
github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 // indirect
github.com/go-git/go-billy/v5 v5.8.0 // indirect
github.com/go-git/go-git/v5 v5.17.1 // indirect
github.com/go-ini/ini v1.67.0 // indirect
github.com/go-jose/go-jose/v3 v3.0.4 // indirect
github.com/go-logr/logr v1.4.3 // indirect
github.com/go-logr/stdr v1.2.2 // indirect
github.com/go-ole/go-ole v1.3.0 // indirect
github.com/go-openapi/analysis v0.23.0 // indirect
github.com/go-openapi/errors v0.22.1 // indirect
github.com/go-openapi/jsonpointer v0.21.0 // indirect
github.com/go-openapi/jsonreference v0.21.0 // indirect
github.com/go-openapi/loads v0.22.0 // indirect
github.com/go-openapi/runtime v0.28.0 // indirect
github.com/go-openapi/spec v0.21.0 // indirect
github.com/go-openapi/strfmt v0.23.0 // indirect
github.com/go-openapi/swag v0.23.0 // indirect
github.com/go-openapi/validate v0.24.0 // indirect
github.com/go-piv/piv-go v1.11.0 // indirect
github.com/gobwas/glob v0.2.3 // indirect
github.com/gogo/protobuf v1.3.2 // indirect
github.com/golang-jwt/jwt/v4 v4.5.2 // indirect
github.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8 // indirect
github.com/golang/snappy v0.0.4 // indirect
github.com/google/certificate-transparency-go v1.3.2-0.20250507091337-0eddb39e94f8 // indirect
github.com/google/gnostic-models v0.7.0 // indirect
github.com/google/go-cmp v0.7.0 // indirect
github.com/google/go-containerregistry v0.20.7 // indirect
github.com/google/go-github/v55 v55.0.0 // indirect
github.com/google/go-querystring v1.1.0 // indirect
github.com/google/licenseclassifier/v2 v2.0.0 // indirect
github.com/google/s2a-go v0.1.9 // indirect
github.com/google/uuid v1.6.0 // indirect
github.com/googleapis/enterprise-certificate-proxy v0.3.6 // indirect
github.com/googleapis/gax-go/v2 v2.15.0 // indirect
github.com/gorilla/mux v1.8.1 // indirect
github.com/hashicorp/go-cleanhttp v0.5.2 // indirect
github.com/hashicorp/go-retryablehttp v0.7.7 // indirect
github.com/in-toto/in-toto-golang v0.9.0 // indirect
github.com/inconshreveable/mousetrap v1.1.0 // indirect
github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 // indirect
github.com/jedisct1/go-minisign v0.0.0-20230811132847-661be99b8267 // indirect
github.com/jellydator/ttlcache/v3 v3.3.0 // indirect
github.com/jmespath/go-jmespath v0.4.1-0.20220621161143-b0104c826a24 // indirect
github.com/josharian/intern v1.0.0 // indirect
github.com/json-iterator/go v1.1.12 // indirect
github.com/kevinburke/ssh_config v1.2.0 // indirect
github.com/klauspost/compress v1.18.1 // indirect
github.com/knqyf263/go-rpmdb v0.1.0 // indirect
github.com/mailru/easyjson v0.9.0 // indirect
github.com/mattn/go-isatty v0.0.20 // indirect
github.com/miekg/pkcs11 v1.1.1 // indirect
github.com/mitchellh/go-homedir v1.1.0 // indirect
github.com/mitchellh/go-wordwrap v1.0.1 // indirect
github.com/mitchellh/mapstructure v1.5.0 // indirect
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
github.com/modern-go/reflect2 v1.0.3-0.20250322232337-35a7c28c31ee // indirect
github.com/mozillazg/docker-credential-acr-helper v0.4.0 // indirect
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect
github.com/ncruces/go-strftime v0.1.9 // indirect
github.com/nozzle/throttler v0.0.0-20180817012639-2ea982251481 // indirect
github.com/oklog/ulid v1.3.1 // indirect
github.com/oleiade/reflections v1.1.0 // indirect
github.com/open-policy-agent/opa v1.4.0 // indirect
github.com/opencontainers/go-digest v1.0.0 // indirect
github.com/opencontainers/image-spec v1.1.1 // indirect
github.com/opentracing/opentracing-go v1.2.0 // indirect
github.com/package-url/packageurl-go v0.1.2 // indirect
github.com/pborman/uuid v1.2.1 // indirect
github.com/pelletier/go-toml/v2 v2.2.4 // indirect
github.com/pjbgf/sha1cd v0.3.2 // indirect
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect
github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55 // indirect
github.com/prometheus/client_golang v1.23.2 // indirect
github.com/prometheus/client_model v0.6.2 // indirect
github.com/prometheus/common v0.66.1 // indirect
github.com/prometheus/procfs v0.17.0 // indirect
github.com/protocolbuffers/txtpbfmt v0.0.0-20240116145035-ef3ab179eed6 // indirect
github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 // indirect
github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec // indirect
github.com/rogpeppe/go-internal v1.14.1 // indirect
github.com/sagikazarmark/locafero v0.9.0 // indirect
github.com/sassoftware/relic v7.2.1+incompatible // indirect
github.com/secure-systems-lab/go-securesystemslib v0.10.0 // indirect
github.com/sergi/go-diff v1.4.0 // indirect
github.com/shibumi/go-pathspec v1.3.0 // indirect
github.com/shirou/gopsutil/v3 v3.24.5 // indirect
github.com/sigstore/cosign/v2 v2.4.1 // indirect
github.com/sigstore/fulcio v1.6.3 // indirect
github.com/sigstore/rekor v1.3.9 // indirect
github.com/sigstore/sigstore v1.10.3 // indirect
github.com/sigstore/timestamp-authority v1.2.2 // indirect
github.com/sirupsen/logrus v1.9.3 // indirect
github.com/skeema/knownhosts v1.3.1 // indirect
github.com/sourcegraph/conc v0.3.0 // indirect
github.com/spf13/afero v1.15.0 // indirect
github.com/spf13/cast v1.9.2 // indirect
github.com/spf13/cobra v1.10.2 // indirect
github.com/spf13/viper v1.20.1 // indirect
github.com/spiffe/go-spiffe/v2 v2.6.0 // indirect
github.com/subosito/gotenv v1.6.0 // indirect
github.com/syndtr/goleveldb v1.0.1-0.20220721030215-126854af5e6d // indirect
github.com/tchap/go-patricia/v2 v2.3.2 // indirect
github.com/thales-e-security/pool v0.0.2 // indirect
github.com/theupdateframework/go-tuf v0.7.0 // indirect
github.com/tjfoc/gmsm v1.4.1 // indirect
github.com/transparency-dev/merkle v0.0.2 // indirect
github.com/vbatts/tar-split v0.12.2 // indirect
github.com/xanzy/go-gitlab v0.109.0 // indirect
github.com/xanzy/ssh-agent v0.3.3 // indirect
github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb // indirect
github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 // indirect
github.com/yashtewari/glob-intersection v0.2.0 // indirect
github.com/yusufpapurcu/wmi v1.2.4 // indirect
gitlab.alpinelinux.org/alpine/go v0.10.0 // indirect
go.mongodb.org/mongo-driver v1.17.2 // indirect
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.63.0 // indirect
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.63.0 // indirect
go.opentelemetry.io/otel v1.39.0 // indirect
go.opentelemetry.io/otel/metric v1.39.0 // indirect
go.opentelemetry.io/otel/sdk v1.39.0 // indirect
go.opentelemetry.io/otel/trace v1.39.0 // indirect
go.step.sm/crypto v0.57.0 // indirect
go.uber.org/multierr v1.11.0 // indirect
go.uber.org/zap v1.27.0 // indirect
golang.org/x/mod v0.31.0 // indirect
golang.org/x/net v0.48.0 // indirect
golang.org/x/oauth2 v0.34.0 // indirect
golang.org/x/sync v0.19.0 // indirect
golang.org/x/sys v0.39.0 // indirect
golang.org/x/term v0.38.0 // indirect
golang.org/x/text v0.32.0 // indirect
golang.org/x/time v0.13.0 // indirect
golang.org/x/tools/go/vcs v0.1.0-deprecated // indirect
golang.org/x/xerrors v0.0.0-20240716161551-93cc26a95ae9 // indirect
google.golang.org/api v0.242.0 // indirect
google.golang.org/genproto v0.0.0-20250603155806-513f23925822 // indirect
google.golang.org/genproto/googleapis/api v0.0.0-20251202230838-ff82c1b0f217 // indirect
google.golang.org/genproto/googleapis/rpc v0.0.0-20251202230838-ff82c1b0f217 // indirect
google.golang.org/grpc v1.79.3 // indirect
google.golang.org/protobuf v1.36.10 // indirect
gopkg.in/inf.v0 v0.9.1 // indirect
gopkg.in/ini.v1 v1.67.0 // indirect
gopkg.in/warnings.v0 v0.1.2 // indirect
gopkg.in/yaml.v2 v2.4.0 // indirect
gopkg.in/yaml.v3 v3.0.1 // indirect
k8s.io/kube-openapi v0.0.0-20250910181357-589584f1c912 // indirect
k8s.io/release v0.18.0 // indirect
k8s.io/utils v0.0.0-20260108192941-914a6e750570
modernc.org/libc v1.45.2 // indirect
modernc.org/mathutil v1.6.0 // indirect
modernc.org/memory v1.7.2 // indirect
modernc.org/sqlite v1.29.5 // indirect
sigs.k8s.io/bom v0.6.0 // indirect
sigs.k8s.io/json v0.0.0-20250730193827-2d320260d730 // indirect
sigs.k8s.io/promo-tools/v3 v3.6.0 // indirect
sigs.k8s.io/release-sdk v0.12.2 // indirect
sigs.k8s.io/release-utils v0.12.0 // indirect
sigs.k8s.io/yaml v1.6.0
)
require (
github.com/urfave/sflags v0.4.1
github.com/weaveworks/eksctl v0.221.0
k8s.io/cli-runtime v0.35.0
k8s.io/cloud-provider-aws v1.35.0
sigs.k8s.io/e2e-framework v0.6.1-0.20250909060333-8677714ff9a6 // bump version once https://github.com/kubernetes-sigs/e2e-framework/pull/517 gets released
)
require (
cel.dev/expr v0.25.1 // indirect
cloud.google.com/go/auth v0.16.5 // indirect
cloud.google.com/go/auth/oauth2adapt v0.2.8 // indirect
cloud.google.com/go/monitoring v1.24.2 // indirect
github.com/AliyunContainerService/ack-ram-tool/pkg/credentials/provider v0.14.0 // indirect
github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.30.0 // indirect
github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric v0.51.0 // indirect
github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.51.0 // indirect
github.com/avast/retry-go/v4 v4.6.1 // indirect
github.com/aws/aws-sdk-go-v2/service/cloudtrail v1.55.1 // indirect
github.com/aws/aws-sdk-go-v2/service/cloudwatchlogs v1.61.1 // indirect
github.com/aws/aws-sdk-go-v2/service/elasticloadbalancing v1.33.15 // indirect
github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 v1.54.2 // indirect
github.com/aws/aws-sdk-go-v2/service/kms v1.47.1 // indirect
github.com/aws/aws-sdk-go-v2/service/outposts v1.57.8 // indirect
github.com/aws/aws-sdk-go-v2/service/signin v1.0.5 // indirect
github.com/cenkalti/backoff/v5 v5.0.3 // indirect
github.com/cncf/xds/go v0.0.0-20251210132809-ee656c7534f5 // indirect
github.com/envoyproxy/go-control-plane/envoy v1.36.0 // indirect
github.com/envoyproxy/protoc-gen-validate v1.3.0 // indirect
github.com/fatih/color v1.18.0 // indirect
github.com/go-errors/errors v1.5.1 // indirect
github.com/go-jose/go-jose/v4 v4.1.3 // indirect
github.com/go-resty/resty/v2 v2.16.5 // indirect
github.com/go-viper/mapstructure/v2 v2.4.0 // indirect
github.com/google/btree v1.1.3 // indirect
github.com/google/go-github/v60 v60.0.0 // indirect
github.com/gorilla/websocket v1.5.4-0.20250319132907-e064f32e3674 // indirect
github.com/hashicorp/go-version v1.7.0 // indirect
github.com/in-toto/attestation v1.1.0 // indirect
github.com/kris-nova/logger v0.2.2 // indirect
github.com/mattn/go-colorable v0.1.14 // indirect
github.com/mattn/go-runewidth v0.0.16 // indirect
github.com/miekg/dns v1.1.61 // indirect
github.com/moby/spdystream v0.5.0 // indirect
github.com/monochromegane/go-gitignore v0.0.0-20200626010858-205db1a8cc00 // indirect
github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f // indirect
github.com/octago/sflags v0.3.1 // indirect
github.com/olekukonko/errors v0.0.0-20250405072817-4e6d85265da6 // indirect
github.com/olekukonko/ll v0.0.8 // indirect
github.com/olekukonko/tablewriter v1.0.8 // indirect
github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c // indirect
github.com/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10 // indirect
github.com/rivo/uniseg v0.4.7 // indirect
github.com/sigstore/protobuf-specs v0.5.0 // indirect
github.com/sigstore/sigstore-go v0.6.1 // indirect
github.com/stretchr/objx v0.5.2 // indirect
github.com/theupdateframework/go-tuf/v2 v2.3.1 // indirect
github.com/vladimirvivien/gexe v0.5.0 // indirect
github.com/xlab/treeprint v1.2.0 // indirect
go.opentelemetry.io/auto/sdk v1.2.1 // indirect
go.opentelemetry.io/contrib/detectors/gcp v1.39.0 // indirect
go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.38.0 // indirect
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.38.0 // indirect
go.opentelemetry.io/otel/sdk/metric v1.39.0 // indirect
go.yaml.in/yaml/v2 v2.4.3 // indirect
go.yaml.in/yaml/v3 v3.0.4 // indirect
gopkg.in/evanphx/json-patch.v4 v4.13.0 // indirect
gopkg.in/gcfg.v1 v1.2.3 // indirect
k8s.io/cloud-provider v0.35.0 // indirect
k8s.io/component-base v0.35.0 // indirect
k8s.io/kubelet v0.35.0 // indirect
sigs.k8s.io/kustomize/api v0.20.1 // indirect
sigs.k8s.io/kustomize/kyaml v0.20.1 // indirect
sigs.k8s.io/randfill v1.0.0 // indirect
sigs.k8s.io/structured-merge-diff/v6 v6.3.0 // indirect
)
================================================
FILE: go.sum
================================================
cel.dev/expr v0.25.1 h1:1KrZg61W6TWSxuNZ37Xy49ps13NUovb66QLprthtwi4=
cel.dev/expr v0.25.1/go.mod h1:hrXvqGP6G6gyx8UAHSHJ5RGk//1Oj5nXQ2NI02Nrsg4=
cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
cloud.google.com/go v0.121.2 h1:v2qQpN6Dx9x2NmwrqlesOt3Ys4ol5/lFZ6Mg1B7OJCg=
cloud.google.com/go v0.121.2/go.mod h1:nRFlrHq39MNVWu+zESP2PosMWA0ryJw8KUBZ2iZpxbw=
cloud.google.com/go/auth v0.16.5 h1:mFWNQ2FEVWAliEQWpAdH80omXFokmrnbDhUS9cBywsI=
cloud.google.com/go/auth v0.16.5/go.mod h1:utzRfHMP+Vv0mpOkTRQoWD2q3BatTOoWbA7gCc2dUhQ=
cloud.google.com/go/auth/oauth2adapt v0.2.8 h1:keo8NaayQZ6wimpNSmW5OPc283g65QNIiLpZnkHRbnc=
cloud.google.com/go/auth/oauth2adapt v0.2.8/go.mod h1:XQ9y31RkqZCcwJWNSx2Xvric3RrU88hAYYbjDWYDL+c=
cloud.google.com/go/compute/metadata v0.9.0 h1:pDUj4QMoPejqq20dK0Pg2N4yG9zIkYGdBtwLoEkH9Zs=
cloud.google.com/go/compute/metadata v0.9.0/go.mod h1:E0bWwX5wTnLPedCKqk3pJmVgCBSM6qQI1yTBdEb3C10=
cloud.google.com/go/iam v1.5.2 h1:qgFRAGEmd8z6dJ/qyEchAuL9jpswyODjA2lS+w234g8=
cloud.google.com/go/iam v1.5.2/go.mod h1:SE1vg0N81zQqLzQEwxL2WI6yhetBdbNQuTvIKCSkUHE=
cloud.google.com/go/kms v1.22.0 h1:dBRIj7+GDeeEvatJeTB19oYZNV0aj6wEqSIT/7gLqtk=
cloud.google.com/go/kms v1.22.0/go.mod h1:U7mf8Sva5jpOb4bxYZdtw/9zsbIjrklYwPcvMk34AL8=
cloud.google.com/go/logging v1.13.0 h1:7j0HgAp0B94o1YRDqiqm26w4q1rDMH7XNRU34lJXHYc=
cloud.google.com/go/logging v1.13.0/go.mod h1:36CoKh6KA/M0PbhPKMq6/qety2DCAErbhXT62TuXALA=
cloud.google.com/go/longrunning v0.6.7 h1:IGtfDWHhQCgCjwQjV9iiLnUta9LBCo8R9QmAFsS/PrE=
cloud.google.com/go/longrunning v0.6.7/go.mod h1:EAFV3IZAKmM56TyiE6VAP3VoTzhZzySwI/YI1s/nRsY=
cloud.google.com/go/monitoring v1.24.2 h1:5OTsoJ1dXYIiMiuL+sYscLc9BumrL3CarVLL7dd7lHM=
cloud.google.com/go/monitoring v1.24.2/go.mod h1:x7yzPWcgDRnPEv3sI+jJGBkwl5qINf+6qY4eq0I9B4U=
cloud.google.com/go/storage v1.53.0 h1:gg0ERZwL17pJ+Cz3cD2qS60w1WMDnwcm5YPAIQBHUAw=
cloud.google.com/go/storage v1.53.0/go.mod h1:7/eO2a/srr9ImZW9k5uufcNahT2+fPb8w5it1i5boaA=
cloud.google.com/go/trace v1.11.6 h1:2O2zjPzqPYAHrn3OKl029qlqG6W8ZdYaOWRyr8NgMT4=
cloud.google.com/go/trace v1.11.6/go.mod h1:GA855OeDEBiBMzcckLPE2kDunIpC72N+Pq8WFieFjnI=
cuelabs.dev/go/oci/ociregistry v0.0.0-20240404174027-a39bec0462d2 h1:BnG6pr9TTr6CYlrJznYUDj6V7xldD1W+1iXPum0wT/w=
cuelabs.dev/go/oci/ociregistry v0.0.0-20240404174027-a39bec0462d2/go.mod h1:pK23AUVXuNzzTpfMCA06sxZGeVQ/75FdVtW249de9Uo=
cuelang.org/go v0.9.2 h1:pfNiry2PdRBr02G/aKm5k2vhzmqbAOoaB4WurmEbWvs=
cuelang.org/go v0.9.2/go.mod h1:qpAYsLOf7gTM1YdEg6cxh553uZ4q9ZDWlPbtZr9q1Wk=
dario.cat/mergo v1.0.2 h1:85+piFYR1tMbRrLcDwR18y4UKJ3aH1Tbzi24VRW1TK8=
dario.cat/mergo v1.0.2/go.mod h1:E/hbnu0NxMFBjpMIE34DRGLWqDy0g5FuKDhCb31ngxA=
filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA=
filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4=
github.com/AdamKorcz/go-fuzz-headers-1 v0.0.0-20230919221257-8b5d3ce2d11d h1:zjqpY4C7H15HjRPEenkS4SAn3Jy2eRRjkjZbGR30TOg=
github.com/AdamKorcz/go-fuzz-headers-1 v0.0.0-20230919221257-8b5d3ce2d11d/go.mod h1:XNqJ7hv2kY++g8XEHREpi+JqZo3+0l+CH2egBVN4yqM=
github.com/AliyunContainerService/ack-ram-tool/pkg/credentials/provider v0.14.0 h1:kcnfY4vljxXliXDBrA9K9lwF8IoEZ4Up6Eg9kWTIm28=
github.com/AliyunContainerService/ack-ram-tool/pkg/credentials/provider v0.14.0/go.mod h1:tlqp9mUGbsP+0z3Q+c0Q5MgSdq/OMwQhm5bffR3Q3ss=
github.com/Azure/azure-sdk-for-go v68.0.0+incompatible h1:fcYLmCpyNYRnvJbPerq7U0hS+6+I79yEDJBqVNcqUzU=
github.com/Azure/azure-sdk-for-go v68.0.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc=
github.com/Azure/azure-sdk-for-go/sdk/azcore v1.18.0 h1:Gt0j3wceWMwPmiazCa8MzMA0MfhmPIz0Qp0FJ6qcM0U=
github.com/Azure/azure-sdk-for-go/sdk/azcore v1.18.0/go.mod h1:Ot/6aikWnKWi4l9QB7qVSwa8iMphQNqkWALMoNT3rzM=
github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.10.1 h1:B+blDbyVIG3WaikNxPnhPiJ1MThR03b3vKGtER95TP4=
github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.10.1/go.mod h1:JdM5psgjfBf5fo2uWOZhflPWyDBZ/O/CNAH9CtsuZE4=
github.com/Azure/azure-sdk-for-go/sdk/internal v1.11.1 h1:FPKJS1T+clwv+OLGt13a8UjqeRuh0O4SJ3lUriThc+4=
github.com/Azure/azure-sdk-for-go/sdk/internal v1.11.1/go.mod h1:j2chePtV91HrC22tGoRX3sGY42uF13WzmmV80/OdVAA=
github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/azkeys v1.3.0 h1:7rKG7UmnrxX4N53TFhkYqjc+kVUZuw0fL8I3Fh+Ld9E=
github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/azkeys v1.3.0/go.mod h1:Wjo+24QJVhhl/L7jy6w9yzFF2yDOf3cKECAa8ecf9vE=
github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/internal v1.1.0 h1:eXnN9kaS8TiDwXjoie3hMRLuwdUBUMW9KRgOqB3mCaw=
github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/internal v1.1.0/go.mod h1:XIpam8wumeZ5rVMuhdDQLMfIPDf1WO3IzrCRO3e3e3o=
github.com/Azure/go-ansiterm v0.0.0-20250102033503-faa5f7b0171c h1:udKWzYgxTojEKWjV8V+WSxDXJ4NFATAsZjh8iIbsQIg=
github.com/Azure/go-ansiterm v0.0.0-20250102033503-faa5f7b0171c/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E=
github.com/Azure/go-autorest v14.2.0+incompatible h1:V5VMDjClD3GiElqLWO7mz2MxNAK/vTfRHdAubSIPRgs=
github.com/Azure/go-autorest v14.2.0+incompatible/go.mod h1:r+4oMnoxhatjLLJ6zxSWATqVooLgysK6ZNox3g/xq24=
github.com/Azure/go-autorest/autorest v0.11.24/go.mod h1:G6kyRlFnTuSbEYkQGawPfsCswgme4iYf6rfSKUDzbCc=
github.com/Azure/go-autorest/autorest v0.11.29 h1:I4+HL/JDvErx2LjyzaVxllw2lRDB5/BT2Bm4g20iqYw=
github.com/Azure/go-autorest/autorest v0.11.29/go.mod h1:ZtEzC4Jy2JDrZLxvWs8LrBWEBycl1hbT1eknI8MtfAs=
github.com/Azure/go-autorest/autorest/adal v0.9.18/go.mod h1:XVVeme+LZwABT8K5Lc3hA4nAe8LDBVle26gTrguhhPQ=
github.com/Azure/go-autorest/autorest/adal v0.9.22/go.mod h1:XuAbAEUv2Tta//+voMI038TrJBqjKam0me7qR+L8Cmk=
github.com/Azure/go-autorest/autorest/adal v0.9.23 h1:Yepx8CvFxwNKpH6ja7RZ+sKX+DWYNldbLiALMC3BTz8=
github.com/Azure/go-autorest/autorest/adal v0.9.23/go.mod h1:5pcMqFkdPhviJdlEy3kC/v1ZLnQl0MH6XA5YCcMhy4c=
github.com/Azure/go-autorest/autorest/azure/auth v0.5.12 h1:wkAZRgT/pn8HhFyzfe9UnqOjJYqlembgCTi72Bm/xKk=
github.com/Azure/go-autorest/autorest/azure/auth v0.5.12/go.mod h1:84w/uV8E37feW2NCJ08uT9VBfjfUHpgLVnG2InYD6cg=
github.com/Azure/go-autorest/autorest/azure/cli v0.4.5/go.mod h1:ADQAXrkgm7acgWVUNamOgh8YNrv4p27l3Wc55oVfpzg=
github.com/Azure/go-autorest/autorest/azure/cli v0.4.6 h1:w77/uPk80ZET2F+AfQExZyEWtn+0Rk/uw17m9fv5Ajc=
github.com/Azure/go-autorest/autorest/azure/cli v0.4.6/go.mod h1:piCfgPho7BiIDdEQ1+g4VmKyD5y+p/XtSNqE6Hc4QD0=
github.com/Azure/go-autorest/autorest/date v0.3.0 h1:7gUk1U5M/CQbp9WoqinNzJar+8KY+LPI6wiWrP/myHw=
github.com/Azure/go-autorest/autorest/date v0.3.0/go.mod h1:BI0uouVdmngYNUzGWeSYnokU+TrmwEsOqdt8Y6sso74=
github.com/Azure/go-autorest/autorest/mocks v0.4.1/go.mod h1:LTp+uSrOhSkaKrUy935gNZuuIPPVsHlr9DSOxSayd+k=
github.com/Azure/go-autorest/autorest/mocks v0.4.2 h1:PGN4EDXnuQbojHbU0UWoNvmu9AGVwYHG9/fkDYhtAfw=
github.com/Azure/go-autorest/autorest/mocks v0.4.2/go.mod h1:Vy7OitM9Kei0i1Oj+LvyAWMXJHeKH1MVlzFugfVrmyU=
github.com/Azure/go-autorest/logger v0.2.1 h1:IG7i4p/mDa2Ce4TRyAO8IHnVhAVF3RFU+ZtXWSmf4Tg=
github.com/Azure/go-autorest/logger v0.2.1/go.mod h1:T9E3cAhj2VqvPOtCYAvby9aBXkZmbF5NWuPV8+WeEW8=
github.com/Azure/go-autorest/tracing v0.6.0 h1:TYi4+3m5t6K48TGI9AUdb+IzbnSxvnvUMfuitfgcfuo=
github.com/Azure/go-autorest/tracing v0.6.0/go.mod h1:+vhtPC754Xsa23ID7GlGsrdKBpUA79WCAKPPZVC2DeU=
github.com/AzureAD/microsoft-authentication-library-for-go v1.4.2 h1:oygO0locgZJe7PpYPXT5A29ZkwJaPqcva7BVeemZOZs=
github.com/AzureAD/microsoft-authentication-library-for-go v1.4.2/go.mod h1:wP83P5OoQ5p6ip3ScPr0BAq0BvuPAvacpEuSzyouqAI=
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.30.0 h1:sBEjpZlNHzK1voKq9695PJSX2o5NEXl7/OL3coiIY0c=
github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.30.0/go.mod h1:P4WPRUkOhJC13W//jWpyfJNDAIpvRbAUIYLX/4jtlE0=
github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric v0.51.0 h1:fYE9p3esPxA/C0rQ0AHhP0drtPXDRhaWiwg1DPqO7IU=
github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric v0.51.0/go.mod h1:BnBReJLvVYx2CS/UHOgVz2BXKXD9wsQPxZug20nZhd0=
github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/cloudmock v0.51.0 h1:OqVGm6Ei3x5+yZmSJG1Mh2NwHvpVmZ08CB5qJhT9Nuk=
github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/cloudmock v0.51.0/go.mod h1:SZiPHWGOOk3bl8tkevxkoiwPgsIl6CwrWcbwjfHZpdM=
github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.51.0 h1:6/0iUd0xrnX7qt+mLNRwg5c0PGv8wpE8K90ryANQwMI=
github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.51.0/go.mod h1:otE2jQekW/PqXk1Awf5lmfokJx4uwuqcj1ab5SpGeW0=
github.com/MakeNowJust/heredoc/v2 v2.0.1 h1:rlCHh70XXXv7toz95ajQWOWQnN4WNLt0TdpZYIR/J6A=
github.com/MakeNowJust/heredoc/v2 v2.0.1/go.mod h1:6/2Abh5s+hc3g9nbWLe9ObDIOhaRrqsyY9MWy+4JdRM=
github.com/Masterminds/semver/v3 v3.4.0 h1:Zog+i5UMtVoCU8oKka5P7i9q9HgrJeGzI9SA1Xbatp0=
github.com/Masterminds/semver/v3 v3.4.0/go.mod h1:4V+yj/TJE1HU9XfppCwVMZq3I84lprf4nC11bSS5beM=
github.com/Microsoft/go-winio v0.5.2/go.mod h1:WpS1mjBmmwHBEWmogvA2mj8546UReBk4v8QkMxJ6pZY=
github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERoyfY=
github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU=
github.com/Pallinder/go-randomdata v1.2.0 h1:DZ41wBchNRb/0GfsePLiSwb0PHZmT67XY00lCDlaYPg=
github.com/Pallinder/go-randomdata v1.2.0/go.mod h1:yHmJgulpD2Nfrm0cR9tI/+oAgRqCQQixsA8HyRZfV9Y=
github.com/ProtonMail/go-crypto v1.1.6 h1:ZcV+Ropw6Qn0AX9brlQLAUXfqLBc7Bl+f/DmNxpLfdw=
github.com/ProtonMail/go-crypto v1.1.6/go.mod h1:rA3QumHc/FZ8pAHreoekgiAbzpNsfQAosU5td4SnOrE=
github.com/ThalesIgnite/crypto11 v1.2.5 h1:1IiIIEqYmBvUYFeMnHqRft4bwf/O36jryEUpY+9ef8E=
github.com/ThalesIgnite/crypto11 v1.2.5/go.mod h1:ILDKtnCKiQ7zRoNxcp36Y1ZR8LBPmR2E23+wTQe/MlE=
github.com/agnivade/levenshtein v1.2.1 h1:EHBY3UOn1gwdy/VbFwgo4cxecRznFk7fKWN1KOX7eoM=
github.com/agnivade/levenshtein v1.2.1/go.mod h1:QVVI16kDrtSuwcpd0p1+xMC6Z/VfhtCyDIjcwga4/DU=
github.com/alessio/shellescape v1.4.1 h1:V7yhSDDn8LP4lc4jS8pFkt0zCnzVJlG5JXy9BVKJUX0=
github.com/alessio/shellescape v1.4.1/go.mod h1:PZAiSCk0LJaZkiCSkPv8qIobYglO3FPpyFjDCtHLS30=
github.com/alibabacloud-go/alibabacloud-gateway-spi v0.0.2/go.mod h1:sCavSAvdzOjul4cEqeVtvlSaSScfNsTQ+46HwlTL1hc=
github.com/alibabacloud-go/alibabacloud-gateway-spi v0.0.4 h1:iC9YFYKDGEy3n/FtqJnOkZsene9olVspKmkX5A2YBEo=
github.com/alibabacloud-go/alibabacloud-gateway-spi v0.0.4/go.mod h1:sCavSAvdzOjul4cEqeVtvlSaSScfNsTQ+46HwlTL1hc=
github.com/alibabacloud-go/cr-20160607 v1.0.1 h1:WEnP1iPFKJU74ryUKh/YDPHoxMZawqlPajOymyNAkts=
github.com/alibabacloud-go/cr-20160607 v1.0.1/go.mod h1:QHeKZtZ3F3FOE+/uIXCBAp8POwnUYekpLwr1dtQa5r0=
github.com/alibabacloud-go/cr-20181201 v1.0.10 h1:B60f6S1imsgn2fgC6X6FrVNrONDrbCT0NwYhsJ0C9/c=
github.com/alibabacloud-go/cr-20181201 v1.0.10/go.mod h1:VN9orB/w5G20FjytoSpZROqu9ZqxwycASmGqYUJSoDc=
github.com/alibabacloud-go/darabonba-openapi v0.1.12/go.mod h1:sTAjsFJmVsmcVeklL9d9uDBlFsgl43wZ6jhI6BHqHqU=
github.com/alibabacloud-go/darabonba-openapi v0.1.14/go.mod h1:w4CosR7O/kapCtEEMBm3JsQqWBU/CnZ2o0pHorsTWDI=
github.com/alibabacloud-go/darabonba-openapi v0.2.1 h1:WyzxxKvhdVDlwpAMOHgAiCJ+NXa6g5ZWPFEzaK/ewwY=
github.com/alibabacloud-go/darabonba-openapi v0.2.1/go.mod h1:zXOqLbpIqq543oioL9IuuZYOQgHQ5B8/n5OPrnko8aY=
github.com/alibabacloud-go/darabonba-string v1.0.0/go.mod h1:93cTfV3vuPhhEwGGpKKqhVW4jLe7tDpo3LUM0i0g6mA=
github.com/alibabacloud-go/debug v0.0.0-20190504072949-9472017b5c68/go.mod h1:6pb/Qy8c+lqua8cFpEy7g39NRRqOWc3rOwAy8m5Y2BY=
github.com/alibabacloud-go/debug v1.0.0 h1:3eIEQWfay1fB24PQIEzXAswlVJtdQok8f3EVN5VrBnA=
github.com/alibabacloud-go/debug v1.0.0/go.mod h1:8gfgZCCAC3+SCzjWtY053FrOcd4/qlH6IHTI4QyICOc=
github.com/alibabacloud-go/endpoint-util v1.1.0/go.mod h1:O5FuCALmCKs2Ff7JFJMudHs0I5EBgecXXxZRyswlEjE=
github.com/alibabacloud-go/endpoint-util v1.1.1 h1:ZkBv2/jnghxtU0p+upSU0GGzW1VL9GQdZO3mcSUTUy8=
github.com/alibabacloud-go/endpoint-util v1.1.1/go.mod h1:O5FuCALmCKs2Ff7JFJMudHs0I5EBgecXXxZRyswlEjE=
github.com/alibabacloud-go/openapi-util v0.0.9/go.mod h1:sQuElr4ywwFRlCCberQwKRFhRzIyG4QTP/P4y1CJ6Ws=
github.com/alibabacloud-go/openapi-util v0.0.10/go.mod h1:sQuElr4ywwFRlCCberQwKRFhRzIyG4QTP/P4y1CJ6Ws=
github.com/alibabacloud-go/openapi-util v0.0.11/go.mod h1:sQuElr4ywwFRlCCberQwKRFhRzIyG4QTP/P4y1CJ6Ws=
github.com/alibabacloud-go/openapi-util v0.1.0 h1:0z75cIULkDrdEhkLWgi9tnLe+KhAFE/r5Pb3312/eAY=
github.com/alibabacloud-go/openapi-util v0.1.0/go.mod h1:sQuElr4ywwFRlCCberQwKRFhRzIyG4QTP/P4y1CJ6Ws=
github.com/alibabacloud-go/tea v1.1.0/go.mod h1:IkGyUSX4Ba1V+k4pCtJUc6jDpZLFph9QMy2VUPTwukg=
github.com/alibabacloud-go/tea v1.1.7/go.mod h1:/tmnEaQMyb4Ky1/5D+SE1BAsa5zj/KeGOFfwYm3N/p4=
github.com/alibabacloud-go/tea v1.1.8/go.mod h1:/tmnEaQMyb4Ky1/5D+SE1BAsa5zj/KeGOFfwYm3N/p4=
github.com/alibabacloud-go/tea v1.1.11/go.mod h1:/tmnEaQMyb4Ky1/5D+SE1BAsa5zj/KeGOFfwYm3N/p4=
github.com/alibabacloud-go/tea v1.1.17/go.mod h1:nXxjm6CIFkBhwW4FQkNrolwbfon8Svy6cujmKFUq98A=
github.com/alibabacloud-go/tea v1.1.19/go.mod h1:nXxjm6CIFkBhwW4FQkNrolwbfon8Svy6cujmKFUq98A=
github.com/alibabacloud-go/tea v1.2.2 h1:aTsR6Rl3ANWPfqeQugPglfurloyBJY85eFy7Gc1+8oU=
github.com/alibabacloud-go/tea v1.2.2/go.mod h1:CF3vOzEMAG+bR4WOql8gc2G9H3EkH3ZLAQdpmpXMgwk=
github.com/alibabacloud-go/tea-utils v1.3.1/go.mod h1:EI/o33aBfj3hETm4RLiAxF/ThQdSngxrpF8rKUDJjPE=
github.com/alibabacloud-go/tea-utils v1.3.9/go.mod h1:EI/o33aBfj3hETm4RLiAxF/ThQdSngxrpF8rKUDJjPE=
github.com/alibabacloud-go/tea-utils v1.4.3/go.mod h1:KNcT0oXlZZxOXINnZBs6YvgOd5aYp9U67G+E3R8fcQw=
github.com/alibabacloud-go/tea-utils v1.4.5 h1:h0/6Xd2f3bPE4XHTvkpjwxowIwRCJAJOqY6Eq8f3zfA=
github.com/alibabacloud-go/tea-utils v1.4.5/go.mod h1:KNcT0oXlZZxOXINnZBs6YvgOd5aYp9U67G+E3R8fcQw=
github.com/alibabacloud-go/tea-xml v1.1.2/go.mod h1:Rq08vgCcCAjHyRi/M7xlHKUykZCEtyBy9+DPF6GgEu8=
github.com/alibabacloud-go/tea-xml v1.1.3 h1:7LYnm+JbOq2B+T/B0fHC4Ies4/FofC4zHzYtqw7dgt0=
github.com/alibabacloud-go/tea-xml v1.1.3/go.mod h1:Rq08vgCcCAjHyRi/M7xlHKUykZCEtyBy9+DPF6GgEu8=
github.com/aliyun/credentials-go v1.1.2/go.mod h1:ozcZaMR5kLM7pwtCMEpVmQ242suV6qTJya2bDq4X1Tw=
github.com/aliyun/credentials-go v1.3.2 h1:L4WppI9rctC8PdlMgyTkF8bBsy9pyKQEzBD1bHMRl+g=
github.com/aliyun/credentials-go v1.3.2/go.mod h1:tlpz4uys4Rn7Ik4/piGRrTbXy2uLKvePgQJJduE+Y5c=
github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be h1:9AeTilPcZAjCFIImctFaOjnTIavg87rW78vTPkQqLI8=
github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be/go.mod h1:ySMOLuWl6zY27l47sB3qLNK6tF2fkHG55UZxx8oIVo4=
github.com/arbovm/levenshtein v0.0.0-20160628152529-48b4e1c0c4d0 h1:jfIu9sQUG6Ig+0+Ap1h4unLjW6YQJpKZVmUzxsD4E/Q=
github.com/arbovm/levenshtein v0.0.0-20160628152529-48b4e1c0c4d0/go.mod h1:t2tdKJDJF9BV14lnkjHmOQgcvEKgtqs5a1N3LNdJhGE=
github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPdPJAN/hZIm0C4OItdklCFmMRWYpio=
github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs=
github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 h1:DklsrG3dyBCFEj5IhUbnKptjxatkF07cF2ak3yi77so=
github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2/go.mod h1:WaHUgvxTVq04UNunO+XhnAqY/wQc+bxr74GqbsZ/Jqw=
github.com/atotto/clipboard v0.1.4 h1:EH0zSVneZPSuFR11BlR9YppQTVDbh5+16AmcJi4g1z4=
github.com/atotto/clipboard v0.1.4/go.mod h1:ZY9tmq7sm5xIbd9bOK4onWV4S6X0u6GY7Vn0Yu86PYI=
github.com/avast/retry-go v3.0.0+incompatible h1:4SOWQ7Qs+oroOTQOYnAHqelpCO0biHSxpiH9JdtuBj0=
github.com/avast/retry-go v3.0.0+incompatible/go.mod h1:XtSnn+n/sHqQIpZ10K1qAevBhOOCWBLXXy3hyiqqBrY=
github.com/avast/retry-go/v4 v4.6.1 h1:VkOLRubHdisGrHnTu89g08aQEWEgRU7LVEop3GbIcMk=
github.com/avast/retry-go/v4 v4.6.1/go.mod h1:V6oF8njAwxJ5gRo1Q7Cxab24xs5NCWZBeaHHBklR8mA=
github.com/aws/amazon-ec2-instance-selector/v3 v3.1.2 h1:F8GBspJo+RmR4rYyw75XywEEQHQxBbF7QYKaMMnYREc=
github.com/aws/amazon-ec2-instance-selector/v3 v3.1.2/go.mod h1:wdlMRtz9G4IO6H1yZPsqfGBxR8E6B/bdxHlGkls4kGQ=
github.com/aws/aws-sdk-go v1.55.8 h1:JRmEUbU52aJQZ2AjX4q4Wu7t4uZjOu71uyNmaWlUkJQ=
github.com/aws/aws-sdk-go v1.55.8/go.mod h1:ZkViS9AqA6otK+JBBNH2++sx1sgxrPKcSzPPvQkUtXk=
github.com/aws/aws-sdk-go-v2 v1.41.1 h1:ABlyEARCDLN034NhxlRUSZr4l71mh+T5KAeGh6cerhU=
github.com/aws/aws-sdk-go-v2 v1.41.1/go.mod h1:MayyLB8y+buD9hZqkCW3kX1AKq07Y5pXxtgB+rRFhz0=
github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.7.4 h1:489krEF9xIGkOaaX3CE/Be2uWjiXrkCH6gUX+bZA/BU=
github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.7.4/go.mod h1:IOAPF6oT9KCsceNTvvYMNHy0+kMF8akOjeDvPENWxp4=
github.com/aws/aws-sdk-go-v2/config v1.32.7 h1:vxUyWGUwmkQ2g19n7JY/9YL8MfAIl7bTesIUykECXmY=
github.com/aws/aws-sdk-go-v2/config v1.32.7/go.mod h1:2/Qm5vKUU/r7Y+zUk/Ptt2MDAEKAfUtKc1+3U1Mo3oY=
github.com/aws/aws-sdk-go-v2/credentials v1.19.7 h1:tHK47VqqtJxOymRrNtUXN5SP/zUTvZKeLx4tH6PGQc8=
github.com/aws/aws-sdk-go-v2/credentials v1.19.7/go.mod h1:qOZk8sPDrxhf+4Wf4oT2urYJrYt3RejHSzgAquYeppw=
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.17 h1:I0GyV8wiYrP8XpA70g1HBcQO1JlQxCMTW9npl5UbDHY=
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.17/go.mod h1:tyw7BOl5bBe/oqvoIeECFJjMdzXoa/dfVz3QQ5lgHGA=
github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.17 h1:xOLELNKGp2vsiteLsvLPwxC+mYmO6OZ8PYgiuPJzF8U=
github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.17/go.mod h1:5M5CI3D12dNOtH3/mk6minaRwI2/37ifCURZISxA/IQ=
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.17 h1:WWLqlh79iO48yLkj1v3ISRNiv+3KdQoZ6JWyfcsyQik=
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.17/go.mod h1:EhG22vHRrvF8oXSTYStZhJc1aUgKtnJe+aOiFEV90cM=
github.com/aws/aws-sdk-go-v2/internal/ini v1.8.4 h1:WKuaxf++XKWlHWu9ECbMlha8WOEGm0OUEZqm4K/Gcfk=
github.com/aws/aws-sdk-go-v2/internal/ini v1.8.4/go.mod h1:ZWy7j6v1vWGmPReu0iSGvRiise4YI5SkR3OHKTZ6Wuc=
github.com/aws/aws-sdk-go-v2/internal/v4a v1.4.17 h1:JqcdRG//czea7Ppjb+g/n4o8i/R50aTBHkA7vu0lK+k=
github.com/aws/aws-sdk-go-v2/internal/v4a v1.4.17/go.mod h1:CO+WeGmIdj/MlPel2KwID9Gt7CNq4M65HUfBW97liM0=
github.com/aws/aws-sdk-go-v2/service/autoscaling v1.62.5 h1:3maqUQlVW7C6zAdSknv6V/LInH/RJaDW0kTFcy7dkOw=
github.com/aws/aws-sdk-go-v2/service/autoscaling v1.62.5/go.mod h1:8O5Pj92iNpfw/Fa7WdHbn6YiEjDoVdutz+9PGRNoP3Y=
github.com/aws/aws-sdk-go-v2/service/cloudformation v1.71.5 h1:UNllAzfiRvz9il9s0yHJkySMJbxWqEVDfyLdDblnuT4=
github.com/aws/aws-sdk-go-v2/service/cloudformation v1.71.5/go.mod h1:d6XSvIZM3pSKyXNbezwYT3nAcJeUzsJIXtZMNuQ9K2k=
github.com/aws/aws-sdk-go-v2/service/cloudtrail v1.55.1 h1:fRFvc/mgSPujB9JrKuPt+HGnJE9I+nDwXMhEAwHI/GM=
github.com/aws/aws-sdk-go-v2/service/cloudtrail v1.55.1/go.mod h1:XSNDmicqamWtX6yg5lisFAiFaf56PErQo/cMQvUQWX0=
github.com/aws/aws-sdk-go-v2/service/cloudwatch v1.53.1 h1:ElB5x0nrBHgQs+XcpQ1XJpSJzMFCq6fDTpT6WQCWOtQ=
github.com/aws/aws-sdk-go-v2/service/cloudwatch v1.53.1/go.mod h1:Cj+LUEvAU073qB2jInKV6Y0nvHX0k7bL7KAga9zZ3jw=
github.com/aws/aws-sdk-go-v2/service/cloudwatchlogs v1.61.1 h1:1Ci283hJE+S3XC4n5b2peV/wlcAo5rTVDb6j6JJ1aTo=
github.com/aws/aws-sdk-go-v2/service/cloudwatchlogs v1.61.1/go.mod h1:WXcA3mYRgWVIzjD+kxzap0axltmt4zBVDZaRX0S86gk=
github.com/aws/aws-sdk-go-v2/service/ec2 v1.279.1 h1:hnNVFVOYrzJjkqI+mxc1M4ztgcVw986n0t0TCPlnDPY=
github.com/aws/aws-sdk-go-v2/service/ec2 v1.279.1/go.mod h1:Uy+C+Sc58jozdoL1McQr8bDsEvNFx+/nBY+vpO1HVUY=
github.com/aws/aws-sdk-go-v2/service/ecr v1.36.2 h1:VDQaVwGOokbd3VUbHF+wupiffdrbAZPdQnr5XZMJqrs=
github.com/aws/aws-sdk-go-v2/service/ecr v1.36.2/go.mod h1:lvUlMghKYmSxSfv0vU7pdU/8jSY+s0zpG8xXhaGKCw0=
github.com/aws/aws-sdk-go-v2/service/ecrpublic v1.27.2 h1:Zru9Iy2JPM5+uRnFnoqeOZzi8JIVIHJ0ua6JdeDHcyg=
github.com/aws/aws-sdk-go-v2/service/ecrpublic v1.27.2/go.mod h1:PtQC3XjutCYFCn1+i8+wtpDaXvEK+vXF2gyLIKAmh4A=
github.com/aws/aws-sdk-go-v2/service/eks v1.76.4 h1:5f9jIMcEd0wvRpEoo925Ltfw/2Yalcf+amFm3e1tRd8=
github.com/aws/aws-sdk-go-v2/service/eks v1.76.4/go.mod h1:Qg678m+87sCuJhcsZojenz8mblYG+Tq86V4m3hjVz0s=
github.com/aws/aws-sdk-go-v2/service/elasticloadbalancing v1.33.15 h1:dJtNm4/eMx8nczyN3P4iAARXMj2rAvOJnj608zCqCmw=
github.com/aws/aws-sdk-go-v2/service/elasticloadbalancing v1.33.15/go.mod h1:QEbuU4eh8HGdv4uvld0Jth+KW8L0lOSYlyPcW6+JJo8=
github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 v1.54.2 h1:xJkfrBzq4b4JxnxwNNzjUKmbQj1hPa4uUikSeXQFBYk=
github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 v1.54.2/go.mod h1:DpGMmFhQwV/HH9zugLT5Ovf9HMKdQ+6ejfJybqEC9i4=
github.com/aws/aws-sdk-go-v2/service/iam v1.53.2 h1:62G6btFUwAa5uR5iPlnlNVAM0zJSLbWgDfKOfUC7oW4=
github.com/aws/aws-sdk-go-v2/service/iam v1.53.2/go.mod h1:av9clChrbZbJ5E21msSsiT2oghl2BJHfQGhCkXmhyu8=
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.4 h1:0ryTNEdJbzUCEWkVXEXoqlXV72J5keC1GvILMOuD00E=
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.4/go.mod h1:HQ4qwNZh32C3CBeO6iJLQlgtMzqeG17ziAA/3KDJFow=
github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.9.8 h1:Z5EiPIzXKewUQK0QTMkutjiaPVeVYXX7KIqhXu/0fXs=
github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.9.8/go.mod h1:FsTpJtvC4U1fyDXk7c71XoDv3HlRm8V3NiYLeYLh5YE=
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.17 h1:RuNSMoozM8oXlgLG/n6WLaFGoea7/CddrCfIiSA+xdY=
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.17/go.mod h1:F2xxQ9TZz5gDWsclCtPQscGpP0VUOc8RqgFM3vDENmU=
github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.19.17 h1:bGeHBsGZx0Dvu/eJC0Lh9adJa3M1xREcndxLNZlve2U=
github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.19.17/go.mod h1:dcW24lbU0CzHusTE8LLHhRLI42ejmINN8Lcr22bwh/g=
github.com/aws/aws-sdk-go-v2/service/kms v1.47.1 h1:6+C0RoGF4HJQALrsecOXN7cm/l5rgNHCw2xbcvFgpH4=
github.com/aws/aws-sdk-go-v2/service/kms v1.47.1/go.mod h1:VJcNH6BLr+3VJwinRKdotLOMglHO8mIKlD3ea5c7hbw=
github.com/aws/aws-sdk-go-v2/service/outposts v1.57.8 h1:zB9Q/dG0NkURC5E1g4qL/lsUp7aOqilfb7Ru9EOigDU=
github.com/aws/aws-sdk-go-v2/service/outposts v1.57.8/go.mod h1:3osURGv9q/2wxP1qYnB15GWYgr6w2AbQkSxYtE6vTaY=
github.com/aws/aws-sdk-go-v2/service/pricing v1.34.3 h1:vAv0hi3SWcc8cotkWRP4mPkmRbp/XqWKFyPW4Nwpzv0=
github.com/aws/aws-sdk-go-v2/service/pricing v1.34.3/go.mod h1:giTP9ufzBQJRB6bc7P30PO8s35hCp6au5uM70zkohU4=
github.com/aws/aws-sdk-go-v2/service/s3 v1.95.1 h1:C2dUPSnEpy4voWFIq3JNd8gN0Y5vYGDo44eUE58a/p8=
github.com/aws/aws-sdk-go-v2/service/s3 v1.95.1/go.mod h1:5jggDlZ2CLQhwJBiZJb4vfk4f0GxWdEDruWKEJ1xOdo=
github.com/aws/aws-sdk-go-v2/service/signin v1.0.5 h1:VrhDvQib/i0lxvr3zqlUwLwJP4fpmpyD9wYG1vfSu+Y=
github.com/aws/aws-sdk-go-v2/service/signin v1.0.5/go.mod h1:k029+U8SY30/3/ras4G/Fnv/b88N4mAfliNn08Dem4M=
github.com/aws/aws-sdk-go-v2/service/ssm v1.67.8 h1:31Llf5VfrZ78YvYs7sWcS7L2m3waikzRc6q1nYenVS4=
github.com/aws/aws-sdk-go-v2/service/ssm v1.67.8/go.mod h1:/jgaDlU1UImoxTxhRNxXHvBAPqPZQ8oCjcPbbkR6kac=
github.com/aws/aws-sdk-go-v2/service/sso v1.30.9 h1:v6EiMvhEYBoHABfbGB4alOYmCIrcgyPPiBE1wZAEbqk=
github.com/aws/aws-sdk-go-v2/service/sso v1.30.9/go.mod h1:yifAsgBxgJWn3ggx70A3urX2AN49Y5sJTD1UQFlfqBw=
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.35.13 h1:gd84Omyu9JLriJVCbGApcLzVR3XtmC4ZDPcAI6Ftvds=
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.35.13/go.mod h1:sTGThjphYE4Ohw8vJiRStAcu3rbjtXRsdNB0TvZ5wwo=
github.com/aws/aws-sdk-go-v2/service/sts v1.41.6 h1:5fFjR/ToSOzB2OQ/XqWpZBmNvmP/pJ1jOWYlFDJTjRQ=
github.com/aws/aws-sdk-go-v2/service/sts v1.41.6/go.mod h1:qgFDZQSD/Kys7nJnVqYlWKnh0SSdMjAi0uSwON4wgYQ=
github.com/aws/smithy-go v1.24.0 h1:LpilSUItNPFr1eY85RYgTIg5eIEPtvFbskaFcmmIUnk=
github.com/aws/smithy-go v1.24.0/go.mod h1:LEj2LM3rBRQJxPZTB4KuzZkaZYnZPnvgIhb4pu07mx0=
github.com/awslabs/amazon-ecr-credential-helper/ecr-login v0.0.0-20240318154307-a1a918375412 h1:tfbmGNeOidVXzO1I7zo/WsT5QX7Aa0BGTbnEAE4FG3E=
github.com/awslabs/amazon-ecr-credential-helper/ecr-login v0.0.0-20240318154307-a1a918375412/go.mod h1:kcUkjB9HwuV7PSck2b60kJtgDy+eTHWuAP0kb93FXsk=
github.com/awslabs/amazon-eks-ami/nodeadm v0.0.0-20251001043626-89ce6578d960 h1:F/q1AN14KuY3I6HyEJxEUuQmEo5cDRpbXptP7UlB8GQ=
github.com/awslabs/amazon-eks-ami/nodeadm v0.0.0-20251001043626-89ce6578d960/go.mod h1:cOBzmLe5lF+1C3h0SNnbl2LvMi+Gm8EXGlPxdXoucio=
github.com/awslabs/operatorpkg v0.0.0-20250909182303-e8e550b6f339 h1:p4oSlQ9IaT7/DHfgcrs9zdNhdIp37VIMujZLuxSgECk=
github.com/awslabs/operatorpkg v0.0.0-20250909182303-e8e550b6f339/go.mod h1:tNmCf0qIjaGbODGbm3DM8GIKBUvvxM7iW3KHbpSnVgw=
github.com/aymanbagabas/go-osc52/v2 v2.0.1 h1:HwpRHbFMcZLEVr42D4p7XBqjyuxQH5SMiErDT4WkJ2k=
github.com/aymanbagabas/go-osc52/v2 v2.0.1/go.mod h1:uYgXzlJ7ZpABp8OJ+exZzJJhRNQ2ASbcXHWsFqH8hp8=
github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM=
github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw=
github.com/blang/semver v3.5.1+incompatible h1:cQNTCjp13qL8KC3Nbxr/y2Bqb63oX6wdnnjpJbkM4JQ=
github.com/blang/semver v3.5.1+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk=
github.com/blang/semver/v4 v4.0.0 h1:1PFHFE6yCCTv8C1TeyNNarDzntLi7wMI5i/pzqYIsAM=
github.com/blang/semver/v4 v4.0.0/go.mod h1:IbckMUScFkM3pff0VJDNKRiT6TG/YpiHIM2yvyW5YoQ=
github.com/buildkite/agent/v3 v3.81.0 h1:JVfkng2XnsXesFXwiFwLJFkuzVu4zvoJCvedfoIXD6E=
github.com/buildkite/agent/v3 v3.81.0/go.mod h1:edJeyycODRxaFvpT22rDGwaQ5oa4eB8GjtbjgX5VpFw=
github.com/buildkite/go-pipeline v0.13.1 h1:Y9p8pQIwPtauVwNrcmTDH6+XK7jE1nLuvWVaK8oymA8=
github.com/buildkite/go-pipeline v0.13.1/go.mod h1:2HHqlSFTYgHFhzedJu0LhLs9n5c9XkYnHiQFVN5HE4U=
github.com/buildkite/interpolate v0.1.3 h1:OFEhqji1rNTRg0u9DsSodg63sjJQEb1uWbENq9fUOBM=
github.com/buildkite/interpolate v0.1.3/go.mod h1:UNVe6A+UfiBNKbhAySrBbZFZFxQ+DXr9nWen6WVt/A8=
github.com/buildkite/roko v1.2.0 h1:hbNURz//dQqNl6Eo9awjQOVOZwSDJ8VEbBDxSfT9rGQ=
github.com/buildkite/roko v1.2.0/go.mod h1:23R9e6nHxgedznkwwfmqZ6+0VJZJZ2Sg/uVcp2cP46I=
github.com/bytecodealliance/wasmtime-go/v3 v3.0.2 h1:3uZCA/BLTIu+DqCfguByNMJa2HVHpXvjfy0Dy7g6fuA=
github.com/bytecodealliance/wasmtime-go/v3 v3.0.2/go.mod h1:RnUjnIXxEJcL6BgCvNyzCCRzZcxCgsZCi+RNlvYor5Q=
github.com/cenkalti/backoff/v4 v4.3.0 h1:MyRJ/UdXutAwSAT+s3wNd7MfTIcy71VQueUuFK343L8=
github.com/cenkalti/backoff/v4 v4.3.0/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE=
github.com/cenkalti/backoff/v5 v5.0.3 h1:ZN+IMa753KfX5hd8vVaMixjnqRZ3y8CuJKRKj1xcsSM=
github.com/cenkalti/backoff/v5 v5.0.3/go.mod h1:rkhZdG3JZukswDf7f0cwqPNk4K0sa+F97BxZthm/crw=
github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=
github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs=
github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
github.com/charmbracelet/bubbles v0.20.0 h1:jSZu6qD8cRQ6k9OMfR1WlM+ruM8fkPWkHvQWD9LIutE=
github.com/charmbracelet/bubbles v0.20.0/go.mod h1:39slydyswPy+uVOHZ5x/GjwVAFkCsV8IIVy+4MhzwwU=
github.com/charmbracelet/bubbletea v1.3.10 h1:otUDHWMMzQSB0Pkc87rm691KZ3SWa4KUlvF9nRvCICw=
github.com/charmbracelet/bubbletea v1.3.10/go.mod h1:ORQfo0fk8U+po9VaNvnV95UPWA1BitP1E0N6xJPlHr4=
github.com/charmbracelet/colorprofile v0.2.3-0.20250311203215-f60798e515dc h1:4pZI35227imm7yK2bGPcfpFEmuY1gc2YSTShr4iJBfs=
github.com/charmbracelet/colorprofile v0.2.3-0.20250311203215-f60798e515dc/go.mod h1:X4/0JoqgTIPSFcRA/P6INZzIuyqdFY5rm8tb41s9okk=
github.com/charmbracelet/lipgloss v1.1.0 h1:vYXsiLHVkK7fp74RkV7b2kq9+zDLoEU4MZoFqR/noCY=
github.com/charmbracelet/lipgloss v1.1.0/go.mod h1:/6Q8FR2o+kj8rz4Dq0zQc3vYf7X+B0binUUBwA0aL30=
github.com/charmbracelet/x/ansi v0.10.1 h1:rL3Koar5XvX0pHGfovN03f5cxLbCF2YvLeyz7D2jVDQ=
github.com/charmbracelet/x/ansi v0.10.1/go.mod h1:3RQDQ6lDnROptfpWuUVIUG64bD2g2BgntdxH0Ya5TeE=
github.com/charmbracelet/x/cellbuf v0.0.13-0.20250311204145-2c3ea96c31dd h1:vy0GVL4jeHEwG5YOXDmi86oYw2yuYUGqz6a8sLwg0X8=
github.com/charmbracelet/x/cellbuf v0.0.13-0.20250311204145-2c3ea96c31dd/go.mod h1:xe0nKWGd3eJgtqZRaN9RjMtK7xUYchjzPr7q6kcvCCs=
github.com/charmbracelet/x/term v0.2.1 h1:AQeHeLZ1OqSXhrAWpYUtZyX1T3zVxfpZuEQMIQaGIAQ=
github.com/charmbracelet/x/term v0.2.1/go.mod h1:oQ4enTYFV7QN4m0i9mzHrViD7TQKvNEEkHUMCmsxdUg=
github.com/chrismellard/docker-credential-acr-env v0.0.0-20230304212654-82a0ddb27589 h1:krfRl01rzPzxSxyLyrChD+U+MzsBXbm0OwYYB67uF+4=
github.com/chrismellard/docker-credential-acr-env v0.0.0-20230304212654-82a0ddb27589/go.mod h1:OuDyvmLnMCwa2ep4Jkm6nyA0ocJuZlGyk2gGseVzERM=
github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI=
github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI=
github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU=
github.com/clbanning/mxj/v2 v2.5.5/go.mod h1:hNiWqW14h+kc+MdF9C6/YoRfjEJoR3ou6tn/Qo+ve2s=
github.com/clbanning/mxj/v2 v2.7.0 h1:WA/La7UGCanFe5NpHF0Q3DNtnCsVoxbPKuyBNHWRyME=
github.com/clbanning/mxj/v2 v2.7.0/go.mod h1:hNiWqW14h+kc+MdF9C6/YoRfjEJoR3ou6tn/Qo+ve2s=
github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=
github.com/cloudflare/cfssl v1.6.5 h1:46zpNkm6dlNkMZH/wMW22ejih6gIaJbzL2du6vD7ZeI=
github.com/cloudflare/cfssl v1.6.5/go.mod h1:Bk1si7sq8h2+yVEDrFJiz3d7Aw+pfjjJSZVaD+Taky4=
github.com/cloudflare/circl v1.6.3 h1:9GPOhQGF9MCYUeXyMYlqTR6a5gTrgR/fBLXvUgtVcg8=
github.com/cloudflare/circl v1.6.3/go.mod h1:2eXP6Qfat4O/Yhh8BznvKnJ+uzEoTQ6jVKJRn81BiS4=
github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc=
github.com/cncf/xds/go v0.0.0-20251210132809-ee656c7534f5 h1:6xNmx7iTtyBRev0+D/Tv1FZd4SCg8axKApyNyRsAt/w=
github.com/cncf/xds/go v0.0.0-20251210132809-ee656c7534f5/go.mod h1:KdCmV+x/BuvyMxRnYBlmVaq4OLiKW6iRQfvC62cvdkI=
github.com/cockroachdb/apd/v3 v3.2.1 h1:U+8j7t0axsIgvQUqthuNm82HIrYXodOV2iWLWtEaIwg=
github.com/cockroachdb/apd/v3 v3.2.1/go.mod h1:klXJcjp+FffLTHlhIG69tezTDvdP065naDsHzKhYSqc=
github.com/codahale/rfc6979 v0.0.0-20141003034818-6a90f24967eb h1:EDmT6Q9Zs+SbUoc7Ik9EfrFqcylYqgPZ9ANSbTAntnE=
github.com/codahale/rfc6979 v0.0.0-20141003034818-6a90f24967eb/go.mod h1:ZjrT6AXHbDs86ZSdt/osfBi5qfexBrKUdONk989Wnk4=
github.com/common-nighthawk/go-figure v0.0.0-20210622060536-734e95fb86be h1:J5BL2kskAlV9ckgEsNQXscjIaLiOYiZ75d4e94E6dcQ=
github.com/common-nighthawk/go-figure v0.0.0-20210622060536-734e95fb86be/go.mod h1:mk5IQ+Y0ZeO87b858TlA645sVcEcbiX6YqP98kt+7+w=
github.com/containerd/stargz-snapshotter/estargz v0.18.1 h1:cy2/lpgBXDA3cDKSyEfNOFMA/c10O1axL69EU7iirO8=
github.com/containerd/stargz-snapshotter/estargz v0.18.1/go.mod h1:ALIEqa7B6oVDsrF37GkGN20SuvG/pIMm7FwP7ZmRb0Q=
github.com/coreos/go-oidc/v3 v3.17.0 h1:hWBGaQfbi0iVviX4ibC7bk8OKT5qNr4klBaCHVNvehc=
github.com/coreos/go-oidc/v3 v3.17.0/go.mod h1:wqPbKFrVnE90vty060SB40FCJ8fTHTxSwyXJqZH+sI8=
github.com/cpuguy83/go-md2man/v2 v2.0.6/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g=
github.com/cyberphone/json-canonicalization v0.0.0-20231217050601-ba74d44ecf5f h1:eHnXnuK47UlSTOQexbzxAZfekVz6i+LKRdj1CU5DPaM=
github.com/cyberphone/json-canonicalization v0.0.0-20231217050601-ba74d44ecf5f/go.mod h1:uzvlm1mxhHkdfqitSA92i7Se+S9ksOn3a3qmv/kyOCw=
github.com/cyphar/filepath-securejoin v0.4.1 h1:JyxxyPEaktOD+GAnqIqTf9A8tHyAG22rowi7HkoSU1s=
github.com/cyphar/filepath-securejoin v0.4.1/go.mod h1:Sdj7gXlvMcPZsbhwhQ33GguGLDGQL7h7bg04C/+u9jI=
github.com/danieljoos/wincred v1.2.2 h1:774zMFJrqaeYCK2W57BgAem/MLi6mtSE47MB6BOJ0i0=
github.com/danieljoos/wincred v1.2.2/go.mod h1:w7w4Utbrz8lqeMbDAK0lkNJUv5sAOkFi7nd/ogr0Uh8=
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM=
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/depcheck-test/depcheck-test v0.0.0-20220607135614-199033aaa936 h1:foGzavPWwtoyBvjWyKJYDYsyzy+23iBV7NKTwdk+LRY=
github.com/depcheck-test/depcheck-test v0.0.0-20220607135614-199033aaa936/go.mod h1:ttKPnOepYt4LLzD+loXQ1rT6EmpyIYHro7TAJuIIlHo=
github.com/dgraph-io/badger/v4 v4.7.0 h1:Q+J8HApYAY7UMpL8d9owqiB+odzEc0zn/aqOD9jhc6Y=
github.com/dgraph-io/badger/v4 v4.7.0/go.mod h1:He7TzG3YBy3j4f5baj5B7Zl2XyfNe5bl4Udl0aPemVA=
github.com/dgraph-io/ristretto/v2 v2.2.0 h1:bkY3XzJcXoMuELV8F+vS8kzNgicwQFAaGINAEJdWGOM=
github.com/dgraph-io/ristretto/v2 v2.2.0/go.mod h1:RZrm63UmcBAaYWC1DotLYBmTvgkrs0+XhBd7Npn7/zI=
github.com/dgryski/trifles v0.0.0-20230903005119-f50d829f2e54 h1:SG7nF6SRlWhcT7cNTs5R6Hk4V2lcmLz2NsG2VnInyNo=
github.com/dgryski/trifles v0.0.0-20230903005119-f50d829f2e54/go.mod h1:if7Fbed8SFyPtHLHbg49SI7NAdJiC5WIA09pe59rfAA=
github.com/digitorus/pkcs7 v0.0.0-20230713084857-e76b763bdc49/go.mod h1:SKVExuS+vpu2l9IoOc0RwqE7NYnb0JlcFHFnEJkVDzc=
github.com/digitorus/pkcs7 v0.0.0-20230818184609-3a137a874352 h1:ge14PCmCvPjpMQMIAH7uKg0lrtNSOdpYsRXlwk3QbaE=
github.com/digitorus/pkcs7 v0.0.0-20230818184609-3a137a874352/go.mod h1:SKVExuS+vpu2l9IoOc0RwqE7NYnb0JlcFHFnEJkVDzc=
github.com/digitorus/timestamp v0.0.0-20231217203849-220c5c2851b7 h1:lxmTCgmHE1GUYL7P0MlNa00M67axePTq+9nBSGddR8I=
github.com/digitorus/timestamp v0.0.0-20231217203849-220c5c2851b7/go.mod h1:GvWntX9qiTlOud0WkQ6ewFm0LPy5JUR1Xo0Ngbd1w6Y=
github.com/dimchansky/utfbom v1.1.1 h1:vV6w1AhK4VMnhBno/TPVCoK9U/LP0PkLCS9tbxHdi/U=
github.com/dimchansky/utfbom v1.1.1/go.mod h1:SxdoEBH5qIqFocHMyGOXVAybYJdr71b1Q/j0mACtrfE=
github.com/docker/cli v29.0.3+incompatible h1:8J+PZIcF2xLd6h5sHPsp5pvvJA+Sr2wGQxHkRl53a1E=
github.com/docker/cli v29.0.3+incompatible/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8=
github.com/docker/distribution v2.8.3+incompatible h1:AtKxIZ36LoNK51+Z6RpzLpddBirtxJnzDrHLEKxTAYk=
github.com/docker/distribution v2.8.3+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w=
github.com/docker/docker-credential-helpers v0.9.3 h1:gAm/VtF9wgqJMoxzT3Gj5p4AqIjCBS4wrsOh9yRqcz8=
github.com/docker/docker-credential-helpers v0.9.3/go.mod h1:x+4Gbw9aGmChi3qTLZj8Dfn0TD20M/fuWy0E5+WDeCo=
github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY=
github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto=
github.com/elazarl/goproxy v1.7.2 h1:Y2o6urb7Eule09PjlhQRGNsqRfPmYI3KKQLFpCAV3+o=
github.com/elazarl/goproxy v1.7.2/go.mod h1:82vkLNir0ALaW14Rc399OTTjyNREgmdL2cVoIbS6XaE=
github.com/emicklei/go-restful/v3 v3.12.2 h1:DhwDP0vY3k8ZzE0RunuJy8GhNpPL6zqLkDf9B/a0/xU=
github.com/emicklei/go-restful/v3 v3.12.2/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc=
github.com/emicklei/proto v1.13.2 h1:z/etSFO3uyXeuEsVPzfl56WNgzcvIr42aQazXaQmFZY=
github.com/emicklei/proto v1.13.2/go.mod h1:rn1FgRS/FANiZdD2djyH7TMA9jdRDcYQ9IEN9yvjX0A=
github.com/emirpasic/gods v1.18.1 h1:FXtiHYKDGKCW2KzwZKx0iC0PQmdlorYgdFG9jPXJ1Bc=
github.com/emirpasic/gods v1.18.1/go.mod h1:8tpGGwCnJ5H4r6BWwaV6OrWmMoPhUl5jm/FMNAnJvWQ=
github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98=
github.com/envoyproxy/go-control-plane v0.14.0 h1:hbG2kr4RuFj222B6+7T83thSPqLjwBIfQawTkC++2HA=
github.com/envoyproxy/go-control-plane v0.14.0/go.mod h1:NcS5X47pLl/hfqxU70yPwL9ZMkUlwlKxtAohpi2wBEU=
github.com/envoyproxy/go-control-plane/envoy v1.36.0 h1:yg/JjO5E7ubRyKX3m07GF3reDNEnfOboJ0QySbH736g=
github.com/envoyproxy/go-control-plane/envoy v1.36.0/go.mod h1:ty89S1YCCVruQAm9OtKeEkQLTb+Lkz0k8v9W0Oxsv98=
github.com/envoyproxy/go-control-plane/ratelimit v0.1.0 h1:/G9QYbddjL25KvtKTv3an9lx6VBE2cnb8wp1vEGNYGI=
github.com/envoyproxy/go-control-plane/ratelimit v0.1.0/go.mod h1:Wk+tMFAFbCXaJPzVVHnPgRKdUdwW/KdbRt94AzgRee4=
github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c=
github.com/envoyproxy/protoc-gen-validate v1.3.0 h1:TvGH1wof4H33rezVKWSpqKz5NXWg5VPuZ0uONDT6eb4=
github.com/envoyproxy/protoc-gen-validate v1.3.0/go.mod h1:HvYl7zwPa5mffgyeTUHA9zHIH36nmrm7oCbo4YKoSWA=
github.com/erikgeiser/coninput v0.0.0-20211004153227-1c3628e74d0f h1:Y/CXytFA4m6baUTXGLOoWe4PQhGxaX0KpnayAqC48p4=
github.com/erikgeiser/coninput v0.0.0-20211004153227-1c3628e74d0f/go.mod h1:vw97MGsxSvLiUE2X8qFplwetxpGLQrlU1Q9AUEIzCaM=
github.com/evanphx/json-patch v5.9.11+incompatible h1:ixHHqfcGvxhWkniF1tWxBHA0yb4Z+d1UQi45df52xW8=
github.com/evanphx/json-patch v5.9.11+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk=
github.com/evanphx/json-patch/v5 v5.9.11 h1:/8HVnzMq13/3x9TPvjG08wUGqBTmZBsCWzjTM0wiaDU=
github.com/evanphx/json-patch/v5 v5.9.11/go.mod h1:3j+LviiESTElxA4p3EMKAB9HXj3/XEtnUf6OZxqIQTM=
github.com/evertras/bubble-table v0.17.1 h1:HJwq3iQrZulXDE93ZcqJNiUVQCBbN4IJ2CkB/IxO3kk=
github.com/evertras/bubble-table v0.17.1/go.mod h1:ifHujS1YxwnYSOgcR2+m3GnJ84f7CVU/4kUOxUCjEbQ=
github.com/fatih/color v1.10.0/go.mod h1:ELkj/draVOlAH/xkhN6mQ50Qd0MPOk5AAr3maGEBuJM=
github.com/fatih/color v1.18.0 h1:S8gINlzdQ840/4pfAwic/ZE0djQEH3wM94VfqLTZcOM=
github.com/fatih/color v1.18.0/go.mod h1:4FelSpRwEGDpQ12mAdzqdOukCy4u8WUtOY6lkT/6HfU=
github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg=
github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U=
github.com/fortytw2/leaktest v1.3.0 h1:u8491cBMTQ8ft8aeV+adlcytMZylmA5nnwwkRZjI8vw=
github.com/fortytw2/leaktest v1.3.0/go.mod h1:jDsjWgpAGjm2CA7WthBh/CdZYEPF31XHquHwclZch5g=
github.com/foxcpp/go-mockdns v1.1.0 h1:jI0rD8M0wuYAxL7r/ynTrCQQq0BVqfB99Vgk7DlmewI=
github.com/foxcpp/go-mockdns v1.1.0/go.mod h1:IhLeSFGed3mJIAXPH2aiRQB+kqz7oqu8ld2qVbOu7Wk=
github.com/frankban/quicktest v1.14.6 h1:7Xjx+VpznH+oBnejlPUj8oUpdxnVs4f8XU8WnHkI4W8=
github.com/frankban/quicktest v1.14.6/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0=
github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo=
github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ=
github.com/fsnotify/fsnotify v1.5.4/go.mod h1:OVB6XrOHzAwXMpEM7uPOzcehqUV2UqJxmVXmkdnm1bU=
github.com/fsnotify/fsnotify v1.9.0 h1:2Ml+OJNzbYCTzsxtv8vKSFD9PbJjmhYF14k/jKC7S9k=
github.com/fsnotify/fsnotify v1.9.0/go.mod h1:8jBTzvmWwFyi3Pb8djgCCO5IBqzKJ/Jwo8TRcHyHii0=
github.com/fxamacker/cbor/v2 v2.9.0 h1:NpKPmjDBgUfBms6tr6JZkTHtfFGcMKsw3eGcmD/sapM=
github.com/fxamacker/cbor/v2 v2.9.0/go.mod h1:vM4b+DJCtHn+zz7h3FFp/hDAI9WNWCsZj23V5ytsSxQ=
github.com/glebarez/go-sqlite v1.22.0 h1:uAcMJhaA6r3LHMTFgP0SifzgXg46yJkgxqyuyec+ruQ=
github.com/glebarez/go-sqlite v1.22.0/go.mod h1:PlBIdHe0+aUEFn+r2/uthrWq4FxbzugL0L8Li6yQJbc=
github.com/gliderlabs/ssh v0.3.8 h1:a4YXD1V7xMF9g5nTkdfnja3Sxy1PVDCj1Zg4Wb8vY6c=
github.com/gliderlabs/ssh v0.3.8/go.mod h1:xYoytBv1sV0aL3CavoDuJIQNURXkkfPA/wxQ1pL1fAU=
github.com/go-chi/chi v4.1.2+incompatible h1:fGFk2Gmi/YKXk0OmGfBh0WgmN3XB8lVnEyNz34tQRec=
github.com/go-chi/chi v4.1.2+incompatible/go.mod h1:eB3wogJHnLi3x/kFX2A+IbTBlXxmMeXJVKy9tTv1XzQ=
github.com/go-errors/errors v1.5.1 h1:ZwEMSLRCapFLflTpT7NKaAc7ukJ8ZPEjzlxt8rPN8bk=
github.com/go-errors/errors v1.5.1/go.mod h1:sIVyrIiJhuEF+Pj9Ebtd6P/rEYROXFi3BopGUQ5a5Og=
github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 h1:+zs/tPmkDkHx3U66DAb0lQFJrpS6731Oaa12ikc+DiI=
github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376/go.mod h1:an3vInlBmSxCcxctByoQdvwPiA7DTK7jaaFDBTtu0ic=
github.com/go-git/go-billy/v5 v5.8.0 h1:I8hjc3LbBlXTtVuFNJuwYuMiHvQJDq1AT6u4DwDzZG0=
github.com/go-git/go-billy/v5 v5.8.0/go.mod h1:RpvI/rw4Vr5QA+Z60c6d6LXH0rYJo0uD5SqfmrrheCY=
github.com/go-git/go-git-fixtures/v4 v4.3.2-0.20231010084843-55a94097c399 h1:eMje31YglSBqCdIqdhKBW8lokaMrL3uTkpGYlE2OOT4=
github.com/go-git/go-git-fixtures/v4 v4.3.2-0.20231010084843-55a94097c399/go.mod h1:1OCfN199q1Jm3HZlxleg+Dw/mwps2Wbk9frAWm+4FII=
github.com/go-git/go-git/v5 v5.17.1 h1:WnljyxIzSj9BRRUlnmAU35ohDsjRK0EKmL0evDqi5Jk=
github.com/go-git/go-git/v5 v5.17.1/go.mod h1:pW/VmeqkanRFqR6AljLcs7EA7FbZaN5MQqO7oZADXpo=
github.com/go-ini/ini v1.67.0 h1:z6ZrTEZqSWOTyH2FlglNbNgARyHG8oLW9gMELqKr06A=
github.com/go-ini/ini v1.67.0/go.mod h1:ByCAeIL28uOIIG0E3PJtZPDL8WnHpFKFOtgjp+3Ies8=
github.com/go-jose/go-jose/v3 v3.0.4 h1:Wp5HA7bLQcKnf6YYao/4kpRpVMp/yf6+pJKV8WFSaNY=
github.com/go-jose/go-jose/v3 v3.0.4/go.mod h1:5b+7YgP7ZICgJDBdfjZaIt+H/9L9T/YQrVfLAMboGkQ=
github.com/go-jose/go-jose/v4 v4.1.3 h1:CVLmWDhDVRa6Mi/IgCgaopNosCaHz7zrMeF9MlZRkrs=
github.com/go-jose/go-jose/v4 v4.1.3/go.mod h1:x4oUasVrzR7071A4TnHLGSPpNOm2a21K9Kf04k1rs08=
github.com/go-logr/logr v0.1.0/go.mod h1:ixOQHD9gLJUVQQ2ZOR7zLEifBX6tGkNJF4QyIY7sIas=
github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
github.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI=
github.com/go-logr/logr v1.4.3/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag=
github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE=
github.com/go-logr/zapr v1.3.0 h1:XGdV8XW8zdwFiwOA2Dryh1gj2KRQyOOoNmBy4EplIcQ=
github.com/go-logr/zapr v1.3.0/go.mod h1:YKepepNBd1u/oyhd/yQmtjVXmm9uML4IXUgMOwR8/Gg=
github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0=
github.com/go-ole/go-ole v1.3.0 h1:Dt6ye7+vXGIKZ7Xtk4s6/xVdGDQynvom7xCFEdWr6uE=
github.com/go-ole/go-ole v1.3.0/go.mod h1:5LS6F96DhAwUc7C+1HLexzMXY1xGRSryjyPPKW6zv78=
github.com/go-openapi/analysis v0.23.0 h1:aGday7OWupfMs+LbmLZG4k0MYXIANxcuBTYUC03zFCU=
github.com/go-openapi/analysis v0.23.0/go.mod h1:9mz9ZWaSlV8TvjQHLl2mUW2PbZtemkE8yA5v22ohupo=
github.com/go-openapi/errors v0.22.1 h1:kslMRRnK7NCb/CvR1q1VWuEQCEIsBGn5GgKD9e+HYhU=
github.com/go-openapi/errors v0.22.1/go.mod h1:+n/5UdIqdVnLIJ6Q9Se8HNGUXYaY6CN8ImWzfi/Gzp0=
github.com/go-openapi/jsonpointer v0.21.0 h1:YgdVicSA9vH5RiHs9TZW5oyafXZFc6+2Vc1rr/O9oNQ=
github.com/go-openapi/jsonpointer v0.21.0/go.mod h1:IUyH9l/+uyhIYQ/PXVA41Rexl+kOkAPDdXEYns6fzUY=
github.com/go-openapi/jsonreference v0.21.0 h1:Rs+Y7hSXT83Jacb7kFyjn4ijOuVGSvOdF2+tg1TRrwQ=
github.com/go-openapi/jsonreference v0.21.0/go.mod h1:LmZmgsrTkVg9LG4EaHeY8cBDslNPMo06cago5JNLkm4=
github.com/go-openapi/loads v0.22.0 h1:ECPGd4jX1U6NApCGG1We+uEozOAvXvJSF4nnwHZ8Aco=
github.com/go-openapi/loads v0.22.0/go.mod h1:yLsaTCS92mnSAZX5WWoxszLj0u+Ojl+Zs5Stn1oF+rs=
github.com/go-openapi/runtime v0.28.0 h1:gpPPmWSNGo214l6n8hzdXYhPuJcGtziTOgUpvsFWGIQ=
github.com/go-openapi/runtime v0.28.0/go.mod h1:QN7OzcS+XuYmkQLw05akXk0jRH/eZ3kb18+1KwW9gyc=
github.com/go-openapi/spec v0.21.0 h1:LTVzPc3p/RzRnkQqLRndbAzjY0d0BCL72A6j3CdL9ZY=
github.com/go-openapi/spec v0.21.0/go.mod h1:78u6VdPw81XU44qEWGhtr982gJ5BWg2c0I5XwVMotYk=
github.com/go-openapi/strfmt v0.23.0 h1:nlUS6BCqcnAk0pyhi9Y+kdDVZdZMHfEKQiS4HaMgO/c=
github.com/go-openapi/strfmt v0.23.0/go.mod h1:NrtIpfKtWIygRkKVsxh7XQMDQW5HKQl6S5ik2elW+K4=
github.com/go-openapi/swag v0.23.0 h1:vsEVJDUo2hPJ2tu0/Xc+4noaxyEffXNIs3cOULZ+GrE=
github.com/go-openapi/swag v0.23.0/go.mod h1:esZ8ITTYEsH1V2trKHjAN8Ai7xHb8RV+YSZ577vPjgQ=
github.com/go-openapi/validate v0.24.0 h1:LdfDKwNbpB6Vn40xhTdNZAnfLECL81w+VX3BumrGD58=
github.com/go-openapi/validate v0.24.0/go.mod h1:iyeX1sEufmv3nPbBdX3ieNviWnOZaJ1+zquzJEf2BAQ=
github.com/go-piv/piv-go v1.11.0 h1:5vAaCdRTFSIW4PeqMbnsDlUZ7odMYWnHBDGdmtU/Zhg=
github.com/go-piv/piv-go v1.11.0/go.mod h1:NZ2zmjVkfFaL/CF8cVQ/pXdXtuj110zEKGdJM6fJZZM=
github.com/go-quicktest/qt v1.101.0 h1:O1K29Txy5P2OK0dGo59b7b0LR6wKfIhttaAhHUyn7eI=
github.com/go-quicktest/qt v1.101.0/go.mod h1:14Bz/f7NwaXPtdYEgzsx46kqSxVwTbzVZsDC26tQJow=
github.com/go-resty/resty/v2 v2.16.5 h1:hBKqmWrr7uRc3euHVqmh1HTHcKn99Smr7o5spptdhTM=
github.com/go-resty/resty/v2 v2.16.5/go.mod h1:hkJtXbA2iKHzJheXYvQ8snQES5ZLGKMwQ07xAwp/fiA=
github.com/go-rod/rod v0.116.2 h1:A5t2Ky2A+5eD/ZJQr1EfsQSe5rms5Xof/qj296e+ZqA=
github.com/go-rod/rod v0.116.2/go.mod h1:H+CMO9SCNc2TJ2WfrG+pKhITz57uGNYU43qYHh438Mg=
github.com/go-sql-driver/mysql v1.9.1 h1:FrjNGn/BsJQjVRuSa8CBrM5BWA9BWoXXat3KrtSb/iI=
github.com/go-sql-driver/mysql v1.9.1/go.mod h1:qn46aNg1333BRMNU69Lq93t8du/dwxI64Gl8i5p1WMU=
github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0 h1:p104kn46Q8WdvHunIJ9dAyjPVtrBPhSr3KT2yUst43I=
github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0/go.mod h1:fyg7847qk6SyHyPtNmDHnmrv/HOrqktSC+C9fM+CJOE=
github.com/go-task/slim-sprig/v3 v3.0.0 h1:sUs3vkvUymDpBKi3qH1YSqBQk9+9D/8M2mN1vB6EwHI=
github.com/go-task/slim-sprig/v3 v3.0.0/go.mod h1:W848ghGpv3Qj3dhTPRyJypKRiqCdHZiAzKg9hl15HA8=
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/gobwas/glob v0.2.3 h1:A4xDbljILXROh+kObIiy5kIaPYD8e96x1tgBhUI5J+Y=
github.com/gobwas/glob v0.2.3/go.mod h1:d3Ez4x06l9bZtSvzIay5+Yzi0fmZzPgnTbPcKjJAkT8=
github.com/godbus/dbus/v5 v5.1.0 h1:4KLkAxT3aOY8Li4FRJe/KvhoNFFxo0m6fNuFUO8QJUk=
github.com/godbus/dbus/v5 v5.1.0/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA=
github.com/gofrs/flock v0.13.0 h1:95JolYOvGMqeH31+FC7D2+uULf6mG61mEZ/A8dRYMzw=
github.com/gofrs/flock v0.13.0/go.mod h1:jxeyy9R1auM5S6JYDBhDt+E2TCo7DkratH4Pgi8P+Z0=
github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q=
github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q=
github.com/golang-jwt/jwt v3.2.2+incompatible h1:IfV12K8xAKAnZqdXVzCZ+TOjboZ2keLg81eXfW3O+oY=
github.com/golang-jwt/jwt/v4 v4.0.0/go.mod h1:/xlHOz8bRuivTWchD4jCa+NbatV+wEUSzwAxVc6locg=
github.com/golang-jwt/jwt/v4 v4.2.0/go.mod h1:/xlHOz8bRuivTWchD4jCa+NbatV+wEUSzwAxVc6locg=
github.com/golang-jwt/jwt/v4 v4.5.0/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0=
github.com/golang-jwt/jwt/v4 v4.5.2 h1:YtQM7lnr8iZ+j5q71MGKkNw9Mn7AjHM68uc9g5fXeUI=
github.com/golang-jwt/jwt/v4 v4.5.2/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0=
github.com/golang-jwt/jwt/v5 v5.2.2 h1:Rl4B7itRWVtYIHFrSNd7vhTiz9UpLdi6gZhZ3wEeDy8=
github.com/golang-jwt/jwt/v5 v5.2.2/go.mod h1:pqrtFR0X4osieyHYxtmOUWsAWrfe1Q5UVIyoH402zdk=
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=
github.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8 h1:f+oWsMOmNPc8JmEHVZIycC7hBoQxHH9pNKQORJNozsQ=
github.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8/go.mod h1:wcDNUvekVysuuOpQKo3191zZyTpiI6se1N1ULghS0sw=
github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=
github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw=
github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8=
github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA=
github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs=
github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w=
github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0=
github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI=
github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk=
github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY=
github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek=
github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps=
github.com/golang/snappy v0.0.4 h1:yAGX7huGHXlcLOEtBnF4w7FQwA26wojNCwOYAEhLjQM=
github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
github.com/google/btree v1.1.3 h1:CVpQJjYgC4VbzxeGVHfvZrv1ctoYCAI8vbl07Fcxlyg=
github.com/google/btree v1.1.3/go.mod h1:qOPhT0dTNdNzV6Z/lhRX0YXUafgPLFUh+gZMl761Gm4=
github.com/google/certificate-transparency-go v1.3.2-0.20250507091337-0eddb39e94f8 h1:1RSWsOSxq2gk4pD/63bhsPwoOXgz2yXVadxXPbwZ0ec=
github.com/google/certificate-transparency-go v1.3.2-0.20250507091337-0eddb39e94f8/go.mod h1:6Rm5w0Mlv87LyBNOCgfKYjdIBBpF42XpXGsbQvQGomQ=
github.com/google/flatbuffers v25.2.10+incompatible h1:F3vclr7C3HpB1k9mxCGRMXq6FdUalZ6H/pNX4FP1v0Q=
github.com/google/flatbuffers v25.2.10+incompatible/go.mod h1:1AeVuKshWv4vARoZatz6mlQ0JxURH0Kv5+zNeJKJCa8=
github.com/google/gnostic-models v0.7.0 h1:qwTtogB15McXDaNqTZdzPJRHvaVJlAl+HVQnLmJEJxo=
github.com/google/gnostic-models v0.7.0/go.mod h1:whL5G0m6dmc5cPxKc5bdKdEN3UjI7OUGxBlw57miDrQ=
github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M=
github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/go-cmp v0.5.9/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/go-containerregistry v0.20.7 h1:24VGNpS0IwrOZ2ms2P1QE3Xa5X9p4phx0aUgzYzHW6I=
github.com/google/go-containerregistry v0.20.7/go.mod h1:Lx5LCZQjLH1QBaMPeGwsME9biPeo1lPx6lbGj/UmzgM=
github.com/google/go-github/v55 v55.0.0 h1:4pp/1tNMB9X/LuAhs5i0KQAE40NmiR/y6prLNb9x9cg=
github.com/google/go-github/v55 v55.0.0/go.mod h1:JLahOTA1DnXzhxEymmFF5PP2tSS9JVNj68mSZNDwskA=
github.com/google/go-github/v60 v60.0.0 h1:oLG98PsLauFvvu4D/YPxq374jhSxFYdzQGNCyONLfn8=
github.com/google/go-github/v60 v60.0.0/go.mod h1:ByhX2dP9XT9o/ll2yXAu2VD8l5eNVg8hD4Cr0S/LmQk=
github.com/google/go-querystring v1.1.0 h1:AnCroh3fv4ZBgVIf1Iwtovgjaw/GiKJo8M8yD/fhyJ8=
github.com/google/go-querystring v1.1.0/go.mod h1:Kcdr2DB4koayq7X8pmAG4sNG59So17icRSOU623lUBU=
github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
github.com/google/gofuzz v1.2.1-0.20210504230335-f78f29fc09ea h1:VcIYpAGBae3Z6BVncE0OnTE/ZjlDXqtYhOZky88neLM=
github.com/google/gofuzz v1.2.1-0.20210504230335-f78f29fc09ea/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
github.com/google/licenseclassifier/v2 v2.0.0 h1:1Y57HHILNf4m0ABuMVb6xk4vAJYEUO0gDxNpog0pyeA=
github.com/google/licenseclassifier/v2 v2.0.0/go.mod h1:cOjbdH0kyC9R22sdQbYsFkto4NGCAc+ZSwbeThazEtM=
github.com/google/martian/v3 v3.3.3 h1:DIhPTQrbPkgs2yJYdXU/eNACCG5DVQjySNRNlflZ9Fc=
github.com/google/martian/v3 v3.3.3/go.mod h1:iEPrYcgCF7jA9OtScMFQyAlZZ4YXTKEtJ1E6RWzmBA0=
github.com/google/pprof v0.0.0-20210407192527-94a9f03dee38/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=
github.com/google/pprof v0.0.0-20250820193118-f64d9cf942d6 h1:EEHtgt9IwisQ2AZ4pIsMjahcegHh6rmhqxzIRQIyepY=
github.com/google/pprof v0.0.0-20250820193118-f64d9cf942d6/go.mod h1:I6V7YzU0XDpsHqbsyrghnFZLO1gwK6NPTNvmetQIk9U=
github.com/google/s2a-go v0.1.9 h1:LGD7gtMgezd8a/Xak7mEWL0PjoTQFvpRudN895yqKW0=
github.com/google/s2a-go v0.1.9/go.mod h1:YA0Ei2ZQL3acow2O62kdp9UlnvMmU7kA6Eutn0dXayM=
github.com/google/tink/go v1.7.0 h1:6Eox8zONGebBFcCBqkVmt60LaWZa6xg1cl/DwAh/J1w=
github.com/google/tink/go v1.7.0/go.mod h1:GAUOd+QE3pgj9q8VKIGTCP33c/B7eb4NhxLcgTJZStM=
github.com/google/trillian v1.7.1 h1:+zX8jLM3524bAMPS+VxaDIDgsMv3/ty6DuLWerHXcek=
github.com/google/trillian v1.7.1/go.mod h1:E1UMAHqpZCA8AQdrKdWmHmtUfSeiD0sDWD1cv00Xa+c=
github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
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/googleapis/enterprise-certificate-proxy v0.3.6 h1:GW/XbdyBFQ8Qe+YAmFU9uHLo7OnF5tL52HFAgMmyrf4=
github.com/googleapis/enterprise-certificate-proxy v0.3.6/go.mod h1:MkHOF77EYAE7qfSuSS9PU6g4Nt4e11cnsDUowfwewLA=
github.com/googleapis/gax-go/v2 v2.15.0 h1:SyjDc1mGgZU5LncH8gimWo9lW1DtIfPibOG81vgd/bo=
github.com/googleapis/gax-go/v2 v2.15.0/go.mod h1:zVVkkxAQHa1RQpg9z2AUCMnKhi0Qld9rcmyfL1OZhoc=
github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY=
github.com/gopherjs/gopherjs v0.0.0-20200217142428-fce0ec30dd00/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY=
github.com/gorilla/mux v1.8.1 h1:TuBL49tXwgrFYWhqrNgrUNEY92u81SPhu7sTdzQEiWY=
github.com/gorilla/mux v1.8.1/go.mod h1:AKf9I4AEqPTmMytcMc0KkNouC66V3BtZ4qD5fmWSiMQ=
github.com/gorilla/websocket v1.5.4-0.20250319132907-e064f32e3674 h1:JeSE6pjso5THxAzdVpqr6/geYxZytqFMBCOtn/ujyeo=
github.com/gorilla/websocket v1.5.4-0.20250319132907-e064f32e3674/go.mod h1:r4w70xmWCQKmi1ONH4KIaBptdivuRPyosB9RmPlGEwA=
github.com/grpc-ecosystem/grpc-gateway v1.16.0 h1:gmcG1KaJ57LophUzW0Hy8NmPhnMZb4M0+kPpLofRdBo=
github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.2 h1:8Tjv8EJ+pM1xP8mK6egEbD1OgnVTyacbefKhmbLhIhU=
github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.2/go.mod h1:pkJQ2tZHJ0aFOVEEot6oZmaVEZcRme73eIFmhiVuRWs=
github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY2I=
github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4=
github.com/hashicorp/go-cleanhttp v0.5.2 h1:035FKYIWjmULyFRBKPs8TBQoi0x6d9G4xc9neXJWAZQ=
github.com/hashicorp/go-cleanhttp v0.5.2/go.mod h1:kO/YDlP8L1346E6Sodw+PrpBSV4/SoxCXGY6BqNFT48=
github.com/hashicorp/go-hclog v1.6.3 h1:Qr2kF+eVWjTiYmU7Y31tYlP1h0q/X3Nl3tPGdaB11/k=
github.com/hashicorp/go-hclog v1.6.3/go.mod h1:W4Qnvbt70Wk/zYJryRzDRU/4r0kIg0PVHBcfoyhpF5M=
github.com/hashicorp/go-multierror v1.1.1 h1:H5DkEtf6CXdFp0N0Em5UCwQpXMWke8IA0+lD48awMYo=
github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM=
github.com/hashicorp/go-retryablehttp v0.7.7 h1:C8hUCYzor8PIfXHa4UrZkU4VvK8o9ISHxT2Q8+VepXU=
github.com/hashicorp/go-retryablehttp v0.7.7/go.mod h1:pkQpWZeYWskR+D1tR2O5OcBFOxfA7DoAO6xtkuQnHTk=
github.com/hashicorp/go-rootcerts v1.0.2 h1:jzhAVGtqPKbwpyCPELlgNWhE1znq+qwJtW5Oi2viEzc=
github.com/hashicorp/go-rootcerts v1.0.2/go.mod h1:pqUvnprVnM5bf7AOirdbb01K4ccR319Vf4pU3K5EGc8=
github.com/hashicorp/go-secure-stdlib/parseutil v0.1.7 h1:UpiO20jno/eV1eVZcxqWnUohyKRe1g8FPV/xH1s/2qs=
github.com/hashicorp/go-secure-stdlib/parseutil v0.1.7/go.mod h1:QmrqtbKuxxSWTN3ETMPuB+VtEiBJ/A9XhoYGv8E1uD8=
github.com/hashicorp/go-secure-stdlib/strutil v0.1.2 h1:kes8mmyCpxJsI7FTwtzRqEy9CdjCtrXrXGuOpxEA7Ts=
github.com/hashicorp/go-secure-stdlib/strutil v0.1.2/go.mod h1:Gou2R9+il93BqX25LAKCLuM+y9U2T4hlwvT1yprcna4=
github.com/hashicorp/go-sockaddr v1.0.5 h1:dvk7TIXCZpmfOlM+9mlcrWmWjw/wlKT+VDq2wMvfPJU=
github.com/hashicorp/go-sockaddr v1.0.5/go.mod h1:uoUUmtwU7n9Dv3O4SNLeFvg0SxQ3lyjsj6+CCykpaxI=
github.com/hashicorp/go-version v1.7.0 h1:5tqGy27NaOTB8yJKUZELlFAS/LTKJkrmONwQKeRZfjY=
github.com/hashicorp/go-version v1.7.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA=
github.com/hashicorp/golang-lru v1.0.2 h1:dV3g9Z/unq5DpblPpw+Oqcv4dU/1omnb4Ok8iPY6p1c=
github.com/hashicorp/golang-lru/v2 v2.0.7 h1:a+bsQ5rvGLjzHuww6tVxozPZFVghXaHOwFs4luLUK2k=
github.com/hashicorp/golang-lru/v2 v2.0.7/go.mod h1:QeFd9opnmA6QUJc5vARoKUSoFhyfM2/ZepoAG6RGpeM=
github.com/hashicorp/hcl v1.0.1-vault-5 h1:kI3hhbbyzr4dldA8UdTb7ZlVVlI2DACdCfz31RPDgJM=
github.com/hashicorp/hcl v1.0.1-vault-5/go.mod h1:XYhtn6ijBSAj6n4YqAaf7RBPS4I06AItNorpy+MoQNM=
github.com/hashicorp/vault/api v1.15.0 h1:O24FYQCWwhwKnF7CuSqP30S51rTV7vz1iACXE/pj5DA=
github.com/hashicorp/vault/api v1.15.0/go.mod h1:+5YTO09JGn0u+b6ySD/LLVf8WkJCPLAL2Vkmrn2+CM8=
github.com/howeyc/gopass v0.0.0-20210920133722-c8aef6fb66ef h1:A9HsByNhogrvm9cWb28sjiS3i7tcKCkflWFEkHfuAgM=
github.com/howeyc/gopass v0.0.0-20210920133722-c8aef6fb66ef/go.mod h1:lADxMC39cJJqL93Duh1xhAs4I2Zs8mKS89XWXFGp9cs=
github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU=
github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc=
github.com/imdario/mergo v0.3.16 h1:wwQJbIsHYGMUyLSPrEq1CT16AhnhNJQ51+4fdHUnCl4=
github.com/imdario/mergo v0.3.16/go.mod h1:WBLT9ZmE3lPoWsEzCh9LPo3TiwVN+ZKEjmz+hD27ysY=
github.com/in-toto/attestation v1.1.0 h1:oRWzfmZPDSctChD0VaQV7MJrywKOzyNrtpENQFq//2Q=
github.com/in-toto/attestation v1.1.0/go.mod h1:DB59ytd3z7cIHgXxwpSX2SABrU6WJUKg/grpdgHVgVs=
github.com/in-toto/in-toto-golang v0.9.0 h1:tHny7ac4KgtsfrG6ybU8gVOZux2H8jN05AXJ9EBM1XU=
github.com/in-toto/in-toto-golang v0.9.0/go.mod h1:xsBVrVsHNsB61++S6Dy2vWosKhuA3lUTQd+eF9HdeMo=
github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8=
github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw=
github.com/jackc/pgpassfile v1.0.0 h1:/6Hmqy13Ss2zCq62VdNG8tM1wchn8zjSGOBJ6icpsIM=
github.com/jackc/pgpassfile v1.0.0/go.mod h1:CEx0iS5ambNFdcRtxPj5JhEz+xB6uRky5eyVu/W2HEg=
github.com/jackc/pgservicefile v0.0.0-20240606120523-5a60cdf6a761 h1:iCEnooe7UlwOQYpKFhBabPMi4aNAfoODPEFNiAnClxo=
github.com/jackc/pgservicefile v0.0.0-20240606120523-5a60cdf6a761/go.mod h1:5TJZWKEWniPve33vlWYSoGYefn3gLQRzjfDlhSJ9ZKM=
github.com/jackc/pgx/v5 v5.7.4 h1:9wKznZrhWa2QiHL+NjTSPP6yjl3451BX3imWDnokYlg=
github.com/jackc/pgx/v5 v5.7.4/go.mod h1:ncY89UGWxg82EykZUwSpUKEfccBGGYq1xjrOpsbsfGQ=
github.com/jackc/puddle/v2 v2.2.2 h1:PR8nw+E/1w0GLuRFSmiioY6UooMp6KJv0/61nB7icHo=
github.com/jackc/puddle/v2 v2.2.2/go.mod h1:vriiEXHvEE654aYKXXjOvZM39qJ0q+azkZFrfEOc3H4=
github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 h1:BQSFePA1RWJOlocH6Fxy8MmwDt+yVQYULKfN0RoTN8A=
github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99/go.mod h1:1lJo3i6rXxKeerYnT8Nvf0QmHCRC1n8sfWVwXF2Frvo=
github.com/jedisct1/go-minisign v0.0.0-20230811132847-661be99b8267 h1:TMtDYDHKYY15rFihtRfck/bfFqNfvcabqvXAFQfAUpY=
github.com/jedisct1/go-minisign v0.0.0-20230811132847-661be99b8267/go.mod h1:h1nSAbGFqGVzn6Jyl1R/iCcBUHN4g+gW1u9CoBTrb9E=
github.com/jellydator/ttlcache/v3 v3.3.0 h1:BdoC9cE81qXfrxeb9eoJi9dWrdhSuwXMAnHTbnBm4Wc=
github.com/jellydator/ttlcache/v3 v3.3.0/go.mod h1:bj2/e0l4jRnQdrnSTaGTsh4GSXvMjQcy41i7th0GVGw=
github.com/jmespath/go-jmespath v0.4.1-0.20220621161143-b0104c826a24 h1:liMMTbpW34dhU4az1GN0pTPADwNmvoRSeoZ6PItiqnY=
github.com/jmespath/go-jmespath v0.4.1-0.20220621161143-b0104c826a24/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo=
github.com/jmespath/go-jmespath/internal/testify v1.5.1 h1:shLQSRRSCCPj3f2gpwzGwWFoC7ycTf1rcQZHOlsJ6N8=
github.com/jmespath/go-jmespath/internal/testify v1.5.1/go.mod h1:L3OGu8Wl2/fWfCI6z80xFu9LTZmf1ZRjMHUOPmWr69U=
github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY=
github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y=
github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM=
github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo=
github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU=
github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51 h1:Z9n2FFNUXsshfwJMBgNA0RU6/i7WVaAegv3PtuIHPMs=
github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51/go.mod h1:CzGEWj7cYgsdH8dAjBGEr58BoE7ScuLd+fwFZ44+/x8=
github.com/kevinburke/ssh_config v1.2.0 h1:x584FjTGwHzMwvHx18PXxbBVzfnxogHaAReU4gf13a4=
github.com/kevinburke/ssh_config v1.2.0/go.mod h1:CT57kijsi8u/K/BOFA39wgDQJ9CxiF4nAY/ojJ6r6mM=
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.18.1 h1:bcSGx7UbpBqMChDtsF28Lw6v/G94LPrrbMbdC3JH2co=
github.com/klauspost/compress v1.18.1/go.mod h1:ZQFFVG+MdnR0P+l6wpXgIL4NTtwiKIdBnrBd8Nrxr+0=
github.com/knqyf263/go-rpmdb v0.1.0 h1:pOgjtOGtW0B+ibY905hP3ETrYFmLZsHiReKsplcs+to=
github.com/knqyf263/go-rpmdb v0.1.0/go.mod h1:9LQcoMCMQ9vrF7HcDtXfvqGO4+ddxFQ8+YF/0CVGDww=
github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE=
github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk=
github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
github.com/kris-nova/logger v0.2.2 h1:qdWg2fNr4Bni4obkgehwOSbCoxaX+wDGGrzQ1T2mA20=
github.com/kris-nova/logger v0.2.2/go.mod h1:uOTzfb9ssx0XYb3UpeAjKsys8KByjD12OMN4szmym4w=
github.com/kris-nova/lolgopher v0.0.0-20210112022122-73f0047e8b65/go.mod h1:V0HF/ZBlN86HqewcDC/cVxMmYDiRukWjSrgKLUAn9Js=
github.com/kubicorn/kubicorn v0.0.0-20191114212505-a2c64ce430b9 h1:HgzA4yC4kPQfNIya55o4yA1WiKCXXA5wXvwoBKgIwXI=
github.com/kubicorn/kubicorn v0.0.0-20191114212505-a2c64ce430b9/go.mod h1:Z/PU7XQicaZV6QFTAvm8EaWyfNbAb4a76kmR4Am4KA8=
github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc=
github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw=
github.com/lib/pq v1.10.9 h1:YXG7RB+JIjhP29X+OtkiDnYaXQwpS4JEWq7dtCCRUEw=
github.com/lib/pq v1.10.9/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o=
github.com/liggitt/tabwriter v0.0.0-20181228230101-89fcab3d43de h1:9TO3cAIGXtEhnIaL+V+BEER86oLrvS+kWobKpbJuye0=
github.com/liggitt/tabwriter v0.0.0-20181228230101-89fcab3d43de/go.mod h1:zAbeS9B/r2mtpb6U+EI2rYA5OAXxsYw6wTamcNW+zcE=
github.com/lucasb-eyer/go-colorful v1.2.0 h1:1nnpGOrhyZZuNyfu1QjKiUICQ74+3FNCN69Aj6K7nkY=
github.com/lucasb-eyer/go-colorful v1.2.0/go.mod h1:R4dSotOR9KMtayYi1e77YzuveK+i7ruzyGqttikkLy0=
github.com/mailru/easyjson v0.9.0 h1:PrnmzHw7262yW8sTBwxi1PdJA3Iw/EKBa8psRf7d9a4=
github.com/mailru/easyjson v0.9.0/go.mod h1:1+xMtQp2MRNVL/V1bOzuP3aP8VNwRW55fQUto+XFtTU=
github.com/mattn/go-colorable v0.1.8/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc=
github.com/mattn/go-colorable v0.1.14 h1:9A9LHSqF/7dyVVX6g0U9cwm9pG3kP9gSzcuIPHPsaIE=
github.com/mattn/go-colorable v0.1.14/go.mod h1:6LmQG8QLFO4G5z1gPvYEzlUgJ2wF+stgPZH1UqBm1s8=
github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU=
github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY=
github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
github.com/mattn/go-localereader v0.0.1 h1:ygSAOl7ZXTx4RdPYinUpg6W99U8jWvWi9Ye2JC/oIi4=
github.com/mattn/go-localereader v0.0.1/go.mod h1:8fBrzywKY7BI3czFoHkuzRoWE9C+EiG4R1k4Cjx5p88=
github.com/mattn/go-runewidth v0.0.16 h1:E5ScNMtiwvlvB5paMFdw9p4kSQzbXFikJ5SQO6TULQc=
github.com/mattn/go-runewidth v0.0.16/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w=
github.com/miekg/dns v1.1.61 h1:nLxbwF3XxhwVSm8g9Dghm9MHPaUZuqhPiGL+675ZmEs=
github.com/miekg/dns v1.1.61/go.mod h1:mnAarhS3nWaW+NVP2wTkYVIZyHNJ098SJZUki3eykwQ=
github.com/miekg/pkcs11 v1.0.3-0.20190429190417-a667d056470f/go.mod h1:XsNlhZGX73bx86s2hdc/FuaLm2CPZJemRLMA+WTFxgs=
github.com/miekg/pkcs11 v1.1.1 h1:Ugu9pdy6vAYku5DEpVWVFPYnzV+bxB+iRdbuFSu7TvU=
github.com/miekg/pkcs11 v1.1.1/go.mod h1:XsNlhZGX73bx86s2hdc/FuaLm2CPZJemRLMA+WTFxgs=
github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y=
github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0=
github.com/mitchellh/go-wordwrap v1.0.1 h1:TLuKupo69TCn6TQSyGxwI1EblZZEsQ0vMlAFQflz0v0=
github.com/mitchellh/go-wordwrap v1.0.1/go.mod h1:R62XHJLzvMFRBbcrT7m7WgmE1eOyTSsCt+hzestvNj0=
github.com/mitchellh/hashstructure/v2 v2.0.2 h1:vGKWl0YJqUNxE8d+h8f6NJLcCJrgbhC4NcD46KavDd4=
github.com/mitchellh/hashstructure/v2 v2.0.2/go.mod h1:MG3aRVU/N29oo/V/IhBX8GR/zz4kQkprJgF2EVszyDE=
github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY=
github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo=
github.com/moby/spdystream v0.5.0 h1:7r0J1Si3QO/kjRitvSLVVFUjxMEb/YLj6S9FF62JBCU=
github.com/moby/spdystream v0.5.0/go.mod h1:xBAYlnt/ay+11ShkdFKNAG7LsyK/tmNBVvVOwrfMgdI=
github.com/moby/term v0.5.2 h1:6qk3FJAFDs6i/q3W/pQ97SX192qKfZgGjCQqfCJkgzQ=
github.com/moby/term v0.5.2/go.mod h1:d3djjFCrjnB+fl8NJux+EJzu0msscUP+f8it8hPkFLc=
github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg=
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0=
github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0=
github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk=
github.com/modern-go/reflect2 v1.0.3-0.20250322232337-35a7c28c31ee h1:W5t00kpgFdJifH4BDsTlE89Zl93FEloxaWZfGcifgq8=
github.com/modern-go/reflect2 v1.0.3-0.20250322232337-35a7c28c31ee/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk=
github.com/monochromegane/go-gitignore v0.0.0-20200626010858-205db1a8cc00 h1:n6/2gBQ3RWajuToeY6ZtZTIKv2v7ThUy5KKusIT0yc0=
github.com/monochromegane/go-gitignore v0.0.0-20200626010858-205db1a8cc00/go.mod h1:Pm3mSP3c5uWn86xMLZ5Sa7JB9GsEZySvHYXCTK4E9q4=
github.com/mozillazg/docker-credential-acr-helper v0.4.0 h1:Uoh3Z9CcpEDnLiozDx+D7oDgRq7X+R296vAqAumnOcw=
github.com/mozillazg/docker-credential-acr-helper v0.4.0/go.mod h1:2kiicb3OlPytmlNC9XGkLvVC+f0qTiJw3f/mhmeeQBg=
github.com/muesli/ansi v0.0.0-20230316100256-276c6243b2f6 h1:ZK8zHtRHOkbHy6Mmr5D264iyp3TiX5OmNcI5cIARiQI=
github.com/muesli/ansi v0.0.0-20230316100256-276c6243b2f6/go.mod h1:CJlz5H+gyd6CUWT45Oy4q24RdLyn7Md9Vj2/ldJBSIo=
github.com/muesli/cancelreader v0.2.2 h1:3I4Kt4BQjOR54NavqnDogx/MIoWBFa0StPA8ELUXHmA=
github.com/muesli/cancelreader v0.2.2/go.mod h1:3XuTXfFS2VjM+HTLZY9Ak0l6eUKfijIfMUZ4EgX0QYo=
github.com/muesli/reflow v0.3.0 h1:IFsN6K9NfGtjeggFP+68I4chLZV2yIKsXJFNZ+eWh6s=
github.com/muesli/reflow v0.3.0/go.mod h1:pbwTDkVPibjO2kyvBQRBxTWEEGDGq0FlB1BIKtnHY/8=
github.com/muesli/termenv v0.16.0 h1:S5AlUN9dENB57rsbnkPyfdGuWIlkmzJjbFf0Tf5FWUc=
github.com/muesli/termenv v0.16.0/go.mod h1:ZRfOIKPFDYQoDFF4Olj7/QJbW60Ol/kL1pU3VfY/Cnk=
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA=
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ=
github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f h1:y5//uYreIhSUg3J1GEMiLbxo1LJaP8RfCpH6pymGZus=
github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f/go.mod h1:ZdcZmHo+o7JKHSa8/e818NopupXU1YMK5fe1lsApnBw=
github.com/ncruces/go-strftime v0.1.9 h1:bY0MQC28UADQmHmaF5dgpLmImcShSi2kHU9XLdhx/f4=
github.com/ncruces/go-strftime v0.1.9/go.mod h1:Fwc5htZGVVkseilnfgOVb9mKy6w1naJmn9CehxcKcls=
github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno=
github.com/nozzle/throttler v0.0.0-20180817012639-2ea982251481 h1:Up6+btDp321ZG5/zdSLo48H9Iaq0UQGthrhWC6pCxzE=
github.com/nozzle/throttler v0.0.0-20180817012639-2ea982251481/go.mod h1:yKZQO8QE2bHlgozqWDiRVqTFlLQSj30K/6SAK8EeYFw=
github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A=
github.com/nxadm/tail v1.4.8/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+AU=
github.com/nxadm/tail v1.4.11 h1:8feyoE3OzPrcshW5/MJ4sGESc5cqmGkGCWlco4l0bqY=
github.com/nxadm/tail v1.4.11/go.mod h1:OTaG3NK980DZzxbRq6lEuzgU+mug70nY11sMd4JXXHc=
github.com/octago/sflags v0.3.1 h1:LW65z20iAQKteEyjsnnc+/lyoCUnIoRuAocggr6RB6A=
github.com/octago/sflags v0.3.1/go.mod h1:hVUkbnYwMU9kZiZJyOAIVN56YiVMMPxgJ46kRZ19jh0=
github.com/oklog/ulid v1.3.1 h1:EGfNDEx6MqHz8B3uNV6QAib1UR2Lm97sHi3ocA6ESJ4=
github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U=
github.com/oleiade/reflections v1.1.0 h1:D+I/UsXQB4esMathlt0kkZRJZdUDmhv5zGi/HOwYTWo=
github.com/oleiade/reflections v1.1.0/go.mod h1:mCxx0QseeVCHs5Um5HhJeCKVC7AwS8kO67tky4rdisA=
github.com/olekukonko/errors v0.0.0-20250405072817-4e6d85265da6 h1:r3FaAI0NZK3hSmtTDrBVREhKULp8oUeqLT5Eyl2mSPo=
github.com/olekukonko/errors v0.0.0-20250405072817-4e6d85265da6/go.mod h1:ppzxA5jBKcO1vIpCXQ9ZqgDh8iwODz6OXIGKU8r5m4Y=
github.com/olekukonko/ll v0.0.8 h1:sbGZ1Fx4QxJXEqL/6IG8GEFnYojUSQ45dJVwN2FH2fc=
github.com/olekukonko/ll v0.0.8/go.mod h1:En+sEW0JNETl26+K8eZ6/W4UQ7CYSrrgg/EdIYT2H8g=
github.com/olekukonko/tablewriter v1.0.8 h1:f6wJzHg4QUtJdvrVPKco4QTrAylgaU0+b9br/lJxEiQ=
github.com/olekukonko/tablewriter v1.0.8/go.mod h1:H428M+HzoUXC6JU2Abj9IT9ooRmdq9CxuDmKMtrOCMs=
github.com/oliveagle/jsonpath v0.0.0-20180606110733-2e52cf6e6852 h1:Yl0tPBa8QPjGmesFh1D0rDy+q1Twx6FyU7VWHi8wZbI=
github.com/oliveagle/jsonpath v0.0.0-20180606110733-2e52cf6e6852/go.mod h1:eqOVx5Vwu4gd2mmMZvVZsgIqNSaW3xxRThUJ0k/TPk4=
github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk=
github.com/onsi/ginkgo v1.16.4/go.mod h1:dX+/inL/fNMqNlz0e9LfyB9TswhZpCVdJM/Z6Vvnwo0=
github.com/onsi/ginkgo v1.16.5 h1:8xi0RTUf59SOSfEtZMvwTvXYMzG4gV23XVHOZiXNtnE=
github.com/onsi/ginkgo v1.16.5/go.mod h1:+E8gABHa3K6zRBolWtd+ROzc/U5bkGt0FwiG042wbpU=
github.com/onsi/ginkgo/v2 v2.1.3/go.mod h1:vw5CSIxN1JObi/U8gcbwft7ZxR2dgaR70JSE3/PpL4c=
github.com/onsi/ginkgo/v2 v2.27.2 h1:LzwLj0b89qtIy6SSASkzlNvX6WktqurSHwkk2ipF/Ns=
github.com/onsi/ginkgo/v2 v2.27.2/go.mod h1:ArE1D/XhNXBXCBkKOLkbsb2c81dQHCRcF5zwn/ykDRo=
github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY=
github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo=
github.com/onsi/gomega v1.17.0/go.mod h1:HnhC7FXeEQY45zxNK3PPoIUhzk/80Xly9PcubAlGdZY=
github.com/onsi/gomega v1.19.0/go.mod h1:LY+I3pBVzYsTBU1AnDwOSxaYi9WoWiqgwooUqq9yPro=
github.com/onsi/gomega v1.38.2 h1:eZCjf2xjZAqe+LeWvKb5weQ+NcPwX84kqJ0cZNxok2A=
github.com/onsi/gomega v1.38.2/go.mod h1:W2MJcYxRGV63b418Ai34Ud0hEdTVXq9NW9+Sx6uXf3k=
github.com/open-policy-agent/opa v1.4.0 h1:IGO3xt5HhQKQq2axfa9memIFx5lCyaBlG+fXcgHpd3A=
github.com/open-policy-agent/opa v1.4.0/go.mod h1:DNzZPKqKh4U0n0ANxcCVlw8lCSv2c+h5G/3QvSYdWZ8=
github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U=
github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM=
github.com/opencontainers/image-spec v1.1.1 h1:y0fUlFfIZhPF1W537XOLg0/fcx6zcHCJwooC2xJA040=
github.com/opencontainers/image-spec v1.1.1/go.mod h1:qpqAh3Dmcf36wStyyWU+kCeDgrGnAve2nCC8+7h8Q0M=
github.com/opentracing/opentracing-go v1.2.0 h1:uEJPy/1a5RIPAJ0Ov+OIO8OxWu77jEv+1B0VhjKrZUs=
github.com/opentracing/opentracing-go v1.2.0/go.mod h1:GxEUsuufX4nBwe+T+Wl9TAgYrxe9dPLANfrWvHYVTgc=
github.com/package-url/packageurl-go v0.1.2 h1:0H2DQt6DHd/NeRlVwW4EZ4oEI6Bn40XlNPRqegcxuo4=
github.com/package-url/packageurl-go v0.1.2/go.mod h1:uQd4a7Rh3ZsVg5j0lNyAfyxIeGde9yrlhjF78GzeW0c=
github.com/patrickmn/go-cache v2.1.0+incompatible h1:HRMgzkcYKYpi3C8ajMPV8OFXaaRUnok+kx1WdO15EQc=
github.com/patrickmn/go-cache v2.1.0+incompatible/go.mod h1:3Qf8kWWT7OJRJbdiICTKqZju1ZixQ/KpMGzzAfe6+WQ=
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=
github.com/pelletier/go-toml/v2 v2.2.4/go.mod h1:2gIqNv+qfxSVS7cM2xJQKtLSTLUE9V8t9Stt+h56mCY=
github.com/pjbgf/sha1cd v0.3.2 h1:a9wb0bp1oC2TGwStyn0Umc/IGKQnEgF0vVaZ8QF8eo4=
github.com/pjbgf/sha1cd v0.3.2/go.mod h1:zQWigSxVmsHEZow5qaLtPYxpcKMMQpa09ixqBxuCS6A=
github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c h1:+mdjkGKdHQG3305AYmdv1U2eRNDiU2ErMBj1gwrq8eQ=
github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c/go.mod h1:7rwL4CYBLnjLxUqIJNnCWiEdr3bn6IUYi15bNlnbCCU=
github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
github.com/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10 h1:GFCKgmp0tecUJ0sJuv4pzYCqS9+RGSn52M3FUwPs+uo=
github.com/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10/go.mod h1:t/avpk3KcrXxUnYOhZhMXJlSEyie6gQbtLq5NM3loB8=
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/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55 h1:o4JXh1EVt9k/+g42oCprj/FisM4qX9L3sZB3upGN2ZU=
github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55/go.mod h1:OmDBASR4679mdNQnz2pUhc2G8CO2JrUAVFDRBDP/hJE=
github.com/prometheus/client_golang v1.23.2 h1:Je96obch5RDVy3FDMndoUsjAhG5Edi49h0RJWRi/o0o=
github.com/prometheus/client_golang v1.23.2/go.mod h1:Tb1a6LWHB3/SPIzCoaDXI4I8UHKeFTEQ1YCr+0Gyqmg=
github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
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.66.1 h1:h5E0h5/Y8niHc5DlaLlWLArTQI7tMrsfQjHV+d9ZoGs=
github.com/prometheus/common v0.66.1/go.mod h1:gcaUsgf3KfRSwHY4dIMXLPV0K/Wg1oZ8+SbZk/HH/dA=
github.com/prometheus/procfs v0.17.0 h1:FuLQ+05u4ZI+SS/w9+BWEM2TXiHKsUQ9TADiRH7DuK0=
github.com/prometheus/procfs v0.17.0/go.mod h1:oPQLaDAMRbA+u8H5Pbfq+dl3VDAvHxMUOVhe0wYB2zw=
github.com/protocolbuffers/txtpbfmt v0.0.0-20240116145035-ef3ab179eed6 h1:MAzmm+JtFxQwTPb1cVMLkemw2OxLy5AB/d/rxtAwGQQ=
github.com/protocolbuffers/txtpbfmt v0.0.0-20240116145035-ef3ab179eed6/go.mod h1:jgxiZysxFPM+iWKwQwPR+y+Jvo54ARd4EisXxKYpB5c=
github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 h1:N/ElC8H3+5XpJzTSTfLsJV/mx9Q9g7kxmchpfZyxgzM=
github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4=
github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec h1:W09IVJc94icq4NjY3clb7Lk8O1qJ8BdBEF8z0ibU0rE=
github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo=
github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc=
github.com/rivo/uniseg v0.4.7 h1:WUdvkW8uEhrYfLC4ZzdpI2ztxP1I582+49Oc5Mq64VQ=
github.com/rivo/uniseg v0.4.7/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88=
github.com/robfig/cron/v3 v3.0.1 h1:WdRxkvbJztn8LMz/QEvLN5sBU+xKpSqwwUO1Pjr4qDs=
github.com/robfig/cron/v3 v3.0.1/go.mod h1:eQICP3HwyT7UooqI/z+Ov+PtYAWygg1TEWWzGIFLtro=
github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ=
github.com/rogpeppe/go-internal v1.14.1/go.mod h1:MaRKkUm5W0goXpeCfT7UZI6fk/L7L7so1lCWt35ZSgc=
github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
github.com/ryanuber/go-glob v1.0.0 h1:iQh3xXAumdQ+4Ufa5b25cRpC5TYKlno6hsv6Cb3pkBk=
github.com/ryanuber/go-glob v1.0.0/go.mod h1:807d1WSdnB0XRJzKNil9Om6lcp/3a0v4qIHxIXzX/Yc=
github.com/sagikazarmark/locafero v0.9.0 h1:GbgQGNtTrEmddYDSAH9QLRyfAHY12md+8YFTqyMTC9k=
github.com/sagikazarmark/locafero v0.9.0/go.mod h1:UBUyz37V+EdMS3hDF3QWIiVr/2dPrx49OMO0Bn0hJqk=
github.com/sahilm/fuzzy v0.1.1 h1:ceu5RHF8DGgoi+/dR5PsECjCDH1BE3Fnmpo7aVXOdRA=
github.com/sahilm/fuzzy v0.1.1/go.mod h1:VFvziUEIMCrT6A6tw2RFIXPXXmzXbOsSHF0DOI8ZK9Y=
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/sanathkr/go-yaml v0.0.0-20170819195128-ed9d249f429b h1:jUK33OXuZP/l6babJtnLo1qsGvq6G9so9KMflGAm4YA=
github.com/sanathkr/go-yaml v0.0.0-20170819195128-ed9d249f429b/go.mod h1:8458kAagoME2+LN5//WxE71ysZ3B7r22fdgb7qVmXSY=
github.com/sanathkr/yaml v0.0.0-20170819201035-0056894fa522 h1:fOCp11H0yuyAt2wqlbJtbyPzSgaxHTv8uN1pMpkG1t8=
github.com/sanathkr/yaml v0.0.0-20170819201035-0056894fa522/go.mod h1:tQTYKOQgxoH3v6dEmdHiz4JG+nbxWwM5fgPQUpSZqVQ=
github.com/sassoftware/relic v7.2.1+incompatible h1:Pwyh1F3I0r4clFJXkSI8bOyJINGqpgjJU3DYAZeI05A=
github.com/sassoftware/relic v7.2.1+incompatible/go.mod h1:CWfAxv73/iLZ17rbyhIEq3K9hs5w6FpNMdUT//qR+zk=
github.com/sassoftware/relic/v7 v7.6.2 h1:rS44Lbv9G9eXsukknS4mSjIAuuX+lMq/FnStgmZlUv4=
github.com/sassoftware/relic/v7 v7.6.2/go.mod h1:kjmP0IBVkJZ6gXeAu35/KCEfca//+PKM6vTAsyDPY+k=
github.com/secure-systems-lab/go-securesystemslib v0.10.0 h1:l+H5ErcW0PAehBNrBxoGv1jjNpGYdZ9RcheFkB2WI14=
github.com/secure-systems-lab/go-securesystemslib v0.10.0/go.mod h1:MRKONWmRoFzPNQ9USRF9i1mc7MvAVvF1LlW8X5VWDvk=
github.com/sergi/go-diff v1.1.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM=
github.com/sergi/go-diff v1.4.0 h1:n/SP9D5ad1fORl+llWyN+D6qoUETXNZARKjyY2/KVCw=
github.com/sergi/go-diff v1.4.0/go.mod h1:A0bzQcvG0E7Rwjx0REVgAGH58e96+X0MeOfepqsbeW4=
github.com/shibumi/go-pathspec v1.3.0 h1:QUyMZhFo0Md5B8zV8x2tesohbb5kfbpTi9rBnKh5dkI=
github.com/shibumi/go-pathspec v1.3.0/go.mod h1:Xutfslp817l2I1cZvgcfeMQJG5QnU2lh5tVaaMCl3jE=
github.com/shirou/gopsutil/v3 v3.24.5 h1:i0t8kL+kQTvpAYToeuiVk3TgDeKOFioZO3Ztz/iZ9pI=
github.com/shirou/gopsutil/v3 v3.24.5/go.mod h1:bsoOS1aStSs9ErQ1WWfxllSeS1K5D+U30r2NfcubMVk=
github.com/sigstore/cosign/v2 v2.4.1 h1:b8UXEfJFks3hmTwyxrRNrn6racpmccUycBHxDMkEPvU=
github.com/sigstore/cosign/v2 v2.4.1/go.mod h1:GvzjBeUKigI+XYnsoVQDmMAsMMc6engxztRSuxE+x9I=
github.com/sigstore/fulcio v1.6.3 h1:Mvm/bP6ELHgazqZehL8TANS1maAkRoM23CRAdkM4xQI=
github.com/sigstore/fulcio v1.6.3/go.mod h1:5SDgLn7BOUVLKe1DwOEX3wkWFu5qEmhUlWm+SFf0GH8=
github.com/sigstore/protobuf-specs v0.5.0 h1:F8YTI65xOHw70NrvPwJ5PhAzsvTnuJMGLkA4FIkofAY=
github.com/sigstore/protobuf-specs v0.5.0/go.mod h1:+gXR+38nIa2oEupqDdzg4qSBT0Os+sP7oYv6alWewWc=
github.com/sigstore/rekor v1.3.9 h1:sUjRpKVh/hhgqGMs0t+TubgYsksArZ6poLEC3MsGAzU=
github.com/sigstore/rekor v1.3.9/go.mod h1:xThNUhm6eNEmkJ/SiU/FVU7pLY2f380fSDZFsdDWlcM=
github.com/sigstore/sigstore v1.10.3 h1:s7fBYYOzW/2Vd0nND2ZdpWySb5vRF2u9eix/NZMHJm0=
github.com/sigstore/sigstore v1.10.3/go.mod h1:T26vXIkpnGEg391v3TaZ8EERcXbnjtZb/1erh5jbIQk=
github.com/sigstore/sigstore-go v0.6.1 h1:tGkkv1oDIER+QYU5MrjqlttQOVDWfSkmYwMqkJhB/cg=
github.com/sigstore/sigstore-go v0.6.1/go.mod h1:Xe5GHmUeACRFbomUWzVkf/xYCn8xVifb9DgqJrV2dIw=
github.com/sigstore/sigstore/pkg/signature/kms/aws v1.8.12 h1:EC3UmIaa7nV9sCgSpVevmvgvTYTkMqyrRbj5ojPp7tE=
github.com/sigstore/sigstore/pkg/signature/kms/aws v1.8.12/go.mod h1:aw60vs3crnQdM/DYH+yF2P0MVKtItwAX34nuaMrY7Lk=
github.com/sigstore/sigstore/pkg/signature/kms/azure v1.8.12 h1:FPpliDTywSy0woLHMAdmTSZ5IS/lVBZ0dY0I+2HmnSY=
github.com/sigstore/sigstore/pkg/signature/kms/azure v1.8.12/go.mod h1:NkPiz4XA0JcBSXzJUrjMj7Xi7oSTew1Ip3Zmt56mHlw=
github.com/sigstore/sigstore/pkg/signature/kms/gcp v1.8.12 h1:kweBChR6M9FEvmxN3BMEcl7SNnwxTwKF7THYFKLOE5U=
github.com/sigstore/sigstore/pkg/signature/kms/gcp v1.8.12/go.mod h1:6+d+A6oYt1W5OgtzgEVb21V7tAZ/C2Ihtzc5MNJbayY=
github.com/sigstore/sigstore/pkg/signature/kms/hashivault v1.8.12 h1:jvY1B9bjP+tKzdKDyuq5K7O19CG2IKzGJNTy5tuL2Gs=
github.com/sigstore/sigstore/pkg/signature/kms/hashivault v1.8.12/go.mod h1:2uEeOb8xE2RC6OvzxKux1wkS39Zv8gA27z92m49xUTc=
github.com/sigstore/timestamp-authority v1.2.2 h1:X4qyutnCQqJ0apMewFyx+3t7Tws00JQ/JonBiu3QvLE=
github.com/sigstore/timestamp-authority v1.2.2/go.mod h1:nEah4Eq4wpliDjlY342rXclGSO7Kb9hoRrl9tqLW13A=
github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0=
github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ=
github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ=
github.com/skeema/knownhosts v1.3.1 h1:X2osQ+RAjK76shCbvhHHHVl3ZlgDm8apHEHFqRjnBY8=
github.com/skeema/knownhosts v1.3.1/go.mod h1:r7KTdC8l4uxWRyK2TpQZ/1o5HaSzh06ePQNxPwTcfiY=
github.com/smallstep/assert v0.0.0-20200723003110-82e2b9b3b262 h1:unQFBIznI+VYD1/1fApl1A+9VcBk+9dcqGfnePY87LY=
github.com/smallstep/assert v0.0.0-20200723003110-82e2b9b3b262/go.mod h1:MyOHs9Po2fbM1LHej6sBUT8ozbxmMOFG+E+rx/GSGuc=
github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc=
github.com/smartystreets/assertions v1.1.0/go.mod h1:tcbTF8ujkAEcZ8TElKY+i30BzYlVhC/LOxJk7iOWnoo=
github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA=
github.com/sourcegraph/conc v0.3.0 h1:OQTbbt6P72L20UqAkXXuLOj79LfEanQ+YQFNpLA9ySo=
github.com/sourcegraph/conc v0.3.0/go.mod h1:Sdozi7LEKbFPqYX2/J+iBAM6HpqSLTASQIKqDmF7Mt0=
github.com/spf13/afero v1.15.0 h1:b/YBCLWAJdFWJTN9cLhiXXcD7mzKn9Dm86dNnfyQw1I=
github.com/spf13/afero v1.15.0/go.mod h1:NC2ByUVxtQs4b3sIUphxK0NioZnmxgyCrfzeuq8lxMg=
github.com/spf13/cast v1.9.2 h1:SsGfm7M8QOFtEzumm7UZrZdLLquNdzFYfIbEXntcFbE=
github.com/spf13/cast v1.9.2/go.mod h1:jNfB8QC9IA6ZuY2ZjDp0KtFO2LZZlg4S/7bzP6qqeHo=
github.com/spf13/cobra v1.10.2 h1:DMTTonx5m65Ic0GOoRY2c16WCbHxOOw6xxezuLaBpcU=
github.com/spf13/cobra v1.10.2/go.mod h1:7C1pvHqHw5A4vrJfjNwvOdzYu0Gml16OCs2GRiTUUS4=
github.com/spf13/pflag v1.0.9/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/spf13/viper v1.20.1 h1:ZMi+z/lvLyPSCoNtFCpqjy0S4kPbirhpTMwl8BkW9X4=
github.com/spf13/viper v1.20.1/go.mod h1:P9Mdzt1zoHIG8m2eZQinpiBjo6kCmZSKBClNNqjJvu4=
github.com/spiffe/go-spiffe/v2 v2.6.0 h1:l+DolpxNWYgruGQVV0xsfeya3CsC7m8iBzDnMpsbLuo=
github.com/spiffe/go-spiffe/v2 v2.6.0/go.mod h1:gm2SeUoMZEtpnzPNs2Csc0D/gX33k1xIx7lEzqblHEs=
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
github.com/stretchr/objx v0.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE=
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=
github.com/stretchr/objx v0.5.2 h1:xuMeJ0Sdp5ZMRXx/aWO6RZxdr3beISkG5/G/aIRr3pY=
github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA=
github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA=
github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
github.com/stretchr/testify v1.7.2/go.mod h1:R6va5+xMeoiuVRoj+gSkQ7d3FALtqAAGI1FQKckRals=
github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
github.com/stretchr/testify v1.8.2/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=
github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U=
github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U=
github.com/subosito/gotenv v1.6.0 h1:9NlTDc1FTs4qu0DDq7AEtTPNw6SVm7uBMsUCUjABIf8=
github.com/subosito/gotenv v1.6.0/go.mod h1:Dk4QP5c2W3ibzajGcXpNraDfq2IrhjMIvMSWPKKo0FU=
github.com/syndtr/goleveldb v1.0.1-0.20220721030215-126854af5e6d h1:vfofYNRScrDdvS342BElfbETmL1Aiz3i2t0zfRj16Hs=
github.com/syndtr/goleveldb v1.0.1-0.20220721030215-126854af5e6d/go.mod h1:RRCYJbIwD5jmqPI9XoAFR0OcDxqUctll6zUj/+B4S48=
github.com/tchap/go-patricia/v2 v2.3.2 h1:xTHFutuitO2zqKAQ5rCROYgUb7Or/+IC3fts9/Yc7nM=
github.com/tchap/go-patricia/v2 v2.3.2/go.mod h1:VZRHKAb53DLaG+nA9EaYYiaEx6YztwDlLElMsnSHD4k=
github.com/thales-e-security/pool v0.0.2 h1:RAPs4q2EbWsTit6tpzuvTFlgFRJ3S8Evf5gtvVDbmPg=
github.com/thales-e-security/pool v0.0.2/go.mod h1:qtpMm2+thHtqhLzTwgDBj/OuNnMpupY8mv0Phz0gjhU=
github.com/theupdateframework/go-tuf v0.7.0 h1:CqbQFrWo1ae3/I0UCblSbczevCCbS31Qvs5LdxRWqRI=
github.com/theupdateframework/go-tuf v0.7.0/go.mod h1:uEB7WSY+7ZIugK6R1hiBMBjQftaFzn7ZCDJcp1tCUug=
github.com/theupdateframework/go-tuf/v2 v2.3.1 h1:fReZUTLvPdqIL8Rd9xEKPmaxig8GIXe0kS4RSEaRfaM=
github.com/theupdateframework/go-tuf/v2 v2.3.1/go.mod h1:9S0Srkf3c13FelsOyt5OyG3ZZDq9OJDA4IILavrt72Y=
github.com/tidwall/gjson v1.18.0 h1:FIDeeyB800efLX89e5a8Y0BNH+LOngJyGrIWxG2FKQY=
github.com/tidwall/gjson v1.18.0/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk=
github.com/tidwall/match v1.1.1 h1:+Ho715JplO36QYgwN9PGYNhgZvoUSc9X2c80KVTi+GA=
github.com/tidwall/match v1.1.1/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM=
github.com/tidwall/pretty v1.2.1 h1:qjsOFOWWQl+N3RsoF5/ssm1pHmJJwhjlSbZ51I6wMl4=
github.com/tidwall/pretty v1.2.1/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU=
github.com/tidwall/sjson v1.2.5 h1:kLy8mja+1c9jlljvWTlSazM7cKDRfJuR/bOJhcY5NcY=
github.com/tidwall/sjson v1.2.5/go.mod h1:Fvgq9kS/6ociJEDnK0Fk1cpYF4FIW6ZF7LAe+6jwd28=
github.com/tink-crypto/tink-go-awskms/v2 v2.1.0 h1:N9UxlsOzu5mttdjhxkDLbzwtEecuXmlxZVo/ds7JKJI=
github.com/tink-crypto/tink-go-awskms/v2 v2.1.0/go.mod h1:PxSp9GlOkKL9rlybW804uspnHuO9nbD98V/fDX4uSis=
github.com/tink-crypto/tink-go-gcpkms/v2 v2.2.0 h1:3B9i6XBXNTRspfkTC0asN5W0K6GhOSgcujNiECNRNb0=
github.com/tink-crypto/tink-go-gcpkms/v2 v2.2.0/go.mod h1:jY5YN2BqD/KSCHM9SqZPIpJNG/u3zwfLXHgws4x2IRw=
github.com/tink-crypto/tink-go/v2 v2.5.0 h1:B8KLF6AofxdBIE4UJIaFbmoj5/1ehEtt7/MmzfI4Zpw=
github.com/tink-crypto/tink-go/v2 v2.5.0/go.mod h1:2WbBA6pfNsAfBwDCggboaHeB2X29wkU8XHtGwh2YIk8=
github.com/tjfoc/gmsm v1.3.2/go.mod h1:HaUcFuY0auTiaHB9MHFGCPx5IaLhTUd2atbCFBQXn9w=
github.com/tjfoc/gmsm v1.4.1 h1:aMe1GlZb+0bLjn+cKTPEvvn9oUEBlJitaZiiBwsbgho=
github.com/tjfoc/gmsm v1.4.1/go.mod h1:j4INPkHWMrhJb38G+J6W4Tw0AbuN8Thu3PbdVYhVcTE=
github.com/transparency-dev/merkle v0.0.2 h1:Q9nBoQcZcgPamMkGn7ghV8XiTZ/kRxn1yCG81+twTK4=
github.com/transparency-dev/merkle v0.0.2/go.mod h1:pqSy+OXefQ1EDUVmAJ8MUhHB9TXGuzVAT58PqBoHz1A=
github.com/urfave/sflags v0.4.1 h1:9BKteZiMaLlgfMm8eYbFge3eRAUsrJXs4HsCemdDl+A=
github.com/urfave/sflags v0.4.1/go.mod h1:NCIz2mBC+woyrkl88PeiKAuQUKJdEre2Y4at5SreAeU=
github.com/vbatts/tar-split v0.12.2 h1:w/Y6tjxpeiFMR47yzZPlPj/FcPLpXbTUi/9H7d3CPa4=
github.com/vbatts/tar-split v0.12.2/go.mod h1:eF6B6i6ftWQcDqEn3/iGFRFRo8cBIMSJVOpnNdfTMFA=
github.com/vladimirvivien/gexe v0.5.0 h1:AWBVaYnrTsGYBktXvcO0DfWPeSiZxn6mnQ5nvL+A1/A=
github.com/vladimirvivien/gexe v0.5.0/go.mod h1:3gjgTqE2c0VyHnU5UOIwk7gyNzZDGulPb/DJPgcw64E=
github.com/weaveworks/eksctl v0.221.0 h1:sJEuVRU+8dia8rj/4VmB8DwKArmGhG7uwaqdUYJhqv0=
github.com/weaveworks/eksctl v0.221.0/go.mod h1:fkWnFg8h/h24bl5DmyRgJIERB/7g5zqIeNgSklfeH5Q=
github.com/x448/float16 v0.8.4 h1:qLwI1I70+NjRFUR3zs1JPUCgaCXSh3SW62uAKT1mSBM=
github.com/x448/float16 v0.8.4/go.mod h1:14CWIYCyZA/cWjXOioeEpHeN/83MdbZDRQHoFcYsOfg=
github.com/xanzy/go-gitlab v0.109.0 h1:RcRme5w8VpLXTSTTMZdVoQWY37qTJWg+gwdQl4aAttE=
github.com/xanzy/go-gitlab v0.109.0/go.mod h1:wKNKh3GkYDMOsGmnfuX+ITCmDuSDWFO0G+C4AygL9RY=
github.com/xanzy/ssh-agent v0.3.3 h1:+/15pJfg/RsTxqYcX6fHqOXZwwMP+2VyYWJeWM2qQFM=
github.com/xanzy/ssh-agent v0.3.3/go.mod h1:6dzNDKs0J9rVPHPhaGCukekBHKqfl+L3KghI1Bc68Uw=
github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb h1:zGWFAtiMcyryUHoUjUJX0/lt1H2+i2Ka2n+D3DImSNo=
github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU=
github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 h1:EzJWgHovont7NscjpAxXsDA8S8BMYve8Y5+7cuRE7R0=
github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415/go.mod h1:GwrjFmJcFw6At/Gs6z4yjiIwzuJ1/+UwLxMQDVQXShQ=
github.com/xlab/treeprint v1.2.0 h1:HzHnuAF1plUN2zGlAFHbSQP2qJ0ZAD3XF5XD7OesXRQ=
github.com/xlab/treeprint v1.2.0/go.mod h1:gj5Gd3gPdKtR1ikdDK6fnFLdmIS0X30kTTuNd/WEJu0=
github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e h1:JVG44RsyaB9T2KIHavMF/ppJZNG9ZpyihvCd0w101no=
github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e/go.mod h1:RbqR21r5mrJuqunuUZ/Dhy/avygyECGrLceyNeo4LiM=
github.com/yashtewari/glob-intersection v0.2.0 h1:8iuHdN88yYuCzCdjt0gDe+6bAhUwBeEWqThExu54RFg=
github.com/yashtewari/glob-intersection v0.2.0/go.mod h1:LK7pIC3piUjovexikBbJ26Yml7g8xa5bsjfx2v1fwok=
github.com/ysmood/fetchup v0.2.3 h1:ulX+SonA0Vma5zUFXtv52Kzip/xe7aj4vqT5AJwQ+ZQ=
github.com/ysmood/fetchup v0.2.3/go.mod h1:xhibcRKziSvol0H1/pj33dnKrYyI2ebIvz5cOOkYGns=
github.com/ysmood/goob v0.4.0 h1:HsxXhyLBeGzWXnqVKtmT9qM7EuVs/XOgkX7T6r1o1AQ=
github.com/ysmood/goob v0.4.0/go.mod h1:u6yx7ZhS4Exf2MwciFr6nIM8knHQIE22lFpWHnfql18=
github.com/ysmood/got v0.40.0 h1:ZQk1B55zIvS7zflRrkGfPDrPG3d7+JOza1ZkNxcc74Q=
github.com/ysmood/got v0.40.0/go.mod h1:W7DdpuX6skL3NszLmAsC5hT7JAhuLZhByVzHTq874Qg=
github.com/ysmood/gson v0.7.3 h1:QFkWbTH8MxyUTKPkVWAENJhxqdBa4lYTQWqZCiLG6kE=
github.com/ysmood/gson v0.7.3/go.mod h1:3Kzs5zDl21g5F/BlLTNcuAGAYLKt2lV5G8D1zF3RNmg=
github.com/ysmood/leakless v0.9.0 h1:qxCG5VirSBvmi3uynXFkcnLMzkphdh3xx5FtrORwDCU=
github.com/ysmood/leakless v0.9.0/go.mod h1:R8iAXPRaG97QJwqxs74RdwzcRHT1SWCGTNqY8q0JvMQ=
github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
github.com/yuin/goldmark v1.1.30/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
github.com/yusufpapurcu/wmi v1.2.4 h1:zFUKzehAFReQwLys1b/iSMl+JQGSCSjtVqQn9bBrPo0=
github.com/yusufpapurcu/wmi v1.2.4/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0=
github.com/zalando/go-keyring v0.2.3 h1:v9CUu9phlABObO4LPWycf+zwMG7nlbb3t/B5wa97yms=
github.com/zalando/go-keyring v0.2.3/go.mod h1:HL4k+OXQfJUWaMnqyuSOc0drfGPX2b51Du6K+MRgZMk=
gitlab.alpinelinux.org/alpine/go v0.10.0 h1:/ekBiNqDSXZpK+AfZx4lrtVwKTDrWz3N3ck0S+fCxwU=
gitlab.alpinelinux.org/alpine/go v0.10.0/go.mod h1:LKzOqYjGTZNLwcHl+c2I5VNioQio7agzRFvlGB9Owk4=
go.mongodb.org/mongo-driver v1.17.2 h1:gvZyk8352qSfzyZ2UMWcpDpMSGEr1eqE4T793SqyhzM=
go.mongodb.org/mongo-driver v1.17.2/go.mod h1:Hy04i7O2kC4RS06ZrhPRqj/u4DTYkFDAAccj+rVKqgQ=
go.opentelemetry.io/auto/sdk v1.2.1 h1:jXsnJ4Lmnqd11kwkBV2LgLoFMZKizbCi5fNZ/ipaZ64=
go.opentelemetry.io/auto/sdk v1.2.1/go.mod h1:KRTj+aOaElaLi+wW1kO/DZRXwkF4C5xPbEe3ZiIhN7Y=
go.opentelemetry.io/contrib/detectors/gcp v1.39.0 h1:kWRNZMsfBHZ+uHjiH4y7Etn2FK26LAGkNFw7RHv1DhE=
go.opentelemetry.io/contrib/detectors/gcp v1.39.0/go.mod h1:t/OGqzHBa5v6RHZwrDBJ2OirWc+4q/w2fTbLZwAKjTk=
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.63.0 h1:YH4g8lQroajqUwWbq/tr2QX1JFmEXaDLgG+ew9bLMWo=
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.63.0/go.mod h1:fvPi2qXDqFs8M4B4fmJhE92TyQs9Ydjlg3RvfUp+NbQ=
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.63.0 h1:RbKq8BG0FI8OiXhBfcRtqqHcZcka+gU3cskNuf05R18=
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.63.0/go.mod h1:h06DGIukJOevXaj/xrNjhi/2098RZzcLTbc0jDAUbsg=
go.opentelemetry.io/otel v1.39.0 h1:8yPrr/S0ND9QEfTfdP9V+SiwT4E0G7Y5MO7p85nis48=
go.opentelemetry.io/otel v1.39.0/go.mod h1:kLlFTywNWrFyEdH0oj2xK0bFYZtHRYUdv1NklR/tgc8=
go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.38.0 h1:GqRJVj7UmLjCVyVJ3ZFLdPRmhDUp2zFmQe3RHIOsw24=
go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.38.0/go.mod h1:ri3aaHSmCTVYu2AWv44YMauwAQc0aqI9gHKIcSbI1pU=
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.38.0 h1:lwI4Dc5leUqENgGuQImwLo4WnuXFPetmPpkLi2IrX54=
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.38.0/go.mod h1:Kz/oCE7z5wuyhPxsXDuaPteSWqjSBD5YaSdbxZYGbGk=
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.35.0 h1:xJ2qHD0C1BeYVTLLR9sX12+Qb95kfeD/byKj6Ky1pXg=
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.35.0/go.mod h1:u5BF1xyjstDowA1R5QAO9JHzqK+ublenEW/dyqTjBVk=
go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.35.0 h1:PB3Zrjs1sG1GBX51SXyTSoOTqcDglmsk7nT6tkKPb/k=
go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.35.0/go.mod h1:U2R3XyVPzn0WX7wOIypPuptulsMcPDPs/oiSVOMVnHY=
go.opentelemetry.io/otel/metric v1.39.0 h1:d1UzonvEZriVfpNKEVmHXbdf909uGTOQjA0HF0Ls5Q0=
go.opentelemetry.io/otel/metric v1.39.0/go.mod h1:jrZSWL33sD7bBxg1xjrqyDjnuzTUB0x1nBERXd7Ftcs=
go.opentelemetry.io/otel/sdk v1.39.0 h1:nMLYcjVsvdui1B/4FRkwjzoRVsMK8uL/cj0OyhKzt18=
go.opentelemetry.io/otel/sdk v1.39.0/go.mod h1:vDojkC4/jsTJsE+kh+LXYQlbL8CgrEcwmt1ENZszdJE=
go.opentelemetry.io/otel/sdk/metric v1.39.0 h1:cXMVVFVgsIf2YL6QkRF4Urbr/aMInf+2WKg+sEJTtB8=
go.opentelemetry.io/otel/sdk/metric v1.39.0/go.mod h1:xq9HEVH7qeX69/JnwEfp6fVq5wosJsY1mt4lLfYdVew=
go.opentelemetry.io/otel/trace v1.39.0 h1:2d2vfpEDmCJ5zVYz7ijaJdOF59xLomrvj7bjt6/qCJI=
go.opentelemetry.io/otel/trace v1.39.0/go.mod h1:88w4/PnZSazkGzz/w84VHpQafiU4EtqqlVdxWy+rNOA=
go.opentelemetry.io/proto/otlp v1.7.1 h1:gTOMpGDb0WTBOP8JaO72iL3auEZhVmAQg4ipjOVAtj4=
go.opentelemetry.io/proto/otlp v1.7.1/go.mod h1:b2rVh6rfI/s2pHWNlB7ILJcRALpcNDzKhACevjI+ZnE=
go.step.sm/crypto v0.57.0 h1:YjoRQDaJYAxHLVwjst0Bl0xcnoKzVwuHCJtEo2VSHYU=
go.step.sm/crypto v0.57.0/go.mod h1:+Lwp5gOVPaTa3H/Ul/TzGbxQPXZZcKIUGMS0lG6n9Go=
go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto=
go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE=
go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0=
go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y=
go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8=
go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E=
go.yaml.in/yaml/v2 v2.4.3 h1:6gvOSjQoTB3vt1l+CU+tSyi/HOjfOjRLJ4YwYZGwRO0=
go.yaml.in/yaml/v2 v2.4.3/go.mod h1:zSxWcmIDjOzPXpjlTTbAsKokqkDNAVtZO0WOMiT90s8=
go.yaml.in/yaml/v3 v3.0.4 h1:tfq32ie2Jv2UxXFdLJdh3jXuOzWiL1fo0bu/FbuKpbc=
go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg=
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/crypto v0.0.0-20191219195013-becbf705a915/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
golang.org/x/crypto v0.0.0-20200510223506-06a226fb4e37/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
golang.org/x/crypto v0.0.0-20201012173705-84dcc777aaee/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
golang.org/x/crypto v0.0.0-20211215153901-e495a2d5b3d3/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
golang.org/x/crypto v0.0.0-20220722155217-630584e8d5aa/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
golang.org/x/crypto v0.6.0/go.mod h1:OFC/31mSvZgRz0V1QTNCzfAI1aIRzbiufJtkMIlEp58=
golang.org/x/crypto v0.14.0/go.mod h1:MVFd36DqK4CsrnJYDkBA3VC4m2GkXAM0PvzMCn4JQf4=
golang.org/x/crypto v0.18.0/go.mod h1:R0j02AL6hcrfOiy9T4ZYp/rcWeMxM3L6QYxlOuEG1mg=
golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU=
golang.org/x/crypto v0.46.0 h1:cKRW/pmt1pKAfetfu+RCEvjvZkA9RimPbh7bhFjGVBU=
golang.org/x/crypto v0.46.0/go.mod h1:Evb/oLKmMraqjZ2iQTwDwvCtJkczlDuTmdJXoZVzqU0=
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
golang.org/x/exp v0.0.0-20251219203646-944ab1f22d93 h1:fQsdNF2N+/YewlRZiricy4P1iimyPKZ/xwniHj8Q2a0=
golang.org/x/exp v0.0.0-20251219203646-944ab1f22d93/go.mod h1:EPRbTFwzwjXj9NpYyyrvenVh9Y+GFeEvMNh7Xuz7xgU=
golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU=
golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=
golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
golang.org/x/mod v0.31.0 h1:HaW9xtz0+kOcWKwli0ZXy79Ix+UW/vOfmWI5QVd2tgI=
golang.org/x/mod v0.31.0/go.mod h1:43JraMp9cGx1Rx3AqioxrbrhNsLl2l/iNAvuBkrezpg=
golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20200506145744-7e3656a0809f/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
golang.org/x/net v0.0.0-20201010224723-4f7140c49acb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
golang.org/x/net v0.0.0-20210428140749-89ef3d95e781/go.mod h1:OJAsFXCWl8Ukc7SiCT/9KSuxbyM7479/AVlXFRxuMCk=
golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk=
golang.org/x/net v0.0.0-20220607020251-c690dde0001d/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg=
golang.org/x/net v0.17.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE=
golang.org/x/net v0.20.0/go.mod h1:z8BVo6PvndSri0LbOE3hAn0apkU+1YvI6E70E9jsnvY=
golang.org/x/net v0.48.0 h1:zyQRTTrjc33Lhh0fBgT/H3oZq9WuvRR5gPC70xpDiQU=
golang.org/x/net v0.48.0/go.mod h1:+ndRgGjkh8FGtu1w1FGbEC31if4VrNVMuKTgcAAnQRY=
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
golang.org/x/oauth2 v0.34.0 h1:hqK/t4AKgbqWkdkcAeI8XLmbK+4m4G5YeQRrmiotGlw=
golang.org/x/oauth2 v0.34.0/go.mod h1:lzm5WQJQwKZ3nwavOZ3IS5Aulzxi68dUSgRHujetwEA=
golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
golang.org/x/sync v0.19.0 h1:vV+1eWNmZ5geRlYjzm2adRgW2/mcpevXNg50YZtPCE4=
golang.org/x/sync v0.19.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI=
golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
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-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200509044756-6aff5f38e54f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20201204225414-ed752295db88/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210112080510-489259a85091/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220412211240-33da011f77ad/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.16.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/sys v0.39.0 h1:CvCKL8MeisomCi6qNZ+wbb0DN9E5AATixKsvNtMoMFk=
golang.org/x/sys v0.39.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks=
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k=
golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo=
golang.org/x/term v0.13.0/go.mod h1:LTmsnFJwVN6bCy1rVCoS+qHT1HhALEFxKncY3WNNh4U=
golang.org/x/term v0.16.0/go.mod h1:yn7UURbUtPyrVJPGPq404EukNFxcm/foM+bV/bfcDsY=
golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk=
golang.org/x/term v0.38.0 h1:PQ5pkm/rLO6HnxFR7N2lJHOZX6Kez5Y1gDSJla6jo7Q=
golang.org/x/term v0.38.0/go.mod h1:bSEAKrOT1W+VSu9TSCMtoGEOUcKxOKgl3LE5QEF/xVg=
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8=
golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE=
golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
golang.org/x/text v0.32.0 h1:ZD01bjUt1FQ9WJ0ClOL5vxgxOI/sVCNgX1YtKwcY0mU=
golang.org/x/text v0.32.0/go.mod h1:o/rUWzghvpD5TXrTIBuJU77MTaN0ljMWE47kxGJQ7jY=
golang.org/x/time v0.13.0 h1:eUlYslOIt32DgYD6utsuUeHs4d7AsEYLuIAdg7FlYgI=
golang.org/x/time v0.13.0/go.mod h1:eL/Oa2bBBK0TkX57Fyni+NgnyQQN4LitPmob2Hjnqw4=
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY=
golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/tools v0.0.0-20200509030707-2212a7e161a5/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
golang.org/x/tools v0.0.0-20201224043029-2b0845dc783e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=
golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU=
golang.org/x/tools v0.40.0 h1:yLkxfA+Qnul4cs9QA3KnlFu0lVmd8JJfoq+E41uSutA=
golang.org/x/tools v0.40.0/go.mod h1:Ik/tzLRlbscWpqqMRjyWYDisX8bG13FrdXp3o4Sr9lc=
golang.org/x/tools/go/vcs v0.1.0-deprecated h1:cOIJqWBl99H1dH5LWizPa+0ImeeJq3t3cJjaeOWUAL4=
golang.org/x/tools/go/vcs v0.1.0-deprecated/go.mod h1:zUrvATBAvEI9535oC0yWYsLsHIV4Z7g63sNPVMtuBy8=
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20220517211312-f3a8303e98df/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8=
golang.org/x/xerrors v0.0.0-20240716161551-93cc26a95ae9 h1:LLhsEBxRTBLuKlQxFBYUOU8xyFgXv6cOTp2HASDlsDk=
golang.org/x/xerrors v0.0.0-20240716161551-93cc26a95ae9/go.mod h1:NDW/Ps6MPRej6fsCIbMTohpP40sJ/P/vI1MoTEGwX90=
gomodules.xyz/jsonpatch/v2 v2.4.0 h1:Ci3iUJyx9UeRx7CeFN8ARgGbkESwJK+KB9lLcWxY/Zw=
gomodules.xyz/jsonpatch/v2 v2.4.0/go.mod h1:AH3dM2RI6uoBZxn3LVrfvJ3E0/9dG4cSrbuBJT4moAY=
gonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk=
gonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E=
google.golang.org/api v0.242.0 h1:7Lnb1nfnpvbkCiZek6IXKdJ0MFuAZNAJKQfA1ws62xg=
google.golang.org/api v0.242.0/go.mod h1:cOVEm2TpdAGHL2z+UwyS+kmlGr3bVWQQ6sYEqkKje50=
google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM=
google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc=
google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc=
google.golang.org/genproto v0.0.0-20250603155806-513f23925822 h1:rHWScKit0gvAPuOnu87KpaYtjK5zBMLcULh7gxkCXu4=
google.golang.org/genproto v0.0.0-20250603155806-513f23925822/go.mod h1:HubltRL7rMh0LfnQPkMH4NPDFEWp0jw3vixw7jEM53s=
google.golang.org/genproto/googleapis/api v0.0.0-20251202230838-ff82c1b0f217 h1:fCvbg86sFXwdrl5LgVcTEvNC+2txB5mgROGmRL5mrls=
google.golang.org/genproto/googleapis/api v0.0.0-20251202230838-ff82c1b0f217/go.mod h1:+rXWjjaukWZun3mLfjmVnQi18E1AsFbDN9QdJ5YXLto=
google.golang.org/genproto/googleapis/rpc v0.0.0-20251202230838-ff82c1b0f217 h1:gRkg/vSppuSQoDjxyiGfN4Upv/h/DQmIR10ZU8dh4Ww=
google.golang.org/genproto/googleapis/rpc v0.0.0-20251202230838-ff82c1b0f217/go.mod h1:7i2o+ce6H/6BluujYR+kqX3GKH+dChPTQU19wjRPiGk=
google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=
google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg=
google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY=
google.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak=
google.golang.org/grpc v1.79.3 h1:sybAEdRIEtvcD68Gx7dmnwjZKlyfuc61Dyo9pGXXkKE=
google.golang.org/grpc v1.79.3/go.mod h1:KmT0Kjez+0dde/v2j9vzwoAScgEPx/Bw1CYChhHLrHQ=
google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8=
google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0=
google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM=
google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE=
google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo=
google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw=
google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
google.golang.org/protobuf v1.36.10 h1:AYd7cD/uASjIL6Q9LiTjz8JLcrh/88q5UObnmY3aOOE=
google.golang.org/protobuf v1.36.10/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
gopkg.in/evanphx/json-patch.v4 v4.13.0 h1:czT3CmqEaQ1aanPc5SdlgQrrEIb8w/wwCvWWnfEbYzo=
gopkg.in/evanphx/json-patch.v4 v4.13.0/go.mod h1:p8EYWUEYMpynmqDbY58zCKCFZw8pRWMG4EsWvDvM72M=
gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys=
gopkg.in/gcfg.v1 v1.2.3 h1:m8OOJ4ccYHnx2f4gQwpno8nAX5OGOh7RLaaz0pj3Ogs=
gopkg.in/gcfg.v1 v1.2.3/go.mod h1:yesOnuUOFQAhST5vPY4nbZsb/huCgGGXlipJsBn0b3o=
gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc=
gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw=
gopkg.in/ini.v1 v1.56.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=
gopkg.in/ini.v1 v1.67.0 h1:Dgnx+6+nfE+IfzjUEISNeydPJh9AXNNsWbGP9KzCsOA=
gopkg.in/ini.v1 v1.67.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=
gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ=
gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw=
gopkg.in/warnings.v0 v0.1.2 h1:wFXVbFY8DY5/xOe1ECiWdKCzZlxgshcYVNkBHstARME=
gopkg.in/warnings.v0 v0.1.2/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI=
gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY=
gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
gotest.tools/v3 v3.5.1 h1:EENdUnS3pdur5nybKYIh2Vfgc8IUNBjxDPSjtiJcOzU=
gotest.tools/v3 v3.5.1/go.mod h1:isy3WKz7GK6uNw/sbHzfKBLvlvXwUyV06n6brMxxopU=
honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
k8s.io/api v0.35.0 h1:iBAU5LTyBI9vw3L5glmat1njFK34srdLmktWwLTprlY=
k8s.io/api v0.35.0/go.mod h1:AQ0SNTzm4ZAczM03QH42c7l3bih1TbAXYo0DkF8ktnA=
k8s.io/apiextensions-apiserver v0.34.1 h1:NNPBva8FNAPt1iSVwIE0FsdrVriRXMsaWFMqJbII2CI=
k8s.io/apiextensions-apiserver v0.34.1/go.mod h1:hP9Rld3zF5Ay2Of3BeEpLAToP+l4s5UlxiHfqRaRcMc=
k8s.io/apimachinery v0.35.0 h1:Z2L3IHvPVv/MJ7xRxHEtk6GoJElaAqDCCU0S6ncYok8=
k8s.io/apimachinery v0.35.0/go.mod h1:jQCgFZFR1F4Ik7hvr2g84RTJSZegBc8yHgFWKn//hns=
k8s.io/cli-runtime v0.35.0 h1:PEJtYS/Zr4p20PfZSLCbY6YvaoLrfByd6THQzPworUE=
k8s.io/cli-runtime v0.35.0/go.mod h1:VBRvHzosVAoVdP3XwUQn1Oqkvaa8facnokNkD7jOTMY=
k8s.io/client-go v0.35.0 h1:IAW0ifFbfQQwQmga0UdoH0yvdqrbwMdq9vIFEhRpxBE=
k8s.io/client-go v0.35.0/go.mod h1:q2E5AAyqcbeLGPdoRB+Nxe3KYTfPce1Dnu1myQdqz9o=
k8s.io/cloud-provider v0.35.0 h1:syiBCQbKh2gho/S1BkIl006Dc44pV8eAtGZmv5NMe7M=
k8s.io/cloud-provider v0.35.0/go.mod h1:7grN+/Nt5Hf7tnSGPT3aErt4K7aQpygyCrGpbrQbzNc=
k8s.io/cloud-provider-aws v1.35.0 h1:jlMZmc4JjJ6lkYj41xeKqZ8nw1ais00xQi8Nnz2lqkI=
k8s.io/cloud-provider-aws v1.35.0/go.mod h1:6R9TIgQ/ecysPukSmEUs4kZIwqvju80+FjMAhtJ22Q0=
k8s.io/component-base v0.35.0 h1:+yBrOhzri2S1BVqyVSvcM3PtPyx5GUxCK2tinZz1G94=
k8s.io/component-base v0.35.0/go.mod h1:85SCX4UCa6SCFt6p3IKAPej7jSnF3L8EbfSyMZayJR0=
k8s.io/component-helpers v0.35.0 h1:wcXv7HJRksgVjM4VlXJ1CNFBpyDHruRI99RrBtrJceA=
k8s.io/component-helpers v0.35.0/go.mod h1:ahX0m/LTYmu7fL3W8zYiIwnQ/5gT28Ex4o2pymF63Co=
k8s.io/klog v1.0.0 h1:Pt+yjF5aB1xDSVbau4VsWe+dQNzA0qv1LlXdC2dF6Q8=
k8s.io/klog v1.0.0/go.mod h1:4Bi6QPql/J/LkTDqv7R/cd3hPo4k2DG6Ptcz060Ez5I=
k8s.io/klog/v2 v2.130.1 h1:n9Xl7H1Xvksem4KFG4PYbdQCQxqc/tTUyrgXaOhHSzk=
k8s.io/klog/v2 v2.130.1/go.mod h1:3Jpz1GvMt720eyJH1ckRHK1EDfpxISzJ7I9OYgaDtPE=
k8s.io/kops v1.33.1 h1:MFrj3r6f+F9rL2DQQdfAXEyFJDdq0GAyu96woF6TOaQ=
k8s.io/kops v1.33.1/go.mod h1:epTyN30uGaeRBmN1jmT993Kc4Wd/tti9snQDd5aivXc=
k8s.io/kube-openapi v0.0.0-20250910181357-589584f1c912 h1:Y3gxNAuB0OBLImH611+UDZcmKS3g6CthxToOb37KgwE=
k8s.io/kube-openapi v0.0.0-20250910181357-589584f1c912/go.mod h1:kdmbQkyfwUagLfXIad1y2TdrjPFWp2Q89B3qkRwf/pQ=
k8s.io/kubelet v0.35.0 h1:8cgJHCBCKLYuuQ7/Pxb/qWbJfX1LXIw7790ce9xHq7c=
k8s.io/kubelet v0.35.0/go.mod h1:ciRzAXn7C4z5iB7FhG1L2CGPPXLTVCABDlbXt/Zz8YA=
k8s.io/release v0.18.0 h1:xn+ZU/8bDmtAcSZMh0K2HMa2+dYrD3Qqq+yqv3Uuk9k=
k8s.io/release v0.18.0/go.mod h1:PJ4HhnTcmTKSakE475b4e3xJEVw+EVB5ycZM9vWFcTU=
k8s.io/utils v0.0.0-20260108192941-914a6e750570 h1:JT4W8lsdrGENg9W+YwwdLJxklIuKWdRm+BC+xt33FOY=
k8s.io/utils v0.0.0-20260108192941-914a6e750570/go.mod h1:xDxuJ0whA3d0I4mf/C4ppKHxXynQ+fxnkmQH0vTHnuk=
modernc.org/cc/v4 v4.19.3 h1:vE9kmJqUcyvNOf8F2Hn8od14SOMq34BiqcZ2tMzLk5c=
modernc.org/cc/v4 v4.19.3/go.mod h1:HM7VJTZbUCR3rV8EYBi9wxnJ0ZBRiGE5OeGXNA0IsLQ=
modernc.org/ccgo/v4 v4.11.0 h1:2uc2kRvZLC/oHylsrirRW6f1I4wljQST2BBbm+aKiXM=
modernc.org/ccgo/v4 v4.11.0/go.mod h1:GwrfAtnU6PdZkCWD4XI8wB1T5Xj3fSw9lO/40H1ldys=
modernc.org/fileutil v1.3.0 h1:gQ5SIzK3H9kdfai/5x41oQiKValumqNTDXMvKo62HvE=
modernc.org/fileutil v1.3.0/go.mod h1:XatxS8fZi3pS8/hKG2GH/ArUogfxjpEKs3Ku3aK4JyQ=
modernc.org/gc/v2 v2.4.1 h1:9cNzOqPyMJBvrUipmynX0ZohMhcxPtMccYgGOJdOiBw=
modernc.org/gc/v2 v2.4.1/go.mod h1:wzN5dK1AzVGoH6XOzc3YZ+ey/jPgYHLuVckd62P0GYU=
modernc.org/libc v1.45.2 h1:oRlBu8xlBen2awVAWuLOkvYNBPaIKFxFOj9wA/jaXHM=
modernc.org/libc v1.45.2/go.mod h1:YkRHLoN4L70OdO1cVmM83KZhRbRvsc3XogfVzbTXBwE=
modernc.org/mathutil v1.6.0 h1:fRe9+AmYlaej+64JsEEhoWuAYBkOtQiMEU7n/XgfYi4=
modernc.org/mathutil v1.6.0/go.mod h1:Ui5Q9q1TR2gFm0AQRqQUaBWFLAhQpCwNcuhBOSedWPo=
modernc.org/memory v1.7.2 h1:Klh90S215mmH8c9gO98QxQFsY+W451E8AnzjoE2ee1E=
modernc.org/memory v1.7.2/go.mod h1:NO4NVCQy0N7ln+T9ngWqOQfi7ley4vpwvARR+Hjw95E=
modernc.org/opt v0.1.3 h1:3XOZf2yznlhC+ibLltsDGzABUGVx8J6pnFMS3E4dcq4=
modernc.org/opt v0.1.3/go.mod h1:WdSiB5evDcignE70guQKxYUl14mgWtbClRi5wmkkTX0=
modernc.org/sortutil v1.2.0 h1:jQiD3PfS2REGJNzNCMMaLSp/wdMNieTbKX920Cqdgqc=
modernc.org/sortutil v1.2.0/go.mod h1:TKU2s7kJMf1AE84OoiGppNHJwvB753OYfNl2WRb++Ss=
modernc.org/sqlite v1.29.5 h1:8l/SQKAjDtZFo9lkJLdk8g9JEOeYRG4/ghStDCCTiTE=
modernc.org/sqlite v1.29.5/go.mod h1:S02dvcmm7TnTRvGhv8IGYyLnIt7AS2KPaB1F/71p75U=
modernc.org/strutil v1.2.0 h1:agBi9dp1I+eOnxXeiZawM8F4LawKv4NzGWSaLfyeNZA=
modernc.org/strutil v1.2.0/go.mod h1:/mdcBmfOibveCTBxUl5B5l6W+TTH1FXPLHZE6bTosX0=
modernc.org/token v1.1.0 h1:Xl7Ap9dKaEs5kLoOQeQmPWevfnk/DM5qcLcYlA8ys6Y=
modernc.org/token v1.1.0/go.mod h1:UGzOrNV1mAFSEB63lOFHIpNRUVMvYTc6yu1SMY/XTDM=
sigs.k8s.io/bom v0.6.0 h1:IPMPHx6XdmMeW2oEeF66DgNyP5d4RxfuXwiC1qn+n9o=
sigs.k8s.io/bom v0.6.0/go.mod h1:MV0D3vdGlkaPgi5EwpwMBeQ8n8QS8Q2u1lJ5LyE7RLM=
sigs.k8s.io/controller-runtime v0.22.4 h1:GEjV7KV3TY8e+tJ2LCTxUTanW4z/FmNB7l327UfMq9A=
sigs.k8s.io/controller-runtime v0.22.4/go.mod h1:+QX1XUpTXN4mLoblf4tqr5CQcyHPAki2HLXqQMY6vh8=
sigs.k8s.io/e2e-framework v0.6.1-0.20250909060333-8677714ff9a6 h1:5saOTCrwclRdFJLj5zDMJITisRmR0HuG8SU6ts9z5IY=
sigs.k8s.io/e2e-framework v0.6.1-0.20250909060333-8677714ff9a6/go.mod h1:MUvWdQO9AGg4/yP9Y0kOcmX+KIOXI0UR6Xw6xz11ULw=
sigs.k8s.io/json v0.0.0-20250730193827-2d320260d730 h1:IpInykpT6ceI+QxKBbEflcR5EXP7sU1kvOlxwZh5txg=
sigs.k8s.io/json v0.0.0-20250730193827-2d320260d730/go.mod h1:mdzfpAEoE6DHQEN0uh9ZbOCuHbLK5wOm7dK4ctXE9Tg=
sigs.k8s.io/karpenter v1.8.0 h1:AmTHUPtnuL8IX9mbcD3NOohyk62idrBCBtM+8Wn6Jvk=
sigs.k8s.io/karpenter v1.8.0/go.mod h1:nDDVB5873dVVuyTam3oJrllSv0sAgp6as6/5HRTcV4o=
sigs.k8s.io/kubetest2 v0.0.0-20260108084739-2f9a9397f033 h1:+HmjjgPGGqvYRBErxVSbguBnp7hILyuwHHDKUXRCDA4=
sigs.k8s.io/kubetest2 v0.0.0-20260108084739-2f9a9397f033/go.mod h1:pBd0cFaT0hDqmwQg+TIhyLgPMYaH66QMLcKd09XnKTI=
sigs.k8s.io/kustomize/api v0.20.1 h1:iWP1Ydh3/lmldBnH/S5RXgT98vWYMaTUL1ADcr+Sv7I=
sigs.k8s.io/kustomize/api v0.20.1/go.mod h1:t6hUFxO+Ph0VxIk1sKp1WS0dOjbPCtLJ4p8aADLwqjM=
sigs.k8s.io/kustomize/kyaml v0.20.1 h1:PCMnA2mrVbRP3NIB6v9kYCAc38uvFLVs8j/CD567A78=
sigs.k8s.io/kustomize/kyaml v0.20.1/go.mod h1:0EmkQHRUsJxY8Ug9Niig1pUMSCGHxQ5RklbpV/Ri6po=
sigs.k8s.io/promo-tools/v3 v3.6.0 h1:C2L08ezrWm1aZI8Emd3iZPZQserLPRgzuqQVxvI0PUI=
sigs.k8s.io/promo-tools/v3 v3.6.0/go.mod h1:XJ3jy0hJYs+hWKt8XsLHFzGQV8PUtvllvbxjN/E5RXI=
sigs.k8s.io/randfill v1.0.0 h1:JfjMILfT8A6RbawdsK2JXGBR5AQVfd+9TbzrlneTyrU=
sigs.k8s.io/randfill v1.0.0/go.mod h1:XeLlZ/jmk4i1HRopwe7/aU3H5n1zNUcX6TM94b3QxOY=
sigs.k8s.io/release-sdk v0.12.2 h1:ncuHwUu8VWcZVVrNkjoUR8xGo6ibHg+AM6uMMD+IwuQ=
sigs.k8s.io/release-sdk v0.12.2/go.mod h1:tlJgWPJLeRbWOvcyq1XrCZmLe8Yfn3H5U/LNtmBa0Nc=
sigs.k8s.io/release-utils v0.12.0 h1:+Z8cEUAaxItrMcTOJ0jtUg3Fm1uNgPNol+VIL6XtQqQ=
sigs.k8s.io/release-utils v0.12.0/go.mod h1:TveYRPK4Mq6qXA0PJiUMEOlWvvIQG0Mh5APQmHD5JpA=
sigs.k8s.io/structured-merge-diff/v6 v6.3.0 h1:jTijUJbW353oVOd9oTlifJqOGEkUw2jB/fXCbTiQEco=
sigs.k8s.io/structured-merge-diff/v6 v6.3.0/go.mod h1:M3W8sfWvn2HhQDIbGWj3S099YozAsymCo/wrT5ohRUE=
sigs.k8s.io/yaml v1.6.0 h1:G8fkbMSAFqgEFgh4b1wmtzDnioxFCUgTZhlbj5P9QYs=
sigs.k8s.io/yaml v1.6.0/go.mod h1:796bPqUfzR/0jLAl6XjHl3Ck7MiyVv8dbTdyT3/pMf4=
software.sslmate.com/src/go-pkcs12 v0.4.0 h1:H2g08FrTvSFKUj+D309j1DPfk5APnIdAQAB8aEykJ5k=
software.sslmate.com/src/go-pkcs12 v0.4.0/go.mod h1:Qiz0EyvDRJjjxGyUQa2cCNZn/wMyzrRJ/qcDXOQazLI=
================================================
FILE: hack/download-kubernetes-binaries.sh
================================================
#!/usr/bin/env bash
set -o errexit
set -o nounset
BUNDLES=(
"kubernetes-client"
"kubernetes-test"
)
if [ "$#" -ne 3 ]; then
echo >&2 "usage: $0 (KUBERNETES_MINOR_VERSION|latest) OS ARCH"
exit 1
fi
if [ "$1" = "latest" ]; then
RELEASE_MARKER="latest.txt"
else
RELEASE_MARKER="latest-$1.txt"
fi
echo >&2 "Release marker: ${RELEASE_MARKER}"
OS="$2"
ARCH="$3"
function download_binaries() {
local basePath=$1
local KUBERNETES_VERSION=$(curl --silent "${basePath}/${RELEASE_MARKER}")
echo "Kubernetes version: ${KUBERNETES_VERSION}"
echo "${KUBERNETES_VERSION}" > kubernetes-version.txt
for BUNDLE in ${BUNDLES[@]}; do
echo >&2 "Downloading bundle: ${BUNDLE}"
local TARBALL="${BUNDLE}.tar.gz"
if ! wget --quiet --output-document=${TARBALL} $basePath/${KUBERNETES_VERSION}/${BUNDLE}-${OS}-${ARCH}.tar.gz; then
return 1
fi
tar xzf ${TARBALL}
rm ${TARBALL}
done
}
if ! download_binaries https://storage.googleapis.com/kubernetes-release/release; then
echo >&2 "binary download failed from release bucket, falling back to ci dev release"
download_binaries https://storage.googleapis.com/k8s-release-dev/ci
fi
================================================
FILE: hack/free-disk-space.sh
================================================
#!/usr/bin/env bash
set -o nounset
set -o errexit
set -o pipefail
# hack to free up disk space for build
# ref: https://github.com/easimon/maximize-build-space/blob/master/action.yml
# storage before
sudo df -h
sudo rm -rf \
/usr/share/dotnet \
/usr/local/lib/android \
/opt/ghc \
/opt/hostedtoolcache/CodeQL
docker image prune --all --force
docker builder prune -a
# storage after
sudo df -h
================================================
FILE: hack/update-go-dependencies.sh
================================================
#!/usr/bin/env bash
set -o nounset
set -o errexit
set -o pipefail
echo "Updating go modules..."
go get $(go list -f '{{if not (or .Main .Indirect)}}{{.Path}}{{end}}' -mod=mod -m all) && go mod tidy
echo "Updating kubetest2 image go version..."
MODULE_GO_VERSION=$(go list -m -f "{{if .Main}}{{.GoVersion}}{{end}}" | cut -d'.' -f1-2)
find . -type f -name Dockerfile -exec sed -i "s/\(GO_MINOR_VERSION\)=.*/\1=${MODULE_GO_VERSION}/g" {} +
================================================
FILE: hack/update-image-tags.sh
================================================
#!/usr/bin/env bash
set -o nounset
set -o errexit
set -o pipefail
ECR_PUBLIC_REGISTRY="public.ecr.aws"
EKS_CONTAINER_REGISTRY="602401143452.dkr.ecr.us-west-2.amazonaws.com"
# get_ecr_image_tags <REGISTRY> <REPOSITORY>
# e.g. get_ecr_image_tags $ECR_PUBLIC_REGISTRY amazonlinux/amazonlinux
get_ecr_image_tags() {
set -e
local REGISTRY=$1
local REPOSITORY=$2
local TOKEN
# Get ECR public token if image is from a public registry, otherwise use a private token
# An authorization token is required for every ECR HTTP request
if [ "$REGISTRY" = "$ECR_PUBLIC_REGISTRY" ]; then
TOKEN=$(aws ecr-public get-authorization-token --region us-east-1 --output=text --query 'authorizationData.authorizationToken')
local AUTHORIZATION_TYPE="Bearer"
else
TOKEN=$(aws ecr get-authorization-token --output text --query 'authorizationData[].authorizationToken')
local AUTHORIZATION_TYPE="Basic"
fi
curl -s -H "Authorization: ${AUTHORIZATION_TYPE} $TOKEN" "https://$REGISTRY/v2/$REPOSITORY/tags/list" | jq '.tags'
}
# update_image_uris REPOSITORY IMAGE_TAG
update_image_uris() {
local REPOSITORY=$1
local NEW_TAG=$2
PREFIX="image: ${REPOSITORY}"
find ./test/manifests -type f -exec sed -i "s#$PREFIX:.*#$PREFIX:$NEW_TAG#g" {} +
}
# update the nvidia k8s device plugin
echo "Updating Nvidia device plugin image"
NVIDIA_DEVICE_PLUGIN_TAG=$(curl -s 'https://catalog.ngc.nvidia.com/api/containers/images?orgName=nvidia&name=k8s-device-plugin&isPublic=true' | jq -r '.images | sort_by(.updatedDate) | reverse | map(select(.tag | test("^v[0-9]+.[0-9]+.[0-9]+$"))) | first | .tag')
update_image_uris nvcr.io/nvidia/k8s-device-plugin $NVIDIA_DEVICE_PLUGIN_TAG
# below updates require authentication and should not exit early with a failure.
# TODO: remove this once the aws credentials are setup and the paths are expected to succeed.
set +e
# update the neuron k8s device plugin
echo "Updating Neuron device plugin image"
NEURON_DEVICE_PLUGIN_REPOSITORY_NAME="neuron/neuron-device-plugin"
NEURON_DEVICE_PLUGIN_TAGS=$(get_ecr_image_tags $ECR_PUBLIC_REGISTRY $NEURON_DEVICE_PLUGIN_REPOSITORY_NAME)
if [ $? -eq 0 ]; then
LATEST_NEURON_DEVICE_PLUGIN_TAG=$(echo $NEURON_DEVICE_PLUGIN_TAGS | jq -r 'max_by(split(".") | map(tonumber))')
update_image_uris "${ECR_PUBLIC_REGISTRY}/${NEURON_DEVICE_PLUGIN_REPOSITORY_NAME}" $LATEST_NEURON_DEVICE_PLUGIN_TAG
fi
# update the efa k8s device plugin
echo "Updating EFA device plugin image"
EFA_DEVICE_PLUGIN_REPOSITORY_NAME="eks/aws-efa-k8s-device-plugin"
EFA_DEVICE_PLUGIN_TAGS=$(get_ecr_image_tags $EKS_CONTAINER_REGISTRY $EFA_DEVICE_PLUGIN_REPOSITORY_NAME)
if [ $? -eq 0 ]; then
LATEST_EFA_DEVICE_PLUGIN_TAG=$(echo $EFA_DEVICE_PLUGIN_TAGS | jq -r 'map(split("-") | .[0]) | max_by(sub("^v"; "") | split(".") | map(tonumber))')
update_image_uris "${EKS_CONTAINER_REGISTRY}/${EFA_DEVICE_PLUGIN_REPOSITORY_NAME}" $LATEST_EFA_DEVICE_PLUGIN_TAG
fi
================================================
FILE: hack/update-neuron-dependencies.sh
================================================
#!/usr/bin/env bash
set -o nounset
set -o errexit
set -o pipefail
# pip_versionsearch takes exactly 1 argument and returns its latest available version from the neuron pip repo
# usage: pip_versionsearch PACKAGE
pip_versionsearch() {
local PACKAGE_INDEX_NAME=$(echo $1 | tr -s '_' '-')
local PACKAGE_VERSION_NAME=$(echo $PACKAGE_INDEX_NAME | tr -s '-' '_')
curl -s https://pip.repos.neuron.amazonaws.com/${PACKAGE_INDEX_NAME} | grep -o -G "${PACKAGE_VERSION_NAME}-[0-9\.]*+[a-f0-9]*" | sed "s/$PACKAGE_VERSION_NAME-//" | sort -V | tail -n 1
}
# versionsearch takes exactly 1 argument and returns its latest available version from the neuron amd64 apt repo
# usage: versionsearch PACKAGE
versionsearch() {
local PACKAGE_NAME=$1
curl -s https://apt.repos.neuron.amazonaws.com/dists/focal/main/binary-amd64/Packages | grep -o "${PACKAGE_NAME}_[0-9\.]*-*[a-f0-9]*" | sed "s/${PACKAGE_NAME}_//" | sort -V | tail -n 1
}
# update_arg ARG NEW_VALUE
update_arg() {
local ARG=$1
local NEW_VALUE=$2
echo "setting $ARG to $NEW_VALUE"
find . -type f -name Dockerfile -exec sed -i "s/${ARG}=.*/${ARG}=$NEW_VALUE/g" {} +
}
update_arg NEURONX_RUNTIME_LIB_VERSION $(versionsearch aws-neuronx-runtime-lib)
update_arg NEURONX_COLLECTIVES_LIB_VERSION $(versionsearch aws-neuronx-collectives)
update_arg NEURONX_TOOLS_VERSION $(versionsearch aws-neuronx-tools)
update_arg NEURONX_FRAMEWORK_VERSION $(pip_versionsearch torch-neuronx)
update_arg NEURONX_CC_VERSION $(pip_versionsearch neuronx-cc)
update_arg NEURONX_DISTRIBUTED_VERSION $(pip_versionsearch neuronx_distributed)
================================================
FILE: hack/update-nvidia-dependencies.sh
================================================
#!/usr/bin/env bash
# following from the last updated dependency:
# 1. get the latest release of aws-ofi-nccl
# 2. get the supported version of libnccl
# 3. get the latest correct cuda version used for libnccl
set -o nounset
set -o errexit
set -o pipefail
echo "Updating aws-ofi-nccl"
AWS_OFI_NCCL_TAG=$(curl -s https://api.github.com/repos/aws/aws-ofi-nccl/releases/latest | jq -r .tag_name | sed 's/^v//')
find . -type f -name Dockerfile -exec sed -i "s/AWS_OFI_NCCL_VERSION=.*/AWS_OFI_NCCL_VERSION=$AWS_OFI_NCCL_TAG/g" {} +
echo "Updating nccl"
LIB_NCCL_TAG=$(curl -s https://api.github.com/repos/aws/aws-ofi-nccl/releases/latest | jq -r .body | grep -oP '\[NCCL \K(\S*)(?=\])' | head -n 1 | sed 's/^v//')
find . -type f -name Dockerfile -exec sed -i "s/LIBNCCL_VERSION=.*/LIBNCCL_VERSION=$LIB_NCCL_TAG/g" {} +
echo "Updating nvbandwidth"
NVBANDWIDTH_TAG=$(curl -s https://api.github.com/repos/NVIDIA/nvbandwidth/releases/latest | jq -r .tag_name)
find . -type f -name Dockerfile -exec sed -i "s/NVBANDWIDTH_VERSION=.*/NVBANDWIDTH_VERSION=$NVBANDWIDTH_TAG/g" {} +
================================================
FILE: internal/awssdk/config.go
================================================
package awssdk
import (
"context"
"log/slog"
"github.com/aws/aws-sdk-go-v2/aws"
"github.com/aws/aws-sdk-go-v2/config"
)
// NewConfig returns an AWS SDK config
// It will panic if the cnfig cannot be created
func NewConfig() aws.Config {
c, err := config.LoadDefaultConfig(context.TODO())
if err != nil {
slog.Error("failed to create AWS SDK config", "error", err)
panic(err)
}
return c
}
================================================
FILE: internal/deployers/eksapi/addons.go
================================================
package eksapi
import (
"context"
"fmt"
"log/slog"
"strings"
"time"
"github.com/aws/aws-sdk-go-v2/aws"
"github.com/aws/aws-sdk-go-v2/service/eks"
)
const (
addonCreationTimeout = 5 * time.Minute
)
type AddonManager struct {
clients *awsClients
}
func NewAddonManager(clients *awsClients) *AddonManager {
return &AddonManager{
clients: clients,
}
}
func (m *AddonManager) createAddons(infra *Infrastructure, cluster *Cluster, opts *deployerOptions) error {
ctx := context.TODO()
addonMap := map[string]string{}
for _, addon := range opts.Addons {
addonParts := strings.Split(addon, ":")
if len(addonParts) != 2 {
return fmt.Errorf("invalid addon format: %s", addon)
}
name := addonParts[0]
version := addonParts[1]
slog.Info("resolving addon version", "addon", name, "version", version)
resolvedVersion, err := m.resolveAddonVersion(name, version, opts.KubernetesVersion)
if err != nil {
return err
}
// dedupe addons with the same name. last provided entry wins.
addonMap[name] = resolvedVersion
}
for addonName, addonVersion := range addonMap {
slog.Info("creating addon", "addon", addonName, "version", addonVersion)
input := eks.CreateAddonInput{
AddonName: aws.String(addonName),
AddonVersion: aws.String(addonVersion),
ClusterName: aws.String(cluster.name),
}
_, err := m.clients.EKS().CreateAddon(ctx, &input)
if err != nil {
return fmt.Errorf("failed to create addon: %v", err)
}
slog.Info("waiting for addon to be active", "addon", addonName)
err = eks.NewAddonActiveWaiter(m.clients.EKS()).
Wait(ctx, &eks.DescribeAddonInput{
AddonName: aws.String(addonName),
ClusterName: aws.String(cluster.name),
}, addonCreationTimeout)
if err != nil {
return fmt.Errorf("failed to wait for addon to be active: %v", err)
}
}
return nil
}
func (m *AddonManager) resolveAddonVersion(name string, versionMarker string, kubernetesVersion string) (string, error) {
input := eks.DescribeAddonVersionsInput{
AddonName: aws.String(name),
KubernetesVersion: aws.String(kubernetesVersion),
}
descOutput, err := m.clients.EKS().DescribeAddonVersions(context.TODO(), &input)
if err != nil {
return "", err
}
for _, addon := range descOutput.Addons {
for _, versionInfo := range addon.AddonVersions {
switch versionMarker {
case "latest":
return *versionInfo.AddonVersion, nil
case "default":
for _, compatibility := range versionInfo.Compatibilities {
if compatibility.DefaultVersion {
return *versionInfo.AddonVersion, nil
}
}
default:
if *versionInfo.AddonVersion == versionMarker {
return *versionInfo.AddonVersion, nil
}
}
}
}
return "", fmt.Errorf("failed to resolve addon version: %s=%s", name, versionMarker)
}
================================================
FILE: internal/deployers/eksapi/ami_resolver.go
================================================
package eksapi
import (
"context"
"fmt"
"log/slog"
"github.com/aws/aws-sdk-go-v2/aws"
"github.com/aws/aws-sdk-go-v2/service/ec2"
ec2types "github.com/aws/aws-sdk-go-v2/service/ec2/types"
"github.com/aws/aws-sdk-go-v2/service/ssm"
)
func NewAMIResolver(awsClients *awsClients) *amiResolver {
return &amiResolver{
clients: awsClients,
}
}
type amiResolver struct {
clients *awsClients
}
func (r *amiResolver) Resolve(ctx context.Context, opts *deployerOptions) (string, error) {
switch opts.UserDataFormat {
case UserDataBootstrapSh:
// TODO: AL2 is not a high priority, skipping for now.
return "", fmt.Errorf("%s is not handled", opts.UserDataFormat)
case UserDataNodeadm:
return r.ResolveAL2023(ctx, opts)
case UserDataBottlerocket:
return r.ResolveBottlerocket(ctx, opts)
default:
return "", fmt.Errorf("unhandled userdata format: %s", opts.UserDataFormat)
}
}
func (r *amiResolver) ResolveAL2023(ctx context.Context, opts *deployerOptions) (string, error) {
describeInstanceTypesResponse, err := r.clients.EC2().DescribeInstanceTypes(ctx, &ec2.DescribeInstanceTypesInput{
InstanceTypes: []ec2types.InstanceType{ec2types.InstanceType(r.getInstance(opts))},
})
if err != nil {
return "", err
}
instanceTypeInfo := describeInstanceTypesResponse.InstanceTypes[0]
arch, err := r.resolveArch(instanceTypeInfo)
if err != nil {
return "", err
}
variant := "standard"
if instanceTypeInfo.NeuronInfo != nil {
if len(instanceTypeInfo.NeuronInfo.NeuronDevices) > 0 {
variant = "neuron"
}
} else if instanceTypeInfo.GpuInfo != nil {
for _, gpu := range instanceTypeInfo.GpuInfo.Gpus {
if aws.ToString(gpu.Manufacturer) == "NVIDIA" {
variant = "nvidia"
break
}
}
}
getParameterReponse, err := r.clients.SSM().GetParameter(ctx, &ssm.GetParameterInput{
Name: aws.String(fmt.Sprintf("/aws/service/eks/optimized-ami/%s/amazon-linux-2023/%s/%s/recommended/image_id", opts.KubernetesVersion, arch, variant)),
})
if err != nil {
return "", err
}
return aws.ToString(getParameterReponse.Parameter.Value), nil
}
func (r *amiResolver) ResolveBottlerocket(ctx context.Context, opts *deployerOptions) (string, error) {
describeInstanceTypesResponse, err := r.clients.EC2().DescribeInstanceTypes(ctx, &ec2.DescribeInstanceTypesInput{
InstanceTypes: []ec2types.InstanceType{ec2types.InstanceType(r.getInstance(opts))},
})
if err != nil {
return "", err
}
instanceTypeInfo := describeInstanceTypesResponse.InstanceTypes[0]
arch, err := r.resolveArch(instanceTypeInfo)
if err != nil {
return "", err
}
// TODO: enable fips
flavorSuffix := ""
if instanceTypeInfo.GpuInfo != nil {
for _, gpu := range instanceTypeInfo.GpuInfo.Gpus {
if aws.ToString(gpu.Manufacturer) == "NVIDIA" {
flavorSuffix = "-nvidia"
break
}
}
}
getParameterResponse, err := r.clients.SSM().GetParameter(ctx, &ssm.GetParameterInput{
Name: aws.String(fmt.Sprintf("/aws/service/bottlerocket/aws-k8s-%s%s/%s/latest/image_id", opts.KubernetesVersion, flavorSuffix, arch)),
})
if err != nil {
return "", err
}
return aws.ToString(getParameterResponse.Parameter.Value), nil
}
func (r *amiResolver) getInstance(opts *deployerOptions) string {
instanceType := opts.InstanceTypes[0]
if len(opts.InstanceTypes) > 1 {
slog.Warn("only resolving AMI based on first instance type", "instanceType", instanceType)
}
return instanceType
}
func (r *amiResolver) resolveArch(instanceTypeInfo ec2types.InstanceTypeInfo) (string, error) {
// TODO: the ordering might be weird because old instances might support
// both i386 and x8664.
switch arch := instanceTypeInfo.ProcessorInfo.SupportedArchitectures[0]; arch {
case ec2types.ArchitectureTypeArm64, ec2types.ArchitectureTypeX8664:
return string(arch), nil
default:
return "", fmt.Errorf("unhandled arch: %s", arch)
}
}
================================================
FILE: internal/deployers/eksapi/ami_resolver_test.go
================================================
//go:build integration
package eksapi
import (
"context"
"testing"
"github.com/aws/aws-sdk-go-v2/config"
"github.com/stretchr/testify/assert"
)
func TestAMIResolver(t *testing.T) {
ctx := context.Background()
awsCfg, err := config.LoadDefaultConfig(ctx)
assert.NoError(t, err)
amiResolver := NewAMIResolver(newAWSClients(awsCfg, ""))
t.Run("AL2023-nvidia", func(t *testing.T) {
opts := deployerOptions{
UserDataFormat: UserDataNodeadm,
KubernetesVersion: "1.33",
}
t.Run("nvidia", func(t *testing.T) {
opts := opts
opts.InstanceTypes = []string{"g5.xlarge"}
ami, err := amiResolver.Resolve(ctx, &opts)
assert.NoError(t, err)
assert.Regexp(t, "ami-.*", ami)
})
t.Run("standard", func(t *testing.T) {
opts := opts
opts.InstanceTypes = []string{"m5.xlarge"}
ami, err := amiResolver.Resolve(ctx, &opts)
assert.NoError(t, err)
assert.Regexp(t, "ami-.*", ami)
})
})
t.Run("Bottlerocket", func(t *testing.T) {
opts := deployerOptions{
UserDataFormat: UserDataBottlerocket,
KubernetesVersion: "1.33",
}
t.Run("nvidia", func(t *testing.T) {
opts := opts
opts.InstanceTypes = []string{"g5.xlarge"}
ami, err := amiResolver.Resolve(ctx, &opts)
assert.NoError(t, err)
assert.Regexp(t, "ami-.*", ami)
})
t.Run("standard", func(t *testing.T) {
opts := opts
opts.InstanceTypes = []string{"m5.xlarge"}
ami, err := amiResolver.Resolve(ctx, &opts)
assert.NoError(t, err)
assert.Regexp(t, "ami-.*", ami)
})
})
}
================================================
FILE: internal/deployers/eksapi/auth_map_role.go
================================================
package eksapi
import (
"bytes"
"github.com/aws/aws-k8s-tester/internal/deployers/eksapi/templates"
)
func generateAuthMapRole(nodeNameStrategy string, rolearn string) (string, error) {
template := templates.AuthMapRole
buf := bytes.Buffer{}
if err := template.Execute(&buf, templates.AuthMapRoleTemplateData{
NodeNameStrategy: nodeNameStrategy,
Rolearn: rolearn,
}); err != nil {
return "", err
}
return buf.String(), nil
}
================================================
FILE: internal/deployers/eksapi/auth_map_role_test.go
================================================
package eksapi
import (
"testing"
"github.com/stretchr/testify/assert"
)
const rolearn = "mock-role-arn"
const sessionNamedAuthMapRole = `
- username: system:node:{{SessionName}}
groups:
- system:bootstrappers
- system:nodes
rolearn: mock-role-arn`
const privateDNSNamedAuthMapRole = `
- username: system:node:{{EC2PrivateDNSName}}
groups:
- system:bootstrappers
- system:nodes
rolearn: mock-role-arn`
func Test_generateAuthRoleMap(t *testing.T) {
cases := []struct {
nodeNameStrategy string
expected string
}{
{
nodeNameStrategy: "SessionName",
expected: sessionNamedAuthMapRole,
},
{
nodeNameStrategy: "EC2PrivateDNSName",
expected: privateDNSNamedAuthMapRole,
},
}
for _, c := range cases {
t.Run(c.nodeNameStrategy, func(t *testing.T) {
actual, err := generateAuthMapRole(c.nodeNameStrategy, rolearn)
if err != nil {
t.Log(err)
t.Error(err)
}
assert.Equal(t, c.expected, actual)
})
}
}
================================================
FILE: internal/deployers/eksapi/aws.go
================================================
package eksapi
import (
"github.com/aws/aws-sdk-go-v2/aws"
"github.com/aws/aws-sdk-go-v2/service/autoscaling"
"github.com/aws/aws-sdk-go-v2/service/cloudformation"
"github.com/aws/aws-sdk-go-v2/service/ec2"
"github.com/aws/aws-sdk-go-v2/service/eks"
"github.com/aws/aws-sdk-go-v2/service/iam"
"github.com/aws/aws-sdk-go-v2/service/s3"
"github.com/aws/aws-sdk-go-v2/service/ssm"
)
type awsClients struct {
_eks *eks.Client
_cfn *cloudformation.Client
_ec2 *ec2.Client
_asg *autoscaling.Client
_ssm *ssm.Client
_iam *iam.Client
_s3 *s3.Client
_s3Presign *s3.PresignClient
}
func newAWSClients(config aws.Config, eksEndpointURL string) *awsClients {
clients := awsClients{
_cfn: cloudformation.NewFromConfig(config),
_ec2: ec2.NewFromConfig(config),
_asg: autoscaling.NewFromConfig(config),
_ssm: ssm.NewFromConfig(config),
_iam: iam.NewFromConfig(config),
_s3: s3.NewFromConfig(config),
}
clients._s3Presign = s3.NewPresignClient(clients._s3)
if eksEndpointURL != "" {
clients._eks = eks.NewFromConfig(config, func(o *eks.Options) {
o.BaseEndpoint = aws.String(eksEndpointURL)
})
} else {
clients._eks = eks.NewFromConfig(config)
}
return &clients
}
func (c *awsClients) EKS() *eks.Client {
return c._eks
}
func (c *awsClients) CFN() *cloudformation.Client {
return c._cfn
}
func (c *awsClients) EC2() *ec2.Client {
return c._ec2
}
func (c *awsClients) ASG() *autoscaling.Client {
return c._asg
}
func (c *awsClients) SSM() *ssm.Client {
return c._ssm
}
func (c *awsClients) IAM() *iam.Client {
return c._iam
}
func (c *awsClients) S3() *s3.Client {
return c._s3
}
func (c *awsClients) S3Presign() *s3.PresignClient {
return c._s3Presign
}
================================================
FILE: internal/deployers/eksapi/cluster.go
================================================
package eksapi
import (
"context"
"errors"
"fmt"
"log/slog"
"time"
"github.com/aws/aws-k8s-tester/internal/util"
"github.com/aws/aws-sdk-go-v2/aws"
"github.com/aws/aws-sdk-go-v2/service/eks"
ekstypes "github.com/aws/aws-sdk-go-v2/service/eks/types"
"github.com/aws/smithy-go/ptr"
)
type ClusterManager struct {
clients *awsClients
resourceID string
}
func NewClusterManager(clients *awsClients, resourceID string) *ClusterManager {
return &ClusterManager{
clients: clients,
resourceID: resourceID,
}
}
type Cluster struct {
endpoint string
certificateAuthorityData string
securityGroupId string
arn string
name string
cidr string
}
func (m *ClusterManager) getOrCreateCluster(infra *Infrastructure, opts *deployerOptions) (*Cluster, error) {
targetClusterName := opts.StaticClusterName
if targetClusterName == "" {
slog.Info("creating cluster...")
input := eks.CreateClusterInput{
Name: aws.String(m.resourceID),
ResourcesVpcConfig: &ekstypes.VpcConfigRequest{
EndpointPrivateAccess: aws.Bool(true),
EndpointPublicAccess: aws.Bool(true),
SubnetIds: infra.subnets(),
},
RoleArn: aws.String(infra.clusterRoleARN),
KubernetesNetworkConfig: &ekstypes.KubernetesNetworkConfigRequest{
IpFamily: ekstypes.IpFamily(opts.IPFamily),
},
Version: aws.String(opts.KubernetesVersion),
}
if opts.AutoMode {
input.ComputeConfig = &ekstypes.ComputeConfigRequest{
// we don't enable any of the default node pools, we'll create our own
Enabled: aws.Bool(true),
NodeRoleArn: aws.String(infra.nodeRoleARN),
// TODO: we can't currently enable managed compute without a default NodePool
// the system NodePool is tainted for critical addons only, so will be ignored for our test workloads
NodePools: []string{"system"},
}
input.StorageConfig = &ekstypes.StorageConfigRequest{
BlockStorage: &ekstypes.BlockStorage{
Enabled: aws.Bool(true),
},
}
input.KubernetesNetworkConfig.ElasticLoadBalancing = &ekstypes.ElasticLoadBalancing{
Enabled: aws.Bool(true),
gitextract_r74v3ht2/
├── .dockerignore
├── .github/
│ ├── PULL_REQUEST_TEMPLATE.md
│ └── workflows/
│ ├── build-neuron-ci.yaml
│ ├── build-nvidia-ci.yaml
│ ├── ci.yaml
│ ├── update-go-dependencies.yaml
│ ├── update-image-tags.yaml
│ ├── update-neuron-dependencies.yaml
│ └── update-nvidia-dependencies.yaml
├── .gitignore
├── .vscode/
│ └── settings.json
├── CODE_OF_CONDUCT.md
├── CONTRIBUTING.md
├── Config
├── Dockerfile
├── LICENSE
├── Makefile
├── NOTICE
├── README.md
├── bmg.json
├── cmd/
│ ├── kubetest2-eksapi/
│ │ └── main.go
│ ├── kubetest2-eksapi-janitor/
│ │ └── main.go
│ ├── kubetest2-eksctl/
│ │ └── main.go
│ ├── kubetest2-tester-ginkgo-v1/
│ │ └── main.go
│ └── kubetest2-tester-multi/
│ └── main.go
├── external/
│ └── tools.go
├── go.mod
├── go.sum
├── hack/
│ ├── download-kubernetes-binaries.sh
│ ├── free-disk-space.sh
│ ├── update-go-dependencies.sh
│ ├── update-image-tags.sh
│ ├── update-neuron-dependencies.sh
│ └── update-nvidia-dependencies.sh
├── internal/
│ ├── awssdk/
│ │ └── config.go
│ ├── deployers/
│ │ ├── eksapi/
│ │ │ ├── addons.go
│ │ │ ├── ami_resolver.go
│ │ │ ├── ami_resolver_test.go
│ │ │ ├── auth_map_role.go
│ │ │ ├── auth_map_role_test.go
│ │ │ ├── aws.go
│ │ │ ├── cluster.go
│ │ │ ├── common.go
│ │ │ ├── common_test.go
│ │ │ ├── deployer.go
│ │ │ ├── infra.go
│ │ │ ├── janitor.go
│ │ │ ├── k8s.go
│ │ │ ├── kubeconfig.go
│ │ │ ├── logs.go
│ │ │ ├── logs_ssm_doc.json
│ │ │ ├── metrics.go
│ │ │ ├── node.go
│ │ │ ├── static_cluster.go
│ │ │ ├── templates/
│ │ │ │ ├── auth_map_role.yaml.template
│ │ │ │ ├── busybox_deployment.yaml.template
│ │ │ │ ├── cloudwatch-infra.yaml.template
│ │ │ │ ├── cloudwatch_agent_infra.yaml
│ │ │ │ ├── infra.yaml
│ │ │ │ ├── nvidia_static_cluster_nodepool.yaml.template
│ │ │ │ ├── templates.go
│ │ │ │ ├── templates_test.go
│ │ │ │ ├── unmanaged-nodegroup.yaml.template
│ │ │ │ ├── userdata_bootstrap.sh.mimepart.template
│ │ │ │ ├── userdata_bottlerocket.toml.template
│ │ │ │ └── userdata_nodeadm.yaml.mimepart.template
│ │ │ ├── userdata.go
│ │ │ ├── userdata_test.go
│ │ │ ├── vpccni.go
│ │ │ └── vpccni_test.go
│ │ └── eksctl/
│ │ ├── build.go
│ │ ├── cluster_config.go
│ │ ├── deployer.go
│ │ ├── down.go
│ │ └── up.go
│ ├── e2e/
│ │ ├── client.go
│ │ ├── conditions.go
│ │ ├── doc.go
│ │ ├── ec2.go
│ │ ├── health.go
│ │ ├── logs.go
│ │ ├── mpijobs/
│ │ │ ├── conditions.go
│ │ │ ├── conditions_test.go
│ │ │ └── types.go
│ │ └── resources.go
│ ├── metrics/
│ │ ├── cloudwatch.go
│ │ ├── noop.go
│ │ └── registry.go
│ ├── testers/
│ │ ├── ginkgov1/
│ │ │ ├── LICENSE.original
│ │ │ ├── README.md
│ │ │ ├── ginkgo.go
│ │ │ ├── kubectl/
│ │ │ │ └── kubectl.go
│ │ │ └── package.go
│ │ └── multi/
│ │ └── cmd.go
│ ├── util/
│ │ ├── cloudformation.go
│ │ ├── exec.go
│ │ ├── http.go
│ │ ├── http_test.go
│ │ ├── lang.go
│ │ ├── path.go
│ │ └── version.go
│ └── version.go
└── test/
├── cases/
│ ├── disruptive/
│ │ ├── graceful_reboot_test.go
│ │ ├── graceful_shutdown_test.go
│ │ └── main_test.go
│ ├── dra/
│ │ ├── dra_example_driver_test.go
│ │ └── main_test.go
│ ├── efa/
│ │ ├── commons.go
│ │ ├── main_test.go
│ │ ├── pingpong_test.go
│ │ └── unit_test.go
│ ├── fips/
│ │ ├── README.md
│ │ ├── fips_test.go
│ │ ├── main_test.go
│ │ └── manifests/
│ │ ├── registry-fips.yaml
│ │ ├── registry-nonfips.yaml
│ │ └── test-pods.yaml
│ ├── netpol/
│ │ ├── main_test.go
│ │ └── np_test.go
│ ├── neuron/
│ │ ├── main_test.go
│ │ ├── manifests/
│ │ │ ├── multi-node-test-neuron.yaml
│ │ │ └── single-node-test-neuronx.yaml
│ │ └── neuron_test.go
│ ├── neuron-dra/
│ │ ├── main_test.go
│ │ ├── neuron_dra_test.go
│ │ ├── rcts/
│ │ │ └── trn1/
│ │ │ ├── rct-2-efas-4-neurons-wrong-match.yaml
│ │ │ └── rct-all-efas-all-neurons.yaml
│ │ ├── templates/
│ │ │ └── nccom-test-mpijob.yaml.tmpl
│ │ ├── testcases/
│ │ │ └── trn1/
│ │ │ ├── 2-efas-4-neurons-wrong-match.yaml
│ │ │ └── all-efas-all-neurons.yaml
│ │ └── topology.go
│ ├── neuron-inference/
│ │ ├── bert_inference_test.go
│ │ ├── main_test.go
│ │ ├── manifests/
│ │ │ └── neuron-bert-inference.yaml
│ │ └── vars.go
│ ├── neuron-training/
│ │ ├── bert_training_test.go
│ │ ├── main_test.go
│ │ ├── manifests/
│ │ │ ├── bert-training.yaml
│ │ │ └── training-comm-service.yaml
│ │ └── vars.go
│ ├── nvidia/
│ │ ├── capabilities_test.go
│ │ ├── containerd_test.go
│ │ ├── main_test.go
│ │ ├── manifests/
│ │ │ ├── daemonset-containerd-check.yaml
│ │ │ ├── job-hpc-benchmarks.yaml
│ │ │ ├── job-unit-test-single-node.yaml
│ │ │ ├── mpi-job-nccl-test-multi-node.yaml
│ │ │ ├── mpi-job-pytorch-training-single-node.yaml
│ │ │ └── nvidia-driver-capabilities-check.yaml
│ │ ├── mpi_test.go
│ │ └── unit_test.go
│ ├── nvidia-dra/
│ │ ├── main_test.go
│ │ ├── nvidia_dra_test.go
│ │ ├── rcts/
│ │ │ └── p5/
│ │ │ ├── rct-all-efas.yaml
│ │ │ ├── rct-all-gpus.yaml
│ │ │ └── rct-five-efas-one-gpu.yaml
│ │ ├── templates/
│ │ │ └── nccl-test-mpijob.yaml.tmpl
│ │ ├── testcases/
│ │ │ └── p5/
│ │ │ ├── all-efas-all-gpus.yaml
│ │ │ └── five-efas-one-gpu-negative-test.yaml
│ │ └── topology.go
│ ├── nvidia-inference/
│ │ ├── bert_inference_test.go
│ │ ├── main_test.go
│ │ └── manifests/
│ │ └── bert-inference.yaml
│ ├── nvidia-training/
│ │ ├── bert_training_test.go
│ │ ├── main_test.go
│ │ ├── manifests/
│ │ │ └── bert-training.yaml
│ │ └── vars.go
│ ├── quick/
│ │ ├── io_uring_test.go
│ │ ├── limit_test.go
│ │ ├── main_test.go
│ │ ├── manifests/
│ │ │ └── ulimit.yaml
│ │ └── node_topology_test.go
│ └── workload/
│ ├── main_test.go
│ └── workload_test.go
├── common/
│ ├── dra.go
│ ├── dra_features.go
│ ├── dra_types.go
│ ├── flags.go
│ └── resources.go
├── images/
│ ├── efa/
│ │ ├── Dockerfile
│ │ └── scripts/
│ │ └── unit-test.sh
│ ├── neuron/
│ │ ├── Dockerfile
│ │ ├── hack/
│ │ │ └── install-test-resources.sh
│ │ └── tests/
│ │ ├── singleNodeTest.sh
│ │ ├── testNeuronMlp.py
│ │ ├── testNeuronParallelState.py
│ │ └── testNeuronSingleAllReduce.py
│ ├── neuron-inference/
│ │ ├── Dockerfile
│ │ └── infer.py
│ ├── neuron-training/
│ │ ├── Dockerfile
│ │ └── train.py
│ ├── nvidia/
│ │ ├── Dockerfile
│ │ └── gpu_unit_tests/
│ │ ├── README.md
│ │ ├── bash_unit
│ │ ├── tests/
│ │ │ ├── common.sh
│ │ │ ├── test_basic.sh
│ │ │ ├── test_sysinfo.sh
│ │ │ └── test_sysinfo.sh.data/
│ │ │ ├── g5.48xlarge/
│ │ │ │ ├── gpu_count.txt
│ │ │ │ ├── numa_topo.txt
│ │ │ │ ├── nvidia_persistence_status.txt
│ │ │ │ └── nvidia_smi_topo.txt
│ │ │ ├── g5.8xlarge/
│ │ │ │ ├── gpu_count.txt
│ │ │ │ ├── numa_topo.txt
│ │ │ │ ├── nvidia_persistence_status.txt
│ │ │ │ └── nvidia_smi_topo.txt
│ │ │ ├── g5g.2xlarge/
│ │ │ │ ├── gpu_count.txt
│ │ │ │ ├── numa_topo.txt
│ │ │ │ ├── nvidia_persistence_status.txt
│ │ │ │ └── nvidia_smi_topo.txt
│ │ │ ├── g6f.2xlarge/
│ │ │ │ ├── efa_count.txt
│ │ │ │ ├── gpu_count.txt
│ │ │ │ ├── numa_topo.txt
│ │ │ │ ├── nvidia_persistence_status.txt
│ │ │ │ ├── nvidia_smi_topo.txt
│ │ │ │ └── nvidia_vgpu_license_status.txt
│ │ │ ├── g6f.4xlarge/
│ │ │ │ ├── efa_count.txt
│ │ │ │ ├── gpu_count.txt
│ │ │ │ ├── numa_topo.txt
│ │ │ │ ├── nvidia_persistence_status.txt
│ │ │ │ ├── nvidia_smi_topo.txt
│ │ │ │ └── nvidia_vgpu_license_status.txt
│ │ │ ├── g6f.large/
│ │ │ │ ├── efa_count.txt
│ │ │ │ ├── gpu_count.txt
│ │ │ │ ├── numa_topo.txt
│ │ │ │ ├── nvidia_persistence_status.txt
│ │ │ │ ├── nvidia_smi_topo.txt
│ │ │ │ └── nvidia_vgpu_license_status.txt
│ │ │ ├── g6f.xlarge/
│ │ │ │ ├── efa_count.txt
│ │ │ │ ├── gpu_count.txt
│ │ │ │ ├── numa_topo.txt
│ │ │ │ ├── nvidia_persistence_status.txt
│ │ │ │ ├── nvidia_smi_topo.txt
│ │ │ │ └── nvidia_vgpu_license_status.txt
│ │ │ ├── p3.16xlarge/
│ │ │ │ ├── gpu_count.txt
│ │ │ │ ├── numa_topo.txt
│ │ │ │ ├── nvidia_persistence_status.txt
│ │ │ │ └── nvidia_smi_topo.txt
│ │ │ ├── p3.2xlarge/
│ │ │ │ ├── gpu_count.txt
│ │ │ │ ├── numa_topo.txt
│ │ │ │ ├── nvidia_persistence_status.txt
│ │ │ │ └── nvidia_smi_topo.txt
│ │ │ ├── p4d.24xlarge/
│ │ │ │ ├── gpu_count.txt
│ │ │ │ ├── numa_topo.txt
│ │ │ │ ├── nvidia_persistence_status.txt
│ │ │ │ └── nvidia_smi_topo.txt
│ │ │ ├── p4de.24xlarge/
│ │ │ │ ├── gpu_count.txt
│ │ │ │ ├── numa_topo.txt
│ │ │ │ ├── nvidia_persistence_status.txt
│ │ │ │ └── nvidia_smi_topo.txt
│ │ │ └── p5.48xlarge/
│ │ │ ├── gpu_count.txt
│ │ │ ├── numa_topo.txt
│ │ │ ├── nvidia_persistence_status.txt
│ │ │ └── nvidia_smi_topo.txt
│ │ └── unit_test
│ ├── nvidia-inference/
│ │ ├── Dockerfile
│ │ ├── infer.py
│ │ └── requirements.txt
│ └── nvidia-training/
│ ├── Dockerfile
│ ├── requirements.txt
│ └── train.py
└── manifests/
├── assets/
│ ├── cloudwatch-agent.yaml
│ ├── dcgm-exporter.yaml
│ ├── dranet.yaml
│ ├── efa-device-plugin.yaml
│ ├── k8s-neuron-device-plugin-rbac.yml
│ ├── k8s-neuron-device-plugin.yml
│ ├── mpi-operator.yaml
│ └── nvidia-device-plugin.yaml
├── raw.go
└── rendered.go
SYMBOL INDEX (499 symbols across 113 files)
FILE: cmd/kubetest2-eksapi-janitor/main.go
function main (line 13) | func main() {
FILE: cmd/kubetest2-eksapi/main.go
function main (line 8) | func main() {
FILE: cmd/kubetest2-eksctl/main.go
function main (line 8) | func main() {
FILE: cmd/kubetest2-tester-ginkgo-v1/main.go
function main (line 7) | func main() {
FILE: cmd/kubetest2-tester-multi/main.go
function main (line 5) | func main() {
FILE: internal/awssdk/config.go
function NewConfig (line 13) | func NewConfig() aws.Config {
FILE: internal/deployers/eksapi/addons.go
constant addonCreationTimeout (line 15) | addonCreationTimeout = 5 * time.Minute
type AddonManager (line 18) | type AddonManager struct
method createAddons (line 28) | func (m *AddonManager) createAddons(infra *Infrastructure, cluster *Cl...
method resolveAddonVersion (line 73) | func (m *AddonManager) resolveAddonVersion(name string, versionMarker ...
function NewAddonManager (line 22) | func NewAddonManager(clients *awsClients) *AddonManager {
FILE: internal/deployers/eksapi/ami_resolver.go
function NewAMIResolver (line 14) | func NewAMIResolver(awsClients *awsClients) *amiResolver {
type amiResolver (line 20) | type amiResolver struct
method Resolve (line 24) | func (r *amiResolver) Resolve(ctx context.Context, opts *deployerOptio...
method ResolveAL2023 (line 38) | func (r *amiResolver) ResolveAL2023(ctx context.Context, opts *deploye...
method ResolveBottlerocket (line 76) | func (r *amiResolver) ResolveBottlerocket(ctx context.Context, opts *d...
method getInstance (line 111) | func (r *amiResolver) getInstance(opts *deployerOptions) string {
method resolveArch (line 119) | func (r *amiResolver) resolveArch(instanceTypeInfo ec2types.InstanceTy...
FILE: internal/deployers/eksapi/ami_resolver_test.go
function TestAMIResolver (line 13) | func TestAMIResolver(t *testing.T) {
FILE: internal/deployers/eksapi/auth_map_role.go
function generateAuthMapRole (line 9) | func generateAuthMapRole(nodeNameStrategy string, rolearn string) (strin...
FILE: internal/deployers/eksapi/auth_map_role_test.go
constant rolearn (line 9) | rolearn = "mock-role-arn"
constant sessionNamedAuthMapRole (line 11) | sessionNamedAuthMapRole = `
constant privateDNSNamedAuthMapRole (line 18) | privateDNSNamedAuthMapRole = `
function Test_generateAuthRoleMap (line 25) | func Test_generateAuthRoleMap(t *testing.T) {
FILE: internal/deployers/eksapi/aws.go
type awsClients (line 14) | type awsClients struct
method EKS (line 45) | func (c *awsClients) EKS() *eks.Client {
method CFN (line 49) | func (c *awsClients) CFN() *cloudformation.Client {
method EC2 (line 53) | func (c *awsClients) EC2() *ec2.Client {
method ASG (line 57) | func (c *awsClients) ASG() *autoscaling.Client {
method SSM (line 61) | func (c *awsClients) SSM() *ssm.Client {
method IAM (line 65) | func (c *awsClients) IAM() *iam.Client {
method S3 (line 69) | func (c *awsClients) S3() *s3.Client {
method S3Presign (line 73) | func (c *awsClients) S3Presign() *s3.PresignClient {
function newAWSClients (line 25) | func newAWSClients(config aws.Config, eksEndpointURL string) *awsClients {
FILE: internal/deployers/eksapi/cluster.go
type ClusterManager (line 17) | type ClusterManager struct
method getOrCreateCluster (line 38) | func (m *ClusterManager) getOrCreateCluster(infra *Infrastructure, opt...
method waitForClusterActive (line 109) | func (m *ClusterManager) waitForClusterActive(clusterName string, time...
method isClusterActive (line 141) | func (m *ClusterManager) isClusterActive() (bool, error) {
method deleteCluster (line 158) | func (m *ClusterManager) deleteCluster() error {
function NewClusterManager (line 22) | func NewClusterManager(clients *awsClients, resourceID string) *ClusterM...
type Cluster (line 29) | type Cluster struct
FILE: internal/deployers/eksapi/common.go
constant AvailabilityZonePriorityEnv (line 9) | AvailabilityZonePriorityEnv = "EKSAPI_AZ_PRIORITY"
function availabilityZoneHintedOrder (line 11) | func availabilityZoneHintedOrder(availabilityZones []string) []string {
FILE: internal/deployers/eksapi/common_test.go
function Test_AZ_PRIORITY (line 9) | func Test_AZ_PRIORITY(t *testing.T) {
FILE: internal/deployers/eksapi/deployer.go
constant DeployerName (line 29) | DeployerName = "eksapi"
constant ResourcePrefix (line 31) | ResourcePrefix = "kubetest2-" + DeployerName
type deployer (line 40) | type deployer struct
method Version (line 122) | func (d *deployer) Version() string {
method Init (line 126) | func (d *deployer) Init() error {
method Finish (line 148) | func (d *deployer) Finish() error {
method Build (line 154) | func (d *deployer) Build() error {
method DumpClusterLogs (line 159) | func (d *deployer) DumpClusterLogs() error {
method Kubeconfig (line 163) | func (d *deployer) Kubeconfig() (string, error) {
method Up (line 176) | func (d *deployer) Up() error {
method verifyUpFlags (line 269) | func (d *deployer) verifyUpFlags() error {
method IsUp (line 378) | func (d *deployer) IsUp() (up bool, err error) {
method Down (line 382) | func (d *deployer) Down() error {
type deployerOptions (line 62) | type deployerOptions struct
function NewDeployer (line 102) | func NewDeployer(opts types.Options) (types.Deployer, *pflag.FlagSet) {
function bindFlags (line 112) | func bindFlags(d *deployer) *pflag.FlagSet {
function detectKubernetesVersion (line 366) | func detectKubernetesVersion() (string, error) {
function deleteResources (line 393) | func deleteResources(im *InfrastructureManager, cm *ClusterManager, nm *...
FILE: internal/deployers/eksapi/infra.go
constant infraStackCreationTimeout (line 32) | infraStackCreationTimeout = time.Minute * 15
constant infraStackDeletionTimeout (line 33) | infraStackDeletionTimeout = time.Minute * 30
constant networkInterfaceDetachmentTimeout (line 34) | networkInterfaceDetachmentTimeout = time.Minute * 10
constant vpcCNIENITagKey (line 39) | vpcCNIENITagKey = "node.k8s.amazonaws.com/createdAt"
constant ipamControllerENITagKey (line 41) | ipamControllerENITagKey = "eks:kubernetes-cni-node-name"
constant eksEndpointURLTag (line 47) | eksEndpointURLTag = "eks-endpoint-url"
type InfrastructureManager (line 63) | type InfrastructureManager struct
method createInfrastructureStack (line 92) | func (m *InfrastructureManager) createInfrastructureStack(opts *deploy...
method getInfrastructureStackResources (line 184) | func (m *InfrastructureManager) getInfrastructureStackResources() (*In...
method deleteInfrastructureStack (line 221) | func (m *InfrastructureManager) deleteInfrastructureStack() error {
method deleteLeakedInstanceProfiles (line 267) | func (m *InfrastructureManager) deleteLeakedInstanceProfiles(infra *In...
method deleteLeakedENIs (line 317) | func (m *InfrastructureManager) deleteLeakedENIs() error {
method getVPCCNINetworkInterfaceIds (line 362) | func (m *InfrastructureManager) getVPCCNINetworkInterfaceIds(vpcId str...
method normalizeAZs (line 395) | func (m *InfrastructureManager) normalizeAZs(opts *deployerOptions, su...
method getRankedAZsForInstanceTypes (line 448) | func (m *InfrastructureManager) getRankedAZsForInstanceTypes(opts *dep...
method getAZsWithCapacity (line 475) | func (m *InfrastructureManager) getAZsWithCapacity(opts *deployerOptio...
method createCloudWatchInfrastructureStack (line 511) | func (m *InfrastructureManager) createCloudWatchInfrastructureStack(cl...
method createCloudWatchPodIdentityAssociation (line 566) | func (m *InfrastructureManager) createCloudWatchPodIdentityAssociation...
method deleteCloudWatchInfrastructureStack (line 581) | func (m *InfrastructureManager) deleteCloudWatchInfrastructureStack() ...
function NewInfrastructureManager (line 69) | func NewInfrastructureManager(clients *awsClients, resourceID string, me...
type Infrastructure (line 77) | type Infrastructure struct
method subnets (line 88) | func (i *Infrastructure) subnets() []string {
function getCloudWatchStackName (line 506) | func getCloudWatchStackName(resourceID string) (string, string) {
FILE: internal/deployers/eksapi/janitor.go
function NewJanitor (line 20) | func NewJanitor(maxResourceAge time.Duration, emitMetrics bool, workers ...
type janitor (line 41) | type janitor struct
method Sweep (line 51) | func (j *janitor) Sweep(ctx context.Context) error {
method getStacks (line 80) | func (j *janitor) getStacks(ctx context.Context, cfnClient *cloudforma...
method sweepWorker (line 93) | func (j *janitor) sweepWorker(wg *sync.WaitGroup, stackQueue <-chan cl...
method awsClientsForStack (line 123) | func (j *janitor) awsClientsForStack(stack cloudformationtypes.Stack) ...
FILE: internal/deployers/eksapi/k8s.go
function init (line 32) | func init() {
constant requestRetryInterval (line 38) | requestRetryInterval = 10 * time.Second
constant requestRetryTimeout (line 39) | requestRetryTimeout = 10 * time.Minute
type k8sClient (line 42) | type k8sClient struct
method waitForReadyNodes (line 62) | func (k *k8sClient) waitForReadyNodes(nodeCount int, timeout time.Dura...
method waitForNodeDeletion (line 109) | func (k *k8sClient) waitForNodeDeletion(timeout time.Duration) error {
method getReadyNodes (line 162) | func (k *k8sClient) getReadyNodes() ([]corev1.Node, error) {
method createAWSAuthConfigMap (line 193) | func (k *k8sClient) createAWSAuthConfigMap(nodeNameStrategy string, no...
method emitNodeMetrics (line 242) | func (k *k8sClient) emitNodeMetrics(metricRegistry metrics.MetricRegis...
function newK8sClient (line 49) | func newK8sClient(kubeconfigPath string) (*k8sClient, error) {
function isNodeReady (line 176) | func isNodeReady(node *corev1.Node) bool {
function getNodeReadyCondition (line 184) | func getNodeReadyCondition(node *corev1.Node) *corev1.NodeCondition {
function getNodeInstanceIDs (line 225) | func getNodeInstanceIDs(nodes []corev1.Node) ([]string, error) {
type KubernetesProviderID (line 305) | type KubernetesProviderID struct
function parseKubernetesProviderID (line 310) | func parseKubernetesProviderID(rawProviderId string) (*KubernetesProvide...
FILE: internal/deployers/eksapi/kubeconfig.go
constant kubeconfigPerm (line 11) | kubeconfigPerm = 0666
type kubeconfigTemplateParameters (line 41) | type kubeconfigTemplateParameters struct
function writeKubeconfig (line 48) | func writeKubeconfig(cluster *Cluster, kubeconfigPath string) error {
FILE: internal/deployers/eksapi/logs.go
type logManager (line 23) | type logManager struct
method gatherLogsFromNodes (line 42) | func (m *logManager) gatherLogsFromNodes(k8sClient *k8sClient, opts *d...
method gatherLogsUsingScript (line 68) | func (m *logManager) gatherLogsUsingScript(k8sClient *k8sClient, opts ...
method gatherLogsUsingNodeDiagnostic (line 152) | func (m *logManager) gatherLogsUsingNodeDiagnostic(k8sClient *k8sClien...
method waitForNodeDiagnostics (line 223) | func (m *logManager) waitForNodeDiagnostics(k8sClient *k8sClient, node...
method isNodeDiagnosticComplete (line 253) | func (m *logManager) isNodeDiagnosticComplete(nodeDiagnostic *unstruct...
type deployerPhase (line 28) | type deployerPhase
constant deployerPhaseUp (line 31) | deployerPhaseUp = "up"
constant deployerPhaseDown (line 32) | deployerPhaseDown = "down"
function NewLogManager (line 35) | func NewLogManager(clients *awsClients, resourceID string) *logManager {
constant logCollectorSsmDocumentTimeout (line 66) | logCollectorSsmDocumentTimeout = 5 * time.Minute
constant logCollectorNodeDiagnosticTimeout (line 150) | logCollectorNodeDiagnosticTimeout = 5 * time.Minute
FILE: internal/deployers/eksapi/node.go
constant nodeDeletionTimeout (line 36) | nodeDeletionTimeout = time.Minute * 20
type nodeManager (line 70) | type nodeManager struct
method createNodes (line 82) | func (m *nodeManager) createNodes(infra *Infrastructure, cluster *Clus...
method resolveInstanceTypes (line 102) | func (m *nodeManager) resolveInstanceTypes(opts *deployerOptions) (err...
method createNodeClass (line 159) | func (m *nodeManager) createNodeClass(opts *deployerOptions, k8sClient...
method createNodePool (line 202) | func (m *nodeManager) createNodePool(opts *deployerOptions, k8sClient ...
method deleteNodeClass (line 260) | func (m *nodeManager) deleteNodeClass(k8sClient *k8sClient) error {
method deleteNodePool (line 273) | func (m *nodeManager) deleteNodePool(k8sClient *k8sClient) error {
method createPlaceholderDeployment (line 294) | func (m *nodeManager) createPlaceholderDeployment(opts *deployerOption...
method deletePlaceholderDeployment (line 346) | func (m *nodeManager) deletePlaceholderDeployment(k8sClient *k8sClient...
method createManagedNodegroup (line 359) | func (m *nodeManager) createManagedNodegroup(infra *Infrastructure, cl...
method createUnmanagedNodegroup (line 408) | func (m *nodeManager) createUnmanagedNodegroup(infra *Infrastructure, ...
method deleteNodes (line 536) | func (m *nodeManager) deleteNodes(k8sClient *k8sClient, opts *deployer...
method deleteManagedNodegroup (line 562) | func (m *nodeManager) deleteManagedNodegroup() error {
method deleteUnmanagedNodegroup (line 590) | func (m *nodeManager) deleteUnmanagedNodegroup() error {
method getUnmanagedNodegroupStackName (line 619) | func (m *nodeManager) getUnmanagedNodegroupStackName() string {
method verifyASGAMI (line 623) | func (m *nodeManager) verifyASGAMI(asgName string, amiId string) (bool...
method getCapacityReservation (line 660) | func (m *nodeManager) getCapacityReservation(opts *deployerOptions) (*...
method getValidAvailabilityZonesFilter (line 694) | func (m *nodeManager) getValidAvailabilityZonesFilter(opts *deployerOp...
method getValidSubnets (line 737) | func (m *nodeManager) getValidSubnets(opts *deployerOptions, infra *In...
method getValidInstanceTypes (line 770) | func (m *nodeManager) getValidInstanceTypes(desiredInstanceTypes []str...
method getNetworkInterfaces (line 791) | func (m *nodeManager) getNetworkInterfaces(opts *deployerOptions, secu...
function NewNodeManager (line 75) | func NewNodeManager(clients *awsClients, resourceID string) *nodeManager {
function formatFilters (line 729) | func formatFilters(filters []ec2types.Filter) string {
function getNetworkInterface (line 829) | func getNetworkInterface(opts *deployerOptions, networkCardIndex int, su...
FILE: internal/deployers/eksapi/static_cluster.go
type StaticClusterManager (line 24) | type StaticClusterManager struct
method SetK8sClient (line 38) | func (s *StaticClusterManager) SetK8sClient(kubeconfig string) {
method EnsureNodeForStaticCluster (line 58) | func (s *StaticClusterManager) EnsureNodeForStaticCluster() error {
method TearDownNodeForStaticCluster (line 65) | func (s *StaticClusterManager) TearDownNodeForStaticCluster() error {
method CreateNodePool (line 72) | func (s *StaticClusterManager) CreateNodePool() error {
method TearDownNodePool (line 114) | func (s *StaticClusterManager) TearDownNodePool() error {
method DeployBusyboxAndWaitForNodes (line 138) | func (s *StaticClusterManager) DeployBusyboxAndWaitForNodes() error {
method TearDownBusyboxAndNodes (line 173) | func (s *StaticClusterManager) TearDownBusyboxAndNodes() error {
type NodeCondition (line 30) | type NodeCondition
function NewStaticClusterManager (line 32) | func NewStaticClusterManager(options *deployerOptions) *StaticClusterMan...
function waitForNodeCondition (line 187) | func waitForNodeCondition(clientset *kubernetes.Clientset, condition Nod...
FILE: internal/deployers/eksapi/templates/templates.go
type NetworkInterface (line 23) | type NetworkInterface struct
type UnmanagedNodegroupTemplateData (line 33) | type UnmanagedNodegroupTemplateData struct
type BusyboxDeploymentTemplateData (line 39) | type BusyboxDeploymentTemplateData struct
type NvidiaStaticClusterNodepoolTemplateData (line 43) | type NvidiaStaticClusterNodepoolTemplateData struct
type UserDataTemplateData (line 70) | type UserDataTemplateData struct
type AuthMapRoleTemplateData (line 86) | type AuthMapRoleTemplateData struct
FILE: internal/deployers/eksapi/templates/templates_test.go
function Test_UnmanagedNodegroup (line 8) | func Test_UnmanagedNodegroup(t *testing.T) {
FILE: internal/deployers/eksapi/userdata.go
constant UserDataBootstrapSh (line 15) | UserDataBootstrapSh = "bootstrap.sh"
constant UserDataNodeadm (line 16) | UserDataNodeadm = "nodeadm"
constant UserDataBottlerocket (line 17) | UserDataBottlerocket = "bottlerocket"
function generateUserData (line 20) | func generateUserData(cluster *Cluster, opts *deployerOptions) (string, ...
function deriveClusterDNSIP (line 70) | func deriveClusterDNSIP(cidr string) (string, error) {
function extractFeatureGates (line 80) | func extractFeatureGates(featureGatePairs []string) (map[string]bool, er...
FILE: internal/deployers/eksapi/userdata_test.go
constant bootstrapShUserData (line 16) | bootstrapShUserData = `Content-Type: text/x-shellscript; charset="us-ascii"
constant nodeadmUserData (line 25) | nodeadmUserData = `Content-Type: application/node.eks.aws
constant nodeadmUserDataKubeletDRA (line 39) | nodeadmUserDataKubeletDRA = `Content-Type: application/node.eks.aws
constant nodeadmUserDataFeatureGate (line 57) | nodeadmUserDataFeatureGate = `Content-Type: application/node.eks.aws
constant bottlerocketUserData (line 73) | bottlerocketUserData = `[settings.kubernetes]
constant bottlerocketUserDataWithDNS (line 83) | bottlerocketUserDataWithDNS = `[settings.kubernetes]
function Test_generateUserData (line 94) | func Test_generateUserData(t *testing.T) {
function Test_extractFeatureGates (line 158) | func Test_extractFeatureGates(t *testing.T) {
function Test_deriveClusterDNSIP (line 191) | func Test_deriveClusterDNSIP(t *testing.T) {
FILE: internal/deployers/eksapi/vpccni.go
constant vpcCNIDaemonSetPatch (line 12) | vpcCNIDaemonSetPatch = `{
method tuneVPCCNI (line 41) | func (k *k8sClient) tuneVPCCNI() error {
FILE: internal/deployers/eksapi/vpccni_test.go
function Test_validVPCCNIDaemonSetPatch (line 8) | func Test_validVPCCNIDaemonSetPatch(t *testing.T) {
FILE: internal/deployers/eksctl/build.go
method Build (line 4) | func (d *deployer) Build() error {
FILE: internal/deployers/eksctl/cluster_config.go
method CreateClusterConfig (line 13) | func (d *deployer) CreateClusterConfig() (*eksctl_api.ClusterConfig, err...
type clusterConfigTemplateParams (line 95) | type clusterConfigTemplateParams struct
method RenderClusterConfig (line 101) | func (d *deployer) RenderClusterConfig() ([]byte, error) {
FILE: internal/deployers/eksctl/deployer.go
constant DeployerName (line 21) | DeployerName = "eksctl"
type deployer (line 23) | type deployer struct
method DumpClusterLogs (line 47) | func (d *deployer) DumpClusterLogs() error {
method Kubeconfig (line 51) | func (d *deployer) Kubeconfig() (string, error) {
method Version (line 58) | func (d *deployer) Version() string {
method initClusterName (line 77) | func (d *deployer) initClusterName() {
method parseClusterNameFromConfig (line 100) | func (d *deployer) parseClusterNameFromConfig(configFilePath string) (...
function NewDeployer (line 35) | func NewDeployer(opts types.Options) (types.Deployer, *pflag.FlagSet) {
function bindFlags (line 63) | func bindFlags(d *deployer) *pflag.FlagSet {
FILE: internal/deployers/eksctl/down.go
method Down (line 10) | func (d *deployer) Down() error {
FILE: internal/deployers/eksctl/up.go
type UpOptions (line 17) | type UpOptions struct
method verifyUpFlags (line 36) | func (d *deployer) verifyUpFlags() error {
method Up (line 83) | func (d *deployer) Up() error {
method renderEksctlArgs (line 159) | func (d *deployer) renderEksctlArgs(configFilePath string) []string {
method IsUp (line 167) | func (d *deployer) IsUp() (up bool, err error) {
function detectKubernetesVersion (line 186) | func detectKubernetesVersion() (string, error) {
FILE: internal/e2e/client.go
function ApplyFiles (line 29) | func ApplyFiles(restConfig *rest.Config, manifestFiles ...string) error {
function ApplyManifests (line 42) | func ApplyManifests(restConfig *rest.Config, manifests ...[]byte) error {
function applyManifests (line 46) | func applyManifests(restConfig *rest.Config, manifests ...io.Reader) err...
function DeleteFiles (line 69) | func DeleteFiles(restConfig *rest.Config, manifestFiles ...string) error {
function DeleteManifests (line 82) | func DeleteManifests(restConfig *rest.Config, manifests ...[]byte) error {
function deleteManifests (line 86) | func deleteManifests(restConfig *rest.Config, manifests ...io.Reader) er...
function RenderManifests (line 115) | func RenderManifests(file []byte, templateData interface{}) ([]byte, err...
function GetJobLogs (line 126) | func GetJobLogs(restConfig *rest.Config, job k8s.Object) (string, error) {
function bytesSlicesToReaders (line 163) | func bytesSlicesToReaders(byteSlices ...[]byte) []io.Reader {
function processObjects (line 172) | func processObjects(restConfig *rest.Config, objs []k8s.Object, processF...
function newResourceHelper (line 192) | func newResourceHelper(restConfig *rest.Config, rm meta.RESTMapper, obj ...
FILE: internal/e2e/conditions.go
type ConditionExtension (line 16) | type ConditionExtension struct
method ResourceMatch (line 26) | func (c *ConditionExtension) ResourceMatch(obj k8s.Object, matchFetche...
method PodRunning (line 35) | func (c *ConditionExtension) PodRunning(pod k8s.Object) apimachinerywa...
method PodSucceeded (line 52) | func (c *ConditionExtension) PodSucceeded(pod k8s.Object) apimachinery...
method DaemonSetReady (line 67) | func (c *ConditionExtension) DaemonSetReady(daemonset k8s.Object) apim...
method JobSucceeded (line 80) | func (c *ConditionExtension) JobSucceeded(job k8s.Object) apimachinery...
method AllNodesHaveNonZeroResourceCapacity (line 100) | func (c *ConditionExtension) AllNodesHaveNonZeroResourceCapacity(resou...
function NewConditionExtension (line 20) | func NewConditionExtension(r *resources.Resources) *ConditionExtension {
FILE: internal/e2e/ec2.go
type EC2Client (line 12) | type EC2Client interface
type ec2Client (line 16) | type ec2Client struct
method DescribeInstanceTopology (line 26) | func (c *ec2Client) DescribeInstanceTopology(instanceIDs []string) ([]...
method DescribeInstanceType (line 41) | func (c *ec2Client) DescribeInstanceType(instanceType string) (ec2type...
function NewEC2Client (line 20) | func NewEC2Client() *ec2Client {
FILE: internal/e2e/health.go
function KubeletIsResponsive (line 14) | func KubeletIsResponsive(ctx context.Context, cfg *rest.Config, nodeName...
FILE: internal/e2e/logs.go
function PrintDaemonSetPodLogs (line 17) | func PrintDaemonSetPodLogs(
function ReadPodLogs (line 56) | func ReadPodLogs(
FILE: internal/e2e/mpijobs/conditions.go
function MPIJobSucceeded (line 12) | func MPIJobSucceeded(obj k8s.Object) bool {
FILE: internal/e2e/mpijobs/conditions_test.go
function Test_MPIJobSucceeded (line 10) | func Test_MPIJobSucceeded(t *testing.T) {
FILE: internal/e2e/mpijobs/types.go
function NewUnstructured (line 14) | func NewUnstructured(name, namespace string) *unstructured.Unstructured {
FILE: internal/e2e/resources.go
function GetNonZeroResourceCapacity (line 9) | func GetNonZeroResourceCapacity(node *v1.Node, resourceName string) (int...
FILE: internal/metrics/cloudwatch.go
function NewCloudWatchRegistry (line 15) | func NewCloudWatchRegistry(cw *cloudwatch.Client) MetricRegistry {
type cloudwatchRegistry (line 23) | type cloudwatchRegistry struct
method Record (line 36) | func (r *cloudwatchRegistry) Record(spec *MetricSpec, value float64, d...
method Emit (line 47) | func (r *cloudwatchRegistry) Emit() error {
method GetRegistered (line 85) | func (r *cloudwatchRegistry) GetRegistered() int {
type cloudwatchMetricDatum (line 29) | type cloudwatchMetricDatum struct
FILE: internal/metrics/noop.go
function NewNoopMetricRegistry (line 3) | func NewNoopMetricRegistry() MetricRegistry {
type noopRegistry (line 7) | type noopRegistry struct
method Record (line 9) | func (r *noopRegistry) Record(spec *MetricSpec, value float64, dimensi...
method Emit (line 11) | func (r *noopRegistry) Emit() error {
FILE: internal/metrics/registry.go
type MetricRegistry (line 7) | type MetricRegistry interface
type MetricSpec (line 14) | type MetricSpec struct
FILE: internal/testers/ginkgov1/ginkgo.go
type Tester (line 45) | type Tester struct
method Test (line 70) | func (t *Tester) Test() error {
method pretestSetup (line 125) | func (t *Tester) pretestSetup() error {
method validateLocalBinaries (line 165) | func (t *Tester) validateLocalBinaries() error {
method validateBinariesFromPath (line 186) | func (t *Tester) validateBinariesFromPath() error {
method ginkgoMajorVersion (line 208) | func (t *Tester) ginkgoMajorVersion() string {
method Execute (line 229) | func (t *Tester) Execute() error {
method initKubetest2Info (line 256) | func (t *Tester) initKubetest2Info() error {
method SetRunDir (line 278) | func (t *Tester) SetRunDir(dir string) {
function NewDefaultTester (line 282) | func NewDefaultTester() *Tester {
function Main (line 293) | func Main() {
FILE: internal/testers/ginkgov1/kubectl/kubectl.go
constant kubectl (line 27) | kubectl = "kubectl"
function APIServerURL (line 31) | func APIServerURL() (string, error) {
function execAndResult (line 52) | func execAndResult(command string, args ...string) (string, error) {
FILE: internal/testers/ginkgov1/package.go
method AcquireTestPackage (line 43) | func (t *Tester) AcquireTestPackage() error {
method extractBinaries (line 83) | func (t *Tester) extractBinaries(downloadPath string) error {
method ensureKubectl (line 157) | func (t *Tester) ensureKubectl(downloadPath string) error {
method ensureReleaseTar (line 191) | func (t *Tester) ensureReleaseTar(downloadPath, releaseTar string) error {
method compareSHA (line 222) | func (t *Tester) compareSHA(downloadPath string, gcsFilePath string) err...
function sha256sum (line 241) | func sha256sum(path string) (string, error) {
FILE: internal/testers/multi/cmd.go
constant TesterName (line 19) | TesterName = "multi"
constant usage (line 21) | usage = `kubetest2 --test=multi -- [MultiTesterDriverArgs] -- [TesterNam...
function Main (line 31) | func Main() {
type multiTesterDriver (line 38) | type multiTesterDriver struct
type tester (line 42) | type tester struct
method run (line 174) | func (t *tester) run() error {
function execute (line 48) | func execute() error {
function test (line 95) | func test(testers []tester, failFast bool) error {
function splitArguments (line 126) | func splitArguments(argv []string) ([]string, [][]string) {
function prepareTesters (line 139) | func prepareTesters(testerClauses [][]string) ([]tester, error) {
function expandEnv (line 160) | func expandEnv(args []string) []string {
FILE: internal/util/cloudformation.go
function WrapCFNStackFailure (line 14) | func WrapCFNStackFailure(ctx context.Context, cfnClient *cloudformation....
FILE: internal/util/exec.go
function ExecuteCommand (line 8) | func ExecuteCommand(name string, args ...string) error {
FILE: internal/util/http.go
constant httpHeaderBoundary (line 11) | httpHeaderBoundary = ": "
function NewHTTPHeaderAPIOptions (line 17) | func NewHTTPHeaderAPIOptions(headers []string) ([]func(*middleware.Stack...
FILE: internal/util/http_test.go
function Test_NewHTTPHeaderAPIOptions (line 7) | func Test_NewHTTPHeaderAPIOptions(t *testing.T) {
FILE: internal/util/lang.go
function Must (line 3) | func Must[T any](t T, err error) T {
FILE: internal/util/path.go
function LookPath (line 14) | func LookPath(file string) (string, error) {
function checkFile (line 29) | func checkFile(file string) error {
FILE: internal/util/version.go
constant KubernetesVersionFile (line 9) | KubernetesVersionFile = "kubernetes-version.txt"
function DetectKubernetesVersion (line 11) | func DetectKubernetesVersion() (string, error) {
function ParseMinorVersion (line 25) | func ParseMinorVersion(semanticVersion string) (string, error) {
FILE: test/cases/disruptive/graceful_reboot_test.go
function getSleepPodTemplate (line 25) | func getSleepPodTemplate(name string) corev1.Pod {
function TestGracefulReboot (line 44) | func TestGracefulReboot(t *testing.T) {
FILE: test/cases/disruptive/graceful_shutdown_test.go
function getPodLogs (line 31) | func getPodLogs(ctx context.Context, cfg *envconf.Config, podName, names...
function checkLogPattern (line 53) | func checkLogPattern(ctx context.Context, cfg *envconf.Config, podName, ...
function countLogMatches (line 68) | func countLogMatches(ctx context.Context, cfg *envconf.Config, podName, ...
function TestKubeletGracefulShutdown (line 83) | func TestKubeletGracefulShutdown(t *testing.T) {
FILE: test/cases/disruptive/main_test.go
function TestMain (line 21) | func TestMain(m *testing.M) {
FILE: test/cases/dra/dra_example_driver_test.go
function TestDraExampleDriver (line 29) | func TestDraExampleDriver(t *testing.T) {
function testResources (line 79) | func testResources() (v1beta1.DeviceClass, v1beta1.ResourceClaimTemplate...
function draDriverResources (line 155) | func draDriverResources() []k8s.Object {
FILE: test/cases/dra/main_test.go
function TestMain (line 21) | func TestMain(m *testing.M) {
FILE: test/cases/efa/commons.go
constant EFA_RESOURCE_NAME (line 39) | EFA_RESOURCE_NAME = "vpc.amazonaws.com/efa"
constant TEST_NAMESPACE_NAME (line 40) | TEST_NAMESPACE_NAME = "efa-tests"
function getEfaCapacity (line 43) | func getEfaCapacity(node corev1.Node) int {
function getEfaNodes (line 51) | func getEfaNodes(ctx context.Context, config *envconf.Config) ([]corev1....
FILE: test/cases/efa/main_test.go
function getTestNamespace (line 25) | func getTestNamespace() *corev1.Namespace {
function deployEFAPlugin (line 33) | func deployEFAPlugin(ctx context.Context, config *envconf.Config) (conte...
function TestMain (line 52) | func TestMain(m *testing.M) {
FILE: test/cases/efa/pingpong_test.go
constant PING_PONG_SERVICE_NAME (line 29) | PING_PONG_SERVICE_NAME = "pingpong-service"
constant SERVER_POD_NAME (line 30) | SERVER_POD_NAME = "pingpong-server"
constant CLIENT_POD_NAME (line 31) | CLIENT_POD_NAME = "pingpong-client"
constant PINGPONG_COMMAND (line 32) | PINGPONG_COMMAND = "fi_pingpong"
function getPingPongPodName (line 35) | func getPingPongPodName(server bool) string {
function getPingPongArgs (line 43) | func getPingPongArgs(server bool) (args []string) {
function getPingPongResourceLabels (line 54) | func getPingPongResourceLabels(server bool) map[string]string {
function generatePingPongServiceManifest (line 61) | func generatePingPongServiceManifest() corev1.Service {
function generatePingPongPodManifest (line 74) | func generatePingPongPodManifest(server bool, node corev1.Node) corev1.P...
function getPingPongPods (line 126) | func getPingPongPods(ctx context.Context, config *envconf.Config) (corev...
function TestPingPong (line 145) | func TestPingPong(t *testing.T) {
FILE: test/cases/efa/unit_test.go
function generateUnitTestManifest (line 25) | func generateUnitTestManifest(node corev1.Node, testIndex int) corev1.Pod {
function getUnitTestPodManifests (line 84) | func getUnitTestPodManifests(ctx context.Context, config *envconf.Config...
function TestUnit (line 98) | func TestUnit(t *testing.T) {
FILE: test/cases/fips/fips_test.go
constant pullTimeout (line 23) | pullTimeout = 5 * time.Minute
constant rejectTimeout (line 24) | rejectTimeout = 2 * time.Minute
function verifyNonfipsCipherRejection (line 37) | func verifyNonfipsCipherRejection(ctx context.Context, t *testing.T, cfg...
function TestFIPSTLS (line 75) | func TestFIPSTLS(t *testing.T) {
FILE: test/cases/fips/main_test.go
constant pollInterval (line 27) | pollInterval = 5 * time.Second
constant seedTimeout (line 28) | seedTimeout = 5 * time.Minute
constant daemonSetTimeout (line 29) | daemonSetTimeout = 2 * time.Minute
constant logFetchTimeout (line 30) | logFetchTimeout = 30 * time.Second
function int64Ptr (line 36) | func int64Ptr(i int64) *int64 { return &i }
function logDaemonSetDiagnostics (line 39) | func logDaemonSetDiagnostics(ctx context.Context, clientset *kubernetes....
function logNodeInfo (line 78) | func logNodeInfo(ctx context.Context, clientset *kubernetes.Clientset) {
function waitForSeed (line 92) | func waitForSeed(ctx context.Context, clientset *kubernetes.Clientset, d...
function TestMain (line 152) | func TestMain(m *testing.M) {
FILE: test/cases/netpol/main_test.go
function TestMain (line 39) | func TestMain(m *testing.M) {
function installDefaultCNIVersion (line 129) | func installDefaultCNIVersion(ctx context.Context, config *envconf.Confi...
function installLatestCNIVersion (line 143) | func installLatestCNIVersion(ctx context.Context, config *envconf.Config...
function uninstallCNIAddon (line 159) | func uninstallCNIAddon(ctx context.Context, config *envconf.Config, eksc...
function getLatestCNIAddon (line 176) | func getLatestCNIAddon(ctx context.Context, eksclient *eks.Client) (stri...
function installCNIAddon (line 194) | func installCNIAddon(ctx context.Context, config *envconf.Config, ekscli...
function getClusterVersion (line 221) | func getClusterVersion(ctx context.Context, eksclient *eks.Client) (stri...
function createNamespace (line 234) | func createNamespace(name string, client klient.Client, ctx context.Cont...
function createServerAndService (line 250) | func createServerAndService(namespace string, name string, replicas int3...
FILE: test/cases/netpol/np_test.go
function TestNetworkPolicyCases (line 21) | func TestNetworkPolicyCases(t *testing.T) {
FILE: test/cases/neuron-dra/main_test.go
function validateConfig (line 49) | func validateConfig() error {
constant neuronHelmReleaseName (line 73) | neuronHelmReleaseName = "neuron-helm-chart"
constant neuronHelmChartOCI (line 74) | neuronHelmChartOCI = "oci://public.ecr.aws/neuron/neuron-helm-chart"
constant neuronDRANamespace (line 75) | neuronDRANamespace = "neuron-dra-driver"
function installNeuronDRADriverHelm (line 81) | func installNeuronDRADriverHelm(ctx context.Context, config *envconf.Con...
function uninstallNeuronDRADriverHelm (line 111) | func uninstallNeuronDRADriverHelm(ctx context.Context, config *envconf.C...
function deployNeuronDRADriver (line 126) | func deployNeuronDRADriver(ctx context.Context, config *envconf.Config) ...
function TestMain (line 142) | func TestMain(m *testing.M) {
FILE: test/cases/neuron-dra/neuron_dra_test.go
function TestNeuronDRAMultiNode (line 16) | func TestNeuronDRAMultiNode(t *testing.T) {
FILE: test/cases/neuron-dra/topology.go
type InstanceTopology (line 21) | type InstanceTopology struct
function GetTopologyForNodeType (line 44) | func GetTopologyForNodeType(nodeType string) (*InstanceTopology, error) {
function supportedFamilies (line 54) | func supportedFamilies() string {
type MPIJobParams (line 67) | type MPIJobParams struct
function RenderMPIJobYAML (line 77) | func RenderMPIJobYAML(params MPIJobParams) ([]byte, error) {
function getNeuronCount (line 96) | func getNeuronCount(rct *common.ResourceClaimTemplateSpec, topo *Instanc...
function ComputeMPIJobParamsFromTestCase (line 112) | func ComputeMPIJobParamsFromTestCase(tc *common.TestCaseSpec, rctIndex m...
FILE: test/cases/neuron-inference/bert_inference_test.go
function TestNeuronInference (line 30) | func TestNeuronInference(t *testing.T) {
function printJobLogs (line 108) | func printJobLogs(ctx context.Context, cfg *envconf.Config, namespace, j...
function getClientset (line 150) | func getClientset(restConfig *rest.Config) (*kubernetes.Clientset, error) {
FILE: test/cases/neuron-inference/main_test.go
function TestMain (line 26) | func TestMain(m *testing.M) {
function discoverNeuronCoreCapacity (line 90) | func discoverNeuronCoreCapacity(ctx context.Context, config *envconf.Con...
function getNodeCapacity (line 121) | func getNodeCapacity(ctx context.Context, config *envconf.Config) (conte...
FILE: test/cases/neuron-inference/vars.go
function init (line 27) | func init() {
FILE: test/cases/neuron-training/bert_training_test.go
function TestBertTraining (line 51) | func TestBertTraining(t *testing.T) {
function gatherJobLogs (line 138) | func gatherJobLogs(ctx context.Context, cfg *envconf.Config, namespace, ...
function aggregateMetricFromLogs (line 177) | func aggregateMetricFromLogs(metricRegex *regexp.Regexp, logs string) (a...
function applyManifests (line 192) | func applyManifests(cfg *envconf.Config, manifests [][]byte) error {
function waitForJobCreation (line 198) | func waitForJobCreation(cfg *envconf.Config) (*batchv1.Job, error) {
function waitForJobCompletion (line 215) | func waitForJobCompletion(job *batchv1.Job, cfg *envconf.Config) error {
function processJobLogs (line 223) | func processJobLogs(ctx context.Context, cfg *envconf.Config) error {
function processMetrics (line 236) | func processMetrics(logs string) {
function cleanupManifests (line 257) | func cleanupManifests(cfg *envconf.Config, manifests [][]byte) {
function getClientset (line 265) | func getClientset(restConfig *rest.Config) (*kubernetes.Clientset, error) {
FILE: test/cases/neuron-training/main_test.go
function TestMain (line 25) | func TestMain(m *testing.M) {
function checkNodeTypes (line 101) | func checkNodeTypes(ctx context.Context, config *envconf.Config) (contex...
function checkNonZeroResourceCapacity (line 181) | func checkNonZeroResourceCapacity(ctx context.Context, config *envconf.C...
FILE: test/cases/neuron-training/vars.go
function init (line 23) | func init() {
FILE: test/cases/neuron/main_test.go
function deployNeuronDevicePlugin (line 43) | func deployNeuronDevicePlugin(ctx context.Context, config *envconf.Confi...
function deployMPIOperator (line 55) | func deployMPIOperator(ctx context.Context, config *envconf.Config) (con...
function deployEFAPlugin (line 67) | func deployEFAPlugin(ctx context.Context, config *envconf.Config) (conte...
function checkNodeTypes (line 85) | func checkNodeTypes(ctx context.Context, config *envconf.Config) (contex...
function TestMain (line 152) | func TestMain(m *testing.M) {
FILE: test/cases/neuron/neuron_test.go
type neuronSingleNodeManifestTplVars (line 32) | type neuronSingleNodeManifestTplVars struct
type neuronMultiNodeTestManifestTplVars (line 36) | type neuronMultiNodeTestManifestTplVars struct
function TestNeuronNodes (line 45) | func TestNeuronNodes(t *testing.T) {
FILE: test/cases/nvidia-dra/main_test.go
function validateConfig (line 49) | func validateConfig() error {
constant nvidiaDRAHelmReleaseName (line 77) | nvidiaDRAHelmReleaseName = "nvidia-dra-driver-gpu"
constant nvidiaDRAHelmRepoName (line 78) | nvidiaDRAHelmRepoName = "nvidia-dra"
constant nvidiaDRAHelmRepoURL (line 79) | nvidiaDRAHelmRepoURL = "https://helm.ngc.nvidia.com/nvidia"
constant nvidiaDRANamespace (line 80) | nvidiaDRANamespace = "nvidia-dra-driver-gpu"
constant nvidiaDRAHelmChartVer (line 81) | nvidiaDRAHelmChartVer = "25.8.1"
function labelNodesGPUPresent (line 85) | func labelNodesGPUPresent(ctx context.Context) error {
function installNvidiaDRADriverHelm (line 105) | func installNvidiaDRADriverHelm(ctx context.Context, config *envconf.Con...
function uninstallNvidiaDRADriverHelm (line 146) | func uninstallNvidiaDRADriverHelm(ctx context.Context, config *envconf.C...
function waitForNvidiaDRADriverReady (line 161) | func waitForNvidiaDRADriverReady(ctx context.Context, config *envconf.Co...
function TestMain (line 177) | func TestMain(m *testing.M) {
FILE: test/cases/nvidia-dra/nvidia_dra_test.go
function TestNvidiaDRAMultiNode (line 16) | func TestNvidiaDRAMultiNode(t *testing.T) {
FILE: test/cases/nvidia-dra/topology.go
type NvidiaInstanceTopology (line 22) | type NvidiaInstanceTopology struct
function GetTopologyForNodeType (line 45) | func GetTopologyForNodeType(nodeType string) (*NvidiaInstanceTopology, e...
function supportedFamilies (line 55) | func supportedFamilies() string {
type NvidiaMPIJobParams (line 68) | type NvidiaMPIJobParams struct
function RenderNvidiaMPIJobYAML (line 78) | func RenderNvidiaMPIJobYAML(params NvidiaMPIJobParams) ([]byte, error) {
function getGPUCount (line 97) | func getGPUCount(rct *common.ResourceClaimTemplateSpec, topo *NvidiaInst...
function ComputeNvidiaMPIJobParams (line 117) | func ComputeNvidiaMPIJobParams(tc *common.TestCaseSpec, rctIndex map[str...
FILE: test/cases/nvidia-inference/bert_inference_test.go
type bertInferenceManifestTplVars (line 30) | type bertInferenceManifestTplVars struct
function TestBertInference (line 36) | func TestBertInference(t *testing.T) {
function printJobLogs (line 114) | func printJobLogs(ctx context.Context, cfg *envconf.Config, namespace, j...
function getClientset (line 158) | func getClientset(restConfig *rest.Config) (*kubernetes.Clientset, error) {
FILE: test/cases/nvidia-inference/main_test.go
type TestConfig (line 26) | type TestConfig struct
function TestMain (line 38) | func TestMain(m *testing.M) {
function checkGpuCapacity (line 116) | func checkGpuCapacity(ctx context.Context, config *envconf.Config) (cont...
FILE: test/cases/nvidia-training/bert_training_test.go
function TestBertTraining (line 30) | func TestBertTraining(t *testing.T) {
function printJobLogs (line 95) | func printJobLogs(ctx context.Context, cfg *envconf.Config, namespace, j...
function getClientset (line 135) | func getClientset(restConfig *rest.Config) (*kubernetes.Clientset, error) {
FILE: test/cases/nvidia-training/main_test.go
function TestMain (line 29) | func TestMain(m *testing.M) {
function checkNodeTypes (line 128) | func checkNodeTypes(ctx context.Context, config *envconf.Config) (contex...
FILE: test/cases/nvidia-training/vars.go
type Config (line 10) | type Config struct
FILE: test/cases/nvidia/capabilities_test.go
constant PodName (line 27) | PodName = "moderngl-pod"
constant PodNamespace (line 28) | PodNamespace = "default"
function TestNvidiaDriverCapabilities (line 31) | func TestNvidiaDriverCapabilities(t *testing.T) {
FILE: test/cases/nvidia/containerd_test.go
function TestContainerdConfig (line 26) | func TestContainerdConfig(t *testing.T) {
FILE: test/cases/nvidia/main_test.go
type Config (line 28) | type Config struct
function deployMPIOperator (line 46) | func deployMPIOperator(ctx context.Context, config *envconf.Config) (con...
function checkNodeTypes (line 58) | func checkNodeTypes(ctx context.Context, config *envconf.Config) (contex...
function TestMain (line 98) | func TestMain(m *testing.M) {
FILE: test/cases/nvidia/mpi_test.go
type ncclTestManifestTplVars (line 36) | type ncclTestManifestTplVars struct
function TestMPIJobPytorchTraining (line 48) | func TestMPIJobPytorchTraining(t *testing.T) {
function multiNode (line 57) | func multiNode(testName string) features.Feature {
function singleNode (line 145) | func singleNode() features.Feature {
FILE: test/cases/nvidia/unit_test.go
type unitTestManifestTplVars (line 30) | type unitTestManifestTplVars struct
type hpcTestManifestTplVars (line 37) | type hpcTestManifestTplVars struct
function TestSingleNodeUnitTest (line 41) | func TestSingleNodeUnitTest(t *testing.T) {
FILE: test/cases/quick/io_uring_test.go
function TestNpmInstallWithCPULimits (line 22) | func TestNpmInstallWithCPULimits(t *testing.T) {
FILE: test/cases/quick/limit_test.go
function TestUserLimits (line 50) | func TestUserLimits(t *testing.T) {
function compareResourceLimitsWithExpectedValues (line 99) | func compareResourceLimitsWithExpectedValues(t *testing.T, logs io.ReadC...
function containerTerminated (line 120) | func containerTerminated(obj k8s.Object) bool {
function getMarker (line 126) | func getMarker(str string) string {
FILE: test/cases/quick/main_test.go
function TestMain (line 21) | func TestMain(m *testing.M) {
FILE: test/cases/quick/node_topology_test.go
function TestNodeTopology (line 20) | func TestNodeTopology(t *testing.T) {
FILE: test/cases/workload/main_test.go
constant defaultWorkloadTestTimeout (line 20) | defaultWorkloadTestTimeout = 10 * time.Minute
function TestMain (line 32) | func TestMain(m *testing.M) {
FILE: test/cases/workload/workload_test.go
function createWorkloadJob (line 23) | func createWorkloadJob(name, image, command string, resources map[string...
function buildResourceRequirements (line 62) | func buildResourceRequirements(resources map[string]string) corev1.Resou...
function parseResources (line 73) | func parseResources(resourcesJSON string) (map[string]string, error) {
function TestWorkload (line 89) | func TestWorkload(t *testing.T) {
FILE: test/common/dra.go
function DeployDranet (line 25) | func DeployDranet(ctx context.Context, config *envconf.Config, rdmaDevic...
function CountNodesByType (line 55) | func CountNodesByType(ctx context.Context, clientset kubernetes.Interfac...
function DeployMPIOperator (line 72) | func DeployMPIOperator(ctx context.Context, config *envconf.Config) error {
FILE: test/common/dra_features.go
constant NegativeTestTimeout (line 27) | NegativeTestTimeout = 1 * time.Minute
constant NegativeTestStabilizationTimeout (line 30) | NegativeTestStabilizationTimeout = 2 * time.Minute
constant PositiveTestTimeout (line 32) | PositiveTestTimeout = 20 * time.Minute
type ComputeAndRenderFunc (line 38) | type ComputeAndRenderFunc
function BuildPositiveFeature (line 43) | func BuildPositiveFeature(name, suiteName, mpiJobName string, manifest [...
function BuildNegativeFeature (line 87) | func BuildNegativeFeature(name, suiteName, mpiJobName string, manifest [...
function DiscoverAndBuildFeatures (line 141) | func DiscoverAndBuildFeatures(
FILE: test/common/dra_types.go
type TestCaseClaimRef (line 17) | type TestCaseClaimRef struct
type TestCaseSpec (line 26) | type TestCaseSpec struct
type ResourceClaimTemplateSpec (line 36) | type ResourceClaimTemplateSpec struct
type ResourceClaimRef (line 60) | type ResourceClaimRef struct
function ParseTestCaseSpec (line 71) | func ParseTestCaseSpec(data []byte) (*TestCaseSpec, error) {
function IsYAMLFile (line 83) | func IsYAMLFile(name string) bool {
function LoadRCTIndex (line 90) | func LoadRCTIndex(fsys fs.FS, dir string) (map[string]*ResourceClaimTemp...
function ExtractFamily (line 115) | func ExtractFamily(nodeType string) string {
function SplitImageRepoTag (line 129) | func SplitImageRepoTag(image string) (repo, tag string) {
function ValidateRequiredFlags (line 140) | func ValidateRequiredFlags(flags map[string]string) error {
function LoadRCTManifests (line 152) | func LoadRCTManifests(fsys fs.FS, rctSubDir string) ([][]byte, error) {
FILE: test/common/flags.go
type MetricOps (line 14) | type MetricOps struct
function ParseFlags (line 20) | func ParseFlags(config interface{}) (*pflag.FlagSet, error) {
FILE: test/common/resources.go
function DeployDaemonSet (line 20) | func DeployDaemonSet(name, namespace string) env.Func {
FILE: test/images/neuron-inference/infer.py
function get_neuron_monitor_stats (line 25) | def get_neuron_monitor_stats():
function print_info (line 78) | def print_info(msg: str):
function print_warning (line 83) | def print_warning(msg: str):
function print_error (line 88) | def print_error(msg: str):
function create_dummy_data (line 93) | def create_dummy_data(tokenizer, batch_size, num_samples=10000, max_leng...
function run_inference (line 173) | def run_inference(model, tokenizer, batch_size, mode, n_models=2, n_thre...
function main (line 291) | def main():
FILE: test/images/neuron-training/train.py
function create_dummy_data (line 20) | def create_dummy_data(tokenizer, num_samples=100, max_length=128):
function mask_tokens (line 45) | def mask_tokens(inputs, tokenizer, mlm_probability):
function complete_epoch (line 65) | def complete_epoch(epoch, optimizer, parallel_loader, model):
function main (line 85) | def main():
FILE: test/images/neuron/tests/testNeuronMlp.py
class MLP (line 35) | class MLP(nn.Module):
method __init__ (line 36) | def __init__(self, input_size = 28 * 28, output_size = 10, layers = [1...
method forward (line 42) | def forward(self, x):
function main (line 49) | def main():
FILE: test/images/neuron/tests/testNeuronParallelState.py
function test_initialize_model_parallel (line 23) | def test_initialize_model_parallel(tensor_model_parallel_size):
function test_get_tensor_model_parallel_src_rank (line 67) | def test_get_tensor_model_parallel_src_rank(tensor_model_parallel_size_):
FILE: test/images/neuron/tests/testNeuronSingleAllReduce.py
function _mp_fn (line 12) | def _mp_fn():
FILE: test/images/nvidia-inference/infer.py
function create_dummy_data (line 19) | def create_dummy_data(tokenizer, batch_size, num_samples=100, max_length...
function run_inference (line 81) | def run_inference(model, tokenizer, batch_size, mode, device):
function main (line 139) | def main():
FILE: test/images/nvidia-training/train.py
function create_dummy_data (line 11) | def create_dummy_data(tokenizer, num_samples=100, max_length=128):
function mask_tokens (line 32) | def mask_tokens(inputs, tokenizer, mlm_probability):
function setup (line 46) | def setup(rank, world_size, local_rank):
function cleanup (line 59) | def cleanup():
function train_bert (line 63) | def train_bert(rank, world_size, local_rank, model, tokenizer):
function main (line 109) | def main():
FILE: test/manifests/rendered.go
function RenderCloudWatchAgentManifest (line 11) | func RenderCloudWatchAgentManifest(metricDimensions map[string]string) (...
Condensed preview — 270 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (1,550K chars).
[
{
"path": ".dockerignore",
"chars": 66,
"preview": ".git/\n.github/\nbin/\nCHANGELOG/\nDockerfile\nMakefile\naws-k8s-tester\n"
},
{
"path": ".github/PULL_REQUEST_TEMPLATE.md",
"chars": 169,
"preview": "*Issue #, if available:*\n\n*Description of changes:*\n\n\nBy submitting this pull request, I confirm that my contribution is"
},
{
"path": ".github/workflows/build-neuron-ci.yaml",
"chars": 824,
"preview": "name: \"Neuron Images CI\"\non:\n pull_request:\n types:\n - opened\n - reopened\n - synchronize\n paths:\n "
},
{
"path": ".github/workflows/build-nvidia-ci.yaml",
"chars": 1381,
"preview": "name: \"Nvidia Images CI\"\non:\n pull_request:\n types:\n - opened\n - reopened\n - synchronize\n paths:\n "
},
{
"path": ".github/workflows/ci.yaml",
"chars": 833,
"preview": "name: \"CI\"\non:\n pull_request:\n types:\n - opened\n - reopened\n - synchronize\n paths-ignore:\n - "
},
{
"path": ".github/workflows/update-go-dependencies.yaml",
"chars": 1063,
"preview": "name: \"[CI] update-go-dependencies\"\non:\n workflow_dispatch:\n schedule:\n # once a week\n - cron: \"0 0 * * 0\"\npermi"
},
{
"path": ".github/workflows/update-image-tags.yaml",
"chars": 912,
"preview": "name: \"[CI] update-image-tags\"\non:\n workflow_dispatch:\n schedule:\n # once a week\n - cron: \"0 0 * * 0\"\npermission"
},
{
"path": ".github/workflows/update-neuron-dependencies.yaml",
"chars": 1180,
"preview": "name: \"[CI] update-neuron-dependencies\"\non:\n workflow_dispatch:\n schedule:\n # once a week\n - cron: \"0 0 * * 0\"\np"
},
{
"path": ".github/workflows/update-nvidia-dependencies.yaml",
"chars": 976,
"preview": "name: \"[CI] update-nvidia-dependencies\"\non:\n workflow_dispatch:\n schedule:\n # once a week\n - cron: \"0 0 * * 0\"\np"
},
{
"path": ".gitignore",
"chars": 97,
"preview": "/.DS_Store\n/bin\n/_tmp\n.idea\n*.swp\n/aws-k8s-tester\n*/*/.DS_Store\n*/.DS_Store\n/_artifacts\n/_rundir\n"
},
{
"path": ".vscode/settings.json",
"chars": 38,
"preview": "{\n \"git.ignoreLimitWarning\": true\n}"
},
{
"path": "CODE_OF_CONDUCT.md",
"chars": 311,
"preview": "## Code of Conduct\nThis project has adopted the [Amazon Open Source Code of Conduct](https://aws.github.io/code-of-condu"
},
{
"path": "CONTRIBUTING.md",
"chars": 3559,
"preview": "# Contributing Guidelines\n\nThank you for your interest in contributing to our project. Whether it's a bug report, new fe"
},
{
"path": "Config",
"chars": 352,
"preview": "# This file is for Amazon internal build processes\n\n# Copyright 2025 Amazon.com, Inc. or its affiliates.\n# SPDX-License-"
},
{
"path": "Dockerfile",
"chars": 2510,
"preview": "FROM public.ecr.aws/amazonlinux/amazonlinux:2023 AS builder\nARG TARGETOS\nARG TARGETARCH\nRUN dnf install -y git tar gzip "
},
{
"path": "LICENSE",
"chars": 11358,
"preview": "\n Apache License\n Version 2.0, January 2004\n "
},
{
"path": "Makefile",
"chars": 323,
"preview": "include ${BGO_MAKEFILE}\n\npre-release::\n\tgo test -c -tags=e2e ./test/... -o $(GOBIN)\n\tgo install sigs.k8s.io/kubetest2/.."
},
{
"path": "NOTICE",
"chars": 83,
"preview": "Awstester\nCopyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. \n"
},
{
"path": "README.md",
"chars": 2905,
"preview": "# Tools for testing Kubernetes on AWS\n\n## Installation\n\nThis project will use rolling releases going forward; we recomme"
},
{
"path": "bmg.json",
"chars": 36,
"preview": "{\n \"binary_artifacts_only\": true\n}\n"
},
{
"path": "cmd/kubetest2-eksapi/main.go",
"chars": 185,
"preview": "package main\n\nimport (\n\t\"github.com/aws/aws-k8s-tester/internal/deployers/eksapi\"\n\t\"sigs.k8s.io/kubetest2/pkg/app\"\n)\n\nfu"
},
{
"path": "cmd/kubetest2-eksapi-janitor/main.go",
"chars": 822,
"preview": "package main\n\nimport (\n\t\"context\"\n\t\"flag\"\n\t\"log/slog\"\n\t\"os\"\n\t\"time\"\n\n\t\"github.com/aws/aws-k8s-tester/internal/deployers/"
},
{
"path": "cmd/kubetest2-eksctl/main.go",
"chars": 185,
"preview": "package main\n\nimport (\n\t\"github.com/aws/aws-k8s-tester/internal/deployers/eksctl\"\n\t\"sigs.k8s.io/kubetest2/pkg/app\"\n)\n\nfu"
},
{
"path": "cmd/kubetest2-tester-ginkgo-v1/main.go",
"chars": 118,
"preview": "package main\n\nimport (\n\t\"github.com/aws/aws-k8s-tester/internal/testers/ginkgov1\"\n)\n\nfunc main() {\n\tginkgov1.Main()\n}\n"
},
{
"path": "cmd/kubetest2-tester-multi/main.go",
"chars": 107,
"preview": "package main\n\nimport \"github.com/aws/aws-k8s-tester/internal/testers/multi\"\n\nfunc main() {\n\tmulti.Main()\n}\n"
},
{
"path": "external/tools.go",
"chars": 325,
"preview": "//go:build tools\n// +build tools\n\npackage external\n\n// this file allows us to declare direct dependencies on our require"
},
{
"path": "go.mod",
"chars": 19399,
"preview": "module github.com/aws/aws-k8s-tester\n\ngo 1.25.5\n\nrequire (\n\tgithub.com/aws/aws-sdk-go v1.55.8\n\tgithub.com/aws/aws-sdk-go"
},
{
"path": "go.sum",
"chars": 122673,
"preview": "cel.dev/expr v0.25.1 h1:1KrZg61W6TWSxuNZ37Xy49ps13NUovb66QLprthtwi4=\ncel.dev/expr v0.25.1/go.mod h1:hrXvqGP6G6gyx8UAHSHJ"
},
{
"path": "hack/download-kubernetes-binaries.sh",
"chars": 1169,
"preview": "#!/usr/bin/env bash\n\nset -o errexit\nset -o nounset\n\nBUNDLES=(\n \"kubernetes-client\"\n \"kubernetes-test\"\n)\n\nif [ \"$#\" -ne"
},
{
"path": "hack/free-disk-space.sh",
"chars": 407,
"preview": "#!/usr/bin/env bash\n\nset -o nounset\nset -o errexit\nset -o pipefail\n\n# hack to free up disk space for build\n# ref: https:"
},
{
"path": "hack/update-go-dependencies.sh",
"chars": 440,
"preview": "#!/usr/bin/env bash\n\nset -o nounset\nset -o errexit\nset -o pipefail\n\necho \"Updating go modules...\"\ngo get $(go list -f '{"
},
{
"path": "hack/update-image-tags.sh",
"chars": 2967,
"preview": "#!/usr/bin/env bash\n\nset -o nounset\nset -o errexit\nset -o pipefail\n\nECR_PUBLIC_REGISTRY=\"public.ecr.aws\"\nEKS_CONTAINER_R"
},
{
"path": "hack/update-neuron-dependencies.sh",
"chars": 1596,
"preview": "#!/usr/bin/env bash\n\nset -o nounset\nset -o errexit\nset -o pipefail\n\n# pip_versionsearch takes exactly 1 argument and ret"
},
{
"path": "hack/update-nvidia-dependencies.sh",
"chars": 1073,
"preview": "#!/usr/bin/env bash\n\n# following from the last updated dependency:\n# 1. get the latest release of aws-ofi-nccl\n# 2. get "
},
{
"path": "internal/awssdk/config.go",
"chars": 403,
"preview": "package awssdk\n\nimport (\n\t\"context\"\n\t\"log/slog\"\n\n\t\"github.com/aws/aws-sdk-go-v2/aws\"\n\t\"github.com/aws/aws-sdk-go-v2/conf"
},
{
"path": "internal/deployers/eksapi/addons.go",
"chars": 2797,
"preview": "package eksapi\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"log/slog\"\n\t\"strings\"\n\t\"time\"\n\n\t\"github.com/aws/aws-sdk-go-v2/aws\"\n\t\"github."
},
{
"path": "internal/deployers/eksapi/ami_resolver.go",
"chars": 3853,
"preview": "package eksapi\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"log/slog\"\n\n\t\"github.com/aws/aws-sdk-go-v2/aws\"\n\t\"github.com/aws/aws-sdk-go-"
},
{
"path": "internal/deployers/eksapi/ami_resolver_test.go",
"chars": 1517,
"preview": "//go:build integration\n\npackage eksapi\n\nimport (\n\t\"context\"\n\t\"testing\"\n\n\t\"github.com/aws/aws-sdk-go-v2/config\"\n\t\"github."
},
{
"path": "internal/deployers/eksapi/auth_map_role.go",
"chars": 451,
"preview": "package eksapi\n\nimport (\n\t\"bytes\"\n\n\t\"github.com/aws/aws-k8s-tester/internal/deployers/eksapi/templates\"\n)\n\nfunc generate"
},
{
"path": "internal/deployers/eksapi/auth_map_role_test.go",
"chars": 1001,
"preview": "package eksapi\n\nimport (\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/assert\"\n)\n\nconst rolearn = \"mock-role-arn\"\n\nconst ses"
},
{
"path": "internal/deployers/eksapi/aws.go",
"chars": 1745,
"preview": "package eksapi\n\nimport (\n\t\"github.com/aws/aws-sdk-go-v2/aws\"\n\t\"github.com/aws/aws-sdk-go-v2/service/autoscaling\"\n\t\"githu"
},
{
"path": "internal/deployers/eksapi/cluster.go",
"chars": 6421,
"preview": "package eksapi\n\nimport (\n\t\"context\"\n\t\"errors\"\n\t\"fmt\"\n\t\"log/slog\"\n\t\"time\"\n\n\t\"github.com/aws/aws-k8s-tester/internal/util\""
},
{
"path": "internal/deployers/eksapi/common.go",
"chars": 632,
"preview": "package eksapi\n\nimport (\n\t\"os\"\n\t\"slices\"\n\t\"strings\"\n)\n\nconst AvailabilityZonePriorityEnv = \"EKSAPI_AZ_PRIORITY\"\n\nfunc av"
},
{
"path": "internal/deployers/eksapi/common_test.go",
"chars": 328,
"preview": "package eksapi\n\nimport (\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/assert\"\n)\n\nfunc Test_AZ_PRIORITY(t *testing.T) {\n\tt.S"
},
{
"path": "internal/deployers/eksapi/deployer.go",
"chars": 16837,
"preview": "package eksapi\n\nimport (\n\t\"context\"\n\t\"flag\"\n\t\"fmt\"\n\t\"log/slog\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"strings\"\n\t\"time\"\n\n\t\"github.com/a"
},
{
"path": "internal/deployers/eksapi/infra.go",
"chars": 21298,
"preview": "package eksapi\n\nimport (\n\t\"context\"\n\t_ \"embed\"\n\t\"errors\"\n\t\"fmt\"\n\t\"log/slog\"\n\t\"path\"\n\t\"slices\"\n\t\"sort\"\n\t\"strings\"\n\t\"time\""
},
{
"path": "internal/deployers/eksapi/janitor.go",
"chars": 3892,
"preview": "package eksapi\n\nimport (\n\t\"context\"\n\t\"errors\"\n\t\"fmt\"\n\t\"log/slog\"\n\t\"strings\"\n\t\"sync\"\n\t\"time\"\n\n\t\"github.com/aws/aws-k8s-te"
},
{
"path": "internal/deployers/eksapi/k8s.go",
"chars": 9907,
"preview": "package eksapi\n\nimport (\n\t\"context\"\n\t\"errors\"\n\t\"fmt\"\n\t\"log/slog\"\n\t\"net\"\n\t\"net/url\"\n\t\"strings\"\n\t\"time\"\n\n\t\"github.com/aws/"
},
{
"path": "internal/deployers/eksapi/kubeconfig.go",
"chars": 1852,
"preview": "package eksapi\n\nimport (\n\t\"bytes\"\n\t\"fmt\"\n\t\"log/slog\"\n\t\"os\"\n\t\"text/template\"\n)\n\nconst kubeconfigPerm = 0666\n\nvar kubeconf"
},
{
"path": "internal/deployers/eksapi/logs.go",
"chars": 9247,
"preview": "package eksapi\n\nimport (\n\t\"context\"\n\t_ \"embed\"\n\t\"errors\"\n\t\"fmt\"\n\t\"log/slog\"\n\t\"slices\"\n\t\"time\"\n\n\t\"github.com/aws/aws-sdk-"
},
{
"path": "internal/deployers/eksapi/logs_ssm_doc.json",
"chars": 732,
"preview": "{\n \"schemaVersion\": \"2.2\",\n \"description\": \"Collect logs from an Amazon Linux EKS node\",\n \"parameters\": {\n "
},
{
"path": "internal/deployers/eksapi/metrics.go",
"chars": 777,
"preview": "package eksapi\n\nimport (\n\t\"path\"\n\n\t\"github.com/aws/aws-k8s-tester/internal/metrics\"\n\tcloudwatchtypes \"github.com/aws/aws"
},
{
"path": "internal/deployers/eksapi/node.go",
"chars": 29900,
"preview": "package eksapi\n\nimport (\n\t\"bytes\"\n\t\"context\"\n\t_ \"embed\"\n\t\"errors\"\n\t\"fmt\"\n\t\"strconv\"\n\t\"strings\"\n\t\"time\"\n\n\t\"github.com/aws"
},
{
"path": "internal/deployers/eksapi/static_cluster.go",
"chars": 5677,
"preview": "package eksapi\n\nimport (\n\t\"bytes\"\n\t\"context\"\n\t\"fmt\"\n\t\"log/slog\"\n\t\"strings\"\n\t\"time\"\n\n\t\"github.com/aws/aws-k8s-tester/inte"
},
{
"path": "internal/deployers/eksapi/templates/auth_map_role.yaml.template",
"chars": 143,
"preview": "\n- username: system:node:{{\"{{\"}}{{.NodeNameStrategy}}{{\"}}\"}} \n groups:\n - system:bootstrappers\n - system:nodes\n"
},
{
"path": "internal/deployers/eksapi/templates/busybox_deployment.yaml.template",
"chars": 636,
"preview": "apiVersion: apps/v1\nkind: Deployment\nmetadata:\n name: busybox-deployment\nspec:\n replicas: {{.Nodes}}\n selector:\n m"
},
{
"path": "internal/deployers/eksapi/templates/cloudwatch-infra.yaml.template",
"chars": 1028,
"preview": "AWSTemplateFormatVersion: '2010-09-09'\nDescription: kubetest2-eksapi CloudWatch using Pod Identity\n\nParameters:\n Cluste"
},
{
"path": "internal/deployers/eksapi/templates/cloudwatch_agent_infra.yaml",
"chars": 940,
"preview": "apiVersion: v1\nkind: Namespace\nmetadata:\n name: amazon-cloudwatch\n labels:\n name: amazon-cloudwatch\n\n---\napiVersion"
},
{
"path": "internal/deployers/eksapi/templates/infra.yaml",
"chars": 14000,
"preview": "---\nAWSTemplateFormatVersion: \"2010-09-09\"\nDescription: \"kubetest2-eksapi infrastructure\"\n\nParameters:\n VpcBlock:\n T"
},
{
"path": "internal/deployers/eksapi/templates/nvidia_static_cluster_nodepool.yaml.template",
"chars": 928,
"preview": "apiVersion: karpenter.sh/v1\nkind: NodePool\nmetadata:\n labels:\n app.kubernetes.io/managed-by: eks\n name: nvidia\nspec"
},
{
"path": "internal/deployers/eksapi/templates/templates.go",
"chars": 2547,
"preview": "package templates\n\nimport (\n\t_ \"embed\"\n\t\"text/template\"\n)\n\n//go:embed infra.yaml\nvar Infrastructure string\n\n//go:embed c"
},
{
"path": "internal/deployers/eksapi/templates/templates_test.go",
"chars": 341,
"preview": "package templates\n\nimport (\n\t\"bytes\"\n\t\"testing\"\n)\n\nfunc Test_UnmanagedNodegroup(t *testing.T) {\n\tbuf := bytes.Buffer{}\n\t"
},
{
"path": "internal/deployers/eksapi/templates/unmanaged-nodegroup.yaml.template",
"chars": 5713,
"preview": "---\nAWSTemplateFormatVersion: '2010-09-09'\nDescription: 'kubetest2-eksapi unmanaged nodegroup'\n\nParameters:\n ResourceId"
},
{
"path": "internal/deployers/eksapi/templates/userdata_bootstrap.sh.mimepart.template",
"chars": 219,
"preview": "Content-Type: text/x-shellscript; charset=\"us-ascii\"\nMIME-Version: 1.0\n\n#!/usr/bin/env bash\n/etc/eks/bootstrap.sh {{.Nam"
},
{
"path": "internal/deployers/eksapi/templates/userdata_bottlerocket.toml.template",
"chars": 312,
"preview": "[settings.kubernetes]\n\"cluster-name\" = \"{{.Name}}\"\n\"api-server\" = \"{{.APIServerEndpoint}}\"\n\"cluster-certificate\" = \"{{.C"
},
{
"path": "internal/deployers/eksapi/templates/userdata_nodeadm.yaml.mimepart.template",
"chars": 613,
"preview": "Content-Type: application/node.eks.aws\nMIME-Version: 1.0\n\n---\napiVersion: node.eks.aws/v1alpha1\nkind: NodeConfig\nspec:\n{"
},
{
"path": "internal/deployers/eksapi/userdata.go",
"chars": 2635,
"preview": "package eksapi\n\nimport (\n\t\"bytes\"\n\t\"fmt\"\n\t\"net\"\n\t\"strconv\"\n\t\"strings\"\n\t\"text/template\"\n\n\t\"github.com/aws/aws-k8s-tester/"
},
{
"path": "internal/deployers/eksapi/userdata_test.go",
"chars": 4929,
"preview": "package eksapi\n\nimport (\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/assert\"\n)\n\nvar cluster = Cluster{\n\tname: "
},
{
"path": "internal/deployers/eksapi/vpccni.go",
"chars": 989,
"preview": "package eksapi\n\nimport (\n\t\"bytes\"\n\t\"context\"\n\t\"encoding/json\"\n\n\tmetav1 \"k8s.io/apimachinery/pkg/apis/meta/v1\"\n\t\"k8s.io/a"
},
{
"path": "internal/deployers/eksapi/vpccni_test.go",
"chars": 225,
"preview": "package eksapi\n\nimport (\n\t\"encoding/json\"\n\t\"testing\"\n)\n\nfunc Test_validVPCCNIDaemonSetPatch(t *testing.T) {\n\tvar j json."
},
{
"path": "internal/deployers/eksctl/build.go",
"chars": 85,
"preview": "package eksctl\n\n// Build is a no-op\nfunc (d *deployer) Build() error {\n\treturn nil\n}\n"
},
{
"path": "internal/deployers/eksctl/cluster_config.go",
"chars": 3206,
"preview": "package eksctl\n\nimport (\n\t\"fmt\"\n\t\"log/slog\"\n\n\teksctl_api \"github.com/weaveworks/eksctl/pkg/apis/eksctl.io/v1alpha5\"\n\t\"si"
},
{
"path": "internal/deployers/eksctl/deployer.go",
"chars": 3652,
"preview": "package eksctl\n\nimport (\n\t\"flag\"\n\t\"fmt\"\n\t\"log/slog\"\n\t\"os\"\n\t\"path/filepath\"\n\n\t\"github.com/aws/aws-k8s-tester/internal\"\n\t\""
},
{
"path": "internal/deployers/eksctl/down.go",
"chars": 1159,
"preview": "package eksctl\n\nimport (\n\t\"fmt\"\n\t\"log/slog\"\n\n\t\"github.com/aws/aws-k8s-tester/internal/util\"\n)\n\nfunc (d *deployer) Down()"
},
{
"path": "internal/deployers/eksctl/up.go",
"chars": 6636,
"preview": "package eksctl\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"log/slog\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"slices\"\n\n\t\"github.com/aws/aws-k8s-tester"
},
{
"path": "internal/e2e/client.go",
"chars": 6523,
"preview": "package e2e\n\nimport (\n\t\"bytes\"\n\t\"context\"\n\t\"fmt\"\n\t\"html/template\"\n\t\"io\"\n\t\"os\"\n\n\tbatchv1 \"k8s.io/api/batch/v1\"\n\tcorev1 \"k"
},
{
"path": "internal/e2e/conditions.go",
"chars": 3849,
"preview": "package e2e\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\n\tappsv1 \"k8s.io/api/apps/v1\"\n\tbatchv1 \"k8s.io/api/batch/v1\"\n\tv1 \"k8s.io/api/cor"
},
{
"path": "internal/e2e/doc.go",
"chars": 85,
"preview": "// Package frameworkext contains extensions to sigs.k8s.io/e2e-framework\npackage e2e\n"
},
{
"path": "internal/e2e/ec2.go",
"chars": 1520,
"preview": "package e2e\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\n\t\"github.com/aws/aws-k8s-tester/internal/awssdk\"\n\t\"github.com/aws/aws-sdk-go-v2"
},
{
"path": "internal/e2e/health.go",
"chars": 1608,
"preview": "package e2e\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"strings\"\n\n\t\"k8s.io/client-go/kubernetes\"\n\t\"k8s.io/client-go/rest\"\n)\n\n// Kubele"
},
{
"path": "internal/e2e/logs.go",
"chars": 2175,
"preview": "package e2e\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"io\"\n\t\"testing\"\n\n\tcorev1 \"k8s.io/api/core/v1\"\n\tmetav1 \"k8s.io/apimachinery/pkg/"
},
{
"path": "internal/e2e/mpijobs/conditions.go",
"chars": 1099,
"preview": "package mpijobs\n\nimport (\n\t\"fmt\"\n\n\t\"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured\"\n\t\"sigs.k8s.io/e2e-framework/klien"
},
{
"path": "internal/e2e/mpijobs/conditions_test.go",
"chars": 748,
"preview": "package mpijobs\n\nimport (\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/assert\"\n\t\"k8s.io/apimachinery/pkg/apis/meta/v1/unstr"
},
{
"path": "internal/e2e/mpijobs/types.go",
"chars": 434,
"preview": "package mpijobs\n\nimport (\n\t\"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured\"\n\t\"k8s.io/apimachinery/pkg/runtime/schema\""
},
{
"path": "internal/e2e/resources.go",
"chars": 462,
"preview": "package e2e\n\nimport (\n\t\"fmt\"\n\n\tv1 \"k8s.io/api/core/v1\"\n)\n\nfunc GetNonZeroResourceCapacity(node *v1.Node, resourceName st"
},
{
"path": "internal/metrics/cloudwatch.go",
"chars": 2491,
"preview": "package metrics\n\nimport (\n\t\"context\"\n\t\"log/slog\"\n\t\"sync\"\n\t\"time\"\n\n\t\"github.com/aws/aws-sdk-go-v2/service/cloudwatch\"\n\t\"g"
},
{
"path": "internal/metrics/noop.go",
"chars": 267,
"preview": "package metrics\n\nfunc NewNoopMetricRegistry() MetricRegistry {\n\treturn &noopRegistry{}\n}\n\ntype noopRegistry struct{}\n\nfu"
},
{
"path": "internal/metrics/registry.go",
"chars": 431,
"preview": "package metrics\n\nimport (\n\t\"github.com/aws/aws-sdk-go-v2/service/cloudwatch/types\"\n)\n\ntype MetricRegistry interface {\n\t/"
},
{
"path": "internal/testers/ginkgov1/LICENSE.original",
"chars": 11467,
"preview": "THIS IS A COPY OF THE ORIGINAL LICENSE FOR `kubetest2` AT COMMIT `d7fcb799ce84ceda66c8b9b1ec8eefcbe226f293`.\n\n "
},
{
"path": "internal/testers/ginkgov1/README.md",
"chars": 375,
"preview": "This tester supports ginkgo 1.x versions, which were used for Kubernetes versions prior to 1.25.\n\n---\n\nThis is a fork of"
},
{
"path": "internal/testers/ginkgov1/ginkgo.go",
"chars": 9337,
"preview": "// This file has been modified in the following ways:\n// 1. The `ginkgo` package has been renamed to `ginkgov1`.\n// 2. T"
},
{
"path": "internal/testers/ginkgov1/kubectl/kubectl.go",
"chars": 1704,
"preview": "/*\nCopyright 2019 The Kubernetes Authors.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not u"
},
{
"path": "internal/testers/ginkgov1/package.go",
"chars": 7104,
"preview": "// This file has been modified in the following ways:\n// 1. The `ginkgo` package has been renamed to `ginkgov1`.\n\n/*\nCop"
},
{
"path": "internal/testers/multi/cmd.go",
"chars": 4281,
"preview": "package multi\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\t\"log/slog\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"strings\"\n\n\t\"github.com/aws/aws-k8s-tester/"
},
{
"path": "internal/util/cloudformation.go",
"chars": 2040,
"preview": "package util\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"strings\"\n\n\t\"github.com/aws/aws-sdk-go-v2/aws\"\n\t\"github.com/aws/aws-sdk-go-v2/"
},
{
"path": "internal/util/exec.go",
"chars": 220,
"preview": "package util\n\nimport (\n\t\"os\"\n\t\"os/exec\"\n)\n\nfunc ExecuteCommand(name string, args ...string) error {\n\tcommand := exec.Com"
},
{
"path": "internal/util/http.go",
"chars": 904,
"preview": "package util\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n\n\t\"github.com/aws/smithy-go/middleware\"\n\tsmithyhttp \"github.com/aws/smithy-go/t"
},
{
"path": "internal/util/http_test.go",
"chars": 875,
"preview": "package util\n\nimport (\n\t\"testing\"\n)\n\nfunc Test_NewHTTPHeaderAPIOptions(t *testing.T) {\n\ttestCases := []struct {\n\t\tname "
},
{
"path": "internal/util/lang.go",
"chars": 96,
"preview": "package util\n\nfunc Must[T any](t T, err error) T {\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treturn t\n}\n"
},
{
"path": "internal/util/path.go",
"chars": 765,
"preview": "package util\n\nimport (\n\t\"errors\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"syscall\"\n)\n\nvar ErrFileNotFoundInPath = errors.New(\"file not f"
},
{
"path": "internal/util/version.go",
"chars": 676,
"preview": "package util\n\nimport (\n\t\"fmt\"\n\t\"os\"\n\t\"strings\"\n)\n\nconst KubernetesVersionFile = \"kubernetes-version.txt\"\n\nfunc DetectKub"
},
{
"path": "internal/version.go",
"chars": 37,
"preview": "package internal\n\nvar Version string\n"
},
{
"path": "test/cases/disruptive/graceful_reboot_test.go",
"chars": 6269,
"preview": "//go:build e2e\n\npackage disruptive\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"strings\"\n\t\"testing\"\n\t\"time\"\n\n\t\"github.com/aws/aws-k8s-t"
},
{
"path": "test/cases/disruptive/graceful_shutdown_test.go",
"chars": 10286,
"preview": "//go:build e2e\n\npackage disruptive\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"io\"\n\t\"log\"\n\t\"regexp\"\n\t\"strings\"\n\t\"testing\"\n\t\"time\"\n\n\t\"g"
},
{
"path": "test/cases/disruptive/main_test.go",
"chars": 717,
"preview": "//go:build e2e\n\npackage disruptive\n\nimport (\n\t\"context\"\n\t_ \"embed\"\n\t\"log\"\n\t\"os\"\n\t\"os/signal\"\n\t\"testing\"\n\n\t\"sigs.k8s.io/e"
},
{
"path": "test/cases/dra/dra_example_driver_test.go",
"chars": 9008,
"preview": "//go:build e2e\n\npackage dra\n\nimport (\n\t\"context\"\n\t_ \"embed\"\n\t\"fmt\"\n\t\"testing\"\n\t\"time\"\n\n\t\"github.com/aws/aws-k8s-tester/i"
},
{
"path": "test/cases/dra/main_test.go",
"chars": 529,
"preview": "//go:build e2e\n\npackage dra\n\nimport (\n\t\"context\"\n\t_ \"embed\"\n\t\"log\"\n\t\"os\"\n\t\"os/signal\"\n\t\"testing\"\n\n\t\"sigs.k8s.io/e2e-fram"
},
{
"path": "test/cases/efa/commons.go",
"chars": 2682,
"preview": "//go:build e2e\n\npackage efa\n\nimport (\n\t\"context\"\n\t_ \"embed\"\n\t\"fmt\"\n\t\"log\"\n\n\t\"github.com/aws/aws-k8s-tester/internal/e2e\""
},
{
"path": "test/cases/efa/main_test.go",
"chars": 3075,
"preview": "//go:build e2e\n\npackage efa\n\nimport (\n\t\"context\"\n\t_ \"embed\"\n\t\"flag\"\n\t\"log\"\n\t\"os\"\n\t\"os/signal\"\n\t\"testing\"\n\t\"time\"\n\n\t\"gith"
},
{
"path": "test/cases/efa/pingpong_test.go",
"chars": 5559,
"preview": "//go:build e2e\n\npackage efa\n\nimport (\n\t\"context\"\n\t_ \"embed\"\n\t\"fmt\"\n\t\"log\"\n\t\"testing\"\n\t\"time\"\n\n\t\"k8s.io/apimachinery/pkg/"
},
{
"path": "test/cases/efa/unit_test.go",
"chars": 3927,
"preview": "//go:build e2e\n\npackage efa\n\nimport (\n\t\"context\"\n\t_ \"embed\"\n\t\"fmt\"\n\t\"testing\"\n\t\"time\"\n\n\t\"github.com/aws/aws-k8s-tester/i"
},
{
"path": "test/cases/fips/README.md",
"chars": 6534,
"preview": "# FIPS TLS Compliance Test\n\nThis test validates that FIPS-enabled EKS nodes enforce FIPS-compliant TLS cipher suites whe"
},
{
"path": "test/cases/fips/fips_test.go",
"chars": 5285,
"preview": "//go:build e2e\n\npackage fips\n\nimport (\n\t\"context\"\n\t_ \"embed\"\n\t\"io\"\n\t\"strings\"\n\t\"testing\"\n\t\"time\"\n\n\tv1 \"k8s.io/api/core/v"
},
{
"path": "test/cases/fips/main_test.go",
"chars": 7189,
"preview": "//go:build e2e\n\npackage fips\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"io\"\n\t\"log\"\n\t\"os\"\n\t\"os/signal\"\n\t\"strings\"\n\t\"testing\"\n\t\"time\"\n\n"
},
{
"path": "test/cases/fips/manifests/registry-fips.yaml",
"chars": 1251,
"preview": "apiVersion: apps/v1\nkind: DaemonSet\nmetadata:\n name: registry-fips\nspec:\n selector:\n matchLabels:\n name: regis"
},
{
"path": "test/cases/fips/manifests/registry-nonfips.yaml",
"chars": 1916,
"preview": "apiVersion: v1\nkind: ConfigMap\nmetadata:\n name: nginx-nonfips-config\ndata:\n nginx.conf: |\n events {}\n http {\n "
},
{
"path": "test/cases/fips/manifests/test-pods.yaml",
"chars": 417,
"preview": "apiVersion: v1\nkind: Pod\nmetadata:\n name: test-pull-fips\nspec:\n containers:\n - name: test\n image: localhost:50"
},
{
"path": "test/cases/netpol/main_test.go",
"chars": 7733,
"preview": "//go:build e2e\n\npackage netpol\n\nimport (\n\t\"context\"\n\t\"flag\"\n\t\"log\"\n\t\"os\"\n\t\"testing\"\n\t\"time\"\n\n\t\"github.com/aws/aws-sdk-go"
},
{
"path": "test/cases/netpol/np_test.go",
"chars": 6444,
"preview": "//go:build e2e\n\npackage netpol\n\nimport (\n\t\"bytes\"\n\t\"context\"\n\t\"log\"\n\t\"strings\"\n\t\"testing\"\n\t\"time\"\n\n\tcorev1 \"k8s.io/api/c"
},
{
"path": "test/cases/neuron/main_test.go",
"chars": 6362,
"preview": "//go:build e2e\n\npackage neuron\n\nimport (\n\t\"context\"\n\t_ \"embed\"\n\t\"flag\"\n\t\"fmt\"\n\t\"log\"\n\t\"os\"\n\t\"os/signal\"\n\t\"slices\"\n\t\"test"
},
{
"path": "test/cases/neuron/manifests/multi-node-test-neuron.yaml",
"chars": 2191,
"preview": "apiVersion: kubeflow.org/v2beta1\nkind: MPIJob\nmetadata:\n name: multi-node-nccom-test\nspec:\n slotsPerWorker: {{.NeuronP"
},
{
"path": "test/cases/neuron/manifests/single-node-test-neuronx.yaml",
"chars": 759,
"preview": "kind: Job\napiVersion: batch/v1\nmetadata:\n name: neuronx-single-node\n labels:\n app: neuronx-single-node\nspec:\n temp"
},
{
"path": "test/cases/neuron/neuron_test.go",
"chars": 5214,
"preview": "//go:build e2e\n\npackage neuron\n\nimport (\n\t\"context\"\n\t_ \"embed\"\n\t\"fmt\"\n\t\"testing\"\n\t\"time\"\n\n\tfwext \"github.com/aws/aws-k8s"
},
{
"path": "test/cases/neuron-dra/main_test.go",
"chars": 7832,
"preview": "//go:build e2e\n\npackage neuron_dra\n\nimport (\n\t\"context\"\n\t\"embed\"\n\t\"flag\"\n\t\"fmt\"\n\t\"log\"\n\t\"os\"\n\t\"os/exec\"\n\t\"os/signal\"\n\t\"p"
},
{
"path": "test/cases/neuron-dra/neuron_dra_test.go",
"chars": 1269,
"preview": "//go:build e2e\n\npackage neuron_dra\n\nimport (\n\t\"embed\"\n\t\"path/filepath\"\n\t\"testing\"\n\n\t\"github.com/aws/aws-k8s-tester/test/"
},
{
"path": "test/cases/neuron-dra/rcts/trn1/rct-2-efas-4-neurons-wrong-match.yaml",
"chars": 536,
"preview": "apiVersion: resource.k8s.io/v1beta1\nkind: ResourceClaimTemplate\nmetadata:\n namespace: default\n name: rct-2-efas-4-neur"
},
{
"path": "test/cases/neuron-dra/rcts/trn1/rct-all-efas-all-neurons.yaml",
"chars": 364,
"preview": "apiVersion: resource.k8s.io/v1beta1\nkind: ResourceClaimTemplate\nmetadata:\n namespace: default\n name: rct-all-efas-all-"
},
{
"path": "test/cases/neuron-dra/templates/nccom-test-mpijob.yaml.tmpl",
"chars": 2801,
"preview": "apiVersion: kubeflow.org/v2beta1\nkind: MPIJob\nmetadata:\n name: multi-node-nccom-test\nspec:\n slotsPerWorker: {{.SlotsPe"
},
{
"path": "test/cases/neuron-dra/testcases/trn1/2-efas-4-neurons-wrong-match.yaml",
"chars": 135,
"preview": "expectFailure: true\nresourceClaims:\n- name: 2-efas-4-neurons-wrong-match\n resourceClaimTemplateName: rct-2-efas-4-neuro"
},
{
"path": "test/cases/neuron-dra/testcases/trn1/all-efas-all-neurons.yaml",
"chars": 99,
"preview": "resourceClaims:\n- name: all-efas-all-neurons\n resourceClaimTemplateName: rct-all-efas-all-neurons\n"
},
{
"path": "test/cases/neuron-dra/topology.go",
"chars": 4893,
"preview": "package neuron_dra\n\nimport (\n\t\"bytes\"\n\t_ \"embed\"\n\t\"fmt\"\n\t\"strings\"\n\t\"text/template\"\n\n\t\"github.com/aws/aws-k8s-tester/tes"
},
{
"path": "test/cases/neuron-inference/bert_inference_test.go",
"chars": 5232,
"preview": "//go:build e2e\n\npackage inference\n\nimport (\n\t\"context\"\n\t_ \"embed\"\n\t\"fmt\"\n\t\"io\"\n\t\"log\"\n\t\"testing\"\n\t\"time\"\n\n\tfwext \"github"
},
{
"path": "test/cases/neuron-inference/main_test.go",
"chars": 5748,
"preview": "//go:build e2e\n\npackage inference\n\nimport (\n\t\"context\"\n\t_ \"embed\"\n\t\"flag\"\n\t\"fmt\"\n\t\"log\"\n\t\"os\"\n\t\"slices\"\n\t\"testing\"\n\t\"tim"
},
{
"path": "test/cases/neuron-inference/manifests/neuron-bert-inference.yaml",
"chars": 845,
"preview": "apiVersion: batch/v1\nkind: Job\nmetadata:\n name: neuron-inference\nspec:\n backoffLimit: 4\n template:\n spec:\n re"
},
{
"path": "test/cases/neuron-inference/vars.go",
"chars": 793,
"preview": "//go:build e2e\n\npackage inference\n\nimport (\n\t\"flag\"\n\n\t\"sigs.k8s.io/e2e-framework/pkg/env\"\n)\n\n// Shared global variables\n"
},
{
"path": "test/cases/neuron-training/bert_training_test.go",
"chars": 8404,
"preview": "//go:build e2e\n\npackage training\n\nimport (\n\t\"bytes\"\n\t\"context\"\n\t_ \"embed\"\n\t\"fmt\"\n\t\"log\"\n\t\"regexp\"\n\t\"strconv\"\n\t\"testing\"\n"
},
{
"path": "test/cases/neuron-training/main_test.go",
"chars": 7689,
"preview": "//go:build e2e\n\npackage training\n\nimport (\n\t\"context\"\n\t_ \"embed\"\n\t\"fmt\"\n\t\"log\"\n\t\"os\"\n\t\"slices\"\n\t\"testing\"\n\t\"time\"\n\n\tfwex"
},
{
"path": "test/cases/neuron-training/manifests/bert-training.yaml",
"chars": 1541,
"preview": "apiVersion: batch/v1\nkind: Job\nmetadata:\n labels:\n app: bert-training\n name: bert-training\nspec:\n completionMode: "
},
{
"path": "test/cases/neuron-training/manifests/training-comm-service.yaml",
"chars": 148,
"preview": "apiVersion: v1\nkind: Service\nmetadata:\n name: training\n labels:\n app: training\nspec:\n clusterIP: None\n selector:\n"
},
{
"path": "test/cases/neuron-training/vars.go",
"chars": 767,
"preview": "package training\n\nimport (\n\t\"flag\"\n\n\t\"sigs.k8s.io/e2e-framework/pkg/env\"\n)\n\n// Shared global variables\nvar (\n\ttestenv en"
},
{
"path": "test/cases/nvidia/capabilities_test.go",
"chars": 2539,
"preview": "//go:build e2e\n\npackage nvidia\n\nimport (\n\t\"context\"\n\t\"testing\"\n\t\"time\"\n\n\t\"github.com/aws/aws-k8s-tester/internal/e2e\"\n\n\t"
},
{
"path": "test/cases/nvidia/containerd_test.go",
"chars": 2186,
"preview": "//go:build e2e\n\npackage nvidia\n\nimport (\n\t\"context\"\n\t\"log\"\n\t\"testing\"\n\t\"time\"\n\n\t\"github.com/aws/aws-k8s-tester/internal/"
},
{
"path": "test/cases/nvidia/main_test.go",
"chars": 5920,
"preview": "//go:build e2e\n\npackage nvidia\n\nimport (\n\t\"context\"\n\t_ \"embed\"\n\t\"fmt\"\n\t\"log\"\n\t\"os\"\n\t\"os/signal\"\n\t\"slices\"\n\t\"testing\"\n\n\tf"
},
{
"path": "test/cases/nvidia/manifests/daemonset-containerd-check.yaml",
"chars": 3571,
"preview": "apiVersion: apps/v1\nkind: DaemonSet\nmetadata:\n name: containerd-check\n namespace: default\n labels:\n app: container"
},
{
"path": "test/cases/nvidia/manifests/job-hpc-benchmarks.yaml",
"chars": 1505,
"preview": "kind: Job\napiVersion: batch/v1\nmetadata:\n name: hpc-benckmarks-job\n labels:\n app: hpc-benckmarks-job\nspec:\n comple"
},
{
"path": "test/cases/nvidia/manifests/job-unit-test-single-node.yaml",
"chars": 893,
"preview": "kind: Job\napiVersion: batch/v1\nmetadata:\n name: unit-test-job\n labels:\n app: unit-test-job\nspec:\n template:\n me"
},
{
"path": "test/cases/nvidia/manifests/mpi-job-nccl-test-multi-node.yaml",
"chars": 2291,
"preview": "apiVersion: kubeflow.org/v2beta1\nkind: MPIJob\nmetadata:\n name: {{.JobName}}\nspec:\n slotsPerWorker: {{.GpuPerNode}}\n r"
},
{
"path": "test/cases/nvidia/manifests/mpi-job-pytorch-training-single-node.yaml",
"chars": 1571,
"preview": "---\n# container image from: https://github.com/aws/deep-learning-containers/blob/master/available_images.md\napiVersion: "
},
{
"path": "test/cases/nvidia/manifests/nvidia-driver-capabilities-check.yaml",
"chars": 1010,
"preview": "apiVersion: v1\nkind: Pod\nmetadata:\n name: moderngl-pod\nspec:\n restartPolicy: Never\n tolerations:\n - key: \"nvidia.com"
},
{
"path": "test/cases/nvidia/mpi_test.go",
"chars": 6831,
"preview": "//go:build e2e\n\npackage nvidia\n\nimport (\n\t\"context\"\n\t_ \"embed\"\n\t\"fmt\"\n\t\"regexp\"\n\t\"strings\"\n\t\"testing\"\n\t\"time\"\n\n\tfwext \"g"
},
{
"path": "test/cases/nvidia/unit_test.go",
"chars": 4403,
"preview": "//go:build e2e\n\npackage nvidia\n\nimport (\n\t\"context\"\n\t_ \"embed\"\n\t\"fmt\"\n\t\"testing\"\n\t\"time\"\n\n\tfwext \"github.com/aws/aws-k8s"
},
{
"path": "test/cases/nvidia-dra/main_test.go",
"chars": 9271,
"preview": "//go:build e2e\n\npackage nvidia_dra\n\nimport (\n\t\"context\"\n\t\"embed\"\n\t\"flag\"\n\t\"fmt\"\n\t\"log\"\n\t\"os\"\n\t\"os/exec\"\n\t\"os/signal\"\n\t\"p"
},
{
"path": "test/cases/nvidia-dra/nvidia_dra_test.go",
"chars": 1268,
"preview": "//go:build e2e\n\npackage nvidia_dra\n\nimport (\n\t\"embed\"\n\t\"path/filepath\"\n\t\"testing\"\n\n\t\"github.com/aws/aws-k8s-tester/test/"
},
{
"path": "test/cases/nvidia-dra/rcts/p5/rct-all-efas.yaml",
"chars": 258,
"preview": "apiVersion: resource.k8s.io/v1beta1\nkind: ResourceClaimTemplate\nmetadata:\n namespace: default\n name: rct-all-efas\nspec"
},
{
"path": "test/cases/nvidia-dra/rcts/p5/rct-all-gpus.yaml",
"chars": 250,
"preview": "apiVersion: resource.k8s.io/v1beta1\nkind: ResourceClaimTemplate\nmetadata:\n namespace: default\n name: rct-all-gpus\nspec"
},
{
"path": "test/cases/nvidia-dra/rcts/p5/rct-five-efas-one-gpu.yaml",
"chars": 526,
"preview": "apiVersion: resource.k8s.io/v1beta1\nkind: ResourceClaimTemplate\nmetadata:\n namespace: default\n name: rct-five-efas-one"
},
{
"path": "test/cases/nvidia-dra/templates/nccl-test-mpijob.yaml.tmpl",
"chars": 2545,
"preview": "apiVersion: kubeflow.org/v2beta1\nkind: MPIJob\nmetadata:\n name: multi-node-nccl-test\nspec:\n slotsPerWorker: {{.SlotsPer"
},
{
"path": "test/cases/nvidia-dra/testcases/p5/all-efas-all-gpus.yaml",
"chars": 134,
"preview": "resourceClaims:\n- name: all-efas\n resourceClaimTemplateName: rct-all-efas\n- name: all-gpus\n resourceClaimTemplateName:"
},
{
"path": "test/cases/nvidia-dra/testcases/p5/five-efas-one-gpu-negative-test.yaml",
"chars": 113,
"preview": "expectFailure: true\nresourceClaims:\n- name: five-efas-one-gpu\n resourceClaimTemplateName: rct-five-efas-one-gpu\n"
},
{
"path": "test/cases/nvidia-dra/topology.go",
"chars": 5169,
"preview": "package nvidia_dra\n\nimport (\n\t\"bytes\"\n\t_ \"embed\"\n\t\"fmt\"\n\t\"log\"\n\t\"strings\"\n\t\"text/template\"\n\n\t\"github.com/aws/aws-k8s-tes"
},
{
"path": "test/cases/nvidia-inference/bert_inference_test.go",
"chars": 5436,
"preview": "//go:build e2e\n\npackage inference\n\nimport (\n\t\"context\"\n\t_ \"embed\"\n\t\"fmt\"\n\t\"io\"\n\t\"log\"\n\t\"testing\"\n\t\"time\"\n\n\tfwext \"github"
},
{
"path": "test/cases/nvidia-inference/main_test.go",
"chars": 4985,
"preview": "//go:build e2e\n\npackage inference\n\nimport (\n\t\"context\"\n\t_ \"embed\"\n\t\"fmt\"\n\t\"log\"\n\t\"os\"\n\t\"os/signal\"\n\t\"slices\"\n\t\"testing\"\n"
},
{
"path": "test/cases/nvidia-inference/manifests/bert-inference.yaml",
"chars": 753,
"preview": "# Single-node BERT inference job with GPU. Memory-backed volume for /dev/shm\napiVersion: batch/v1\nkind: Job\nmetadata:\n "
},
{
"path": "test/cases/nvidia-training/bert_training_test.go",
"chars": 4067,
"preview": "//go:build e2e\n\npackage training\n\nimport (\n\t\"context\"\n\t_ \"embed\"\n\t\"fmt\"\n\t\"testing\"\n\t\"time\"\n\n\t\"k8s.io/client-go/kubernete"
},
{
"path": "test/cases/nvidia-training/main_test.go",
"chars": 6059,
"preview": "//go:build e2e\n\npackage training\n\nimport (\n\t\"context\"\n\t_ \"embed\"\n\t\"fmt\"\n\t\"github.com/aws/aws-k8s-tester/test/common\"\n\t\"l"
},
{
"path": "test/cases/nvidia-training/manifests/bert-training.yaml",
"chars": 2116,
"preview": "apiVersion: kubeflow.org/v2beta1\nkind: MPIJob\nmetadata:\n name: bert-training\nspec:\n slotsPerWorker: {{.SlotsPerWorker}"
},
{
"path": "test/cases/nvidia-training/vars.go",
"chars": 578,
"preview": "//go:build e2e\n\npackage training\n\nimport (\n\t\"github.com/aws/aws-k8s-tester/test/common\"\n\t\"sigs.k8s.io/e2e-framework/pkg/"
},
{
"path": "test/cases/quick/io_uring_test.go",
"chars": 3451,
"preview": "//go:build e2e\n\npackage quick\n\nimport (\n\t\"context\"\n\t\"log\"\n\t\"testing\"\n\t\"time\"\n\n\t\"github.com/aws/aws-k8s-tester/internal/e"
},
{
"path": "test/cases/quick/limit_test.go",
"chars": 3681,
"preview": "//go:build e2e\n\npackage quick\n\nimport (\n\t\"bytes\"\n\t\"context\"\n\t_ \"embed\"\n\t\"io\"\n\t\"strings\"\n\t\"testing\"\n\t\"time\"\n\n\tfwext \"gith"
},
{
"path": "test/cases/quick/main_test.go",
"chars": 712,
"preview": "//go:build e2e\n\npackage quick\n\nimport (\n\t\"context\"\n\t_ \"embed\"\n\t\"log\"\n\t\"os\"\n\t\"os/signal\"\n\t\"testing\"\n\n\t\"sigs.k8s.io/e2e-fr"
},
{
"path": "test/cases/quick/manifests/ulimit.yaml",
"chars": 210,
"preview": "apiVersion: v1\nkind: Pod\nmetadata:\n name: ulimit\nspec:\n restartPolicy: Never\n containers:\n - name: al2023\n image:"
},
{
"path": "test/cases/quick/node_topology_test.go",
"chars": 2885,
"preview": "//go:build e2e\n\npackage quick\n\nimport (\n\t\"context\"\n\t_ \"embed\"\n\t\"strconv\"\n\t\"strings\"\n\t\"testing\"\n\n\t\"github.com/aws/aws-k8s"
},
{
"path": "test/cases/workload/main_test.go",
"chars": 1554,
"preview": "//go:build e2e\n\npackage workload\n\nimport (\n\t\"context\"\n\t\"flag\"\n\t\"fmt\"\n\t\"log\"\n\t\"os\"\n\t\"os/signal\"\n\t\"testing\"\n\t\"time\"\n\n\t\"sig"
},
{
"path": "test/cases/workload/workload_test.go",
"chars": 4716,
"preview": "//go:build e2e\n\npackage workload\n\nimport (\n\t\"context\"\n\t\"encoding/json\"\n\t\"strings\"\n\t\"testing\"\n\t\"time\"\n\n\tfwext \"github.com"
},
{
"path": "test/common/dra.go",
"chars": 3158,
"preview": "//go:build e2e\n\npackage common\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"log\"\n\t\"time\"\n\n\tfwext \"github.com/aws/aws-k8s-tester/interna"
},
{
"path": "test/common/dra_features.go",
"chars": 7222,
"preview": "//go:build e2e\n\npackage common\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"io/fs\"\n\t\"path/filepath\"\n\t\"strings\"\n\t\"testing\"\n\t\"time\"\n\n\tfwe"
},
{
"path": "test/common/dra_types.go",
"chars": 5723,
"preview": "package common\n\nimport (\n\t\"fmt\"\n\t\"io/fs\"\n\t\"path/filepath\"\n\t\"strings\"\n\n\tyaml \"gopkg.in/yaml.v2\"\n)\n\n// -------------------"
},
{
"path": "test/common/flags.go",
"chars": 1393,
"preview": "//go:build e2e\n\npackage common\n\nimport (\n\t\"flag\"\n\t\"fmt\"\n\t\"github.com/urfave/sflags/gen/gpflag\"\n\t\"github.com/spf13/pflag\""
},
{
"path": "test/common/resources.go",
"chars": 1049,
"preview": "//go:build e2e\n\npackage common\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"log\"\n\t\"time\"\n\n\tfwext \"github.com/aws/aws-k8s-tester/interna"
},
{
"path": "test/images/efa/Dockerfile",
"chars": 1823,
"preview": "FROM public.ecr.aws/amazonlinux/amazonlinux:2023\n\nARG EFA_BIN_PATH=\"/opt/amazon/efa/bin\"\n\nRUN dnf -y swap gnupg2-minimal"
},
{
"path": "test/images/efa/scripts/unit-test.sh",
"chars": 1701,
"preview": "#!/usr/bin/env bash\n\nset -eu\n\nget_instance_type()\n{\n\n local token=$(curl -X PUT \"http://169.254.169.254/latest/api/to"
},
{
"path": "test/images/neuron/Dockerfile",
"chars": 8152,
"preview": "FROM public.ecr.aws/docker/library/ubuntu:22.04\n\n# Neuron SDK components version numbers\n# https://github.com/aws-neuron"
},
{
"path": "test/images/neuron/hack/install-test-resources.sh",
"chars": 882,
"preview": "#!/bin/bash\n\nset -o pipefail\nset -o nounset\nset -o errexit\n\nUSER_DIR=${1:-\"/root\"}\n# attempt to cache dataset to avoid r"
},
{
"path": "test/images/neuron/tests/singleNodeTest.sh",
"chars": 236,
"preview": "#!/usr/bin/env bash\n\nset -e\n\ntorchrun --nproc_per_node=2 --nnodes=1 tests/testNeuronSingleAllReduce.py\ntorchrun --nproc_"
},
{
"path": "test/images/neuron/tests/testNeuronMlp.py",
"chars": 3890,
"preview": "# Source: https://github.com/aws/deep-learning-containers/blob/master/test/dlc_tests/container_tests/bin/pytorch_tests/t"
},
{
"path": "test/images/neuron/tests/testNeuronParallelState.py",
"chars": 4223,
"preview": "# Source: https://github.com/aws/deep-learning-containers/blob/master/test/dlc_tests/container_tests/bin/pytorch_tests/t"
},
{
"path": "test/images/neuron/tests/testNeuronSingleAllReduce.py",
"chars": 1147,
"preview": "# Source: https://github.com/aws/deep-learning-containers/blob/master/test/dlc_tests/container_tests/bin/pytorch_tests/t"
},
{
"path": "test/images/neuron-inference/Dockerfile",
"chars": 4072,
"preview": "###############################################################################\n# 0) Base image, arguments, and environm"
},
{
"path": "test/images/neuron-inference/infer.py",
"chars": 11730,
"preview": "import logging\nimport os\nimport sys\nimport time\nimport json\nimport subprocess\nimport random\nimport concurrent.futures\nim"
},
{
"path": "test/images/neuron-training/Dockerfile",
"chars": 5291,
"preview": "FROM public.ecr.aws/docker/library/ubuntu:22.04\n\n#######################################################################"
},
{
"path": "test/images/neuron-training/train.py",
"chars": 5867,
"preview": "import os\nimport time\nimport random\n\nimport torch\nimport torch.distributed as dist\n\n# === torch_xla imports for device a"
},
{
"path": "test/images/nvidia/Dockerfile",
"chars": 4213,
"preview": "ARG CUDA_MAJOR_VERSION=12\nARG CUDA_MINOR_VERSION=8\n\n# Start with the NVIDIA CUDA base image\nFROM nvidia/cuda:$CUDA_MAJOR"
},
{
"path": "test/images/nvidia/gpu_unit_tests/README.md",
"chars": 1864,
"preview": "# What\n\ngpu_unit_tests is the unit tests for gpu enabled platforms. Idea is to create compact\nset of tests which will co"
},
{
"path": "test/images/nvidia/gpu_unit_tests/bash_unit",
"chars": 14298,
"preview": "#!/usr/bin/env bash\n#\n# bash unit testing enterprise edition framework for professionals\n# Copyright (C) 2011-2016 P"
},
{
"path": "test/images/nvidia/gpu_unit_tests/tests/common.sh",
"chars": 1726,
"preview": "#!/bin/bash\n\nget_instance_type()\n{\n # Retrieve instance metadata: https://docs.aws.amazon.com/AWSEC2/latest/UserGuide"
},
{
"path": "test/images/nvidia/gpu_unit_tests/tests/test_basic.sh",
"chars": 1036,
"preview": "# Trivial cuda tests to validate that GPU it functional\n# Use demu-suite binaries https://docs.nvidia.com/cuda/demo-suit"
},
{
"path": "test/images/nvidia/gpu_unit_tests/tests/test_sysinfo.sh",
"chars": 2528,
"preview": "# Validate basic system configuration by comparing with expected config\n#\nsetup_suite()\n{\n source common.sh\n\n EC2_"
},
{
"path": "test/images/nvidia/gpu_unit_tests/tests/test_sysinfo.sh.data/g5.48xlarge/gpu_count.txt",
"chars": 288,
"preview": "name, index, pci.bus_id\nNVIDIA A10G, 0, 00000000:00:16.0\nNVIDIA A10G, 1, 00000000:00:17.0\nNVIDIA A10G, 2, 00000000:00:18"
},
{
"path": "test/images/nvidia/gpu_unit_tests/tests/test_sysinfo.sh.data/g5.48xlarge/numa_topo.txt",
"chars": 196,
"preview": "/sys/devices/system/node/node0/cpulist:0-47,96-143\n/sys/devices/system/node/node1/cpulist:48-95,144-191\n/sys/devices/sys"
},
{
"path": "test/images/nvidia/gpu_unit_tests/tests/test_sysinfo.sh.data/g5.48xlarge/nvidia_persistence_status.txt",
"chars": 347,
"preview": "name, pci.bus_id, persistence_mode\nNVIDIA A10G, 00000000:00:16.0, Enabled\nNVIDIA A10G, 00000000:00:17.0, Enabled\nNVIDIA "
}
]
// ... and 70 more files (download for full content)
About this extraction
This page contains the full source code of the aws/aws-k8s-tester GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 270 files (1.4 MB), approximately 337.9k tokens, and a symbol index with 499 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.